<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>javascript / Drkcore</title><link>http://blog.kzfmix.com/javascript</link><description>Programming, Music, Snowboarding</description><language>ja</language><lastBuildDate>Tue, 05 Jun 2018 01:22:29 +0919</lastBuildDate><item><title>Interactive Data Visualization for the Web</title><link>http://blog.kzfmix.com/entry/1364598947</link><description>&lt;p&gt;5年前の本の書評のドラフト。&lt;/p&gt;
&lt;p&gt;なんも書いてないけどこの本は良かった。&lt;/p&gt;
&lt;iframe width="560" height="315" src="http://www.youtube.com/embed/yECYJbTwlWk" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/1449339735/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/516hDXg7AjL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Interactive Data Visualization for the Web&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    Scott Murray&lt;br /&gt;
    Oreilly &amp; Associates Inc / 2997円 ( 2013-04-02 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;</description><pubDate>Tue, 05 Jun 2018 01:22:29 +0919</pubDate><category>javascript</category><category>d3.js</category></item><item><title>AngularJSなかなか面白い</title><link>http://blog.kzfmix.com/entry/1402663867</link><description>&lt;p&gt;&lt;a href="https://docs.angularjs.org/tutorial"&gt;AngularJSのチュートリアル&lt;/a&gt;をやって、&lt;a href="http://js.studio-kingdom.com/angularjs/guide"&gt;日本語リファレンス&lt;/a&gt;を読んでいた。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/tomof"&gt;@tomof&lt;/a&gt;エライ！&lt;/p&gt;
&lt;p&gt;あとは&lt;a href="http://todomvc.com/architecture-examples/angularjs/#/"&gt;todoサンプルコード&lt;/a&gt;でも読んだら、なんか作ってみる。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://campus.codeschool.com/courses/shaping-up-with-angular-js/intro"&gt;Learn to build an application using Angular.js&lt;/a&gt;というのもあって結構力入れてるなぁと思った。&lt;/p&gt;</description><pubDate>Sat, 14 Jun 2014 17:36:31 +0919</pubDate><category>javascript</category></item><item><title>AngularJSを使ってみようかと思う</title><link>http://blog.kzfmix.com/entry/1402486345</link><description>&lt;p&gt;&lt;a href="http://atnd.org/events/52272"&gt;来週末vue.jsのもくもく会が静岡であるのね&lt;/a&gt;と、&lt;a href="http://vuejs.org/"&gt;vue.js&lt;/a&gt;の調べ物をしていたはずがいつの間にかAngularJSのサンプルコードを読んだりしていたｗ&lt;/p&gt;
&lt;p&gt;また、仕事の関係でちょっと&lt;a href="http://arshaw.com/fullcalendar/"&gt;FullCalendar&lt;/a&gt;を扱う案件を手がけようとしていて、&lt;strong&gt;立派なスパゲッティ職人になろうか悩んでいた(jQuery的に)&lt;/strong&gt;となっていたという事情もあり、おもむろに「FullCalendar AngularJS」でググったら&lt;a href="http://angular-ui.github.io/ui-calendar/"&gt;UI Calendar&lt;/a&gt;を発見したので、明日からスパゲッティ職の内定は辞退してAngular使いを目指すことになりました。&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/4873116678/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/515Z%2BlXDi4L._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;AngularJSアプリケーション開発ガイド&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    Brad Green&lt;br /&gt;
    オライリージャパン / 2592円 ( 2014-04-18 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&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/B00DCKF4OC/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/61FiE64rW%2BL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;キユーピー あえるパスタソース6種 [カルボナーラ1袋(2食入)、たらこ1袋(2食入)、ミートソース フォン・ド・ヴォー1袋(2食入)、バジル1袋(2食入)、ツナマヨ1袋(2食入)、きのこの醤油バター1袋(2食入)]&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    &lt;br /&gt;
    キユーピー / 1459円 ( 2013-07-20 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;</description><pubDate>Wed, 11 Jun 2014 20:36:51 +0919</pubDate><category>javascript</category></item><item><title>PythonScriptでHandlebarsを扱う</title><link>http://blog.kzfmix.com/entry/1369997428</link><description>&lt;p&gt;PythonScriptでhtmlテンプレートを使いたいなぁと思ったので&lt;a href="http://handlebarsjs.com/"&gt;Handlebars&lt;/a&gt;を使ってみた。&lt;/p&gt;
&lt;p&gt;&lt;img alt="pythonscript with handlebars" src="http://www.kzfmix.com/images/blog/pythonscript_hb.png" /&gt;&lt;/p&gt;
&lt;h4&gt;index.jade&lt;/h4&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nn"&gt;!!! 5&lt;/span&gt;
&lt;span class="nt"&gt;html&lt;/span&gt;
  &lt;span class="nt"&gt;head&lt;/span&gt;
    &lt;span class="nt"&gt;meta&lt;/span&gt;(&lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;utf-8&amp;#39;&lt;/span&gt;)
    &lt;span class="nt"&gt;meta&lt;/span&gt;(&lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;viewport&amp;#39;&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;width=device-width&amp;#39;&lt;/span&gt;)
    &lt;span class="nt"&gt;title&lt;/span&gt; Handlebars demo
    &lt;span class="nt"&gt;link&lt;/span&gt;(&lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;stylesheet&amp;#39;&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;stylesheets/app.css&amp;#39;&lt;/span&gt;)
    &lt;span class="nt"&gt;script&lt;/span&gt;(&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;javascripts/vendor/custom.modernizr.js&amp;#39;&lt;/span&gt;)
  &lt;span class="nt"&gt;body&lt;/span&gt;
    &lt;span class="nc"&gt;.row&lt;/span&gt;
      &lt;span class="nc"&gt;.large-12&lt;/span&gt;
        &lt;span class="nt"&gt;h2&lt;/span&gt; PythonScript with Handlebars
        &lt;span class="nt"&gt;hr&lt;/span&gt;
    &lt;span class="nt"&gt;script&lt;/span&gt;(&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;javascripts/jquery.js&amp;#39;&lt;/span&gt;)
    &lt;span class="nt"&gt;script&lt;/span&gt;(&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;javascripts/handlebars.js&amp;#39;&lt;/span&gt;)
    &lt;span class="nt"&gt;script&lt;/span&gt;(&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;javascripts/pythonscript.js&amp;#39;&lt;/span&gt;)
    &lt;span class="nt"&gt;script&lt;/span&gt;(&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;javascripts/jquery.py.js&amp;#39;&lt;/span&gt;)
    &lt;span class="nt"&gt;script&lt;/span&gt;(&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;javascripts/app.py.js&amp;#39;&lt;/span&gt;)
    &lt;span class="nt"&gt;script&lt;/span&gt;(&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;javascripts/foundation/foundation.js&amp;#39;&lt;/span&gt;)
    &lt;span class="nt"&gt;script&lt;/span&gt;
      &lt;span class="err"&gt;$(&lt;/span&gt;&lt;span class="nt"&gt;document&lt;/span&gt;).foundation();
&lt;/pre&gt;&lt;/div&gt;


&lt;h4&gt;app.py&lt;/h4&gt;
&lt;p&gt;テンプレートをhtmlのscriptから取れなかったのでベタ書きした。あと",'の扱いが0.7.4でおかしくなってる。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;source&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;&amp;lt;h3&amp;gt;{{title}}&amp;lt;/h3&amp;gt;&amp;lt;div&amp;gt;{{body}}&amp;lt;/div&amp;gt;&amp;quot;&lt;/span&gt;

&lt;span class="n"&gt;template&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="n"&gt;JS&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Handlebars.compile(source)&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;ひげひげひげ&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;body&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;セクシーコマンドー外伝&amp;quot;&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;JS&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;template({title:title,body:body})&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;J&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;body .row &amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&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;/pre&gt;&lt;/div&gt;


&lt;p&gt;ちょっと試した感じではラップすればjavascriptを意識せずに使えそう。scriptタグでテンプレートが読み込めない問題は困るが。&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/B00005HSBR/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/51KVW88VWBL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;セクシーコマンド外伝 すごいよ!!マサルさん(1) [DVD]&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    &lt;br /&gt;
    バンダイビジュアル / 3243円 ( 2001-01-25 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;</description><pubDate>Fri, 31 May 2013 20:07:57 +0919</pubDate><category>Python</category><category>javascript</category></item><item><title>Hakuin: PythonのフロントエンドM(VC)フレームワーク</title><link>http://blog.kzfmix.com/entry/1369773226</link><description>&lt;p&gt;ぼくも&lt;a href="https://github.com/glassesfactory/Shimehari"&gt;日本酒にちなんだフレームワーク&lt;/a&gt;をつくりたいなーと思っていたので、Zen of PythonScriptでSpineインスパイアなHakuinというPythonのフロントエンドM(VC)フレームワークを作って遊んでいる(韻を踏むかは個人的に超重要)。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/kzfm/PythonScript/tree/master/demo/hakuintodo"&gt;hakuintodo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="hakuin" src="http://www.kzfmix.com/images/blog/hakuintodo130529.png" /&gt;&lt;/p&gt;
&lt;p&gt;ちなみに0.6.1では動くけれど0.7.4では動かないので、これから対応していく。今のとこ&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;クラスメソッドがうまくうごかない&lt;/li&gt;
&lt;li&gt;シングルトンの作り方がわからないのでグローバル&lt;/li&gt;
&lt;li&gt;e.preventdefault()が使えない&lt;/li&gt;
&lt;li&gt;importのやり方がわからないので、とりあえずベタ書き&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;というあたりの制約があるため、ほぼ100%トイプログラミングなのだけどtodoくらいなら動く。それから上記1番目の理由でSpineインスパイアなのにCollectionモデルを取り入れている。&lt;/p&gt;
&lt;p&gt;次回の&lt;a href="http://atnd.org/events/39773"&gt;Shizuoka.py&lt;/a&gt;で話す予定&lt;/p&gt;
&lt;p&gt;以下の日本語注釈付きソースは参考になった。backbone.jsのほうは次回の&lt;a href="http://talknote.me/vol8/news/entry-369.html"&gt;「TalkNote × Frontrend（フロントレンド）」&lt;/a&gt;の演者の人が管理されているようなので、興味があれば参加するといいと思う。個人的にはSASS/Compassのセッションが超気になるんだけど、吉原祇園祭と被っているのでかなり参加は厳しい。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.kzfmix.com/spine/spine.html"&gt;Spineの注釈付きソースコード&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/enja-oss/Backbone/blob/master/backbone.js"&gt;Backbone.jsの注釈付きソースコード&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;そして白隠正宗ではなく臥龍梅を飲み始めた。この純米吟醸まじ美味い。緑のラベルの超辛口ってのもあったんだけど、酒屋の奥さんのすすめの通り赤いラベルが正解だな。(さらに奥さん情報によると袋しぼりがメチャウマだったらしいんだけど、売り切れたらしい。)&lt;/p&gt;
&lt;p&gt;&lt;img alt="1369817478" src="http://www.kzfmix.com/images/blog/1369817478.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;そのうち&lt;a href="http://konyaonsen.com/meisyukan.html"&gt;こんや銘酒館&lt;/a&gt;で日本酒を飲みながら、日本酒フレームワークハッカソンでもやりたい。&lt;/p&gt;</description><pubDate>Wed, 29 May 2013 18:17:49 +0919</pubDate><category>Python</category><category>javascript</category></item><item><title>PythonScriptのクラスシステムを読んでみた</title><link>http://blog.kzfmix.com/entry/1368911454</link><description>&lt;p&gt;&lt;a href="http://apppyjs.appspot.com/"&gt;PythonScript&lt;/a&gt;ではクラスがどういうjavascriptにトランスレートされるのか気になったので。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;C&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;

&lt;span class="n"&gt;c1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;C&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;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;c2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;C&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;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="n"&gt;c1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;これは以下のjavascriptに変換される&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nx"&gt;C&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{};&lt;/span&gt;
&lt;span class="nx"&gt;parents&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;create_array&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;C____init__&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;signature&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;kwargs&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{},&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;args&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;create_array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;self&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;x&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;y&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)};&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;arguments&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;get_arguments&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;signature&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;self&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;arguments&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;self&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;arguments&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;x&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;arguments&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;y&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="nx"&gt;set_attribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;x&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;set_attribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;y&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;C&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;__init__&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;C____init__&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;C&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;create_class&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;C&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;parents&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;C&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;c1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;get_attribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;C&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;__call__&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="nx"&gt;create_array&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;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;{});&lt;/span&gt;
&lt;span class="nx"&gt;c2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;get_attribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;C&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;__call__&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="nx"&gt;create_array&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;4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;{});&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;get_attribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;c1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;x&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nx"&gt;get_attribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;c2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;y&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;create_array, get_arguments, create_class, get_attribute, set_attributeはpythonscript.jsのほうに定義されている。create_classは次のように定義されている&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;create_class&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;class_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;parents&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;attrs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;attrs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;__metaclass__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;metaclass&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nx"&gt;metaclass&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;attrs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;__metaclass__&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nx"&gt;attrs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;__metaclass__&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;metaclass&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="nx"&gt;class_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;parents&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;attrs&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;klass&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;klass&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{};&lt;/span&gt;
    &lt;span class="nx"&gt;klass&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bases&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;parents&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;klass&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;class_name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;klass&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;__dict__&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;attrs&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;__call__&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;object&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nx"&gt;object&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{};&lt;/span&gt;
        &lt;span class="nx"&gt;object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;__class__&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;klass&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nx"&gt;object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;__dict__&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{};&lt;/span&gt;
        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;init&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nx"&gt;init&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;get_attribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;object&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;__init__&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;init&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;init&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;apply&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;arguments&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;object&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nx"&gt;klass&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;__call__&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;__call__&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;klass&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;</description><pubDate>Sun, 19 May 2013 06:33:06 +0919</pubDate><category>Python</category><category>javascript</category></item><item><title>D3をはじめようを快適に写経するためにlivereloadを使って更新時にブラウザをリロードする</title><link>http://blog.kzfmix.com/entry/1364599688</link><description>&lt;p&gt;日本語の入門書は&lt;a href="http://www.oreilly.co.jp/books/9784873115979/"&gt;D3をはじめよう&lt;/a&gt;があるけど、ほんのさわりだけなので、日本語の簡単なチュートリアルが読みたいというヒト以外には積極的に読む必要性を感じないかな。ただ、あのイディオム(selectAll().data().enter()ってやつ)とメソッドチェインに慣れてないのだったら読んだほうがいいのかなぁ。日本語のほうがわかりやすいしなぁ。&lt;/p&gt;
&lt;p&gt;ちゃんと読むつもりならInteractive Data Visualization for the Webのほうが良いと思う(まだ書評かいてないけど)。&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/1449339735/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/516hDXg7AjL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Interactive Data Visualization for the Web&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    Scott Murray&lt;br /&gt;
    Oreilly &amp; Associates Inc / 2997円 ( 2013-04-02 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;javascriptを書き写すだけなのはつまらなかったのでcoffeescriptで書いたのと、coffee --watchだとコンパイル時にブラウザリロードしないので&lt;a href="http://blog.kzfmix.com/entry/1362998788"&gt;livereload&lt;/a&gt;を使った。&lt;/p&gt;
&lt;p&gt;Guardfileはこんな感じ。更新されたファイル名をfuncに渡せないのでハードコードしている。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/usr/bin/env python&lt;/span&gt;

&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;livereload.task&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;logging&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;coffee&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;subprocess&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Popen&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;PIPE&lt;/span&gt;
    &lt;span class="n"&gt;argv&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;/Users/kzfm/.nvm/v0.8.10/bin/coffee&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;-c&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;-m&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;js/mean.coffee&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Popen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;stdin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;PIPE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;stdout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;PIPE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;stderr&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;PIPE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;stdout&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;stderr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;communicate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;stderr&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;logging&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;stderr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;Task&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;js/mean.coffee&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;coffee&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="livereload_coffee" src="http://www.kzfmix.com/images/blog/livereload_coffee.png" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blog.kzfmix.com/entry/1362998788"&gt;LiveReload(Python)で更新検知させてCompassでコンパイル、ついでにブラウザもリロードする&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.kzfmix.com/entry/1362687732"&gt;CoffeeScriptでSourceMapを使うとデバッグがかなりラクになるかも&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.kzfmix.com/entry/1334315825"&gt;CoffeeLintでflymakeするように設定した&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Tue, 02 Apr 2013 20:24:31 +0919</pubDate><category>javascript</category><category>coffeescript</category><category>d3.js</category></item><item><title>CoffeeScriptでSourceMapを使うとデバッグがかなりラクになるかも</title><link>http://blog.kzfmix.com/entry/1362687732</link><description>&lt;p&gt;つい先日にリリースされた&lt;a href="https://github.com/jashkenas/coffee-script/compare/1.5.0...1.6.1"&gt;coffeescript-1.6.1&lt;/a&gt;からSourceMapがサポートされたので早速使っているけど、デベロッパーツールでcoffeescriptのソース上にエラーが表示されるのでかなり便利。&lt;/p&gt;
&lt;p&gt;&lt;img alt="sourcemap" src="http://www.kzfmix.com/images/blog/coffee_sourcemap3.png" /&gt;&lt;/p&gt;
&lt;h3&gt;Chromeの設定&lt;/h3&gt;
&lt;p&gt;デベロッパーツールのギアアイコンをクリックすると設定画面が出るので「Enable souce maps」にチェックを入れる。&lt;/p&gt;
&lt;p&gt;&lt;img alt="sourcemap" src="http://www.kzfmix.com/images/blog/coffee_sourcemap2.png" /&gt;&lt;/p&gt;
&lt;h3&gt;coffeescriptでmapファイルを出力する&lt;/h3&gt;
&lt;p&gt;コンパイルするときに-mオプションを渡すと、.jsファイルの他に.mapが作成されるのでsoucemap対応のブラウザで読めばいい。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;coffee -c -m sample.coffee
&lt;/pre&gt;&lt;/div&gt;


&lt;h3&gt;まとめ&lt;/h3&gt;
&lt;p&gt;これから&lt;a href="http://raphaeljs.com/"&gt;raphael&lt;/a&gt;使う予定なのでcoffeescriptの開発環境が改善されるのは素敵だ。&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/4798125997/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/417zJnV-ydL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;CoffeeScriptファーストガイド モダンJavaScriptによるアプリケーション開発 (NEXTーONE)&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    飯塚 直&lt;br /&gt;
    翔泳社 / 2940円 ( 2012-05-26 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;</description><pubDate>Fri, 08 Mar 2013 05:34:50 +0919</pubDate><category>javascript</category><category>coffeescript</category></item><item><title>Nodeクックブック</title><link>http://blog.kzfmix.com/entry/1361792041</link><description>&lt;p&gt;一応クックブックという体裁をとっているんだけど、ストーリー性があるし、細かい点はミニレシピという形で記述されているので、&lt;strong&gt;ノードでサーバー立ててプロダクションまでもっていく&lt;/strong&gt;というような内容になっている。もちろんクックブックなのでNodeの基礎的な事柄は知っているという前提。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1361792675" src="http://www.kzfmix.com/images/blog/1361792675.jpg" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;本書は、Node.jsを使っての簡単なWebサーバの構築にはじまり、Webアプリケーションやコマンドラインアプリケーションの構築、そして自作Nodeモジュールの開発までをスムーズに学習できるように構成しています。
MySQLやMongoDB、CouchDB、Redisといった各種データベースとのインタフェイスや、WebSocketの組み込み方、SMTPなどのプロトコルとのインタフェイスといった基本的な事項を学びます。
さらにデータストリームの処理方法やセキュリティを考慮した実装、そして開発したアプリケーションを本番環境で動作させるまでのさまざまなレシピを掲載しています。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Expressでウェブサービスを作りたいのであれば買いだと思う。Node.jsだけでウェブサーバーを実装する方法(1,2章)は丁寧に解説されていてわかり易かったし、4章のデータベース接続もMySQL,MongoDB,Couch,Redisの説明がひと通りされているし、5章ではwebsocketも軽く触れられいてる（今は開発の止まっているnowjsも）。&lt;/p&gt;
&lt;p&gt;やはり6,7章のExpressとセキュリティの話題が一番おもしろくて、どういったあたりに気を使えばいいのかが丁寧に解説されていて良かった。&lt;/p&gt;
&lt;p&gt;いまメインで使っているFlaskでなぜかセッションが入れ替わるという問題を解決できなくて悩んでいるので、次にサービス作るんだったら　Expressでもいいかなぁと思い始めている。YesodとかSnapという選択肢もあるんだけど、Stylus+nibとかSass+Compassみたいなフレームワーク使いたいので悩んでいる。&lt;/p&gt;
&lt;p&gt;LESSというよりbootstrapは乗っかっている時にはスイスイ進むんだけど流儀から外れることをやろうとすると途端に牙をむく感じだしなぁ。CSSとかHTMLのフレームワークはRoRみたいなWAFと違ってすぐに手を入れたくなるだろうから、あんまりフルスタックすぎるのもどうなのかなぁと思ったりもする。いじるのが前提でミニマルで拡張しやすいほうがいいんじゃないかなぁと。&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/4873116066/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/51mlvcBMKgL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Nodeクックブック&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    David Mark Clements&lt;br /&gt;
    オライリージャパン / 3570円 ( 2013-02-23 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;ちなみに9章のテストの話はいまいちだった。今読んでいるtestable javascriptのほうが楽しい。&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/1449323391/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/513n5xMP8IL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Testable JavaScript&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    Mark Ethan Trostler&lt;br /&gt;
    Oreilly &amp; Associates Inc / 2640円 ( 2013-01-31 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;</description><pubDate>Tue, 26 Feb 2013 05:52:54 +0919</pubDate><category>javascript</category></item><item><title>PhantomJSでスクレイピングするのがいいのかわるいのか？</title><link>http://blog.kzfmix.com/entry/1361090065</link><description>&lt;p&gt;&lt;a href="http://phantomjs.org/"&gt;PhantomJS&lt;/a&gt;を触ってみたけど、スクレイピングというか自動化するなら&lt;a href="http://search.cpan.org/perldoc?WWW::Mechanize::Firefox"&gt;WWW::Mechanize::Firefox&lt;/a&gt;のが使いやすいなぁと思った。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://casperjs.org/"&gt;CasperJS&lt;/a&gt;を使うのがよさそうなんだけど、node.jsから使えないしなぁ。&lt;/p&gt;
&lt;p&gt;例えばデータベースからurlリストを引っ張ってきて次々にアクセスしたいといった用途の場合、PhantomJSだったら&lt;a href="https://github.com/sgentle/phantomjs-node"&gt;phantomjs-node&lt;/a&gt;を使うらしいんだけどCasperJSはそういうことができるんだろうか？&lt;/p&gt;
&lt;p&gt;と思って&lt;a href="http://stackoverflow.com/questions/9459097/how-to-use-casperjs-in-node-js"&gt;調べた&lt;/a&gt;ら、&lt;a href="https://github.com/WaterfallEngineering/SpookyJS"&gt;SpookyJS&lt;/a&gt;というものを見つけたんだが、PhantomJSが1.8からwebdriverをサポートするようになったからそっち使えみたいな感じになっている。&lt;/p&gt;
&lt;p&gt;結局&lt;a href="http://pypi.python.org/pypi/selenium"&gt;pythonでselenium&lt;/a&gt;使うのが正解なのか？&lt;/p&gt;
&lt;p&gt;ていうかseleniumでいいじゃんみたいな気分になっている。&lt;/p&gt;</description><pubDate>Sun, 17 Feb 2013 17:37:09 +0919</pubDate><category>Python</category><category>javascript</category></item></channel></rss>