<?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>PUPASOFT BLOG!</title>
	<atom:link href="http://blog.pupasoft.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.pupasoft.com</link>
	<description>Proactive Units for Practical Applications</description>
	<lastBuildDate>Tue, 27 Apr 2010 08:31:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>chowwoyzz,,How to create DB in SAP</title>
		<link>http://blog.pupasoft.com/2010/04/27/chowwoyzzhow-to-create-db-in-sap/</link>
		<comments>http://blog.pupasoft.com/2010/04/27/chowwoyzzhow-to-create-db-in-sap/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 08:31:51 +0000</pubDate>
		<dc:creator>zephiroth</dc:creator>
				<category><![CDATA[ERP]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[SAP Create Database DB]]></category>

		<guid isPermaLink="false">http://blog.pupasoft.com/?p=3488</guid>
		<description><![CDATA[ช่วงนี้ก็เป็นช่วงฝึกงานอยู่นะครับคงไม่ค่อยมีคนว่างเข้ามาดูมั้ง แต่ผมอยากแบ่งๆ ให้เพื่อนๆ ได้รู้ไว้ด้วยงะ
ที่ฝึกงานของผมใช้ SAP อยู่อ่ะครับ ผมก็เลยได้อานิสงค์เล่นไปด้วย แต่โปรแกรมห่านนี้ใช้ยากจิ๊บเลยย
ตอนนี้ก็พอเล่นเป็นนิดหน่อย มาลองสร้าง DB กันเถอะนะครับ ^^

หน้าตาแรงสุดหลังจาก log in ก้๗เป็นประมาณนี้นะครับ

ต่อมาก็พิมพ์ se11 ลงไปในช่องว่างข้างบนแล้วกด enter (เป็นการเรียก transaction เกี่ยวกับการสร้าง db)

ก็จะได้หน้าตาแบบนี้

จากที่พี่ๆ สอนมาเค้าบอกว่าการสร้าง table จะกำหนดชนิดของตัวแปรได้สองแบบคือกำหนดให้เป็น data element กับ data type แล้วพี่ก็บอกให้ใช้แบบ data element อะ
การจะสร้าง data element ได้เราต้องรู้ก่อนว่าจะต้องมี field อะไรบ้าง และก้อคลิกที่ domain ใส่ชื่อ ซึ่งชื่อที่ใช้จะต้องนำหน้าด้วย Z หรือ Y (เป็นข้อบังคับในการตั้งชื่อของ SAP) จากนั้นกด create

จากนั้นก็จะได้หน้าตาแบบนี้ จากนั้นก็กรอกข้อมูลให้เรียบร้อยโดย
1.เลือกชนิดข้อมูลได้จากรูปกระดาษทับกันหลังช่องของ Data type ถ้าเลือก char [...]]]></description>
			<content:encoded><![CDATA[<p>ช่วงนี้ก็เป็นช่วงฝึกงานอยู่นะครับคงไม่ค่อยมีคนว่างเข้ามาดูมั้ง แต่ผมอยากแบ่งๆ ให้เพื่อนๆ ได้รู้ไว้ด้วยงะ</p>
<p>ที่ฝึกงานของผมใช้ SAP อยู่อ่ะครับ ผมก็เลยได้อานิสงค์เล่นไปด้วย แต่โปรแกรมห่านนี้ใช้ยากจิ๊บเลยย</p>
<p>ตอนนี้ก็พอเล่นเป็นนิดหน่อย มาลองสร้าง DB กันเถอะนะครับ ^^</p>
<p><span id="more-3488"></span></p>
<p>หน้าตาแรงสุดหลังจาก log in ก้๗เป็นประมาณนี้นะครับ</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap1.bmp"><img class="alignnone size-full wp-image-3489" title="sap1" src="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap1.bmp" alt="" /></a></p>
<p>ต่อมาก็พิมพ์ se11 ลงไปในช่องว่างข้างบนแล้วกด enter (เป็นการเรียก transaction เกี่ยวกับการสร้าง db)</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap2.jpg"><img class="alignnone size-full wp-image-3490" title="sap2" src="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap2.jpg" alt="" width="214" height="30" /></a></p>
<p>ก็จะได้หน้าตาแบบนี้</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap31.jpg"><img class="alignnone size-full wp-image-3493" title="sap3" src="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap31.jpg" alt="" /></a></p>
<p>จากที่พี่ๆ สอนมาเค้าบอกว่าการสร้าง table จะกำหนดชนิดของตัวแปรได้สองแบบคือกำหนดให้เป็น data element กับ data type แล้วพี่ก็บอกให้ใช้แบบ data element อะ</p>
<p>การจะสร้าง data element ได้เราต้องรู้ก่อนว่าจะต้องมี field อะไรบ้าง และก้อคลิกที่ domain ใส่ชื่อ ซึ่งชื่อที่ใช้จะต้องนำหน้าด้วย Z หรือ Y (เป็นข้อบังคับในการตั้งชื่อของ SAP) จากนั้นกด create</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap4.bmp"><img class="alignnone size-full wp-image-3494" title="sap4" src="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap4.bmp" alt="" /></a></p>
<p>จากนั้นก็จะได้หน้าตาแบบนี้ จากนั้นก็กรอกข้อมูลให้เรียบร้อยโดย<br />
1.เลือกชนิดข้อมูลได้จากรูปกระดาษทับกันหลังช่องของ Data type ถ้าเลือก char ก็ให้ใส่จำนวนตัวอักษรที่ช่อง No. Characters จากนั้นกดปุ่ม enter บน keyboard จะทำให้ช่อง gen ช่อง output เอง<br />
2.สุดท้ายกดปุ่ม avtivate ซึ่งเป็นรูปเสาอากาศหัวแดง</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap5.bmp"><img class="alignnone size-full wp-image-3496" title="sap5" src="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap5.bmp" alt="" /></a></p>
<p> จะให้เลือกที่เซฟ ถ้าทดลองเขียนก็กด Local Object ไป ที่ผมทดลองคือแบบ Local Object</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap6.bmp"><img class="alignnone size-full wp-image-3497" title="sap6" src="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap6.bmp" alt="" /></a></p>
<p>ก็จะมาถึงหน้า activate กด คลิกที่สี่เหลียมๆ ข้างหน้าให้หมดแล้วกดเครื่องหมายถูก</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap7.bmp"><img class="alignnone size-full wp-image-3499" title="sap7" src="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap7.bmp" alt="" /></a></p>
<p>ก็จะได้ domain มาแล้ว หนึ่งตัว จากนั้นให้กด back(เป็นรูปลูกศรสีขาวในวงกลมชี้ไปทางซ้าย) กลับไปหน้าที่ใช้สร้าง domain อีกครั้ง คราวนี้เราจะมาสร้าง Data Type กัน คลิกช่อง Data Type จากนั้นตั้งชื่อโดยชื่อต้องนำหน้าด้วย Z, Y ควรจะตั้งชื่อเดียวกับ domain เพื่อความง่าย</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap8.bmp"><img class="alignnone size-full wp-image-3500" title="sap8" src="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap8.bmp" alt="" /></a></p>
<p>จากนั้นเลือกชนิดที่ต้องการใช้ ซึ่งผมเลือก Data Element</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap9.bmp"><img class="alignnone size-full wp-image-3501" title="sap9" src="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap9.bmp" alt="" /></a></p>
<p>จากนั้นคลิกที่เครื่องหมายถูก</p>
<p>จะเข้าหน้าต่อมาให้กรอกขอมูลโดย<br />
1.ใส่ short description<br />
2.ใส่ Domain ที่เราสร้างไปเมื่อครู่นี้ จากนั้นกดปุ่ม Enter บนคีบอร์ด โปรแกรมจะทำการ gen ขอมูลให้เอง</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap10.bmp"><img class="alignnone size-full wp-image-3503" title="sap10" src="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap10.bmp" alt="" /></a></p>
<p>จากนั้นก็เลื่อนไปที่ tab Field Label กรอก Feild Label ลงไปและใส่ Legth ตามจำนวนตัวอักษรของ Feild Label แล้วก็กด Activate เลยครับ</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap11.bmp"><img class="alignnone size-full wp-image-3504" title="sap11" src="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap11.bmp" alt="" /></a></p>
<p>แล้ว Activate ตามขั้นตอนเดิมข้างบน (เซฟเป็น Local Object และเลือก activate ทั้งหมด) จากนั้นกด back กลับมา</p>
<p>ตรงนี้ใครจะสร้างอีกกี่ Domain ก็ทำตามสบายเลยนะครับ เมื่อทำเสร็จแล้วก็ถึงการสร้างตารางแล้วครับ กดที่ Database Table ตั้งชื่อโดยมี Z หรือ Y นำหน้าจากนั้นกด create</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap12.bmp"><img class="alignnone size-full wp-image-3505" title="sap12" src="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap12.bmp" alt="" /></a></p>
<p>จากนั้นก็กรอกข้อมูลใน tab Delivery and Mentenance ให้เสร็จโดย</p>
<p>1.กรอก Short Description<br />
2.เลือกชนิดของ Delivery ซึ่งจะมีหลายประเภท</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap14.bmp"><img class="alignnone size-full wp-image-3506" title="sap14" src="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap14.bmp" alt="" /></a></p>
<p>แต่ในที่นี้ผมเลือกชนิด A ครับ<br />
3.เลือกการเข้าถึงของผู้ใช้ว่าจะอนุญาติรึป่าว? ผมเลือก Display/Maintenance Allowed</p>
<p>เสร็จแลวเลื่อนไปที่ tab Fields เพื่อกรอก Field ต่างๆ คอลัมม์ Field ให้กรอกชื่อของ Field นั้นๆ ถ้าเป็น Key หรือให้ Initial Velues ก็ให้ติ๊กถูกในช่อง ส่วน Data Element ให้ใส่ Data Type ที่เราสร้างเมื่อกี้</p>
<p>Field แรกที่บังคับกรอก Field &gt; mandt ให้ติ๊กในช่อง Key และ Initial Velues ด้วย สุดท้าย Data Element&gt; mandt เมื่อกรอก Data Element เสร็จให้กด Enter บนแป้นพิมพ์ทุกครั้ง</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap15.bmp"><img class="alignnone size-full wp-image-3507" title="sap15" src="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap15.bmp" alt="" /></a></p>
<p>เมื่อกรอกเสร็จให้กดที่ปุ่ม Technical Setting จากนั้นให้เลือกชนิดของ Data Class ตามต้องการ ใส่ Category Size เป็น 0</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap16fix.bmp"><img class="alignnone size-full wp-image-3510" title="sap16fix" src="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap16fix.bmp" alt="" /></a></p>
<p>มีอยู่หลายอย่าง ในที่นี้เลือก APPLO</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap17.bmp"><img class="alignnone size-full wp-image-3509" title="sap17" src="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap17.bmp" alt="" /></a></p>
<p>จากนั้นกด back กลับมาแล้วกด Activate ในหน้าการสร้าง Table และทำการ Activate ควรจะไม่มี error อะไรในหน้า log</p>
<p>จากในไปที่ menu Utilities &gt; Table Maintenance Generator</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap18.bmp"><img class="alignnone size-full wp-image-3511" title="sap18" src="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap18.bmp" alt="" /></a></p>
<p> จากนั้นก็กรอกโดย</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap19fix.bmp"><img class="alignnone size-full wp-image-3514" title="sap19fix" src="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap19fix.bmp" alt="" /></a><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap19.bmp"></a></p>
<p>1. เลือก Authorization Group จาก list ซึ่งมีเยอะมากกกก ขอไม่เอารูปมาให้ดู ถ้าไม่ต้องการให้ Authorize ก็ให้เลือก อันแรก &amp;NC&amp;</p>
<p>2. ควรใส่ชื่อเดียวกับ Table/View เพื่อความสะดวก</p>
<p>3.พี่เค้าบอกว่าถ้าข้อมูลไม่เยอะมากให้ใช้แบบ sone step แต่ถ้าเยอะก็ two step ผมใช้ one step ครับ</p>
<p>4.ใส่ Overview Screen เป็น 1</p>
<p>5. จากนั้นกด Create ที่เป็นรูปกระดาษสีขาวอยู่ข้างบนนะครับ แล้วก็จัดการเซฟลง Local Object ซะ</p>
<p>เสร็จแล้วก็กด back ออกมาหน้าแรกสุดแล้วพิมพ์ se93 ข้างบนแล้วกด enter บนแป้นพิมพ์</p>
<p>แล้วก็กรอก Transaction Code โดยต้องนำหน้าชื่อด้วย Z หรือ Y</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap20.bmp"><img class="alignnone size-full wp-image-3515" title="sap20" src="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap20.bmp" alt="" /></a></p>
<p>กรอก short text และเลือก Start Object ที่ต้องการ ที่นี้ผมเลือก Transaction with parameters(parameter transaction)</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap21.bmp"><img class="alignnone size-full wp-image-3516" title="sap21" src="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap21.bmp" alt="" /></a></p>
<p>จากนั้นก็คลิ๊กไอคอนรูปเครื่องหมายถูก จากนั้นก็กรอกขอมูลและติ๊กหน้าช่องตามนี้</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap221.bmp"><img class="alignnone size-full wp-image-3518" title="sap22" src="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap221.bmp" alt="" /></a></p>
<p>name of screen field อันแรกให้ใส่ viewname โดยมี value ตามชื่อ table ที่เราสร้างขึ้นมาเมื่อครู่<br />
ส่วนอันที่สองให้ใส่ uadate และมี value เป็น X แล้วก็จัดการ save</p>
<p>จากนั้นให้ back ออกมาให้อยู่หน้าแรกเลยแล้วพิมพ์ใส่ช่องบน sm30 จากนั้นกด enter บนแป้นพิมพ์</p>
<p>จะออกมาอีกหน้าหนึ่งซึ่งไว้ใช้เพิ่มข้อมูลใน field โดยให้กรอกช่อง table/view ด้วยชื่อตารางที่เราสร้างไว้และกด Maintain</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap23.bmp"><img class="alignnone size-full wp-image-3519" title="sap23" src="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap23.bmp" alt="" /></a></p>
<p>แล้วก็ถ้าจะเพิ่มข้อมูลก็กด new entry และก็กรอกข้อมูลแล้วกดเซฟก็จบแล้วครับ</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap24.bmp"><img class="alignnone size-full wp-image-3520" title="sap24" src="http://blog.pupasoft.com/wp-content/uploads/2010/04/sap24.bmp" alt="" /></a></p>
<p>เฮ้อออ ยาวเวอร์ ในที่สุดก็ได้ข้อมูลในตารางDB เรียบร้อยแล้วนะครับ ช่างยากเย็นเสียจริง</p>
<p>พี่ฝึกงานบอกว่าค่าเรียนตรงเนี๊ยราคาเป็นล้านเลยทีเดียว เห่อะๆ อะไรจะแพงขนาดนั้นนน</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pupasoft.com/2010/04/27/chowwoyzzhow-to-create-db-in-sap/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Create blog and use Rich Editor in Groovy on Grails (grails-ui plugin)</title>
		<link>http://blog.pupasoft.com/2010/02/22/create-blog-and-use-rich-editor-in-groovy-on-grails-grails-ui-plugin/</link>
		<comments>http://blog.pupasoft.com/2010/02/22/create-blog-and-use-rich-editor-in-groovy-on-grails-grails-ui-plugin/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 12:05:22 +0000</pubDate>
		<dc:creator>Emperor_bear</dc:creator>
				<category><![CDATA[Groovy on Grails]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.pupasoft.com/?p=3450</guid>
		<description><![CDATA[สวัสดีครับล วันนี้เรามาลองสร้าง blog และเอา plug in  บางตัวมาใช้ในโปรเจค Groovy on Grails กันนะ
Example


ก่อนอื่นเลยให้เราสร้าง Groovy on Grails ใหม่ใน NetBeans ชื่อว่า my_blog ละกันนะ
ใครทำไม่เป็นดูตามลิ้งนี้เลยนะ CLICK!!!
เมื่อทำเสร็จแล้วก็มาสร้าง blog กัน ก่อนอื่นเลยเรามาสร้าง domain ที่ชื่อว่า blog ก่อน ให้มันอยู่ใน blogger package ละกันนะ
create domain

give domain name

เราก็จะได้ domain ที่ชื่อว่า blog มาแล้ว
หลังจากนั้นให้เราไปแก้ไฟล์ ใน grails-app/domain/blogger/Blog.groovy

class Blog &#123;
static constraints = &#123;
      title&#40;blank:false&#41;
    [...]]]></description>
			<content:encoded><![CDATA[<p>สวัสดีครับล วันนี้เรามาลองสร้าง blog และเอา plug in  บางตัวมาใช้ในโปรเจค Groovy on Grails กันนะ</p>
<p>Example</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/02/rich_editor_example.png"><img class="alignnone size-full wp-image-3451" title="rich_editor_example" src="http://blog.pupasoft.com/wp-content/uploads/2010/02/rich_editor_example.png" alt="" width="592" height="214" /></a></p>
<p><span id="more-3450"></span></p>
<p>ก่อนอื่นเลยให้เราสร้าง Groovy on Grails ใหม่ใน NetBeans ชื่อว่า my_blog ละกันนะ</p>
<p>ใครทำไม่เป็นดูตามลิ้งนี้เลยนะ <a title="การสร้าง project" href="http://blog.pupasoft.com/2009/11/25/aeronzgroovy-on-grails-hello-world-with-netbeans/">CLICK!!!</a></p>
<p>เมื่อทำเสร็จแล้วก็มาสร้าง blog กัน ก่อนอื่นเลยเรามาสร้าง domain ที่ชื่อว่า blog ก่อน ให้มันอยู่ใน blogger package ละกันนะ</p>
<p><em>create domain</em></p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/02/new_domain.png"><img class="alignnone size-thumbnail wp-image-3452" title="new_domain" src="http://blog.pupasoft.com/wp-content/uploads/2010/02/new_domain-150x150.png" alt="" width="150" height="150" /></a></p>
<p><em>give domain name</em></p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/02/fill_domain_name.png"><img class="alignnone size-thumbnail wp-image-3454" title="fill_domain_name" src="http://blog.pupasoft.com/wp-content/uploads/2010/02/fill_domain_name-150x124.png" alt="" width="150" height="124" /></a></p>
<p>เราก็จะได้ domain ที่ชื่อว่า blog มาแล้ว</p>
<p>หลังจากนั้นให้เราไปแก้ไฟล์ ใน grails-app/domain/blogger/Blog.groovy</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">class</span> Blog <span style="color:#006600; font-weight:bold;">&#123;</span>
static constraints = <span style="color:#006600; font-weight:bold;">&#123;</span>
      title<span style="color:#006600; font-weight:bold;">&#40;</span>blank:<span style="color:#0000FF; font-weight:bold;">false</span><span style="color:#006600; font-weight:bold;">&#41;</span>
      body<span style="color:#006600; font-weight:bold;">&#40;</span>widget:<span style="color:#996600;">&quot;textarea&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#006600; font-weight:bold;">&#125;</span>
      <span style="color:#CC0066; font-weight:bold;">String</span> title
      <span style="color:#CC0066; font-weight:bold;">String</span> body
<span style="color:#006600; font-weight:bold;">&#125;</span></pre></div></div>

<p>เมื่อเราได้ Domain ก็ต้องมาสร้างส่วนของ Controller กับ View แต่ด้วยความขี้เกียจเราจึงใช้ Function การ generate ใน groovy กัน มันจะ gen ให้หมดเลยโดยดูจาก domain</p>
<p>ให้เราคลิกขวาที่ชื่อ project เรา แล้วเลือก Run Grails Command</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/02/go_to_Run_Grail_command.png"><img class="alignnone size-thumbnail wp-image-3460" title="go_to_Run_Grail_command" src="http://blog.pupasoft.com/wp-content/uploads/2010/02/go_to_Run_Grail_command-150x150.png" alt="" width="150" height="150" /></a></p>
<p>เราจะเจอหน้าต่างใหม่โผล่ขึ้นมา ทีนี้เราก็เติมคำในช่องว่างกัน</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/02/generate_all.png"><img class="alignnone size-thumbnail wp-image-3461" title="generate_all" src="http://blog.pupasoft.com/wp-content/uploads/2010/02/generate_all-150x150.png" alt="" width="150" height="150" /></a></p>
<p>ในช่อง filter ปล่อยว่างไป</p>
<p>ส่วนของ parameter เราก็ใส่ ชื่อpackage.ชื่อdomain ในที่นี้ blogger.Blog</p>
<p>ใน Matching Task เป็นส่วนที่ให่เราเลือกว่าเราจะใช้ฟังก์ชันอะไร เราต้องการ generate-all ก็เลือกมันซะ</p>
<p>แล้วก็คลิกที่ Run ดู มันจะมีตัววิ่งวืดๆ เต็มเลยรอซักพักนะ ก็จะเป็นอันเสร็จ</p>
<p>รัน project เราดู คลิกขวาที่ชื่อ project แล้วเลือก Run</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/02/run_project.png"><img class="alignnone size-thumbnail wp-image-3463" title="run_project" src="http://blog.pupasoft.com/wp-content/uploads/2010/02/run_project-150x150.png" alt="" width="150" height="150" /></a></p>
<p>ซักพักมันก็จะขึ้น web browser มา</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/02/first_web_page.png"><img class="alignnone size-thumbnail wp-image-3464" title="first_web_page" src="http://blog.pupasoft.com/wp-content/uploads/2010/02/first_web_page-150x150.png" alt="" width="150" height="150" /></a></p>
<p>เลือก blogger.BlogController</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/02/next_page.png"><img class="alignnone size-thumbnail wp-image-3465" title="next_page" src="http://blog.pupasoft.com/wp-content/uploads/2010/02/next_page-150x150.png" alt="" width="150" height="150" /></a></p>
<p>มาสร้าง blog ใหม่ โดยเลือกที่ New Blog</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/02/fillblog.png"><img class="alignnone size-thumbnail wp-image-3467" title="fillblog" src="http://blog.pupasoft.com/wp-content/uploads/2010/02/fillblog-150x150.png" alt="" width="150" height="150" /></a></p>
<p>ทีนี้เราก็เห็นแล้วผลลัพธ์ของ code ที่เราได้พิมพ์ไปตอนต้น</p>
<p>ลองใส่ข้อความแล้วกด create สิ</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/02/show_part.png"><img class="alignnone size-thumbnail wp-image-3468" title="show_part" src="http://blog.pupasoft.com/wp-content/uploads/2010/02/show_part-150x150.png" alt="" width="150" height="150" /></a></p>
<p>ได้ผลลัพธ์หน้าตาอย่างนี้ ที่นี้เพิ่มความเล้าใจมาอีกนิดนึง เราจะมาลองใช้ plug in ที่มีชื่อว่า grails-ui ซึ่งมีความสามารถหลายๆ อย่างไปดูเอาเองนะ แต่มีอย่างนึงคือ Rich Editor ที่เพิ่มอุปกรณืในการตกแต่งข้อความดังตัวอย่างบนสุด เริ่มกันเลย กลับมาที่ project เรา ให้เราคลิกขวาที่ชื่อ project แล้วเลือก Grails Plugins&#8230;</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/02/choose_grails_plugin.png"><img class="alignnone size-thumbnail wp-image-3469" title="choose_grails_plugin" src="http://blog.pupasoft.com/wp-content/uploads/2010/02/choose_grails_plugin-150x150.png" alt="" width="150" height="150" /></a></p>
<p>แล้วมันจะขึ้นหน้าต่างใหม่มา ให้เราเลือกแทบ New Plugins มันจะโหลดข้อมูลมาแปปนึง ต่อเน็ทด้วยนะตอนนี้</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/02/new_plugins_wait.png"><img class="alignnone size-thumbnail wp-image-3470" title="new_plugins_wait" src="http://blog.pupasoft.com/wp-content/uploads/2010/02/new_plugins_wait-150x150.png" alt="" width="150" height="150" /></a></p>
<p>ทีนี้มันจะมี plugin ให้เราเลือกเต็มเลย</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/02/new_plugins_choosse.png"><img class="alignnone size-thumbnail wp-image-3471" title="new_plugins_choosse" src="http://blog.pupasoft.com/wp-content/uploads/2010/02/new_plugins_choosse-150x150.png" alt="" width="150" height="150" /></a></p>
<p>เราจะใช้ grails-ui ก็เลือกมันซะ แล้วกด install จะโหลดข้อมูลมารอซักพักนะ</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/02/install_plugin_success.png"><img class="alignnone size-thumbnail wp-image-3472" title="install_plugin_success" src="http://blog.pupasoft.com/wp-content/uploads/2010/02/install_plugin_success-150x150.png" alt="" width="150" height="150" /></a></p>
<p>หลังจากนั้น plugin ก็ถูกนำเข้ามาใส่ใน project เราและ ถ้าสำเร็จก็จะได้เหมือนรูปบนนะ</p>
<p>ทีนี้ไปที่ grails-app/views/blog/create.gps เปิดไฟล์นี้ออกมา ถ้าเป็น NetBeans มันจะ generate code รกรุงรังมั่วตั้วมากมาย ให้เราไปแก้ตรงส่วนนี้นะลองหาดู ตามรูป</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/02/before_edit.png"><img class="alignnone size-thumbnail wp-image-3473" title="before_edit" src="http://blog.pupasoft.com/wp-content/uploads/2010/02/before_edit-150x150.png" alt="" width="150" height="150" /></a></p>
<p>ให้แก้ตาม code ต่อไปนี้นะ<br />
<a href="http://blog.pupasoft.com/wp-content/uploads/2010/02/edit_gps.png"><img class="alignnone size-thumbnail wp-image-3478" title="edit_gps" src="http://blog.pupasoft.com/wp-content/uploads/2010/02/edit_gps-150x76.png" alt="" width="150" height="76" /></a><br />
ลองรัน project ดู จะเห็นได้ว่ามี text editor มาให้เราและ ลองเล่นดูนะ</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/02/got_text_edit_tool.png"><img class="alignnone size-thumbnail wp-image-3480" title="got_text_edit_tool" src="http://blog.pupasoft.com/wp-content/uploads/2010/02/got_text_edit_tool-150x150.png" alt="" width="150" height="150" /></a></p>
<p>เมื่อเรากด create มันจะเป็น ดังรูป</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/02/after_create2.png"><img class="alignnone size-thumbnail wp-image-3484" title="after_create2" src="http://blog.pupasoft.com/wp-content/uploads/2010/02/after_create2-150x150.png" alt="" width="150" height="150" /></a></p>
<p>เวรกรรม tag html ต่างๆ มันมาได้เยี่ยงไร แล้วเราจะแก้ยังไง ง่ายมากครับ ให้เราไปที่ grails-app/views/blog/show.gps แล้วไปดูหาตำแหน่งนี้นะ</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/02/edit_position.png"><img class="alignnone size-thumbnail wp-image-3482" title="edit_position" src="http://blog.pupasoft.com/wp-content/uploads/2010/02/edit_position-150x122.png" alt="" width="150" height="122" /></a></p>
<p>แล้วแก้ตามนี้นะครับ</p>
<p>&lt;td&gt;${blogInstance.body}&lt;/td&gt;</p>
<p>แล้วลอง refresh หน้า webpage เราครับ ก็จะได้มาแล้ว</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/02/successful.png"><img class="alignnone size-thumbnail wp-image-3485" title="successful" src="http://blog.pupasoft.com/wp-content/uploads/2010/02/successful-150x150.png" alt="" width="150" height="150" /></a></p>
<p>มันยังมีให้แก้อีก 2 3 จุด ลองเข้าไปดูในพวก edit.gsp กับ list.gsp นะ วิธีแก้คล้ายด้านบนอ่ะ</p>
<p>จบ</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pupasoft.com/2010/02/22/create-blog-and-use-rich-editor-in-groovy-on-grails-grails-ui-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>aErOnz`Can&#8217;t convert value ‘0000-00-00 00:00:00′ to TIMESTAMP</title>
		<link>http://blog.pupasoft.com/2010/01/27/aeronzcant-convert-value-%e2%80%980000-00-00-000000%e2%80%b2-to-timestamp/</link>
		<comments>http://blog.pupasoft.com/2010/01/27/aeronzcant-convert-value-%e2%80%980000-00-00-000000%e2%80%b2-to-timestamp/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 09:00:20 +0000</pubDate>
		<dc:creator>aErOnz`</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Programming Tips]]></category>

		<guid isPermaLink="false">http://blog.pupasoft.com/?p=3447</guid>
		<description><![CDATA[
java.sql.SQLException: Cannot convert value &#8216;0000-00-00 00:00:00&#8242; from column 7 to TIMESTAMP.
..

หากใครเคยเจอปัญหานี้ ตามมาทางนี้เลยครับ ผมมีคำตอบ

การแก้ปัญหานี้มีสองวิธีคือ
1. ไปเซ็ตค่า URL ในการติดต่อ database ว่า ?zeroDateTimeBehavior=convertToNull เช่น
jdbc:mysql://localhost/test?zeroDateTimeBehavior=convertToNull
2. ในขณะที่เราเขียนโปรแกรม (ภาษา Java)ในการติดต่อ database ให้เราเซ็ต Connection Properties ดังนี้

Class.forName&#40;driver&#41;.newInstance&#40;&#41;;
connection = &#40;Connection&#41; DriverManager.getConnection&#40;url + dbName, userName, password&#41;;
connection.setZeroDateTimeBehavior&#40;&#34;convertToNull&#34;&#41;;

ทีนี้เมื่อเรารันโค้ด ที่ทำให้เกิด Exception ดังกล่าว

System.out.println&#40;&#34;&#62;&#62;&#62;&#62; this is zero = &#34;+rs.getTimestamp&#40;&#34;finish_date&#34;&#41;&#41;;

จะได้ผลลัพธ์เป็น

>>>> this is zero = null

หรือถ้าเป็น

connection.setZeroDateTimeBehavior&#40;&#34;round&#34;&#41;;

จะได้ผลลัพธ์เป็น 

>>>> this is zero = 0001-01-01 00:00:00.0

ซึ่งการเซ็ต [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>
java.sql.SQLException: Cannot convert value &#8216;0000-00-00 00:00:00&#8242; from column 7 to TIMESTAMP.<br />
..
</p></blockquote>
<p>หากใครเคยเจอปัญหานี้ ตามมาทางนี้เลยครับ ผมมีคำตอบ<br />
<span id="more-3447"></span></p>
<p>การแก้ปัญหานี้มีสองวิธีคือ<br />
1. ไปเซ็ตค่า URL ในการติดต่อ database ว่า ?zeroDateTimeBehavior=convertToNull เช่น</p>
<blockquote><p>jdbc:mysql://localhost/test?zeroDateTimeBehavior=convertToNull</p></blockquote>
<p>2. ในขณะที่เราเขียนโปรแกรม (ภาษา Java)ในการติดต่อ database ให้เราเซ็ต Connection Properties ดังนี้</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">Class</span>.<span style="color: #006633;">forName</span><span style="color: #009900;">&#40;</span>driver<span style="color: #009900;">&#41;</span>.<span style="color: #006633;">newInstance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
connection <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Connection</span><span style="color: #009900;">&#41;</span> <span style="color: #003399;">DriverManager</span>.<span style="color: #006633;">getConnection</span><span style="color: #009900;">&#40;</span>url <span style="color: #339933;">+</span> dbName, userName, password<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
connection.<span style="color: #006633;">setZeroDateTimeBehavior</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;convertToNull&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>ทีนี้เมื่อเรารันโค้ด ที่ทำให้เกิด Exception ดังกล่าว</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;&gt;&gt;&gt;&gt; this is zero = &quot;</span><span style="color: #339933;">+</span>rs.<span style="color: #006633;">getTimestamp</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;finish_date&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>จะได้ผลลัพธ์เป็น</p>
<blockquote><p>
>>>> this is zero = null
</p></blockquote>
<p>หรือถ้าเป็น</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">connection.<span style="color: #006633;">setZeroDateTimeBehavior</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;round&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>จะได้ผลลัพธ์เป็น </p>
<blockquote><p>
>>>> this is zero = 0001-01-01 00:00:00.0
</p></blockquote>
<p>ซึ่งการเซ็ต zeroDateTimeBahavior สามารถดูรายละเอียดได้ <a href="http://org.ntnu.no/musikkensverden/doc/constant-values.html#com.mysql.jdbc.ConnectionProperties.ZERO_DATETIME_BEHAVIOR_ROUND">ที่นี่</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pupasoft.com/2010/01/27/aeronzcant-convert-value-%e2%80%980000-00-00-000000%e2%80%b2-to-timestamp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>aErOnz`Atomic transaction with ActiveRecord</title>
		<link>http://blog.pupasoft.com/2010/01/21/aeronzatomic-transaction-with-activerecord/</link>
		<comments>http://blog.pupasoft.com/2010/01/21/aeronzatomic-transaction-with-activerecord/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 06:49:09 +0000</pubDate>
		<dc:creator>aErOnz`</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Programming Tips]]></category>
		<category><![CDATA[Ruby On Rails]]></category>
		<category><![CDATA[Web Development]]></category>
<category>Atomic Transaction ActiveRecord</category>
		<guid isPermaLink="false">http://blog.pupasoft.com/?p=3441</guid>
		<description><![CDATA[สวัสดีครับ วันนี้จะมาพูดถึงเรื่อง Transaction ว่ามันคืออะไรกัน แล้วมันสำคัญอย่างไรกับชีวิตนักพัฒนาโปรแกรมของเรากัน
สมมติว่า นาย aeronz มีเงินในบัญชีอยู่ 2000 บาท และต้องการจะโอนเงินให้นาย Porza 500บาท (ในการดำเนินการใดๆ ซึ่งที่นี้คือการโอนเงิน จะเรียกว่า 1 transaction ครับ)
โดยในขณะนั้นบัญชีของนาย Porza มีเงินอยู่ 0 บาท
ขั้นตอนการโอนเงินก็คือ
1. หักเงินจากบัญชีนาย aeronz 500 บาท (เหลือ 1500 บาท)
2. เพิ่มเงินให้นาย Porza 500 บาท (ยอดบัญชีนาย Porza จะเป็น 500 บาท)
จะเกิดอะไรขึ้น ถ้า พอระบบทำขั้นตอนที่ 1 เสร็จสิ้นแล้ว แต่ยังไม่ทันที่จะทำขั้นที่ 2 ระบบเกิดมีปัญหาขึ้นมา
หากไม่ได้รับมือกับปัญหานี้ ผลที่เกิดขึ้น คือ
เงินบัญชีนาย aeronz เหลือ 1500 บาท เงินในบัญชีนาย Porza คือ [...]]]></description>
			<content:encoded><![CDATA[<p>สวัสดีครับ วันนี้จะมาพูดถึงเรื่อง Transaction ว่ามันคืออะไรกัน แล้วมันสำคัญอย่างไรกับชีวิตนักพัฒนาโปรแกรมของเรากัน<br />
สมมติว่า นาย aeronz มีเงินในบัญชีอยู่ 2000 บาท และต้องการจะโอนเงินให้นาย Porza 500บาท (ในการดำเนินการใดๆ ซึ่งที่นี้คือการโอนเงิน จะเรียกว่า 1 transaction ครับ)<br />
โดยในขณะนั้นบัญชีของนาย Porza มีเงินอยู่ 0 บาท<br />
ขั้นตอนการโอนเงินก็คือ<br />
1. หักเงินจากบัญชีนาย aeronz 500 บาท (เหลือ 1500 บาท)<br />
2. เพิ่มเงินให้นาย Porza 500 บาท (ยอดบัญชีนาย Porza จะเป็น 500 บาท)</p>
<p>จะเกิดอะไรขึ้น ถ้า พอระบบทำขั้นตอนที่ 1 เสร็จสิ้นแล้ว แต่ยังไม่ทันที่จะทำขั้นที่ 2 ระบบเกิดมีปัญหาขึ้นมา<br />
หากไม่ได้รับมือกับปัญหานี้ ผลที่เกิดขึ้น คือ<br />
เงินบัญชีนาย aeronz เหลือ 1500 บาท เงินในบัญชีนาย Porza คือ 0 บาท </p>
<p>เราต้องทำยังไงหล่ะ ?<br />
ถ้าใครสนใจก็ตามเข้ามาเลยครับ<br />
<span id="more-3441"></span></p>
<p>จากบัญหาข้างต้น สิ่งที่ดีที่สุดที่เราจะทำก็คือหากเราทำ กระบวนการทั้งหมด (ทั้งข้อ 1 และ 2)ไม่สำเร็จ ระบบก็ควรที่จะไม่เปลี่ยนแปลงอะไรเลย<br />
คือ เงินบัญชีนาย aeronz เหลือ 2000 บาท เงินในบัญชีนาย Porza คือ 0 บาท เหมือนเดิม</p>
<p>เพราะฉะนั้น เวลาเราเขียนโปรแกรม หรือทำระบบที่มีการดำเนินการใดๆ (Transaction) เราต้องคำนึงถึงเรื่องนี้ไว้ด้วยครับ<br />
ในการย้อนกลับหากการดำเนินการไม่สำเร็จ เราจะเรียกว่าการ roll back ครับ ซึ่งใน ActiveRecord ของ ROR ก็มีการเขียนโค้ดเพื่อเตรียมป้องกันเหตุการเหล่านี้ดังนี้ครับ</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">aeronz = Account.<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>
porza = Account.<span style="color:#9900CC;">find</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">2</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
Account.<span style="color:#9900CC;">transaction</span> <span style="color:#9966CC; font-weight:bold;">do</span>
  aeronz.<span style="color:#9900CC;">withdrawal</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">500</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  porza.<span style="color:#9900CC;">deposit</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">500</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>หรือ</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">aeronz = Account.<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>
porza = Account.<span style="color:#9900CC;">find</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">2</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
<span style="color:#6666ff; font-weight:bold;">ActiveRecord::Base</span>.<span style="color:#9900CC;">transaction</span> <span style="color:#9966CC; font-weight:bold;">do</span>
  aeronz.<span style="color:#9900CC;">withdrawal</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">500</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  porza.<span style="color:#9900CC;">deposit</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">500</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>เพราะว่าโมเดลใน RoR มีการสืบทอดมาจาก คลาส ActiveRecord::Base ครับ</p>
<p>ครับ ตอนนี้เราก็ได้ concept ของ Transaction และวิธีการในการ RollBack ข้อมูล เมื่อเกิดปัญหาด้วย ActiveRecord ใน RoR กันแล้วนะครับ<br />
ถ้าใครสนใจ อาจจะไปอ่านเพิ่มเิติมได้ <a href="http://api.rubyonrails.org/classes/ActiveRecord/Transactions/ClassMethods.html#M001851">ที่นี่</a> ครับ<br />
ไว้เจอกันใหม่ครับ</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pupasoft.com/2010/01/21/aeronzatomic-transaction-with-activerecord/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>memset ในภาษาซี คืออะไรกันนะ?</title>
		<link>http://blog.pupasoft.com/2010/01/13/what_is_memset_command_in_cpp/</link>
		<comments>http://blog.pupasoft.com/2010/01/13/what_is_memset_command_in_cpp/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 14:40:38 +0000</pubDate>
		<dc:creator>p</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.pupasoft.com/?p=3439</guid>
		<description><![CDATA[เพื่อน ๆ พี่ ๆ น้อง ๆ เคยเบื่อกันใหมครับ เวลาต้อง set ค่าใน array แต่ละทีต้องใช้คำสั่ง แบบนี้
for(int i=0;i&#60;sizeofarray;i++){
array[i] = 0;
}
แถมต้องเซตทุกรอบที่วนกลับมาอีกต่างหาก ต้องวนไม่รู้กี่รอบ
วันนี้ผมจะเสนอวิธีใหม่ นั่นก็คือ การใช้คำสั่ง memset นั่นเอง
คำสั่ง memset อยู่ใน library ของ cstring หรือ string.h นั่นเอง
ซึ่งมีรูปแบบการใช้ดังนี้
memset(pointer to first element of array , value to set , size in bytes of array);
จากตัวอย่างข้างต้น เราจะเขียนง่ายๆ ได้ว่า
memset(array,0,sizeof(array));
เป็นไงครับ เหลือแค่บรรทัดเดียว แถมไม่ต้องเปลือง memory กับตัวแปร i ที่ใช้ในการวนอีกด้วย
]]></description>
			<content:encoded><![CDATA[<p>เพื่อน ๆ พี่ ๆ น้อง ๆ เคยเบื่อกันใหมครับ เวลาต้อง set ค่าใน array แต่ละทีต้องใช้คำสั่ง แบบนี้</p>
<blockquote><p>for(int i=0;i&lt;sizeofarray;i++){<br />
array[i] = 0;<br />
}</p></blockquote>
<p>แถมต้องเซตทุกรอบที่วนกลับมาอีกต่างหาก ต้องวนไม่รู้กี่รอบ<br />
วันนี้ผมจะเสนอวิธีใหม่ นั่นก็คือ การใช้คำสั่ง memset นั่นเอง</p>
<p><span id="more-3439"></span>คำสั่ง memset อยู่ใน library ของ cstring หรือ string.h นั่นเอง<br />
ซึ่งมีรูปแบบการใช้ดังนี้</p>
<p>memset(pointer to first element of array , value to set , size in bytes of array);</p>
<p>จากตัวอย่างข้างต้น เราจะเขียนง่ายๆ ได้ว่า<br />
memset(array,0,sizeof(array));</p>
<p>เป็นไงครับ เหลือแค่บรรทัดเดียว แถมไม่ต้องเปลือง memory กับตัวแปร i ที่ใช้ในการวนอีกด้วย</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pupasoft.com/2010/01/13/what_is_memset_command_in_cpp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dynamic Programming #3 Knapsack Problem in Programming</title>
		<link>http://blog.pupasoft.com/2010/01/07/dynamic-programming_3/</link>
		<comments>http://blog.pupasoft.com/2010/01/07/dynamic-programming_3/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 12:57:46 +0000</pubDate>
		<dc:creator>p</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.pupasoft.com/?p=3353</guid>
		<description><![CDATA[เอาละครับหลังจากอ่านทฤษฎีกันไปเยอะแล้ว เรามาลองของจริงดูบ้างดีกว่า
จากคราวที่แล้ว
สมมติให้ input เป็นดังนี้
5 10
8 3000
3 1600
6 2500
1 600
4 1900
โดยเลข 5 ตัวแรกหมายถึงจำนวน card และ 10 หมายถึงจำนวนดาวสูงสุดที่จะหยิบได้
5 บรรทัดถัดมาจะประกอบด้วย จำนวนดาวและพลังโจมตี ตามลำดับ

วิธีการทำ จะใช้ตารางมาช่วยนะครับ ก่อนอื่นสร้างตารางที่เมื่อไม่มีการ์ดใบใดถูกเลือกเลย

เลขที่อยู่ในแต่ละช่องของตารางก็คือพลังโจมที่ดีที่สุดเมื่อเลือกแล้วนะครับ
เราจะมาเริ่มหยิบการ์ดกันนะครับ
เริ่มทีละ column โดยที่ column แรกจะเป็นการทดลองหยิบการ์ดใบแรก Blue Eyes White Dragon 8 ดาว พลังโจมตี 3000
จะเห็นได้ว่า ช่้อง 1 ดาว หยิบบลูอายส์ไม่ไ้ด้นะครับ เพราะดาวเกิน จะหยิบได้ก็เมื่อถึงช่องแปดดาวแล้ว
ลองทำ column แรกจะได้ตารางแบบนี้

จะเห็นได้ว่า เมื่อเลือกหยิบบลูอายส์ใบเดียวแล้ว
เราจะได้ 1 ดาว 2 ดาว 3 ดาว &#8230;. 7 ดาว ที่มีพลังโจมตีมากที่สุดเป็น 0 เพราะไม่สามารถใส่บลูอายส์ลงไปได้
แต่ที่ช่อง 8 [...]]]></description>
			<content:encoded><![CDATA[<p>เอาละครับหลังจากอ่านทฤษฎีกันไปเยอะแล้ว เรามาลองของจริงดูบ้างดีกว่า</p>
<p>จาก<a href="http://blog.pupasoft.com/2010/01/07/dynamic-programming-2-knapsack-problem/">คราวที่แล้ว</a><br />
สมมติให้ input เป็นดังนี้<br />
5 10<br />
8 3000<br />
3 1600<br />
6 2500<br />
1 600<br />
4 1900</p>
<p>โดยเลข 5 ตัวแรกหมายถึงจำนวน card และ 10 หมายถึงจำนวนดาวสูงสุดที่จะหยิบได้<br />
5 บรรทัดถัดมาจะประกอบด้วย จำนวนดาวและพลังโจมตี ตามลำดับ<br />
<span id="more-3353"></span><br />
วิธีการทำ จะใช้ตารางมาช่วยนะครับ ก่อนอื่นสร้างตารางที่เมื่อไม่มีการ์ดใบใดถูกเลือกเลย<br />
<a href="http://blog.pupasoft.com/wp-content/uploads/2010/01/Dynamic2Table.jpg"></a><a href="http://blog.pupasoft.com/wp-content/uploads/2010/01/Dynamic2Table1.jpg"><img class="alignnone size-full wp-image-3366" title="Dynamic2Table" src="http://blog.pupasoft.com/wp-content/uploads/2010/01/Dynamic2Table1.jpg" alt="" width="567" height="250" /></a></p>
<p>เลขที่อยู่ในแต่ละช่องของตารางก็คือพลังโจมที่ดีที่สุดเมื่อเลือกแล้วนะครับ<br />
เราจะมาเริ่มหยิบการ์ดกันนะครับ<br />
เริ่มทีละ column โดยที่ column แรกจะเป็นการทดลองหยิบการ์ดใบแรก Blue Eyes White Dragon 8 ดาว พลังโจมตี 3000<br />
จะเห็นได้ว่า ช่้อง 1 ดาว หยิบบลูอายส์ไม่ไ้ด้นะครับ เพราะดาวเกิน จะหยิบได้ก็เมื่อถึงช่องแปดดาวแล้ว<br />
ลองทำ column แรกจะได้ตารางแบบนี้<br />
<a href="http://blog.pupasoft.com/wp-content/uploads/2010/01/Dynamic2Table2.jpg"><img class="alignnone size-full wp-image-3368" title="Dynamic2Table2" src="http://blog.pupasoft.com/wp-content/uploads/2010/01/Dynamic2Table2.jpg" alt="" width="449" height="217" /></a></p>
<p>จะเห็นได้ว่า เมื่อเลือกหยิบบลูอายส์ใบเดียวแล้ว<br />
เราจะได้ 1 ดาว 2 ดาว 3 ดาว &#8230;. 7 ดาว ที่มีพลังโจมตีมากที่สุดเป็น 0 เพราะไม่สามารถใส่บลูอายส์ลงไปได้<br />
แต่ที่ช่อง 8 9 10 จะเห็นได้ว่า เราได้เลือกบลูอายส์ ที่มีพลังโจมตี 3000</p>
<p>แล้วทำไมต้องมีเส้นสีน้ำเงิน??<br />
เรามาลองดูกันตอนทำไปสักสองแถวดู จะได้ตารางแบบนี้<br />
<a href="http://blog.pupasoft.com/wp-content/uploads/2010/01/Dynamic2Table3.jpg"><img class="alignnone size-full wp-image-3417" title="Dynamic2Table3" src="http://blog.pupasoft.com/wp-content/uploads/2010/01/Dynamic2Table3.jpg" alt="" width="449" height="217" /></a></p>
<p>พอถึงตอนนี้จะเห็นได้ว่า ถ้าเรามีการ์ดแค่สองใบ แต่ต้องการหยิบให้ได้<br />
ดาว        พลังโจมตีสูงสุด<br />
0             0<br />
1              0<br />
2             0<br />
3             1600<br />
.<br />
.<br />
8             3000<br />
9             3000<br />
10          3000</p>
<p>แล้วเส้นสีน้ำเงินล่ะ??<br />
สมมตินะครับ ถ้าเราต้องการหยิบ ให้ได้ 5 ดาว ที่ได้พลังโจมตีสูงที่สุด แต่การ์ดที่เราจะจับตอนนั้นมีแค่ 3 ดาว<br />
เราก็เอาพลังโจมตีของการ์ดที่เราจะหยิบ + พลังโจมตีที่ดีที่สุดของ 2 ดาว เราก็จะได้ การ์ดรวมห้าดาวที่มีพลังโจมตีสูงสุดแล้วจริงใหมครับ</p>
<p>ในกรณีนี้คือ ช่อง 8 ดาว เราเลือกหยิบบลูอายส์ซึ่งมี 8 ดาว เพราะฉะนั้น เราจะต้องหา 0 ดาวที่มีพลังโจมตีสูงที่สุดมาเติม<br />
(เป็นเหตุผลที่เราต้องตั้งค่าแถวแรกให้เป็นค่า 0 เนื่องจากหากเราเลือก 0 ดาวที่ดีที่สุด ค่าจะต้องเป็น 0)</p>
<p>เช่นเดียวกันกับช่อง 10 ดาว เราเลือกหยิบบลูอายส์ 8 ดาว เพราะฉะนั้น เราจะต้องหา 2 ดาวที่มีพลังโจมตีสูงที่สุดมาเติมแต่ 2 ดาวยังเป็น 0 อยู่เพราะเราเลือกหยิบบลูอายส์เป็นใบแรก<br />
(เป็นเหตุผลที่เราต้องตั้งค่า column แรกให้เป็นค่า 0 ซึ่งเป็นค่าน้อยที่สุดที่เป็นไปได้)</p>
<p>ใน column 2 ก็เช่นเดียวกัน เพียงแต่ที่ช่อง 8 ดาวให้เรานำไปเปรียบเทียบกับค่าพลังโจมตีที่ดีที่สุดอันเก่าแล้วพบว่า ต่อให้เราเอา พลังโจมตีของ ซอมบี้ดราก้อน กับ 5 ดาวที่พลังโจมตีสูงที่สุด (1600+0) ก็ยังน้อยกว่าพลังโจมตี 8 ดาวเก่าที่ได้ที่สุด ดังนั้นเราจึงเลือกพลังโจมตีเก่านั่นเอง</p>
<p>เรามาลองทำจนจบดูนะครับ จะได้ตารางดังนี้<br />
<a href="http://blog.pupasoft.com/wp-content/uploads/2010/01/Dynamic2Table4.jpg"><img class="alignnone size-full wp-image-3428" title="Dynamic2Table4" src="http://blog.pupasoft.com/wp-content/uploads/2010/01/Dynamic2Table4.jpg" alt="" width="449" height="217" /></a></p>
<p>จะเห็นได้ว่า เราสามารถบอกได้หมดเลย ว่า 1 ดาวที่ดีที่สุดพลังโจมตีเท่าไหร่ 2 ดาวที่มีพลังโจมตีสูงที่สุด &#8230;.<br />
จนถึงคำตอบของเรา 10 ดาวที่มีพลังโจมตีสูงที่สุด</p>
<p>บางคนอาจจะยังไม่เข้าใจ ให้ไล่ลองทำดูนะครับ ทีละขั้นตอน ผมจะสรุปขั้นตอนให้ดูง่ายๆ ละกัน<br />
1. สร้างตาราง จำนวนของ(N) x จำนวนสูงสุดของข้อจำกัด(ดาว)<br />
2. ที่ช่อง 0 ทั้งแนวนอนและแนวตั้ง ให้ตั้งค่าเป็นจำนวนที่น้อยที่สุดที่จะเป็นไปได้(ถ้าโจทย์ให้หาค่ามากที่สุดนะ)<br />
3. ที่ช่องใดๆ ถ้าแถวดาว มากกว่า ดาวของการ์ดที่เราหยิบ แปลว่าเราจะสามารถหยิบการ์ดนี้ได้<br />
4. นำพลังโจมตีของการ์ดที่เราหยิบ + ค่าที่(แถวบอกจำนวนดาว &#8211; ดาวของการ์ดที่เราหยิบ) ถ้าได้มากกว่า ค่าที่มากที่สุดของแถวเงื่อนไขนี้ ให้เปลี่ยนเป็นพลังโจมตีนั้นๆแทน<br />
5. ถ้าไม่ ให้เลือกพลังโจมตีที่ดีที่สุดอันเดิม</p>
<p>แหม พอใช้ภาษาพูดแล้วงงๆ ใช่ใหมล่ะ งั้นลองเป็น code ดูนะครับ<br />
<!--[if !mso]><br />
<mce:style><!  v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} p\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} v\:textbox {display:none;} --></p>
<p><!--[endif]--> <a href="http://blog.pupasoft.com/wp-content/uploads/2010/01/Dynamic2Table5.jpg"><img class="alignnone size-full wp-image-3429" title="Dynamic2Table5" src="http://blog.pupasoft.com/wp-content/uploads/2010/01/Dynamic2Table5.jpg" alt="" width="584" height="356" /></a></p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 157px; width: 1px; height: 1px;">
<table style="height: 149px;" dir="ltr" cellspacing="0" cellpadding="0" width="389">
<tbody>
<tr>
<td style="border: 3px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 3px 1px 3px 3px solid black;" width="36" height="38">
<div style="text-align: center;"><span lang="FR">1</span></div>
</td>
<td style="border: 3px 1px solid black;" width="36" height="38">
<div style="text-align: center;"><span lang="FR">2</span></div>
</td>
<td style="border: 3px 1px solid black;" width="36" height="38">
<div style="text-align: center;"><span lang="FR">3</span></div>
</td>
<td style="border: 3px 1px solid black;" width="36" height="38">
<div style="text-align: center;"><span lang="FR">4</span></div>
</td>
<td style="border: 3px 1px solid black;" width="36" height="38">
<div style="text-align: center;"><span lang="FR">5</span></div>
</td>
<td style="border: 3px 1px solid black;" width="36" height="38">
<div style="text-align: center;"><span lang="FR">6</span></div>
</td>
<td style="border: 3px 1px solid black;" width="36" height="38">
<div style="text-align: center;"><span lang="FR">7</span></div>
</td>
<td style="border: 3px 1px solid black;" width="36" height="38">
<div style="text-align: center;"><span lang="FR">8</span></div>
</td>
<td style="border: 3px 1px solid black;" width="36" height="38">
<div style="text-align: center;"><span lang="FR">9</span></div>
</td>
<td style="border: 3px 3px 3px 1px solid black;" width="36" height="38">
<div style="text-align: center;"><span lang="FR">10</span></div>
</td>
</tr>
<tr>
<td style="border: 3px 3px 1px solid black;" width="36" height="38">
<div style="text-align: center;"><span lang="FR">1</span></div>
</td>
<td style="border: 3px 1px 1px 3px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 3px 1px 1px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 3px 1px 1px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 3px 1px 1px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 3px 1px 1px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 3px 1px 1px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 3px 1px 1px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 3px 1px 1px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 3px 1px 1px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 3px 3px 1px 1px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
</tr>
<tr>
<td style="border: 1px 3px solid black;" width="36" height="38">
<div style="text-align: center;"><span lang="FR">2</span></div>
</td>
<td style="border: 1px 1px 1px 3px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 1px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 1px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 1px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 1px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 1px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 1px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 1px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 1px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 1px 3px 1px 1px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
</tr>
<tr>
<td style="border: 1px 3px 3px solid black;" width="36" height="38">
<div style="text-align: center;"><span lang="FR">3</span></div>
</td>
<td style="border: 1px 1px 3px 3px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 1px 1px 3px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 1px 1px 3px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 1px 1px 3px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 1px 1px 3px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 1px 1px 3px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 1px 1px 3px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 1px 1px 3px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 1px 1px 3px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
<td style="border: 1px 3px 3px 1px solid black;" width="36" height="38">䦋㌌㏒㧀좈໱琰茞ᓀ㵂Ü</td>
</tr>
</tbody>
</table>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.pupasoft.com/2010/01/07/dynamic-programming_3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ว่าด้วยเรื่องจำนวนและตัวเลข 2</title>
		<link>http://blog.pupasoft.com/2010/01/07/%e0%b8%a7%e0%b9%88%e0%b8%b2%e0%b8%94%e0%b9%89%e0%b8%a7%e0%b8%a2%e0%b9%80%e0%b8%a3%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b8%87%e0%b8%88%e0%b8%b3%e0%b8%99%e0%b8%a7%e0%b8%99%e0%b9%81%e0%b8%a5%e0%b8%b0%e0%b8%95/</link>
		<comments>http://blog.pupasoft.com/2010/01/07/%e0%b8%a7%e0%b9%88%e0%b8%b2%e0%b8%94%e0%b9%89%e0%b8%a7%e0%b8%a2%e0%b9%80%e0%b8%a3%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b8%87%e0%b8%88%e0%b8%b3%e0%b8%99%e0%b8%a7%e0%b8%99%e0%b9%81%e0%b8%a5%e0%b8%b0%e0%b8%95/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 12:26:49 +0000</pubDate>
		<dc:creator>mishell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.pupasoft.com/?p=3420</guid>
		<description><![CDATA[ว่าด้วยเรื่องจำนวนและตัวเลข 2 นะครับ

เก็บข้อมูลตัวแปร float จาก GNU Compiler Collection (GCC) รันบน 32bit Ubuntu based on IEEE 754
0.05;                0-01111010-10011001 10011001 1001101
0.005;              0-01110111-01000111 10101110 0001010
-20.812;           1-10000011-01001100 11111101 1111010
20.1234567;     0-10000011-01000001 11111001 1010111
20.12345678;    0-10000011-01000001 11111001 1010111
1.0;                  0-01111111-00000000 00000000 0000000
2.0;                  0-10000000-00000000 00000000 0000000
10.0;                0-10000010-01000000 00000000 0000000
0.1;         [...]]]></description>
			<content:encoded><![CDATA[<p>ว่าด้วยเรื่องจำนวนและตัวเลข 2 นะครับ</p>
<p><span id="more-3420"></span></p>
<p>เก็บข้อมูลตัวแปร float จาก GNU Compiler Collection (GCC) รันบน 32bit Ubuntu based on IEEE 754</p>
<p>0.05;                0-01111010-10011001 10011001 1001101<br />
0.005;              0-01110111-01000111 10101110 0001010<br />
-20.812;           1-10000011-01001100 11111101 1111010<br />
20.1234567;     0-10000011-01000001 11111001 1010111<br />
20.12345678;    0-10000011-01000001 11111001 1010111<br />
1.0;                  0-01111111-00000000 00000000 0000000<br />
2.0;                  0-10000000-00000000 00000000 0000000<br />
10.0;                0-10000010-01000000 00000000 0000000<br />
0.1;                  0-01111011-10011001 10011001 1001101<br />
0.2;                  0-01111100-10011001 10011001 1001101<br />
0.01;                0-01111000-01000111 10101110 0001010<br />
0.02;                0-01111001-01000111 10101110 0001010<br />
1.01;                0-01111111-00000010 10001111 0101110<br />
1.02;                0-01111111-00000101 00011110 1011100<br />
10.1;                0-10000010-01000011 00110011 0011010<br />
10.2;                0-10000010-01000110 01100110 0110011</p>
<table border="0">
<tbody>
<tr>
<th>Type</th>
<th>Sign</th>
<th>Exponent</th>
<th>Exponent  bias</th>
<th>significand</th>
<th>total</th>
</tr>
<tr>
<td align="center"><a title="Half precision" href="http://en.wikipedia.org/wiki/Half_precision">Half</a> (IEEE 754r)</td>
<td align="center">1</td>
<td align="center">5</td>
<td align="center">15</td>
<td align="center">10</td>
<td align="center">16</td>
</tr>
<tr>
<td align="center">Single</td>
<td align="center">1</td>
<td align="center">8</td>
<td align="center">127</td>
<td align="center">23</td>
<td align="center">32</td>
</tr>
<tr>
<td align="center">Double</td>
<td align="center">1</td>
<td align="center">11</td>
<td align="center">1023</td>
<td align="center">52</td>
<td align="center">64</td>
</tr>
<tr>
<td align="center">Quad</td>
<td align="center">1</td>
<td align="center">15</td>
<td align="center">16383</td>
<td align="center">112</td>
<td align="center">128</td>
</tr>
</tbody>
</table>
<p>ตารางจาก http://en.wikipedia.org/wiki/Floating_point</p>
<p><strong>Floating-Point Representation</strong></p>
<p>ตัวแปร float มีขนาด 4 ไบต์ หรือ 32 บิตจะแบ่งพื้นที่เพื่อเก็บข้อมูลแบบ ทศนิยมดังนี้</p>
<p><img src="http://fourier.eng.hmc.edu/e85/lectures/arithmetic_html/img332.png" border="0" alt="\framebox[0.4in]{S}" width="51" height="46" align="middle" /> <img src="http://fourier.eng.hmc.edu/e85/lectures/arithmetic_html/img333.png" border="0" alt="\framebox[0.8in]{E}" width="97" height="46" align="middle" /> <img src="http://fourier.eng.hmc.edu/e85/lectures/arithmetic_html/img334.png" border="0" alt="\framebox[2in]{M}" width="235" height="46" align="middle" /></p>
<p>S : Sing(1 บิต) เอาไว้เพื่่อบอกว่า ทศนิยมนั้นเป็นเลข ลบ หรือ บวก โดย บิต 0 คือ + , บิต 1 คือ -</p>
<p>E : Exponent(8 บิต) เป็นส่วนที่แสดง เลขยกกำลังเป็นได้ทั้งบวก และ ลบ</p>
<p>M : Mantissa(23 บิต) เป็นส่วนที่อยู่หลังจุดทศนิยม</p>
<p><strong>วิธีการเปลี่ยน ทศนิยม(float) ให้เป็นเลขฐานสอง</strong></p>
<p><strong>1. นำเลขที่ต้องการจะเปลี่ยนมาแปลงเป็นเลขฐานสอง</strong></p>
<p>เช่น 0.005<sub>10</sub> = 0.000000010100011110101110000101000111101011100001010001111011<sub>2</sub></p>
<p>(วิธีการแปลงนั้น ขอยกเป็นบทความถัดไปนะครับ)</p>
<p><strong>2. ทำ Normalization form (คือการทำให้อยู่ในรูป 1.AAA x 2<sup>B</sup>)</strong></p>
<p>จาก  0.005<sub>10</sub> = 0.000000010100011110101110000101000111101011100001010001111011<sub>2</sub></p>
<p>ทำเป็น  Normalization form ได้</p>
<p>1.0100011110101110000101000111101011100001010001111011 x 2<sup>-8</sup></p>
<p><strong>3. เลข Mantissa คือ เลขฐานสองที่อยู่หลังจุดทศนิยม</strong></p>
<p>จาก  1.0100011110101110000101000111101011100001010001111011 x 2<sup>-8</sup></p>
<p>Mantissa คือ  0100011110101110000101000111101011100001010001111011</p>
<p>แบ่งเป็น 8 bits ให้สวยงาม ก็จะได้</p>
<p><strong>01000111 10101110 00010100</strong> 0111101011100001010001111011</p>
<p>Mantissa มีขนาด 23 บิต เพราะฉะนั้น เราสนใจเพียง 24 บิตแรกเท่านั้น</p>
<p>ที่สนใจ 24 บิต ไม่ใช่ 23 บิต ก็เพราะว่า บิตตัวที่ 24 ถ้าเป็นบิต 1 ก็จะปัดขึ้นมา แต่ถ้าเป็นบิต 0 ก็ไม่ปัดนั่นเอง</p>
<p>(วิธีปัดนั้น ก็เหมือนกับการ บวกด้วย 1 แบบเลขฐานสองครับ)</p>
<p>เพราะฉะนั้น</p>
<p><strong>Mantissa =</strong> <strong>01000111 10101110 0001010</strong></p>
<p><strong>4. เลข Exponent คือเลขกำลัง</strong></p>
<p>จาก 1.0100011110101110000101000111101011100001010001111011 x 2<sup>-8</sup></p>
<p>Exponent หาได้จาก bias – true exponent</p>
<p>bias ของ float = 127</p>
<p>true exponent คือ -8 (เลขกำลัง ของ 2 นั่นเอง)</p>
<p>เพราะฉะนั้น จะได้</p>
<p>Exponent = 127<sub>10</sub> + (-8)<sub>10</sub> = 119<sub>10 </sub>ซึ่งเท่ากับ 1110111<sub>2</sub> และเนื่องจาก Exponent มีขนาด 8 บิต</p>
<p>แต่ Exponent ที่เราคำนวนได้นั้น มีเพียง 7 บิต แก้โดยการเติม บิต 0 ไปข้างหน้า จนครบ 8 บิต ดังนั้น</p>
<p>จะได้</p>
<p><strong>Exponent =</strong> <strong>01110111</strong></p>
<p><strong>5. รวม sign, exponent, mantissa เข้าด้วยกัน</strong></p>
<p>sign เป็น <strong>0</strong> เพราะ 0.005 เป็น บวก</p>
<p>exponent เป็น  <strong>01110111</strong></p>
<p>mantissa เป็น  <strong>01000111 10101110 0001010</strong></p>
<p>รวมกันจะได้  <strong>0 </strong><strong>01110111</strong><strong> </strong><strong>01000111 10101110 0001010</strong></p>
<p>อ้างอิงความรู้จาก<cite></cite></p>
<p><cite>www.cs.northwestern.edu/~fabianb/classes/eecs-213-s07/lectures/<strong>04</strong>-<strong>FloatingPoint</strong>.<strong>pps</strong></cite></p>
<p>http://www.cs.northwestern.edu/~fabianb/classes/</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pupasoft.com/2010/01/07/%e0%b8%a7%e0%b9%88%e0%b8%b2%e0%b8%94%e0%b9%89%e0%b8%a7%e0%b8%a2%e0%b9%80%e0%b8%a3%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b8%87%e0%b8%88%e0%b8%b3%e0%b8%99%e0%b8%a7%e0%b8%99%e0%b9%81%e0%b8%a5%e0%b8%b0%e0%b8%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ว่าด้วยเรื่องจำนวนและัตัวเลข 1</title>
		<link>http://blog.pupasoft.com/2010/01/07/3418/</link>
		<comments>http://blog.pupasoft.com/2010/01/07/3418/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 12:25:26 +0000</pubDate>
		<dc:creator>mishell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.pupasoft.com/2010/01/07/3418/</guid>
		<description><![CDATA[ว่าด้วยเรื่องจำนวนและัตัวเลข 1

ตัวเลขในคอมพิวเตอร์ ล้วนประกอบขึ้นด้วยเลขฐานสอง
เช่น  เลข 010 = 00000000 000000002
110 = 00000000 000000012
210 = 00000000 000000102
310 = 00000000 000000112
ไปจนถึง
6553510 = 11111111 111111112
การผสมกันของบิต 0 กับ 1 รูปแบบข้างบนนี้   เป็นการเก็บตัวเลข ของชนิดข้อมูล unsigned int ใน Turbo C++
ชนิดข้อมูล unsigned int นี้ คือ ชนิดข้อมูลที่เป็นตัวเลข ศูนย์และจำนวนเต็มบวก คือตั้งแต่ 0 จนถึง 65535
แต่ถ้าเป็นชนิดข้อมูลแบบ int จะเป็นชนิดข้อมูลที่เป็นตัวเลข ศูนย์ จำนวนเต็มบวก และจำนวนเต็มลบ คือ ตั้งแต่ -32768 จนถึง 32767
ทั้งข้อมูลชนิด unsigned int และ แบบ int จะสามารถเก็บตัวเลขได้ 65536 กรณีเท่ากัน
นั่นก็เพราะว่า [...]]]></description>
			<content:encoded><![CDATA[<p>ว่าด้วยเรื่องจำนวนและัตัวเลข 1</p>
<p><span id="more-3418"></span></p>
<p>ตัวเลขในคอมพิวเตอร์ ล้วนประกอบขึ้นด้วยเลขฐานสอง</p>
<p>เช่น  เลข 0<sub>10</sub> = 00000000 00000000<sub>2</sub></p>
<p>1<sub>10</sub> = 00000000 00000001<sub>2</sub></p>
<p>2<sub>10</sub> = 00000000 00000010<sub>2</sub></p>
<p>3<sub>10</sub> = 00000000 00000011<sub>2</sub></p>
<p>ไปจนถึง</p>
<p>65535<sub>10</sub> = 11111111 11111111<sub>2</sub></p>
<p>การผสมกันของบิต 0 กับ 1 รูปแบบข้างบนนี้   เป็นการเก็บตัวเลข ของชนิดข้อมูล unsigned int ใน Turbo C++</p>
<p>ชนิดข้อมูล <strong>unsigned int</strong> นี้ คือ ชนิดข้อมูลที่เป็นตัวเลข <strong>ศูนย์และจำนวนเต็มบวก</strong> คือตั้งแต่ 0 จนถึง 65535</p>
<p>แต่ถ้าเป็นชนิดข้อมูลแบบ <strong>int </strong>จะเป็นชนิดข้อมูลที่เป็นตัวเลข <strong>ศูนย์ จำนวนเต็มบวก และจำนวนเต็มลบ</strong> คือ ตั้งแต่ -32768 จนถึง 32767</p>
<p>ทั้งข้อมูลชนิด unsigned int และ แบบ int จะสามารถเก็บตัวเลขได้ 65536 กรณีเท่ากัน</p>
<p>นั่นก็เพราะว่า ชนิดข้อมูล unsigned int และ int ล้วนประกอบด้วย รูปแบบ 16 bits ซึ่งมีขนาด 2 bytes</p>
<p>และจำนวนที่สามารถเก็บข้อมูลไ้ด้ คือ 2<sup>16</sup> = 65536 ตัวเลข(ที่ไม่ซ้ำกัน)</p>
<p>ส่วนกรณีชนิดข้อมูลแบบ int ที่สามารถมีค่าเป็นจำนวน – ได้นั้น คอมพิวเตอร์จะมีวิธีเก็บข้อมูล ต่างจากแบบ unsigned int เล็กน้อย เพราะ บิต 0 และ 1 ไม่สามารถใส่เครื่องหมาย – ลงไปได้ ดังนั้นจึงมีวิธีเก็บข้อมูลแตกต่างออกไป</p>
<p>วิธีการก็มีดังนี้</p>
<p>1. แปลงเลขฐาน 10 ที่ต้องการเก็บ ไปเป็นเลขฐาน 2</p>
<p>2. กลับบิต จาก 0 เป็น 1     และ จาก 1 เป็น 0</p>
<p>3. นำไปบวกด้วย 1 แบบ ไบนารี</p>
<p>เช่น ต้องการเก็บค่า -32 ลงใน ตัวแปรชนิด int</p>
<p>เนื่องจาก 32<sub>10</sub> = 00000000 00100000<sub>2</sub></p>
<p>กลับบิต           -&gt;11111111 11011111<sub>2</sub></p>
<p>บวกด้วย 1       -&gt;11111111 11100000<sub>2</sub></p>
<p>มีค่าเท่ากับ 65504 ในรูปแบบตัวแปร unsigned int</p>
<p>แต่จะมีค่าเท่ากับ -32 ในรูปแบบตัวแปร int</p>
<p>หลักการคือ</p>
<p><strong>1</strong> 1111111     11100000<sub>2 </sub>= -32 (รูปแบบ int)</p>
<p>^ บิตตัวแรกสุด จะทำหน้าที่แยกตัวเลขนั้นๆ ว่า เป็นเครื่องหมาย + หรือ –    โดย ถ้าเป็น 0 คือ + , 1 คือ -</p>
<p>หลักการนี้ เรียกว่า two’s complement</p>
<p>แหล่งข้อมูล http://sot.swu.ac.th/CP341/lesson01/cs2t1.htm</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pupasoft.com/2010/01/07/3418/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to send sms from ror project?</title>
		<link>http://blog.pupasoft.com/2010/01/07/how-to-send-sms-from-ror-project/</link>
		<comments>http://blog.pupasoft.com/2010/01/07/how-to-send-sms-from-ror-project/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 11:48:07 +0000</pubDate>
		<dc:creator>on_the_way</dc:creator>
				<category><![CDATA[Ruby On Rails]]></category>

		<guid isPermaLink="false">http://blog.pupasoft.com/?p=3384</guid>
		<description><![CDATA[วันนี้นำวิธีการส่ง sms แบบชาวโปรแกรมเมอร์มาฝากกันคร๊ะ ก้อคือว่าแทนที่เราจะส่ง sms จากมือถือก้อเปลี่ยนเป้นเขียนโค้ดขึ้นมาเองแล้วส่งหา&#8230;.กันดีกว่ามั๊ยจ๊ะ
ดูเท่ส์ดีว่าป่ะ&#8230;อิอิ
เริ่มจาก&#8230;(เราใช้ ide netbeans น่ะ..มันง่ายดีน่ะ)
1. สมัคร account http://www.clickatell.com/developers/clickatell_api2.php และเพิ่ม http service ใน account ด้วยจากนั้นก้อจะได้ API key เก็บไว้ดีๆล่ะอันนี้สำคัญน่ะค่ะ
2. install gem=> clickatell
3. สร้างโมลเดล sms.rb เพิ่มโค้ดลงดังนี้
require &#8216;clickatell&#8217;
class SMS
  def initialize(config)
    @config = config
  end
  def create(recipient, message_text)
    api.send_message(recipient, message_text)
  end
  private
   [...]]]></description>
			<content:encoded><![CDATA[<p>วันนี้นำวิธีการส่ง sms แบบชาวโปรแกรมเมอร์มาฝากกันคร๊ะ ก้อคือว่าแทนที่เราจะส่ง sms จากมือถือก้อเปลี่ยนเป้นเขียนโค้ดขึ้นมาเองแล้วส่งหา&#8230;.กันดีกว่ามั๊ยจ๊ะ<br />
ดูเท่ส์ดีว่าป่ะ&#8230;อิอิ<span id="more-3384"></span><br />
เริ่มจาก&#8230;(เราใช้ ide netbeans น่ะ..มันง่ายดีน่ะ)<br />
1. สมัคร account http://www.clickatell.com/developers/clickatell_api2.php และเพิ่ม http service ใน account ด้วยจากนั้นก้อจะได้ API key เก็บไว้ดีๆล่ะอันนี้สำคัญน่ะค่ะ<br />
2. install gem=> clickatell<br />
3. สร้างโมลเดล sms.rb เพิ่มโค้ดลงดังนี้<br />
require &#8216;clickatell&#8217;</p>
<p>class SMS<br />
  def initialize(config)<br />
    @config = config<br />
  end</p>
<p>  def create(recipient, message_text)<br />
    api.send_message(recipient, message_text)<br />
  end</p>
<p>  private<br />
    def api<br />
      @api ||= Clickatell::API.authenticate(<br />
        @config[:api_key],<br />
        @config[:username],<br />
        @config[:password]<br />
      )<br />
    end<br />
end<br />
4. configuration=>environments=>product.rb เพิ่มโค้ดดังนี้<br />
CLICKATELL_CONFIG = YAML.load(File.open(File.join(RAILS_ROOT, &#8216;config&#8217;, &#8216;clickatell.yml&#8217;)))<br />
5. configuration=> clickatell.yml เพิ่มโค้ดดังนี้<br />
api_key: xxxxx<br />
username: mai<br />
password: xxxx<br />
6. configuration=> routes.rb เพิ่มโค้ดดังนี้<br />
ActionController::Routing::Routes.draw do |map|<br />
  map.resource :sms<br />
end<br />
7. หน้า view สร้างหน้าเวบที่ต้องการให้ผู้ใช้กรอกข้อมูลเพื่อส่ง sms ถึงผู้รับ<br />
<% form_tag '/sms', :method => :post do -%><br />
  <label>Enter the recipients mobile number:</label><br />
  <%= text_field_tag "recipient" %><br />
  <label>Enter your message:</label><br />
  <%= text_area_tag "message_text" %><br />
  <%= submit_tag "Send SMS" %><br />
<% end %><br />
8. ส่วนของ controller<br />
class SmsController < ApplicationController<br />
  def create<br />
    sms = SMS.new(CLICKATELL_CONFIG)<br />
    sms.create(params[:recipient], params[:message_text])<br />
    flash[:notice] = "Message sent succesfully!"<br />
    redirect_to :back<br />
  rescue Clickatell::API::Error => e<br />
    flash[:error] = &#8220;Clickatell API error: #{e.message}&#8221;<br />
    redirect_to :back<br />
  end<br />
end<br />
9. เสร็จแล้วจ้าา&#8230;<br />
แหล่งที่มา:</p>
<p>http://lukeredpath.co.uk/blog/sending-sms-messages-from-your-rails-application.html</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pupasoft.com/2010/01/07/how-to-send-sms-from-ror-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ทำไมสร้าง folder ชื่อ con ไม่ได้อะ??</title>
		<link>http://blog.pupasoft.com/2010/01/07/%e0%b8%97%e0%b8%b3%e0%b9%84%e0%b8%a1%e0%b8%aa%e0%b8%a3%e0%b9%89%e0%b8%b2%e0%b8%87-folder-%e0%b8%8a%e0%b8%b7%e0%b9%88%e0%b8%ad-con-%e0%b9%84%e0%b8%a1%e0%b9%88%e0%b9%84%e0%b8%94%e0%b9%89%e0%b8%ad/</link>
		<comments>http://blog.pupasoft.com/2010/01/07/%e0%b8%97%e0%b8%b3%e0%b9%84%e0%b8%a1%e0%b8%aa%e0%b8%a3%e0%b9%89%e0%b8%b2%e0%b8%87-folder-%e0%b8%8a%e0%b8%b7%e0%b9%88%e0%b8%ad-con-%e0%b9%84%e0%b8%a1%e0%b9%88%e0%b9%84%e0%b8%94%e0%b9%89%e0%b8%ad/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 10:03:28 +0000</pubDate>
		<dc:creator>zephiroth</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[con folder]]></category>

		<guid isPermaLink="false">http://blog.pupasoft.com/?p=3329</guid>
		<description><![CDATA[สงสัยกันรึป่าวครับว่าทำไมเราถึงสร้าง folder ชื่อ con ไม่ได้ เอ๊ะ หรือยังไม่เคยลองสร้าง?? ลองไปสร้างดูสิครับแล้วผมจะรอ . . . . .
อืม . .. .
ลองดูรึยังครับ ไม่ได้ใช่มะ?? งั้นมาดูเหตุผลกัน

นั้นเพราะว่าคำว่า con มันไปตรงกับคำสั่งหนึ่งใน DOS
con=คอนโซล ใช้ประกอบคำสั่ง copy เพื่อเขียน file บนหน้าจอ โดยไม่ต้องใช้ notepad ได้
รูปแบบการใช้
C:\&#62;copy con test.txt
จากนั้นก็พิมข้อความอะไรก็ได้ลงไป
เมื่อเสร็จกด ctrl+z แล้วตามด้วย enter เราก็จะได้ไฟล์ชื่อ test.txt อยู่ที่ C: และจะมีข้อความที่เราเขียนลงไปอยู่ข้างใน
อะ นอกเรื่องไปแล้วเนอะ ที่จริงนอกจากคำว่า con ยังมีอีกหลายตัวที่เราจะใช้ตั้งชื่อไม่ได้นะครับดังนี้
อักษรที่ห้ามใช้ในการตั้งชื่อคือ  &#60; &#62; : &#8221; / \ &#124; ? *
คำที่ห้ามใช้ มีดังนี CON, PRN, [...]]]></description>
			<content:encoded><![CDATA[<p>สงสัยกันรึป่าวครับว่าทำไมเราถึงสร้าง folder ชื่อ con ไม่ได้ เอ๊ะ หรือยังไม่เคยลองสร้าง?? ลองไปสร้างดูสิครับแล้วผมจะรอ . . . . .</p>
<p>อืม . .. .</p>
<p>ลองดูรึยังครับ ไม่ได้ใช่มะ?? งั้นมาดูเหตุผลกัน</p>
<p><span id="more-3329"></span></p>
<p>นั้นเพราะว่าคำว่า con มันไปตรงกับคำสั่งหนึ่งใน DOS</p>
<blockquote><p>con=คอนโซล ใช้ประกอบคำสั่ง copy เพื่อเขียน file บนหน้าจอ โดยไม่ต้องใช้ notepad ได้</p></blockquote>
<p>รูปแบบการใช้</p>
<blockquote><p>C:\&gt;copy con test.txt</p></blockquote>
<p>จากนั้นก็พิมข้อความอะไรก็ได้ลงไป</p>
<p>เมื่อเสร็จกด ctrl+z แล้วตามด้วย enter เราก็จะได้ไฟล์ชื่อ test.txt อยู่ที่ C: และจะมีข้อความที่เราเขียนลงไปอยู่ข้างใน</p>
<p>อะ นอกเรื่องไปแล้วเนอะ ที่จริงนอกจากคำว่า con ยังมีอีกหลายตัวที่เราจะใช้ตั้งชื่อไม่ได้นะครับดังนี้</p>
<blockquote><p>อักษรที่ห้ามใช้ในการตั้งชื่อคือ  &lt; &gt; : &#8221; / \ | ? *</p>
<p>คำที่ห้ามใช้ มีดังนี CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, และ LPT9</p></blockquote>
<p>ซึ่งชื่อเหล่านี้อาจจะไปตรงกับ device name หรือ คำสั่ง อะไรซักอย่างของ DOS ก็เป็นได้</p>
<p>แต่เราก็ยังดันมีวิธีสร้าง folder เหล่านี้ได้อีกนะเนี่ย -*- (จะทำไปทำไมนะ??)</p>
<p>สมมติจะสร้าง folder ชื่อ con นะครับ</p>
<p>ขั้นแรกให้ run cmd ขึ้นมาก่อนและพิมพ์คำสั่งดังนี้</p>
<blockquote><p>mkdir \\.\C:\con</p></blockquote>
<p>เราก็จะได้ folder ชื่อ con มาไว้ในครอบครอง แต่!!</p>
<p>แต่มันดันลบไม่ได้นี่สิ จะลบก็ต้องใช้ command อีกครับผม คำสั่งในการลบก็คือ</p>
<blockquote><p>rmdir \\.\C:\con</p></blockquote>
<p>เรียบร้อย โฟลเดอร์ con ก็หายไปแล้ว ^^</p>
<p>happy มีความสุขครับ</p>
<p style="text-align: center;"><a href="http://blog.pupasoft.com/wp-content/uploads/2010/01/makecon.jpg"><img class="size-medium wp-image-3334 aligncenter" title="makecon" src="http://blog.pupasoft.com/wp-content/uploads/2010/01/makecon-300x94.jpg" alt="" width="300" height="94" /></a></p>
<p style="text-align: center;">
<p style="text-align: left;"><strong>สรุปแล้ว con ไม่ใช่ชื่อพ่อของ bill gates นะครับ ^^</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pupasoft.com/2010/01/07/%e0%b8%97%e0%b8%b3%e0%b9%84%e0%b8%a1%e0%b8%aa%e0%b8%a3%e0%b9%89%e0%b8%b2%e0%b8%87-folder-%e0%b8%8a%e0%b8%b7%e0%b9%88%e0%b8%ad-con-%e0%b9%84%e0%b8%a1%e0%b9%88%e0%b9%84%e0%b8%94%e0%b9%89%e0%b8%ad/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
