2009年5月アーカイブ

Emacsにclispインタプリタを設定する

clispを書き始めたので、Emacsへclispインタプリタを設定する。

この設定により、Emacs上で値を評価可能となる。

設定

~/.emacsファイルに下記を設定する。

(setq inferior-lisp-program "clisp")

この設定により下記コマンドが利用可能となる。

M-x run-lisp
clispインタプリタを呼び出す。
C-x C-e
直前のS式をclispインタプリタに送り評価する。
C-c C-e
全てのS式をclispインタプリタに送り評価する。

現状このコマンドが使えれば十分。参考にしたサイトにはGaucheの設定もあった。

参考:@ Emacs で快適に Lisp / Scheme ソースを編集する



備忘録。


Trac日本語化とSubversionのインストール、設定。


Tracの日本語化についてはインタアクト株式会社さんに感謝。


環境



  • Fedora10

  • Python2.5.1


Subversion


yumコマンドでmod_dav_svn, subversionのインストール。


yum install -y mod_dav_svn subversion


ディレクトリの作成。


mkdir /var/www/svn/
cd /var/www/svn/


svnadminコマンドでプロジェクトを作成。


svnadmin create <プロジェクトのディレクトリ名>
chown -R apache:apache <プロジェクトのディレクトリ名>


Basic認証のパスワードを設定。


mkdir /var/www/passwd/
htpasswd -cm /var/www/passwd/<パスワードファイル名> <ユーザー名1>
htpasswd -m /var/www/passwd/<パスワードファイル名> <ユーザー名2>


/etc/httpd/conf.d/subversion.confに下記を追加。


<Location /<プロジェクトのディレクトリ名>>
DAV svn
SVNPath /var/www/svn/<プロジェクトのディレクトリ名>
AuthType Basic
AuthName "subversion"
AuthUserFile /var/www/passwd/<パスワードファイル名>
Require valid-user
</Location>



これで、apacheを再起動すればOK.


Trac


yumコマンドで既存のtracをアンインストール。


# yum remove trac


Tracに必要なモジュールをインストール


wget http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py


インタアクト株式会社さんが日本語化したTracのインストール。


wget wget http://www.i-act.co.jp/project/products/downloads/Trac-0....
unzip Trac-0.11.4.ja1.zip
cd Trac-0.11.4.ja1
python ./setup.py install


tracのディレクトリを作成。


mkidr /var/www/trac


trac-adminコマンドでプロジェクトを作成。



trac-admin /var/www/trac/ initenv

Project Name [My Project]>  <プロジェクト名>
Database connection string [sqlite:db/trac.db]> <そのままEnterキー>
Repository type [svn]> <そのままEnterキー>
Path to repository [/path/to/repos]> <subversinのリポジトリを指定。例:/var/www/svn/root>
Templates directory [/usr/share/trac/templates]> <そのままEnterキー>

chown -R apache:apache /var/www/trac/CRMPy


/var/www/trac/<適宜。例:root>/conf/trac.iniを修正。

修正前:



default_charset = iso-8859-15


修正後:



default_charset = utf-8


/etc/httpd/conf.d/trac.confを修正。

修正前:



<LocationMatch /cgi-bin/trac\.f?cgi>
#SetEnv TRAC_ENV /srv/trac
</Lo</ppp>
cationMatch>
<IfModule mod_python.c>
<Location /cgi-bin/trac.cgi>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
#PythonOption TracEnv /srv/trac
</Location>
</IfModule>


修正後:



#<LocationMatch /cgi-bin/trac\.f?cgi>
#SetEnv TRAC_ENV /srv/trac
#</LocationMatch>
#<IfModule mod_python.c>
#<Location /cgi-bin/trac.cgi>
# SetHandler mod_python
# PythonHandler trac.web.modpython_frontend
# #PythonOption TracEnv /srv/trac
#</Location>
#</IfModule>


追加


<virtualhost *>
DocumentRoot /var/www/trac/<プロジェクト名>

<location /<プロジェクト名>>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /var/www/trac/<プロジェクト名>
PythonOption TracUriRoot /<プロジェクト名>
</location>
<location /<プロジェクト名>/login>
AuthType Basic
AuthName "trac"
AuthUserFile /var/www/passwd/<パスワードファイル名>
</location>
</virtualhost>


