銀月の符号

Python 使い見習いの日記・雑記

2009-01-01から1年間の記事一覧

PyGame 復習中

年末になったことだし(意味不明)、 PyGame の復習をするか。と、いうことで昨日からごそごそ作業中。とりあえず題材は 2D シューティングっぽい何か。弾避けゲームともいう。タイトル画面(っぽいの)とゲームオーバー画面(っぽいの)、直進する弾と自機…

年越し

大掃除終了、入浴終了で、今年の汚れをきっちり落とす。準備完了。いざ、 2010 年へ。

普段書かないゲーム関連

クリスマスだけれども(だからこそ?)ゲーム三昧。 ぷよぷよ7 だいへんしんルールも真面目にやり始めた。なるほど、ぷよ通とは違うゲームだ。多ツモのキャラの場合はなお。りんごなど多ツモのキャラは、でかぷよを使った単発や 2 ダブ攻撃が重要っぽい。そ…

Python レシピ更新、ファイルを16進ダンプする

「162:ファイルを16進ダンプする」を手直し。使うものが変わったので。 旧: 'Python'.encode('hex_codec') 新: binascii.hexlify('Python') hex_codec は内部で binascii.hexlify を用いている。そして hexlify 関数の使い方は簡単。ならば直接使ったほうが…

BeautifulSoup を使ったコード片のメモ

昔作ったはずなんだけど、コードをなくしたらしい。なので作り直した。はてな上にメモしておけば、今度こそなくさない?(いや、ちゃんとバックアップ取れよオレ) BeautifulSoup とは? HTML, XML パーサ。メモリにツリー状のデータを構築するタイプ。標準…

Python レシピネタ切れ

レシピネタ切れ中。「237:汚染モード(taintモード)を使う」とか「250:ブロックを委譲する」のような、明らかに困難なものの比率が高くなってきた。さて、どうしたものか。無理に増やすより、半年以上前のものの手直しでもするかな。見直すと怪しいコードが…

Python レシピ増加、コレクションのような性質を持つクラスを作る

doloop さんが 「126:コレクションのような性質を持つクラスを作る」を書いてくれました。ありがとうございます。特殊メソッド __getitem__ らだけでなく、 Python 3.0, 2.6 から導入が進んでいる ABC (抽象基底クラス)の知識も得られる、二度おいしいレシ…

Python レシピ追加、文字列の一部を特定の文字で埋める

「068:文字列の一部を特定の文字で埋める」を追加。Ruby レシピブック 第2版 には Password: PythonRecipe のようなテキストを Password: ************ に置き換える例が載っていたので、これに則ったコードを。 # coding: utf-8 import re def hide(patter…

Python レシピ追加、特定の文字コードで正規表現マッチを行う (鬼車のラッパー ponyguruma の紹介あり)

「029:特定の文字コードで正規表現マッチを行う」を追加。正規表現に限らず、テキストを扱うにはユニコード文字列を使うようにするのがベター、といった内容。でも、これで終わるのもなんだし、ユニコード文字列への変換を行わずに何とかする方法も提示して…

Python レシピ追加、変数と定数

