pChartを使ってみた
pChartを使ってみました。
環境は、いつも通りUbuntuを使います。
セットアップ
pChartには、GDライブラリが必要なのでインストールします。
- php5-gd 5.3.2-1ubuntu4.2
$ sudo aptitude install php5-gd
pChartを下記からダウンロードしてきます。
http://pchart.sourceforge.net/download.php
- pChart.1.27d.rar
もしrarを解凍できないなら、下記を実行してインストールしてください。
$ sudo aptitude install unrar
解凍が終わったら、適当な場所に置きます。
下記は私の環境の場合です。
$ cd pChart.1.27d/ $ cp -R pChart /home/www/share/htdocs/devel/pChart
フォントも必要なので持ってきます。
$ mkdir /home/www/share/htdocs/devel/pChart/Fonts $ cd /usr/share/fonts/truetype/takao $ cp TakaoExGothic.ttf /home/www/share/htdocs/devel/pChart/Fonts
これでセットアップは完了です。
実装
さあ、実装です。
…とその前に、
pChartにはちょっとしたバグがあります。
PHP Notice: Uninitialized string offset: 1 in /home/www/share/htdocs/devel/pChart/pData.class on line 127
このバグを修正するには下記の "+" の部分を書き足す必要があります。(pData.classの126行目辺り)
$ diff pData.class{.org,} --- pData.class.org 2010-09-01 00:12:45.421029540 +0900 +++ pData.class 2010-09-01 00:09:03.761092881 +0900 @@ -123,6 +123,9 @@ $Value = $Value[0]; $ID = 0; + if (!is_array($this->Data)) { + $this->Data = array(); + } for($i=0;$i<=count($this->Data);$i++) { if(isset($this->Data[$i][$Serie])) { $ID = $i+1; } }
今度こそ、サンプルの実装です。
一気に飛びますが、下記がサンプルです。
各所で何してるかはコメントと下記のドキュメントを読んでください…。
http://pchart.sourceforge.net/documentation.php
<?php /** * Demo pChart */ require_once "./pChart/pData.class"; require_once "./pChart/pChart.class"; /** * プロットデータ設定 */ // プロットデータの用意 $pdata = new pData(); $pdata->AddPoint(array(8, 4, 6, 9, 25), '系列A'); $pdata->AddPoint(array(2, 0, 9, 12, 8), '系列B'); // X軸ラベルの用意 $pdata->AddPoint(range(1,5), 'Xlabels'); // プロットする系列の設定 $pdata->AddSerie('系列A'); $pdata->AddSerie('系列B'); // X軸ラベルの設定 $pdata->SetAbsciseLabelSerie("Xlabels"); /** * グラフ作成 */ // グラフ初期化 (画像サイズを設定: width, height) $pchart = new pChart(900, 300); // ラベルに使うFont設定 $pchart->setFontProperties('./pChart/Fonts/TakaoExGothic.ttf', 8); // 画像のうち、グラフを描画する範囲を設定 $pchart->setGraphArea(80, 20, 680, 280); // グラフ領域を描画 $pchart->drawGraphArea(255, 255, 255,false); // 目盛を描画 $pchart->drawScale($pdata->GetData(), $pdata->GetDataDescription(), SCALE_NORMAL, 30, 30, 30, true, 0, 2); // グリッドを描画 $pchart->drawGrid(4, true, 235, 235, 235, 50); // データ点をプロット $pchart->drawPlotGraph($pdata->GetData(), $pdata->GetDataDescription()); // データを線で結ぶ $pchart->drawLineGraph($pdata->GetData(), $pdata->GetDataDescription()); // 凡例を描画 $pchart->drawLegend(690, 20, $pdata->GetDataDescription(), 255, 255, 255); // グラフをブラウザに描画 $pchart->Stroke();
でき上がったグラフがこれです。
すごくキレイにできあがりました。
メリット、デメリット
ここで、メリットとデメリットを簡単に見ていきます。
- メリット
- デザインのいいグラフができあがる
- 比較的実装が簡単
- GPLライセンス
- デメリット
- 処理が遅い
- ライブラリ内でexit()する箇所がある
- エラー処理がいまいち
- 2008年から動き無し
まとめ
個人的にはデメリットが痛いですが、ちょっとグラフを作るのには非常に便利なライブラリです。
仕事で使う際には上手くデメリットをカバーするラッパークラスを作るか、改良が必要な気がします。
VIM設定を公開してみます
常日頃、仕事でVIMを使っています。
設定が肥大化してきたのと、
人からの譲り受けで把握できなくなってきたので整理をしました。
整理の方針は下記の通りです。
- .vimrcはシンプルにする
- 理解していない設定は入れない
- 特定のファイルタイプでしか設定しないものは、別ファイルにする
- syntaxカラーは控えめにする
ということで、
設定したものをgithubに置きました。
http://github.com/yhino/dotfiles
syntaxカラーは、ColorSchemeを1から作成しました。
PHPしか確認していないのと、256色以外確認していないので、
まだまだ設定しなければなりませんが…。
githubに置いてあるものは、ご自由にお使いください。
githubからダウンロードしたものを、~/にコピーしてもらえればOKです。
コマンドは下記の通りです。
# 作業ディレクトリ作成 $ mkdir git $ cd git # ダウンロード (githubからzipやtarでもダウンロード可能です) $ git clone git://github.com/yhino/dotfiles.git # 配置 $ cd dotfiles $ cp -R .vim ~/.vim $ cp .vimrc ~/
今後はVIM以外もコミットしていきます。
また、設定でハマった点などもまとめようかと思います。
Ubuntu10.04でGoogleCL使ってみました
Google Data APIのコマンドラインツールが公開されたので、使ってみました。
利用できるようにする準備から、試しに使ってみるところまでやってみます。
Google Code Archive - Long-term storage for Google Code Project Hosting.
まず、利用準備です。
googleclをインストールするには、tarballとdebパッケージの2種類があります。
Ubuntuはdpkgでdebパッケージをインストールできるので、debパッケージを利用します。
googleclは依存関係で、python-gdataを必要とするので先にインストールします。
$ aptitude search python-gdata p python-gdata - Google Data Python client library $ sudo aptitude install python-gdata
python-gdataのインストールが無事に終わったら、googleclをインストールします
$ sudo dpkg -i googlecl_0.9.5-1_all.deb
もしかしたら、aptitudeでインストールできるかもしれません。
確認し忘れました。
最後に、コマンドが使えるようになっているか確認します。
$ which google /usr/bin/google
これで利用準備が完了しました。
では使ってみましょう。
今回は、youtubeに動画を投稿してみます。
googleclのページは書いていませんでしたが、デベロッパーキーが必要みたいだったので、追加しました。
$ google youtube post --devkey {デベロッパーキー} --category People 1-20100619102331.avi
実行すると下記のような表示が出ます。
アップロードなどにはoauthが必要なため、表示されたURLをブラウザで開きアクセスを許可します。
Please specify user: gyhino (Hint: You can automatically launch your browser by adding "auth_browser = <browser>" to your config file under the GENERAL section, or define the BROWSER environment variable.) Please log in and/or grant access via your browser at https://www.google.com/accounts/OAuthAuthorizeToken?oauth_token=***** then hit enter.
ブラウザでの操作が終わったら、コマンドラインに戻りEnterを押します。
下記が表示されると、アップロードが始まります。
Loading 1-20100619102331.avi
こんな感じで、Googleのサービスデータにアクセスが出来ます。
簡単ですね。
使い道としてはバッチ処理とかで使えると思います。
Webでも非同期処理であればバックエンドでいけそうですね。
使い道はデベロッパー次第、楽しみです。
マイコン始めました
とうとうマイコンを始めてしまいました。
…ブログの方向性が定まらず、内容がゴチャゴチャですが暖かく見守ってください。
中途半端にはしないようにします。
では、本題のマイコンの話です。
まずは初級から…と思いまして、
大人の科学マガジンの付録を利用してみます。
Vol.27 テクノ工作セット(8ビットマイコン+光残像キット) | 大人の科学マガジン | 大人の科学.net
8bitマイコンボード"Japanino"と、光残像キット"P.O.V."がセットで3,360円です。
素人の私には安いのか、高いのか分かりません。
が、セットで勉強環境が揃うのは非常に助かります。
いろいろ弄るには、WindowsかMacが必要になります。
UnixやLinuxはドライバはあるものの、IDEが動くか分かりません。
Javaっぽかったので動くと思うんですけど。
まだ組み立てて、動作確認しかしてません。
これからいじくり倒して、なにか作りたいですね。
続! Ubuntu 10.04 GMA500ドライバ
インストールスクリプトが更新されていたので、試してみました。
スクリプトの処理は結構変わっているようです。
実行する際も、sh → bashに変わっているので要注意です。
http://dl.dropbox.com/u/1338581/Gma500/scripts/poulsbo_lucid.sh && bash ./poulsbo_lucid.sh
とはいっても、
今回重点的に変更されたのは設定周りのようです。
/etc/X11/xorg.confにも修正が入りますが、
自分でいじっていなければ、スクリプト内で置き換えてくれるのでラクチンです。
一番重要な効果は...
そんなに変わった感じないです。
まだwifiの背景白いし...。
真ん中クリック + スティックポインタでスクロール@VAIO Type P
一難去ってまた一難です。
9.10で設定していたスティックポインタの設定が聞かなくなってしまいました。
格闘の記録です。
過去の日記で設定していたものを、元に作業をします。
Ubuntu 9.10 @ VAIO Type P - でぶろぐ
具体的には別のファイルに違うフォーマットで書き換える作業をします。
下記が書き換えた後の設定ファイルです。
$ sudo vim /usr/lib/X11/xorg.conf.d/15-vaio.conf
以下は内容です。
Section "InputClass" Identifier "Trackpoint Wheel Emulation" MatchProduct "PS/2 Generic Mouse" MatchDevicePath "/dev/input/event*" Driver "evdev" Option "EmulateWheel" "true" Option "EmulateWheelButton" "2" Option "Emulate3Buttons" "false" Option "XAxisMapping" "6 7" Option "YAxisMapping" "4 5" EndSection
ログアウトしなおせば、スクロール出来るようになります。
参考サイトはこちら