Python

レコードの前後のデータを取得する

http://d.hatena.ne.jp/pyxis-dev/20081001/1222791295適切なインデックスが張ってあってかつDBMSのソート戦略が十分賢いなら、これで十分のような気がします。 (実行して試したわけではないのでどこか間違ってるかも) def get_neighbors(entry): m = Diar…

買った本

集合知プログラミング / Toby Segaran ISBN:9784873113647 実践Common Lisp / Peter Seibel ISBN:9784274067211 Smalltalkで学ぶオブジェクト指向プログラミングの本質 / 青木淳, 浅岡浩子, 澤本依里 ISBN:9784822283629 フリーランチの時代 / 小川一水 ISBN…

Google App Engine で素数計算

Google App Engine のテストを兼ねて、素数計算サービスを作った。 http://yourprimes.appspot.com/ 並列化によるスケーラビリティ スレッド間の対称性 実時間応答 の3点を重視してアルゴリズムを設計したんだけど、思ったより全然速度が出なくてがっかり。…

WSGIで作る簡単ローカルHTTP Proxyサーバ

前提としては、 社内のWiki(仮にintra.example.comとする)には外部から直接アクセスできない ゲートウェイ(仮にgw.example.comとする)にはssh接続できる ノートPCを使っていて、頻繁にLANの内部と外部を行き来する という状況で、どこからでも社内のWikiが見…

Python Developers Campに行ってきた

http://www.python.jp/Zope/workshop/devcamp2008w/自分はPylonsの時間でaodagさんのwsgiwikiにAuthKit拡張とかやってた。

大富豪の格差を計算してみる

日常の数学シリーズ。 大富豪(地域によっては大貧民とも呼ばれるトランプゲームの一種→Wikipedia:大富豪)で、カードの交換後に大富豪と大貧民で持っている2の枚数の期待値がどれくらいかを計算してみた*1。Pocket Schemeで。 fugo.scm ; 人数 players: 4 ;…

activate_local_cpan.sh

Pythonにvirtualenvというパッケージがあって、便利なので似たような仕組みでCPANを使えるようにしてみた。virtualenvの説明は以下のリンク先を見てください(超手抜き)。 Python Package Index : virtualenv 1.0 http://pypi.python.org/pypi/virtualenv v…

Pythonでmapcan

def mapcan(func, seq): import operator return reduce(operator.add, map(func, seq), [])

Pythonでremove-duplicates

def remove_duplicates(seq): return sorted(set(seq), key=seq.index) ref. http://ja.doukaku.org/comment/2819/

Python Unconference Tokyo 1

http://www.python.jp/Zope/workshop/200712行ってきた。感想はあとで書く、かも。

HTML整形ミドルウェア

テンプレートエンジンを使うと出力されるHTMLがキモい!とデザイナーの人に言われたので、3分ハッキング。必要なもの: WSGIFilter Beautiful Soup # -*- coding: utf-8 -*- from wsgifilter import Filter from BeautifulSoup import BeautifulSoup class HT…

買った本

Code Craft 〜エクセレントなコードを書くための実践的技法〜 / Pete Goodliffe ISBN:9784839921941 みんなのPython Webアプリ編 / 柴田淳 ISBN:9784797341812 プログラミング in OCaml 〜関数型プログラミングの基礎からGUI構築まで〜 / 五十嵐淳 ISBN:9784…

n == n + 1

ときどきの雑記帖経由、2007-11-25 - プログラミング日記 Pythonクイズ。以下を満たすnの値は何でしょうか?>>> n = ??? >>> n == n + 1 True

標準っぽいライブラリを列挙する

