投稿

ラベル(Ruby)が付いた投稿を表示しています

たまに掃除は必要!熱暴走…

イメージ
 そんなに暑くないのに… 本日、午前中にオンラインで打合せをしていると、突然マシンがダウン。 一瞬、停電か?と思ったもののディスプレイの電源は入っている。 あれっ?と思い、すぐさまノートで打合せを継続。 その間に、再度マシンの電源を投入。 問題なく起動する。 でも、CPU温度がたまたま目に入り、95℃を超えて徐々に上昇していく。 105℃あたりで再度マシンダウン。 これは、熱暴走によるダウンの可能性が高い。 以前、CPUをRyzen7→9にした頃は、60℃〜70℃程度だった記憶がある。 本当はGW中にSSDの載せ替えを行う予定だったけれど、忙しくて先延ばしにしていた。 その時やっていれば、多分掃除もしただろうに…。 ということで、午後からマシンを解体し、掃除をすることに。 ケース本体のFANはホコリがかなり溜まっている。 GPUのFANは問題ない。 電源とCPU FANはひどい。 一旦、CPU FANを取り外し、きれいにする。ついでにCPUグリスも塗り直しセット。 動作確認すると、投入直後で40℃台。 そりゃ、熱暴走も起こすわけだ。 せっかくバラしたので、SSDの載せ替えを実施。 OSは500GBで、ユーザ領域(/home)は1TBを使用しているもののAIのmodelをいくつも落としていたり、DockerのImageが多種置いてあるため、結構容量を食っている。 今回、2TBのSSD( Hanye SSD ¥17,800- で入手済)を用意してあるので、 1TB→2TB, 500GB→1TBと玉突きで移動させることを計画していたので実施する。 本当は、ddコマンドで移すつもりだったのだけれど、3月にお客さんのところで使いそうだったので、 ORICOのクローン機能付SSDアダプタ を入手済。 裸族のSSD版ですね…。1万円程度の品です。 これに、新品のSSDとこれまでの1TBのSSDを差し込んでクローン開始。 そこそこ時間はかかるものの、放置でOK。 ただ、HanyeのSSDについているヒートシンクが引っかかるため、一旦取り外してクローン後取り付ける必要があった。 続いて、500GB→先程の1TBに書き込み。 ただ、1TB(samsungの980pro)が、先程のクローンでかなり熱くなっていたため、速度低下が激しい感じ。1TB→2TBよりも時間がかかった感じ。 ...

chromebookにruby3.0

イメージ
 chromebookをサブ開発マシンに と思っているので、clang,python3,juliaにvscodeから利用できるように設定してきた。 さて、12月末にruby3.0が正式リリースされたので、テストしたいなぁと思っていた。 ところが、aptを使って入れるとruby2.5と随分古め…。 探してみても、chromebook用のサードパーティリポジトリなんてないし…。まあ、他の作業しながらビルドしてみるかと思って構築してみた。 基本的には rbenvを使用することに。 https://github.com/rbenv/rbenv が、rbenvの配布元なので、ここのReadme.mdを参考に進める。 まずは、そのままクローンする。 $   git clone https://github.com/rbenv/rbenv.git ~/.rbenv あとは、ドキュメントに従ってPATHを通す。 $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc $ ~/.rbenv/bin/rbenv init 初期化しろというので、実行しておく。 他のサイトでは、.bashrcに書いている場合もあったので、念の為入れておく。 $ echo 'eval "$(rbenv init -)"' >> ~/.bashrc この時点で、.bashrcを読み込み直しておく。 $ source ~/.bashrc ruby-buildというpluginが必要なので、入れる。 $ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build $ echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc 再度、.bashrcを読み直す。 ここで、利用可能なバージョンをチェックすると $ rbenv install --list 2.5.8 2.6.6 2.7.2 3.0.0 jruby-9.2.14.0 ...

gollumの構築

