<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7044774945882662569</id><updated>2011-08-02T11:18:59.760+09:00</updated><category term='Web Application'/><category term='Google Chrome Extensions'/><category term='Development'/><category term='Django'/><title type='text'>MK's Memorandum</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mksmemorandum.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mksmemorandum.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>MK</name><uri>http://www.blogger.com/profile/18166795395826527638</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7044774945882662569.post-7769611190779370318</id><published>2010-02-10T16:28:00.033+09:00</published><updated>2010-02-11T11:30:56.098+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Application'/><title type='text'>SVG Graph Generator</title><content type='html'>Note: I recommend you to read this entry with Firefox 3.6 (or later).&lt;br /&gt;&lt;br /&gt;HTML 5 supports SVG image in HTML document, and recently it was implemented in Firefox 3.6.&lt;br /&gt;I wrote a dynamic graph data visualizer with SVG and Javascript in 2007, and now I can use it in HTML. Hooray!&lt;br /&gt;&lt;br /&gt;A sample of it is shown below. &lt;br /&gt;Currently you need to use Firefox 3.6 and enable HTML 5 to see it.&lt;br /&gt;The way to enable it is:&lt;ol&gt;&lt;li&gt;Input "about:counfig" to the location bar&lt;/li&gt;&lt;li&gt;Change the value of "html5.enable" to "true"&lt;/li&gt;&lt;/ol&gt;When you reload this page after the process, you will see the example here.&lt;br /&gt;&lt;script src="http://kiwi.logos.ic.i.u-tokyo.ac.jp/~mitsuharu/software/graph.js"&gt;&lt;/script&gt;&lt;script&gt;function init(){var graph = new Graph("svg");graph.addNode("Alice");graph.addNode("Bob");graph.addNode("Charlie");graph.addNode("Dave");graph.addNode("Eve");graph.joint(0, 1, 1);graph.joint(1, 2, 1);graph.joint(1, 3, 1);graph.joint(3, 4, 1);graph.wake();}&lt;/script&gt;&lt;svg viewBox="0 0 200 150" id="svg" style="border: solid 5px #cccccc; width: 400px; height: 300px;"&gt;&lt;/svg&gt;&lt;script&gt;init();&lt;/script&gt;&lt;br /&gt;The arrangement of nodes bases on attraction repulsion model, and you can drag and drop each of them.&lt;br /&gt;&lt;br /&gt;Here is the script file.&lt;br /&gt;&lt;a href="http://kiwi.logos.ic.i.u-tokyo.ac.jp/~mitsuharu/software/graph.js"&gt;SVG Graph Generator&lt;/a&gt; (Apache Licence 2.0)&lt;br /&gt;&lt;br /&gt;All you need to write in your HTML file is like this.&lt;pre style="border: solid 1px;"&gt;&amp;lt;!-- Include the script file. --&amp;gt;&lt;br /&gt;&amp;lt;script src="URL_TO_THE_SCRIPT"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Add svg element to HTML. "id" attribute is required. --&amp;gt;&lt;br /&gt;&amp;lt;svg viewBox="0 0 200 150" id="svg"&amp;gt;&amp;lt;/svg&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script&amp;gt;&lt;br /&gt;  // Create a graph object.&lt;br /&gt;  // The argument is the id of svg element.&lt;br /&gt;  var graph = new Graph("svg");&lt;br /&gt;&lt;br /&gt;  // Add Nodes to the graph object.&lt;br /&gt;  // The argument is text appears on it.&lt;br /&gt;  // Each node is assigned an ID which starts with 0.&lt;br /&gt;  graph.addNode("Alice");   // Node ID 0&lt;br /&gt;  graph.addNode("Bob");     // Node ID 1&lt;br /&gt;  graph.addNode("Charlie"); // Node ID 2&lt;br /&gt;  graph.addNode("Dave");    // Node ID 3&lt;br /&gt;  graph.addNode("Eve");     // Node ID 4&lt;br /&gt;&lt;br /&gt;  // Connect nodes.&lt;br /&gt;  // The arguments are two node IDs&lt;br /&gt;  // and connection strength (between 0 and 1)&lt;br /&gt;  // Currently connection strength has&lt;br /&gt;  // no influence on the graph.&lt;br /&gt;  graph.joint(0, 1, 1);&lt;br /&gt;  graph.joint(1, 2, 1);&lt;br /&gt;  graph.joint(1, 3, 1);&lt;br /&gt;  graph.joint(3, 4, 1);&lt;br /&gt;&lt;br /&gt;  // Start to move.&lt;br /&gt;  // You can stop it by "graph.sleep()"&lt;br /&gt;  graph.wake();&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;If it appeals to you, please create something with it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7044774945882662569-7769611190779370318?l=mksmemorandum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mksmemorandum.blogspot.com/feeds/7769611190779370318/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://mksmemorandum.blogspot.com/2010/02/svg-graph-generator.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/7769611190779370318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/7769611190779370318'/><link rel='alternate' type='text/html' href='http://mksmemorandum.blogspot.com/2010/02/svg-graph-generator.html' title='SVG Graph Generator'/><author><name>MK</name><uri>http://www.blogger.com/profile/18166795395826527638</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7044774945882662569.post-92624242819414987</id><published>2010-01-07T00:00:00.027+09:00</published><updated>2010-02-25T04:28:49.066+09:00</updated><title type='text'>単純な .screenrc の紹介</title><content type='html'>&lt;a href="http://www.gnu.org/software/screen/"&gt;GNU Screen&lt;/a&gt;、ターミナルでリモートログインして作業するにはほとんど必須のアプリケーションですよね。&lt;br /&gt;今回はその設定ファイル .screenrc に関して。&lt;br /&gt;ここで紹介する .screenrc をホームディレクトリに置けば、こんな感じに仕上がります。&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__EmI9_bXrsg/S1q02ADrNGI/AAAAAAAAACg/KFYzEZXmGEE/s1600-h/ss.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 272px;" src="http://4.bp.blogspot.com/__EmI9_bXrsg/S1q02ADrNGI/AAAAAAAAACg/KFYzEZXmGEE/s400/ss.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5429851140569904226" /&gt;&lt;/a&gt;それでは行ってみましょう。&lt;h4&gt;現在の僕の .screenrc&lt;/h4&gt;&lt;pre style="border: solid 1px;"&gt;defutf8 on&lt;br /&gt;defencoding utf8&lt;br /&gt;encoding utf-8 utf-8&lt;br /&gt;&lt;br /&gt;escape ^z^z&lt;br /&gt;&lt;br /&gt;bind x&lt;br /&gt;bind ^x&lt;br /&gt;&lt;br /&gt;startup_message off&lt;br /&gt;autodetach on&lt;br /&gt;vbell off&lt;br /&gt;&lt;br /&gt;caption always "%-w%10L&amp;gt;%{=b bw}%n %t%{-}%+w%-0="&lt;br /&gt;hardstatus alwayslastline "%H%=%Y/%m/%d %02c"&lt;br /&gt;shelltitle "$ |shell"&lt;br /&gt;&lt;br /&gt;bindkey -k kD stuff \177&lt;br /&gt;&lt;br /&gt;termcapinfo xterm* ti@:te@&lt;br /&gt;&lt;br /&gt;shell $SHELL&lt;/pre&gt;&lt;h4&gt;解説&lt;/h4&gt;&lt;pre style="border: solid 1px;"&gt;defutf8 on&lt;br /&gt;defencoding utf8&lt;br /&gt;encoding utf-8 utf-8&lt;/pre&gt;文字コードを UTF-8 にする。&lt;br /&gt;web 上の設定サンプルには文字コードの指定に kanji とか defkanji といったコマンドを使っているものがあるが、それらは 3.9.10 以前の古いバージョンでのコマンドで、最新バージョンではすでに無効。現在は encoding と defencoding を使う。&lt;pre style="border: solid 1px;"&gt;escape ^z^z&lt;/pre&gt;エスケープ文字を C-Z に設定。C-Z 自体を入力したいときには それに続けてさらに C-Z を入力。&lt;pre style="border: solid 1px;"&gt;bind x&lt;br /&gt;bind ^x&lt;/pre&gt;デフォルトで C-Z x と C-Z C-X にバインドされている lockscreen を無効化&lt;pre style="border: solid 1px;"&gt;startup_message off&lt;br /&gt;autodetach on&lt;br /&gt;vbell off&lt;br /&gt;&lt;/pre&gt;それぞれ&lt;ul&gt;&lt;li&gt;起動時のメッセージを非表示&lt;/li&gt;&lt;li&gt;ターミナルが落ちたら自動的にデタッチ&lt;/li&gt;&lt;li&gt;音声ベルが鳴らない時に可視ベルが "Wuff, ---- Wuff!!" とうるさいので可視ベルをオフにする&lt;/li&gt;&lt;/ul&gt;&lt;pre style="border: solid 1px;"&gt;caption always "%-w%10L&amp;gt;%{=b bw}%n %t%{-}%+w%-0="&lt;br /&gt;hardstatus alwayslastline "%H%=%Y/%m/%d %02c"&lt;br /&gt;&lt;/pre&gt;caption はウィンドウごとにあるけれど、hardstatus は一つの screen プロセスに一つ。書式は以下の通り。&lt;ul&gt;&lt;li&gt;%-w 表示しているウィンドウより前のウィンドウ番号とウィンドウ名&lt;/li&gt;&lt;li&gt;%10L&amp;gt; ここを左から10%くらいに配置&lt;/li&gt;&lt;li&gt;%{=b bw} 文字のスタイルの変更&lt;/li&gt;&lt;li&gt;%n %t 表示しているウィンドウのウィンドウ番号 (%n) とウィンドウ名 (%t)&lt;/li&gt;&lt;li&gt;%{-} 文字のスタイルを元に戻す&lt;/li&gt;&lt;li&gt;%-w 表示しているウィンドウより後のウィンドウ番号とウィンドウ名&lt;/li&gt;&lt;li&gt;%-0= ここを右端にする&lt;/li&gt;&lt;li&gt;%H Hostname&lt;/li&gt;&lt;li&gt;%Y/%m/%d %02c 日付と時刻&lt;/li&gt;&lt;/ul&gt;&lt;pre style="border: solid 1px;"&gt;shelltitle "$ |shell"&lt;/pre&gt;shelltitle でウィンドウ名を設定。&lt;br /&gt;screen はシェルから出力されたエスケープシーケンスを頼りにプロンプトを特定して、その後に入力されたコマンドを拾ってここに表示する。&lt;br /&gt;詳しくいえば、"^[k^[\" ("^[" はエスケープ文字) が出力されてから、上記 shelltitle で "|" の直前までに入力した文字列までを読み飛ばして、その後に入力された文字列をコマンドとして解釈してくれる。なので、shelltitle の "|" までに書く文字列はシェルの末尾と一致している必要があり、またシェルは上記のエスケープシーケンスを出力しなければならない。シェルの設定はまたの機会に。&lt;br /&gt;"|" 以降の文字列はデフォルトのウィンドウ名。&lt;pre style="border: solid 1px;"&gt;bindkey -k kD stuff \177&lt;/pre&gt;Mac の delete キーを BackSpace として使うためのキーバインド。&lt;pre style="border: solid 1px;"&gt;termcapinfo xterm* ti@:te@&lt;/pre&gt;マウスホイールを利用可能にする。&lt;pre style="border: solid 1px;"&gt;shell $SHELL&lt;/pre&gt;Cygwin 上で screen を実行したときにログインシェルは zsh なのに bash が立ち上がったので追加。&lt;h4&gt;情報募集&lt;/h4&gt;上記の設定をしていても、一度デタッチしたスクリーンをレジュームすると UTF-8 の文字が全て "?" になってしまいます。&lt;br /&gt;レジューム時の screen にコマンドラインオプション -U を付ければ UTF-8 モードになってうまくいくのですが、.screenrc での設定だけで完結することはできないのでしょうか。&lt;br /&gt;そもそもなぜデタッチで設定が無効になるのかよく分かりません。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7044774945882662569-92624242819414987?l=mksmemorandum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mksmemorandum.blogspot.com/feeds/92624242819414987/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://mksmemorandum.blogspot.com/2010/01/screenrc-utf-8.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/92624242819414987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/92624242819414987'/><link rel='alternate' type='text/html' href='http://mksmemorandum.blogspot.com/2010/01/screenrc-utf-8.html' title='単純な .screenrc の紹介'/><author><name>MK</name><uri>http://www.blogger.com/profile/18166795395826527638</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__EmI9_bXrsg/S1q02ADrNGI/AAAAAAAAACg/KFYzEZXmGEE/s72-c/ss.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7044774945882662569.post-4427299463328812203</id><published>2009-12-27T19:48:00.007+09:00</published><updated>2010-01-23T18:29:52.329+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Application'/><title type='text'>MySQL でレコードのランダム抽出をするには</title><content type='html'>ORDER BY RAND() で OK。&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ただ、全レコードに対してランダムな数値を与えてインデックスなしでソートするのでそれなりのコストがかかる。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;この場合の計算量はどうなんだろう。ソートの実装がどうなっているのかは知らないので確かなことは分からないけれど、LIMIT をつけずに全レコードをランダムソートするならば計算量はよくて O(N log N)程度のはず。LIMIT で K 件(K &amp;lt; log N)を抽出する場合は、愚直にやっても O(KN)あればできる。&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;よって、1件ずつランダム抽出していくような場合は大して問題にならないが、リストとしてまとめてランダムに並んだレコードを取り出したい、というような場合にはあまり効率的でない。&lt;/div&gt;&lt;div&gt;そういった場合には事前にインデックスつきのフィールドに RAND() を書き込んでおいて、取得したいときにそのフィールドで ORDER BY してやったほうがいいはず。&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7044774945882662569-4427299463328812203?l=mksmemorandum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mksmemorandum.blogspot.com/feeds/4427299463328812203/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://mksmemorandum.blogspot.com/2009/12/mysql.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/4427299463328812203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/4427299463328812203'/><link rel='alternate' type='text/html' href='http://mksmemorandum.blogspot.com/2009/12/mysql.html' title='MySQL でレコードのランダム抽出をするには'/><author><name>MK</name><uri>http://www.blogger.com/profile/18166795395826527638</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7044774945882662569.post-7948408464985765078</id><published>2009-12-26T18:48:00.011+09:00</published><updated>2010-01-23T18:30:58.705+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Django'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Application'/><title type='text'>Django の ModelForm / ModelFormSet まとめ</title><content type='html'>ModelForm の扱いが分かってきたのでまとめ。&lt;div&gt;&lt;h4&gt;なぜ ModelForm を使うのか (普通の Form との違い)&lt;/h4&gt;&lt;/div&gt;&lt;div&gt;普通のフォームはデータベースの構成とは独立しているので自由に入力フォームを作成することができる反面、データベースの構造を反映したフォームを作成する際には、モデルの記述とほぼ同じ内容をもう一度書き下す必要が出てくる。これは冗長であるし、またモデルの変更をフォームに反映しなければならない点で保守性が低い。&lt;/div&gt;&lt;div&gt;きれいに構成された Web アプリケーションであればデータの入出力はデータベース上での生成、変更、削除にほぼ対応しているわけで、そのようなシーンにおいて、モデルを反映した入力を実現するためにモデルから半自動的にフォームを生成するものが ModelForm である。&lt;/div&gt;&lt;div&gt;&lt;h4&gt;ModelForm の定義&lt;/h4&gt;&lt;/div&gt;&lt;div&gt;モデルフォーム内のサブクラス "Meta" の属性として各種の定義を書く。&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;model 属性: フォームのもととなるモデル&lt;/li&gt;&lt;li&gt;fields 属性: モデルの中でこのフォームに含めたいフィールド&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;各々のフィールドがどのようなフォームで表示されるか (テキストなのかチェックボックスなのかプルダウンメニューなのか等々)は、モデルで指定したフィールドのタイプに基づいて適当なものが選択される。&lt;/div&gt;&lt;div&gt;とはいえ実際の運用においては表示の仕方を変えたいことも多々ある(最もよくあるのは hidden にしたい場合など)ので、これは変更することが可能。&lt;/div&gt;&lt;div&gt;これは Meta 内ではなく、モデルフォーム自身の属性として記述。&lt;/div&gt;&lt;div&gt;&lt;h4&gt;ModelFormSet&lt;/h4&gt;&lt;/div&gt;&lt;div&gt;一度に複数のレコードを編集する場合、同じモデルフォームをそのまま複数並べるわけにはいかない。(同じ name を持つ input 要素が複数作成されて、submit されてもどれとどれを組み合わせるのか分からなくなるから。)&lt;/div&gt;&lt;div&gt;FormSet はこの問題を解決するためのもの。ひとまとめに扱う input 要素ごとに id (フォームセットの内部的なもの。HTML の id 属性ではない) を作成してフォームの name 属性を適宜変更、送信されたデータをきちんとグループ分けして一つ一つのフォームを切り分けてくれる。&lt;/div&gt;&lt;div&gt;ModelFormSet は、上述の Form と ModelForm の関係ように、Model を反映した FormSet。&lt;/div&gt;&lt;div&gt;&lt;h4&gt;ModelFormSet の定義&lt;/h4&gt;&lt;/div&gt;&lt;div&gt;modelformset_factory に、ベースにしたいモデルを渡す。&lt;/div&gt;&lt;div&gt;フィールドの表示の種類を変更するためには、意図する表示を定義した ModelForm を予め定義しておき、引数に "form=モデルフォーム名" を追加してやればよい。&lt;/div&gt;&lt;div&gt;ここで、上述の引数として渡したモデルフォームにおいて、fields 属性が定義されていても、新たに作成される ModelFormSet はそれらを無視して全てのフィールドに関してフォームを作成する点に注意。&lt;/div&gt;&lt;div&gt;これを抑制するには、modelformset_factory の 引数に "fields=フィールド名リスト" を与える。&lt;br /&gt;&lt;h4&gt;データ受信後の処理&lt;/h4&gt;POST でデータを受け取ってからは、送信されたデータをデータベースに書き込むことになる。&lt;br /&gt;ここで、既存のデータを変更する場合には注意すべき点がある。&lt;br /&gt;基本的に、ModelForm のデータを保存する場合はモデルフォームオブジェクトの save メソッドを利用する。&lt;br /&gt;これは新規作成(SQL でいうと INSERT)でも上書き(SQL でいうと UPDATE)でも同じで、Django はそれらを自動的に使い分ける。&lt;br /&gt;使い分けの基準は、"保存しようとしているデータの主キー値と同じ主キー値を持つレコードがあれば UPDATE、それ以外は INSERT"となっている。&lt;br /&gt;よって、既存のデータを UPDATE するためには、必ず主キーをフォームの中に含めなければならない。&lt;br /&gt;また、一部のフィールドのみを用いたモデルフォームの場合、除外したフィールドが必須であった場合、その値を与えなければ is_valid が False となり保存できない。&lt;br /&gt;このような場合は、受信後にフォームインスタンスを作成する際に、POST データとともにもとのデータベースレコードを渡してやることで、フォームに含まれているフィールドはその値を、そうでないフィールドはデータベースの値を用いて、不足するデータを補ったフォームオブジェクトを作成することができる。&lt;br /&gt;渡し方は、モデルフォームの場合は引数 instance、モデルフォームセットの場合は引数 queryset。&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7044774945882662569-7948408464985765078?l=mksmemorandum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mksmemorandum.blogspot.com/feeds/7948408464985765078/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://mksmemorandum.blogspot.com/2009/12/django-modelform-modelformset.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/7948408464985765078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/7948408464985765078'/><link rel='alternate' type='text/html' href='http://mksmemorandum.blogspot.com/2009/12/django-modelform-modelformset.html' title='Django の ModelForm / ModelFormSet まとめ'/><author><name>MK</name><uri>http://www.blogger.com/profile/18166795395826527638</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7044774945882662569.post-7277375501548511110</id><published>2009-12-25T16:04:00.019+09:00</published><updated>2010-01-23T18:30:23.932+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Application'/><title type='text'>ruby in HTML</title><content type='html'>&lt;div&gt;ruby と言っても言語の方ではありません。HTML の ruby (ルビ)タグです。&lt;/div&gt;&lt;div&gt;そもそも ruby というタグが HTML のセマンティクス的に許されるかどうかというのは十分議論の余地があるとは思いますが、文字列に近接して付記すべき情報があるのも事実。&lt;/div&gt;&lt;div&gt;で、ここ12時間くらいどうすべきか迷ったことをメモ。&lt;/div&gt;&lt;h4&gt;ruby タグの使い方&lt;/h4&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;ルビを振りたい部分を &amp;lt;rb&amp;gt; でマークアップ&lt;/li&gt;&lt;li&gt;ルビとして表示したい文字列を上記 &amp;lt;rb&amp;gt; に隣接する &amp;lt;rt&amp;gt; 内に記述&lt;/li&gt;&lt;li&gt;&amp;lt;rb&amp;gt; と &amp;lt;rt&amp;gt; を &amp;lt;ruby&amp;gt; でマークアップ&lt;/li&gt;&lt;/ol&gt;例えば&lt;br /&gt;&lt;pre style="border: solid 1px;"&gt;田んぼと&amp;lt;ruby&amp;gt;&amp;lt;rb&amp;gt;案山子&amp;lt;/rb&amp;gt;&amp;lt;rt&amp;gt;かかし&amp;lt;/rt&amp;gt;&amp;lt;/ruby&amp;gt;ののどかな風景&lt;/pre&gt;&lt;br /&gt;と書くと&lt;br /&gt;&lt;div style="text-align: center; border: solid 1px;"&gt;田んぼと&lt;ruby&gt;&lt;rb&gt;案山子&lt;/rb&gt;&lt;rt&gt;かかし&lt;/rt&gt;&lt;/ruby&gt;ののどかな風景&lt;/div&gt;となります。&lt;br /&gt;&lt;/div&gt;&lt;h4&gt;ブラウザ互換性の問題&lt;/h4&gt;&lt;div&gt;となります、と書きましたが、上記のサンプルは Internet Explorer もしくは Google Chrome 以外のブラウザではきちんと表示されなかったことと思います。というのは主要なブラウザのうち上記の2つ以外には ruby タグが実装されていないためです。そのため互換性を実現するにはそれなりの workaround が必要になります。&lt;/div&gt;&lt;div&gt;(正直なところそういう見苦しい HTML は書きたくないのですが、差し迫って必要なのだから仕方がない。ちなみに &lt;a href="http://www.w3.org/TR/css3-ruby/"&gt;CSS 3 には ruby が含まれている&lt;/a&gt;ようなのでそのうち他のブラウザでも利用できるようになるのでしょう。)&lt;/div&gt;&lt;h4&gt;Firefox における ruby&lt;/h4&gt;&lt;div&gt;この手の話はあらゆるブラウザに対応することを目指すときりがなくなるので、今回のサイトが研究室内の他のメンバーに見てもらうためのものであることを踏まえて Firefox できちんと表示できればそれでよしとすることにします。&lt;/div&gt;&lt;div&gt;手っ取り早い方法としては、そのためのアドオンを導入する手があります。しかしながら今回のサイトはどちらかというと周囲にお願いして見てもらうものであるので、できるだけ利用のためのハードルを低くしておくためにもユーザ側では作業をさせたくありません。なので CSS で対処したいと思います。&lt;/div&gt;&lt;div&gt;調べたところ、&lt;a href="http://www.marguerite.jp/Nihongo/WWW/CSSTips/Ruby.html#INLINE_TABLE"&gt;こちらのサイト&lt;/a&gt;に書かれている CSS がベストな解となりそうです。&lt;/div&gt;&lt;div&gt;簡単に言うと、ruby を inline-table、rb を table-row、rt を table-header-group とするというものです。&lt;/div&gt;&lt;div&gt;ただ、そのまま上記のタグの属性を変更すると、もともと ruby をきちんと表示できているブラウザにおいて表示が崩れるので、span に class を設定してクラスセレクタで CSS を設定するのがよさそうです。&lt;/div&gt;&lt;div&gt;先ほどの例をこの方法でマークアップすると以下のようになります。&lt;/div&gt;&lt;pre style="border: solid 1px;"&gt;&amp;lt;style&amp;gt;&lt;br /&gt;#ruby{&lt;br /&gt;  display: inline-table;&lt;br /&gt;  vertical-align: bottom;&lt;br /&gt;}&lt;br /&gt;#rb{&lt;br /&gt;  display: table-row;&lt;br /&gt;}&lt;br /&gt;#rt{&lt;br /&gt;  display: table-header-group;&lt;br /&gt;}&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;田んぼと&lt;br /&gt;&amp;lt;span class="ruby"&amp;gt;&lt;br /&gt;  &amp;lt;span class="rb"&amp;gt;&lt;br /&gt;    案山子&lt;br /&gt;  &amp;lt;/span&amp;gt;&lt;br /&gt;  &amp;lt;span class="rt"&amp;gt;&lt;br /&gt;    かかし&lt;br /&gt;  &amp;lt;/span&amp;gt;&lt;br /&gt;&amp;lt;/span&amp;gt;&lt;br /&gt;ののどかな風景&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;そしてこれを表示するとこのようになります。&lt;br /&gt;&lt;div style="text-align: center; border: solid 1px;"&gt;田んぼと&lt;span style="display: inline-table; vertical-align: bottom;"&gt;&lt;span style="display: table-row;"&gt;案山子&lt;/span&gt;&lt;span style="display: table-header-group; font-size:50%;"&gt;かかし&lt;/span&gt;&lt;/span&gt;ののどかな風景&lt;/div&gt;&lt;br /&gt;意図した通りになっているのではないでしょうか。&lt;br /&gt;上記の場合、ルビのサイズを地の文よりも小さくするために rt の font-size を50%に、また周囲の語との垂直方向の位置会わせのために ruby の vertical-align を bottom に設定しています。&lt;br /&gt;とりあえずこれだと Firefox 以外に Chrome、Safari でもきちんと表示できるようです。&lt;h4&gt;さらなる問題&lt;/h4&gt;&lt;div&gt;さて、ここまででルビを振ることはできた訳ですが、ちょっとした問題に遭遇しました。&lt;br /&gt;&amp;lt;rb&amp;gt; 内に、間に空白を挟んだ複数の &amp;lt;span&amp;gt; を配置すると、空白が反映されません。&lt;br /&gt;&lt;div style="text-align: center; border: solid 1px;"&gt;&lt;span style="display: inline-table; vertical-align: bottom;"&gt;&lt;span style="display: table-row;"&gt;&lt;span&gt;SPAN1&lt;/span&gt; &lt;span&gt;SPAN2&lt;/span&gt;&lt;/span&gt;&lt;span style="display: table-header-group; font-size:50%;"&gt;RUBY&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;中身だけであれば&lt;br /&gt;&lt;div style="text-align: center; border: solid 1px;"&gt;&lt;span&gt;SPAN1&lt;/span&gt; &lt;span&gt;SPAN2&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;と、きちんと間に空白が表示されるので、おそらく table-row の中に直接 span を複数配置しているのが何らかの影響を与えているものと思われます。&lt;br /&gt;これは、上記の複数の span を、さらに一つの span にまとめてやることで回避できます。&lt;br /&gt;&lt;div style="text-align: center; border: solid 1px;"&gt;&lt;span style="display: inline-table; vertical-align: bottom;"&gt;&lt;span style="display: table-row;"&gt;&lt;span&gt;&lt;span&gt;SPAN1&lt;/span&gt; &lt;span&gt;SPAN2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display: table-header-group; font-size:50%;"&gt;RUBY&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;あまり詳しくないので確定的なことは言えないのですが、おそらく table-row の中には table-cell に相当する要素が必要だということなのではないかと推測しています。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;以上、とても胸を張れないバッドノウハウでした。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7044774945882662569-7277375501548511110?l=mksmemorandum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mksmemorandum.blogspot.com/feeds/7277375501548511110/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://mksmemorandum.blogspot.com/2009/12/ruby-in-html.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/7277375501548511110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/7277375501548511110'/><link rel='alternate' type='text/html' href='http://mksmemorandum.blogspot.com/2009/12/ruby-in-html.html' title='ruby in HTML'/><author><name>MK</name><uri>http://www.blogger.com/profile/18166795395826527638</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7044774945882662569.post-8614445990961534288</id><published>2009-12-22T03:36:00.027+09:00</published><updated>2010-01-23T18:31:26.408+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Django'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Application'/><title type='text'>Django の分からないところ</title><content type='html'>&lt;div&gt;調べてみたけど分からなかったことリスト。(随時更新)&lt;br /&gt;知っている方、教えていただけると本当に助かります。&lt;/div&gt;&lt;dl&gt;&lt;dt&gt;あるモデルの一部のフィールドのみ編集可能にしてそれ以外は表示だけさせたい&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;複数のフィールドを持つモデルの値のうち一部を書き換える場合。例えばこんなかんじで。&lt;img src="http://2.bp.blogspot.com/__EmI9_bXrsg/SzCB_fbGu1I/AAAAAAAAABs/P6ZFoBnVaws/s320/fig.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 162px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5417973279493634898" /&gt;オブジェクトとそれをインスタンスとして作ったフォームオブジェクトをコンテキストに突っ込めばテンプレートから参照はできるけれど、なんだか冗長だし、複数のインスタンスを一度に編集できるようにしたい場合などはテンプレートにリストが2つ渡って対応付けしたりとややこしくなる。&lt;/dd&gt;&lt;dd&gt;フォームオブジェクトから value を抜き出して表示することがテンプレートからできれば万事解決なんですが、そういう方法ってないのだろうか。&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;複合キーを扱いたい&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;とりあえず現時点では扱えないらしい?&lt;br /&gt;複合キーにすべきフィールド以外に主キーをたてておく。&lt;br /&gt;データモデリング的によろしくないが実用上は複合キーで検索してリレーションには主キーを使えばまあ問題ないか。&lt;br /&gt;(追記) モデルオブジェクトの Meta 内で unique_together(フィールド名リスト) で指定可能だった。&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;ModelForm での is_validがよくわからない&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;何をチェックしているのかよくわからない。モデルで指定した「省略可能」 (blank=True) とか 「ヌル値許容」 (null=True) とかの条件にフォーム内データが合致しているか否かをチェックしているのだろうとは思うけれど、暗黙の主キーである id フィールドがフォームに入ってると問答無用で False を返される。なぜ?&lt;br /&gt;追記: 主キーの値の重複が不正と見なされている。下に書いたように主キーを指定した場合は update になるので問題ないはずだが、なぜか invalid となっている。なぜ?&lt;br /&gt;追記: &lt;a href="http://groups.google.co.jp/group/django-ja/browse_thread/thread/74fcda259ded1cd0"&gt;ここ&lt;/a&gt;に答えがあった。つまり&lt;ol&gt;&lt;li&gt;主キーは POST パラメータではなく URL で渡す&lt;/li&gt;&lt;li&gt;そこから取得した主キーをもとにして既存レコードのインスタンスを取得する&lt;/li&gt;&lt;li&gt;そのインスタンスと POST パラメータを一緒に渡してインスタンスを作り直す&lt;/li&gt;&lt;/ol&gt;が正解の模様。&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;Django は insert と update を勝手に呼び分ける&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;save が呼ばれたデータの Primary Key が既にデータベースに存在すれば update、なければ insert を実行する。Primary Key が Python 的に False である場合は update する。例えば Primary Key の値が入ってないデータは insert になるので、Primary Key 以外に unique 制約を持つデータなどは、既存データのつもりでうっかり Primary Key のフィールドを入れずに save したりすると insert されて unique 制約に引っかかる、とかありそう。&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;メモリリーク?&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;大量データ(300万レコードほど)をデータベースに突っ込むために Django のモデルをインポートして作成したスクリプトをコマンドラインで走らせているとどんどんメモリを食う。やっていることはレコードごとに関数を読んで、その中で新たにモデルのインスタンスをローカル変数に代入して save するというだけ。関数から抜けた後にどこかの時点で GC にかかることを期待していたのだけれど、どうもそうなってはくれない模様。&lt;/dd&gt;&lt;br /&gt;&lt;/dl&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7044774945882662569-8614445990961534288?l=mksmemorandum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mksmemorandum.blogspot.com/feeds/8614445990961534288/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://mksmemorandum.blogspot.com/2009/12/django.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/8614445990961534288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/8614445990961534288'/><link rel='alternate' type='text/html' href='http://mksmemorandum.blogspot.com/2009/12/django.html' title='Django の分からないところ'/><author><name>MK</name><uri>http://www.blogger.com/profile/18166795395826527638</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/__EmI9_bXrsg/SzCB_fbGu1I/AAAAAAAAABs/P6ZFoBnVaws/s72-c/fig.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7044774945882662569.post-695286742696185020</id><published>2009-12-06T01:20:00.005+09:00</published><updated>2009-12-17T01:42:44.159+09:00</updated><title type='text'>あす楽がよかった</title><content type='html'>3週間ほど前から友人達と今日鍋をする約束をしていました。&lt;div&gt;せっかくの機会だから外で食べると高いカニでも食べようということで楽天の店に注文していたのですが、3日前に「その商品が受注可能でないのに誤って掲載されていたのでキャンセルとします」という連絡が来たとのことで、その夜に急遽あす楽対応の店に切り替えて注文し直しました。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;あす楽だと正午までの受注は翌日着になるものの、旭川の店とのことできちんと夕飯に間に合うのか半信半疑だったのですが、驚いたことに朝の10時に着きました。どうやって発送するのか知らずに注文していたのですが、航空便で届くんですね。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Amazon のお急ぎ便でもかなりすごいと思っていたのですが、まさか冷凍の食品を航空便で送ってもらえるなんて夢にも思っていなかったので驚きでした。&lt;/div&gt;&lt;div&gt;コスト的に大丈夫なのか気になりますが、利用する側としてはありがたいサービスです。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7044774945882662569-695286742696185020?l=mksmemorandum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mksmemorandum.blogspot.com/feeds/695286742696185020/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://mksmemorandum.blogspot.com/2009/12/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/695286742696185020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/695286742696185020'/><link rel='alternate' type='text/html' href='http://mksmemorandum.blogspot.com/2009/12/blog-post.html' title='あす楽がよかった'/><author><name>MK</name><uri>http://www.blogger.com/profile/18166795395826527638</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7044774945882662569.post-6437442896695289340</id><published>2009-12-03T19:55:00.020+09:00</published><updated>2010-02-10T16:29:01.585+09:00</updated><title type='text'>Google の日本語インプットメソッドを使ってみた</title><content type='html'>なにやら Google が日本語のインプットメソッドを作ったらしい。&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  white-space: pre-wrap; font-family:monospace;font-size:medium;"&gt;Google Japan Blog: 思いどおりの日本語入力 - Google 日本語入力&lt;/span&gt;&lt;/div&gt;&lt;div&gt;http://googlejapan.blogspot.com/2009/12/google_03.html&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ほぼ間違いなく世界最多のテキストデータを持っているであろう Google だからこういう利用法を思いつくのはごく自然な流れですよね。&lt;/div&gt;&lt;div&gt;関わっているのも数々の機械学習ライブラリや MeCab で知られる工藤拓さんはじめオープンソースの日本語インプットメソッドの開発者とくれば期待も高まります。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;で、使ってみているところです。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;まだあまり長く使ってないので大した感想は書けないんですが、特に不満を感じない完成度であることは分かりました。&lt;/div&gt;&lt;div&gt;とりあえず、スペースで変換、タブでいわゆる補完になっている模様。この辺は ATOK と同じですね。&lt;/div&gt;&lt;div&gt;長い慣用句、しかも最近の言い回しが補完候補に出てきたりして、手元で Google Suggest が動いてるような感覚です。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7044774945882662569-6437442896695289340?l=mksmemorandum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mksmemorandum.blogspot.com/feeds/6437442896695289340/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://mksmemorandum.blogspot.com/2009/12/google.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/6437442896695289340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/6437442896695289340'/><link rel='alternate' type='text/html' href='http://mksmemorandum.blogspot.com/2009/12/google.html' title='Google の日本語インプットメソッドを使ってみた'/><author><name>MK</name><uri>http://www.blogger.com/profile/18166795395826527638</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7044774945882662569.post-3170447158962570718</id><published>2009-11-26T01:08:00.021+09:00</published><updated>2009-12-21T17:55:05.311+09:00</updated><title type='text'>事業仕分けに関する声明発表を聞いてきた</title><content type='html'>&lt;div&gt;今日小柴ホールで最近話題の事業仕分けに関してノーベル賞・フィールズ賞受賞の先生方の声明発表があるとのことで聞きに行ってきました。&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;大筋として、今回の事業仕分けのやり方が学術分野の予算を検討するにふさわしくないとの主張には賛成です。というのも、同じ国家予算の使途とはいえ、いわゆる公共サービスの提供事業と学術的な事業は評価のされ方が大きく異なるものであるからです。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;公共サービスはすでに社会から必要とされているものを提供するのであって、その達成自体が国民の利益となる性質のものです。そのため目標達成のためのプロセスと、外部の人間にとっての評価基準が比較的明確で、その事業自体が無駄であるか否か、またそのためのコストが適切に計上されてされているかどうかを検証しやすい類のものです。&lt;/div&gt;&lt;div&gt;一方で学術的な研究活動は、研究を行っている段階でそれがどのように国民の利益につながるのか必ずしも明確ではありません。けして少なくない数の研究成果が日の目を見ずに埋まってしまうものだと思います。そしてそれらのうちごく一部がブレイクスルーにつながり、経済を潤して生活を豊かにしてきました。ですが、それがどれなのか事前に判断することは容易ではありません。(判断ができるものは国が手を出さずとも民間で積極的に研究されることでしょう。)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;今日の講演者の話に「GPS を実現するには相対論が必要」だという例が挙げられていました。もちろんアインシュタインは GPS を実現するために研究をしたわけではありません。おそらく当時の役人や政治家に「運動する物体の時の流れは遅くなるのだ」と力説したところでその研究の意義を見いだすことはできなかったでしょうし、アインシュタインに「GPS のような応用例を出して分かりやすくプレゼンしろ」と言うのも無理な話です。しかし、そのような研究でも結果的に私たちは確かにその利便性を享受しています。小柴先生は自身の研究成果を「何の役にも立たない」と述べられたそうですが、それが本当に何の役にも立たないかはまだ誰にもわかりません。(というよりも、「役に立つ」ことは未来のある時点で証明される可能性がありますが、「役に立たない」ことは人類が絶滅するまでは誰にも証明できません。)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;そういう基礎研究に対して、「現時点で役に立つことが証明できなければ継続させられない」と断罪しては大きな機会損失を生じさせる可能性があるわけで、野依先生の「科学技術や教育は短期的な費用対効果で評価されるべきではない」という主張は至極尤もであるように思います。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ただしこれはあくまで基礎研究に関することであって、スパコンの話のような応用寄りの研究に関しては、ある程度の説明責任はあると感じています。それにしたって「目指すのは2位でもよいではないか」との主張は的外れであると思いますが。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;追記: この発言は本当に疑問に思っていたためではなく相手に説明の契機を与えるためのものであったとの記述を他のブログで見かけました。その真偽は確認しておりません。&lt;/div&gt;&lt;div&gt;この件に関しては金田先生のサイトからリンクが張られていた以下のサイトの記述が参考になります。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;a href="http://www.chieichiba.net/blog/2009/11/by_paco_113.html"&gt;知恵市場: (by paco)行政刷新会議、事業仕分けのメディアと実際の違い&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;テレビで報じられているものとはずいぶん違った印象を受けました。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;メディアといえば、今日の会見でどう考えても報道には乗らない発言があったので、ここに書いておきます。&lt;/div&gt;&lt;div&gt;朝日新聞の記者の「一般の人に科学の大切さを理解してもらうには?」との質問に対して、冗談交じりに利根川先生&lt;/div&gt;&lt;div&gt;「マスコミがいけない。アメリカの有力な新聞社などでは科学部に各分野の専門家、それも Ph.D. をもっているような人を揃えている。そのため一定以上の層の科学に対する理解と基礎研究の重要性の認識が確保されている。数学でも物理学でも一人でやらせる日本の新聞社とは大きな差がある。」&lt;/div&gt;&lt;div&gt;日本の新聞社の実態がそうなのかどうかは分かりません、と申し添えておきます。&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7044774945882662569-3170447158962570718?l=mksmemorandum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mksmemorandum.blogspot.com/feeds/3170447158962570718/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://mksmemorandum.blogspot.com/2009/11/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/3170447158962570718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/3170447158962570718'/><link rel='alternate' type='text/html' href='http://mksmemorandum.blogspot.com/2009/11/blog-post.html' title='事業仕分けに関する声明発表を聞いてきた'/><author><name>MK</name><uri>http://www.blogger.com/profile/18166795395826527638</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7044774945882662569.post-1545666324992500722</id><published>2009-11-23T01:18:00.005+09:00</published><updated>2010-01-23T18:25:17.650+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Chrome Extensions'/><title type='text'>Command Line Browser 0.6</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__EmI9_bXrsg/SwlkY7Av7TI/AAAAAAAAABc/KYFQAHp0pCY/s1600/ss.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 233px;" src="http://2.bp.blogspot.com/__EmI9_bXrsg/SwlkY7Av7TI/AAAAAAAAABc/KYFQAHp0pCY/s400/ss.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5406963206955461938" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="line-height: 20px; font-size:-webkit-xxx-large;"&gt;&lt;span class="Apple-style-span"   style="font-size:130%;color:#000000;"&gt;&lt;span class="Apple-style-span"  style=" line-height: normal;font-size:16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;Warning:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;Command APIs are modified and command definitions on your PC are going to be replaced with new default commands when you update the add on.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;If you have written scripts in the config page, please back them up in advance.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" color: rgb(51, 51, 51); line-height: 20px; font-size:13px;"&gt;&lt;/span&gt;ChangeLog:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Each command can have an icon. (Defined as an URL in command definition)&lt;/li&gt;&lt;li&gt;Emphasized selected completion candidate&lt;/li&gt;&lt;li&gt;Backward candidate select by Shift-Tab key&lt;/li&gt;&lt;li&gt;Added some commands&lt;ul&gt;&lt;li&gt;Google Blog Search&lt;/li&gt;&lt;li&gt;Google Image Search&lt;/li&gt;&lt;li&gt;Google Maps Search&lt;/li&gt;&lt;li&gt;delicious Search&lt;/li&gt;&lt;li&gt;Wikipedia Japan Search&lt;/li&gt;&lt;li&gt;Yahoo! Japan Search&lt;/li&gt;&lt;li&gt;Yahoo! Japan Auction Search&lt;/li&gt;&lt;li&gt;Amazon Japan Search&lt;/li&gt;&lt;li&gt;kakaku.com Search&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Renamed "google-scholar" command to "google/scholar"&lt;/li&gt;&lt;/ul&gt;Download: &lt;a href="http://www.logos.ic.i.u-tokyo.ac.jp/~mitsuharu/software/cb.crx"&gt;Command Line Browser&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7044774945882662569-1545666324992500722?l=mksmemorandum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mksmemorandum.blogspot.com/feeds/1545666324992500722/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://mksmemorandum.blogspot.com/2009/11/command-line-browser-06.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/1545666324992500722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/1545666324992500722'/><link rel='alternate' type='text/html' href='http://mksmemorandum.blogspot.com/2009/11/command-line-browser-06.html' title='Command Line Browser 0.6'/><author><name>MK</name><uri>http://www.blogger.com/profile/18166795395826527638</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/__EmI9_bXrsg/SwlkY7Av7TI/AAAAAAAAABc/KYFQAHp0pCY/s72-c/ss.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7044774945882662569.post-997286078690479308</id><published>2009-11-19T01:39:00.008+09:00</published><updated>2010-01-23T18:25:46.075+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Chrome Extensions'/><title type='text'>Google Preview for Chrome 0.5</title><content type='html'>ChangeLog:&lt;div&gt;&lt;ul&gt;&lt;li&gt;Implemented configuration page (type "chrome://extensions/" into omnibox, and you will find it)&lt;/li&gt;&lt;li&gt;Variable image size (you can define it in configuration page)&lt;/li&gt;&lt;/ul&gt;Therefore you can do something like this...&lt;/div&gt;&lt;div&gt;&lt;img src="http://4.bp.blogspot.com/__EmI9_bXrsg/SwQmI652kGI/AAAAAAAAABU/TkglYJ0qGF8/s400/ss.png" style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 232px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5405487387444154466" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Download: &lt;a href="http://www.logos.ic.i.u-tokyo.ac.jp/~mitsuharu/software/gp.crx"&gt;Google Preview for Chrome&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7044774945882662569-997286078690479308?l=mksmemorandum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mksmemorandum.blogspot.com/feeds/997286078690479308/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://mksmemorandum.blogspot.com/2009/11/google-preview-for-chrome-05.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/997286078690479308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/997286078690479308'/><link rel='alternate' type='text/html' href='http://mksmemorandum.blogspot.com/2009/11/google-preview-for-chrome-05.html' title='Google Preview for Chrome 0.5'/><author><name>MK</name><uri>http://www.blogger.com/profile/18166795395826527638</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__EmI9_bXrsg/SwQmI652kGI/AAAAAAAAABU/TkglYJ0qGF8/s72-c/ss.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7044774945882662569.post-3470664043644293971</id><published>2009-11-06T18:21:00.011+09:00</published><updated>2009-12-17T01:46:35.724+09:00</updated><title type='text'>Command Line Browser 0.5</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__EmI9_bXrsg/SvPrXcdfWRI/AAAAAAAAABE/IInMu08BJJ4/s1600-h/ss.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 244px;" src="http://2.bp.blogspot.com/__EmI9_bXrsg/SvPrXcdfWRI/AAAAAAAAABE/IInMu08BJJ4/s320/ss.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5400919166156757266" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Warning:&lt;/div&gt;&lt;div&gt;Command APIs are modified and command definitions on your PC are going to be replaced with new default commands when you update the add on.&lt;/div&gt;&lt;div&gt;If you have written scripts in the config page, please back them up in advance.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;ChangeLog:&lt;div&gt;&lt;ul&gt;&lt;li&gt;Command APIs have been changed&lt;/li&gt;&lt;li&gt;Default command definitions are updated&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now you can get keyword suggestions in "google" command.&lt;/div&gt;&lt;div&gt;Furthermore, commands can get modification keys when it is executed.&lt;/div&gt;&lt;div&gt;Each default command opens new tab when it is triggered by "Alt-Enter" key.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Download: &lt;a href="http://www.logos.ic.i.u-tokyo.ac.jp/~mitsuharu/software/cb.crx"&gt;Command Line Browser&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7044774945882662569-3470664043644293971?l=mksmemorandum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mksmemorandum.blogspot.com/feeds/3470664043644293971/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://mksmemorandum.blogspot.com/2009/11/command-line-browser-05.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/3470664043644293971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/3470664043644293971'/><link rel='alternate' type='text/html' href='http://mksmemorandum.blogspot.com/2009/11/command-line-browser-05.html' title='Command Line Browser 0.5'/><author><name>MK</name><uri>http://www.blogger.com/profile/18166795395826527638</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/__EmI9_bXrsg/SvPrXcdfWRI/AAAAAAAAABE/IInMu08BJJ4/s72-c/ss.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7044774945882662569.post-1157862485258452883</id><published>2009-11-01T03:36:00.007+09:00</published><updated>2010-01-23T18:26:00.484+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Chrome Extensions'/><title type='text'>Command Line Browser 0.4</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__EmI9_bXrsg/SuyENjYO9AI/AAAAAAAAAA8/J2KwpdAQf7k/s1600-h/ss.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 300px;" src="http://3.bp.blogspot.com/__EmI9_bXrsg/SuyENjYO9AI/AAAAAAAAAA8/J2KwpdAQf7k/s320/ss.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5398835421680432130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ChangeLog:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Implemented configuration window.&lt;/li&gt;&lt;li&gt;Bug fix: URI encode for search commands.&lt;/li&gt;&lt;/ul&gt;Please type "chrome://extensions/" in omnibox, then click "Options" in "Command Line Browser" section.&lt;/div&gt;&lt;div&gt;You can edit, add, and delete commands.&lt;/div&gt;&lt;div&gt;I'll write short coding guide afterward.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Download: &lt;a href="http://www.logos.ic.i.u-tokyo.ac.jp/~mitsuharu/software/cb.crx"&gt;Command Line Browser&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7044774945882662569-1157862485258452883?l=mksmemorandum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mksmemorandum.blogspot.com/feeds/1157862485258452883/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://mksmemorandum.blogspot.com/2009/11/command-line-interface-for-chrome-04.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/1157862485258452883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/1157862485258452883'/><link rel='alternate' type='text/html' href='http://mksmemorandum.blogspot.com/2009/11/command-line-interface-for-chrome-04.html' title='Command Line Browser 0.4'/><author><name>MK</name><uri>http://www.blogger.com/profile/18166795395826527638</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/__EmI9_bXrsg/SuyENjYO9AI/AAAAAAAAAA8/J2KwpdAQf7k/s72-c/ss.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7044774945882662569.post-3879148729077161954</id><published>2009-10-30T03:30:00.004+09:00</published><updated>2010-01-23T18:26:25.688+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Chrome Extensions'/><title type='text'>Google Preview for Chrome 0.4</title><content type='html'>ChangeLog:&lt;div&gt;&lt;ul&gt;&lt;li&gt;Append anchor tag to thumbnails&lt;/li&gt;&lt;/ul&gt;Download: &lt;a href="http://www.logos.ic.i.u-tokyo.ac.jp/~mitsuharu/software/gp.crx"&gt;Google Preview for Chrome&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7044774945882662569-3879148729077161954?l=mksmemorandum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mksmemorandum.blogspot.com/feeds/3879148729077161954/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://mksmemorandum.blogspot.com/2009/10/google-preview-for-chrome-04.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/3879148729077161954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/3879148729077161954'/><link rel='alternate' type='text/html' href='http://mksmemorandum.blogspot.com/2009/10/google-preview-for-chrome-04.html' title='Google Preview for Chrome 0.4'/><author><name>MK</name><uri>http://www.blogger.com/profile/18166795395826527638</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7044774945882662569.post-5067689941773183658</id><published>2009-10-29T17:25:00.010+09:00</published><updated>2010-01-23T18:26:37.460+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Chrome Extensions'/><title type='text'>Command Line Browser 0.3</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__EmI9_bXrsg/SulSQA_R5SI/AAAAAAAAAA0/NwY_dtSnMJ8/s1600-h/ss.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 150px;" src="http://1.bp.blogspot.com/__EmI9_bXrsg/SulSQA_R5SI/AAAAAAAAAA0/NwY_dtSnMJ8/s320/ss.png" alt="" id="BLOGGER_PHOTO_ID_5397936063477048610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ChangeLog:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Command complement available (tab key)&lt;/li&gt;&lt;li&gt;Renamed existing commands ("o" -&gt; "open", "s" -&gt; "google")&lt;/li&gt;&lt;li&gt;"google-scholar" command&lt;/li&gt;&lt;li&gt;Placed the form at the center of the window&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Command definition has been moved to "background.html"&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Download: &lt;a href="http://www.logos.ic.i.u-tokyo.ac.jp/%7Emitsuharu/software/cb.crx"&gt;Command Line Browser&lt;/a&gt;&lt;div style="display: none;" id="FLASH_MESSAGE"&gt;&lt;/div&gt;&lt;div style="display: none;" id="FLASH_MESSAGE"&gt;&lt;/div&gt;&lt;div style="display: none;" id="FLASH_MESSAGE"&gt;&lt;/div&gt;&lt;div style="display: none;" id="FLASH_MESSAGE"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7044774945882662569-5067689941773183658?l=mksmemorandum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mksmemorandum.blogspot.com/feeds/5067689941773183658/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://mksmemorandum.blogspot.com/2009/10/command-line-browser-03.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/5067689941773183658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/5067689941773183658'/><link rel='alternate' type='text/html' href='http://mksmemorandum.blogspot.com/2009/10/command-line-browser-03.html' title='Command Line Browser 0.3'/><author><name>MK</name><uri>http://www.blogger.com/profile/18166795395826527638</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/__EmI9_bXrsg/SulSQA_R5SI/AAAAAAAAAA0/NwY_dtSnMJ8/s72-c/ss.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7044774945882662569.post-5878924259161371917</id><published>2009-10-28T04:39:00.005+09:00</published><updated>2010-01-23T18:26:47.572+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Chrome Extensions'/><title type='text'>Updated Command Line Browser</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__EmI9_bXrsg/SudMhbRUPYI/AAAAAAAAAAs/aYewc1VLS0M/s1600-h/ss.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 106px;" src="http://3.bp.blogspot.com/__EmI9_bXrsg/SudMhbRUPYI/AAAAAAAAAAs/aYewc1VLS0M/s320/ss.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5397366815566609794" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ChangeLog:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Incremental search for commands available&lt;/li&gt;&lt;/ul&gt;Download: &lt;a href="http://www.logos.ic.i.u-tokyo.ac.jp/~mitsuharu/software/cb.crx"&gt;Command Line Browser&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7044774945882662569-5878924259161371917?l=mksmemorandum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mksmemorandum.blogspot.com/feeds/5878924259161371917/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://mksmemorandum.blogspot.com/2009/10/updated-command-line-browser.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/5878924259161371917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/5878924259161371917'/><link rel='alternate' type='text/html' href='http://mksmemorandum.blogspot.com/2009/10/updated-command-line-browser.html' title='Updated Command Line Browser'/><author><name>MK</name><uri>http://www.blogger.com/profile/18166795395826527638</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/__EmI9_bXrsg/SudMhbRUPYI/AAAAAAAAAAs/aYewc1VLS0M/s72-c/ss.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7044774945882662569.post-7182005141217273658</id><published>2009-10-27T03:28:00.009+09:00</published><updated>2010-01-23T18:26:58.225+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Chrome Extensions'/><title type='text'>Updated Google Preview for Chrome</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__EmI9_bXrsg/SuXtx9xpwDI/AAAAAAAAAAk/coowv12MDg4/s1600-h/ss.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 240px; height: 320px;" src="http://4.bp.blogspot.com/__EmI9_bXrsg/SuXtx9xpwDI/AAAAAAAAAAk/coowv12MDg4/s320/ss.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5396981171125600306" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ChangeLog:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Changed thumbnail apis from &lt;a href="http://img.simpleapi.net/"&gt;SimpleAPI&lt;/a&gt; to &lt;a href="http://capture.heartrails.com/"&gt;HeartRails&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Changed thumbnail size to 160 x 120&lt;/li&gt;&lt;li&gt;Adjusted style sheet&lt;/li&gt;&lt;/ul&gt;It looks better now.&lt;div&gt;Enjoy!&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Download: &lt;a href="http://www.logos.ic.i.u-tokyo.ac.jp/~mitsuharu/software/gp.crx"&gt;Google Preview for Chrome&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7044774945882662569-7182005141217273658?l=mksmemorandum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mksmemorandum.blogspot.com/feeds/7182005141217273658/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://mksmemorandum.blogspot.com/2009/10/updated-google-preview-for-chrome_27.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/7182005141217273658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/7182005141217273658'/><link rel='alternate' type='text/html' href='http://mksmemorandum.blogspot.com/2009/10/updated-google-preview-for-chrome_27.html' title='Updated Google Preview for Chrome'/><author><name>MK</name><uri>http://www.blogger.com/profile/18166795395826527638</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__EmI9_bXrsg/SuXtx9xpwDI/AAAAAAAAAAk/coowv12MDg4/s72-c/ss.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7044774945882662569.post-4502407893349049008</id><published>2009-10-25T23:17:00.036+09:00</published><updated>2010-01-23T18:27:10.169+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Chrome Extensions'/><title type='text'>Command Line Interface for Chrome</title><content type='html'>&lt;img src="http://1.bp.blogspot.com/__EmI9_bXrsg/SuR0uGdu66I/AAAAAAAAAAU/4lAN_PO-Umg/s320/ss.png" style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 112px;" alt="" id="BLOGGER_PHOTO_ID_5396566588854823842" border="0" /&gt;I have been using Mozilla Firefox with &lt;a href="https://addons.mozilla.org/ja/firefox/addon/4891"&gt;Vimperator&lt;/a&gt;.&lt;br /&gt;It is not ported to Chrome, therefore I am using &lt;a href="http://ss-o.net/chrome_extension/#ChromeKeyconfig"&gt;ChromeKeyconfig&lt;/a&gt;, but it does not support command line operations like "open http://~~~" which are available on Vimperator because this add on focuses only on key configuration.&lt;br /&gt;(I think this should be as-is because key event reassignment and command line interface are quite different functions to be implemented in one add on.)&lt;br /&gt;&lt;br /&gt;Then I wrote a simple add on which enables command line operations on Chrome.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Download: &lt;a href="http://www.logos.ic.i.u-tokyo.ac.jp/~mitsuharu/software/cb.crx"&gt;Command Line Browser&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After install this, please type a colon.&lt;br /&gt;An input field will appear on your screen, and you can execute some actions.&lt;div&gt;&lt;div&gt;Only 2 actions are implemented so far, "open url" (command "o") and "search with google" (command "s").&lt;/div&gt;&lt;div&gt;I'd like to append other functions  afterward, and if you'd like to do it by yourself, you can do it by editing "Command definitions" part of script.js.&lt;br /&gt;The script is so simple that you will be able to edit it easily.&lt;br /&gt;(If you need more detailed information, please tell me.)&lt;br /&gt;&lt;br /&gt;Finally, If you know how to manipulate tabs and windows from Chrome extentions, I would appreciate it if you could write it in comments.&lt;br /&gt;I tried to get window size with "chrome.windows.getCurrent" or something like that, but it wouldn't let me touch windows.&lt;div style="display: none;" id="FLASH_MESSAGE"&gt;&lt;/div&gt;&lt;div style="display: none;" id="FLASH_MESSAGE"&gt;&lt;/div&gt;&lt;div style="display: none;" id="FLASH_MESSAGE"&gt;&lt;/div&gt;&lt;div style="display: none;" id="FLASH_MESSAGE"&gt;&lt;/div&gt;&lt;div style="display: none;" id="FLASH_MESSAGE"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Oct 29&lt;/div&gt;&lt;div&gt;Resolved.&lt;/div&gt;&lt;div&gt;Most chrome.* APIs are not accessible from content script.&lt;/div&gt;&lt;div&gt;(Refer: &lt;a href="http://code.google.com/chrome/extensions/content_scripts.html"&gt;Official Developer Document&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;But we can get window size by window.innerHeight and window.innerWidth.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="display: none;" id="FLASH_MESSAGE"&gt;&lt;/div&gt;&lt;div style="display: none;" id="FLASH_MESSAGE"&gt;&lt;/div&gt;&lt;div style="display: none;" id="FLASH_MESSAGE"&gt;&lt;/div&gt;&lt;div style="display: none;" id="FLASH_MESSAGE"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7044774945882662569-4502407893349049008?l=mksmemorandum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mksmemorandum.blogspot.com/feeds/4502407893349049008/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://mksmemorandum.blogspot.com/2009/10/i-have-been-using-mozilla-firefox-with.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/4502407893349049008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/4502407893349049008'/><link rel='alternate' type='text/html' href='http://mksmemorandum.blogspot.com/2009/10/i-have-been-using-mozilla-firefox-with.html' title='Command Line Interface for Chrome'/><author><name>MK</name><uri>http://www.blogger.com/profile/18166795395826527638</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/__EmI9_bXrsg/SuR0uGdu66I/AAAAAAAAAAU/4lAN_PO-Umg/s72-c/ss.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7044774945882662569.post-5829743282359922523</id><published>2009-10-25T02:22:00.004+09:00</published><updated>2010-01-23T18:27:20.529+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Chrome Extensions'/><title type='text'>Updated Google Preview for Chrome</title><content type='html'>Updated Google Preview for Chrome to cooperate with &lt;a href="http://ss-o.net/chrome_extension/#AutoPatchWork"&gt;AutoPatchWork&lt;/a&gt;.&lt;br /&gt;Now it receives events thrown by AutoPatchWork and appends thumbnails for succeeding search results.&lt;br /&gt;&lt;br /&gt;Download: &lt;a href="http://www.logos.ic.i.u-tokyo.ac.jp/%7Emitsuharu/software/gp.crx"&gt;Google Preview for Chrome&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7044774945882662569-5829743282359922523?l=mksmemorandum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mksmemorandum.blogspot.com/feeds/5829743282359922523/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://mksmemorandum.blogspot.com/2009/10/updated-google-preview-for-chrome.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/5829743282359922523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/5829743282359922523'/><link rel='alternate' type='text/html' href='http://mksmemorandum.blogspot.com/2009/10/updated-google-preview-for-chrome.html' title='Updated Google Preview for Chrome'/><author><name>MK</name><uri>http://www.blogger.com/profile/18166795395826527638</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7044774945882662569.post-9161586471683317372</id><published>2009-10-23T20:54:00.012+09:00</published><updated>2010-01-23T18:27:31.621+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Chrome Extensions'/><title type='text'>Google Preview for Chrome</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__EmI9_bXrsg/SuR-L_GM8CI/AAAAAAAAAAc/idGp3gIRDB8/s1600-h/ss.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 223px; height: 320px;" src="http://2.bp.blogspot.com/__EmI9_bXrsg/SuR-L_GM8CI/AAAAAAAAAAc/idGp3gIRDB8/s320/ss.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5396576997877805090" /&gt;&lt;/a&gt;&lt;br /&gt;I've begun to use Google Chrome, but I can't find any add on works like Google Preview for Mozilla Firefox.&lt;br /&gt;&lt;br /&gt;Therefore I made it for myself.&lt;br /&gt;&lt;br /&gt;Download: &lt;a href="http://www.logos.ic.i.u-tokyo.ac.jp/~mitsuharu/software/gp.crx"&gt;Google Preview for Chrome&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7044774945882662569-9161586471683317372?l=mksmemorandum.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mksmemorandum.blogspot.com/feeds/9161586471683317372/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://mksmemorandum.blogspot.com/2009/10/google-preview-for-chrome.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/9161586471683317372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7044774945882662569/posts/default/9161586471683317372'/><link rel='alternate' type='text/html' href='http://mksmemorandum.blogspot.com/2009/10/google-preview-for-chrome.html' title='Google Preview for Chrome'/><author><name>MK</name><uri>http://www.blogger.com/profile/18166795395826527638</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/__EmI9_bXrsg/SuR-L_GM8CI/AAAAAAAAAAc/idGp3gIRDB8/s72-c/ss.png' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
