今日はお茶も忘れた上に、おやつのプチトマトも忘れました。まぁ、今日は早めに帰って昨日買った豚肉といつ買ったかわからないピーマンと、さらに昔に買ったキャベツを炒めることにしましょう。そうしないと傷んでしまう。
日曜日に行ったIKEAは、ちょっとのぞいてみるだけのつもりだったのに、順路がうねうねと曲がりくねっていて完全に迷ってしまい、結局最初から最後まで歩く羽目になりました。
天井が高い…というか上の方のものは見えないし取れないしであまり意味がない…。
よくよく考えてみると僕は、お風呂から出てくるとトイレの床がびしょ濡れになってしまうのでバスマットを買…わずに古新聞をひいてそれで満足しているタイプなのでIKEAに行っても買うものがありませんでした。まる。
FreeMindから出力したデータを高橋メソッドマシーンを使ってFLASHに変換することができる形式に変換するRubyスクリプト…という話だったと思ったのですがググっても詳しい情報が見つかりません。

GRINEditはInteractiveなgraphvizを目指します。でもソフトウェアはニーズが大事、というわけで本体の作り込みや整形機能の強化の前に、現在実装できている物理演算ライブラリを既存のプロジェクトに組み込んでもらえるライブラリの形にまとめたいと思います。
「既存の」ってことはVertexクラスを継承させることはできないわけですが、何らかのインターフェイスを用意してリスナに登録という形になりますかねぇ…。
今日はさくっとこれをやって、GRINEditのページをMovableType上に移した後でGRINEditの開発に取りかかる予定でしたが、雑談をして、午後のティーブレイクをして、後輩がEclipseにCDTを入れるのを手伝っていたらいつの間にか19時に。うむむ。まぁ、社交も人生には必要です。
今回の修正はchez sugi: 前後のエントリーをカテゴリー内だけにするを参考にしたのですが、ここで書かれているプラグインではメインカテゴリでの前後しかできなかったので、自分で「設定されているカテゴリ全部に対して繰り返し処理を行うコンテナタグ」を作ってみたのでした。こんな感じに、PythonとJavaScriptの両方のカテゴリが指定されているエントリは両方での前後が表示されます。
個人的にはエントリやカテゴリに独自の属性を付与できるとうれしいのですけど、たぶん難しいので、「アンダーバーで始まるカテゴリは対象に含めない」という設計にしようかと思っています。で「_showInSidebar」「_showInCategoryTop」などのカテゴリを作ってやれば僕が期待しているようなCMSになるのじゃないかなぁ…と。
「塗ると絵が浮かび上がる迷路の自動生成」に必要な一筆書きパスの作成について。元画像を白黒二値画像ではなく、256階調モノクロくらいにしておいて、「一筆書きでなぞられた範囲の値の平均となぞられなかった範囲のそれの差を最大化」なんてのはダメでしょうか。線が太くなるので「妙にまっすぐな道が繋がっているところが解く前から目立つ」というのは回避しやすくなると思います。絵は適当なペイントツールでエアブラシを使って描けばいいですし。問題はどうやって最大化するのかですが…。
でも、僕は迷路とは別のネタを思いついてしまったので、このネタは放置してそちらの実装をしたいと思います(ぇー)
がーん。画像処理、活字 OCR の専門家集団スマートリーディングのSmartOCR Lite Editionが入手不可能になってる…。探してみたけれどもフリーのOCRはあんまりないですね。やさしくマウス OCRやe.Typist 、読んde!!ココ Ver.12などを試用してみることにします。
日経新聞によれば、mixiが同じ音楽が好きな人を検索したり、視聴したりできるサービスを始めるそうですねぇ。でも僕はあまり音楽を聴いていないので…うむむ。どうしようもないか。
日経新聞によれば、東工大でDNAを利用した有機EL素子の試作に成功したらしいです。ほとんど捨てられている鮭の白子からDNAを抽出して使うんだそうです。DNAって電気が流れるんですね。しかも二重らせんなので間に物を挟むことが簡単にできて従来の有機ELよりも簡単に作れるんだそうです。関連情報を検索していたら「「鮭のDNA」が強誘電体メモリの材料に,産総研が印刷で素子を試作」なんてのも。DNAコンピュータが実用化されるときは来ないのじゃないかと思っていたのですが、演算部分じゃない搦め手からDNA化が進んでいてびっくりです。
SQLiteでクエリを作成するときに見よう見まねで使っていた「?」ってのがプレイスホルダと呼ばれるものだそうで。これを使わないでSQLに値を埋め込むのならばきちんとサニタイジングに気をつかわないとSQLインジェクションの原因になる、と。なるほど。プレイスホルダを使うだけでSQLインジェクションは防げるのかな?
PHP4まではクラスのコンストラクタはC++同様クラスと同名の関数。PHP5からはPython同様、規定の名前の関数(__construct)
Smartyはコンパイル型のテンプレートエンジン。PHP中でSmartyクラス(またはサブクラス)のインスタンスを作成して、$smartyInstance->display('template_name.tpl');とやればテンプレートがコンパイルされる。
「{strip}〜{/strip}」で挟まれたテンプレートは余計な空白文字が削除される。つまり出力結果に影響を与えずに見やすいインデントのテンプレートが作成できる。だけど空白文字を入れたい場合はどうするのかな?nbspを使うのかな?
DTMLのdtml-commentタグに相当するものはSmartyでは{* 〜 *}
PHPにもJavaDocのようなドキュメンテーションコメントがある。PEAR :: Manual :: phpDocumentor
$smartyInstance->debugging = TRUE;でデバッグ用のコンソールが出るらしい。
MySQLは自動起動しないようにしたのだけど、毎回コントロールパネルで起動するのは面倒。コマンドラインで「sc start MySQL41」とやればサービスを起動できる(もちろんMySQL41の部分は自分が起動したいサービスの名前にすること)
SQLiteの本を読んでいて、いろんな言語から使う方法が書いてある章で、Java, PHP, ASP, Perl, Ruby,…の次にPythonがくるかと思ったらなでしこがきました。で、しかもそれが最後だったのでPython使いとしてはちょっとさみしいですね。
SQLite Database Browser。あー、グラフィカルで勉強にはいいかもしれないですが、例の4000行×4000テーブルのデータを開いたら時間がかかりすぎてダメでした。
SQLの本を眺めていてcreate indexなんてコマンドを発見。時系列データから頻繁に時刻のカラムを条件に使ってselectするのならこれをしておくといいのですね。
CGI.pm。Perlで作るCGI講座 - CGI.pm を使ってみよう。なるほど、こんなものが標準であるのですねぇ。CGI.pmを使っていない某CGI配布サイトのCGIで僕はPerlを覚えたんですが、やっぱり自己流テニスで変なフォームになってるような状態なんでしょうか…。
SubversionはCVSと違って、リファクタリングした後にゴミが残ったりしないのでよさそう。SF.netでSubversionが使えるようなのでGRINEditをそちらに移すというのもアリですね…。
この前衝動買いして冷蔵庫で2日ほど眠っているピーマンをなんとかしようと思って、豚肉を買ってきました。でも、明日は急遽9時ぐらいに家を出ないといけなくなったのです。料理する時間があるかな?とりあえずだらだらネットしていると睡眠時間がなくなるのでもう寝ます。明日は日曜日に行ったIKEAの話を日記に書こう。あと土曜日に行ったESPer2006の話を。ああ、ずるずると書くことが溜まっていく…。
帰ってきた後、さらに20分歩かないと自宅にたどり着かないのは疲れますね。
今日は「財布に1000円しかなくて懇親会費を払えない」「ACアダプタを忘れてくる」「生デモの初っぱなでシンタックスエラー」とダメダメで凹み気味。
名刺も作らなきゃ…。所属が変わったから今までの名刺は使えないので。
とりあえず無性に眠いので寝ます…。
冷凍庫から取り出した氷の裏に思いがけなくきれいな花が咲いていたので大あわててシャッターを押したのですが、キッチンの蛍光灯の光では照明が十分ではなかったですね。
あぁ…。今、大阪の実家から転送してもらった郵便物の中にIPAXの招待状を発見しました。東京国際展示場であったのですね。隣の駅だからすぐに行けたはずだったのに…ううむ。
それはさておきITmedia News:“IT研究者人生ゲーム”を研究者が開発のゲームが届きました。想像以上に大きいボードでした。3〜5人用ゲームなので一緒に遊んでくれる人を募集中です(笑)
時代劇のセットの灯籠に生えているコケは実は青のりだそうだ。へー!
実際に声を出して練習をしたら24枚のスライドが3分で終わってしまったので生デモを入れる方針に変更します。まぁ、実際はもっとゆっくりしゃべる予定ですが、緊張するとしゃべるのが早くなるので…。
清木さんから高橋メソッドでもない限り1分3枚はやり過ぎでは、とつっこみが来ていますが、まぁ高橋メソッドっぽい発表です。文字の大きさでインパクトを出すことを志向すると高橋メソッドっぽくなりますよね。空を飛ぶという目的を共有した結果で、コウモリも鳥も翼を持つようになったわけで。
でも高橋メソッドだと言ってしまうと高橋メソッドのファンに怒られそう。字がそれほど大きくないし、PowerPointのタイトルとコンテンツを使うなんて邪道だと…(笑)
繁体字版Yahoo翻訳を使って僕のサイトを翻訳してみていた人がいるようなのですが「Diary of Nishio Yasushi harmony」って…名前変わってるしなんか音楽家っぽい。
ST-MN3という3Mの付箋を買ってきました。決め手はサイズで、100mm×69mmと普通のメモ用付箋より微妙に狭く、長いものです。これ実はA4用紙を8つ折りにしたスペース105mm×74mm(つまりA7)にちょうどはみ出さずに収まるサイズなので、A4の四つ折りサイズである超整理手帳の1ページにちょうど2枚ぴったり貼ることができるわけなのです。
明日行くところの地図をラボで印刷してくるべきだった。
家から書類を入れる封筒を持ってくるの忘れた…。あと裏の白い紙がないので家から持ってこようと思ったのにこれも忘れた。
>SQLiteでは明示的にトランザクションを開始しない限り、INSERT処理の前後に必ず"BEGIN"、"COMMIT"が実行される。
それが昨日データベースを作るのにあんなに時間がかかった原因ですか…。
TSVのファイルを読み込んでリストを作る、Pickleで永続化したリストを読み込む、SQLiteからselect * from some_tableする、の3つで速度を比較。うーん、6000行のデータで0.11秒、0.13秒、0.26秒という感じですね。コード量に関しては、TSV方式はいろんな型のデータがある場合に自分でint(item)だのfloat(item)だのするのが面倒ですが、PickleとSQLiteならloadやfetchするだけなので楽。結局、TSVはコード量で負け、Pickleはファイルサイズで負け、SQLiteは実行速度で負ける、という見事な三すくみですね。でも、SQLのorder by句やwhere句を使うことを考えると、速度が遅いデメリットは弱まり、コード量が少ないメリットは強まるので、ある程度の作業をするのであれば(そしてSQLを覚えるのをいとわなければ)SQLiteは魅力的な選択肢となりうるでしょう。
17時になっても誰も来ませんでした。
VISAカードに「口座にお金がなくて引き落とせないぞ!」と怒られた。学術振興会が4月分の給料を4月中に払ってくれていないので銀行にお金がない。仕方がないので使うつもりでおろしてある手元の現金をもう一度入れてくることに…。6月12日までに給料が振り込まれないとさらに預け入れないと行けなくなって、その場合手元の現金がかなりかつかつになってしまう。さらに7月12日までに振り込まれないと親に電話をかけて融資を頼まなきゃ…。
やれやれ。給料は毎月給料日に欲しいものです。
INSERTされるデータ量自体はさほど多くないけれども、そのデータの内容によっては以前に前にINSERTしたデータを全部修正する(修正倍率をかける)必要があるとしたらどうするのがいいのでしょう。
toInsertという名前のPyListに追加すべきデータをためておいて、修正の必要が出たときには「UPDATE some_table SET value = value * 0.5」というようなクエリを投げることにしてみます。
とりあえずデータがSQLiteに入りました。追加のデータができたときも整合性を保ちつつ追加するスクリプトを書いたのでそれも問題なし、と。
もう8時だ…。誰もいないのに、どうして普段より遅くまでいるんだ?
通常、ペペロンチーノというとゆでた後の麺に唐辛子とニンニクの風味のオリーブオイルを絡めるものだと思うのですが、唐辛子の消費速度が遅いので傷んでしまってももったいないと思い贅沢に使うことにしてみました。ゆでるときに。
_ 辛い辛い。麺をどけた後の汁はこんな感じ。
_ この黄色い色が全部「唐辛子抽出物」だものね。この「超ペペロンチーノ」と食べる際には、あらかじめ牛乳を飲むなどして胃に膜を張っておく必要があるかもしれません。
今日こそは早起きできたからいつもより早い便に乗ろうと思ったのに、選択して干してたら結局いつもの時間…。しかしいつもの便にはきちんと間に合っているっていうのは…意識では早い便に乗るつもりなのに潜在意識はいつもの便に乗るつもりで行動しているのかも…。
作ったもの,書いたもの,他にある「TeXインストーラ3」を試しています。お、「GhostScriptはもう入っているじゃないか」と言われた以外は特に何事もなくインストール完了。便利な時代になったものです。
研究室の(?)ゼミでKnuth-Morris-Prattを習っているので、説明を聞きつつPythonで実装してみました。書いてみると20行程度ですね。ふむふむ、なるほど。結局のところ「クエリの途中or最後までマッチした場合に、次のマッチングをどこから始めたらいいか」をあらかじめ計算して持っておくことによって高速化するのですよね。あんまり自信はないのですがとりあえず公開してみました。西尾泰和のブログ: PythonでKnuth-Morris-Prattを実験
JavaScriptの配列は配列じゃなくてハッシュだと思いました。
「文字列sを数値に変換するには s - 0 とする方法と parseInt(s) とする方法があります。さぁどっちが好み?」
僕は後者です。
「数値sを文字列に変換するには s + "" とする方法と s.toString() とする方法があります。さぁどっちが好み?」
僕は後者ですが。
「文字列sを出力するのには print s とする方法と System.out.println(s); とする方法があります。さぁどっちが好み?」
これなら前者ですねぇ…。
僕はJavaほど堅くなく、JavaScriptの柔らかい書き方をあえて避けてタイプ数の多い堅い書き方をする、どっちつかずな人だということで。
JavaScriptが想像以上にPythonに似ていたので、入れるつもりだった省略記法をすべて盛り込んでISBN一括登録ツールができあがりました。TextareaにISBNを書き連ねてボタンを押すと、書籍登録画面が別タブ(orウィンドウ)でどばっと開くようなものですが。このスクリプトには自分のbooklistに本を登録するためのURLがパラメータとして必要なので、booklist管理画面にリンクをつけてパラメータが渡るようにしようとしたのですが…うーん、Smartyとやらがばっちり使ってあってHTMLタグがどこにもない。Smartyを勉強しないと…。
25時。SQLiteに11052181行くらいのデータを突っ込んでみてその中から特定のカラムが特定の値になっている3260行を抽出してみたら9.27秒かかりました。データベースのファイル名に-journalとついたファイルが生成されているので、コネクションがクローズされるまでしっかり書き込まれないのかと思ってcon.close()したらinsertした11052181行のデータが全部消えましたorz
con.commit()しないといけないのね…
SQLite - Wikipedia。MySQLとかに比べると、サーバとかユーザとかがありません。でも自分一人が使うデータベースだったらそれで別に困らないし、かえって敷居が下がってよいのではないでしょうか。TSV形式やCSV形式で書き出す代わりにSQLite形式で…というノリで。ちなみにSQLite 関連にはfetch時に型宣言をしないと欲しい型で得ることができないように書いてありますが、少なくともこちらの環境では宣言無しでintegerはint, realはfloatで取得できています。
そんなことを書いているうちにやっとinsert再挑戦が終了。本当は寝たかったのだけど途中で中断したらまた明日commitし忘れそうなので…。この同一のデータが、TSVで保存されているのは418MB、Pythonの永続化ライブラリPickleで永続化してあるものは794MB、SQLiteで保存してあるものは380MB。まぁ当たり前ですがサイズは一番小さいですね。後は明日、いろんな操作にかかる時間を測定してみることにします。
絶対音感テスト。32問中1問正解。いやはや、わかってはいましたが、絶対音感はないようです。全部ドミソに聞こえます。
さすがにこれじゃ難しいか。USBバーコードリーダを買った方がいいのかなぁ。
今日はApacheとMySQLとSQLiteとPHPとPEARとPDOとmbstringと戦いました。ふう。開発環境を整えるだけで想像以上に時間がかかってしまいました。
あとpysqliteも入れたので後でいじってみることにしましょう。
面白すぎ。サラリーマンというふしぎな生物の生態を観察する番組なんですが。解説の先生とインタビュアーの掛け合いが面白いです。録画しておけばよかった…。謎のホームページ サラリーマンNEOの一部なんですね。
繋がりません。まぁ、もとからGoogleMapの地図の方で画像の読み込みに失敗したりするくらいなので「ブロードバンド(の時もある)」と認識しておいた方がいいのかも知れませんね。早いときは確かにブロードバンドなんですが…。写真のアップロードは明日学校でするとしましょう。
今日から1本(20分)早い電車に乗ろうと思ったのに、出がけに携帯電話が見つからず、机の下に落ちているのを見つけるまで15分かかって結局同じ便に乗ることに。その上、携帯電話は電池切れで、充電ケーブルは家に忘れてきたので全く使い物にならない。うー。
Boost Graph LibraryにはPythonバインディングがあるんですね。
8分の枠で発表するプレゼン資料が現在20ページ目。後4ページくらいで納めないといけませんな。(20分の発表で60枚のスライドを作った前科あり)
まぁLLDNや未踏ユース発表会では、持ち時間が不明だったり前日にいきなり発表することに決めたりしたので練習ができなかったけど、今回は練習できるから24ページくらいなら余裕のはず…。
さすがにソフトウェアデモンストレーションは入れる余地がないか…。
月曜火曜は研究室にあまり人がいません。がらりと広いのに逆に閉塞感を感じるのはなぜでしょう。
Before...
_ Marla [Well done! [url=http://www.herbs.org/wordpress/wp-content/..]
_ William [Thank you! [url=http://www.herbs.org/wordpress/wp-content/..]
_ Jared [Thank you! [url=http://www.herbs.org/forum/docs/deposits/s..]