White scenery @showyou, hatena

If you have any comments, you may also send twitter @shsub or @showyou.

python

8本の道から1本の道を選ぶ

8本の道を選ぶときの期待値を求めるとかいう問題があったのでやってみた 愚直な方法 i 1 up 1.000000 p 0.125000 p*up 0.125000 E 0.125000 i 2 up 0.875000 p 0.142857 p*up 0.125000 E 0.375000 i 3 up 0.750000 p 0.166667 p*up 0.125000 E 0.750000 i 4 …

PILで画像の色を変える

http://blog.moro-tyo.net/2010/02/chinkolize.html こんな記事があったので変換するものをpythonで書いてみた。 HTML5のcanvasクラスでも出来そうですね。

werkzeug.Cache, memcached

werkzeugはeasy_installで入れた.http://werkzeug.pocoo.org/documentation/dev/contrib/cache.html >>> from werkzeug.contrib.cache import SimpleCache >>> d = SimpleCache(default_timeout = 60) >>> d.set("bar", "1") >>> d.get("bar") '1' (1min af…

TwitterでOAuth使う

自分用のメモ。あとでまとめるかも。以降Twitterと書いてるけど他のOAuthの認可を出すサービスプロバイダが出たらそれらをTwitterと置換してください。 参考 OAuthのやり取りを読み取ってみる:http://d.hatena.ne.jp/furyu-tei/20090929/1254225568 tweepyで…

フィボナッチをワンライナーで

書こうと思ったら意外と時間かかった。 $ python -c 'import sys; a=[]; a.append(1); a.append(1); [a.append(a[-1]+a[-2]) or sys.stdout.write(str(a[-3]) + "\n") for i in range(10)]' 1 1 2 3 5 8 13 21 34 55 http://www.nishiohirokazu.org/blog/200…

挨拶分類

分類できるようにしてみた。あれ?前もやったっけ?今回はsqlalchemyへの対応を見越してみた。 ソース classify.pyとかでもつけてください。 http://gist.github.com/287783 実行結果 $ python classify.py move class [(2, 1)] おはよう 1 おはよう おはよ…

multiprocessing

細かいことは良く理解してないけど、CPythonの場合threadingとか使ってもGILのおかげで同時に1スレッドしか回らないので、複数コアで回したりとかしたいときにはプロセスを複数立ててデータを共有したりする。(・・という認識でいいのか?) それはともかくmu…

Hack-a-thon #3

今回はCouchDBのハンズオンを受けてた。Futonを使ったデータの作成とか、curlを使ったhttp経由の操作、さらにmap/reduceを使ったクエリ相当の操作を行った。 ここまで知っておけば家でも使えそう。ところでKVSどのへんがいいか聞いてみたけど、CouchDBはドキ…

@propertyデコレータ

