Python

virtualenvwrapper-4.0を使う

emacsがあればあんまり開発環境には拘らない方なので、virtualenvwrapperもウノウラボにこの記事を書いたころから、ずっと同じバージョンを使い続けてきた。 アップデートしなかった理由は、いつからかvirtualevnwrapper単なるシェルスクリプトではなく、vir…

couchbase-python-clientをmemcacheクライアントとして使う

couchbase-python-clientはCouchbase社が開発しているCouchbaseのクライアント・ライブラリ。「Couchbaseとは何ぞ?」という方は、CouchDBのストレージをMemcache/Membaseに置き換えたKVSだと考えて頂きたい。 https://github.com/couchbase/couchbase-pytho…

iWebDriverでテストする

昨日のエントリのChromeDriverを試した後、SafariDriverというなかなか有望そうだがイマイチちゃんと動いている感がないソリューションまで試した結果、iPhone向けWebアプリケーションのテストにはiPhoneそのものか、iPhoneシミュレーターを使うのが一番良い…

SeleniumのChromeDriverでUser-Agentを変更する

WebKit、しかもiOSのWebKitでしか動かないコードを通して世界を良くしていますかっ!?(挨拶)前回似たようなエントリを書いた時には分からなかったのだが、SeleniumのChromeDriverでUser-Agentを変更するのは比較的容易だった。これでFirefoxではピクリとも…

Jasyプロジェクトを作成する

前提条件 Python 3.2とpip、それにJasy 0.4.6がインストールされているものとします。 $ pip install https://github.com/wpbasti/jasy/zipball/0.4.6 ディレクトリ構成 最初にプロジェクトのトップディレクトリを作る。ここでは設定ファイルに記載するプロ…

Jasyを使ってJavaScriptアプリケーションを作成する - セバスチャン現る

JasyはZyngaの俊英Sebastian WernerによるJavaScriptビルドツール(Python3製)。coreは同氏によるJavaScript Framework。 https://github.com/wpbasti/jasy https://github.com/wpbasti/core coreが大規模なJavaScriptアプリケーションを作るためのモジュール…

Jasyを使ってJavaScriptアプリケーションを作成する - 最適化

Jasy/Coreの使い方をなんとなく語るシリーズの第一回。順番が間違っている気がするが、第一回はJasyのJavaScript最適化機能について。解説の順番が間違っている気がするが、Python3.2とpipをインストールした上で、 $ pip install https://github.com/wpbast…

Selenium WebDriverでUser-Agentを変更する

しばらく前は「Webアプリケーションのテスト自動化にはSeleniumよりWatirの方がよくね?」と思っていたが、Selenium2になってWebDriverが使えるようなり、Rubyで書かなくてはならないWatirより、Pythonで書けるSeleniumの方が断然楽だと感じている。仕事柄モ…

shelveの"dbm.error: db type could not be determined"というエラー

