Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

Python

hgがクソ遅いのでpsycoをかます

僕の記憶では昔、psycoのコードが入ってた気がするんだけど。 しゃあないので自前で。とりあえずRPROMPTに出したいのでbranch,locateが絡みそうなところにかます。 mercurial/commands.py mercurial/dirstate.py mercurial/localrepo.py これでだいぶストレ…

Mercurialのhookをplugpyで書く

まだbranchなんだけど思いついたので書いておく。 次で入れるかも。 Mercurialのhook Mercurialのhookはpythonで書くことができる。 設定するには.hgrcに [hooks] #python:. update=python:foo.bar "python:"ではじめて、.と書いておくと呼ばれる。 まあ呼ば…

plugpyをリリースした

こんにちわ、あらびきプログラマーmopemopeです。 某ライブラリをpythonに移植しようとしてて、plugin周りはなんだかかライブラリ化した方が良さそうだっだので適当に作りました。 plugpy · PyPI 基本実装は以下の奴です。 Pluginシステムの実装 - def __mop…

pypiに間接的にデビューしていた件

pythonでmysqlドライバ書いた奴が他にもいたんだーとRSSをぼーっと見てたら。。。 え? PyMySQL · PyPI なんかメールも来てたのに気づかなかったわー。。。 forkして好きにやってもらっても構わないのになー。

Werkzeugのscreencast

こんにちわ。あらびきプログラマーmopemopeです。 なんか生産性とかうんぬんって話に全く絡めないでいます。 えーっとWerkzeugのscreencastがあるんですが、あまり紹介されてないようなので紹介しておきます。 http://werkzeug.pocoo.org/wiki30/まあpythoni…

cursesでCUIプログラミング

こんにちわ、みちゃこの大ファンなあらびきプログラマーmopemopeです。 最近はbpythonや,urwidなど何気にCUIが流行り始めてるっぽいです。 せっかくなのでtwistedを絡めてみます。 #-*- coding:utf-8 -*- import curses, time, traceback, sys import curses…

あらびきな方法でbuiltinsを拡張する

こんにちわ。あらびきプログラマーことmopemopeです。 builtinsをあらびきな方法で拡張する方法を紹介しておきます 拡張モジュールを作っていじる。 PyThreadState *tstate = PyThreadState_GET(); PyInterpreterState *interp = tstate->interp; // builtin…

Perlのメソッド一覧

