2009/04/30

walsh-hadamard shor -short

ちょっと量子コンピューティングなこと調べてるんですが
何で注目されるようになったかってうと Shor って人が考えた
素因数分解が量子計算使うとすげー速いってことなので
とりあえずその辺分かったらいいんじゃないかなって思って

で、そうそう、前から検索はしてるんですけどね
"qubit" "for mathematicians" filetype:pdf」とか
量子コンピュータっていうとやっぱ量子力学の説明から入ってて
光子とか偏光とかいう話から説明されてるのが多かったんだけど
そもそもコンピューティングが分かってないんだから読めないのね

こりゃもう少し真面目に文献捜すかと思って、プレプリントサーバ見ました
とりあえず arXiv かなって感じで http://arxiv.org/find/cs
みつけました
A Physics-Free Introduction to the Quantum Computation Model
そうだよね! ボク別に物理が勉強したいんじゃなかったんだ!!
計算とか回路とか可逆な計算とか書いてあって少し賢くなりました

で、Hadamard 作用素とか大切そうだったけど何で? って思って
ついでに Shor のことももう少し分かったらいいなと思って検索したら
Google 先生は Shor 先生のことを short て勘違いしてけつかる、キーーーー
なんで -short してやりました
Quantum Computing ってプレゼン資料が出てきたり
修論の概要書みたいのとか RIMS の講究録とか出てきて
とりあえず読むもの沢山でどうしよう、って感じになってしまいました、飽和

An Introduction to Quantum Computing for Non-Physicists
こんなのもあった、でも、やっぱ偏光の話からなんだなぁ

2009/04/29

vim dvorak

Emacs から Vim に移行しようかなぁと考えています
といっても Emacs もそんな今使いこんではいないというのが現状
SKK 使うなら Emacs だよな、とは思っているんですが
ネットワーク越しで emacsclient とか使ってまで使うものか? っていう
sshfs を使え? それもそうなんですが....

Vim の最大の問題点は Dvorak で使いづらい
ということかというとそうでもないかなと思っていて
確かに右手だけでカーソル移動ってのは難しいですが
左手で上下/右手で左右ってことには一応なってます
nethack ができるようになるかっていうとそれはちょっと分かりませんが

で、ググると Dvorak で Vim 使っていこうぜ! っていう人とか
vi/vim tutorial for Dvorak
ノーマルモード? では QWERTY でいこうぜ! っていう人とか
dvorak.langmap.vim バグ修正版 - セサミン・ラボ
いらっしゃるので何となく心強くもなるっていうもんです

それとも、素敵な第三のエディタが登場するんでしょうか、何かないかな

2009/04/28

sage math

sage っていう数式処理ソフトがありますが、Python で書かれています
既に微分もできない身体になっていたのでコンピュータに微分してもらおうと思い
Maxima でも良かったんですが一度使ってみたいと思ってたので入れてみました

Sage: Open Source Mathematics Software

ちなみに sage というのは Firefox にそういう名前の extension があったり
Debian の version にも名前があったり (それは sarge)
何よりも2ちゃんねる用語だったりして
個人的には厄介な名前です、検索するにも sage じゃ出てこないし

近いかなと思って韓国から落とそうとして 400MB もあってびっくりしたんですが
展開してみたら local/bin に 300 コを越えるコマンドがあって納得しました
python/R/Singular/easy_install/gap/gp/hg/ipython/lisp/maxima/sqlite3/surface
と、知った名前も沢山あってそんな環境丸ごと提供しているとは

で、ちょっと計算してみました
$ ./sage
----------------------------------------------------------------------
| Sage Version 3.4.1, Release Date: 2009-04-21 |
| Type notebook() for the GUI, and license() for information. |
----------------------------------------------------------------------
sage: var('y')
y
sage: f=(1-x)*(1-y)/(1-x*y)^2
sage: log(f).diff(x)
(1 - x*y)^2*(2*(1 - x)*(1 - y)*y/(1 - x*y)^3 - (1 - y)/(1 - x*y)^2)/((1 - x)*(1 - y))
sage: log(f).diff(x).partial_fraction()
1/(x - 1) - 2*y/(x*y - 1)
sage:
Exiting SAGE (CPU time 0m1.78s, Wall time 2m57.36s).
Exiting spawned Maxima process.

y を変数として用意して (x は最初から変数みたい)
f っていう有理式を用意して
その log の x での微分を計算させたら良く分からなくなったので
Ctrl-p で前のを呼び出して更に部分分数展開させてみました
で Ctrl-d で抜けたんですが "Exiting spawned Maxima process." ってことで
影で Maxima が動いてくれてたみたいです