import sys, string, pydoc, textwrap w = textwrap.TextWrapper() w.width = 60 w.subsequent_indent = " " * 18 for key in sorted(filter(lambda key: key[0] in string.lowercase + "_", sys.modules.iterkeys())): doc = pydoc.splitdoc(sys.modules[ke…

検索式を構文解析するPythonモジュール

細かいチューニングがしたかったのでpyparsingを使って自分で書いた。 一応仕事で使うためのもの(でも間違いなくオーバースペック)。 # -*- coding: utf-8 -*- # # Copyright (c) 2007 Nozomu Kaneko # # Permission is hereby granted, free of charge, to…

関数呼び出しの前後でオブジェクトの属性を保存するデコレータ

def save_attrs(getter, attrs): def inner_decorator(f): def decorated(*args, **kw): obj = getter() saved_attrs = {} for key, val in attrs.iteritems(): if hasattr(obj, key): saved_attrs[key] = getattr(obj, key) setattr(obj, key, val) try: re…

買った本

伝奇集 / J.L.ボルヘス ISBN:9784003279212 パラケルススの娘 7 / 五代ゆう ISBN:9784840120456 姫宮さんの中の人 2 / 月見草平 ISBN:9784840120449 黒博物館スプリンガルド / 藤田和日郎 ISBN:9784063726305 もっけ (7) / 熊倉隆敏 ISBN:9784063144680 精霊…

小町算(もどき)

W-ZERO3でPython Windows CE portを使って書いた。 うろ覚えで書いたらルールが微妙に違ってたけどまあいいや。 # -*- coding: utf-8 -*- def solve_komachi(answer, *terms): for e in iter_komachi(terms): try: if e() == answer: yield e except Arithme…

ISBN-13をISBN-10(ASIN)に変換

# -*- coding: utf-8 -*- def isbn10_calc_checkdigit(digits): digit = 0 for i, d in enumerate(digits): digit += int(d) * (10 - i) d = (11 - (digit % 11)) % 11 return (d == 10) and 'X' or str(d) def isbn13_to_10(isbn13): isbn13 = isbn13.repla…

MRUキャッシュとmemoize

適当なモジュールが見つからなかったので自分で書いた。 memoize.py: # -*- coding: utf-8 -*- from UserDict import UserDict import cPickle import logging class MRUCache(UserDict): mru = [] default_capacity = 1000 def __init__(self, capacity=0):…

Genshiの文字化け

開発したWebアプリケーションで時折文字化けが起こるので調べてみたら原因が分かった。多分Genshiのバグだと思う。 HTMLParser.parse() in genshi/input.py: def _generate(): try: bufsize = 4 * 1024 # 4K done = False while 1: while not done and len(s…

Yahoo! 形態素解析 API for Python

Pythonではまだなさそうだったので、作った。 # -*- coding: utf-8 -*- from urllib import urlopen, urlencode from lxml import etree from formencode import Schema import formencode.validators as validators ADJECTIVE = 1 # 形容詞 ADJECTIVAL_NOUN…

PEP-333: Python Web Server Gateway Interface (WSGI) v1.0 翻訳

http://wiki.pylonshq.com/display/~knzm/PEP333-ja移動した http://wiki.pylonshq.com/display/pylonsja/PEP333-ja

Twistedを使ったWebクローラー

Python Workshopのハンズオンで作ったものをベースにちょっと修正したらこんなのができた。 mywebserver.py #!/usr/bin/python from twisted.internet import reactor from twisted.web import static, server root = static.File("/var/www/html") site = s…

買った本

コンピュータアーキテクチャのエッセンス / Douglas E. Comer ISBN:9784798109909 Python クックブック 第2版 / Alex Martelli, Anna Martelli Ravenscroft, David Ascher ISBN:9784873112763 達人プログラマー―システム開発の職人から名匠への道 / Andrew H…

Python Workshop the Edge 2007

http://www.python.jp/Zope/PyLog/1181112812/index_html 行ってきた。Twistedハンズオンとスクラムの話が面白かった。

Pythonは○○である/○○でない

PythonはPerlではない。PHPがHTMLでない程度には。 PythonはLispである。JavascriptがLispであるよりもずっと。

買った本

入門OCaml プログラミング基礎と実践理解 / OCaml-Nagoya ISBN:9784839923112 初めてのJavaScript Ajax&DOM対応 / Shelley Powers ISBN:9784873113227 PerlユーザのためのPython移行ガイド / Martin C. Brown ISBN:9784894714182 俺流プロトコル実装入門 Pri…

いろんな言語でFizzBuzz

Pythonで: #!/usr/bin/python def fizzbuzz(): for i in range(1, 101): if i % 15 == 0: print "FizzBuzz" elif i % 3 == 0: print "Fizz" elif i % 5 == 0: print "Buzz" else: print i fizzbuzz() Pythonではforやifに対応する閉じ括弧がないのと行末の…

Pylons体験記

PylonsというのはPythonの新しいウェブフレームワークです。 はじめに 今いる会社はかなりPython人気が高くて、社員に占めるPythonistaの割合で考えたらもしかするとGoogle以上かも、というぐらい皆がPythonを使っていたりします(まあ小さい会社なので社員…