これでapacheを再起動。


参考




余談


今回SubversionとTracを導入した理由は、



  • 複数人で開発するため、バージョン管理は必須。

  • ロードマップとチケットを欲したため。&ファイルの修正履歴を綺麗なdiffで観れるから。


です。



そりゃ必要だわ。




最近私が作ったPythonプログラムをフローズンバイナリにするツールをまとめてく。



py2exe


Windows向けの.exeファイルを作成する。


Macでの実行は想定されておらず、Windowsでのみ動作する。



  • Latest:0.6.9。

  • Python2.6,2.7対応(2.7ってあったけ...py2exeの公式にはある...?)。3.0非対応(?)。

  • Tkinterを利用したモジュールを一つのexeにするとエラーで落ちる...要注意(オプション名はbundle_files)。


参考


cx_Freeze



  • py2exe同様、Windows向けの.exeファイルを作成する。

  • Latest:4.0.1。

  • Python2.6対応。3.0非対応(?)。

  • Fedora9向けRPMあり。ソースコード配布ありなので、Mac(Unix)でも容易に使えそう。


参考


PyInstaller



  • .exeファイルを作成する。

  • Latest:1.3

  • Python1.5~2.4対応。2.5,2.6,3.0は非対応。


参考


1.4からはPython2.6に対応するようで、パッチは用意済みだそう。




最近Tkinter使ってます。id:rokujyouhitomaです。



簡単なGUIを作るのに適してるTkinterですが、弱点が。なんと...表部品(テーブル部品)がない!!



まさか表部品の実装をしなければいけないのだろうか...。



調べて分かったのですが...正確に言うと、TkinterにないのではなくTkにないです。


でさらに調べたところ、sourcefoge.netに公開されてました^^


環境


Mac OS 10.5


インストール


インストールはmake, make installとmacportsがある。


./configure, make, make install

sourcefoge.netに公開されているので早速入れる。



$ curl -O http://nchc.dl.sourceforge.net/sourceforge/tktable/Tktable2.10.tar.gz
$ tar zxvf Tktable2.10.tar.gz

$ cd Tktable2.10

$ ./configure
$ make
# make install

完了!


macports


$ sudo port install tktable

入ったか確認。


直接tclコマンドを叩く。



$ tclsh
$ package require Tktable

正しければ、



$ 2.9

と表示される。


正しくなければ、



$ can't find package Tktable

と表示される。


補足:終了はexit


Pythonで利用する。


解凍したTktable2.10.tar.gzの中にPython用のモジュールが入ってます。


デモは、


demos/tktable.py


f:id:rokujyouhitoma:20090515175613p:image


ライブラリは、


library/tktable.py


試しに実行。


import tktable
table = tktable.Table(rows=5, cols = 5)
table.pack()

実行結果

こんな感じで表になります。


f:id:rokujyouhitoma:20090515180241p:image


入力もできちゃったり。


f:id:rokujyouhitoma:20090515180422p:image



これで、開発が進む。実装するのは楽しそうだけどしんどいもんね...


参考


公式


その他



最近業務でTkinter使ってるのでメモ書きと陥ったところ。


そもそもTkinterって何よ?


TkinterはPythonの標準モジュールで、Tk/Tclをラップしてるモジュール。


TkはGUIツールキット(Tool Kit)の一種でSun Microsystemsが開発していたライブラリ。


環境



  • Mac OS 10.5

  • Python2.6.2


wmに引っかかった...


自身の知識不足でひっかかった所は、ウィンドウのアイコンに.icoを設定しようと考えていた。


調べたところwm_iconbitmapというメソッドを発見。このメソッドに.icoへのファイルパスを設定。


実行したところ...



return self.tk.call('wm', 'iconbitmap', self._w, bitmap)
_tkinter.TclError: bitmap "star.ico" not defined


エラーがでる。


調べた結果...



> I know that in a normal windows python Tkinter app you would use:


>


> root.wm_iconbitmap("/Icons for App/Windows.ico")


>


