NodeJS ตอนที่ 5 [Restful API]

การเขียนเว็บเซอร์วิส หรือ เว็บ Api (Application Programming Interface) เพื่อให้เทคโนโลยแพลตฟอร์มต่างๆสามารถแลกเปลี่ยนข้อมูลกันได้ ไม่ว่าจะเป็น OS ,Web ,Mobile Application นั้น มี 2 มาตรฐานที่ได้รับความนิยม ได้แก่

  • SOAP (Simple Object Access Protocol)
  • REST (Representational state transfer)

NodeJS ตอนที่ 3 [JavaScript Basic และการเขียนโมดูล]

NodeJS เป็นเทคโนโลยีที่เรารู้กันว่าเป็น JavaScript ฝั่งเซิร์เวอร์ ดังนั้นก็ต้องมีพื้นฐานภาษา JavaScript จึงจะช่วยให้ทำความเข้าใจในการเขียนโค้ดบน NodeJS ได้ง่ายขึ้น ในบทความนี้จะสรุปเพียงสั้นๆที่พอให้ไปต่อได้เท่านั้น

JavaScript Value Type

ภาษา JavaScript มีการเก็บค่าอยู่ 3 แบบด้วยกัน คือ

boolean ค่าตรรกะ true , false
numeric ค่าตัวเลข Number.

NodeJS ตอนที่ 2 [V8 และ Non Blocking I/O]

Google V8

V8 เป็น Engine ที่สร้างโดย Google ด้วยภาษา C++ ใช้คอมไฟล์ JavaScript ให้เป็น Byte Code ซึ่งช่วยให้ JavaScript ทำงานได้เร็วขึ้นมาก

เมื่อเรา Complie NodeJS จะเป็น Byte code อยู่ในหน่วยความจำ ซึ่งคอมพิวเตอร์เข้าใจทำให้ทำงานได้เร็ว

การคอมไพล์เราได้ลองทำในตอนที่ 1 ดังนี้
node ch1_hello.

NodeJS ตอนที่ 1 [NodeJS คืออะไร ?]

NodeJS ตอนที่ 1 NodeJS คืออะไร ?

เทคโนโลยีฝั่ง Server Side ที่ถูกพัฒนาด้วยภาษา JavaScript
เดิมทีภาษา JavaScript ทำงานฝั่ง Client เป็นหลัก แต่จริงๆแล้ว NodeJS เป็น Client หรือ Server ก็ขึ้นอยู่กับจุดประสงค์ของแอพนั้น แต่จุดตั้งต้นเริ่มมาจาก Server Side เป็นหลัก
ผู้สร้าง คือ คนนี้แหละครับ
Ryan Dahl เขาว่าคือพ่อมด แฮรี่ ที่มาร่ายเวทย์ด้วยภาษา JavaScript
NodeJS คือ JavaScript มีการ Complied เป็น Byte Code ด้วย V8 Engine ของ Google
Debug ได้ ต่างจาก JavaScript ในยุคแรกๆ ทำให้แก้ปัญหาได้ง่ายขึ้น
รันได้บนทุกระบบปฏิบัติการยอดนิยม
มาพร้อมกับเทคโนโลยีที่เรียกว่า Non - Blocking I/O
ปัจจุบันเติบโตเร็วมาก มี Library แล้ว 235,745 Package ข้อมูล ณ วันที่ 2/2/2016

ปัจจุบัน NodeJS ถูกนำมาทำเป็น Web Server , Mobile Hybrid , IOT , Webkit , TVOS ,OS อื่นๆอีกมาก เรียกได้ว่าเข้าถึงได้หลากหลายเทคโนโลยี

เหตุผลที่ได้รับความนิยมหลักๆคือ

เขียนโค้ดเข้าใจได้ง่าย
มี Library ฟรีมากมาย
ใช้ทรัพยากรน้อย
เรียนรู้ได้เร็วสำหรับโปรแกรมเมอร์ทุกๆระดับ

มาลองใช้ NodeJS กันดีกว่า

โหลด NodeJS มาเลยที่ https://nodejs.

Read more 1 Comment

Programming World – Year in Review 2015

ผ่านไปแล้วกับปี 2015 ครับในช่วงหยุดปีใหม่นี้ผมมาลองรีวิวดูว่าในโลกของโปรแกรมมิ่งมีอะไรที่เปิดตัวใหม่หรือเหตุการณ์อะไรที่น่าสนใจในรอบปีที่ผ่านมากันบ้างนะครับ