イメージ
ローカルのwikiが欲しい メモや作業記録をテキストに書いて保存するケースが最近増えている。 特定のアプリケーションに依存したくないし、バックアップや変更が、どこでもいつでもしたいと言うのが大きな理由だ。 スマートフォンとの連携を考え、Google KEEPやEvernoteを利用してきたが、PCで作成・保存したり、検索したり、バックアップ等を考えると、別のものが欲しくなる。 【条件】 Markdownが使えること データはテキストファイルが望ましい(DBは使いたくない) 将来的には、ネット経由も検討 という条件が必須。 以前は、Pukiwikiを使用していたが、やや重いのと、スマートフォンでの利用が少々扱いにくい。 また、データファイル名が文字コードを元にした形式なので、あとでデータファイルを直接扱う時に不便なんだよね。 もう少し、単純なもので探してみた。 gitを利用したwiki gollum というgitを利用したwikiを見つけた。 シンプルだけど、最低限の条件は満たしている。 しばらくテストのために、構築して使ってみる。 https://github.com/gollum/gollum によると、rubyのWEBrickで動作するらしい。 インストール ドキュメント通りに、進めてみる。 gemでインストールとのことだが、標準で入っていたっけ?(今回18.04に変更しているので、環境がまだ良くわかっていない) username@u1804:~$ gem Command 'gem' not found, but can be installed with: sudo apt install ruby rubyを入れろと言われてしまった。いままで当たり前のようにrubyを使っていたけど、まだ標準じゃないのね…。 username@u1804:~$ sudo -s root@u1804:~# apt install ruby これで、とりあえずruby関係は入ったので、gemが使えるはず。 root@u1804:~# gem install gollum Fetching: charlock_h...

Termuxでどこでも開発

イメージ
Androidならでは… 前の前の機種(ASUS Zenfone2)の頃から、お世話になっているTermux。 出先での作業には欠かせない重要なツール。 https://termux.com/ これは何かというと、Android上でのTerminal Emulatorで、Linux開発環境と同等のコマンド・機能が使える。 しかもroot化の必要はないので、気軽に使える。 Google Playから普通に導入可能。 何ができるかというと とりあえず、現在の主な使い方は ssh(opensshをインストール)を入れて、出先から管理しているサーバに接続して作業するというのが主。 実際には sshaの方を使うと幸せ。 でもって、これらのツールはすべてaptで入れることができる。 おかげで、ノートPC無しでもサーバに接続して、何度も危機を乗り切った(笑) 現在作業中のもの あれこれ面白いので、インストールして試しているのだが…。 python3 + numpy GNU nano php7 clang + dev環境 ruby などを入れて、動かしている。 とりあえず、講義で使用するサンプルを作って、動作確認してみたり、気になったことを確認するのに片手でプログラミングして、さくっと動かせる。 試しに、PHPをビルトインサーバで動かして、phpinfo()を実行してみる $ php -S 192.168.0.100:8080 この状態で、他のPCから叩いてみると 普通のLinuxサーバで動かすのと何ら変わりない。 Andorid上のブラウザで実行するだけなら、 $ php -S localhost:8080 とすれば良い。 さすがに、1024ポートまではroot化していないので、利用不可。 もちろん、高機能ではないし、常にwebサーバとするには、電池の持ちも含めて、いろいろと問題があるけどね…。 そもそもwebサーバを動かしたという話も聞くけれど、スリープになったら落ちるとか…。 言語オタクには楽しい エディタは軽めのnanoで、書い...

Sketch の書き込みができた on Ubuntu

イメージ
Arduinoでトラブルが続いていた 現在、Ubuntu(12.04-32bit)+ruby 1.8.7 + Arduino Mega2560という組み合わせで、開発を進めているのだけれども、先の記録にもあるように、予想以上に苦労している。 今回、Arduino IDEからMEGA2560へのsketchの書き込みが、エラーで出来なかったものを、工夫することで書き込みができることが分かったので、まとめておこうと思う。 まずは設定 普通にArduino IDEを起動して、書き込みを行うと図のようにエラーが発生する。 例では、スケッチの例にあるStandardFirmataを読み込んで、Arduino Megaに書き込もうとしている所。 すると、 avrdude: stk500v2_RecieveMessage(): timeout なんてエラーが延々と出て書き込みが終了しない。 こんなエラー情報では、何もわからないので、詳細な情報を得られるようにしておく。 「ファイル」->「環境設定」->「より詳細な情報を表示する」の「書き込み」にチェックを入れておく。 コンパイルの情報を見たければ、チェックを入れればいいのだけれど、今回はコンパイルまで終了し、書き込みに失敗しているので、書き込みだけでOK。 具体的な手順 この状態で、コンパイル&書き込みを行うと、さっきより格段に細かい情報が得られるのが分かるはず。 これが右の図。 すると、どんなデータを書き込もうとした。上手くいったとか失敗したとか…。 この状態が最低限必須。 この状態で先に進んでも良いのだけれど、詳細なLOGを見ているうちに、どんどんエラーが増えていくし、エラーをたくさん見ても意味が無いので、起動方法を変更する。 コンソール(Terminal)から、手動で起動してやると、あとの処理が楽になる。 $ arduino もしくは $ /usr/bin/arduino か、異なるバージョンを入れてたりするなら、そのディレクトリで $ ./arduino で起動するはず。 ここまで来たら、書き込みたいsketchを開いて、書き込みを実行する。 すると当然のことながら、先と同じエラーが発生する。 ここで慌てずに、...

