SwissMicros DM42とDM15Lのfirmwareがそれぞれupdateされた。
DM42はv3.5が、DM15Lはv26がそれぞれ最新のfirmware。詳しくはlink先を参照のこと:
cf. [SwissMicros | Firmware](https://www.swissmicros.com/firmware.php)
また、firmware updateの方法については以前書いているので参照されたい:
* https://typeinf-memo.blogspot.com/2017/12/swissmicros-dm42firmware-update.html ※DM42のfirmware updateについて
* https://typeinf-memo.blogspot.com/2016/07/swissmicros-dm-15lfirmware-upgrade.html ※DM15Lのfirmware updateについて
2018年3月26日月曜日
2018年3月17日土曜日
Raspberry Pi 3 Model B+が発表された
先日、Raspberry Pi財団よりRaspberry Pi 3 Model B+ (3B+)が発表された。
cf. [Raspberry Pi 3 Model B+ on sale now at $35 - Raspberry Pi](https://www.raspberrypi.org/blog/raspberry-pi-3-model-bplus-sale-now-35/)
Raspberry Pi 3 Model Bからの主な改良点は:
* SoCがBCM2837B0へupgrade (1.4GHz)
* SoCが金属ヒートシンクに覆われた → 放熱性up
* GbEへの対応 (3までは100BASE-Tだった) ※USB2.0 (up to 480MB/s)での接続
* PoEへの対応 ※HATによる対応
* Wi-Fiのupgrade (802.11ac対応、特に5GHz帯の改善)
* 電源の強化
など、Network関連の強化 (connectivity)に主眼が置かれている。
なお、価格は据え置かれて$35のまま。例として、RSコンポーネンツでは「発売開始時期未定」となっているが、日本では電源を除いて4500円ぐらいで購入できるだろう (2018-03-17現在入手可能な3Bは税込み4320円)。
cf. [Raspberry Pi 3 Model B+ on sale now at $35 - Raspberry Pi](https://www.raspberrypi.org/blog/raspberry-pi-3-model-bplus-sale-now-35/)
Raspberry Pi 3 Model Bからの主な改良点は:
* SoCがBCM2837B0へupgrade (1.4GHz)
* SoCが金属ヒートシンクに覆われた → 放熱性up
* GbEへの対応 (3までは100BASE-Tだった) ※USB2.0 (up to 480MB/s)での接続
* PoEへの対応 ※HATによる対応
* Wi-Fiのupgrade (802.11ac対応、特に5GHz帯の改善)
* 電源の強化
など、Network関連の強化 (connectivity)に主眼が置かれている。
なお、価格は据え置かれて$35のまま。例として、RSコンポーネンツでは「発売開始時期未定」となっているが、日本では電源を除いて4500円ぐらいで購入できるだろう (2018-03-17現在入手可能な3Bは税込み4320円)。
2018年3月16日金曜日
SwissMicros DM42のfirmware 3.4aが公開された (3/7)
DM42のfirmware 3.4aが3/7に公開されていたのでupgrade。
3.4ではoccasionally lockupなどの不具合に対する修正が行われているので、所有者はfirmware updateを検討されたい。
cf. [Firmware History](https://www.swissmicros.com/dm42/firmware/history.html)
3.4ではoccasionally lockupなどの不具合に対する修正が行われているので、所有者はfirmware updateを検討されたい。
cf. [Firmware History](https://www.swissmicros.com/dm42/firmware/history.html)
ラベル:
firmware,
SwissMicros DM42
2018年3月12日月曜日
SwissMicros DM42で簡単なprogramを組んでみる
SwissMicros DM42 (HP-42Sの互換機)で、有名な「ユークリッドの互除法」(Euclidean algorithm)を実装してみる。
ユークリッドの互除法は2つの自然数xとyがあった時に、その最大公約数 (xとyに共通する最も大きな約数、割り切る数)を求める手順だ。面倒なので、最大公約数を以後GCD (greatest common divisor)と書く。
古代ギリシアの数学者ユークリッド (Euclid)によって記された『原論』(Elements)の中に書かれており、紀元前300年ごろには存在していたというから凄い。
このアルゴリズムでは、以下のように計算を進める:
1. xをyで割った余りをrとする
2. rが0でなければ、x←y、y←rとして1.に戻る
3. rが0ならば、その時のyが元々のxおよびyのGCDである
例として、DM42を使い手動で1785と374のGCDを求めてみる。
使うDM42の機能について:
* MOD → y÷xの余りを計算してxに積む
* LASTX → 直前までxに入っていた内容を保持するL-registerの内容をxに積む
* x≶y → X-registerとY-registerの内容を交換する
1. 1785
2. ENTER
3. 374
4. MOD ⇒ 289 ※余りは0ではない
5. LASTX ⇒ 374 ※直前のxの内容を呼び出した
6. x≶y ⇒ 289 ※xとyの内容を交換
7. MOD ⇒ 85 ※余りは0ではない
8. LASTX ⇒ 289
9. x≶y ⇒ 85
10. MOD ⇒ 34 ※余りは0ではない
11. LASTX ⇒ 85
12. x≶y ⇒ 34
13. MOD ⇒ 17 ※余りは0ではない
14. LASTX ⇒ 34
15. x≶y ⇒ 17
16. MOD ⇒ 0 ※余りが0になった!
17. LASTX ⇒ 17 ※これが1785と374のGCD
MODの結果が0になるまで、ひたすらLASTXしてx≶yしてMODする、を繰り返すだけでGCDが計算できるとわかる。このような単純作業はもちろん機械にやらせるべきだ。
DM42 (HP-42S)に限らず、RPN方式の関数電卓では基本的にキー入力の羅列がそのままprogramになる。ただし、practicalなprogramを記述するには、LBLや条件分岐やjump命令などが必要になる。
DM42のprogramの構造は:
LBL "LABEL"
...
END (或いはRTN)
のようになっている。LBL (label)はprogram (或いはsubroutine)の名前で、様々な手順が続き、最後はRTN (return)或いはENDである。
PRGM (□+R/S)でprogram modeに入る。
先頭の行番号はDM42が勝手につけてくれるので無視すると、こんな感じに書ける:
LBL "GCD"
LBL 02
MOD
X=0?
GTO 01
LASTX
X<>Y
GTO 02
LBL 01
LASTX
RTN
EXITでprogram modeを抜ける。
programを実行するにはXEQを押す。すると、software menuにprogramで指定したlabel (LBL)が表示されるので、GCDを選ぶ。ただし、今回のprogramはとにかく手順をそのまま書いただけなので、予めY-registerに大きい方の自然数を、X-registerに小さい方の自然数をそれぞれ積んでおく必要がある。
1. 1785 [ENTER]
2. 374
3. XEQ → GCD ⇒ 17
X-registerには17が残っているはずだ。
ちなみに、GCDとくればLCM (least common multiple)——最小公倍数も忘れてはならない。2つの正の整数について:
GCD(x,y) LCM(x,y) = xy
という関係が成り立つと知られているので、GCDが分かっていればLCMも計算できる。
LCM(x,y) = xy / GCD(x,y)
1785と374の場合は39270である。
ユークリッドの互除法について
ユークリッドの互除法は2つの自然数xとyがあった時に、その最大公約数 (xとyに共通する最も大きな約数、割り切る数)を求める手順だ。面倒なので、最大公約数を以後GCD (greatest common divisor)と書く。
古代ギリシアの数学者ユークリッド (Euclid)によって記された『原論』(Elements)の中に書かれており、紀元前300年ごろには存在していたというから凄い。
このアルゴリズムでは、以下のように計算を進める:
1. xをyで割った余りをrとする
2. rが0でなければ、x←y、y←rとして1.に戻る
3. rが0ならば、その時のyが元々のxおよびyのGCDである
電卓を叩いて確かめてみる
例として、DM42を使い手動で1785と374のGCDを求めてみる。
使うDM42の機能について:
* MOD → y÷xの余りを計算してxに積む
* LASTX → 直前までxに入っていた内容を保持するL-registerの内容をxに積む
* x≶y → X-registerとY-registerの内容を交換する
1. 1785
2. ENTER
3. 374
4. MOD ⇒ 289 ※余りは0ではない
5. LASTX ⇒ 374 ※直前のxの内容を呼び出した
6. x≶y ⇒ 289 ※xとyの内容を交換
7. MOD ⇒ 85 ※余りは0ではない
8. LASTX ⇒ 289
9. x≶y ⇒ 85
10. MOD ⇒ 34 ※余りは0ではない
11. LASTX ⇒ 85
12. x≶y ⇒ 34
13. MOD ⇒ 17 ※余りは0ではない
14. LASTX ⇒ 34
15. x≶y ⇒ 17
16. MOD ⇒ 0 ※余りが0になった!
17. LASTX ⇒ 17 ※これが1785と374のGCD
MODの結果が0になるまで、ひたすらLASTXしてx≶yしてMODする、を繰り返すだけでGCDが計算できるとわかる。このような単純作業はもちろん機械にやらせるべきだ。
DM42でprogramming
DM42 (HP-42S)に限らず、RPN方式の関数電卓では基本的にキー入力の羅列がそのままprogramになる。ただし、practicalなprogramを記述するには、LBLや条件分岐やjump命令などが必要になる。
DM42のprogramの構造は:
LBL "LABEL"
...
END (或いはRTN)
のようになっている。LBL (label)はprogram (或いはsubroutine)の名前で、様々な手順が続き、最後はRTN (return)或いはENDである。
PRGM (□+R/S)でprogram modeに入る。
先頭の行番号はDM42が勝手につけてくれるので無視すると、こんな感じに書ける:
LBL "GCD"
LBL 02
MOD
X=0?
GTO 01
LASTX
X<>Y
GTO 02
LBL 01
LASTX
RTN
EXITでprogram modeを抜ける。
programを実行するにはXEQを押す。すると、software menuにprogramで指定したlabel (LBL)が表示されるので、GCDを選ぶ。ただし、今回のprogramはとにかく手順をそのまま書いただけなので、予めY-registerに大きい方の自然数を、X-registerに小さい方の自然数をそれぞれ積んでおく必要がある。
1. 1785 [ENTER]
2. 374
3. XEQ → GCD ⇒ 17
X-registerには17が残っているはずだ。
そして最小公倍数へ
ちなみに、GCDとくればLCM (least common multiple)——最小公倍数も忘れてはならない。2つの正の整数について:
GCD(x,y) LCM(x,y) = xy
という関係が成り立つと知られているので、GCDが分かっていればLCMも計算できる。
LCM(x,y) = xy / GCD(x,y)
1785と374の場合は39270である。
ラベル:
algorithm,
GCD,
LCM,
programming,
SwissMicros DM42
2018年3月11日日曜日
Seagateの12TB (≒10.91TiB) HDDを導入した
メインマシン兼NASとして使っているPCのデータストレージとして、これまではWestern DigitalのNAS向け製品であるWD RedシリーズのWD80EFZX (8TB ≒ 7.28TiB)を使っていた。これを新たにSeagateのNAS向け製品であるIronWolfシリーズのST12000VN0007 (12TB ≒ 10.91TiB)へ換装した。ここ数年はWestern DigitalのHDDばかり購入してきた (Redの6TB、8TB)ので、SeagateのHDDを購入するのは久し振りだ。
換装した一番の理由は、WD80EFZXの残り容量がほぼ無くなったこと。丁度決算期で普段より値引きが期待できる時期なのと、前回HDDを導入してから2年ほど経っているので頃合いなこともあった。
LUKS+Btrfsで運用している。RMAの兼ね合いもあるので、2年くらい持てばいいのだが。
S.M.A.R.T.の情報を見てみる
Linuxなので、smartctlを使ってみた:
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 079 068 044 Pre-fail Always - 74220560
3 Spin_Up_Time 0x0003 097 097 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 2
5 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 068 060 045 Pre-fail Always - 5995223
9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 15
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 2
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
188 Command_Timeout 0x0032 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0022 064 062 040 Old_age Always - 36 (Min/Max 25/38)
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 2
193 Load_Cycle_Count 0x0032 100 100 000 Old_age Always - 2
194 Temperature_Celsius 0x0022 036 040 000 Old_age Always - 36 (0 25 0 0 0)
195 Hardware_ECC_Recovered 0x001a 040 036 000 Old_age Always - 74220560
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0023 100 100 001 Pre-fail Always - 0
240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline - 15 (143 172 0)
241 Total_LBAs_Written 0x0000 100 253 000 Old_age Offline - 13528061790
242 Total_LBAs_Read 0x0000 100 253 000 Old_age Offline - 455020
WDのHDDと違い、SeagateのHDDでは1 Raw_Read_Error_Rateや7 Seek_Error_Rate、195 Hardware_ECC_Recoveredといった値が物凄い勢いで増加しているので、最初diskの故障を疑った。
* [Just got a Seagate Ironwolf... are these SMART readings normal? : DataHoarder](https://www.reddit.com/r/DataHoarder/comments/61pmsb/just_got_a_seagate_ironwolf_are_these_smart/)
* [Seagate製HDDが故障する直前のsmart値 – UbuntuによるEco Linuxサーバ構築記](http://eco.senritu.net/seagate%E8%A3%BDhdd%E3%81%8C%E6%95%85%E9%9A%9C%E3%81%99%E3%82%8B%E7%9B%B4%E5%89%8D%E3%81%AEsmart%E5%80%A4/)
RAIDでもNAS専用機でもなくsingle disk換装を選んだ理由
Single disk換装を行ったのは、費用や運用の面で最も適していると考えたからだ。
他にはNASを組む (或いはNASキットを買う)、RAIDを組むなどの方法もあるが:
* 初期コストが高い (diskが複数本必要、それを格納できるケースやマザーボード或いはNAS本体、etc)
* 運用の複雑さが増す
* 電気代が増す
* 総容量が大きくなるとバックアップを取るのが難しくなる
といった問題がある。Single disk運用は、そのdiskが故障すると終わりという問題があるものの、これまで使っていたdisks (8TBと6TB)に定期的にbackupを取ることで影響をある程度緩和する方針を取る。
raidzを使い、信頼性のあるきちんとしたfile serverを構築する場合には、以下のpageが参考になるだろう:
cf. [10万円以内で作る18TB raid-z2(ダブルパリティ)高信頼ファイルサーバ – UbuntuによるEco Linuxサーバ構築記](http://eco.senritu.net/10%E4%B8%87%E5%86%86%E4%BB%A5%E5%86%85%E3%81%A7%E4%BD%9C%E3%82%8B18tb-raid-z2%E3%83%80%E3%83%96%E3%83%AB%E3%83%91%E3%83%AA%E3%83%86%E3%82%A3%E9%AB%98%E4%BF%A1%E9%A0%BC%E3%83%95%E3%82%A1%E3%82%A4/)
Windows 10 + AMD RX480な環境でFinal Fantasy XV Playable Demoが落ちることがある
Final Fantasy XVのPlayable Demoが配信されていたのでやってみた。取り敢えずFullHD程度ならRX480でもさほどストレスなく遊べる印象 (後でベンチマークソフトを走らせてみたら「やや快適」だった)。
男ばっかり4人のチームで、ホストが旅するゲームとか言われていたりしたけど、実際にやってみると結構面白いと感じている。
ただ、3度も同じような場所で止まったので、おそらくdriver側 (Adlenarinの最新版)に問題ありな雰囲気。
また、数日後には別の場所で画面がピンク色になって入力を受け付けなくなり、Windowsごと落ちてrebootした。
1年くらい前、『NieR:Automata』 (Steam版)でもdriverが安定するまでに時間がかかったのを思い出した。ただ、Automataとは違ってFFXVはオートセーブなのには結構救われた印象がある。
男ばっかり4人のチームで、ホストが旅するゲームとか言われていたりしたけど、実際にやってみると結構面白いと感じている。
ただ、3度も同じような場所で止まったので、おそらくdriver側 (Adlenarinの最新版)に問題ありな雰囲気。
また、数日後には別の場所で画面がピンク色になって入力を受け付けなくなり、Windowsごと落ちてrebootした。
1年くらい前、『NieR:Automata』 (Steam版)でもdriverが安定するまでに時間がかかったのを思い出した。ただ、Automataとは違ってFFXVはオートセーブなのには結構救われた印象がある。
最新のEmacsにてset-default-font (obsoleted)が削除された
commit f1c48b0ec521744826ed43ae27eed0e152c472bfにて、22.1の頃にobsolete扱いになっていたfunctionsが削除された。
set-default-fontもその中の一つで、これで指定していたdefault fontが適用されなくなった。代わりにset-frame-fontを使えとあるので、そのまま書き換える。
eg. Default fontとしてRictyの12ptを使う
× (set-default-font "Ricty-12")
↓
○ (set-frame-font "Ricty-12")
set-default-fontもその中の一つで、これで指定していたdefault fontが適用されなくなった。代わりにset-frame-fontを使えとあるので、そのまま書き換える。
eg. Default fontとしてRictyの12ptを使う
× (set-default-font "Ricty-12")
↓
○ (set-frame-font "Ricty-12")
2018年3月3日土曜日
Firefox (やその系列の) web browserでJavaScriptによるcontext menuの禁止を解除する
一部のwebsiteではJavaScriptの機能を応用 (悪用?)してcontext menuを出せないようにしている。今時のwebsiteをまともに閲覧するにはJavaScriptを丸ごとdisableするのも難しい (一応、No Scriptのようなextensionsを入れるという手はある)。
そこで、JavaScriptの機能のうち、context menuを変更するための機能のみをdisableしてみる。
* URL barに"about:config"と入力
* dom.event.contextmenu.enabledを"false"にする
これでJavaScriptによるcontext menuの変更 (禁止含む)を解除できる。
以前はPreferenceの画面にJavaScriptの機能を細かく制御できるoptionがあった気がするが、最近のversionだと無くなっている。
そこで、JavaScriptの機能のうち、context menuを変更するための機能のみをdisableしてみる。
* URL barに"about:config"と入力
* dom.event.contextmenu.enabledを"false"にする
これでJavaScriptによるcontext menuの変更 (禁止含む)を解除できる。
以前はPreferenceの画面にJavaScriptの機能を細かく制御できるoptionがあった気がするが、最近のversionだと無くなっている。
ラベル:
context menu,
Firefox,
JavaScript
gitでuntrackedなfilesをまとめてrmする
gitで最新版を追い掛けるだけの使い方をしていると、何らかの理由で手元のworking directoryにuntrackedなfilesが残ってしまうことがある。
1つや2つならまだ良いが、それ以上となると1つ1つに対して個別のpathを指定してrmを発行するのは面倒過ぎるし、そもそもprogramを嗜む者の端くれとしてあるべき姿ではない。
% git status -s | awk '{print $2}' | xargs rm -f
で片付けられる。一応rm -fを実行する前にどんなことになっているのかlsにpipeするなどして確認しておくと安全。
1つや2つならまだ良いが、それ以上となると1つ1つに対して個別のpathを指定してrmを発行するのは面倒過ぎるし、そもそもprogramを嗜む者の端くれとしてあるべき姿ではない。
% git status -s | awk '{print $2}' | xargs rm -f
で片付けられる。一応rm -fを実行する前にどんなことになっているのかlsにpipeするなどして確認しておくと安全。
mesalibをbuildする際にdefault以外のversionのLLVMを使う
configure scriptに対応するoptionがあるので使う。
--with-llvm-prefixがこれで、例えば2018-02-20現在のrelease版のLLVMは5.0.1だが、Debian unstableに入っているLLVM 7を使いたい場合:
% ./configure --with-llvm-prefix=`llvm-config-7 --prefix`
のように指定する。
--with-llvm-prefixがこれで、例えば2018-02-20現在のrelease版のLLVMは5.0.1だが、Debian unstableに入っているLLVM 7を使いたい場合:
% ./configure --with-llvm-prefix=`llvm-config-7 --prefix`
のように指定する。
登録:
投稿 (Atom)