およそ20年前に、かなり大きなインバータ蛍光灯のシーリングライトを買っていた。
暗いと気分が滅入るので、8畳の広さで、店舗用の20畳のシーリングライトを業者から直接入手し、取り付けていた。
引越ししてもそれを使い続けた。
値段も高かったが、すごく良いインバータだったようで、蛍光灯が切れたことがない。
数年前に少し暗くなってきた感じがしたので、この20年で1回交換しただけだ。
合計160Wあるのは解っていたが、ONにする時間があまり長くないので、電力の消費をあまり気にしていなかった。
とても良かったのだが、この電気代の高騰だ。
さらに、電力需給逼迫が起きている。
とうとうLEDシーリングライトに買い替えた。
(昼に撮影しています)
古いインバータ蛍光灯シーリングライトを外し、蛍光灯を外す時、プラスチックの部品が簡単に割れてしまた。
20年の間に劣化が進み、限界が来ていたようだ。
解任する時期だったようだ。ご苦労様でした。
同じくらいの明るさのものを買ったつもりだったのだが、全灯にするとさらに明るい。
ライトの横からも光がでており、部屋全体が明るくなった感じもする。
暗い部分が無いので、癒やし系の雰囲気になる。
それでいて、消費電力は110Wだそうだ。元の明るさぐらいなら、半分ぐらいではないか?
ついでに発熱も少ないように感じる。
照明の技術も時間と共に向上しているのだろう。
いつ壊れてもおかしくない状態だったし、消費電力や明るさも改善した。
買い替えてよかった。
2022年7月4日: シールドライト → シーリングライト に変更。
時々ど忘れで、物の名前が出てこなくなる。
思い出した時に、「あーそうだ!」となることもあれば、思い出せたとしても、それで合っているのかどうか解らない事もある。
ど忘れ状態で、「シールドライト」という言葉が出てきて、「なんか違う気がするな」と思いながらも、解らないパターンだなと思ってそのまま書いてしまった。
思い出す時は、普通に思い出せるのに、ダメな時は全くダメだ。
例えば、中学生の頃、越谷に住んでいたが、それを忘れてしまっていることがあった。
どうしても思い出せないし、そもそも越谷ってどこだ?初めて聞く地名みたいな状態になる。
「中学の頃に住んでいたでしょ?」と言われても、越谷を知らない状態になっているので、全く記憶が引き出せない。
数分から数十分後ぐらいには、普通に思い出せる状態に戻るのだが、会話の最中にど忘れになると、かなり困る。
会話のテンポでは、記憶をたどれない。
「ど忘れは誰にでもある」という人もいれば、「答えを見れば、必ず思い出す」という人もいる。
どっちが正しいのやら。
2022年7月3日日曜日
2022年5月7日土曜日
デッドスペースを活用しよう#1
関連記事:
デッドスペースを活用しよう#2
今年(2022年)の3月16日(水)に発生した地震の影響で、東北新幹線はまだ全面開通していない。
地震や火山噴火だけでなく、異常気象による自然災害も多いし、東欧では戦争が起きている。
いざという時のための用意をすると、場所がない事に気がつく。
(なんだかんだものを持ち過ぎか?)
ある時ふと、この記事の動画(以下)の、最初と最後に映る部屋の扉の裏側の空間が全く使われていない空間=デッドスペースである事に気がついた。
とても狭い空間ではあるが、缶詰をずらっと並べる事はできる。
缶詰を箱に収納すると、重なって何が新しいのかわからなくなる。
『「手前から使用、奥へ補充」を徹底する』というソリューションは誰でも思いつくだろう。しかし、実際にやってみると解るのだが、これはかなり手間がかかる。
奥とは底なので、補充の際は、全部出して詰め直すという作業が必要だ。箱が深ければ、より手間がかかるようになる。
この問題に対する解決策の1つは、「3次元に並べない」ということだ。
2次元に並べるのなら、全体を見渡すことができ、管理が極めて簡単になる。
そのように考えると、薄っぺらな空間は、むしろ缶詰を保管するためにあるようにすら思えてくる。
扉の裏に、奥行き缶詰1つぶんの浅い棚を設置しよう。
ビバホームで色々見て、2×4を使った浅い棚がちょうどいいように思えた。
最初から1×4の板をはめる溝が切られた2×4材も売られていた。
棚板の間隔は約200mm(一般的なカラーボックとほぼ同じ間隔)になっているのが残念(長めの缶詰でも120mm程度。80mm=4割無駄になる)だが、まずは簡単な方法から始めよう。
材料の多くは、ビバホで購入、カットしたが、大きいので持ち帰らずに自宅へ届けてもらった。
今日届いて、とりあえずニスを塗った。
動画も撮影したんだけど、まだ編集していない。
できたら、Upする予定。
2022年5月8日 動画(とりあえず版)を作った。
パーツ全体、ニス塗り、使用予定の突っぱり装置。
ベランダに新聞で養生して、そこで作業をした。
昨日は、曇りだったので妙に暗い。
デッドスペースを活用しよう#2
デッドスペースを活用しよう#2
今年(2022年)の3月16日(水)に発生した地震の影響で、東北新幹線はまだ全面開通していない。
地震や火山噴火だけでなく、異常気象による自然災害も多いし、東欧では戦争が起きている。
いざという時のための用意をすると、場所がない事に気がつく。
(なんだかんだものを持ち過ぎか?)
ある時ふと、この記事の動画(以下)の、最初と最後に映る部屋の扉の裏側の空間が全く使われていない空間=デッドスペースである事に気がついた。
とても狭い空間ではあるが、缶詰をずらっと並べる事はできる。
缶詰を箱に収納すると、重なって何が新しいのかわからなくなる。
『「手前から使用、奥へ補充」を徹底する』というソリューションは誰でも思いつくだろう。しかし、実際にやってみると解るのだが、これはかなり手間がかかる。
奥とは底なので、補充の際は、全部出して詰め直すという作業が必要だ。箱が深ければ、より手間がかかるようになる。
この問題に対する解決策の1つは、「3次元に並べない」ということだ。
2次元に並べるのなら、全体を見渡すことができ、管理が極めて簡単になる。
そのように考えると、薄っぺらな空間は、むしろ缶詰を保管するためにあるようにすら思えてくる。
扉の裏に、奥行き缶詰1つぶんの浅い棚を設置しよう。
ビバホームで色々見て、2×4を使った浅い棚がちょうどいいように思えた。
最初から1×4の板をはめる溝が切られた2×4材も売られていた。
棚板の間隔は約200mm(一般的なカラーボックとほぼ同じ間隔)になっているのが残念(長めの缶詰でも120mm程度。80mm=4割無駄になる)だが、まずは簡単な方法から始めよう。
材料の多くは、ビバホで購入、カットしたが、大きいので持ち帰らずに自宅へ届けてもらった。
今日届いて、とりあえずニスを塗った。
動画も撮影したんだけど、まだ編集していない。
できたら、Upする予定。
2022年5月8日 動画(とりあえず版)を作った。
パーツ全体、ニス塗り、使用予定の突っぱり装置。
ベランダに新聞で養生して、そこで作業をした。
昨日は、曇りだったので妙に暗い。
デッドスペースを活用しよう#2
2022年4月1日金曜日
スイッチ付きテーブルタップと手元スイッチ
先週の東京のブラックアウト危機の際、PC、NAS、HUB、プリンタ
の電源を抜いていた。
ブラックアウト危機は、みんなの努力で乗り越えられた。
めでたし。めでたしっと、終わりたいが、最近は電気代がどんどん上がっている。
去年に比べて1,000円ぐらい高くなっているように感じる。
無駄な電力消費を減らしたい。
危機の際、電源ケーブルを抜いた後で、ケーブルが棚の裏に落ちてしまい、復旧作業が面倒だった。
そうなると、結局電源入れっぱなしで使うことになってしまう。
もっと簡単に電源が切れればいいと思って、スイッチ付きテーブルタップや、手元スイッチを近所のヨドバシで買ってきた。
スイッチ付きテーブルタップの多くは、スイッチにネオンランプか仕込んであるものが多い。
ネオンランプに触れれば熱くなっていない事からわかるように、消費電力はわずかだ。
ついでに、OFFになっている時は消えているので、あまり神経質になることはないのだが、売り場で「ランプレス」と書かれているものがあった。
ランプがないのにONにすると赤くなる。
上の写真、プラグが抜けているのに、下から2つめが赤くなっているのがわかるだろう。
なんか面白いので、それを買ってしまった。
このスイッチ付きタップには、HUB、NAS、プリンタをつなぐ。
デスクトップPCは、手元スイッチに付ける。
PCがOFFのときは、ディスプレイやセルフパワーUSBハブも切っておきたいので、以前ダイソーで買った3分配を手元スイッチにつけて分配した。
配線が棚や机の裏にあるので、引き抜いて通し直したり、意外に手間がかかった。
値上げぶんぐらいの効果があったら良いな。
2022年05月27日(金) 追記:
スイッチを変える前と後で、電気代を比較した。3,000円ぐらい安くなっていた。
ただし、寒い時期はエアコンの暖房機能を使っていた。
すなわち、差は待機電力のカットだけでもたらされたわけではない。
比べるには、通年を通して、比較しないといけない。
ブラックアウト危機は、みんなの努力で乗り越えられた。
めでたし。めでたしっと、終わりたいが、最近は電気代がどんどん上がっている。
去年に比べて1,000円ぐらい高くなっているように感じる。
無駄な電力消費を減らしたい。
危機の際、電源ケーブルを抜いた後で、ケーブルが棚の裏に落ちてしまい、復旧作業が面倒だった。
そうなると、結局電源入れっぱなしで使うことになってしまう。
もっと簡単に電源が切れればいいと思って、スイッチ付きテーブルタップや、手元スイッチを近所のヨドバシで買ってきた。
スイッチ付きテーブルタップの多くは、スイッチにネオンランプか仕込んであるものが多い。
ネオンランプに触れれば熱くなっていない事からわかるように、消費電力はわずかだ。
ついでに、OFFになっている時は消えているので、あまり神経質になることはないのだが、売り場で「ランプレス」と書かれているものがあった。
ランプがないのにONにすると赤くなる。
上の写真、プラグが抜けているのに、下から2つめが赤くなっているのがわかるだろう。
なんか面白いので、それを買ってしまった。
このスイッチ付きタップには、HUB、NAS、プリンタをつなぐ。
デスクトップPCは、手元スイッチに付ける。
PCがOFFのときは、ディスプレイやセルフパワーUSBハブも切っておきたいので、以前ダイソーで買った3分配を手元スイッチにつけて分配した。
配線が棚や机の裏にあるので、引き抜いて通し直したり、意外に手間がかかった。
値上げぶんぐらいの効果があったら良いな。
2022年05月27日(金) 追記:
スイッチを変える前と後で、電気代を比較した。3,000円ぐらい安くなっていた。
ただし、寒い時期はエアコンの暖房機能を使っていた。
すなわち、差は待機電力のカットだけでもたらされたわけではない。
比べるには、通年を通して、比較しないといけない。
2021年9月5日日曜日
まだまだ続くのか
「4度目の緊急事態宣言」は延長され、まだ続いている。
それどころか地域的にも拡大している。
医療崩壊状態なので、やむを得まい。
病院がない世界って、日本は未開の土地ですか?
尾身先生の意見を考慮すれば、こうなることは解っていた。
避けられなかったのは残念だ。
感染者数の累計は、1,500万人を越えている。
総人口の12%程度だ。
この数では集団免疫にはならないので、積極的に接触を抑えない限り、さらに広がるだろう。
すなわち、医療崩壊はまだまだ続く。
ワクチン接種により、免疫が獲得できればこの状況が改善すると期待していたが、「ミュー変異株」が現れた。
まだ調査研究段階のため、はっきりしたことがわからないが、ワクチン耐性を持つ変異とも言われている。
よくわからないとはいえ、接触しなければ感染しないことは容易に想像できる。
色々解るまでは、接触を抑えたほうが良い。
抗体を持っていても発病しにくいだけで、キャリアにはなるし、南海キャンディーズのしずちゃんのように何度も発病することもある。
ワクチンの接種が進んだ時点で、ミュー株が流行っていれば、結局医療崩壊が続き、緊急事態も続く。
とにかく、ワクチンを接種していようがいまいが、接触を減らし続けたほうがいい。
リモートで仕事をするアマビエと勘違いしているコロにゃん。 (将来、色を付けるかも)
2021/09/10 マンガをちょっとだけ直した。
関連記事:
若者もワクチン接種
手紙を書くネコ
戦国 新型コロにゃん ウイルス
新型コロにゃん ウイルス
それどころか地域的にも拡大している。
医療崩壊状態なので、やむを得まい。
病院がない世界って、日本は未開の土地ですか?
尾身先生の意見を考慮すれば、こうなることは解っていた。
避けられなかったのは残念だ。
感染者数の累計は、1,500万人を越えている。
総人口の12%程度だ。
この数では集団免疫にはならないので、積極的に接触を抑えない限り、さらに広がるだろう。
すなわち、医療崩壊はまだまだ続く。
ワクチン接種により、免疫が獲得できればこの状況が改善すると期待していたが、「ミュー変異株」が現れた。
まだ調査研究段階のため、はっきりしたことがわからないが、ワクチン耐性を持つ変異とも言われている。
よくわからないとはいえ、接触しなければ感染しないことは容易に想像できる。
色々解るまでは、接触を抑えたほうが良い。
抗体を持っていても発病しにくいだけで、キャリアにはなるし、南海キャンディーズのしずちゃんのように何度も発病することもある。
ワクチンの接種が進んだ時点で、ミュー株が流行っていれば、結局医療崩壊が続き、緊急事態も続く。
とにかく、ワクチンを接種していようがいまいが、接触を減らし続けたほうがいい。
リモートで仕事をするアマビエと勘違いしているコロにゃん。 (将来、色を付けるかも)
2021/09/10 マンガをちょっとだけ直した。
関連記事:
若者もワクチン接種
手紙を書くネコ
戦国 新型コロにゃん ウイルス
新型コロにゃん ウイルス
2021年4月4日日曜日
Kalitaコーヒーミルを電動工具で駆動する方法
引き立てのコーヒーは美味しい。
手動のコーヒーミルでゆっくり挽くのがより美味しいとも言われている。
とはいえ、手動で挽くのは時間がかかるし、疲れる。
余裕がある時は、それもまた良い。
でも、いつも余裕があるわけでもなく、逆にゆっくりしたいから、コーヒーを飲むというのもある。
普段使っている手動コーヒーミル(Kalita KH-3)を電動工具で動かせないかと考えた。
このミルの調整金具固定用ネジの太さが、1/4"のようだった。
うちにあったW1/4"のナットをはめてみたら、ピッタリと入った。
このナットを電動工具で回せばいい。試してみると10mmのソケットレンチがちょうど良かった。
最初は、最近ビバホームで買ったバッテリ式の電動ドライバを使おうとした。
空の時は回るが、豆が入ると回らない。
ついでに回転速度も、コーヒーには速すぎる感じだ。
「机の引き出しに鍵をつけろ!」で使った電動ドリル&ドライバを出してきた。
2,480円だった割に使いやすく、AC100Vで力強く動作し、バッテリ式ではないのでバッテリ寿命も気にならない。
さらに、スピード調整もできる。
見事にゴリゴリまわり、簡単にきれいに挽けた。
余裕が無い時は、カッコつけてないで、楽ちんにいこう。
手動のコーヒーミルでゆっくり挽くのがより美味しいとも言われている。
とはいえ、手動で挽くのは時間がかかるし、疲れる。
余裕がある時は、それもまた良い。
でも、いつも余裕があるわけでもなく、逆にゆっくりしたいから、コーヒーを飲むというのもある。
普段使っている手動コーヒーミル(Kalita KH-3)を電動工具で動かせないかと考えた。
このミルの調整金具固定用ネジの太さが、1/4"のようだった。
うちにあったW1/4"のナットをはめてみたら、ピッタリと入った。
このナットを電動工具で回せばいい。試してみると10mmのソケットレンチがちょうど良かった。
最初は、最近ビバホームで買ったバッテリ式の電動ドライバを使おうとした。
空の時は回るが、豆が入ると回らない。
ついでに回転速度も、コーヒーには速すぎる感じだ。
「机の引き出しに鍵をつけろ!」で使った電動ドリル&ドライバを出してきた。
2,480円だった割に使いやすく、AC100Vで力強く動作し、バッテリ式ではないのでバッテリ寿命も気にならない。
さらに、スピード調整もできる。
見事にゴリゴリまわり、簡単にきれいに挽けた。
余裕が無い時は、カッコつけてないで、楽ちんにいこう。
2021年3月13日土曜日
SSDに移行した
先日買ったSSDを去年買ったPCで使うようになった。
テレワークが終わるまで待とうと思っていたが、仮想マシンが重いので結局換装した。
KIOXIAのEXCERIAは堅実なメインストリームモデルなので、 性能重視のEXCERIA Plusよりは遅い(半分ぐらい)が、HDDと比べたら圧倒的に速い(5〜10倍)。
将来、より速いモデルに載せ替えるかもしれないが、今はとりあえず堅実なものを選んだ。
PCを分解してHDDを外し、M.2スロットにEXCERIAを付けた。
SSDは熱くなるとも言われているので、一応ヒートシンクも買って付けてある。
ラベルが付いている状態で、ラベルの上からヒートシンクをはめた。
熱伝導的には最高とは言えないが、空気よりはいい。空気の熱伝導率は非常に悪い。ポリエチレン、シリコンゴム、木材とは桁が違う。 ラベルを気にするよりも、空気を気にするべきだ。空気の熱伝導率は極めて悪い。そのため密着さえすれば効果は期待できる。
ラベルはヒートシンク付属の「熱伝導性サーマルパッド」よりも明らかに薄い。ラベルを気にするなら、サーマルパッドも気にするべきだろう。
もちろん、性能重視のギリギリ狙いなら、ラベルを剥がすのもありだ。
ただし、剥がす際は基板にダメージが無いように細心の注意を。さらに、サポートもなくなるらしい。
Ubuntu 18.04.5(バカなのでまだ18.04を使い続ける)のDVDイメージをダウンロードしてきて、ノートPCでDVDに焼いて、M.2にインストールした。
インストーラもM.2を認識していた。Ubuntu18.04の起動が10秒以下になった。
起動が速くなったのは良いが、心配事もある。
主記憶を8GiBにしている。普通に使うぶんには充分だが、VirtualBoxで仮想マシンを動かしていると、しばしばPaging(Swap)が発生する。
Flashメモリは書き込み寿命がある。Pagingで寿命を減らしてしまってはもったいない。
思い切って、16GiBのDIMMを2枚購入して、合計32GBにした。
残念ながらDIMMはDual rankだった。Slotは4本あるものの、安全のため元々入っていた8GiBは外して使うことにした。
Core i7 + 2次記憶 M.2 SSD + 主記憶 32GiB の環境は素晴らしく使いやすい。
メインのUbuntu18.04上で、VirtualBoxを使ってテレワーク用に用意したWindows10、試しに使っているUbuntu Budgie20.04の2つを動かしていても、全くストレスを感じない。
仮想マシンを動かしていると、消費メモリが増えDisk cacheが働きにくくなり、必然的にストレージのアクセスが増える。結果的にアクセス待ちで激重だった(プロセッサパワーは9割余っているのに)。いろいろ換装後は、それぞれ別の機械で動作しているかのようにサクサク動く。
考えてみれば、プロセッサはマルチコアだし、仮想化機能ももっている。画面もコンポジットウインドウなので、メインも仮想マシンも大した違いはない。
全てがサクサク動いている。
SSDにしたら、主記憶も増設しよう。
とはいえ、多くのSSDは DRAM Cacheもある。
それに期待して、Single rankのDIMMが増えてからDRAMを増設するのもありかも。
普通に使うなら、8GiBで充分なのだから。
追記1: VirtualBox 6.1.18 では、仮想マシンでUARTが動かない。
TeraTermでUARTを使いたいので、これは致命的だ。
Serial ports (uart) don't work on VB 6.1.10, 6.1.12 and 6.1.14
Virtualboxのソースを入手して、上記リンクを参考にパッチをあててリビルドして使え。
追記2: Linuxで、PCIe NVMe SSDのSMARTの状態を見るなら、nvmeコマンドを使う。
以下のようにして、nvme-cliをinstallせよ。
SMARTの状態を見るなら、以下のようにする。
テレワークが終わるまで待とうと思っていたが、仮想マシンが重いので結局換装した。
KIOXIAのEXCERIAは堅実なメインストリームモデルなので、 性能重視のEXCERIA Plusよりは遅い(半分ぐらい)が、HDDと比べたら圧倒的に速い(5〜10倍)。
将来、より速いモデルに載せ替えるかもしれないが、今はとりあえず堅実なものを選んだ。
PCを分解してHDDを外し、M.2スロットにEXCERIAを付けた。
SSDは熱くなるとも言われているので、一応ヒートシンクも買って付けてある。
ラベルが付いている状態で、ラベルの上からヒートシンクをはめた。
熱伝導的には最高とは言えないが、空気よりはいい。空気の熱伝導率は非常に悪い。ポリエチレン、シリコンゴム、木材とは桁が違う。 ラベルを気にするよりも、空気を気にするべきだ。空気の熱伝導率は極めて悪い。そのため密着さえすれば効果は期待できる。
ラベルはヒートシンク付属の「熱伝導性サーマルパッド」よりも明らかに薄い。ラベルを気にするなら、サーマルパッドも気にするべきだろう。
もちろん、性能重視のギリギリ狙いなら、ラベルを剥がすのもありだ。
ただし、剥がす際は基板にダメージが無いように細心の注意を。さらに、サポートもなくなるらしい。
Ubuntu 18.04.5(バカなのでまだ18.04を使い続ける)のDVDイメージをダウンロードしてきて、ノートPCでDVDに焼いて、M.2にインストールした。
インストーラもM.2を認識していた。Ubuntu18.04の起動が10秒以下になった。
起動が速くなったのは良いが、心配事もある。
主記憶を8GiBにしている。普通に使うぶんには充分だが、VirtualBoxで仮想マシンを動かしていると、しばしばPaging(Swap)が発生する。
Flashメモリは書き込み寿命がある。Pagingで寿命を減らしてしまってはもったいない。
思い切って、16GiBのDIMMを2枚購入して、合計32GBにした。
残念ながらDIMMはDual rankだった。Slotは4本あるものの、安全のため元々入っていた8GiBは外して使うことにした。
Core i7 + 2次記憶 M.2 SSD + 主記憶 32GiB の環境は素晴らしく使いやすい。
メインのUbuntu18.04上で、VirtualBoxを使ってテレワーク用に用意したWindows10、試しに使っているUbuntu Budgie20.04の2つを動かしていても、全くストレスを感じない。
仮想マシンを動かしていると、消費メモリが増えDisk cacheが働きにくくなり、必然的にストレージのアクセスが増える。結果的にアクセス待ちで激重だった(プロセッサパワーは9割余っているのに)。いろいろ換装後は、それぞれ別の機械で動作しているかのようにサクサク動く。
考えてみれば、プロセッサはマルチコアだし、仮想化機能ももっている。画面もコンポジットウインドウなので、メインも仮想マシンも大した違いはない。
全てがサクサク動いている。
SSDにしたら、主記憶も増設しよう。
とはいえ、多くのSSDは DRAM Cacheもある。
それに期待して、Single rankのDIMMが増えてからDRAMを増設するのもありかも。
普通に使うなら、8GiBで充分なのだから。
追記1: VirtualBox 6.1.18 では、仮想マシンでUARTが動かない。
TeraTermでUARTを使いたいので、これは致命的だ。
Serial ports (uart) don't work on VB 6.1.10, 6.1.12 and 6.1.14
Virtualboxのソースを入手して、上記リンクを参考にパッチをあててリビルドして使え。
追記2: Linuxで、PCIe NVMe SSDのSMARTの状態を見るなら、nvmeコマンドを使う。
以下のようにして、nvme-cliをinstallせよ。
$ sudo apt-get install nvme-cli
SMARTの状態を見るなら、以下のようにする。
$ sudo nvme smart-log /dev/nvme0n1 [sudo] Xxxxx のパスワード: (パスワードを入力) Smart Log for NVME device:nvme0n1 namespace-id:ffffffff critical_warning : 0 temperature : 41 C available_spare : 100% available_spare_threshold : 5% percentage_used : 0% data_units_read : 1,201,865 data_units_written : 1,147,028 host_read_commands : 19,100,479 host_write_commands : 8,356,679 controller_busy_time : 97 power_cycles : 62 power_on_hours : 269 unsafe_shutdowns : 22 media_errors : 0 num_err_log_entries : 42 Warning Temperature Time : 0 Critical Composite Temperature Time : 0 Thermal Management T1 Trans Count : 0 Thermal Management T2 Trans Count : 0 Thermal Management T1 Total Time : 0 Thermal Management T2 Total Time : 0
2021年1月23日土曜日
KIOXIA の SSD を買った
再度テレワークになり、去年買ったPCを使い始めた。
プロセッサは速いが、ストレージのアクセスは遅い。
たとえば、apt-get updateをした時、ダウンロード後の処理が遅い。2016年に中古で買ったFolio13の方が早く終わる。
Folio13は第2世代Core-i5なので、プロセッサの処理能力は明らかに低い。このOptiplex760は、Core2-Quadだが、こちらのほうが処理能力が高いくらいだ。
それなのに、ダウンロード後の処理は、Folio13の方が早く終わる。
実は、Folio13のストレージはPCIe接続のSSDなのだ。
そのため、プロセッサは遅くても、とても使いやすい。
仕事で大量のデータを扱うため、HDDはどうしても必要だ(そのためHDDでブートするようにした)。しかし、HDDをデータ領域専用と割り切って、去年買ったPCのOS等をSSDに置く事を考えた。
色々調べ始めると、KIOXIA(元東芝半導体) の SSD が見つかった。
国産の3D NAND FLASH を使っているそうだ。
500GBあたりから、リニアな値段に見えたので、500GBのSSDをかった。
6,980円だった。あのボロいVAIO-C1も、最終的にATA版のSSDに置き換えていたのだが、128GBで3万円以上したと記憶している。
いつの間にやら安くなったものだ。
あまり現状を考えずに、ポチッとしてしまった。
今週は、忙しいし、テレワークでバリバリ使っているPCのストレージの置き換えはリスクもある。
来月、テレワークが終わったら、入れ替えようかな。
プロセッサは速いが、ストレージのアクセスは遅い。
たとえば、apt-get updateをした時、ダウンロード後の処理が遅い。2016年に中古で買ったFolio13の方が早く終わる。
Folio13は第2世代Core-i5なので、プロセッサの処理能力は明らかに低い。このOptiplex760は、Core2-Quadだが、こちらのほうが処理能力が高いくらいだ。
それなのに、ダウンロード後の処理は、Folio13の方が早く終わる。
実は、Folio13のストレージは
そのため、プロセッサは遅くても、とても使いやすい。
仕事で大量のデータを扱うため、HDDはどうしても必要だ(そのためHDDでブートするようにした)。しかし、HDDをデータ領域専用と割り切って、去年買ったPCのOS等をSSDに置く事を考えた。
色々調べ始めると、KIOXIA(元東芝半導体) の SSD が見つかった。
国産の3D NAND FLASH を使っているそうだ。
500GBあたりから、リニアな値段に見えたので、500GBのSSDをかった。
6,980円だった。あのボロいVAIO-C1も、最終的にATA版のSSDに置き換えていたのだが、128GBで3万円以上したと記憶している。
いつの間にやら安くなったものだ。
あまり現状を考えずに、ポチッとしてしまった。
今週は、忙しいし、テレワークでバリバリ使っているPCのストレージの置き換えはリスクもある。
来月、テレワークが終わったら、入れ替えようかな。
2021/02/04 | 調べ直したら、Folio13 2000 のSSDはmSATA接続だった。内蔵Wi-Fiが802.11ac未対応なので、対応のものに交換しようとしたら、電波の種類が違うため、802.11ac対応のPCIeを入れると起動しなくなってしまう(法的な問題でBIOSが許可しない)。それでUSB Wi-Fiを使っているのだが、使わないPCIeがもったいないので、NVMeに換装してしまおうかと、数年前に考えていたのだ。 実際に換装できるか、換装したところで正常に動作するかは未確認。 換装できたら面白いなと思っているうちに、数年の歳月が流れ記憶がごちゃごちゃになっていたようだ。 |
2019年10月25日金曜日
Ubuntu 18.04 で無理やりNemo RabbitVCS #2
6月に書いたこの記事にしたがってRabbitVCSをインストールした場合、一部の機能が動かない。バージョンが微妙に違うものを無理やりインストールしたためだろう。
記事を書いた後で気がついて、自分では別の方法を使って、再度インストールし直した。
とはいえ、UbuntuでNemoを使う人はマイナーだろうし、バージョン管理にRabbitVCSを使う人も多くないだろう(多くはコマンドラインだろう)から、アクセスは少ないだろうと思っていたので、放置していた。
しかし、最近になってじわじわアクセス数が伸びてきた。
一部の機能が動かない方法のまま放置するのもどうかと思って、新しい方法をここに書く。
新しい方法と言っても、Ubuntuのオフィシャルではない。
様々な事情があるようだが、Ubuntuには Nemo用RabbitVCSパッケージ は無いので、Ubuntuパッケージ管理から離れてなんとかする必要がある。
そのため結局、「無理やり」手法になる。
手動でインストールするために、まず、最新のRabbitVCSを得よう。
RabbitVCSを検索エンジンで検索すると、最初に出てくるのは http://rabbitvcs.orgだろう。(あえてハイパーリンクにしません)
しかし、このページを見ると、2017年あたりから更新が止まっているように見える。
実は、新しいページがgithubに作られている。The new home of rabbitvcs
このページで紹介されている方法に従って(いくつか変更が必要)、インストールするとNemoでRabbitVCSが使えるようになる。
まず最初に現在インストールされているRabbitVCS関連全てを削除する。
前回の無理やりインストールで書き込んだ /usr/share/nemo-python/extensions/RabbitVCS.py は、後から上書きするので、放置しておいて良い。
次に必要なものにリストされているものをインストールする。
Debian系のコマンドライン例も書かれているが、python-gtkspell, tkinter, python-gtk3 が無いと言ってくる。
それぞれについて調べると、python-gtkspell は python-gtkspellcheck で、kinter は python3-tk でいいようだ。
python-gtk3 は、その情報も見つからなかったが、なんとなく python3-tk がカバーしているように思うので無視する(名前も似ているし)。
ということで、以下のようなコマンドで必要なものを入れることになる。
続いて、ダウンロードおよびインストールをおこなう。
ダウンロードはgit cloneで行っておけば、git pullで更新できる(RabbitVCSで更新してもいいか)。
任意のディレクトリに移動して、以下を実行する。
Nemoの場合は、https://github.com/rabbitvcs/rabbitvcs/tree/master/clients/nemoの説明に従う。
Nemoの場合に必要となるものがいくつかある。おそらくすでにインストールされていると思うが、それらをインストールしておく。
ダウンロードしたrabbitvcsの中の、clients/nemo/RabbitVCS.py をコピーする(全ユーザで使う場合)。
どちらの場合でも、python/python-extensionsフォルダを作る必要があるかもしれない的なことが書いてあるが、意味がわからないし、「かもしれない」ので無視する。
(コピーの前にコピー先のディレクトリを作っておけって言っているのかな?)
最後に、nemoを再起動する。
今の所、問題は無い。
無理やりインストールなので、やっぱり自己責任で。
すなわち、更新のチェックや、RabbitVCS.pyの入れ替えは、自分でやらなければならない。
aptはやってくれないし、私も責任をとらない。
2020.02.22 追記
VirtualBoxが動かないときがある。
/usr/share/nemo-python/extensions/RabbitVCS.py をコピーした時、そのディレクトリやそのファイルの所有者がrootになっていないと、VirtualBoxが動かないようだ。前の記事を書いた後で、VirtualBoxが動かなくなることに気がついて、すぐに直していた。
今日になって、母艦でVirtualBoxを使おとしたら動かなかったので、思い出した。
重要な事をなるべく記事に書こうと思うが、うっかり忘れてしまう。
記事にする前に、ある程度時間をかけて(1カ月ぐらいかな)確認していると、最初にやっていた事を忘れてしまう。特に直接関係ない事は「なんかあったような気がするけど、何だったっけ?」のようになってしまう。
所有者を書き換えるなら、たとえば以下のようにすればいい。
上記は、1つの例だ。自分のやり方でやればいい。
2020.03.01 追記
gitで「ログ表示」をした時、Revision Tableの欄の左端にグラフが出ていないことに気がついた。
Python の Cairo関連のパッケージが足りないようで、以下のようにしてインストールする。
2020.11.26 追記
最近になってこの記事のアクセスが増えてきた。
他にも足りないパッケージがあったように思うんだけど、時間経過とともにどんどん忘れてしまった。
'nemo -q'で実行中のnemoを全部止めた状態で、あらためてコマンドラインから'nemo'で起動すると、色々エラーが出る。問題のないものも多いが、python系で何か足りないようなら、それらをインストールしていこう。
2023.03.31 追記
先日、git pullして、setup.pyでインストールし直しを試みたら、setuptoolsが無いみたいなエラーになった。
aptで、python-setuptools(python3系ならpython3-setuptools)をインストールしたら動くようになった。
記事を書いた後で気がついて、自分では別の方法を使って、再度インストールし直した。
とはいえ、UbuntuでNemoを使う人はマイナーだろうし、バージョン管理にRabbitVCSを使う人も多くないだろう(多くはコマンドラインだろう)から、アクセスは少ないだろうと思っていたので、放置していた。
しかし、最近になってじわじわアクセス数が伸びてきた。
一部の機能が動かない方法のまま放置するのもどうかと思って、新しい方法をここに書く。
新しい方法と言っても、Ubuntuのオフィシャルではない。
様々な事情があるようだが、Ubuntuには Nemo用RabbitVCSパッケージ は無いので、Ubuntuパッケージ管理から離れてなんとかする必要がある。
そのため結局、「無理やり」手法になる。
手動でインストールするために、まず、最新のRabbitVCSを得よう。
RabbitVCSを検索エンジンで検索すると、最初に出てくるのは http://rabbitvcs.orgだろう。(あえてハイパーリンクにしません)
しかし、このページを見ると、2017年あたりから更新が止まっているように見える。
実は、新しいページがgithubに作られている。The new home of rabbitvcs
このページで紹介されている方法に従って(いくつか変更が必要)、インストールするとNemoでRabbitVCSが使えるようになる。
まず最初に現在インストールされているRabbitVCS関連全てを削除する。
sudo apt purge 'rabbitvcs*'インストールされていないものは削除できないとか色々表示されるけど、入っているものが削除されれはいいので、'Y'を答えて削除してしまおう。
前回の無理やりインストールで書き込んだ /usr/share/nemo-python/extensions/RabbitVCS.py は、後から上書きするので、放置しておいて良い。
次に必要なものにリストされているものをインストールする。
Debian系のコマンドライン例も書かれているが、python-gtkspell, tkinter, python-gtk3 が無いと言ってくる。
それぞれについて調べると、python-gtkspell は python-gtkspellcheck で、kinter は python3-tk でいいようだ。
python-gtk3 は、その情報も見つからなかったが、なんとなく python3-tk がカバーしているように思うので無視する(名前も似ているし)。
ということで、以下のようなコマンドで必要なものを入れることになる。
sudo apt-get install python-configobj python-gobject python-gtkspellcheck python-svn subversion python-dulwich python-pygments git meld python3-tk
続いて、ダウンロードおよびインストールをおこなう。
ダウンロードはgit cloneで行っておけば、git pullで更新できる(RabbitVCSで更新してもいいか)。
任意のディレクトリに移動して、以下を実行する。
git clone https://github.com/rabbitvcs/rabbitvcs.gitrabbitvcsというディレクトリ(ローカルリポジトリ)ができるので、その中に移動して、手動インストールコマンドを実行する。
sudo python setup.py install --install-layout=debここまで来たら、以降の作業はクライアント(ファイルマネージャ)毎に異なる。
Nemoの場合は、https://github.com/rabbitvcs/rabbitvcs/tree/master/clients/nemoの説明に従う。
Nemoの場合に必要となるものがいくつかある。おそらくすでにインストールされていると思うが、それらをインストールしておく。
sudo apt install nemo-python python-dbus
ダウンロードしたrabbitvcsの中の、clients/nemo/RabbitVCS.py をコピーする(全ユーザで使う場合)。
sudo cp clients/nemo/RabbitVCS.py /usr/share/nemo-python/extensions
どちらの場合でも、python/python-extensionsフォルダを作る必要があるかもしれない的なことが書いてあるが、意味がわからないし、「かもしれない」ので無視する。
(コピーの前にコピー先のディレクトリを作っておけって言っているのかな?)
最後に、nemoを再起動する。
nemo -q pgrep -f service.py | xargs kill nohup nemo > /dev/null &うまくいったら、RabbitVCSが動くようになる。
今の所、問題は無い。
無理やりインストールなので、やっぱり自己責任で。
すなわち、更新のチェックや、RabbitVCS.pyの入れ替えは、自分でやらなければならない。
aptはやってくれないし、私も責任をとらない。
2020.02.22 追記
VirtualBoxが動かないときがある。
/usr/share/nemo-python/extensions/RabbitVCS.py をコピーした時、そのディレクトリやそのファイルの所有者がrootになっていないと、VirtualBoxが動かないようだ。前の記事を書いた後で、VirtualBoxが動かなくなることに気がついて、すぐに直していた。
今日になって、母艦でVirtualBoxを使おとしたら動かなかったので、思い出した。
重要な事をなるべく記事に書こうと思うが、うっかり忘れてしまう。
記事にする前に、ある程度時間をかけて(1カ月ぐらいかな)確認していると、最初にやっていた事を忘れてしまう。特に直接関係ない事は「なんかあったような気がするけど、何だったっけ?」のようになってしまう。
所有者を書き換えるなら、たとえば以下のようにすればいい。
find /usr/share/nemo-python | xargs sudo chown root:root実行しようとすると、sudoがパスワードを求めてくるので、パスワードを入力する。
上記は、1つの例だ。自分のやり方でやればいい。
2020.03.01 追記
gitで「ログ表示」をした時、Revision Tableの欄の左端にグラフが出ていないことに気がついた。
Python の Cairo関連のパッケージが足りないようで、以下のようにしてインストールする。
sudo apt install python-cairocffi python-gi-cairo python3-cairocffi python3-gi-cairo少し入れ過ぎなんだけど、足りないよりは良い。
2020.11.26 追記
最近になってこの記事のアクセスが増えてきた。
他にも足りないパッケージがあったように思うんだけど、時間経過とともにどんどん忘れてしまった。
'nemo -q'で実行中のnemoを全部止めた状態で、あらためてコマンドラインから'nemo'で起動すると、色々エラーが出る。問題のないものも多いが、python系で何か足りないようなら、それらをインストールしていこう。
2023.03.31 追記
先日、git pullして、setup.pyでインストールし直しを試みたら、setuptoolsが無いみたいなエラーになった。
aptで、python-setuptools(python3系ならpython3-setuptools)をインストールしたら動くようになった。
2019年6月21日金曜日
Ubuntu 18.04 で無理やりNemo RabbitVCS
2019/10/25 新しい方法をまとめました。Ubuntu 18.04 で無理やりNemo RabbitVCS#2を参照。
今月に入って、母艦もノートPCもUbuntu18.04に入れ替えたので、Touchpad indicatorの設定し直しやNAS経由のプリンタサーバ設定をやり直している。
それ以前はノートPCではLubuntuを使っていたのだが、母艦はUbuntu16.04を使っていた。
Nautilusでは、CompactView(lsの表示に似たフォルダ表示)が使えないので、WebUpd8 team の Nemoと、そのRabbitVCS(言うならば、LinuxのTortoiseSVN)拡張を使っていた。
ノートPCも母艦もUbuntu18.04にしたので、またNemoを入れようとした。
しかし、Webupd8teamでは、18.04用のNemoを提供していないらしい。改めて調べ直すとUbuntuオフィシャルのやつを入れるそうだ。
やってみると、libcinamon-desktop4とかinstallされるが、Cinamonデスクトップ全部が入るわけではない。これならいいだろう。
ところが、nemo-rabbitvcsが入らない。っていうかオフィシャルには存在していないようだ。
なんてこったい。
NautilusではRabbitVCSが動くが、CompactViewがない。
NemoではCompactViewが動くが、RabbitVCSが動かない。
Nemoをデフォルトファイルマネージャにしようと思っていたのに、中途半端ならデフォルトとしては使えない。
なんとかならないかと、調べ始めた。
webUpd8teamのリポジトリから、無理やりnemo-rabbitvcsパッケージを得て、中を調べた。
以下のようにして、artful用のnemo-rabbitvcsのパッケージを取得する。
以下のようにして、パッケージのコントロール情報とファイルを展開する。
これを然るべき場所にコピーするだけなら、手動でやってしまえばいい。難しいことではない。
必要な依存物が揃っているのなら、という条件がつくが...。
パッケージの依存物について見てみる。
これらについて、install されているか見てみる。
このpython-nemoもwebUpd8teamのリポジトリにはある。それを取り出して同じように調べると、NemoをPythonで機能拡張するときに使うものだった。
これは、オフィシャルではnemo-pythonという名前でパッケージとして提供されている。
というわけで、オフィシャルのものをインストールする。
本来python-nemoというパッケージに依存しているのに、nemo-pythonをinstallしたので、dpkgの管理情報的には依存関係は満たされていない。
しかし、/usr/share/nemo-python/extensions/RabbitVCS.py を動作させるのに必要なものは、全部入ったはずだ。
この状態で、さっきartful/に展開した usr/share/nemo-python/extensions/RabbitVCS.py を、/からのパスにコピーする。
これで、Nemoを起動すると、RabbitVCSが使えるようになっている。
エンブレムが見えるかな?
無理やりnemo-rabbitvcsを動かしたけど、問題があるかもしれない。
大切なソースコードだ。やるなら、自己責任で。
なんかあっても私は責任をとらない。
今月に入って、母艦もノートPCもUbuntu18.04に入れ替えたので、Touchpad indicatorの設定し直しやNAS経由のプリンタサーバ設定をやり直している。
それ以前はノートPCではLubuntuを使っていたのだが、母艦はUbuntu16.04を使っていた。
Nautilusでは、CompactView(lsの表示に似たフォルダ表示)が使えないので、WebUpd8 team の Nemoと、そのRabbitVCS(言うならば、LinuxのTortoiseSVN)拡張を使っていた。
ノートPCも母艦もUbuntu18.04にしたので、またNemoを入れようとした。
しかし、Webupd8teamでは、18.04用のNemoを提供していないらしい。改めて調べ直すとUbuntuオフィシャルのやつを入れるそうだ。
やってみると、libcinamon-desktop4とかinstallされるが、Cinamonデスクトップ全部が入るわけではない。これならいいだろう。
ところが、nemo-rabbitvcsが入らない。っていうかオフィシャルには存在していないようだ。
なんてこったい。
NautilusではRabbitVCSが動くが、CompactViewがない。
NemoではCompactViewが動くが、RabbitVCSが動かない。
Nemoをデフォルトファイルマネージャにしようと思っていたのに、中途半端ならデフォルトとしては使えない。
なんとかならないかと、調べ始めた。
webUpd8teamのリポジトリから、無理やりnemo-rabbitvcsパッケージを得て、中を調べた。
以下のようにして、artful用のnemo-rabbitvcsのパッケージを取得する。
wget http://ppa.launchpad.net/webupd8team/nemo3/ubuntu/pool/main/n/nemo-rabbitvcs/nemo-rabbitvcs_3.6.0-1~webupd8~artful_all.deb
以下のようにして、パッケージのコントロール情報とファイルを展開する。
dpkg-deb -R nemo-rabbitvcs_3.6.0-1~webupd8~artful_all.deb artfulこんな感じに展開される。
$ tree artful/ artful/ ├── DEBIAN │ ├── control │ └── md5sums └── usr └── share ├── doc │ └── nemo-rabbitvcs │ ├── changelog.Debian.gz │ └── copyright └── nemo-python └── extensions └── RabbitVCS.py中を見てみると、/usr/share/nemo-python/extensions/RabbitVCS.py を入れるだけだ。
これを然るべき場所にコピーするだけなら、手動でやってしまえばいい。難しいことではない。
必要な依存物が揃っているのなら、という条件がつくが...。
パッケージの依存物について見てみる。
$ dpkg-deb --info nemo-rabbitvcs_3.6.0-1~webupd8~artful_all.deb new Debian package, version 2.0. size 8582 bytes: control archive=665 bytes. 592 バイト、 13 行 control 236 バイト、 3 行 md5sums Package: nemo-rabbitvcs Version: 3.6.0-1~webupd8~artful Architecture: all Maintainer: Clement Lefebvre依存パッケージは、nemo, python-nemo, python-gi, rabbitvcs-core。Installed-Size: 35 Depends: nemo (>= 1.1.2~), python-nemo (>= 1.0~), python-gi (>= 3.2.2~), rabbitvcs-core (>= 0.15) Section: devel Priority: optional Homepage: https://github.com/linuxmint/nemo-extensions Description: Nemo extension for RabbitVCS RabbitVCS is a set of graphical tools written to provide simple and straightforward access to the version control systems SVN (Subversion) and Git. This is the extension for the Nemo file manager (v1.1.2 or greater).
これらについて、install されているか見てみる。
$ dpkg -l nemo python-nemo python-gi rabbitvcs-core 要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)保持 | 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留 |/ エラー?=(空欄)無/(R)要再インストール (状態,エラーの大文字=異常) ||/ 名前 バージョン アーキテクチ 説明 +++-==============-============-============-================================= ii nemo 3.6.5-1 amd64 File manager and graphical shell ii python-gi 3.26.1-2ubun amd64 Python 2.x bindings for gobject-i ii rabbitvcs-core 0.16-1.1 all Easy version control dpkg-query: python-nemo に一致するパッケージが見つかりませんnemo, python-gi, rabbitvcs-coreは入っている(バージョンも問題ない)けど、python-nemoが入ってない。
このpython-nemoもwebUpd8teamのリポジトリにはある。それを取り出して同じように調べると、NemoをPythonで機能拡張するときに使うものだった。
これは、オフィシャルではnemo-pythonという名前でパッケージとして提供されている。
というわけで、オフィシャルのものをインストールする。
$ sudo apt install nemo-python [sudo] xxxxxx のパスワード: パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の追加パッケージがインストールされます: gir1.2-nemo-3.0 以下のパッケージが新たにインストールされます: gir1.2-nemo-3.0 nemo-python アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。 33.6 kB のアーカイブを取得する必要があります。 この操作後に追加で 259 kB のディスク容量が消費されます。 続行しますか? [Y/n] y 取得:1 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 gir1.2-nemo-3.0 amd64 3.6.5-1 [7,728 B] 取得:2 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 nemo-python amd64 3.6.0-1 [25.8 kB] 33.6 kB を 0秒 で取得しました (358 kB/s) 以前に未選択のパッケージ gir1.2-nemo-3.0 を選択しています。 (データベースを読み込んでいます ... 現在 951722 個のファイルとディレクトリがインストールされています。) .../gir1.2-nemo-3.0_3.6.5-1_amd64.deb を展開する準備をしています ... gir1.2-nemo-3.0 (3.6.5-1) を展開しています... 以前に未選択のパッケージ nemo-python を選択しています。 .../nemo-python_3.6.0-1_amd64.deb を展開する準備をしています ... nemo-python (3.6.0-1) を展開しています... gir1.2-nemo-3.0 (3.6.5-1) を設定しています ... nemo-python (3.6.0-1) を設定しています ...gir1.2-nemo-3.0も一緒に入った。
本来python-nemoというパッケージに依存しているのに、nemo-pythonをinstallしたので、dpkgの管理情報的には依存関係は満たされていない。
しかし、/usr/share/nemo-python/extensions/RabbitVCS.py を動作させるのに必要なものは、全部入ったはずだ。
この状態で、さっきartful/に展開した usr/share/nemo-python/extensions/RabbitVCS.py を、/からのパスにコピーする。
$ sudo cp -a artful/usr /
これで、Nemoを起動すると、RabbitVCSが使えるようになっている。
エンブレムが見えるかな?
無理やりnemo-rabbitvcsを動かしたけど、問題があるかもしれない。
大切なソースコードだ。やるなら、自己責任で。
なんかあっても私は責任をとらない。
わかりにくい表現を直した。 | |
厳密にはmainとrestrictedで配布されるものだけがオフィシャルである。nemoやnemo-pythonはuniverseなので、厳密にはオフィシャルではない。 add-apt-repositoryで後から追加したリポジトリではないという意味で、ここでは「オフィシャル」と言う言葉を使っている。 |
|
"artful"とすべきところを"artiful"と書いていた。直した。 正しい英語にはartifulという単語はない。しかし現代語的なもので、art + beautiful 的な意味で使われる。私は、"Artful Aardvark"(技巧に富んだツチブタ) を何故か"Artiful Aardvark"(芸術的に美しいツチブタ)という意味でとらえていた。つまりtypoではなく、勘違いだった。 |
|
この方法では、RabbitVCSのいくつかの機能が動かない。 新しい方法を「Ubuntu 18.04 で無理やりNemo RabbitVCS#2」に書いた。 そちらを参照せよ。 |
2017年11月23日木曜日
ビルの解体現場
景気が良いのか、近所は建設ラッシュだ。
街なかにある、高度経済成長期に建てられたと思われる古いビルが解体されていた。
散歩中、すごい眺めだったので、撮影した。
背後に広がる雲と斜光のせいで、写真が世紀末的な雰囲気になってしまった。
記憶が正しければ、これは元々4階建てだった。
回りこむと奥に小さな重機が見える。
上から少しずつ解体するのだろう。大きな重機で手前を崩してスロープを作り、小さな重機で2階の高さに上り、上のほうを解体している。
大きな重機は重いので、床が抜けるかもしれない。そのため、上がるのは小さな重機なのだろう。
慎重かつ丁寧な解体だ。
小さい重機のアップ。
世紀末のような空の下で行われるビル解体。瓦礫の山と重機。
それだけ聞くと破滅的な印象だが、親子重機で丁寧に解体していた。
破壊ではなく、Scrap & Build による街の成長を感じた。
街なかにある、高度経済成長期に建てられたと思われる古いビルが解体されていた。
散歩中、すごい眺めだったので、撮影した。
背後に広がる雲と斜光のせいで、写真が世紀末的な雰囲気になってしまった。
記憶が正しければ、これは元々4階建てだった。
回りこむと奥に小さな重機が見える。
上から少しずつ解体するのだろう。大きな重機で手前を崩してスロープを作り、小さな重機で2階の高さに上り、上のほうを解体している。
大きな重機は重いので、床が抜けるかもしれない。そのため、上がるのは小さな重機なのだろう。
慎重かつ丁寧な解体だ。
小さい重機のアップ。
世紀末のような空の下で行われるビル解体。瓦礫の山と重機。
それだけ聞くと破滅的な印象だが、親子重機で丁寧に解体していた。
破壊ではなく、Scrap & Build による街の成長を感じた。
2017年5月13日土曜日
ひさしぶりに…
しばらく何も記事を書いていなかったので、なんか書くことにした。
8年ぐらい前に、雑誌付録のSHマイコンに、SDカードをSPI接続して遊んでいた。MMC用のコードを使っていたので、当然SDHCやSDXCは利用できない。
先日PCを整理している時に、そのコードが出てきた。マイコンボードも出てきたので、SDカードのSPIモード用ドライバを作って遊ぼうと、作業を始めた。
コードを見直すと、コマンドトークンのCRC7の計算が、1bitずつ計算するお手本のようなわかりやすいコードだった。
一日30分の作業の繰り返しで、TRONやFATファイルシステムドライバまで作るとなると、出来る限り不具合の入らないコードで、プログラムを構成するのが良い。とにかく全体を実装して、実際に使えるようにすることを最優先にすると、どうしてもそのようなコードになる。
以下のような、コードだった。
素直なのは良いが遅い。とはいえ、コマンドトークンは5バイトなので、遅くてもほとんど影響はない。
速いほうが良いが、貴重な時間を使ってまでやる必要は無い。というわけで、放置していた。
今回は、一応それなりに動くものがすでにある。SDHC対応、すなわち強化を行うのだ。
ついでに、多少寄り道して、CRC7をテーブル演算で実装してみる。
話は前後するが、CRCの処理について簡単に言えば、ビット列を端から順番に見ていって、'1'になっているビットがあるときに、生成多項式をXORしていくというものだ。
詳しくは、Wikipediaでも参照してもらいたい。
それを踏まえて、上記コードを見てみる。
2重のwhileループのうち、外側のループはバイト単位のループで、内側のループはビット単位のループである。
内側のループの内側に注目すると、
変数crc と 変数byte をXORして、その最上位ビットを見ている。
このビットが'1'の場合、crcに0x89(生成多項式)をXORしている。上の行に示されているように、if文の条件式の中で crc は byte とXORされているので、結果的にbyteにXORされることになる。
実際にはbyteのビットは変化しないのだが。
また、よく見るとcrcとbyteは、1ビットずつ左シフトしている。左のビットから順番に処理するためだ。
それぞれ1bitずつ左シフトしているので、最初にcrcにbyteをXORしておけば、途中でXORする必要がなくなり単純になる。
しかし、左シフトするタイミングが違っている。crcはif文の前、byteはif文の後ろだ。
なぜ2つに分かれているのか?
bit位置を合わせたいなら、最後に1bit右シフトして戻せばいい。最後に戻すなら、crcの左シフトを下に移動できる。
すなわち、以下のようになる。
1つの変数ならば、ビットシフトも1つで良くなり、単純になる。
これらを踏まえて整理すると、以下のようなコードになる。
かなりすっきりした。
ここで、もう一度内側のループに注目してみよう。
すなわち、内側のループ全体を関数X()として書き直すと、
変数crcは8bit変数だ。すなわち、0〜255までの256個の値しかとらない。
256個のルックアップテーブルを作って、テーブル解決すればいい。
テーブルを動的に生成するなら、上記のようなコードかな。
私は、コンパイル時に決定してしまうのが好きなので、テーブルの値を事前に計算して、ソースコードに埋め込んだ。
よく考えてみればわかるが、SD cardのコマンドトークンのCRC7は、8bit内の上位7bitに格納されている。
そのため、SD card用なら、最後の右シフトは要らない。
それを除去してしまおう。
しかし、SDカードアクセス処理全体では、コマンドトークンのCRC7の計算量はわずかだ(たった 5 byte)。
そのため、全体での性能向上も大したことはない。
あまり期待すると、残念な思いをするだろう。
うっかり間違えて、下書きに戻していた。
公開し直した。
2017/11/12 サンプルコードやテーブルをスクロールするようにした。一部解りにくい表現を直した。
8年ぐらい前に、雑誌付録のSHマイコンに、SDカードをSPI接続して遊んでいた。MMC用のコードを使っていたので、当然SDHCやSDXCは利用できない。
先日PCを整理している時に、そのコードが出てきた。マイコンボードも出てきたので、SDカードのSPIモード用ドライバを作って遊ぼうと、作業を始めた。
コードを見直すと、コマンドトークンのCRC7の計算が、1bitずつ計算するお手本のようなわかりやすいコードだった。
一日30分の作業の繰り返しで、TRONやFATファイルシステムドライバまで作るとなると、出来る限り不具合の入らないコードで、プログラムを構成するのが良い。とにかく全体を実装して、実際に使えるようにすることを最優先にすると、どうしてもそのようなコードになる。
以下のような、コードだった。
CRC7計算をそのまま実装したような、わかりやすい動作の素直なコードだ。uint8_t calcCRC7(const uint8_t *buff, int len ) { uint8_t crc = 0; while( len-- ) { uint8_t byte = *buff++; int bits = 8; while( bits-- ) { crc <<= 1; if( (crc ^ byte) & 0x80 ) { crc ^= 0x89; } byte <<= 1; } } return( crc ); }
素直なのは良いが遅い。とはいえ、コマンドトークンは5バイトなので、遅くてもほとんど影響はない。
速いほうが良いが、貴重な時間を使ってまでやる必要は無い。というわけで、放置していた。
今回は、一応それなりに動くものがすでにある。SDHC対応、すなわち強化を行うのだ。
ついでに、多少寄り道して、CRC7をテーブル演算で実装してみる。
話は前後するが、CRCの処理について簡単に言えば、ビット列を端から順番に見ていって、'1'になっているビットがあるときに、生成多項式をXORしていくというものだ。
詳しくは、Wikipediaでも参照してもらいたい。
それを踏まえて、上記コードを見てみる。
2重のwhileループのうち、外側のループはバイト単位のループで、内側のループはビット単位のループである。
内側のループの内側に注目すると、
左ビット(最上位ビット)から処理するようにしているのがわかる。CRCは左回りと右回りがある。SD cardのCRC7は、左回りで計算する。SPIは上位ビットから入出力されるものなので、それが自然だろう。crc <<= 1; if( (crc ^ byte) & 0x80 ) { crc ^= 0x89; } byte <<= 1;
変数crc と 変数byte をXORして、その最上位ビットを見ている。
このビットが'1'の場合、crcに0x89(生成多項式)をXORしている。上の行に示されているように、if文の条件式の中で crc は byte とXORされているので、結果的にbyteにXORされることになる。
実際にはbyteのビットは変化しないのだが。
また、よく見るとcrcとbyteは、1ビットずつ左シフトしている。左のビットから順番に処理するためだ。
それぞれ1bitずつ左シフトしているので、最初にcrcにbyteをXORしておけば、途中でXORする必要がなくなり単純になる。
しかし、左シフトするタイミングが違っている。crcはif文の前、byteはif文の後ろだ。
なぜ2つに分かれているのか?
- byteの左シフトが上にあると、判定の前に最上位ビットがシフトアウトしてしまう。 最上位ビットから判定する必要があるので、これではダメだ。
- crcの左シフトが下にあると、終了時、余計に1bit左にシフトした結果になってしまう。 そのため、判定前に左シフトする。
そのため、判定後に左シフトする。
bit位置を合わせたいなら、最後に1bit右シフトして戻せばいい。最後に戻すなら、crcの左シフトを下に移動できる。
すなわち、以下のようになる。
このコードをよく見ると、crc と byte の XORを ループの外に移動して、1つの変数にできることがわかるだろう。if( (crc ^ byte) & 0x80 ) { crc ^= 0x89; } crc <<= 1; byte <<= 1;
1つの変数ならば、ビットシフトも1つで良くなり、単純になる。
これらを踏まえて整理すると、以下のようなコードになる。
ループ内のビットシフトが2つから1つになり、if文の条件式内のXORもなくなった。uint8_t calcCRC7(const uint8_t *buff, int len ) { uint8_t crc = 0; while( len-- ) { int bits = 8; crc ^= *buff++; // 最初にXORしておく while( bits-- ) { if( crc & 0x80 ) { // 最上位ビットを見て1ならば、 crc ^= 0x89; // 生成多項式とXORする。 } crc <<= 1; // ビットシフト } } return( crc >> 1 ); // 元の結果と同じになるように1bit戻す。 }
かなりすっきりした。
ここで、もう一度内側のループに注目してみよう。
このループをよく見ると、入力がcrcで、出力もcrcの演算処理と見ることができる。while( bits-- ) { if( crc & 0x80 ) { // 最上位ビットを見て1ならば、 crc ^= 0x89; // 生成多項式とXORする。 } crc <<= 1; // ビットシフト }
すなわち、内側のループ全体を関数X()として書き直すと、
ここまでまとまれば、テーブル化は簡単だ。uint8_t X( uint8_t crc ) { int bits = 8; while( bits-- ) { if( crc & 0x80 ) { // 最上位ビットを見て1ならば、 crc ^= 0x89; // 生成多項式とXORする。 } crc <<= 1; // ビットシフト } return( crc ); } uint8_t calcCRC7(const uint8_t *buff, int len ) { uint8_t crc = 0; while( len-- ) { crc ^= *buff++; // 最初にXORしておく crc = X( crc ); // 関数化された演算処理 } return( crc >> 1 ); // 元の結果と同じになるように1bit戻す。 }
変数crcは8bit変数だ。すなわち、0〜255までの256個の値しかとらない。
256個のルックアップテーブルを作って、テーブル解決すればいい。
(2017/11/17 makeTable()に使わない引数があった。修正した。)static uint8_t Table[256]; void makeTable( void ) { int i; for( i=0; i<256; i++ ) { uint8_t crc = i; int bits = 8; while( bits-- ) { if( crc & 0x80 ) { crc ^= 0x89; } crc <<= 1; } Table[i] = crc; } } uint8_t calcCRC7(const uint8_t *buff, int len ) { uint8_t crc = 0; while( len-- ) { crc ^= *buff++; // 最初にXORしておく crc = Table[ crc ]; // テーブル化された演算処理 } return( crc >> 1 ); // 元の結果と同じになるように1bit戻す。 }
テーブルを動的に生成するなら、上記のようなコードかな。
私は、コンパイル時に決定してしまうのが好きなので、テーブルの値を事前に計算して、ソースコードに埋め込んだ。
さらにもう少し。static const uint8_t Table[] = { 0x00,0x12,0x24,0x36,0x48,0x5A,0x6C,0x7E,0x90,0x82,0xB4,0xA6,0xD8,0xCA,0xFC,0xEE, 0x32,0x20,0x16,0x04,0x7A,0x68,0x5E,0x4C,0xA2,0xB0,0x86,0x94,0xEA,0xF8,0xCE,0xDC, 0x64,0x76,0x40,0x52,0x2C,0x3E,0x08,0x1A,0xF4,0xE6,0xD0,0xC2,0xBC,0xAE,0x98,0x8A, 0x56,0x44,0x72,0x60,0x1E,0x0C,0x3A,0x28,0xC6,0xD4,0xE2,0xF0,0x8E,0x9C,0xAA,0xB8, 0xC8,0xDA,0xEC,0xFE,0x80,0x92,0xA4,0xB6,0x58,0x4A,0x7C,0x6E,0x10,0x02,0x34,0x26, 0xFA,0xE8,0xDE,0xCC,0xB2,0xA0,0x96,0x84,0x6A,0x78,0x4E,0x5C,0x22,0x30,0x06,0x14, 0xAC,0xBE,0x88,0x9A,0xE4,0xF6,0xC0,0xD2,0x3C,0x2E,0x18,0x0A,0x74,0x66,0x50,0x42, 0x9E,0x8C,0xBA,0xA8,0xD6,0xC4,0xF2,0xE0,0x0E,0x1C,0x2A,0x38,0x46,0x54,0x62,0x70, 0x82,0x90,0xA6,0xB4,0xCA,0xD8,0xEE,0xFC,0x12,0x00,0x36,0x24,0x5A,0x48,0x7E,0x6C, 0xB0,0xA2,0x94,0x86,0xF8,0xEA,0xDC,0xCE,0x20,0x32,0x04,0x16,0x68,0x7A,0x4C,0x5E, 0xE6,0xF4,0xC2,0xD0,0xAE,0xBC,0x8A,0x98,0x76,0x64,0x52,0x40,0x3E,0x2C,0x1A,0x08, 0xD4,0xC6,0xF0,0xE2,0x9C,0x8E,0xB8,0xAA,0x44,0x56,0x60,0x72,0x0C,0x1E,0x28,0x3A, 0x4A,0x58,0x6E,0x7C,0x02,0x10,0x26,0x34,0xDA,0xC8,0xFE,0xEC,0x92,0x80,0xB6,0xA4, 0x78,0x6A,0x5C,0x4E,0x30,0x22,0x14,0x06,0xE8,0xFA,0xCC,0xDE,0xA0,0xB2,0x84,0x96, 0x2E,0x3C,0x0A,0x18,0x66,0x74,0x42,0x50,0xBE,0xAC,0x9A,0x88,0xF6,0xE4,0xD2,0xC0, 0x1C,0x0E,0x38,0x2A,0x54,0x46,0x70,0x62,0x8C,0x9E,0xA8,0xBA,0xC4,0xD6,0xE0,0xF2 };
よく考えてみればわかるが、SD cardのコマンドトークンのCRC7は、8bit内の上位7bitに格納されている。
そのため、SD card用なら、最後の右シフトは要らない。
それを除去してしまおう。
最初のcalcCRC7()よりも処理速度は10倍ぐらい高速化されているだろう。uint8_t calcCRC7(const uint8_t *buff, int len ) { uint8_t crc = 0; while( len-- ) { crc ^= *buff++; // 最初にXORしておく crc = Table[ crc ]; // テーブル化された演算処理 } return( crc ); // 8bit中、上7bitがCRC7 }
しかし、SDカードアクセス処理全体では、コマンドトークンのCRC7の計算量はわずかだ(たった 5 byte)。
そのため、全体での性能向上も大したことはない。
あまり期待すると、残念な思いをするだろう。
うっかり間違えて、下書きに戻していた。
公開し直した。
2017/11/12 サンプルコードやテーブルをスクロールするようにした。一部解りにくい表現を直した。
登録:
投稿 (Atom)