ERROR: Failed to build gem native extension.

イメージ
arduinoでfirmata とりあえずVirtualBoxのLinux上で、ruby+arduinoの動作は確認できている。 しかし、いちいちarduino側のプログラムを更新していくと、ホストPC上のRubyの更新もあって、管理が煩雑すぎるなぁ…。と思って検討する中にfirmataが良さそうだ。 基本的な通信プログラムと、IO周りを全て面倒見てくれて、Rubyから自分のポートのようにアクセスすれば、arduino上のポートにアクセスできるミドルウェアだ。 じゃあ、Linux上のarduio-IDEでStandardFirmataを書き込んでみようとしたら、なぜかエラーを吐きまくる。 avrdude: stk500v2_ReceiveMessage(): timeout が繰り返し出力されて、上手くいかない。 随分調べたけれども、stk500v2ではなくwiringを使えとか…。書き込みにAVRISP mkIIではなくAVRISPを使えだとか…。ボーレートを変更しろとか…。 どれもダメだった。 ここで、止まっていても埒が明かないので、HOSTのMac側で書き込むことにする。 こちらからの書き込みは問題なく完了した。 arduio_firmataのインストール 動作テストをしなければ、始まらないので、Linux上でテストする。 $ sudo gem install arduino_firmata とこれだけですね。 Fetching: args_parser-0.1.4.gem (100%) Fetching: event_emitter-0.2.2.gem (100%) Fetching: arduino_firmata-0.2.3.gem (100%) Successfully installed args_parser-0.1.4 Successfully installed event_emitter-0.2.2 Successfully installed arduino_firmata-0.2.3 3 gems installed Installing ri documentation for args_parser-0.1.4... Installing ri documentation for ...

CD-Drive全滅か…

イメージ
Ubuntuマシンを準備しようとしたら Arduinoのテストをするのに、これまでMac上で試験を行なってきた。おかげでこの1週間は、ブログもツイもあんまり出来なかったのだけれど…。 でもって本日、計測環境での動作テストに出向いたのだけれど…。Windowsノートマシンが渡され…。仕方なく、環境整備から行った。Arduino-IDEを入れ、Ruby+gems+serialportなどなど。 でもって、何とか動かせる環境を整えて、いざ動かし始めたらOSが死ぬという情けない落ち。仕方なく再起動をかけようとしたら、Updateによる更新を止む無くかける事態となり、マシンスペックの低さ故、1時間以上かかって、壊滅。 現場の作業は、センサーの動作確認と、リレーの動作確認しかできなかったorz。 再度打ち合わせて、マシンを別途用意することに。 自分のLinuxノートを使ってもいいのだけれど、これを献上するのは嫌なので新たに用意するしかない。 自宅に戻って、引き取ってあった古いマシンにLinuxでも入れて環境整備することに。 しばらく放置してあったけど、問題なかろうとセッティング。 さて、電源をいれると…。 1台目…メモリエラーをBIOSが報告。まあ、そんなこともあるわ…。次だ。 2台目…XPの起動を確認。ubuntuのインストール用Diskを入れようと…。Disk DriveがEjectされない。ピンを挿して強制排出するも、CDを認識しない。くそっ! 3台目…XPの起動を確認。CDを食わせるも認識しない。 寒さのせいだろうか、ドライブが逝ってしまっている。 あと3台あるけど、これ以上作業したくない。 他のマシンから、CD Driveを抜いて、差し込むのも手間が掛かり過ぎる。 ネットワークインストールするか…と思って、しばしGoogle先生と格闘。 USBからインストール可能かも BIOSでUSBからのブート可能なマシンを選定。 Ubuntu Japanese Team Wikiに「 UNetbootinの使用方法 」というのを見つけた。早速 UNetbootinをダウンロード して作業開始。 ubuntu12.04LTSの 日本語 Remixのisoイメージを...