Doge log

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

listにjoinを追加してみた

もちろん、ご期待どおりあらびきな方法です。 src 高度に訓練されたpythonistaは継承で拡張なんてしません。 setup.py from distutils.core import setup, Extension module1 = Extension('listjoin', sources = ['listjoin.c']) setup( name='PackageName',…

別名のつけかたあれこれ

こんにちわ、訓練されたpythonistaことmopemopeです。 http://d.hatena.ne.jp/kwatch/20090714/1247572629 を読んで。 んーまあそういう仕組みが全くないというわけではないかなあ。 別名の話をちょっと書いてみたいと思います。 __builtins__について なん…

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

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

zshのRPROMPTにbranchをだす

hg

hgのコマンドが遅いのでどうしたものかと。 とある条件でのみ出すようにすればいいかなあと思い、開発時には大体virtualenvを使うので active時のみ出すようにしてみた。 _set_env_hg_current_branch(){ HG_CURRENT_BRANCH=$( hg branch 2>/dev/null ) } _up…

Mercurialのhookをplugpyで書く

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

hgが遅いと感じるzshrc

hg

git使いのひとと同じようにhgでもRPROMPTにbranch名を出してみる (repoの以下のみbranch名を出す) .zshrc _set_env_hg_current_branch(){ HG_CURRENT_BRANCH=$( hg branch 2>/dev/null ) } _update_rprompt(){ if [ "`hg locate 2>/dev/null`" ]; then RPR…

鯖側の非同期の話

モヤモヤ感があるので書いておく。 モヤッとしてるところ 非同期でクエリを投げれても鯖が並列に処理してるとは限らないのでは? mysqlなんかは接続した時にserver thread idなんかを返してきてるので 1接続、1スレッドを割り当ててると思って思ってるんだけ…

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"

それ

「軽量Webアプリケーションフレームワークやない、libevベースのWSGIサーバーや」

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などなど) セットした情報…