/ 最近 .rdf 追記 設定 本棚

脳log[2009-06-14~]



2009年06月14日 (日)

最終更新: 2009-09-06T20:33+0900

[Ruby] ruby-mp3info (version 0.6.13, 2009-05-26) を使ってみて。

 入手先とドキュメント

チキンなので日記に書きますよ。

 Mp3Info#renameがまるで使えない。

mp3info.rbの中でこのように File.writable? でチェックしているから、renameで @filenameを書きかえていてファイルが存在しないとエラーになる。

      raise(Mp3InfoError, "file is not writable") unless File.writable?(@filename)

ここを乗り越えても

          file.seek(-TAG1_SIZE, File::SEEK_END)

ファイル末尾から TAG1_SIZEバイト戻ることができなくてエラー。だってそれは新しく作ったサイズ 0 のファイルだから。

 yearと tracknumを 0 にされる。

I氏のつぼでタグを書き込んでいると、この二つのタグも他と同じく BOM付き UTF-16LE文字列になっているので、mp3info.rbのこの部分で BOMを数字にしようとして 0 になる。

            if %w{year tracknum}.include?(key)
              @tag[key] = tag_value.to_i
            end

 タイトルなど文字列の最後の一文字が消える。

おそらく mp3info/id3v2.rbのこの部分

        # remove padding zeros for textual tags
        out.sub!(/\0*$/, '')

この処理で outのサイズが奇数バイトになることがあって、さらに NKFが末尾の半端な 1バイトを無視するからではないかと。

あと、/\0*$/ というパターンは /\0+$/ でいいんじゃないかな(空文字列を空文字列に置換することもないし)。あとあと、$ でなく \z を使うとか。


(途中なので)メッセージだけ表示してタグの書き込みはしないでおこうと思っていたら、unless と書くべきところが if になっていて広範囲に mp3ファイルを書きかえてしまった。そしたらエクスプローラでジャンルやアルバム、アーティストなどの読み込みと書き込みができなくなってしまった。むむう。


2009年06月10日 (水) [DR250R] 「生産終了いたしました」<http://www1.suzuki.co.jp/motor/Djebel250xc/><http://www1.suzuki.co.jp/motor/dr-z400s/> なんてこったい。いつの間に。BEAT、MR-S、DR。代替不在のままなくなっていって、どんどんつまらなくなるよ。


2009年06月09日 (火) eo開通(予定日)

[Vista] エクスプローラがバカなのか ListViewがアホなのか。

サイドバーを左側に出していてもデスクトップアイコンが左上から左下に向かって追加・整列されるのは知っていた。サイドバーをどかさないとアイコンを動かせないですね。

サイドバーのことはおいといて、アイコンが左上から左下に向かって追加されるということで、関係のある一連のアイコンを選択するために Shiftを押しながら↓を押したらどうなったか。選択範囲が「Z」の字を書くように広がっていった。どこまでもやってくれるやつだ。エクスプローラはブラウザと並ぶ最重要アプリケーションだと思うんだけどな。

考えたら ListViewは悪くない。普通のフォルダでアイコンを並べたら「Z」を書くようにアイコンが配列されるもの。デスクトップアイコンを縦に配列してるのは誰でしょうね。

plalaから eoとか書いてると

アクセスログから閲覧履歴を REMOTE_HOSTと REMOTE_ADDRと User-Agentで絞り込めそうだ。


2009年06月06日 (土) どうして at をつかうのに管理者権限が必要なんだ。

[Vista] リマインダ

>at HH:MM msg USERNAME "時間です!"

2009年06月05日 (金)

最終更新: 2010-01-15T21:53+0900

おれは吸わないし、(結局は)嫌いなんです。特に窓から腕を出して吸う人間が。

『上流社会の習慣』の指針より

喫煙

「タバコは女性がいるときには吸ってもいけないし、吸って良いかと訊いてもいけない。葉巻を取りに行ったことに気づいた場合、女性はその人に席をはずして外で喫煙してもいいですよと声をかけるのが良い。ただし、街頭での喫煙は御法度で、ことに日中は論外。強盗をはじめとする恥ずべき行為は暗くなってからすることはあっても、明るいうちはしないものだからだ。また、女性がときどき来るような部屋では喫煙してはならない。だから、妻や姉妹のいる卑しからぬ男性は食後にそのまま食堂で喫煙することはない。さらに、花屋や遊歩道に女性のいる場所、あるいは女性の来る可能性のある公の場所では喫煙してはならない。列車の客室内は規則では禁煙だが、同じ客室に乗り合わせた全員の許可があれば喫煙してもよい。ただし、女性がいる場合には、たとえ許可してくれたとしても、吸ってはならない。街なかでパイプを吸うのもいけない。ホテルの喫茶室は一切喫煙は認められない。牧師がいるところでは、許可がなければ吸ってはいけないし、副牧師よりも上の聖職者には葉巻をすすめてはならない」

