<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>Sikachu!'s Blog</title>
	
	<link>http://sikachu.com</link>
	<description>I'm a Ruby on Rails / jQuery web developer. Follow me at @sikachu</description>
	<lastBuildDate>Sat, 06 Mar 2010 02:00:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/SikachuBlog" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="sikachublog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>ความผิดพลาดกับระบบ ETC ของทางด่วนไทย (ตอนที่ 3)</title>
		<link>http://sikachu.com/2010/03/exat-etc-system-fail-3/</link>
		<comments>http://sikachu.com/2010/03/exat-etc-system-fail-3/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 02:00:00 +0000</pubDate>
		<dc:creator>Sikachu!</dc:creator>
				<category><![CDATA[My Idea]]></category>
		<category><![CDATA[ETC]]></category>
		<category><![CDATA[EXAT]]></category>
		<category><![CDATA[toll way]]></category>

		<guid isPermaLink="false">http://sikachu.com/?p=483</guid>
		<description><![CDATA[บทความนี้คือตอนที่ 3 ของบทความ &#8220;ความผิดพลาดกับระบบ ETC ของทางด่วนไทย&#8221; ถ้าใครยังไม่ได้อ่านตอนที่ 1 และตอนที่ 2 สามารถไปอ่านได้ที่นี่ และที่นี่ครับ

ความผิดพลาดของ Easy Pass (ต่อ)
เมื่อตอนที่ 2 ผมได้กล่าวเอาไว้ว่าความผิดพลาดตรงนี้ มันมีทั้งในส่วนของตัวอุปกรณ์ Easy Pass, ระบบจัดการเงิน, การเข้าใช้บริการ และการส่งเสริมการใช้งานครับ วันนี้จะมาเขียนให้ครบครับว่ามีอะไรอีก
3. การเข้าใช้บริการ
ผมว่าคงมีหลายคนที่เคยใช้บริการทางด่วนตรงทางขึ้นดินแดงครับ ถ้าลองสังเกตดูจะเห็นได้ว่าช่องที่เป็น Easy Pass นั้นจะเป็นช่องตรงกลางของช่องทางทั้งหมด ก็เลยมีคำถามว่าแล้วถ้ารถมันติดยาวออกมาจากทั้งช่องทางด้านซ้าย และด้านขวา แล้วรถจะเข้าไปใช้บริการในช่องนั้นได้อย่างไรครับ?
ผมคิดว่าช่องทางที่ดีที่สุดในการให้บริการ ETC ควรจะเป็นช่องทางขวาสุดครับ เพราะรถที่ต้องการใช้ Easy Pass ก็สามารถหลบเลี่ยงออกไปทางขวาสุดและใช้บริการได่อย่างง่ายดาย
อีกเรื่องหนึ่งคือ ถ้าลองดูตามทางด่วนต่างๆ ในปัจจุบันจะเห็นได้ว่าช่องทางพิเศษแบบ &#8220;บัตรทางด่วนและเงินสด&#8221; นั้นหายไปครับ &#8230; ผมคิดว่าช่องที่ให้บริการแบบนี้ควรจะมีสัก 2-3 ช่องในด่านใหญ่ๆ เพื่อที่ถ้าผู้ใช้ทางพิเศษเกิดไม่แน่ใจว่าเงินในบัญชีเหลือพอหรือไม่ เข้าก็สามารถที่จะเข้าช่องนี้ แล้วระบบก็พยายามตัดเงินไป ถ้าตัดไม่ได้ที่กั้นก็ไม่เปิด แล้วผู้ใช้ทางก็สามารถจ่ายเงินสดในช่องนั้นได้ทันที &#8230; นี่จะได้แก้ปัญหาในเรื่องของการไม่ยอมหักเงินมัดจำไปได้ในตัวครับ
ส่วนเรื่องสุดท้ายคือตำแหน่งของตัวอ่านเขียนข้อมูลครับ ถ้าได้ลองดู VDO [...]]]></description>
			<content:encoded><![CDATA[<p><em>บทความนี้คือตอนที่ 3 ของบทความ &#8220;ความผิดพลาดกับระบบ ETC ของทางด่วนไทย&#8221; ถ้าใครยังไม่ได้อ่าน<a href="http://sikachu.com/2010/03/exat-etc-system-fail-1/">ตอนที่ 1</a> และ<a href="http://sikachu.com/2010/03/exat-etc-system-fail-2/">ตอนที่ 2</a> สามารถไปอ่านได้<a href="http://sikachu.com/2010/03/exat-etc-system-fail-1/">ที่นี่</a> และ<a href="http://sikachu.com/2010/03/exat-etc-system-fail-2/">ที่นี่</a>ครับ</em></p>
<hr />
<h3>ความผิดพลาดของ Easy Pass (ต่อ)</h3>
<p>เมื่อ<a href="http://sikachu.com/2010/03/exat-etc-system-fail-2/">ตอนที่ 2</a> ผมได้กล่าวเอาไว้ว่าความผิดพลาดตรงนี้ มันมีทั้งในส่วนของตัวอุปกรณ์ Easy Pass, ระบบจัดการเงิน, การเข้าใช้บริการ และการส่งเสริมการใช้งานครับ วันนี้จะมาเขียนให้ครบครับว่ามีอะไรอีก</p>
<h4>3. การเข้าใช้บริการ</h4>
<p><img src="http://sikachu.com/wp-content/uploads/2010/03/post-15306-1265209491.jpg" alt="post-15306-1265209491.jpg" border="0" width="300" height="180" align="right" />ผมว่าคงมีหลายคนที่เคยใช้บริการทางด่วนตรงทางขึ้นดินแดงครับ ถ้าลองสังเกตดูจะเห็นได้ว่าช่องที่เป็น Easy Pass นั้นจะเป็นช่องตรงกลางของช่องทางทั้งหมด ก็เลยมีคำถามว่าแล้วถ้ารถมันติดยาวออกมาจากทั้งช่องทางด้านซ้าย และด้านขวา แล้วรถจะเข้าไปใช้บริการในช่องนั้นได้อย่างไรครับ?</p>
<p>ผมคิดว่าช่องทางที่ดีที่สุดในการให้บริการ ETC ควรจะเป็นช่องทางขวาสุดครับ เพราะรถที่ต้องการใช้ Easy Pass ก็สามารถหลบเลี่ยงออกไปทางขวาสุดและใช้บริการได่อย่างง่ายดาย</p>
<p>อีกเรื่องหนึ่งคือ ถ้าลองดูตามทางด่วนต่างๆ ในปัจจุบันจะเห็นได้ว่าช่องทางพิเศษแบบ <strong>&#8220;บัตรทางด่วนและเงินสด&#8221;</strong> นั้นหายไปครับ &#8230; ผมคิดว่าช่องที่ให้บริการแบบนี้ควรจะมีสัก 2-3 ช่องในด่านใหญ่ๆ เพื่อที่ถ้าผู้ใช้ทางพิเศษเกิดไม่แน่ใจว่าเงินในบัญชีเหลือพอหรือไม่ เข้าก็สามารถที่จะเข้าช่องนี้ แล้วระบบก็พยายามตัดเงินไป ถ้าตัดไม่ได้ที่กั้นก็ไม่เปิด แล้วผู้ใช้ทางก็สามารถจ่ายเงินสดในช่องนั้นได้ทันที &#8230; นี่จะได้แก้ปัญหาในเรื่องของการไม่ยอมหักเงินมัดจำไปได้ในตัวครับ</p>
<p>ส่วนเรื่องสุดท้ายคือตำแหน่งของตัวอ่านเขียนข้อมูลครับ ถ้าได้ลองดู VDO ของระบบ ETC ในญี่ปุ่นเมื่อตอนที่แล้วนั้น จะเห็นได้ว่าตัวอ่านเขียนของเขานั้นจะถอยร่นลงมาจากตูผ่านทาง ทำให้ระยะทางระหว่างเครื่องอ่านเขียนกับที่กั้นนั้นมากขึ้น และทำให้ที่กั้นนั้นเปิดให้บริการทันกับความเร็วที่เหมาะสมในการใช้งาน (ประมาณ 30 กม./ชม.) เพราะที่เห็นอยู่ปัจจุบันนี้ผู้ใช้งานจะต้องขับรถเข้าไป &#8220;จอดรอ&#8221; ให้ที่กั้นเปิด &#8230; มันทำให้รถชะลอตัวมากขึ้นน่ะครับ</p>
<h4>4. การส่งเสริมการใช้งาน</h4>
<p>หลังจากที่เปิดให้บริการมา ทาง EXAT ได้มีโปรโมชั่นออกมาสองตัว นั่นคือการลดค่ามัดจำบัตรเหลือ 500 บาท และลดค่าผ่านทางให้ 5% สำหรับการเติมเงินก่อนวันที่ 28 กุมภาพันธ์</p>
<p>คำถามคือ แล้วหลังจากนั้นผู้ใช้ทางพิเศษจะได้สิทธิพิเศษอะไรอีกครับ หรือว่าก็คงไม่ต่างจากการจ่ายเงินสด?</p>
<p>เพราะว่าปัจจุบันนี้ ระบบบัตรทางด่วนในรูปแบบของคูปองนั้น มีการส่งเสริมการขายโดยให้ส่วนลด 5% ในการซื้อคูปอง 1 เล่ม และเพิ่มมากขึ้นเมื่อซื้อในจำนวนมากๆ เนื่องจากการที่มีรถใช้คูปองมากๆ นั้น ทำให้พนักงานที่ตู้ไม่จำเป็นต้องเตรียมเงินเอาไว้สำหรับทอน สามารถระบายรถออกจากตู้เก็บค่าผ่านทางได้เร็วขึ้น แต่ในทางกลับกันนั้นระบบ Easy Pass ที่สามารถระบายรถออกได้เร็วกว่าการใช้คูปอง กลับไม่มีการส่งเสริมการขายหรือส่วนลดเพื่อเป็นการชักจูงคนเข้ามาใช้บริการเพิ่มเติมเลยครับ</p>
<p>ผมว่าลองคิดดูดีๆ ปรับเปลี่ยนนโยบาย แล้วพยายายามชักจูงให้คนมาใช้ Easy Pass กันเยอะๆ จะดีกว่าครับ เพราะลองคิดดูว่าถ้ารถทุกคันมีระบบ Easy Pass แล้วเขาสามารถ &#8220;วิ่งผ่าน&#8221; ช่องเก็บเงินไปได้เลย มันจะสะดวกและรวดเร็ว และเพิ่มความคล่องตัวให้กับทางด่วนได้ขนาดไหน</p>
<h3>ก่อนที่จะสายเกินแก้</h3>
<p>ระบบ Easy Pass ปัจจุบันนั้น ยังถือว่าอยู่ในช่วงเริ่มต้นของการใช้งาน ซึ่งแน่นอนว่าถ้าหากมีการเปลี่ยนแปลงหรือแก้อะไรก็ตามแล้ว แน่นอนว่ามันสามารถจะทำได้ง่ายกว่าระบบที่เปิดให้ใช้งานมาเป็นเวลานานแล้ว ดังนั้นนี่คือสิ่งที่ผมคิดว่าระบบนี้ควรจะต้องแก้ไขครับ</p>
<ol>
<li>จัดระเบียบช่อง Easy Pass ใหม่ ให้อยู่ในเลนที่สามารถเข้าใช้งานได้สะดวกขึ้น ไม่ต้องไปติดตามรถที่จ่ายเงินโดยระบบปกติ</li>
<li>เพิ่มช่องทางแบบ &#8220;Easy Pass และเงินสด&#8221; เอาให้ได้ 50% ของด่านใหญ่ๆ และให้ได้ 100% ของด่านที่มีช่องทาง 2-3 ช่องครับ</li>
<li>เพิ่มความยาวของช่อง Easy Pass เอาตัว Sensor ถอยออกมาให้ได้ระยะทางพอที่ที่กั้นจะเปิดให้บริการทันกับความเร็วของรถได้</li>
<li>มีระบบการติดลบเงินค่าผ่านทาง โดยไปหักเงินจากค่ามัดจำของบัตรได้</li>
<li>เพิ่มจุดเติมเงิน Easy Pass ในที่ต่างๆ เช่น 7-11, Counter Service, ผ่านช่องทางของ True Money เพื่อให้สามารถเติมค่าผ่านทางได้ล่วงหน้า ทุกที่</li>
<li>จัดโปรโมชั่นลดราคาค่าผ่านทาง 1%-5% ให้สำหรับผู้ใช้งาน Easy Pass เพื่อให้ได้รับสิทธิประโยชน์เหมือนกับการใช้คูปอง และถือว่าเป็นการส่งเสริมการใช้งาน เพื่อลดปริมาณรถที่มาแออัดบริเวณหน้าด่านเก็บเงิน</li>
<li>มีศูนย์บริการติดตั้ง Easy Pass พร้อมทั้งเครื่องมือตรวจสอบว่าสามารถอ่านเครื่อง Easy Pass ได้อย่างถูกต้องในตำแหน่งที่ติดตั้ง</li>
<li>ทำแบบที่ญี่ปุ่น คือประสานงานกับค่ายรถ ติดเครื่อง ETC ให้กับรถยนต์ใหม่ที่ขายในกรุงเทพ เพื่อเพิ่มผู้ใช้งานใหม่ๆ</li>
</ol>
<h3>สุดท้ายที่อยากฝากไว้</h3>
<p>ระบบ ETC นั้นเป็นระบบที่มีประโยชน์มากๆ ในการลดปริมาณความหนาแน่นบริเวณหน้าช่องเก็บเงินค่าผ่านทาง เพราะทำให้ผู้ใช้ทางพิเศษสามารถจ่ายเงินค่าผ่านทางได้อย่างรวดเร็ว ผมถึงรู้สึกดีใจมากๆ ที่มีการนำระบบนี้เข้ามาใช้ในประเทศเรา แต่อย่างไรก็ตาม จากการศึกษาข้อมูล ณ ขณะที่เขียนบทความนี้ ดูเหมือนว่าเครื่องมือตัวนี้กลับไม่ช่วยแก้ปัญหา แต่กลับสร้างปัญหาให้กับผู้ใช้ทางพิเศษเพิ่มขึ้นอีก</p>
<p>ก่อนที่จะสายไป ผมเลยอยากให้ทาง EXAT ปรับปรุงระบบต่างๆ ให้ดีขึ้นมากกว่านี้ ก่อนที่ผู้ใช้ทางพิเศษจะ &#8220;ขยาด&#8221; กับระบบ ETC/Easy Pass แล้วทำให้การลงทุนที่ทำไปนั้นล้มเหลวไปครับ เพราะเอาเข้าจริงแล้วระบบ ETC จะมีประโยชน์มากที่สุดก็ต่อเมื่อผู้ใช้งานมากกว่า 50% นั้น หันไปใช้เครื่อง ETC แทนการจ่ายเงินค่าผ่านทางด้วยเงินสดครับ <img src='http://sikachu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<p><a href="http://feedads.g.doubleclick.net/~a/V__MmypcgdNT6Y-fP_LmjlrQHAE/0/da"><img src="http://feedads.g.doubleclick.net/~a/V__MmypcgdNT6Y-fP_LmjlrQHAE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/V__MmypcgdNT6Y-fP_LmjlrQHAE/1/da"><img src="http://feedads.g.doubleclick.net/~a/V__MmypcgdNT6Y-fP_LmjlrQHAE/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/SikachuBlog/~4/iOUs518hcyk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sikachu.com/2010/03/exat-etc-system-fail-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ความผิดพลาดกับระบบ ETC ของทางด่วนไทย (ตอนที่ 2)</title>
		<link>http://sikachu.com/2010/03/exat-etc-system-fail-2/</link>
		<comments>http://sikachu.com/2010/03/exat-etc-system-fail-2/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 02:00:00 +0000</pubDate>
		<dc:creator>Sikachu!</dc:creator>
				<category><![CDATA[My Idea]]></category>
		<category><![CDATA[ETC]]></category>
		<category><![CDATA[EXAT]]></category>
		<category><![CDATA[toll way]]></category>

		<guid isPermaLink="false">http://sikachu.com/?p=469</guid>
		<description><![CDATA[บทความนี้คือตอนที่ 2 ของบทความ &#8220;ความผิดพลาดกับระบบ ETC ของทางด่วนไทย&#8221; ถ้าใครยังไม่ได้อ่านตอนที่ 1 สามารถไปอ่านได้ที่นี่ครับ 

หลังจากที่รู้จักกันไปแล้วว่าระบบ ETC และ Easy Pass นั้นคืออะไร คราวนี้เราลองมาดูต่อกันครับว่าระบบ ETC ที่ดีนั้นมันควรจะเป็นอย่างไร และทำไมผมถึงบอกว่า Easy Pass นั้นเป็นระบบแห่งความผิดพลาด
ระบบ ETC ของประเทศญี่ปุ่น
ถ้าจะให้ยกตัวอย่างระบบ ETC ที่พอจะใช้มาเป็นตัวอย่างได้ คงหนีไม่พ้นจะต้องยกตัวอย่างระบบ ETC ของประเทศญี่ปุ่นครับ ซึ่งเป็นระบบที่คล้ายคลึงกับบ้านเราคือ มีการเก็บค่าผ่านทางในราคาที่ไม่แน่นอน และมีการเก็บเงินทั้งในรูปแบบตามระยะทางการเดินทางและเก็บเงินแบบเหมาทั้งเส้นทางครับ
เอาเป็นว่า ถ้าอยากรู้ว่าระบบ ETC ที่ญี่ปุ่นนั้นเป็นอย่างไร ลองแว่บไปดู VDO ตัวนี้ดูครับ: ETC in Japan

ปัญหาของการเก็บเงินค่าผ่านทางโดยใช้พนักงานนั้น โดยทั่วไปแล้วจะประสบปัญหาคล้ายคลึงกันครับ คือรถจะไปแออัดอยู่ที่หน้าช่องคิดเงินเนื่องจากการรับ/ทอนเงินสด ทำให้รถติด สิ้นเปลืองพลังงานน้ำมัน และทำให้ผู้ใช้ทางนั้นต้องเสียเวลามากขึ้นครับ
เพราะฉะนั้นจุดมุ่งหมายของระบบ ETC แน่นอนว่าเป็นการที่ทำให้ผู้ที่ใช้งานทางพิเศษสามารถชำระค่าผ่านทางได้ง่ายขึ้น ไม่จำเป็นต้องเตรียมเงินค่าผ่านทาง (ตัดปัญหา &#8220;รถคันหน้าแบงค์พัน&#8221;) โดยที่ทางญี่ปุ่นนั้นก็มีการรณรงค์ให้รถส่วนใหญ่นั้นใช้บริการ ETC แทน เพื่อที่จะได้ลดปริมาณรถที่ไปคับคั่งอยู่ที่หน้าด่านเก็บเงิน [...]]]></description>
			<content:encoded><![CDATA[<p><em>บทความนี้คือตอนที่ 2 ของบทความ &#8220;ความผิดพลาดกับระบบ ETC ของทางด่วนไทย&#8221; ถ้าใครยังไม่ได้อ่าน<a href="http://sikachu.com/2010/03/exat-etc-system-fail-1/">ตอนที่ 1</a> สามารถไปอ่านได้<a href="http://sikachu.com/2010/03/exat-etc-system-fail-1/">ที่นี่</a>ครับ</em> </p>
<hr />
<p>หลังจากที่รู้จักกันไปแล้วว่าระบบ ETC และ Easy Pass นั้นคืออะไร คราวนี้เราลองมาดูต่อกันครับว่าระบบ ETC ที่ดีนั้นมันควรจะเป็นอย่างไร และทำไมผมถึงบอกว่า Easy Pass นั้นเป็นระบบแห่งความผิดพลาด</p>
<h3>ระบบ ETC ของประเทศญี่ปุ่น</h3>
<p>ถ้าจะให้ยกตัวอย่างระบบ ETC ที่พอจะใช้มาเป็นตัวอย่างได้ คงหนีไม่พ้นจะต้องยกตัวอย่างระบบ ETC ของประเทศญี่ปุ่นครับ ซึ่งเป็นระบบที่คล้ายคลึงกับบ้านเราคือ มีการเก็บค่าผ่านทางในราคาที่ไม่แน่นอน และมีการเก็บเงินทั้งในรูปแบบตามระยะทางการเดินทางและเก็บเงินแบบเหมาทั้งเส้นทางครับ</p>
<p>เอาเป็นว่า ถ้าอยากรู้ว่าระบบ ETC ที่ญี่ปุ่นนั้นเป็นอย่างไร ลองแว่บไปดู VDO ตัวนี้ดูครับ: <a href="http://www.go-etc.jp/english/system/index.html" target="_blank">ETC in Japan</a></p>
<p><a href="http://www.go-etc.jp/english/system/index.html" target="_blank"><img src="http://sikachu.com/wp-content/uploads/2010/03/fig10.jpg" alt="fig10.jpg" border="0" width="300" height="248" /></a></p>
<p>ปัญหาของการเก็บเงินค่าผ่านทางโดยใช้พนักงานนั้น โดยทั่วไปแล้วจะประสบปัญหาคล้ายคลึงกันครับ คือรถจะไปแออัดอยู่ที่หน้าช่องคิดเงินเนื่องจากการรับ/ทอนเงินสด ทำให้รถติด สิ้นเปลืองพลังงานน้ำมัน และทำให้ผู้ใช้ทางนั้นต้องเสียเวลามากขึ้นครับ</p>
<p>เพราะฉะนั้นจุดมุ่งหมายของระบบ ETC แน่นอนว่าเป็นการที่ทำให้ผู้ที่ใช้งานทางพิเศษสามารถชำระค่าผ่านทางได้ง่ายขึ้น ไม่จำเป็นต้องเตรียมเงินค่าผ่านทาง (ตัดปัญหา &#8220;รถคันหน้าแบงค์พัน&#8221;) โดยที่ทางญี่ปุ่นนั้นก็มีการรณรงค์ให้รถส่วนใหญ่นั้นใช้บริการ ETC แทน เพื่อที่จะได้ลดปริมาณรถที่ไปคับคั่งอยู่ที่หน้าด่านเก็บเงิน และเป็นการเพิ่มความสะดวกให้ผู้ใช้ทางพิเศษครับ</p>
<h3>แล้วทำไมผมถึงบอกว่า Easy Pass ผิดพลาด?</h3>
<p>คำตอบส่วนใหญ่ของคำถามนี้ สามารถหาได้จาก<a href="https://www.exat.co.th/webboard/viewforum.php?f=7" target="_blank">เว็บบอร์ดของ EXAT</a> เองครับ</p>
<p>ความผิดพลาดตรงนี้ มันมีทั้งในส่วนของตัวอุปกรณ์ Easy Pass, ระบบจัดการเงิน, การเข้าใช้บริการ และการส่งเสริมการใช้งานครับ</p>
<h4>1. ความผิดพลาดในส่วนของตัวอุปกรณ์</h4>
<p>Easy Pass นั้นประกอบไปด้วยสองส่วน นั่นคือส่วนของตัว RFID Tag และส่วนของบัตรที่ใช้เติมเงิน</p>
<p>สิ่งที่ผู้ใช้หลายๆ คนเจอในเว็บบอร์ดนั้นคือการที่เครื่องอ่านเขียนไม่สามารถเชื่อมต่อสัญญาณกับ Easy Pass ได้อย่างสมบูรณ์ เนื่องจากตำแหน่งของเครื่องและสิ่งกีดขวางระหว่างเครื่องอ่านเขียนและตัว Easy Pass ทำให้เกิดปัญหาในเรื่องของการหักเงินผิดพลาด หักเงินซ้ำซ้อน เพราะระบบอาจคิดว่ายังไม่ได้หักเงิน เลยหักซ้ำไปอีกรอบเพราะเขียนลงบน Easy Pass ไม่ติด</p>
<p>คำถามคือ นี่เท่ากับว่ากลับไปซ้ำรอยในเรื่องของปัญหาการใช้ TAG ที่เครื่องอ่านมันหา TAG ไม่เจอ อีกแล้วใช่ไหมครับ?</p>
<p>ปัญหาตรงนี้ก็แบ่งได้ออกเป็นสองส่วนย่อยๆ อีกครับ คือส่วนของการที่ไม่มีเสาอากาศภายนอก ทำให้การส่งข้อมูลนั้นมีโอกาสพลาดอยู่มาก ซึ่งตรงนี้จะเห็นได้ว่าระบบ ETC ของที่ญี่ปุ่นนั้นได้แก้เอาไว้ โดยที่ให้มีเสาสัญญาณแยกออกไปติดด้านนอก และส่วนตัวเครื่องที่ต้องสอดบัตรเงินสดนั้นก็เอาไปซ่อนในที่ลับตาแทนครับ ส่วนปัญหาอีกข้อหนึ่งคือ process การอ่านเขียนข้อมูลครับ ซึ่งเอาเข้าจริงแล้วมัน<strong>ไม่มีความจำเป็น</strong>เลยครับที่จะต้องมีการเขียนข้อมูลลงไปยังบัตร Easy Pass เพราะเอาเข้าจริงแล้วระบบสามารถเอาแค่ ID ไปใช้ในการดึงข้อมูลของยอดเงินคงเหลือออกมาดู แล้วหักเงินจากตรงนั้นแทนครับ</p>
<p>ถ้าลองดูในเว็บบอร์ดจะเห็นว่ามีแต่คำร้องเรียนในเรื่องของการที่ระบบนั้น &#8220;ตัดเงินเบิ้ล&#8221; หรือบางคนก็ &#8220;ระบบไม่ตัดเงิน&#8221; ก็มีครับ ซึ่งเป็นปัญหาของการที่ต้องทั้งอ่านและเขียนข้อมูลลงบนบัตร Easy Pass ครับ</p>
<h4>2. ระบบการจัดการเงิน</h4>
<p><img src="http://sikachu.com/wp-content/uploads/2010/03/card1.jpg" alt="card1.jpg" border="0" width="295" height="183" align="right" />ระบบของ Easy Pass นั้น จริงๆ แล้วก็คล้ายคลึงกับระบบของบัตรรถไฟฟ้า BTS นะครับ นั่นก็คือต้องมีการเติมเงินเอาไว้ก่อน แล้วมีการหักค่่าผ่านทางออกไปเรื่อยๆ ซึ่งแน่นอนว่าต้องมีปัญหาในเรื่องของ &#8220;เงินไม่พอจ่าย&#8221; แน่ๆ ครับ</p>
<p>ในระบบของ BTS/MRT เขาแก้ปัญหาในเรื่องของเงินไม่พอจ่าย โดยการเรียกเก็บเงินค่ามัดจำบัตร 50 บาทไว้ตั้งแต่เปิดบัตร ซึ่งตรงนี้ถ้าเงินที่เติมไว้ในบัตรไม่พอจ่าย ระบบก็จะไปหักออกจากค่ามัดจำที่ได้เติมเอาไว้ ทำให้ในเวลาที่ &#8220;เร่งรีบ&#8221; จริงๆ ถึงเงินในบัตรเหลือ 5 บาท ผมก็ยังจะสามารถเดินเข้าประตูอัตโนมัติได้</p>
<p>คราวนี้กลับไปมองในระบบ Easy Pass คำถามคือถ้าเงินในบัตรของผมไม่เพียงพอสำหรับการจ่ายค่าผ่านทาง แล้วผมต้องทำอย่างไรหรือครับ?</p>
<blockquote><p>[คู่มือการใช้บริการ หน้า 12]</p>
<p>6. การผ่านช่องอัตโนมัติจะต้องมียอดเงินคงเหลือในบัญชีสำรองค่าผ่านทางเพียงพอที่จะผ่านช่องอัตโนมัติตามที่การทางพิเศษแห่งประเทศไทยกำหนด</p>
<p>7. หากยอดเงินในบัญชีสำรองค่าผ่านทางไม่มี บัตร Easy Pass จะถูกระงับการใช้  (Black List) จนกว่าผู้ขอใช้บริการจะเติมเงินลงในบัญชีสำรองค่าผ่านทาง</p>
<p>[หน้า 19]</p>
<p>4.3 หากท่านได้ยินเสียง Beep สอง (2) ครั้งจากบัตร Easy Pass [..] หมายถึงบัตร Easy Pass ไม่อยู่ในสภาวะที่ใช้งานได้ [..] กรณีนี้ท่านจะต้องถอยรถยนต์ออกจากช่องทางเพื่อใช้บริการช่องเก็บค่าผ่านทางแบบเงินสดแทน ท่านสามารถติดต่อเจ้าหน้าที่ได้จากอุปกรณ์สื่อสาร</p></blockquote>
<p>แปลว่าอย่างไรก็ตาม ระบบไม่ฉลาดพอที่จะหักเงินจากเงินค่ามัดจำ (หรือว่าติดลบเงิน) ให้ได้ และถ้าจำนวนเงินในบัตรนั้นไม่พอจ่ายค่าผ่านทาง ก็จำเป็นที่จะต้องถอยรถออกมาจากช่องนั้น แล้วเข้าช่องเงินสดข้างๆ</p>
<p>แล้วนี่มันจะช่วยเรื่องการจราจรตรงไหนครับ? ถ้ารถคันหน้าผมเงินมันหมด ปล่อยผ่านไปสักครั้งแล้วติดลบเงินในบัญชีจะไม่ได้เลยหรือครับ? เท่ากับว่ารถทั้งแถวนั้นก็ต้องถอยหลัง เพื่อที่ให้รถคันที่มีปัญหานั้นออกมาจากช่องอัตโนมัติ &#8230; แย่กว่าการจ่ายเงินโดยใช้เงินสดอีกนะครับนี่</p>
<p>อย่าลืมครับว่าถ้าเป็น BTS/MRT เงินหมดเราเดินแทรกออกไปเติมเงินได้ง่ายๆ &#8230; มันไม่เหมือนกันครับ พื้นที่หน้าด่านมันมีจำกัดมากกว่านั้น &#8230;</p>
<p>และอีกปัญหาหนึ่งที่ผมเจอคนกล่าวถึงในเว็บบอร์ด คือการที่ไม่สามารถเติมเงินที่ช่องผ่านทางบางช่องได้ ซึ่งอาจจะเป็นปัญหาทางด้านเทคนิคในช่วงเริ่มต้นของระบบ หรือว่าจะเป็นอย่างนี้ต่อไปเรื่อยๆ ผมก็ไม่สามารถทราบได้ครับ แต่มันยิ่งทำให้ภาพรวมของระบบนั้นดูไม่เสถียรเข้าไปใหญ่นะครับนี่ &#8230;</p>
<p>เขียนไปเขียนมารู้สึกจะมันส์ไปหน่อย ยกยอดไปต่อตอนที่สามวันพรุ่งนี้นะครับ <img src='http://sikachu.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

<p><a href="http://feedads.g.doubleclick.net/~a/ShcU3HV5DuKSqHST3t2HZRk-doc/0/da"><img src="http://feedads.g.doubleclick.net/~a/ShcU3HV5DuKSqHST3t2HZRk-doc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ShcU3HV5DuKSqHST3t2HZRk-doc/1/da"><img src="http://feedads.g.doubleclick.net/~a/ShcU3HV5DuKSqHST3t2HZRk-doc/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/SikachuBlog/~4/l8A8RBjC4oU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sikachu.com/2010/03/exat-etc-system-fail-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ความผิดพลาดกับระบบ ETC ของทางด่วนไทย (ตอนที่ 1)</title>
		<link>http://sikachu.com/2010/03/exat-etc-system-fail-1/</link>
		<comments>http://sikachu.com/2010/03/exat-etc-system-fail-1/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 02:30:00 +0000</pubDate>
		<dc:creator>Sikachu!</dc:creator>
				<category><![CDATA[My Idea]]></category>
		<category><![CDATA[ETC]]></category>
		<category><![CDATA[EXAT]]></category>
		<category><![CDATA[toll way]]></category>

		<guid isPermaLink="false">http://sikachu.com/?p=466</guid>
		<description><![CDATA[เมื่อไม่กี่วันที่ผ่านมา ได้มีโอกาสต้องเข้าไปทำงานในเมืองครับ ทำให้ต้องใช้ทางด่วนสายรามอินทรา-อาจนรงค์ ที่มีการเปิดให้ใช้ระบบ Easy Pass หรือที่เมืองนอกเขาเรียกกันว่า ETC แล้ว แน่นอนครับว่าผมมีความสนใจที่จะซื้อไอ้ Easy Pass นี้เอามาใช้ในการเดินทางอยู่แล้ว เพราะคิดว่ามันจะต้องสะดวก รวดเร็ว และไม่ทำให้ผมต้องเสียเวลาในการควานหาเงินในกระเป๋า แต่หลังจากที่ทำการ Research เพิ่มเติมแล้ว &#8230; ผมคงต้องคิดหนักแล้วล่ะครับ ว่าจะใช้มันดีไหม
ระบบ ETC คืออะไร
ระบบ ETC (Electronic Toll Collection) คือระบบที่ใช้ในการเก็บค่าผ่านทางพิเศษอัตโนมัติ เพื่อเป็นการแก้ปัญหาการที่ต้องมาต่อแถวจ่ายเงินค่าผ่านทาง ซึ่งต้องเสียเวลาทั้งการรับเงินสด และการทอนเงิน
เอาเข้าจริงแล้วระบบนี้ในกรุงเทพเรามีมานานแล้วครับ โดยที่เมื่อก่อนเราจะเรียกมันว่า TAG ทางด่วน ซึ่งใครที่พอมีอายุเช่นผมก็จะจำได้ว่ามันเกิดมาเพื่อให้ใช้กับทางด่วนขั้นที่หนึ่ง (ดินแดง-บางนา-ดาวคะนอง) และมีปัญหาในเรื่องของสัมปทาน (ถ้าผมจำไม่ผิดนะครับ) ทำให้ไม่สามารถขยายการให้บริการมายังทางด่วนขั้นที่สองได้ ทำให้สุดท้ายแล้วการทางพิเศษฯ (ชื่อเดิมของ EXAT) ต้องทำการพับระบบเดิมกลับไป แล้วเริ่มต้นทำระบบใหม่อีกครั้ง
การมาของ Easy Pass

Easy Pass เปิดตัวเองมาได้อย่างสวยหรูในกลางปี 2552 กับความรู้สึกที่ทำให้ผู้ใช้ทางพิเศษอยู่ทุกๆ วัน รู้สึกว่านี่เป็นทางเลือกที่ดี เพราะนอกจากความสามารถในการใช้งานบนทางด่วนขั้นที่หนึ่งแล้ว ยังรวมไปถึงการใช้งานบนทางด่วนสายใหม่ๆ [...]]]></description>
			<content:encoded><![CDATA[<p>เมื่อไม่กี่วันที่ผ่านมา ได้มีโอกาสต้องเข้าไปทำงานในเมืองครับ ทำให้ต้องใช้ทางด่วนสายรามอินทรา-อาจนรงค์ ที่มีการเปิดให้ใช้ระบบ <a href="http://www.exat.co.th/index.php?ct_id=1170&#038;type=content" target="_blank">Easy Pass</a> หรือที่เมืองนอกเขาเรียกกันว่า <a href="http://en.wikipedia.org/wiki/Electronic_toll_collection" target="_blank">ETC</a> แล้ว แน่นอนครับว่าผมมีความสนใจที่จะซื้อไอ้ Easy Pass นี้เอามาใช้ในการเดินทางอยู่แล้ว เพราะคิดว่ามันจะต้องสะดวก รวดเร็ว และไม่ทำให้ผมต้องเสียเวลาในการควานหาเงินในกระเป๋า แต่หลังจากที่ทำการ Research เพิ่มเติมแล้ว &#8230; ผมคงต้องคิดหนักแล้วล่ะครับ ว่าจะใช้มันดีไหม</p>
<h3>ระบบ ETC คืออะไร</h3>
<p>ระบบ <a href="http://en.wikipedia.org/wiki/Electronic_toll_collection" target="_blank">ETC (Electronic Toll Collection)</a> คือระบบที่ใช้ในการเก็บค่าผ่านทางพิเศษอัตโนมัติ เพื่อเป็นการแก้ปัญหาการที่ต้องมาต่อแถวจ่ายเงินค่าผ่านทาง ซึ่งต้องเสียเวลาทั้งการรับเงินสด และการทอนเงิน</p>
<p>เอาเข้าจริงแล้วระบบนี้ในกรุงเทพเรามีมานานแล้วครับ โดยที่เมื่อก่อนเราจะเรียกมันว่า TAG ทางด่วน ซึ่งใครที่พอมีอายุเช่นผมก็จะจำได้ว่ามันเกิดมาเพื่อให้ใช้กับทางด่วนขั้นที่หนึ่ง (ดินแดง-บางนา-ดาวคะนอง) และมีปัญหาในเรื่องของสัมปทาน (ถ้าผมจำไม่ผิดนะครับ) ทำให้ไม่สามารถขยายการให้บริการมายังทางด่วนขั้นที่สองได้ ทำให้สุดท้ายแล้วการทางพิเศษฯ (ชื่อเดิมของ EXAT) ต้องทำการพับระบบเดิมกลับไป แล้วเริ่มต้นทำระบบใหม่อีกครั้ง</p>
<h3>การมาของ Easy Pass</h3>
<p><img src="http://sikachu.com/wp-content/uploads/2010/03/451.jpg" alt="45.jpg" border="0" width="176" height="106" align="right" /><br />
Easy Pass เปิดตัวเองมาได้อย่างสวยหรูในกลางปี 2552 กับความรู้สึกที่ทำให้ผู้ใช้ทางพิเศษอยู่ทุกๆ วัน รู้สึกว่านี่เป็นทางเลือกที่ดี เพราะนอกจากความสามารถในการใช้งานบนทางด่วนขั้นที่หนึ่งแล้ว ยังรวมไปถึงการใช้งานบนทางด่วนสายใหม่ๆ เช่น รามอินทรา-อาจนรงค์ และทางด่วนขั้นที่สองอีกด้วย พร้อมทั้งคำกล่าวที่บอกว่าจะให้บริการบนทางด่วนขั้นที่หนึ่งภายในธันวาคม 2552 และทางด่วนขั้นที่สองภายในปี 2553</p>
<p>แต่สุดท้ายแล้วก็เกิดอาการเลื่อนในการให้บริการ ทำให้การเปิดใช้งานของ Easy Pass ต้องล่าช้าไปจนถึงสิ้นเดือน ม.ค. 2553 แต่สุดท้ายก็เปิดให้บริการจนได้ครับ</p>
<p>หลังจากการเริ่มเปิดให้บริการ ดูเหมือนว่าระบบนี้น่าจะเข้ามาช่วยให้การใช้งานทางด่วนของชาวกรุงสะดวกสบายมากขึ้นใช่ไหมครับ? แต่เอาเข้าจริงแล้วมันอาจจะเป็นจุดเริ่มต้นของความผิดพลาดครั้งที่สองเสียมากกว่า และอาจเป็นความผิดพลาดที่ทำให้ EXAT นั้นเสียเงินลงทุนเป็นล้านๆ ไปฟรีๆ เป็นรอบที่สองเลยก็ได้ ซึ่งตรงนี้สามารถอ่านต่อได้ในตอนที่สองครับ <img src='http://sikachu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<p><a href="http://feedads.g.doubleclick.net/~a/a-h6VxNdPnDgdbDoE1nmbTUltNY/0/da"><img src="http://feedads.g.doubleclick.net/~a/a-h6VxNdPnDgdbDoE1nmbTUltNY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/a-h6VxNdPnDgdbDoE1nmbTUltNY/1/da"><img src="http://feedads.g.doubleclick.net/~a/a-h6VxNdPnDgdbDoE1nmbTUltNY/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/SikachuBlog/~4/yQeiyMqs9TU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sikachu.com/2010/03/exat-etc-system-fail-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>US iTunes Music Store มีเพลงไทย !!</title>
		<link>http://sikachu.com/2010/02/us-itunes-music-store-has-thai-songs/</link>
		<comments>http://sikachu.com/2010/02/us-itunes-music-store-has-thai-songs/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 10:17:33 +0000</pubDate>
		<dc:creator>Sikachu!</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[My Life]]></category>
		<category><![CDATA[iTunes]]></category>
		<category><![CDATA[Potato]]></category>

		<guid isPermaLink="false">http://sikachu.com/?p=462</guid>
		<description><![CDATA[เมื่อหลายวันก่อน พอดีเปิด iTunes ขึ้นมา แล้วปรากฎว่าไปเผลอกฎปุ่มลูกศรด้านข้างๆ ชื่อเพลง มันก็เลยลิงค์ไปที่ iTunes Music Store ของ US
ปกติแล้วมันก็จะบอกว่าไม่มีเพลงนี้อยู่ในระบบ แต่ปรากฎว่าวันนี้ &#8230; มันมีครับ!

ตกใจเลยครับ สรุปว่ามีเพลงไทยใน iTunes Music Store แล้ว แต่เท่าที่เห็นมีอยู่ไม่กี่อัลบัมเท่านั้นเอง
แต่ว่าอย่างนี้ แล้วเมื่อไร iTunes Store ของไทยจะเปิด section Music บ้างหรอครับ? หรือว่าเขาตกลง deal กันไม่ได้ ปัจจุบันเราเลยเห็นแต่ต่างค่ายต่างก็ทำระบบโหลดเพลง ทำเว็บโหลดเพลงของตัวเอง ..
]]></description>
			<content:encoded><![CDATA[<p>เมื่อหลายวันก่อน พอดีเปิด iTunes ขึ้นมา แล้วปรากฎว่าไปเผลอกฎปุ่มลูกศรด้านข้างๆ ชื่อเพลง มันก็เลยลิงค์ไปที่ iTunes Music Store ของ US</p>
<p>ปกติแล้วมันก็จะบอกว่าไม่มีเพลงนี้อยู่ในระบบ แต่ปรากฎว่าวันนี้ &#8230; มันมีครับ!</p>
<p><img src="http://sikachu.com/wp-content/uploads/2010/02/Screen-shot-2553-02-17-at-0.27.25-1.jpg" alt="Screen shot 2553-02-17 at 0.27.25-1.jpg" border="0" width="520" height="324" /></p>
<p>ตกใจเลยครับ สรุปว่ามีเพลงไทยใน iTunes Music Store แล้ว แต่เท่าที่เห็นมีอยู่ไม่กี่อัลบัมเท่านั้นเอง</p>
<p>แต่ว่าอย่างนี้ แล้วเมื่อไร iTunes Store ของไทยจะเปิด section Music บ้างหรอครับ? หรือว่าเขาตกลง deal กันไม่ได้ ปัจจุบันเราเลยเห็นแต่ต่างค่ายต่างก็ทำระบบโหลดเพลง ทำเว็บโหลดเพลงของตัวเอง ..</p>

<p><a href="http://feedads.g.doubleclick.net/~a/uBTpd_V3C-HjqtPJ5YVT8i9LisQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/uBTpd_V3C-HjqtPJ5YVT8i9LisQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/uBTpd_V3C-HjqtPJ5YVT8i9LisQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/uBTpd_V3C-HjqtPJ5YVT8i9LisQ/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/SikachuBlog/~4/dd8w_ZeWico" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sikachu.com/2010/02/us-itunes-music-store-has-thai-songs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>เมื่อปุ่มด้านหน้าลิฟต์มันไม่ได้มีแค่ 2 ปุ่มอีกต่อไป</title>
		<link>http://sikachu.com/2010/02/destination-control-elevator/</link>
		<comments>http://sikachu.com/2010/02/destination-control-elevator/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 09:40:46 +0000</pubDate>
		<dc:creator>Sikachu!</dc:creator>
				<category><![CDATA[My Life]]></category>
		<category><![CDATA[CS Loxinfo]]></category>
		<category><![CDATA[Cyber World]]></category>
		<category><![CDATA[elevator]]></category>
		<category><![CDATA[RFID]]></category>

		<guid isPermaLink="false">http://sikachu.com/?p=455</guid>
		<description><![CDATA[สัญญาไว้ว่าจะบล็อกเรื่องนี้ วันนี้เลยมาตามสัญญาครับ
เมื่อสองวันที่ผ่านมา ได้มีโอกาสไปที่ CS Loxinfo ที่ย้ายไปจากเสือป่ามาที่ตึก Cyber World ตรงข้ามกับ Robinson รัชดา (ตึกมันคือตรงที่เคยเป็นตึกร้างเก่าครับ)
เมื่อวันนั้นเข้าไปจอดรถที่ชั้นใต้ดิน ยามก็จะให้บัตรจอดรถที่เป็น RFID บวกกับกระดาษที่เอาไว้สแตมป์ 1 ใบ ก็เข้าใจว่าเป็นบัตรจอดรถธรรมดา ผมก็เอาใส่กระเป๋าไว้ แล้วก็เดินขึ้นไป ผ่านจุดตรวจในตึก ไปขึ้นลิฟท์ (ไม่ได้แลกบัตร เพราะไม่เห็นเขาเรียกครับ ๕๕๕)
ปรากฎว่า ไอ้ปุ่มด้านหน้าลิฟท์เนี่ย แทนที่มันจะมีแค่สองปุ่มอย่างนี้

มันกลับกลายเป็นอย่างนี้ !!

ผมก็ .. เอาฟระ จากประสบการณ์ที่เคยขึ้นลิฟท์มาที่ Central แจ้งวัฒนะ ก็ทำให้ผมเข้าใจว่ามันเป็นลิฟท์ที่ต้องกดชั้นก่อน แล้วมันจะบอกว่าให้เราไปที่ลิฟท์ตัวไหน ผมก็เลยจัดการกดเลขเข้าไป รอสักครู่ แต่แล้วมันไม่ยอมบอกลิฟท์ครับ แล้วขึ้นสัญลักษณ์อันกลมๆ (เหมือนกับที่อยู่บนแผ่นๆ) ตรง LCD แทน
เอาล่ะสิ มาสายก็มาสาย ดันขึ้นลิฟท์ไม่ได้อีก ผมเลยยืนอยู่แถวนั้น ทำเหมือนรอเพื่อน &#8230; แล้วในที่สุดก็มีเหยื่อโผล่มาครับ กดชั้น แล้วก็แตะบัตร แล้วมันก็บอกว่าให้ไปตัว B &#8230;
เห้ยยย สรุปว่ามันต้องแตะบัตรด้วยหรือนี่ [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://twitter.com/sikachu/status/9222603254" target="_blank">สัญญาไว้</a>ว่าจะบล็อกเรื่องนี้ วันนี้เลยมาตามสัญญาครับ</p>
<p>เมื่อสองวันที่ผ่านมา ได้มีโอกาสไปที่ CS Loxinfo ที่ย้ายไปจากเสือป่ามาที่ตึก Cyber World ตรงข้ามกับ Robinson รัชดา (ตึกมันคือตรงที่เคยเป็นตึกร้างเก่าครับ)</p>
<p>เมื่อวันนั้นเข้าไปจอดรถที่ชั้นใต้ดิน ยามก็จะให้บัตรจอดรถที่เป็น RFID บวกกับกระดาษที่เอาไว้สแตมป์ 1 ใบ ก็เข้าใจว่าเป็นบัตรจอดรถธรรมดา ผมก็เอาใส่กระเป๋าไว้ แล้วก็เดินขึ้นไป ผ่านจุดตรวจในตึก ไปขึ้นลิฟท์ (ไม่ได้แลกบัตร เพราะไม่เห็นเขาเรียกครับ ๕๕๕)</p>
<p>ปรากฎว่า ไอ้ปุ่มด้านหน้าลิฟท์เนี่ย แทนที่มันจะมีแค่สองปุ่มอย่างนี้</p>
<p><img src="http://sikachu.com/wp-content/uploads/2010/02/Screen-shot-2553-02-19-at-16.01.18.png" alt="Screen shot 2553-02-19 at 16.01.18.png" border="0" width="83" height="255" /></p>
<p>มันกลับกลายเป็นอย่างนี้ !!</p>
<p><img src="http://sikachu.com/wp-content/uploads/2010/02/Screen-shot-2553-02-19-at-15.59.png" alt="Screen shot 2553-02-19 at 15.59.png" border="0" width="98" height="400" /></p>
<p>ผมก็ .. เอาฟระ จากประสบการณ์ที่เคยขึ้นลิฟท์มาที่ Central แจ้งวัฒนะ ก็ทำให้ผมเข้าใจว่ามันเป็นลิฟท์ที่ต้องกดชั้นก่อน แล้วมันจะบอกว่าให้เราไปที่ลิฟท์ตัวไหน ผมก็เลยจัดการกดเลขเข้าไป รอสักครู่ แต่แล้วมันไม่ยอมบอกลิฟท์ครับ แล้วขึ้นสัญลักษณ์อันกลมๆ (เหมือนกับที่อยู่บนแผ่นๆ) ตรง LCD แทน</p>
<p>เอาล่ะสิ มาสายก็มาสาย ดันขึ้นลิฟท์ไม่ได้อีก ผมเลยยืนอยู่แถวนั้น ทำเหมือนรอเพื่อน &#8230; แล้วในที่สุดก็มีเหยื่อโผล่มาครับ กดชั้น แล้วก็แตะบัตร แล้วมันก็บอกว่าให้ไปตัว B &#8230;</p>
<p>เห้ยยย สรุปว่ามันต้องแตะบัตรด้วยหรือนี่ !!</p>
<p>ผมก็เลยเอามั่งครับ เดินไปกดชั้นใหม่ เอาบัตรจอดรถ (คือเป็น RFID ใบเดียวที่เหมือนกับของคนนั้น) ไปแตะ แล้วก็ยืนรอว่ามันจะบอกให้ไปตัวไหน</p>
<p><strong>ปรากฎมันบอกว่า Access Denied ครับ O_o</strong></p>
<p>สรุปสุดท้าย ผมก็เลยต้องเปิดเผยตัวตน เดินกลับไปที่เคาท์เตอร์ประชาสัมพันธ์ แลกบัตร แล้วแจ้งบริษัทที่มาติดต่อ พร้อมกับ<strong>ชั้นที่มาติดต่อ</strong>ให้เรียบร้อย</p>
<p>หลังจากนั้นหรอครับ? ผมก็เดินไปกดชั้น เอาบัตรไปเตะ มันถึงยอมให้ผมขึ้นครับ &#8230;</p>
<h3>แล้วนี่มันคืออะไรละเนี่ย?</h3>
<p>หลังจากค้นคว้าดู ลิฟท์ของ Cyber World นี้ (และผมแน่ใจว่าในหลายๆ บริษัท ที่ลิฟท์ดูเป็นสีโลหะ สวยๆ) เป็นของบริษัท <a href="http://www.schindlerlifts.co.uk/ukc_index" target="_blank">Schindler</a> ครับ ซึ่งเป็นบริษัทที่หลายๆ ตึกชั้นนำของโลก เลือกใช้ลิฟท์และบันไดเลื่อนของที่นี่ครับ โดยระบบลิฟท์ที่ผมเจอวันนี้มันจะแบ่งออกเป็นสองส่วนครับ</p>
<p><img src="http://sikachu.com/wp-content/uploads/2010/02/Screen-shot-2553-02-19-at-16.36.47-1.jpg" alt="Screen shot 2553-02-19 at 16.36.47-1.jpg" border="0" width="71" height="184" align="right" />1. ระบบ Destination Control – ระบบนี้จะทำการเลือกลิฟท์ให้กับผู้โดยสาร โดยที่พยายามเอาผู้โดยสารที่มีจุดหมายปลายทางอยู่ชั้นใกล้เคียงกันมาอยู่ในลิฟท์ตัวเดียวกัน เพื่อให้ลิฟท์นั้นเคลื่อนที่ขึ้นไปให้ได้ระยะทางไกลที่สุด นั่นก็คือให้มีการหยุดระหว่างชั้นน้อยที่สุดครับ ซึ่งตรงนี้จะช่วยในเรื่องของการลดระยะเวลาเดินทาง (ตัดปัญหาว่าเราจะไปชั้น 7 แต่มีคนกดก่อนหน้าเราซะ 5 ชั้น แล้วเราต้องรอร๊อรอ &#8230; เจอตามศูนย์การค้าบ่อยๆ ครับ)</p>
<p>สำหรับระบบตรงนี้สามารถอ่านเพิ่มเติมได้ใน <a href="http://en.wikipedia.org/wiki/Elevator#Destination_Control_System" target="_blank">Wikipedia</a> และ <a href="http://www.schindler.com/group_index/group_kg_tech/group_tech_dc.htm" target="_blank">Website ของ Schindler</a> ครับ</p>
<p>2. ระบบ Schindler ID – ระบบนี้เป็นการใช้ร่วมกับ RFID เป็นของบริษัท Schindler เองครับ ซึ่งเราสามารถที่จะให้ผู้เช่า พนักงาน หรือผู้มาติดต่อบริษัทต่างๆ ถือ RFID เอาไว้ แล้วให้แตะ RFID เพื่อเป็นการยืนยันตัวตนด้วย เวลาจะขึ้นลิฟท์ครับ</p>
<p>สำหรับตรงนี้ มีวิธีการนำไปใช้หลายหลากเลยครับ เช่น</p>
<ul>
<li>RFID ของ CEO บริษัทนั้น ที่พอแตะไปแล้วจะกำหนดให้ลิฟท์ 1 ตัว ขึ้นไปที่ชั้นของตัวเองโดยไม่แวะพักที่ชั้นอื่น</li>
<li>RFID ของพนักงานบริษัท ที่ระบุไว้ว่าบริษัทเขาอยู่ที่ชั้นไหน และอนุญาตให้ไปได้เฉพาะบางชั้นเท่านั้น</li>
<li>RFID ของผู้เช่าคอนโด ที่สามารถเข้ามาเอา RFID แตะแล้วเปิดประตูด้านล่าง พร้อมทั้งเรียกลิฟท์ลงมารับได้ทันที</li>
<li>เนื่องจากระบบมันเก็บข้อมูลไว้ที่ส่วนกลาง เพราะฉะนั้นผู้ใช้ 1 คน สามารถที่จะใช้บัตรอื่นๆ เช่นบัตรพนักงาน คีย์การ์ด ผูกไว้กับระบบลิฟท์ได้</li>
</ul>
<p>หลังจากที่ลองศึกษาข้อมูลดูแล้ว ผมว่าข้อดีของมันนี่ดีจริงๆ นะครับ แต่มันก็ยังมี learning curve อยู่ดี เพราะว่าเราคงชินกับการกดขึ้น-ลง แล้วค่อยเข้าไปกดชั้นภายในลิฟท์ครับ</p>
<p>อีกหน่อยคงสนุกดีนะครับ ถ้าเราสามารถที่จะโปรแกรมลิฟท์ให้มันฉลาดมากขึ้น อย่างเช่นถ้าเรากลับมาจากทำงาน แตะบัตรเราปุ๊บ มันก็รู้เลยว่าเราจะไปชั้นไหน หรืออาจจะผูกกับระบบไฟในห้อง ให้มันเปิดไฟเปิดแอร์เตรียมให้เราได้เลย <img src='http://sikachu.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

<p><a href="http://feedads.g.doubleclick.net/~a/GXpNmlxugSl1S26nQ9hkWS_0RjQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/GXpNmlxugSl1S26nQ9hkWS_0RjQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/GXpNmlxugSl1S26nQ9hkWS_0RjQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/GXpNmlxugSl1S26nQ9hkWS_0RjQ/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/SikachuBlog/~4/HLT9Xow4qT0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sikachu.com/2010/02/destination-control-elevator/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>เจออะไรใน Rails 3: เพิ่มพลัง ActiveRecord#find (ตอนที่ 2)</title>
		<link>http://sikachu.com/2010/02/rails-3-activerecord-find-part-2/</link>
		<comments>http://sikachu.com/2010/02/rails-3-activerecord-find-part-2/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 01:15:59 +0000</pubDate>
		<dc:creator>Sikachu!</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Rails 3]]></category>

		<guid isPermaLink="false">http://sikachu.com/?p=442</guid>
		<description><![CDATA[เจออะไรใน Rails 3 เป็นสกู๊ปพิเศษสำหรับนำเสนอสิ่งใหม่ๆ ที่จะมีเพิ่มขึ้นมาใน Ruby on Rails 3.0
หลังจากที่ผมนำเสนอเรื่องของการ deprecate options ทั้งหมดของ ActiveRecord#find แล้วเปลี่ยนเป็นเมธอดที่ทำหน้าที่คล้ายๆ กับ named_scope กันไปแล้ว ตอนนี้ผมไปเจอข้อมูลจาก @lifo ซึ่งพูดเพิ่มเติมในเรื่องของเมธอดที่จะถูก deprecated และเมธอดที่ให้ใช้แทนครับ
สิ่งที่จะถูกถอดออกไป
การเรียกใช้ #find โดยมี option hash นั้นจะ deprecated ออกไป

User.find&#40;:first, :where =&#62; &#123;:status =&#62; &#34;suspended&#34;&#125;&#41;

แต่อย่างไรก็ตาม #find method จะยังคงอยู่ โดยคุณสามารถใช้มันเพื่อหา record ตาม ID ได้แทน เช่น

User.find&#40;1&#41;
User.find&#40;3,4,5&#41; # ให้ argument เป็น array ได้แล้ว

การใช้ #find(:first), #find(:all) จะถูกแทนที่ด้วยเมธอด #first, #all

User.find&#40;:first&#41; # [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>เจออะไรใน Rails 3</strong> เป็นสกู๊ปพิเศษสำหรับนำเสนอสิ่งใหม่ๆ ที่จะมีเพิ่มขึ้นมาใน Ruby on Rails 3.0</em></p>
<p>หลังจากที่ผมนำเสนอเรื่องของการ deprecate options ทั้งหมดของ <code>ActiveRecord#find</code> แล้วเปลี่ยนเป็นเมธอดที่ทำหน้าที่คล้ายๆ กับ <code>named_scope</code> กันไปแล้ว ตอนนี้ผมไปเจอข้อมูลจาก <a href="http://m.onkey.org/2010/1/22/active-record-query-interface" target="_blank">@lifo</a> ซึ่งพูดเพิ่มเติมในเรื่องของเมธอดที่จะถูก deprecated และเมธอดที่ให้ใช้แทนครับ</p>
<h3>สิ่งที่จะถูกถอดออกไป</h3>
<p>การเรียกใช้ <code>#find</code> โดยมี option hash นั้นจะ deprecated ออกไป</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">User.<span style="color:#9900CC;">find</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:first</span>, <span style="color:#ff3333; font-weight:bold;">:where</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span>:status <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;suspended&quot;</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>แต่อย่างไรก็ตาม <code>#find</code> method จะยังคงอยู่ โดยคุณสามารถใช้มันเพื่อหา record ตาม ID ได้แทน เช่น</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">User.<span style="color:#9900CC;">find</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span>
User.<span style="color:#9900CC;">find</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">3</span>,<span style="color:#006666;">4</span>,<span style="color:#006666;">5</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#008000; font-style:italic;"># ให้ argument เป็น array ได้แล้ว</span></pre></div></div>

<p>การใช้ <code>#find(:first), #find(:all)</code> จะถูกแทนที่ด้วยเมธอด <code>#first, #all</code></p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">User.<span style="color:#9900CC;">find</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:first</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#008000; font-style:italic;"># =&gt; deprecated</span>
User.<span style="color:#9900CC;">first</span> <span style="color:#008000; font-style:italic;"># use this</span></pre></div></div>

<p>และการใช้เมธอดสำหรับการคำนวณทุกอันนั้น ก็จะไม่รับ argument ที่เป็น hash แล้วเช่นกัน</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">User.<span style="color:#9900CC;">count</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:id</span>, <span style="color:#ff3333; font-weight:bold;">:conditions</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span>:status <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;suspended&quot;</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#008000; font-style:italic;"># =&gt; deprecated</span>
User.<span style="color:#9900CC;">where</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span>:status <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;suspended&quot;</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">count</span> <span style="color:#008000; font-style:italic;"># use this</span></pre></div></div>

<p>แต่ยังคงยกเว้น <code>#count</code> ที่ยังคงรับตัวเลือก <code>:distinct</code> อยู่</p>
<p>นอกจากนั้นการกำหนดค่า <code>named_scope</code> โดยใช้ option hash และเมธอด <code>#scoped_by_xxx</code> และ <code>#default_scope</code> ก็ถูกถอดออกเช่นกัน</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># all lines here are deprecated</span>
named_scope <span style="color:#ff3333; font-weight:bold;">:suspended</span>, <span style="color:#ff3333; font-weight:bold;">:conditions</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:status</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;suspended&quot;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
default_scope <span style="color:#ff3333; font-weight:bold;">:conditions</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;status != 'deleted'&quot;</span>
User.<span style="color:#9900CC;">scoped_by_status</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;suspended&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<h3>เมธอดใหม่ทั้งหมด</h3>
<p>ActiveRecord ใน Rails 3 นั้น จะมีการเพิ่มเมธอดเหล่านี้</p>
<ul>
<li>where</li>
<li>having</li>
<li>select</li>
<li>group</li>
<li>order</li>
<li>limit</li>
<li>offset</li>
<li>joins</li>
<li>includes</li>
<li>lock</li>
<li>readonly</li>
<li>from</li>
</ul>
<p>เมธอดทุกอย่างนั้นสามารถ chain เข้าหากันได้ เพราะฉะนั้นคุณก็จะสามารถทำอย่างนี้ได้</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">User.<span style="color:#9900CC;">where</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:status</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;suspended&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">includes</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:event_log</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">limit</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">15</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">order</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:name</span><span style="color:#006600; font-weight:bold;">&#41;</span>
User.<span style="color:#9900CC;">where</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:name</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;john_doe&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">joins</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:profile</span><span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>และเนื่องจาก result ของมันเป็น lazy-loading หมด ทำให้คุณสามารถนำมันไปเก็บในตัวแปร หรือว่าเพิ่ม condition เข้าไปทีหลังได้ โดย SQL จะถูกส่งไปยัง server เมื่อคุณเรียกใช้ <code>#each, #first, #all</code> เท่านั้น</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">suspended_users = User.<span style="color:#9900CC;">where</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:status</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;suspended&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
latest_suspended_users = suspended_users.<span style="color:#9900CC;">order</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;id DESC&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">limit</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">5</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
User.<span style="color:#9900CC;">where</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:status</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;suspended&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#008000; font-style:italic;"># ยังไม่ query</span>
User.<span style="color:#9900CC;">where</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:status</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;suspended&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">all</span> <span style="color:#008000; font-style:italic;"># query แล้ว!</span></pre></div></div>

<p>เพราะฉะนั้นถ้าคุณไม่สนใจในเรื่องของการ lazy loading และต้องการจะโหลดข้อมูลลงมาเก็บไว้ใน array ก่อน คุณก็เพียงแค่ใช้ #all ตามหลัง query ของคุณเท่านั้นเอง</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">suspended_users = User.<span style="color:#9900CC;">where</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:status</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;suspended&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">all</span> <span style="color:#008000; font-style:italic;"># ข้อมูลถูกเก็บใน suspended_users</span></pre></div></div>

<h3>named_scope ยังเปลี่ยนไปเป็น scope อีก</h3>
<p>นอกจากที่กล่าวมาข้างต้นนั้น ยังมีการเปลี่ยนชื่อเมธอดของ <code>named_scope</code> ให้เป็น <code>scope</code> และรองรับการใช้เมธอดใหม่ของ finder เพราะฉะนั้นจากโค้ด</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">named_scope <span style="color:#ff3333; font-weight:bold;">:suspended</span>, <span style="color:#ff3333; font-weight:bold;">:conditions</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:status</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;suspended&quot;</span> <span style="color:#006600; font-weight:bold;">&#125;</span></pre></div></div>

<p>ก็ต้องเปลี่ยนไปเป็น</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">scope <span style="color:#ff3333; font-weight:bold;">:suspended</span>, where<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:status</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;suspended&quot;</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>นอกจากนั้นยังมีการเพิ่มเติม <code>with_scope</code> และ <code>with_exclusive_scope</code> ซึ่งโค้ดในบล็อกที่ให้มานั้นจะมี scope ตามที่ระบุไว้แทน</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">with_scope<span style="color:#006600; font-weight:bold;">&#40;</span>where<span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#ff3333; font-weight:bold;">:status</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'suspended'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span>
  ...
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">with_exclusive_scope<span style="color:#006600; font-weight:bold;">&#40;</span>User.<span style="color:#9900CC;">online</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span>
  ...
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<h3>แล้วเมื่อไรจะต้องเปลี่ยนละเนี่ย &#8230;</h3>
<p>คุณไม่จำเป็นต้องรีบเปลี่ยนโค้ดในส่วนของการใช้ finder เพราะใน Rails 3.0 นั้น ทุกอย่างยังคงจะใช้ได้ตามปกติ โดยที่มีกำหนดการว่าเมธอดเก่าๆ นั้นจะถูกนำออกไปใน Rails 3.2 ครับ เพราะฉะนั้นคุณก็ยังคงสามารถใช้โค้ดเก่าๆ ในการ query ข้อมูลมาได้ แต่ผมแนะนำว่าค่อยๆ ไล่เปลี่ยนไป ก็จะทำให้โค้ดของคุณพร้อมสำหรับการ upgrade ไปยัง version ใหม่ๆ ครับ <img src='http://sikachu.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

<p><a href="http://feedads.g.doubleclick.net/~a/klAIiPDxdvWtOB_AVR4L8PboOYk/0/da"><img src="http://feedads.g.doubleclick.net/~a/klAIiPDxdvWtOB_AVR4L8PboOYk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/klAIiPDxdvWtOB_AVR4L8PboOYk/1/da"><img src="http://feedads.g.doubleclick.net/~a/klAIiPDxdvWtOB_AVR4L8PboOYk/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/SikachuBlog/~4/tb1WXp5xnwg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sikachu.com/2010/02/rails-3-activerecord-find-part-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>เจออะไรใน Rails 3: เข้ารหัส cookie และสร้าง cookie ที่ไม่มีวันหมดอายุอย่างง่ายๆ</title>
		<link>http://sikachu.com/2010/02/rails-3-signed-cookie-and-permanent-cookie/</link>
		<comments>http://sikachu.com/2010/02/rails-3-signed-cookie-and-permanent-cookie/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 01:15:20 +0000</pubDate>
		<dc:creator>Sikachu!</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Rails 3]]></category>

		<guid isPermaLink="false">http://sikachu.com/?p=420</guid>
		<description><![CDATA[เจออะไรใน Rails 3 เป็นสกู๊ปพิเศษสำหรับนำเสนอสิ่งใหม่ๆ ที่จะมีเพิ่มขึ้นมาใน Ruby on Rails 3.0
เมื่อก่อนนี้ ถ้าหากเราต้องการที่จะทำ cookie ที่ไม่มีวันหมดอายุ (เช่น remember me) เราจำเป็นที่จะต้องกำหนดเวลาหมดอายุของ cookie เอง เช่น

cookies&#91;:authorization_key&#93; = &#123;
  :value =&#62; @user.authorization_key,
  :expires =&#62; 20.years.from_now.utc
&#125;

แต่หลังจาก commit ของ DHH อันนี้ ทำให้เราสามารถเขียนใหม่ได้เป็น

cookies.permanent&#91;:authorization_key&#93; = @user.authorization_key

นอกจากนั้น เพื่อเพิ่มความปลอดภัยให้กับ Cookie เราก็ยังสามารถที่จะจับมัน signed หรือพูดง่ายๆ ก็คือเข้ารหัสมันไว้ได้ โดยการใช้เมธอด signed

cookies.signed&#91;:user_id&#93; = @user.id

ที่เยี่ยมไปกว่านั้นคือ การที่ทั้งสองเมธอดนั้นสามารถเชื่อมต่อกันได้ เพราะฉะนั้นตัวอย่างข้างต้นสำหรับ remember me นั้น เราก็สามารถแก้โค้ดให้เป็น

cookies.signed.permanent&#91;:authorization_key&#93; = @user.authorization_key

ซึ่งจะทำให้ cookies[:authorization_key] [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>เจออะไรใน Rails 3</strong> เป็นสกู๊ปพิเศษสำหรับนำเสนอสิ่งใหม่ๆ ที่จะมีเพิ่มขึ้นมาใน Ruby on Rails 3.0</em></p>
<p>เมื่อก่อนนี้ ถ้าหากเราต้องการที่จะทำ cookie ที่ไม่มีวันหมดอายุ (เช่น remember me) เราจำเป็นที่จะต้องกำหนดเวลาหมดอายุของ cookie เอง เช่น</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">cookies<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:authorization_key</span><span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#006600; font-weight:bold;">&#123;</span>
  <span style="color:#ff3333; font-weight:bold;">:value</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#0066ff; font-weight:bold;">@user</span>.<span style="color:#9900CC;">authorization_key</span>,
  <span style="color:#ff3333; font-weight:bold;">:expires</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> 20.<span style="color:#9900CC;">years</span>.<span style="color:#9900CC;">from_now</span>.<span style="color:#9900CC;">utc</span>
<span style="color:#006600; font-weight:bold;">&#125;</span></pre></div></div>

<p>แต่หลังจาก commit ของ DHH <a href="http://github.com/rails/rails/commit/0200e20f148c96afceeebc4da7b5985643f9f707" target="_blank">อันนี้</a> ทำให้เราสามารถเขียนใหม่ได้เป็น</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">cookies.<span style="color:#9900CC;">permanent</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:authorization_key</span><span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#0066ff; font-weight:bold;">@user</span>.<span style="color:#9900CC;">authorization_key</span></pre></div></div>

<p>นอกจากนั้น เพื่อเพิ่มความปลอดภัยให้กับ Cookie เราก็ยังสามารถที่จะจับมัน signed หรือพูดง่ายๆ ก็คือเข้ารหัสมันไว้ได้ โดยการใช้เมธอด <code>signed</code></p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">cookies.<span style="color:#9900CC;">signed</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:user_id</span><span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#0066ff; font-weight:bold;">@user</span>.<span style="color:#9900CC;">id</span></pre></div></div>

<p>ที่เยี่ยมไปกว่านั้นคือ การที่ทั้งสองเมธอดนั้นสามารถเชื่อมต่อกันได้ เพราะฉะนั้นตัวอย่างข้างต้นสำหรับ remember me นั้น เราก็สามารถแก้โค้ดให้เป็น</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">cookies.<span style="color:#9900CC;">signed</span>.<span style="color:#9900CC;">permanent</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:authorization_key</span><span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#0066ff; font-weight:bold;">@user</span>.<span style="color:#9900CC;">authorization_key</span></pre></div></div>

<p>ซึ่งจะทำให้ <code>cookies[:authorization_key]</code> นั้นถูกเข้ารหัสก่อนที่จะส่งไปยัง web browser</p>
<h3>แล้วมันเข้ารหัสกับอะไรล่ะ?</h3>
<p>เป็นคำถามที่ดีครับ! Application ใหม่ๆ ที่ถูกสร้างมานั้นจะมีไฟล์ชื่อ <code>cookie_verification_secret.rb</code> อยู่ใน <code>config/initializer</code> ซึ่งมันจะมี key ที่ใช้ในการเข้ารหัสเมื่อใช้คำสั่ง <code>cookies.signed</code> อยู่ เพราะฉะนั้นถ้าเป็น application เก่า สิ่งที่คุณต้องทำก็แค่สร้างไฟล์นี้ขึ้นมาแล้วเพิ่มบรรทัดนี้</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#6666ff; font-weight:bold;">ActionController::Base</span>.<span style="color:#9900CC;">cookie_verification_secret</span> = <span style="color:#996600;">'z3cret'</span>;</pre></div></div>

<p>อย่าลืมเปลี่ยน token ของคุณให้เป็นข้อความยากๆ ที่เดาไม่ได้นะครับ <img src='http://sikachu.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<h3>แล้วถ้ามีการแก้ไข cookie ที่ถูกเข้ารหัสละ?</h3>
<p>มันก็จะ verify cookie ไม่ผ่าน แล้วก็จะโยน exception <code>ActiveSupport::MessageVerifier::InvalidSignature</code> มาครับ</p>
<p>ยังมีอะไรอีกเพียบเลยครับที่ยังเหลือให้เขียนถึง อย่าลืมติดตามอ่านตอนต่อๆ ไปนะครับ <img src='http://sikachu.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>

<p><a href="http://feedads.g.doubleclick.net/~a/9kJ3oK2ga_KTmMAUwiM9fQKSOKg/0/da"><img src="http://feedads.g.doubleclick.net/~a/9kJ3oK2ga_KTmMAUwiM9fQKSOKg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/9kJ3oK2ga_KTmMAUwiM9fQKSOKg/1/da"><img src="http://feedads.g.doubleclick.net/~a/9kJ3oK2ga_KTmMAUwiM9fQKSOKg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/SikachuBlog/~4/DgdUdjXwFro" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sikachu.com/2010/02/rails-3-signed-cookie-and-permanent-cookie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unbox หูฟัง iPhone</title>
		<link>http://sikachu.com/2010/01/unbox-%e0%b8%ab%e0%b8%b9%e0%b8%9f%e0%b8%b1%e0%b8%87-iphone/</link>
		<comments>http://sikachu.com/2010/01/unbox-%e0%b8%ab%e0%b8%b9%e0%b8%9f%e0%b8%b1%e0%b8%87-iphone/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 08:39:11 +0000</pubDate>
		<dc:creator>Sikachu!</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[headset]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://sikachu.com/?p=414</guid>
		<description><![CDATA[พอดีผมได้มีโอกาสได้ไปซื้อหูฟังของ iPhone ใหม่ เนื่องจากความโก๊ะของตัวเอง เอาไปโรงพยาบาลแล้วทำร่วง เลยมาถ่ายรูป Unbox หน่อยดีกว่า
เนื่องจาก iPhone ที่ใช้อยู่นั้นเป็น 2G มันไม่ยอมรับหูฟังแบบอื่นนอกจากแบบที่หัวมันเล็กๆ ทำให้ต้องไปซื้อหูฟังของ iPhone มาใช้ &#8230; แต่ผมว่ามันก็เหมาะที่สุดแล้วนะ เข้ากับเครื่องดี  
มาดูรูปกันเลยดีกว่าครับ

กล่องของมัน รูปลักษณ์ชัดเจนว่าเป็น remote แบบใหม่ ราคา 1090 บาทครับ

แกะออกมา มีซองด้านซ้ายใส่หูฟัง (ต้องตัดออกมาอย่างเดียว) พร้อมกับ manual และเอกสาร warranty

ตัดซองออกมา ก็จะเจอกับหูฟัง พันเหมือนกับอยู่ในกล่อง iPhone เลย
สุดท้ายแล้วก็ได้หูฟังใหม่ครับ แต่มันก็มีปัญหาอยู่นิดนึงว่าหูฟังที่ซื้อมาใหม่นี่เป็น version สำหรับ iPhone 3GS/iPod Touch 2 gen ซึ่งมีตัว control volume ใน Remote .. แต่ถ้าเอากลับไปใช้กับ iPhone 2g มันก็จะกดขึ้นลงไม่ได้ &#8230; [...]]]></description>
			<content:encoded><![CDATA[<p>พอดีผมได้มีโอกาสได้ไปซื้อหูฟังของ iPhone ใหม่ เนื่องจากความโก๊ะของตัวเอง เอาไปโรงพยาบาลแล้วทำร่วง เลยมาถ่ายรูป Unbox หน่อยดีกว่า</p>
<p>เนื่องจาก iPhone ที่ใช้อยู่นั้นเป็น 2G มันไม่ยอมรับหูฟังแบบอื่นนอกจากแบบที่หัวมันเล็กๆ ทำให้ต้องไปซื้อหูฟังของ iPhone มาใช้ &#8230; แต่ผมว่ามันก็เหมาะที่สุดแล้วนะ เข้ากับเครื่องดี <img src='http://sikachu.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>มาดูรูปกันเลยดีกว่าครับ</p>
<p><a href="http://www.flickr.com/photos/sikachu/4303381388/" title="The Box. by Sikachu!, on Flickr"><img src="http://farm5.static.flickr.com/4055/4303381388_2d129b14bc.jpg" width="375" height="500" alt="The Box." /></a></p>
<p>กล่องของมัน รูปลักษณ์ชัดเจนว่าเป็น remote แบบใหม่ ราคา 1090 บาทครับ</p>
<p><a href="http://www.flickr.com/photos/sikachu/4303381660/" title="Inside. by Sikachu!, on Flickr"><img src="http://farm5.static.flickr.com/4003/4303381660_98de0d3959.jpg" width="375" height="500" alt="Inside." /></a></p>
<p>แกะออกมา มีซองด้านซ้ายใส่หูฟัง (ต้องตัดออกมาอย่างเดียว) พร้อมกับ manual และเอกสาร warranty</p>
<p><a href="http://www.flickr.com/photos/sikachu/4302632239/" title="Headphone. by Sikachu!, on Flickr"><img src="http://farm5.static.flickr.com/4032/4302632239_36da9aa730.jpg" width="375" height="500" alt="Headphone." /></a></p>
<p>ตัดซองออกมา ก็จะเจอกับหูฟัง พันเหมือนกับอยู่ในกล่อง iPhone เลย</p>
<p>สุดท้ายแล้วก็ได้หูฟังใหม่ครับ แต่มันก็มีปัญหาอยู่นิดนึงว่าหูฟังที่ซื้อมาใหม่นี่เป็น version สำหรับ iPhone 3GS/iPod Touch 2 gen ซึ่งมีตัว control volume ใน Remote .. แต่ถ้าเอากลับไปใช้กับ iPhone 2g มันก็จะกดขึ้นลงไม่ได้ &#8230; ซึ่งจริงๆ มันก็น่าจะทำให้ support ใน firmware ได้นา &#8230;</p>
<p>Apple จ๋า &#8230; update firmware iPhone โหน่ยยย 555+</p>

<p><a href="http://feedads.g.doubleclick.net/~a/37baXFQ96zEY9KVpckKbcAxx0xA/0/da"><img src="http://feedads.g.doubleclick.net/~a/37baXFQ96zEY9KVpckKbcAxx0xA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/37baXFQ96zEY9KVpckKbcAxx0xA/1/da"><img src="http://feedads.g.doubleclick.net/~a/37baXFQ96zEY9KVpckKbcAxx0xA/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/SikachuBlog/~4/FkT_xnQhND0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sikachu.com/2010/01/unbox-%e0%b8%ab%e0%b8%b9%e0%b8%9f%e0%b8%b1%e0%b8%87-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>เจออะไรใน Rails 3: ใส่ flash message ลงไปใน redirect_to ได้เลย</title>
		<link>http://sikachu.com/2010/01/%e0%b9%80%e0%b8%88%e0%b8%ad%e0%b8%ad%e0%b8%b0%e0%b9%84%e0%b8%a3%e0%b9%83%e0%b8%99-rails-3-%e0%b9%83%e0%b8%aa%e0%b9%88-flash-message-%e0%b8%a5%e0%b8%87%e0%b9%84%e0%b8%9b%e0%b9%83%e0%b8%99-redirect_to/</link>
		<comments>http://sikachu.com/2010/01/%e0%b9%80%e0%b8%88%e0%b8%ad%e0%b8%ad%e0%b8%b0%e0%b9%84%e0%b8%a3%e0%b9%83%e0%b8%99-rails-3-%e0%b9%83%e0%b8%aa%e0%b9%88-flash-message-%e0%b8%a5%e0%b8%87%e0%b9%84%e0%b8%9b%e0%b9%83%e0%b8%99-redirect_to/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 05:05:50 +0000</pubDate>
		<dc:creator>Sikachu!</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Rails 3]]></category>

		<guid isPermaLink="false">http://sikachu.com/?p=393</guid>
		<description><![CDATA[เจออะไรใน Rails 3 เป็นสกู๊ปพิเศษสำหรับนำเสนอสิ่งใหม่ๆ ที่จะมีเพิ่มขึ้นมาใน Ruby on Rails 3.0
ความเป็นมา
ปกติแล้วใน Rails 2 ถ้าเราต้องการที่จะตั้งค่า flash message ก่อนที่จะทำการ redirect เราจำเป็นทีจะต้องตั้งค่ามันก่อนที่จะเรียก redirect_to เช่น

class UsersController &#60; ApplicationController
  def create
    @user = User.new&#40;params&#91;:user&#93;&#41;
    if @user.save
      flash&#91;:notice&#93; = &#34;User has been successfully created.&#34;
      redirect_to users_path
 [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>เจออะไรใน Rails 3</strong> เป็นสกู๊ปพิเศษสำหรับนำเสนอสิ่งใหม่ๆ ที่จะมีเพิ่มขึ้นมาใน Ruby on Rails 3.0</em></p>
<h3>ความเป็นมา</h3>
<p>ปกติแล้วใน Rails 2 ถ้าเราต้องการที่จะตั้งค่า flash message ก่อนที่จะทำการ redirect เราจำเป็นทีจะต้องตั้งค่ามันก่อนที่จะเรียก <code>redirect_to</code> เช่น</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">class</span> UsersController <span style="color:#006600; font-weight:bold;">&lt;</span> ApplicationController
  <span style="color:#9966CC; font-weight:bold;">def</span> create
    <span style="color:#0066ff; font-weight:bold;">@user</span> = User.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:user</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#0066ff; font-weight:bold;">@user</span>.<span style="color:#9900CC;">save</span>
      flash<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:notice</span><span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#996600;">&quot;User has been successfully created.&quot;</span>
      redirect_to users_path
    <span style="color:#9966CC; font-weight:bold;">else</span>
      render <span style="color:#ff3333; font-weight:bold;">:action</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;new&quot;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<h3>เพิ่ม flash message ใน redirect_to</h3>
<p>ใน Rails 3 นั้น คุณสามารถใช้ <code>:flash</code> ในการตั้งค่า flash message ได้เลย เช่น</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">redirect_to users_path, 
    <span style="color:#ff3333; font-weight:bold;">:flash</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:notice</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;User has been successfully created.&quot;</span> <span style="color:#006600; font-weight:bold;">&#125;</span></pre></div></div>

<p>และเพื่อเพิ่มความสะดวกในการตั้งค่า flash message ที่ใช้บ่อยๆ เช่น <code>flash[:notice]</code> และ <code>flash[:alert]</code> ทาง Rails ก็ได้เพิ่ม options ขึ้นมาอีกสองตัวคือ <code>:notice</code> และ <code>:alert</code> ทำให้เรายังสามารถเขียนโค้ดด้านบนได้เป็น</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">redirect_to users_path, 
    <span style="color:#ff3333; font-weight:bold;">:notice</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;User has been successfully created.&quot;</span></pre></div></div>

<p>จะเห็นได้ว่า options ที่เพิ่มเข้ามานี้จะช่วยทำให้ความซ้ำซ้อนของโค้ดนั้นลดไปได้อีกจุดหนึ่ง และทำให้เราเขียนโค้ดได้สบายขึ้นนั่นเอง</p>
<p><strong>ปล.</strong> โดยส่วนตัวแล้วผมใช้ <code>flash[:notice]</code> และ <code>flash[:error]</code> แต่คิดว่าหลังจากได้เห็น feature นี้ ทั้ง <code>flash[:notice]</code> และ <code>flash[:alert]</code> คงจะกลายเป็น convention ของ Rails ไปอย่างแน่นอน</p>

<p><a href="http://feedads.g.doubleclick.net/~a/BQ6yQPGfdeWkywviuOmbhjxcZPM/0/da"><img src="http://feedads.g.doubleclick.net/~a/BQ6yQPGfdeWkywviuOmbhjxcZPM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/BQ6yQPGfdeWkywviuOmbhjxcZPM/1/da"><img src="http://feedads.g.doubleclick.net/~a/BQ6yQPGfdeWkywviuOmbhjxcZPM/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/SikachuBlog/~4/qoPsUxggw64" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sikachu.com/2010/01/%e0%b9%80%e0%b8%88%e0%b8%ad%e0%b8%ad%e0%b8%b0%e0%b9%84%e0%b8%a3%e0%b9%83%e0%b8%99-rails-3-%e0%b9%83%e0%b8%aa%e0%b9%88-flash-message-%e0%b8%a5%e0%b8%87%e0%b9%84%e0%b8%9b%e0%b9%83%e0%b8%99-redirect_to/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>เจออะไรใน Rails 3: เพิ่มพลัง ActiveRecord#find</title>
		<link>http://sikachu.com/2010/01/%e0%b9%80%e0%b8%88%e0%b8%ad%e0%b8%ad%e0%b8%b0%e0%b9%84%e0%b8%a3%e0%b9%83%e0%b8%99-rails-3-%e0%b9%80%e0%b8%9e%e0%b8%b4%e0%b9%88%e0%b8%a1%e0%b8%9e%e0%b8%a5%e0%b8%b1%e0%b8%87-activerecordfind/</link>
		<comments>http://sikachu.com/2010/01/%e0%b9%80%e0%b8%88%e0%b8%ad%e0%b8%ad%e0%b8%b0%e0%b9%84%e0%b8%a3%e0%b9%83%e0%b8%99-rails-3-%e0%b9%80%e0%b8%9e%e0%b8%b4%e0%b9%88%e0%b8%a1%e0%b8%9e%e0%b8%a5%e0%b8%b1%e0%b8%87-activerecordfind/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 10:29:50 +0000</pubDate>
		<dc:creator>Sikachu!</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Rails 3]]></category>

		<guid isPermaLink="false">http://sikachu.com/?p=391</guid>
		<description><![CDATA[เจออะไรใน Rails 3 เป็นสกู๊ปพิเศษสำหรับนำเสนอสิ่งใหม่ๆ ที่จะมีเพิ่มขึ้นมาใน Ruby on Rails 3.0
ความเป็นมา
หลายคนนั้นคงจะรู้จักกับฟีเจอร์ named_scope ที่ได้เปิดตัวออกมาพร้อมกับ Rails 2.1 ทำให้เราสามารถที่จะเขียน scope แล้วนำ scope นี้ไปใช้ได้ใหม่เรื่อยๆ เป็นไปตามหลักของ DRY เช่น

class Post &#60; ActiveRecord::Base
  named_scope :published, :conditions =&#62; &#123; :status =&#62; :published &#125;
  named_scope :latest, lambda &#123; &#124;limit&#124; &#123; :order =&#62; &#34;id DESC&#34;, :limit =&#62; limit &#125;&#125;
&#160;
end
&#160;
# Use in the code
Post.published # =&#62; [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>เจออะไรใน Rails 3</strong> เป็นสกู๊ปพิเศษสำหรับนำเสนอสิ่งใหม่ๆ ที่จะมีเพิ่มขึ้นมาใน Ruby on Rails 3.0</em></p>
<h3>ความเป็นมา</h3>
<p>หลายคนนั้นคงจะรู้จักกับฟีเจอร์ <code><a href="http://ryandaigle.com/articles/2008/3/24/what-s-new-in-edge-rails-has-finder-functionality">named_scope</a></code> ที่ได้เปิดตัวออกมาพร้อมกับ <a href="http://weblog.rubyonrails.org/2008/6/1/rails-2-1-time-zones-dirty-caching-gem-dependencies-caching-etc" target="_blank">Rails 2.1</a> ทำให้เราสามารถที่จะเขียน scope แล้วนำ scope นี้ไปใช้ได้ใหม่เรื่อยๆ เป็นไปตามหลักของ DRY เช่น</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">class</span> Post <span style="color:#006600; font-weight:bold;">&lt;</span> <span style="color:#6666ff; font-weight:bold;">ActiveRecord::Base</span>
  named_scope <span style="color:#ff3333; font-weight:bold;">:published</span>, <span style="color:#ff3333; font-weight:bold;">:conditions</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:status</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:published</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
  named_scope <span style="color:#ff3333; font-weight:bold;">:latest</span>, <span style="color:#CC0066; font-weight:bold;">lambda</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#006600; font-weight:bold;">|</span>limit<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:order</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;id DESC&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:limit</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> limit <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#125;</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Use in the code</span>
Post.<span style="color:#9900CC;">published</span> <span style="color:#008000; font-style:italic;"># =&gt; all published posts</span>
Post.<span style="color:#9900CC;">latest</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">5</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#008000; font-style:italic;"># =&gt; Latest 5 posts</span>
Post.<span style="color:#9900CC;">latest</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">10</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">published</span> <span style="color:#008000; font-style:italic;"># =&gt; Latest 10 published posts</span></pre></div></div>

<p>ซึ่งการเพิ่มฟีเจอร์นี้ให้กับ Rails นั้น ทำให้มี plugin ต่างๆ เพิ่มขึ้นมาอีกมากมาย ที่เป็นการเพิ่ม scope ให้กับ model</p>
<p>หลังจากที่ named_scope นั้นถูกใช้กันอย่างแพร่หลาย คาดว่า <a href="http://twitter.com/lifo" target="_blank">@lifo</a> คงเห็นสมควรแก่เวลาแล้ว จึงได้เวลา <a href="http://twitter.com/dhh/status/7108471754" target="_blank">deprecate method <code>#find</code> เดิม</a> แล้วให้ทุกคนเปลี่ยนไปใช้ syntax แบบใหม่ซึ่งคล้ายคลึงกับ <code>named_scope</code> แทน</p>
<h3>Syntax แบบใหม่</h3>
<p>สำหรับ syntax แบบใหม่นั้น ดูได้จาก snippet ด้านล่างนี้ครับ (<a href="http://gist.github.com/264500" target="_blank">เอามาจากที่นี่</a>)</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">posts = Post.<span style="color:#9900CC;">where</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;status = 'published'&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
posts = posts.<span style="color:#9900CC;">order</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;created_at DESC&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">limit</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">10</span><span style="color:#006600; font-weight:bold;">&#41;</span>
posts.<span style="color:#9900CC;">each</span><span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#006600; font-weight:bold;">|</span>post<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#CC0066; font-weight:bold;">puts</span> post.<span style="color:#9900CC;">title</span> <span style="color:#006600; font-weight:bold;">&#125;</span></pre></div></div>

<p>จะเห็นได้ว่ามีการเพิ่ม scope <code>where</code>, <code>order</code> และ <code>limit</code> เข้ามาเป็นมาตรฐาน แล้วก็จะเหมือนกับ <code>named_scope</code> คือการ execute query นั้นจะเกิดขึ้นเมื่อจะทำการเข้าถึง object (บรรทัดสุดท้าย) เท่านั้น ทำให้สามารถ chain scope ได้</p>
<p>เนื่องจาก snippet ที่ได้มานั้นมีนิดเดียว แต่เป็นไปได้ว่าเราคงจะเห็น method อื่นๆ เช่น <code>group</code>, <code>select</code>, <code>include</code> เพิ่มมาเป็นแน่แท้ &#8230; อันนี้ก็คงต้องรอดูต่อไปนะครับว่าจะมีอะไรเพิ่มขึ้นมาบ้าง <img src='http://sikachu.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>

<p><a href="http://feedads.g.doubleclick.net/~a/Baxrwjoumo9-QDlIhVal1Wwn-AQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/Baxrwjoumo9-QDlIhVal1Wwn-AQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Baxrwjoumo9-QDlIhVal1Wwn-AQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/Baxrwjoumo9-QDlIhVal1Wwn-AQ/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/SikachuBlog/~4/KbqMQAmmv9s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://sikachu.com/2010/01/%e0%b9%80%e0%b8%88%e0%b8%ad%e0%b8%ad%e0%b8%b0%e0%b9%84%e0%b8%a3%e0%b9%83%e0%b8%99-rails-3-%e0%b9%80%e0%b8%9e%e0%b8%b4%e0%b9%88%e0%b8%a1%e0%b8%9e%e0%b8%a5%e0%b8%b1%e0%b8%87-activerecordfind/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