IPython が動いているのか、f. まで打って tab 打つと method の一覧が出たり
help も使えてマニュアルも読めてしまいます

数学者は Lisp くらいスラスラなのかもしれませんが
Python が使えると module とか書けるんだとすると
ちょっと sage 素敵だなぁと思うんですが実際はどうなんでしょうか...
簡単な電卓としてくらいなら直ぐ使えるようになったけど
いかんせん大きいなぁ

2009/04/25

client-hello ie firefox RSA SHA1 MD5

SSL の暗号スイートは誰が決めてるのよ? って話になって
この話するの 2 度目なはずなんだけど曖昧な記憶
なので SSL について検索したらサーバが決めてました
client hello でクライアントが使えるリストを提示して
server hello で「じゃぁこれね」ってサーバが選んでるそうです

「じゃぁ、ブラウザは何を提出してるわけ?」って知りませんよねぇ
まぁパケットキャプチャーすれば分かるしサーバいじってもいいのかと思ったら
wireshark で全て解決ということが分かってはいおしまい

というわけにもいかなかったのですが
まぁこんだけ道具揃ってれば絶対誰か調べてるはずなので
ググったらちゃんといらっしゃいました
Tatsuyoshi tech diary
やぁ、すばらしい

ブラウザによってバラバラですね
勉強になりました

2009/04/24

csv python

csv から tsv にしようと思いました
たまに csv だとダメだけど tsv なら平気っていうことに出会ったり
そもそも csv より tsv の方が好きです
ググりました
一杯出てきます

object 指向だと思うともう少しちゃんと書いた方がいいのかしら?と思いつつ
import csv
import fileinput
import sys

tsv = csv.writer(sys.stdout,csv.excel_tab)

for row in csv.reader(fileinput.input()):
tsv.writerow(row)
まぁ簡単でいいや、という気分。
ほんとに変換すればいいんなら
tsv.writerows(csv.reader(fileinput.input()))
でいいのかもしれないけど自重

mod_wsgi

mod_wsgi を使って Django の project を deploy しようとしました
でも WSGI のことは
WSGIとPythonでスマートなWebアプリケーション開発を:第1回 WSGIの概要|gihyo.jp … 技術評論社
で復習しないと曖昧にしか理解できてません、middleware とか
昔一度読んでるのであとは勘が頼りです

apache に mod_wsgi を読ませると wsgi-script という Handler が登録されるみたい
ConfigurationGuidelines - modwsgi - Basic configuration guide for mod_wsgi. - Google Code によると
The WSGI application contained within the code file specified should be called 'application'.

なので
wsgi-script として呼ばれた file に application という関数が定義されていれば
あとは server に渡して動かしてくれます

どうやって wsgi-script だと認識させるかというと
AddHandler, SetHandler, WSGIScriptAlias などを用います
WSGIScriptAlias は ScriptAlias と同じだと思えば OK なはず
これさえ設定してやれば
mod_wsgiでDjangoを動かすまでを淡々と記録する - スコトプリゴニエフスク通信
にあるような sample script はもぉ動くはず
あとは urls.py とか settings.py いじると Django も動く、tryl & error で

でも、これ 1 つの url で動くようになるけど
urls.py にある沢山の URL には対応しない??
試しに沢山ファイル作ったら動いたけどそれじゃ格好悪いし
1 つのファイルで全部受けることにしてあと PATH_INFO っぽい感じでっていうと
AddHandler だと /mysite/index.wsgi/vote/3 とかなるし、格好悪いし
(つうか本当は PATH_INFO ではないと思うんだけど、PATH_INFO って何だ?)
で〜、沢山検索しました
あー、何で ".htaccess" なんて入ってるかっていうと
どうも最初に system の設定 file をいじってるような説明があったので
local で何とかならないかなと思ったからなんですけど

で、結局どうしたかっていうと
SetHandler で拡張子無しで wsgi-script と思わせることにしました
え〜
でもまぁ、仕方ないですよね
Rails のときは lighttpd をサーバにして apache からそれを呼んだんだけど
Django でもそういうのできるのかな?
何かそっちの方がシンプルな気がしてきてるんだけど
また後日ググりましょう

2009/04/23

new.instancemethod

Python で既存クラスに instance method 足せないの? と思ったので
調べてたら結局 new.instancemethod に辿りつきまして検索すると
クラスの挙動まとめ #2 - 大カフェインに辿りつきました
やぁ、ありがたい

#1 があるので #1 から読むと良いですよね
とりあえず、function が class とか instance に対応付けられると (これも束縛と言うの?)
instance method に返信するっていうのが分かりました
あと、class の定義に新旧あるのも知れたので良かったです

小学生の日記みたいになってるな