2012年1月9日

matplotlib で日本語を表示する設定

Python のグラフライブラリmatplotlib はデフォルトだと日本語フォントではないため、日本語が正常に表示されません。
設定は簡単です。

まず現在読み込んでいる設定ファイルの位置を確認します。

import matplotlib
matplotlib.matplotlib_fname()
設定ファイルのパスが表示されます。この設定ファイルを「~/.matplotlib」以下にコピーします。
cp /path/to/matplotlib/mpl-data/matplotlibrc ~/.matplotlib
中に以下のような行を追加します。この例ではフォントは Osaka にしていますが、「~/.matplotlib/fontList.cache」というファイルの中に利用できるフォント名が書き出されているので、好きなフォントを設定してください。
font.serif : Osaka
font.sans-serif : Osaka
ipython などで動作確認を取ってみます。
ipython --pylab
x=arange(0.0, 2.0, 0.01)
y=sin(2*pi*x)
plot(x,y,"-")
title(u"日本語タイトルです")
xlabel(u'X軸のラベル')
ylabel(u'Y軸のラベル')
以上

2012年1月3日

hunchentoot 1.2.2、clsql、cl-markup で簡易サンプルを作成してみた

hunchentoot は 1.2 で API が結構変更になっているのだけど、ネット上にあるサンプルは古い物が多いので、1.2.2で簡易なサンプルを作成してみた。
https://bitbucket.org/sakito/hunchentoot-sample/src

View は cl-markup
ORM は clsql で MySQL を利用している。
clsql は環境によってはうまく日本語がはいらないかもしれない。
値を入力して、確認、DBへ挿入、ログの出力までとりあえずしている。
テストを書いてないのとテスト不足なので品質がいまいちなのだけど、公開しておく。CCLでしか動作確認してないけど、それほどコードないし、他でも動作すると思う。

使い方を簡単に。

hg clone https://bitbucket.org/sakito/hunchentoot-sample
cd hunchentoot-sample/simple
ccl
;; ロード
(ql:quickload :hunchentoot-sample)
;; 起動
(hunchentoot-sample::start)
これで http://localhost:4242/my/ にアクセスすると動作する。
終了するには以下で。
;; 終了
(hunchentoot-sample::stop)
環境によっては上手くコマンドうてないかもしれないけど、その場合は強制終了してください。

これだけだとおもしろくないのでソースもはっておきます。

2011年12月25日

IPython 0.12 でグラフとか

とりあえずいろいろ入れておく。

# test 関係
pip install nose
pip install pexpect

# numpy のインストール
pip install numpy

# scipy のインストール
# scipy をインストールするには Fortran コンパイラが必要なので gfortran をインストール
# http://gcc.gnu.org/wiki/GFortranBinaries#MacOS
curl -O http://quatramaran.ens.fr/~coudert/gfortran/gfortran-4.6.2-x86_64-Lion.dmg
# dmg 内の pkg で 普通にインストールます

pip install scipy

# matplotlib のインストール
# http://www.activestate.com/activetcl/downloads 入れておく

sudo port install antigraingeometry

sudo port install libpng

pip install pytz
# http://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-1.1.0/
# から tar.gz 取得
tar xvfz matplotlib-1.1.0.tar.gz
cd matplotlib-1.1.0
# 環境によっては export CC=gcc しないとコンパイルできないかも
python setup.py build
easy_install -UZ .

# Sympy のインストール
pip install sympy

とりあえずいろいろはいるので起動する。

ipython --pylab
plot([1,2,3])

2011年12月24日

clsql で MySQL 接続簡易サンプル

マニュアルはhttp://clsql.b9.com/manual/にある。結構丁寧に書いてある。

(eval-when (:compile-toplevel :load-toplevel :execute)
  (require :clsql))

;; DB に接続
(clsql:connect '("localhost" "cclsample" "root" "")
                   :database-type :mysql)

;; field-names を nil にすると column は返ってこないようにする
(clsql:query "select * from sample" :field-names nil)

;; insert 文発行
(clsql:execute-command "insert into course value('1','sample')")

;; clsql:do-query ループ
(clsql:do-query ((no name)
  "select no,name from sample")
  (format t "~a,~a~%" no name))

;; 接続を切る
(clsql:disconnect)

環境によって文字化けするかも。

2011年12月22日

Clozure CL が App Store に公開された

Clozure CL が App Store に公開された。

Clozure CL 1.7(無料)App
カテゴリ: 開発ツール
販売元: Clozure Associates - Clozure Associates, LLC(サイズ: 28.3 MB)
全てのバージョンの評価: (1件の評価)

これでアプリケーションの管理とか、バージョンアップとかが簡単になるし、Mac で Common Lisp するならやはり ccl が一番早道な気がしている。

2011年12月20日

IPython 0.12 が正式リリースされた

IPython 0.12 が正式リリースされた。
IPython: Productive Interactive Computing — IPython
とりあえず notebook を動作させてみた。

pip install ipython
pip install tornado
sudo port install zmq
pip install pyzmq
# 速度を求める場合は pyzmq-ctypes
# pip install ctypes
# pip install pyzmq-ctypes
# 起動
ipython
> from IPython.external import mathjax; mathjax.install_mathjax()
> exit
# notebook 起動
ipython notebook

デフォルトのプラウザで起動する。ブラウザベースの環境としてはかなり強力。
用途は色々あるけど、まずは画像とかも出るので、ターミナルで画像が表示できないとかの環境なら、利用すると良いんぢゃないかな。

2011年12月4日

ccl(Clozure Common Lisp) での補完

cclは標準状態では補完は動作しません。補完するのは Lineditrlwrap を利用します。
Linedit の ccl 対応は比較的最近なのでまだ設定してないので、rlwrap の方で書いておきます。

sudo port install rlwrap
alias ccl='rlwrap -pgreen -r -m --history-filename=${HOME}/.ccl/ccl_history --histsize=1000000 -c -b "(){}[],^%$#@\"\";''|\\" -f ${HOME}/.ccl/ccl_completions ccl64 -K utf-8'

あとは ccl-init.lisp にhttps://gist.github.com/1140214 の設定を追加しておくと補完が楽になります。

設定を完了して ccl コマンドで起動すると補完が効きます。履歴の補完場所とかは自分の好みで変更してください。
注意点として slime の repl に rlwrap を有効にした物を設定してしまうと変になると思います。