python

ORMで木構造を扱う

リレーショナルDBで木構造を扱うためにPython向けのORマッパーを書きました。 yatt / python-tree-data-object-relational-mapper今は隣接リストモデルしか実装していないけれど入れ子集合モデル(https://secure.wikimedia.org/wikipedia/en/wiki/Nested_set…

python + wsgiで2フェーズ・コミットするKVSを作った

データベースの学習として2フェーズ・コミットを理解するために、2フェーズ・コミットで同期するKVSをwsgiアプリケーションとして作成しました。サーバとクライアント合わせて220行ぐらいです。https://github.com/yatt/2phase-commit-kvs 下で実行してるア…

データベースのテーブル結合アルゴリズムを調べた

入れ子ループ 一行づつ、全てのキーとチェックをかけて同じかチェックするよ ソートマージ 2つのテーブルをソートしてからチェックするのでキーの比較回数少ないよ セミジョイン 分散DB前提。キーをリモートホストに送信して部分的な結合結果を受け取って…

twitterlibをアクティビティに対応させた

twitter webのUIが変更されて、「アクティビティ」というタブが追加されました。フォロワーのfavoriteやretweetなどのイベントを通知してくれます。chromeのコンソールなどでアクセスしているURLを調べてみると、/i/activity/about_me.json /i/activitt/by_f…

PyPyのStringBuilderの処理速度を試す

PyPy Status BlogのエントリでPyPyにStringBuilderという高速でmutableな文字列がある事を知り、処理速度をためしてみました。StringBuilderはやい。 #!/usr/bin/env pypy from random import choice from string import ascii_letters as ls import time im…

PythonのGUIアプリを(VB.NETで)書こう

どーも。今回はPythonのクラスをVB.NETから呼び出して、既存PythonソースとGUIとの橋渡しをしたいと思います。 Pythonのベジェ曲線クラスをVB.NETから呼び出してハートマークを書いたの図 PythonでのGUI開発 Pythonで書いたスクリプトの機能をGUI化したい。…

Pythonでベジェ曲線クラスを実装してwxPythonで動かす

中学生でもわかるベジェ曲線を読んでなるほどなーと思い、理解の確認でPythonでベジェ曲線のクラスを実装した。 #! /usr/bin/python2.7 # coding: utf-8 # bezier.py # ref: http://ruiueyama.tumblr.com/post/11197882224 def pt(p, q, t): assert 0 <= t <…

python2.7からPriorityQueueが標準モジュールに入ってた

python2.7からQueueモジュールにスタック(LIFOQueue)と優先順位キュー(PriorityQueue)が入ってたので使ってみた。ダイクストラ法。グラフはwikipediaのダイクストラ法に載ってるやつから作った。 #! /usr/bin/python2.7 import Queue as queue nnodes = 6 di…

PythonのsmtplibでGmailからメールを送信する

前回のエントリの内容を踏まえてpythonでgmailのsmtpサーバを叩いた。 import smtplib host, port = 'smtp.gmail.com', 465 username, password = 'xxx@gmail.com', 'xxx' msg = """From: %s To: %s Subject: python smtplib hello world . """ % (username,…

appengineでアプリケーションを作ってみて注意点・思った事

Google Code Jamに提出されたソースを閲覧するCodejam Source Viewerを作ったときに感じたappengineでアプリケーションを作る際の注意点をメモ. データストア編 アップロードできる静的ファイルは最大3000個まで。 ローカルにプロキシを置いてクロスサイトAj…

ガラケーからfavstar.fmのrecentを見るPython CGIスクリプト

手持ちのガラケーだとどうしようもない感じなので, ガラケーからfavstar.fmの最新のfav一覧を見られるようCGIスクリプトをぱぱっとかきました.

Google App EngineでUPDATE文/DELETE文を発行するモジュールを書いた

Google App EngineのGQLはSQLライクの構文が使えますが、実際にはSQLと比べると機能がかなり制限されています。その中でも開発時に最も面倒な制限のひとつに、一度のクエリで取得できるエンティティの数は1000個までという制限があります。つまり、データモ…

Google Code Jamに提出されたソースを閲覧するアプリケーションcodejam source viewerを作りました

Google App Engine上で、Codejam Source Viewerというサイトを作りました。Google Code Jamでsubmitされたソースコードを手軽に閲覧するためのアプリケーションです。公式のスコアボードでは、 特定のユーザを検索できない どの言語を使っているのか不明 ソ…

Ubuntu 10.04.1 LTSにmecab0.97をインストールする

aptで探してもなぜかpython向けバインディングは無いわsetup.pyはこけるわで無駄に時間くったので備忘録。 辞書のデフォルト文字コードがeuc-jpらしくutf-8の辞書が無いとコンソールの端末エンコーディングに合わない。 それからsetup.py installで共有ライ…

SDKのソースを改変してAppEngineのパスワード入力を省略する

ただでさえ時間がかかるアップロードやremote apiを使うたびにパスワードを聞かれるのがうんざり。 ところでLinux向けのAppEngine SDKはPythonで書かれている。そう、挙動が気に入らないならソースを書き換えればいいじゃない。 1. Googleアカウント情報を保…

リモートホスト上でappengine開発サーバを起動する

appengineをいじっています。Djangoのときも同様のとこでちょっとだけ詰まったのでメモ。開発用サーバをwww.hoge.comで起動する場合の例。 $ python dev_appserver.py -a www.hoge.com /path/to/project

aojtools0.1.5をリリースしました。

aojtoolsを更新しました。AOJのサーバのドメインがrose.u-aizu.ac.jpからjudge.u-aizu.ac.jpに変更されたため対応しました。http://pypi.python.org/pypi/aojtools/0.1.5

Python2とPython3でHTTP POST+Cookie処理の比較

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)作者: 山本陽平出版社/メーカー: 技術評論社発売日: 2010/04/08メディア: 単行本(ソフトカバー)購入: 143人 クリック: 4,320回この商品を含むブログ (183件) を見る Python2系でurllibと…

東北大学の放射線モニタリング情報を取得する

福島の原発事故を受けて、東北大学が以下のurlで放射線のモニタリング情報を公開しています。http://www.bureau.tohoku.ac.jp/anzen/monitoring/ここから情報を取ってくるスクリプトを書きました。/jsonとかでデータにアクセスできるといいんだけどな。 # co…

Windows7, 64bitのPythonでPIL.Image.showを使えるようにする

Windows7で64bitのpython2.6にPILライブラリをインストールしたが、PIL.Image.showが使えない。 メソッドで使う_imagingモジュールが32bitバイナリでDLLのロードに失敗するみたいだ。自前でビルドとかものすごく面倒そうな感じだったのでどうしようかと思っ…

IronPythonで画面をキャプチャする

.NETではSystem.Drawing.GraphicsのCopyFromScreenでキャプチャができるらしい。IronPythonでキャプチャを実行した。参考: http://lassy-tech.blogspot.com/2008/01/c_24.html http://d.hatena.ne.jp/Wacky/20070101/1167665225 import clr import System c…

pythonのzipfileモジュールがだめ文字をうまく扱ってくれないのを解決する

zipfileモジュールが駄目文字をうまく扱えない windowsで、フォルダを右クリック→送る→圧縮(zip)フォルダで作成したzipファイルをzipfileモジュールで正しく解凍できないケースに遭遇した。原因がわからず調べてみたら、どうやらsjisのだめ文字というのの…

progressbar for urllib.urlretrieve

地震で大変。ライフラインが止まってしまいました。困った困った。 urllib.urlretrieveにはreport_hook引数が用意されていて、callableを渡すとダウンロード状況をコールバックして知らせてくれます。シグネチャはこんな感じです。 report_hook(blocks_read,…

Impressive Python Syntax

list comprehension PEP 202 -- List Comprehensions [n for n in range(10) if n % 2 == 0] sample: import re lst = sum(re.findall('\d+', line) for line in open('lines.txt'), []) generator PEP 289 -- Generator Expressions def gen(n=0): while Tr…

フィボナッチ数を計算する方法をまとめてみた

Project Eulerで巨大な数のフィボナッチ数(10^14番目ぐらい)の剰余を求める必要があったので、関連するアルゴリズムについてまとめました。行列を使った最適化については@nico_shindanninさんにヒントをいただきました。 定義通り求める すぐに限界のくる方…

PythonのクラスをGUIで扱いやすいようラップ

既存のクラスのGUIを書こうとすると既存コードを弄る必要がある件 GUIプログラムを書く際に、ユーザの入力に対応して内部の状態を変更して、GUIを手動で更新みたいのは面倒すぎるので、内部の状態を更新するとUIは自動で更新される仕組みにしたい、と思うわ…

IronPythonでマルチスレッドプログラミング + Python3.2RC2のGIL

PythonでのマルチスレッドプログラムとGIL C言語とかJavaでマルチスレッドプログラムを組んでからCPython(C言語のPython実装)でマルチスレッドプログラムを組むとつまずきます。並列プログラムで実行速度が上がらないからです。その原因は、Pythonインタプリ…

TwitterアイコンをHTML5っぽくしてみる

convertコマンドを使ったPython CGIスクリプトを書いたのでメモ。 アイコン画像を台形の透過pngに変換してhtml5ロゴと合成し、base64エンコードしてhtmlソースに画像を埋め込んでいます。demo アイコン画像 #! /usr/bin/python # coding: utf-8 import sys i…

ステートマシンを作れる仕組みみたいな。

状態遷移表と、状態と入力に対応する処理を入力するだけでステートマシンが作れるような仕組みを作れないかなあと思いちょっと作ってみました。そして、サンプルとしてダブルクオテーションによるエスケープ処理ができるCSVパーサを作ってみました。BNFから…

BF Brainf*ck Interpreter in Python

自分で書いたやつを見つけたのでアップ from sys import stdin, stdout # state class Int(object): def __init__(self, v=0): self.val = v def set(self, v): self.val = v; return self.val def inc(self): self.val += 1; return self.val def dec(self)…