<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>ArmNo</title>
	
	<link>http://armno.in.th</link>
	<description>a web developer</description>
	<lastBuildDate>Wed, 23 May 2012 14:35:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/armnointh" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="armnointh" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>เริ่มต้นใช้งาน Sass</title>
		<link>http://armno.in.th/2012/05/20/%e0%b9%80%e0%b8%a3%e0%b8%b4%e0%b9%88%e0%b8%a1%e0%b8%95%e0%b9%89%e0%b8%99%e0%b9%83%e0%b8%8a%e0%b9%89%e0%b8%87%e0%b8%b2%e0%b8%99-sass/</link>
		<comments>http://armno.in.th/2012/05/20/%e0%b9%80%e0%b8%a3%e0%b8%b4%e0%b9%88%e0%b8%a1%e0%b8%95%e0%b9%89%e0%b8%99%e0%b9%83%e0%b8%8a%e0%b9%89%e0%b8%87%e0%b8%b2%e0%b8%99-sass/#comments</comments>
		<pubDate>Sun, 20 May 2012 15:58:44 +0000</pubDate>
		<dc:creator>ArmNo</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Preprocessor]]></category>
		<category><![CDATA[Sass]]></category>
		<category><![CDATA[Sublime Text 2]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://armno.in.th/?p=2017</guid>
		<description><![CDATA[Sass เป็น CSS Preprocessor ที่ทำให้เราเขียน CSS ด้วย syntax ในเชิงคล้ายๆ กับเขียนโปรแกรมภาษาอื่นทั่วไปได้ แล้วเจ้าตัว Sass ก็จะ compile เป็น CSS แบบธรรมดาให้ครับ ตัวผมเองก็เพิ่งเริ่มใช้ คิดว่าถ้าใช้คล่องๆ จะช่วยให้เราประหยัดเวลาเขียน CSS ได้อีกเยอะครับ]]></description>
			<content:encoded><![CDATA[<p><strong><a title="Sass Website" href="http://sass-lang.com/" target="_blank">Sass</a></strong> เป็น CSS Preprocessor ที่ทำให้เราเขียน CSS ด้วย syntax ในเชิงคล้ายๆ กับเขียนโปรแกรมภาษาอื่นทั่วไปได้ แล้วเจ้าตัว Sass ก็จะ compile เป็น CSS แบบธรรมดาให้ครับ ตัวผมเองก็เพิ่งเริ่มใช้ คิดว่าถ้าใช้คล่องๆ จะช่วยให้เราประหยัดเวลาเขียน CSS ได้อีกเยอะครับ</p>
<blockquote><p>โพสต์นี้จะไม่เน้นเรื่องวิธีการเขียน Sass แต่จะเกี่ยวกับการติดตั้งและเซ็ต environment ให้เข้าที่เข้าทางเพื่อทำงานกับ Sass มากกว่าครับผม</p></blockquote>
<h3>ติดตั้ง Sass</h3>
<p>ขอแนะนำวิธีติดตั้งผ่าน command line นะครับ เพราะง่ายดี ในเว็บของ Sass มีวิธีติดตั้งอยู่หน้าแรกบนสุดเลย ซึ่งเราต้องติดตั้งผ่าน <code>rubygems</code> ครับ ใน Ubuntu (12.04) นั้นไม่มีแพ็คเกจ Ruby กับ Rubygems ติดมาด้วย ก็ต้องลงสองตัวนี้ก่อนครับ ส่วนใน OSX (Lion) นั้น มี Ruby ลงมาให้แล้ว ก็ข้ามขั้นตอนนี้และติดตั้ง Sass ได้เลย</p>
<pre class="brush: bash; gutter: true" data-language="Shell Command">$ sudo apt-get install ruby     # หรือ ruby1.9.1
$ sudo apt-get install rubygems</pre>
<p>จากนั้นติดตั้ง Sass ผ่าน Rubygems ครับผม</p>
<pre class="brush: bash; gutter: true" data-language="Shell Command">$ sudo gem install sass</pre>
<p>เพียงเท่านี้ Sass ก็พร้อมให้เราใช้งานได้แล้ว</p>
<h3>เริ่มใช้งาน Sass</h3>
<ol>
<li>เปลี่ยนไฟล์ .css เป็น .scss (เช่น จาก style.css เป็น style.scss)</li>
<li>compile ไฟล์ .scss โดยใช้ Sass</li>
</ol>
<pre class="brush: bash; gutter: true" data-language="Shell Command">$ sass style.scss:style.css</pre>
<p>รูปแบบของ command นี้ก็คือ</p>
<pre class="brush: bash; gutter: true" data-language="Shell Command">$ sass &lt;input_file&gt;:&lt;output_file&gt;</pre>
<p>ผลลัพธ์ที่ได้คือ ได้ไฟล์ .css ที่เหมือนเดิมทุกประการ (อ้าว!?) เพราะเรายังไม่ได้ใส่ syntax ของ Sass ลงในไฟล์ .scss ทำให้ compile ออกมาได้เหมือน CSS ของเดิม นั่นหมายความว่าในไฟล์ .scss นั้น เราสามารถเขียน Sass syntax ปนกัน CSS syntax ได้ เดี๋ยว Sass จะ compile เป็น CSS ให้เองครับ</p>
<p>เช่น การใช้ child selector ปกติเราจะเขียน</p>
<pre class="brush: css; gutter: true" data-language="CSS">.parent {
  display: block;
}
.parent a {
  display: inline-block;
}
.parent a .child {
  display: none;
}</pre>
<p>ใน Sass เขียนได้เป็น</p>
<pre class="brush: scss; gutter: true" data-language="SCSS">.parent {
  display: block;
  a {
    display: inline-block;
    .child {
      display: none;
    }
  }
}</pre>
<p>หรืออย่างการสร้างตัวแปร เอาไว้ใช้งานบ่อยๆ ก็ทำได้สะดวกดี</p>
<pre class="brush: scss; gutter: true" data-language="SCSS">$bgColor : #f9f9f9;
body {
  background-color: $bgColor;
}</pre>
<p class="prettyprint lang-css" data-language="SCSS">นอกจากนี้ยังมี syntax ของ Sass อีกมากมาย (ผมเองก็ยังใช้ไม่หมดเหมือนกัน) ลองเข้าไปอ่านได้ที่ &lt;a title=&#34;Sass Reference&#34; href=&#34;http:&#47;&#47;sass-lang.com&#47;docs&#47;yardoc&#47;file.SASS_REFERENCE.html&#34; target=&#34;_blank&#34;&gt;Sass Reference&lt;&#47;a&gt; ครับ&lt;&#47;p&gt;
&lt;h3&gt;อัพเดทไฟล์ .css ทุกครั้งที่บันทึกไฟล์ .scss&lt;&#47;h3&gt;
&lt;p&gt;แค่เพิ่มพารามิเตอร์ &lt;code&gt;--watch&lt;&#47;code&gt; ใน sass command ครับ&lt;&#47;p&gt;
&lt;pre class=&#34;brush: bash; gutter: true&#34; data-language=&#34;Shell Command&#34;&gt;$ sass --watch style.scss:style.css</pre>
<p>มันจะขึ้นเป็น process ค้างไว้นะครับ ทุกครั้งที่เรากดเซฟไฟล์ มันก็จะอัพเดทไฟล์ CSS ให้เรา ไม่ต้องมานั่งรัน Sass ทุกครั้งไป</p>
<p><a href="http://armno.in.th/wp-content/uploads/2012/05/Screen-Shot-2555-05-20-at-10.05.51-PM.png"><img class="alignnone size-medium wp-image-2018 colorbox-2017" title="Running Sass with --watch" src="http://armno.in.th/wp-content/uploads/2012/05/Screen-Shot-2555-05-20-at-10.05.51-PM-600x297.png" alt="" width="600" height="297" /></a></p>
<h3>บีบอัด CSS หลัง compile</h3>
<p>เพิ่มพารามิเตอร์ <code>:style</code> เซ็ตให้เป็น compressed ไฟล์ output ที่ได้ จะถูก compress ให้เสร็จสรรพ แหล่มแท้</p>
<pre class="brush: bash; gutter: true" data-language="Shell Command">$ sass --watch style.scss:style.css --style compressed</pre>
<p><a href="http://armno.in.th/wp-content/uploads/2012/05/compressed.png"><img class="alignnone size-full wp-image-2024 colorbox-2017" title="compressed" src="http://armno.in.th/wp-content/uploads/2012/05/compressed.png" alt="" width="578" height="112" /></a></p>
<h3>Sublime Text กับ Sass</h3>
<p>ปกติแล้ว Sublime Text ไม่รู้จักไฟล์ .scss ครับ จะมองเป็นไฟล์ text ธรรมดา และไม่ทำ syntax highlight ให้ ซึ่งวิธีแก้ก็มีสองวิธีคือ</p>
<ul>
<li>ให้ Sublime Text มองเป็นไฟล์ CSS โดยไปที่เมนู <strong>View &gt; Syntax &gt; CSS</strong><br />
<a href="http://armno.in.th/wp-content/uploads/2012/05/Screen-Shot-2555-05-20-at-10.11.22-PM.png"><img class="alignnone size-full wp-image-2020 colorbox-2017" title="Force ST2 to know .scss files" src="http://armno.in.th/wp-content/uploads/2012/05/Screen-Shot-2555-05-20-at-10.11.22-PM.png" alt="" width="567" height="398" /></a></li>
<li>หรือ ลง plugin ชื่อว่า Sass ผ่าน Package Manger .. ผมลองดูแล้วมันยังเอ๋อๆ กับ CSS comment แล้วก็ attribute selector ด้วย แนะนำให้ใช้แบบแรกดีกว่าครับ<br />
<a href="http://armno.in.th/wp-content/uploads/2012/05/Screen-Shot-2555-05-20-at-10.17.09-PM.png"><img class="alignnone size-full wp-image-2021 colorbox-2017" title="Installing Sass plugin for ST2" src="http://armno.in.th/wp-content/uploads/2012/05/Screen-Shot-2555-05-20-at-10.17.09-PM.png" alt="" width="391" height="357" /></a></li>
</ul>
<p>นอกจากนี้แล้ว Sass ยังมีอะไรให้เล่นอีกเยอะมากครับ ใน Reference หน้าเดียวเอาอยู่เลย ส่วนการเริ่มใช้งาน Sass กับโปรเจ็คที่กำลังทำอยู่ ก็ไม่เป็นปัญหาครับ เพราะเราสามารถเขียน CSS พร้อมกับเรียนรู้และปรับใช้ Sass syntax ไปทีละนิดๆ ได้ ถือเป็นตัวช่วยของ web developer ที่มีประโยชน์และใช้งานสนุกอีกตัวนึงครับ</p>
]]></content:encoded>
			<wfw:commentRss>http://armno.in.th/2012/05/20/%e0%b9%80%e0%b8%a3%e0%b8%b4%e0%b9%88%e0%b8%a1%e0%b8%95%e0%b9%89%e0%b8%99%e0%b9%83%e0%b8%8a%e0%b9%89%e0%b8%87%e0%b8%b2%e0%b8%99-sass/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>การใช้ฟังก์ชั่น wp_enqueue_script แทรก JavaScript ใน WordPress</title>
		<link>http://armno.in.th/2012/04/19/wp-enqueue-script-%e0%b9%81%e0%b8%97%e0%b8%a3%e0%b8%81-javascript-%e0%b9%83%e0%b8%99-wordpress/</link>
		<comments>http://armno.in.th/2012/04/19/wp-enqueue-script-%e0%b9%81%e0%b8%97%e0%b8%a3%e0%b8%81-javascript-%e0%b9%83%e0%b8%99-wordpress/#comments</comments>
		<pubDate>Thu, 19 Apr 2012 14:50:26 +0000</pubDate>
		<dc:creator>ArmNo</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress Theme]]></category>
		<category><![CDATA[wp_enqueue_script]]></category>

		<guid isPermaLink="false">http://armno.in.th/?p=2011</guid>
		<description><![CDATA[WordPress มีฟังก์ชั่น wp_enqueue_script ผมเคยมองว่าไม่จำเป็น แต่พอลองอ่าน Codex ก็ทำให้เข้าใจว่า ทำไมเราถึงควรใช้ฟังก์ชั่นนี้ในการโหลดไฟล์ .js เข้ามาใน WordPress ครับ]]></description>
			<content:encoded><![CDATA[<p>ปกติเราจะโหลดไฟล์ JavaScript เข้ามาในเพจโดยใช้แท็ก <code>&lt;script&gt;</code></p>
<pre class="brush: html; gutter: true" data-language="HTML">&lt;script src=&quot;js/script.js&quot;&gt;&lt;/script&gt;</pre>
<p>ซึ่งพอมาทำธีม WordPress ผมก็จะมักง่ายโดยการใช้แท็ก <code>&lt;script&gt;</code> อย่างเดิมนี่แหละ</p>
<pre class="brush: html; gutter: true" data-language="HTML &amp; PHP">&lt;script src=&quot;&lt;?php bloginfo(&#039;template_url&#039;); ?&gt;/js/script.js&quot;&gt;&lt;/script&gt;</pre>
<p>จริงๆ แล้ว WordPress มีฟังก์ชั่นสำหรับโหลด ​JavaScript อยู่แล้วนั่นก็คือ <code>wp_enqueue_script</code> ที่ผลลัพธ์ก็เหมือนกัน คือได้แท็ก <code>&lt;script&gt;</code> ออกมา แต่ฟังก์ชั่นนี้มีประสิทธิภาพมากกว่า ซึ่งก็คือ<span id="more-2011"></span></p>
<ol>
<li>จะโหลด JavaScript ก็ต่อเมื่อมันยังไม่ถูกโหลดเท่านั้น ตัวอย่างเช่นเวลาเรามึนๆ ใช้แท็ก <code>&lt;script&gt;</code> โหลดไฟล์ .js เข้ามาในเพจหลายรอบ ก็จะทำให้ทั้งเสียเวลาโหลดหน้าเพจเพิ่มขึ้น เสียเวลารันไฟล์ .js ตัวนั้นอีกโดยที่ไม่จำเป็น แต่ฟังก์ชั่น <code>wp_enqueue_script</code> จะช่วยเช็คให้ว่าไฟล์ที่เราจะใช้นั้นถูกโหลดเข้ามาในหน้าเพจหรือยัง ถ้ามีแล้วก็ไม่ต้องโหลดเข้ามาอีก</li>
<li>เราสามารถระบุไฟล์ .js ที่จำเป็นต้องโหลดก่อนไฟล์นี้ได้ เช่นพวก jQuery Plugin ต่างๆ ต้องโหลดเข้ามาหลังจาก jQuery</li>
</ol>
<h3>ตัวอย่างการใช้งาน</h3>
<p>ผมต้องการโหลด jQuery Colorbox ซึ่งเป็น plugin ของ jQuery เข้ามาใช้งานกับธีม <a href="https://github.com/armno/Sera-WordPress-Theme" target="_blank">Sera</a> นี้</p>
<ol>
<li>โหลด jquery.colorbox.min เข้ามาเก็บที่<br />
<code>/wp-content/themes/sera/js/jquery.colorbox.min.js</code></li>
<li>ในไฟล์ <code>functions.php</code> ของธีม เรียกใช้ฟังก์ชั่น <code>wp_enqueue_script</code></li>
</ol>
<pre class="brush: php; gutter: true" data-language="PHP">&lt;?php
wp_enqueue_script(
    &#039;colorbox&#039;,
    get_template_directory_uri() . &#039;/js/jquery.colorbox.min.js&#039;,
    &#039;jquery&#039;,
    &#039;1.3.19&#039;
);</pre>
<p>เพียงเท่านี้ เจ้าไฟล์ jquery.colorbox.min.js ก็จะถูกโหลดเข้ามาอย่างถูกหลักอนามัย (ซึ่งก็คือหลังจากที่ jQuery ถูกโหลดเข้ามาแล้วนั่นเอง)</p>
<h3>Parameters ของฟังก์ชั่น wp_enqueue_script</h3>
<ul>
<li><strong>$handle</strong> (string) ชื่อของ script ที่จะโหลดเข้ามา (lowercase เท่านั้น) WordPress จะเอาตัวนี้แหละไปเช็คว่ามันถูกโหลดเข้ามาในเพจหรือยัง อย่างของผมข้างบนก็เป็นชื่อ colorbox</li>
<li><strong>$src</strong> (string) ก็คือ path ที่เก็บไฟล์ .js ที่จะโหลดเข้ามา</li>
<li><strong>$deps</strong> (array) ไฟล์ที่จำเป็นก่อนโหลดไฟล์นี้ (dependencies) โค้ดข้างบนบอกว่าเป็น jquery ก็คือต้องโหลด jquery เข้ามาก่อน ถึงค่อยโหลดตัวนี้</li>
<li><strong>$ver</strong> (string) เวอร์ชั่นของไฟล์ .js เพื่อให้มั่นใจได้ว่าเครื่องของผู้ใช้จะได้ไฟล์เวอร์ชั่นเดียวกับบนเซิฟเวอร์ โดย WordPress จะเอาไปต่อเป็น query string ให้หลัง path ของไฟล์</li>
<li><strong>$in_footer</strong> (boolean) ถ้าต้องการใช้ script นี้โหลดที่ footer แทนที่จะเป็นในแท็ก <code>&lt;head&gt;</code> ก็เซ็ตให้เป็น true ไปครับ (การโหลด .js ไว้ท้ายๆ จะช่วยทำให้เว็บเราโหลดไวขึ้นนิดหน่อย)</li>
</ul>
<p>ฟังก์ชั่นนี้ไม่ return ค่าอะไรออกมานะครับ ข้อมูลเพิ่มเติมดูได้ที่ <a title="WordPress function wp_enqueue_script" href="http://codex.wordpress.org/Function_Reference/wp_enqueue_script" target="_blank">WordPress Codex/wp_enqueue_script</a> ได้เลยครับ</p>
<p>สำหรับผมเคยคิดว่าฟังก์ชั่นของ WordPress บางอันก็ดูใช้งานยุ่งยากเกินความจำเป็น และเคยละเลยไป แต่พอลองได้ทำเยอะๆ ก็พยายามจะใช้ตามที่ WordPress ให้มา ซึ่งบางทีก็ต้องไปอ่านเอาที่ <a title="WordPress Codex" href="http://codex.wordpress.org/" target="_blank">Codex</a> ถึงได้พบว่ามีดีกว่าเขียนแบบธรรมดา อย่างเช่นฟังก์ชั่นนี้เป็นต้นครับ</p>
]]></content:encoded>
			<wfw:commentRss>http://armno.in.th/2012/04/19/wp-enqueue-script-%e0%b9%81%e0%b8%97%e0%b8%a3%e0%b8%81-javascript-%e0%b9%83%e0%b8%99-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>querySelector() และ querySelectorAll() Selectors API</title>
		<link>http://armno.in.th/2012/03/26/queryselector-%e0%b9%81%e0%b8%a5%e0%b8%b0-queryselectorall-selectors-api/</link>
		<comments>http://armno.in.th/2012/03/26/queryselector-%e0%b9%81%e0%b8%a5%e0%b8%b0-queryselectorall-selectors-api/#comments</comments>
		<pubDate>Mon, 26 Mar 2012 16:09:42 +0000</pubDate>
		<dc:creator>ArmNo</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Selectors API]]></category>

		<guid isPermaLink="false">http://armno.in.th/?p=2008</guid>
		<description><![CDATA[querySelector() และ querySelectorAll() เป็น API ใหม่ใน HTML5 ที่ช่วยให้เรา query DOM โดยใช้ CSS Selector ได้ (คล้ายๆ jQuery)]]></description>
			<content:encoded><![CDATA[<p>ปกติ <a href="http://www.w3.org/DOM/" target="_blank">DOM</a> <em>(Document Object Model)</em> มี API method สำหรับการหา element จาก ID และจากชื่อ class อยู่แล้ว ตัวอย่างเช่น มี HTML แบบนี้</p>
<pre class="brush: html; gutter: true" data-language="HTML">&lt;p id=&quot;welcome&quot; class=&quot;message&quot;&gt;
Aloha! Welcome to Panda Empire!
&lt;/p&gt;</pre>
<p>เราจากสามารถหา element p ได้จาก ID โดย</p>
<pre class="brush: javascript; gutter: true" data-language="JavaScript">var p = document.getElementById(&#039;welcome&#039;);</pre>
<p>หรือหาจากชื่อ class</p>
<pre class="brush: javascript; gutter: true" data-language="JavaScript">var p = document.getElementsByClassName(&#039;message&#039;)[0];</pre>
<p>แต่ใน HTML5 มี <strong>Selectors API</strong> เกิดขึ้นมาทำให้เราสามารถใช้ CSS selector ในการหา element ได้ง่ายๆ เลย (อารมณ์เดียวกับ selector ใน jQuery) โดยใช้ method <code>querySelector()</code> หรือ <code>querySelectorAll()</code></p>
<p>จากตัวอย่างข้างบน เราสามารถเขียนใหม่โดยใช้ Selectors API ได้เป็น</p>
<pre class="brush: javascript; gutter: true" data-language="JavaScript">var p = document.querySelector(&#039;#welcome&#039;);</pre>
<p>หรือ</p>
<pre class="brush: javascript; gutter: true" data-language="JavaScript">var p = document.querySelector(&#039;.message&#039;);</pre>
<p>หรือ</p>
<pre class="brush: javascript; gutter: true" data-language="JavaScript">var p = document.querySelectorAll(&#039;.message&#039;)[0];</pre>
<p>ข้อสังเกตคือ parameter ที่เราส่งให้ <code>querySelector()</code> และ <code>querySelectorAll()</code> นั้นเป็น string ที่เป็น CSS Selector ต่างจากเดิมที่ใช้ชื่อ ID และ class</p>
<p>ส่วนความแตกต่างระหว่าง <code>querySelector()</code> และ <code>querySelectorAll()</code> คือ <code>querySelector()</code> จะ return ค่าเป็น Node แรกที่เจอใน document ส่วน <code>querySelectorAll()</code> นั้น return ค่าเป็น NodeList คล้ายๆ array ของ Node ทั้งหมดใน document ที่ตรงตามที่ระบุใน selector</p>
<p>สามารถใช้ CSS selector ที่ซับซ้อนๆ (รวมไปถึง CSS3 selector) เป็น parameter ในการ query DOM ได้ในครั้งเดียว เช่น</p>
<pre class="brush: javascript; gutter: true" data-language="JavaScript">var el = document.querySelector(&#039;.navigation li &gt; a#current&#039;);</pre>
<p>เปลี่ยน scope ของการ query DOM นอกเหนือจาก document element ก็ได้</p>
<pre class="brush: javascript; gutter: true" data-language="JavaScript">var ul = document.querySelector(&#039;#adminmenu&#039;);
var li = ul.querySelectorAll(&#039;li&#039;);</pre>
<p>chain ก็ยังได้</p>
<pre class="brush: javascript; gutter: true" data-language="JavaScript">var li = document.querySelector(&#039;#adminmenu&#039;).querySelectorAll(&#039;li&#039;);</pre>
<h3>ความเห็นส่วนตัว</h3>
<p>ผมเลือกใช้ Selectors API มากกว่า DOM API เพราะ</p>
<ol>
<li>ใช้ CSS Selector จำง่าย คล้าย jQuery</li>
<li>ไม่ว่าจะหาจาก ID หรือ class ก็ใช้ method เดียวกันได้</li>
<li>ประหยัดเวลาเขียน code ไม่ต้อง query DOM หลายๆ ครั้ง</li>
<li>ใช้งานได้กับ browser รุ่นใหม่ทั่วไป (ได้ถึง IE8) ส่วน <code>getElementsByClassName()</code> นั้นต้อง IE9 ขึ้นไป (แต่ IE8 จะใช้ CSS3 selector ไม่ได้นะ)</li>
</ol>
<p>ส่วนใครจะใช้แบบไหน ก็แล้วแต่ถนัด แล้วแต่ว่าจะรองรับ browser เก่าๆ ด้วยหรือเปล่า ถ้าต้องทำให้รองรับตั้งแต่ IE6 แล้วล่ะก็ Selectors API ก็อาจจะไม่ใช่คำตอบครับ เพราะ 2 method นี้ ใช้กับ IE6 IE7 ไม่ได้เด้อ</p>
<p>อ่านรายละเอียดเพิ่มเติม เกี่ยวกับ Selectors API ได้ที่</p>
<ul>
<li><a href="https://developer.mozilla.org/En/DOM/Document.querySelector" target="_blank">querySelector</a> และ <a href="https://developer.mozilla.org/en/DOM/document.querySelectorAll" target="_blank">querySelectorAll</a> จาก MDN</li>
<li><a href="http://www.w3.org/TR/selectors-api/" target="_blank">Selectors API Specifications</a> จาก W3</li>
<li><a href="http://caniuse.com/#search=querySelector" target="_blank">Can I use</a> ดูการ support ของแต่ละ browser</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://armno.in.th/2012/03/26/queryselector-%e0%b9%81%e0%b8%a5%e0%b8%b0-queryselectorall-selectors-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>จัดการ CSS3 Vendor Prefixes ด้วย prefixfree.js</title>
		<link>http://armno.in.th/2012/03/18/%e0%b8%88%e0%b8%b1%e0%b8%94%e0%b8%81%e0%b8%b2%e0%b8%a3-css3-vendor-prefixes-%e0%b8%94%e0%b9%89%e0%b8%a7%e0%b8%a2-prefixfree-js/</link>
		<comments>http://armno.in.th/2012/03/18/%e0%b8%88%e0%b8%b1%e0%b8%94%e0%b8%81%e0%b8%b2%e0%b8%a3-css3-vendor-prefixes-%e0%b8%94%e0%b9%89%e0%b8%a7%e0%b8%a2-prefixfree-js/#comments</comments>
		<pubDate>Sun, 18 Mar 2012 11:00:50 +0000</pubDate>
		<dc:creator>ArmNo</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Lea Verou]]></category>
		<category><![CDATA[PrefixFree]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://armno.in.th/?p=2001</guid>
		<description><![CDATA[prefixfree.js เป็น JavaScript ที่ช่วยจัดการใส่ vendor prefix ให้ CSS ให้เราเท่าที่จำเป็นครับ ทำให้เราไม่ต้องเขียน CSS ที่เป็น vendor prefix property เลย]]></description>
			<content:encoded><![CDATA[<p>ปกติเวลาเราเขียน CSS3 นั้นต้องเขียน prefix สำหรับ property บางตัว ที่ browser บางเวอร์ชั่นที่ยังไม่รู้จัก W3C standards เช่น gradient background ลากยาวมหึมา (โค้ดจาก <a href="http://css3please.com/" target="_blank">CSS3Please.com</a>)</p>
<pre class="brush: css; gutter: true" data-language="CSS">.box_gradient {
  background-color: #444444;
  background-image: -webkit-gradient(linear, left top, left bottom, from(#444444), to(#999999));
  background-image: -webkit-linear-gradient(top, #444444, #999999);
  background-image:    -moz-linear-gradient(top, #444444, #999999);
  background-image:     -ms-linear-gradient(top, #444444, #999999);
  background-image:      -o-linear-gradient(top, #444444, #999999);
  background-image:         linear-gradient(to bottom, #444444, #999999);
}</pre>
<p>เห็นโค้ดแล้วเหนื่อย <strong><a href="http://lea.verou.me/" target="_blank">Lea Verou</a></strong> เจ้าของเดียวกับ <a title="ทดลองเล่น CSS บน dabblet.com" href="http://armno.in.th/2012/03/12/%e0%b8%97%e0%b8%94%e0%b8%a5%e0%b8%ad%e0%b8%87%e0%b9%80%e0%b8%a5%e0%b9%88%e0%b8%99-css-%e0%b8%9a%e0%b8%99-dabblet-com/">dabblet</a> เลยทำ <a href="http://leaverou.github.com/prefixfree/" target="_blank">prefixfree.js</a> ขึ้นมาเพื่อเป็นตัวจัดการกับ prefix ต่างๆ ให้ โดยที่เราเขียนแค่เวอร์ชั่น W3C standards ตัว prefixfree.js ก็จะใส่ prefix ให้เท่าที่จำเป็น ขึ้นอยู่กับ browser ที่ใช้ครับ</p>
<p><a href="http://armno.in.th/wp-content/uploads/2012/03/prefixfree.jpg"><img class="alignnone size-medium wp-image-2002 colorbox-2001" title="prefixfree" src="http://armno.in.th/wp-content/uploads/2012/03/prefixfree-600x340.jpg" alt="" width="600" height="340" /></a></p>
<p>วิธีใช้ก็แค่เรียกใช้ prefixfree.js ในหน้าที่เราต้องการครับ</p>
<pre class="brush: html; gutter: true" data-language="HTML">&lt;script src=&quot;js/prefixfree.min.js&quot;&gt;&lt;/script&gt;</pre>
<p>เวลาเขียน CSS ก็เขียนแค่เวอร์ชั่นธรรมดา</p>
<pre class="brush: css; gutter: true" data-language="CSS">.box_gradient {
  background-image: linear-gradient(to bottom, #444444, #999999);
}</pre>
<p>พอไปรันใน browser ตัว prefixfree.js ก็จะเติม prefix ให้อัตโนมัติ ข้อดีก็คือ เราไม่ต้องไปจำ vendor prefix ที่ไม่ใช่มาตรฐานของ CSS3 ไม่ต้องเขียนให้เสียเวลา โค้ด CSS เราก็จะสั้นลงนิดหน่อย อีกอย่างก็คือ ดูไม่รกรุงรังเมื่อใช้ developer tools inspect ดูใน browser ครับ</p>
<p>ข้อมูลอื่นๆ อ่านได้จาก <a href="http://leaverou.github.com/prefixfree/" target="_blank">http://leaverou.github.com/prefixfree/</a> ครับ ลองใช้กันดูนะ</p>
]]></content:encoded>
			<wfw:commentRss>http://armno.in.th/2012/03/18/%e0%b8%88%e0%b8%b1%e0%b8%94%e0%b8%81%e0%b8%b2%e0%b8%a3-css3-vendor-prefixes-%e0%b8%94%e0%b9%89%e0%b8%a7%e0%b8%a2-prefixfree-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ทดลองเล่น CSS บน dabblet.com</title>
		<link>http://armno.in.th/2012/03/12/%e0%b8%97%e0%b8%94%e0%b8%a5%e0%b8%ad%e0%b8%87%e0%b9%80%e0%b8%a5%e0%b9%88%e0%b8%99-css-%e0%b8%9a%e0%b8%99-dabblet-com/</link>
		<comments>http://armno.in.th/2012/03/12/%e0%b8%97%e0%b8%94%e0%b8%a5%e0%b8%ad%e0%b8%87%e0%b9%80%e0%b8%a5%e0%b9%88%e0%b8%99-css-%e0%b8%9a%e0%b8%99-dabblet-com/#comments</comments>
		<pubDate>Mon, 12 Mar 2012 16:05:39 +0000</pubDate>
		<dc:creator>ArmNo</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Dabblet]]></category>
		<category><![CDATA[Lea Verou]]></category>

		<guid isPermaLink="false">http://armno.in.th/?p=1997</guid>
		<description><![CDATA[dabblet เป็นเหมือนสนามทดลอง CSS ให้เราได้เล่นกันก่อนนำไปใช้งานจริง โดย dabblet แบ่งพื้นที่เป็น 3 ส่วนคือ HTML, CSS แล้วก็ Result ซึ่งส่วน Result นั้นเป็น live preview จะอัพเดททันทีที่เราทำการแก้ไขโค้ด]]></description>
			<content:encoded><![CDATA[<p><a title="dabblet" href="http://dabblet.com" target="_blank">dabblet</a> เป็นเหมือนสนามทดลอง CSS ให้เราได้เล่นกันก่อนนำไปใช้งานจริง (คล้ายกับทางฝั่ง JavaScript ที่มี <a href="http://jsfiddle.net" target="_blank">JsFiddle</a> หรือ <a href="http://jsbin.com" target="_blank">JsBin</a> ให้เล่นกัน) โดย dabblet แบ่งพื้นที่เป็น 3 ส่วนคือ HTML, CSS แล้วก็ Result ซึ่งส่วน Result นั้นเป็น live preview จะอัพเดททันทีที่เราทำการแก้ไขโค้ด</p>
<p>ในส่วนที่เป็น value ต่างๆ นั้น เมื่อเอาเมาส์ไปชี้ก็จะมี live preview งอกออกมาเหมือนกัน preview ดูได้แทบจะทุกอย่างกันเลยทีเดียว ลองพิมพ์เล่นแล้วเอาเมาส์ไปจิ้มๆ ดูได้ครับ</p>
<p><a href="http://armno.in.th/wp-content/uploads/2012/03/dabblet.jpg"><img class="alignnone size-medium wp-image-1999 colorbox-1997" title="dabblet" src="http://armno.in.th/wp-content/uploads/2012/03/dabblet-600x503.jpg" alt="" width="600" height="503" /></a></p>
<p>ถ้าอยากเก็บโค้ดที่เราเล่นๆ นี้ไว้เพื่อใช้ต่อ ก็ Log in โดยใช้ account ของ <a href="http://github.com" target="_blank">Github</a> ได้ครับ โดยที่เมื่อเรากด save โค้ดก็จะถูกสร้างเป็น Gist บน <a href="http://gist.github.com" target="_blank">gist.github.com</a> ให้โดยอัตโนมัติ ครั้งต่อไปที่ save ก็จะถูกทำเป็น revision ไว้ให้ด้วยครับ สะดวกดี</p>
<p>dabblet ถูกพัฒนาโดย <strong><a href="http://lea.verou.me/" target="_blank">Lea Verou</a></strong> (คนนี้เก่งครับ แนะนำให้ตาม) เพิ่งเปิดตัวได้ไม่นาน ยังมีบั๊กอยู่บ้าง เอาไว้เล่นสนุกๆ (เพราะวึบวับน่ารักดี) หรือเอาไว้ใช้งานจริงจัง (เก็บ snippet เป็นเรื่องเป็นราว) ก็เหมาะทั้งนั้นครับผม</p>
<p>ปล. รูป screenshot เน่าไปหน่อย ขออภัยครับ ใครใช้ Skitch เป็นช่วยสอนหน่อยว่าจะ capture อะไรแบบนี้ได้ยังไง</p>
]]></content:encoded>
			<wfw:commentRss>http://armno.in.th/2012/03/12/%e0%b8%97%e0%b8%94%e0%b8%a5%e0%b8%ad%e0%b8%87%e0%b9%80%e0%b8%a5%e0%b9%88%e0%b8%99-css-%e0%b8%9a%e0%b8%99-dabblet-com/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ทำความรู้จักกับ Normalize.css</title>
		<link>http://armno.in.th/2012/03/11/%e0%b8%97%e0%b8%b3%e0%b8%84%e0%b8%a7%e0%b8%b2%e0%b8%a1%e0%b8%a3%e0%b8%b9%e0%b9%89%e0%b8%88%e0%b8%b1%e0%b8%81%e0%b8%81%e0%b8%b1%e0%b8%9a-normalize-css/</link>
		<comments>http://armno.in.th/2012/03/11/%e0%b8%97%e0%b8%b3%e0%b8%84%e0%b8%a7%e0%b8%b2%e0%b8%a1%e0%b8%a3%e0%b8%b9%e0%b9%89%e0%b8%88%e0%b8%b1%e0%b8%81%e0%b8%81%e0%b8%b1%e0%b8%9a-normalize-css/#comments</comments>
		<pubDate>Sun, 11 Mar 2012 15:39:31 +0000</pubDate>
		<dc:creator>ArmNo</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS Reset]]></category>
		<category><![CDATA[Normalize.css]]></category>

		<guid isPermaLink="false">http://armno.in.th/?p=1993</guid>
		<description><![CDATA[ระยะหลังมานี้เห็น Web Designer หลายคนหันมาใช้ Normalize.css กันมากขึ้น รวมไปถึงโปรเจ็คอย่าง HTML5 Boilerplate หรือ Twitter Bootstrap ก็ยังใช้ Normalize.css ด้วยเหมือนกัน]]></description>
			<content:encoded><![CDATA[<p>Web Developer หลายคนคงรู้จักและคุ้นเคยกับ <a href="https://www.google.co.th/#hl=th&amp;q=css+reset" target="_blank">CSS Reset</a> เป็นอย่างดี บนโลกนี้ก็มี CSS Reset หลายตัวให้เลือกใช้ CSS Framework เกือบทุกตัวก็ยังมี reset เป็นของตัวเองอีกต่างหาก เรียกได้ว่า reset ได้ครองโลก CSS มาอย่างยาวนาน จนกระทั่งมียอดกระทาชาย 2 หนุ่ม คือ <strong>Nicolas Gallagher</strong> (@necolas) และ <strong>Jonathan Neal</strong> (@jon_neal) พัฒนา <a href="http://necolas.github.com/normalize.css/" target="_blank">Normalize.css</a> ขึ้นมาด้วยจุดประสงค์ที่แตกต่างออกไปจาก CSS Reset คือ ไม่ต้องให้ทุก browser เริ่มกำหนด style ใหม่จาก 0 แต่เน้นปรับการแสดงผล style เริ่มต้นให้ตรงกันทุกๆ browser มากกว่า</p>
<h3>ความแตกต่างระหว่าง CSS Reset กับ Normalize.css</h3>
<blockquote><p>อ้างอิงจาก <a href="http://nicolasgallagher.com/about-normalize-css/" target="_blank">เว็บของผู้พัฒนา</a> นะครับ</p></blockquote>
<ul>
<li>Normalize.css รักษา style ปกติของ browser ไว้ โดยที่เราไม่จำเป็นต้องกำหนด style ใหม่ให้กับทุกๆ element อีกครั้งหนึ่ง</li>
<li>Normalize.css แก้บั๊กหลายๆ อย่างที่อยู่นอกเหนือ CSS Reset เช่น HTML5 search form หรือ การแสดงผล SVG เป็นต้น</li>
<li>Normalize.css ดูไม่รกรุงรังเมื่อดูจาก developer tools ทั้งหลาย  ที่เจอบ่อยๆ เวลา inspect element ดู เมื่อใช้ reset<br />
<a href="http://armno.in.th/wp-content/uploads/2012/03/reset-cluttered.jpg"><img class="alignnone size-full wp-image-1994 colorbox-1993" title="reset-cluttered" src="http://armno.in.th/wp-content/uploads/2012/03/reset-cluttered.jpg" alt="" width="557" height="277" /></a></li>
<li>Normalize.css แยกเป็นส่วนๆ ชัดเจน เช่น form, typography ส่วนไหนที่เราไม่ต้องการ ก็ลบออกไปได้</li>
<li>Normalize.css มี document ที่ดีกว่า CSS Reset .. ที่เห็นได้ชัดก็คือมีอธิบายในตัวโค้ดเลย ส่วน CSS Reset มักจะมาแบบแห้งๆ ไม่มีอธิบายอะไร นอกจากนี้ Normalize.css ยังมี document บน Github ที่ละเอียดดีอีกด้วย</li>
</ul>
<h3>ควรเลือกใช้ CSS Reset หรือ Normalize.css ?</h3>
<p>แล้วแต่สไตล์ครับ CSS Reset กับ Normalize.css มันตอบโจทย์คนละอย่างกัน อยู่ที่ว่าเราอยากเริ่มโปรเจ็คต์แบบไหน แบบแห้งๆ ดิบๆ เราเขียนเองใหม่หมดทุกอย่าง ก็ใช้ reset ได้ แต่ถ้าเบื่อที่จะต้องมากำหนด style ใหม่ให้กับแต่ละ element ก็ใช้ Normalize.css ดีกว่า</p>
<p>ผมว่า reset เหมาะกับคนที่วางโครงสร้าง CSS ดีๆ รอบคอบๆ หน่อย สามารถเขียนกำหนด style ให้กับทุก element ที่ถูก reset ได้ครบ (คนพวกนี้ บางคนก็มี reset เป็นของตัวเองด้วยซ้ำ) ส่วน Normalize.css นั้นน่าจะเหมาะกับคนที่ชอบเขียน CSS เท่าที่จำเป็น หรือไม่ชอบเขียนอะไรซ้ำซ้อนครับ</p>
<p>ระยะหลังมานี้ผมเลือกใช้ Normalize.css มากกว่า CSS Reset ครับผม</p>
<p>อ่านเพิ่มเติม <a href="http://stackoverflow.com/questions/6887336/what-is-the-different-between-normalize-css-and-reset-css">What is the different between Normalize.css and Reset CSS?</a> (StackOverflow)</p>
]]></content:encoded>
			<wfw:commentRss>http://armno.in.th/2012/03/11/%e0%b8%97%e0%b8%b3%e0%b8%84%e0%b8%a7%e0%b8%b2%e0%b8%a1%e0%b8%a3%e0%b8%b9%e0%b9%89%e0%b8%88%e0%b8%b1%e0%b8%81%e0%b8%81%e0%b8%b1%e0%b8%9a-normalize-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ความแตกต่างระหว่าง Git กับ SVN</title>
		<link>http://armno.in.th/2012/02/26/%e0%b8%84%e0%b8%a7%e0%b8%b2%e0%b8%a1%e0%b9%81%e0%b8%95%e0%b8%81%e0%b8%95%e0%b9%88%e0%b8%b2%e0%b8%87%e0%b8%a3%e0%b8%b0%e0%b8%ab%e0%b8%a7%e0%b9%88%e0%b8%b2%e0%b8%87-git-%e0%b8%81%e0%b8%b1%e0%b8%9a-svn/</link>
		<comments>http://armno.in.th/2012/02/26/%e0%b8%84%e0%b8%a7%e0%b8%b2%e0%b8%a1%e0%b9%81%e0%b8%95%e0%b8%81%e0%b8%95%e0%b9%88%e0%b8%b2%e0%b8%87%e0%b8%a3%e0%b8%b0%e0%b8%ab%e0%b8%a7%e0%b9%88%e0%b8%b2%e0%b8%87-git-%e0%b8%81%e0%b8%b1%e0%b8%9a-svn/#comments</comments>
		<pubDate>Sun, 26 Feb 2012 05:49:24 +0000</pubDate>
		<dc:creator>ArmNo</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[SVN]]></category>
		<category><![CDATA[Version Control]]></category>

		<guid isPermaLink="false">http://armno.in.th/?p=1987</guid>
		<description><![CDATA[ทุกวันนี้ผมใช้ Git เป็นหลัก ก่อนหน้านี้ผมเคยศึกษาและลองใช้ Subversion (SVN) ดูบ้างตอนฝึกงาน และตอนทำโปรเจ็คจบ พี่เต้ (@siwawong) เคยถามไว้นานแล้วว่า Git กับ SVN นั้นต่างกันยังไง ผมก็เลยลองไปค้นข้อมูลดูครับ]]></description>
			<content:encoded><![CDATA[<p>บริษัทที่ผมทำงานอยู่ใช้ <strong>Git</strong> เป็น version control system ครับ ก่อนหน้านี้ผมเคยศึกษาและลองใช้ Subversion (SVN) ดูบ้างตอนฝึกงาน และตอนทำโปรเจ็คจบ พี่เต้ (<a href="https://twitter.com/siwawong" target="_blank">@siwawong</a>) เคยถามไว้นานแล้วว่า Git กับ SVN นั้นต่างกันยังไง ผมก็เลยลองไปค้นข้อมูลดูครับ</p>
<blockquote><p>ผมไม่เคยใช้ SVN ในการทำงานจริง (แบบที่มีทีมหลายๆ คน) เพราะฉะนั้นเรื่องลึกๆ ของ SVN ผมจะไม่ค่อยรู้นะครับ</p></blockquote>
<p>ไม่ขอลงรายละเอียดว่า Git หรือ SVN คืออะไรนะครับ ลองตามไปอ่านได้ที่ เว็บไซต์ของ <a href="http://git-scm.com/" target="_blank">Git</a> และ ​<a href="http://subversion.tigris.org/" target="_blank">SVN</a> ได้เลยครับผม</p>
<p><a href="http://armno.in.th/wp-content/uploads/2012/02/subversion_logo_hor-468x641.png"><img class="alignnone size-full wp-image-1991 colorbox-1987" title="subversion_logo_hor-468x64" src="http://armno.in.th/wp-content/uploads/2012/02/subversion_logo_hor-468x641.png" alt="" width="468" height="64" /></a></p>
<p><a href="http://armno.in.th/wp-content/uploads/2012/02/git-logo-rezied.jpg"><img class="alignnone size-full wp-image-1992 colorbox-1987" title="git-logo-rezied" src="http://armno.in.th/wp-content/uploads/2012/02/git-logo-rezied.jpg" alt="" width="468" height="117" /></a></p>
<h3>Distributed vs. Centralized</h3>
<p>เต็มๆ ก็คือ Git เป็น distributed version control system ที่เราสามารถแยก version control ออกเป็น repo ย่อยๆ ได้ แต่ละ repo ย่อยก็สามารถทำ versioning ของตัวเองได้อีกที (เป็น local repo ที่ไม่เกี่ยวกับ remote repo เลย) ส่วน SVN นั้นเป็น centralized version control system คือ version ทั้งหมดจะถูกเก็บที่ remote repo ดังนั้น version ของทุกคนในทีมก็จะตรงกันทั้งหมด ไม่มี local repo ครับ</p>
<p>ประเด็นนี้ก็เลยทำให้ Git สามารถทำงานแบบ offline ได้ คือ clone repo มาแล้วจะแก้ไขโค้ดแล้ว commit ไปยัง local repo ก่อนได้ ส่วน SVN นั้น ทุกครั้งที่ commit นั้นต้องไปอัพเดท version กับ server (commit ไปยัง SVN server) ถ้า offline อยู่ หรือเชื่อมต่อกับ server ไม่ได้ ก็จะไม่สามารถ commit ได้ครับ</p>
<h3>การรันเลข revision</h3>
<p>Git ใช้รันเลข revision ด้วย hashed string เช่น <code>247ece...8a8572</code> ส่วน SVN นั้นรันเป็นเลข integer ธรรมดา เหตุผลที่เป็นแบบนี้เพราะถ้า Git ใช้ integer ก็อาจจะทำให้ revision number ของเราใน local repo ไปชนกับของคนอื่นได้ (เช่น version 3 ใน repo ของเรา อาจไม่เหมือนกัน version 3 ในเครื่องของเพื่อน ซึ่งเกิดขึ้นได้เพราะมันเป็น distributed นี่แหละ) สำหรับ SVN รันเป็น integer ได้เพราะทุกครั้งที่ commit การ commit นั้นก็จะพุ่งไปยัง SVN server เลย และเลข revision ก็จะถูกเพิ่มไปอีก 1 ดังนั้นเลข revision ต้องตรงกันทุกคนอยู่แล้ว</p>
<div id="attachment_1990" class="wp-caption alignnone" style="width: 410px"><a href="http://armno.in.th/wp-content/uploads/2012/02/git-version-number.jpg"><img class="size-full wp-image-1990 colorbox-1987" title="git-version-number" src="http://armno.in.th/wp-content/uploads/2012/02/git-version-number.jpg" alt="" width="400" height="244" /></a><p class="wp-caption-text">revision number ของ Git</p></div>
<h3>การทำ Branch</h3>
<p>ก็คือการแตกหน่อ repo ออกมาเป็นอีกหน่อนึง ก็ต่อเนื่องมาจากข้อแรกครับ การที่ Git เป็น distributed ทำให้เราสามารถสร้าง local branch ที่ไม่เกี่ยวของกับชาวบ้านได้ไม่จำกัด (ในกรณีที่เราต้องการทำอะไรแปลกๆ แต่ไม่อยากให้กระทบกับคนในทีมด้วย) ส่วน SVN นั้น branch ต่างๆ ก็ต้องอยู่ที่ SVN server ด้วย ดังนั้นถ้ามี branch ใหม่งอกออกมา ทุกคนในทีมก็จะได้เหมือนๆ กันครับ</p>
<p>แต่ Git ก็ยังสามารถทำ remote branch ได้โดยการ push local branch ไปยัง remote repo ได้ครับ</p>
<p>ประเด็นสำคัญๆ ก็คงประมาณนี้ครับ จะเห็นได้ว่าทุกอย่างล้วนต่อมาจากข้อแรก (distributed &amp; centralized) ซึ่งต่างกันตั้งแต่ออกแบบแล้ว นอกจากนี้ก็ยังมีประเด็นยิบย่อยอีกมากมาย (ขนาด repo, ความเร็ว, ฯลฯ) ลองตามไปอ่านต่อได้ที่</p>
<ul>
<li><a href="http://boxysystems.com/index.php/5-fundamental-differences-between-git-svn/" target="_blank">5 Fundamental differences between GIT &amp; SVN</a></li>
<li><a href="https://git.wiki.kernel.org/articles/g/i/t/GitSvnCrashCourse_512d.html" target="_blank">Git SVN Crash Course</a></li>
<li><a href="http://www.slideshare.net/technicalpickles/git-as-a-subversion-replacement" target="_blank">Git As A Subversion Replacement (Slide)</a> (แนะนำ)</li>
</ul>
<p>ใครใช้งานตัวไหน คล่องตัวไหน ก็มาแชร์ไอเดียกันได้ครับผม</p>
]]></content:encoded>
			<wfw:commentRss>http://armno.in.th/2012/02/26/%e0%b8%84%e0%b8%a7%e0%b8%b2%e0%b8%a1%e0%b9%81%e0%b8%95%e0%b8%81%e0%b8%95%e0%b9%88%e0%b8%b2%e0%b8%87%e0%b8%a3%e0%b8%b0%e0%b8%ab%e0%b8%a7%e0%b9%88%e0%b8%b2%e0%b8%87-git-%e0%b8%81%e0%b8%b1%e0%b8%9a-svn/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Sublime Text 2 อัพเดทเวอร์ชั่นใหม่ 2181</title>
		<link>http://armno.in.th/2012/02/23/sublime-text-2-%e0%b8%ad%e0%b8%b1%e0%b8%9e%e0%b9%80%e0%b8%94%e0%b8%97%e0%b9%80%e0%b8%a7%e0%b8%ad%e0%b8%a3%e0%b9%8c%e0%b8%8a%e0%b8%b1%e0%b9%88%e0%b8%99%e0%b9%83%e0%b8%ab%e0%b8%a1%e0%b9%88-2181/</link>
		<comments>http://armno.in.th/2012/02/23/sublime-text-2-%e0%b8%ad%e0%b8%b1%e0%b8%9e%e0%b9%80%e0%b8%94%e0%b8%97%e0%b9%80%e0%b8%a7%e0%b8%ad%e0%b8%a3%e0%b9%8c%e0%b8%8a%e0%b8%b1%e0%b9%88%e0%b8%99%e0%b9%83%e0%b8%ab%e0%b8%a1%e0%b9%88-2181/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 09:56:05 +0000</pubDate>
		<dc:creator>ArmNo</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Sublime Text 2]]></category>
		<category><![CDATA[Text Editor]]></category>

		<guid isPermaLink="false">http://armno.in.th/?p=1980</guid>
		<description><![CDATA[Editor โปรดของผม Sublime Text 2 อัพเดทเวอร์ชั่นใหม่แล้ว (เมื่อวาน) เป็น build 2181 สิ่งที่เปลี่ยนไปแบบพอสังเกตได้ก็มีดังนี้ครับ]]></description>
			<content:encoded><![CDATA[<p>Editor โปรดของผม <a title="Sublime Text 2 – Editor เครื่องยนต์ V12" href="http://armno.in.th/2011/09/20/sublime-text-2-editor-%e0%b9%80%e0%b8%84%e0%b8%a3%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b8%87%e0%b8%a2%e0%b8%99%e0%b8%95%e0%b9%8c-v12/">Sublime Text 2</a> อัพเดทเวอร์ชั่นใหม่แล้ว (เมื่อวาน) เป็น build 2181 สิ่งที่เปลี่ยนไปแบบพอสังเกตได้ก็มีดังนี้ครับ</p>
<h3>Icon ใหม่</h3>
<div id="attachment_1981" class="wp-caption aligncenter" style="width: 266px"><a href="http://armno.in.th/wp-content/uploads/2012/02/sublime_text_icon_2181.png"><img class="size-full wp-image-1981  colorbox-1980" title="Sublime Text 2 Build 2181 New Icon" src="http://armno.in.th/wp-content/uploads/2012/02/sublime_text_icon_2181.png" alt="" width="256" height="256" /></a><p class="wp-caption-text">Sublime Text 2 Build 2181 New Icon</p></div>
<p>จากเดิมที่เป็นกรอบสี่เหลี่ยมเทาๆ ถึงเวอร์ชั่นนี้มีไอคอนสวยๆ กับเขาเสียทีครับ เป็นรูปปุ่ม S บนคีย์บอร์ด</p>
<h3>ปรับปรุงการ render text</h3>
<p>ระยะห่างระหว่างตัวอักษร กับระยะบรรทัดเปลี่ยนไปนิดหน่อย ผมลองเทียบกับดูระหว่าง build นี้กับ build ก่อนหน้า (2165) ใช้ฟอนต์ Droid Sans Mono ขนาด 11 รันบน Ubuntu 10.10 ครับ (จริงๆ ผมชอบแบบเก่ามากกว่านะ)</p>
<div id="attachment_1983" class="wp-caption alignnone" style="width: 610px"><a href="http://armno.in.th/wp-content/uploads/2012/02/old-build.png"><img class="size-medium wp-image-1983 colorbox-1980" title="old-build" src="http://armno.in.th/wp-content/uploads/2012/02/old-build-600x276.png" alt="" width="600" height="276" /></a><p class="wp-caption-text">ฺBuild 2165</p></div>
<div id="attachment_1982" class="wp-caption alignnone" style="width: 610px"><a href="http://armno.in.th/wp-content/uploads/2012/02/new-build.png"><img class="size-medium wp-image-1982 colorbox-1980" title="new-build" src="http://armno.in.th/wp-content/uploads/2012/02/new-build-600x256.png" alt="" width="600" height="256" /></a><p class="wp-caption-text">Build 2181</p></div>
<h3>เมนู Settings ใหม่</h3>
<p>จากเดิมที่มี Global Settings กับ File Settings แยกกัน ตอนนี้ถูกยุบรวมกันเหลือเพียง Settings อย่างเดียว ง่ายดี ไม่งง (อ่าน <a title="แก้ไขการตั้งค่าต่างๆ ใน Sublime Text 2" href="http://armno.in.th/2011/12/11/%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87%e0%b8%84%e0%b9%88%e0%b8%b2-sublime-text-2/">วิธีตั้งค่าต่างๆ ใน Sublime Text 2</a>)</p>
<h3>เพิ่ม Word Highlighing</h3>
<p>ความสามารถนี้มีไว้ highlight ตำแหน่งของคำที่เราเลือกในไฟล์นั้นครับ จากเดิมต้องลง package ชื่อว่า <strong>WordHighlighter</strong> จาก Package Control แต่ตอนนี้ติดมากับ Sublime Text 2 แล้ว ไม่ต้องลง Plugin เพิ่ม</p>
<div id="attachment_1984" class="wp-caption alignnone" style="width: 529px"><a href="http://armno.in.th/wp-content/uploads/2012/02/word-highlight.png"><img class="size-full wp-image-1984 colorbox-1980" title="Sublime Text 2 Build 2181 Word Highlighter" src="http://armno.in.th/wp-content/uploads/2012/02/word-highlight.png" alt="" width="519" height="418" /></a><p class="wp-caption-text">Sublime Text 2 Build 2181 Word Highlighter</p></div>
<p>นอกจากนี้ก็ยังมีฟีเจอร์อื่นอีกมากมาย ตามไปอ่านทั้งหมดได้ <a href="http://www.sublimetext.com/2" target="_blank">ที่นี่</a> ครับ</p>
]]></content:encoded>
			<wfw:commentRss>http://armno.in.th/2012/02/23/sublime-text-2-%e0%b8%ad%e0%b8%b1%e0%b8%9e%e0%b9%80%e0%b8%94%e0%b8%97%e0%b9%80%e0%b8%a7%e0%b8%ad%e0%b8%a3%e0%b9%8c%e0%b8%8a%e0%b8%b1%e0%b9%88%e0%b8%99%e0%b9%83%e0%b8%ab%e0%b8%a1%e0%b9%88-2181/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ติดตามข่าว Web Development รายสัปดาห์</title>
		<link>http://armno.in.th/2012/02/18/%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b2%e0%b8%a1%e0%b8%82%e0%b9%88%e0%b8%b2%e0%b8%a7-web-development-%e0%b8%a3%e0%b8%b2%e0%b8%a2%e0%b8%aa%e0%b8%b1%e0%b8%9b%e0%b8%94%e0%b8%b2%e0%b8%ab%e0%b9%8c/</link>
		<comments>http://armno.in.th/2012/02/18/%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b2%e0%b8%a1%e0%b8%82%e0%b9%88%e0%b8%b2%e0%b8%a7-web-development-%e0%b8%a3%e0%b8%b2%e0%b8%a2%e0%b8%aa%e0%b8%b1%e0%b8%9b%e0%b8%94%e0%b8%b2%e0%b8%ab%e0%b9%8c/#comments</comments>
		<pubDate>Sat, 18 Feb 2012 10:35:07 +0000</pubDate>
		<dc:creator>ArmNo</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Newsletter]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://armno.in.th/?p=1973</guid>
		<description><![CDATA[ข้อดีของ newsletter พวกนี้ก็คือ เราไม่ต้องไปหาให้เสียเวลา มีคนสรุปมาให้เราแล้วครับว่า ในรอบสัปดาห์ที่ผ่านมานั้น มีอะไรเกิดขึ้นในแวดวงบ้าง เราแค่ทิ้ง email ไว้จากนั้นก็จะมีข่าวคราวมาอัพเดททุกสัปดาห์ ส่วนข้อเสียก็คืออาจจะช้าไปบ้างเมื่อเทียบกับ Twitter ครับผม]]></description>
			<content:encoded><![CDATA[<p>เมื่อตอนที่ผมเริ่มทำเว็บไซต์จริงๆ จังๆ มักจะตามข่าวคราวเอาจาก Feeds Reader อย่าง <a href="http://www.google.com/reader" target="_blank">Google Reader</a> หรือ <a href="http://www.feedly.com" target="_blank">Feedly</a> เป็นประจำ พอต่อมาเวลาอ่าน feeds น้อยลง (แต่จำนวน feeds นั้นมากขึ้นทุกวัันๆ) ก็หันมาตามข่าวจาก Twitter แทน จนเดี๋ยวนี้เรียกได้ว่าไม่ได้อ่าน feeds เลย (แก่แล้วขี้เกียจ) แต่บางครั้ง Twitter ก็ไปไวมากจนอาจทำให้เราพลาดประเด็นสำคัญๆ ไปได้ ก็ต้องอาศัยการสมัครรับ email newsletter รายสัปดาห์มาช่วยครับ</p>
<p>ข้อดีของ newsletter พวกนี้ก็คือ เราไม่ต้องไปหาให้เสียเวลา มีคนสรุปมาให้เราแล้วครับว่า ในรอบสัปดาห์ที่ผ่านมานั้น มีอะไรเกิดขึ้นในแวดวงบ้าง เราแค่ทิ้ง email ไว้จากนั้นก็จะมีข่าวคราวมาอัพเดททุกสัปดาห์ ส่วนข้อเสียก็คืออาจจะช้าไปบ้างเมื่อเทียบกับ Twitter ครับผม</p>
<p>ที่ผมรับ newsletter และอ่านประจำก็มีอยู่ 3 เว็บด้วยกันครับ</p>
<h3><a href="http://javascriptweekly.com/" target="_blank">1. JavaScript Weekly</a></h3>
<p><a href="http://armno.in.th/wp-content/uploads/2012/02/javascript-weekly.jpg"><img class=" wp-image-1977 alignnone colorbox-1973" title="javascript-weekly" src="http://armno.in.th/wp-content/uploads/2012/02/javascript-weekly-600x400.jpg" alt="" /></a></p>
<p>ทุกอย่างที่เกียวกับ JavaScript ไม่ว่าจะเป็น framework/library ต่างๆ เทคนิค บทความวิเคราะห์วิจารณ์ มีทุกรูปแบบ</p>
<h3><a href="http://html5weekly.com/" target="_blank">2. HTML5 Weekly</a></h3>
<p><a href="http://armno.in.th/wp-content/uploads/2012/02/html5-weekly.jpg"><img class=" wp-image-1975 alignnone colorbox-1973" title="html5-weekly" src="http://armno.in.th/wp-content/uploads/2012/02/html5-weekly-600x400.jpg" alt="" /></a></p>
<p>เพิ่งจะเกิดได้ไม่นานนัก (ปัจจุบัน issue 10) แต่คุณภาพก็คับแก้ว เนื้อหาเกี่ยวกับเทคโนโลยี HTML5 ทุกอย่าง รวมไปถึง CSS3 ด้วยบางส่วน</p>
<h3><a href="http://web-design-weekly.com/" target="_blank">3. Web Design Weekly</a></h3>
<p><a href="http://armno.in.th/wp-content/uploads/2012/02/webdesign-weekly.jpg"><img class=" wp-image-1976 alignnone colorbox-1973" title="webdesign-weekly" src="http://armno.in.th/wp-content/uploads/2012/02/webdesign-weekly-600x399.jpg" alt="" /></a></p>
<p>ส่วนมากจะเกี่ยวกับ CSS ครับ และก็มี UX design บ้างนิดหน่อย แต่ไม่ค่อยมีเรื่อง graphic design หรือ web design แบบที่เราเข้าใจกันซักเท่าไหร่ครับ</p>
<p>แถมอีกอันสำหรับชาว Ruby (แต่ผมไม่ได้รับนะ เพราะว่าไม่ได้เขียน Ruby)</p>
<h3><a href="http://rubyweekly.com/" target="_blank">4. Ruby Weekly</a></h3>
<p><a href="http://armno.in.th/wp-content/uploads/2012/02/ruby-weekly.jpg"><img class=" wp-image-1974 alignnone colorbox-1973" title="ruby-weekly" src="http://armno.in.th/wp-content/uploads/2012/02/ruby-weekly-600x400.jpg" alt="" /></a></p>
<p>มีทั้ง Ruby, Rails รวมไปถึงฝั่ง front-end อย่าง CoffeeScript หรือ Haml</p>
<p>นอกจากนี้ยังมีอีกเยอะแยะมากมาย (และคงเพิ่มขึ้นเรื่อยๆ) ชอบอันไหน สนใจเรื่องอะไรก็ลองไปสมัครรับ newsletter กันดูครับ</p>
<p><em>ปล. JavaScript Weekly, HTML5 Weekly, กับ Ruby Weekly มาจากทีมสร้างเดียวกันครับ</em></p>
]]></content:encoded>
			<wfw:commentRss>http://armno.in.th/2012/02/18/%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b2%e0%b8%a1%e0%b8%82%e0%b9%88%e0%b8%b2%e0%b8%a7-web-development-%e0%b8%a3%e0%b8%b2%e0%b8%a2%e0%b8%aa%e0%b8%b1%e0%b8%9b%e0%b8%94%e0%b8%b2%e0%b8%ab%e0%b9%8c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>สั่งซื้อ iPhone 4S จาก Apple Online Store</title>
		<link>http://armno.in.th/2012/02/08/%e0%b8%aa%e0%b8%b1%e0%b9%88%e0%b8%87%e0%b8%8b%e0%b8%b7%e0%b9%89%e0%b8%ad-iphone-4s-%e0%b8%88%e0%b8%b2%e0%b8%81-apple-online-store/</link>
		<comments>http://armno.in.th/2012/02/08/%e0%b8%aa%e0%b8%b1%e0%b9%88%e0%b8%87%e0%b8%8b%e0%b8%b7%e0%b9%89%e0%b8%ad-iphone-4s-%e0%b8%88%e0%b8%b2%e0%b8%81-apple-online-store/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 14:12:41 +0000</pubDate>
		<dc:creator>ArmNo</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[AIS]]></category>
		<category><![CDATA[Apple Online Store]]></category>
		<category><![CDATA[DHL]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://armno.in.th/?p=1969</guid>
		<description><![CDATA[ผมเพิ่งซื้อโทรศัพท์เครื่องใหม่ครับ เป็น iPhone 4S สั่งจาก Apple Store Thailand ก็ขอเล่าประสบการณ์การซื้อของจาก Apple Online Store ครั้งแรก แบ่งปันกันนะครับ]]></description>
			<content:encoded><![CDATA[<p>ผมเพิ่งซื้อโทรศัพท์เครื่องใหม่ครับ เป็น iPhone 4S สั่งจาก Apple Store Thailand ก็ขอเล่าประสบการณ์การซื้อของจาก Apple Online Store ครั้งแรก แบ่งปันกันนะครับ</p>
<h3>สั่งซื้อ</h3>
<p>ผมใช้บัตรเดบิต Be1st ในการสั่งซื้อครับ (เนื่องจากไม่มีบัตรเครดิต) ตอนแรกนั้นไม่สามารถจบการสั่งซื้อได้ ไปติดขั้นตอนสุดท้ายตรงที่การตัดเงินจากบัตร คุยกับทาง call center ของธนาคารได้ความว่า บัตรอาจกำหนดวงเงินต่อวันไว้ต่ำเกินไป ผมเช็คใน internet banking ดูแล้ว วงเงินต่อวันอยู่ที่ 50,000 บาท แต่ทาง call center ก็แจ้งมาว่าวงเงินใน internet banking นั้นเฉพาะกับการใช้จ่ายใน internet banking ไม่เกี่ยวกับช่องทางอื่น ผมจึงเปลี่ยนวงเงินบัตรผ่านระบบโทรศัพท์อัตโนมัติ และก็สามารถสั่งซื้อ iPhone 4S ได้ครับ เมื่อสั่งซื้อเสร็จแล้ว Apple ก็ส่งอีเมลมาให้ครับว่าได้รับออร์เดอร์แล้ว</p>
<p><a href="http://armno.in.th/wp-content/uploads/2012/02/order-acknowledgement.jpg"><img class="alignnone size-medium wp-image-1970 colorbox-1969" title="order-acknowledgement" src="http://armno.in.th/wp-content/uploads/2012/02/order-acknowledgement-600x410.jpg" alt="" width="600" height="410" /></a></p>
<h3><span id="more-1969"></span>รอ ..</h3>
<p>ผมสั่งซื้อไปในช่วงบ่ายของวันที่ 31 มกราคม หลังจากนั้นก็รออย่างเดียวเลย ในระหว่างนี้ก็เช็คทางเว็บไซต์ทุกวันครับ ยังอยู่ในขั้นตอน processing item</p>
<h3>ส่งของ 6/2/2012</h3>
<p>ประมาณบ่ายๆ ของวันที่ 6 กุมภาพันธ์ ก็ได้รับอีเมลฉบับที่สองจาก Apple แจ้งว่า iPhone นั้นได้ถูกส่งออกมาแล้ว จากกำหนดส่งจริงวันที่ 10 ก็เท่ากับว่าส่งมาก่อนกำหนดประมาณ 4 วันครับผม ในอีเมลมีลิงก์ให้ track shipment ดูได้ว่าของของเราตอนนี้อยู่ที่ไหนแล้ว ปกติผมก็เช็คจากลิงก์ที่อยู่ในอีเมลครับ แต่พอของมาถึงไทย จะมีอยู่สถานะนึงเป็น Please Contact DHL BKK ผมไม่แน่ใจว่าติดปัญหาอะไรรึเปล่า เลยโทรไปถาม DHL ที่กรุงเทพครับ ได้ความว่าการส่งไม่ติดปัญหาอะไร (ขอแอบชม call center ของ  DHL หน่อยครับ บริการดีมาก ตรงประเด็น กระชับดี พูดเพราะอีกด้วย)</p>
<p>หลังจากที่ของมาถึงเมืองไทยแล้ว หากใครอยากเช็คสถานะการส่งของต่อ แนะนำว่าเอาเลขใบนำส่งสินค้าไปเช็คที่ <a href="http://www.dhl.co.th" target="_blank">dhl.co.th</a> ได้เลยครับ เป็นภาษาไทยด้วยนะ</p>
<h3>ได้รับของแล้ว 8/2/2012</h3>
<p>เจ้าหน้าที่จาก DHL โทรหาผมตั้งแต่ 9 โมงเพื่อเช็คที่อยู่ จากนั้นของก็มาถึงมือผมในเวลาประมาณ 11 โมงครับ (สงสัยไปมาหลายที่) ผมก็จัดการเปิดเครื่องเพื่อที่จะลองใช้เลย ปรากฏว่า activate ไม่ได้เพราะไม่มีซิม (ไม่รู้นะเนี่ย) ผมเลยเอา micro sim ที่ดองค้างไว้ใน iPad (แต่ไม่ได้ใช้) ลองใส่ดูและก็ใช้ activate ได้ถึงแม้ว่าซิมโดนปิดไปนานแล้ว</p>
<p><a href="http://armno.in.th/wp-content/uploads/2012/02/IMG_0019.jpg"><img class="alignnone size-medium wp-image-1971 colorbox-1969" title="IMG_0019" src="http://armno.in.th/wp-content/uploads/2012/02/IMG_0019-600x450.jpg" alt="" width="600" height="450" /></a></p>
<h3>เปลี่ยนซิมการ์ดเป็น Micro Sim</h3>
<p>เอาซิมการ์ดไปเปลี่ยนเป็น Micro Sim เพื่อมาใช้กับ iPhone 4S ที่ศูนย์บริการ AIS ครับ (เนื่องจากต้องการใช้เบอร์เดิม) ที่เชียงใหม่ ศูนย์ฯ จะอยู่ที่ถนนท่าแพ เข้าไปมีพนักงานบริการดีครับ รอคิวประมาณ 5 นาที ส่วนขั้นตอนเปลี่ยนซิมการ์ด ก็ใช้เวลาราวๆ 2-3 นาที และก็ไม่เสียค่าบริการด้วยครับผม</p>
<h3>ทดลองใช้</h3>
<p>กินแบตเก่งสมคำร่ำลือ <img src='http://armno.in.th/wp-includes/images/smilies/icon_neutral.gif' alt=':-|' class='wp-smiley colorbox-1969' />  ส่วนการใช้งานอื่นๆ ยังไม่พบปัญหาอะไร เอาเป็นว่า การสั่งซื้อของจาก Apple Online Store ครั้งแรก ผ่านไปได้ด้วยดีครับ รวมเวลาทั้งสิ้นก็ประมาณ 9 วันหลังจากสั่งซื้อครับผม <img src='http://armno.in.th/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley colorbox-1969' /> </p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://armno.in.th/2012/02/08/%e0%b8%aa%e0%b8%b1%e0%b9%88%e0%b8%87%e0%b8%8b%e0%b8%b7%e0%b9%89%e0%b8%ad-iphone-4s-%e0%b8%88%e0%b8%b2%e0%b8%81-apple-online-store/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss><!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced

Served from: armno.in.th @ 2012-05-23 21:36:03 -->

