Python

Python+TkでD&D 3

以前書いたものの原因が分かった。 masahero.hatenablog.jpワイド文字列がダメみたい。 "CallWindowProcW"みたいに最後に"W"がつく関数をすべて"A"に置き換えると動作する。Pythonというかpywin32側の仕様が変わったのだろうか。

Python+TkでD&D 2

以前以下のような記事を書いた。 masahero.hatenablog.jp時間もたってこのままでは動作しなくなっているようなので修正版を作った。 Python 3.6.9では動作するが、Python 3.7.3では元のウィンドウプロシージャを呼び出す箇所で"Access violation"が発生する…

chainerの一部をOpenCL対応にしてみた

ディープラーニング用のパッケージであるchainerがCUDAにしか対応していなかったのでOpenCLへ変えてみた。 masa.h / Chainer-CL — Bitbucket 最終目標はCUDAの排除。

PyMSMQ書きはじめ

Windows10にしてMSMQがいつの間にか動いていたので、活用すべくPythonフロントエンドを書き始めてみた。 https://bitbucket.org/masa.h/pymsmq http://redmine.masahase.info/projects/pymsmqといっても現状はCOMオブジェクトに対する非常に薄いラッパ。

NumPyはやっぱすごい

Python3.4以降にはstatisticsというモジュールが標準ライブラリに追加された。標準ライブラリなので使う人が多くなる可能性があるが、NumPyが使えるなら当然のようにそちらのほうが早い。 適当にベンチマークしてみた結果を示す。

Arcadia用recipe改良

Arcadia用recipe - MasaHeroの日記を改良した。というよりもテーブル組版でなくスタイルシート版を参照するようにした。 from calibre.web.feeds.recipes import BasicNewsRecipe class Subscription(BasicNewsRecipe): u'Arcadiaの作品を読み込む' title = …

Arcadia用recipe

Calibreはrecipeを自前で用意することでwebサイトを自動で電子書籍に仕上げてくれる。で、Arcadia用のrecipeを作ってみた。 # -*- coding: utf8 -*- from calibre.web.feeds.recipes import BasicNewsRecipe import re class Arcadia_BBS_subscription(Basic…

Python+TkでD&D

標準ライブラリリファレンスを読むとTkdndが使えるみたいなことが書いてあるが、リファレンスには説明がなくソースを読めと言わんばかりの状態。Tkdnd.pyを見ても要素をウィンドウ間でやり取りできるがD&Dされたファイルの情報の受け取り方はさっぱり。結局w…

wxPythonに苦戦