これは規則ではないし、一般人向けではないし、時間も場所も異なるところのことだし、口やかましい年寄りの小言にしか聞こえないけど、異なる価値観から自分の行為を見直してみる役には立つだろう。喫煙者が「禁煙ではない」というだけを根拠にして節度を守れないのであれば条例による規制も大いに結構。(実際に嫌な思いをさせられた経験があるわけではないが)

次のは単なるお気に入り。脱力しました。

ここは禁煙です。

JavaScriptのクロージャに関する記述が検索に引っかかって見つけたサイトだったと思う。定型の Webページ素材以外のことを書いていたのが 2000年以前にはすごく珍しかった。


2009年06月03日 (水) [SakuraEditor] (要望) 新しく開いたファイルを現在のタブのすぐ右側に追加する機能。

最終更新: 2009-08-26T17:01+0900

[SakuraEditor] 新しく開いたファイルを現在のタブのすぐ右側に追加する機能。(2009-06-04)

要望を書いて次の日になんとかするセルフサービス > open_tab_right.diff

便利なメソッド( CTabWnd::ReorderTab )が既に用意されていたので楽でした。

結果はわりと希望通りの動作。

  • エディタに対して Ctrl+Oで、すぐ右のタブにファイルを開く。
  • エディタに対して Ctrl+Nで、すぐ右のタブに新しいファイルを作成。
  • エディタに対して Ctrl+Gで、すぐ右のタブに GREP結果。
  • エディタに対してファイルドロップで、すぐ右のタブにファイルを開く。
  • トレイアイコンから新規作成では、右端にタブを追加。
  • トレイアイコンから最近使ったファイルでは、右端にタブを追加。

バックグラウンドでタブを開く機能はないから、連続してファイルを開いたときに新しいタブが右に延びるか左に延びるかということは考えていない。(01234...となるか 0...4321となるか。特別に考慮しなければ後者になる)

タブを閉じたときに次にアクティブになるタブは、多分直前にアクティブだったタブ。理想とする Firefox + TabsOpenRelativeだと、基本的に閉じたタブの右側のタブがアクティブになるものの、ある条件で元のタブ(閉じたタブの左側のタブ)がアクティブになる。タブを閉じたとき次にアクティブになるタブにこだわりはないので変更していない。


知らなかったけど svk diffの出力をリダイレクトしたファイルが CR/CRLF混合。diff自身のメッセージが CR区切りになってるからみたい。いったいどこの diffを使ってるんだ。

よくみると CRの部分は改行がダブってる。CRCRLFが CR+CRLFと解釈されてるみたい。CRLFの LFに誤って CRを補ってしまったのかも。(だれが?)


あとは、常に「前回開いていたファイルを復元する」機能が欲しいところ。タブの順序、カーソル位置、スクロール位置、検索文字列、アンドゥ記録(は無理か)などなどの復元も込みで。


2009年06月02日 (火) なんと 1st。そんな気が全然しないし、CDである必要も全然ない。(買うけど)


2009年06月01日 (月) CPUFANは 4-pin。SYSFANは 3-pin。

[COSMOS] SpeedFan 4.39β7。Fintek F71889Fに対応。

スクリーンショット SpeedFan 4.39 beta 7

Win9x:NO  64Bit:YES  GiveIO:NO  SpeedFan:YES
Scanning ISA BUS at $0290...
SuperIO Chip=FINTEK F71889F
Scanning AtiIgp SMBus at $0B00...
F75387 found on SMBus at $2E
F75133S found on SMBus at $36
Scanning ISA BUS at $0600...
F71882F found on ISA at $600
Found Hitachi HDT725050VLA360 on AdvSMART
Found ST3250410AS on AdvSMART
Loaded 6 events

めでたく Windows上で全てのファンの回転数の取得といくつかのファンの制御が可能になりました(以前の状況>20090501p01)。電圧も取得できるようになりました(+5Vと +12Vと VCC1.5Vの値が全然ラベル通りではないけど)。

