2012年11月29日木曜日

[other]phantomjs インストール

インストール
  • PhantomJS 入れる
    1. sudo yum install gcc gcc-c++ make git openssl-devel freetype-devel fontconfig-devel
    2. git clone git://github.com/ariya/phantomjs.git
    3. cd phantomjs
    4. git checkout 1.7
    5. ./build.sh –jobs 1
      build.sh たたくと次のエラーになった
      gstreamer-app-0.10 not found
      make[1]: *** [WebCore/Makefile.WebKit] Error 2
      make[1]: Leaving directory `/home/dev/work/tmp/phantomjs-rpms/BUILD/phantomjs-1.5.0/src/qt/src/3rdparty/webkit/Source
      yum -y install gstreamer* で gstreamer のパッケージ全部つっこんどくhttp://tmcosmos.org/linux/centos/co5.html
      もう一度 build.sh たたく
      ビルドが成功した
    6. /path/to/phantomjs/bin/phantomjs が本体なのでこれを PATH の通ったところにおいとく
    7. sudo mv phantomjs/ /usr/local/src/
    8. ln -s /usr/local/src/phantomjs/bin/phantomjs /usr/local/bin/phantomjs
    ※ sudo yum groupinstall ‘Development tools’ ‘Additional Development’ あれやこれやとこれもたたきました
  • 参考URL
文字化け問題
CentOS6.2 の環境で文字化けエラー

[linux]munin のインストールと設定

概要
munin は、munin と munin-node にわかれる。munin は munin-node を束ねるサーバで、ノードと通信しノードの情報をグラフ化しWEBページとしてそれを参照できるようにする。 muni-node はターゲットサーバのリソースを監視する。
munin-master インストール
基本的にパッケージインストールでOK
[root@dlp ~]# wget http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL-6
[root@dlp ~]# rpm --import RPM-GPG-KEY-EPEL-6
[root@dlp ~]# rm -f RPM-GPG-KEY-EPEL-6
[root@dlp ~]# vi /etc/yum.repos.d/epel.repo

# 以下の内容で新規作成
[epel]
name=EPEL RPM Repository for Red Hat Enterprise Linux
baseurl=http://ftp.riken.jp/Linux/fedora/epel/6/$basearch/
gpgcheck=1
enabled=0

# 上記リポジトリを使用してインストールする場合は、以下のようにコマンド入力
[root@dlp ~]# yum --enablerepo=epel install [パッケージ名]
ただ、EPEL リポジトリからパッケージをインストールする場合、CentOS のバージョンに注意する。下記の参考URLにあるような RPM-GPG-KEY-EPEL-5 は RPM-GPG-KEY-EPEL-6 と読み替えるといい。
[root@master ~]# yum --enablerepo=epel -y install munin munin-node   # EPELからインストール
[root@master ~]# vi /etc/munin/munin.conf

# 60行目:ホスト名に変更
[master.server.world]
  address 127.0.0.1
  use_node_name yes

[root@master ~]# vi /etc/munin/munin-node.conf

# 29行目:自ホスト名に変更
host_name master.server.world

[root@master ~]# rm /var/www/html/munin/.htaccess
[root@master ~]# vi /etc/httpd/conf.d/munin.conf

<Directory /var/www/html/munin/>
  Order Deny,Allow
  Deny from all
  Allow from 127.0.0.1 10.0.0.0/24
</Directory>

[root@master ~]# /etc/rc.d/init.d/httpd restart
Stopping httpd:[ OK ]
Starting httpd:[ OK ]

[root@master ~]# /etc/rc.d/init.d/munin-node start
Starting Munin Node:[ OK ]

[root@master ~]# chkconfig munin-node on
これで munin-master サーバと同じ munin-node のリソース情報は吸い上げられるようになった
munin-node インストール
munin-master とほぼ同じ。パッケージからいれる。
[root@dlp ~]# wget http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL-6
[root@dlp ~]# rpm --import RPM-GPG-KEY-EPEL-6
[root@dlp ~]# rm -f RPM-GPG-KEY-EPEL-6
[root@dlp ~]# vi /etc/yum.repos.d/epel.repo

# 以下の内容で新規作成
[epel]
name=EPEL RPM Repository for Red Hat Enterprise Linux
baseurl=http://ftp.riken.jp/Linux/fedora/epel/6/$basearch/
gpgcheck=1
enabled=0

[root@master ~]# yum --enablerepo=epel -y install munin-node   # EPELからインストール
[root@master ~]# vi /etc/munin/munin-node.conf

allow ^XXX\.XXX\.XXX\.XXX$(サーバのIP)
を
allow ^127\.0\.0\.1$
の下辺りに追記しておきます。

[root@master ~]# /etc/rc.d/init.d/munin-node start

Starting Munin Node:[ OK ]

[root@master ~]# chkconfig munin-node on
ここで 自分のWAN側IPアドレスはわかる http://www.cman.jp/network/support/go_access.cgi
munin-master サーバ側で次になればOK:
# telnet [ノードのIPアドレス] 4949

Connected to 略
Escape character is '^]'.
# munin node at backup
munin-master サーバの /etc/munin/munin.conf で上記のノードを追記 :
[GroupName;XXX.XXX.XXX]
address XXX.XXX.XXX
use_node_name yes
[] の中を適当にしてると動かなかくて、FQDN にしろって記述があったので IPアドレスにしたら動いた GroupName は 2.0.6 では上記の通りでちゃんと設定できた
CGI設定
munin の CGI は munin-cgi-graph と munin-cgi-html があるみたいで、 グラフの画像生成とHTMLそれぞれを動的に生成するかどうか設定できる。
以下はグラフ。グラフは詳細な時間を見ようとすると CGI の設定が必須みたい。cron だとグラフをクリックして遷移した先のHTMLで画像がリンク切れになってる。
あと、EPEL リポジトリからパッケージインストールするとなのかは不明だが、munin-cgi-graph と munin-cgi-html がどこにもなかった…。 なのでパッケージはインストールされているがソースをビルドした。
[root@master ~]# yum --enablerepo=epel -y install \
                   rrdtool perl-rrdtool perl-Module-Buildrrdtool\
                   perl-Module-Build \
                   perl-Time-HiRes \
                   perl-Digest-MD5 \
                   perl-HTML-Template \
                   perl-File-Copy-Recursive \
                   fcgi fcgi-devel perl-FCGI perl-CGI \
                   perl-IO-Socket-INET6 \
                   perl-Net-SNMP \
                   perl-Log-Log4perl \
                   perl-Net-Server

wget http://sourceforge.net/projects/munin/files/stable/2.0.6/munin-2.0.6.tar.gz
tar xfz munin-2.0.6.tar.gz
cd munin-2.0.6
vi Makefile
CONFIG = dists/redhat/Makefile.config
make
したらば /path/to/munin-2.0.6/build/master/_bin/munin-cgi-graph にできてる
vi /etc/munin/munin.conf

# 下記を変更か追記
graph_strategy cgi
cgiurl_graph /munin-cgi/munin-cgi-graph

cp /path/to/munin-2.0.6/build/master/_bin/munin-cgi-graph /var/www/cgi-bin/

vi /etc/httpd/conf.d/munin.conf

# ScriptAlias 追記
ScriptAlias /munin-cgi/ /var/www/cgi-bin/

<Directory /var/www/cgi-bin>
    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all
</Directory>
これで graph が CGI で動作するようになった

2012年11月22日木曜日

[other]mac に ssh で接続、ssh を使って git clone する

■mac に ssh 接続する
http://d.hatena.ne.jp/dice-t/20071115/1195187150 システム環境設定 → 共有 → リモートログイン
(チャレンジレスポンスになってる。パスワード、鍵認証も sshd_config 触るとできるみたいだけどやってないのでわからん)

次で接続できることを一応確認しとく。

Windows の teraterm でホストに mac のIPアドレス、TCPポート 22、SSH2 、
ユーザ名に設定して接続許可したユーザ、「チャレンジレスポンス認証を使う」、パスワードにmacのパスワードを入力。

■git で公開用リポジトリを作る

http://d.hatena.ne.jp/takihiro/20090325/1237990865

■クライアント で git clone する

git clone ssh://user@host:port/Users/xxxxx/xxxxx/project.git

IntelliJ IDEA なら

Git Repository URL : [ssh://user@host:port/Users/xxxxx/xxxxx/project.git]
Parent Directory : [git clone 保存先ディレクトリ]

を設定すると Directory Name はたぶん勝手にはいる。
私は下みたいになった。

Directory Name : [project]

2012年11月2日金曜日

[sphinx]はじめにやることメモ

http://isann.blog2.fc2.com/blog-entry-290.html

http://isann.blog2.fc2.com/blog-entry-293.html

■sphinxって何?


ここ見たらだいたいわかります。
http://sphinx-users.jp/

わかってるからそう言うのでしょうか。
はじめはまったくわかりませんでした。

要は、テキストファイルにwiki記法みたいな簡易マークアックアップの「reStructredText」で
記述し、これをプログラムを使って綺麗なHTMLなどにする、ということです。

で、「reStructredText」はディレクティブというのがあって、
これを使ってブロック図を書いたりシーケンス図を書いたり、
「reStructredText」標準の機能に機能追加していく感じです。

Sphinxというとpython、
という感じですがpythonを知らないとsphinxを使えないことはまったくありません。

知らないといけないのは、「reStructredText」の記述方法とSphinxの使い方です。

■sphinxインストール


ではさっそくインストールします。
pythonのインストールはexeキックするだけです。
easy_installはこのへんを参考にして下さい。

http://sphinx-users.jp/gettingstarted/install_windows.html
easy-install sphinx

これだけです。

■プロジェクトを作る


sphinx-quickstart

質問には全部デフォルトで答えました。

以下だけ入力します。


  • プロジェクト名

  • バージョン番号

  • 著者の名前


■diagインストール


http://blockdiag.com/ja/blockdiag/introduction.html#id2
easy_install pillow
easy_install blockdiag


■sphinxにdiagを埋め込む


上記だけでsphinxでblockdiagを使えるわけじゃなく、
上記はテキストファイル「diag」などからpng形式の画像データを作成するものです。
埋め込むには「sphinxcontrib-blockdiag」が必要です。
easy_install sphinxcontrib-blockdiag


■confの設定


./sphinx-project/conf.py
# Enabled extensions
extensions = ['sphinxcontrib.blockdiag']

# Fontpath for blockdiag (truetype font)
blockdiag_fontpath = 'C:\Windows\Fonts\msgothic.ttc'

ちょっとpythonファイルに設定を追記します。
pythonファイルもただのテキストファイルです。

■ディレクティブ


.. blockdiag:: [diag-filename]

例えばこんな感じで使えるようになります。

■トライアンドエラー的な…



  • blockdiagのpngファイルで日本語が文字化け

    これは文字化け、なんだけれど要はデフォルトでは日本語フォント使ってなくて、
    変なUTF-8の文字見つかったけどなににしたらわからーん!って状態。
    rem set /P font=フォントのパスを指定して下さい。(日本語フォントがよい):
    set font="C:\Windows\Fonts\msgothic.ttc"
    set /P diag=diagファイルのパスを指定して下さい。:
    blockdiag -f %font% %diag%
    pause
    

    こうやって日本語フォント指定してやればいける。
    でもちょっとノード内のフォントが上きれるんだよな…。これ原因不明です。

  • Sphinxのドキュメントで日本語が文字化け

    これも上と同じような問題。
    結局CSSのfont-familyの記述によって読み込まれているフォントが日本語非対応のフォントということらしい。

    http://blog1.erp2py.com/2012/01/sphinx.html
    <転載>
    [Pythonフォルダ] → [Lib] → [site-packages] → [Sphinx-1.1.2-py2.7.egg] → [sphinx]
    sphinxdoc.css_t ファイルをコピー&ペーストする
    
    [sphinx] → [themes] → [sphinxdoc] → [static] フォルダーに sphinxdoc.css_t ファイルがあるのでコピーして、ドキュメントの [_static] フォルダに貼り付ける。
    
    ペーストした sphinxdoc.css_t ファイルをテキストエディタで開き、font-family を変更する。
    
    sphinxdoc.css_t には font-family の指定が4カ所あるので変更する。私は次のように変更した。
    
    bodyタグ指定、viewcode-backクラス指定
    
    変更前
    font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva',
                 'Verdana', sans-serif;
    変更後
    font-family: 'Arial', 'Helvetica', sans-serif;
    
    cite, code, ttタグ指定、preタグ指定
    
    変更前
    font-family: 'Consolas', 'Deja Vu Sans Mono',
                 'Bitstream Vera Sans Mono', monospace;
    変更後
    font-family: 'Consolas', 'Courier New', monospace;
    make html コマンドで、htmlファイルを再作成する。
    
    Lucida Grandeとか悪さをしているみたいです。>

■shpinxインストールの補足的な


Sphinxの導入は下記あたりで記事にしました。
http://isann.blog2.fc2.com/blog-entry-290.html
http://isann.blog2.fc2.com/blog-entry-292.html

これにわかったことなどを追加しながら少し整理してみます。

sphinxのインストールに関してはhttp://isann.blog2.fc2.com/blog-entry-290.htmlそのままです。
pypiに登録されていますので、easy_installから簡単にインストールして、
そのままプロジェクトを作ります。
sphinx-quickstart コマンドはデフォルトで実行したディレクトリ配下にファイルを作成しますので、
自分で /usr/hoge/shpinx_doc/hogedoc みたいなディレクトリを作成してそこで実行するとよいと思います。

diagシリーズはブロック図は汎用性もあるのであるとかなりいいと思います。

easy_install sphinxcontrib-blockdiag

これに追加でシーケンス図を僕はよく使うので入れています。
easy_install sphinxcontrib-seqdiag

http://blockdiag.com/ja/seqdiag/sphinxcontrib.html

他にもアクティビティ図やネットワーク図などがあります。
必要に応じて追加するといいかもです。
はじめに全部入れておいても不都合はないと思います。
http://d.hatena.ne.jp/torutk/20110522/p1
http://d.hatena.ne.jp/hekyou/20110717/p1

shpinxドキュメントにこれらの図を埋め込むにはconf.pyを設定する必要があります。
この時点で下記リンク先のようなconf.pyになっていました。
https://gist.github.com/1978985
extensions = []
extensions.append('sphinxcontrib.blockdiag')
extensions.append('sphinxcontrib.seqdiag')
extensions.append('japanesesupport')
blockdiag_fontpath = r'C:\Windows\Fonts\msgothic.ttc'
seqdiag_fontpath = r'C:\Windows\Fonts\msgothic.ttc'

extensions.append('XXXXX')
こんな感じでどんどん拡張を追加していくとやりやすいかもです。

あと、日付フォーマットは
today_fmt = '%Y-%m-%d %H:%M:%S'

にしました。

sphinxドキュメントをHTML出力する際に日本語が含まれると思いますので、
下記のようなパスにあるsphinxdoc.css_tを
C:\TracLight\python\Lib\site-packages\Sphinx-1.1.2-py2.6.egg\sphinx\themes\sphinxdoc\static\sphinxdoc.css_t

F:\sphinxdoc\hoge\_static\sphinxdoc.css_t
みたいな感じでコピーしておきます。
https://gist.github.com/1978951
    font-family: 'Arial', 'Helvetica', sans-serif;
    ・
    font-family: 'Consolas', 'Courier New', monospace;
    ・
    font-family: 'Consolas', 'Courier New', monospace;
    ・
    font-family: 'Arial', 'Helvetica', sans-serif;

こんな順番で参考にさせて頂いたサイトと同様にfont-familyを変更しました。

シーケンス図の埋め込みはこんな感じです。
.. seqdiag::

    seqdiag admin {

      browser  -> webserver [label = "GET /index.html"];
      browser <-- webserver;
      browser  -> webserver [label = "POST /blog/comment"];
                  webserver  -> database [label = "INSERT comment"];
                  webserver <-- database;
      browser <-- webserver;
    
    }


ブロック図の埋め込みはこんな感じです。
.. blockdiag::

    blockdiag admin {
      
      // Set labels to nodes.
      A [label = "foo"];
      B [label = "bar"];
      // And set text-color
      C [label = "baz"];
   
      // Set labels to edges. (short text only)
      A -> B [label = "click bar", textcolor="red"];
      B -> C [label = "click baz"];
      C -> A;
   
    }


ブロック図に関してよく使うスタイルとか。
      node_width = 160;
      node_height = 60;
      default_fontsize = 12;
      default_node_color = "#4F81BD";
      default_textcolor = "#FFFFFF";
      class data [ shape = flowchart.input ];
      class ext_syori [color = "#9BBB59"];
      class ext_data [color = "#9BBB59", shape = flowchart.input];


あと、sphinxでテーブルの出力はまあまあ面倒くさくて、
list-tableやcsv-tableをよく使うことになる。
なんか癪だったのでpythonでtsvをうまくテーブルにするもの作ってみた。
https://gist.github.com/1977836
まだ、未完成でして、同一セル内の改行に対応できていません。

こんなところです。

2012年11月1日木曜日

[python]macへ PIL FREETYPE2 support available でのインストール

sphinx の block-diag や seq-diag を使う際にフォントをTrueTypeフォントで設定。

make html すると以下エラー。


ImportError: The _imagingft C module is not installed

この原因と対応方法はこちらの6以降参照。

ざっくりそのまま転載するとPILの
後日ためしたところ上手く行ったが、FREETYPE2 support not available となってしまっている。

が原因。

こういう感じ。

    --------------------------------------------------------------------

    PIL 1.1.7 SETUP SUMMARY

    --------------------------------------------------------------------

    version       1.1.7

    platform      darwin 2.7.2 (default, Nov  9 2011, 19:35:03)

                  [GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)]

    --------------------------------------------------------------------

    --- TKINTER support available

    --- JPEG support available

    --- ZLIB (PNG/ZIP) support available

    *** FREETYPE2 support not available

    --- LITTLECMS support available

    --------------------------------------------------------------------

    To add a missing option, make sure you have the required

    library, and set the corresponding ROOT variable in the

    setup.py script.

で、これをなおすにはこれを参考にしつつ次。
$ pip uninstall PIL

$ ln -s /usr/X11/include/freetype2 /usr/local/include/

$ ln -s /usr/X11/include/ft2build.h /usr/local/include/

$ ln -s /usr/X11/lib/libfreetype.6.dylib /usr/local/lib/

$ ln -s /usr/X11/lib/libfreetype.6.dylib /usr/local/lib/libfreetype.dylib

$ pip install PIL

で、これでいいんだけれど、私の mac mountail lion pre install な PC だと
/usr/X11/include/freetype2 もなければ、/usr/local/include/ もない。
※ないのはX11入れてないからかな?X11いれずにXCodeいれた山ライオンだとこうなるのかもね。

探してみると

※sudo find / -name freetype2 とかね

ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/X11/include/freetype2 /usr/local/include/

ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/X11/include/ft2build.h /usr/local/include/

ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/X11/lib/libfreetype.6.dylib /usr/local/lib/

ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/X11/lib/libfreetype.6.dylib /usr/local/lib/libfreetype.dylib


となった。

多分、XCodeのコマンドラインツールをインストールしてないとダメっぽいね。

予め gcc とか make するためにXCode のコマンドラインツールはインストールしてた。

これで sudo pip install pil したら

    --------------------------------------------------------------------

    PIL 1.1.7 SETUP SUMMARY

    --------------------------------------------------------------------

    version       1.1.7

    platform      darwin 2.7.2 (default, Jun 20 2012, 16:23:33)

                  [GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)]

    --------------------------------------------------------------------

    --- TKINTER support available

    *** JPEG support not available

    --- ZLIB (PNG/ZIP) support available

    --- FREETYPE2 support available

    *** LITTLECMS support not available

    --------------------------------------------------------------------

無事こうなりました。

おわり。