2013年10月27日日曜日

Jenkinsからdoxygenを使う

Jenkinsで「Doxygen Plugin」をインストール
「Jenkinsの管理」->「プラグインの管理」->「利用可能」->「Jenkins Doxygen Plug-in」
Jenkinsでプロジェクトを作成

「/usr/local/jenkins/jobs/<プロジェクト名>/workspace/」に<doxygenのconfigファイル>を格納する

doxygenの出力ファイルを格納するフォルダを作成する
% mkdir /usr/local/jenkins/jobs/<プロジェクト名>/workspace/doxygen
<doxygenのconfigファイル>をJenkinsのフォルダ構成にあわせて変更する
OUTPUT_DIRECTORY       = doxygen
INPUT                  = trunk
プロジェクトの設定を変更する。
「ソースコード管理」->「ローカルモジュールディレクトリ (オプション)」
※workspace配下にdoxygenの出力ファイルを置くために、ソースをチェックアウトするフォルダを変更
trunk 
「ビルド」->「シェルの実行」
doxygen <doxygenのconfigファイル>
「ビルド後の処理」->「Publish Doxygen」->「Doxyfile path」
<doxygenのconfigファイル>
ビルドを実行する。
成功するとプロジェクトに「DoxyGen HTML」へのリンクが表示される。



参考サイト
http://hidari-lab.hatenablog.com/entry/doxygen_and_jenkins

課題
ソースのチェックアウトにやたら時間がかかるのが気になった。
どうやら、ソースに画像や動画が含まれているときJenkinsの動作に課題があるらしい。
参考サイト
http://kkkon.sakura.ne.jp/wp3/2012/08/27/jenkins-subversion-plugin-is-stoick/

FreeBSDでdoxygenを使ってみる

まずはインストール。
# pkg_add -r doxygen
図を作成するためのツールをインストール。
# pkg_add -r graphviz 
コンフィグファイルを生成する。
% doxygen -g <コンフィグファイル名>
 生成したコンフィグファイルを編集する。
% vi <コンフィグファイル名>
コンフィグファイルで変更した箇所とメモ
PROJECT_NAME           = <プロジェクト名>
OUTPUT_DIRECTORY       = <出力先のディレクトリ>
CREATE_SUBDIRS         = YES
OUTPUT_LANGUAGE        = Japanese
EXTRACT_ALL            = YES
EXTRACT_PRIVATE        = YES
プライベートメソッドをドキュメント化する 
INPUT                  = <ソースコードの場所>
RECURSIVE              = YES
サブフォルダのファイルもINPUTにする 
SOURCE_BROWSER         = YES
INLINE_SOURCES         = NO
モジュール一覧と一緒にソースを表示したい場合は「YES」を設定 
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION    = YES
GENERATE_LATEX         = NO
LATEXファイルは生成しない 
MSCGEN_PATH            = /usr/local/bin
シーケンスを使う場合はmscgenの場所を指定 
HAVE_DOT               = YES
図を描画するための設定(graphvizが必要) 
DOT_FONTNAME           = Sazanami Gothic
図で使用するために日本語のフォントを指定 
CALL_GRAPH = YES
CALLER_GRAPH = YES


参考サイト
http://www.doxygen.jp/config.html
http://watcher.moe-nifty.com/memo/2005/08/doxygen__graphv_96cf.html








よく使うscreenのコマンド

C-a c
スクリーンを追加する
C-a w
スクリーンの情報を表示する 
C-a 数字
指定した数字のスクリーンに切り替える
C-a S
ウインドウを横に2分割する
C-a X
分割したウインドウを閉じる
C-a TAB
アクティブなウインドウを切り替える
C-a |
ウインドウを縦に2分割する(バージョン4.1.0から使えるらしい)





2013年10月26日土曜日

FreeBSDでJenkinsを立ち上げる

まずはインストール。
# pkg_add -r jenkins
起動してみる。
# /usr/local/etc/rc.d/jenkins onestart
立ち上げたホストに別PCのブラウザからアクセスしてみる。
http://<ホスト名>:8180/jenkins
残念ながら、表示できず。
ログを確認。
# less /var/log/jenkins.log
Oct 26, 2013 9:49:12 PM hudson.UDPBroadcastThread run
WARNING: UDP handling problem
java.net.SocketException: Invalid argument
        at java.net.PlainDatagramSocketImpl.join(Native Method)
        at java.net.AbstractPlainDatagramSocketImpl.join(AbstractPlainDatagramSocketImpl.java:168)
        at java.net.MulticastSocket.joinGroup(MulticastSocket.java:300)
        at hudson.UDPBroadcastThread.run(UDPBroadcastThread.java:76)