> to make an icon in the title bar. However, when you do that in mac OSX you


> can't see it. I am not sure if it is because the x - and+ are on the left


> side, or because it just doesn't support MacOSX. Looking at other programs


> none of them have it either. I am just wondering is it possible to put an


> icon in the top title bar.


>


... [show rest of quote]


No, OS X doesn't support this, as far as I know.



あちゃー。Macはサポート外ですが...残念。


という事で、下記に修正し完了。



import sys

if sys.platform == "win32":
root.wm_iconbitmap("star.ico")


細かな所だけど、Macでも設定したいな...


参考


トップレベルのウィンドウの制御 トップレベルのウィンドウ


Re: Icon on title bar in macOSX


M-%
検索。
C-x 0
現在の画面以外を閉じる。
C-v
一画面進む。
M-v
一画面戻る。
C-a
行頭
C-e
行末
M-a
文頭
M-e
文末

MはMacの場合、ESCキーみたい。

参考:Emacs クイックリファレンス

Emacsいいね♪

何がいいって、一つのエディタ内で複数のファイルを編集出来るし、シェルも実行できる。ただ、シェルとか必要ないときにはEclipseの方が有用だな〜。

今は、sshとかで入った後にファイル操作する必要があるからEmacs。

Ctrl-s
検索。
Ctrl-r
検索(逆方向)。
Ctrl-x 3
横分割windowを開く。
Ctrl-x o
複数のwindow間を行き来する。
やべー。Emacs便利になってきた。慣れって怖い。

Ctrl-x Ctrl-2
別のwindowを開く。
Ctrl-x Ctrl-f
ファイルを開く。
M-x shell
シェルモード。
java-jaで

第二回チキチキ 日本ペアプログラミングの会java-ja支部会(仮)

を行うそうな。


多分試しにペアプロやるんだろうけど、Java以外でもいいのかな...?

と素朴な疑問。


よしいこう。


参考:
第二回チキチキ 日本ペアプログラミングの会java-ja支部会(仮)



一覧


一覧化するとこんな感じ。



  • Basic

  • Java

  • XML

  • SQL

  • Visual Basic

  • CSS

  • HTML/XHTML

  • PHP

  • JavaScript

  • JScript

  • DOS バッチ

  • Python

  • Perl

  • CommonLisp(CLisp)

  • C

  • Pascal

  • Scheme(Gauche)

  • Ruby

  • Oz

  • Objective-C

  • EmacsLisp

  • なでしこ

  • シェルスクリプト

  • Action Script



中学生



  • HTML


授業で触った。


高校生



  • Basic


数学Aだか1だかの教科書に載ってたのを試しに触った。


社会人1年生


社内研修でJavaを習得、自社のウェブサイトを作成した。初々しい社会人1年目。



  • Java


Servlet/JSP。Apache,Tomcat,Eclipseに初めて触れたのもこの時。寝る間も惜しんで本読んだ。懐かしい。



  • XML


他言語に付随して習得。



  • SQL


MySQL, PostgreSQL, Accsessの為に。



  • Visual Basic


管理システムやらエクセルでちょっぴり。



  • CSS

  • HTML/XHTML


社内ウェブサイトのため。電車の中でタグ一覧を暗記してた。



  • PHP


独学でちょっぴり触った。


社会人2年生


PHPのパッッケージ開発を行った後、JavaScriptのプロジェクトに参加した年。尊敬出来る大先輩と出会ったのはこの年。



  • PHP


業務で初めて使用。1年目のJavaの概念が役立つ。



  • JavaScript

  • JScript


怪しい巨大プロジェクトに参加。業務でばりばり使用。リファレンスを必死に読んだ。楽しかった。



  • DOS バッチ


JScriptの起動用に。



  • Python


業務の合間を縫ってこっそり触ってた。閉じられた(ネットという意味で)プロジェクトだったので、バッテリ付属言語と言われるPythonには感謝。本格的に触ったのはもっと後。



  • Perl


業務の合間に遊びで触った程度。



  • CommonLisp(CLisp)


職場の大先輩から薦められて。ちょびっと触った。挫折した。



  • C


