michisu's tumblelog RSS

Archive

May
12th
Mon
permalink

http://blog.miraclelinux.com/asianpen/2008/05/python-code-rea.html#more

でも実験されていますが、もう少し細かいケースで試してみました。

scope_test.py

def with_local(num): l = [] l_value = True for i in xrange(num): l.append(l_value) def with_nested(num): l = [] n_value = True def nested(num): for i in xrange(num): l.append(n_value) nested(num) m_value = True
def with_module(num): l = [] for i in xrange(num): l.append(m_value) def with_builtin(num): l = [] for i in xrange(num):...
May
10th
Sat
permalink

5/9 19:00 -

行ってきました。予備知識的な資料をまとめて発表する係、ソースコードリーディングの進行をする係でした。へたくそな進行でしたが、柴田さんはじめ皆さんに色々つっこんでいただいて勉強になりました。

資料はこちらに上げてあります。

http://groups.google.co.jp/group/python-code-reading/files

日を改めてもうちょい反省したり消化したりない部分を考えることにします。

関連リンク

会場提供していただいたミラクルリナックスのtmorimotoさんによるフォロー。http://blog.miraclelinux.com/asianpen/2008/05/python-code-rea.html#more

Apr
27th
Sun
permalink
permalink

会社で新しいサービスを始めました。

Web集合写真 グルーフォ

まずページを作ります。背景や参加人数、制限時間を決めます。URLが発行されますので、参加者はそこに行って画像をアップロード。人数がいっぱいになるか時間が来ると、合成されて一枚の画像になる仕組みです。

という小ネタっぽいサービスです。例によってTurboGearsで動いてます。

Twitterでやってくれた人もいるみたい。

http://twitter.g.hatena.ne.jp/gorimaru9/20080423

permalink

数日前に新しいサーバをセットアップしてて気がついたこと。ToscaWidgetsでのフォームの実装twFormsの名前がtw.formsに変わっていた。だもんで

easy_install twForms

がこけた。

easy_install tw.forms

としましょう。というだけの話。

ただし最新版では色々モジュール設計が変わっていたので、既存のTurboGearsアプリで使うために

easy_install tw.forms==0.3.1

とした。

Apr
10th
Thu
permalink

which コマンドの実装

id:t2y-1979:20080409#1207749772

whichはPATHを頭から調べて最初に見つけたものを返すので、

  • 順序を保持しないsetに入れるとまずい
  • ループをbreakしないと最後に見つけたものを出力してしまう

と思います。

>>> set(['a', 'b', 'c', 'd'])
set(['a', 'c', 'b', 'd'])

順序が変わってます。

重複を排除するには、リストにuniqのようなメソッドがあればいいけど、ないみたいです。

こんな書き方ができました。ただ、遅いかも。

>>> l = ['a', 'b', 'b', 'c', 'a']
>>> [ x for i, x in enumerate(l) if x not in l[:i] ]
['a', 'b', 'c']

でも、頭から調べてbreakする処理なら、重複を排除しておく必要はないわけですが。

自分なりに書いたのが以下。

Apr
1st
Tue
permalink

最近「テスト可能なコードが良いコード」と教わり、そういう観点でコーディングを進めてみようと思ってます。

今考えてる進め方はこんな感じです。

まず、実際に使うためのコードを大まかに書きます。この時点では、ほとんどメソッド名だけ。頭の中でなるべく細かくメソッドに分けていきます。メソッドのつながりを考えているうちに短いコードを書いたりもします。

ある程度まで書けたら、スクリプトを使って空のテストメソッドを自動生成します。このスクリプトは、カレントディレクトリ以下の*.pyから関数定義、メソッド定義を探してきて、対応するテストメソッドを作ります。自分用なので適当なところもありますが晒しときます。

make_tests.py

#!/usr/bin/python
import os, sys
import inspect, _ast excluded_dir_names = ["tests"]
excluded_file_names = ["setup.py"] def get_method_names(clsdef):...
Mar
16th
Sun
permalink
敵の陣形は…

敵の陣形は…

permalink
木の実

木の実

Mar
9th
Sun
permalink
大泉中央公園

大泉中央公園

Feb
29th
Fri
permalink
ねこばす発見

ねこばす発見

Jan
14th
Mon
permalink
こどもの城・屋上庭園

こどもの城・屋上庭園

permalink
こどもの樹

こどもの樹

Jan
7th
Mon
permalink
われわれは唯一不変の確固たる現実世界の中で、さまざまに異なった生き方をするのではなく、むしろ逆に、われわれのこの生き方が、この現実世界を構成するのである。
— 野矢茂樹『大森荘蔵-哲学の見本』
Jan
6th
Sun
permalink
空装。息子がハサミで切って動物にしました

空装。息子がハサミで切って動物にしました