2015年10月12日 (月曜日)

Firefox41 で .keysnail.js がエラーしてた件

多分 Firefox のバージョンが 41 になってから、 keysnail の設定ファイル ~/.keysnail.js がエラーするようになって、やっぱり不便なので苦手な javascript のシンタックスを自分なりに調べて修正してみたメモ。

Dotkeysnailfix

ediffの画面、上が修正済、下がオリジナル。
keysnail の wiki にある修正方法と若干違う気がするけど、きっと大丈夫…?

今見ると、ちゃんと「エラーの対応ガイド見る」というボタンがあるのね。前はなかったような。このボタンを押すと前述の修正方法へ飛べます。

Firefox41errormosaic

でも let 文が廃止されると、また修正必要になるのかな。

| | コメント (0) | トラックバック (0)

2015年1月26日 (月曜日)

なす

Psu写真その他の保存用 RAID1 ボリュームを運用していた Debian box の電源がお亡くなりになったので、 安価な NAS にしてみたメモ。

使い始めて数日後からキーンという高周波ノイズが気になりだした。ドライブがスピンダウンしている時にも鳴っている気がして、ファン?と思いこちらの記事を参考にファンの回転数を上げ下げしてみたけど音に変化なし。やっぱりドライブなのか。かれこれ4・5年は使ってる鴨。
あと同じサイトのこちらの記事を参考に root での ssh アクセスを禁止したり。 ReadyNAS の記事が豊富で参考になります。有り難うございます。

| | コメント (0) | トラックバック (0)

2014年8月22日 (金曜日)

Android の adb backup から一部だけリストアしちゃー

スマホ(Softbank 202F)が壊れて修理に出すことになって、出来る限りバックアップとっておこうと調べてみると、 Android SDK に含まれる ADB を使用してバックアップ/リストアができるらしい。取り敢えずこちらのサイトなどを参考にバックアップ。 -apk -shared - all -system のオプションでバックアップしたところ 15GB 程に…。念のため -noapk -noshared -all -nosystem のオプションでもバックアップしておく。これは 170MB 程。スマホは1週間程で戻ってきたけど、すぐにはリストアする時間がなく2日程使ってしまったので、リストア前にも後者のオプションで念のためバックアップ。

15GB のバックアップからのリストアは結構な時間がかかったけど、全てが元通りという訳ではなく、 Line がエラーして起動しなかったり Kobo, Sony Reader 等含めて本体にダウンロード済みのデータ(これらはマニュアルでバックアップ/リストアした)を認識してくれなかったり。修理で基盤交換とかしてるからなのか、そもそもバックアップが不完全なのか、それとも修理後しばらく使ってたのが悪かったのか。

修理後、おサイフケータイの再設定などはうっかり済ませてしまっていたけれど、どうせリストアで完全に元に戻らないのならと、これら設定を反映させるために修理後にとったバックアップも追加でリストアしてみた。
すると今度は「メモ帳」アプリのデータが消えてしまったので、取り敢えずそれだけは復活させたいと考えてみたメモ。前置き長すぎ(笑)。
因みに 202F の「メモ帳」アプリのパッケージは com.fujitsu.kservice.fnotepad_3thm みたい。

ADB バックアップデータと tar アーカイブを双方向に変換してくれるツールは既に存在するようで、こちらとかこちらとかを参考にバックアップデータを tar に変換し展開することで特定のパッケージを取り出すことができた。ただ、これを再び tar にして ADB バックアップデータに変換する際には注意が必要そう。
tar にまとめる際にファイルを格納する順序(実際にはパッケージディレクトリ直下のサブディレクトリの順序のみ?)が正しくないと、ちゃんとリストアしてくれないみたい。また、 tar の中でファイルエントリの前にそのファイルを含むディレクトリだけのエントリがあってもダメみたい。でも空のディレクトリはあり…?とか。
バックアップファイルのフォーマット仕様書を見つけられなかったので、前述のサイトなどを斜め読みし色々試しつつ、 ADB バックアップデータから取り出した tar を展開して得られるディレクトリツリーから ADB バックアップファイルを作るスクリプトを書いてみた。「メモ帳」アプリのデータが復元できる事と、 Line を ADB バックアップ→ tar に変換&展開→件のスクリプトで ADB バックアップファイル再構築→ ADB リストア→ ADB バックアップ…を行い、最初と最後の ADB バックアップファイルを tar に変換&展開して同一のモノが得られることは確認…って分かるかな?(笑)。

