Monthly Archives: 5月 2014

[メモ] MacのパッケージマネージャHomebrewのインストール

Pocket

Homebrewとは、Macのパッケージマネージメントツールで、UNIX系ソフトウェアのインストールを管理してくれるもの。
Rubyで作られている。

インストールは
http://brew.sh/index_ja.html
ここの手順に沿う。

インストール

githubからダウンロード、インストールする。
http://brew.sh/index_ja.htmlの下の方にあるコマンドをそのまま実行すればよい。
以下が実行例。

まずbrew doctorをせい、ということなので。

以上はうまくいった場合。
少しでも気を抜くとこんな風に怒られる。
24時間updateしてないだけで。
brewで作業するならまずbrew updateしてから、にしたほうが良さそう。

update。

PATHの変更

せっかくbrewでソフトウェアをインストールするなら、それを使ってくれるようPATHを修正する。
profileに以下の一行を加える。

試してみよう
ドット「 . 」に続けてprofileを指定すれば読み込んでくれる。
そのあとにPATHの中身を確認。

/usr/local/binが二回続けて出てくるけど、まあよしとする。

使い方

使い方は以下のとおり。
まあ、一般的ですよね。

ブロック図作成ツールblockdiag(ERROR: The _imagingft C module is not installedの倒しかた)

Pocket

ブロック図作成ツールblockdiagとは、テキストファイルから以下のような図を作成してくれるツールである。

blockdiagplanejpaa

これをFreeBSD にインストールしたので経緯を示す。
環境は10.0-RELEASE-p3、blockdiag-1.3.3である。

必要なもの

lockdiagはpkgに用意されているものの、残念ながら一発インストールというわけにはいかない。
理由は後述。
pkg以外に必要なものは以下の通り。

①ports(portsでインストールが必要なソフトウェアがある)
②日本語フォント(これはpkgでインストールしてよい)

blockdiagのインストール

一部ソフトウェアのportsからのインストールが必要だが、まずはblockdiagをpkgでインストールをしてしまったほうが楽。
依存とかあるからね。

インストールしたあとに依存を調べてみると以下の通り。

日本語フォントのインストール

お好みで。
私はVLゴシックを。

さてここからが本題である。

blockdiagの罠: 吊るしのpkgでは日本語フォントを使えない

2014/5/24現在、blockdiagをpkgでインストールした場合、日本語フォントを扱うことができない。
厳密にいえば、TrueTypeフォントを使えない。
日本語を表示させようとすると、以下のように断られてしまう。

原因は、FreeBSDにおいて言えばpy27-pillowのせい。

blockdiagが画像を生成する際にはPIL(Python Image Library)を使う。
blockdiagが依存しているpy27-pillowがそれ。
しかしデフォルト設定では、py27-pillowのTrueTypeフォント対応が無効になってるんである。

対応策: py27-pillowだけportsからインストール

ということでpy27-pillowだけportsからインストールする。
/usr/ports/graphics/py-pillowにおいてOption設定を変える。

FREETYPEのところにチェックを入れる。
/var/db/ports/graphics_py-pillow/optionsの中身がこうなってればOK.

そしたらpkgのpy27-pillowをいったんアンインストール。
依存があるから強制オプションを付ける。

そうしたらportsからpy27-pillowをインストール

 

テスト

詳しい記述方法は公式サイトを。
http://blockdiag.com/ja/index.html

テキストファイルに以下のような記述をする。
sample.txtとする。

あとはblockdiagに食わせるだけ。

エラーもなくできた。
そしてできるファイルは以下のようなもの。
blockdiagplanejp

カクカクなのがいやなら、-aをオプションに与えればよい。

アンチエイリアスがかかる。
blockdiagplanejpaa

以上。


Pythonベースのプロジェクト管理ツール、tracのインストール

Pocket

Pythonベースのプロジェクト管理ツールtracをインストールした経緯を示す。
プロジェうと管理ツールとしては、redmineもインストールしたのだが、それと比較したい。
だからひとまずインストールするだけ。
FreeBSD 10.0-RELEASEにtrac-1.0.1。

全体のながれ

  1. tracのインストール
  2. 環境作成
  3. 環境のテスト
  4. 認証用パスワードファイルの作成
  5. 起動設定
  6. 複数プロジェクト設定

インストール

tracはpkgにもあるので、特に障害もなくインストール完了。
/usr/local/lib/python2.7/site-packages/tracにドバっとファイルが作られる。

