MovableTypeにはXML-RPCインターフェースが準備されているので、外部から新しい記事を投稿したり過去の記事を取得したりできます。MT自体のリファレンスを探せなかったので、コチラのページを参考にさせて頂きました。
‘programming’ カテゴリーのアーカイブ
PythonでMovableTypeのXML-RPCインターフェースを叩く
2010年11月26日 金曜日ExcelのVBA使い方メモ
2010年11月23日 火曜日Hello Cython World
2010年10月24日 日曜日lxmlのソースを読もうとしたらcythonというPythonの拡張を書くためのPythonとCの間の子みたいな言語で書かれているという事で、全く知らないままだとlxmlのソースに挑む気が起こらなかったので少し調べてみました。まぁ調べてみたといってもcythonのドキュメントの最初に書かれているGetting Startedを舐めただけなんですけども。
Pythonで実行時間とメモリの測定をする
2010年10月3日 日曜日しばらくベンチマークコードを書いてなくてすっかり忘れていたので、メモ書きです。今回は例題として、yahooのこのページをBeautifulSoupとlxmlでのスクレイピング比較をしてみる事にしました。比較対象の関数は以下の通りです。どちらのコードも入力・出力ともに同じなので、どちらが実行時間やメモリ使用量が少ないのかを知りたくなりますね。
# BeautifulSoup def scrape_with_bs(html): from BeautifulSoup import BeautifulSoup soup = BeautifulSoup(html) rows = soup.find('table', attrs={'class':'channel9'}).findAll('tr') channels = rows[0].findAll('td', attrs={'class':'station'}) programs = rows[1].findAll('td', attrs={'class':'turnup'}) res = [] for ch, prog in zip(channels, programs): res.append((ch.find('span').string, ch.find('a').string, prog.find('a').string)) return res # lxml def scrape_with_lxml(html): import lxml.html root = lxml.html.fromstring(html.decode('utf-8')) rows = root.xpath('//table[@class="channel9"]/tr') channels = rows[0].xpath('td[@class="station"]') programs = rows[1].xpath('td[@class="turnup"]') res = [] for ch, prog in zip(channels, programs): res.append((ch.xpath('span/text()')[0], \ ch.xpath('descendant::a/text()')[0], \ prog.xpath('descendant::a/text()')[0]) ) return res
ちなみに上記の関数から得られる配列をprettyprintすると、以下の様な出力が得られます。各チャンネルごとに、今放送中の番組を取得しています。
[ [ "アナログ1ch", "NHK総合", "ニュース" ], [ "アナログ3ch", "NHK教育", "ハーバード白熱教室@東京大学「イチローの年俸は..." ], [ "アナログ4ch", "日本テレビ", "真相報道 バンキシャ!" ], [ "アナログ6ch", "TBS", "THE世界遺産「皇帝たちの地下宮殿」〜..." ], [ "アナログ8ch", "フジテレビ", "笑顔がごちそう ウチゴハン" ], [ "アナログ10ch", "テレビ朝日", "ドライブ A GO!GO!「群馬格安温..." ], [ "アナログ12ch", "テレビ東京", "TOKYO ..." ], [ "アナログ14ch", "TOKYO MX", "芸術史と芸術理論( 10)第1回◇放送..." ] ]
久々にC++使ったら進化してて素敵になってた件
2010年9月27日 月曜日最近、数年ぶりにC++を触っているのですが、いつの間にかかなり使いやすくなっていました。まだ全容は把握できてないのですが、とりあえず印象に残った以下の項目について書いてみたいと思います。
- BOOST_FOREACHとautoですっきりループ
- tupleで無くなる無駄な構造体
- #pragma onceで楽々インクルードガード
- std::functionとlamda関数でコンパクトなコード
- typeidでリフレクション
主にC++0x周りの話だと思っていますが、勘違いしている可能性も高いです。
ncursesを使ってみた
2010年9月18日 土曜日[Python] OSX 10.6でMySQLdbのインストールに手間取った話
2010年9月5日 日曜日表題の件ですが、何も考えずにeasy_install MySQL-pythonとすると、インストールは成功するものの、importしようとすると以下のようなエラーが出て使用できませんでした。
ImportError: dlopen(/path/to/_mysql.so, 2): no suitable image found. Did find: /path/to/_mysql.so: mach-o, but wrong architecture
時間のインターバルをcron的に扱うPythonモジュール書いた
2010年8月11日 水曜日Pythonでタイムゾーンを扱うメモ
2010年8月10日 火曜日日本だと普段扱わないので、忘れがちなタイムゾーンの処理をメモ書きです。ここでは例として、日本時間とアメリカ東海岸標準時の変換してみます。
Pythonでいろんなバイナリファイルを覗いてみる
2010年8月1日 日曜日プログラマをしていると、ちょくちょくバイナリデータから情報を読みたくなりますね。そんな時は、ブツブツ言いながらバイナリエディタと睨めっこすることになるわけですが、これが結構大変なので、何とか楽にならないかなぁと思って探していると、hachoirというナイスなpythonモジュールが見つかりました。このモジュールを使うとバイナリデータをパースして様々なデータを取得できます。かなり多くのデータフォーマットに対応している(現時点で70種類)のが素晴らしいです。
