ข้ามไปที่เนื้อหาหลัก

บทความ

กำลังแสดงโพสต์จาก มกราคม, 2018

NoSQL คืออะไร

จริง ๆ แล้ว NoSQL ไม่ใช่ เทคโนโลยีใหม่อะไร เพียงแต่ชาวโลกหลงทางไปกับแนวคิดของ RDBMS (relational database) และเพิ่งจะมารู้ตัวกันเมื่อ RDBMS ไม่สามารถรองรับความต้องการได้ จึงเกิดการหาทางเลือก แล้วก็ได้ NoSQL ชนิดต่าง ๆ ออกมาให้พวกเราหลุดพ้นจาก RDBMS กัน NoSQL เป็น data store ที่เน้นความง่าย ไม่ซับซ้อน เน้นเก็บข้อมูลให้เร็ว ดึงข้อมูลออกมาได้เร็ว เป็นหลัก ส่วนที่เหลือก็แล้วแต่ว่าแต่ละตัวจะเพิ่มความสามารถอะไรเข้าไป ส่วนคำสั่งในการเรียก ก็เป็นของใครของมัน ต่างจาก RDBMS ที่ใช้ SQL ในการสั่งงาน คำสั่ง SQL มีข้อดีก็คือเป็นมาตรฐานทุกคนรู้จักเรียนรู้ทีเดียวใช้ database ได้ทุกตัว แต่ข้อเสียก็คือมันต้องแปลความหมายก่อน server ถึงจะเริ่มทำตามคำสั่งได้ และคำสั่งในมาตรฐานกลับกลายเป็นกรอบที่จำกัดไม่ให้ database server มี function การทำงานพิเศษอื่น ๆ ได้ ข้อจำกัดอะไรที่ RDBMS รองรับไม่ได้ RDBMS มีข้อจำกัดอยู่ที่หัวใจหลักของมันเอง นั่นก็คือ relation มันรู้จักความสัมพันธ์ของข้อมูล แล้วเราก็เรียนจากโรงเรียนมาเหมือน ๆ กันว่าให้ทำ normalize โครงสร้างข้อมูลให้ได้ 3rd normal form แทบทุกคำสั่งเราต้องเชื

REST Web Service เนื้อคู่ที่แท้จริงของ Mobile App

ก่อนอื่นต้องทำความรู้จักกับ REST web service กันก่อนว่ามันคืออะไร หลายคนเข้าใจว่าการที่ เปลี่ยนจาก SOAP ที่ encode ด้วย XML มาเป็น JSON encoding ก็คือเป็น REST web service แล้ว ความจริงแล้วความแตกต่างระหว่าง SOAP และ REST ไม่อยู่ที่ encoding แต่เป็นวิธีคิดและออกแบบ คำสั่งใน web service ต่างหาก จาก “คำกิริยา” เป็น “คำนาม” โดยทั่วไปถ้าไม่คิดอะไรมาก ถ้าจะออกแบบ web service สำหรับจัดการข้อมูลหนังสือ URL ที่ได้ก็จะออกมาประมาณนี้ /GetBook /SearchBooks /DeleteBook /UpdateBookInfo สังเกตุว่าจะใช้คำกิริยาและคำนามคู่กันในทุก ๆ service แต่สำหรับ REST web service จะใช้แค่คำนาม เช่น /books/{bookid} ถ้าจะจัดการ collection ของหนังสือหลายเล่ม ก็ใช้ URL /books หรือถ้าจะจัดการข้อมูลหนังสือเป็นเล่ม ๆ ก็ใช้ URL /books/{bookid} เป็นการใช้ directory ของ URL ให้เป็นประโยชน์ และยังเป็นมาตรฐานที่ทุกคนเข้าใจได้ง่าย การเข้าถึงข้อมูลย่อยก็ยังสามารถใช้ directory เข้าช่วยได้อีกด้วยเช่น /books/{bookid}/name ลองนึกภาพถ้าเรามีข้อมูลจำนวน หลาย ๆ collection เช่น หนังสือ, ผู้แต่ง, ร้าน, พนักงาน

ภาษา Go

