dotprojectのガントチャート日本語化

dotproject」をインストールしたけど、ガントチャートが

どうしても日本語化されず、すげぇ~悩んだ・・・。

ちなみにバージョンは「2.0.4」

前提として

dotproject」にある「JpGraph」は使わずにアシアル株式会社からDLしたもの

を使う。

ガントチャートを表示するファイルは全部で「3つ

dotproject/modules/
○ projects/gantt.php
○ projects/gantt2.php
○ tasks/gantt.php

参考サイトとして「okkezのPukiWiki」がすばらしかった。

ここのサイトから「gantt.diff.gz」を落として、
確認しながら修正していったら日本語化されました。
多分古いバージョンとかはあまり関係ないみたい。

修正箇所は全て

○ フォントの設定をちゃんとして
○ フォントの指定をちゃんとして
○ 文字コードが正しければ
○ jpgraph自体に手を入れなくても日本語の表示は出来る

を前提として修正したみたいなので。

実際ソースを追っていくと色々なバージョンを見たけど、
ちょっとづつ変わっているかなぁ~程度だから、
修正自体はそんなに難しいものではなかったかなぁ~。

でもこのファイルが無いと解らなかったってのもあるけど・・・。
まぁ~力不足ですね。

サイトのコメントで

巷では「JpGraph」に手を入れて日本語表示させるのが流行ってるみたいだけど、何かそれっておいしくない気がする。どうせ、「JpGraph」はQTライセンスで修正物の再配布不可なんだから、「JpGraph」を弄るのはフォントの設定だけに留めておいて、あとはアプリ側で対応すべきだと思った。

とありました。
確かにそうだよね。
他でも「JpGraph」を使っていたりして、バグが出たりしたらすげぇ~困るしね。
同感です。
そしてすげぇ~勉強になりました。

rsyncを使って差分のあるファイルを・・・の続き vol.2

rsyncで差分を取る時に、除外したいファイルがあるからオプション「–exclude」を
指定してみよぉ~と思ったら、何故か出来なかった・・・。

何故か?

「–exclude」オプションでファイル名を指定する場合は、
相対パス」でないと駄目みたい・・・。(なんでだろう?)

「–exclude-from=リスト名」の場合もリストの中に
記述するパスは相対パスでないと駄目らしい。

早速相対パスで書いてみたら出来たぁ~♪

リストの書き方も書いてあるサイトがあったから紹介
http://www.ksknet.net/linux/rsync.html

rsyncを使って差分のあるファイルを・・・の続き

ローカルからリモートのサーバー間でrsyncを実行するのにsshを使わないと
なぁ~って事で。
「sshでログインせずに鍵認証のみで実行する。」
をやってみた。

local:~% ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):

< 「Enter」を押す>

Enter passphrase (empty for no passphrase):

<「Enter」を押す>

Enter same passphrase again:

<「Enter」を押す>

Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
04:cf:a6:c9:2e:01:41:6c:86:34:03:96:c9:7b:7a:cd hoge@hoge.com

そうすると

id_rsa」と

id_rsa.pub」ってのが出来るので、そいつをリモートの方にコピーしてから
下記を実行した。

remote:~% cat id_rsa.pub >> ~/.ssh/authorized_keys

そうするとリモート側に公開鍵が出来上がるので、パスワードが必要なくなる。

下記は最初の認証時のみで、一度設定すると次回からは聞かれない。

local:~% ssh remote
The authenticity of host ‘remote (192.168.1.1)’ can’t be established.
DSA key fingerprint is 2e:f1:b2:ff:33:d2:c0:00:11:33:44:55:b7:8e:e4:46.
Are you sure you want to continue connecting (yes/no)?

<yesを入力>

パスワードを入力しちゃうと、パスワードを聞かれてしまう所でちょっとつまづいた。
重要だったのは「パスワードを入力せずに鍵のみでの認証にする。」って事でした。
つまり「空」<ENTER>だよ!!!
気付けよ俺!!!

ちなみにPHPで「exec関数」を使って「rsync」を使ってみよぉ~と思ったら、1日位はまってはまってくじけそうになった。
原因は・・・

ズバリ「環境変数」ですね。

exec(‘rsync -nva -e ssh [ローカルファイル名] [リモートユーザー名]:[リモートホスト名][リモートファイル名]’)

って実行したらゼンゼン動いてくれなくて、すげ~困った。

こいつを

exec(‘/usr/local/bin/rsync -nva -e /usr/local/bin/ssh [ローカルファイル名] [リモートユーザー名]:[リモートホスト名][リモートファイル名]’)

ってやったら動いたよぉ~♪
まじで疲れた。
駄目だね、はまる時はすげぇ~簡単な事でも気付かず延々と時間だけが過ぎていく・・・。

jpGraphをインストール時にハマったこと

jpgraphインストールした後、「さぁ試すぞだ!!!」って時に文字が化けてしまった。