CheckListBoxがうまく扱えない。SizerにいれてLayout()とすると縦方向のサイズが0になってしまい以降のコントロールの配置がおかしくなる。 具体的には以下のコードで狙ったとおりの配置ができない。 class AllMovePanel(wx.Panel): u"""全体移動用のパネル"…

優れた Python プログラマを見分ける10+1の質問に答えてみる

[python] 優れた Python プログラマを見分ける10+1の質問 - methaneのブログ 最近はPythonばかりなので答えてみるが、あまりにダメダメすぎる内容なのでもうちょっと勉強してみるかな。 自分で書いてる分にはIPythonでTry&Errorすればどうにかなるからあまり…

tkFileDialogで複数ファイル選択

tkFileDialog.openfilenamesで複数ファイル選択をした際、Pythonなんだから当然リストで返ってくるものだと思ったら、スペース区切りの単一文字列を返された。 tclの文法を引きずってるみたいで、要素中にスペースが含まれると"{}"で囲われる。しかしながら"…

FUSEでやっとある程度のものができた

まだまだ実装していない機能があるが、とりあえずviでファイルの編集ができる程度にはなった。 あまりに時間をかけすぎたせいか、欲しかった機能(重複削除)がZFSに実装されてしまった。もともとはPyDumpFS用として作り始めたので、そちら用にはまだ価値はあ…

Galge.comラジオをPodCast化

とりあえず過去ログ分ではうまくいき一段落したので公開してみる。感想としては、不定型のHTMLのパースはもう嫌。見た目定型に見えても、idを付けてあるタグが違ったり、idの内容のフォーマットが途中から変わったり、要素が必ずしもタグで囲まれているわけ…

FUSEで入出力エラー?

"abc"というファイルがある状況で $ cp abc hij cp: writing `hij': 入力/出力エラーですとなる。このときのFUSE側のログが unique: 94, opcode: LOOKUP (1), nodeid: 1, insize: 44 LOOKUP /hij getattr /hij *** getattr : /hij unique: 94, error: -2 (No…

FUSEのreaddirの問題解決

FUSEのreaddirで詰まった - MasaHeroの日記 解決編。話は単純。ついつい文字列型としてUnicode型を使ってしまっていたがFUSE側はByte型で決め打ちしていたらしい。基本的に自動で変換されるはず*1だが、今回はなぜか変換されていなかったようなので、適当に"…

FUSEのreaddirで詰まった

FusePythonで自作のファイルシステムのラッパーを作ってOSから扱えるようにしてみようとしたのだが詰まった。readdirがうまくいかない。 その部分を抜粋するとこんな感じ: def readdir(self, path, offset): print "*** readdir", path, offset yield fuse.D…

PythonでFUSE

FUSEのPythonバインディングについて調べていたら下のような記述が見つかった。 python-fuse: これが前からあるやつ。ただし、ドキュメントがほとんどない ソースを読め、という硬派なアプローチ。 軟弱者の私には荷が重い FUSE - skobayasの日記 確かに少…

sqlite3モジュールのConnectionオブジェクトはスレッドセーフじゃない?

FUSEのバックエンドにsqliteを使ってみたら以下のようなエラーが出た。 Traceback (most recent call last): File "/usr/lib/python2.6/site-packages/fuse.py", line 361, in __call__ return apply(self.func, args, kw) File "sqlitefs.py", line 139, in…

メタクラスで奮闘中

まず、 class Base(type): def __new__(cls, clsname, clsbases, clsdict): parents = [b for b in clsbases if isinstance(b,Base)] print parents return super(cls, Base).__new__(cls, clsname, clsbases, clsdict) class Child(object): __metaclass__ …

とりあえず形になってきたが……

勉強用にO/R Mapperを自作中 - MasaHeroの日記の続き メタクラスとか使ったらもちょっと使いやすくなるのではと思い現時点まで出来ているものを廃棄。もったいないので一応記念にここに残しておく。

疑問

Djangoのモデル定義で class Hoge(models.Model) hoge = models.TextField() とすると、Hoge.hogeは作られず配列Hoge._meta.fieldsに追加されるみたいだがどうやってるのだろうか。

勉強用にO/R Mapperを自作中

PyDumpFSをwin32対応にするための過程でsqliteを使うことにしたのでそれようのO/R Mapperを勉強がてら作っている。 実用に耐えるものが欲しいならSQLObjectとかSQLAlchemyとか使ったほうが良いんだろうけど、sqlite3モジュールを使うのは初めてだしO/R Mappe…

2.4と2.5の差異?

家にあるPython2.5 on Fedora9で import sys import gettext from optparse import OptionParser t=gettext.translation('hogehoge',) _=t.ugettext parser=OptionParser() parser.add_option("-e","--exclude",dest="exclude_expr",action="append", metava…

gettextを使ったモジュールをsetuptoolsでインストールできるようにする。

gettextを使うとメッセージカタログが必要になる。インストーラーとしてdistutilのみを考えるなら data_files=[ ('share/locale/ja_JP/LC_MESSAGES',['src/locale/ja_JP/PyDumpFS.mo']) ], といった形で書いておけば指定した場所においてくれるが、setuptool…

PyDumpFSにバグ

ln -s . hogeとかしてあるところをバックアップしようとするとsymlinkを延々とたどってしまい、パスが非常に長くなってしまいエラーを吐いて落ちる。symlinkのリンク先をたどるようにした弊害が出た。ディレクトリツリーがループになっていることを判別する…