銀月の符号

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

祝日判定 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…

AviUtl を Python から自動操縦する

あじさんの「AviUtlControl」と同じ動作を Python ctypes のみで目指してみる、そんな試み。いや遊び。 4 日前から作っていたが、形になってきたので晒してみる。 PyAviUtlLib(2009/9/20 更新) 名前は…pyaviutl.py 。うーん、考え直したほうがいいかも。 pya…

__new__ の調査便乗

RRF言語研究所さんの『http://d.hatena.ne.jp/rockRicefield/20090915/1253002685』に惹かれて。 Python 暦浅いはずなのにもう __new__ の魔窟へ突入とは。すごいです、友達になってください><そして自分も __new__ について復習してみた。 クラスオブジェ…

AviUtl を Python から自動操縦する、のか?

動画のエンコードの際、世話になっているソフト、 AviUtl。これを Python から操ってみようと思ったのがことの始まり。とはいえ、便利なものがすでに世に存在している。 「AviUtl Control」 。作者であるあじさんに感謝。「AviUtl Control」は AviUtl をコマ…

形態素解析エンジン MeCab 0.98pre3 野良ビルド

MeCab 0.98pre3 の Python バインディングを Windows XP Pro, MinGW, Python 2.5.4 and Python 2.6.2 という環境でコンパイルしてみた。晒してみる。方法は昨年11月の『形態素解析エンジン MeCab 0.97 とその Python バインディングを MinGW でビルドする - …

メモ、 Itertools Recipes

先日はコレの grouper の存在を知っておけば、もしくは体得していれば 10 分どころか 3 分でいけたのに。ということでリンク張っておく。 Python 3.1版(英語) Python 3.0版(英語) Python 2 最新版 (2009/9/7 現在 2.6)(英語) Python 2.5版 この節、地…

4年前の、そして半年前の簡単な問題を10分で解いてみた

寝る前に、ちょっとしたプログラミング問題を見つけたので挑戦してみた。 本日の目玉を先に、一言で 『データ列を長さnのグループにまとめる常套句』があることを知った。衝撃的だった。 問を提示しているサイト 簡単な問があったのでPythonでやってみた - …

Python 2 と Python 3 のユニコード文字列、バイト列の違いメモ

Python 3 の数値をバイト列に変換する方法は bytes([i])*1。いままでとあきらかに違うことを知ったのが発端。 >>> bytes([97]) b'a' ユニコード文字列、バイト列の違いを調査開始。 型の名称とリテラル表記 Python 2.6 は新旧両方の書き方ができるものも。 P…

標準コーデックとバイト列

半年ほど前に『「XOR をとるコーデック」のファクトリ - 銀月の符号』なんて作ったなーというのを思い出して。ふたたび遊んでみようとドキュメントを読んでいたところ Python 3 では標準コーデックの種類が減っているのに気づいた。 2.6の標準コーデック 3.1…

Django と JQuery でフォームの処理

JavaScript 再入門から1週間弱。 JQuery で遊べるところまできた。あるフォームの内容を非同期通信するページを Django と JQuery を用いて作成する手順について自分なりに整理してみる。 Ajax 。 フォーム Django でフォームを扱う方法の一つである django.…

昨日からはじめた JavaScript

『まつもとゆきひろ コードの世界?スーパー・プログラマになる14の思考法』「第5章 Ajaxについて」を読んだことで JavaScript 再入門してみたくなって、昨日から『JavaScript 第5版』「第1部 コアJavaScript」の読み直しをはじめた。今朝、 8章「関数」と9章…

乱数生成アルゴリズム Xorshift を random.Random のサブクラスとして実装してみた

すごい乱数生成アルゴリズム「xorshift」 - Pashango’s Blog の Python 最高!! につられて。 random.Random を継承する形で Xorshift アルゴリズムを。なぜつくったのかまったくの謎だけど Python 最高!! だからしかたない。メルセンヌ・ツイスタ (Merse…

帰ってきたー

RubyKaigi2009 終了より一日遅れて道東に帰還。き、気温差がでかくて風邪ひきそう…。

旅行準備中

いざ RubyKaigi2009 へ。

無題

自分にできること、できないことを把握しなおし中。実はできるのに断ってしまったり、逆にできないのに安請け合いして痛い目見たりしないために。めざすべきは Win - Win の関係。