ประเดิม post แรกสำหรับ blog กันด้วย ภาษาโปรแกรมยุคใหม่ ที่กำลังได้รับความนิยมมากขึ้นเรื่อย ๆ ในขณะนี้ นั้นก็คือเจ้า ภาษา Go นั่นเอง หรือเรียกกันอีกชื่อว่า golang ส่วนตัวผมเรียกมันว่า golang มากกว่า go เฉย ๆ เพราะเวลาพูดมันรู้สึกงง ๆ มันคือคำว่า "ไป" หรือชื่อภาษาโปรแกรมกันแน่ และอีกอย่างคือเวลาเรา google หาคำว่า go มันไม่ค่อยเจอ แต่พอใช้คำว่า golang กลับเจอมากกว่าซะงั้น เหตุที่ผมต้องมาทำความรู้จักกับ golang ก็มาจากความต้องการที่จะเขียนโปรแกรมฝั่ง server เพื่อรองรับจำนวนผู้ใช้งานมากหรือที่เรียกกันว่า concurrent ตอนแรกก็เลือกระหว่าง nodejs กับ golang แต่สุดท้ายมาลงตัวที่ golang ด้วยเหตุผล 2 อย่างคือ Go lang มัน compile ได้  ถ้าทำบน windows ก็ได้ file .exe ออกมาเลย หรือถ้าเป็น unix ก็ได้ execute binary มากันเลยทีเดียว ก๊อบไป file เดียวรันได้เลย ไม่ต้องลง runtime อะไรอีกแล้ว และข้อดีอีกอย่างของการ compile คือไม่ต้องกังวลว่าใครจะมาขโมยไปเวลาไปติดตั้งไว้บนเครื่องของลูกค้า โครงสร้างและวิธีคิดมันคล้ายกับภาษา C  ที่เป็นภาษาที่ผมเองถนัดมากสุด ตอนได้เห็นโครงสร้างภาษามันครั้งแรกก

เครื่องคอมพิวเตอร์เครื่องแรกของผม

เครื่องคอมพิวเตอร์เครื่องแรกของผมในชีวิต ผมได้มันมาปี พ.ศ. 2527 เป็น platform  MSX ยี่ห้อ CASIO รุ่น MX-10 มี memory ทั้งหมด 16 KB (kilobyte) เครื่องนี้ดูผิวเผินมันเหมือนกับเครื่องเล่นเกมส์แบบเสียบตลับเกมส์ แต่ถ้าเราถอดตลับเกมส์ออกเมื่อไหร่มันจะ boot เข้าสู่ OS และใช้เขียน MS Basic ได้เลยทีเดียว ผมใช้มันเขียนภาษา basic อยู่หลายปี ก่อนจะทำหายไป ไม่น่าเชื่อว่าเจ้าเครื่องเล็ก ๆ นี้ได้กำหนดวิถีชีวิตการทำงานของผมตั้งแต่ตอนนั้น ทำให้ผมเป็นผมแบบทุกวันนี้ ไม่ใช่แค่การเลือกเดินสายการง านด้าน IT แต่เป็นการฝึกผมให้รักในการค้นคว้าอะไรใหม่ ๆ ลองนึกสภาพเด็กมัธยมต้นต่างจังหวัด 12 ขวบ ที่ไม่เคยมีความรู้คอมพิวเตอร์มาก่อน ไม่มีโรงเรียนสอน และแน่นอนสมัยนั้นไม่มี Internet ต้องเรียนรู้ด้วนตัวเองทั้งหมด ที่พึ่งอย่างเดียวของผมมีแค่นิตยสารรายปักษ์ ทั้งเล่มเป็นเรื่องอื่นไม่เกี่ยวกับคอมเลย แต่มีเนื่อหาเกี่ยวกับ ภาษา BASIC บน MSX  ฉบับละ 2-3 หน้า แต่เท่านี้ก็เพียงพอที่จะทำให้ผมเฝ้ารอเพื่อที่จะได้เรียนรู้ คำสั่งใหม่ วิธีการใหม่ ๆ ทุกสัปดาห์ ผมลองผิดลองถูกหลายรอบ เริมใหม่หลายรอบ จนสามารถเขียนเกมส์เล็ก ๆ บนเค