Oct 26, 2013 9:49:12 PM hudson.WebAppMain$2 run
INFO: Jenkins is fully up and running
Oct 26, 2013 9:49:12 PM hudson.DNSMultiCast$1 call
WARNING: Failed to advertise the service to DNS multi-cast
java.net.SocketException: Invalid argument
        at java.net.PlainDatagramSocketImpl.join(Native Method)
        at java.net.AbstractPlainDatagramSocketImpl.join(AbstractPlainDatagramSocketImpl.java:168)
        at java.net.MulticastSocket.joinGroup(MulticastSocket.java:300)
        at javax.jmdns.impl.JmDNSImpl.openMulticastSocket(JmDNSImpl.java:459)
        at javax.jmdns.impl.JmDNSImpl.<init>(JmDNSImpl.java:420)
        at javax.jmdns.JmDNS.create(JmDNS.java:60)
UDPのソケット周りでエラーが発生している模様。
https://code.google.com/p/epid-project/issues/detail?id=1
を見てみると、IPv6のアドレスを設定しているとこのエラーが出るらしい。
パラメータを指定して再度実行。
# /usr/local/etc/rc.d/jenkins stop
# env jenkins_java_opts=-Djava.net.preferIPv4Stack=true /usr/local/etc/rc.d/jenkins onestart
ログにはさきほどのエラーは出なくなったが、依然として表示はできない。
/usr/local/etc/rc.d/jenkinsを眺めてみると以下の記載を発見。
: ${jenkins_args="--webroot=${jenkins_home}/war --httpListenAddress=127.0.0.1 --httpPort=8180 --ajp13ListenAddress=127.0.0.1 --ajp13Port=8009 --prefix=/jenkins"}
ローカルホストのアドレスで待ち受けるようになっている模様。
アドレスの指定を削除してみる。
# env jenkins_java_opts=-Djava.net.preferIPv4Stack=true "jenkins_args=--webroot=/usr/local/jenkins/war --httpPort=8180 --ajp13ListenAddress=127.0.0.1 --ajp13Port=8009 --prefix=/jenkins" /usr/local/etc/rc.d/jenkins onestart
今度は無事、表示された。


サーバ起動時にJenkinsがスタートするように「/etc/rc.conf」に以下の設定を追加して完了。
jenkins_enable="YES"
jenkins_java_opts="-Djava.net.preferIPv4Stack=true"
jenkins_args="--webroot=/usr/local/jenkins/war --httpPort=8180 --ajp13ListenAddress=127.0.0.1 --ajp13Port=8009 --prefix=/jenkins"

svnで「svn: E000022: Can't convert string from 'UTF-8' to native encoding:」というエラーが表示される

Windowsでコミットした日本語名のファイルを、FreeBSDでチェックアウトするときに発生した現象。
localeを確認
% locale -a | grep ja
環境変数を設定
% export LC_CTYPE=ja_JP.UTF-8
はまった点
screen上で上記の環境変数を設定しても正常に動作しない。
なぜなら、screenがUTF-8で動作していないため。
上記の環境変数を設定した状態でscreenを起動すれば期待通りの動作となった。

参考サイト
http://koexuka.blogspot.jp/2010/10/svncant-convert-string-from-utf-8-to.html

Media Player Classicのランダム再生

Media Player Classicでランダム再生を使う方法。
  1. メニューの「表示」→「プレイリスト」を表示(もしくはCtrl+7)
  2. プレイリストで右クリック
  3. 「ランダム化」を選択

2013年10月20日日曜日

FreeBSDでntpを使って時刻を合わせる

「ntpdate」コマンドを使用する。
# ntpdate サーバ名
サーバ名は以下のサイトを参考にして設定。
http://wiki.nothing.sh/page/NTP/%A5%D7%A5%ED%A5%D0%A5%A4%A5%C0%A1%A6%B5%A1%B4%D8%CA%CC#content_1_0
契約しているプロバイダにサーバがあればそこを使用する。

起動時にも実行するように/etc/rc.confに設定を追加。
ntpdate_enable="YES"
ntpdate_hosts="サーバ名"
参考サイト
http://blog.livedoor.jp/webprog/archives/2339244.html