Xs and Os Referee
○×ゲームの勝敗を返す。縦と横3列と斜め1列づつをすべて調べれば簡単にできる。
どうやって調べるかが重要になると思う。
2014年2月26日水曜日
2014年2月25日火曜日
2014年2月11日火曜日
geventとlxmlを同時に使うとフリーズする
import gevent.monkey
gevent.monkey.patch_socket()
import urllib2
from lxml import html
r = urllib2.urlopen('http://www.yahoo.co.jp')
et = html.parse(r)
上記のようなコードを実行するとhtml.parseで処理が帰ってこずフリーズすることがある。
import gevent.monkey
gevent.monkey.patch_socket()
import urllib2
from lxml import html
from io import StringIO
r = r = StringIO(urllib2.urlopen('http://www.yahoo.co.jp').read().decode('utf-8','replace'))
et = html.parse(r)
urlopenの戻り値を直接使わずにいったんStringIOにデータを格納してからhtml.parseを実行すると、理由はよくわからないがフリーズしなくなる。
2014年2月9日日曜日
web2pyのクエリー
web2pyでtypeがdatetimeなフィールドのyearなどでクエリーを作成する方法でハマった。
正しくは
web2pyは使いやすいがこのへんのドキュメントがないととても困る。
#モデル
#db.py
db.define_table('post',
Field('title'),
Field('pub_date', 'datetime'),
format = '%(title)s')
#コントローラー
#default.py
def date():
rows = db(db.post.pub_date.year == 2014).select()
return dict(rows=rows)
このようなコードを書いて実行するとdb.post.pub_date.year == 2014がQueryを返さずboolを返していてエラーになっていた。正しくは
#モデル
#db.py
db.define_table('post',
Field('title'),
Field('pub_date', 'datetime'),
format = '%(title)s')
#コントローラー
#default.py
def date():
rows = db(db.post.pub_date.year() == 2014).select()
return dict(rows=rows)
yearではなくyear()にしないとQueryにならなかった。web2pyは使いやすいがこのへんのドキュメントがないととても困る。
登録:
コメント (Atom)