12月
30
2008
0

[CakePHP]1.2.0.7962のModel::deleteについて
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

概要

いやー焦った。ほんとに焦った。
今日出社したらCakePHPで作った社内システムのデータが一部消えてたんですよ*1
考えられる原因はただ一つ。昨日みんなの仕事が終わった後に*2 CakeをRC4からstableに更新したのが原因だと思われます。

もしかしたら他にもこんな状況に陥る人がいるかもしれないからここにメモしておきますね。
あ~俺もなった~って人がいたらコメントくれると嬉しいです。

追記:原因が判明しました!
アソシエーションのconditionsを「array(”フィールド”=> “値”)」と書かなくてはならないところ「”フィールド = 値”」と書いていたのが原因でした。詳細は続きを読むでご参照ください。

(続きを読む…)

  1. ちなみに僕明日も仕事ですよ! []
  2. なんて献身的な僕。僕エライ!僕最高! []
Written by suzukenn in: メモ | タグ:
12月
25
2008
0

[FireFox]Greasemonkeyのスクリプトを書いてみた
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

概要

最近Javascriptを使いこなせるようになりたいと一生懸命なわたくしが、Greasemonkeyのユーザスクリプト作成にチャレンジしてみました。

DesignFeedDatabaseというサイトをご存知でしょうか?
webデザインに関する人気記事を(恐らく機械的に)収集して配信しているサイトなのですが、普段チェックしていないサイトなんかも見つけることができるので、このサイトのフィードはとても重宝しているのですが…

残念なことに、feedから記事を開くとアフィリエイト満載のリンクページが開いて、そのページから元記事リンクをわざわざクリックしなければ目的のページにたどり着けないんですよね。まあサイト製作者の立場で考えれば当たり前の作りなんですが。

開いたページにコリスさんや百式さん、MOONGIFTさんやMozilla Re-Mixのようにちゃんとレビューや感想、使い方などそのページ特有のコンテンツがあればその記事はとても有益なものになるけれど、フィードから取得したタイトルと本文があってその周りにこれでもかと広告が表示されているページなんて…これは本当に個人的な意見ですけれど、そんなページには何の価値も無いと思うわけです*1 。結局は元記事が読みたいわけですから。

当然ですがDesignFeedDatabase製作者の方のおかげで自分だけでは探せなかった素晴らしい記事に出会うことができるわけで、そのことに大変感謝しておりますし、製作者の方はもちろんご自分のサイトをどのように作ってもいいし、そうするべきだと思います。サイトを作り運営するには労力だってコストだってかかるわけですからね。

ただ、どうしてもその不便さを解消したい。解消するための手段がブラウザにはあることを知っていましたので、DesignFeedDatabaseさんの記事から元記事のurlを取得して*2 そのurlにリダイレクトするGreasemonkeyのユーザスクリプトを書きました。
DesignFeedDatabaseさんの迷惑になるといけませんので僕の作ったスクリプトは公開しませんが、Greasemonkeyでできることの紹介や、ユーザスクリプトを作るうえでのヒントになればと思い記事にします。前置きが長くてすみません。
(続きを読む…)

  1. もちろんサービス全体をみれば有益なサイトなんですけどね []
  2. 元記事へのピュアなurlも取得できるんですが、DesignFeedDatabaseさんのサイト運営に悪影響あるといけませんし最低限のマナーとしてhttp://feed.designlinkdatabase.net/feed/redirect.aspx?url=%url%をそのまま利用しました。おそらくリンクを踏んだ数をカウントしたりすると思いますし []
Written by suzukenn in: 記事 | タグ: , ,
12月
24
2008
2

[CakePHP]OpenFlashChartを組み込む
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

概要

社内システムの売上管理でグラフを表示させたいと思って、PHPで使えるライブラリを探していたところ、

以上の2つが候補にあがりました。

どちらかといえばpChartの方が扱いが簡単そうだったので第一候補にあげていたのですが、どうやらPHP4専用のようで…orz
結局第2候補のOpenFlashChart(以下OFC)を使うことにしました。
結論から言うと、OFCにして大正解

よくよく調べるとOFCにはCakePHPのヘルパーがあったり、そのおかげで扱いも非常に簡単だったり、思った以上にスタイリッシュでかっこよかったり*1 と、pChartがPHP4専用でよかったです。ほんと。

導入に際しては結構手間取った部分もありましたのでここにメモとして残しておきたいと思います*2

導入方法

ファイルを設置

まずは本体をこちらからダウンロード
ここで注意して欲しいのは最新版*3 の1.9.7は「open-flash-chart.php」が後述するFlashChartヘルパーの形式に合いませんのでそのままでは使えません。*4 ですので、オススメは1.9.6を使うこと。
1.9.6のopen-flash-chart.phpならそのまま使えます。
それでも最新版を使いたいという方はご自分で研究してください。ここらへんに情報があります*5

ダウンロードしたファイルを解凍したら、
open-flash-chart.swfを/app/webrootへコピー。
/php-ofc-library/open-flash-chart.phpを/app/vendors*6 コピー。
で、本家の記載には無いのですがコメント欄に書かれているjsファイルもコピーする必要があるので、
/js/swfobject.jsを/app/webroot/jsにコピーしてください。