C言語を全く触ってないのは問題だから、概念を押さえるためにもCの入門書を読んだ。実戦では使えない技能レベル。


社会人3年生


昨年に引き続き、JavaScriptのプロジェクトに参加~離脱。その後はPythonのちょこっとした案件、PHPのサイト構築、Javaをちょびっと触ったり。



  • Pascal


どんな言語なのか興味あって、MITの書籍(むろん和訳版)を一冊読んだ。



  • Scheme(Gauche)


LispのリベンジとしてSchemeを。またまた挫折。処理系はGauche



  • Ruby


Jrubyをちょっぴり触る。



  • Oz


遅延評価とか学んだのがこの言語。マイナー言語なので情報が少ない。今度さらいなおす。大きな課題。



  • Objective-C


Hello World!表示させて終了。



  • EmacsLisp


Emacsのキーバインド調整のため。



  • なでしこ


以前の職場の社長やエンジニアが実戦で使ってたから、興味を持って。


社会人4年生


今年。Pythonが中心、PHPはまま。Javaのスキルアップと過去にちょっぴり触った言語を底上げしたい。



  • シェルスクリプト


美人画像の為に。



  • Action Script


ちょびっと触ってるところでございます。



総評。


LL言語に偏食だな。強化すべきはC系、アセンブラ、Java、関数型言語系。


貪欲に楽しむぞ^^



参考




使ってるMacBookProには標準でPython2.5.1が載ってる。


この2.5系と共存する形で2.6系,3000系を入れたかったので方法を模索。


MacPortsで入れるのが良いみたい。


環境



  • Mac OS 10.5

  • MacPortsがインストールされている事。


Python2.6のインストール


下記を実行。



$ sudo port install python26


このインストールが完了しても標準の2.5.1が起動する(リンクの関係かな?)ので、


複数のPythonを切り替えることができるpython_selectをインストールする。


python_selectのインストール



$ sudo port install python_select


python_selectを使う。


実際にpython_selectを使う。


まずは、切り替える事ができるPythonを確認。



$ python_select -l
Available versions:
current none python25 python25-apple python26


次に切り替えたいバージョンを選択。



$ sudo python_select python26


オプションとか。


$ python_select
usage: python_select [-n] [-d] [-r] [-h] [-v] version

-n Show commands to do selection but do not execute them.
-d Show debug messages during execution
-h Display this help info.
-r Skip test for necessary rights.
-v Display version of python_select.
-l List available options for version.
-s Show the currently selected versio



これでMacで複数のPythonを使いやすくなった♪




参考




追記


windowsの切り替え方法があったら教えて下さい>_<




Pythonで描画できないかなぁと考えたところ、「そういえばturtleってライブラリがあったな」という訳で使ってみる。


turtleモジュール


Python2.5から標準ライブラリに入って、Tkinterを利用しているグラフィカルライブラリ。


詳細は、PYJUGの日本語ライブラリリファレンスを参照のこと。20.4 turtle -- Tkのためのタートルグラフィックス


注意が必要なのは、Python2.5系とPython2.6系、3.0系に含まれるモジュールが結構異なる事。


環境



  • Python2.6.2

  • Mac OS 10.5


使ってみた。


円を書く。


import turtle

if __name__ == '__main__':
t = turtle.Turtle()
t.circle(50, 180)
t.circle(-50, 180)
t.circle(-100)
turtle.exitonclick()


実行結果


D


模様を書いてみる(追)


import turtle

def main(count, xy):
t= turtle.Turtle()
for x in range(5):
wave_down(t, count, xy)
t.forward(xy[0] + xy[1])
wave_up(t, count, xy)
t.forward(xy[0] + xy[1])
turtle.exitonclick()

def wave_down(obj, count, xy):
for x in range(count):
obj.forward(xy[0])
obj.right(90)
obj.forward(xy[1])
obj.right(90)
obj.forward(xy[0])
obj.left(90)
obj.forward(xy[1])
obj.left(90)

def wave_up(obj, count, xy):
for x in range(count):
obj.forward(xy[0])
obj.left(90)
obj.forward(xy[1])
obj.left(90)
obj.forward(xy[0])
obj.right(90)
obj.forward(xy[1])
obj.right(90)

