2002年09月11日(Wed) 霧〜
● シャワーのお湯が出ない
引越した当初から不調だったシャワーのお湯がついに出なくなりました。暖房が入って圧力が下ったのだろう。最初は蛇口から出るお湯で体を洗っていたのだけれど*1、耐えきれなくなってハダカのまま修理することに。
とりあえず分解できるところから分解してみると、シャワーヘッドにつながるホースまではお湯がじゃぶじゃぶと出てくることがわかりました。シャワーヘッドの入口にはフィルターが付いていて、小さい石がいくつかつまっている。古くなった歯ブラシでフィルターを掃除して組み立てると普通にお湯が出るようになりました。きっとカルキ成分がフィルターにつまっていたのだろう。
シャワーのお湯の出が悪い方はお試しあれ〜。
*1 これがホントのジャグチーバス…はぁ
● 霧の中をサイクリング
先が見えないのは疲れるのです。いつもより本を二冊多くしょって、もうダメかも〜と必死に漕いで27分。へろへろでござる。
● rdtoolの使い方
rd2 -r rd/rd2html-lib.rb --with-css=hoge.css --html-charset=EUC-JP --html-lang=ja guhe.rd > guhe.html
ライブラリで使えるオプションは、
rd2 -r rd/rd2html-lib.rb --help
でわかるのだそうです。なるほど〜ためになります。anego日記より。 うまくいったらそれをナントカして.rd2rcに書くんだろうな。
そろそろモ活動を再開したいな〜
● またWindows地獄だ
ソフトの検証にクリーンなNT4.0の環境が必要になってインストールをしている。サービスパックの入ったCD-ROMをWindows自身のインストールディスクと勘違いしてブートしないなーとかいう間違いからはじまって、つぎつぎサービスパックを適用中です。Tweak UIは入れないほうがいいので使いづらいし、一回ずつリブートして時間のかかることといったら。あーあ。
2003年09月11日(Thu) さむいよ
● コロンビア事故最終報告書 非公式日本版 - AN INTRODUCTION TO NASA
柏井勇魚さんによる訳。すごい。速い。読みやすい。スタイルシートを切ると原文が読めるというのもすごいアイディアだなあ、と思います。
僕は、NASAのAmes Research Centerは「エームズ」と書くのだとずーっと思ってたのだけれど、柏井さんの訳では「エイムズ」となっていた。おや?と思って、Google先生に訊いてみると、「エイムズ」の方が多いのですね。ここでは天文関係の仕事もやられているようで、一度、学会に出たついでに見学に行ったことがあります。コネがあったわけじゃないのでビジターセンター止まりだったけど、持ち物の確認とか、軍隊っぽいなーと思った記憶があります。
● 再びkoshian設定中
Windows98のマシンからハードディスク抜きだしてひっつけたらWindows2000から見えないでやんの。vfatはだめなんだっけ?バックアップの時期でもあるし、CD-Rにばしばし焼いて必要なファイルだけ移そう。
ビデオカードInterl(R) 82865GのRAMは、Windowsのドライバによると、502MB。
ディスプレイは、CTXによれば、横30-110KHz、縦50-160Hz。
● AutoCADLT98はWindows2000の一般ユーザー権限では動かない→動いた
どのファイルに書いてるのだ?
確かめるのはAdminで入っておいて、runas /user:ユーザー名 コマンド。プロンプトでcdするときはDOS名を想像するのを忘れない。PROGRA~1だよ。
一度上位のディレクトリのパーミションをいじってしまうと、元に戻すのは至難の技のようだ。一度アンインストールしちゃった。Google先生に訊いてみるとそのものズバリの記述が。
C:\Local\AutoCAD LT 98にインストールしたら、C:\LocalをUSERでFull controlにして、通常ユーザーの起動で「This version of AutoCAD LT was not installed properly. You should reinstall AutoCAD LT immediately.」というエラーが出るので、regedt32を起動して、HKEY_LOCAL_MACHINE\Software\AutoDesk\をハイライトして、Security->Advancedで、USERSをハイライト。Advancedをクリックして現れたダイアログからUsers/Readをダブルクリックする。そこで見えるウインドウで、Set Value、Create Subkey、Deleteをチェック。ふう。
次は、「FATAL ERROR: Problem with setting up current profile.」というエラーが出ました。Google先生は解決方法を知らないみたいだ。C:\LocalはEveryone Fullcontrolで作られている。とりあえず、上述のサイトにあったレジストリの編集を続けてみよう:HKEY_CLASSES_ROOT\CLSID\{5E4405B0-5374-11CE-8E71-0020AF04B1D7}とHKEY_CLASSES_ROOT\AutoCADLT.Drawing.4でUsers/ReadのSet Value、Create Subkey、Deleteをチェック…だめじゃん。と思ったら、runasではなくて、ちゃんとログオンしなおして起動できました。runasなんてウンコ。
次はEveryone fullcontrolじゃないところでたしかめたい。もう一度Program Files以下にインストールしなおしてみよう。AutoCAD LT 98というフォルダが残ってると、パーミションがそれにひきづられうようなので消すのを忘れない。インストールしたら上記のようにレジストリを編集して、aclt5.cfgをUSERSがModify、Writeできるようにしておいてみる。おっけー。やっとうまくできたみたいだ。これで一般ユーザーがAutoCADを使えるはず。
2005年09月11日(Sun) 寝すぎー
● いかん。出張に間に合いません…。
● [tDiary] ワンタイムトークンづくりをまた挫折する
煮詰りつづけて幾星霜。気分転換にRubyをいじろうとしたのですが…。
ツッコミフォームにトークンをしこんでおいて、それが正当なものかどうかをツッコまれた時に確かめると良いのではないかと思う。以前やりかけて挫折していた実装をまたいじってみる。
まずツッコミフォームを表示する際に適当なトークンを作ってサーバー側で作ったことを覚えておく。ツッコミがあった場合には一緒に送られてきたトークンを確認して自分で作ったものか、フォームを表示したのと同じクライアントからのものか、古すぎるものではないか、既に使われたトークンではないかを確認してからツッコミを受け付ける。
問題はサーバー側で作ったトークンを覚えておく、また、使われたトークンは忘れるというところで、PStoreを使うにせよファイルシステムの機能を使うにせよプラグインからファイル操作をしなきゃいけないような気がする。これじゃセキュアモードの日記では動かないのですよ。
うーん。どうしようか。特に使われたトークンを忘れる、という動作はプラグインが読みこまれた時にやるわけにはいかない。
> isana [クライアントの情報やツッコミフォームの生成時間などを暗号化したものをトークンにするんじゃだめですか?]
> isana [あ、だめか「ワンタイム」にならないや。失礼しました。]
> zunda [次善の策はそれかなーと思ってたのですが、一緒にツッコミの数を暗号化すれば良いことに今気づきました。これだとツッコミを..]
> zunda [そしてこのホストではrequire 'openssl'できないことに気づく。うーん。入れてもらうかな…。]
> zunda [そしてopensslをお願いしてしまってから、片方向ハッシュ関数でいいことに気づいたのでした。 クライアントの情報と..]
2006年09月11日(Mon) ねむねむ。
● 今日のキーワード
掘り起こし共鳴現象。あとで調べる。
● 論文のPDFから図を切り出すのに使っていたふるーいIllustratorがついにインストールできなくなっていた。どーしよー。
● ふつうのすごレンスマニュアル。ごめんなさいごめんなさい。それはそうと、www.ruby-lang.orgがかっこよくなった。お疲れさまでした。でも「A Programmer's Best Friend」ってなんだか違和感がある。「あるプログラマの最高の友だち」?いいのかな。
2007年09月11日(Tue) 午後4時。まだ午前中のシゴトをしてますよ
● [memo] 子どものパスポートを申請するのは遅らせた方がよい
ずんこの最初のパスポートがそろそろ切れるのでいろいろ画策している。パスポートはホノルルまで行って申請しないといけないし、その後、滞在許可が切れる前に滞在許可を延長してもらわないといけない。
で、気づいた。子どもが産まれた後、パスポートを申請するのはなるべく遅らせた方が良い。20歳未満の人は5年有効なパスポートしかもらえない (mofa.go.jp) ので、ずっと海外に居る場合は最低4回、5年有効なパスポートを使うことになる。で、滞在許可の延長のための時間的余裕が要るので、有効期限が切れる何ヶ月か前に次のパスポートを申請することになる。その場合、新しいパスポートの有効期限は、パスポートが発給された日になってしまう (emb-japan.go.jp)。で、20歳の誕生日を目の前にして、もう一度5年有効なパスポートを申請しなきゃいけなくなってしまいそうだ。
一度の更新で3ヶ月ずつ有効期限の日付が早まるとすれば、1歳までパスポート無しでがんばれば5年有効なパスポートは4冊で済むのかな。
…いや、まあ、我が家がいつまでここに居られるのかはさっぱりわからないのですが。
(追記) いや、パスポート無しでがんばれるのは、パスポートが無くても不法滞在にならない国だけですね。そう単純ではないな。
2008年09月11日(Thu) 早寝早起き
● Heap sortのべんきょー、と思ったのだけど、いやー理解できてないわ。
● Ubuntu 8.04のpostfixが更新
postfix_2.5.1-2ubuntu1.2_i386.debになった。Ubuntu 6.06では更新無し。
CRON-APTを通して必要ならmain.cfを編集しろと言われているが、とりあえずは様子見。
● 歯の神経を抜く
この前の週末ごろから口の右下が痛くなった。昨日歯医者さんに電話をかけたら、これまでの記録からみてきっと神経を抜かなくちゃいけないね、とのこと。右下の奥から3本目。たぶん日本に居た時に処置してもらった詰め物の底から菌が入っちゃったのだろう。幸運にも翌日(今日)予約が取れたので休暇を取った。
やれやれ、と、昨日家に帰ってみると痛みがぜんぜん無くなっていた。これはもしかして直ったか?と思ったのだけれど、さっき歯医者さんに行ったら神経が死んだだけ、とのこと。残念。確かに何をされてもなんにも感じなかったもんね。
3本ある神経をごりごりけずってくれていたら、おや、と言いつつ4本目を発見。33%増し(当事者比)の時間をかけて処置をしてくれました。
職場に戻ってきても麻酔が効いてて水が飲みにくいったら。こういう時は下から噴き出す水飲み場はいいですね。いくらこぼしても怪しまれない。
2009年09月11日(Fri) 秋刀魚の刺身
● 仙台泊
屋上に露天風呂があるというホテルにチェックインしてから飲み屋さん街をうろうろ。ここは良さそうだと思って入った店はカウンターばかりで、すでにずらーっとお客さんが座ってました。おかみさんに勧められるままに隣りの居酒屋さんに。調理師のおにいさんと話をしながらめいっぱい飲んで食べましたよ。秋刀魚の刺身が絶品でした。じゅる。
宿に帰ってサウナに入ったり水風呂に入ったりした後はマッサージをお願いしました。気持ちよかった。
2011年09月11日(Sun) 良い天気でした
● ある日C言語談義がなんだかすっきりしないので始めてしまったGDD 2011 DevQuiz。いっやー、はまりました。非常に幸せな時間を過ごさせていただきました。出題してくださったみなさん、twitterで進捗をつぶやいてくださったみなさん、どうもありがとう。突破できたとしても横浜は遠いんだけどね。ひとり反省会をしてみたいと思います。
● [DevQuiz2011] ウォームアップクイズ
とりあえず手をつけてみたのはウォームアップクイズ。実はけっこう難しかった。始めたのは9月1日、全部回答できたのは2日でした。
問題に挙げられていたのは、Google Web Font API、maps API、iGoogle、Chrome、gmail。Googleの製品を知ってもらおうという意図は見えるにせよ、今まで避けて通ってきた現代風APIに触ってみる良い機会にはなりました。
gmail。Windowsのクリップボードはどうして余計なものまでペーストしてくれるのかと悩んでいた時に、Ctrl-Shift-Vでプレインテキストのみをペーストしてくれるというありがたい情報。あ、でも、GMailのwwwインターフェースだけでの話でした。残念。
ええ、iGoogleについての回答は結局ダッシュボードまで行ってみましたとも。
● [DevQuiz2011] Web Game
Chrome上に表示される神経衰弱を、Chrome拡張(Javascript)で解く、という問題。 Chrome拡張を使わなず手でカードをクリックしていっても良いので、 子どもたちの格好の遊び相手になってました。
最終的は下記のようなコードで解きました。
カードをめくりつつ色を覚えて知ってる色があれば戻ってクリックします。 原理的にはひととおりめくれば解けてるはずなのに、 手元(x86_64のMomonga Linux 7、Chromium 12.0.742.105 (O))ではそうはならない。 よく見てみると、クリックしたあとに背景色に戻ってしまうカードがありました。 決まった問題の決まったカードなのですが、原因を探すのは大変だったので、 下記のように、 対症療法で済ましちゃいました。
えーと。 同じ色を思いだしてめくったはずの2枚目のカードの色が めくった色になっていた時だけ、 次のカードに進む。
● [DevQuiz2011] Go言語で画像が何色使っているかを返す関数を実装する
好きだなあと思いつつなかなか触れないでいたGo言語。これは楽しみだわい、と思ったのですが、 PNGを読むライブラリ関数から返してくれる色を配列に入れると、 型が違っていて比較できなくなるという残念な結果に。 この辺をちゃんと理解して使いこなせるようになると楽しい言語なんだろうけどなあ。 下記の回答では、 色を覚えておく構造体をつくって愚直にRGBを比較しちゃっています。
● [DevQuiz2011] サービスとして起動されるAndroidアプリと通信する
AIDLが与えられるのでサービスと通信して答えをもらう。
入門書を見ながらアプリを作りました。 これは、まあ、誰が回答しても似たようなコードになるんだろうな。 レイアウトはもうデフォルトのまんまで。
● [DevQuiz2011] Google Apps Script
え?スプレッドシート?日頃苦しめられてるのにまた?パス。
ほんとは日頃苦しめられてるからこそ、自動化したいところなんだけどね。もとがExcelだしね。…というわけで上のスクリーンショットにもあるように回答すらしてませんデスヨ。
● [DevQuiz2011] 一人ゲーム
数列を操作してゴールにたどりつくまでの最小手数を回答するというもの。
スライドパズルに行きづまっていた時に似たような手法(全数探索)であんまりにもすんなり解けてしまったものでした。 Ruby万歳♪
Gameクラスで問題を実装して、Solverクラスがそれを解いてます。 next_stepメソッドで与えられた問題をコピーして、 可能な二種類の操作をそれぞれやってみて、 操作できた(操作の結果数列に変化があった)なら、 次の操作に進む(next_stepメソッドを再帰呼び出しする)というもの。 問題が解けた時点で、手数を記録して一気に呼び出し元に戻ります。
● [DevQuiz2011] スライドパズル
勉強不足を思い知った問題。 盤面の様子を記録しながら深さ優先探索でパネル12枚程度まで 570問をなんとかかんとか解きました。 締め切り後の回答晒しでは、 幅優先検索で回答を作った方々がたくさん回答を得ていたみたい。 場合の数が爆発するなか、最小の手数を求めるには、もちろん幅優先検索の方が良いわけで、 締め切り後の回答晒しでは、 幅優先検索で 回答を作った方々がたくさん回答を得ていたみたい。 場合の数が爆発するなか、最小の手数を求めるには、 もちろん幅優先検索の方が良いわけで、 A*検索? と一緒に勉強して実装してみたいと思いました。
スライドパズルは1手ごとに空白を4方向に動かす可能性があるので、 全数探索すると訪問するべき場合の数は手数をnとして だいたい4nとなります。 さらに盤面の状態を記録するとすると、パネルの数をnとしてn!の状態が あらわれる。 ポイントはいかにこれを回避するか、 というところにあのだろうと思って始めたコーディング。
最初は、ヒューリスティックに、1から順番にパネルを詰めていこうとしたのですが、 6問解いたところでコードの複雑さに挫折しました。 その後、全数検索に切りかえて、少ないながらも手持ちの物量を使う方向に。 盤面の状態を記録しつつ再帰的に深さ優先探索。 盤面の記録を線形リストからハッシュテーブルに切り替えて、 速さに感動したりもしました。 この時解けたのは98問。 手数のかからない問題も深く検索しちゃうのは手数リミットを 順次変えていけばいいんだろうな、などと思っていたところに、 zakiさんから 「IDDFS」というありがたいキーワードをいただきました。 なるほどそう呼ぶのか! 計算機科学をちゃんと勉強しておくと、 ぼんやり思いついた概念にちゃんと名前を付けられるんですよね。
というわけで最初浅い探索から始めるコードにして何日か走らせた結果、 570問。 最初はファイルをDropboxに管理してもらいながら作業してたのですが、 簡単にdiffを取る方法を見つけられなくて、 このあたりからさらにgit initをするようになりました。 最初からやっておけばよかった。
まだまだ遅いなあ、というところで再帰していたコードをどうにかこうにか開いて、 本質的ではなかった移動経路の記録もやめ、すべて盤面に記録するようにしたのが 最終的に回答をつくったコードでした。
game_sというオブジェクにスタート、ゴール、訪れた盤面の管理をしてもらいつつ、 可能な手を試していってもらいます。 訪れられる盤面がなくなるまでこれを繰り返す。 訪れた盤面の管理は ハッシュテーブルにやってもらいます。 同じハッシュになった盤面は線形リストにどんどんぶらさがります。 このコードはなかなか解を見つけられない場合は LiunxのOOM Killerに殺してもらって諦めることになってしまっていました。 スワップを無効にしておくのが重要です。 たぶんメモリをどんどん食べてたのはこの部分。 ハッシュ関数自体は悪いものではなかったと思っています[要検証]。 それぞれの移動が有効かどうかは、ハッシュテーブルに記録されていくことになる board_sというオブジェクトに 判断してもらっていました。 有効なら次に進む、 無効なら戻る。 進んだら、 ゴールに着いたか確かめ、 着いてなければ 残りの手数え着けるか確かめ、 着けそうなら、また次の手を試す。 このコード自体は1問につき1プロセスとして走り、 5000問の問題から解くものを決めれプロセスを起動する仕事は Rubyのスクリプトにお願いしました。 同時に起動するプロセス数は昔作った ruby-nforkというライブラリで管理しつつ、 Drubyで同時起動数を変化させたり最大手数を変化させたりできます。
このコードで問題を解きはじめたのは9月10日9:44HSTごろ、 締め切りの前に最後に570個目の回答が得られたのが、9月11日12:52HSTでした。 Xeon 3GHzの4つのコア、4GBほどの物理メモリで、 パネル数の少ない問題から、1時間あたり20問ほどの回答が得られたことになりますね。
あ、この記事で参照されているコードには著作権表示がありません。 再利用される際は、このページに掲載されているコードと同じく、 下記の表示とライセンスの適用をお願いします。
Copyright 2011 zunda <zunda at freeshell.org>
Permission is granted for use, copying, modification, distribution, and distribution of modified versions of this work as long as the above copyright notice is included.
● [DevQuiz2011] このページに掲載されているコードの利用許諾
(追記) 需要があるかどうかは別として、コードのためにも、利用許諾をはっきりさせました。
● 最後になりましたが、いろいろなコードや技術と戯れる幸せな数日間でした。問題を提供してくださったGoogleの皆さん、twitterで悩みと楽しみを共有してくれたみなさん、どうもありがとう!これからもがんばるる!
> smbd [硬水なヨーロッパだから起こる現象だと思われ < シャワーに石 日本じゃ起こりにくいのでは?]
> yamk [NT4 うちもこないだ新規インストールしてるけど、最低20回はリブートかかりますね‥‥。]
> ずんだあん [いいことを発見したと思ったのになぁ… > シャワー 半日ちょっとつきあって、やっと本来のシゴトに近づいてきました。ふ..]