前述のサイトにあるツールは python や java, perl で書かれてたけど、統一感無く ruby で(笑)。バックアップファイルから取り出した tar を展開すると apps というディレクトリができるので、この apps ディレクトリがあるディレクトリでスクリプトを実行すると apps 以下の内容を含むバックアップファイル生成。スクリプト実行前にリストアしたいパッケージを取捨選択しておく。ホントは元の tar を展開せずに直接必要な部分だけ取り出せればいいんだろうけど、取り敢えず。

全てが元通りではないけれど、ひと通りリストアが終わったところで、ふと「ギャラリー」を開くと…え、修理に出してる間に代替機で撮影した写真がない!保存先は microSD にしてたはずなのに…と途方に暮れつつ「ギャラリー」アプリのデータを削除してスマホを再起動すると、「 SD カードをスキャンしています」的なメッセージの後、無事に全ての写真が表示されますた。

あ、スクリプトは OSX 10.9.4, ruby 2.0.0p451で動作確認。スクリプト内部で tar コマンド呼び出したりパイプ使ったりしてるので、 Unix 系システムがよさげ。

| | コメント (0) | トラックバック (0)

2014年5月23日 (金曜日)

クレーンゲームでとったトイデジからの写真取り込みとか

小学生の娘が自分用のデジカメが欲しいというので、そう言えば昔クレーンゲームでとったのがあるよと出してきたはいいけど、 PC に接続して写真を取り出すためのアプリが入ってた CD を処分してしまっていたので何とかしたメモ。

Img_20140519_01_34_33_xga_2

Digicamusb_2

デジカメ本体はこんな感じ。本体には D:X DIGITAL とか DIGITAL CAMERA とか USB とか(笑)しか表示がなくて、ネットを色々探してみたけれど使えそうなアプリは見つけられず。 USB ケーブルを接続する端子も特殊?な感じだけどケーブルは奇跡的に発見。

Linux に繋げて lsusb してみると…

Bus 001 Device 006: ID 0979:0227 Jeilin Technology Corp., Ltd JL2005B/C/D Toy Camera

という表示。更にこれを手掛かりに探してみると、 gphoto を使うとカメラ内の写真を取り出せるっぽい!

早速 MacPorts で gphoto2 をインストールするけど、どうも最近 MacPorts でのインストールやアップグレードが失敗するなぁと少し調べてみると、どうもこういうことみたい。確かに Mavericks にしてから鴨。これまでバータリーに対処してきたのは無駄だったのね。 Homebrew だとこんなことないのかな? 取り敢えず手順通りに実行すると確かにエラーは出なくなったけど、やたらと時間がかかる。かかり過ぎる。カペルスキーインターネットセキュリティって奴を入れてから色々かなり重たくなってる実感があったので、試しにこれを無効にしてみると100倍速くなりますた。あくまで体感(笑)。 Parallels にバンドルされてたから使ってみてたけど、これを機会にサイナラします…。

20140522_042716gphoto2 を使ってコマンドラインから写真の取出しや削除ができる事は確認できたけど、さすがに小学生の娘にターミナルからコマンド入力させるのもアレなので簡単な GUI を Ruby/Tk でテキトーにこんな感じに。やっぱりマルチスレッドにするべきかなぁと直しかけたけど、使えないこともなさげなのでそのままに。やっつけなコードを恥ずかしながら置いときます。プログレスバーつけようとして志半ばな残骸もそのままに。あ、 gphoto2 と ppmtojpeg を内部で呼び出してます。あとは Automator を使ってアプリっぽく起動できるようにして出来上がり。

| | コメント (0) | トラックバック (0)

2013年12月21日 (土曜日)

NTEmacs で tramp (ssh) 設定とか

Meadow だった頃から使っている .emacs の設定では、リモートサーバー上のファイルを ange-ftp (tramp) で編集できてたけど、ある日会社の Solaris なサーバーにアクセスしようとするとタイムアウトしてしまった。あれこれ試して「もしや?」と McAfee のログを見てみると案の定 ftp.exe をブロックしましたと。再び「もしや?」と ftp.exe を別名でコピーして試してみたけどダメだったので、ポートを塞がれれたのか。でも会社標準(?) ftp クライアントの Filezilla では問題なさそう。 PASV モードだと大丈夫ぽいけど、サーバーによっては PASV モードを拒否するようで使えない。

