gzipでMemoryError

pythonのgzipモジュールで読み込んで処理してたらメモリエラー。

MemoryError
gzip: sample.gz: invalid compressed data--format violated

おー、圧縮ファイル壊れてる。3G位ある圧縮ファイルで、つくんのに5日かかったのでちょっと凹んだ。

早く帰りたかったのでperlでちょこっと分割してtelnetで分散処理するスクリプト書いちゃったけど(これだと半日で終わるかな)。

家に帰ってきてからpythonでtelnetするモジュールを探してみた

みんなのPython Webアプリ編 を予約した

楽しみ。

ProductName みんなのPython Webアプリ編 [みんなのシリーズ]
柴田 淳
ソフトバンククリエイティブ / ¥ 2,604 ()
在庫あり。

pythonのdatetimeモジュール

6.10 datetime -- 基本的な日付型および時間型みながら。

>>> import datetime
>>> datetime.date.today()
datetime.date(2007, 7, 28)
>>> d = datetime.date.today()
>>> d.month
7
>>> d.day
28
>>> d.year
2007

で、matplotlibにはグラフを描きやすいようにmatplotlib.datesというモジュールがあって何日おきとか何年おきとかそんな感じの目盛りが簡単にうてる。

METAMORPHOSE 07 届いた

来月末に修善寺で行なわれるメタモのコンピが届いたヨ。

ProductName METAMORPHOSE 07
オムニバス
インディーズ・メーカー / ¥ 3,200 (2007-07-25)
在庫あり。

lindstromはやっぱええわ。あと、vvvv使いらしいtriponが気になる。

っていうかVJだけど、NintendoDSのタッチパッド使ったりとかWiiリモコンでVJやったりとかみると新しいデバイス使ってあれこれすんのは楽しそう。っていうか、DJの動きとかフロアの動きをゴニョゴニョして映像を生成したりとかはあるんだろうか?

IronPythonなんかつかってみると面白いことできるんじゃないかナァ。つうわけで、IronPython入れてみることにする。

Fedora7にmatplotlib-0.90.1をインストール

Fedora7用のrpmがないのでsrc.rpmをとってきて

rpmbuild --rebuild --define 'pyver 2.5' wxPython2.8-2.8.4.0-1.src.rpm

でいいと思うんだけど、rpm -Uvhで入れようとすると

エラー: 依存性の欠如:
    libiconv.so.2 は wxPython2.8-gtk2-unicode-2.8.4.0-1.i386 に必要とされています

と怒られる。so.2も在るし、ldconfigもきちんとしてるのに、、、、謎だ。

と思ったらこれrpmで入れてなかったわ。

結局tarballから入れた。

os.walk

かなり出遅れで、どう書くみてるので、なんかおーとかほーとかしか言葉が出ないんだけど、知らない言語の勉強になっていい。

pythonで再帰的にディレクトリとかファイルを探索するにはos.walkを使うらしい。

>>> import os
>>> for f in os.walk('.'):
...     print f[0]

f[0]にファイルのリストがf[1]にはディレクトリのリストが詰まって戻ってくる。

getopt

最近ずっと職場の正規WSでたいして使いやすくない(生産性のあがらない)GUIでクリックしまくりーな地味な解析作業をしてるが、いい加減いやになってきたので、スクリプトを書くことにした。

が、正規WSはRHEL3なのでpythonが2.2だった。というわけで、getoptモジュールをつかってコマンドオプションの解析ルーチンを書いてみた。

めんどい、やたらめんどい。自分でhelpメッセージを書けない身体になってることに気付いた。あとコードがなんか汚く見えてくる。optparseは楽でよいと再確認。

あと、どう書く?のお題もチャレンジする、pythonで。

networkxとpython-twitterでネットワーク描く

twitterのネットワークをグラフにして書き出してみる。python-twitternetworkxを使用。日本語のフォントの指定の仕方(pylabのほうだと思う)がわからなかったので日本語は表示されていない。

from pylab import *
from networkx import *
import twitter

myname= USERNAME
mypassword = PASSWORD

api = twitter.Api(username=myname,password=mypassword)
friends = api.GetFriends()
G = XGraph()

for friend in friends:
    G.add_edge(myname,friend.name)

for friend in friends[-3:]:
    for user in api.GetFriends(friend.id):
            G.add_edge(friend.name,user.name)

#pos=spring_layout(G)
pos=random_layout(G)
#pos = shell_layout(G)

draw_networkx_nodes(G,pos,node_size=100,node_color='b')
draw_networkx_edges(G,pos,width=1)
draw_networkx_labels(G,pos,font_size=8,font_family='sans-serif',font_color='r')

xticks([])
yticks([])
savefig("twitter.png") 
show()

spring

springにするとやたらとCPUを食うのでちょっと大きくなると厳しい。というわけで、自分のフォロワーのフォロワーは3つだけにした。他のレイアウトも試してみたが、スプリングのほうがよさげ。

spring

ランダムだと何みてるか分からんし。

spring

シェルはちょっと視覚的に面白みがない。

コンファレンスのアカウントから幾つかつないで、ネットワークを描くのが楽しそう。あとは、エッジの数が少ないのは枝刈りしないと、僕のR4だと結構厳しいし、視覚的にも見辛くなるかな。

pydocgui

あれーpydocがないなーと思って探したら、

c:\Python25\Lib\pydoc.py

だった。そして探す過程でpydocguiなるものを見つけた。tkでかかれていて、起動するとGUIがあがってwebサーバーがlocalhost:7464で起動して、ボタンを押すとブラウザが立ち上がるという親切設計

c:\Python25\Tools\Scripts\pydocgui.pyw

で起動

bruceでプレゼンテーション

pygameで遊んでたら、あーこれでプレゼン出来るじゃんと。

で、探したらbruceというのが既にあった。

pygletを利用しているので、画像の表示はもちろん出来るし、OpenGLなんかも使えて、サンプルのスライドでいきなり立方体がぐるぐる回るのとかちょっと楽しい。もちろんスライドからpythonインタプリタが動かせるのでライブコーディングとかも効果的なはず。

pygletを利用しているのでavbinを使えば、さらに動画も貼り付けられると書いてあったので入れようとしたんだけど、これがめちゃんこはまった。というか未解決。

avbinはlibavcodecを利用してるからFFmpegをインストールしてねとさらっと書いてあるんだけど、windowsへのインストールって難しい。linuxなら割と簡単にインストールできたんだけど。

MSYSとかMinGWとか既に入ってるのでconfigureするだけだと思うんだけど./configureってうつと何故かDOSが立ち上がってCPUを食い尽くしちゃうし。command.exeが起動してんのか?結局あきらめた。

機会があれば使ってみよう