04042011 三島 静岡 javascript
延期になってた第二回は静岡で4/23開催
今回は三島駅からすぐのゆうゆうホール。
今回は関数の章なので次の5,6章とあわせてこの本のピークに突入
04042011 三島 静岡 javascript
延期になってた第二回は静岡で4/23開催
今回は三島駅からすぐのゆうゆうホール。
今回は関数の章なので次の5,6章とあわせてこの本のピークに突入
慣れれば生地はサクサク作れるし、ほとんどの工程をボールの中だけでやってしまうことが可能なので洗い物があまり出ない(これ重要)
具を詰める作業は子供と一緒に。難点は数が作れないあたりか(200g打って8個分の生地)
蕎麦打ち用のこね鉢使えば一度に600g位打てるかな。そうすると24個作れるのか

蒸しあがり。「豚バラとねぎ」「鶏肉、椎茸、筍」というオーソドックスな組み合わせ。

今の蒸し器だと一度に5個までしか蒸せないので、2,3段重ねられる蒸し器が欲しいところ。
03042011 Python
Amazon アフィリエイトのレポートをメールで自動で受けとる 2011年版を見て、毎回アクセスして確認すんのは面倒なので僕もやっとこうと思った。
普段こういう作業ってperlでやってしまうことが多いのでPythonのmechanize使うのは初めてだ。あと、pyquery使うのも初めてだったりするが、jQuery知ってればサクっと使えてかなり便利。
#!/usr/bin/env python # -*- encoding:utf-8 -*- # kzfm <kerolinq@gmail.com> from mechanize import Browser import smtplib from email.MIMEText import MIMEText from email.Header import Header from email.Utils import formatdate from pyquery import PyQuery as pq email = 'XXXXXXXX@gmail.com' password = 'XXXXXXXXXXXX' amazon_url = 'https://affiliate.amazon.co.jp/' def get_amazon_data(): br = Browser() br.set_handle_robots(False) br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; \ rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] br.open(amazon_url) br.select_form(name="sign_in") br["email"] = email br["password"] = password response = br.submit() d = pq(response.get_data()) return [data.text for data in d('div').filter('.data')] def send_mail(data): from_addr = email to_addr = email subject = u'Amazonアフィリエイト' body = u""" 発送済み商品合計: %s 売上合計: %s 注文済み商品: %s クリック数: %s あなたのコンバージョン: %s """ % tuple(data) msg = MIMEText(body.encode("utf-8"),'plain','utf-8') msg['Subject'] = Header(subject, 'utf-8') msg['From'] = from_addr msg['To'] = to_addr msg['Date'] = formatdate() s = smtplib.SMTP('smtp.gmail.com', 587) s.ehlo() s.starttls() s.ehlo() s.login(email, password) s.sendmail(from_addr, to_addr, msg.as_string()) s.close() if __name__ == '__main__': amazon_data = get_amazon_data(); send_mail(amazon_data)
4/1からちょっとデザインが変わったようで、紹介料率の項目がなくなっていたので修正した。
wikiやめたのでSphinxにメモるようにしてます。
で、ちょっと悩んでいるのがmake html後の手順だ。
現在/var/www/html以下はgitで管理していて、/var/www/html/[sphinx_html]みたいにドキュメントを置こうかなと考えているんだが、それってクライアント側でmake htmlして_build/htmlをcp -Rして/var/www/htmlを管理している方のGitに管理させるのがいいのかそれとも分けて管理してサーバー側で改めてmake htmlするようにしたほうがいいのかと。
あとはmake htmlしたあとの_buildディレクトリってもうちょっと自動的に公開されるようにできんかなと。
自動化といえば作業しているrstを監視しといてrstが更新されたら裏で自動的にmake htmlかかるようにできんかなとかも思った。
Makefile読んだらmake htmlは
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
ということなのでSPHINXBUILDつまりsphinx-buildコマンドを直接呼び出して明示的にBUILDDIRを指定してやればいいってことだった。
粉物は楽しいですね。
薄力粉とお湯なので油断すると手にくっ付く。油を入れる分パン作りよりはましだけど

一次発酵終了後。正方形に延ばしてから、畳みながらドライフルーツを挟んでいく。この重ねあわせがチェンツォンらしい。

子供用なのでドライフルーツはわんさか。あとプルーンを刻んだのも投入した。

蒸しあがり。本当は菱形に切るのがオシャレらしいんだが切り方わからん。

そしておやつタイム。息子の顔が北の国からのおとんみたいになっとんな。

初めてにしてはよく出来た
01042011 Python
引数にファイルを指定して呼び出せばそのファイルでimportされているモジュールを列挙してくれる
import cPickle with open("list.txt","w") as f: cPickle.dump([1,2,3,4,5],f) with open("list.txt","r") as f: a = cPickle.load(f) print a
こんなのだと
Name File ---- ---- m __main__ pickletest.py m cPickle /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/cPickle.so
こんな感じ。
01042011 Arduino
31032011 Python
ソース見ると毎度毎度コンパイルしてた
def match(pattern, string, flags=0): """Try to apply the pattern at the start of the string, returning a match object, or None if no match was found.""" return _compile(pattern, flags).match(string) def search(pattern, string, flags=0): """Scan through string looking for a match to the pattern, returning a match object, or None if no match was found.""" return _compile(pattern, flags).search(string)
あとはこれで使ったexperimentalなScannerクラスのコード読んだ。
class Scanner: def __init__(self, lexicon, flags=0): from sre_constants import BRANCH, SUBPATTERN self.lexicon = lexicon # combine phrases into a compound pattern p = [] s = sre_parse.Pattern() s.flags = flags for phrase, action in lexicon: p.append(sre_parse.SubPattern(s, [ (SUBPATTERN, (len(p)+1, sre_parse.parse(phrase, flags))), ])) s.groups = len(p)+1 p = sre_parse.SubPattern(s, [(BRANCH, (None, p))]) self.scanner = sre_compile.compile(p) def scan(self, string): result = [] append = result.append match = self.scanner.scanner(string).match i = 0 while 1: m = match() if not m: break j = m.end() if i == j: break action = self.lexicon[m.lastindex-1][1] if hasattr(action, '__call__'): self.match = m action = action(self, m.group()) if action is not None: append(action) i = j return result, string[i:]
31032011 music