最終更新: 2010-02-05T02:00+0900
デスクトップを、並べたいウィンドウだけが開いた状態にし、タスクバーを右クリックしたショートカットメニューから「ウィンドウを左右に並べて表示」を実行すればいい。
レイモンド チェンの『Windowsプログラミングの極意』だっただろうか。そんなの知らねーしわかんねーよ、と読んで思ったのは。だいたいこんな内容。
Ctrlを押しながらタスクバーアイコンをいくつかクリックして選択状態にする。そのうちの一つを右クリックして「重ねて表示」「ウィンドウを上下に並べて表示」「ウィンドウを左右に並べて表示」を選ぶと選択したウィンドウだけを並べて表示できる。
最初の引用の通りにデスクトップを並べたいウィンドウだけにするのは実際は不可能に近いし、不必要なウィンドウまで並べると、ウィンドウサイズが細くなりすぎる。かといってタスクバーアイコンを複数選択して並べるなんて操作はなんて隠しコマンド。ちなみにこの文章はこのあと「必要なウィンドウだけを並べることができたとしてもその並び順をコントロールすることは依然不可能だ」というように続いていた。使えねー。
Aero Snapのおかげでウィンドウを並べる操作はもはや隠れ機能ではなく使いやすくなりました。
globできない。どういうこと?
irb> Dir.glob("\\\\LS-WSGL420\\MediaLibrary\\*") => [] irb> Dir.entries("\\\\LS-WSGL420\\MediaLibrary") => [".", "..", "anime", "music"]
こういうことだった。
irb> Dir.entries("//LS-WSGL420/MediaLibrary/*") => ["//LS-WSGL420/MediaLibrary/anime", "//LS-WSGL420/MediaLibrary/music"]
DropHandlerから渡されたファイルパスは置換しなければいけない、と。
最終更新: 2009-09-06T20:33+0900
チキンなので日記に書きますよ。
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 のファイルだから。
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ファイルを書きかえてしまった。そしたらエクスプローラでジャンルやアルバム、アーティストなどの読み込みと書き込みができなくなってしまった。むむう。
サイドバーを左側に出していてもデスクトップアイコンが左上から左下に向かって追加・整列されるのは知っていた。サイドバーをどかさないとアイコンを動かせないですね。
サイドバーのことはおいといて、アイコンが左上から左下に向かって追加されるということで、関係のある一連のアイコンを選択するために Shiftを押しながら↓を押したらどうなったか。選択範囲が「Z」の字を書くように広がっていった。どこまでもやってくれるやつだ。エクスプローラはブラウザと並ぶ最重要アプリケーションだと思うんだけどな。
考えたら ListViewは悪くない。普通のフォルダでアイコンを並べたら「Z」を書くようにアイコンが配列されるもの。デスクトップアイコンを縦に配列してるのは誰でしょうね。
アクセスログから閲覧履歴を REMOTE_HOSTと REMOTE_ADDRと User-Agentで絞り込めそうだ。
最終更新: 2010-01-15T21:53+0900
『上流社会の習慣』の指針より
喫煙
「タバコは女性がいるときには吸ってもいけないし、吸って良いかと訊いてもいけない。葉巻を取りに行ったことに気づいた場合、女性はその人に席をはずして外で喫煙してもいいですよと声をかけるのが良い。ただし、街頭での喫煙は御法度で、ことに日中は論外。強盗をはじめとする恥ずべき行為は暗くなってからすることはあっても、明るいうちはしないものだからだ。また、女性がときどき来るような部屋では喫煙してはならない。だから、妻や姉妹のいる卑しからぬ男性は食後にそのまま食堂で喫煙することはない。さらに、花屋や遊歩道に女性のいる場所、あるいは女性の来る可能性のある公の場所では喫煙してはならない。列車の客室内は規則では禁煙だが、同じ客室に乗り合わせた全員の許可があれば喫煙してもよい。ただし、女性がいる場合には、たとえ許可してくれたとしても、吸ってはならない。街なかでパイプを吸うのもいけない。ホテルの喫茶室は一切喫煙は認められない。牧師がいるところでは、許可がなければ吸ってはいけないし、副牧師よりも上の聖職者には葉巻をすすめてはならない」
これは規則ではないし、一般人向けではないし、時間も場所も異なるところのことだし、口やかましい年寄りの小言にしか聞こえないけど、異なる価値観から自分の行為を見直してみる役には立つだろう。喫煙者が「禁煙ではない」というだけを根拠にして節度を守れないのであれば条例による規制も大いに結構。(実際に嫌な思いをさせられた経験があるわけではないが)
次のは単なるお気に入り。脱力しました。
ここは禁煙です。
JavaScriptのクロージャに関する記述が検索に引っかかって見つけたサイトだったと思う。定型の Webページ素材以外のことを書いていたのが 2000年以前にはすごく珍しかった。
最終更新: 2009-08-26T17:01+0900
要望を書いて次の日になんとかするセルフサービス > open_tab_right.diff
便利なメソッド( CTabWnd::ReorderTab )が既に用意されていたので楽でした。
結果はわりと希望通りの動作。
バックグラウンドでタブを開く機能はないから、連続してファイルを開いたときに新しいタブが右に延びるか左に延びるかということは考えていない。(01234...となるか 0...4321となるか。特別に考慮しなければ後者になる)
タブを閉じたときに次にアクティブになるタブは、多分直前にアクティブだったタブ。理想とする Firefox + TabsOpenRelativeだと、基本的に閉じたタブの右側のタブがアクティブになるものの、ある条件で元のタブ(閉じたタブの左側のタブ)がアクティブになる。タブを閉じたとき次にアクティブになるタブにこだわりはないので変更していない。
知らなかったけど svk diffの出力をリダイレクトしたファイルが CR/CRLF混合。diff自身のメッセージが CR区切りになってるからみたい。いったいどこの diffを使ってるんだ。
よくみると CRの部分は改行がダブってる。CRCRLFが CR+CRLFと解釈されてるみたい。CRLFの LFに誤って CRを補ってしまったのかも。(だれが?)
あとは、常に「前回開いていたファイルを復元する」機能が欲しいところ。タブの順序、カーソル位置、スクロール位置、検索文字列、アンドゥ記録(は無理か)などなどの復元も込みで。
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で調整できるからいいか、と半ばあきらめていたので嬉しい。ちょこちょこ暑い日があって、でも毎日暑いわけでもなくて、騒音と冷却のバランスとりが必要なんだよね。
Chip | Sensor | M/Bラベル | 回転数制御可否 |
---|---|---|---|
F71882F | Fan1/Pwm1 | CPUFAN1 | (PWM 1 modeを Manual set PWMにすることで)可 |
Fan2/Pwm2 | SYSFAN4 | 可 | |
Fan3/Pwm3 | SYSFAN2 | 可 | |
Fan4/Pwm4 | 存在せず | ||
F75387 | Fan1/Pwm1 | SYSFAN1 | 不可 |
Fan2/Pwm2 | SYSFAN3 | 不可 |
F75387というのが間違いの気がするんだよね。きちんと認識したら残る SYSFAN1/3の回転数制御もできるようにならないかな。
管理者権限がないと動かないと思ってショートカットの「管理者としてこのプログラムを実行する」にチェックを入れていた。それで再起動のたびにパスワードの入力を求められていた。
ためしにチェックを外して起動してみたらパスワードなしで起動するの。ファンの制御もできる。そういえば SpeedFanをインストールしたフォルダの speedfan*.cfgに Usersグループの書き込み権限を付け加えていたのだが、それが効いているのだろうか。HDD関連が検出からできていなくて全滅なこと以外これまで通り。
version 1.13からアップデートしたらツリーに Fintek F71882Fというノードが増えていた。
最終更新: 2009-09-02T23:17+0900
可聴域の変化を知るために書いておこう。15kHzまで聞こえた。16kHz、17kHzは見事にきれいさっぱり聞こえない。小さい頃は聞こえたのかなあ。スピーカーが出力していないという可能性は……ないない。あきらめなさい。
最終更新: 2009-09-02T23:17+0900
/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
おかしい。チェックが外れていると正規表現キーワードによる色分けも無効になる。
まずはこちら
242 //色指定でチェックが入ってなければ検索しなくてもよい …… 249 //正規表現では色指定のチェックを見る。 …… 255 //正規表現以外では、色指定チェックは見ない。 256 //例えば、半角数値は正規表現を使い、基本機能を使わないという指定もあり得るため
このコメントを読めばまさしく現在の状況が考慮されていることがわかる。
仕様がねじれている気もするが、正規表現キーワードに「正規表現キーワード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 で直りました。