googleのpythonコーディング規約の邦訳(http://works.surgo.jp/translation/pyguide.html)見てたら@propertyなんてのをあることを知った。知らんかった。こんなことできるのね。

今日の料理3

http://d.hatena.ne.jp/showyou/20091217/1261061508こんな感じに変えた。あまり変わってないかと # -*- coding:utf-8 -*- import analyzer #from nose.tools import assert_equal class Test_removeCharacter(): def testHTTP(self): assert self._rc(u"検…

noseが残念な話

1.import nose;nose.main()ができない これうちの環境(Ubuntu 9.04 x86, python 2.6.4)だけなのかもしれないけど def testHoge(): ... if __name__ == '__main__': import nose nose.main() でpython test.pyとやっても0 testsになる。 2.utf-8対応が貧弱 こ…

今日のお料理2

http://d.hatena.ne.jp/showyou/20091213/1260682332 # -*- coding:utf-8 -*- import analyzer class Test_removeCharacter: def testHTTP(self): a = analyzer.RemoveCharacter(u"検索サイト http://www.google.com") assert a == u"検索サイト " def testT…

今日のお料理

無駄に長くて鬱陶しいので短縮させましょう。 reg = re.compile('http://\S+\s*') regTag = re.compile('\[.*\]') regTag2 = re.compile('\*.*\*') regBrowsing = re.compile('(B|b)rowsing:.*') regRT = re.compile("(RT|QT):.*") regHashtag = re.compile(…

通常対psyco

Numpy速い! http://chick.g.hatena.ne.jp/allegro/20091117/p1 とかあったんだけど、これpsyco使えばリスト内包でも早くなんじゃね?とか思って書いてみた。 といっても上の文章だとどう書きゃいいのかわからないので自分で書き直してみた。そのため行列じ…

Listのmemberを一括でfollowスクリプト

つくったー が、SPAMに使われる可能性があるので公開をちょっと待ってみる。 こんな感じにfollowされます。 http://gyazo.com/8b514ff38b40ffbf5ac77692c32bd60d.png

twisted.web.clientでBasic認証

どうも標準ではできないみたいなので、以下のurlのpatchを参考にして手動で書き換えてみた。 差分ファイルを置いておくが、patchとして当てるには適宜書き換える必要があると思う [Twisted-Python] PATCH: twisted.web.client Basic/Digest Authentication h…

wxPython+twisted.web.client.getPage

が動いた。 最初どうしてもgetPage中に画面が固まって困ったのだけど、よく調べたらtwisted使うときはwxApp.MainLoop()を使うんじゃなくてreactor.registerWxApp(app)してreactor.run()を呼ばなきゃ行けない事を知った。 あと非同期処理の追加の仕方がわかっ…

自前でスケジューラっぽいものを書いてみた

cron風味。ってかそれならcronのソース読めという感じですが。 httpも絡むとちょっと面倒かなぁ。httpのみではないのでtornadoとかは使ってないんだけど、httpも使うしtwisted/tornadeみたいなフレームワークを検討すべきなんすかね?別に待ち受けるわけじゃ…

Scrapy

Python向けスクレイピングライブラリ「Scrapy」 http://www.moongift.jp/2009/10/scrapy/ 本家 http://scrapy.org/ ぱっとチュートリアル見たところ、フレームワーク作ってて使いづらそうなんですけど(Moongiftにあがってるのはインタラクティブシェル)、Hpr…

順列を作るプログラム

先日のcodejamで痛い目にあったので、今更だけど書いてみた。思ったよりあっさり書けて唖然。ただしDeepCopyしてたりして効率は良くないと思う。 def p(str): print str def permutation(array): """ make permutation list >>> permutation(['a','b']) ['ab…

単層パーセプトロンの再急降下法を書いてみた

http://d.hatena.ne.jp/syou6162/20080709/1215604515 これを見よう見まねで下のpythonコードにしてみた。http://gist.github.com/188381 重い コードがまずいんだろうなぁ。 結果が違う 実行結果 a0,a1,a2=-5.858603,10.966796,10.099601 --- syouせんせ an…

numpy

先日の日記のコメントにあったnumpy使ってみる >>> import numpy >>> points = [ [1,2],[2,3],[3,1],[-2,-1],[-3,-3],[-2,-4] ] >>> xy = numpy.array(points) >>> xy array([[ 1, 2], [ 2, 3], [ 3, 1], [-2, -1], [-3, -3], [-2, -4]]) >>> xy.transpose()…

分類してみよう!1

今日やる。 課題 入力された点の集合に対し、kmeansによるクラスタリングで2つの集合に分類する。 (追加)新たに入力された点が2つのうちどちらに含まれるか やってることは「集合知プログラミング」の3.6の車輪の再開発みたいなもんだな。 実装(10:05ソース…

matplotlib触ってみた

ずっと触ろうと思ってたが放置してたmatplotlibを触ってみた。以下の記事を参考にしながら書いてみた。 良いもの。悪いもの。:matplotlibの簡単な説明 http://handasse.blogspot.com/2007/06/matplotlib.html 良いもの。悪いもの。:matplotlibによる線種や…

Google Code Jam-Qualification Round

さりげなく参加してた。この手のイベントは初めて。TopCoderとかも参加したことがない。 Qualification Round,AがLarge含めてOK,Cはshortのみで43点で通過。ただ他の人のコードと比べてもコードが酷い。否応なしにコードの酷さとか理解できるので勉強するに…

文字列の連結とdoctestの練習

ちょっと練習がてら。アルファベット通しなら間にスペースをいれて、アルファベット+漢字とかならスペース入れずにつなげる。ついでにdoctestも。 どうでもいいがwstrcatって名前は微妙におかしい気がする。 #!/usr/bin/env python # -*- coding: utf-8 -*-…

nose

下の続き。doctestじゃなくてunittestで書く。 ここではunittestの補助にnoseを使う。ubuntu 9.04にはnoseがaptで入れられるっぽいのでaptitude install python-noseとかやって入れる。 test_compare.py def test_compare(): assert 1==1 if __name__ == '__…

heapqとdoctest

昨日話を聞いたのでちょっと試してみた。http://www.python.jp/doc/release/lib/module-heapq.htmlこの辺参考に。 >>> from heapq import heappush, heappop >>> heap = [] >>> data = [8, 3, 5, 9, 7, 1, 4] >>> for item in data: ... heappush(heap,item)…

Code Reading:10

聴いてきた。heapqとpythonのtest手法のお話。 ちょっと細かい感想はtwitterに書いてたので翌朝にでも上げるとして、おおざっぱな感想を。 heapqは配列単体でツリー構造を作るにはよさげですね。heapqの実装ってpythonなのかしら?pythonのtestはいずれやっ…

ログ

sqlalchemy.engine_from_configに渡す引数辞書、"sqlalchemy.echo" :"True"ってのを追加すれば( sqlalchemy.engine_from_config ( { "sqlalchemy.url" : "mysql://~" , "sqlalchemy.echo" : "True"})みたいな感じで)、mysqlのログが出力される。