44件中 6-10件目     [ 1 2 3 4 5 6 7 8 9 ]

先日、「Surgo: BigTableで悩む」という記事を見つけた。Google App EngineでTwitterのようなアプリケーションを作るにはどうすればいいかについて悩んでいるらしい。どうやら「Surgo: BigTableはPUSH型で」によるとPUSH型で作るということで解決(?)はしたようだが、PULL型でgoogle.appengine.ext.db.Queryの機能を使ってソートしたデータを取得するようなことはできないのだろうか?

Google App Engineの練習問題としては面白そうだったので、実際に簡単なサンプルを作って考えてみることにした。

(※実は私はTwitterを使ったことがなく、あまり詳しくは知らないので機能に関して誤解があるかもしれない。)


落ち着いて素数を数えるんだ! ということで作ってみた。

半分くらいネタで作ったけど、たぶん近いうちに使う。素数判定は『素因数分解をする[C++]』と同じように簡単なアルゴリズムで、特に難しいアルゴリズムは使ってない。intの範囲を超えるような素数を扱うような予定はないので、とりあえず、これで十分だと判断した。


doctestモジュールは、テストコードとその結果をコメントとして書くことで自動的にテストを行ってくれるものだ。テスト用のコードは一度確認した後は、保存することすらしなかったり、しばらくして消してしまったりすることもあるが、doctestのようにコメントにテストコードを書けば、それは実行例としてコメントに残るし、コードを変更した場合にはそれを使ってテストができる。

例えば、与えた引数xを2倍にして返す関数では以下のようになる。

#!-*- coding:utf-8 -*-
def double(x):
    """ 与えられた数の2倍を返す関数。
    
    >>> double(3)
    6
    
    >>> double(10)
    20
    
    >>> double(8)
    16
    
    """
    return x * 2

if __name__ == "__main__":
    import doctest
    doctest.testmod()

このファイルを直接実行すれば、if文の中が実行されテストコードが実行される。このとき、何も出力されなければ問題ない。 直接実行せずにimportした場合には、if文の中が実行されることはない。


Pythonではurlparseモジュールのurlparse関数を使うことでURLをパースすることはできるが、この関数ではURLをscheme、netloc、path、parameters、query、fragmentの6つに分解するだけで、ポート番号を取り出したり、ファイル名を取り出すようなことまではやってくれない。

#!-*- coding:utf-8 -*-
import urlparse

url = u'http://user:pass@www.xxxxx.co.jp:8080/test/index.php?id=564&name=test#comment'
print urlparse.urlparse(url)
(u'http', u'user:pass@www.xxxxx.co.jp:8080', u'/test/index.php', '', u'id=564&name=test', u'comment')

そこで、URLをもっと細かくパースする関数と、そのパースした結果をURLに戻す関数を作ることにした。


ある文字列が与えられたとき、その中に含まれているASCIIコードで表現できないマルチバイト文字列だけを取り出したかった。例えば、「aあbcいdeうf」という文字列が与えられたときには、「あいう」を取り出すといった処理をしたい。

これぐらいの処理ならば探せばすぐに見つかるかと思ったが、それらしいものが見つからない。


44件中 6-10件目     [ 1 2 3 4 5 6 7 8 9 ]