<?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>Web Service &#8211; PARINYA.NET</title>
	<atom:link href="https://www.parinya.net/node/category/web-service/feed" rel="self" type="application/rss+xml" />
	<link>https://www.parinya.net</link>
	<description>ทฤษฎีการคำนวณสำหรับคอมพิวเตอร์และทฤษฎีการประมวลผลสารสนเทศ</description>
	<lastBuildDate>Fri, 25 Mar 2022 09:12:04 +0000</lastBuildDate>
	<language>th</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.2</generator>
	<item>
		<title>NSQ &#8211; A reatlime distributed messaging platform</title>
		<link>https://www.parinya.net/node/2982</link>
					<comments>https://www.parinya.net/node/2982#respond</comments>
		
		<dc:creator><![CDATA[ไท้ ปริญญา]]></dc:creator>
		<pubDate>Fri, 25 Mar 2022 09:01:58 +0000</pubDate>
				<category><![CDATA[Web Service]]></category>
		<guid isPermaLink="false">https://www.parinya.net/?p=2982</guid>

					<description><![CDATA[โปรแกรม NSQ เป็นโปรแกรมที]]></description>
										<content:encoded><![CDATA[
<p>โปรแกรม <a href="https://nsq.io/">NSQ</a> เป็นโปรแกรมที่มีคุณสมบัติแจกจ่ายข้อมูล ถูกทำมาอย่างเรียบง่าย ไม่เน้นความปลอดภัย แต่เน้นประสิทธิภาพและประสิทธิผล มันมีส่วนประกอบ 2-3 ส่วนที่สื่อสารกันอยู่ภายใน ผมเลยไปลองแกะ ๆ ดู ว่าส่วนประกอบภายในมันคุยกันยังไงบ้าง ตามรูป</p>



<figure class="wp-block-image size-large"><a href="https://www.parinya.net/wp-content/uploads/2022/03/nsq_component_connection.png"><img fetchpriority="high" decoding="async" width="1024" height="645" src="https://www.parinya.net/wp-content/uploads/2022/03/nsq_component_connection-1024x645.png" alt="" class="wp-image-2984" srcset="https://www.parinya.net/wp-content/uploads/2022/03/nsq_component_connection-1024x645.png 1024w, https://www.parinya.net/wp-content/uploads/2022/03/nsq_component_connection-300x189.png 300w, https://www.parinya.net/wp-content/uploads/2022/03/nsq_component_connection-768x484.png 768w, https://www.parinya.net/wp-content/uploads/2022/03/nsq_component_connection.png 1224w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption>NSQ &#8211; A reatlime distributed messaging platform</figcaption></figure>



<p>มันถูกออกแบบมาให้คุยกันเองภายในด้วย TCP และ HTTP ในขณะที่คุยกับโปรแกรมอื่นด้วย HTTP ซึ่งส่วนตัวมองว่ามันไม่ปลอดภัย คือมันควรจะคุยกับโปรแกรมอื่นได้ด้วย HTTPS เผื่อข้อมูลมันเป็นความลับ จะได้ไม่มีใครแทรกแซงขโมยไปดูได้น่ะ</p>



<p>หลักการทำงานก็ไม่มีอะไรมาก</p>



<ol class="wp-block-list"><li>ผู้แจกข้อมูลหรือ Publisher แจกข้อมูลให้กับโปรแกรม NSQ ด้วยพอร์ต TCP เบอร์ 4151 สื่อสารกันด้วย HTTP Message</li><li>โปรแกรม NSQ ส่งต่อข้อมูลให้กับโปรแกรม NSQLOOKUPD ด้วยพอร์ต TCP เบอร์ 4160 สื่อสารกันด้วย Message ธรรมดา</li><li>ผู้รับข้อมูลหรือ Subscriber รับแจกข้อมูลจากโปรแกรม NSQLOOKUPD ด้วยพอร์ต TCP เบอร์ 4161 สื่อสารกันด้วย HTTP Message โดยจะเป็นฝ่ายเรียกข้อมูลทุก ๆ 1 นาที (Polling ทุก 1 นาที)</li><li>ผู้เฝ้าตรวจสอบใช้เว็บบราวเซอร์ ติดต่อไปยังโปรแกรม NSQADMIN ด้วยพอร์ต TCP เบอร์ 4171 สื่อสารกันด้วย HTTP Message</li><li>โปรแกรม NSQADMIN ติดต่อไปยังโปรแกรม NSQLOOKUPD ด้วยพอร์ต TCP เบอร์ 4161 สื่อสารกันด้วย HTTP Message แล้วเอาข้อมูลที่ได้รับกลับมา ไปป้อนกลับให้ผู้เฝ้าตรวจสอบที่เฝ้าอยู่ที่หน้าจอเว็บบราวเซอร์</li></ol>



<p>มีคนบอกว่าไปใช้ <a href="https://kafka.apache.org/">Kafka</a> หรือ <a href="https://pulsar.apache.org/">Pusar</a> น่าจะเวิร์กกว่าใช้ <a href="https://nsq.io/">NSQ</a> </p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.parinya.net/node/2982/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>คุยไปเรื่อย Facebook Application</title>
		<link>https://www.parinya.net/node/1563</link>
					<comments>https://www.parinya.net/node/1563#comments</comments>
		
		<dc:creator><![CDATA[ไท้ ปริญญา]]></dc:creator>
		<pubDate>Sun, 17 Jul 2011 10:31:31 +0000</pubDate>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Video Log]]></category>
		<category><![CDATA[Web Service]]></category>
		<category><![CDATA[คุยไปเรื่อย]]></category>
		<category><![CDATA[facebook application]]></category>
		<guid isPermaLink="false">http://www.tai-parinya.com/?p=1563</guid>

					<description><![CDATA[พอดีผมเพิ่งซื้อขาตั้งกล้อ]]></description>
										<content:encoded><![CDATA[<p>พอดีผมเพิ่งซื้อขาตั้งกล้องมา เห่อมาก เลยเอามาลองทำ Video Log ดู เพราะเปิดบล็อกแห่งนี้มาก็ 6 ปีแล้ว ไม่อยากนำเสนอแบบซ้ำซากจำเจแล้ว เลยซัดซะหนึ่งดอก</p>
<p>โดยจะชวนพวกเราคุยสั้น ๆ เกี่ยวกับ Facebook Application แบบว่าสั้นจริง ๆ เพราะแบตกล้องมันเล่นหมดดื้อ ๆ ก็เลยถ่ายมาได้แค่นี้</p>
<p>httpv://www.youtube.com/watch?v=9ZlxrYeUYTg</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.parinya.net/node/1563/feed</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>การติดตั้ง Web Application บน Infrastructure แบบเปิด</title>
		<link>https://www.parinya.net/node/1564</link>
					<comments>https://www.parinya.net/node/1564#comments</comments>
		
		<dc:creator><![CDATA[ไท้ ปริญญา]]></dc:creator>
		<pubDate>Mon, 11 Jul 2011 15:03:55 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Internetworking]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Service]]></category>
		<category><![CDATA[infrastructure]]></category>
		<category><![CDATA[web application]]></category>
		<guid isPermaLink="false">http://www.tai-parinya.com/?p=1564</guid>

					<description><![CDATA[หลายคนเขียน Web Applicati]]></description>
										<content:encoded><![CDATA[<p>หลายคนเขียน Web Application เป็น, หลายคนเขียนเกมแบบ Web Application ได้ และหลายคนก็เขียน Web Application ไว้ทำงานบน Facebook Platform ได้ แต่ก็ไม่น่าเชื่อว่ามีอยู่หลายคนที่กลับไม่รู้ว่าจะจัดวาง Infrastructure ให้กับ Web Application ของตนเองยังไงดี เพื่อให้ผู้ใช้งานจากทั่วทุกสารทิศในโลกกลม ๆ ใบนี้ เข้าถึง Web Application ที่ตัวเองสร้างขึ้นได้!!!</p>
<p>งั้นมาดูวิธีของผมกันดีกว่า เอาแบบจากประสบการณ์จริงกันไปเลย</p>
<ol>
<li>ต้องเลือกก่อนว่าจะเอา Web Application ของเราไปขับเคลื่อนที่ไหน อย่างกรณีของผม ผมใช้บริการ Cloud Computing ของ Amazon Web Services เป็นตัวจัดการเรื่องนี้ โดยเน้นใช้งานแต่บริการของ Amazon EC2 เพื่อเอามาทำเป็น Instance Server จำนวน 2 Instance ให้ Instance นึงไว้ขับเคลื่อน Application และอีก Instance นึงไว้ขับเคลื่อน Database โดยผมเลือกใช้งานโซนแคลิฟอร์เนียเหนือ และเลือกใช้ Image แบบ LAMP หมายเลข ami-1d6a3858 ซึ่งเป็น LAMPStack ที่มีระบบปฏิบัติการเป็น Ubuntu รุ่น 10.04 แบบ 32 bit สอดไส้ด้วย PHP รุ่น 5.3 มี Virtual Core 1 ECU และ RAM 1.7 GB (เล็กชิบเป๋ง)</li>
<li>จากนั้นก็โยนโค้ดไว้ที่ Application Instance และโยนฐานข้อมูลไปไว้ที่ Database Instance โดยที่ Database Instance จะพิเศษหน่อย เพราะผมจะไม่ใช้เนื้อที่ของ Database Instance เพื่อเก็บฐานข้อมูล แต่จะใช้ Amazon Elastic Block Store ที่ผมผูกไว้กับ Database Instance เป็นตัวเก็บข้อมูลแทน</li>
<li>พอได้ขุมพลังในการขับเคลื่อนและได้ทำการเชื่อมโยง Application Instance กับ Database Instance ผ่านการ Configure อะไรหลาย ๆ อย่างแล้ว ทีนี้ก็ต้องมาดูเรื่อง Domain บ้าง โดยผมได้จดโดเมนเอาไว้ก่อนเรียบร้อยแล้วที่ Go Daddy</li>
<li>คราวนี้ก็ต้องเอา Domain ที่จดทะเบียนไว้ ไปผูกโยงเข้ากับ Application Instance ที่เตรียมเอาไว้ก่อนแล้ว โดยผมได้เลือกใช้บริการของ Dynamic DNS แบบ Custom DNS Package จากนั้นก็ Configure ไำอ้เจ้า CNAME กับ A-Records เพื่อเชื่อมโยงระหว่างชื่อ Domain กับเลข IP ของ Application Instance เข้าไว้ด้วยกัน</li>
<li>และท้ายที่สุด ก็ต้องกลับไป Configure ที่ Go Daddy เพื่อบอกให้มันรู้ว่า ตกลง Domain ที่ผมจดทะเบียนไว้ มันเชื่อมโยงไปยัง Primary Name Server ใด ซึ่งในที่นี้ก็คือ Primary Name Server ของ Dynamic DNS นั่นเอง โดยผมใส่ลงไป 5 Name Server เลย ใช้มันให้คุ้ม ทำ Load Balancing แบบเว่อร์ ๆ เพราะผมเสียดายมาก เนื่องจาก Package ที่จ่ายตังค์ไป มันเปิดให้เรากำหนด DNS ได้ถึง 75+ Domain แต่ประทานโทษ ผมใช้มันสำหรับ Domain เดียว โคตรเสียดายตังค์เลย T-T</li>
</ol>
<p>เมื่อเราทำมาถึงขั้นตอนนี้ ก็ถือว่าทุกอย่างเรียบร้อยหมดแล้ว คราวนี้เราก็จะสามารถลองใช้งาน Web Application ของเราได้ โดยการเปิด Web Browser แล้วพิมพ์ URL ของ Domain เราเข้าไป แล้วรอซักชั่วอึดใจมด จากนั้น Web Application ของเราก็จะปรากฎขึ้นมา &#8230; อย่างสวยงามเลยทีเดียวเชียว!!!</p>
<p>เอาเป็นว่าใครก็ตามที่ยังไม่รู้ ก็คงได้รู้แล้วเน้อะ อ้อ แล้วอีกอย่าง สิ่งที่ต้องรู้อีกอย่างหนึ่งก็คือ ไอ้ข้างบนที่ผมเล่ามา มันต้องเสียตังค์ด้วยอ่ะ T-T แพงซะด้วยสิ ดังนั้น ถ้าคิดจะขับเคลื่อน Web Application แล้วล่ะก็ อย่าลืมหาตังค์มาเลี้ยงมันด้วยเน้อ</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.parinya.net/node/1564/feed</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>ทำงานคนเดียว มันทำได้ แต่เสร็จช้า</title>
		<link>https://www.parinya.net/node/1561</link>
					<comments>https://www.parinya.net/node/1561#comments</comments>
		
		<dc:creator><![CDATA[ไท้ ปริญญา]]></dc:creator>
		<pubDate>Thu, 30 Jun 2011 07:52:27 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Service]]></category>
		<guid isPermaLink="false">http://www.tai-parinya.com/?p=1561</guid>

					<description><![CDATA[ผมยังคงง่วนอยู่กับการทำเก]]></description>
										<content:encoded><![CDATA[<p>ผมยังคงง่วนอยู่กับการทำเกม Beelony สำหรับเล่นบน Facebook อยู่ครับ ทำมาตั้งแต่เดือนกันยายน 2553 จนวันนี้จะหมดเดือนมิถุนายน 2554 แล้ว ก็ยังเอาขึ้นใช้จริงไม่ได้อยู่ดี เพราะช่วงที่ผ่านมาผมต้องเสียเวลาไปหลายอย่าง ไม่ว่าจะเป็น &#8230;</p>
<ul>
<li>การประเมินและทดสอบ Instance บน Amazon EC2 ว่าต้องใช้กี่ตัว แล้วก็ใช้ Instance ระดับไหนดี ถึงจะตอบสนองกับตัวเกมได้โดยจ่ายตังค์น้อยที่สุด</li>
<li>การทำ Configuration Note เพื่อเอาไว้จัดการกับ Amazon EC2 ในกรณีที่ต้องเปลี่ยน Instance เพื่อควบคุมต้นทุน โดยให้การเปลี่ยน Instance และ Configure เสียเวลาน้อยที่สุด</li>
<li>การทำ Backdoor ให้กับตัวเกม เพื่อให้ข้ามขั้นตอนในการทดสอบได้ ซึ่งเดิมไม่ได้ทำเอาไว้ ทำให้ต้องทดสอบหูตาเหลือก กว่าจะไปถึงจุดที่อยากจะทดสอบจริง ๆ ได้</li>
<li>การหา Bug ทั้งหลายทั้งปวงที่ยังคงหลบซ่อนอยู่ในตัวเกม โดยเฉพาะตอนที่ผู้เล่นเข้าใช้ทรัพยากรแหล่งเดียวกัน</li>
<li>การซ่อมแซมคุณสมบัติของเกม ที่เล่นแล้วทำให้ไม่ลื่นไหล ขัดหูขัดตา ไม่อำนวยความสะดวก</li>
<li>การเปลี่ยนกลไกจาก PayPal มาเป็น Facebook Credits เพื่อหาเงินมาหล่อเลี้ยงตัวเกม</li>
<li>การเพิ่มคุณสมบัติดึงดูดใจ ที่ทำให้ผู้เล่นไม่รู้สึกว่ากำลังเล่นเกมที่เล่นสบายหรือเล่นยากจนเกินไป</li>
</ul>
<p>ผ่านมาจะปีนึงแล้ว ผมผลิตชิ้นงานให้กับเกมนี้ไปเป็นจำนวนมาก นับได้เป็นจำนวนเกินร้อยไฟล์ ไม่ว่าจะเป็นการโค้ด PHP + jQuery + CSS, การวาดรูป, การทำเอกสาร Configuration, การทำ Mockup, การทำ Prototype, การทำ Tools เสริม, การทำเอกสารออกแบบฐานข้อมูล, การเตรียมข้อมูลหลักสำหรับบรรจุในฐานข้อมูล เป็นต้น</p>
<p>ตอนนี้ผมเดาเอาเองว่าผมคงจะใกล้ทำมันเสร็จแล้วล่ะ แล้วก็หวังว่าจะได้มีเวลาว่าง ๆ มานั่งเขียนบล็อกเล่น ๆ ต่อ อือม แต่ในความเป็นจริงมันคงไม่ง่ายแบบนั้น เพราะพอเอาเกมขึ้นจริงแล้ว ก็ยังต้องมีการทำการตลาด, การพูดคุยกับผู้เล่น, การซ่อมแซมส่วนที่สึกหรอ และการเพิ่มคุณสมบัติใหม่ ๆ ให้กับเกมอยู่อย่างสม่ำเสมอ</p>
<p>การทำเกมเป็นงานอดิเรก มันทำคนเดียวได้ แต่มันเสร็จช้าว่ะ แย่จริง ๆ นี่แหล่ะถึงเป็นเหตุผลว่าทำไมเขาต้องทำเป็นธุรกิจ เพราะมันจะได้เสร็จเร็ว ๆ ไง!!!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.parinya.net/node/1561/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>ใช้ Facebook Credits</title>
		<link>https://www.parinya.net/node/1543</link>
					<comments>https://www.parinya.net/node/1543#respond</comments>
		
		<dc:creator><![CDATA[ไท้ ปริญญา]]></dc:creator>
		<pubDate>Mon, 18 Apr 2011 05:07:47 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[Electronic Money]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Feature]]></category>
		<category><![CDATA[Web Service]]></category>
		<category><![CDATA[WorkFlow]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[facebook credits]]></category>
		<category><![CDATA[facebook credits api]]></category>
		<guid isPermaLink="false">http://www.tai-parinya.com/?p=1543</guid>

					<description><![CDATA[ด้วยนโยบายอันเข้มงวดเด็ดข]]></description>
										<content:encoded><![CDATA[<p>ด้วยนโยบายอันเข้มงวดเด็ดขาดและโลภของ Facebook ซึ่งกำหนดให้ผู้พัฒนาเกมบน Facebook ต้องใช้ Facebook Credits เพื่อเป็น &#8220;เงินตราเสมือนจริง&#8221; หรือ &#8220;วิธีการชำระเงิน&#8221; บน Facebook แต่เพียงช่องทางเดียว จึงทำให้เกิดความเดือดร้อนเล็ก ๆ แก่ผู้พัฒนาเกมบน Facebook ที่จำต้องเปลี่ยนแปลง &#8220;วิธีการชำระเงิน&#8221; ของตัวเอง มาใช้ Facebook Credits แทน รวมทั้งความเดือดร้อนใหญ่ ๆ ที่ต้องจ่ายส่วยให้กับทาง Facebook ด้วย!!!</p>
<p>ผมเองก็ต้องเปลี่ยนกลไกของเกมของผมเหมือนกัน คือเปลี่ยนจาก &#8220;วิธีการชำระเงิน&#8221; ด้วย PayPal มาเป็น Facebook Credits โดยขอคงสิทธิ์ของ &#8220;เงินตราเสมือนจริง&#8221; ในเกมของตนเองเอาไว้ ไม่ใช้ Facebook Credits เพื่อเป็น &#8220;เงินตราเสมือนจริง&#8221; แต่ประการใด!!!</p>
<p>ทีนี้โดยทางเทคนิคต้องทำยังไงบ้างล่ะ? ก็ต้องโยนโค้ดที่ใช้เชื่อมโยงกับ Web Services ของ PayPal ทิ้งไปสินะ แล้วจากนั้นก็เชื่อมโยงกับ Facebook Credits ผ่านทาง SDK (Javascript + PHP) ที่ทาง Facebook จัดเตรียมเอาไว้ให้ พร้อมทั้งเข้าไปอ่าน<a href="http://developers.facebook.com/docs/creditsapi/">เอกสารของ Facebook</a> เพื่อทำความเข้าใจว่ากลไกของ Facebook Credits อ่ะมันเป็นยังไง</p>
<p>Facebook เองก็ทำ Flowchart เพื่ออธิบายกลไกให้เราเข้าใจ Facebook Credits เอาไว้บ้างเหมือนกัน แต่ประทานโทษอ่ะ มันไม่เห็นจะสอดคล้องกับความเป็นจริงในทางเทคนิคของโค้ดโปรแกรมเล้ย ดังนั้น ผมก็เลยต้องวาดเพื่อทำความเข้าใจเอง แบบข้างล่างนี้</p>
<p><figure id="attachment_1544" aria-describedby="caption-attachment-1544" style="width: 506px" class="wp-caption aligncenter"><a href="https://www.parinya.net/wp-content/uploads/2011/04/facebook_credits.png"><img decoding="async" src="https://www.parinya.net/wp-content/uploads/2011/04/facebook_credits.png" alt="" title="Facebook Credits" width="506" height="534" class="size-full wp-image-1544" srcset="https://www.parinya.net/wp-content/uploads/2011/04/facebook_credits.png 506w, https://www.parinya.net/wp-content/uploads/2011/04/facebook_credits-284x300.png 284w" sizes="(max-width: 506px) 100vw, 506px" /></a><figcaption id="caption-attachment-1544" class="wp-caption-text">Facebook Credits</figcaption></figure></p>
<p>และนอกจากนี้ ผมยังได้พบจุดสังเกตในทางเทคนิค เกี่ยวกับ Facebook Credits อีกหลายอย่าง ไม่ว่าจะเป็น &#8230;</p>
<ul>
<li>ไม่ว่าผู้เล่นจะซื้อหรือไม่ซื้อของ Facebook ก็จะสร้างหมายเลข Order ให้ ถ้ามีการร้องขอ Dialog จาก Facebook</li>
<li>Facebook Credits API จะส่งข้อมูลที่ไม่ถูกเข้ารหัสมาหนึ่งชุด และข้อมูลที่ถูกเข้ารหัสมาอีกหนึ่งชุด กลับมาที่ Callback ของเรา (ภายหลังจากการร้องขอ Dialog) และเมื่อนำข้อมูลชุดที่สองที่ถูกเข้ารหัสมาถอดรหัสออก เราจะพบว่าข้อมูลที่ได้มันเหมือนเป๊ะกับชุดที่หนึ่งที่ไม่ถูกเข้ารหัสเลยว่ะ ซึ่งก็หมายความว่า Facebook จะให้เราตรวจสอบนั่นเอง ว่าเรากำลังโดน Hack หรือเปล่า โดนโกงโดยการปลอม JSON หรือเปล่า อะไรประมาณนี้</li>
<li>ตอนวาง Order ผ่านมาเป็น Callback เข้า PHP แต่ตอนจบ Order ดันผ่านมาเป็น Callback ใน Javascript แหม ทำได้ยอกย้อนจริง ๆ</li>
<li>ต้องไม่เขียนโค้ดให้เว่อร์เกินกว่าที่ Facebook Credits API กำหนดไว้ ยกตัวอย่างเช่น ถ้าเขาให้กำหนด Callback เป็น Function แยกต่างหาก ก็ต้องทำตามเขา อย่าบ้าพลังไปผนวก Callback เข้ากับ Function ที่จะเรียกมัน หรือพูดง่าย ๆ ก็คือ Facebook Credits API มันยังอ่อนแออยู่ ยังมีจุกจิกปัญหาเล็ก ๆ น้อยอยู่</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.parinya.net/node/1543/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>วิธีใช้ Amazon EC2 แบบยืดหยุ่น</title>
		<link>https://www.parinya.net/node/1491</link>
					<comments>https://www.parinya.net/node/1491#comments</comments>
		
		<dc:creator><![CDATA[ไท้ ปริญญา]]></dc:creator>
		<pubDate>Sun, 26 Dec 2010 04:45:09 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[Internetworking]]></category>
		<category><![CDATA[Web Service]]></category>
		<category><![CDATA[WorkFlow]]></category>
		<category><![CDATA[amazon ec2]]></category>
		<category><![CDATA[amazon web services]]></category>
		<category><![CDATA[aws]]></category>
		<guid isPermaLink="false">http://www.tai-parinya.com/?p=1491</guid>

					<description><![CDATA[คิดว่าคงมีหลาย ๆ คนที่เข้]]></description>
										<content:encoded><![CDATA[<p>คิดว่าคงมีหลาย ๆ คนที่เข้าใจแนวคิดว่า Amazon EC2 เป็นบริการ Cloud Computing ซึ่งเป็นอะไรที่ยืดหยุ่น ขยายได้ หดได้ ตามการใช้งานของเรา</p>
<p>แต่พอเจาะถามลงไปลึก ๆ ในรายละเอียด ก็อาจจะเกิดอาการแบ๊ะ ๆ ว่า แล้วมันต้องทำยังไงเหรอ ถึงจะเอาไอ้เครื่องมือที่มันยืดหยุ่น มาทำให้เกิดประโยชน์กับตัวเรา</p>
<p>งั้นมาดูแก่นแท้ของวิธีใช้ Amazon EC2 ที่ยืดหยุ่นกันจริง ๆ กันดีกว่า &#8230;</p>
<p><a href="https://www.parinya.net/wp-content/uploads/2010/12/aws.jpg"><img decoding="async" src="https://www.parinya.net/wp-content/uploads/2010/12/aws.jpg" alt="" title="Amazon Web Services" width="550" height="437" class="aligncenter size-full wp-image-1492" /></a></p>
<p>จากภาพข้างบนจะเห็นว่า วิธีออกแบบเพื่อใช้งาน Amazon EC2 ที่ดูที่สุด คือการออกแบบให้แต่ล่ะชิ้นส่วน &#8220;แยกจากกัน&#8221;</p>
<p>โดยเราต้องมองว่า กระดูกสันหลังหลักที่ทำให้ Amazon EC2 ยืดหยุ่นก็คือ Instance ซึ่งเราสามารถเลือกได้หลายระบบปฏิบัติการ เช่น อาจเป็น Linux หรือ Windows, เลือกได้หลายสมรรถนะ เช่น เอา RAM เยอะ ๆ หรือเอา CPU เยอะ ๆ หรือเอาทั้งสองอย่าง</p>
<p>ดังนั้น ถ้าส่วนของ Instance คือส่วนที่เราต้องเปลี่ยนไปเปลี่ยนมาบ่อย ๆ ตามขนาดการใช้งานของเรา งั้นเราก็<strong>ไม่ควร</strong>จะเอา Script หรือ File อื่น ๆ หรือ Database (ซึ่งก็คือชุดของ File นั่นแหล่ะ) ไปวางไว้ใน Instance ที่จะทำเป็น Web Container หรือ RDBMS หากแต่ใช้วิธีวางไว้ใน Elastic Block Storage แล้วทำการ Mount ไอ้เจ้า Elastic Block Storage เข้ากับ Instance โดยให้มันมองเห็นเป็น Device นึงแทน (เหมือน External Hard Disk)</p>
<p>จากนั้นก็เข้าไปที่ Apache เพื่อ Configure ให้อ่าน Script จาก Device ที่ Mount เข้ามาใหม่ และเข้าไปที่ MySQL เพื่อ Configure ให้อ่าน/เขียน Databases จาก Device ที่ Mount เข้ามาใหม่ ซึ่งอาจจะเป็นที่เดียวกับ Script หรือคนล่ะที่ก็ได้ อันนี้แล้วแต่เราจะออกแบบ</p>
<p>โดยส่วนตัวผมมองว่าภาพข้างบนเป็นพื้นฐานของสิ่งที่ควรจะเป็น สำหรับระบบที่จะมีคนเข้าใช้งานประมาณซัก &#8230; 30,000 คนต่อวัน โดยมีการใช้งานพร้อมกัน 300 คนต่อช่วงเวลา!!!</p>
<p>อือม แต่เอาเข้าจริงแล้วก็ไม่แน่นะ อาจจะใช้ของน้อยกว่านี้ก็ได้ อันนี้แล้วแต่ความเก๋าของแต่ล่ะคน เช่น อาจจะเอา Apache, PHP และ MySQL ไว้บน Instance เดียวกัน แล้วเปิดใช้งาน Elastic Block Storage อันเดียว เพื่อเอาไว้ใส่ทั้ง Script และ Database แล้วพอวันดีคืนดีระบบรับไม่ไหว ก็ค่อยมาขยายกันอีกทีทีหลัง อะไรประมาณนี้</p>
<p>หุ ๆ คนเราอ่ะนะ ถ้าได้ของฟรี ๆ มาใช้ คงไม่ต้องใช้สมองคิดขนาดนี้หรอกเน้อะ?</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.parinya.net/node/1491/feed</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>วิธีใช้ Amazon EC2 เพื่อประมวลผล Facebook Application</title>
		<link>https://www.parinya.net/node/1436</link>
					<comments>https://www.parinya.net/node/1436#comments</comments>
		
		<dc:creator><![CDATA[ไท้ ปริญญา]]></dc:creator>
		<pubDate>Thu, 09 Sep 2010 10:32:38 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Feature]]></category>
		<category><![CDATA[Web Service]]></category>
		<category><![CDATA[amazon ec2]]></category>
		<category><![CDATA[ประมวลผล]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[facebook application]]></category>
		<category><![CDATA[web application]]></category>
		<guid isPermaLink="false">http://www.tai-parinya.com/?p=1436</guid>

					<description><![CDATA[ผมเขียนภาพข้างล่างนี้ขึ้น]]></description>
										<content:encoded><![CDATA[<p>ผมเขียนภาพข้างล่างนี้ขึ้นมาอย่างพื้นฐานและง่ายที่สุด เพื่อแจกแจงว่า ถ้าหากเราต้องการใช้ Amazon EC2 เพื่อประมวลผล Facebook Application แล้วล่ะก็ มันจะมีรูปภาพออกมาเป็นยังไง?</p>
<p><a href="https://www.parinya.net/wp-content/uploads/2010/09/facebook_via_aws.jpg"><img loading="lazy" decoding="async" src="https://www.parinya.net/wp-content/uploads/2010/09/facebook_via_aws.jpg" alt="" title="Facebook โดย Amazon Web Service" width="638" height="295" class="aligncenter size-full wp-image-1437" srcset="https://www.parinya.net/wp-content/uploads/2010/09/facebook_via_aws.jpg 638w, https://www.parinya.net/wp-content/uploads/2010/09/facebook_via_aws-300x138.jpg 300w" sizes="auto, (max-width: 638px) 100vw, 638px" /></a></p>
<p>อธิบายภาพข้างบนสั้น ๆ ได้ดังนี้</p>
<ol>
<li>คุณต้องติดตั้ง Facebook Canvas เป็น, เข้าใจใน Facebook Graph API และเข้าใจใน Facebook Client Libraries (ทั้งหมดฟรี)</li>
<li>คุณต้องจดทะเบียน Domain (เสียตังค์) กับ Domain Registrar (Domain ที่ว่าก็คือ ไอ้พวก http://www.yourdomain.com อะไรเทือกนั้นแหล่ะ) เช่น Godaddy เป็นต้น</li>
<li>คุณต้องจดทะเบียน DNS (เสียตังค์) กับ DNS Provider เพื่อที่คุณจะได้ผูก Domain ของคุณเข้ากับ Amazon EC2 ได้</li>
<li>คุณต้องสมัครเพื่อใช้งาน Amazon EC2 (ไม่ต้องเสียตังค์) แล้วเข้าไปสร้าง Application + Db Instance (เสียตังค์ตามการใช้งาน) โดยสร้างขึ้นมาแค่ Instance เดียวก็พอ (ต่อไปถ้าคุณเก่ง คุณสามารถสร้างเยอะ ๆ ก็ได้นะเออ)</li>
<li>คุณต้องสร้าง Elastic IP ขึ้นมา (เสียตังค์) เพื่อให้ Instance ของคุณ สามารถติดต่อกับโลกภายนอกได้ โดยสร้างแค่ IP เดียวก็พอ (ก็ใช้แค่ Instance เดียวไง ก็เลยใช้แค่ IP เดียวก็พอ)</li>
<li>บังเอิญว่า Instance ใน Amazon EC2 เป็นพวกความจำสั้น ดังนั้น ถ้ามันโดน Restart หรือ Terminate เมื่อไหร่ล่ะก็ มันจะลืมทุกอย่างไปหมดเลย (รวมทั้ง Code และ DB ด้วย) ดังนั้น น่าจะเป็นการดี หากเราจะสร้าง Elastic Block Store ขึ้นมา (เสียตังค์) เพื่อเอามาเป็นที่พักข้อมูลจาก Instance เผื่อว่า Instance มันล่มหรืออะไรยังไง มันจะได้มีตัวสำรอง</li>
<li>แต่ถ้าคุณคิดว่า Elastic Block Store จะไม่ชัวร์ กลัวว่าตัวมันเองก็อาจจะล่ม คุณก็สามารถจะติดตั้ง Snapshot To S3 (เสียตังค์) เพื่อให้มันทยอยโอนข้อมูลของคุณ ไปเก็บไว้ใน Bucket (เสียตังค์) ของ Amazon S3 ก็ได้ (คุณต้องสมัครเพื่อขอใช้ Amazon S3 อันนี้ฟรี ไม่เสียตังค์)</li>
</ol>
<p>สรุปว่าจะประมวลผล Facebook Application บน Amazon EC2 ก็ต้องจ่ายพอตัวเหมือนกัน แต่ถ้าทำออกมาดี ๆ ก็น่่าจะคุ้มอ่ะนะ เพราะถ้าให้ไปประมวลผลบน Shared Hosting ก็คงไม่ได้ เพราะทรัพยากรจำกัดจำเขี่ยเหลือเกิน เกิดผีเข้าผีออก มีคนเข้า Facebook Application ของเราเยอะขึ้นมา ไปทำ Shared Hosting เขาล่ม เดี๋ยวเขาจะเฉดหัวออกมาแทบไม่ทัน</p>
<p>ส่วนจะไปประมวลผลบน Dedicated Server หรือ Virtual Private Server ก็ยุ่งยาก ต้องติดตั้งทุกอย่างเองทั้งหมด (Amazon EC2 มันเทพ สั่งสร้าง Instance โป้งเดียว มันติดตั้งระบบปฏิบัติการและปรับแต่งทุกอย่างให้หมดเลย)</p>
<p>ยิ่งเป็น Co-Location ก็ยิ่งแล้วใหญ่ เพราะเดี๋ยวนี้ฮาร์ดแวร์มันทันสมัยขึ้นแทบทุกวี่ทุกวัน จะให้เช่าซื้อ Server มาเป็นของตัวเองมันจะไม่คุ้ม แบบว่ายังไม่ทันไร Server ที่มีก็ตกยุคซะแล้ว หรือถ้าไม่ตกยุค แต่ต้องมาอัด RAM ทำ Server Farm เองก็หลังแอ่นเหมือนกัน</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.parinya.net/node/1436/feed</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>วิธีเขียน Facebook Application แบบ Web Application ภาคเร่งรัด</title>
		<link>https://www.parinya.net/node/1409</link>
					<comments>https://www.parinya.net/node/1409#comments</comments>
		
		<dc:creator><![CDATA[ไท้ ปริญญา]]></dc:creator>
		<pubDate>Fri, 03 Sep 2010 05:10:27 +0000</pubDate>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Service]]></category>
		<category><![CDATA[เขียนโปรแกรม]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[facebook application]]></category>
		<category><![CDATA[web application]]></category>
		<guid isPermaLink="false">http://www.tai-parinya.com/?p=1409</guid>

					<description><![CDATA[ถ้าคุณเป็นคนหนึ่งที่สนใจอ]]></description>
										<content:encoded><![CDATA[<p>ถ้าคุณเป็นคนหนึ่งที่สนใจอยากจะเขียน Facebook Application คุณจำเป็นที่จะต้องมีพื้นฐานดังต่อไปนี้</p>
<ol>
<li>คุณต้องรู้และเข้าใจภาษา PHP ในระดับหนึ่ง (ยิ่งเก่งยิ่งดี) เพราะมันเป็นภาษาทางการในการพัฒนา Facebook Application (ภาษาอื่นก็มี แต่ไม่นับเป็นภาษาทางการ)</li>
<li>คุณต้องรู้และเข้าใจหลักการของ Object Oriented Programming ซึ่งผมคิดว่าคนที่เรียนคอมพิวเตอร์มาทุกคน ล้วนเคยถูกกำหนดให้เรียนวิชานี้ทั้งนั้น (สมัยนี้นะ) ส่วนจะเรียนเป็นบทหนึ่งบทในรายวิชา หรือจะเรียนเป็นรายวิชาสามหน่วยกิต อันนี้ก็สุดแล้วแต่</li>
<li>คุณต้องรู้และเข้าใจภาษา Javascript ในระดับหนึ่ง (ยิ่งเก่งยิ่งดี) เพราะมันเป็นภาษาที่สร้างลูกเล่นเสริมให้กับ Facebook Application ของคุณ</li>
<li>คุณต้องรู้และเข้าใจหลักการของ Web Service เพราะมันเป็นกุญแจสำคัญในการสื่อสารระหว่าง Facebook Application กับ Facebook Platform</li>
</ol>
<p>ทีนี้เรามาดูเรื่องที่น่าสนใจเรื่องหนึ่งกัน นั่นก็คือ Facebook Application มีทั้งหมด 3 แบบ แบบแรกเป็น Desktop Application, แบบสองเป็น Web Application และแบบสามเป็น Mobile Application</p>
<p>แต่ล่ะแบบล้วนมีพื้นฐานทาง Web Service ที่เหมือนกัน แต่ว่ามีกลไกปลีกย่อยที่แตกต่างกันตาม Platform ของตัวเอง โดยหัวข้อนี้จะเน้นเกี่ยวกับแบบ Web Application เป็นสำคัญ</p>
<p>วิธีการเรียนรู้ที่ดีที่สุดก็คือการเรียนจากคนอื่น (ผมขี้เกียจเขียนอธิบาย) ดังนั้น ขอให้พวกเราเข้าไปดูบทความที่กูรูเขียนเอาไว้แล้วก่อน (เพื่อเป็นการปูพื้นฐาน) ตามหัวข้อข้างล่างนี้</p>
<p><span id="more-1409"></span></p>
<ol>
<li><a href="http://blog.levelup.in.th/2009/06/30/start-facebook-application-tutorial-for-beginner-php%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%B1%E0%B8%9A%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%80%E0%B8%82/">เริ่มต้นกับการเขียน Facebook Application สำหรับผู้เริ่มต้น (PHP)</a></li>
<li><a href="http://blog.levelup.in.th/2009/07/31/start-facebook-application-tutorial-for-beginner-php-2%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%B1%E0%B8%9A%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%80/">เริ่มต้นกับการเขียน Facebook Application สำหรับผู้เริ่มต้น (PHP) (2)</a></li>
<li><a href="http://blog.levelup.in.th/2009/08/27/start-facebook-application-tutorial-for-beginner-php-3%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%B1%E0%B8%9A%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%80/">เริ่มต้นกับการเขียน Facebook Application สำหรับผู้เริ่มต้น (PHP) (3)</a></li>
<li><a href="http://blog.levelup.in.th/2009/11/30/start-facebook-application-tutorial-for-beginner-php-4%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%B1%E0%B8%9A%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%80/">เริ่มต้นกับการเขียน Facebook Application สำหรับผู้เริ่มต้น (PHP) (4)</a></li>
<li><a href="http://blog.levelup.in.th/2010/08/30/start-facebook-application-tutorial-for-beginner-php-updated-graph-api%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%B1%E0%B8%9A%E0%B8%81%E0%B8%B2%E0%B8%A3/">เริ่มต้นกับการเขียน Facebook Application สำหรับผู้เริ่มต้น (PHP) ฉบับปรับปรุง Graph API</a></li>
</ol>
<p>โอเค ผมจะัถือว่าพวกเราได้อ่านบทความในย่อหน้าข้างบนครบทุกอันแล้วนะ ทีนี้เรามาอธิบายส่วนของพื้นฐาน, การขยายความ และ ส่วนเสริมกันดีกว่า</p>
<p>สิ่งแรกที่จะบอกก็คือ Facebook เขาก็มีพัฒนาการของเขา ดังนั้น เขาย่อมไม่หยุดอยู่กับที่ ปรับโน่นเปลี่ยนนี่ไปเรื่อย ๆ รวมทั้ง API ของเขาด้วย โดยหลังจากที่ปล่อยให้มี API เดิมให้ใช้มาราวสองถึงสามปี จนกระทั่งผู้พัฒนา Facebook Application ใช้กันจนคล่อง ติดกันจนงอมแงมแล้ว เมื่อกลาง (ค่อนปลาย) ปี พ.ศ. 2553 ที่ผ่านมา ทาง Facebook ก็ออก API ตัวใหม่ออกมา นัยว่าเพื่อจะได้ใช้ง่ายขึ้น ดีขึ้น สะดวกขึ้น บลา ๆ ๆ ๆ ๆ โดยประกาศว่าให้ Facebook Application ใหม่ ๆ ที่ถูกสร้างขึ้น จงสร้างด้วย API ใหม่โดยพลัน ส่วน Facebook Application เก่า ๆ จะยังใช้ API เดิมได้อยู่ (แต่คงอีกไม่นาน)</p>
<p>นอกจากนี้ทาง Facebook ก็ตัดสินใจยกเลิกภาษาของตัวเอง (Facebook สร้างภาษา FBML ออกมา มันแบบ คล้าย ๆ กับ HTML แต่ไม่เป็นที่นิยม เลยต้องเลิกไป) แล้วหันไปสนับสนุน IFrame อย่างสุดแรงม้า (เว่อร์จริง ๆ)</p>
<p>ทีนี้มันก็จะเกิดเป็นประเด็นขึ้นมา เพราะ Facebook จำเป็นจะต้องรักพี่เสียดายน้อง เขาก็เลยยังคงต้องเก็บคู่มือในการใช้งาน API เก่า กับคู่มือในการใช้ API ใหม่เอาไว้ แถมดันเก็บรวม ๆ กันไว้อีกต่างหาก และที่สำคัญดันอธิบายแบบแยกส่วนด้วย (เออ เอากันเข้าไป)</p>
<p>และที่สำคัญ มีสิ่งหนึ่งที่นักพัฒนา Facebook Application เขารู้ แต่เขาไม่ค่อยเล่าให้ฟังกัน เนื่องจากมองว่ามันเป็นพื้นฐาน มันง่าย ใคร ๆ ก็น่าจะรู้ (ไม่จริงหรอก เรื่องเล็ก ๆ ง่าย ๆ นี่แหล่ะ มีคนไม่รู้เยอะ) นั่นก็คือ Facebook API มองได้เป็น 2 ส่วนใหญ่ ๆ คือ <strong>ส่วนของ ข้อตกลง Web Service</strong> และ<strong>ส่วนของ SDK</strong>!!!</p>
<p><strong>ส่วนของข้อตกลง Web Service</strong> อ่ะนะ เป็นมาตรฐานวิธีในการเชื่อมโยงข้อมูลระหว่าง Facebook กับ Facebook Application ของเรา ซึ่งทาง Facebook ทำคู่มือออกมาให้เราอ่านกัน (แบบโคตรละเอียด แต่ กูงง กูงง กูงง) ไม่่ว่าจะเป็นคู่มือที่ชื่อ <a href="http://developers.facebook.com/docs/guides/canvas/">Apps on Facebook.com</a> (อธิบายตั้งแต่การแสดงตน, ขอใช้สิทธิ์ และทำนู่นทำนี่) หรือ <a href="http://developers.facebook.com/docs/api">Grarph API</a> (อธิบายว่าการแสดงตน, ขอใช้สิทธิ์ และทำนู่นทำนี่ ต้องส่ง Request แบบ Web Service ไปหา Facebook เป็นจำนวนกี่ท่อน และแต่ล่ะท่อนต้องยัดอะไรใส่เข้าไปบ้าง)</p>
<p><strong>ส่วนของ SDK</strong> เป็นโค้ดของโปรแกรมแบบ Open Source ซึ่งพัฒนาขึ้นด้วยภาษาต่าง ๆ เช่น PHP หรือ Javascript เป็นต้น เพื่ออำนวยความสะดวกให้กับเรา ทำให้เราไม่จำเป็นต้องเขียนโค้ดเพื่อทำตามข้อตกลง Web Service ที่ Facebook กำหนดไว้ (มีชาวบ้านเขียนไว้ให้ ว่างั้น)</p>
<p>ถ้าถามว่า แบบนี้ เราก็ไม่จำเป็นต้องไปดาวน์โหลดโค้ด SDK มาก็ได้นี่หว่า เพราะถ้าเราแตกฉานในข้อตกลง Web Service ของ Facebook แล้ว เราก็สามารถจะเขียน SDK เองได้? ซึ่งผมก็คิดว่าอันนั้นก็จริงอ่ะนะ แต่จะลงมือทำไปทำติ่งอะไรล่ะ ในเมื่อเราเขียนเอง เขียนไปเขียนมา สุดท้ายมันก็ออกมาเหมือนกับ SDK ที่ำเขาทำให้อยู่ดี งั้นอย่าเสียเวลาเลยว่ะ ไปใช้ SDK ที่เขาทำก็สิ้นเรื่อง</p>
<p>โดย SDK ที่ว่าก็สามารถไปดาวน์โหลดได้ที่ <a href="http://github.com/facebook">GitHub</a> เลือกโหลดเฉพาะ <a href="http://github.com/facebook/php-sdk">PHP-SDK</a> (PHP Client Library) กับ <a href="http://github.com/facebook/connect-js">Connect-JS</a> (Javascript Client Library) นะ เพราะเป็นสิ่งที่โม้ ๆ อยู่ในหัวข้อนี้ (พอเข้าไปที่หน้าจอได้แล้ว อย่าลืมเหลือบไปดูที่เยื้อง ๆ มุมขวาของ Browser ด้วยล่ะ เพราะแถว ๆ นั้นมีปุ่ม &#8220;Download Source&#8221; ให้กด ก็กดตรงนั้นนั่นแหล่ะ จะได้ดาวน์โหลดมาทั้งยวงเลย!!!)</p>
<p>ต้องทำความเข้าใจก่อนว่า SDK ก็คือโค้ดที่มาเขียนเพื่อครอบข้อตกลงฯ ดังนั้น มันก็อาจจะเป็นชุดของ Function หรือเป็นชุดของ Class ก็ได้ โดยในที่นี้โค้ดของ PHP Client Library อ่ะเป็น Class ในขณะที่ Javascript Client Library อ่ะเป็น Function</p>
<p>ทีนี้ขึ้นชื่อว่าเป็น Class หรือ Function มันก็ต้องมีคู่มือประกอบใช่แมะ ว่ามันมีพารามิเตอร์อะไรบ้าง, มี Properties อะไรบ้าง หรือมี Method อะไรให้เรียกใช้ได้บ้าง?</p>
<p>ข่าวดีคือ Facebook ทำคู่มือ <a href="http://developers.facebook.com/docs/reference/javascript/">Javascript Client Library</a> เอาไว้ให้เราอ่านเพื่อทำความเข้าใจนะ แต่ข่าวร้ายคือ Facebook ไม่ได้ทำคู่มือ PHP Client Library เอาไว้ให้อ่ะ <strong>มันยังไม่มี ต้องเข้าไปดูในโค้ดของ SDK เอาเอง!!!</strong></p>
<p>มันก็เลยทำให้เราเกิดภาระเล็ก ๆ ขึ้นมา เพราะกลายเป็นว่า นอกจากเราจะต้องเรียนรู้ API ในส่วนของข้อตกลง Web Service แล้ว เรายังต้องมาเรียนรู้เพิ่มเติม (อีกเล็กน้อย) ในการใช้งาน PHP Client Library อีกหรือนี่???</p>
<p>ข้อสรุปอีกอย่างหนึ่งที่เกี่ยวกับ Facebook Application ก็คือ เราสามารถจะเขียน Facebook Application ด้วย PHP Client Library ล้วน ๆ ก็ได้ หรือจะเขียนผสม ๆ กันกับ Javascript Client Library ก็ได้ (อันนี้แล้้วแต่ความจำเป็น) นอกจากนี้ ถ้าเราเขียนมันจนชำนาญแล้ว เราก็ไม่จำเป็นต้องเขียนแบบ Pure PHP อีกต่อไป เพราะเราสามารถใช้ Web Application Framework (ไม่ว่าจะเป็น CakePHP หรือ CodeIgniter) เพื่ออำนวยความสะดวกให้เราเขียน Web Application ได้ง่ายและเร็วอีกด้วย</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.parinya.net/node/1409/feed</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
			</item>
		<item>
		<title>วิวัฒนาการของโปรแกรมดูหุ้น</title>
		<link>https://www.parinya.net/node/1396</link>
					<comments>https://www.parinya.net/node/1396#comments</comments>
		
		<dc:creator><![CDATA[ไท้ ปริญญา]]></dc:creator>
		<pubDate>Wed, 25 Aug 2010 05:06:14 +0000</pubDate>
				<category><![CDATA[Internetworking]]></category>
		<category><![CDATA[Investment]]></category>
		<category><![CDATA[Web Service]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[หุ้น]]></category>
		<category><![CDATA[โปรแกรมดูหุ้น]]></category>
		<category><![CDATA[Desktop Application]]></category>
		<category><![CDATA[Java Applet]]></category>
		<category><![CDATA[Smart Phone]]></category>
		<category><![CDATA[Visual C++]]></category>
		<category><![CDATA[web application]]></category>
		<guid isPermaLink="false">http://www.tai-parinya.com/?p=1396</guid>

					<description><![CDATA[ช่วงนี้ผมจับจ้องหุ้นเป็นพ]]></description>
										<content:encoded><![CDATA[<p>ช่วงนี้ผมจับจ้องหุ้นเป็นพิเศษ หลังจากที่ไม่ได้สนใจมันมานานพอควร เหตุผลคงเป็นเพราะดัชนีมันจะแตะ 900+ อยู่มะรอมมะร่อ ซึ่งผมเห็นว่ามันมีสัญญาณบางอย่างบ่งบอกออกมาว่า น่าจะมีการปรับฐานเกิดขึ้น และก็มีแนวโน้มว่าจะเป็นการปรับฐานลงมากกว่า เพราะการที่หุ้นขึ้นก็เนื่องจากมีการเข้ามาเก็งกำไรของเงินนอก เงินนอกไหลเข้ามาจนกระทั่งทำให้ค่าเงินบาทแข็ง ทำให้หุ้นทะยานขึ้น เพราะเงินนอกที่เอามากว้านซื้อเงินบาท ถูกถมเข้ามาเก็งกำไรในตลาดหุ้นบ้านเรา</p>
<p>การจะดูหุ้นเดี๋ยวนี้ไม่เหมือนเมื่อก่อน ที่จะต้องไปยืนดูที่หน้ากระดานที่บริษัทหลักทรัพย์จัดเตรียมเอาไว้ เดี๋ยวนี้เราดูผ่านหน้าจอคอมพิวเตอร์ได้แล้ว แถมถึงขั้นดูผ่านโทรศัพท์มือถือได้ด้วย แต่พวกเรารู้กันบ้างหรือเปล่าว่า กว่าจะมาถึงตอนนี้ได้ โปรแกรมดูหุ้นได้ผ่านวิวัฒนาการอะไรมาบ้าง?</p>
<p>ผมไม่ลงวันที่ชัดเจนนะ เอาจากประสบการณ์ของตัวเองมาเล่าก็แล้วกัน!!</p>
<p><span id="more-1396"></span></p>
<p><strong>MS-DOS จ๋า จุ๊บ ๆ</strong></p>
<p>ผมได้เห็นโปรแกรมดูหุ้นครั้งแรกเมื่อปี พ.ศ. 2540 ตอนนั้น CEO เรียกให้คนศูนย์คอมพิวเตอร์ไปตรวจสอบคอมพิวเตอร์ เพราะพี่แกดูหุ้นไม่ได้ ซึ่งความซวยมาตกที่ผม ผมก็เลยต้องเป็นคนไปดูให้ เลยได้เห็นว่าโปรแกรมดูหุ้นในตอนนั้น ใช้สั่งซื้อสั่งขายหุ้นไม่ได้ เรียกว่าเอาไว้ดูหุ้นเฉย ๆ จริง ๆ โดยมันเป็นโปรแกรมที่ทำงานบนระบบปฏิบัติการ MS-DOS แสดงผลหน้าจอแบบ Text Mode, เชื่อมต่อกับบริษัทให้บริการข้อมูลหุ้นด้วย MODEM 14.4K ผ่านเบอร์โทรศัพท์เฉพาะที่บริษัทฯจัดเตรียมเอาไว้ให้ลูกค้า ซึ่งผมคิดว่าเขาคงจะใช้ระบบโปรโตคอลแบบปิด ไม่ใช่โปรโตคอลที่แพร่หลายในทุกวันนี้</p>
<p>สรุปตอนนั้นผมไม่มีปัญญาแก้ไขให้เขาได้ เพราะบริษัทที่ให้บริการข้อมูลหุ้นนั่นแหล่ะ ที่ไม่ยอมส่งข้อมูลมาให้เพราะระบบขัดข้อง</p>
<p><strong>Desktop Application ครองโลก</strong></p>
<p>ปี พ.ศ. 2546 ผมก็เริ่มเปิดพอร์ตหุ้นเป็นของตัวเอง ตอนนั้นเริ่มก้าวหน้าแล้ว เพราะผมสามารถดูหุ้นและสั่งซื้อสั่งขายหุ้นได้ผ่านโปรแกรมดูหุ้น ที่บริษัทหลักทรัพย์จัดหาเอาไว้ให้กับลูกค้า โดยให้ลูกค้าดาวน์โหลดโปรแกรมไปเองผ่านหน้าเว็บ</p>
<p>โปรแกรมดูหุ้นสมัยนั้น ส่วนใหญ่เขียนขึ้นด้วย Microsoft Visual C++ ดังนั้น ลูกค้าจึงต้องใช้ระบบปฏิบัติการ Microsoft Windows เพื่อใช้งานโปรแกรมดังกล่าว โดยโปรแกรมจะเชื่อมโยงข้อมูลกับบริษัทหลักทรัพย์ผ่านโปรโตคอลแบบปิดของตัวเอง และโปรโตคอลที่ว่าก็ขี่อยู่บนโปรโตคอล TCP/IP อีกทีนึง ลูกค้าก็เลยไม่ต้องหมุน MODEM ไปที่บริษัทหลักทรัพย์ แต่หมุน MODEM ไปยังผู้ให้บริการอินเทอร์เน็ตแทน</p>
<p><strong>Applet มาแล้วจ้า</strong></p>
<p>ผมคิดว่าลูกค้าคนอื่นก็น่าจะคิดเหมือนผม ว่าถ้าเราไปดูหุ้นที่คอมพิวเตอร์เครื่องอื่นที่เราไม่ได้เป็นเจ้าของ เราก็ต้องไปลงโปรแกรมดูหุ้นใหม่ เสียเวลาทำมาหากิน แถมบางทีเครื่องนั้น ๆ อาจจะล็อกสิทธิ์เอาไว้ ไม่ให้เราติดตั้งโปรแกรมอีกต่างหาก ซึ่งก็ไม่รู้ว่าอะไรดลใจบริษัทหลักทรัพย์เหล่านั้น ทำให้มีการพัฒนาโปรแกรมดูหุ้นแบบใหม่ โดยใช้กลไก Java Applet ร่วมกับ Active X เพื่อให้สามารถดูหุ้นผ่าน Web Browser ได้ โดยที่ลูกค้าไม่ต้องเสียเวลามาดาวน์โหลดและติดตั้งโปรแกรมดูหุ้นอีกต่อไป</p>
<p><strong>Rich Internet Application คือคำตอบ?</strong></p>
<p>ปัญหาใหญ่ของ Java คือมันช้า และดูท่าทางจะไม่เหมาะกับการโต้ตอบแบบสองทาง เพราะเห็นได้ชัดว่าถ้าผมดูหุ้นผ่านโปรแกรมดูหุ้นแบบ Java Applet ที่บ้านมันจะไม่มีปัญหา สามารถสื่อสารข้อมูลแบบสองทางได้ แต่ถ้ามาดูที่ทำงานซึ่งต้องกำหนด Proxy แล้วล่ะก็ โปรแกรมดูหุ้นจะแบ๊ะ ๆ ไม่สามารถสื่อสารสองทางได้ทันที</p>
<p>และทางบริษัทหลักทรัพย์ก็คงจะรู้ในข้อด้อยข้อนี้ พี่แกก็เลยทำโปรแกรมรุ่นใหม่ออกมา เพื่อให้ยังคงความเป็น Web Application อยู่ แต่เพิ่มขีดความสามารถในการตอบโต้แบบสองทางเข้าไป โดยการเลือกใช้ Web Application Framework ที่สนับสนุนความเป็น Rich Internet Application ขึ้นมา เพื่อยกระดับโปรแกรมดูหุ้นให้มีความยืดหยุ่นมากยิ่งขึ้น</p>
<p>เสียดายที่ความเป็น Rich Internet Application บางครั้งมันก็ขึ้นกับ Platform ดังนั้น ทุกวันนี้ผมก็เลยต้องดูหุ้นผ่านโปรแกรมดูหุ้น ที่ทำงานเฉพาะบน Internet Explorer เท่านั้น (มันทำจาก ASP .NET) ยังไม่สามารถใช้งานผ่าน Web Browser อื่นอย่าง Mozilla Firefox หรือ Google Chrome</p>
<p><strong>Smart Phone ของเรา</strong></p>
<p>ผมยังไม่มี Smart Phone เป็นของตัวเอง ยังอาศัยจิ้มเล่นจากของผู้ร่วมงานและเพื่อน ๆ อยู่ ก็เลยยังไม่เคยซื้อขายหุ้นผ่าน Smart Phone จริง ๆ ซักที เลยยังไม่สามารถโม้ได้ว่า มันน่าจะขับเคลื่อนด้วยเทคโนโลยีอะไรบ้าง</p>
<p><strong>สรุป</strong></p>
<p>และทั้งหมดนี้ก็คือวิวัฒนาการของโปรแกรมดูหุ้นอ่ะนะ ไม่รู้ว่าต่อไปอนาคตข้างหน้ามันจะเทพยิ่งกว่านี้หรือเปล่า ไม่แน่ว่าต่อไปมันอาจจะเชื่อมเข้ากับเทคโนโลยี Brain Computer Interface ก็ได้นะ ใครจะรู้?</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.parinya.net/node/1396/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>บริการ Web Service ต้องมี Console</title>
		<link>https://www.parinya.net/node/1266</link>
					<comments>https://www.parinya.net/node/1266#comments</comments>
		
		<dc:creator><![CDATA[ไท้ ปริญญา]]></dc:creator>
		<pubDate>Fri, 11 Jun 2010 04:45:53 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[Feature]]></category>
		<category><![CDATA[Web Service]]></category>
		<guid isPermaLink="false">http://www.peetai.com/a/1266/%e0%b8%9a%e0%b8%a3%e0%b8%b4%e0%b8%81%e0%b8%b2%e0%b8%a3-web-service-%e0%b8%95%e0%b9%89%e0%b8%ad%e0%b8%87%e0%b8%a1%e0%b8%b5-console/</guid>

					<description><![CDATA[ตอนนี้ Amazon Web Service]]></description>
										<content:encoded><![CDATA[<p>ตอนนี้ Amazon Web Service เปิดให้ใช้บริการ Amazon EC2, Amazon Elastic MapReduce, Amazon CloudFront, Amazon RDS และ Amazon S3 ผ่าน Console ได้แล้ว!!!</p>
<p>ซึ่งถือว่าดีกว่าสมัยก่อนมาก เพราะถ้าเป็นสมัยก่อนต้องควบคุมผ่าน command line และ request/response ผ่าน Web Service!!</p>
<div align="center"><img decoding="async" id="image1265" src="https://www.parinya.net/wp-content/uploads/2010/06/amazon_ec2.jpg" alt="Amazon EC2 Console" /></div>
<p>ผมว่ามันเป็นการรุกคืบที่ดีนะ เพราะเชื่อว่ามีนักพัฒนาซอฟต์แวร์หลายคน ที่มีความเข้าใจใน Cloud Computing แต่ติดขัดเสียเวลากับการควบคุมผ่านกลไกระดับล่าง เลยพาลทำให้ไม่อยากจะใช้เพราะรู้สึกว่ามันยุ่งยาก ดังนั้น การทำ Console ขึ้นมาให้ใช้น่าจะเป็นสิ่งที่ดีกว่า</p>
<p>แต่ถ้า Console มันเทพมาก ก็อาจจะทำให้คนที่ใช้งงได้เหมือนกัน T-T</p>
<p>[tags]Amazon EC2, Amazon Elastic MapReduce, Amazon CloudFront, Amazon RDS, Amazon S3, Cloud Computing, Console[/tags]</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.parinya.net/node/1266/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