古い(といってもそこまで古くないが)ブログによると、日本語環境で使うためにいろいろと苦労が必要なようだが、現時点においてはpkg install trac一発で完了。
依存関係はこんな感じ。

データベースはご覧の通りsqliteが使われる。もちろんMySQLなど他のソフトウェアも使える。
webサーバも不要。こちらもapacheなど他のソフトウェアを使える。

設定

大したことはない。
まず環境を作る。
ディレクトリを決めておいて、そこでtracコマンドを実行し、初期化する。
例えば/usr/local/wwwの下に、tracというディレクトリを作る。
そこでtrac initenvと叩く。
注意点は、ディレクトリの文字コード。ASCIIじゃないとダメ。
また、作成したあとには、ユーザ、グループ権限を変えること。
www:wwwで動かすならそのようにchownしておく。

以下は実行例。
データベースにsqliteを使うならリターンキーを連打するだけでよい。
(プロジェクト名はMy Projectになるけど。)

詳細な設定はtrac.iniでできるよ、とメッセージがあるが、そんなのは後回しにして、まずは起動確認。

試運転

初期設定完了時のメッセージにある通り、tracdとしてwebサーバを起動することができる。
–portにポート番号、それにディレクトリを引数に与える。

この状態で、ブラウザから接続して、以下のような表示があれば成功。
さっき作ったMy Projectが見えていますね。
tractestboot01
ただ、この状態では何もできない。
tractestboot02
メニューのログインをクリックしても、ページがない旨のエラーが表示されるはず。
まずは認証の準備をする必要がある。
ターミナルに戻ってCtrl+Cで抜けよう。

認証用のパスワードファイル作成

認証の準備すなわちパスワードファイルの作成である。
パスワードファイルだから、平文で書かれていてはまずい。
ではどうやって作るか。
apacheをインストールしていれば、htpasswdを使う。
apacheがなければ。
インストールドキュメントに書いてあるスクリプトを使う。
http://emelfm2.net/wiki/TracStandalone

ちょっと横道に逸れるが。
いずれにしても、このさきtracにユーザを追加する場合には、ここで作成したパスワードファイルへの登録で行う。
これを面倒と感じるかどうか。

さておき、以下を適当な名前で、たとえばtrac-digest.pyとして保存する。

使い方は以下の通りで、python trac-digest.pyに続けて、-u <ユーザネーム> -p <パスワード>とし、その出力をファイルに向ける。

つまりユーザusernameを、passwordというパスワードで作成している。

生成されたファイルの中身は以下の通り。
2カラムめはrealm。

 

本格起動

今度はtracdにオプションを特盛で与える。
–authで先ほどのパスワードファイルを与える。
その際には、プロジェクトのベースディレクトリ、パスワードファイル、realmを指定する。
ベースディレクトリとは、もし環境を作ったディレクトリが/usr/local/www/tracならtracになる。
このベースディレクトリは、のちにwebサーバを動かしたとき、http://<サーバアドレス>/<ベースディレクトリ>というように使われる。

最終的に–authは、本記事の例でいえば、–auth=trac,/tmp/digest.txt,tracとなる。

さらに、-pで待ち受けポート、–user, –groupでtracdを動かす権限を、-dでdaemoniseを指定する。
以下のようになる。

試運転の時とは違い、すぐにプロンプトが戻ってくる。
試しにsockstatを見てみると、以下の通り。

 

認証の確認

さきほどはクリックしてもページのなかった「ログイン」が、今度はIDとパスワードを訊いてくるようになっているはず。
tractestboot03
tractestboot04
これでチケットの発行ができる。

管理者権限の作成

しかしユーザusernameは一般ユーザである。
彼に管理者権限を与えるには、以下のようにtracコマンドで操作を行う。

このあと、ユーザusernameには管理者メニューが現れる。
tractestboot05

なお、管理者であれば、他ユーザの権限も操作できる。
tractestboot06
したがって、管理者権限を与えるのは最初の一人だけ、にすることもできる。

注意点としては、各ユーザの権限はさきほど作成したパスワードファイルでは管理されていない、ということ。

繰り返すが、ユーザの登録はパスワードファイルへの登録で、(少なくとも初回の)権限変更は上記コマンドで、という仕組みをどう感じるか。
まあちょっと面倒くさいかもしれませんな。

システム起動時設定(シングル環境モード)

以上でtracをとりあえず起動する設定は済んだ。
あとはシステム起動時にtracが起動するよう、/etc/rc.confに設定を加える。
/usr/local/etc/rc.d/trac内のコメントに沿ってrc.confに追加する。
以下は例。## trac