次にこちらからヘルパーをダウンロードしましょう。
でダウンロードした「flash_chart.php」を/app/views/helpersへ設置。

これでファイルの設置は完了です。

ヘルパーをちょっと手直し

このまま後述するソースで表示できそうなもんですが、実はうまくいきません。
というのも、ヘルパーからgraphクラスのrenderメソッドを呼ぶときに$output_typeを指定していないので、swfobject.jsが呼ばれずに渡すはずのパラメータが表示されてしまうようなんですね。ちゃんと調べたわけではないのでテキトーに言ってるんですがね。

$output_typeに”js”を指定してあげれば良いだけなので、ヘルパーのrenderメソッドの以下を修正してください。

return $this->graph->render();
// を下記に修正↓
return $this->graph->render("js");

これでちゃんとスクリプトが呼ばれるようになりますよと。

実際に使ってみる

こちらのサンプルソースを参考に書くだけです。
説明の必要も無いとは思いますが、

  1. pagesコントローラで
    var $helpers = array("FlashChart");
    

    の記述を追加。
    ※pagesコントローラなんてねーよって人は、自分の勉強不足を猛省しつつappControllerにでも書いてください。これもわからないという方はCakePHPを初めから勉強しなおしてください。PHPも。あとオブジェクト指向とか。

  2. /app/views/pages/charts.ctpを作成してサンプルソースをコピペ。
    <?php
    // Sets height and width
    $flashChart->begin(400, 250);
    // Title
    $flashChart->title('Example 1 - Bars: Hits per Day');
    // Configure Grid style and legends
    $flashChart->configureGrid(
    array(
    'x_axis' => array(
    'step' => 1,
    'legend' => 'Day'
    ),
    'y_axis' => array(
    'legend' => '#Hits',
    )
    )
    );
    // Prepare some random data (10 points)
    $random_hits = array();
    for ($i=0; $i < 10; $i++) {
    $random_hits[] = rand(10,100);
    }
    // Register each data set with its information.
    $data = array(
    'Hits' => array(
    'color' => '#afe342',
    'font_size' => 11,
    'data' => $random_hits,
    'graph_style' => 'bar',
    )
    );
    $flashChart->setData($data);
    
    // Set Ranges in the chart
    $flashChart->setRange('y', 0, 100);
    $flashChart->setRange('x', 0, 10);
    
    // Show the graph
    echo $flashChart->render();
    ?>
    
  3. http://%url%/pages/charts.ctpにアクセスしてグラフが表示されてるはず。

どうですか?できました?

あとは普段どおりにコントローラからグラフに使うデータを配列で渡してあげて、それをグラフにセットしてやればデータベースのデータなどを簡単にグラフにできますよ。
あと、豆知識ですが、

// Register each data set with its information.
$data = array(
'Hits' => array(
'color' => '#afe342',
'font_size' => 11,
'data' => $random_hits,
'graph_style' => 'bar',
)
);

この部分の$data['Hits']を$data['ヒット数']とすると上の項目ラベルを日本語で表示できますよ。
もちろん配列の添え字*7 に日本語を使うわけなんで環境によってはやばいことがあるかもしれませんが、僕知らねーと。とりあえずうちの環境じゃバッチリ使えちゃってます。

参考

学生起業~池袋で働く学生社長のBlog~:CakePHPでopen flash chart – livedoor Blog(ブログ)
ヘルパーの存在を知ることができ、とっても助かりました。ありがとうございます!

teethgrinder
Thank you for Mr. John Glazebrook. It helped very much thanks to your work!

  1. これ重要 []
  2. 恐らくこの記事、このブログではかなり良記事になる予感 :-) []
  3. 20081224時点 []
  4. ヘルパーの形式に合わないというよりは、ファイルが細かく分かれててそれをopen-flash-chart.phpからincludeして使ってるので色々いじらないとそのまま使えないのですよ。 []
  5. 僕って親切 :-) []
  6. ルートのvendorsでもいいですが []
  7. 添え字っていうんでしたよね?忘れちゃったよもう。 []
Written by suzukenn in: 記事 | タグ: , ,
12月
22
2008
0

[メモ]Googleのチートシート
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

今まで知りませんでした。

Google Help : Cheat Sheet

あったら便利だろうなぁと思ってたけどあったんですね。

ネタ元は知っておくと便利なGoogle電卓の小技いろいろ | IDEA*IDEAさんです。またもや。
じゃ仕事に戻ります。明日も仕事だ :-)

Written by suzukenn in: メモ | タグ:
12月
22
2008
0

[日記]ベーコンつけてみた
このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

このブログにベーコンをつけてみました。

Bacolicio.us ~Mmmm, Bacon~

ネタ元:好きなサイトにベーコンをつけられる『Bacolicio.us』 | IDEA*IDEA

百式のtaguchiさんはよくまあこんなにたくさんのネタを見つけてきますよね。スゴイと思います。
個人でやってるほぼ日みたいなあのクォリティー。いつ寝てるんだろ?
毎日楽しいネタに楽しませていただいてます。Thanks&Respectsです。

追記

Cake使いの方はCakePHP修行! アーカイブ | IDEA*IDEAがすごく参考になりますよ。
青い人との掛け合いは必見です。

Written by suzukenn in: 日記 | タグ: ,

| I have been indebted to Aeros Theme. | Background image owner is NASA.