MSI 790FX-GD70の SuperIOチップが Fintek F71889F。(F71889Fに対応しているという) AMD Over Driveは起動すらできないし、MSI謹製のツールでもできないし、不便だけど BIOSで調整できるからいいか、と半ばあきらめていたので嬉しい。ちょこちょこ暑い日があって、でも毎日暑いわけでもなくて、騒音と冷却のバランスとりが必要なんだよね。

 SpeedFanでの表記と M/Bの対応

CPUFAN(4-pin)×1。SYSFAN(3-pin)×4

ChipSensorM/Bラベル回転数制御可否
F71882FFan1/Pwm1CPUFAN1(PWM 1 modeを Manual set PWMにすることで)可
Fan2/Pwm2SYSFAN4
Fan3/Pwm3SYSFAN2
Fan4/Pwm4存在せず
F75387Fan1/Pwm1SYSFAN1不可
Fan2/Pwm2SYSFAN3不可

F75387というのが間違いの気がするんだよね。きちんと認識したら残る SYSFAN1/3の回転数制御もできるようにならないかな。


 スタートアップ起動と UAC

管理者権限がないと動かないと思ってショートカットの「管理者としてこのプログラムを実行する」にチェックを入れていた。それで再起動のたびにパスワードの入力を求められていた。

ためしにチェックを外して起動してみたらパスワードなしで起動するの。ファンの制御もできる。そういえば SpeedFanをインストールしたフォルダの speedfan*.cfgに Usersグループの書き込み権限を付け加えていたのだが、それが効いているのだろうか。HDD関連が検出からできていなくて全滅なこと以外これまで通り。


 HWMonitorも 2009-05-16の version 1.14で F71889Fに対応。

version 1.13からアップデートしたらツリーに Fintek F71882Fというノードが増えていた。


2009年05月28日 (木) [COSMOS] MSI 790FX-GD70。JMicronによるオンボードSATAポート(青口2つ)を無効にしたら S3から復帰できるようになった(PCの復帰よりモニタの復帰の方が遅く感じられる。Windowsはできるだけ早くモニタをつっついておくこと!)。旧PC(SN25P)ではできなかったハイブリッドスリープも(それとは関係なく)できるようになっているので休止のかわりに活用したい。


2009年05月27日 (水) [Vista] SP2。違いはわからない(それでいいのかも)。月イチ程度の頻度で Windows Search 4.0のインデックスが壊れる(追加したインデックス対象が外れる)のをとりあえずなんとかしてけろ。


2009年05月26日 (火) レンタルサーバーに /usr/local/bin/ruby18 というリンクがある。/usr/local/bin/rubyが 1.9になるのはいつになるだろう。

最終更新: 2009-09-02T23:17+0900

>大人には聞こえない音/聴力検査FLASH (Mosquito Sound)

可聴域の変化を知るために書いておこう。15kHzまで聞こえた。16kHz、17kHzは見事にきれいさっぱり聞こえない。小さい頃は聞こえたのかなあ。スピーカーが出力していないという可能性は……ないない。あきらめなさい。

最終更新: 2009-09-02T23:17+0900

[Ruby] サクラのレンタルサーバーで OSのバージョンアップがあって、エラー。