[ 22 กุมภาพันธ์ 2015 ]
ในงาน React.

งาน IT Talk 2015 – Introduction to User Experience – How to develop products that people love

สมาคมโปรแกรมเมอร์ร่วมกับคุณะเทคโนโลยีสารสนเทศมหาวิทยาลัยชินวัตร รวมจัดงาน IT Talk 2015 - Introduction to User Experience - How to develop products that people love โดยมีรายละเอียดงานดังนี้

สัมมนาฟรี !!!

วิทยากร

คุณดาริน สุทธพงษ์  - User Experience Designer, Amazon.

วันเกิดสมาคมโปรแกรมเมอร์ไทย

หลังจากทำงานในนามเครือข่ายโปรแกรมเมอร์ไทยกันมาปีกว่าๆ วันนี้เราจดเป็น "สมาคมโปรแกรมเมอร์ไทย" ตามชื่อกลุ่มเสร็จเรียบร้อยแล้วนะครับ
(ช่วงนี้เงียบๆไปเพราะยุ่งเรื่องจดทะเบียนนี่ล่ะครับ ต้องไปแก้หลายรอบทีเดียว และต้องไปยื่นจดเลขประจำตัวผู้เสียภาษีกับสรรพากรต่ออีกนิดหน่อย)

ตอนนี้กำลังวางแผนหาสิทธิประโยชน์ให้สมาชิกกันอยู่ พอลงตัวแล้วจะเริ่มเปิดรับสมาชิกกัน ถ้ามีใครสามารถช่วยเหลือส่วนนี้ได้หรืออยากมีโปรโมชั่นให้กับสมาชิกสมาคมก็ติดต่อมาได้นะครับ (จริงๆผมอยากให้สมัครเพราะคิดว่าอยาก contribute มากกว่าสิทธิประโยชน์ ส่วนสิทธิประโยชน์เป็นผลพลอยได้)

ขอบคุณทีมกรรมการทุกคนที่สละเวลามาประชุมหลังเลิกงานดึกๆดื่นๆกันได้แทบทุกครั้งตลอด 1 ปีกว่า และทีม staff ช่วยจัดงานต่างๆทั้งขาประจำ และขาจรทุกคน

20 พฤศจิกายน 2558 วันเกิดสมาคมโปรแกรมเมอร์ไทย

ป.ล. รายนามกรรมการชุดก่อตั้งสมาคม

1. นายศุภเสฏฐ์ ชูชัยศรี 2. นายกฤษฎา เฉลิมสุข 3. นายอภัยชนม์ พันธุ์โอภาส 4. ว่าทีร้อยตรี อาคม ไทยเจริญ 5. นายอานุภาพ วิรัตนภานุ 6. นายอัคคสิทธิ์ ตรุงกานนท์ 7. นายอิศเรศ ประจิตต์มุทิตา 8. นายภควัฒน์ บุญยัง 9. นายจิรวุฒิ จึงศิรกุลวิทย์

Defold เกมส์เอ็นจิ้นจาก King ผู้สร้างเกมส์ Candy Crush

ข่าวดีสำหรับนักพัฒนาเกมส์ที่กำลังมองหาเกมส์เอ็นจิ้นดีๆในราคาที่ไม่แพง เมื่อเดือนตุลาคมที่ผ่านมา King บริษัทผู้ผลิตเกมส์ชื่อดัง ผู้สร้างเกมส์ Candy Crush ได้เปิดตัวเกมส์เอ็นจิ้น "Defold" ให้นักพัฒนาเกมส์ได้ใช้ฟรี 

นอกจากนี้ King ยังได้จัดการแข่งประกวดเกมส์ที่สร้างจาก Defold โดยผู้ชนะ 3 ทีมจะได้ไปเปิดตัวเกมส์ในงาน GDC 2016 อีกด้วย เรียกว่าน่าสนใจมากๆสำหรับนักพัฒนาเกมส์อินดี้ที่กำลังจะเริ่มสร้างเกมส์ของตัวเอง เพราะนอกจากจะได้เกมส์เอ็นจิ้นดีๆแล้วยังได้ King มาช่วยโปรโมทเกมส์ให้อีกด้วย

