====== HRForecast ====== ===== 公式 ===== http://blog.nomadscafe.jp/2013/02/hrforecast--.html https://github.com/kazeburo/HRForecast ===== インストール ===== ==== cpanm ==== 依存モジュールのインストールにcpanmが必要なので、事前にインストールします。 # cd /root # mkdir bin # cd /bin # curl -LOk http://xrl.us/cpanm # chmod 755 cpanm ==== HRForecast ==== # cd /etc/ # git clone git://github.com/kazeburo/HRForecast.git Initialized empty Git repository in /etc/HRForecast/.git/ remote: Counting objects: 414, done. remote: Compressing objects: 100% (218/218), done. remote: Total 414 (delta 225), reused 374 (delta 194) Receiving objects: 100% (414/414), 288.08 KiB | 256 KiB/s, done. Resolving deltas: 100% (225/225), done. ==== 依存モジュール ==== # cd HRForecast # cpanm -n -lextlib --installdeps . --> Working on . ~省略~ 69 distributions installed ==== MySQLにテーブル作成 ==== mysql -u root -p mysql> create database hrforecast; mysql> use hrforecast; mysql> SOURCE /etc/HRForecast/schema.sql ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes Query OK, 0 rows affected, 2 warnings (0.01 sec) ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes 付属のテーブル作成スクリプトファイルを実行すると上記のようにエラーになるので、スクリプトファイルのテーブル定義を編集する。 # cp schema.sql schema.sql.org # vi schema.sql :%s/255/111/g 編集後、再度実行。 mysql> SOURCE /etc/HRForecast/schema.sql Query OK, 0 rows affected, 2 warnings (0.00 sec) Query OK, 0 rows affected, 3 warnings (0.01 sec) Query OK, 0 rows affected, 2 warnings (0.00 sec) ==== 初期設定 ==== # vi config.pl { dsn => 'dbi:mysql:hrforecast;hostname=127.0.0.1', username => 'root', password => 'password', port => '5127', host => '0.0.0.0', front_proxy => [], allow_from => [], }; ==== 起動確認 ==== 以下コマンド実行後、 # perl hrforecast.pl --config config.pl >> /var/log/hrforecast.log 2>&1 & ブラウザから以下にアクセスできることを確認。 http://サーバ:5127/ ==== 起動スクリプト ==== 起動スクリプトは付属していないので、作成する必要がある。 # vi /etc/init.d/hrforecast #!/bin/sh # chkconfig: - 80 20 # description: HRForecast # Source function library. . /etc/rc.d/init.d/functions ### Default variables PERLBREW_ROOT="/usr/bin" PERLBREW_HOME=$PERLBREW_ROOT/.perl LOG_FILE="/var/log/hrforecast.log" SYSCONFIG="/etc/sysconfig/hrforecast" #source $SYSCONFIG #source $PERLBREW_ROOT/etc/bashrc PROG_ROOT="/etc/HRForecast" PROG_NAME="hrforecast.pl" PROG_ARGS="--config $PROG_ROOT/config.pl" PID_FILE=/var/run/hrforecast.pid start() { PID=`pgrep -fo "$PROG_NAME"` if [ -z "$PID" ]; then if [ -f $PID_FILE ]; then rm -f $PID_FILE; fi else echo "hrforecast already started." exit 1 fi echo -n "Starting hrforecast: " su $USER -c "perl $PROG_ROOT/$PROG_NAME $PROG_ARGS >>$LOG_FILE 2>&1 &" RETVAL=$? echo `pgrep -fo "$PROG_NAME"` > $PID_FILE if [ $RETVAL -eq 0 ] ; then echo_success touch /var/lock/subsys/$prog else echo_failure fi echo return $RETVAL } stop() { PID=`pgrep -f "$PROG_NAME"` if [ -z "$PID" ]; then echo "hrforecast already stopped." exit 0 fi echo -n "Stopping hrforecast: " rm -f $PID_FILE pkill -TERM -f "$PROG_NAME" RETVAL=$? if [ $RETVAL -eq 0 ] ; then echo_success else echo_failure fi echo return $RETVAL } status() { PID=`pgrep -f "$PROG_NAME"` if [ -z "$PID" ]; then echo "hrforecast stopped." else echo "hrforecast running." fi } usage() { echo "Usage: `basename $0` {start|stop|restart|status}" } case $1 in start) start ;; stop) stop ;; restart) stop sleep 1 start ;; status) status ;; *) usage ;; esac # chmod +x /etc/init.d/hrforecast # /etc/init.d/hrforecast start ==== データ登録 ==== numberとdatetimeにパラメータをつけて、サーバのAPIにリクエストを投げる。 # curl -F number=33 -F datetime=20130728T00:00:00 http://localhost:5127/api/mona/regist/all ===== Tips ===== ==== レンジの追加 ==== グラフのレンジに「1日間」を追加 diff -ir /etc/HRForecast/lib/HRForecast/Web.pm /etc/HRForecast.org/lib/HRForecast/Web.pm 47,50d46 < elsif ( $term eq 'x' ) { < $from = time - 86400 * 1; < $to = time; < } 161c157 < [['CHOICE',qw/w m y x c range/],'invalid browse term'], --- > [['CHOICE',qw/w m y c range/],'invalid browse term'], diff -ir /etc/HRForecast/t/HRForecast/Web/02_calc_term.t /etc/HRForecast.org/t/HRForecast/Web/02_calc_term.t 29,33d28 < subtest 't => x' => sub { < my ($from, $to) = $obj->calc_term(t => 'x'); < is($to->epoch, int(time / 3600) * 3600); < is(($to - $from), (1 * 24 * 60 * 60)); < }; diff -ir /etc/HRForecast/views/list.tx /etc/HRForecast.org/views/list.tx 13d12 <
  • 1日間