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-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を補ってしまったのかも。(だれが?)
あとは、常に「前回開いていたファイルを復元する」機能が欲しいところ。タブの順序、カーソル位置、スクロール位置、検索文字列、アンドゥ記録(は無理か)などなどの復元も込みで。
最終更新: 2010-01-15T21:53+0900
『上流社会の習慣』の指針より
喫煙
「タバコは女性がいるときには吸ってもいけないし、吸って良いかと訊いてもいけない。葉巻を取りに行ったことに気づいた場合、女性はその人に席をはずして外で喫煙してもいいですよと声をかけるのが良い。ただし、街頭での喫煙は御法度で、ことに日中は論外。強盗をはじめとする恥ずべき行為は暗くなってからすることはあっても、明るいうちはしないものだからだ。また、女性がときどき来るような部屋では喫煙してはならない。だから、妻や姉妹のいる卑しからぬ男性は食後にそのまま食堂で喫煙することはない。さらに、花屋や遊歩道に女性のいる場所、あるいは女性の来る可能性のある公の場所では喫煙してはならない。列車の客室内は規則では禁煙だが、同じ客室に乗り合わせた全員の許可があれば喫煙してもよい。ただし、女性がいる場合には、たとえ許可してくれたとしても、吸ってはならない。街なかでパイプを吸うのもいけない。ホテルの喫茶室は一切喫煙は認められない。牧師がいるところでは、許可がなければ吸ってはいけないし、副牧師よりも上の聖職者には葉巻をすすめてはならない」
これは規則ではないし、一般人向けではないし、時間も場所も異なるところのことだし、口やかましい年寄りの小言にしか聞こえないけど、異なる価値観から自分の行為を見直してみる役には立つだろう。喫煙者が「禁煙ではない」というだけを根拠にして節度を守れないのであれば条例による規制も大いに結構。(実際に嫌な思いをさせられた経験があるわけではないが)
次のは単なるお気に入り。脱力しました。
ここは禁煙です。
JavaScriptのクロージャに関する記述が検索に引っかかって見つけたサイトだったと思う。定型の Webページ素材以外のことを書いていたのが 2000年以前にはすごく珍しかった。
サイドバーを左側に出していてもデスクトップアイコンが左上から左下に向かって追加・整列されるのは知っていた。サイドバーをどかさないとアイコンを動かせないですね。
サイドバーのことはおいといて、アイコンが左上から左下に向かって追加されるということで、関係のある一連のアイコンを選択するために Shiftを押しながら↓を押したらどうなったか。選択範囲が「Z」の字を書くように広がっていった。どこまでもやってくれるやつだ。エクスプローラはブラウザと並ぶ最重要アプリケーションだと思うんだけどな。
考えたら ListViewは悪くない。普通のフォルダでアイコンを並べたら「Z」を書くようにアイコンが配列されるもの。デスクトップアイコンを縦に配列してるのは誰でしょうね。
アクセスログから閲覧履歴を REMOTE_HOSTと REMOTE_ADDRと User-Agentで絞り込めそうだ。
最終更新: 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ファイルを書きかえてしまった。そしたらエクスプローラでジャンルやアルバム、アーティストなどの読み込みと書き込みができなくなってしまった。むむう。
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から渡されたファイルパスは置換しなければいけない、と。
最終更新: 2010-02-05T02:00+0900
デスクトップを、並べたいウィンドウだけが開いた状態にし、タスクバーを右クリックしたショートカットメニューから「ウィンドウを左右に並べて表示」を実行すればいい。
レイモンド チェンの『Windowsプログラミングの極意』だっただろうか。そんなの知らねーしわかんねーよ、と読んで思ったのは。だいたいこんな内容。
Ctrlを押しながらタスクバーアイコンをいくつかクリックして選択状態にする。そのうちの一つを右クリックして「重ねて表示」「ウィンドウを上下に並べて表示」「ウィンドウを左右に並べて表示」を選ぶと選択したウィンドウだけを並べて表示できる。
最初の引用の通りにデスクトップを並べたいウィンドウだけにするのは実際は不可能に近いし、不必要なウィンドウまで並べると、ウィンドウサイズが細くなりすぎる。かといってタスクバーアイコンを複数選択して並べるなんて操作はなんて隠しコマンド。ちなみにこの文章はこのあと「必要なウィンドウだけを並べることができたとしてもその並び順をコントロールすることは依然不可能だ」というように続いていた。使えねー。
Aero Snapのおかげでウィンドウを並べる操作はもはや隠れ機能ではなく使いやすくなりました。
OSSに関しましては、当初御理解の通り、ソースコードが公開されてしまうことから、秘密キーを含む開発者様のキーを埋め込んだまま公開されることは、ライセンス上の問題が発生します。
よって、OSSのユーザ様それぞれにAPIのAccessKeyIDおよび秘密キーを利用開始時に入力いただくという方法を強くお勧めいたします。
だーよーねー。賢い迂回路が用意されてるのかと期待してたのに……。これで特定のサーバーに代理でリクエストしてもらう方法まで禁止されたら Amazonボイコットだべ(個人的に)。チャンスだ。bk1!
コンパイル型言語を使っていても stringsみたいなの、あるいはサクラエディタのようにヌル文字を扱えて正規表現が使えるエディタで「\b[\w\d+/]{40}\b」(文字種は適当です)を検索してみるとかで簡単に秘密キーを抽出できるのでは、という心配は不要なのだろうか。こちらにはパスワードを保護するのと同等の策を講じるような動機がないもんね(アカウントの停止はあるかも)。秘密キーの「秘密」なんてのはとっとと有名無実化すればいいよ。
PROXY設置は構わないんだって。
>Amazon API認証のPROXYを書いたよ(AmazonのAPI認証導入はOSSに対する挑戦だよなぁ(4)) - ただのにっき(2009-06-19)
なんだかなあ。何がしたいんだろう。AccessKeyIdとオプションパラメータの AssociateTagで何が不足だったんだ。他のサービスと統一したかったのか?
もちろん上で挙げた方法は文字列を分割するだとかシーザー暗号を使うだとかで対抗できるけれど、単にバイナリファイルであるというだけで秘密キーを秘密にしていたと言い訳できるんじゃないかと。そして自発的に強固な保護策を講じる動機はないよ。
Amazon Web Services Developer Community : Docs: Product Advertising API (Version 2009-03-31)から引用。
It is important to keep it(Your Secret Access Key) confidential to protect your account.
To provide proof that you truly are the sender of the request, you must also include a digital signature.
AccessKeyID(AWSAccessKeyId/SubscriptionId/DeveloperToken)より確かな識別情報が欲しいだけなの? Proxyの設置が許されてることから、より広範な、例えばブログの書き手個々に SecretAccessKeyを取得してもらって識別する意図はないんだろうし。(だったら Proxyを設置する以外には、そういう対応を利用者にとってもらわなければならないスクリプトはとんだとばっちりだ)
あるいは暗号化? SecretAccessKeyが適切に保護されなければそれも無意味だよ。"YOUR SECRET ACCESS KEY GOES HERE" なサンプルコードばっかりなんだけど。これはない。他に方法がある。
どちらにしろ、手間ひまかけて AccessKeyIDに毛を生やす結果になるだけの気がするから、悪態のひとつもつきたくなるわけ。
うろついてるうちに見つけた(順序が間違ってる!) > Amazon.com Product Advertising API License Agreement
(読んでるうちに) SecretAccessKeyが使い捨て可能なことを思い出した。にょきにょき再生してくるしぶとい毛なのかも。手間をかける価値は……あるかなあ?
期限が来て画像が表示できなくなったら isbn* なメソッドを Amazon以外に置き換えてやろうかしら(手間は一緒だし)。
よくみかける G-Toolsは http://g-tools.com/ でリンクを作成してるのね。つまり今回の変更は利用者には影響がない。はてなダイアリーでも影響がない。tDiary.Netもたぶんない。自前のサーバーでサービスを提供しているところはみんなそう。自分でツールをインストールするような人間は自分で SecretAccessKeyを取得してソースに埋め込むこともできるでしょ、とでも思われているのか数が少なくて無視されているのか。たしかにできるとは思う。やりたくないけど。リンクを作成するのにアマゾンのアカウントをとらないといけないなんて、先に挙げたサービスを利用するのと比べて一段ハードルが高い。代替案の Amazonの手前に(Proxy)サーバーを一台はさむ方は無駄と脆弱性を理由に却下したい。
Amazon自身がリクエストの代行を行うサーバーを設置したらいいんじゃないの。リクエストの Identificationなんてなくなるけど、つきつめればそういう結果になる道を容認したのは自分なんだし。
なんで自分の首を絞めるようなこと(代理リクエストを許可したことを責めているように読めること)まで書いているのか自分でも不思議だったんだけど要は「無駄無駄無駄無駄ッ!」ということなんだろう。Authenticationの導入自体が既に疑問だけど、どうせ導入するなら無駄にならないように手を尽くせ、とこう言いたいらしい。
縦書き編集機能とか実装できるほどのスキルがあればいいんだけどねえ。
2chに化けるという書き込みがあって試してみたら表示が消しゴムで消すように欠ける。描画漏れだと思ったんだけど、後で調べたらそもそもメッセージを保存していなくて再描画するつもりがない。だったら改善す"べき"とまでは思えないんだよね。(タイポのようなものの指摘はできても、自分の考えを押しつけることまではできないし)
ステータスバーが非表示のときにメニューバー右端に表示されるメッセージの、再描画に対応。一時メッセージだとしてもメッセージが半欠けの状態で表示されてたらバグととられても仕方ないから。> fix_menubarmessage.diff
この修正中にこんな処理が行われていたことを知ったのだけど……
// 編集ウィンドウ切替中(タブまとめ時)はタイトルバーのアクティブ/非アクティブ状態をできるだけ変更しないように(1) // 2007.04.03 ryoji // 前面にいるのが編集ウィンドウならアクティブ状態を保持する
タブ切り替え時に二つのサクラエディタウィンドウが重なる瞬間があって、Aero Glass効果が有効だとこの時にタイトルバーの透明度が下がる(色が濃くなる)。結果、対策もむなしくちらついて見える。これに対応した対処法はあるかな?
行・列番号の表示よりも右の部分にゴミが表示されます。
Vistaしかないので制御文字が半角空白に置き換えられたときに区別できるように、メッセージの余白を「 」ではなく「*」で埋めて表示してみたけれど表示は変わらない。この、メッセージの余白を埋める文字がすべてゴミになっているのだろうか。2chの
ステータスバーを消すとメニューバーの右端が化けちゃうんだけどどうすれば
というのを読んで俺は表示が欠けることを指して化けると言っているのかと思ったんだけど(繰り返すけど Vistaだとゴミは見えないので)、この書き込み主は Windows2000でも使っていて半角の「・」のことを指して化けると言っている可能性もあるかも(俺がバグを仕込んだのではないと思いたい)。
タブ切り替え時のちらつき防止はノーアイディア(あったら書いてる)。せっかく見映えの細かいところにまで気が配られているのに自分の環境で働いていないってのは悲しいから、Aero Glassにも対応できたらいいよね。
_tcsncpyが、コピー元が短いときにコピー先の末尾に埋める '\0' が「・」に変換されるんだ。Cの林立する文字列操作関数が大嫌いでいつも(といって片手で数えられるほど)は std::stringに逃げるんだよね。元々のソースはちゃんとやってたのに、俺がテケトーなことをしたわけだ。確保した領域の一つ先に書き込むとか言い訳できないミスもしてるし……。
今度は右端に埋め文字(「 」の代わりの「*」)が見えた > fix_menubarmessage(rev2).diff
さらなるチョンボ(泥沼の様相を呈してきました)。さっきの改訂でメッセージが空になることがなくなったので、表示したメッセージのクリアが行われないはずだ。
もう最後にしたい > fix_menubarmessage(rev3).diff
事実と一致するかはおいておいて、Amazonが「デジモノに埋もれる日々」の記事レベルの見解を示していてくれれば抵抗もすくなかったのに。すごく納得できる内容。
既に書かれているけど OpenProxyの注意点は利用規約にも書かれている 1 call per secondの制限を守れるかどうかと、アカウントの停止の危険性だね。Proxy利用者で秘密キーを持ってる人がキーを持ち寄って上限を N call per secondに引き上 げたら……とか考えたけど、それじゃ全然「秘密」キーじゃないわな。
<追記@2009-07-08> DNSラウンドロビンってなんだ、って調べたんじゃなかったか。個人個人がサーバーを立てる、それらを同じ名前で利用する。これで秘密キーとサーバーリソースの両方を持ち寄れる。 </追記>
バイナリファイルでの扱いに関する Amazonの見解。
- コンパイル型言語で秘密キーを暗号化した上で実行用バイナリ内に埋め込んで、実行用バイナリを公開する。ユーザーは自身のPCで実行用バイナリを実行する。
- 実行用バイナリをバイナリエディタで覗いた位では秘密キーは解読できないが、実行用バイナリコードをリバースエンジニアリングされれば秘密キーを得ることも可能な状態。
のいずれのケースについても、理想的な方法とは言えませんが、条件付きで利用可能であるという見解となります。
単純な埋め込みは NG。リバースエンジニアリングにより秘密キーが知られうる場合は、理想的ではないが可。
Amazonは PAAPIのどういう利用を想定しているんだろ。サーバー型のサービスとして? 個人が個人の責任で呼び出すものとして? 俺はもう APIを利用してくれるなという Amazonからのメッセージだと受け取っている。(情報が少ないから曲解するんだよ)
最終更新: 2009-10-28T01:40+0900
再帰っていっていいのかな?鬼車は明らかに再帰だったけど。
.NETの正規表現を利用した経験はありません(念のため)。想像です。
.NETの再帰に関係した部分のドキュメントがあまりにわかりにくかったので整理。(実はわかりにくさの半分は日本語のせいだった。英語の方のドキュメントを読みましょう)
キャプチャ内容を読み出す従来の記法が \1, \2。名前付きキャプチャの場合は \k<name1>, \k'name1'など(実装ごとに異なる)。キャプチャグループに量指定子がくっついている場合、これらで読み出せるのは最後のキャプチャ内容だけ。だけどキャプチャの記憶領域はキャプチャグループごとに一つではなくスタックになっていて、その一番上の内容を読み出していると考える(.NETだか Javaだかではプログラムからこのスタックにアクセスできたはず)。
まず、これは name2という名前付きキャプチャグループ。と同時に、name1のキャプチャスタックを POPする。name2を省略して name1を POPするだけも可能。MSDNの日本語ドキュメントを名前の部分だけこちらに合うように書きかえたのが次。
既に定義されていたグループ name1 の定義を削除し、既に定義されていた name1 グループと現在のグループの間隔をグループ name2 に格納します。
実際に name2のキャプチャ内容がどういうものになるのか(直前の name1のキャプチャ内容、name2の……にマッチした部分、その間、がそれぞれ含まれるのかどうか)は読み取れないけど、直前の name1キャプチャをなかったことにし、name1のキャプチャ部分から ……までを name2に保存するという。(覚え方: name2は直前の name1から……まで)
当然のこと、name1のキャプチャスタックが空のとき name2のキャプチャは ……のマッチ正否に関わらず失敗する。
name1のキャプチャに成功しているかどうかで適用するパターンを変化させる条件分岐 (?(name1)truepattern|falsepattern) と、必ず失敗するパターン (?!) の組み合わせにより、name1のキャプチャスタックが空でないと必ず失敗する。逆に name1のキャプチャスタックが空のときは(省略された空の falsepatternが何にでもマッチして)必ず成功する(はず)。
(?(name1)(?!)) が成功する(=name1のキャプチャスタックが空である)とは、name1に含まれるパターンが開きかっこ、name2のパターンが閉じかっこにマッチし、その間のパターンが開き閉じどちらのかっこにもマッチしないとき、開きかっこと閉じかっこがバランスしている、ということ(MSDNの例がこれ)。
なんてこったい。
// Firefox 3.0.11と 3.5RC3のロケーションバーでの実行結果。 javascript:alert(/(?!)/.test("")) //=> true (falseであってほしい) javascript:alert(/(?=)/.test("")) //=> false (trueであってほしい) javascript:alert(/(?:)/.test("")) //=>
// Windows Vistaでの JScript(WSH)実行結果。 WScript.Echo(""+ /(?!)/.test("")) //=> false (期待通り) WScript.Echo(""+ /(?=)/.test("")) //=> true (期待通り) WScript.Echo(""+ /(?:)/.test("")) //=> true (期待通り)
必ず失敗するパターンを試してみたら Firefoxで真逆の結果が出てしまった。Firefoxが間違っててくれないと困るよ。(ブラウザにより逆の結果がでていることがもう困るけど)
(参考)間違いなく失敗する* > 詳説正規表現第3版 - Google ブック検索, 詳説正規表現第3版 - Google ブック検索
Internet Explorer 8.0.6001.18783 64-bit Edition、Safari 4.0.530.17、Opera 9.64、Google Chrome 2.0.172.33 でもみんな Firefoxとは逆の結果になる。Firefoxだけが 3.0から 3.5RC3になっても違っているのは悪夢だ。
Firefoxに理がないことは次の例からも判断できないか。空のパターンを空と空の選択パターンにするだけで結果がひっくり返ってる。
// Firefox 3.0.11のロケーションバーでの実行結果。 javascript:alert(/(?!)/.test("")) //=> true (下と同じであるべき) javascript:alert(/(?!|)/.test("")) //=> false (期待通り) javascript:alert(/(?=)/.test("")) //=> false (下と同じであるべき) javascript:alert(/(?=|)/.test("")) //=> true (期待通り) javascript:alert(/(?:)/.test("")) //=> true (期待通り) javascript:alert(/(?:|)/.test("")) //=> true (期待通り)
* 念のため断っておくと、書籍の文脈では、この断定は Perlと .NETの正規表現に(ちゃんと)限られている。
♭ ryojiパッチ(fix_menubarmessage.diff)を適用したものだと、 行・列番号の表示よりも右の部分にゴミが..