สำหรับผู้ที่สนใจรายละเอียดของเกมส์เอ็นจิ้นใหม่ตัวนี้ลองเข้าไปอ่านรายละเอียดได้ในเว็บไชต์นี้นะครับ http://www.

MongoDB 3.2 กำลังจะมี join

MongoDB กำลังจะมี join แล้วใน version 3.2 ก็ถือว่าเป็นฟีเจอร์ที่หลายคน(น่าจะ)เรียกร้องกันมานาน ใครสนใจรายละเอียดหรือวิธีใช้งานลองอ่านใน บล็อกของ MongoDB ดู บล็อกนี้ผมคงไม่ลงรายละเอียดส่วนนั้นมากแต่จะลองสังเกตส่วนอื่นๆเพิ่มเติมดู

ข้อสังเกตของฟีเจอร์นี้
- ยัง limit อยู่ที่ Left Outer Equi-Join แบบเดียว (ใครไม่รู้ว่าคืออะไรลองอ่านในบล็อกของ MongoDB มีภาพอธิบายประกอบ หรือถ้าอยากรู้ว่า join มีกี่แบบลองดูที่ Wiki)
- เรียกการ join นี้ว่า $lookup โดยใช้งานผ่าน aggregate
- มีเฉพาะใน Enterprise Advanced Edition เท่านั้น (ในขณะที่ผมเขียนบล็อกนี้)

จริงๆฟีเจอร์นี้ก็มีข้อถกเถียงกันมายาวนาน เพราะถ้ามีการ join ก็จะเริ่มไปเจอปัญหาแบบเดียวกับ Relational SQL เช่น เรื่องประสิทธิภาพ เรื่อง integrity ของข้อมูล (FK constraint) เรื่องการใช้การเวลามีการทำ sharding กระจายไปหลายเครื่อง เป็นต้น เวลาออกแบบ nosql ส่วนใหญ่จึงทำ denormalize กันเพื่อประสิทธิภาพในการคิวรีเรียกดูข้อมูล แต่คิดว่า users จำนวนมากคงไม่ได้ทำแบบนั้น หรือมี use case ที่จำเป็นต้อง join เช่น การทำ report เลยต้องมีฟีเจอร์ขึ้นมา

ก็ไม่แน่ใจว่า engine ของ MongoDB จัดการยังไงให้มีประสิทธิภาพ สมัย ป.โท ผมเคยทำวิจัยที่ต้องไปศึกษาการทำ engine ของระบบฐานข้อมูลให้รองรับ distributed join เลยรู้ว่าการทำ engine แบบนี้ยากมากถ้าจะให้มีประสิทธิภาพดี ปัจจุบันก็ยังมีงานวิจัยด้านนี้ทำกันอยู่ เช่น งานตีพิมพ์ใน VLDB (เป็น top-tier conference ด้านระบบฐานข้อมูล) ปีก่อน (2014) ของ Microsoft หรือของ Ecole Polytechnique Federale de Lausanne เป็นต้น (จริงๆก็มีหลายระบบก็เลือกที่จะทำ Hybrid ระหว่าง SQL และ NoSQL ที่น่าจะพยายามแก้ปัญหานี้เช่นกัน พวกสายตระกูล NewSQL ทั้งหลาย เช่น NuoDB, VoltDB, หรือ F1 บน Spanner ของกูเกิ้ล

แต่จริงๆประเด็นที่ผมมองว่าเป็นปัญหาหนักมากคือการมีอยู่แค่ใน Enterprise Advanced เท่านั้น เพราะว่าถ้าเราโค้ดที่ใช้งานฟีเจอร์ $lookup นี้ไปแล้ว คนที่เอาไปใช้ของเราต่อจะไม่สามารถทำงานโปรแกรมของเราได้ถ้าใช้ Opensource Edition ซึ่งปกติแล้วพวกฟีเจอร์ที่เป็น Enterprise Edition ควรเป็นส่วนเสริมที่ไม่กระเทือนระดับ business logic ของโปรแกรม (เช่น ฟีเจอร์ auto backup, monitoring, performance tuning เป็นต้น)

ก็ต้องคอยติดตามกันต่อไปว่าสุดท้ายแล้วฟีเจอร์นี้จะเข้ามารวมอยู่กับ Opensource Edition หรือไม่ครับ