/usr/local/lib/compat/libpthread.so.2: Undefined symbol "__malloc_lock" (RuntimeError)
/usr/local/lib/ruby/1.8/dl/import.rb:29:in `initialize'

Rubyは 1.8.6 p287だから新しくなってないのだけど。OSが今日の早くに FreeBSDの 6.1から 7.1へ。そしてエラー。

DLを使ってるのは sqlite3-rubyだろうなあ。


Undefined symbol "__malloc_lock"で検索したら Tracが動かなくなった人が見つかった。この人は万事解決といかなかったみたいだけど、自分は libsqlite.soをコンパイルし直したらうまくいった。Rubyや DLの問題ではなく sqliteライブラリの依存関係が原因だったよう。再コンパイルは UNIX系OSのバージョンアップにはつきものの作業なんだろうか。

最終更新: 2009-09-02T23:17+0900

[SakuraEditor] 正規表現キーワードの色分けがおかしい。

  • クォーテーション文字列の色分けを正規表現キーワードで行っている。
  • 正規表現キーワードの色指定を「ダブル(シングル)クォーテーション」にしている。
  • 組み込みの色分けを無効にするために、クォーテーション文字列の色指定のチェックを外している。

おかしい。チェックが外れていると正規表現キーワードによる色分けも無効になる。

まずはこちら

242 //色指定でチェックが入ってなければ検索しなくてもよい
……
249 //正規表現では色指定のチェックを見る。
……
255 //正規表現以外では、色指定チェックは見ない。
256 //例えば、半角数値は正規表現を使い、基本機能を使わないという指定もあり得るため

このコメントを読めばまさしく現在の状況が考慮されていることがわかる。

  1. 正規表現キーワードに正規表現キーワード1などという色指定がされている場合、チェックがついていなければ色分けをするためにマッチを検索する必要がない。
  2. 正規表現キーワードに半角数値などの色指定がなされている場合、チェックの有無は基本機能による色分けの使用・不使用を表すのみで、正規表現キーワードの有効無効には影響を与えない。

仕様がねじれている気もするが、正規表現キーワードに「正規表現キーワード3」という色指定より「ダブルクォーテーション文字列」という色指定をしたいのだよね。基本機能を無効にして正規表現キーワードだけを使いたい場合もあるし(今回のように)、基本機能を使いつつ正規表現キーワードを使って、標準的でない文字列形式(Rubyの %!string! など)を補いたい場合もあり、そのときに複数の色指定を同じに保つより「ダブルクォーテーション文字列」という一つの色指定で色を管理したい、という要求がある。この両方を満たすのが以前の仕様。

待ってても直らないかもしれないので*他人の修正を待てないので調べた。

17 	if( TypeDataPtr->m_bUseRegexKeyword
18 	 && pcView->m_cRegexKeyword->RegexIsKeyword( cStr, nPos, &nMatchLen, &nMatchColor )
19 	){
20 		this->m_nCOMMENTEND = nPos + nMatchLen;  /* �L�[���[�h������̏I�[��Z�b�g���� */
21 		this->m_nCOMMENTMODE = ToColorIndexType_RegularExpression(nMatchColor);
22 		return true;
23 	}
24 	return false;

21行目の ToColorIndexType_RegularExpression(nMatchColor); とは実質的に

(EColorIndexType)(COLORIDX_REGEX_FIRST + nMatchColor);

こういうことだ。nMatchColorとはそのまま色指定なのだから COLORIDX_REGEX_FIRSTという下駄をはかせる必要はなくて

(EColorIndexType)nMatchColor;

これで十分のはずだ。正規表現キーワードだからって正規表現キーワードNという配色とは限らないのだよ。 [訂正] これはわざとだった。どんな色指定をされていても正規表現キーワードを他と識別するために行っている。同じファイル(sakura_core\view\colors\CColorStrategy.h)内に下駄を外す処理もある。

デバッガで nMatchColorの値を見てみたら 29であって、これはシングルクォーテーション文字列に対応した色インデックスだから期待通り。でも色分けはなされない。

なんでだろー。


223 /* 現在の色を指定 */
224 void CEditView::SetCurrentColor( CGraphics& gr, EColorIndexType eColorIndex )
225 {
226 	//インデックス決定
227 	int		nColorIdx = ToColorInfoArrIndex(eColorIndex);
228 
229 	//実際に色を設定
230 	if( -1 != nColorIdx ){
231 		const ColorInfo& info = m_pcEditDoc->m_cDocType.GetDocumentAttribute().m_ColorInfoArr[nColorIdx];
232 		if( info.m_bDisp ){
233 			gr.SetForegroundColor(info.m_colTEXT);
234 			gr.SetBackgroundColor(info.m_colBACK);
235 			gr.SetMyFont(
236 				GetFontset().ChooseFontHandle(
237 					info.m_bFatFont,
238 					info.m_bUnderLine
239 				)
240 			);
241 		}
242 	}
243 }

232行目。色指定のチェックの有無のチェックを無効にしたらとりあえず色分けはされた。正規表現キーワードが正規表現キーワードN以外の色指定をしている場合、チェックの有無をみてはいけない。ここでのチェックを期待しているコードがある場合、悪影響がある。

* r1576@2009-05-27 21:15 で直りました。


2009年05月25日 (月) [SHJS] SHJSに一つ機能を付け加えるなら、バックトラック。ある状態からある状態へ移動することはできるけど、その移動をなかったことにして、一度決めた色分けをやり直すことができないので。


2009年05月24日 (日) 上り下り最大 100Mb/s+光電話を申し込んだ。月額が+500円ほどで最大速度は 66倍。「PPPoE対応が必要だ」「接続できる PCは 5台までだ」と不安になる文言があったけど、今まで通り 2つのルータ、3つの PC、2つのネットワークメディアプレーヤー、NAS、NintendoDS、それに HDDレコーダーと TVもネットに接続できると踏んでいる。(この制限って終端装置に PCを直に接続する場合だよね。たぶん)