<?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>thought snippets &#187; webdev</title>
	<atom:link href="http://blog.u-blue.com/category/webdev/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.u-blue.com</link>
	<description>a little bit of everything</description>
	<lastBuildDate>Tue, 08 Nov 2011 03:42:46 +0000</lastBuildDate>
	<language>TH</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>รวม 13 ฟอนต์ไทยแห่งชาติในรูปแบบ Webfont เพื่อใช้แสดงผลในเว็บไซต์</title>
		<link>http://blog.u-blue.com/2011/11/06/fontface-13-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%81%e0%b8%ab%e0%b9%88%e0%b8%87%e0%b8%8a%e0%b8%b2%e0%b8%95%e0%b8%b4/</link>
		<comments>http://blog.u-blue.com/2011/11/06/fontface-13-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%81%e0%b8%ab%e0%b9%88%e0%b8%87%e0%b8%8a%e0%b8%b2%e0%b8%95%e0%b8%b4/#comments</comments>
		<pubDate>Sun, 06 Nov 2011 09:18:07 +0000</pubDate>
		<dc:creator>nice</dc:creator>
				<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://blog.u-blue.com/?p=376</guid>
		<description><![CDATA[ต่อจากโพส ใช้ฟอนต์ภาษาไทยสวยๆในเว็บด้วย CSS3 @font-face เห็นว่าหลายๆคนอาจจะมีปัญหาในการเลือกฟอนต์ที่นำไปใช้บนเว็บได้ ทั้งในเรื่องลิขสิทธิ์ของฟอนต์ รวมไปถึงการแปลงฟอนต์จากเว็บ Fontsquirrel ก็อาจจะมีปัญหาบ้าง เพราะตัวเครื่องมือที่ใช้ในการแปลงนั้นไม่มี Preset สำหรับแปลงฟอนต์ไทยไว้ให้ วันนี้เลยได้รวบรวม 13 ฟอนต์ฟรีมาตรฐาน จากสำนักงานส่งเสริมอุตสาหกรรมซอฟต์แวร์แห่งชาติ (SIPA) มาแปลงเป็นเว็บฟอนต์เพื่อให้ดาวน์โหลดไปใช้งานกันได้เลย วิธีการใช้งานก็แค่ดาวน์โหลดชุด Webfont ของฟอนต์ใดๆด้านล่าง และเมื่อแตกไฟล์ออกมาจะมีไฟล์ index.html ซึ่งภายในจะมีวิธีการติดตั้งฟอนต์ลงในเว็บไซต์ไว้เรียบร้อย ไฟล์ที่ให้ดาวน์โหลดนั้นเป็นชุดของไฟล์ฟอนต์ที่แปลงเป็น Webfont เรียบร้อยแล้ว สำหรับใช้งานในการทำเว็บไซต์เท่านั้น หากต้องการฟอนต์เพื่อติดตั้งลงในเครื่องคอมพิวเตอร์ สามารถดาวน์โหลดได้ที่เว็บ f0nt.com &#160; ฟรีดาวน์โหลด 13 ฟอนต์ไทยแห่งชาติ ในรูปแบบ Webfont &#160; TH Bai Jamjuree CP ตัวอย่าง &#124; ดาวน์โหลด &#160; TH Chakra Petch ตัวอย่าง &#124; ดาวน์โหลด &#160; TH Charm of AU ตัวอย่าง &#124; ]]></description>
			<content:encoded><![CDATA[<p>ต่อจากโพส <a href="http://blog.u-blue.com/2011/04/02/css3-font-face-%E0%B8%9F%E0%B8%AD%E0%B8%99%E0%B8%95%E0%B9%8C%E0%B9%84%E0%B8%97%E0%B8%A2%E0%B9%83%E0%B8%99%E0%B9%80%E0%B8%A7%E0%B9%87%E0%B8%9A/">ใช้ฟอนต์ภาษาไทยสวยๆในเว็บด้วย CSS3 @font-face</a> เห็นว่าหลายๆคนอาจจะมีปัญหาในการเลือกฟอนต์ที่นำไปใช้บนเว็บได้ ทั้งในเรื่องลิขสิทธิ์ของฟอนต์ รวมไปถึงการแปลงฟอนต์จากเว็บ <a href="http://www.fontsquirrel.com/fontface/generator">Fontsquirrel</a> ก็อาจจะมีปัญหาบ้าง เพราะตัวเครื่องมือที่ใช้ในการแปลงนั้นไม่มี Preset สำหรับแปลงฟอนต์ไทยไว้ให้ วันนี้เลยได้รวบรวม <a title="13 ฟอนต์ฟรีมาตรฐาน จากสำนักงานส่งเสริมอุตสาหกรรมซอฟต์แวร์แห่งชาติ (SIPA)" href="http://www.f0nt.com/release/13-free-fonts-from-sipa/" target="_blank">13 ฟอนต์ฟรีมาตรฐาน จากสำนักงานส่งเสริมอุตสาหกรรมซอฟต์แวร์แห่งชาติ (SIPA)</a> มาแปลงเป็นเว็บฟอนต์เพื่อให้ดาวน์โหลดไปใช้งานกันได้เลย</p>
<p>วิธีการใช้งานก็แค่ดาวน์โหลดชุด Webfont ของฟอนต์ใดๆด้านล่าง และเมื่อแตกไฟล์ออกมาจะมีไฟล์ index.html ซึ่งภายในจะมีวิธีการติดตั้งฟอนต์ลงในเว็บไซต์ไว้เรียบร้อย</p>
<blockquote><p>ไฟล์ที่ให้ดาวน์โหลดนั้นเป็นชุดของไฟล์ฟอนต์ที่แปลงเป็น Webfont เรียบร้อยแล้ว สำหรับใช้งานในการทำเว็บไซต์เท่านั้น หากต้องการฟอนต์เพื่อติดตั้งลงในเครื่องคอมพิวเตอร์ สามารถดาวน์โหลดได้ที่เว็บ <a href="http://www.f0nt.com/release/13-free-fonts-from-sipa/" target="_blank">f0nt.com</a></p></blockquote>
<p><span id="more-376"></span></p>
<p>&nbsp;</p>
<h2>ฟรีดาวน์โหลด 13 ฟอนต์ไทยแห่งชาติ ในรูปแบบ Webfont</h2>
<p>&nbsp;</p>
<h3>TH Bai Jamjuree CP</h3>
<p><a href="http://blog.u-blue.com/example/13fonts/TH%20Bai%20Jamjuree/" target="_blank">ตัวอย่าง</a> | <a href="http://blog.u-blue.com/example/13fonts/TH%20Bai%20Jamjuree.zip" target="_blank">ดาวน์โหลด</a></p>
<p><a href="http://blog.u-blue.com/2011/11/06/fontface-13-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%81%e0%b8%ab%e0%b9%88%e0%b8%87%e0%b8%8a%e0%b8%b2%e0%b8%95%e0%b8%b4/th-bai-jamjuree-cp/" rel="attachment wp-att-380"><img class="alignnone size-full wp-image-380" title="TH-Bai-Jamjuree-CP" src="http://blog.u-blue.com/wp-content/uploads/2011/11/TH-Bai-Jamjuree-CP.gif" alt="" width="510" height="140" /></a></p>
<p>&nbsp;</p>
<h3>TH Chakra Petch</h3>
<p><a href="http://blog.u-blue.com/example/13fonts/TH%20Chakra%20Petch/" target="_blank">ตัวอย่าง</a> | <a href="http://blog.u-blue.com/example/13fonts/TH%20Chakra%20Petch.zip" target="_blank">ดาวน์โหลด</a></p>
<p><a href="http://blog.u-blue.com/2011/11/06/fontface-13-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%81%e0%b8%ab%e0%b9%88%e0%b8%87%e0%b8%8a%e0%b8%b2%e0%b8%95%e0%b8%b4/th-chakra-petch/" rel="attachment wp-att-381"><img class="alignnone size-full wp-image-381" title="TH-Chakra-Petch" src="http://blog.u-blue.com/wp-content/uploads/2011/11/TH-Chakra-Petch.gif" alt="" width="510" height="140" /></a></p>
<p>&nbsp;</p>
<h3>TH Charm of AU</h3>
<p><a href="http://blog.u-blue.com/example/13fonts/TH%20Charm%20of%20AU/" target="_blank">ตัวอย่าง</a> | <a href="http://blog.u-blue.com/example/13fonts/TH%20Charm%20of%20AU.zip" target="_blank">ดาวน์โหลด</a></p>
<p><a href="http://blog.u-blue.com/2011/11/06/fontface-13-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%81%e0%b8%ab%e0%b9%88%e0%b8%87%e0%b8%8a%e0%b8%b2%e0%b8%95%e0%b8%b4/th-charm-of-au/" rel="attachment wp-att-382"><img class="alignnone size-full wp-image-382" title="TH-Charm-of-AU" src="http://blog.u-blue.com/wp-content/uploads/2011/11/TH-Charm-of-AU.gif" alt="" width="510" height="140" /></a></p>
<p>&nbsp;</p>
<h3>TH Charmonman</h3>
<p><a href="http://blog.u-blue.com/example/13fonts/TH%20Charmonman/" target="_blank">ตัวอย่าง</a> | <a href="http://blog.u-blue.com/example/13fonts/TH%20Charmonman.zip" target="_blank">ดาวน์โหลด</a></p>
<p><a href="http://blog.u-blue.com/2011/11/06/fontface-13-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%81%e0%b8%ab%e0%b9%88%e0%b8%87%e0%b8%8a%e0%b8%b2%e0%b8%95%e0%b8%b4/th-charmonman/" rel="attachment wp-att-383"><img class="alignnone size-full wp-image-383" title="TH-Charmonman" src="http://blog.u-blue.com/wp-content/uploads/2011/11/TH-Charmonman.gif" alt="" width="510" height="140" /></a></p>
<p>&nbsp;</p>
<h3>TH Fah Kwang</h3>
<p><a href="http://blog.u-blue.com/example/13fonts/TH%20Fah%20Kwang/" target="_blank">ตัวอย่าง</a> | <a href="http://blog.u-blue.com/example/13fonts/TH%20Fah%20Kwang.zip" target="_blank">ดาวน์โหลด</a></p>
<p><a href="http://blog.u-blue.com/2011/11/06/fontface-13-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%81%e0%b8%ab%e0%b9%88%e0%b8%87%e0%b8%8a%e0%b8%b2%e0%b8%95%e0%b8%b4/th-fah-kwang/" rel="attachment wp-att-384"><img class="alignnone size-full wp-image-384" title="TH-Fah-Kwang" src="http://blog.u-blue.com/wp-content/uploads/2011/11/TH-Fah-Kwang.gif" alt="" width="510" height="140" /></a></p>
<p>&nbsp;</p>
<h3>TH K2D July8</h3>
<p><a href="http://blog.u-blue.com/example/13fonts/TH%20K2D%20July8/" target="_blank">ตัวอย่าง</a> | <a href="http://blog.u-blue.com/example/13fonts/TH%20K2D%20July8.zip" target="_blank">ดาวน์โหลด</a></p>
<p><a href="http://blog.u-blue.com/2011/11/06/fontface-13-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%81%e0%b8%ab%e0%b9%88%e0%b8%87%e0%b8%8a%e0%b8%b2%e0%b8%95%e0%b8%b4/th-k2d-july8/" rel="attachment wp-att-385"><img class="alignnone size-full wp-image-385" title="TH-K2D-July8" src="http://blog.u-blue.com/wp-content/uploads/2011/11/TH-K2D-July8.gif" alt="" width="510" height="140" /></a></p>
<p>&nbsp;</p>
<h3>TH KoHo</h3>
<p><a href="http://blog.u-blue.com/example/13fonts/TH%20KoHo/" target="_blank">ตัวอย่าง</a> | <a href="http://blog.u-blue.com/example/13fonts/TH%20KoHo.zip" target="_blank">ดาวน์โหลด</a></p>
<p><a href="http://blog.u-blue.com/2011/11/06/fontface-13-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%81%e0%b8%ab%e0%b9%88%e0%b8%87%e0%b8%8a%e0%b8%b2%e0%b8%95%e0%b8%b4/th-koho/" rel="attachment wp-att-387"><img class="alignnone size-full wp-image-387" title="TH-KoHo" src="http://blog.u-blue.com/wp-content/uploads/2011/11/TH-KoHo.gif" alt="" width="510" height="140" /></a></p>
<p>&nbsp;</p>
<h3>TH Kodchasan</h3>
<p><a href="http://blog.u-blue.com/example/13fonts/TH%20Kodchasan/" target="_blank">ตัวอย่าง</a> | <a href="http://blog.u-blue.com/example/13fonts/TH%20Kodchasan.zip" target="_blank">ดาวน์โหลด</a></p>
<p><a href="http://blog.u-blue.com/2011/11/06/fontface-13-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%81%e0%b8%ab%e0%b9%88%e0%b8%87%e0%b8%8a%e0%b8%b2%e0%b8%95%e0%b8%b4/th-kodchasan/" rel="attachment wp-att-386"><img class="alignnone size-full wp-image-386" title="TH-Kodchasan" src="http://blog.u-blue.com/wp-content/uploads/2011/11/TH-Kodchasan.gif" alt="" width="510" height="140" /></a></p>
<p>&nbsp;</p>
<h3>TH Krub</h3>
<p><a href="http://blog.u-blue.com/example/13fonts/TH%20Krub/" target="_blank">ตัวอย่าง</a> | <a href="http://blog.u-blue.com/example/13fonts/TH%20Krub.zip" target="_blank">ดาวน์โหลด</a></p>
<p><a href="http://blog.u-blue.com/2011/11/06/fontface-13-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%81%e0%b8%ab%e0%b9%88%e0%b8%87%e0%b8%8a%e0%b8%b2%e0%b8%95%e0%b8%b4/th-krub/" rel="attachment wp-att-388"><img class="alignnone size-full wp-image-388" title="TH-Krub" src="http://blog.u-blue.com/wp-content/uploads/2011/11/TH-Krub.gif" alt="" width="510" height="140" /></a></p>
<p>&nbsp;</p>
<h3>TH Mali Grade 6</h3>
<p><a href="http://blog.u-blue.com/example/13fonts/TH%20Mali%20Grade%206/" target="_blank">ตัวอย่าง</a> | <a href="http://blog.u-blue.com/example/13fonts/TH%20Mali%20Grade%206.zip" target="_blank">ดาวน์โหลด</a></p>
<p><a href="http://blog.u-blue.com/2011/11/06/fontface-13-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%81%e0%b8%ab%e0%b9%88%e0%b8%87%e0%b8%8a%e0%b8%b2%e0%b8%95%e0%b8%b4/th-mali-grade-6/" rel="attachment wp-att-389"><img class="alignnone size-full wp-image-389" title="TH-Mali-Grade-6" src="http://blog.u-blue.com/wp-content/uploads/2011/11/TH-Mali-Grade-6.gif" alt="" width="510" height="140" /></a></p>
<p>&nbsp;</p>
<h3>TH Niramit AS</h3>
<p><a href="http://blog.u-blue.com/example/13fonts/TH%20Niramit%20AS/" target="_blank">ตัวอย่าง</a> | <a href="http://blog.u-blue.com/example/13fonts/TH%20Niramit%20AS.zip" target="_blank">ดาวน์โหลด</a></p>
<p><a href="http://blog.u-blue.com/2011/11/06/fontface-13-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%81%e0%b8%ab%e0%b9%88%e0%b8%87%e0%b8%8a%e0%b8%b2%e0%b8%95%e0%b8%b4/th-niramit-as/" rel="attachment wp-att-390"><img class="alignnone size-full wp-image-390" title="TH-Niramit-AS" src="http://blog.u-blue.com/wp-content/uploads/2011/11/TH-Niramit-AS.gif" alt="" width="510" height="140" /></a></p>
<p>&nbsp;</p>
<h3>TH Sarabun PSK</h3>
<p><a href="http://blog.u-blue.com/example/13fonts/TH%20Sarabun%20New/" target="_blank">ตัวอย่าง</a> | <a href="http://blog.u-blue.com/example/13fonts/TH%20Sarabun%20New.zip" target="_blank">ดาวน์โหลด</a></p>
<p><a href="http://blog.u-blue.com/2011/11/06/fontface-13-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%81%e0%b8%ab%e0%b9%88%e0%b8%87%e0%b8%8a%e0%b8%b2%e0%b8%95%e0%b8%b4/th-sarabun-psk/" rel="attachment wp-att-391"><img class="alignnone size-full wp-image-391" title="TH-Sarabun-PSK" src="http://blog.u-blue.com/wp-content/uploads/2011/11/TH-Sarabun-PSK.gif" alt="" width="510" height="140" /></a></p>
<p>&nbsp;</p>
<h3>TH Srisakdi</h3>
<p><a href="http://blog.u-blue.com/example/13fonts/TH%20Srisakdi/" target="_blank">ตัวอย่าง</a> | <a href="http://blog.u-blue.com/example/13fonts/TH%20Srisakdi.zip" target="_blank">ดาวน์โหลด</a></p>
<p><a href="http://blog.u-blue.com/2011/11/06/fontface-13-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%81%e0%b8%ab%e0%b9%88%e0%b8%87%e0%b8%8a%e0%b8%b2%e0%b8%95%e0%b8%b4/th-srisakdi/" rel="attachment wp-att-392"><img class="alignnone size-full wp-image-392" title="TH-Srisakdi" src="http://blog.u-blue.com/wp-content/uploads/2011/11/TH-Srisakdi.gif" alt="" width="510" height="140" /></a></p>
<p>&nbsp;</p>
<h2>ข้อควรระวังในการนำไปใช้งาน</h2>
<ol>
<li>การแสดงผลฟอนต์นั้นอาจจะไม่เหมือนกัน ในแต่ละบราวเซอร์และระบบปฎิบัติการ ดังนั้นควรจะมีการทดสอบให้มากเท่าที่จะทำได้</li>
<li>ไม่ควรใช้ขนาดตัวอักษรเล็กเกินไป และควรจะใช้สีอักษรให้ต่างกับสีพื้นหลังให้มาก เพื่อการแสดงผลที่ดีที่สุดในทุกๆ บราวเซอร์</li>
<li>ในวินโดวส์และบราวเซอร์รุ่นเก่าๆ ฟอนต์บางฟอนต์อาจจะแสดงผลได้แย่มากๆ โดยเฉพาะในเครื่องที่ไม่ได้เปิดใช้งาน <a href="http://www.microsoft.com/typography/cleartype/tuner/step1.aspx" rel="nofollow">ClearType</a></li>
<li>อาจจะมีบางฟอนต์ที่มีรูปแบบของฟอนต์ไม่ครบ เช่น ไม่มีตัวหนาหรือตัวเอียง ซึ่งหากนำไปใช้ในเว็บไซต์และมีการสั่งให้แสดงผลในรูปแบบที่ไม่มีมา อาจจะทำให้การแสดงฟอนต์ไม่สวยเท่าไหร่นัก ทั้งขึ้นอยู่กับบราวเซอร์และระบบปฎิบัติการด้วย</li>
</ol>
<div class="ref-wrapper" id="ref-related"><h5 class="box primary">Related Entries</h5><ul><li class="boxlist"><a href="http://blog.u-blue.com/2011/04/02/css3-font-face-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%83%e0%b8%99%e0%b9%80%e0%b8%a7%e0%b9%87%e0%b8%9a/" class="box accent" >ใช้ฟอนต์ภาษาไทยสวยๆในเว็บด้วย CSS3 @font-face</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://blog.u-blue.com/2011/11/06/fontface-13-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%81%e0%b8%ab%e0%b9%88%e0%b8%87%e0%b8%8a%e0%b8%b2%e0%b8%95%e0%b8%b4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ใช้ฟอนต์ภาษาไทยสวยๆในเว็บด้วย CSS3 @font-face</title>
		<link>http://blog.u-blue.com/2011/04/02/css3-font-face-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%83%e0%b8%99%e0%b9%80%e0%b8%a7%e0%b9%87%e0%b8%9a/</link>
		<comments>http://blog.u-blue.com/2011/04/02/css3-font-face-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%83%e0%b8%99%e0%b9%80%e0%b8%a7%e0%b9%87%e0%b8%9a/#comments</comments>
		<pubDate>Sat, 02 Apr 2011 16:36:55 +0000</pubDate>
		<dc:creator>nice</dc:creator>
				<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://blog.u-blue.com/?p=279</guid>
		<description><![CDATA[นานมาแล้วที่เราชาวคนทำเว็บต้องทนใช้ฟอนต์ภาษาไทยในตระกูล Web Safe Font(MS Sans Serif, Tahoma, etc&#8230;) และถ้าอยากใช้ฟอนต์สวยๆก็ต้องจำใจทำตัวหนังสือให้เป็นรูปภาพ ซึ่งถึงจะใช้ได้แต่ก็มีข้อเสียมากมาย เช่น คอมพิวเตอร์อ่านไม่ออก ไม่รู้ว่าเป็นตัวหนังสือ ทำให้เว็บมีขนาดใหญ่ ใช้เวลาโหลดนานขึ้น ก๊อปปี้ตัวหนังสือไม่ได้ แก้ไขข้อความยาก ต้องเสียเวลาทำภาพใหม่ ฯลฯ แต่ข้อจำกัดเหล่านี้ก็กำลังจะหมดไป ด้วยคุณสมบัติใหม่ของ CSS3 @font-face ที่จะทำให้เราสามารถนำตัวฟอนต์สวยๆมาใส่ในเว็บไซต์ได้ และจะยังมคุณสมบัติเหมือนตัวหนังสือทั่วไปทุกประการ Update: โพสใหม่ รวม 13 ฟอนต์ไทยแห่งชาติในรูปแบบ Webfont เพื่อใช้แสดงผลในเว็บไซต์ สำหรับคนที่ต้องการฟอนต์ที่ดาวน์โหลดแล้วใช้งานได้เลย &#160; วิธีการใช้ @font-face วิธีใช้จริงๆแล้วไม่ได้ยากมากมาย เนื่องจาก @font-face นี้เป็นหนึ่งในไม่กี่อย่างของ CSS3 ที่สามารถใช้งานใน IE ได้แม้กระทั่งใน IE6 เลยทีเดียว โดยขั้นแรกก็เอาฟอนต์ที่เราชื่นชอบมาแปลงเป็นชุดของฟอนต์สำหรับใช้ในเว็บเสียก่อน โดยเครื่องมือที่ใช้ง่ายที่สุดได้แก่ @font-face Kit Generator โดย Font Squirrel ซึ่งวิธีการตั้งค่าสำหรับฟอนต์ไทยจะต้องใช้โหมด EXPERT ดังภาพ โดยฟอนต์ที่ใช้เป็นตัวอย่างนี้คือฟอนต์ ]]></description>
			<content:encoded><![CDATA[<p>นานมาแล้วที่เราชาวคนทำเว็บต้องทนใช้ฟอนต์ภาษาไทยในตระกูล Web Safe Font(MS Sans Serif, Tahoma, etc&#8230;) และถ้าอยากใช้ฟอนต์สวยๆก็ต้องจำใจทำตัวหนังสือให้เป็นรูปภาพ ซึ่งถึงจะใช้ได้แต่ก็มีข้อเสียมากมาย เช่น</p>
<ul>
<li>คอมพิวเตอร์อ่านไม่ออก ไม่รู้ว่าเป็นตัวหนังสือ</li>
<li>ทำให้เว็บมีขนาดใหญ่ ใช้เวลาโหลดนานขึ้น</li>
<li>ก๊อปปี้ตัวหนังสือไม่ได้</li>
<li>แก้ไขข้อความยาก ต้องเสียเวลาทำภาพใหม่</li>
<li>ฯลฯ</li>
</ul>
<p>แต่ข้อจำกัดเหล่านี้ก็กำลังจะหมดไป ด้วยคุณสมบัติใหม่ของ CSS3 @font-face ที่จะทำให้เราสามารถนำตัวฟอนต์สวยๆมาใส่ในเว็บไซต์ได้ และจะยังมคุณสมบัติเหมือนตัวหนังสือทั่วไปทุกประการ</p>
<p><span id="more-279"></span></p>
<blockquote><p><strong>Update: โพสใหม่ <a href="http://blog.u-blue.com/2011/11/06/fontface-13-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%81%e0%b8%ab%e0%b9%88%e0%b8%87%e0%b8%8a%e0%b8%b2%e0%b8%95%e0%b8%b4/">รวม 13 ฟอนต์ไทยแห่งชาติในรูปแบบ Webfont เพื่อใช้แสดงผลในเว็บไซต์</a> สำหรับคนที่ต้องการฟอนต์ที่ดาวน์โหลดแล้วใช้งานได้เลย</strong></p></blockquote>
<p>&nbsp;</p>
<h2>วิธีการใช้ @font-face</h2>
<p>วิธีใช้จริงๆแล้วไม่ได้ยากมากมาย เนื่องจาก @font-face นี้เป็นหนึ่งในไม่กี่อย่างของ CSS3 ที่สามารถใช้งานใน IE ได้แม้กระทั่งใน IE6 เลยทีเดียว โดยขั้นแรกก็เอาฟอนต์ที่เราชื่นชอบมาแปลงเป็นชุดของฟอนต์สำหรับใช้ในเว็บเสียก่อน โดยเครื่องมือที่ใช้ง่ายที่สุดได้แก่ <a title="@font-face Kit Generator" href="http://www.fontsquirrel.com/fontface/generator" target="_blank">@font-face Kit Generator โดย Font Squirrel</a> ซึ่งวิธีการตั้งค่าสำหรับฟอนต์ไทยจะต้องใช้โหมด EXPERT ดังภาพ</p>
<div id="attachment_280" class="wp-caption alignnone" style="width: 485px"><a href="http://blog.u-blue.com/2011/04/02/css3-font-face-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%83%e0%b8%99%e0%b9%80%e0%b8%a7%e0%b9%87%e0%b8%9a/fontgenerator/" rel="attachment wp-att-280"><img class="size-full wp-image-280    " title="Font Genetator" src="http://blog.u-blue.com/wp-content/uploads/2011/04/fontgenerator.gif" alt="Font Genetator" width="475" height="741" /></a><p class="wp-caption-text">ส่วนที่สำคัญคือตั้ง Subsetting เป็น No Subsetting เพื่อให้ใช้ภาษาไทยได้</p></div>
<p>โดยฟอนต์ที่ใช้เป็นตัวอย่างนี้คือฟอนต์ <strong>TH Mali Grade 6</strong> (ด.ญ. มะลิ ป.6) ออกแบบโดย คุณสุดารัตน์ เลิศสีทอง มาจากชุด <a title="13 ฟอนต์ฟรีมาตรฐาน จากสำนักงานส่งเสริมอุตสาหกรรมซอฟต์แวร์แห่งชาติ (SIPA)" href="http://www.f0nt.com/release/13-free-fonts-from-sipa/" target="_blank">13 ฟอนต์ฟรีมาตรฐาน จากสำนักงานส่งเสริมอุตสาหกรรมซอฟต์แวร์แห่งชาติ (SIPA)13 ฟอนต์ฟรีมาตรฐาน จากสำนักงานส่งเสริมอุตสาหกรรมซอฟต์แวร์แห่งชาติ (SIPA)</a></p>
<p>เมื่อตั้งค่าเรียบร้อยก็กด Download ด้านล่าง และจะได้ไฟล์มาดังนี้</p>
<p><a href="http://blog.u-blue.com/2011/04/02/css3-font-face-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%83%e0%b8%99%e0%b9%80%e0%b8%a7%e0%b9%87%e0%b8%9a/screen-shot-2011-04-02-at-10-56-29-pm/" rel="attachment wp-att-291"><img class="alignnone size-full wp-image-291" title="Font files" src="http://blog.u-blue.com/wp-content/uploads/2011/04/Screen-shot-2011-04-02-at-10.56.29-PM.png" alt="Font files" width="410" height="349" /></a></p>
<p>โดยการนำไปใช้งานก็ไม่ยาก เพียงแค่นำไฟล์สกุล eot, woff, ttf และ svg ใส่ในโฟลเดอร์ใดๆในเว็บ และคัดลอกโค้ทจากไฟล์ stylesheet.css ไปยังไฟล์ stylesheet หลัก จากนั้นก็เปลี่ยน  path ที่อยู่ของไฟล์ฟอนต์ให้ถูกต้อง เช่น</p>
<pre class="brush:css">@font-face {
 font-family: 'THMaliGrade6Regular';
 src:url('/path/th_mali_grade6-webfont.eot');
 src:url('/path/th_mali_grade6-webfont.eot?iefix') format('eot'),
     url('/path/th_mali_grade6-webfont.woff') format('woff'),
     url('/path/th_mali_grade6-webfont.ttf') format('truetype'),
     url('/path/th_mali_grade6-webfont.svg#webfontCXAunSZT')
     format('svg');
 font-weight: normal;
 font-style: normal;
}
body{
  font-family: THMaliGrade6Regular, Tahoma, sans-serif;
}</pre>
<p><a title="ตัวอย่างการใช้ฟอนต์ไทยในเว็บไซต์ด้วย CSS3 @font-face" href="http://blog.u-blue.com/example/fontface/">ดูตัวอย่างการนำไปใช้งานจริง</a></p>
<p>จากนี้ไปส่วนที่สำคัญคือการทดสอบในเว็บบราวเซอร์ต่างๆ เนื่องจากแต่ละฟอนต์จะแสดงผลในแต่ละบราวเซอร์ได้ไม่เหมือนกัน</p>
<p>&nbsp;</p>
<h2>การใช้ Google Font API</h2>
<p>นอกจากการทำฟอนต์ดังที่กล่าวมาแล้ว ยังมีวิธีง่ายๆอีกอย่าง คือการใช้ฟอนต์จาก Google Font API โดยไปที่ <a href="http://www.google.com/webfonts">http://www.google.com/webfonts</a> คลิกยังฟอนต์ที่ต้องการ และคลิก Use this font จากนั้นทำการคัดลอกโค้ทมาไว้ภายใน เช่น</p>
<p>เมื่อต้องการนำไปใช้ก็เพียงแค่เพิ่มฟอนต์ลงใน CSS เช่น</p>
<pre class="brush:css">h1 {
   font-family: 'Michroma', arial, serif;
}</pre>
<p>แต่ฟอนต์จาก Google Font API นี้ยังใช้ภาษาไทยไม่ได้ หากต้องการจะใช้ฟอนต์สำหรับภาษาไทยและอังกฤษแตกต่างกันก็ทำได้ง่ายๆโดยเพิ่มฟอนต์ทั้งสองลงใน Font Stack โดยให้ฟอนต์ภาษาอังกฤษมาก่อน เช่น</p>
<pre class="brush:css">h1 {
   font-family: 'Michroma','THMaliGrade6Regular', serif;
}</pre>
<p>เมื่อบราวเซอร์เรียกใช้งานก็จะพยายามเรียกฟอนต์ Michroma ก่อน และหากพบตัวหนังสือภาษาไทย และฟอนต์ดังกล่าวไม่สามารถแสดงผลได้ มันก็จะทำการเรียกฟอนต์ต่อไป ซึ่งก็คือ THMaliGrade6Regular มาใช้ในการแสดงผลภาษาไทยนั้นเอง</p>
<p>เพียงเท่านี้ก็สามารถใช้งานฟอนต์สวยๆในเว็บไซต์ได้ โดยไม่ต้องทนอยู่ในข้อจำกัดของ Web Safe Font อีกต่อไป</p>
<blockquote><p><strong>Update: โพสใหม่ <a href="http://blog.u-blue.com/2011/11/06/fontface-13-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%81%e0%b8%ab%e0%b9%88%e0%b8%87%e0%b8%8a%e0%b8%b2%e0%b8%95%e0%b8%b4/">รวม 13 ฟอนต์ไทยแห่งชาติในรูปแบบ Webfont เพื่อใช้แสดงผลในเว็บไซต์</a> สำหรับคนที่ต้องการฟอนต์ที่ดาวน์โหลดแล้วใช้งานได้เลย</strong></p></blockquote>
<p>&nbsp;</p>
<div class="ref-wrapper" id="ref-related"><h5 class="box primary">Related Entries</h5><ul><li class="boxlist"><a href="http://blog.u-blue.com/2011/11/06/fontface-13-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%81%e0%b8%ab%e0%b9%88%e0%b8%87%e0%b8%8a%e0%b8%b2%e0%b8%95%e0%b8%b4/" class="box accent" >รวม 13 ฟอนต์ไทยแห่งชาติในรูปแบบ Webfont เพื่อใช้แสดงผลในเว็บไซต์</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://blog.u-blue.com/2011/04/02/css3-font-face-%e0%b8%9f%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%8c%e0%b9%84%e0%b8%97%e0%b8%a2%e0%b9%83%e0%b8%99%e0%b9%80%e0%b8%a7%e0%b9%87%e0%b8%9a/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>เวลาแบบแมททริคและนาฬิกาเข็ม ด้วย CSS3&amp;Javascript</title>
		<link>http://blog.u-blue.com/2011/03/16/%e0%b9%80%e0%b8%a7%e0%b8%a5%e0%b8%b2%e0%b9%81%e0%b8%9a%e0%b8%9a%e0%b9%81%e0%b8%a1%e0%b8%97%e0%b8%97%e0%b8%a3%e0%b8%b4%e0%b8%84%e0%b9%81%e0%b8%a5%e0%b8%b0%e0%b8%99%e0%b8%b2%e0%b8%ac%e0%b8%b4%e0%b8%81/</link>
		<comments>http://blog.u-blue.com/2011/03/16/%e0%b9%80%e0%b8%a7%e0%b8%a5%e0%b8%b2%e0%b9%81%e0%b8%9a%e0%b8%9a%e0%b9%81%e0%b8%a1%e0%b8%97%e0%b8%97%e0%b8%a3%e0%b8%b4%e0%b8%84%e0%b9%81%e0%b8%a5%e0%b8%b0%e0%b8%99%e0%b8%b2%e0%b8%ac%e0%b8%b4%e0%b8%81/#comments</comments>
		<pubDate>Wed, 16 Mar 2011 15:32:18 +0000</pubDate>
		<dc:creator>nice</dc:creator>
				<category><![CDATA[others]]></category>
		<category><![CDATA[playground]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[metric time]]></category>

		<guid isPermaLink="false">http://blog.u-blue.com/?p=323</guid>
		<description><![CDATA[นาฬิกาเข็มแสดงเวลาในหน่วยแมททริค เขียนด้วย CSS3 Transform และ Javascript อีกนิดหน่อย Mertic Time Clock Download (เฉพาะ Chrome, Firefox, Safari) Mertic Time Clock Download *Metric time คือความพยายามที่จะสร้างหน่วยเวลาใหม่ในรูปแบบฐานสิบ โดยในหนึ่งวันจะมี 10 ชั่วโมง]]></description>
			<content:encoded><![CDATA[<p>นาฬิกาเข็มแสดงเวลาในหน่วยแมททริค เขียนด้วย CSS3 Transform และ Javascript อีกนิดหน่อย</p>
<p><a href="https://github.com/nblue/Metric-time-clock">Mertic Time Clock Download</a></p>
<p><a rel="attachment wp-att-324" href="http://blog.u-blue.com/2011/03/16/%e0%b9%80%e0%b8%a7%e0%b8%a5%e0%b8%b2%e0%b9%81%e0%b8%9a%e0%b8%9a%e0%b9%81%e0%b8%a1%e0%b8%97%e0%b8%97%e0%b8%a3%e0%b8%b4%e0%b8%84%e0%b9%81%e0%b8%a5%e0%b8%b0%e0%b8%99%e0%b8%b2%e0%b8%ac%e0%b8%b4%e0%b8%81/metric-time/"><img class="alignnone size-full wp-image-324" title="Metric time analog clock" src="http://blog.u-blue.com/wp-content/uploads/2011/04/metric-time.png" alt="" width="458" height="511" /></a></p>
<p>(เฉพาะ Chrome, Firefox, Safari)</p>
<p><span id="more-323"></span></p>
<p><a href="https://github.com/nblue/Metric-time-clock">Mertic Time Clock Download</a></p>
<p>*<a title="A Guide to Metric Time" href="http://zapatopi.net/metrictime/">Metric time</a> คือความพยายามที่จะสร้างหน่วยเวลาใหม่ในรูปแบบฐานสิบ โดยในหนึ่งวันจะมี 10 ชั่วโมง</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.u-blue.com/2011/03/16/%e0%b9%80%e0%b8%a7%e0%b8%a5%e0%b8%b2%e0%b9%81%e0%b8%9a%e0%b8%9a%e0%b9%81%e0%b8%a1%e0%b8%97%e0%b8%97%e0%b8%a3%e0%b8%b4%e0%b8%84%e0%b9%81%e0%b8%a5%e0%b8%b0%e0%b8%99%e0%b8%b2%e0%b8%ac%e0%b8%b4%e0%b8%81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>สร้าง Sitemap ด้วย HTML+CSS3</title>
		<link>http://blog.u-blue.com/2010/03/11/create-visual-sitemap-with-html-css3/</link>
		<comments>http://blog.u-blue.com/2010/03/11/create-visual-sitemap-with-html-css3/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 12:52:17 +0000</pubDate>
		<dc:creator>nice</dc:creator>
				<category><![CDATA[playground]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://blog.u-blue.com/?p=259</guid>
		<description><![CDATA[สำหรับคนที่ทำเว็บและใช้เว็บก็คงจะคุ้นเคยกันดีกับหน้า sitemap ซึ่งโดยปกติก็จะเป็นหน้าที่รวบรวมลิงค์ไปยังทุกๆหน้ามาเรียงกันไว้อย่างมีระบบ สำหรับตัวเราเองเวลาทำเว็บแล้วก็จะทิ้งส่วนนี้ไว้เป็นส่วนสุดท้าย ซึ่งยอมรับเลยว่าบางครั้งไม่อยากทำเท่าไหร่ เพราะมันออกแนวน่าเบื่อและสำหรับหลายๆงานมันก็ไม่ได้อยู่ใน requirement ด้วยซ้ำ แต่ก็ต้องทำเพราะเป็นส่วนที่ควรจะทำ ซึ่งเวลาทำเข้าจริงๆแล้วก็ไม่พ้นต้องใช้ unordered list ไปเรื่อยๆ เหตุผลเพราะมันง่ายที่สุด แต่ผลลัพท์ที่ได้ออกมาก็ไม่ได้สวยงามเลยซักนิด วันนี้ก็เลยจะลองใช้ css เขียนดูบ้าง โดยอกแบบให้ใช้กับเว็บขนาดเล็กถึงกลาง กะว่าเขียนทิ้งไว้เลย งานไหนๆก็จะใช้ประมาณนี้ เปลี่ยนแค่สีอย่างเดียว พอลงมือทำโดยใช้ css2 แล้วก็พบว่ามันไม่พอที่จะทำรูปแบบโครงสร้างแบบ tree อย่างที่ตั้งใจไว้ เลยต้องตัดใจใช้ css3 ซึ่งส่วนที่สำคัญคือ pseudo-class selector แล้วก็จัดการกับ ie 6 ด้วย javascript hack นิดๆหน่อย ออกมาก็ได้หน้าตาประมาณนี้ โค้ทที่เขียนและรูปภาพที่ใช้ก็พยายามให้มีน้อยที่สุด ที่ไม่ชอบเลยคือ javascript hack แต่จริงๆแล้วเวลาใช้ก็ไม่ต้อง hack ก็ได้ เพราะถ้าไม่นับ ie6 แล้วก็ยังสามารถดู sitemap ในบราวเซอร์อื่นๆที่ไม่สนับสนุน css3 ได้ ได้อาจจะผิดเพี้ยนไปบ้างเท่านั้นเอง ]]></description>
			<content:encoded><![CDATA[<p>สำหรับคนที่ทำเว็บและใช้เว็บก็คงจะคุ้นเคยกันดีกับหน้า sitemap ซึ่งโดยปกติก็จะเป็นหน้าที่รวบรวมลิงค์ไปยังทุกๆหน้ามาเรียงกันไว้อย่างมีระบบ สำหรับตัวเราเองเวลาทำเว็บแล้วก็จะทิ้งส่วนนี้ไว้เป็นส่วนสุดท้าย ซึ่งยอมรับเลยว่าบางครั้งไม่อยากทำเท่าไหร่ เพราะมันออกแนวน่าเบื่อและสำหรับหลายๆงานมันก็ไม่ได้อยู่ใน requirement ด้วยซ้ำ แต่ก็ต้องทำเพราะเป็นส่วนที่ควรจะทำ ซึ่งเวลาทำเข้าจริงๆแล้วก็ไม่พ้นต้องใช้ unordered list ไปเรื่อยๆ เหตุผลเพราะมันง่ายที่สุด แต่ผลลัพท์ที่ได้ออกมาก็ไม่ได้สวยงามเลยซักนิด</p>
<p>วันนี้ก็เลยจะลองใช้ css เขียนดูบ้าง โดยอกแบบให้ใช้กับเว็บขนาดเล็กถึงกลาง กะว่าเขียนทิ้งไว้เลย งานไหนๆก็จะใช้ประมาณนี้ เปลี่ยนแค่สีอย่างเดียว พอลงมือทำโดยใช้ css2 แล้วก็พบว่ามันไม่พอที่จะทำรูปแบบโครงสร้างแบบ tree อย่างที่ตั้งใจไว้ เลยต้องตัดใจใช้ css3 ซึ่งส่วนที่สำคัญคือ pseudo-class selector แล้วก็จัดการกับ ie 6 ด้วย javascript hack นิดๆหน่อย ออกมาก็ได้หน้าตาประมาณนี้</p>
<p><a href="http://blog.u-blue.com/wp-content/uploads/2010/03/sitemap.png"><img src="http://blog.u-blue.com/wp-content/uploads/2010/03/sitemap-300x157.png" alt="usitemap" title="usitemap" width="300" height="157" class="alignnone size-medium wp-image-261" /></a></p>
<p>โค้ทที่เขียนและรูปภาพที่ใช้ก็พยายามให้มีน้อยที่สุด ที่ไม่ชอบเลยคือ javascript hack แต่จริงๆแล้วเวลาใช้ก็ไม่ต้อง hack ก็ได้ เพราะถ้าไม่นับ ie6 แล้วก็ยังสามารถดู sitemap ในบราวเซอร์อื่นๆที่ไม่สนับสนุน css3 ได้ ได้อาจจะผิดเพี้ยนไปบ้างเท่านั้นเอง ว่าไปเยอะแล้ว มาดูโค้ทบ้าง<br />
<span id="more-259"></span></p>
<p>ใครสนใจสามารถดาวน์โหลดโค้ททั้งหมดได้ -> <a href='https://github.com/nblue/VisualSitemap'>download usitemap</a></p>
<p>ในส่วนของ HTML ก็จะใช้ unordered list ตามปกติ สามารถใส่ซ้อนกันไปได้เรื่อยๆ เช่น</p>
<pre class="brush:html">
&lt;ul>
  &lt;li>Home
    &lt;ul>
      &lt;li>Product
          &lt;ul>
            &lt;li>Computer&lt;/li>
            &lt;li>Printer&lt;/li>
            &lt;li>Scanner&lt;/li>
          &lt;/ul>
      &lt;/li>
      &lt;li>Client&lt;/li>
      &lt;li>About&lt;/li>
      &lt;li>Contact&lt;/li>
    &lt;/ul>
  &lt;/li>
&lt;/ul>
</pre>
<p>จากนั้นในส่วนของ css ก็จะเขียนให้มาควบคุมการแสดงผล โดยนอกจาก css แล้วยังได้ใช้รูป gif อีกทั้งหมด 4 รูปเพื่อให้ลากเส้นของโครงสร้างต้นไม้ ดังนี้</p>
<pre class="brush:css">
/*change color*/
#usitemap a, #usitemap a:visited{color:#4D6180;background: #B5C7E3;border: 1px solid #4D6180;}
#usitemap a:hover, #usitemap a:active{background: #90ABD5;}

/*sitemap core*/
#usitemap *{margin: 0;padding: 0;}
#usitemap ul li{list-style: none;position: relative;top: 0px;width: 120px;padding: 10px 40px 0 0;background-image: url(fork_mid.gif);background-position: top left;background-repeat: no-repeat;}
#usitemap ul li:last-child{ background-image: url(fork_last.gif); }
#usitemap ul li:first-child{ background-image: url(fork.gif); }
#usitemap ul li:only-child{ background-image: url(dotted.gif); background-repeat: repeat-x;}
#usitemap ul li ul li{left: 172px;top: 0px;font-size: .9em;}
#usitemap ul li ul{margin-top: -42px}
#usitemap ul li a{text-align: center;display: block;line-height: 28px;-webkit-border-radius: 5px;-moz-border-radius: 5px;border-radius: 5px;margin: 0 0px 0 50px;width: 120px;text-decoration: none;}
</pre>
<p>สุดท้ายก็ใช้ javascript hack สำหรับ ie โดยในที่นี้ใช้ <a href="http://www.keithclark.co.uk/labs/ie-css3/">ie-css3</a> ร่วมกับ <a href="http://jquery.com/">jquery</a> ประมาณนี้</p>
<pre class="brush:html">
&lt;script type="text/javascript" src="js/jquery-1.3.1.min.js">&lt;/script>
&lt;!--[if (gte IE 5.5)&#038;(lte IE 8)]>
&lt;script type="text/javascript" src="ie-css3.js">&lt;/script>
&lt;![endif]-->
</pre>
<p>*ไม่ต้องใช้ hack ก็ยังสามารถดู sitemap ได้ใน ie แต่เส้นที่ลากอาจจะผิดเพี้ยนไปบ้าง</p>
<p>แค่นี้ก็ได้ sitemap ง่ายๆ โดยไม่ต้องเสียเวลาไปกับมันมากอีกต่อไป!</p>
<p>ใครสนใจสามารถดาวน์โหลดโค้ททั้งหมดได้ -> <a href='https://github.com/nblue/VisualSitemap'>download usitemap</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.u-blue.com/2010/03/11/create-visual-sitemap-with-html-css3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>แสดง Stat หน้าเว็บจาก Google Analytics</title>
		<link>http://blog.u-blue.com/2010/02/10/visible-stat-with-google-analytics/</link>
		<comments>http://blog.u-blue.com/2010/02/10/visible-stat-with-google-analytics/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 11:15:48 +0000</pubDate>
		<dc:creator>nice</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[playground]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[google analytic]]></category>

		<guid isPermaLink="false">http://blog.u-blue.com/?p=213</guid>
		<description><![CDATA[จากบล๊อคที่แล้ว ดึงข้อมูลจาก Google Analytic มาแสดงด้วย PHP ทำให้เกิดอยากเขียนสิ่งที่คนชอบให้เอามาไว้หน้าเว็บอีกอย่างหนึ่ง คือ Visible Stat หรือ Counter แบบเดิมๆที่เราเคยเห็นนั่นเอง ซึ่งโดยธรรมชาติของ google analytics นั้นเราไม่สามารถดึงจำนวนครั้งที่มีคนเข้าเว็บมาโชว์หน้าเว็บได้ แต่ด้วย Analytic Data Extract API ก็เลยทำให้มีวิธีดึงข้อมูลออกมาได้ เป็น counter แบบเชยๆที่คุ้นตาได้ ดังตัวอย่าง วิธีใช้ก็ง่ายๆ ดังนี้ โหลด GAAPI (เพื่อนบอกว่าอ่านว่า กะปิ -*-) ที่เขียนไว้จากบล๊อคที่แล้วก่อน ซึ่งไฟล์ที่เราจะนำมาใช้มีไฟล์เดียวคือ gaapi.class.php เรียกคลาสมาใช้ โดยข้อมูลที่จะนำมาแสดงคือ All Time Page Views (คือจำนวนหน้าที่ถูกเรียกดูทั้งหมด) include_once('gaapi.class.php'); $ga=new gaApi('google username','password','ga:site id'); $allTimeSummery=$ga-&#62;getAllTimeSummery(); จากนั้นก็แสดง Counter โดยใช้โค้ท HTML ร่วมกับ CSS ]]></description>
			<content:encoded><![CDATA[<p>จากบล๊อคที่แล้ว <a href="http://blog.u-blue.com/2010/02/10/google-analytic-api-extract-data-php/">ดึงข้อมูลจาก Google Analytic มาแสดงด้วย PHP</a> ทำให้เกิดอยากเขียนสิ่งที่คนชอบให้เอามาไว้หน้าเว็บอีกอย่างหนึ่ง คือ Visible Stat หรือ Counter แบบเดิมๆที่เราเคยเห็นนั่นเอง ซึ่งโดยธรรมชาติของ google analytics นั้นเราไม่สามารถดึงจำนวนครั้งที่มีคนเข้าเว็บมาโชว์หน้าเว็บได้ แต่ด้วย Analytic Data Extract API ก็เลยทำให้มีวิธีดึงข้อมูลออกมาได้ เป็น counter แบบเชยๆที่คุ้นตาได้ ดังตัวอย่าง</p>
<div id="attachment_214" class="wp-caption alignnone" style="width: 122px"><a href="http://blog.u-blue.com/wp-content/uploads/2010/02/Screen-shot-2010-02-10-at-5.56.11-PM.png"><img class="size-full wp-image-214" title="Google Analytic Visible Stat" src="http://blog.u-blue.com/wp-content/uploads/2010/02/Screen-shot-2010-02-10-at-5.56.11-PM.png" alt="" width="112" height="41" /></a><p class="wp-caption-text">GA Visible Stat</p></div>
<p><span id="more-213"></span></p>
<p><strong>วิธีใช้ก็ง่ายๆ ดังนี้</strong></p>
<ol>
<li>โหลด <strong> <a href="http://blog.u-blue.com/wp-content/uploads/2010/02/GAAPI1.zip">GAAPI</a> </strong>(เพื่อนบอกว่าอ่านว่า กะปิ  -*-) ที่เขียนไว้จากบล๊อคที่แล้วก่อน ซึ่งไฟล์ที่เราจะนำมาใช้มีไฟล์เดียวคือ gaapi.class.php</li>
<li>เรียกคลาสมาใช้ โดยข้อมูลที่จะนำมาแสดงคือ All Time Page Views (คือจำนวนหน้าที่ถูกเรียกดูทั้งหมด)
<pre class="brush:php">
include_once('gaapi.class.php');
$ga=new gaApi('google username','password','ga:site id');
$allTimeSummery=$ga-&gt;getAllTimeSummery();</pre>
</li>
<li>จากนั้นก็แสดง Counter โดยใช้โค้ท HTML ร่วมกับ CSS สามารถเปลี่ยนแปลงหน้าตาได้ตามสะดวก<br />
CSS:&nbsp;</p>
<pre class="brush:css">#vGA{
	width: 100px;
	position: relative;
	font-size: 9px;
	font-family: Verdana, Verdana, Geneva, sans-serif;
	padding-bottom: 15px;
	background: url(poweredBy.gif) no-repeat bottom left;
}
#vGA div{
	text-align: right;
	border: 2px solid #4f6db0;
	color: #555;
	line-height: 15px;
}
#vGA #vGALabel{
	background: #4f6db0;
	text-align: center;
	color: white;
	float: right;
	padding: 0 0 0 2px;
	margin: 0 0 0 2px;
}</pre>
<p>HTML:</p>
<pre class="brush:html">
<div id="vGA">
<div>&lt;?= $allTimeSummery['ga:pageviews'] ?&gt;
       <span id="vGALabel">Views</span></div>
</div>
</pre>
</li>
<li>เซฟรูป Powered By Google นี้ไปไว้ในโฟลเดอร์เดียวกับไฟล์อื่น
<p><div id="attachment_215" class="wp-caption alignright" style="width: 97px"><a href="http://blog.u-blue.com/wp-content/uploads/2010/02/poweredBy.gif"><img class="size-full wp-image-215" title="Powered By Google Analytic" src="http://blog.u-blue.com/wp-content/uploads/2010/02/poweredBy.gif" alt="" width="87" height="15" /></a><p class="wp-caption-text">Powered By</p></div></li>
</ol>
<p>เท่านี้ก็ได้ Visible Stat จาก Google Analytic อย่างง่ายๆแล้ว ซึ่งหากต้องการให้แสดงข้อมูลอื่นๆนอกจาก Pageviews ก็สามารถทำได้โดยดูวิธีใช้งาน gaapi คลาสได้จากบล๊อคที่แล้ว <a href="http://blog.u-blue.com/2010/02/10/google-analytic-api-extract-data-php/">ดึงข้อมูลจาก Google Analytic มาแสดงด้วย PHP</a></p>
<p><strong>เอาโค้ทมารวมกัน</strong></p>
<pre class="brush:html">&lt;html&gt;
&lt;head&gt;
&lt;style type="text/css"&gt;
#vGA{
	width: 100px;
	position: relative;
	font-size: 9px;
	font-family: Verdana, Verdana, Geneva, sans-serif;
	padding-bottom: 15px;
	background: url(poweredBy.gif) no-repeat bottom left;
}
#vGA div{
	text-align: right;
	border: 2px solid #4f6db0;
	color: #555;
	line-height: 15px;
}
#vGA #vGALabel{
	background: #4f6db0;
	text-align: center;
	color: white;
	float: right;
	padding: 0 0 0 2px;
	margin: 0 0 0 2px;
}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;?
include_once('gaapi.class.php');
$ga=new gaApi('google username','password','ga:site id');
$allTimeSummery=$ga-&gt;getAllTimeSummery();
?&gt;
<div id="vGA">
<div>&lt;?= $allTimeSummery['ga:pageviews'] ?&gt;
       <span id="vGALabel">Views</span></div>
</div>

&lt;/body&gt;
&lt;/html&gt;</pre>
<div class="ref-wrapper" id="ref-related"><h5 class="box primary">Related Entries</h5><ul><li class="boxlist"><a href="http://blog.u-blue.com/2010/02/09/google-analytic-api-extract-data-php/" class="box accent" >ดึงข้อมูลจาก Google Analytic มาแสดงด้วย PHP</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://blog.u-blue.com/2010/02/10/visible-stat-with-google-analytics/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ดึงข้อมูลจาก Google Analytic มาแสดงด้วย PHP</title>
		<link>http://blog.u-blue.com/2010/02/09/google-analytic-api-extract-data-php/</link>
		<comments>http://blog.u-blue.com/2010/02/09/google-analytic-api-extract-data-php/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 20:30:41 +0000</pubDate>
		<dc:creator>nice</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[playground]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[google analytic]]></category>

		<guid isPermaLink="false">http://blog.u-blue.com/?p=189</guid>
		<description><![CDATA[ปัญหามันเกิดจากบางครั้งเราทำเว็บให้คนที่ไม่ค่อยมีความรู้เรื่องคอม แล้วจะใช้ Google Analytic ในเว็บเขา ทีนี้ก็สมัคร Account ให้ เอาโค้ทมาใส่ให้ สอนให้ลอคอินเข้าไปดูสถิติในเว็บ google แต่ไม่นานก็จะเกิดงานเข้า เพราะเขาจำไม่ได้ว่าเข้าดูยังไง ภาษาอังกฤษใช้ไม่คล่อง ฯลฯ ก็เลยอยากจะเอาสถิติจาก GA มาไว้ในหน้าแรกของ backoffice เว็บเขาเลย จะได้ดูชัดๆ ง่ายๆ ก็เลยนั่งเขียน PHP class เพื่อติดต่อกับ Google Analytic Data Export API(จริงๆมันก็ยังอยู่ใน lab แต่พอใช้งานได้) และก็ใช้ Google Chart มาช่วยในการแสดงผล ได้ออกมา ดังนี้ Screenshot: เขียน PHP Class โดยใช้ cURL เพื่อติดต่อกับ Google โดย การ auth นั้นจะทำโดย post ไปและหากลอคอินผ่านจะได้ token มาเก็บไว้ ]]></description>
			<content:encoded><![CDATA[<p>ปัญหามันเกิดจากบางครั้งเราทำเว็บให้คนที่ไม่ค่อยมีความรู้เรื่องคอม แล้วจะใช้ Google Analytic ในเว็บเขา ทีนี้ก็สมัคร Account ให้ เอาโค้ทมาใส่ให้ สอนให้ลอคอินเข้าไปดูสถิติในเว็บ google แต่ไม่นานก็จะเกิดงานเข้า เพราะเขาจำไม่ได้ว่าเข้าดูยังไง ภาษาอังกฤษใช้ไม่คล่อง ฯลฯ ก็เลยอยากจะเอาสถิติจาก GA มาไว้ในหน้าแรกของ backoffice เว็บเขาเลย จะได้ดูชัดๆ ง่ายๆ ก็เลยนั่งเขียน PHP class เพื่อติดต่อกับ Google Analytic Data Export API(จริงๆมันก็ยังอยู่ใน lab แต่พอใช้งานได้) และก็ใช้ Google Chart มาช่วยในการแสดงผล ได้ออกมา ดังนี้</p>
<p>Screenshot:</p>
<div id="attachment_190" class="wp-caption alignnone" style="width: 410px"><a href="http://blog.u-blue.com/wp-content/uploads/2010/02/Screen-shot-2010-02-10-at-2.52.53-AM.png"><img class="size-full wp-image-190 " title="Google Analytic Data Export API with PHP" src="http://blog.u-blue.com/wp-content/uploads/2010/02/Screen-shot-2010-02-10-at-2.52.53-AM.png" alt="" width="400" /></a><p class="wp-caption-text">Google Analytic Data Export API with PHP</p></div>
<p><span id="more-189"></span><br />
<strong>เขียน PHP Class โดยใช้ cURL เพื่อติดต่อกับ Google โดย</strong></p>
<ul>
<li>การ auth นั้นจะทำโดย post ไปและหากลอคอินผ่านจะได้ token มาเก็บไว้</li>
<li>จากนั้นการดึงข้อมูลรายงานจะใช้ get โดยส่ง url ที่มีค่าที่ต้องการไป และส่ง token ไปด้วย</li>
<li>รูปแบบของรายงานที่ Google ส่งกลับมานั้นจะเป็น XML ก็ใช้ DOMDocument ค่อยๆ parse ค่าออกมา</li>
<li>นำค่ามาแสดง โดยหากต้องการใช้กราฟก็จะเรียกใช้ Google Graph</li>
</ul>
<p><strong>วิธีนำไปใช้งาน</strong></p>
<p><strong>ดาวน์โหลดโค้ทตัวเต็มได้ที่นี่ -&gt; <a href="https://github.com/nblue/GA-API">GAAPI</a></strong></p>
<p><strong>สร้างและเรียกใช้คลาส</strong><br />
โดยการ include ไฟล์ class เข้ามา และสร้างโดยต้องใส่ username, password และ site id(ดูได้จากใน google analytic account สังเกต id=xxxxxxxx ใน url)</p>
<pre class="brush:php">include_once('gaapi.class.php');
$ga=new gaApi('google username','google password','ga:site id');
//e.g. ('myname@gmail.com','myPassword','ga:1234567');</pre>
<p>Site ID ใน Google Analytic URL</p>
<div id="attachment_202" class="wp-caption alignnone" style="width: 460px"><a href="http://blog.u-blue.com/wp-content/uploads/2010/02/analyticd.jpg"><img class="size-full wp-image-202 " title="analyticd" src="http://blog.u-blue.com/wp-content/uploads/2010/02/analyticd.jpg" alt="" width="450" height="55" /></a><p class="wp-caption-text">Analytic ID</p></div>
<p><strong>เรียกข้อมูลรายงาน</strong><br />
อันนี้ต้องเข้าใจเรื่อง Dimension และ Metric ของ <a href="http://code.google.com/intl/en/apis/analytics/docs/gdata/gdataReferenceDimensionsMetrics.html">Google Analytic Data Extract API</a> ก่อน โดยหลักๆมันคือการเอา Dimension และ Metric มาผสมกันทำให้ได้ตารางรายงานออกมา โดยให้เรียกใช้ผ่าน method genReport(array) เช่น</p>
<pre class="brush:php">$params = array ('metrics' 		=&gt; 'ga:visits',
				'dimensions'	=&gt; 'ga:source',
				'start-date' 	=&gt; '2010-01-01',
				'end-date' 		=&gt; '2010-02-09',
				'max-results' 	=&gt; '5',
				'filter'		=&gt; 'ga:source != (direct)',
				'sort'			=&gt; '-ga:visits');
$result=$ga-&gt;genReport($params);
print_r($result);</pre>
<p>สิ่งที่จะได้ออกมาก็จะเป็นชุดของ array หน้าตาประมาณนี้</p>
<pre class="brush:php">Array
(
    [0] =&gt; Array
        (
            [ga:source] =&gt; google
            [ga:visits] =&gt; 5029
        )
    [1] =&gt; Array
        (
            [ga:source] =&gt; xxxxxxx.com
            [ga:visits] =&gt; 162
        )
    [2] =&gt; Array
        (
            [ga:source] =&gt; search
            [ga:visits] =&gt; 49
        )
)</pre>
<p>แต่หากไม่อยากไปเรียนรู้อะไรของ Google มาก ในคลาสที่เขียนก็มีฟังก์ชั่นมาตรฐานไว้ให้ ดังนี้</p>
<pre class="brush:php">$now=date("Y-m-d");
$lastmonth=date('Y-m-d', strtotime('-30 days'));

//Summery: visitors, unique visit, pageview, time on site, new visits, bounce rates
$summery=$ga-&gt;getSummery($lastmonth,$now);

//All time summery: visitors, page views
$allTimeSummery=$ga-&gt;getAllTimeSummery();

//Last 10 days visitors (for graph)
$visits=$ga-&gt;getVisits($lastmonth,$now,10);

//Top 10 search engine keywords
$topKeywords=$ga-&gt;getTopKeyword($lastmonth,$now,10);

//Top 10 visitor countries
$topCountries=$ga-&gt;getTopCountry($lastmonth,$now,10);

//Top 10 page views
$topPages=$ga-&gt;getTopPage($lastmonth,$now,10);

//Top 10 referrer websites
$topReferrer=$ga-&gt;getTopReferrer($lastmonth,$now,10);

//Top 10 visitor browsers
$topBrowsers=$ga-&gt;getTopBrowser($lastmonth,$now,10);

//Top 10 visitor operating systems
$topOs=$ga-&gt;getTopOs($lastmonth,$now,10);</pre>
<p>โดยผลลัพท์ของแต่ละ method ก็จะออกมาเป็นชุดของ array มี key เป็นชื่อ dimension และ metric ตามตัวอย่างข้างต้น<br />
*การเรียกใช้ให้ดูเทียบกับตัวอย่างที่นำไปสร้างเป็นตารางในโค้ทที่ให้จะเข้าใจง่ายขึ้น</p>
<p>ดาวน์โหลดโค้ทตัวเต็มได้ที่นี่ -&gt; <a href="https://github.com/nblue/GA-API">GAAPI</a></p>
<p>ใครโหลดไปแล้วเจอบักหรือต้องแก้ไขตรงไหนก็รบกวนแจ้งด้วยน๊า</p>
<div class="ref-wrapper" id="ref-related"><h5 class="box primary">Related Entries</h5><ul><li class="boxlist"><a href="http://blog.u-blue.com/2010/02/10/visible-stat-with-google-analytics/" class="box accent" >แสดง Stat หน้าเว็บจาก Google Analytics</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://blog.u-blue.com/2010/02/09/google-analytic-api-extract-data-php/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>IE6 ให้(ช่องว่าง)คุณมากกว่า</title>
		<link>http://blog.u-blue.com/2010/01/22/ie6-more-for-you/</link>
		<comments>http://blog.u-blue.com/2010/01/22/ie6-more-for-you/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 13:24:21 +0000</pubDate>
		<dc:creator>nice</dc:creator>
				<category><![CDATA[webdev]]></category>
		<category><![CDATA[ie6]]></category>

		<guid isPermaLink="false">http://u-blue.com/blog/?p=30</guid>
		<description><![CDATA[ปรากฎการณ์ลึกลับที่เกิดขึ้นมากมายใน ie6 ทำให้คนทำเว็บอย่างเราๆต้องเสียเวลาไปมากในการมานั่งตามแก้ไข ซึ่งหนึ่งในปัญหาสำคัญที่เจอใน ie6 คือปัญหาที่เกี่ยวกับการใช้ float กรณีศึกษา &#8220;กล่องหล่น&#8221; ทดลองสร้างกล่อง 2 กล่อง กล่องละ 200px(รวมขอบแล้ว) อยู่ภายใต้กล่องขนาดใหญ่ขนาด 400px โดยให้ทั้งสองกล่อง float ไปทางซ้าย และกล่องแรกอยู่ห่างจากขอบด้านซ้าย 5 pixels เมื่อดูใน ie8(และบราวเซอร์อื่นๆ) จะได้ผลลัพท์ที่ถูกต้อง ดังนี้ แต่ถ้าดูใน ie6 หล่ะ? งานเข้าหล่ะสิ มันเกิดอะไรขึ้นเนี่ย กรอบขนาด 400 ใส่กล่องขนาด 200 สองชิ้น ก็รวมเป็น 400 พอดี แล้วทำไมมันตกลงมาได้ ???! ก่อนที่จะถอนหายใจเฮือกใหญ่แล้วเปลี่ยนใจกลับไปใช้ table ลองมาศึกษาปัญหาอย่างเป็นระบบ แล้วหาทางแก้ไขอย่างถูกต้อง(เท่าที่จะถูกได้ใน ie6) เพื่อชีวิตที่ดีกว่า มาดูโค้ทกันก่อน อันแรกเป็น css div#container{ width: 400px; border:1px solid ]]></description>
			<content:encoded><![CDATA[<p>ปรากฎการณ์ลึกลับที่เกิดขึ้นมากมายใน ie6 ทำให้คนทำเว็บอย่างเราๆต้องเสียเวลาไปมากในการมานั่งตามแก้ไข ซึ่งหนึ่งในปัญหาสำคัญที่เจอใน ie6 คือปัญหาที่เกี่ยวกับการใช้ float</p>
<p><strong>กรณีศึกษา &#8220;กล่องหล่น&#8221;</strong><br />
ทดลองสร้างกล่อง 2 กล่อง กล่องละ 200px(รวมขอบแล้ว) อยู่ภายใต้กล่องขนาดใหญ่ขนาด 400px โดยให้ทั้งสองกล่อง float ไปทางซ้าย และกล่องแรกอยู่ห่างจากขอบด้านซ้าย 5 pixels</p>
<p>เมื่อดูใน ie8(และบราวเซอร์อื่นๆ) จะได้ผลลัพท์ที่ถูกต้อง ดังนี้<br />
<div id="attachment_52" class="wp-caption alignnone" style="width: 422px"><a href="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-10.08.32-PM.png"><img src="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-10.08.32-PM.png" alt="" title="boxes in ie8" width="412" height="38" class="size-full wp-image-52" /></a><p class="wp-caption-text">IE8 Boxes</p></div></p>
<p>แต่ถ้าดูใน ie6 หล่ะ?</p>
<p><div id="attachment_53" class="wp-caption alignnone" style="width: 425px"><a href="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-10.08.39-PM.png"><img src="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-10.08.39-PM.png" alt="" title="Boo! its IE6" width="415" height="56" class="size-full wp-image-53" /></a><p class="wp-caption-text">โค้ทเดิม ใน IE6</p></div><br />
งานเข้าหล่ะสิ มันเกิดอะไรขึ้นเนี่ย กรอบขนาด 400 ใส่กล่องขนาด 200 สองชิ้น ก็รวมเป็น 400 พอดี แล้วทำไมมันตกลงมาได้ ???! </p>
<p>ก่อนที่จะถอนหายใจเฮือกใหญ่แล้วเปลี่ยนใจกลับไปใช้ table ลองมาศึกษาปัญหาอย่างเป็นระบบ แล้วหาทางแก้ไขอย่างถูกต้อง(เท่าที่จะถูกได้ใน ie6) เพื่อชีวิตที่ดีกว่า<br />
<span id="more-30"></span><br />
มาดูโค้ทกันก่อน อันแรกเป็น css</p>
<pre class="brush:css">
div#container{
	width: 400px;
	border:1px solid black;
}
div#left{
	background: red;
	width:195px;
	margin-left:5px;
	float:left;
}
div#right{
	background: green;
	width:200px;
	float:left;
}
</pre>
<p>และ html</p>
<pre class="brush:xml">
<div id="container">
<div id="left">This is left content</div>
<div id="right">This is right content</div>
</div>
</pre>
<p>จะเห็นว่ามีกรอบ ขนาด 400 pixels และใส่กล่องเข้าไป 2 กล่อง คือ<br />
- left ขนาด 195px รวมระยะห่างจากขอบ 5px เป็น 200px<br />
- และ right ขนาด 200px</p>
<p>ถึงตอนนี้หลายๆคนอาจจะกลับมานั่งบวกลบคูณหารใหม่(แล้วก็แอบคิดว่าเราตกเลขหรือเปล่า) แต่คำนวนยังไงมันก็ไม่ผิดนี่หว่า แล้วมันเกิดอะไรขึ้น?</p>
<blockquote><p>สิ่งที่เกิดก็คือ เมื่อมีการใช้คำสั่ง float แล้วให้มีช่องว่าง(margin) ในด้านที่ float ไป เจ้า ie6 จะทำการเบิ้ลช่องว่างนั้นไปอีกเท่าตัวโดยไม่มีสาเหตุ หรือที่รู้จักกันในนามว่า Double Margin Bug
</p></blockquote>
<p><strong>ช่องว่างระหว่างเรา</strong><br />
ทดลองดูปัญหากันแบบชัดๆ ลองเขียน css ดังนี้</p>
<pre class="brush:css">div#foo {
   float: left;
   border: 1px solid red;
   width: 50px;
   height: 50px;
   margin: 50px;
}</pre>
<p>คือ สร้างกล่อง ขนาด 50&#215;50 กรอบสีแดง และให้มีช่องว่างขนาด 50 pixel รอบๆกล่อง<br/><br />
จากนั้นก็เอาไปใส่ใน html แบบนี้</p>
<pre class="brush:xml">
<div id="foo"></div>
</pre>
<p>ดูๆโค้ทแล้วก็ไม่น่าจะมีอะไร แต่ลองเปิดดูใน ie6 เทียบกับ ie8</p>
<div id="attachment_44" class="wp-caption alignleft" style="width: 144px"><a href="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-7.52.41-PM.png"><img class="size-full wp-image-44 " title="Screen shot 2010-01-22 at 7.52.41 PM" src="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-7.52.41-PM.png" alt="" width="134" height="132" /></a><p class="wp-caption-text">IE8</p></div>
<div id="attachment_45" class="wp-caption alignleft" style="width: 186px"><a href="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-7.53.10-PM.png"><img class="size-full wp-image-45 " title="Screen shot 2010-01-22 at 7.53.10 PM" src="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-7.53.10-PM.png" alt="" width="176" height="130" /></a><p class="wp-caption-text">IE6</p></div>
<p style="clear:both">จะเห็นว่าใน ie6 มีช่องว่างเพิ่มขึ้นมาทางด้านซ้ายอีก 50 pixels หรืออีกเท่าตัวของที่ตั้งไว้</p>
<p><strong>แก้ยังไงหล่ะ?</strong><br />
วิธีแก้ไขนี้ไม่ยาก แต่ขัดใจพอสมควร ก็คือการเพิ่ม display:inline เข้าไปยังกล่องที่มีปัญหา ดังนี้</p>
<pre class="brush:css">
div#foo {
   width: 50px;
   height: 50px;
   margin: 50px;
   float:left;
   border: 1px solid red;
   display:inline;
}
</pre>
<p>ผลลัพท์ใน ie6<br />
<div id="attachment_60" class="wp-caption alignnone" style="width: 162px"><a href="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-10.50.53-PM.png"><img src="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-10.50.53-PM.png" alt="" title="ie6 after" width="152" height="152" class="size-full wp-image-60" /></a><p class="wp-caption-text">IE6 after display:inline</p></div><br />
จะเห็นว่าพื้นที่ว่างที่เพิ่มมาหายไปแล้ว ทีนี้ลองมาทำในกรณีกล่องหล่นของเราบ้าง<br />
เพิ่มโค้ท display:inlie เข้าไป</p>
<pre class="brush:css">
div#left{
	background: red;
	width:195px;
	margin-left:5px;
	float:left;
	display:inline;
}
</pre>
<p>ลองดูผลลัพท์<br />
<div id="attachment_62" class="wp-caption alignnone" style="width: 423px"><a href="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-10.56.01-PM.png"><img src="http://u-blue.com/blog/wp-content/uploads/2010/01/Screen-shot-2010-01-22-at-10.56.01-PM.png" alt="" title="IE6 boxes after" width="413" height="40" class="size-full wp-image-62" /></a><p class="wp-caption-text">IE6 กล่องไม่หล่นแล้ว!</p></div></p>
<p><strong>สรุป</strong><br />
จะเห็นว่าปัญหาที่เกิดมันดูไม่มีที่มาที่ไป และวิธีแก้ก็ไม่ค่อยถูกต้องตาม standard เท่าไหร่นัก(ตามหลักแล้ว element ที่ float จะไม่เป็น inline และจะไม่กำหนดความกว้างของ element ที่เป็น inline) แต่การรู้ปัญหาอย่างชัดเจนก็น่าจะช่วยให้แก้ปัญหาที่เจอได้อย่างมีหลักการมากขึ้นและเสียเวลาน้อยลง ซึ่งเจ้ากล่องหล่นนี้ไม่ใช่ปัญหาเดียวที่พบบ่อยใน ie6 ถ้าจะเอาทั้งหมดมาเขียนก็รวมกันได้เป็นมหากาพย์เลยทีเดียว ก็ได้แต่หวังว่าจำนวนผู้ใช้ ie6 ในบ้านเราจะลดลง(อย่างรวดเร็ว) เหมือนบ้างเมืองอื่นเขาซักที</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.u-blue.com/2010/01/22/ie6-more-for-you/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>จาก php ถึง ruby on rails</title>
		<link>http://blog.u-blue.com/2009/08/18/from-php-to-ruby-on-rails/</link>
		<comments>http://blog.u-blue.com/2009/08/18/from-php-to-ruby-on-rails/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 15:10:13 +0000</pubDate>
		<dc:creator>nice</dc:creator>
				<category><![CDATA[webdev]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://u-blue.com/blog/?p=16</guid>
		<description><![CDATA[จากคนเคยหากินกับ php มาเนิ่นนานจนจำไม่ได้แล้วว่าเริ่มเมื่อไหร่ แต่ด้วยความอยากรู้อยากเห็นเลยตั้งโจทย์กับตัวเองไว้ว่าโปรเจคส่วนตัวชิ้นต่อไปจะใช้ภาษาอื่นที่ไม่ใช่ php ซะบ้าง ก็เริ่มมองหาหลายๆตัวเลือก โดยพิจารณาจริงจังที่ python, ruby on rails และ java แล้วก็ลองศึกษาดูว่ามันยังไงกันบ้างนะ ลองอ่านลองเขียนอยู่นานสุดท้ายก็มาลงเอยที่ ruby on rails ด้วยเหตุผลหลายๆอย่างที่พอมาคิดๆดูก็ไม่ค่อยมีเหตุผลเท่าไหร่ แต่เอาหล่ะ rails ก็ rails ทำอะไร? พอเลือกภาษาได้ก็ต้องเลือกโปรเจค พอดีเป็นช่วงที่มีงานเว็บเล็กๆเข้ามาหลายเว็บ แต่ก็ตกลงกับลูกค้าไว้ว่าจะใช้ php ส่วนบางงานก็ต้องเขียนเผื่อคนอื่นมาใช้ต่อ สรุปว่าต้องตัดไป งานรับจ้างชาวบ้านจะมาใช้ภาษาแปลกๆไม่ได้ เกิดเราไปสะดุดยอดหญ้าที่ไหนตายไปเค้าคงหาคนทำต่อลำบาก งั้นก็ต้องเป็นโปรเจคส่วนตัว ที่คิดไว้ว่าอยากทำก็มีอยู่มากมายมหาศาลทำเอาเลือกลำบากเหมือนกัน ก็เลยคิดว่าจะเลือกโปรเจคที่มีความซับซ้อนมากประมาณหนึ่ง เพราะถ้าเริ่มแบบที่ง่ายไปเวลาเรียนรู้ลองทำก็จะชิวเกิน ไม่กดดัน สรุปก็เลือกทำโปรเจคที่คุยกับเพื่อนไว้นานแล้วว่าอยากทำ คือทำเว็บสเปกสินค้าไอทีแบบเอาสินค้าต่างๆมาเปรียนเทียบกันตัวต่อตัว ฟังก์ชั่นต่อฟังก์ชั่นได้ ตั้งโจทย์เพิ่มเติมว่าจะต้องสามารถเปรียบเทียบข้ามสายพันธ์ได้ เช่น จะต้องเอา เลเซอร์ปริ้นเตอร์ อิงค์เจ็ท และดอทแมทริกซ์ มาเปรียนเทียบความเร็วในการพิมพ์ได้ และข้อมูลที่ลงจะต้องย่อยมาแล้ว คนเข้ามาใช้เว็บจะได้ไม่เกิด information overload ยังไงดี? พอเลือกโปรเจคได้ก็ลงมือศึกษา ruby ]]></description>
			<content:encoded><![CDATA[<p>จากคนเคยหากินกับ php มาเนิ่นนานจนจำไม่ได้แล้วว่าเริ่มเมื่อไหร่ แต่ด้วยความอยากรู้อยากเห็นเลยตั้งโจทย์กับตัวเองไว้ว่าโปรเจคส่วนตัวชิ้นต่อไปจะใช้ภาษาอื่นที่ไม่ใช่ php ซะบ้าง ก็เริ่มมองหาหลายๆตัวเลือก โดยพิจารณาจริงจังที่ python, ruby on rails และ java แล้วก็ลองศึกษาดูว่ามันยังไงกันบ้างนะ ลองอ่านลองเขียนอยู่นานสุดท้ายก็มาลงเอยที่ ruby on rails ด้วยเหตุผลหลายๆอย่างที่พอมาคิดๆดูก็ไม่ค่อยมีเหตุผลเท่าไหร่ แต่เอาหล่ะ rails ก็ rails</p>
<p><span id="more-16"></span><strong>ทำอะไร?</strong></p>
<p><strong><span style="font-weight: normal;">พอเลือกภาษาได้ก็ต้องเลือกโปรเจค พอดีเป็นช่วงที่มีงานเว็บเล็กๆเข้ามาหลายเว็บ แต่ก็ตกลงกับลูกค้าไว้ว่าจะใช้ php ส่วนบางงานก็ต้องเขียนเผื่อคนอื่นมาใช้ต่อ สรุปว่าต้องตัดไป งานรับจ้างชาวบ้านจะมาใช้ภาษาแปลกๆไม่ได้ เกิดเราไปสะดุดยอดหญ้าที่ไหนตายไปเค้าคงหาคนทำต่อลำบาก</span></strong></p>
<p><strong><span style="font-weight: normal;">งั้นก็ต้องเป็นโปรเจคส่วนตัว ที่คิดไว้ว่าอยากทำก็มีอยู่มากมายมหาศาลทำเอาเลือกลำบากเหมือนกัน ก็เลยคิดว่าจะเลือกโปรเจคที่มีความซับซ้อนมากประมาณหนึ่ง เพราะถ้าเริ่มแบบที่ง่ายไปเวลาเรียนรู้ลองทำก็จะชิวเกิน ไม่กดดัน สรุปก็เลือกทำโปรเจคที่คุยกับเพื่อนไว้นานแล้วว่าอยากทำ คือทำเว็บสเปกสินค้าไอทีแบบเอาสินค้าต่างๆมาเปรียนเทียบกันตัวต่อตัว ฟังก์ชั่นต่อฟังก์ชั่นได้ ตั้งโจทย์เพิ่มเติมว่าจะต้องสามารถเปรียบเทียบข้ามสายพันธ์ได้ เช่น จะต้องเอา เลเซอร์ปริ้นเตอร์ อิงค์เจ็ท และดอทแมทริกซ์ มาเปรียนเทียบความเร็วในการพิมพ์ได้ และข้อมูลที่ลงจะต้องย่อยมาแล้ว คนเข้ามาใช้เว็บจะได้ไม่เกิด information overload</span></strong></p>
<p><strong><span style="font-weight: normal;"><strong>ยังไงดี?</strong></span></strong></p>
<p>พอเลือกโปรเจคได้ก็ลงมือศึกษา ruby on rails อย่างเต็มตัว ในตอนที่เริ่มนั้นบ้านเรายังหาหนังสือ ruby และ rails ไม่ค่อยได้(ตอนนี้เห็นมี 3-4 เล่มในตลาด) จะสั่งซื้อหนังสือจาก amazon ก็ไม่อยาก เพราะช่วงนั้นสั่งหนังสือ(ไร้สาระและมีสาระ)ไปหลายเล่ม ออกแนวเกินงบ ก็เลยใช้วิธีโหลดหนังสือเป็น pdf มา ก็อ่านลำบากหน่อย แต่ประโยชน์สูง ประหยัดสุด สรุปรวมๆอ่านไปสี่ห้าเล่มเห็นจะได้ บางเล่มก็อ่านไปลองทำไป บางเล่มก็อ่านผ่านๆ เพราะตัวอย่างเป็นเวอร์ชั่นเก่าและใน rails นั้นการเขียนโค้ทของแต่ละเวอร์ชั่นมีความต่างกันค่อนข้างมาก สรุปว่าใช้เวลาประมาณเดือนนึงเห็นจะได้ในการเรียนรู้อย่างลงเอียดก่อนลงมือเขียนจริง</p>
<p><strong>เอาจริงหล่ะ</strong></p>
<p>ตอนเอาจริงก็มีรายละเอียดมากมายที่ต้องตกลงกับตัวเอง เริ่มจาก text editor ก่อน ด้วยความที่ rails จำเป็นต้องใช้งาน text editor คู่ไปกับ console และเราเป็นคนที่ชอบ online editor คือ แก้ไฟล์ที่อยู่บนเซิฟเวอร์เลย ที่สำคัญคือใช้ทำงานบน mac ไม่ใช่ pc จึงจำกัดตัวเลือกลงบ้าง มองไปมองมาสรุปว่าเลือก coda เพราะสามารถอ่าน ruby ออกบ้าง ช่วย highlight โค้ทได้บางส่วน มี remote ssh และ preview ในตัวเลย ก็ถือว่าครบถ้วนกระบวนความ</p>
<p>จากนั้นก็ต้องดูเรื่องเซิฟเวอร์ ในมือก็มีอยู่หลายตัว ก็เลือกใช้ WHM/cPanel server ด้วยเหตุผลว่ามี plugin ให้ลง rails แบบง่ายๆไม่ปวดใจนัก ใช้เวลาไม่นานก็สามารถรัน rails app บนเซิฟเวอร์ได้โดยไม่ต้องออกแรงมากมายอะไร</p>
<p>รายละเอียดเรื่องเทคนิคครบถ้วน ก็ใช้เวลาร่วมสองเดือนเหมือนกันในการทำทุกอย่างขึ้นมา ตั้งแต่ design ไปจนถึง database ค่อยๆบรรจงเขียนไปวันละหน่อย ช่วงไหนงานเข้าก็เขียนได้น้อย งานไม่มีก็เขียนได้มาก(แต่ตังน้อย) กว่าจะปั้นจนเสร็จได้ก็แทบลากเลือกเหมือนกัน หลักๆเลยก็เพราะมันไม่มี sql ให้ query เหมือนสมัยเขียน php เมื่อทำฐานข้อมูลมาซับซ้อนมากๆก็ต้องใช้เวลาซักพักในการทำตัวให้คุ้นเคยกับ active record แต่พอเคยมือแล้วก็รู้สึกว่าใช้ง่ายดีเหมือนกัน จนบางครั้งกลับมาเขียน php ยังคิดถึง active record ของ rails บ้างเป็นครั้งคราว ส่วนเรื่องความต่างอื่นๆก็จะเป็นเรื่องของ mvc model, rest architecture และอะไรอื่นๆอีกยิบย่อยที่ต้องปรับตัวและเรียนรู้กันใหม่</p>
<p><strong>สรุปเมื่อเสร็จ</strong></p>
<p><a href="http://u-blue.com/blog/wp-content/uploads/2010/01/chkSpec.png"><img class="alignleft size-full wp-image-17" style="margin-left: 5px; margin-right: 5px;" title="chkSpec" src="http://u-blue.com/blog/wp-content/uploads/2010/01/chkSpec.png" alt="" width="174" height="55" /></a>พอเขียนเสร็จสมบรูณ์ก็กลับไปมองที่ทำลงไป มันก็ไม่ได้ดีอะไรเท่าไหร่และบางอย่างก็ยังไม่ best practice เท่าที่ควร แต่ก็ทำใจเพราะเป็นเว็บแรก ตัวเว็บนี่ไม่พอใจเท่าไหร่ แต่ความรู้ที่ได้จากการเขียน rails นี้ถือว่าคุ้มค่าพอสมควรทีเดียว ทั้ง MVC, REST, OOP และอื่นๆอีกมากมาย ก็ถือว่าได้เปิดหูเปิดตาจากการเขียน php อย่างเดียวมาเป็นเวลานาน รายละเอียดทางเทคนิคอื่นๆที่พบเจอหรือเป็นอุปสรรคในการเปลี่ยนจาก php มาเขียน ruby นั้นมีอีกมากพอสมควร ไว้มีเวลาเมื่อไหร่จะมาเขียนไล่ทีละตัว ส่วนตอนนี้ขอสรุปง่ายๆเกี่ยวกับตัว ruby ว่าเป็นภาษาที่เจ๋งมาก เขียนได้สนุกและยืดหยุ่น ส่วน rails นั้นก็เป็น framework ที่ออกแบบเป็นอย่างดีและ implement MVC model ได้อย่างลงตัวมากๆ แต่ยังไง php ก็ยังเป็นเครื่องมือหลักที่จะยึดหากินต่อไป โดยเอาความรู้ที่ได้จาก rails มาพัฒนาการเขียน php ของตัวเองให้ดีขึ้น</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.u-blue.com/2009/08/18/from-php-to-ruby-on-rails/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>php oop #2: สร้างและห่อหมีแพนด้า</title>
		<link>http://blog.u-blue.com/2009/05/23/php-oop-2-construct-and-encapsulate/</link>
		<comments>http://blog.u-blue.com/2009/05/23/php-oop-2-construct-and-encapsulate/#comments</comments>
		<pubDate>Sat, 23 May 2009 15:31:53 +0000</pubDate>
		<dc:creator>nice</dc:creator>
				<category><![CDATA[webdev]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.u-blue.com/?p=160</guid>
		<description><![CDATA[จากโพสที่แล้ว php oop #1: panda class ว่าด้วยเรื่องการเขียน php oop แบบง่ายๆ แต่ดูไม่มีประโยชน์เท่าไหร่นัก เพราะถ้าดูดีๆมันก็ไม่ต่างจากเขียนฟังก์ชั่นเท่าไหร่ เลยมาว่าต่อถึงคุณสมบัติจริงๆของ object oriented บ้าง เริ่มต้นจากอย่างแรกก่อน คือคอนเซปต์การ encapsulation หรือขอเรียกง่ายๆว่า การห่อ ซึ่งก็เป็นเหมือนการซ่อนข้อมูลภายในคลาสไว้ไม่ให้สามารถเข้าถึงได้โดยตรงจากส่วนอื่นๆของโปรแกรม ลองดูโค้ทกันเลยน่าจะง่ายกว่านั่งอธิบายให้ยืดยาว class Panda{ private $name; function eat(){ echo "eating bamboo leaf"; } } ก็เล่นกันง่ายๆเลย คือเปลี่ยนตัวแปร name ให้เป็น private ซะ คราวนี้การเรียกถึงตัวแปรแบบตรงๆอย่างที่เห็นในตัวอย่างที่แล้วก็จะไม่สามารถทำได้อีกต่อไป แต่เมื่อต้องการเรียกใช้เราก็อาจจะเพิ่ม method เข้าไป เช่น function setName($pname){ $this-&#62;name=$pname; } function getName(){ return $this-&#62;name; } ]]></description>
			<content:encoded><![CDATA[<p>จากโพสที่แล้ว <a href="http://blog.u-blue.com/2009/03/08/php-oop-panda-class/">php oop #1: panda class</a> ว่าด้วยเรื่องการเขียน php oop แบบง่ายๆ แต่ดูไม่มีประโยชน์เท่าไหร่นัก เพราะถ้าดูดีๆมันก็ไม่ต่างจากเขียนฟังก์ชั่นเท่าไหร่ เลยมาว่าต่อถึงคุณสมบัติจริงๆของ object oriented บ้าง</p>
<p>เริ่มต้นจากอย่างแรกก่อน คือคอนเซปต์การ encapsulation หรือขอเรียกง่ายๆว่า การห่อ ซึ่งก็เป็นเหมือนการซ่อนข้อมูลภายในคลาสไว้ไม่ให้สามารถเข้าถึงได้โดยตรงจากส่วนอื่นๆของโปรแกรม ลองดูโค้ทกันเลยน่าจะง่ายกว่านั่งอธิบายให้ยืดยาว</p>
<pre class="brush:php">class Panda{
   private $name;
   function eat(){
       echo "eating bamboo leaf";
   }
}</pre>
<p>ก็เล่นกันง่ายๆเลย คือเปลี่ยนตัวแปร name ให้เป็น private ซะ คราวนี้การเรียกถึงตัวแปรแบบตรงๆอย่างที่เห็นในตัวอย่างที่แล้วก็จะไม่สามารถทำได้อีกต่อไป แต่เมื่อต้องการเรียกใช้เราก็อาจจะเพิ่ม method เข้าไป เช่น</p>
<pre class="brush:php">function setName($pname){
   $this-&gt;name=$pname;
}
function getName(){
   return $this-&gt;name;
}</pre>
<p>โดย method setName จะรับค่า name มาใน parameter ด้วย ส่วน getName จะไม่ทำอะไรนอกจาก return ค่าในตัวแปร name แล้วเวลาเรียกใช้ก็จะใช้วิธีเรียกหา method เช่น</p>
<pre class="brush:php">$p1 = new Panda();
$p1-&gt;setName("Lin Hui");
echo $p1-&gt;getName();</pre>
<p>จะเห็นว่า ถ้าเราไม่เขียน method get,set ขึ้นมาซะอย่าง ใครๆก็ไม่สามารถเข้าถึงข้อมูลภายในคลาสของเราได้ ซึ่งในแง่ของความปลอดภัยแล้ว การทำ encapsulation ถือว่ามีประโยชน์มากเลยทีเดียว<br />
<span id="more-160"></span><br />
อีกเรื่องหนึ่งต้องรู้ในการเขียนโปรแกรมเชิงวัตถุใน php คือ การสร้าง constructor ของคลาส หรือมันก็คือการสร้าง method ที่จะทำงานตอนเราสร้างวัตถุจากคลาสนั้นๆเท่านั้น ซึ่งใน php นี้จะมีการใช้คำสั่งที่ต่างจากจาวาซักหน่อย คือ</p>
<pre class="brush:php">class Panda{
   private $name;
   function __construct($pname){
      $this-&gt;name=$pname;
   }
}</pre>
<p>ตามโค้ทก็คือ เมื่อมีการสร้างวัตถุจากคลาสนี้ method construct จะถูกเรียกใช้(และในวัตถุนี้จะไม่สามารถเรียกใช้ method construct ได้อีก) และรับค่า ชื่อหมี($pname) มาใส่ไว้ในตัวแปร  name ดังนั้นตอนสร้างวัตถุก็ต้องมีการใส่ชื่อไปด้วย ดังนี้</p>
<pre class="brush:php">$p1 = new Panda("Lin Hui");</pre>
<p>คราวนี้เราเอาทั้งการ encapsulation และ constructor มารวมกัน โดยจะเขียนให้สามารถตั้งชื่อได้ครั้งเดียว และไม่สามารถเปลี่ยนได้ แต่ยังเอาไปใช้งานได้อยู่</p>
<pre class="brush:php">class Panda{
   private $name;
   function __construct($pname){
      $this-&gt;name=$pname;
   }
   function getName(){
      return $this-&gt;name;
   }
}

$p1 = new Panda("Lin Hui");
echo $p1-&gt;getName();</pre>
<p>จะเห็นว่าตอนสร้าง object เราจะต้องใส่ค่า(ชื่อ) ไปเลย และเมื่อตั้งชื่อไปตอนสร้างแล้วจะเปลี่ยนค่าไม่ได้ เพราะเราเอา method setName ออกไปแล้ว ซึ่งความสามารถในการจะทำแบบนี้ได้เป็นสิ่งที่มีประโยชน์มากในการออกแบบโปรแกรมแบบต่างๆได้ ก็แล้วแต่จะพลิกแพลงกันไป </p>
<div class="ref-wrapper" id="ref-related"><h5 class="box primary">Related Entries</h5><ul><li class="boxlist"><a href="http://blog.u-blue.com/2009/03/08/php-oop-panda-class/" class="box accent" >php oop #1: panda class</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://blog.u-blue.com/2009/05/23/php-oop-2-construct-and-encapsulate/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>จากตาราง เปลี่ยนเป็น Div</title>
		<link>http://blog.u-blue.com/2009/05/11/from-table-to-div/</link>
		<comments>http://blog.u-blue.com/2009/05/11/from-table-to-div/#comments</comments>
		<pubDate>Mon, 11 May 2009 07:34:40 +0000</pubDate>
		<dc:creator>nice</dc:creator>
				<category><![CDATA[webdev]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://blog.u-blue.com/?p=96</guid>
		<description><![CDATA[วิธีง่ายๆที่จะเปลี่ยนจากการเขียน html layout โดยใช้ตารางมาเป็น css/div layout สำหรับคนที่กำลังลังเลที่จะใช้ css แทนตารางแบบเดิมๆ ก่อนอื่นดูตารางก่อน โค้ทของตาราง This is Header Main Menu -Menu1 Content goes here! This is content! ดูแล้วก็ง่ายๆ ตามสไตล์ที่คุ้นเคย แต่ดูแล้วยุ่งยากใจพิลึก ทีนี้เราจะจับเจ้า layout ที่คุ้นเคยนี้แหละมาเขียนเป็น css ออกมาจะหน้าตาเป็นแบบนี้ ก็คล้ายๆกัน ดูเผินๆก็ไม่มีอะไรต่าง แต่ทีนี้มาดูโค้ทกันบ้าง ส่วนของ html จะเห็นว่าโค้ท html จะไม่ยุ่งยากเหมือนตอนทำตาราง ซึ่ง search engine จะชอบมากกว่า This is Header Main Menu -Menu1 Content goes here! This is content! ]]></description>
			<content:encoded><![CDATA[<p>วิธีง่ายๆที่จะเปลี่ยนจากการเขียน html layout โดยใช้ตารางมาเป็น css/div layout สำหรับคนที่กำลังลังเลที่จะใช้ css แทนตารางแบบเดิมๆ</p>
<p>ก่อนอื่นดูตารางก่อน</p>
<div id="attachment_109" class="wp-caption alignnone" style="width: 379px"><a href="http://blog.u-blue.com/wp-content/uploads/2010/01/table1.png"><img src="http://blog.u-blue.com/wp-content/uploads/2010/01/table1.png" alt="" title="table" width="369" height="83" class="size-full wp-image-109" /></a><p class="wp-caption-text">Table Layout</p></div>
<p>โค้ทของตาราง</p>
<pre class="brush:xml">
<table width="350" align="center">
<tbody>
<tr>
<td colspan="2" align="center"  bgcolor="#eeeeee">
This is Header</td>
</tr>
<tr>
<td width="100" align="left" valign="top"  bgcolor="#999999">
Main Menu
-Menu1</td>
<td align="left" valign="top"  bgcolor="#cccccc">
Content goes here!
This is content!</td>
</tr>
</tbody>
</table>
</pre>
<p>ดูแล้วก็ง่ายๆ ตามสไตล์ที่คุ้นเคย แต่ดูแล้วยุ่งยากใจพิลึก ทีนี้เราจะจับเจ้า layout ที่คุ้นเคยนี้แหละมาเขียนเป็น css<br />
<span id="more-96"></span><br />
ออกมาจะหน้าตาเป็นแบบนี้</p>
<div id="attachment_110" class="wp-caption alignnone" style="width: 380px"><a href="http://blog.u-blue.com/wp-content/uploads/2010/01/div.png"><img src="http://blog.u-blue.com/wp-content/uploads/2010/01/div.png" alt="" title="div" width="370" height="70" class="size-full wp-image-110" /></a><p class="wp-caption-text">Css Div Layout</p></div>
<p>ก็คล้ายๆกัน ดูเผินๆก็ไม่มีอะไรต่าง แต่ทีนี้มาดูโค้ทกันบ้าง<br />
ส่วนของ html จะเห็นว่าโค้ท html จะไม่ยุ่งยากเหมือนตอนทำตาราง ซึ่ง search engine จะชอบมากกว่า</p>
<pre class="brush:xml">
<div id="container">
<div id="header">This is Header</div>
<div id="menu">Main Menu
-Menu1</div>
<div id="content">Content goes here!
This is content!</div>
</div>
</pre>
<p>ส่วนของ css</p>
<pre class="brush:css">
div#container{
	width:350px;
	margin:0 auto;
	background:#cccccc;
}
div#header{
	text-align:center;
	background: #eeeeee;
}
div#menu{
	width:100px;
	float:left;
	background: #999999;
}
div#content{
	width:250px;
	float:left;
	background: #cccccc;
}</pre>
<p>สองส่วนนี้เท่านั้น เป็นอันจบ ไม่เจ็บปวดอย่างที่คิด ตอนเอามาประกอบรวมกันก็สามารถทำได้ 2 แบบ คือ</p>
<ol>
<li>ใส่โค้ท css ไว้ในส่วน head ของ html ใต้ tag
<pre class="brush:xml">
<style type="text/css">...</style>
</pre>
</li>
<li>แยกโค้ท css ไว้ในไฟล์ .css แล้วทำลิงค์ไปหา โดยใช้ tag
<pre class="brush:xml">
<link rel='stylesheet' href='file.css' type='text/css' media='all' /></pre>
</li>
</ol>
<p>ซึ่งการแยกโค้ทออกไปนั้นมีประโยชน์หลายอย่าง เช่น</p>
<ol>
<li>ลดเวลาโหลดหน้าต่อๆไป ประหยัดแบนด์วิธ เนื่องจากบราวเซอร์จะเก็บ cache ของไฟล์ css ไว้ในเครื่อง</li>
<li>สามารถแก้ไขได้ง่ายถ้านำไปใช้หลายๆหน้า html เพราะจะแก้ที่ไฟล์ css ที่เดียว</li>
<li>อีกทั้งในส่วน media=&#8221;xxx&#8221; นั้นสามารถกำหนดได้หลายอย่าง เช่น print,screen เพื่อเปลี่ยน layout สำหรับการดูแบบต่างๆ</li>
</ol>
<p>การทำตารางไปเป็น div นั้นเป็นแค่การเริ่มต้นให้เห็นภายเท่านั้นว่าถ้าไม่มีตารางจะทำ layout อย่างไร ซึ่งถ้าใช้จริงๆแล้วตัว css จะสามารถใช้ทำหน้าเว็บได้อย่างอิสระมากกว่าใช้ตาราง และ powerful กว่ามากในแง่ของการออกแบบ ซึ่งมันแจ่มมาก และหากใช้คล่องๆแล้วจะพบว่ามันง่ายกว่าใช้ table มากมายนัก</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.u-blue.com/2009/05/11/from-table-to-div/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

