<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>ajax / Drkcore</title><link>http://blog.kzfmix.com/ajax</link><description>Programming, Music, Snowboarding</description><language>ja</language><lastBuildDate>Tue, 29 May 2007 20:19:45 +0919</lastBuildDate><item><title>Ajaxデザインパターン</title><link>http://blog.kzfmix.com/entry/1180437585</link><description>&lt;p&gt;見渡すにはいい感じの本だった。&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873113237/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/41tEcLQDdOL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Ajaxデザインパターン ―ユーザビリティと開発効率の向上のために&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    Michael Mahemoff&lt;br /&gt;
    オライリー・ジャパン / 5040円 ( 2007-05-15 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;Ajaxというよりは、ユーザビリティのデザインパターン的。それをAjaxで実装するためのヒントみたいな。&lt;/p&gt;
&lt;p&gt;後半テストとかデバッグとかの話だけどここらへんはだれちゃった。&lt;/p&gt;
&lt;p&gt;UI指向だったらflex2とかいうアプローチもあるけど。&lt;/p&gt;</description><pubDate>Tue, 29 May 2007 20:19:45 +0919</pubDate><category>ajax</category></item><item><title>PlotKit+Ajaxでチャートを描画</title><link>http://blog.kzfmix.com/entry/1173965779</link><description>&lt;p&gt;&lt;a href="http://www.mochikit.com/"&gt;MochiKit&lt;/a&gt;のチャート描画ライブラリである&lt;a href="http://www.liquidx.net/plotkit/"&gt;PlotKit&lt;/a&gt;でヒストグラムを描かせてみた。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://del.icio.us/kzfm/Mochikit"&gt;del.icio.us - Mochikit&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ちょっとした折れ線チャートとかヒストグラム、パイチャートの類はPlotKit使うと便利そう(javascriptだけでできるし)。&lt;/p&gt;
&lt;p&gt;Ajaxで試したかったので、わざわざJSON形式でファイルを別に作成しておいて、非同期で読み込ませるようにした(data.json)。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="s"&gt;&amp;quot;name&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;sqrt&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s"&gt;&amp;quot;value&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;],[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;414&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;73&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;スクリプトはこんな感じで結構短い。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;  &lt;span class="n"&gt;function&lt;/span&gt; &lt;span class="n"&gt;plot_async&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;var&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;data.json&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;var&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;loadJSONDoc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;var&lt;/span&gt; &lt;span class="n"&gt;gotData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;var&lt;/span&gt; &lt;span class="n"&gt;layout&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Layout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;bar&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="n"&gt;layout&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;addDataset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="n"&gt;layout&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;evaluate&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="n"&gt;var&lt;/span&gt; &lt;span class="n"&gt;chart&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;SweetCanvasRenderer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vg"&gt;$(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;chart&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;layout&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;chart&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;render&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;  
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="n"&gt;var&lt;/span&gt; &lt;span class="n"&gt;dataFetchFailed&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="n"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;data not found&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;addCallbacks&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gotData&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dataFetchFailed&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;これで割と綺麗なグラフが作成される。&lt;/p&gt;
&lt;p&gt;&lt;img alt="plotkit" src="http://www.kzfmix.com/images/blosxom/plotkit_test.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/sample/plotkit.html"&gt;デモ&lt;/a&gt;も置いておく。&lt;/p&gt;
&lt;p&gt;フレームワークに組み込めば、お手軽にチャートが作成できそうな感じだ。&lt;/p&gt;</description><pubDate>Thu, 15 Mar 2007 22:36:19 +0919</pubDate><category>ajax</category><category>mochikit</category><category>plotkit</category><category>JSON</category></item><item><title>Lightboxを使ってみた</title><link>http://blog.kzfmix.com/entry/1152021366</link><description>&lt;p&gt;&lt;a href="http://www.huddletogether.com/projects/lightbox2/"&gt;Lightbox JS&lt;/a&gt;を触ってみた。やっぱいい感じ。でも右下にcloseのアイコンとか出るはずなのに出なかったりするのは、cssの設定が悪いのかな。&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/blosxom/3844.jpg" rel="lightbox[roadtrip]"&gt;&lt;img src="http://www.kzfmix.com/images/blosxom/3844_small.jpg" alt="yuki"/&gt;&lt;/a&gt;
&lt;a href="/images/blosxom/2296.jpg" rel="lightbox[roadtrip]"&gt;&lt;img src="http://www.kzfmix.com/images/blosxom/2296_small.jpg" alt="hana"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;lightbox用に小さい画像と、大きい画像（クリックしたときに表示される画像）の二つを用意しないといけないが、この作業を、いちち手でやるのは面倒だということで、&lt;a href="/Computer/W2K/dragperl060629.html"&gt;windowsでperlスクリプトを
ドラッグドロップ化&lt;/a&gt;したのでお手軽になった。でもユッキー様をあやしながら書いたのでスクリプトはやっつけ。名前考えるのが面倒というありがちな理由で、とりあえずプロセス番号がファイル名で且つCドライブに吐き出すようにしておいた。&lt;/p&gt;
&lt;blockquote class="terminal"&gt;
&lt;pre&gt;&lt;code&gt;use strict;
use Image::Magick;

### image size
my $width = 480;
my $height = 360;
my $width_small = 160;
my $height_small = 120;

my $imgfile = shift or die "couldn't read ImageFile\n"; 
$imgfile =~ /\\(\w+).(jpg|JPG)$/;
my $filename = $1;

### output
#my $output = "C:/" . $filename .".jpg";
#my $output_small = "C:/" . $filename ."_small.jpg";
my $output = "C:/".$$.".jpg";
my $output_small = "C:/".$$."_small.jpg";

my $image = Image::Magick-&gt;new;
$image-&gt;Read($imgfile);
$image-&gt;Resize(width=&gt;$width, height=&gt;$height, blur=&gt;0.8);
$image-&gt;Set(quality=&gt;60);
$image-&gt;Write($output);

$image-&gt;Resize(width=&gt;$width_small, height=&gt;$height_small);
$image-&gt;Write($output_small);

undef $image;
exit;

&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;ちなみに、Image::Magickモジュールのインストールは楽だった。imagemagickをインストールする際に「perlでモジュールとして使う」にチェックを入れるだけ。&lt;/p&gt;
&lt;p&gt;実際は、もうちょっとちゃんと書いて、サーバーにftpしつつ、アップロードした画像をlightboxで扱うためのhtmlを吐き出すコードまで書いておけば申し分ないな。&lt;/p&gt;
&lt;p&gt;いつも使っている画像アップロード用CGIをいじるという選択肢もあったんだけど、ドロップレット風味で実用っぽいものをひとつくらい作ってみたかったので今回はWindowsプログラミング。&lt;/p&gt;
&lt;p&gt;他には実際にやってみて思ったのは、縮小画像を載せるんじゃなくて画像を切り取りつつ、小さくしたものをアイコン的に表示させておくほうがいいなと思った。単なる拡大縮小じゃつまらん。とか考えると、gimp使ったほうがいいのか？&lt;/p&gt;
&lt;p&gt;いやいや、これを敢えてCGI+javascriptでやるべきでしょう&lt;/p&gt;
&lt;p&gt;みたいな禅問答のはじまりだ。手段が目的化しつつあることにはうすうす気付いているけどネ。&lt;/p&gt;</description><pubDate>Tue, 04 Jul 2006 22:56:06 +0919</pubDate><category>perl</category><category>ajax</category><category>lightbox</category></item><item><title>AjaxとREST</title><link>http://blog.kzfmix.com/entry/1133919079</link><description>&lt;p&gt;&lt;a href="http://www.rubycolor.org/takahashi/xmldevday8/img0.html"&gt;AjaxによるRESTへの影響&lt;/a&gt;は勉強になることが多かった。特にRESTのあたり。&lt;/p&gt;</description><pubDate>Wed, 07 Dec 2005 10:31:19 +0919</pubDate><category>ajax</category><category>rest</category></item></channel></rss>