週刊これは夢?!

それとも…。
すぐ忘れちゃうので備忘録用ブログ。
週1ペースで書くことを、ゆるい目標にしていました。

ruby で複数のファイルを置換 (ワンライナー)

2013-04-23 | 電脳
同一フォルダにある複数のファイルを rubyを使って、ワンライナーで置換する。

□基本
find でファイルを見つけ、xargs を使って、rubyに渡す。
  % find . -name "file.name" -print0 | xargs -0 ruby -i.bak -p -e '$_.gsub!(%q{abcd}, %q{efgh})'
※ruby の -i は元のファイル名に".bak"をつけてコピー。元のファイルを修正して保存する。
上の例では バックスラッシュやスラッシュを評価したくなかったので、シングルクォートを使うことにした。わかりにくいので%qとした。

□はまった所

当初の目的は、音楽ファイルの場所を記述したプレイリスト(テキストファイル)を、Windowsからandroid用に書き換えること。
たとえば、C:\music を /sdcard/music へ置換する。
  % find . -name "*.m3u" -print0 | xargs -0 ruby -i.bak -p -e '$_.gsub!(%q{C:\music}, %q{/sdcard/music})' 
これはOK。
次に、フォルダの区切りをwindowsの「\」からandroidの「/」に変更しようとした。
  % find . -name "*.m3u" -print0 | xargs -0 ruby -i.bak -p -e '$_.gsub!(%q{\}, %q{/})' 
これはエラーがでて失敗
   -e:1: unterminated string meets end of file
-e:1: syntax error, unexpected $end, expecting ')'
色々試行錯誤したもののわからず、友人に助けてもらいながら、成功。
 % find . -name "*.m3u" -print0 | xargs -0 ruby -i.bak -p -e '$_.gsub!("\\", "\/")' 
シングルクォートがだめならダブルクォートでいいじゃない。ということか…。
わけわかめだが、まぁできればいいんだ…。

スラッシュが絡むと、何がなんだかよくわらなくなる。
コメント (1)

Thunderbird Lightning によるフリーズ

2013-04-08 | 電脳
Thunderbirdを起動した時に、Thunderbirdが応答しなくなる(フリーズする)現象について。
ノートPCで発生する。常時ネットに接続するデスクトップPCでは発生せず。
(現在、TBのバージョンは17.05)

□調査
まずアドオンを無効にすると正常に起動する。
(メニューから起動する時、シフトキーを押しながらクリックする)

次にカレンダーアドオンについても調べる。
LightningだけならOK。Provider for google をONにするとフリーズ。

アドオンをオンにした状態で、prefs.js の calenderに関する記述を
いくつか削除してみると、cache を true から false にすると起動する。

□結論
calenderのキャッシュ機能(オフラインサポート)がだめな模様。
キャッシュ機能をオフにすれば良い。

□起動方法
Thunderbirdの設定フォルダにある prefs.js の、
calendar.registry の cache.enabled を true から false にする。

  user_pref("calendar.registry.xxx---xxx.cache.enabled", false);


□註記
cache機能は時々不具合が発生するように思う。
今回はThunderbird自体に影響が生じたが、カレンダーだけで不具合が出たこともある。
この時はアドオンをバージョンアップすれば直ったように記憶している。

ともかく、Thunderbirdの挙動がおかしい場合、まずカレンダーのキャッシュサポートをオフにしてみるのが良いようだ。
コメント

AutoHotkeyでEmacs風キーバインド:ちょっと追加設定

2013-04-02 | 電脳
AutoHotkeyを使い、Windowsでも、Emacs風キーバインドを実現している。

AutoHotkey
USIPEDIA/AutoHotkey/WindowsでEmacs風キーバインド

基本的には、emacs.ahkをAutoHotkeyに読み込ませればOK。
その中で用意されているもの以外に、いくつか使いたいものがあったので、追加した。


□全部選択
Windows標準ショートカットキーでは、"C-a" で実行できるコマンド。
Emacsキーバインドでは、"C-x h" になる。

;; select all
select_all()
{
  Send, ^a
  global is_pre_x = 0
  Return
}

;; select all
 h::
  If is_target()
    Send %A_ThisHotkey%
  Else
  {
    If is_pre_x
      select_all()
    Else
      Send %A_ThisHotkey%
  }
  Return


□Redo
いわゆる繰り返し。もしくはやりなおしのやりなおし。
今回は、"C-\" (バックスラッシュ)を指定している。