tracd_envdirとtracd_envに注意。
こういう書き方をしてtracに接続するといきなりMy Projectに移動する。
プロジェクトが一つであれば何の問題もないが、複数プロジェクトを抱えたい場合には困る。

複数プロジェクトの運営

複数プロジェクトを登録したいのであれば、必要なぶんだけディレクトリを作り、そこでtrac-admin initenvすればよい。
例えば/usr/local/www/tracsなんてディレクトリを作り、projecttemp, projectaltというディレクトリをさらに作る。
それぞれにinit-envで環境を作る。
このとき、/etc/rc.confはこのようにする。
tracd_envに/usr/local/www/tracsを指定し、tracd_envはコメントアウト。
–authで指定するベースディレクトリにアスタリスクを与えれば、パスワードファイルを複数のプロジェクトで共有できる。

こんな感じ。
tractestboot07
tractestboot08

以上

FreeBSDにredmineのインストール(取りあえず立ち上げるとこまで)

Pocket

Rubyで作られたプロジェクト管理システムRedmineを、FreeBSDにインストールした。
文字通り、インストールだけ。
というのもインストールだけで大変だから。
その経緯を示す。

前提

インストールしたのはredmine-2.5.1。
基本、公式の以下手順に沿うが、FreeBSD特有の条件で異なる手順を採ることもある。
http://www.redmine.org/projects/redmine/wiki/RedmineInstall
また、redmineはそのデータ格納にデータベースソフトウェアが必要で、sqlite3を使っている。
複数ユーザで使うならMySQLやPostgreSQLを推奨、というのが公式見解。
同様にwebサーバもapacheやnginxが推奨されているが、ここではwebrickでテストするところまで。

redmineのインストール

pkgからインストール。
pkg install redmineでよい。
apacheなどのwebサーバはなくてもよいが、なぜかgtk2も付いてくるのが謎だが、jailに入れるからもう気にしない。

/usr/local/www/redmineにインストールされる。
ユーザ/グループはwwwが使われる。

空のデータベースを作る

SQLite3を使っているなら不要

redmineでデータベースに繋ぐ設定をする

/usr/local/www/redmine/configの下に各種設定ファイルがある。
ここでデータベースの設定を行う。
database.yml.exampleをdatabase.ymlとしてコピーし、書き換える。

「production」から始まる塊を以下のように。

つまり、mysql2を使うような設定を、sqlite3に変えているわけですな。

bundler他のインストール

公式ドキュメントによればここでbundlerなどのインストールを行うが、FreeBSDでpkg/portsからインストールした場合にはスキップ可。
ご覧の通りredmineがインストールされた状態でbundlerもインストールされている。

セッションストア秘密鍵の作成

クッキーの生成に使用される秘密鍵を作る。

データベースのスキーマ(テーブル)作成

テーブル作成
環境変数を使うのでshで。

データベースにデフォルトデータを投入

作ったばかりのテーブルにデータ(default configuration data)を投入

パーミッション設定

あと少し。
redmineがファイルを置くディレクトリのパーミッションを設定する。
FreeBSDにおいてはユーザ、グループにwww:wwwを使う。

これでほぼ準備完了

試運転

webrickでredmineを起動し、動くかどうかを確かめる。

ご覧の通り、redmineをインストールしたマシンのポート3000で待ち受け。
ブラウザで繋ぐと、ターミナルには例えば以下のような反応があるはず。

あとはブラウザから操作。

最初のログイン

以下のような画面が表示されれば成功で、さっそく右上のログインをクリック

redminelogin

ID、パスワードはadmin,admin

reminefirstlogin

以下の画面に遷移

redmineafterlogin

ためしに「管理」をクリックすると、以下の画面に。

redminemanagement

以上。

PyInstallerで作ったWindowsアプリでバージョンを表示させたい(Version Resource Fileの作りかた)

Pocket

Windowsアプリケーションのバージョンは、そのプロパティから確認できる。
PyInstallerでWindowsアプリケーションを作るときにも、ぜひここに登録をしたい。

PyInstallerでは、あらかじめ用意しておいたVersion Resource Fileを読み込ませることで、バージョンなどの情報をアプリケーションに書き込むことができる。

しかし、その方法はちょっとトリッキーなので、ここにその方法を採録する。
トリッキーな内容は何かというと。
要するにVersion Resourceをスクラッチで書くのは大変なので、そのへんにあるWindowsアプリケーション(厳密には拡張子が.exeの実行ファイル)から抜き出してきてそれを使い回すというもの。
れっきとした公式手順である。
したがって全体の流れは以下のようになる。