スタッシュを教えてもらったので書いてみる。 canで調べてるのと同じ感じに。 static PyObject * perl_get_methodsnames(Perl_Object *self, PyObject *args) { char *module; HV *stash; HE *entry; PyObject *res; if (!PyArg_ParseTuple(args, "s:Perl.ge…

Perl, Python間のやり取り

やはりpyperlと同じになってきた。。。。 python,perlをいろいろ触ってて少しずつ見えてきたのでメモ程度に書いておく。 Perl->Pythonの変換 基本的な型変換はこんな感じ。 SV->PyObjectへ if(SvPOK(sv)){ //string STRLEN len; char *s = SvPV(sv, len); o …

class,module関数

http://d.hatena.ne.jp/naoya/20090506/canonical_huffman_codesを見て。 id:naoyaさんのコードに対するツッコミはid:uemuの仕事だと思ってるけどちょっとだけいじってみた。 メソッドにする必要のないものってモジュールの関数にするんじゃないかなあ。 inn…

perlを呼び出すモジュール

まあpythonからperlを呼び出せた方が何かと便利そうなので勉強がてら書き始めた。 my_perlの洗礼を受けながら適当にevalぐらいは動くとこまではできたかな。 そもそもperlが全然分かってないのでperlのソースも落として必要に応じて見ながら書いてる感じ。mo…

任意のバイトコードの実行

ctypesでのアセンブラは全く相手にされないのでpythonバイトコードを実行する方も書いておく。 pythonバイトコードを実行してみる。 from types import CodeType, FunctionType """ 2 0 LOAD_CONST 1 ('Hello!') 3 PRINT_ITEM 4 PRINT_NEWLINE 5 LOAD_CONST …

ちょっとだけ書いてみた

from ctypes import cast, CFUNCTYPE, c_char_p, c_int buffer = ''.join([ "\x31\xc0", "\xb0\x02", "\xcd\x80", "\xc3" ]) ptr = cast(c_char_p(buffer), CFUNCTYPE(c_int)) ptr() print "fork"

paverで最新のソースを取得する

僕はsvnやhgなどで落としてるライブラリをあるdir配下にまとめている。 こんなカンジで。 (あくまで例ですよ) ./ -- bespin -- bruce-tpt-read-only -- ctypesgen-read-only -- django -- django-command-extensions -- eventlet -- gaeutilities-read-onl…

pythonistaのためのwebアプリケーションテスト

むー、なんかあんまり取り上げられてないので。 まあwindmill使うよねって話。 いろいろ書くのがめんどいのでurlだけ。Windmill Testing Framework · GitHub 機能の比較 Windmill Testing Framework · GitHub watirもいいけどwindmillもいいよね。 (ruby cl…

ABCとインターフェイス

http://enbug.tdiary.net/20090322.html#p01の話だけど。 個人的には両方必要じゃね?と思うんだけど。 まあjavaのような使い分けをする前提ならばだけどね。 そもそもごった煮でどちらかにするとかいう方が間違いなんじゃないかと思うけど。 まあpythonの文…

3.x系の移行タイミング

まあなんか色々言われてるようですが。 結構うわっつらな情報もあったりなかったりするので書いてみるか。 何が問題なのか? 3.x系では後方互換がないのでほとんど既存のコードが動かなくなる。 (僕の経験上100%動かない) 他にもLinuxだとpythonで書かれて…

URLMappingの持ち方の設計について

pythonではもうURLMappingの書き方が2つぐらいしかなくて URLMappingを書いた専用のモジュールを使う decoratorでMapping って方法があるんだけど使い分けの方法としてどーするこーするってのがある。 URLMappingを書いた専用のモジュールを使う この方法の…

わかっていたけど

Django厨向けの少し深いPython勉強会が必要なんだろうな。

Pythonistaの条件

http://d.hatena.ne.jp/takahashim/20090314/p1 を読んで「「python3.x系とruby1.9系を一緒にされてもなあ、うんぬんかんぬん」と理由を述べ、というかそもそもそーいうエントリを書くこと事態Rubyistだよねー」 というところまで思った人はPythonista。

sqlalchemyでデータを操作する

いろんなデータベースを触る際、それぞれでツールの使い方を覚えるのがめんどいので書いた。 (昔、django版も書いたけど) sqltools.py from sqlalchemy import create_engine, MetaData from sqlalchemy.orm import mapper from sqlalchemy.orm import ses…

GAE用のutil

GAEだとそんなに複雑なものも作らないだろうというわけで。 シンプルな構成で作れるものを書いてみた。 GAE用なのでけっこー適当。 import logging import os import sys from os import path from werkzeug import Request, Response from werkzeug.routing…

GAEのcron

http://d.hatena.ne.jp/nishiohirokazu/20090308/1236495788 んーっと。 まあ現状だとurlfetchでまわすしかないよね。 適当な擬似コードで @expose('/admin/cronstart/') def start(req): if not memcache.get('start'): memcache.set('start', 1) return re…

Google App Engine メール送信の流れ

なんか日本語メールが云々っていうので調べてみた。 個人的に日本語が入ってればiso-2022-jpになるとかなんかうさんくさかったので。クライアント(applicationサイド) mail APIで各情報をセットする(to, from, body, attachmentなどなど) セットした情報…

virtualenv

最近、流行りのvirtualenvですが、仕組み的なものにあまり触れられてないように 思えたので書いてみます。 機能 とりあえずvirtualenvの機能は ライブラリがまっさらな状態な環境を作る 作られた環境に対してのみモジュールをインストールできる です。 これ…

yolkとpipは早いとこ合流して欲しいという話

最近pipが少しづつ認知度があがってきてるんだけど、まあ貧弱 or 弱貧だよね。 だってsearchできないじゃんとかまあいろいろある。なのでyolkを使うんだけどさあ。 yolkはpackage情報を色々を出力してくれるツール。 Error 404: File Not Found | Assembla …

tg2の話

tg2のスタンスというか位置づけってどうなんだ!?と思ってたら書いてあったのね。 http://ledmonster.seesaa.net/article/86217260.html いやあまさしくこの通りですね。 Pylons にとってのTurboGears 2 は、Debian にとっての Ubuntu のようなものである。…

モダンPython開発環境入門

今日、KevinさんところにBespinの話が出ててそいつを見てて思った。 最近のpython開発環境はこんな感じだろうと。 エディター 軽量なものが好まれてるのはまあどこもみんな同じだろう。 vim emacs TextMate MacだとTextMateを使ってる人がやはり多いっぽい。…

Bespinのbackendがpythonで書かれている理由

GAEで動かすためですね。わかります。

MakoのTagを追加する

MakoのTagの追加方法を誰も書いていないようなので適当に書いてみる。 from mako.parsetree import Tag from mako.template import Template from mako.codegen import _GenerateRenderMethod class TestTag(Tag): __keyword__ = 'test' def __init__(self, …