<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ruby &#8211; Mach3.laBlog</title>
	<atom:link href="https://blog.mach3.jp/tag/ruby/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.mach3.jp</link>
	<description></description>
	<lastBuildDate>Wed, 29 Dec 2010 08:46:00 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>2010年に出会った愛すべきリソース達*11</title>
		<link>https://blog.mach3.jp/2010/12/29/lovely-resources-2010.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Wed, 29 Dec 2010 08:46:00 +0000</pubDate>
				<category><![CDATA[WebClip]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Library]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Resources]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Yahoo]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=1284</guid>

					<description><![CDATA[2010年も残りわずか。CS5やらHTML5やらiナントカやら忙しい1年でしたが、 せっかくなので今年出会った素晴らしいリソースを振り返ってみます。 @anywhere Welcome to @Anywhere &#124; de [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>2010年も残りわずか。CS5やらHTML5やらiナントカやら忙しい1年でしたが、<br />
せっかくなので今年出会った素晴らしいリソースを振り返ってみます。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh3.ggpht.com/_JJkNs5Ixl70/TRrzte8LnJI/AAAAAAAABH4/5TZJ_Ar76fI/201012291739.png" alt="Great Resources 2010"/></figure>



<p></p>



<span id="more-1284"></span>



<h2 class="wp-block-heading">@anywhere</h2>



<figure class="wp-block-image"><img decoding="async" src="http://lh3.ggpht.com/_JJkNs5Ixl70/TI-FvKGTMFI/AAAAAAAABB4/DWq3p5mDXQM/201009142322.png" alt="@anywhere"/></figure>



<p></p>



<h3 class="wp-block-heading"><a href="http://dev.twitter.com/anywhere">Welcome to @Anywhere | dev.twitter.com</a></h3>



<p>Twitterの機能がどのサイトでも活用出来るようになるJavaScriptリソース。<br />
認証からタイムライン読み込み、パーツのレンダリングまで。<br />
連携サービスを組むならおさえておきたい。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li><a href="/2010/04/twitter-anywhere.html">ブログで@anywhereを試してみた！ ～ どこでもTwitter | Mach3.laBlog</a></li>



<li><a href="/2010/09/auth-anywhere.html">@anywhereで認証してみる備忘録 | Mach3.laBlog</a></li>
</ul>
</blockquote>



<h2 class="wp-block-heading">jsLint</h2>



<figure class="wp-block-image"><img decoding="async" src="http://lh4.ggpht.com/_JJkNs5Ixl70/TAuiwlC67MI/AAAAAAAAA7k/f0V7_v6GCEM/s800/201006062143.png" alt="jsLint"/></figure>



<p></p>



<h3 class="wp-block-heading"><a href="http://www.jslint.com/">JSLint, The JavaScript Code Quality Tool</a></h3>



<p>JavaScriptをストリクトに書く為のチェックツール。<br />
前はWSH版がダウンロード出来たんですけど見つからなくなってますね。<br />
<a href="https://github.com/douglascrockford/JSLint">Github</a>のを使ってなんやかんやするんでしょうか。こんど試してみよう。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li><a href="/2010/06/jslint.html">JSLintでストリクトなJavaScriptを書く | Mach3.laBlog</a></li>
</ul>
</blockquote>



<h2 class="wp-block-heading">LESS</h2>



<figure class="wp-block-image"><img decoding="async" src="http://lh5.ggpht.com/_JJkNs5Ixl70/TC9OtbZAqRI/AAAAAAAAA9c/UGfbYnLsdWc/s800/201007032351.png" alt="LESS"/></figure>



<p></p>



<h3 class="wp-block-heading"><a href="http://lesscss.org/">LESS &#8211; Leaner CSS</a></h3>



<p>変数に代入したり、ネストしたり、ミックスインしたり…<br />
CSSコーディングが素晴らしくスピードアップするCSS開発キット。<br />
エディタからも簡単に呼び出せるので重宝しています。<br />
似たようなプロジェクトに「<a href="http://sass-lang.com/">Sass</a>」というのもあります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li><a href="/2010/07/less-on-ruby-windows.html">ゼロから導入する、Ruby LESS for Windows ～素晴らしいCSSソリューション | Mach3.laBlog</a></li>



<li><a href="/2010/08/css3-snippet-for-less.html">CSS3対応の為のLESSスニペットメモ | Mach3.laBlog</a></li>
</ul>
</blockquote>



<h2 class="wp-block-heading">jsDoc Toolkit</h2>



<figure class="wp-block-image"><img decoding="async" src="http://lh6.ggpht.com/_JJkNs5Ixl70/TExlCdWAOSI/AAAAAAAAA_Y/oT60gg9HcrM/s800/201007260122.png" alt="jsDoc Toolkit"/></figure>



<p></p>



<h3 class="wp-block-heading"><a href="http://code.google.com/p/jsdoc-toolkit/">jsdoc-toolkit &#8211; Project Hosting on Google Code</a></h3>



<p>JavaScript版のドキュメント生成ツール。<br />
こちらもエディタから使うと大変便利。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li><a href="/2010/07/jsdoctoolkit-from-notepad.html">エディタ（Notepad++）からJSDoc Toolkitを使ってみる | Mach3.laBlog</a></li>
</ul>
</blockquote>



<h2 class="wp-block-heading">Modernizr</h2>



<figure class="wp-block-image"><img decoding="async" src="http://lh3.ggpht.com/_JJkNs5Ixl70/TEb6RR1X0LI/AAAAAAAAA-4/_5uGmJsiuwg/s800/201007212239.png" alt="Modernizr"/></figure>



<p></p>



<h3 class="wp-block-heading"><a href="http://www.modernizr.com/">Modernizr</a></h3>



<p>HTML5の新機能等が使用可能かどうかを判別してくれるライブラリ。<br />
判別の結果はhtml要素のクラスとして出力してくれる他、<br />
メンバを直接参照する事でも結果を知ることが出来ます。</p>



<p>便利なスクリプトなのですが、最近<a href="http://headjs.com/">Head.js</a>に持って行かれた感が…<br />
こちらは未検証なのでまた後ほどレポートを。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li><a href="/2010/07/modernizr-js.html">「Modernizr」 モダンなクロスブラウザCSSの為の支援スクリプト | Mach3.laBlog</a></li>
</ul>
</blockquote>



<h2 class="wp-block-heading">Raphael / gRaphael</h2>



<figure class="wp-block-image"><img decoding="async" src="http://lh5.ggpht.com/_JJkNs5Ixl70/TDwr1qEithI/AAAAAAAAA-Q/6t9diGuL98g/s800/201007131656.png" alt="gRaphael"/></figure>



<p></p>



<h3 class="wp-block-heading"><a href="http://g.raphaeljs.com/">gRaphaël—Charting JavaScript Library</a></h3>



<p><a href="http://raphaeljs.com/index.html">Raphael</a>は、ベクターグラフィックを簡単に扱うためのJavaScriptライブラリ。<br />
gRaphaelはそれをグラフ描画用に拡張する為のプラグインです。<br />
投稿した時はまだドキュメントが不備でしたが…今見に行きましたがまだありませんでした！</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li><a href="/2010/07/graphael.html">実験室: gRaphaëlでインタラクティブなグラフを描いてみる | Mach3.laBlog</a></li>
</ul>
</blockquote>



<h2 class="wp-block-heading">IE9.js</h2>



<figure class="wp-block-image"><img decoding="async" src="http://lh6.ggpht.com/_JJkNs5Ixl70/TJLUD970GRI/AAAAAAAABCU/oxPr4vt8h9U/201009171134.png" alt="IE9.js"/></figure>



<p></p>



<h3 class="wp-block-heading"><a href="http://code.google.com/p/ie7-js/">ie7-js &#8211; Project Hosting on Google Code</a></h3>



<p>プロジェクト名としては「IE7.js」ですが、<br />
その中に含まれるIE8.js、IE9.jsやie7-squish.jsが結構便利。<br />
JavaScriptが動く事が前提になりますが、擬似クラスやHTML5の新要素の対応もしてくれます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li><a href="/2010/09/ie9js-clearfix.html">IE9.jsで実現するシンプルなclearfixとその他の恩恵 | Mach3.laBlog</a></li>
</ul>
</blockquote>



<h2 class="wp-block-heading">YUI Compressor</h2>



<figure class="wp-block-image"><img decoding="async" src="http://lh5.ggpht.com/_JJkNs5Ixl70/TMmzBvs9ayI/AAAAAAAABEs/ZY7JUy71f0w/201010290014.png" alt="YUI Compressor"/></figure>



<p></p>



<h3 class="wp-block-heading"><a href="http://developer.yahoo.com/yui/compressor/">YUI Compressor</a></h3>



<p>Yahoo!がおくる、JavaScriptやCSSを圧縮するツール。<br />
Webページのパフォーマンス向上を図るのに欠かせません。<br />
ご一緒に<a href="http://developer.yahoo.com/yslow/">YSlow</a>（Firebugプラグイン）も是非。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li><a href="/2010/10/yui-compressor-bat.html">YUI Compressorをお手軽にするバッチファイルを書いてみる | Mach3.laBlog</a></li>



<li><a href="/2010/11/quick-tip-for-site-performance.html">今すぐ出来る、ちょこざいなサイトパフォーマンスアップ | Mach3.laBlog</a></li>
</ul>
</blockquote>



<h2 class="wp-block-heading">mustache</h2>



<figure class="wp-block-image"><img decoding="async" src="http://lh5.ggpht.com/_JJkNs5Ixl70/TKnnq0vc63I/AAAAAAAABDE/OOIY9hnndPo/201010042339.png" alt="mustache"/></figure>



<p></p>



<h3 class="wp-block-heading"><a href="http://mustache.github.com/">{{ mustache }}</a></h3>



<p>マルチランゲージテンプレートエンジン！（言い切った！）<br />
様々な言語に対応する、シンプルで使いやすいテンプレートエンジンです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li><a href="/2010/10/mustache-template-engine.html">どこでも活躍できるテンプレートエンジン「Mustache」 | Mach3.laBlog</a></li>
</ul>
</blockquote>



<h2 class="wp-block-heading">Sammy.js</h2>



<figure class="wp-block-image"><img decoding="async" src="http://lh6.ggpht.com/_JJkNs5Ixl70/TJjDmzzS06I/AAAAAAAABCw/rriMLBnT_6c/201009212338.png" alt="Sammy.js"/></figure>



<p></p>



<h3 class="wp-block-heading"><a href="http://code.quirkey.com/sammy/">Sammy.js</a></h3>



<p>Ajaxコンテンツのセッションを操る為のjQueryプラグイン。<br />
要するに、location.hashによるルーティングをウマイこと処理してくれるスクリプトです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li><a href="/2010/09/sammy-js.html">Sammy.jsでAjaxコンテンツのセッションを操る | Mach3.laBlog</a></li>
</ul>
</blockquote>



<h2 class="wp-block-heading">jQueryMobile</h2>



<figure class="wp-block-image"><img decoding="async" src="http://lh4.ggpht.com/_JJkNs5Ixl70/TOIVnTG4iGI/AAAAAAAABFc/mpVknEjCqqU/201011161309.png" alt="jQueryMobile"/></figure>



<p></p>



<ul class="wp-block-list">
<li><a href="http://jquerymobile.com/">jQuery Mobile | jQuery Mobile</a></li>
</ul>



<p>jQueryの作者が送る、スマートフォン向けのjQueryUIのようなもの。<br />
ルールに従ったマークアップをするだけで、各要素をそれっぽくレンダリングしてくれます。<br />
1月に正式版がリリースされる予定。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li><a href="/2010/11/jquery-mobile-for-beginner.html">はじめてのjQueryMobile | Mach3.laBlog</a></li>
</ul>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>結構色々ありましたね、2010年。<br />
来年もまた素晴らしい技術に出会えますように。</p>



<p>皆様よいお年を！</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>jQueryによるAjaxリクエストをサーバ側で検知する</title>
		<link>https://blog.mach3.jp/2010/11/02/detect-jquery-ajax.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Tue, 02 Nov 2010 06:31:28 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Tips]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=1047</guid>

					<description><![CDATA[jQueryでXmlHttpRequestを介してアクセスされたのかどうかを判別する方法です。 Ajaxで呼ばれた時とそうでない場合で出力を分けたりする時に使えそうですね。 Learning jQuery &#8211; [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>jQueryでXmlHttpRequestを介してアクセスされたのかどうかを判別する方法です。<br />
Ajaxで呼ばれた時とそうでない場合で出力を分けたりする時に使えそうですね。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh6.ggpht.com/_JJkNs5Ixl70/TM7K99SgQjI/AAAAAAAABFA/TvsJOVLVVww/201011012311.png" alt="Detecting Ajax Events on the Server"/></figure>



<p></p>



<p><a href="http://www.learningjquery.com/">Learning jQuery &#8211; Tips, Techniques, Tutorials</a></p>



<span id="more-1047"></span>



<h2 class="wp-block-heading">簡単な仕組み</h2>



<p>ネタ元はこの記事です。<br />
<a href="http://www.learningjquery.com/2010/03/detecting-ajax-events-on-the-server">Detecting Ajax Events on the Server » Learning jQuery &#8211; Tips, Techniques, Tutorials</a></p>



<p>どうやらjQueryはXmlHttpRequestでリクエストをする際に<br />
「X-Requested-With」というヘッダに<br />
「xmlHttpRequest」という値を格納しているそうな。<br />
jQuery…なんという愛でしょう。</p>



<p>jQueryの素晴らしさを実感すると同時に、<br />
やはり一度はソースを熟読しておくべきだなぁと感じますね。<br />
参考になる設計手法とか、恐らく随所に見られる事でしょう！</p>



<h2 class="wp-block-heading">取得してみる</h2>



<p>PHPとRubyで、試しに取得してみました。</p>



<h3 class="wp-block-heading">PHP</h3>


<pre class="wp-block-code"><span><code class="hljs language-php">$xhr = ( @$_SERVER&#91;<span class="hljs-string">"HTTP_X_REQUESTED_WITH"</span>] === <span class="hljs-string">"XMLHttpRequest"</span> );
<span class="hljs-keyword">echo</span> ($xhr) ? <span class="hljs-string">"jQuery Ajax"</span> : <span class="hljs-string">"Requested Directly"</span> ;
</code></span></pre>


<h3 class="wp-block-heading">Ruby</h3>


<pre class="wp-block-code"><span><code class="hljs language-php">xhr = ( ENV&#91;<span class="hljs-string">"HTTP_X_REQUESTED_WITH"</span>] === <span class="hljs-string">"XMLHttpRequest"</span> )
<span class="hljs-keyword">print</span> (xhr) ? <span class="hljs-string">"jQuery Ajax"</span> : <span class="hljs-string">"Requested Directly"</span>
</code></span></pre>


<p>ちなみにこのヘッダが渡されるのは、あくまでもXMLHttpRequestを介して行われた通信だけです。<br />
それ以外のもの、例えばJSONP等の場合は渡されないので注意しましょう。<br />
（JSONPはscript要素を追加しているだけなので、XMLHttpRequestは使用していません）<br />
cf) <a href="/2010/10/jquery-jsonp.html">jQueryはJSONPの理解の妨げになるか？</a></p>



<p>ネタ元のブログも素晴らしいです！<br />
今回初めて知ったのですが、是非とも全てに目を通したいです。<br />
<a href="http://www.learningjquery.com/">Learning jQuery &#8211; Tips, Techniques, Tutorials</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>様々な言葉でJSONを弄ってみるメモ</title>
		<link>https://blog.mach3.jp/2010/10/22/json-on-various-lang.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Fri, 22 Oct 2010 05:35:23 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=913</guid>

					<description><![CDATA[引き続きJSONのお話ですが、 連携に向いているフォーマットだ、という事はつまり 他の言語でを扱う方法を知っておかねばならないという事。 という訳で、軽くメモっておきます。 次のようなJSONフォーマットの文字列が 「s [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>引き続きJSONのお話ですが、<br />
連携に向いているフォーマットだ、という事はつまり<br />
他の言語でを扱う方法を知っておかねばならないという事。<br />
という訳で、軽くメモっておきます。</p>



<span id="more-913"></span>



<p>次のようなJSONフォーマットの文字列が<br />
「<em>str</em>」に格納されていると想定します。</p>


<pre class="wp-block-code"><span><code class="hljs language-json">{
    <span class="hljs-attr">"status"</span> : <span class="hljs-string">"success"</span>,
    <span class="hljs-attr">"content"</span> : &#91;
        { <span class="hljs-attr">"id"</span> : <span class="hljs-number">1</span> , <span class="hljs-attr">"message"</span> : <span class="hljs-string">"Nice to meet you, world !"</span> },
        { <span class="hljs-attr">"id"</span> : <span class="hljs-number">2</span> , <span class="hljs-attr">"message"</span> : <span class="hljs-string">"Hello, world !"</span> },
        { <span class="hljs-attr">"id"</span> : <span class="hljs-number">3</span> , <span class="hljs-attr">"message"</span> : <span class="hljs-string">"Hello again, world !"</span> }
    ]
}
</code></span></pre>


<p>この文字列をオブジェクトとしてロードし、<br />
それをもう一度JSON文字列として出力するテストです。</p>



<h2 class="wp-block-heading">PHP</h2>


<pre class="wp-block-code"><span><code class="hljs language-php">$php_obj = json_decode( $str ); <span class="hljs-comment">// JSONからPHPオブジェクトを生成</span>
$json_string = json_encode( $php_obj ); <span class="hljs-comment">// PHPオブジェクトからJSONを生成</span>
</code></span></pre>


<p>さすが関数から生まれてきたような言語のPHP。<br />
JSONだって関数一発です。</p>



<h2 class="wp-block-heading">Ruby</h2>



<p>Rubyは1.9からjsonライブラリが標準搭載されているそうです。<br />
当方の環境も1.9だったのでそのままそれを利用させて頂きます。</p>



<p><a href="http://doc.ruby-lang.org/ja/1.9.1/library/json.html">library json</a></p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-keyword">require</span> <span class="hljs-string">"json"</span> <span class="hljs-comment"># jsonライブラリが必要</span>
ruby_obj = JSON.load( str ) <span class="hljs-comment"># JSONからRubyオブジェクトを生成</span>
json_string = JSON.generate( ruby_obj ) <span class="hljs-comment"># RubyオブジェクトからJSONを生成</span>
</code></span></pre>


<p>1.9未満だと他のライブラリに依存する事になります。<br />
面倒なので（!?）ここでは割愛。</p>



<h2 class="wp-block-heading">ActionScript3</h2>



<p>AS3はJSONのパーサが標準装備されていないので、<br />
<em>as3corelib</em>を使わせていただきます。</p>



<p><a href="http://github.com/mikechambers/as3corelib">mikechambers&#8217;s as3corelib at master &#8211; GitHub</a></p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-keyword">import</span> com.adobe.serialization.json.JSON; <span class="hljs-comment">// as3corelibからインポート</span>

<span class="hljs-comment">// 中略</span>

<span class="hljs-keyword">var</span> as3_obj:<span class="hljs-built_in">Object</span> = <span class="hljs-built_in">JSON</span>.decode( str ); <span class="hljs-comment">// JSONからAS3オブジェクトを生成</span>
<span class="hljs-keyword">var</span> json_string:<span class="hljs-built_in">String</span> = <span class="hljs-built_in">JSON</span>.encode( as3_obj ); <span class="hljs-comment">// AS3オブジェクトからJSONを生成</span>
</code></span></pre>


<p>AS3というとXMLと相性も良いのでそちらをチョイスする事が多かったですが、<br />
データ量によっては帯域節約の為にJSONを使うのも大いにありですね。その後も楽ですし。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>XMLとかYAMLとか色々ありますが、JavaScriptの隆盛もあって<br />
最近はJSONフォーマットがもてはやされている感じですね。<br />
学習コストも極めて少なくて済むので、今後とも重宝されそうです。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>どこでも活躍できるテンプレートエンジン「Mustache」</title>
		<link>https://blog.mach3.jp/2010/10/05/mustache-template-engine.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Tue, 05 Oct 2010 03:34:25 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mustache]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Template]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=807</guid>

					<description><![CDATA[世にテンプレートエンジンは多くあれど、 これ程多くの場所で活躍出来るテンプレートエンジンはなさそうです。 本稿はそんなテンプレートエンジン「Mustache」の試用レビューです。 Mustacheについて {{ must [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>世にテンプレートエンジンは多くあれど、<br />
これ程多くの場所で活躍出来るテンプレートエンジンはなさそうです。<br />
本稿はそんなテンプレートエンジン「Mustache」の試用レビューです。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh5.ggpht.com/_JJkNs5Ixl70/TKnnq0vc63I/AAAAAAAABDE/OOIY9hnndPo/201010042339.png" alt="Mustache"/></figure>



<p></p>



<span id="more-807"></span>



<h2 class="wp-block-heading">Mustacheについて</h2>



<p><a href="http://mustache.github.com/">{{ mustache }}</a></p>



<figure class="wp-block-image"><img decoding="async" src="http://lh5.ggpht.com/_JJkNs5Ixl70/TKnnq894ymI/AAAAAAAABDI/hGayGzxelqI/201010042340.png" alt="Mustache"/></figure>



<p></p>



<p>&#8220;Mustache&#8221;というのは口ひげを指す言葉で、「ますたっしゅ」とか発音する様です。<br />
テンプレートタグに使用されている「{」が口ひげに似てるので、そこらへんが由来っぽいです。</p>



<p>公式を見れば分かるとおり、Mustacheは1言語にとどまらず、<br />
様々な言葉で開発されているテンプレートエンジンです。<br />
知らない言語も入ってたりしますね…。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Available in Ruby, JavaScript, Python, Erlang, PHP, Perl, Go, Lua, ooc, C++, ActionScript, Java, ColdFusion, Scala, and for node.js.</p>
</blockquote>



<h2 class="wp-block-heading">簡単な使い方</h2>



<p>JavaScript版のmustache.jsで簡単な使い方を紹介してみます。</p>



<h3 class="wp-block-heading">最もシンプルな例</h3>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-keyword">var</span> template = <span class="hljs-string">'Hello, {{name}}!'</span>;
<span class="hljs-keyword">var</span> html = Mustache.to_html( template, {
    <span class="hljs-attr">name</span>:<span class="hljs-string">"mach3"</span>
});
alert(html); <span class="hljs-comment">// "Hello, mach3!"</span>
</code></span></pre>


<p>テンプレートにデータを渡して出力するには、<em>Mustache.to_html()</em>メソッドを使用します。<br />
第一引数はテンプレートの文字列、第二引数は渡すデータ(Object)です。<br />
基本的に<em>{{</em>と<em>}}</em>で囲った物が、テンプレートタグとして認識されます。</p>



<h3 class="wp-block-heading">条件分岐</h3>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-keyword">var</span> template = <span class="hljs-string">'{{#isError}}エラーが発生しました。{{/isError}}'</span>;
<span class="hljs-keyword">var</span> html = Mustache.to_html( template, {
    <span class="hljs-attr">isError</span>:<span class="hljs-literal">true</span>
});
</code></span></pre>


<p>dataの値がtrueである場合に<br />
<em>{{#data}}</em>と<em>{{/data}}</em>に囲まれた部分が処理されます。<br />
ちなみに条件を逆にしたい場合は、<em>#</em>の代わりに<em>^</em>を使用します。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-keyword">var</span> template = <span class="hljs-string">'{{^isError}}正常です。{{/isError}}'</span>;
</code></span></pre>


<h3 class="wp-block-heading">ループ処理</h3>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-keyword">var</span> template = <span class="hljs-string">'&lt;ul&gt;{{#fruits}}&lt;li&gt;{{.}}&lt;/li&gt;{{/fruits}}&lt;/ul&gt;'</span>;
<span class="hljs-keyword">var</span> html = Mustache.to_html( template, {
    <span class="hljs-attr">fruits</span>:&#91;<span class="hljs-string">"apple"</span>,<span class="hljs-string">"orange"</span>,<span class="hljs-string">"banana"</span>]
});
</code></span></pre>


<p>記法は条件分岐と同じですが、dataが配列等の可算なオブジェクトだった場合は<br />
その数だけ<em>{{#data}}</em>と<em>{{/data}}</em>に囲まれた部分が処理されます。<br />
<em>{{.}}</em>とする事で現在の値にアクセス出来ます。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-keyword">var</span> template = <span class="hljs-string">'&lt;ul&gt;{{#fruits}}&lt;li&gt;{{name}} : &amp;yen;{{price}}&lt;/li&gt;{{/fruits}}&lt;/ul&gt;'</span>;
<span class="hljs-keyword">var</span> html = Mustache.to_html( template, {
    <span class="hljs-attr">product</span>:&#91;
        { <span class="hljs-attr">name</span>:<span class="hljs-string">"apple"</span>, <span class="hljs-attr">price</span>:<span class="hljs-number">100</span> },
        { <span class="hljs-attr">name</span>:<span class="hljs-string">"orange"</span>, <span class="hljs-attr">price</span>:<span class="hljs-number">75</span> },
        { <span class="hljs-attr">name</span>:<span class="hljs-string">"banana"</span>, <span class="hljs-attr">price</span>:<span class="hljs-number">50</span> }
    ]
});
</code></span></pre>


<p>もう少し複雑な例です。<br />
配列の値がオブジェクトである時は、ループ内で直接nameやpriceの値にアクセス出来ます。<br />
一覧を出力する場合等はこの方法を選択する事になるでしょう。</p>



<h3 class="wp-block-heading">コメントアウト</h3>


<pre class="wp-block-code"><span><code class="hljs language-xml">var template = '<span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>超音速。{{! この中はスルーされます }}<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>'
</code></span></pre>


<p><em>{{! &#8230; }}</em>とすると、その中身はコメントと認識されてスルーされます。</p>



<p>さらに高度なテンプレートタグについては、GithubのREADME/Manualをご覧ください。</p>



<ul class="wp-block-list">
<li><a href="http://github.com/janl/mustache.js">janl&#8217;s mustache.js at master &#8211; GitHub</a> </li>



<li><a href="http://mustache.github.com/mustache.5.html">mustache(5) &#8212; Logic-less templates.</a> </li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>必要な機能が十分に備わっているのは勿論、<br />
どの言語を使用しても同じ記法でテンプレートが書けるというのは強みですね。<br />
しかも、特にWeb屋が扱う言語は概ね網羅している様子。<br />
非常に有用なライブラリと思いますが、如何でしょうか。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ゼロから導入する、Ruby LESS for Windows ～素晴らしいCSSソリューション</title>
		<link>https://blog.mach3.jp/2010/07/04/less-on-ruby-windows.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Sun, 04 Jul 2010 00:04:00 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Ruby]]></category>
		<guid isPermaLink="false">http://lab.mach3.jp/2010/07/04/%e3%82%bc%e3%83%ad%e3%81%8b%e3%82%89%e5%b0%8e%e5%85%a5%e3%81%99%e3%82%8b%e3%80%81ruby-less-for-windows-%ef%bd%9e%e7%b4%a0%e6%99%b4%e3%82%89%e3%81%97%e3%81%84css%e3%82%bd%e3%83%aa%e3%83%a5%e3%83%bc.html</guid>

					<description><![CDATA[この記事の情報は古くなっています。 現在LessはRubyベースではなくJavaScriptベースを基本として開発されています。 先日はJavaScript版のLESSを記事で紹介しましたが、 LESSをJavaScri [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="caution">
    この記事の情報は古くなっています。<br />
    現在LessはRubyベースではなくJavaScriptベースを基本として開発されています。
</p>



<p>先日はJavaScript版のLESSを記事で紹介しましたが、<br />
<a href="https://blog.mach3.jp/2010/06/lessjavascript-lessjs.html">LESSをJavaScriptで実現する 「LESS.js」</a><br />
やはりRuby版LESSをローカル環境に導入して動かすのがベストだと思うので、<br />
Windows環境での導入方法をメモっておきます。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh5.ggpht.com/_JJkNs5Ixl70/TC9OtbZAqRI/AAAAAAAAA9c/UGfbYnLsdWc/s800/201007032351.png" alt="LESS(Ruby)"/></figure>



<p></p>



<span id="more-2247"></span>



<ol class="wp-block-list">
<li><a href="#install-ruby">Rubyの導入</a></li>



<li><a href="#install-less">LESSのインストール</a></li>



<li><a href="#try-less">LESSを試してみる</a></li>



<li><a href="#less-from-editor">エディタから直接LESSする（Notepad++）</a></li>



<li><a href="#less-from-dw">DreamweaverからLESSする</a></li>
</ol>



<h2 class="wp-block-heading" id="install-ruby">1. Rubyの導入</h2>



<h3 class="wp-block-heading">rubyinstallerによるインストール</h3>



<p>LESSの導入には、Ruby本体の他に<br />
パッケージマネージャーのRubyGemsも必要になります。<br />
PerlのCPAN、PHPのPEARみたいな存在ですね。</p>



<p>別々に手作業でインストールする事も出来ますが、<br />
ここでは一括でインストール出来るrubyinstallerを使ってみます。</p>



<p><a href="http://rubyforge.org/projects/rubyinstaller/">RubyForge: Ruby Installer for Windows: Project Info</a><br />
リンク先からrubyinstallerのお好みのバージョンをダウンロード、実行。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh3.ggpht.com/_JJkNs5Ixl70/TC9OtU0G5RI/AAAAAAAAA9g/H2xoEh6fDuI/s800/201007032345.png" alt="Ruby Installer"/></figure>



<p></p>



<p>基本的にデフォルトの設定で進んで良いと思いますが、<br />
以下のチェックは共に入れておくと良いと思います。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<ul class="wp-block-list">
<li>Add Ruby executables to your PATH<br /><br />  （環境変数のPATHに追加します）</li>



<li>Associate .rb and .rbw files with this Ruby installation<br /><br />  （拡張子.rb/.rbwを今インストールしているRubyに関連付ける）</li>
</ul>
</blockquote>



<p>インストールが終了したら、PATHを有効にする為に再起動しておきましょう。<br />
コマンドプロンプトでバージョンの確認が出来ればインストール完了です。</p>


<pre class="wp-block-code"><span><code class="hljs">ruby -v
gem -v
</code></span></pre>


<h2 class="wp-block-heading" id="install-less">2. LESSのインストール</h2>



<p>LESSはgemコマンドを使ってインストールします。</p>


<pre class="wp-block-code"><span><code class="hljs">gem install less
</code></span></pre>


<p>おしまい。後はライブラリの依存関係等を解決しながら<br />
勝手に色々いれてくれちゃいます。便利。</p>



<h2 class="wp-block-heading" id="try-less">3. LESSを試してみる</h2>



<p>お好きなディレクトリにlessファイルを作って、<em>lessc</em>コマンドに投げれば<br />
展開されたcssファイルが同じディレクトリに生成されるはず。</p>



<p>まずはテスト用のlessファイルを書いてみます。</p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">// example.less :</span>

@mycolor : <span class="hljs-comment">#003366;</span>
@mywidth : <span class="hljs-number">100</span>px;

.rounded (@r:<span class="hljs-number">10</span>px){
    -webkit-border-radius: @r;
    -moz-border-radius: @r;
    border-radius: @r;
}

<span class="hljs-comment">#box1{</span>
    color : @mycolor;
    width : @mywidth;
    padding : <span class="hljs-number">10</span>px;
    .rounded();
    p {
        .rounded(<span class="hljs-number">5</span>px);
        width : @mywidth - <span class="hljs-number">10</span> * <span class="hljs-number">2</span>;
    }
}
</code></span></pre>


<p>コマンドプロンプトでexample.less のあるディレクトリに移動して<br />
lesscコマンドを打ちます。</p>


<pre class="wp-block-code"><span><code class="hljs">cd /the/path/to/example lessc example.less
</code></span></pre>


<p>lessファイルと同じディレクトリに、次のように展開されると思います。</p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">// example.css :</span>

<span class="hljs-comment">#box1 {</span>
    color: <span class="hljs-comment">#003366;</span>
    width: <span class="hljs-number">100</span>px;
    padding: <span class="hljs-number">10</span>px;
    -webkit-border-radius: <span class="hljs-number">10</span>px;
    -moz-border-radius: <span class="hljs-number">10</span>px;
    border-radius: <span class="hljs-number">10</span>px;
}
<span class="hljs-comment">#box1 p {</span>
    -webkit-border-radius: <span class="hljs-number">5</span>px;
    -moz-border-radius: <span class="hljs-number">5</span>px;
    border-radius: <span class="hljs-number">5</span>px;
    width: <span class="hljs-number">80</span>px;
}
</code></span></pre>


<h2 class="wp-block-heading" id="less-from-editor">4. エディタから直接LESSする（Notepad++）</h2>



<p>いちいちコマンドプロンプトでディレクトリ移動して～ってするのは大変面倒なので<br />
lesscを登録してサクサク使いましょう。</p>



<h3 class="wp-block-heading">1. コマンドのダイアログを表示します。</h3>



<p>「プラグイン」&gt;「NppExec」&gt;「Execute」 （またはF6）</p>



<h3 class="wp-block-heading">2. コマンドを追加します。</h3>



<figure class="wp-block-image"><img decoding="async" src="http://lh5.ggpht.com/_JJkNs5Ixl70/TC9OttpfxgI/AAAAAAAAA9k/hTMm7B89dxw/s800/201007032346.png" alt="コマンドの追加"/></figure>



<p></p>


<pre class="wp-block-code"><span><code class="hljs language-json"><span class="hljs-string">"C:\ruby191\bin\lessc.bat"</span> <span class="hljs-string">"$(FULL_CURRENT_PATH)"</span>
</code></span></pre>


<p>lessc.batまでのパスはインストールした環境に依存するので、ご注意ください。<br />
「LESS」等の名前をつけてSaveしておきましょう。</p>



<h2 class="wp-block-heading" id="less-from-dw">5. DreamweaverからLESSする</h2>



<p>Dreamweaverでもlessファイルを編集/展開出来るようにしておきます。<br />
※当方の環境はCS3です。</p>



<h3 class="wp-block-heading">1. コードビューで開けるようにする</h3>



<p>「編集」&gt;「環境設定」&gt;「ファイルタイプ/エディタ」&gt;「コードビューで開く」に.lessを追加</p>



<h3 class="wp-block-heading">2. コードカラーリングを適用する</h3>



<p>[DWのディレクトリ]configurationDocumentTypesMMDocumentTypes.xml を編集。<br />
&#8220;css&#8221;等で検索して、次の箇所に加筆しましょう。</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">documenttype</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"CSS"</span> <span class="hljs-attr">internaltype</span>=<span class="hljs-string">"Text"</span> <span class="hljs-attr">winfileextension</span>=<span class="hljs-string">"css,less"</span> <span class="hljs-attr">macfileextension</span>=<span class="hljs-string">"css,less"</span> <span class="hljs-attr">file</span>=<span class="hljs-string">"Default.css"</span> <span class="hljs-attr">writebyteordermark</span>=<span class="hljs-string">"false"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">documenttype</span>&gt;</span>
</code></span></pre>


<p>これでコードビューでCSSのルールに則ってカラーリングされるようになります。</p>



<h3 class="wp-block-heading">3. 外部エディタとして登録</h3>



<p>本来であればコマンドとして登録したいのですが、ちょっと手強そうなのでまたの機会に。<br />
「編集」&gt;「環境設定」&gt;「ファイルタイプ/エディタ」で、拡張子に「.less」を追加し、<br />
プライマリエディタに「lessc.bat」を追加します。</p>



<h3 class="wp-block-heading">4. テスト</h3>



<p>「ファイル」ビューの中からlessファイルを選択して右クリックし、<br />
「エディタを指定して開く」で「lessc」を選択。<br />
一瞬コマンドプロンプトが開いた後、展開されたcssファイルが生成されます。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh4.ggpht.com/_JJkNs5Ixl70/TC9Ot_jRpNI/AAAAAAAAA9o/7VIv4nrmrWE/s800/201007032348.png" alt="DreamweaverからLESS"/></figure>



<p></p>



<p>Dreamweaverの項はやっつけ感がありますが…<br />
どなたかmxpで作ってくれちゃう人が現れる事をちょっと期待してます。</p>



<p>Zen-Codingの速さにも驚きましたが、<br />
LESSもまた、Web開発を効率化してくれる素晴らしいソリューションだと思います。<br />
是非一度お試しくださいませ。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>LESSをJavaScriptで実現する 「LESS.js」</title>
		<link>https://blog.mach3.jp/2010/06/26/less-js.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Sat, 26 Jun 2010 20:00:00 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Video]]></category>
		<guid isPermaLink="false">http://lab.mach3.jp/2010/06/26/less%e3%82%92javascript%e3%81%a7%e5%ae%9f%e7%8f%be%e3%81%99%e3%82%8b-%e3%80%8cless-js%e3%80%8d.html</guid>

					<description><![CDATA[この記事の情報は古くなっています。 現在のLessはRubyではなくJavaScriptベースを基本として開発されています。 LESS &#8211; Leaner CSS LESSというのはCSSをより便利でスマートな [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="caution">
    この記事の情報は古くなっています。<br />
    現在のLessはRubyではなくJavaScriptベースを基本として開発されています。
</p>



<p><a href="http://lesscss.org/">LESS &#8211; Leaner CSS</a><br />
LESSというのはCSSをより便利でスマートな記法に拡張する為のRubyプロジェクトですが、<br />
そのJavaScript版が開発されている模様です。</p>



<figure class="wp-block-image"><img decoding="async" src="http://lh4.ggpht.com/_JJkNs5Ixl70/TCXdXCVSxnI/AAAAAAAAA9I/5X3vtGiM0i8/s800/201006261957.png" alt="LESS on JS"/></figure>



<p></p>



<span id="more-20"></span>



<h2 class="wp-block-heading">LESSってなぁに</h2>



<p><a href="http://lesscss.org/">LESS &#8211; Leaner CSS</a><br />
まずはLESSについて軽くメモ。<br />
LESSはCSSに様々な機能を提供する為のプロジェクトです。<br />
変数を扱ったり、関数のような記述をしたり、プロパティ内で計算したり…<br />
さらには、無駄のないように最適化を施してくれます。なんという愛。</p>



<p><a href="/2010/07/less-on-ruby-windows.html">Ruby版の詳しい導入方法と記法は別記事を見ていただくとして</a>、これは便利ですね。<br />
重複した記述をしなくて済むようになりますし、<br />
スタイルを一元管理し易くなります。<br />
ネストする記法も直感的で大変分かりやすいです。</p>



<h2 class="wp-block-heading">JavaScriptで動くLESS</h2>



<p>そんなLESSをJavaScriptで動かす為のプロジェクトがこちらです。<br />
<a href="http://code.google.com/p/lesscss/">lesscss &#8211; Project Hosting on Google Code</a><br />
上記のリンクよりdownloadへ進んでスクリプトを取得しましょう。</p>



<p>簡単な使い方。</p>



<p>まずスタイルシートの拡張子を「.less」としてリンク要素で埋め込みます。</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">link</span> <span class="hljs-attr">rel</span>=<span class="hljs-string">"stylesheet/less"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"style.less"</span> /&gt;</span>
</code></span></pre>


<p>次に、less.jsを読み込みます。（順番が逆ではいけません）</p>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text/javascript"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"less.js"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
</code></span></pre>


<p>これであとはless.jsさんがstyle.lessの中身をLESSルールに則って展開してくれます。</p>



<p>※本稿執筆時のバージョンは1.0.22。IEではエラーが発生。<br />
ChromeはローカルでのテストのみXmlHTTPRequestの都合上動きません。</p>



<p>nettuts+でチュートリアル動画が公開されていましたので、こちらもご参考迄。<br />
<a href="http://net.tutsplus.com/tutorials/html-css-techniques/quick-tip-you-need-to-check-out-less-js/">Quick Tip: You Need to Check out LESS.js | Nettuts+</a></p>



<h2 class="wp-block-heading">こんなふうに活用したい</h2>



<p>静的なページスタイルを全てJavaScriptに依存してしまうのは、よろしくない。<br />
現状の使い道としては、ローカルテスト用としてJavaScript版を使用して、<br />
本番化の際にはRubyで書き出してリンクを貼りなおす、といった感じでしょうか</p>



<p>ただ、せっかくJavaScriptで開発してくれているので、<br />
<a href="/2010/06/jslint.html">JSLint</a>や<a href="http://code.google.com/p/zen-coding/">Zen-Coding</a>のようにエディタのプラグインとして導入して、<br />
編集しながら簡単に展開出来る！という形になれば素晴らしいですね。<br />
Zen-Coding + LESSで開発速度が一気に加速しそうです。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