「003:変数と定数」を追加。役に立たない文章の予感。言語仕様を知るにはこんなのより原典(http://docs.python.org/reference/executionmodel.html#naming-and-binding)とソースコードにあたるべきだから。書いた際に自分の復習になったのはたしかだけれども…

イテレータブルのある要素より後ろの要素を取り出す2

Python「インデクサとは違うのだよ、インデクサとは!」 - つまみ食う リベンジ。どうやら意図するところが「ある要素が複数あった場合、最後に現れたものの後ろ」のようで誤解していました。「最初に現れたものの後ろ」ではないのですね。これは、どうした…

イテレータブルのある要素より後ろの要素を取り出す (itertools.dropwhile)

Python「インデクサとは違うのだよ、インデクサとは!」 - つまみ食う を読んで。これは itertools モジュールの楽しさを伝える好機、と見たので。 itertools.dropwhile 「ある要素より後ろの要素を取り出す」は「ある要素以前を捨てる」と言い換えることが…

Python レシピ追加、いろいろなテキストフォーマットを解析

「076:いろいろなテキストフォーマットを解析」を追加。 PythonRecipe への書き込みは 5 ヶ月ぶり。内容は「日付と時刻」、「CSV, XML, YAML, HTML」、「URI (URL)」、「メール」、「Python のソースコード」の読み込み方法、もしくは方法が書いてあるところ…

暦に興味を持ったので、旧暦計算プログラム QREKI.AWK を Python に移植してみた

前回、前々回と祝日について触れた際、暦に興味を持ったので Wikipedia の暦法関連を読み漁っていた。天文の話だけでなく、歴史や文化の話も混じっていておもしろい。よくわかってなかった旧暦についても知ることができた。狭義の旧暦は今の日本の暦(グレゴ…

祝日判定 jholiday.py の C エクステンション

前回に引き続き、祝日判定を。 目的 ただ、 jholiday.py を爆速にしてみたかった(こういうの目的って呼ばないって)。何十万件といった量を扱わない限り「一瞬」で終わる処理のため、自分には速くすることによるメリットはない。ただ、どこまで速くできるの…

祝日判定 jholiday.py の改良

2010/3/27 文章全般を見直した。追記を繰り返した結果、読みづらいものとなっていたため。先日、画像にカレンダーを描画するスクリプトを作ったのだけれども。カレンダーには祝日情報が要る、と思ったのが発端。そして、祝日判定スクリプト jholiday.py に再…

Web 更新チェッカー作るぜ?

今年もあと2ヶ月。成果として人にアピールできるコードを1つ書こうと思って。2ヵ月後の自分に向けて宣言しておく。 RSS リーダー + Web 更新チェッカーのようなアプリを作るぜ! 今年のうちに作るのを目標に。ここ1年、自分用の Python ライブラリ、 CUI…

PIL が OpenType のプロポーショナルフォントを正しく読めていない?

font.getsize で OpenType の 'i' と 'w' を調べてみたのだけれど、なんで幅同じなんだろう? たとえば IPA Pゴシック。 >>> from PIL import ImageFont >>> font = ImageFont.truetype(u'ipagp.otf', 24) >>> font.getsize(u'i') (24, 24) >>> font.getsiz…

画像にカレンダー出力

この前使った calendar モジュールとさらに前(ブログには未記述)に使った PIL をあわせて使ったら、絵にカレンダーが描けそうだったのでやってみた。壁紙などの画像に直接カレンダーを描くのは考えが古い気もしたけれど、パソコン覚えたてのころに世話にな…

カレンダー出力

ちょっと HTML でカレンダーつくる必要に迫られたのだけれども、手打ちすると td タグの海の中に誤りが混入しそうな気がしたので(弱気すぎるだろ、オレ)。ここは半自動生成したいなと思った。なにか作っておけば、もし翌月の分を作る時、楽ができるという副…

Loto6 の過去結果も取得してみた

ロト6買ったことは1度しかないシュンが作る、ロト6結果取得スクリプト。先日のものを一度崩してやりなおし。過去のものも得られるようにしてみた。あと、 HTML の解析方法を正規表現から BeautifulSoup に変更。 HTML のことは HTML パーサーに任せてみた…

Re:Loto6の最新結果をPythonで取得してみた

『Loto6の最新結果をPythonで取得してみた - 牌語備忘録 -pygo』を見かけたので、 HTML の解析方法を正規表現 1 つだけとなるようにしてみた。シンプルさはかえって失なわれている気がする。正規表現ができてしまえば、マッチオブジェクトの group メソッド…

東方星蓮船で遊ぶ

『東方星蓮船』の曲データを Python 言語で取り出してみる、という遊びの紹介。 用意するもの 東方星蓮船 〜 Undefined Fantastic Object. thbgm.dat のどこからどこまでが曲なのかという情報 Python 東方星蓮船は同人ショップから(体験版なら無料で DL 可…

居眠り床屋問題解いたけれども

multiprocessing モジュールのマニュアル読みつつ、「居眠り床屋問題」をとりあえず解いた。けれども id:sumim さんからおそわった Axon.STM とかをつかってないので、もうしばらくこの問題とは付き合うことになりそう。要勉強。 # coding: utf-8 u"""居眠り…

Python Sapporo ? から帰宅

感謝 今月の Python 札幌は中止だったのだけど、それにもかかわらず 3 名の勇者さまが簡易オフしてたので乱入。 id:sumim さんとお話しする機会に恵まれまして、 Smalltalk 愛、プログラミング愛を見せつけられました。あぁ、それとくらべてオレの甘いこと。…

今日のバグ

Python/C API でクラスオブジェクト実装中のこと。実行時エラーに30分ほど苦しんだあげく発見(型名、メンバは変えてある)。 typedef struct { int spam; PyObject_HEAD int ham; int eggs; } spam_object; PyObject_HEAD マクロの上にメンバを定義してある…

Python 3 の bytes 型は数値の配列

自作のおもちゃライブラリを 2to3.py して Python 3 で動かしてみたが、うまくいかなかったものがあった。ちょっと調べていくと原因が見つかったのでメモ。bytes にインデックスアクセスしたりイテレータを要求する箇所で用いたりすると int が返る。 Python…

boost pyてょn

本を整理していたら『Boost C++ Librariesプログラミング第2版』が出てきたので。「たまには C++ もやろうぜ、 Python ばっかりじゃなくて」という声が聞こえた気がした。 Python にどっぷりつかって C めんどい C++ こわい状態のオレでも Boost の力を借り…

メタクラスの世界へようこそ! 前編

「http://d.hatena.ne.jp/rockRicefield/20090917/1253165583」を受けて。北の地の元ファゴット吹き、現 Python 使い見習いの fgshun 、メタクラスについて語ってみます。つっこみは大歓迎です。 クラスファクトリ type は関数ではなくてクラス type 関数を…

特定の拡張子のついたファイルを取得してみた改良案

元ネタは「特定の拡張子のついたファイルを取得してみた - 牌語備忘録 -pygo」。たぶん、牌語備忘録さんがさがしていたのは fnmatch.filter だと思ったのでトラックバックを。複数のほうはこれといったものはないけれど、 glob じゃなくて os.listdir と fnm…