MacPortで入れたPython3.2.2*1でshelve.openを使おうとして、"dbm.error: db type could not be determined"というエラーが出た。 % python [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin Type "help", "copyright", "credits" or "license" for m…

Misakaを使ってmarkdown文書をHTMLに変換する

Misaka is a Python (2.7 and 3.2) and PyPy (1.6) binding for Sundown. And Sundown is a Markdown library written in C and it's really fast. http://misaka.61924.nl/ MisakaはCで書かれたmarkdown parserであるSundownのPythonバインディング。要Pyth…

LZOとSnappyの圧縮効率・処理速度を比較する

LZOとSnappyは共に、圧縮効率は他に劣るものの、処理速度が早いことを売りにした圧縮ライブラリ。 http://www.oberhumer.com/opensource/lzo/ http://code.google.com/p/snappy/ インストール Pythonで使うならば、LZOに関しては python-lzo-static を使うの…

チーム開発でのplistの管理方法

複数名のチームでCocoa/Cocoa Touchのアプリケーションを開発している状況で、誰かがplistの設定ファイルを間違ってコミットしたからアプリケーションが動かなくなったといった状況を防いだり、開発中は自分固有の設定を使いたいとする。ぱっと思いついた方…

続cocos2d事始 - Menuを作る

Layerを作る 前回作ったところまでで、最小限のSceneを作ってゲームに必要な要素を追加していく準備ができた。SceneにはLayer, Menu, SpriteといったCocosNodeのサブクラスを追加していくことになるが、まずは一番基本的なLayerクラスを使って、背景を追加す…

続cocos2d事始

大型連休前にPython版cocos2dを触ってみて、予想通りインストールしてサンプルをちょっと動かしただけで飽きたわけだが、ここ数日iPhone版のcocos2dも少しいじっていて、「基本的な概念が同じならばPythonでやった方がプロトタイピングにはいいかも」と思い…

cocos2d事始

インストール cocos2dといってもiPhone版じゃなくてPython版の方。ここに書いてあるとおりにやれば環境は作れる。 http://cocos2d.org/doc/programming_guide/installation.html が、実際はpygletもcocos2dもPyPIに登録されていて、依存関係もきちんと定義さ…

Flash-AssetsでJavaScript/CSSを管理する

オフィシャルドキュメントに書いてあることで十分だけど、練習をかねてチラシの裏に書いてみる。 http://elsdoerfer.name/docs/flask-assets/ インストール。 $ pip install Flask-Assets 単純なFlaskアプリケーションで試してみる。 # -*- coding: utf-8 -*…

webassetsがよさげ

webassetsはWebアプリケーションのJavaScript/CSSの管理ユーティリティライブラリ。もっとわかり易く言うと、複数のJavaScriptファイルをまとめたり、圧縮してくれたり、URLに変更日時のタイムスタンプを付けてくれたりする便利ライブラリ。 PyPI http://pyp…

Python3.2はUnicode 6.0に対応した

Python has been updated to Unicode 6.0.0. The update to the standard adds over 2,000 new characters including emoji symbols which are important for mobile phones.In addition, the updated standard has altered the character properties for tw…

HandlerSocket練習帳 - チラシの裏

PythonでHandlerSocket経由でMySQLにアクセスする。今回はpyhsを使ってみた。 https://bitbucket.org/excieve/pyhs データベース名はsandboxで、テーブルは、 Create Table: CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varcha…

CentOSにPySVNをインストールする

ReviewBoardに入れる時にいつもPySVNで迷うので。PythonはCentOS標準のPython2.4ではなく、EPELのPython2.6とする。 Subversion関連のヘッダー・ライブラリをインストール subversion-devel, neon-develを入れておく必要がある。 $ sudo yum install subvers…

IPyからipaddrに乗り換えるか検討中

今までIPアドレスの操作にはIPyを使ってきたのですが、Google App EngineのPython SDKにはipaddrが含まれているなぁと気付いてからipaddrに乗り換えようか検討中。 import timeit from IPy import IP from ipaddr import IPv4Network, IPv4Address def test_…

非同期Webサーバーならばcycloneがよさげ

まだ深くソースコードを読めていないので「非同期Webサーバー」という言い方が正しいかどうかは自信がない。 https://github.com/fiorix/cyclone cycloneはtornadoと非常によく似たAPIをもっている。例えば、お馴染みのHello Worldならば次の通り。 # -*- mo…

簡易HTTPサーバーを立てる

最近「あー、このディレクトリのファイルをブラウザで開きたいなぁ*1」という時に、 $ python -m SimpleHTTPServer 8080 で簡易HTTPサーバーを起動できることを知り重宝している。8080はポート番号。当然のことながら、この簡易HTTPサーバーで全世界に向けて…

kombuを味わう

kombuはceleryの作者askによるメッセージングフレームワーク。 https://github.com/ask/kombu 同じ作者によるcarrotというライブラリ/フレームワークもあるが、kombuはcarrotをリライトしなおしたもので、今後はkombuの方を開発していくらしい。それにしても…

Rowzと戯れる

gizzardやgizzardの使用例のRowzが気になっていても、ビルドに失敗することが多く手を出せないでいた。最近、だいぶScalaの勘所がつかめてきて、ようやく自分で試してみることができるようになったので、そのメモ。Rowzのテストは通らないような気がするので…

trunk版のCassandraと戯れる

trunk版のCassandra(Cassandra 0.7)で遊んでみた。 設定ファイルがYAMLに変わるのは誰得?って印象があったが案外違和感がない。普段LAMP系のソフトウェアを扱っている人間にはYAMLの方が自然に感じる。 動的にKeyspaceやColumnFamilyを追加できる機能はgood…

uamobileとSoftBank/2.0

SoftBank/2.0のUser-Agentが正しく解析できないならば、今の安定版に手をいれようかと思いましたが、特に問題ないようですね。 >>> import uamobile >>> uamobile.__version__ '0.2.11' >>> ua = uamobile.detect({'HTTP_USER_AGENT': 'SoftBank/2.0/944SH/S…

java_infoプロパティをdeprecatedにした

uamobile.softbankには元々のPerl版(HTTP::MobileAgent)に由来するjava_infoというプロパティがあって、 SoftBank/1.0/943SH/SHJ001 Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1のようなUser-Agentの、 Profile/MIDP-2.0 Configuration/C…

uamobileのレポジトリをgithubに移した

uamobileのレポジトリをgithubに移した。今後はこちら一本でやっていく予定。 http://github.com/csakatoku/uamobile git svnで移したのだが、githubには今は外部Subversionレポジトリから移行する機能もあるようだ。機会があったら試してみたい。近いうちに…

odictでハマった話

【2010/5/27更新】 doloopwhileさんにコメントをいただいたように、Python2.7のOrderedDictをバックポートしたordereddictモジュールを使うのがベストっぽいです。doloopwhileさん、情報ありがとうございます。 http://pypi.python.org/pypi/ordereddict/ 最…

OrderedDictをYAMLに変換する

Python 3.1/2.7のcollections.OrderedDictやodictをYAMLに変換したい時、 import yaml o = OrderedDict() o['spam'] = 1 o['egg'] = 2 o['ham'] = 3 print yaml.dump(o, default_flow_style=False) で期待する結果は、 !!python/object/apply:collections.Or…

CentOSでTornadoを使う

皆が大好きなCentOS 5のcurlのバージョンは、 % rpm -qa | grep curl curl-7.15.5-2.1.el5_3.5 curl-devel-7.15.5-2.1.el5_3.5 のように7.15.5で、このままでは以下のバグに当たってtornado.httpclient.HTTPClientで取得したレスポンスのヘッダーを取得でき…

PythonでSOAPクライアント

PythonでSOAPクライアント http://d.hatena.ne.jp/hirokinko/20100131#1264931042 どのSOAPクライアントライブラリも腐っているとしか思えなかったので、僕の場合はElementSOAPを使った。複雑なSOAPサービスに対して使うには向かないかもしれないが、僕の場…

PythonでCSVのFixtureをYAMLに変換

PythonでCSVのFixtureをYAMLに変換(添削希望・・・) たぶん、こんな感じじゃないかなぁ。 import sys import csv import yaml def main(src, dest): reader = csv.reader(file(src)) data = list(reader) result = [] cols = data[0] rows = data[1:] for …

空前のGangliaブーム到来

id:hirose31氏の「ganglia (gmond) を拡張するモジュールをPythonで書いてみた」というエントリを見て以来なんとなく気になっていて、アルファインフラエンジニアからも薦められていたGangliaだが、いくつかの疑問点があって本格的に触ってみるにはいたらな…

mobilejpcodecs now on github

今まで使っていた個人サーバーが年内で使えなくなることになり、個人的に作っていたライブラリをgithubに移すキャンペーンを実施中。インストール。Python2.5以上が必要。 $ pip install -e "git://github.com/csakatoku/mobilejpcodecs.git#egg=mobilejpcod…

oursqlを試す

oursqlはPython用のMySQLバインディング。広く使われているMySQLdbより良いバインディングを目指すという。 https://launchpad.net/oursql http://pypi.python.org/pypi/oursql PyPIに0.1というバージョンがあがっているので、 $ pip install oursqlでインス…

Spawningを使ってDjangoを動かす

http://pypi.python.org/pypi/Spawning/ 以下はシングルプロセス・シングルスレッドの場合。プロセス数を増やすには-sオプションを、スレッド数を増やすには-tオプションを指定。 $ cd /paht/to/my_django_project/ $ PYTHONPATH=.. spawn --factory=spawnin…

Fabricを使ってリモートサーバーでコマンドを実行する

Python版のCapistranoと言われて久しいFabricだけど、ドキュメント通りにやっても全く動かなかった経験があるのでずっとスルーしてきた。 http://pypi.python.org/pypi/Fabric/0.9rc1 http://docs.fabfile.org/0.9/ PyPIに上がっている0.9というバージョンは…

uamobile-0.2.8

uamobile-0.2.8をリリースしました。 http://pypi.python.org/pypi/uamobile/0.2.8 変更点は、 Baiduのモバイルクローラーに対応 froute.jpのモバイルクローラーのIPアドレスのアップデート WILLCOMのIPアドレスを10/15変更分へアップデート です。前回リリ…

mod_passengerでWSGIアプリケーションを動かす

Passenger(mod_passenger)は言わずと知れたRuby on Rails/Rackアプリケーションを動かすための定番サーバーのひとつ。 Phusion Passenger http://www.modrails.com/ 実はPassengerではPython WSGIを動かすこともできる。誰が得するか分からないから誰もほと…

Simple Queue Serviceに触ってみた

Amazon SQS (Simple Queue Service)はAmazonが提供しているメッセージング・ウェブサービス。 Amazon Simple Queue Service http://aws.amazon.com/sqs/ 自分の周りでは実際に使っているっていう人を聞いたことがないし、ぐぐっても日本語の情報はそんなに出…

例外ハンドラについて最近知ったこと

except 節は一つまたはそれ以上の例外ハンドラを指定します。 try 節内で全く例外が起きなければ、どの例外ハンドラも実行されません。try スイート内で例外が発生すると、例外ハンドラの検索が開始されます。 http://www.python.jp/doc/release/ref/try.htm…

httplib2.Httpでtimeoutを指定した場合のエラー処理

httplib2でタイムアウトを指定するには、 import httplib2 client = httplib2.Http(timeout=5) client.request("http://example.com/") のようにhttplib2.Httpの引数でtimeoutを指定する。デフォルトではリクエストがタイムアウトするとsocket.timeout例外に…

python-memcachedの(de)serializeにmsgpackを使う

msgpackについては以下のエントリを参照。 DSAS開発者の部屋:MessagePackのPython Bindingをリリースしました http://pypi.python.org/pypi/msgpack/ こんな感じか? import msgpack class Pickler(object): def __init__(self, fp, protocol=None): self.fp…

MongoDBのUpdate修飾子

Modifier operations are performance enhancement techniques useful when updating an existing object in certain ways, such as incrementing a number. http://www.mongodb.org/display/DOCS/Updates MongoDBのUpdate修飾子は、上記ページによると3種類…

MongoKitを試す

MongoKitはMongoDBをより容易に扱うためのPythonライブラリ。 MongoKit framework try to keep its simplicity when you manage mongodb in python. MongoKit was developed to be fast and light with KISS and DRY in mind. http://bitbucket.org/namlook/…

MongoDBでmemcachedのincr/decrのようなことをやりたい

下記の「リアルタイム分析にMongoDBを使う」という内容のエントリに触発されて自分でも試してみた。 Using Mongo for Real-Time Analytics http://www.10gen.com/blog/2009/3/using-mongo-for-real-time-analytics "upsert"と"$inc"を使えばいいということな…

CentOSでPython2.6を使う

以下のページで配布されているRPM, SRPMを検討するといいのではないだろうか。 http://www.geekymedia.com/python_26_centos.html "Python2.6 RPM CentOS"のようなクエリで検索すればすぐに見つかるので、書くまでもないかなと思っていたけど、たまたま今日…

献本ありがとうございます

『10日でおぼえる Python入門教室』を献本していただきました。関係者の方々ありがとうございます。今は少し時間が取れないのですが、ちゃんと読んでから書評させていただきたいと思います。10日でおぼえる Python 入門教室作者: 穂苅実紀夫,寺田学,中西直樹…