結局、こちらのページなどを参考に PuTTY の plink を使うよう tramp の設定を変更。最初エラー(詳細忘れた)してうまく動かなかったけど、こちらのページを参考に tramp-sh.el をバイトコンパイルし直して、 tramp のキャッシュ(~/.emacs.d/tramp)を削除する事で使えるようになった。キャッシュの削除は Emacs を終了して行わないとダメみたい。

色々調べてる内、 NTEmacs のショートカットに AppID を設定する方法など見つけて少しだけ快適に。自分の環境では runemacs.exe ではなく Cygwin の run.exe で emacs.exe (を outlook.exe にリネームしたモノ)を起動しているけど、あくまでショートカットに AppID を設定するので関係ないみたい。

| | コメント (0) | トラックバック (0)

2013年12月 1日 (日曜日)

Auto Dial 10 works with FF 25.0.1 :-)

いつからか(きっと Firefox が 24.0 になったくらいから)ちゃんと使えなくなってた Auto Dial という Firefox のアドオンをやっぱり使いたいと少し調べたら使えたっぽいのでメモ。

このアドオンは、よく見るサイトへのリンクをその頻度の高い順に並べて新しいタブの画面に表示してくれるというモノ。最近の Firefox では標準で似たような機能が実装されてるけど、慣れもあってか Auto Dial の方が使いやすい。

Auto Dial のレビューにも、 Firefox 24.0 で新しいタブを開くとたまにしか Auto Dial の画面が表示されないと書いてあり、確かにそんな感じ。
やっぱり使えないと不便だなと少し調べてみたら… Firefox 側の設定を変更すると使えるっぽい。

Browsernewtabpreload_3

ロケーションバーに about:config と入力して現れる設定項目の browser.newtab.preload という項目を false にするといいみたい。これは恐らく標準の新しいタブの画面に表示されるサムネイルの為の設定かな(?)。だとしたら、これが何故効くのかは謎だけど。

因みに標準の新しいタブの画面に表示されるサムネイルの数が少なすぎる…とも思ってたけど、これも同様に about:config にある項目:
browser.newtabpage.columns
browser.newtabpage.rows

…で調整できるみたい。

Auto Dial は、各サイトへのリンクに対応する番号(リンクの画面上の位置によって決まる)をタイプすることでもジャンプできるけど、数が多くなると先頭から数えないと番号がわからなくなるのが難点(笑)。あとインクリメンタルサーチで絞り込む機能とかあったら嬉しい鴨。

| | コメント (0) | トラックバック (0)

2013年11月27日 (水曜日)

Outlook で Emacs なキーバインド

これまで会社の Windows PC では、 NTEmacs + mew, Cygwin, Firefox + KeySnailGoogle日本語入力を「ことえり」ベースのキーマップで使って、それなりに平穏な日々を送っていました。…が、周囲は html メールがメインでさすがに最近は mew では厳しさを感じます。
html メールを引用、 plain text で返信してメールのフォーマットを崩してしまうのが心苦しい時があるのです。

会社の標準メールクライアントは Outlook です。これが mew ライクなキーバインドで使えるようになれば…と調べてみたメモ。

最初に参考にしたのがココ。因みにココの AutoHotkey 用のコードはヘルプに載ってるサンプルコードの関数 ActiveControlIsOfClass() をどこかで定義してあげないとエラーします。あとメール作成時に大文字 F が入力できなかったので "+f" で始まる行を削除しました。(+f = Shift + f の意)
AutoHotkey 今まで知りませんでしたが、かなり色々できそうですねー。

結局、今のところコチラで戴いたスクリプトと併せて少しカスタマイズしつつ全体的に Emacs なキーバインドにしてみてますが、まだ期待と違う動きになるところがあったり既に使い慣れてる Windows なショートカットと衝突したりで模索中です。

Windows のショートカットキーは Ctrl キーとの組み合わせになってる場合が多いので、どうしてもぶつかっちゃいますね。その点 OSX は編集場面での Emacs ライクなキーバインドと、コマンドキーとの組合せがメインな標準的なショートカットキーがうまく共存できてて使いやすいなーと改めて思います。

