投稿

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

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

イメージ
 そんなに暑くないのに… 本日、午前中にオンラインで打合せをしていると、突然マシンがダウン。 一瞬、停電か?と思ったもののディスプレイの電源は入っている。 あれっ?と思い、すぐさまノートで打合せを継続。 その間に、再度マシンの電源を投入。 問題なく起動する。 でも、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よりも時間がかかった感じ。 ...

Perl ScriptのEXE化で苦戦

イメージ
exeの生成が必要 以前(随分前だけど)やったことが、あったので楽勝と思ったら、意外なところで躓いたのでちゃんと記録しておく。 基本的にスクリプト言語であるPerlのコードはテキストファイル。 Perlの実行環境さえあれば、ほぼ動く。  LinuxやMacなら最初からperlが入っているので、何も考えることはない。 じゃ、windowsのように実行環境がない場合はどうするかというと、 Perlを動かせるようにインストールする(ActivePerlで簡単に入る) exeファイルにして、実行する。(ファイルが巨大になる) 諦める と、これくらいしか選択肢がない。 今回は、作成したスクリプトを、Perl実行環境のない端末で何台も動かすことになりそう。 でもって、それぞれの端末にPerlをインストールして、pmなどのライブラリを揃えてというのが、メンテナンス上大変になりそう。 となると、2.のexe化を検討するしかない。 環境準備1 まずは、新しいVMを用意して、ActivePerlのインストールから始める。 ActiveStateに行くと、 ActivePerl-5.20.2.2002-MSWin32-x86-64int-299195.msi が最新らしい。随分とバージョンが上がってるなぁ…。 早速インストール→数分で完了。 コマンドプロンプトから、 cpan install PAR::Packer で、exe化に必要なモジュールをインストール。 まっさらな状態からのインストールなので、若干時間がかかるけれど、無事終了…。 あれ?無事終了しない。Error吐いてる。 main.c: In function 'main': main.c:121:23: warning: assignment discards 'const' qualifier from pointer target type [enabled by default] windres -i winres/pp.rc -o ppresource.coff --input-format=rc --output-format=coff --target=pe-i386 '...

久しぶりで、使い方を忘れてた…(Perl)

Perlでプログラムをガシガシと 昨年納品したプログラムの、追加機能の要求が上がったので、見直しを行っていた。 今回は、DBを使うほど件数が増えそうにもない。 履歴を見て登録されているユーザか、そうでないかを判別するだけなので、ハッシュをファイルに紐付けて、簡易のDBとして使うことにする。  昔なら、メモリがパンクするんじゃ?とかディスク遅いっすとか思ったりして躊躇するんだろうけど、今どきはドンドンメモリ使っちゃおう!ファイル使っちゃおう!なんて思ったりもする。 さて、前回利用したモジュールは Jcode; MIME::Parser; MIME::WordDecoder; File::Basename; File::Path; Fcntl; File::Temp; 書き出してみるとこんなにもあった。 でもって、今回新たに Storable; 当然、稼働しているプログラムなので、直接いじるわけにはいかない。 とりあえず、ローカルでテストをする。 ソースを取り出して、修正内容を細かく分割。 それぞれテストして、組み立て…。 と、最初のテストで躓いた。 ローカルの環境が、この春に14.04で準備したNewマシンなので、モジュールが入っていない! モジュールのインストール そもそも、最初のuse Jcode;でエラー吐いているし… ということで、インストールしようとしたが、コマンドを全く思い出せない。 あれれ? どうやら老化と共にやってくるアレか? # perl -MCPAN -e shell これが思い出せずに、仕方なくググりました。 いやぁ、外部記憶に入れておいて良かったゎ(泣) というか、内部記憶から消去されている模様。 忘れないように、自分を戒めるために記録しておく。 作業自体は、コマンド入力して完了するのに1分もかからないというのに、思い出そうとした時間の方が長いとは…。 root@X200:~# perl -MCPAN -e shell CPAN.pm requires configuration, but most of it can be done automaticall...

Crypt::SSLeayが入らない

Perlでの作業中 ちょっとスクリプトからWebページをゲロってこようと思い、LWP::UserAgentなどを使って、取得していた。 ちょっとhttpsあたりも必要に迫られ、getしようとしたらエラーを吐いてくる。 ふむふむ。 ぐぐってみると、Crypt::SSLeayを入れろとな。 ちうことで、 $ sudo perl -MCPAN -e shell で、CPANから入れることに。 cpan[1]> install Crypt::SSLeay 通常は、これでOKなはずなのに…。エラー吐いてくれます。 でもなぁ、CPANから自動で入れているのにmakeで転けられても…。 でも、昔の出来事を思い出してテストして見ることに。 「接続を拒否されました」というメッセージが気になる。 Linuxの初期に良くあったのだけれど、これってLANG=Cでないと動かないんじゃ? ちゅうことで、再度やり直してみる。 英語モードで再度実行! 一旦、抜けてcpanの起動から。 $ LANG=C sudo perl -MCPAN -e shell 表示はもともと英語だし、何も問題ないはず。 同様に、Crypt::SSLeayを入れてみる。 全てのテストに合格して、無事インストール完了!! やはりな!って感じです。 はっ!! インストールが目的ではなかった…。 さて、SSLが使えるようになっているはずなので、テストする。 500 Can't verify SSL peers without knowning which Certificate Authorities to trust orz... SSL証明書と一致しないらしい…。 もうひと踏ん張り。 SSL 証明書のエラー時の対応  どうやら、良く発生するようで…。あちこちに対応策が書かれていた。 [Perl] LWP::UserAgent で SSL 証明書のエラーへの対応 の記述がわかり易かった。 ホスト名の検証をしない CAを明示する いやいや、1はまずいんでは?という思うので、2の方針で。 Mozilla::CAを入れれば良さそう。 さっそく、cpanでMozilla::CAをイン...

PerlでMIME処理

イメージ
いろいろとCPANで遊んでいて PerlでMIMEの処理をさせようと、モジュールをインストールして試してみる。 今まで、自前処理で行うことが多かったので、勉強がてら検索&TRY。 メール解析には「MIME::Parser」が便利そう。 ということで、入れてみる。 $ sudo perl -MCPAN -e shell cpan[1]> install MIME::Parser たったこれだけで、入るんだから楽なもんだ。 my $parse=MIME::Parser->new(); my $message = $parse->parse(*STDIN); my $head = $message->head();  なんて処理を書いて、マルチパートなデータを食わせて、いろいろとテストしていたら、読み込んだメールデータをパースするたびに、ファイルを生成してくれる…。 txtとhtmlがわさわさと増えているじゃないか…。 つうことで、何かオプションが有るはずと思いつつ、探してみる。 「 MIME::Parser インスタンス設定 output_to_core 」なんて記録を見つけた。 1をセットすると、parseデータをメモリ上に保持する。デフォルトでは解析結果のうちbody部(本文やマルチパートの添付ファイル)は即時ディスクに書き出し。 (perldoc では、巨大ファイルが添付された場合などでちょっとriskyとさ) ということらしいので、セットしてテストしてみる。 $parse->output_to_core(1); $parse->tmp_to_core(1); $parse->tmp_recycling(1); $parse->use_inner_files(1); こんな感じで、書いておけば、オンメモリで作業してくれるらしい。 昔、メモリが少ない時の実装なんだろうな…なんて思いながら、現在の大量にメモリが使える時代に感謝!! で、output_to_core(1)をセットして、テストすると作業ファイル等全く作らなくなった。 まあ、どでかいメールを食わせる予定はないので、メモリで処理してくれた方がありがたい。ファイルがディスクを...