<?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>jQuery, Ajax, PHP, JSON, XML, Web Technologies</title>
	<atom:link href="http://blog.chonla.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.chonla.com</link>
	<description>คุยกันเรื่อง jQuery, Ajax, PHP, JSON, XML และ Web Technologies เป็นภาษาไทยกันดีกว่า</description>
	<lastBuildDate>Tue, 29 Jun 2010 21:13:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Regular Expression : ไม่เริ่มต้นด้วย&#8230; เขียนยังไงเนี่ย</title>
		<link>http://blog.chonla.com/2010/06/regular-expression-%e0%b9%84%e0%b8%a1%e0%b9%88%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%b8%94%e0%b9%89%e0%b8%a7%e0%b8%a2-%e0%b9%80%e0%b8%82%e0%b8%b5%e0%b8%a2/</link>
		<comments>http://blog.chonla.com/2010/06/regular-expression-%e0%b9%84%e0%b8%a1%e0%b9%88%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%b8%94%e0%b9%89%e0%b8%a7%e0%b8%a2-%e0%b9%80%e0%b8%82%e0%b8%b5%e0%b8%a2/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 21:13:05 +0000</pubDate>
		<dc:creator>chonla</dc:creator>
				<category><![CDATA[Regular Expression]]></category>
		<category><![CDATA[Negative Look Ahead]]></category>
		<category><![CDATA[Negative Look Behind]]></category>
		<category><![CDATA[Positive Look Ahead]]></category>
		<category><![CDATA[Positive Look Behind]]></category>
		<category><![CDATA[Zero-Width Assertion]]></category>

		<guid isPermaLink="false">http://blog.chonla.com/?p=290</guid>
		<description><![CDATA[ใน Regular Expression วิธีการเขียน pattern ให้ตรวจสอบว่า จะต้องขึ้นต้นด้วยตัวเลขเท่านั้น หรือจะต้องขึ้นต้นด้วยตัวอักษรภาษาอังกฤษเท่านั้น ทำได้ง่าย ๆ โดยการเติมสัญลักษณ์ ^ เข้าไปด้านหน้า ทีนี้ เราอยากเปลี่ยน pattern ให้ตรวจสอบเป็น ห้ามขึ้นด้วยตัวเลขนะ หรือห้ามขึ้นด้วยตัวอักษรภาษาอังกฤษนะ จะทำยังไงดีล่ะ&#8230; มาดูกัน วิธีง่าย ๆ ที่มานำเสนอก็คือ การใช้สิ่งที่เรียกว่า Zero-width negative look ahead assertion ครับ แค่ชื่อก็ปวดหัวตึ้บ&#8230; เดี๋ยวก่อนครับ วิธีการใช้งานมันง่ายกว่าชื่อของมันครับ เพียงแค่เราใส่ ^(?! และ ) ครอบสิ่งที่เราไม่ต้องการให้ขึ้นต้น เท่านั้นเป็นอันจบครับ ยกตัวอย่างเช่น เราไม่ต้องการให้ขึ้นต้นด้วย abc แต่หลังจากนั้นจะเป็นอะไรก็ได้ เราก็ใช้ pattern เป็น ^(?!abc)\w+ ครับ ทีนี้ คำที่ขึ้นต้นด้วย abc ทั้งหมด จะ fail [...]]]></description>
			<content:encoded><![CDATA[<p>ใน Regular Expression วิธีการเขียน pattern ให้ตรวจสอบว่า จะต้องขึ้นต้นด้วยตัวเลขเท่านั้น หรือจะต้องขึ้นต้นด้วยตัวอักษรภาษาอังกฤษเท่านั้น ทำได้ง่าย ๆ โดยการเติมสัญลักษณ์ ^ เข้าไปด้านหน้า ทีนี้ เราอยากเปลี่ยน pattern ให้ตรวจสอบเป็น ห้ามขึ้นด้วยตัวเลขนะ หรือห้ามขึ้นด้วยตัวอักษรภาษาอังกฤษนะ จะทำยังไงดีล่ะ&#8230;</p>
<p>มาดูกัน <img src='http://blog.chonla.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<span id="more-290"></span>วิธีง่าย ๆ ที่มานำเสนอก็คือ การใช้สิ่งที่เรียกว่า Zero-width negative look ahead assertion ครับ แค่ชื่อก็ปวดหัวตึ้บ&#8230; เดี๋ยวก่อนครับ วิธีการใช้งานมันง่ายกว่าชื่อของมันครับ เพียงแค่เราใส่ ^(?! และ ) ครอบสิ่งที่เราไม่ต้องการให้ขึ้นต้น เท่านั้นเป็นอันจบครับ</p>
<p>ยกตัวอย่างเช่น เราไม่ต้องการให้ขึ้นต้นด้วย abc แต่หลังจากนั้นจะเป็นอะไรก็ได้ เราก็ใช้ pattern เป็น ^(?!abc)\w+ ครับ ทีนี้ คำที่ขึ้นต้นด้วย abc ทั้งหมด จะ fail ในการ match กับ pattern ครับ</p>
<p>ไอ้เจ้า Zero-width negative look ahead assertion จริง ๆ แล้วมันมีอะไรมากกว่านั้นครับ อธิบายต่ออีกหน่อยละกัน สาเหตุที่เราเรียกว่า Zero-width assertion เพราะเราไม่นับว่ามันเป็นตัวอักษร และมันจะทำหน้าที่สำหรับตรวจดูว่าจะเอาไป match ได้หรือเปล่าเท่านั้น โดยไม่เอาค่าในวงเล็บไปใส่ในผลการ match</p>
<p>นอกเหนือจาก negative look ahead แล้ว มันยังมีรูปแบบอื่น ๆ ที่เกี่ยวข้องด้วย รวมแล้วมี 4 แบบ คือ positive look ahead, negative look ahead, positive look behind และ negative look behind&#8230; มาดูกันทีละตัวเลยครับ</p>
<p><strong>Positive Look Ahead</strong> จะใช้สำหรับการ match ที่ตามหลังกัน เขียนอยู่ในรูปแบบ q(?=u) หมายถึง จะ match กับ q ที่ตามด้วย u เท่านั้น (เราจะสังเกตได้ว่า q จะถูกนำไปใส่ในผลการ match แต่ u ไม่ถูกนำไปรวม เพราะว่ามันเป็น zero-width assertion ไงครับ)</p>
<p><strong>Negative Look Ahead</strong> อันนี้พูดถึงไปแล้วตั้งแต่แรก ใช้สำหรับการ match สิ่งที่ไม่ตามกัน เขียนในรูปแบบ q(?!u) หมายถึงว่า จะ match กับ q ที่ไม่ได้ตามด้วย u (จากตัวอย่างแรกของเรา เขียนเริ่มต้นว่า ^(?!abc) นั่นคือ เริ่มต้นประโยค หรือ ^ ที่ไม่ตามด้วย abc หรือ (?!abc) นั่นเอง)</p>
<p><strong>Positive Look Behind</strong> จะคล้าย ๆ กับ Positive Look Ahead ครับ แต่ทำจากด้านหลังมา เขียนอยู่ในรูปแบบ (?&lt;=a)b จะหมายถึงว่า จะ match กับ b ที่ตามหลัง a อยู่</p>
<p><strong>Negative Look Behind</strong> ก็ในทำนองเดียวกันกับ Negative Look Ahead เลยครับ ทำจากด้านหลังมา เขียนอยู่ในรูปแบบ (?&lt;!a)b จะหมายถึงว่า จะ match กับ b ที่ไม่ได้นำหน้าด้วย a</p>
<p>ดังนั้น มาถึงตรงนี้แล้ว ถ้าเราอยากเขียน pattern ให้ match กับข้อความที่ไม่ได้ลงท้ายด้วยคำว่า end ล่ะ จะต้องเขียนยังไง&#8230;</p>
<p>เฉลย \w+(?&lt;!end)$ ไงครับ (\w = ตัวอักษรใด ๆ ตามด้วย Negative Look Behind และปิดท้ายด้วย $ คือ สิ้นสุดประโยค)</p>
<p>สนุกมั๊ยครับ <img src='http://blog.chonla.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://blog.chonla.com/wp-content/plugins/add-to-any/share_save_171_16.gif" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blog.chonla.com/2010/06/regular-expression-%e0%b9%84%e0%b8%a1%e0%b9%88%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%b8%94%e0%b9%89%e0%b8%a7%e0%b8%a2-%e0%b9%80%e0%b8%82%e0%b8%b5%e0%b8%a2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>เปรียบเทียบ String แบบ Case Sensitive ใน MySQL</title>
		<link>http://blog.chonla.com/2010/04/%e0%b9%80%e0%b8%9b%e0%b8%a3%e0%b8%b5%e0%b8%a2%e0%b8%9a%e0%b9%80%e0%b8%97%e0%b8%b5%e0%b8%a2%e0%b8%9a-string-%e0%b9%81%e0%b8%9a%e0%b8%9a-case-sensitive-%e0%b9%83%e0%b8%99-mysql/</link>
		<comments>http://blog.chonla.com/2010/04/%e0%b9%80%e0%b8%9b%e0%b8%a3%e0%b8%b5%e0%b8%a2%e0%b8%9a%e0%b9%80%e0%b8%97%e0%b8%b5%e0%b8%a2%e0%b8%9a-string-%e0%b9%81%e0%b8%9a%e0%b8%9a-case-sensitive-%e0%b9%83%e0%b8%99-mysql/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 16:31:42 +0000</pubDate>
		<dc:creator>chonla</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Case-Sensitivity]]></category>
		<category><![CDATA[Comparison]]></category>
		<category><![CDATA[String]]></category>

		<guid isPermaLink="false">http://blog.chonla.com/?p=285</guid>
		<description><![CDATA[โดยปกติแล้วการเปรียบเทียบข้อความ (string comparison) ใน MySQL จะเป็นการเปรียบเทียบแบบ Case-Insensitive นั่นคือ ไม่สนใจตัวเล็กตัวใหญ่ หมายถึงว่า &#8220;cat&#8221; จะเท่ากับ &#8220;CAT&#8221; นั่นเอง ปัญหานี้จะพบเมื่อเราทำการเปรียบเทียบ String ที่เป็น Text ในบางครั้ง เราจำเป็นต้องเปรียบเทียบ string แบบ Case-Sensitive เช่น การค้นหา Key ที่ case ของตัวอักษรมีความสำคัญ เราสามารถทำได้หลายวิธี แบบแรกคือ การเปรียบเทียบด้วย Binary String เช่น mysql&#62; SET @s = BINARY 'MySQL'; mysql&#62; SELECT @s = 'mysql'; +--------------+ &#124; @s = 'mysql' &#124; +--------------+ &#124; 0 [...]]]></description>
			<content:encoded><![CDATA[<p>โดยปกติแล้วการเปรียบเทียบข้อความ (string comparison) ใน MySQL จะเป็นการเปรียบเทียบแบบ Case-Insensitive นั่นคือ ไม่สนใจตัวเล็กตัวใหญ่ หมายถึงว่า &#8220;cat&#8221; จะเท่ากับ &#8220;CAT&#8221; นั่นเอง ปัญหานี้จะพบเมื่อเราทำการเปรียบเทียบ String ที่เป็น Text ในบางครั้ง เราจำเป็นต้องเปรียบเทียบ string แบบ Case-Sensitive เช่น การค้นหา Key ที่ case ของตัวอักษรมีความสำคัญ เราสามารถทำได้หลายวิธี</p>
<p><span id="more-285"></span></p>
<p>แบบแรกคือ การเปรียบเทียบด้วย Binary String เช่น</p>
<pre>mysql&gt; <strong><code>SET @s = BINARY 'MySQL';</code></strong>
mysql&gt; <strong><code>SELECT @s = 'mysql';</code></strong></pre>
<pre>+--------------+
| @s = 'mysql' |
+--------------+
|            0 |
+--------------+</pre>
<p>แบบที่สองคือ การสั่งเปลี่ยน COLLATE ให้เป็นแบบที่สนับสนุนการเปรียบเทียบแบบ case-sensitive นั่นคือ latin1_bin หรือ latin1_general_cs เช่น</p>
<pre>mysql&gt; <strong><code>SET @s1 = 'MySQL' COLLATE latin1_bin,</code></strong>
    -&gt; <strong><code>    @s2 = 'mysql' COLLATE latin1_bin;</code></strong>
mysql&gt; <strong><code>SELECT @s1 = @s2;</code></strong>
+-----------+
| @s1 = @s2 |
+-----------+
|         0 |
+-----------+</pre>
<p>แบบที่ 3 ก็เป็นการเปลี่ยน Collation เช่นเดียวกัน แต่เป็นการไปตั้งค่าที่ field ใน table ของเราเลยครับ แค่เพียงเลือก field ที่ต้องการ และเปลี่ยน collation ให้เป็น latin1_bin หรือ latin1_general_cs ก็ใช้ได้แล้วครับ</p>
<p><strong>อ้างอิง</strong></p>
<ul>
<li><a href="http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html">http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html</a></li>
</ul>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://blog.chonla.com/wp-content/plugins/add-to-any/share_save_171_16.gif" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blog.chonla.com/2010/04/%e0%b9%80%e0%b8%9b%e0%b8%a3%e0%b8%b5%e0%b8%a2%e0%b8%9a%e0%b9%80%e0%b8%97%e0%b8%b5%e0%b8%a2%e0%b8%9a-string-%e0%b9%81%e0%b8%9a%e0%b8%9a-case-sensitive-%e0%b9%83%e0%b8%99-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>json_encode() กับภาษาไทย</title>
		<link>http://blog.chonla.com/2010/03/json_encode-%e0%b8%81%e0%b8%b1%e0%b8%9a%e0%b8%a0%e0%b8%b2%e0%b8%a9%e0%b8%b2%e0%b9%84%e0%b8%97%e0%b8%a2/</link>
		<comments>http://blog.chonla.com/2010/03/json_encode-%e0%b8%81%e0%b8%b1%e0%b8%9a%e0%b8%a0%e0%b8%b2%e0%b8%a9%e0%b8%b2%e0%b9%84%e0%b8%97%e0%b8%a2/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 14:04:29 +0000</pubDate>
		<dc:creator>chonla</dc:creator>
				<category><![CDATA[JSON]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[iconv]]></category>
		<category><![CDATA[ภาษาไทย]]></category>

		<guid isPermaLink="false">http://blog.chonla.com/?p=281</guid>
		<description><![CDATA[เจอปัญหาภาษาไทยกับการใช้งานฟังก์ชั่น json_encode() นั่นก็คือ มันใช้ด้วยกันไม่ได้ ปัญหานี้เกิดขึ้นเฉพาะกับภาษาไทยที่ใช้ชุดตัวอักษร (Character Set) ในกลุ่ม ANSI (เช่น Windows-874, TIS-620) วิธีการแก้ปัญหา ง่ายนิดเดียวคือ การแปลงให้มันเป็น UTF-8 ก่อนด้วยฟังก์ชั่น iconv() แล้วค่อยเอาไปใส่ json_encode() เท่านี้ก็สามารถใช้งานภาษาไทยได้แล้ว function js_thai_encode($data) { // fix all thai elements if (is_array($data)) { foreach($data as $a =&#62; $b) { if (is_array($data[$a])) { $data[$a] = js_thai_encode($data[$a]); } else { $data[$a] = iconv("tis-620","utf-8",$b); } } } else { [...]]]></description>
			<content:encoded><![CDATA[<p>เจอปัญหาภาษาไทยกับการใช้งานฟังก์ชั่น json_encode() นั่นก็คือ มันใช้ด้วยกันไม่ได้ ปัญหานี้เกิดขึ้นเฉพาะกับภาษาไทยที่ใช้ชุดตัวอักษร (Character Set) ในกลุ่ม ANSI (เช่น Windows-874, TIS-620) วิธีการแก้ปัญหา ง่ายนิดเดียวคือ การแปลงให้มันเป็น UTF-8 ก่อนด้วยฟังก์ชั่น iconv() แล้วค่อยเอาไปใส่ json_encode() เท่านี้ก็สามารถใช้งานภาษาไทยได้แล้ว<br />
<span id="more-281"></span></p>
<pre name="code" class="js">function js_thai_encode($data)
{	// fix all thai elements
	if (is_array($data))
	{
		foreach($data as $a =&gt; $b)
		{
			if (is_array($data[$a]))
			{
				$data[$a] = js_thai_encode($data[$a]);
			}
			else
			{
				$data[$a] = iconv("tis-620","utf-8",$b);
			}
		}
	}
	else
	{
		$data =iconv("tis-620","utf-8",$data);
	}
	return $data;
}</pre>
<p>ไปดู <a title="LIVE DEMO : json_encode() กับ ภาษาไทย" href="http://sandbox.chonla.com/jsonenc/" target="_blank">LIVE DEMO</a> กันเลย</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://blog.chonla.com/wp-content/plugins/add-to-any/share_save_171_16.gif" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blog.chonla.com/2010/03/json_encode-%e0%b8%81%e0%b8%b1%e0%b8%9a%e0%b8%a0%e0%b8%b2%e0%b8%a9%e0%b8%b2%e0%b9%84%e0%b8%97%e0%b8%a2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Share เว็บของเราลงใน facebook แบบสวยงาม</title>
		<link>http://blog.chonla.com/2010/02/share-%e0%b9%80%e0%b8%a7%e0%b9%87%e0%b8%9a%e0%b8%82%e0%b8%ad%e0%b8%87%e0%b9%80%e0%b8%a3%e0%b8%b2%e0%b8%a5%e0%b8%87%e0%b9%83%e0%b8%99-facebook-%e0%b9%81%e0%b8%9a%e0%b8%9a%e0%b8%aa%e0%b8%a7%e0%b8%a2-2/</link>
		<comments>http://blog.chonla.com/2010/02/share-%e0%b9%80%e0%b8%a7%e0%b9%87%e0%b8%9a%e0%b8%82%e0%b8%ad%e0%b8%87%e0%b9%80%e0%b8%a3%e0%b8%b2%e0%b8%a5%e0%b8%87%e0%b9%83%e0%b8%99-facebook-%e0%b9%81%e0%b8%9a%e0%b8%9a%e0%b8%aa%e0%b8%a7%e0%b8%a2-2/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 19:22:11 +0000</pubDate>
		<dc:creator>chonla</dc:creator>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://blog.chonla.com/?p=275</guid>
		<description><![CDATA[ปัญหาหนึ่งเมื่อเราพยายามที่จะ Share link ของเว็บเรา (หรือเว็บคนอื่น) ลงใน facebook นั่นคือ การที่ facebook มันไปดึงข้อมูลจากเว็บเรามาแสดงแบบมั่ว ๆ ซั่ว ๆ (หรือบางครั้ง อาจจะไม่แสดงเลย) ทำให้เวลาเราโพสของเราอาจจะไม่ได้ดูสวยงามอย่างที่ใจเราต้องการ โดยเฉพาะ ถ้าเว็บที่เรา share เป็นเว็บของเราเอง ล่าสุด ผมลองทดสอบ share link pantip.com จะขึ้นแค่ &#8220;PANTIP.COM : สุดยอดเว็บบอร์ดไทย เพื่อสังคมออนไลน์คุณภาพ&#8221; และลิงค์ไปยังเว็บพันทิปเฉย ๆ (ทดสอบเมื่อวันที่ 28 ก.พ. 2553 เวลา ตี 2) และเป้าหมายของบล็อกคราวนี้ ผมจะทำให้ share ของเรา ขึ้นรูป และข้อความที่เราต้องการ วิธีทำง่ายนิดเดียวครับ นั่นคือการกำหนด tag ที่ facebook มันไปดึงให้ถูกต้องครับ tag ที่ว่านี้ facebook [...]]]></description>
			<content:encoded><![CDATA[<p>ปัญหาหนึ่งเมื่อเราพยายามที่จะ Share link ของเว็บเรา (หรือเว็บคนอื่น) ลงใน facebook นั่นคือ การที่ facebook มันไปดึงข้อมูลจากเว็บเรามาแสดงแบบมั่ว ๆ ซั่ว ๆ (หรือบางครั้ง อาจจะไม่แสดงเลย) ทำให้เวลาเราโพสของเราอาจจะไม่ได้ดูสวยงามอย่างที่ใจเราต้องการ โดยเฉพาะ ถ้าเว็บที่เรา share เป็นเว็บของเราเอง ล่าสุด ผมลองทดสอบ share link pantip.com จะขึ้นแค่ &#8220;PANTIP.COM : สุดยอดเว็บบอร์ดไทย เพื่อสังคมออนไลน์คุณภาพ&#8221; และลิงค์ไปยังเว็บพันทิปเฉย ๆ (ทดสอบเมื่อวันที่ 28 ก.พ. 2553 เวลา ตี 2) และเป้าหมายของบล็อกคราวนี้ ผมจะทำให้ share ของเรา ขึ้นรูป และข้อความที่เราต้องการ</p>
<p><span id="more-275"></span>วิธีทำง่ายนิดเดียวครับ นั่นคือการกำหนด tag ที่ facebook มันไปดึงให้ถูกต้องครับ</p>
<p>tag ที่ว่านี้ facebook จะใช้อยู่ 3 tag ครับ คือ</p>
<ol>
<li>ส่วนที่เป็น title จะไปดึงจาก inner-text &lt;title&gt;&#8230;&lt;/title&gt; ในส่วน head ครับ</li>
<li>ส่วนที่เป็น description จะไปดึงมาจาก value ของ attribute content ใน &lt;meta name=&#8221;description&#8221; content=&#8221;&#8230;&#8221;/&gt; ในส่วน head เหมือนกัน</li>
<li>ส่วนสุดท้ายจะเป็นรูปที่เอาไปแสดง จะไปดึงมาจาก value ของ attribute href ใน &lt;link rel=&#8221;image_src&#8221; href=&#8221;&#8230;&#8221; /&gt; ในส่วน head อีกเช่นกัน</li>
</ol>
<p>หลังจากใส่แล้วลองไป Share link ใน facebook อีกที เราก็จะเห็นข้อมูลและรูปที่เราระบุไว้ขึ้นมาอย่างสวยงามสมใจแล้วล่ะครับ</p>
<p>ปล.นิดนึง facebook จะ cache ข้อมูลพวกนี้ไว้นะครับ ถ้ามีการแก้ไขอะไร อาจจะต้องรอซักระยะนึง แล้วค่อย share ใหม่ถึงจะเห็นการเปลี่ยนแปลงนะครับ</p>
<p>ปล.อีกที ถ้าจะลอง share link แล้วไม่รู้จะลองกับเว็บอะไรดี ลอง <a title="dkote - เว็บนี้...ดีโคตร" href="http://www.dkote.com" target="_blank">http://www.dkote.com</a> ก็ได้ครับ เว็บนี้มีการกำหนด 3 ข้อด้านบนเรียบร้อยแล้วครับ ฮิๆๆ</p>
<p>อ้างอิง</p>
<ul>
<li><a title="AddThis button: How to make facebook show the correct image and text for a blog post" href="http://www.left-click.us/blog/addthis-button-how-make-facebook-show-correct-image-and-text-blog-post" target="_blank">http://www.left-click.us/blog/addthis-button-how-make-facebook-show-correct-image-and-text-blog-post</a></li>
</ul>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 6px; width: 1px; height: 1px;"><a class="UIShareStage_InlineEdit inline_edit" onclick="new InlineEditor(this, &quot;attachment[params][title]&quot;, $(&quot;stage4b896c3f470ea7ae8178d&quot;), null, false); return false;">PANTIP.COM : สุดยอดเว็บบอร์ดไทย เพื่อสังคมออนไลน์คุณภาพ</a></div>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://blog.chonla.com/wp-content/plugins/add-to-any/share_save_171_16.gif" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blog.chonla.com/2010/02/share-%e0%b9%80%e0%b8%a7%e0%b9%87%e0%b8%9a%e0%b8%82%e0%b8%ad%e0%b8%87%e0%b9%80%e0%b8%a3%e0%b8%b2%e0%b8%a5%e0%b8%87%e0%b9%83%e0%b8%99-facebook-%e0%b9%81%e0%b8%9a%e0%b8%9a%e0%b8%aa%e0%b8%a7%e0%b8%a2-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>เรื่องวุ่น ๆ กับการกำหนด padding ใน CSS</title>
		<link>http://blog.chonla.com/2010/02/%e0%b9%80%e0%b8%a3%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b8%87%e0%b8%a7%e0%b8%b8%e0%b9%88%e0%b8%99-%e0%b9%86-%e0%b8%81%e0%b8%b1%e0%b8%9a%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%81%e0%b8%b3%e0%b8%ab%e0%b8%99%e0%b8%94/</link>
		<comments>http://blog.chonla.com/2010/02/%e0%b9%80%e0%b8%a3%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b8%87%e0%b8%a7%e0%b8%b8%e0%b9%88%e0%b8%99-%e0%b9%86-%e0%b8%81%e0%b8%b1%e0%b8%9a%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%81%e0%b8%b3%e0%b8%ab%e0%b8%99%e0%b8%94/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 19:18:13 +0000</pubDate>
		<dc:creator>chonla</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Border Sizing]]></category>
		<category><![CDATA[Padding]]></category>

		<guid isPermaLink="false">http://blog.chonla.com/?p=269</guid>
		<description><![CDATA[ได้มีโอกาสเขียนเว็บโดยใช้ CSS เป็นหลักแล้วเจอปัญหาเกี่ยวกับการกำหนด padding ใน &#60;div&#62; ปัญหาที่ว่านี้ก็คือ การแสดงผล padding ในแต่ละ browser มันไม่เหมือนกัน ผมเชื่อว่าหลาย ๆ คนที่ทำเว็บก็คงเคยเจอปัญหานี้เหมือนกัน ยกตัวอย่าง web browser คู่ปรับยอดนิยม ระหว่าง IE กับ FireFox โดยตัว IE เอง จะวัดความกว้างของ content จากขอบด้านหนึ่งของ container ไปยังอีกด้านหนึ่ง ในขณะที่ Firefox จะวัดจากตัว content ด้านใน container เอง ดังนั้นทำให้เมื่อเรากำหนดความกว้างที่ 300 pixels และกำหนด padding ซ้ายและขวาข้างละ 20 pixels IE จะใช้เนื้อที่จริง 300 pixels และเนื้อที่แสดงเนื้อหาเหลือแค่ 260 pixels ส่วน FireFox [...]]]></description>
			<content:encoded><![CDATA[<p>ได้มีโอกาสเขียนเว็บโดยใช้ CSS เป็นหลักแล้วเจอปัญหาเกี่ยวกับการกำหนด padding ใน &lt;div&gt; ปัญหาที่ว่านี้ก็คือ การแสดงผล padding ในแต่ละ browser มันไม่เหมือนกัน ผมเชื่อว่าหลาย ๆ คนที่ทำเว็บก็คงเคยเจอปัญหานี้เหมือนกัน ยกตัวอย่าง web browser คู่ปรับยอดนิยม ระหว่าง IE กับ FireFox โดยตัว IE เอง จะวัดความกว้างของ content จากขอบด้านหนึ่งของ container ไปยังอีกด้านหนึ่ง ในขณะที่ Firefox จะวัดจากตัว content ด้านใน container เอง ดังนั้นทำให้เมื่อเรากำหนดความกว้างที่ 300 pixels และกำหนด padding ซ้ายและขวาข้างละ 20 pixels IE จะใช้เนื้อที่จริง 300 pixels และเนื้อที่แสดงเนื้อหาเหลือแค่ 260 pixels ส่วน FireFox จะใช้เนื้อที่จริง 340 pixels และมีเนื้อที่แสดงเนื้อหา 300 pixels</p>
<p><span id="more-269"></span>ปัญหานี้สามารถแก้ไขได้โดยการกำหนด box model ให้เหมือนกันด้วย css เพื่อให้ตัว render หน้าเว็บ ทำงานไปในทางเดียวกัน สิ่งที่ต้องเพิ่มลงไปใน style ของ object ที่เราต้องการกำหนดคือ</p>
<pre class="html"><span style="color: #3366ff;">-webkit-box-sizing:</span>border-box;<span style="color: #3366ff;">-moz-box-sizing:</span>border-box;<span style="color: #3366ff;">box-sizing:</span>border-box;
</pre>
<p>การกำหนดค่าแบบนี้ จะเป็นการสั่งให้ browser คำนวณความกว้างของ content จากขอบของ container เหมือนกับที่ IE ทำนั่นเอง</p>
<p>เพื่อให้เห็นภาพได้ชัดเจนมากขึ้น ผมว่าเราลองไปดูตัวอย่างใน <a title="LIVE DEMO : CSS Border Sizing" href="http://sandbox.chonla.com/cssbordersizing" target="_blank">LIVE DEMO</a> กันเลยดีกว่าครับ</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://blog.chonla.com/wp-content/plugins/add-to-any/share_save_171_16.gif" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blog.chonla.com/2010/02/%e0%b9%80%e0%b8%a3%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b8%87%e0%b8%a7%e0%b8%b8%e0%b9%88%e0%b8%99-%e0%b9%86-%e0%b8%81%e0%b8%b1%e0%b8%9a%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%81%e0%b8%b3%e0%b8%ab%e0%b8%99%e0%b8%94/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>แท็ก label เคยใช้กันไหมเอ่ย</title>
		<link>http://blog.chonla.com/2010/02/%e0%b9%81%e0%b8%97%e0%b9%87%e0%b8%81-label-%e0%b9%80%e0%b8%84%e0%b8%a2%e0%b9%83%e0%b8%8a%e0%b9%89%e0%b8%81%e0%b8%b1%e0%b8%99%e0%b9%84%e0%b8%ab%e0%b8%a1%e0%b9%80%e0%b8%ad%e0%b9%88%e0%b8%a2/</link>
		<comments>http://blog.chonla.com/2010/02/%e0%b9%81%e0%b8%97%e0%b9%87%e0%b8%81-label-%e0%b9%80%e0%b8%84%e0%b8%a2%e0%b9%83%e0%b8%8a%e0%b9%89%e0%b8%81%e0%b8%b1%e0%b8%99%e0%b9%84%e0%b8%ab%e0%b8%a1%e0%b9%80%e0%b8%ad%e0%b9%88%e0%b8%a2/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 17:48:25 +0000</pubDate>
		<dc:creator>chonla</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[label]]></category>

		<guid isPermaLink="false">http://blog.chonla.com/?p=266</guid>
		<description><![CDATA[ใน HTML มีแท็ก (tag) อยู่หลายอย่าง ผมเองก็ไม่ได้รู้จักมันทุกแท็ก มีอยู่แท็กหนึ่งที่ผมเคยเห็นนานแล้ว แต่ไม่เคยสนใจ และไม่เคยคิดที่จะใช้ จนมาวันนึง ได้มีโอกาสลองทำความรู้จักกับมัน ก็เห็นถึงประโยชน์ของมันขึ้นมา เลยคิดว่า เอามาใส่ลงใน blog น่าจะดี เอาเป็นว่าวันนี้ผมขอแนะนำเพื่อนใหม่ (แต่ไม่ใหม่) ของผม นั่นคือ &#60;LABEL&#62; ครับ ใน HTML เราจะเรียกคำที่อยู่ในเครื่องหมาย &#60;&#62; ว่าแท็ก (เฉพาะคำแรกเท่านั้น) เช่น &#60;A&#62; ก็คือ A แท็ก (หรือแท็ก A แบบไทย ๆ) ส่วน ค่าที่เรากำหนดต่าง ๆ ภายในแท็ก จะเรียกว่า คุณสมบัติ หรือ Attribute เช่น &#60;A href=&#8221;http://blog.chonla.com&#62;ไปอ่านบล็อก&#60;/A&#62; จะมี href เป็น attribute ของแท็ก A และมี [...]]]></description>
			<content:encoded><![CDATA[<p>ใน HTML มีแท็ก (tag) อยู่หลายอย่าง ผมเองก็ไม่ได้รู้จักมันทุกแท็ก มีอยู่แท็กหนึ่งที่ผมเคยเห็นนานแล้ว แต่ไม่เคยสนใจ และไม่เคยคิดที่จะใช้ จนมาวันนึง ได้มีโอกาสลองทำความรู้จักกับมัน ก็เห็นถึงประโยชน์ของมันขึ้นมา เลยคิดว่า เอามาใส่ลงใน blog น่าจะดี เอาเป็นว่าวันนี้ผมขอแนะนำเพื่อนใหม่ (แต่ไม่ใหม่) ของผม นั่นคือ &lt;LABEL&gt; ครับ</p>
<p><span id="more-266"></span>ใน HTML เราจะเรียกคำที่อยู่ในเครื่องหมาย &lt;&gt; ว่าแท็ก (เฉพาะคำแรกเท่านั้น) เช่น &lt;A&gt; ก็คือ A แท็ก (หรือแท็ก A แบบไทย ๆ) ส่วน ค่าที่เรากำหนดต่าง ๆ ภายในแท็ก จะเรียกว่า คุณสมบัติ หรือ Attribute เช่น &lt;A href=&#8221;http://blog.chonla.com&gt;ไปอ่านบล็อก&lt;/A&gt; จะมี href เป็น attribute ของแท็ก A และมี http://blog.chonla.com เป็นค่าของ attribute href นั่นเอง ส่วนคำว่า &#8220;ไปอ่านบล็อก&#8221; จะเรียกว่า inner-text ของแท็ก A ส่วน &lt;A href=&#8221;&#8230;&#8221;&gt;&#8230;&lt;/A&gt; เราจะเรียกรวม ๆ ว่า Element ครับ</p>
<p>แอบนอกเรื่องไปนิดนึง วกกลับมาที่ &lt;LABEL&gt; ดีกว่าครับ (จากนี้ ผมจะเขียนเป็นตัวเล็ก เพื่อความสะดวกนะครับ &lt;label&gt;) ตัว &lt;label&gt; เอง ความจริงแล้ว ไม่ได้ทำให้การแสดงผลมีอะไรพิเศษเลยครับ มันช่วยให้สำหรับผู้ใช้ที่ใช้ mouse สะดวกสบายมากขึ้นเท่านั้นเองครับ หน้าทีของ &lt;label&gt; เนี่ย จะทำหน้าที่กำหนดความสัมพันธ์ของข้อความใด ๆ ที่เป็น inner-text ของ &lt;label&gt; กับ input element ใน form ครับ วิธีการกำหนด ก็เพียงกำหนด id ให้กับ input element และ เพิ่ม attribute &#8220;for&#8221; ให้กับ &lt;label&gt; โดยมีค่าของ attribute &#8220;for&#8221; เป็น id ของ input สัมพันธ์กับ &lt;label&gt; นั้นครับ</p>
<p>หลังจากที่เรากำหนดความสัมพันธ์แล้ว อย่างที่ผมเกริ่นไว้หน่อยแล้วว่ามันเพิ่มความสะดวกให้กับผู้ใช้ที่ใช้ mouse นั่นคือ เมื่อเราคลิกข้อความที่เป็น inner-text ในหน้าเว็บ มันจะเหมือนกับการที่เราคลิกตัว input element ที่มันสัมพันธ์กันนั่นเองครับ</p>
<p>เอาเป็นว่า เพื่อความชัดเจนมากขึ้น เราลองไปดูตัวอย่างใน <a title="LIVE DEMO : แท็ก LABEL" href="http://sandbox.chonla.com/label" target="_blank">LIVE DEMO</a> กันเลยดีกว่าครับ</p>
<p>อ้างอิง</p>
<ul>
<li><a title="Label Tag in W3schools" href="http://www.w3schools.com/tags/tag_label.asp" target="_blank">http://www.w3schools.com/tags/tag_label.asp</a></li>
</ul>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://blog.chonla.com/wp-content/plugins/add-to-any/share_save_171_16.gif" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blog.chonla.com/2010/02/%e0%b9%81%e0%b8%97%e0%b9%87%e0%b8%81-label-%e0%b9%80%e0%b8%84%e0%b8%a2%e0%b9%83%e0%b8%8a%e0%b9%89%e0%b8%81%e0%b8%b1%e0%b8%99%e0%b9%84%e0%b8%ab%e0%b8%a1%e0%b9%80%e0%b8%ad%e0%b9%88%e0%b8%a2/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>อัตราส่วนทองคำ (Golden Ratio) หรือ ฟี (Phi)</title>
		<link>http://blog.chonla.com/2010/01/%e0%b8%ad%e0%b8%b1%e0%b8%95%e0%b8%a3%e0%b8%b2%e0%b8%aa%e0%b9%88%e0%b8%a7%e0%b8%99%e0%b8%97%e0%b8%ad%e0%b8%87%e0%b8%84%e0%b8%b3-golden-ratio-%e0%b8%ab%e0%b8%a3%e0%b8%b7%e0%b8%ad-%e0%b8%9f%e0%b8%b5-p/</link>
		<comments>http://blog.chonla.com/2010/01/%e0%b8%ad%e0%b8%b1%e0%b8%95%e0%b8%a3%e0%b8%b2%e0%b8%aa%e0%b9%88%e0%b8%a7%e0%b8%99%e0%b8%97%e0%b8%ad%e0%b8%87%e0%b8%84%e0%b8%b3-golden-ratio-%e0%b8%ab%e0%b8%a3%e0%b8%b7%e0%b8%ad-%e0%b8%9f%e0%b8%b5-p/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 11:18:51 +0000</pubDate>
		<dc:creator>chonla</dc:creator>
				<category><![CDATA[Mathematic]]></category>
		<category><![CDATA[Fibonacci]]></category>
		<category><![CDATA[Golden Ratio]]></category>
		<category><![CDATA[Golden Rectangle]]></category>
		<category><![CDATA[Phi]]></category>
		<category><![CDATA[Spiral]]></category>

		<guid isPermaLink="false">http://blog.chonla.com/?p=262</guid>
		<description><![CDATA[Entry นี้คงเป็น entry แรกที่ผมเขียนเรื่องที่ไม่เกี่ยวกับสิ่งที่ผมตั้งใจให้เว็บนี้เป็น ลองอ่านดูกันละกันครับ เมื่อวานได้ดูหนังที่โหลดมาเรื่อง Pi ชื่อไทยว่า นิพพานผ่านตัวเลข ผมเป็นคนที่ค่อนข้างชอบดูหนังประเภทนี้อยู่พอสมควรครับ (ทั้ง ๆ ที่เพิ่งได้ดูเรื่องนี้เป็นเรื่องที่ 2 เอง เรื่องแรกที่ดูคือ Beautiful mind) ในหนังจะพูดถึงค่าค่าหนึ่งที่เรียกว่า ฟี (phi) มีหนังสือหลายเรื่องที่พูดถึงค่านี้ครับ ไม่ว่าจะเป็น Da Vinci Code หรือแม้แต่การ์ตูนเรื่อง Jojo ภาค Steel ball run ก็ตาม อัตราส่วนทองคำ (Golden Ratio) หรือ ฟี (Phi), φ เป็นค่าคงที่ ที่มีค่า 1.618 โดยประมาณ หรือกล่าวได้ว่า เลข 2 จำนวน (คือ a และ b) จะเป็นอัตราส่วนทองคำก็ต่อเมื่อ อัตราส่วนระหว่างจำนวนที่มากกว่า (a) ต่อผลรวม (a+b) [...]]]></description>
			<content:encoded><![CDATA[<p>Entry นี้คงเป็น entry แรกที่ผมเขียนเรื่องที่ไม่เกี่ยวกับสิ่งที่ผมตั้งใจให้เว็บนี้เป็น ลองอ่านดูกันละกันครับ</p>
<p>เมื่อวานได้ดูหนังที่โหลดมาเรื่อง Pi ชื่อไทยว่า นิพพานผ่านตัวเลข ผมเป็นคนที่ค่อนข้างชอบดูหนังประเภทนี้อยู่พอสมควรครับ (ทั้ง ๆ ที่เพิ่งได้ดูเรื่องนี้เป็นเรื่องที่ 2 เอง เรื่องแรกที่ดูคือ Beautiful mind) ในหนังจะพูดถึงค่าค่าหนึ่งที่เรียกว่า ฟี (phi) มีหนังสือหลายเรื่องที่พูดถึงค่านี้ครับ ไม่ว่าจะเป็น Da Vinci Code หรือแม้แต่การ์ตูนเรื่อง Jojo ภาค Steel ball run ก็ตาม</p>
<p><span id="more-262"></span></p>
<p><strong>อัตราส่วนทองคำ (Golden Ratio) หรือ ฟี (Phi), φ</strong><br />
เป็นค่าคงที่ ที่มีค่า 1.618 โดยประมาณ หรือกล่าวได้ว่า เลข 2 จำนวน (คือ a และ b) จะเป็นอัตราส่วนทองคำก็ต่อเมื่อ อัตราส่วนระหว่างจำนวนที่มากกว่า (a) ต่อผลรวม (a+b) มีค่าเท่ากับอัตราส่วนระหว่างจำนวนที่น้อยกว่า (b) ต่อจำนวนที่มากกว่า (a) นั่นคือ ((a+b)/a)=(a/b) นั่นเอง</p>
<p>อัตราส่วนทองคำนี้ เมื่อเรานำมาเขียนในรูปแบบพีชคณิต จะได้เป็น (1+sqrt(5))/2 โดยที่ sqrt(x) หมายถึง รากที่ 2 ของ x</p>
<p><strong>ความสัมพันธ์ระหว่างอัตราส่วนทองคำกับอนุกรมฟิโบนัคชี่ (Fibonacci)</strong><br />
อนุกรมฟิโบนัคชี่ คืออนุกรมที่มีค่าเป็นผลบวกของตัวเลขในลำดับก่อนหน้านั้น 2 จำนวน นั่นคือ 1,1,2,3,5,8,13,21,&#8230; นั่นเอง เมื่อเรานำตัวเลขที่อยู่ติดกันในอนุกรมนี้มาหารกัน (ตัวมากตั้งแล้วหารด้วยตัวน้อย) จะพบว่า มันจะมีค่าใกล้เคียงกับอัตราส่วนทองคำเสมอ และเมื่อเรานำตัวเลขที่อยู่ติดกันในอนุกรมนี้ที่มีค่ามาก ๆ มาหารกัน จะพบว่า จะมีค่าเป็น 1.618 เสมอ</p>
<p><strong>สี่เหลี่ยมผืนผ้าทองคำ (Golden Rectangle)</strong><br />
คือ สี่เหลี่ยมผืนผ้าที่มีอัตราส่วนด้านยาวต่อด้านสั้นเป็นอัตราส่วนทองคำ เมื่อเราแบ่งสี่เหลี่ยมผืนผ้านี้ออกเป็นสองส่วน โดยส่วนแรกเป็นสี่เหลียมจตุรัสที่มีความยาวของด้านเป็นความกว้างของสี่เหลียมผืนผ้า เราจะพบว่าสี่เหลียมผืนผ้าที่เหลือจะกลายเป็นสี่เหลี่ยมผืนผ้าทองคำที่มีขนาดเล็กลง และเราสามารถแบ่งสี่เหลี่ยมผืนผ้าทองคำที่เกิดขึ้นใหม่นี้โดยวิธีการเดียวกันนี้ต่อไปเรื่อย ๆ ไม่รู้จบ</p>
<p><img class="aligncenter" title="Golden Rectangle" src="http://www.vcharkarn.com/varticle/A328/code_clip_image012.jpg" alt="" width="360" height="255" /></p>
<p><strong>เพนทากอน (Pentagon) หรือรูปห้าเหลี่ยมด้านเท่า</strong><br />
จะมีอัตราส่วนระหว่างความยาวของเส้นทแยงมุมเทียบกับความยาวของด้านหนึ่ง ๆ เท่ากับอัตราส่วนทองคำเสมอ</p>
<p style="text-align: center;"><img class="aligncenter" title="Pentagon" src="http://www.vcharkarn.com/varticle/A328/clip_image015.gif" alt="" width="305" height="158" /></p>
<p><strong>เกลียวฟิโบนัคชี่ (Fibonacci Spiral)</strong><br />
เกิดจากการลากเส้นโค้งผ่านไปยังจุดแบ่งสี่เหลี่ยมผืนผ้าทองคำ เราจะได้เกลียวฟิโบนัคชี่ที่ไม่รู้จบ</p>
<p><img class="aligncenter" title="Fibonacci Spiral" src="http://upload.wikimedia.org/wikipedia/commons/thumb/9/93/Fibonacci_spiral_34.svg/300px-Fibonacci_spiral_34.svg.png" alt="" width="300" height="190" /></p>
<p><strong>อัตราส่วนทองคำในผลงานที่สร้างโดยมนุษย์</strong><br />
เช่น มหาวิหารพาร์ธีนอน (Parthenon) ในเอเธนส์, มหาวิหารน็อตเตอร์ดาม (NotreDame Cathedral) ในปารีส, ภาพวาดโมนาลิซ่า (Mona Lisa), ภาพเดอะวิทรูเวียนแมน (The Vitruvian Man)</p>
<p><img class="aligncenter" title="Parthenon" src="http://www.vcharkarn.com/varticle/A328/code_clip_image014.jpg" alt="" width="432" height="269" /></p>
<p><img class="aligncenter" title="NotreDame Cathedral" src="http://www.vcharkarn.com/varticle/A328/clip_image009.jpg" alt="" width="445" height="254" /></p>
<p><img class="aligncenter" title="Monalisa" src="http://www.vcharkarn.com/varticle/A328/code_clip_image016.jpg" alt="" width="245" height="336" /></p>
<p><img class="aligncenter" title="The Vitruvian Man" src="http://www.vcharkarn.com/varticle/A328/vitruvian.jpg" alt="" width="494" height="691" /></p>
<p><strong>อัตราส่วนทองคำในธรรมชาติ</strong><br />
เช่น เปลือกหอยนอติลุส (Nautilus Shell), เมล็ดดอกทานตะวัน, การแตกใบของต้นไม้ (ใบที่แตกใหม่จะทำมุม 137.5 องศา กับแนวใบเดิม ซึ่งเอา 360 องศา &#8211; 137.5 องศา จะได้ 222.5 เมื่อเอาไปหารด้วย 137.5 จะได้ค่า Phi นั่นเอง), โครงสร้างร่างกายมนุษย์ เช่น ระยะจากหัวถึงพื้น หารด้วยระยะจากสะดือถึงพื้น, ระยะจากไหลถึงปลายนิ้ว หารด้วยระยะจากข้อศอกไปถึงปลายนิ้ว, ใบหน้าของมนุษย์</p>
<p><img class="aligncenter" title="Nautilus Shell" src="http://pirun.ku.ac.th/~b4706316/Image/phi/code_clip_image010.jpg" alt="" width="144" height="146" /></p>
<p><strong>อ้างอิง</strong></p>
<ul>
<li><a title="อัตราส่วนทอง" href="http://th.wikipedia.org/wiki/อัตราส่วนทอง" target="_blank">http://th.wikipedia.org/wiki/อัตราส่วนทอง</a></li>
<li><a title="ความสวยงาม" href="http://th.wikipedia.org/wiki/ความสวยงาม" target="_blank">http://th.wikipedia.org/wiki/ความสวยงาม</a></li>
<li><a title="รหัสลับนาโนเทคโนโลยี ใน รหัสลับดาวินชี (The Da Vinci Code)" href="http://www.vcharkarn.com/varticle/328/2#P2" target="_blank">http://www.vcharkarn.com/varticle/328/2#P2</a></li>
<li><a title="กระทู้น้ำเน่า ว่าด้วยค่า Phi สัดส่วนทองคำในนิยาย Davinci code" href="http://topicstock.pantip.com/wahkor/topicstock/X2765603/X2765603.html" target="_blank">http://topicstock.pantip.com/wahkor/topicstock/X2765603/X2765603.html</a></li>
</ul>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://blog.chonla.com/wp-content/plugins/add-to-any/share_save_171_16.gif" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blog.chonla.com/2010/01/%e0%b8%ad%e0%b8%b1%e0%b8%95%e0%b8%a3%e0%b8%b2%e0%b8%aa%e0%b9%88%e0%b8%a7%e0%b8%99%e0%b8%97%e0%b8%ad%e0%b8%87%e0%b8%84%e0%b8%b3-golden-ratio-%e0%b8%ab%e0%b8%a3%e0%b8%b7%e0%b8%ad-%e0%b8%9f%e0%b8%b5-p/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>รู้จักกับ Regular Expression กันเถอะ</title>
		<link>http://blog.chonla.com/2009/12/%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-regular-expression-%e0%b8%81%e0%b8%b1%e0%b8%99%e0%b9%80%e0%b8%96%e0%b8%ad%e0%b8%b0/</link>
		<comments>http://blog.chonla.com/2009/12/%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-regular-expression-%e0%b8%81%e0%b8%b1%e0%b8%99%e0%b9%80%e0%b8%96%e0%b8%ad%e0%b8%b0/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 18:06:20 +0000</pubDate>
		<dc:creator>chonla</dc:creator>
				<category><![CDATA[Regular Expression]]></category>

		<guid isPermaLink="false">http://blog.chonla.com/?p=255</guid>
		<description><![CDATA[Regular Expression คืออะไร Regular Expression (หรือ regex) คือ string pattern ที่ใช้แสดงรูปแบบของคำ หรือข้อความใด ๆ โดยตัว regex เองนั้นมีพื้นฐานมาจากทฤษฏีทางคณิตศาสตร์เพื่อใช้ในการเปรียบเทียบข้อความนั้น ๆ กับ pattern ที่กำหนดว่าสอดคล้องกันหรือไม่ (match) Regular Expression Engine Programming lanugage ปัจจุบันจะสนับสนุนการใช้งาน regex แล้ว แต่ปัญหาหนึ่งคือการเข้ากันได้ของ regex ในแต่ละภาษา ไม่ว่าจะเป็นความสามารถ และวิธีการเขียนที่แตกต่างกัน ดังนั้น regex ในภาษาหนึ่งจะไม่สามารถนำไปใช้กับอีกภาษาหนึ่งได้ทั้งหมด จะต้องมีการแก้ไขบางส่วนเพื่อให้สอดคล้องกับ engine ในภาษานั้น ๆ เราจะใช้ Regular Expression ตอนไหน ลองนึกถึงสถานการณ์ที่เรามีข้อความขนาดเป็นแสน ๆ ตัวอักษร และเราต้องการดูว่ามีคำซักคำในข้อความนั้นหรือไม่ บางคนอาจจะนึกถึงการใช้ strpos() แต่ลองนึกต่อไปอีกนิดว่า ถ้าคำที่เราต้องการหามันซับซ้อนกว่าที่เราจะทำแบบนั้นได้ล่ะ เช่น เราต้องการหาว่ามีคำที่ขึ้นต้นด้วย [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Regular Expression คืออะไร</strong></p>
<p>Regular Expression (หรือ regex) คือ string pattern ที่ใช้แสดงรูปแบบของคำ หรือข้อความใด ๆ โดยตัว regex เองนั้นมีพื้นฐานมาจากทฤษฏีทางคณิตศาสตร์เพื่อใช้ในการเปรียบเทียบข้อความนั้น ๆ กับ pattern ที่กำหนดว่าสอดคล้องกันหรือไม่ (match)</p>
<p><strong>Regular Expression Engine</strong></p>
<p>Programming lanugage ปัจจุบันจะสนับสนุนการใช้งาน regex แล้ว แต่ปัญหาหนึ่งคือการเข้ากันได้ของ regex ในแต่ละภาษา ไม่ว่าจะเป็นความสามารถ และวิธีการเขียนที่แตกต่างกัน ดังนั้น regex ในภาษาหนึ่งจะไม่สามารถนำไปใช้กับอีกภาษาหนึ่งได้ทั้งหมด จะต้องมีการแก้ไขบางส่วนเพื่อให้สอดคล้องกับ engine ในภาษานั้น ๆ</p>
<p><span id="more-255"></span></p>
<p><strong>เราจะใช้ Regular Expression ตอนไหน</strong></p>
<p>ลองนึกถึงสถานการณ์ที่เรามีข้อความขนาดเป็นแสน ๆ ตัวอักษร และเราต้องการดูว่ามีคำซักคำในข้อความนั้นหรือไม่ บางคนอาจจะนึกถึงการใช้ strpos() แต่ลองนึกต่อไปอีกนิดว่า ถ้าคำที่เราต้องการหามันซับซ้อนกว่าที่เราจะทำแบบนั้นได้ล่ะ เช่น เราต้องการหาว่ามีคำที่ขึ้นต้นด้วย c และลงท้ายด้วย e หรือไม่ กว่าเราจะทำ strpos เช็คดูทีละคำเสร็จคงจะหมดแรงพอดี ลองพิจารณาถึง regex ต่อไปนี้ \bc\w+e\b ที่สามารถหาคำที่ต้องการได้โดยคำสั่งเดียวดูว่าชีวิตจะง่ายขึ้นขนาดไหน</p>
<p><strong>Regular Expression ใน PHP</strong></p>
<p>ใน PHP นั้น เราสามารถเขียน regex ได้ 2 รูปแบบ คือ POSIX และ PCRE (Perl-Compatible) โดยส่วนตัวผมแล้ว ผมนิยมเขียนแบบ PCRE มากกว่าครับ ในส่วนของ POSIX Regex นั้น คำสั่งจะขึ้นต้นด้วย ereg_ ส่วน PCRE คำสั่งจะขึ้นต้นด้วย preg_ ครับ รูปแบบการเขียนของทั้งสองแบบจะแตกต่างกันเล็กน้อย แต่เมื่อเราเลือกที่จะเขียนแบบไหนแล้ว ก็แนะนำให้เขียนไปแบบเดียวให้ชำนาญครับ ไม่งั้นเดี๋ยวจะตีกันยุ่ง</p>
<p><strong>Regular Expression ใน Javascript</strong></p>
<p>ใน javascript ก็สามารถเขียนได้ 2 รูปแบบเช่นกัน คือ ผ่าน RegExp Object หรือ ผ่าน literal syntax เช่น /pattern/ (ไม่ต้องมีเครื่องหมายคำพูดครอบ เพราะไม่ใช่ String) ส่วนตัวแล้วผมจะนิยมเขียนแบบหลังมากกว่าครับ</p>
<p><strong>สิ่งที่จำเป็นต้องรู้ก่อนเขียน Regular Expression</strong></p>
<p><span style="text-decoration: underline;">Pattern Modifiers</span> นั่นคือ option ต่าง ๆ ที่ใช้ปรับรูปแบบการค้นหาจาก pattern ที่กำหนด เช่น ใน PCRE ถ้าเราระบุ i ไว้หลัง pattern จะเป็นการเปรียบเทียบแบบไม่สนใจตัวเล็กหรือตัวใหญ่ หรือการใส่ s ไว้หลัง pattern จะหมายถึงการกำหนดให้ wild card character (.) รวมเอาอักษรขึ้นบรรทัดใหม่ไว้ด้วย (ดู modifers อื่น ๆ เพิ่มได้ที่ <a title="PCRE Regular Expression Pattern Modifier" href="http://php.net/manual/en/reference.pcre.pattern.modifiers.php" target="_blank">http://php.net/manual/en/reference.pcre.pattern.modifiers.php</a>)</p>
<p><span style="text-decoration: underline;">Pattern Syntax</span> นั่นคือวิธีการเขียน regex นั่นเอง ในส่วนนี้จะรวมถึง meta-character เช่น ^ เป็นการระบุถึงต้นประโยค หรือ $ เป็นการระบุถึงท้ายประโยค หรือ . ที่จะหมายถึงตัวอักษรอะไรก็ได้ยกเว้นขึ้นบรรทัดใหม่ นอกจาก meta-character แล้ว ยังมีชุดของ character ที่ขึ้นต้นด้วย backslash อีกด้วย เช่น \d คือตัวเลข \D คืออักขระที่ไม่ใช่ตัวเลข \w คืออักขระที่นำมาใช้เป็นส่วนหนึ่งของคำได้ \W คือ อักขระที่ไม่ได้เป็นส่วนหนึ่งของคำ เป็นต้น รวมไปถึงการค้นหาตัวอักษรซ้ำ ๆ การทำ Back references การค้นหาแบบ optional ฯลฯ</p>
<p><strong>Back References</strong></p>
<p>ใช้สำหรับอ้างถึง subpattern ใน pattern ที่ระบุ back references ใน PHP จะขึ้นต้นด้วย backslash แล้วตามด้วยตัวเลขที่มากกว่า 0 ในขณะที่ของ javascript จะขึ้นต้นด้วย $ แล้วตามด้วยตัวเลขที่มากกว่า 0 โดย back references จะอ้างถึง subpattern เรียงตามลำดับจากตัวที่พบตัวแรก ให้เป็น 1 ตัวที่สอง ให้เป็น 2 ไปเรื่อย ๆ เช่น เรามี pattern คือ (cat) and (dog) เมื่อเรา match ได้ เราจะได้ \1 เป็น cat และ \2 เป็น dog นั่นเอง</p>
<p><strong>ตัวอย่าง Regular Expression</strong></p>
<p>ดูใน <a title="LIVE DEMO : Regular Expression" href="http://sandbox.chonla.com/regex" target="_blank">LIVE DEMO</a> ได้เลยครับ (Javascript Regular Expression DEMO)</p>
<p><span style="text-decoration: underline;">อ้างอิง</span></p>
<ul>
<li><a href="http://www.regular-expressions.info/tutorial.html" target="_blank">http://www.regular-expressions.info/tutorial.html</a></li>
<li><a href="http://www.websiterepairguy.com/articles/re/12_re.html" target="_blank">http://www.websiterepairguy.com/articles/re/12_re.html</a></li>
<li><a href="http://www.javascriptkit.com/javatutors/re.shtml" target="_blank">http://www.javascriptkit.com/javatutors/re.shtml</a></li>
<li><a href="http://php.net/manual/en/reference.pcre.pattern.modifiers.php" target="_blank">http://php.net/manual/en/reference.pcre.pattern.modifiers.php</a></li>
</ul>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://blog.chonla.com/wp-content/plugins/add-to-any/share_save_171_16.gif" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blog.chonla.com/2009/12/%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-regular-expression-%e0%b8%81%e0%b8%b1%e0%b8%99%e0%b9%80%e0%b8%96%e0%b8%ad%e0%b8%b0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ปลั๊กอิน BBCode สำหรับ jQuery</title>
		<link>http://blog.chonla.com/2009/11/%e0%b8%9b%e0%b8%a5%e0%b8%b1%e0%b9%8a%e0%b8%81%e0%b8%ad%e0%b8%b4%e0%b8%99-bbcode-%e0%b8%aa%e0%b8%b3%e0%b8%ab%e0%b8%a3%e0%b8%b1%e0%b8%9a-jquery/</link>
		<comments>http://blog.chonla.com/2009/11/%e0%b8%9b%e0%b8%a5%e0%b8%b1%e0%b9%8a%e0%b8%81%e0%b8%ad%e0%b8%b4%e0%b8%99-bbcode-%e0%b8%aa%e0%b8%b3%e0%b8%ab%e0%b8%a3%e0%b8%b1%e0%b8%9a-jquery/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 10:33:23 +0000</pubDate>
		<dc:creator>chonla</dc:creator>
				<category><![CDATA[Homemade Plugin]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Souce Code]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[BBCode]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Regular Expression]]></category>

		<guid isPermaLink="false">http://blog.chonla.com/?p=245</guid>
		<description><![CDATA[วันนี้ผมลองเขียน plugin แก้ขัดที่หายหน้าหายตาไปนานมาให้ลองกันครับ นั่นก็คือปลั๊กอินที่ใช้ render BBCode ครับ ใครที่เป็นนักโพสเว็บบอร์ดคงจะรู้จักกันดีว่า BBCode คืออะไร สำหรับใครที่ยังไม่รู้จักก็อ่านย่อหน้าถัดไปได้เลยครับ BBCode เราเรียกได้ว่าเป็น lightweighted markup language ใช้สำหรับจัดรูปแบบข้อความตามเว็บบอร์ดต่าง ๆ ครับ มีลักษณะของแท็กอยู่ในเครื่องหมายก้ามปู เช่น [b]ตัวหนา[/b] ครับ เจ้าตัว BBCode นี่เว็บบราวเซอร์มันไม่รู้จักครับ ต้องทำการแปลไปเป็น markup language ที่ใช้ทั่ว ๆ ไปก่อนครับ นั่นก็คือ HTML หรือ XHTML ครับ เช่น จาก [b]ตัวหนา[/b] จะถูกแปลงไปเป็น &#60;b&#62;ตัวหนา&#60;/b&#62; แล้วค่อยนำไปแสดงผลครับ จุดประสงค์หลัก ๆ ของ BBCode คือ เพื่อให้ผู้ใช้สามารถจัดรูปแบบข้อความได้ง่ายขึ้น รวมไปถึงเพื่อความปลอดภัยของการแสดงผลข้อความที่โพสโดยผู้ใช้ด้วยครับ เช่น การควบคุมการใช้งาน javascript การควบคุมให้ใช้ tag [...]]]></description>
			<content:encoded><![CDATA[<p>วันนี้ผมลองเขียน plugin แก้ขัดที่หายหน้าหายตาไปนานมาให้ลองกันครับ นั่นก็คือปลั๊กอินที่ใช้ render BBCode ครับ ใครที่เป็นนักโพสเว็บบอร์ดคงจะรู้จักกันดีว่า BBCode คืออะไร สำหรับใครที่ยังไม่รู้จักก็อ่านย่อหน้าถัดไปได้เลยครับ</p>
<p>BBCode เราเรียกได้ว่าเป็น lightweighted markup language ใช้สำหรับจัดรูปแบบข้อความตามเว็บบอร์ดต่าง ๆ ครับ มีลักษณะของแท็กอยู่ในเครื่องหมายก้ามปู เช่น [b]ตัวหนา[/b] ครับ เจ้าตัว BBCode นี่เว็บบราวเซอร์มันไม่รู้จักครับ ต้องทำการแปลไปเป็น markup language ที่ใช้ทั่ว ๆ ไปก่อนครับ นั่นก็คือ HTML หรือ XHTML ครับ เช่น จาก [b]ตัวหนา[/b] จะถูกแปลงไปเป็น &lt;b&gt;ตัวหนา&lt;/b&gt; แล้วค่อยนำไปแสดงผลครับ<br />
<span id="more-245"></span><br />
จุดประสงค์หลัก ๆ ของ BBCode คือ เพื่อให้ผู้ใช้สามารถจัดรูปแบบข้อความได้ง่ายขึ้น รวมไปถึงเพื่อความปลอดภัยของการแสดงผลข้อความที่โพสโดยผู้ใช้ด้วยครับ เช่น การควบคุมการใช้งาน javascript การควบคุมให้ใช้ tag ภายในข้อกำหนด เป็นต้น</p>
<p>เจ้าตัว BBCode เนี่ย มันไม่มีข้อกำหนดเป็นมาตรฐาน เพียงแค่มีการใช้งานโดยทั่วไปตามเว็บบอร์ดเวอร์ชั่นใหม่ ๆ ทั่วไปครับ รายละเอียดรูปแบบคำสั่ง สามารถตามไปดูในหัวข้ออ้างอิงท้ายบทความได้เลยครับ</p>
<p>ทีนี้มาดูกันว่าปลั๊กอินตัวนี้จะทำงานยังไงครับ</p>
<p>ง่าย ๆ ครับ แค่เรียก $(&lt;selector&gt;).bbcode(); เท่านั้นครับ เช่น</p>
<pre class="js">$("div").bbcode();</pre>
<p>ไอเดียของปลั๊กอินตัวนี้ผมได้มาจากตอนเขียนแก้บักการแสดงผล BBCode ให้เก็บเว็บไซต์หนึ่งครับ ปกติแล้วการ render จาก BBCode ไปเป็น HTML นั้น มักจะทำที่ Server และส่ง HTML ที่ได้มาให้บราวเซอร์แสดงผล แต่ผมต้องการที่จะลดโหลดฝั่ง Server ลง โดยจะย้ายการทำงานจากฝั่ง Server มาทำที่บราวเซอร์แทน</p>
<p>หลักการทำงานก็ไม่มีอะไรมากครับ ผมใช้วิธีการกำหนดค่า Pattern ในรูปแบบ Regular Expression และใช้ Regular Expression Engine ของ JavaScript ในการแสดงผลให้ถูกต้องเท่านั้นครับ</p>
<p>ลองไปดูที่ <a title="BBCode Plugin for jQuery" href="http://sandbox.chonla.com/bbcode/" target="_blank">LIVE DEMO</a> กันเลยครับ</p>
<p><span style="text-decoration: underline;">อ้างอิง</span></p>
<ul>
<li><span style="background-color: #ffffff;"><a title="BBCode" href="http://en.wikipedia.org/wiki/BBCode" target="_blank">http://en.wikipedia.org/wiki/BBCode</a></span></li>
</ul>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://blog.chonla.com/wp-content/plugins/add-to-any/share_save_171_16.gif" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blog.chonla.com/2009/11/%e0%b8%9b%e0%b8%a5%e0%b8%b1%e0%b9%8a%e0%b8%81%e0%b8%ad%e0%b8%b4%e0%b8%99-bbcode-%e0%b8%aa%e0%b8%b3%e0%b8%ab%e0%b8%a3%e0%b8%b1%e0%b8%9a-jquery/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Image Tag แบบไม่ง้อไฟล์</title>
		<link>http://blog.chonla.com/2009/09/image-tag-%e0%b9%81%e0%b8%9a%e0%b8%9a%e0%b9%84%e0%b8%a1%e0%b9%88%e0%b8%87%e0%b9%89%e0%b8%ad%e0%b9%84%e0%b8%9f%e0%b8%a5%e0%b9%8c/</link>
		<comments>http://blog.chonla.com/2009/09/image-tag-%e0%b9%81%e0%b8%9a%e0%b8%9a%e0%b9%84%e0%b8%a1%e0%b9%88%e0%b8%87%e0%b9%89%e0%b8%ad%e0%b9%84%e0%b8%9f%e0%b8%a5%e0%b9%8c/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 16:24:43 +0000</pubDate>
		<dc:creator>chonla</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Image]]></category>
		<category><![CDATA[Base64]]></category>
		<category><![CDATA[Performance Tuning]]></category>

		<guid isPermaLink="false">http://blog.chonla.com/?p=240</guid>
		<description><![CDATA[ใช่ครับ วันนี้ผมจะมาเล่าเรื่องการเขียน image tag แบบไม่ธรรมดาให้อ่านกันครับ image tag ที่ผมหมายถึงเนี่ย มันก็คือ นี่แหละครับ การเขียนแบบไม่ง้อไฟล์คือโดยปกติแล้ว เราจะระบุชื่อไฟล์ รวมถึง path ใน attribute src ใช่มั๊ยครับ แต่คราวนี้ เราจะเขียนแบบไม่ทำแบบนั้นครับ งานนี้เล่นจริง เจ็บจริง ไม่ใช้ javascript ไม่ใช้ css ครับ เพื่อความตื่นเต้น ลองไปดูที่ LIVE DEMO กันก่อนดีกว่าครับ จะเห็นได้ว่า มันก็ไม่เห็นมีอะไรพิเศษ ก็เป็นเว็บที่มีรูป smiley ธรรมดา แต่ถ้าลอง view source ดู จะเห็นครับ ว่ามันพิเศษยังไง ใช่แล้วครับ ทริกของมันก็คือ เราทำการระบุ content-type และเนื้อของไฟล์ลงไปตรง ๆ ในนั้นเลยครับ รูปแบบการเขียนคือ]]></description>
			<content:encoded><![CDATA[<p>ใช่ครับ วันนี้ผมจะมาเล่าเรื่องการเขียน image tag แบบไม่ธรรมดาให้อ่านกันครับ image tag ที่ผมหมายถึงเนี่ย มันก็คือ <IMG> นี่แหละครับ การเขียนแบบไม่ง้อไฟล์คือโดยปกติแล้ว เราจะระบุชื่อไฟล์ รวมถึง path ใน attribute src ใช่มั๊ยครับ แต่คราวนี้ เราจะเขียนแบบไม่ทำแบบนั้นครับ งานนี้เล่นจริง เจ็บจริง ไม่ใช้ javascript ไม่ใช้ css ครับ<br />
<span id="more-240"></span><br />
เพื่อความตื่นเต้น ลองไปดูที่ <a href="http://sandbox.chonla.com/imgtag/" target="_blank" title="LIVE DEMO : Image Tag แบบไม่ง้อไฟล์">LIVE DEMO</a> กันก่อนดีกว่าครับ</p>
<p>จะเห็นได้ว่า มันก็ไม่เห็นมีอะไรพิเศษ ก็เป็นเว็บที่มีรูป smiley ธรรมดา แต่ถ้าลอง view source ดู จะเห็นครับ ว่ามันพิเศษยังไง</p>
<p>ใช่แล้วครับ ทริกของมันก็คือ เราทำการระบุ content-type และเนื้อของไฟล์ลงไปตรง ๆ ในนั้นเลยครับ รูปแบบการเขียนคือ <img src="data:<content-type>;<content-encoding>,<file-content>&#8220;> นั่นเองครับ จากตัวอย่าง ผมกำหนดไฟล์ประเภท gif ก็จะระบุ content-type เป็น image/gif และ content-encoding เป็น base64 เพื่อบอกว่า file-content ที่ตามมา ถูก encode ด้วย base64 algorithm นั่นเอง</p>
<p>รู้แล้วทีนี้ก็ง่ายใช่มั๊ยล่ะครับ <img src='http://blog.chonla.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://blog.chonla.com/wp-content/plugins/add-to-any/share_save_171_16.gif" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blog.chonla.com/2009/09/image-tag-%e0%b9%81%e0%b8%9a%e0%b8%9a%e0%b9%84%e0%b8%a1%e0%b9%88%e0%b8%87%e0%b9%89%e0%b8%ad%e0%b9%84%e0%b8%9f%e0%b8%a5%e0%b9%8c/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
