| 2009-12-21
(*)
|
# install-elisp |
|
twitter で install-elisp という、emacs lisp のプログラムをインストールする emacs lisp プログラムに触れていた人がいた(作者っぽい)。
それをインストールする ebuild を書いた。
install-elisp が取ってきたプログラムをインストールする場所は自分で決められるのだが、~/.emacs.d/ に入れるようにサンプルが書いてあったのでその通りにした。
そして、そのことに安堵感を覚える自分がいる。
なぜか。
ホームディレクトリの下はパッケージ管理していないものが置いてあっても自己責任である。
たとえ依存関係を解決してくれなくても、そういうもの、と思うだけである。
翻って、常々気持ち悪いと思う Python の easy_install は、基本的に /usr/lib の下にある site-packages にファイルを置こうとする。
これがいけない(ということに、今回思い至った)。
easy_install のような仕組みは個人的なパッケージ導入に留まっていればいいのであって、システムとしてのパッケージ管理と競合するべきではない。
勿論、依存関係はどこに入れようと同じであるから、機能として重なる部分はあるのでそこは API などで提供して上げるのはいいと思う。
しかし、システムとして提供するものをインストールするのは、他人の領分を侵す行為であると思うのだ。
Windows にパッケージ管理が存在しないのは別問題なので、それは別途対処していただきたい。
|
|
posted at 20:50:24
#
|
|
| |
| 2009-04-25
(*)
|
# PyDS を Python 2.6 に対応させる |
|
騙し騙し使いつづけている PyDS だが、Python 2.6 では起動すらしなくなった。PyDS が動きません。メタクラスに渡すものが間違っているとか何とか、ssl モジュールで死ぬ。 と Python 2.6 すら時期尚早 に書いた通り。
具体的にトレースバックを晒すと、
Traceback (most recent call last):
File "/Users/tetsushi/Gentoo26/usr/bin/pyds-start", line 34, in <module>
import PyDS.Server
File "/Users/tetsushi/Gentoo26/usr/lib/python2.6/site-packages/PyDS/Server.py", line 45, in <module>
import PyDS.Tool
File "/Users/tetsushi/Gentoo26/usr/lib/python2.6/site-packages/PyDS/Tool.py", line 50, in <module>
import PyDS.StructuredText
File "/Users/tetsushi/Gentoo26/usr/lib/python2.6/site-packages/PyDS/StructuredText.py", line 43, in <module>
import PyDS.docpytils
File "/Users/tetsushi/Gentoo26/usr/lib/python2.6/site-packages/PyDS/docpytils.py", line 2, in <module>
from urllib2 import urlopen, URLError
File "/Users/tetsushi/Gentoo26/usr/lib/python2.6/urllib2.py", line 92, in <module>
import httplib
File "/Users/tetsushi/Gentoo26/usr/lib/python2.6/httplib.py", line 1054, in <module>
import ssl
File "/Users/tetsushi/Gentoo26/usr/lib/python2.6/ssl.py", line 81, in <module>
class SSLSocket (socket):
TypeError: Error when calling the metaclass bases
function() argument 1 must be code, not str
標準モジュールで死なれて、しかもメッセージがメタクラスの呼び出し方が悪い、というようなもの。
手の出しようが思い浮かばない。
まあしかし、将来それも遠くない将来 Python 2.6 に移行するとき、PyDS だけは 2.5 でないと動かないというのは困る。
手掛かりを探してググった。
引っ掛かった中にあったのが、
TypeError: ssl() argument 1 must be _socket.socket, not _socketobject -> Solution
という2005年のメール。
timeoutsocket はもういらないんだ、と解決が謳われている。
timeoutsocket? そういえば使っていたぞ。
ということで、Server.py の import timeoutsocket を無くして、代わりに socket でタイムアウトを設定する。
(もしかすると、もっとユーザー側のところでタイムアウトが設定できるようになっていたかもしれないが、ともかく応急手当)
このポストがアップロードされれば、とりあえず使えるということにはなるだろう。
|
|
posted at 22:30:40
#
|
|
| |
| 2009-04-16
(*)
|
# みんなで正誤表 |
|
随分前から nifty の方で 勝手に正誤表 というのを作っていたりしたのだが、自分で書いているだけより他人にも作ってもらえるようにした方がいい、とは思っていた。
具体化しないままだったのだが、今回 Google App Engine を使って みんなで正誤表 というサイトを立ち上げた。
是非使ってみてほしい。
|
|
posted at 20:01:20
#
|
|
| |
| 2009-04-11
(*)
|
# GAE Hack-a-thon |
|
参加してきた。
当初、というか前回打ち合わせ時にはストレージ的なものをやるということにしていたのだが、gaedav の存在を知ってほぼモチベーションを失ってしまった。
ということで、急遽、remote_api グループに参加した。
どこから手を着けたらいいか判らない状態からだったので、午前中はほぼ公式の文書を読むだけで終わり、午後に書いたのもモデルクラスからローダーを生成するというスクリプトだけ。
最初は dir(model_class) から Property を引っ張り出して並べていたが、バルクで突っ込む用の csv と順番が食い違ってしまう、という問題があった。
inspect とかで何とかするのか、などとほざいていたら csv の先頭行にデータ名を書くという現実的な案を出してくれたので、それを実装した。
(良く考えれば inspect より ast とかの方がどうせ使わないにしろまだましな発想だ。)
その間に他のメンバーが実際にデータをアップロードしたり削除したりという部分を作ったので、そこそこ使えるものになった。
一日があっという間だ。
|
|
posted at 21:11:44
#
|
|
| |
| 2009-04-06
(*)
|
# GAE Hack-a-thon (事前ミーティング) |
|
珍しくイベントに参加してみることにした。
今日はその事前ミーティング。
ということで、渋谷のセルリアンタワーにある Google オフィスに行ってきた。
|
|
posted at 23:49:36
#
|
|
| |
| 2009-03-28
(*)
|
# 変更のためのパーミッションがありません。 |
|
昔作った django のアプリケーションを 1.0.2 で動かそうとした。
admin インターフェイスがほぼ全てという代物で、
移行作業が要る。
admin を import するようにして立ち上げてログインしたら
「変更のためのパーミッションがありません。」
と。
パーミッションの設定なんてあったかな。
実際は urls.py に
admin.autodiscover()
と書かなければいけないという説明を見落していたためだったようだ。
|
|
posted at 21:28:48
#
|
|
| |
| 2009-01-21
(*)
|
# 良く似た題名の2冊 |
|
ときどきの雑記帖で知ったが工学社から「はじめてのPython3」が出るそうだ。
オライリーからは「初めてのPython 第3版」も2月に出るという。
ところで「はじめてのPython」は名前が紛らわしいと叩かれるが、あれは工学社が「はじめての」でシリーズ化している中の一冊として著者にはどうしようもなかったはずで、あまりに責められることに同情を禁じ得ない。
追記(2009-01-22,2009-01-29):
中身についてもいろいろある、というご指摘をいただきました。
が、そこは、読んでない読んだはずだけど記憶に残っていないのでコメントを控えます。
(出版前に著者以外の人がチェックする、というシステムはないんですかねえ。)
|
|
posted at 07:51:44
#
|
|
| |
| 2009-01-19
(*)
|
# jinja2 |
|
Python2.6 の和訳レポジトリを持ってきて、make html したら ImportError になった。
jinja2 というモジュールがない、と。
さっき jinja 持って来たよ(svn で自動取得)と思ったが、jinja と jinja2 は別物なのだ、きっと。
いつものごとく ecopy で prefix に dev-python/jinja2 をインストールしたら、通った。
ML では何かエラーで止まるとか何とか言っていたように思ったが。
|
|
posted at 23:51:44
#
|
|
| |
| 2008-12-12
(*)
|
# dvcs と eselect |
|
mercurial で管理している Python のパッケージがある。
仮に hoge だとしよう。
あるとき、少し手の込んだ変更を試したい、と思い隣に clone して huga とした。
ところが、Python のパッケージ名としては依然として hoge を使いたいのである。
そこで、元々の hoge を hogehoge として、hoge は huga へのシンボリックリンクとした。
そんなとき、hoge のユーザーがパッチをくれた。
もちろん実体が huga である現在の hoge も元の hoge のクローンから派生しているのだからそこでマージすることはできる。
しかし、huga の変更が生きるかどうか判らないので、やはり元の hoge にパッチを当てて確認するのが筋だろう。
そこで、hoge のシンボリックリンクを hogehoge に張り替えた。
こんなことを繰り返すことになったとしよう。
そのうち、クローンも増え始める。
状況の細部を無視すると、していることは「複数バージョン」をシンボリックリンクで「切り替える」ことだ。
それはどこかで聞いたことがあるシナリオだ。
eselect だ。
Gentoo を使っていない人のために説明すると、eselect とは元々 gcc だの binutils だの emacs だのの複数バージョンをインストールして使い分けたい人のために用意されている機構である。
昔はそういう要望に各パッケージが適当に対応していたが、その内インターフェイスを統一しようということになって出てきたもの、だと思う。
ということで、hoge.eselect ファイルを作る。
Gentoo のツールらしく、eselect ファイルも基本的に bash スクリプトである。
/usr/share/eselect/modules にいくつかファイルがあるので、真似をすれば大して難しくない。
そして作った hoge.eselect を /usr/share/eselect/modules に置く。
と、こんな感じで使える。
% eselect hoge show
Current target of hoge:
huga
% eselect hoge list
Available hoge targets:
[1] hogehoge
[2] huga *
% eselect hoge set 1
Switching hoge to hogehoge ...
%
まとめ: dvcs のクローンリポジトリを eselect で切り替えることができる。
他の人はどうやってこういう切り替えを実現しているのだろう。
特に Gentoo 以外の人は
(多分似たような目的のツールがあるのだろうとは思うが)。
|
|
posted at 16:00:16
#
|
|
| |
|
|
| |
| 2008-09-30
(*)
|
# pylint で del の扱いが変 |
|
とりあえずサンプルコード(testdel.py):
"""
'del name' without defining 'name'
"""
del name
これを python testdel.py と実行すれば当然 NameError になる。
ところが、pylint testdel.py の結果は完璧(10点)だ。
実は最初に del の扱いが変、と思ったのはこんな(testfuncdel.py):
"""
del in function
"""
def func1():
"""
del variable with typo
"""
namae = "mft"
print namae
del name
func1()
python で実行すると UnboundLocalError になるところだが、pylint の警告は「使われていない変数 name」だ。
この「使われていない変数」というのは、代入したのにその後使われないというような無駄なコードを指摘する警告なので、どうも pylint には del が代入文のように見えているようだ(name = None みたいな?)。
知られているバグだろうか。
|
|
posted at 02:48:48
#
|
|
| |
| 2008-09-03
(*)
|
# dev-python/rope-0.8.4 |
|
Gentoo に rope のパッケージが登場した。
Gentoo Bug #202700 にリクエストを出してほぼ半年位何の反応も無かったが、気付いたら「rope と ropeide は入れといたよ、ropemacs は後でね」というコメントとともにツリーに追加されていた。
この半年の間には ropevim というのも出てきてたりしたはず(だけど vim でプログラムは書かないので使ったことも使う気もない)で、これがどうなるんだろうというのが少し気になったりならなかったり。
|
|
posted at 20:09:52
#
|
|
| |
| 2008-06-26
(*)
|
# 残り17 |
|
2.5翻訳のlib部分で残されているパッチの数。
ここ数日で、やっと ls -l で一画面に収まるような数になった。
|
|
posted at 23:56:00
#
|
|
| |
| 2008-06-23
(*)
|
# Python 2.6beta1 |
|
2.6ベータの声を聞いたというのに、2.5の翻訳終わらんぞ。
|
|
posted at 23:43:12
#
|
|
| |
| 2008-05-13
(*)
|
# PyPI |
|
登録してみたが、
- 確認メールに書かれた URL でアクセスすると、email を取り除いちゃ駄目だよ、と文句を言われる。
- そこを(email=hogehoge というパラメータを追加して)突破して登録完了し、Web からログインできても、ログアウトするときにまたパスワードを聞かれる上にそれが決して成功しない。
という状況になってしまった。
他の人は支障無く使えているものなのだろうか。
|
|
posted at 23:36:48
#
|
|