python

PySide を Mac 10.7.5 で使う

PyQt をちまちまと試していたのですが @nobonobo から PySide も Python3.3 に対応したのが MacPorts にあるよという事を教えて頂いたので試してみました。 そもそも PyQt や PySide はインストールが色々めんどくさいというイメージがあり、手を付けるのが…

Python & AWS クックブック

オライリー様から Python & AWS クックブックを献本頂きました。 Python & AWS クックブック http://www.oreilly.co.jp/books/9784873115436/ 個人的には boto では S3 と Glaicer しか触ってないので、とても楽しみでした。 概要とセットアップ この本は EC…

Mac OS X に gevent をソースコードからインストールする

gevent: A coroutine-based network library for Python http://www.gevent.org/pip からではなくソースから入れる方法を。pip でも dev を入れられたりするのかな。 追記 リポジトリに libev が含まれるようになったので何もいらないとのことです thx @nobo…

Broker を使った N:N な REQ/REP パターン (XREQ/XREP)

概要 Broker を間に置いた REQ/REP パターンを作ってみます。 基本的にはどう頑張っても 1:N しか出来ないのですが中間に Broker をおくことで、 N:N を実現しています。 実現したいこと REQ と REP どちらかの 1:N 構成ではなく、N:N 構成をするただ、今回…

ZMQ で PUSH/PULL を使ってロードバランシングしてみる

PUSH/PULL で PULL 側を複数立てた場合は、 PUSH 側で自動でロードバランシングするようなので確認してみました。PULL 側を複数立てて、PUSH 側から複数メッセージを投げた場合で、やってみます。 PUSH range で簡単に回して、ロードバランスしてくれている…

Erlang gen_server(SUB) に対して Python (PUB) からメッセージを送ってみる

Erlang 側で gen_server を複数立てておき、全てを Subscriber として待ち受け状態にして、Python 側からメッセージを送ってみます。メッセージはルートは使わないでファンアウトです。メッセージは JSON でシリアライズしています。 ソース $ git clone git…

zmq で Erlang/Python のデータのやりとりに JSON を使う

通信が確認出来たので、シリアライズしたデータを渡すテストです。 色々ありますが、まずは簡単な JSON データにしてみました。 ソースコード https://github.com/voluntas/snowflake/tree/feature/zmqgit checkout 7c153e853e624b9aeefe6c0e83003b92c8ecbd3…

zmq で REQ/REP を Erlang/Python でつないでみる

Erlang と Python でメッセージのやりとりをしてみます。まずは Erlang が REQ で Python が REP です。 相変わらず同期ですが、テストはシンプルな方が良いので同期から。 サンプルコード https://github.com/voluntas/snowflake/tree/feature/zmqここの 0d…

zmqで PUB/SUB してみる