;; redo
redo()
{
Send ^y
global is_pre_spc = 0
Return
}

;; redo
^vkE2sc073::
;^\::
If is_target()
Send {CtrlDown}\{CtrlUp}
Else
redo()
Return


※ vkE2sc073 は AutoHotkeyを開き、「メニュー」→「View」→「key history and script info」で、"\"(バックスラッシュ)を押した時、VKとSCの欄に表示される値。
かなキーや変換・無変換キーなどを指定するときに使うとうまくいくことがある。


□SKKIME

まず、SKK-IMEで利用できるように、IMEがONかOFFかを調べるため、設定を追加する。
参考:もらかな(AutoHotkey)(IMEの制御をする 編)

IME_IsON(hWindow)
{
; WM_IME_CONTROL = 0x0283
; IMC_GETOPENSTATUS = 0x0005
bufCurrentDetectMode := A_DetectHiddenWindows
DetectHiddenWindows, On
buf := DllCall("user32.dll\SendMessageA", "UInt", DllCall("imm32.dll\ImmGetDefaultIMEWnd", "Uint",hWindow), "UInt", 0x0283, "Int", 0x0005, "Int", 0)
DetectHiddenWindows, %bufCurrentDetectMode%
Return buf
}



・SKKIMEとMS-Word
日本語入力にskkimeを使って、Wordに入力すると、C-gがSKKIMEに渡されない。
これは、WordがIMEの状態を検出しないための模様(よくわからん)

そこで、MS-Wordかどうかによって、C-gの挙動を買えて、C-g がSKKIMEに伝わるようにする。

;; 元々の設定
;^g::
; If is_target()
; Send %A_ThisHotkey%
; Else
; quit()
; Return
;; 変更後の設定
^g::
If is_target()
Send %A_ThisHotkey%
Else
{ ;; WordはIMEの状態を検出できないため、そのまま
IfWinActive,ahk_class OpusApp ;MS-Word
Send %A_ThisHotkey%
Else
{ ;; IMEがONであればそのまま、OFFならQuit
If IME_IsON(WinExist("A"))
Send %A_ThisHotkey%
Else
quit()
}
}
Return


・C-j でSKK-IMEが動くようにする。
もしIMEがOFFの時は、IMEをONにする。

;; 元々の設定
;^j::
; If is_target()
; Send %A_ThisHotkey%
; Else
; newline_and_indent()
; newline()
; Return
;; 変更後の設定
^j::
If is_target()
Send %A_ThisHotkey%
Else
{ ;; WordはIMEの状態を検出できないため、そのまま
IfWinActive,ahk_class OpusApp ;MS-Word
Send %A_ThisHotkey%
Else
{ ;; IMEがONであればそのまま、OFFならIME ON
If IME_IsON(WinExist("A"))
Send %A_ThisHotkey%
Else
Send, !{vkF3sc029}
}
}
Return


※ vkF3sc029 は半角全角キー
コメント

adobe のアップデータがおかしい。

2013-04-01 | 電脳
以前からおかしいなぁと思っていたのだが、今回はっきりと認識できたので記録。

□状況
・対象ソフト:adobe illustrator CS5 15.0.2
・危険度:Highly Critical
・詳細: http://www.securelist.com/en/advisories/47118/?function=advisories&VN=47118
・対策:version CS5 (15.0.3) or CS5.5 (15.1.1) もしくは version CS6 (16.0.0) にアップデートする。

□問題
(1) adobe が用意しているアップデータでは、version15.0.2より新しい更新は無い、とされる。
(2) adobe のサイトには、15.0.3用のパッチがあるので、ダウンロードして自分で更新すると、
  adobe が用意しているアップデータが、 version15.0.2 へダウングレードしようとする。

□教訓
adobeのアップデータを信用してはいけない。

□愚痴
そもそもadobe illustratorは私にとってオーバースペックだったのだが、無知ゆえにいたしかたなく泣きながら購入した。
高い。機能が多すぎる。重い。理解しにくい。よくわからん。
まぁでもそれは、業務で使う人には必要なので良い。
問題なのは、セキュリティーホールが多い。対策してくれない、もしくは時間がかかる。
さらに、サポート期間短かい。高いソフトなので使い続けたくても、古いバージョンは切り捨てられる。
すぐ新しいのを買わないといけない。でまたこれが、くそ高い。だから買えない。結果、危険なまま使わざるを得ない。

□今後の方針
adobeの製品は買わない方向で。
コメント