if __name__ == '__main__':
main(10, [20,5])


実行結果

f:id:rokujyouhitoma:20090506220350p:image



参考




結構面白いことできそうだから、続けて触ってみる。




ブラウザキャプチャを取る必要が生じたので、探してたら「webkit2png」なるPythonスクリプトがいいみたい。


環境



  • Mac OS 10.5

  • Safari3.2.1

  • Python2.5.1


ダウンロード


githubで公開されてるので、そこからダウンロード。


github-paulhammond / webkit2png


ファイル名が「webkit2png」がPythonの実行ファイル。



実際に使ってみる。


実行は下記の通り。



$ python webkit2png <対象のURL>


ターミナルからの実行例。



$ python webkit2png http://iphonelove.jp


オプション


webkit2pngのオプションは結構ある。縦横幅の指定や出力ファイル名の指定。


詳細は、helpコマンドでみる。



$ python webkit2png --help

Usage: webkit2png [options] http://example.net/ ...]

examples:
webkit2png http://google.com/ # screengrab google
webkit2png -W 1000 -H 1000 http://google.com/ # bigger screengrab of google
webkit2png -T http://google.com/ # just the thumbnail screengrab
webkit2png -TF http://google.com/ # just thumbnail and fullsize grab
webkit2png -o foo http://google.com/ # save images as "foo-thumb.png" etc
webkit2png - # screengrab urls from stdin
webkit2png -h | less # full documentation

Options:
--version show program's version number and exit
-h, --help show this help message and exit
-W WIDTH, --width=WIDTH
initial (and minimum) width of browser (default: 800)
-H HEIGHT, --height=HEIGHT
initial (and minimum) height of browser (default: 600)
--clipwidth=WIDTH width of clipped thumbnail (default: 200)
--clipheight=HEIGHT height of clipped thumbnail (default: 150)
-s SCALE, --scale=SCALE
scale factor for thumbnails (default: 0.25)
-m, --md5 use md5 hash for filename (like del.icio.us)
-o NAME, --filename=NAME
save images as NAME-full.png,NAME-thumb.png etc
-F, --fullsize only create fullsize screenshot
-T, --thumb only create thumbnail sreenshot
-C, --clipped only create clipped thumbnail screenshot
-d, --datestamp include date in filename
-D DIR, --dir=DIR directory to place images into
--delay=DELAY delay between page load finishing and screenshot
--noimages don't load images


配布・開発


github-paulhammond / webkit2png


参考


讃容日記-webkit2png


webkit2png :コマンドラインでウェブの画面をキャプチャ



追記


Pythonなので、一通りソースコードに目を通す。




PythonでFlashを動的生成できないかな...?


って調べてたところMingを見つけた。pythonバインディングもある。やったね♪



あやうくAdobeでFlashの仕様を調べて作成することまで考えちゃった...


環境



  • Fedora10

  • Python2.5.2



$ wget http://jaist.dl.sourceforge.net/sourceforge/ming/ming-0.4.2.tar.gz
$ tar xvf ming-0.4.2.tar.gz

$ cd ming-0.4.2
$ ./configure --prefix=/usr/local/ming\
--enable-python\
--disable-perl\
--disable-php\
--disable-tcl
$ make
# make install



pythonバインディングをインストール



$ cd py_ext
# python setup.py build
# python setup.py install



早速実行


早速実行したのだけど...



>>> import ming
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.5/site-packages/ming.py", line 2, in <module>
import mingc
File "/usr/lib/python2.5/site-packages/mingc.py", line 7, in <module>
import _mingc
ImportError: libming.so.1: cannot open shared object file: No such file or directory


エラーが出た>_<


libming.soが読めないらしい...google先生に聴いたところ、下記対応でOKとのこと。



cp -a /usr/local/lib/libming.* /usr/lib/


ubuntu


rpmでの配布はないみたいだけど、ubuntuではapt-getでインストール可能らしい。



# apt-get install python-ming



参考


Ming公式サイト:http://www.libming.org/


あわせて読みたい

  • あわせて読みたいブログパーツ

Lingr java-ja

ウェブページ

Powered by Movable Type 4.1