<?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! &#187; Programming</title>
	<atom:link href="http://blog.pupasoft.com/category/programming/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>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>Dynamic Programming #2 ตอน Knapsack Problem</title>
		<link>http://blog.pupasoft.com/2010/01/07/dynamic-programming-2-knapsack-problem/</link>
		<comments>http://blog.pupasoft.com/2010/01/07/dynamic-programming-2-knapsack-problem/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 10:03:27 +0000</pubDate>
		<dc:creator>p</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Programming Tips]]></category>

		<guid isPermaLink="false">http://blog.pupasoft.com/?p=3317</guid>
		<description><![CDATA[สวัสดีครับ กลับมาพบกันอีกแล้วกับ tips ในการเขียนโปรแกรมยากๆ แต่มีประโยชน์มากมาย กับ Dynamic Programming
จากคราวที่แล้ว ได้เขียนเกี่ยวกับ Dynamic Programming แบบง่ายๆ ที่นี่
วันนี้เราจะมาลองกันแบบ Advance ขึ้นไปอีกขั้น นั่นก็คือ การเขียน Dynamic Programming เพื่อแก้ปัญหาประเภท Knapsack Problem
Knapsack Problem คืออะไร?
สมมติ มีการ์ดยูกิอยู่หลายใบ แต่ละใบจะมี level (ดาว) และพลังโจมตีต่างๆกัน หากให้เลือกการ์ดออกมาให้ครบ 10 ดาว และให้มีพลังโจมตีสูงที่สุด จะเลือกอย่างไร?
ตัวอย่างง่ายๆ
สมมติมีการ์ดอยู่ห้าใบ ดังนี้
Blue Eyes White Dragon 8 ดาว พลังโจมตี 3000
Dragon Zombie 3 ดาว พลังโจมตี 1600
Demon 6 ดาว พลังโจมตี 2500
Kuriboh 1 ดาว พลังโจมตี 600
Bloodwars [...]]]></description>
			<content:encoded><![CDATA[<p>สวัสดีครับ กลับมาพบกันอีกแล้วกับ tips ในการเขียนโปรแกรมยากๆ แต่มีประโยชน์มากมาย กับ Dynamic Programming</p>
<p>จากคราวที่แล้ว ได้เขียนเกี่ยวกับ Dynamic Programming แบบง่ายๆ <a href="http://blog.pupasoft.com/2009/08/20/dynamic-programming/">ที่นี่</a></p>
<p>วันนี้เราจะมาลองกันแบบ Advance ขึ้นไปอีกขั้น นั่นก็คือ การเขียน Dynamic Programming เพื่อแก้ปัญหาประเภท Knapsack Problem<br />
<span id="more-3317"></span>Knapsack Problem คืออะไร?<br />
สมมติ มีการ์ดยูกิอยู่หลายใบ แต่ละใบจะมี level (ดาว) และพลังโจมตีต่างๆกัน หากให้เลือกการ์ดออกมาให้ครบ 10 ดาว และให้มีพลังโจมตีสูงที่สุด จะเลือกอย่างไร?</p>
<p>ตัวอย่างง่ายๆ<br />
สมมติมีการ์ดอยู่ห้าใบ ดังนี้<br />
Blue Eyes White Dragon 8 ดาว พลังโจมตี 3000<br />
Dragon Zombie 3 ดาว พลังโจมตี 1600<br />
Demon 6 ดาว พลังโจมตี 2500<br />
Kuriboh 1 ดาว พลังโจมตี 600<br />
Bloodwars 4 ดาว พลังโจมตี 1900<br />
ให้เลือกอย่างมากได้สิบดาว ให้ได้พลังโจมตีสูงที่สุด จะทำอย่างไร</p>
<p>ยังจำตอนที่แล้วได้มั้ยครับ ที่ว่า ให้มองปัญหาใหญ่ให้กลายเป็นปัญหาย่อยๆ เล็กๆ แล้วก็ย่อยปัญหาเล็กลงไปอีกทีจนเลือกหน่วยที่เล็กที่สุด<br />
จากโจทย์้ข้อนี้ก็เช่นเดียวกันครับ<br />
- หากเราต้องการจะหยิบการ์ดใบสุดท้ายที่มี 4 ดาวแล้ว แสดงว่า การ์ดที่เราหยิบ 6 ดาวก่อนหน้าจะต้องได้พลังโจมตีมากที่สุด<br />
-      หากเราต้องการหยิบการ์ดรองสุดท้ายที่มี 1 ดาวแล้ว แสดงว่า การ์ดที่เราหยิบ 5 ดาวก่อนหน้าจะต้องได้พลังโจมตีมากที่สุด<br />
-      แต่หากเราต้องการหยิบการ์ดรองสุดท้ายที่มี 6 ดาวแล้ว แสดงว่า การ์ดที่เราหยิบ 0 ดาวก่อนหน้าจะต้องได้พลังโจมตีมากที่สุด &#8211; จบ<br />
-      แต่หากเราต้องการหยิบการ์ดรองสุดท้ายที่มี 3 ดาวแล้ว แสดงว่า การ์ดที่เราหยิบ 3 ดาวก่อนหน้าจะต้องได้พลังโจมตีมากที่สุด<br />
&#8230;.</p>
<p>เป็นเช่นนี้ไปเรื่อยๆ..<br />
เป็นไงครับ ดูยากใช่ใหมครับ งั้นลองดูรูปนี้ดู<br />
<a href="http://blog.pupasoft.com/wp-content/uploads/2010/01/DynamicGraph.jpg"><img class="alignnone size-full wp-image-3332" title="DynamicGraph" src="http://blog.pupasoft.com/wp-content/uploads/2010/01/DynamicGraph.jpg" alt="" width="454" height="340" /></a></p>
<p>อาจจะดูง่ายขึ้นนิดหน่อย แต่ก็ยังงงใช่ใหมครับ ว่า มันต่างจากการ Recursion ตรงไหน<br />
นั่นก็เพราะว่า Dynamic Programming จะให้ memory แทนการ run ที่สูญเปล่าไงครับ</p>
<p>อย่างเช่น หากมีการ์ด 4 ดาวในชุดอยู่สองใบ แล้วเราจะเลือกการ์ด 4 ดาวแต่ละใบ เราจำเป็นต้องแต่ recursive ไปทั้งสองทาง<br />
ทั้งที่เป็นการหาการ์ดที่มีดาวรวม 6 ดาว และมีพลังโจมตีเยอะที่สุดเหมือนกันแท้ๆ<br />
<a href="http://blog.pupasoft.com/wp-content/uploads/2010/01/DynamicGraph2.jpg"><img class="alignnone size-full wp-image-3337" title="DynamicGraph2" src="http://blog.pupasoft.com/wp-content/uploads/2010/01/DynamicGraph2.jpg" alt="" width="454" height="340" /></a></p>
<p>พูดถึงตรงนี้ พอมองภาพออกแล้วใช่ใหมครับ นี่ก็เป็นหลักการง่ายๆ (?) ของ Dynamic Programming นั่นเอง<br />
ครั้งหน้าจะพูดถึงเรื่องของ การใช้ Dynamic Programming ในการเขียนโปรแกรมจริงๆ นะครับ</p>
<p>วันนี้ขอลาไปก่อน สวัสดีปีใหม่</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pupasoft.com/2010/01/07/dynamic-programming-2-knapsack-problem/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>protected default ในjavaมันคืออะไรกันแน่</title>
		<link>http://blog.pupasoft.com/2010/01/07/protected-default-%e0%b9%83%e0%b8%99java%e0%b8%a1%e0%b8%b1%e0%b8%99%e0%b8%84%e0%b9%88%e0%b8%b2%e0%b8%ad%e0%b8%b0%e0%b9%84%e0%b8%a3%e0%b8%81%e0%b8%b1%e0%b8%99%e0%b9%81%e0%b8%99%e0%b9%88/</link>
		<comments>http://blog.pupasoft.com/2010/01/07/protected-default-%e0%b9%83%e0%b8%99java%e0%b8%a1%e0%b8%b1%e0%b8%99%e0%b8%84%e0%b9%88%e0%b8%b2%e0%b8%ad%e0%b8%b0%e0%b9%84%e0%b8%a3%e0%b8%81%e0%b8%b1%e0%b8%99%e0%b9%81%e0%b8%99%e0%b9%88/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 08:02:31 +0000</pubDate>
		<dc:creator>ta</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.pupasoft.com/?p=3295</guid>
		<description><![CDATA[ฮ่าๆๆๆ(หัวเราะเล่นๆไม่มีอะไรทำ) protected default ที่ผมรู้ทั้งสองตัวนี้ก็เป็น Access Modifier เหมือนกับ public และ private นั้นแระครับผมก็เลยลองเอาสองทำนี้ไปแปลดู ได้ผลเป็น protectde = การปกป้อง, default = ค่าเริ่มต้น ด้วยความที่เก่งภาษาเป็นอย่างมากผมก็ได้ข้อสรุปว่า&#8230;(- -! ว่ามันคืออะไรหว่า) แต่หลังจากได้เข้าอบรมเพื่อสอบ java certificate ก็ได้เข้้าใจแล้วว่ามันต่างกันที่การเข้าถึง กด More นะถ้าจะอ่านต่อ ^^
การเข้าถึง variable หรือ method หรือ &#8230; จะมีความแตกต่างกันอยู่ที่
public จะสามารถเข้าถึงได้จากทุกที่ คือสามารถเรียกจากที่ได้ก็ได้ เช่น ต่าง class หรือต่าง package กัน
private ส่วนตัวนี้ก็จะสามารถเรียกได้ภายใน class เดียวกันเท่านั้น
protected จะสามารถเรียกใช้ได้จาก class ที่ สือทอด( inheritance )มาจาก class ของมันเท่านั้นที่สามารถจะเรียกได้
default ส่วนตัวนี้บ้างคนอาจจะไม่เคยเห็นก็ได้ (ปกติมันก็ไม่เห็นอยู่แล้วนิ [...]]]></description>
			<content:encoded><![CDATA[<p>ฮ่าๆๆๆ(หัวเราะเล่นๆไม่มีอะไรทำ) protected default ที่ผมรู้ทั้งสองตัวนี้ก็เป็น Access Modifier เหมือนกับ public และ private นั้นแระครับผมก็เลยลองเอาสองทำนี้ไปแปลดู ได้ผลเป็น protectde = การปกป้อง, default = ค่าเริ่มต้น ด้วยความที่เก่งภาษาเป็นอย่างมากผมก็ได้ข้อสรุปว่า&#8230;(- -! ว่ามันคืออะไรหว่า) แต่หลังจากได้เข้าอบรมเพื่อสอบ java certificate ก็ได้เข้้าใจแล้วว่ามันต่างกันที่การเข้าถึง กด More นะถ้าจะอ่านต่อ ^^</p>
<p><span id="more-3295"></span>การเข้าถึง variable หรือ method หรือ &#8230; จะมีความแตกต่างกันอยู่ที่</p>
<p>public จะสามารถเข้าถึงได้จากทุกที่ คือสามารถเรียกจากที่ได้ก็ได้ เช่น ต่าง class หรือต่าง package กัน</p>
<p>private ส่วนตัวนี้ก็จะสามารถเรียกได้ภายใน class เดียวกันเท่านั้น</p>
<p>protected จะสามารถเรียกใช้ได้จาก class ที่ สือทอด( inheritance )มาจาก class ของมันเท่านั้นที่สามารถจะเรียกได้</p>
<p>default ส่วนตัวนี้บ้างคนอาจจะไม่เคยเห็นก็ได้ (ปกติมันก็ไม่เห็นอยู่แล้วนิ &#8211; - ) เพราะว่า การที่เราไม่ได้ใส่ Access Modifier ไว้ข้างหน้า จะหมายถึงการกำหนด ให้เป็น default อยู่แล้ว และการเข้าถึงของ Access Modifier นี้ จะสามารถเข้าได้จาก package เท่านั้น</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pupasoft.com/2010/01/07/protected-default-%e0%b9%83%e0%b8%99java%e0%b8%a1%e0%b8%b1%e0%b8%99%e0%b8%84%e0%b9%88%e0%b8%b2%e0%b8%ad%e0%b8%b0%e0%b9%84%e0%b8%a3%e0%b8%81%e0%b8%b1%e0%b8%99%e0%b9%81%e0%b8%99%e0%b9%88/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Step by Step]How to Check out Project Kenai.com</title>
		<link>http://blog.pupasoft.com/2010/01/07/step-by-stephow-to-check-out-project-kenai-com/</link>
		<comments>http://blog.pupasoft.com/2010/01/07/step-by-stephow-to-check-out-project-kenai-com/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 06:21:36 +0000</pubDate>
		<dc:creator>ll~ตัวป่วน~ll</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Programming Tips]]></category>
		<category><![CDATA[kenai]]></category>
		<category><![CDATA[netbeans]]></category>
<category>่java</category><category>kenai</category><category>Netbeans</category><category>tip</category>
		<guid isPermaLink="false">http://blog.pupasoft.com/?p=3253</guid>
		<description><![CDATA[วันนี้เบรกเรื่อง Android ไว้หน่อยหนึ่งมาเปลี่ยนเรื่องกันบ้างครับ สาเหตุมันก็มาจากเมื่อคืนนอนไม่หลับสักทีเลยตื่นมาตี 5 มาคุ้ยๆอะไรใน Netbeans เล่นเรื่อยจนสะดุดตากับคำว่า Kenai ห้าห้า คุ้นครับคำนี้เพราะเคยลงทะเบียนกับเวปนี้ไว้ เเล้วลองเล่นดูคร่าวๆเเล้วเเต่ก็เลือนหายไปตามกาลเวลาเลยมาลองเล่นดูจริงๆจังสักที ซึ่ง Kenai ก็จะเป็นเวปที่รวบรวมโปรเจ็คจาวาไว้มากมาย นักพัฒนาสามารถมาสร้างโปรเจ็คเเล้วร่วมกันพัฒนาได้หรือร่วมกันพัฒนาโปรเจ็คที่มีอยู่เเล้วก็ได้ สุดยอดใช่ม่ะ มาเริ่มกันเลยดีกว่าครับ

ทำการเปิด Netbeans ขึ้นมาเลือกไปที่หัวข้อ Team จะมีคำว่า Kenai อยู่เลือกไปที่ Open Kenai Project ดังรูปครับ
ถึงขั้นตอนนี้เราสามารค้นหาข้อมูลของโปรเจ็คได้ เช่นใส่ชือผู้สร้างโปรเจ็คลงไป ใส่คำที่เราสนใจลงไป หรือสามารถเข้าไปดูได้ที่ www.kenai.com ก็ได้อย่าลืมสมัครสมาชิกด้วยนะครับ เราสามารถเลือกดูรายชื่อโปรเจ็คต่างๆได้จากเวปเลยครับผม โดยในที่นี้ผมจะใส่คำค้นหาคำว่า game ลงไปครับจะได้ผลดังรูปเลือก Project ที่สนใจเเล้วกดตกลงเลยครับ
มาถึงขั้นตอนนี้เราก็จะได้ผลลัพธ์ของโปรเจ็คดังรูปต่อไปนะครับ ซึ่งจะมีรายละเอียดของโปรเจ็คๆนั้นรวมถึงเราสามารถดึง code ขึ้นมาได้ด้วยครับผม ซึ่งถึงตอนนี้เครื่องของเราจะต้องลง svn ด้วยนะครับถ้าใครไม่ดึงพอไป get code เเล้วมันก็จะขึ้นหน้าต่างให้เราลง svn ถ้ายังไม่ได้ลงก็ทำตามขั้นตอนไปเลยครับตรงนี้ไม่มีอะไรกดไปเรื่อยๆ รีสตาร์ Netbeans รอบนึงก็ได้เเล้ว
ต่อมาให้เลือกไปที่ get ครับจะปรากฏหน้าต่างดังรูป
ให้เราเลือกไปที่ [...]]]></description>
			<content:encoded><![CDATA[<p>วันนี้เบรกเรื่อง Android ไว้หน่อยหนึ่งมาเปลี่ยนเรื่องกันบ้างครับ สาเหตุมันก็มาจากเมื่อคืนนอนไม่หลับสักทีเลยตื่นมาตี 5 มาคุ้ยๆอะไรใน Netbeans เล่นเรื่อยจนสะดุดตากับคำว่า Kenai ห้าห้า คุ้นครับคำนี้เพราะเคยลงทะเบียนกับเวปนี้ไว้ เเล้วลองเล่นดูคร่าวๆเเล้วเเต่ก็เลือนหายไปตามกาลเวลาเลยมาลองเล่นดูจริงๆจังสักที ซึ่ง Kenai ก็จะเป็นเวปที่รวบรวมโปรเจ็คจาวาไว้มากมาย นักพัฒนาสามารถมาสร้างโปรเจ็คเเล้วร่วมกันพัฒนาได้หรือร่วมกันพัฒนาโปรเจ็คที่มีอยู่เเล้วก็ได้ สุดยอดใช่ม่ะ มาเริ่มกันเลยดีกว่าครับ</p>
<ol>
<li><span id="more-3253"></span>ทำการเปิด Netbeans ขึ้นมาเลือกไปที่หัวข้อ Team จะมีคำว่า Kenai อยู่เลือกไปที่ Open Kenai Project ดังรูปครับ<a href="http://blog.pupasoft.com/wp-content/uploads/2010/01/netbeans.bmp"><img class="aligncenter size-full wp-image-3256" title="netbeans" src="http://blog.pupasoft.com/wp-content/uploads/2010/01/netbeans.bmp" alt="" width="425" height="350" /></a></li>
<li>ถึงขั้นตอนนี้เราสามารค้นหาข้อมูลของโปรเจ็คได้ เช่นใส่ชือผู้สร้างโปรเจ็คลงไป ใส่คำที่เราสนใจลงไป หรือสามารถเข้าไปดูได้ที่ <a title="Kenai" href="netbeans" target="_self">www.kenai.com</a> ก็ได้อย่าลืมสมัครสมาชิกด้วยนะครับ เราสามารถเลือกดูรายชื่อโปรเจ็คต่างๆได้จากเวปเลยครับผม โดยในที่นี้ผมจะใส่คำค้นหาคำว่า game ลงไปครับจะได้ผลดังรูปเลือก Project ที่สนใจเเล้วกดตกลงเลยครับ<a href="http://blog.pupasoft.com/wp-content/uploads/2010/01/netbeans2.bmp"><img class="aligncenter size-full wp-image-3257" title="netbeans2" src="http://blog.pupasoft.com/wp-content/uploads/2010/01/netbeans2.bmp" alt="" width="427" height="350" /></a></li>
<li>มาถึงขั้นตอนนี้เราก็จะได้ผลลัพธ์ของโปรเจ็คดังรูปต่อไปนะครับ ซึ่งจะมีรายละเอียดของโปรเจ็คๆนั้นรวมถึงเราสามารถดึง code ขึ้นมาได้ด้วยครับผม ซึ่งถึงตอนนี้เครื่องของเราจะต้องลง svn ด้วยนะครับถ้าใครไม่ดึงพอไป get code เเล้วมันก็จะขึ้นหน้าต่างให้เราลง svn ถ้ายังไม่ได้ลงก็ทำตามขั้นตอนไปเลยครับตรงนี้ไม่มีอะไรกดไปเรื่อยๆ รีสตาร์ Netbeans รอบนึงก็ได้เเล้ว<a href="http://blog.pupasoft.com/wp-content/uploads/2010/01/netbeans3.bmp"><img class="aligncenter size-full wp-image-3258" title="netbeans3" src="http://blog.pupasoft.com/wp-content/uploads/2010/01/netbeans3.bmp" alt="netbeans3" /></a></li>
<li>ต่อมาให้เลือกไปที่ get ครับจะปรากฏหน้าต่างดังรูป<a href="http://blog.pupasoft.com/wp-content/uploads/2010/01/netbeans4.bmp"><img class="aligncenter size-full wp-image-3260" title="netbeans4" src="http://blog.pupasoft.com/wp-content/uploads/2010/01/netbeans4.bmp" alt="netbeans4" width="424" height="262" /></a></li>
<li>ให้เราเลือกไปที่ Browse ของ Folder  get: นะครับ เเล้วเลือก AnagramGame นะครับเเล้วกดตกลงดังรูปเลยครับ<a href="http://blog.pupasoft.com/wp-content/uploads/2010/01/netbeans5.bmp"><img class="aligncenter size-full wp-image-3263" title="netbeans5" src="http://blog.pupasoft.com/wp-content/uploads/2010/01/netbeans5.bmp" alt="netbeans5" width="487" height="290" /></a></li>
<li>เมื่อกดตกลงก็ให้กดต่อไปที่ Get from Kenai นะครับรอสักครู่ให้มันทำการ Check out ออกมาก่อนเเล้วก็จะขึ้นหน้าต่างให้เราทำการ Open Project ครับเราก็จะได้ Project นั้นๆมาเเล้วครับผม</li>
</ol>
<p>เป็นไงครับไม่ยากเลยใช่ใหมนอกจากนี้เรายังสามารถที่จะ สร้างโปรเจ็คขึ้นมาเเล้วให้นักพัฒนามาช่วยกันพัฒนาโปรเจ็คของเราด้วย สุดยอดจริงๆลองเอาเล่นๆดูนะครับ</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pupasoft.com/2010/01/07/step-by-stephow-to-check-out-project-kenai-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Double 5 != Double 5 อะไรกันเนี้ย</title>
		<link>http://blog.pupasoft.com/2010/01/07/double-5-double-5-%e0%b8%ad%e0%b8%b0%e0%b9%84%e0%b8%a3%e0%b8%81%e0%b8%b1%e0%b8%99%e0%b9%80%e0%b8%99%e0%b8%b5%e0%b9%89%e0%b8%a2/</link>
		<comments>http://blog.pupasoft.com/2010/01/07/double-5-double-5-%e0%b8%ad%e0%b8%b0%e0%b9%84%e0%b8%a3%e0%b8%81%e0%b8%b1%e0%b8%99%e0%b9%80%e0%b8%99%e0%b8%b5%e0%b9%89%e0%b8%a2/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 06:06:06 +0000</pubDate>
		<dc:creator>ta</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.pupasoft.com/?p=3250</guid>
		<description><![CDATA[ถ้าเพื่อนๆเคยเขียน java โดยใช้ object Double  แล้ว เช็คเงื่อนไข == ที่ตัวแปรทั้งสองมีค่าเท่ากันแต่ แต่ได้ผลลัพธ์เป็น false เพื่อนก็คงจะเคยเจอเหตุการณ์แบบนี้กันมาบ้านนะครับ โดยปกติแล้วการจะเช็คว่าตัวแฟรทั้งสองมีค่าเท่ากันหรือไม่ใน Double จะไม่ทำการใช้เครื่องหมาย == นะครับแต่จะใช้วิธีนี้แทนครับ

Double x = 5;
Double y = 5;
System.out.println&#40;&#40;x-y&#41;&#60;1E-6&#41;;

แค่นี้เราก็จะสามารถเช็คได้แล้วว่า Double ทั้งสองมีค่าเท่ากันหรือไม่ ลืมบอกไปว่า 1E-6  คือ 1คูณ10กำลัง-6นั้นเองครับ
]]></description>
			<content:encoded><![CDATA[<p>ถ้าเพื่อนๆเคยเขียน java โดยใช้ object Double  แล้ว เช็คเงื่อนไข == ที่ตัวแปรทั้งสองมีค่าเท่ากันแต่ แต่ได้ผลลัพธ์เป็น false<span id="more-3250"></span> เพื่อนก็คงจะเคยเจอเหตุการณ์แบบนี้กันมาบ้านนะครับ โดยปกติแล้วการจะเช็คว่าตัวแฟรทั้งสองมีค่าเท่ากันหรือไม่ใน Double จะไม่ทำการใช้เครื่องหมาย == นะครับแต่จะใช้วิธีนี้แทนครับ</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #003399;">Double</span> x <span style="color: #339933;">=</span> <span style="color: #cc66cc;">5</span><span style="color: #339933;">;</span>
<span style="color: #003399;">Double</span> y <span style="color: #339933;">=</span> <span style="color: #cc66cc;">5</span><span style="color: #339933;">;</span>
<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: #009900;">&#40;</span>x<span style="color: #339933;">-</span>y<span style="color: #009900;">&#41;</span><span style="color: #339933;">&lt;</span>1E<span style="color: #339933;">-</span>6<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>แค่นี้เราก็จะสามารถเช็คได้แล้วว่า Double ทั้งสองมีค่าเท่ากันหรือไม่ ลืมบอกไปว่า 1E-6  คือ 1คูณ10กำลัง-6นั้นเองครับ</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pupasoft.com/2010/01/07/double-5-double-5-%e0%b8%ad%e0%b8%b0%e0%b9%84%e0%b8%a3%e0%b8%81%e0%b8%b1%e0%b8%99%e0%b9%80%e0%b8%99%e0%b8%b5%e0%b9%89%e0%b8%a2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>?? เครื่องหมาย &#124; ในเงื่อนไขต่างๆทำไมถึงเขียน 1 อัน หรือ 2 อันก็ได้นะ</title>
		<link>http://blog.pupasoft.com/2010/01/07/%e0%b9%80%e0%b8%84%e0%b8%a3%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b8%87%e0%b8%ab%e0%b8%a1%e0%b8%b2%e0%b8%a2-%e0%b9%83%e0%b8%99%e0%b9%80%e0%b8%87%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b8%99%e0%b9%84%e0%b8%82/</link>
		<comments>http://blog.pupasoft.com/2010/01/07/%e0%b9%80%e0%b8%84%e0%b8%a3%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b8%87%e0%b8%ab%e0%b8%a1%e0%b8%b2%e0%b8%a2-%e0%b9%83%e0%b8%99%e0%b9%80%e0%b8%87%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b8%99%e0%b9%84%e0%b8%82/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 04:42:35 +0000</pubDate>
		<dc:creator>ta</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.pupasoft.com/?p=3087</guid>
		<description><![CDATA[เครื่องหมาย &#124; ทำไมถึงเขียน 1 อันหรือ 2 อันก็ได้นะในตอนแรกผมก็คิดว่ามันน่าจะ error แต่มันกลับไม่เป็นอะไรสะงั้น
ไปดูกันดีกว่าว่ามันแตกต่างกันยังไงจะเห็นว่าเมื่อเราเขียนโค้ด

int x = 0;
int y = 0;
if&#40;x == 0 &#124;&#124; y == 0&#41;&#123;
  System.out.println&#40;&#34;&#124;&#124;&#34;&#41;;
&#125;
if&#40;x == 0 &#124; y == 0&#41;&#123;
  System.out.println&#40;&#34;&#124;&#34;&#41;;
&#125;

ก็จะแสดงผล เป็น
&#124;&#124;
&#124;
แล้วมันทำมาทำไมหว่า
จริงๆแล้วการเขียนแบบ เครื่องหมาย 1 อันหรือ 2 อันมันต่างกันที่
ถ้าเป็นแบบ 2 อันเมื่อเงื่อนไขอันแรกเป็นจริงแล้วก็จะไม่ทำเงื่อนไขหลังอีก
เพราะว่า จริง หรือ xxx มันได้จริง ก็เลยไม่จำต้องทำเงื่อนไขหลังก็ได้ครับ
แต่ถ้าเป็นเครื่องหมาย &#38; เท็จ หรือ xxx ก็จะได้ เท็จก็ไม่ต้องทำเงื่อนไขหลังเช่นกันครับ
เราลองมาดูโค้ดกันดีกว่าเพื่อว่าจะเข้าใจอะไรกันมากขึ้น
int x = 0;
int y = [...]]]></description>
			<content:encoded><![CDATA[<p>เครื่องหมาย | ทำไมถึงเขียน 1 อันหรือ 2 อันก็ได้นะในตอนแรกผมก็คิดว่ามันน่าจะ error แต่มันกลับไม่เป็นอะไรสะงั้น</p>
<p>ไปดูกันดีกว่าว่ามันแตกต่างกันยังไง<span id="more-3087"></span>จะเห็นว่าเมื่อเราเขียนโค้ด</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">int</span> x <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> y <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>x <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span> <span style="color: #339933;">||</span> y <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <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;||&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>x <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span> <span style="color: #339933;">|</span> y <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <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;|&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>ก็จะแสดงผล เป็น<br />
||<br />
|<br />
แล้วมันทำมาทำไมหว่า<br />
จริงๆแล้วการเขียนแบบ เครื่องหมาย 1 อันหรือ 2 อันมันต่างกันที่<br />
ถ้าเป็นแบบ 2 อันเมื่อเงื่อนไขอันแรกเป็นจริงแล้วก็จะไม่ทำเงื่อนไขหลังอีก<br />
เพราะว่า จริง หรือ xxx มันได้จริง ก็เลยไม่จำต้องทำเงื่อนไขหลังก็ได้ครับ<br />
แต่ถ้าเป็นเครื่องหมาย &amp; เท็จ หรือ xxx ก็จะได้ เท็จก็ไม่ต้องทำเงื่อนไขหลังเช่นกันครับ<br />
เราลองมาดูโค้ดกันดีกว่าเพื่อว่าจะเข้าใจอะไรกันมากขึ้น</p>
<pre>int x = 0;
int y = 0;
if(y == x++ | y == ++x){
  System.out.println("x="+x);
}
x = 0;
y = 0;
if(y == x++ || y == ++x){
  System.out.println("x="+x);
}</pre>
<p>ก็จะได้ผลเป็นดังนี้<br />
x=2<br />
x=1</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pupasoft.com/2010/01/07/%e0%b9%80%e0%b8%84%e0%b8%a3%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b8%87%e0%b8%ab%e0%b8%a1%e0%b8%b2%e0%b8%a2-%e0%b9%83%e0%b8%99%e0%b9%80%e0%b8%87%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b8%99%e0%b9%84%e0%b8%82/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Using Intent on Android Application</title>
		<link>http://blog.pupasoft.com/2010/01/07/how-to-using-intent-on-android-application/</link>
		<comments>http://blog.pupasoft.com/2010/01/07/how-to-using-intent-on-android-application/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 19:04:30 +0000</pubDate>
		<dc:creator>ll~ตัวป่วน~ll</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Programming Tips]]></category>
		<category><![CDATA[Intent android]]></category>
		<category><![CDATA[send sms android]]></category>
<category>android</category><category>Android Developer</category><category>Google Android</category>
		<guid isPermaLink="false">http://blog.pupasoft.com/?p=3184</guid>
		<description><![CDATA[วันนี้จะมาพูดเรื่องที่ถือว่าเป็นเรื่องสำคัญเลยทีเดียวก็คือเรื่องของ Intent นั้นเองคงสงสัยกันเเล้วสิว่า Intent คืออะไรถ้าจะเอาง่ายมันก็เหมือนกับ ตัวดำเนินงานต่างๆอะไรทำนองนั้น ซึ่งปกติเเล้ว Android เวลาจะมีการเรียกหน้า Activity ใดๆ นั้นจะกระทำโดยการเรียกผ่าน Intent ต่างๆวันนี้เราจะลองเรียกใช้งาน Intent กันเเบบคร่าวๆ จะลองเรียกการใช้งาน Intent ในการส่ง sms กันดูนะครับไปดูกันเลย
วิธีการนั้นไม่ยากไม่เย็นเลยเพียงเเค่รู้ว่า Intent ที่ใช้ในการส่ง sms นั้นเป็น Intent อะไรๆอาจจะหาอ่านเอาจาก Doc ที่มีให้มาหรือถ้าเมพๆหน่อยก็เปิด Log ดูก็ได้วิธีนี้ไม่ค่อยเเนะนำ เพราะเดียวจะตาลายก่อนที่จะหาเจอพอดีว่าเเล้วไปดูวิธีการพัฒนากันเลยครับ

Intent sms_mms = new Intent&#40;Intent.ACTION_SENDTO&#41;;
sms_mms.setData&#40;Uri.parse&#40;&#34;sms:&#34;+ c.getString&#40;c.getColumnIndex&#40;Phones.NUMBER&#41;&#41;&#41;&#41;;
//send sms to phone number using Query phone number from database
startActivity&#40;sms_mms&#41;;

AndroidManifest

&#60;uses-permission android:name=&#34;android.permission.SEND_SMS&#34; /&#62;
&#60;uses-permission android:name=&#34;android.permission.READ_CONTACTS&#34; /&#62;

ง่ายๆใ่ช่ใหมครับเเค่นี้เราก็สามารถที่จะทำการส่ง sms ตามเบอร์ที่เราต้องการได้เเล้วที่จริงๆนั้นเราจะดูว่าเราต้องทำการ setData เป็นอะไรให้หาอ่านได้จาก [...]]]></description>
			<content:encoded><![CDATA[<p>วันนี้จะมาพูดเรื่องที่ถือว่าเป็นเรื่องสำคัญเลยทีเดียวก็คือเรื่องของ Intent นั้นเองคงสงสัยกันเเล้วสิว่า Intent คืออะไรถ้าจะเอาง่ายมันก็เหมือนกับ ตัวดำเนินงานต่างๆอะไรทำนองนั้น ซึ่งปกติเเล้ว Android เวลาจะมีการเรียกหน้า Activity ใดๆ นั้นจะกระทำโดยการเรียกผ่าน Intent ต่างๆวันนี้เราจะลองเรียกใช้งาน Intent กันเเบบคร่าวๆ จะลองเรียกการใช้งาน Intent ในการส่ง sms กันดูนะครับไปดูกันเลย</p>
<p><span id="more-3184"></span>วิธีการนั้นไม่ยากไม่เย็นเลยเพียงเเค่รู้ว่า Intent ที่ใช้ในการส่ง sms นั้นเป็น Intent อะไรๆอาจจะหาอ่านเอาจาก Doc ที่มีให้มาหรือถ้าเมพๆหน่อยก็เปิด Log ดูก็ได้วิธีนี้ไม่ค่อยเเนะนำ เพราะเดียวจะตาลายก่อนที่จะหาเจอพอดีว่าเเล้วไปดูวิธีการพัฒนากันเลยครับ</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Intent sms_mms <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Intent<span style="color: #009900;">&#40;</span>Intent.<span style="color: #006633;">ACTION_SENDTO</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
sms_mms.<span style="color: #006633;">setData</span><span style="color: #009900;">&#40;</span>Uri.<span style="color: #006633;">parse</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;sms:&quot;</span><span style="color: #339933;">+</span> c.<span style="color: #006633;">getString</span><span style="color: #009900;">&#40;</span>c.<span style="color: #006633;">getColumnIndex</span><span style="color: #009900;">&#40;</span>Phones.<span style="color: #006633;">NUMBER</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//send sms to phone number using Query phone number from database</span>
startActivity<span style="color: #009900;">&#40;</span>sms_mms<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>AndroidManifest</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>uses<span style="color: #339933;">-</span>permission android<span style="color: #339933;">:</span>name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;android.permission.SEND_SMS&quot;</span> <span style="color: #339933;">/&gt;</span>
<span style="color: #339933;">&lt;</span>uses<span style="color: #339933;">-</span>permission android<span style="color: #339933;">:</span>name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;android.permission.READ_CONTACTS&quot;</span> <span style="color: #339933;">/&gt;</span></pre></div></div>

<p>ง่ายๆใ่ช่ใหมครับเเค่นี้เราก็สามารถที่จะทำการส่ง sms ตามเบอร์ที่เราต้องการได้เเล้วที่จริงๆนั้นเราจะดูว่าเราต้องทำการ setData เป็นอะไรให้หาอ่านได้จาก doc เพราะเเต่ละ Intent นั้นจะมีการ setData ที่เเตกต่างกันเเหละที่สำคัญคือจะมี permission ที่เเตกต่างกันด้วยอันนี้ต้องระวังเเละตรวจดูให้ดีนะครับ </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pupasoft.com/2010/01/07/how-to-using-intent-on-android-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>เริ่มต้นการเขียนโปรแกรมบนโทรศัพท์มือถือ</title>
		<link>http://blog.pupasoft.com/2010/01/06/%e0%b9%80%e0%b8%a3%e0%b8%b4%e0%b9%88%e0%b8%a1%e0%b8%95%e0%b9%89%e0%b8%99%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%80%e0%b8%82%e0%b8%b5%e0%b8%a2%e0%b8%99%e0%b9%82%e0%b8%9b%e0%b8%a3%e0%b9%81%e0%b8%81%e0%b8%a3/</link>
		<comments>http://blog.pupasoft.com/2010/01/06/%e0%b9%80%e0%b8%a3%e0%b8%b4%e0%b9%88%e0%b8%a1%e0%b8%95%e0%b9%89%e0%b8%99%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%80%e0%b8%82%e0%b8%b5%e0%b8%a2%e0%b8%99%e0%b9%82%e0%b8%9b%e0%b8%a3%e0%b9%81%e0%b8%81%e0%b8%a3/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 16:46:43 +0000</pubDate>
		<dc:creator>ta</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.pupasoft.com/?p=2983</guid>
		<description><![CDATA[สวัสดีปีใหม่ครับ วันนี้เรามาลองหัดเขียนโปรแกรมในโทรศัพท์มือถือที่รองรับ MIDP ปัจจุบัน มือถือส่วนใหญ่ก็จะรองรับสถาปัตยกรรมของนี้ได้กันหมดแล้วครับ เรามาเริ่มกันเลยดีกว่าเพื่อนๆ เอาเป็นว่าเราจะเขียนโปรแกรมที่รับค่าเข้ามาแล้วทำการเพิ่มค่าขึ้นไปนะครับ (ลืมบอกไปครับว่าวันนี้เราจะเขียนกันใน Netbeans)
1) ก่อนอื่นเราต้อง new project แล้วก็เลือกตามรูป

2)ส่วนนี้ก็ตั้งชื่อโปรเจ็ค แต่ผมเอา Create Hello MIDlet ออก ส่วนใครที่ศึกษาก็เลือกเอาไว้ดูก็ได้ครับ

3) กด Finish เลยจ้า ตอนนี้เราก็จะได้โปรเจ็คที่ไม่มีไฟล์อะไรเลย จากนั้นให้กด คลิกขวาที่ Source Packages แล้วเลือก new-&#62;MIDlet ถ้าไม่มีก็ลองหาใน Other ดูนะครับ

4) ต่อไปก็เขียนโค้ดตามนี้เลยครับ

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.StringItem;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.*;
&#160;
public class Calculator extends MIDlet implements CommandListener &#123;
&#160;
    Display display;
   [...]]]></description>
			<content:encoded><![CDATA[<p>สวัสดีปีใหม่ครับ วันนี้เรามาลองหัดเขียนโปรแกรมในโทรศัพท์มือถือที่รองรับ MIDP ปัจจุบัน มือถือส่วนใหญ่ก็จะรองรับสถาปัตยกรรมของนี้ได้กันหมดแล้วครับ เรามาเริ่มกันเลยดีกว่าเพื่อนๆ เอาเป็นว่าเราจะเขียนโปรแกรมที่รับค่าเข้ามาแล้วทำการเพิ่มค่าขึ้นไปนะครับ (ลืมบอกไปครับว่าวันนี้เราจะเขียนกันใน Netbeans)<span id="more-2983"></span></p>
<p>1) ก่อนอื่นเราต้อง new project แล้วก็เลือกตามรูป</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/01/ta2_1.bmp"><img class="alignnone size-full wp-image-3093" title="ta2_1" src="http://blog.pupasoft.com/wp-content/uploads/2010/01/ta2_1.bmp" alt="" /></a></p>
<p>2)ส่วนนี้ก็ตั้งชื่อโปรเจ็ค แต่ผมเอา Create Hello MIDlet ออก ส่วนใครที่ศึกษาก็เลือกเอาไว้ดูก็ได้ครับ</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/01/ta2_2.bmp"><img class="alignnone size-full wp-image-3094" title="ta2_2" src="http://blog.pupasoft.com/wp-content/uploads/2010/01/ta2_2.bmp" alt="" /></a></p>
<p>3) กด Finish เลยจ้า ตอนนี้เราก็จะได้โปรเจ็คที่ไม่มีไฟล์อะไรเลย จากนั้นให้กด คลิกขวาที่ Source Packages แล้วเลือก new-&gt;MIDlet ถ้าไม่มีก็ลองหาใน Other ดูนะครับ</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/01/ta2_3.bmp"><img class="alignnone size-full wp-image-3107" title="ta2_3" src="http://blog.pupasoft.com/wp-content/uploads/2010/01/ta2_3.bmp" alt="" /></a><br />
4) ต่อไปก็เขียนโค้ดตามนี้เลยครับ</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.microedition.lcdui.Command</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.microedition.lcdui.CommandListener</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.microedition.lcdui.Display</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.microedition.lcdui.Displayable</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.microedition.lcdui.Form</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.microedition.lcdui.StringItem</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.microedition.lcdui.TextField</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.microedition.midlet.*</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Calculator <span style="color: #000000; font-weight: bold;">extends</span> MIDlet <span style="color: #000000; font-weight: bold;">implements</span> CommandListener <span style="color: #009900;">&#123;</span>
&nbsp;
    Display display<span style="color: #339933;">;</span>
    Form main<span style="color: #339933;">;</span>
    Command add, exit<span style="color: #339933;">;</span>
    StringItem output<span style="color: #339933;">;</span>
    <span style="color: #003399;">TextField</span> textField<span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">int</span> tmp<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> Calculator<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        main <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Form<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;เครื่องบวกเลข..&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        add <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Command<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;เพิ่มค่า&quot;</span>, Command.<span style="color: #006633;">OK</span>, <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        exit <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Command<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;ออก&quot;</span>, Command.<span style="color: #006633;">EXIT</span>, <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        output <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> StringItem<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;ผลรวม&quot;</span>, <span style="color: #0000ff;">&quot;0&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        textField <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">TextField</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Input&quot;</span>, <span style="color: #0000ff;">&quot;&quot;</span>, <span style="color: #cc66cc;">10</span>, <span style="color: #003399;">TextField</span>.<span style="color: #006633;">ANY</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        main.<span style="color: #006633;">addCommand</span><span style="color: #009900;">&#40;</span>add<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        main.<span style="color: #006633;">addCommand</span><span style="color: #009900;">&#40;</span>exit<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        main.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span>textField<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        main.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span>output<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        main.<span style="color: #006633;">setCommandListener</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        display <span style="color: #339933;">=</span> Display.<span style="color: #006633;">getDisplay</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        display.<span style="color: #006633;">setCurrent</span><span style="color: #009900;">&#40;</span>main<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> commandAction<span style="color: #009900;">&#40;</span>Command c, Displayable d<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>d <span style="color: #339933;">==</span> main<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>c <span style="color: #339933;">==</span> add<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                add<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>c <span style="color: #339933;">==</span> exit<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
                notifyDestroyed<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> add<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        tmp <span style="color: #339933;">=</span> <span style="color: #003399;">Integer</span>.<span style="color: #006633;">parseInt</span><span style="color: #009900;">&#40;</span>output.<span style="color: #006633;">getText</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #003399;">Integer</span>.<span style="color: #006633;">parseInt</span><span style="color: #009900;">&#40;</span>textField.<span style="color: #006633;">getString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        output.<span style="color: #006633;">setText</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">+</span>tmp<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        textField.<span style="color: #006633;">setString</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> startApp<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> pauseApp<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> destroyApp<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">boolean</span> unconditional<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>เมื่อรันโปรเจ็คจะได้ผลตามข้างล่างนี้ครับ v</p>
<p><a href="http://blog.pupasoft.com/wp-content/uploads/2010/01/ta2_4.bmp"><img class="alignnone size-full wp-image-3151" title="ta2_4" src="http://blog.pupasoft.com/wp-content/uploads/2010/01/ta2_4.bmp" alt="" /></a></p>
<p>และถ้าอยากนำโปรแกรมนี้ลงมือถือนะครับ ก็สามารถนำไฟล์ .jarใน &#8230;\MobileApplication\distไปใส่ในโทรศัพท์ได้เลยครับ</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pupasoft.com/2010/01/06/%e0%b9%80%e0%b8%a3%e0%b8%b4%e0%b9%88%e0%b8%a1%e0%b8%95%e0%b9%89%e0%b8%99%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%80%e0%b8%82%e0%b8%b5%e0%b8%a2%e0%b8%99%e0%b9%82%e0%b8%9b%e0%b8%a3%e0%b9%81%e0%b8%81%e0%b8%a3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to Test Web Service with NetBeans</title>
		<link>http://blog.pupasoft.com/2010/01/06/how-to-test-web-service-with-netbeans/</link>
		<comments>http://blog.pupasoft.com/2010/01/06/how-to-test-web-service-with-netbeans/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 13:26:38 +0000</pubDate>
		<dc:creator>ll~ตัวป่วน~ll</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Web Service]]></category>
<category>่java</category><category>Netbeans</category>
		<guid isPermaLink="false">http://blog.pupasoft.com/?p=3086</guid>
		<description><![CDATA[สืบเนื่องมาจากกระทู้ก่อนหน้านี้ที่ผมได้เเนะนำไปให้ Android เรียก Web Service บางครั้งบางคราวผู้พัฒนาได้ทำการพัฒนาทั้ง Web Service เเละตัว Application บน Android ขึ้นมาเเล้วกลับใช้งานไม่ได้ผล ทำให้ Android ไม่สามารถเรียกใช้งาน Web Service ได้ทำให้เกิดประเด็นขึ้นมาเป็นที่ Application หรือ Web Service กันเเน่ที่ทำงานผิดพลาดวันนี้เลยจะนำเสนอวิธีการ Test Web Service บน NetBeans เเบบง่ายๆสะดวกรวดเร็วมาให้ชมกันครับผม
ก่อนอื่นเลยโดยปกติเเล้ว NetBeans จะยังไม่สามารถ Test Web Service ได้เราจะต้องทำการ Download Plug-in เสียก่อนไปเริ่มกันเลยครับ

เลือก Menu Tools-&#62;Plug-in  จะปรากฏหน้าต่างขึ้นดังรูป เเล้วทำการค้นหา Plug-in ที่ชื่อว่า JAX-RPC WebServices เเล้วทำการติดตั้งเลยครับ
ทำการ New Project Java Application จากนั้นคลิกขวาเเล้วทำการ New Web [...]]]></description>
			<content:encoded><![CDATA[<p>สืบเนื่องมาจากกระทู้ก่อนหน้านี้ที่ผมได้เเนะนำไปให้ Android เรียก Web Service บางครั้งบางคราวผู้พัฒนาได้ทำการพัฒนาทั้ง Web Service เเละตัว Application บน Android ขึ้นมาเเล้วกลับใช้งานไม่ได้ผล ทำให้ Android ไม่สามารถเรียกใช้งาน Web Service ได้ทำให้เกิดประเด็นขึ้นมาเป็นที่ Application หรือ Web Service กันเเน่ที่ทำงานผิดพลาดวันนี้เลยจะนำเสนอวิธีการ Test Web Service บน NetBeans เเบบง่ายๆสะดวกรวดเร็วมาให้ชมกันครับผม</p>
<p><span id="more-3086"></span>ก่อนอื่นเลยโดยปกติเเล้ว NetBeans จะยังไม่สามารถ Test Web Service ได้เราจะต้องทำการ Download Plug-in เสียก่อนไปเริ่มกันเลยครับ</p>
<ol>
<li>เลือก Menu Tools-&gt;Plug-in  จะปรากฏหน้าต่างขึ้นดังรูป เเล้วทำการค้นหา Plug-in ที่ชื่อว่า JAX-RPC WebServices เเล้วทำการติดตั้งเลยครับ<a href="http://blog.pupasoft.com/wp-content/uploads/2010/01/android1.bmp"><img class="aligncenter size-full wp-image-3088" title="android1" src="http://blog.pupasoft.com/wp-content/uploads/2010/01/android1.bmp" alt="" width="521" height="334" /></a></li>
<li>ทำการ New Project Java Application จากนั้นคลิกขวาเเล้วทำการ New Web Service Client จะปรากฏเป็นหน้าต่างดังรูป<a href="http://blog.pupasoft.com/wp-content/uploads/2010/01/android2.bmp"><img class="aligncenter size-full wp-image-3091" title="android2" src="http://blog.pupasoft.com/wp-content/uploads/2010/01/android2.bmp" alt="Android" width="398" height="268" /></a></li>
<li>จากนั้นทำการเพิ่มไฟล์ .wsdl ที่ได้จาก Web Service เลือก Package ให้ถูกต้องเเล้วกด Finish <a href="http://blog.pupasoft.com/wp-content/uploads/2010/01/android3.bmp"><img class="aligncenter size-full wp-image-3096" title="android3" src="http://blog.pupasoft.com/wp-content/uploads/2010/01/android3.bmp" alt="android" width="400" height="270" /></a></li>
<li>หลักจากนั้นไปที่ Class Main คลิกขวาเพื่อทำการ Insert Code  เลือก Call Web Service Operation จะปรากฏเป็น Method ต่างๆซึ่ง Method เหล่านี้ก็ืคือ Method ที่มีให้บริการจาก Web Service นั้นเอง <a href="http://blog.pupasoft.com/wp-content/uploads/2010/01/android4.bmp"><img class="aligncenter size-full wp-image-3098" title="android4" src="http://blog.pupasoft.com/wp-content/uploads/2010/01/android4.bmp" alt="android" width="259" height="312" /></a></li>
<li>ทำการเลือกสัก Method หนึ่ง Application จะทำการ Generate ให้เราโดยอัติโนมัติเลยครับซึ่งเราสามารถเรียกใช้งานบริการจาก Web Service ที่เราต้องการได้เลยผ่านทาง Code ที่ได้้ Generate ออกมาครับ</li>
</ol>
<p>เป็นไงบ้างครับนี้ก็เป็นวิธีการง่ายๆซึ่งเราสามารถทดลอง Web Service ของเราที่ได้สร้างขึ้นมาโดยวิธีการง่ายๆไม่ยากเลยใช่ใหมครับ</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pupasoft.com/2010/01/06/how-to-test-web-service-with-netbeans/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