イロイロと調べた結果下記のようになる。

PHPの内部エンコーディングがEUC-JPの場合、日本語フォントの
設定方法での対処だけでは日本語が化けてしまう。
jpgraph 1.20.5の場合、EUC-JPでないとwarningが発生して表示できないらしい。

gd_image.inc.phpの1349行目あたりに、

// Do special language encoding
   $txt = $this->langconv->Convert($txt,$this->font_family);
   $txt = mb_convert_encoding( $txt, "EUC-JP", "UTF-8"); <-ここを追加

jpgraph.phpを以下のように修正する。

2898行目付近 太字やイタリック体をとりあえずノーマルで表示する。

FF_MINCHO =>  array(FS_NORMAL=>MINCHO_TTF_FONT, 
FS_BOLD=>MINCHO_TTF_FONT,
   FS_ITALIC=>MINCHO_TTF_FONT, FS_BOLDITALIC=>MINCHO_TTF_FONT ),
FF_PMINCHO => array(FS_NORMAL=>PMINCHO_TTF_FONT, 
FS_BOLD=>PMINCHO_TTF_FONT,
FS_ITALIC=>PMINCHO_TTF_FONT, FS_BOLDITALIC=>PMINCHO_TTF_FONT ),
FF_GOTHIC  => array(FS_NORMAL=>GOTHIC_TTF_FONT, 
FS_BOLD=>GOTHIC_TTF_FONT,
FS_ITALIC=>GOTHIC_TTF_FONT, FS_BOLDITALIC=>GOTHIC_TTF_FONT ),
FF_PGOTHIC => array(FS_NORMAL=>PGOTHIC_TTF_FONT, 
FS_BOLD=>PGOTHIC_TTF_FONT,
FS_ITALIC=>PGOTHIC_TTF_FONT, FS_BOLDITALIC=>PGOTHIC_TTF_FONT ));

これで日本語化されるはず。

2~3時間くらい悩んでしまった・・・。
ハマったらしょうがないよね。。。

phpでGDを使う場合のconfigure

とりあえずメモしておこっと。

忘れちゃうからね・・・。
そういえば、「GD」をインストールする前に「Feetype」「png」「jpeg」「zlib」は
先にインストールしないと「GD」をconfigureしても反映されないんだね・・・。

「Freetype」をインストールせずに「GD」をconfigureしたら

# tar zxvf gd-2.0.28.tar.gz
# cd gd-2.0.28
# ./configure –without-libiconv-prefix

** Configuration summary for gd 2.0.28:

Support for PNG library: yes
Support for JPEG library: yes
Support for Freetype 2.x library: no
Support for Xpm library: yes
Support for pthreads: yes

ってなったから、「Freetype」をインストールしてから
「GD」をインストールしたら

# tar zxvf gd-2.0.28.tar.gz
# cd gd-2.0.28
# ./configure –without-libiconv-prefix

** Configuration summary for gd 2.0.28:

Support for PNG library: yes
Support for JPEG library: yes
Support for Freetype 2.x library: yes
Support for Xpm library: yes
Support for pthreads: yes

ってなったので、

# make
# make install

でインストール。

ちなみに「Freetype」って

TrueTypeフォントをレンダリングするライブラリ
1989年にApple社が開発し、同社のMac OS 7.0(当時はSystem 7.0)から搭載している
フォントシステム。
また、同システムで用いられるフォント形式。
Microsoft社に技術供与され、Windows 95からはシステム標準のフォントシステムとして
広く用いられている。
TrueTypeはOSの機能として実装されたアウトラインフォントシステムであるため、
拡大・縮小してもジャギー(ギザギザ)が生じず、解像度によらない精細な出力を画面と
印刷の両方で同じように得られる。

らしい。

PHPのconfigure
一応「MySQL」と「Postgres」を両方使う場合。

./configure
–with-pgsql=/usr/local/pgsql
–with-mysql=/usr/local/mysql
–enable-track-vars
–with-apxs=/usr/local/apache/bin/apxs
–enable-versioning
–enable-mbstring
–enable-mbregex
–enable-mbstr-enc-trans
–with-gd
–with-freetype-dir=/usr/local/include/freetype2
–with-jpeg-dir=/usr/local/lib
–with-png-dir=/usr/local/lib
–with-zlib-dir=/usr/local/lib
–enable-gd-native-ttf
–enable-gd-jis-conv
–enable-bcmath

※「浮動小数点の計算が何やらおかしくなることがあるから(–enable-bcmath)はあった方がいい。
画像サイズをピクセル単位で計算して変換する時に計算が狂う場合があるので、
PHPのBCMath任意精度数学関数を使うと良い」とNさんから助言されオプションに付けました。
Thanksです。
そして忘れないようにしないとね・・・。
こういうのでハマルからさ。

「GD」使うのに解らない場合、ここ結構良いかも。
「Shinta’s website」
http://www.gadgety.net/shin/tips/unix/php-gd.html