PUSH/PULL はあまり面白く無さそうなので、PUB/SUB を試してみました。 PUB PUB 側が bind します。 SUB は定期的に PUB に接続を見に行くので、少し寝てあげる必要があったりします。 import time import zmq ctx = zmq.Context() sock = ctx.socket(zmq.PU…

zmq の python binding で echo テスト

ZMQ は非同期が売りですが、まずは同期で書いてみます。とりあえず書くと言えば Echo サーバ、ということで書いてみました。REP 側は pyzmq のサンプルにあったコードそのままです。 REQ 側 zmq.REQ で Connect します。ポイントは REP 側を先に起動しておく…

boto を使って Sphinx を S3 にデプロイする

やりたかったこと 毎回 AWS Console からデプロイするのはアホだし、ミスも生まれるので自動化したかった 結論 わざわざ S3 にデプロイする必要なんかなくて、レンタルサーバ借りて FTP でデプロイしても別に何も問題ありません。 いくつかの条件がマッチし…

Flask の使いどころ

Web アプリを仕事ではほとんど書いたことが無かったのですが、Flask を仕事で使う事にしたので、書いてて感じた Flask の使いどころを。 追記 コメントに色々な意見を頂いておりますので、是非そちらも。がっつり使われた方の感想 Flaskを1年仕事で使った感…

requests と mock を使ってみる

テストを書くときに、外部の HTTP API を叩く処理が組み込まれている場合は、何かしらモックが必要です。どう書くのがスマートなのか良くわからないので色々試してみる 準備するモノ python 2.7.x mock simplejson requests nose covarage テストのデファク…

クラスベースのジェネリックビュー

もともと 1.0 系くらいしかしらない Django 1.3 系を触っていて見知らぬものが出てきて使ってみたのでメモ。今までのファンクションベースのジェネリックビューからクラスベースのジェネリックビューになった。なったといってもファンクションベースが使えな…

Heroku 上で Django を動かす

Heroku | Cloud Application PlatformHeroku と言えば Ruby/Clojure/Node ですが、 Django アプリ(というか Python アプリ)がデプロイできるようになったらしいので試してみました。 変更履歴 2011-09-21 gunicorn 対応しました github https://github.com/…

nose で doctest

テストツールですが Python 書いてます。ツールと言えば信頼性ということでテストですね。 Python でテストといえば doctest です。 テストツールと言えば nose です。 nose といえば coverage です。インストールとかはは @aohta の記事で。nose でテスト実…

cui で json を綺麗に表示する方法

$ echo '{"foo": "lorem", "bar": "ipsum"}' | python -mjson.tooljson か simplejson を指定してください。(以下からのパクリ)linux - How to pretty-print JSON script? - Stack Overflow

Erlang で開発されている商用分散 KVS Riak を使ってみた

絶賛書きかけ Riak とは Riak は商用分散 KVS の一つです。Basho Technology が開発を行っておりオープンソースで公開されています。 商用版もあり、一部機能が追加されています。 Riak をインストールする(パッケージ編) Riak をインストールする(ソースコ…

gevent 使ってみた

gevent: A coroutine-based network library for Python - http://www.gevent.org/知らない人はあんまりいないと思うので、説明は割愛。erlang:spawn(module, fun, args) みたいに gevent.spawn(fun, *args, **kargs) って出来るんですね、これは良いもので…

月刊 Python 読みたい

月刊 Python 6 月号 posted by (C)voluntas@wozozo GJ

Tornado v0.2 で websocket やってみた

tornado は git clone してきて python setup.py install したものを使っています。コードは tornade/websocket.py に書いてあったコメントそのままです。なんかコメント少し間違ってますね、send_message って書いてますが write_message ですね。さて、こ…

Python 関連の洋書欲しい人いますか?

Python ドキュメントとはじめての Python だけで十分になってきたのでため込んでた Python 関連の洋書を手放します。といってもほとんどが古いモノなので需要0だと思っていますが、捨てるよりはとりあえず募集だけでも。もし興味ある奇特な方はコメントなり…

Python Hack-a-thon #2 無事終了

2009-11-14 10:00 - 19:30 オラクル青山センターで行われました Python Hack-a-thon #2 が無事終了しました。写真で少しでも雰囲気が伝われば。とにかく人の顔が写ってないの探しました。pyspa な人は顔出しさせていただきます。Python Hack-a-thon #2 poste…

Unladen Swallow 2009Q3

Python 2.6.1 (r261:874, Oct 21 2009, 10:21:29) [GCC 4.4.1] on linux2 [Unladen Swallow 2009Q3] Type "help", "copyright", "credits" or "license" for more information. >>> 入れてみた

Tornado ドキュメントが翻訳されるまで

渋川さんによる翻訳開始から、完了までの流れの話。 渋日記: Tornadoウェブフレームワーク日本語訳ができるまで

Tornado Web Server ドキュメント 翻訳 (code camp #4 in harumi)

今回のイベントはいつものイベントとは何かが違いました。 Code Camp #4 in Harumi では Tornado の翻訳スプリントが行われていたのです。 Tornadoドキュメント翻訳 翻訳を行った有志達 @ymotongpoo @shibukawa @nishio @atusi @shibukawa の言葉を借りるな…

Python Hack-a-thon #2

2009-11-14 に Python Hack-a-thon #2 を開催します。 時間帯は 9:00(開場)...10:00(開始)...18:00(解散)...19:30(終了) です。 ここでの Hack-a-thon は有る特定の分野に興味があるメンバーが集まって、とりあえず色々やろうという趣旨です。Python 初心者…

Unladen Swallowプロジェクト

shibu.jp: プロジェクト計画 shibu こと渋川さんが Unladen Swallow のプロジェクト計画の翻訳終えたようです。 「Unladen Swallowプロジェクト」って何?ですが、詳しくはリンク先を読んでもらえれば。簡単にコピペしておきます。 1. CPythonと比べて、最低…

とりあえず動かしてみた

2.6.2 ですな android posted by (C)voluntasまずはファイルを作成 android posted by (C)voluntashello.py をくりっく android posted by (C)voluntasへろーせかい android posted by (C)voluntasインタプリタをつなぐ Android posted by (C)voluntas スク…

Python 2.6.2 と unladen-swallow Python 2.6.1 で遊んでみた

unladen-swallow - Google Code 2.6.2 が Ubuntu 標準、2.6.1 が unladen-swallow です。以外に違うのですね。 $ /usr/bin/python -V Python 2.6.2 $ /usr/local/bin/python -V Python 2.6.1 $ /usr/bin/python fib.py 39 (63245986, 55.661906003952026) $ …

The History of Python.jp

渋川さんプレゼンツ The History of Python.jp Guido による Python の歴史を翻訳を淡々と更新するブログ。 渋川さんが気合いを入れて翻訳されてます。 素晴らしい ... Python が出来た課程などを気軽に読むことが出来ます。日本語が上手いなぁ。 翻訳元 The…

Python Hack-a-thon #1

2009-08-22 (予定は仮)に Python Hack-a-thon #1 を開催したいと考えています。 時間帯は 9:00(開場)...10:00(開始)...18:00(解散)...19:30(終了) の予定です。 ここでの Hack-a-thon は有る特定の分野に興味があるメンバーが集まって、とりあえず色々やろう…

dateutil に感動した

>>> from datetime import datetime >>> from dateutil.relativedelta import relativedelta >>> now = datetime.now() datetime.datetime(2009, 4, 22, 15, 1, 2, 502637) >>> now + relativedelta(days=+1) datetime.datetime(2009, 4, 23, 15, 1, 2, 5026…

amq.topic のサンプル

fanout と direct は理解したので topic をのメモを。 topic は # と * を使って一つの routing key で複数の Queue に格納するような仕組みです。例えば routing key が 'spam.eggs.bacon' という key で、 queue の binding key が 'spam.*' と '#.eggs.ba…

amq.direct のサンプル

fanout はサンプルであるので、direct のサンプルを。 メッセージを10個送ってみています。たんに for で回しただけですが。 一応二つ受け取りキューを生成して、送り先一つ、受け取り二つという amq.direct で routing key を使った multicast をやってみま…

import の書き方

Python 2.5 から import が tuple 型に対応したと記憶しています。 最近のお気に入りが、tuple を使って import をする書き方です。どこかのソースで見てよかったので。 今まで from werkzeug.exceptions import NotFound, Unauthorized 最近 from werkzeug.…

Map をどうキレイに組むか。

プロジェクトとアプリの構成にも関係しますが、URI の設計も模索中です。 Werkzeug の Map と Rule が素晴らしいです。 defaults と methods は使い方を憶えました。subdomain を使ってみないと。defaults は に渡す初期値を指定できます。 defaults={'key':…

Datastore に格納されているかどうか。

Model の instance で is_saved() というメソッドがあります。 これは、一度でもデータストアに格納されていたら True を返すというものです。こんな感じで使えます。 class Spam(db.Model): created = db.DateTimeProperty() def put(self): if not self.is…

tzinfo 置き換え

timezone を置き換えるのに一番スマートなのはなんだろうと考えていたら、 松尾さん(tmatsuo) にサンプルソースを見せていただいて、replace が一番シンプルという事を教えていただきました。 >>> from datetime import datetime, date, time >>> now = date…

日付とか

これ便利。http://labix.org/python-dateutil >>> from dateutil.relativedelta import * >>> from datetime import datetime, date, time >>> now = datetime.now() >>> now + relativedelta(years=+10) datetime.datetime(2019, 2, 28, 23, 12, 32, 849974…

What's New In Python 3.0 の翻訳

翻訳と、西尾によるフィードバック用メモ。そのうち翻訳へ反映されると思われます。 What'sNewInPython3.0 - TSNETWiki on TextWorld What's New In Python3.0 日本語版 - 西尾泰和のはてなダイアリー 読まなければならない(MUST)

普通に間違ってました。

epoll の使い方まちがってました。epoll.register するとき eventmask かけないと意味無いですね ... 。 これでリードブロックするのでシンプルです。 # vim: fileencoding=utf8 # Only Python 2.6.x from __future__ import division from __future__ impor…

Django 勉強会 Disc.8 2009/3/28 予定

この内容はもう古いです ... 最新版はこちら参加者はいつも通り露木さんが募集しますのでまったりおまちください。ハッカソン(チュートリアル or テーマ) + プレゼン でやりたいと考えています。 概要 日程は 3/28 の 9:00 - 18:00 参加費(会議室使用料) は …

SDB の Python ラッパー

Google App Engine の Datastore のような事出来ます。 from boto.sdb.db.model import Model from boto.sdb.db.property import * from boto.sdb.db.manager import get_manager from boto.exception import SDBPersistenceError kAwsAccessKeyId = 'access…

kqueue のマルチソケット版

毎回 socket.fromfd やってるコストが気になることは気になる。 # vim: fileencoding=utf8 # Only Python 2.6.x from __future__ import division from __future__ import absolute_import from __future__ import print_function #from __future__ import u…

Erlang for Python programmers

自分用にまとめておく。 Erlang for Python programmers: Part I « Ruslan’s Blog Erlang for Python programmers: Part II « Ruslan’s Blog Erlang for Python programmers: Part III « Ruslan’s Blog Erlang for Python programmers: Part IV « Ruslan’s B…

pytyrant

TokyoTyrant の pure python 実装、simplejson の中の人が作ってるみたいです。 早速使ってみましたが pytc のように Python の Dictionary のように使えるようにします。 pytyrant - Google Code 簡単なサンプル >>> import pytyrant >>> client = pytyrant…

boto で SimpleDB

速度遅いって書いてた人がいたけど、そんなに気にならないなぁ。 日本語も問題なく入ります。 import boto AWS_ACCESS_KEY_ID = 'id' AWS_SECRET_ACCESS_KEY = 'secret' sdb = boto.connect_sdb(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) sdb.SignatureVer…

マルチソケット

socket.fromfd でやればよし。TCP はまぁおいといて、UDP を淡々と。TCP は Erlang でいいし:-P 一応動作確認 CPU 400% が確認できました ... マルチコアええね。 # vim: fileencoding=utf8 # Only Python 2.6.x from __future__ import division from __fut…

TCP 版は挫折

マルチプロセスだと色々制約が出てくるので epoll/kqueue + multiprocessing + tcp は出来てません。 from multiprocessing import _multiprocessing を使ってファイルディスクリプタを別プロセスに unix domain socket 経由で渡してもいいのですが、それだ…