| | コメント (0) | トラックバック (0)

2013年10月 7日 (月曜日)

会社 PC の入替えとか(3年5ヶ月鰤)

つひこないだ交換したばっかりな気がしてた Lenovo T400 が、実は3年半も使ってたと気づいて驚きました。どうりでキーボードも擦り減るわけね。

新しい PC は HP 製になりました。
古い PC から新しい PC に環境を移す訳ですが、会社入って最初に貰った PC では C: ドライブ直下にフォルダを作れたのに、途中からアクセス権を奪われてしまい、そのままでは同じパスにファイルが移動できずに何かと不便です。そのパスにそのファイルがある前提の環境になってたりするもので。
なので、新しい PC を貰ったら先ず、一時的に管理者権限を行使させて戴き C: ドライブ直下にフォルダを作ることから始める必要がでてきました。
せっかくなのでついでにキーボードの Ctrl と Caps を入替えたり、 Google 日本語入力を入れたりはするけれど権限の悪用はしません。自由には責任が伴います。

で、いつもは取り敢えず KNOPPIX で起動して、 Windows パーティションのあるファイルを書き換えてゴニョゴニョしてた訳ですが、最近会社の PC は BitLocker を導入してるのですんなり読ませてくれません。
最初は KNOPPIX で bdemount すればいいかと思いましたが、これもすんなり動いてくれなかったので考えなおし、新 PC の HDD を USB 接続の外付けケースに入れて、管理者権限のある Windows PC に接続することにしました。中身を見るには BitLocker のリカバリーキーが必要ですが、それは管理者に訪ねれば教えてくれるでしょう。

…という感じで、無事に環境移行完了です。

| | コメント (0) | トラックバック (0)

Xcode license agreements

macport で wine のビルドがこけたのでログを見てみたら…

:info:destroot You have not agreed to the Xcode license agreements, please run 'xcodebuild -license' (for user-level acceptance) or 'sudo xcodebuild -license' (for system-wide acceptance) from within a Terminal window to review and agree to the Xcode license agreements.

…と書いてあるので、その通りに sudo xcodebuild -license と実行して表示される内容を熟読(嘘)して agree と入力。
その後は無事にビルドできてるるっぽい。でも今まで、こんなのやったことなかったような。面倒だから諦めようとしてたけど、ログみてよかった(笑)。

| | コメント (0) | トラックバック (0)

2013年5月27日 (月曜日)

Python の正規表現が激遅だと思ったら

仕事で書いてた perl のスクリプトを python で書きなおした時に少しだけハマったのでメモ。

問題のスクリプトは100MBくらいのテキスト(ログ)を解析して結果を出力するモノですが、処理に 10 分弱もかかるようになってしまいました。 perl で書いてた時の処理時間はちゃんと測定してませんが、明らかに劇的に遅くなってます。
そこでドキュメントなどを参考に、 python 標準のツールで超簡単にプロファイリングしてみました。
プロファイリング対象のスクリプト my-script.py は標準入力から処理対象のテキストを入力し、複数の引数をとるので、下記のようなコマンドラインで python のプロファイラ cProfile.py を実行しました。

cat input-log-file | cProfile.py -o prof-result-file my-script.py script-arg1 script-arg2

cProfile.py は python の lib フォルダにあります。(例えば Cygwin の python 2.7 の場合 /usr/lib/python2.7/cProfile.py)

上記コマンドで得られるプロファイル結果 prof-result-file は、下記の様なスクリプトでソートして時間を食ってそうな処理を探しました。(ドキュメントまんま)

import pstats
p = pstats.Stats('prof-result-file')
p.sort_stats('cumulative').print_stats(10)

結果、どうも正規表現オブジェクトのコンパイルと search メソッドに殆どの時間が費やされていたようなので、正規表現オブジェクトを予めコンパイルしておくことと、正規表現のマッチング時に可能な限り search に代えて match を使うことで処理時間を約 1/3 にすることができました :-)

因みに、元のコードではループ処理中に re.search メソッドを多用していました。(こことかここなどご参考)

以後、気をつけます。(…って python 界では常識なんでしょうね)

| | コメント (0) | トラックバック (0)

«kobo touch の microSD で日本語ファイル名