mysql-pythonを使うときに気をつけること
MySQLを自分でコンパイルをしている場合などに、mysql-pythonを利用しようとすると、以下のような Tracebackがでることがあります。
$ python
>>> import MySQLdb
Traceback (most recent call last):
File "", line 1, in
File "/usr/lib/python2.5/site-packages/MySQL_python-1.2.3c1-py2.5-linux-i686.egg/MySQLdb/__init__.py", line 19, in
import _mysql
ImportError: libmysqlclient_r.so.15: cannot open shared object file: No such file or directory
上記のようなTracebackがでている場合は、 mysqlのライブラリが読み込めない状態になっています。
Fedora10 であれば、通常は yum から mysql-libs をインストールすれば解決します。
しかし、 Tritonnパッチが当たっているのコンパイル済み tar ball 等を利用している場合は、自分でパスを指定してあげる必要があります。
共有ライブラリを追加する手順として、
- 共有ライブラリのパスを指定したファイルを作成する
- 共有ライブラリがキャッシュされているファイルを更新する
- 反映されたか確認する
となります。
実際に、 /opt/mysqlにインストールされているTritonn-MySQLのライブラリを追加するには、
1-2. パスを追記する
2. ldconfigコマンドを利用し、キャッシュへ反映させます。
3. ldconfig -p で確認する。
- libmysqlclient_r.so.15, libmysqlclient.so.15 が追加されていれば成功です。
反映の手順 (mysql-tritonn.confへは、パスが設定済みとします)
# cat /etc/ld.so.conf.d/mysql-tritonn.conf /opt/mysql/lib # ldconfig # ldconfig -p | grep mysql libmysqlclient_r.so.15 (libc6) => /opt/mysql/lib/libmysqlclient_r.so.15 libmysqlclient.so.15 (libc6) => /opt/mysql/lib/libmysqlclient.so.15
動作確認をする
$ python
>>> import MySQLdb
Tracebackが出力されなければ、設定は成功です。
現在のポスト数 59 / 100
Fedora 10以降で、起動メッセージを表示させるようにする
起動時に詳細な起動メッセージが、デフォルトでは表示されなくなってます。
表示させるには grub.conf の起動オプションを変更する必要があります。
起動オプションから、 rhgb quiet を削除すると起動メッセージが表示されるようになります。
http://www.redhat.com/archives/rhl-list/2004-May/msg07775.html
現在のポスト数 58 / 100
Fedora11 へ Systemtap 1.0 をインストールする
先日、Systemtap 1.0 *1 が公開されたので、Fedora11 へインストールしてみます。
yum install systemtap kernel-devel
yum --enablerepo=fedora-debuginfo --enablerepo=updates-debuginfo install kernel-debuginfo
ここで、再起動させます。
とりあえず、 Hello, World を
hello.stp というファイルを以下のように作成します。
probe begin { print ("hello, world\n") exit () }
stap コマンドで実行させます。
# stap hello.stp
hello, world
現在のポスト数 57 / 100
はじめてのTornado
レスポンスの遅い応答を返すデバック用サーバがほしかったので、
Tornadoで作ってみました。
Tornado は、 URLパターン中に正規表現を入れると、リクエストハンドラーへリクエスト引数として渡すことができます。
class himote_check_handler(tornado.web.RequestHandler): # ([0-9]+)にマッチする箇所が、 uidとして渡される def get(self, uid): response_json = "{'mote_event_avg': %2.11f, 'user_id': %s}" # response delay uid_val = int(uid) if uid_val > 6000: os.system('sleep %d' % (uid_val / 1000)) # response json format self.write(response_json % (10.0/3.0, uid)) application = tornado.web.Application([ (r"/", MainHandler), # uidを引数で渡す (r"/atnd/uid/([0-9]+)", himote_check_handler), ])
全体のサンプル
import os import tornado.httpserver import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world") class himote_check_handler(tornado.web.RequestHandler): def get(self, uid): response_json = "{'mote_event_avg': %2.11f, 'user_id': %s}" # response delay uid_val = int(uid) if uid_val > 6000: os.system('sleep %d' % (uid_val / 1000)) # response json format self.write(response_json % (10.0/3.0, uid)) application = tornado.web.Application([ (r"/", MainHandler), (r"/atnd/uid/([0-9]+)", himote_check_handler), ]) def main(): http_server = tornado.httpserver.HTTPServer(application) http_server.listen(8888) tornado.ioloop.IOLoop.instance().start() if __name__ == "__main__": main()
和訳のおかげで簡単にできました。
http://tornado.shibu.jp/index.html
現在のポスト数 56 / 100
Snow Leopard で virtualenv が動かない
Snow Leopard がそのままでは動きません。 (version 1.3.3)
すでに、Google Group上で議論されているようで、パッチがでています。
trunk にも反映されているようです。
パッチを当てたら、動作しました。
パッチを当てるか、trunk使いましょう。
trunk (bitbucket.org -- version 1.3.4dev)
http://bitbucket.org/ianb/virtualenv/
パッチ
http://groups.google.com/group/python-virtualenv/attach/ebeece6a42e1a10b/virtualenv.patch?part=2
現在のポスト数 54 / 100
ls ~ を晒すのが流行っているらしいので
01:53:37@~$ ls ~ Desktop Dropbox Movies Public works Documents Library Music Sites ユーザ登録 Downloads Mailbox Pictures local
面白みも無いですね。
基本、worksにいれます。
参考: http://d.hatena.ne.jp/Yoshiori/20090826/1251283425
現在のポスト数 53 / 100