全体の流れ

1.「既存の」WindowsアプリケーションからVersion Resourceを抜き出す。
2.抜き出したファイルを書き換え。
3.そのファイルを指定してPyInstallerを実行

Version Resourceファイルの抜き出し

PyInstallerには、pyi-grab_version.pyというスクリプトが含まれている。
PyInstallerを展開してできるutilsディレクトリの下にある。
お使いのWindows上にある実行ファイルを引数に与えてpy-grab_version.pyを実行すればよい。
結果はpy-grab_version.pyと同じディレクトリにfile_version_info.txtとして書き込まれる。

以下はWindows 7のcmd.exeを引数に与えた場合の実行例である。

以下が書き出されたfile_version_info.txt。
UTF-8なので注意。

次は本ファイルを書き換える。

ファイルの書き換え

cmd.exeのプロパティ->詳細タブと見比べながら書き換えていけばよい。
それ以外は触らないこと。
cmdexeproperty
たとえばこんな感じ。

ファイルの準備はおしまい。
あとはビルドの際にファイルを指定するだけ。

Version Resourceファイルを指定してビルド

単純に–version-file=<ファイル名>と指定するだけ。
だから実行例は省く。
pyhogeversion
無事に表示された。

補足

参考までに公式の宣言、つまりVersion Resourceは複雑すぎマジ無理、と言っている箇所を貼り付けておく。

because version resources are complex. Some elements are optional, others required. When you view the version tab of a Properties dialog, there’s no simple relationship between the data displayed and the structure of the resource. Using pyi-grab_version you can find an executable that displays the kind of information you want, copy its resource data, and modify it to suit your package.

Windowsにpyinstallerをインストール

Pocket

過日、起こしたpyinstallerのインストール方法が盛大に間違っていたので改めて示す。
(動いていたからまったく気がつかなかった・・・・)
PythonでWindowsアプリケーションを作ってみよう

pyinstallerとは、pythonプログラムをWindowsなどで動く実行ファイルに変換してくれるものだ。
自作pythonプログラムを他人にも使ってもらおうとすると、当然その人もpythonをインストールすることが前提になる。
しかしスタンドアロンの実行ファイルにできるなら、そんな面倒を解消できる。
ありがたいことでございます。

PyInstallerのインストール

公式のドキュメントに沿いつつ進める。
インストール先はWindows。

前提

Pythonはもちろんインストールしてあるとして、以下のものが必要
・PyWin32
・(場合によって)setuptools/distribute

補足

2014/5/2現在、ActivePythonのPyPMにPyInstallerはありません。

PyWin32のインストール

PyWin32はPythonからWindows APIにアクセスするためのもの。
以下から対応するバージョンをダウンロードし、インストールする。
http://sourceforge.net/projects/pywin32/files/?source=navbar
32bit WindowsにPython2.7をインストールしているなら、pywin32-218.win32-py2.7.exeをダウンロード(218はバージョンナンバなので変わる)。
py3201
py3202
pipがインストールされているなら、この時点でpip install PyInstallerでOK。

setuptools/distributeのインストール

pipがインストールされているならこのステップは不要。
また、setuptools, distributeどっちでもよい。
2014/5/2現在、setuptoolsでいいようだが、私がインストールしたのはdistribute。
https://pypi.python.org/pypi/distribute/0.7.3

ダウンロードして、伸張して、できたディレクトリでpython setup.py install。
distribute, setuptoolsの違いについては以下を。
http://stackoverflow.com/questions/6344076/differences-between-distribute-distutils-setuptools-and-distutils2

PyInstallerのインストール

以下から最新のPyInstallerをダウンロード。
https://pypi.python.org/pypi/PyInstaller/
伸張して、できたディレクトリでpython setup.py install。

コマンドプロンプトを開いてpyinstaller –versionと叩いてみる。
うまく行っているならパスも通っている。

[Python2] Hex文字列とBin文字列でコンバート

Pocket

メモでござる。

Hex文字列をBin文字列に変換したり、その逆に変換するには。

Bin->Hex

まずサンプル。

実行例。

 

説明

まずint()で数値に変換する。
その際には第二引数で基数を与える。bin文字列なら2を。hexなら16を与える。
次にその数値をhex()で16進数に変換。
そのままだと頭に0xが付いてしまうので[2:]として取り除く。
さらにzfillで桁数分0で埋める。

Hex->Bin

実行例