投稿

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

キーボード修理

イメージ
前回 調子が悪くなったと書きましたが、部品が手配できて時間が取れたので直しました。 茶軸のスイッチを購入 Cherryの茶軸は 10個で1,399- ということで購入。 本当は1個で充分なんだけど、仕方なく残りは予備部品として保管。 作業手順 キーボードの裏側ネジを3箇所外します。 左右と中央の丸シールの下。 左右はパッドを貼っているので、少しめくって外します。 (あとで綺麗に戻るので心配なしです) ケーブルが出ている方は、スッと外れ、手前(下側)は、内部に爪が有るので、ピックやカード、マイナスドライバなどで少し隙間を開けるようにして広げれば外れます。 自分は親指の爪で空きました。 今回は「E」が調子悪いので、該当のピン2箇所をハンダ吸いで綺麗に取り除いて、裏側から引き抜いて完了。 基板にしっかりとどのキーかがプリントされているので分かりやすいですねぇ 入手した新品の茶軸を差し込んでハンダ付けします。 この時点で動作確認が可能になるので、直したキーとその周辺が正しく入力できるのをチェック。 問題なく、無事に動作しました。 最後にカバーを取り付けて完了! 残ったのは9個の茶軸…。 今回の費用 Cherryの茶軸10個セット :1,399- キーキャップ引き抜き工具 : 475-  ちなみに10個セットには、簡易引き抜きがついてきますが、ちゃんとしたもののほうが楽に作業できます。(昔買ったのに、どこかに行ってしまったので再購入)  ということで、1900円ほどで完治しました。  手間賃考えると買ったほうが安いかも(笑)

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)をセットして、テストすると作業ファイル等全く作らなくなった。 まあ、どでかいメールを食わせる予定はないので、メモリで処理してくれた方がありがたい。ファイルがディスクを...