Category Archives: Talk

Vapor

ไม่ได้เขียน blog ทาง  technical หลายเดือน เพราะในช่วงนี้ผมต้องเขียน api backend  สำหรับ mobile app ตัวหนึ่ง หลังจากการลองผิด ลองถูกอยู่นาน ก็เลยเลือกเขียนด้วย Vapor และบทความนี้ ผมคงไม่ได้เขียน tutorial การใช้ vapor อย่างเช่นให้แสดง Hello world อะไรง่ายๆแบบนั้น แต่ผมจะมาเล่าให้ฟังถึง ปัญหา , สิ่งที่เจอ , feature ต่างๆจากที่ได้ลองเขียน Vapor มาประมาณเดือนหนึ่ง

ก่อนจะเล่าถึง Vapor ผมขอย้อนกลับไปก่อนแล้วกันว่าทำไมถึงเลือกเขียน backend ด้วย swift เผื่อเป็นข้อมูลในการตัดสินใจสำหรับคนจะใช้ Vapor เป็น backend

คือในช่วงหลายเดือนที่ผ่านมา ผมได้ทำโปรเจคอยู่ตัวหนึ่ง ซึ่งเป็นโปรเจคใหญ่ที่ประกอบไปด้วยโปรเจคย่อยๆสามอย่างหลักๆด้วยกันคือ อย่างแรกเป็น api backend ทำหน้าที่เป็นตัว core service หลัก ในส่วนต่อมาคือ web front end  และสุดท้ายคือ mobile app ซึ่งสองตัวหลังนี้จะเชื่อมต่อไปยัง api backend ตัวเดียวกัน

ในช่วงที่เริ่มโปรเจค ด้วยความที่ไม่เคยทำ backend มาก่อน จึงได้ตัดสินใจเลือกที่จะใช้ Go Language ตามคำแนะนำของเหล่าทวยเทพ และเหล่า Gopher เซียน backend ว่ามัน เจ๋งงงง สุดยอด .. ดีกว่า  NodeJS, เป็น type safty, ทำงานได้เร็วมาก, concurrency เจ๋งๆ,  blah blah ๆ ชาบู Google อะไรก็ว่ากันไป

ด้วยความที่ไม่เคยเขียน Go มาก่อน ก็ต้องมาเริ่มต้นเขียน  Go และเรียนรู้ คอนเซ็ปของ Go อย่างเช่น go pointer ที่ไม่เหมือน c pointer หรือการที่มันเป็น paradigm แบบ structure ไม่ใช่แบบ OOP ที่คุ้นเคย รวมไปถึงสไตล์การเขียนอะไรย่อๆ อย่างชื่อตัวแปร ตามสไตล์ Go ซึ่งมันขัดกับสาย Swift ที่ชอบเขียนชื่อยาวๆ (แอบ แซะไปเยอะ 555+) จะอะไรก็ตาม นั่นไม่ใช่ปัญหาใหญ่สำหรับผม เพราะผมเรียนรู้มันได้

แต่ปัญหาหลักๆที่ผมเจอคือ ปริมาณงานที่ต้องทำมันเยอะมาก .. มันทำไม่ทัน เมื่อมันทำไม่ทันดังนั้น ผมจึงตัดสินใจที่จะหา Developer และ Freelance เพิ่ม แต่ปัญหาที่ใหญ่มากคือ .. คนที่เขียน Go มีน้อยมากกกกก ย้ำว่า น้อยยยยมาก  ในระยะเวลกลายเป็นว่า โปรเจคมันดีเลย์ไปหลายเดือนมาก เพราะคนไม่พอ จะไปจ้างคนเขียน ก็หาคนยากมากกก นี่ผมใช้เวลาไป 3 เดือน ยังไม่ได้ซักคน

ทำไงดีละ ?

อย่างที่บอกไปคือ โปรเจคมันทั้งหมด 3 ส่วนคือ  web front end กับ backend  แล้วก็มีส่วน mobile app ดังนั้น ผมจึงเอา api บางส่วนที่ mobile ต้องใช้งาน แยกออกมาเขียนเป็นอันใหม่ กลายเป็น backend 2 ตัว (เหมือนงานจะเพิ่ม แต่เดี๋ยวผมมีเหตุผลที่แยกออกมา ซึ่งจะกล่าวต่อไป) ในส่วนของ web front end ก็ยังเชื่อมต่อกับ backend ที่เขียนด้วย  GO เหมือนเดิม จะมีก็แต่ mobile app ที่มันจะเชื่อมต่อกับ backend ตัวใหม่ที่เขียนด้วย swift

การเริ่มต้นใหม่นี้ ผมเลือกเอา Swift มาเขียนเป็น backend ก็นับว่าความเสี่ยงอยู่มาก เพราะด้วยตัวภาษา Swift เองที่มันเปลี่ยนอยู่ตลอด และยังเป็นเรื่องค่อนข้างใหม่สำหรับการนำเอา swift มาใช้เขียนเป็น backend ผิดกับภาษา GO, Node ที่ได้ออกแบบมาสำหรับ การเขียน backend โดยเฉพาะ

มีคนถามผมนะว่า ในเมื่อมันเสี่ยง ทำไมเลือกเอา Swift ละ ไม่ใช้ Node , PHP , Ruby, JAVA บลาๆๆๆๆ ?

ผมเลือกใช้ Swift ด้วยปัจจัยหลักๆคือ

  • Node, PHP, Ruby สำหรับผม ต้องเรียนรู้ใหม่ กว่าจะทำความเข้าใจ เขียนให้คล่อง โปรเจคก็คงเลื่อนไปอีก
  • แม้ว่าจะเขียน Java พอได้ และ Java ก็มีเฟรมเวิร์คทาง backend หลายตัวเช่น spring boot แต่ผมไม่ชอบ JAVA เป็นการส่วนตัว (ผมเขียน Android ด้วยนะ แต่ใช้ Kotlin) ดังนั้นการเลือกใช้ Java จึงไม่ใช่คำตอบสำหรับผม
  • จำนวนคนที่เขียน Swift เป็นนั้น มีเยอะกว่า Go ในกรณีที่เราต้องจ้าง Freelance , Outsource นั้น หาคนง่ายกว่ามาก
  • Backend ที่จะเขียนใหม่ เป็นของ mobile ถ้าหากต้องแก้ไข ก็ให้ Mobile Dev แก้ไขทันที เพราะใช้ภาษาเดียวกัน ( Full-Stack )

ปัจจัยที่สำคัญที่สุดของผมคือ สอง อย่างหลัง เพราะ การหาคน เป็นอะไรที่ยากมากจริงๆ ถ้าหากเป็น บริษัทใหญ่ๆ มีเงินจ้างคนแพงๆ คงไม่ใช่ปัญหา แต่ว่าถ้าหากมีคนน้อยๆ งบน้อยๆ ผมขอให้พิจารณา ให้ถี่ถ้วนก่อนนะครับ ว่า กำลังในทีม เพียงพอ หรือเปล่า บางทีการตัดสินใจเลือก technology บางตัว มันกระทบ กับ การหาคนมาเขียน รวมไปถึงการ maintain code ในอนาคตด้วยนะครับ

Vapor

ก่อนหน้านี้ผมเคยลอง Kitura มาสักพัก แต่หลายๆของ Kitura มันยังไม่ค่อยโอเค เท่าไหร่ อย่างเช่น การเชื่อมต่อ postgres และสุดท้ายก็นั่นแหละ มันก็มาลงเอยด้วยการใช้ vapor และหลังจากการเขียน Vapor มาสักพัก ผมจะเล่าถึงประสบการณ์ ที่ได้ใช้ Vapor เป็น API และสิ่งต่างๆที่ได้เจอออกเป็นหัวข้อละกันนะครับ และเนื่องจากผมใช้มันเป็น API Backend ไม่ได้ใช้เป็น Web Server ดังนั้นในส่วนที่เกี่ยวข้องกับ web อย่าง server rendering , web template นี่ผมขอไม่พูดถึงนะครับ

Tools

Vapor มีเครื่องมืออำนวยความสะดวกมาให้ คือ Vapor Command Line ซึ่งมันจะช่วยให้เราเริ่มต้นสร้างโปรเจคได้ง่าย เลือกได้ว่าจะเอา template แบบไหน เป็น web หรือ แค่ api และมันยังมีคำสั่งในการ update package , dependency ต่างๆ รวมอยู่ในตัวเอง รวมไปถึงการสร้าง xcode project คืออันที่จริงเราไม่ต้องใช้ xcode project เพราะ backend มันมักจะถูก compile และทำงานบน linux (คงไม่มีใครใช้ Mac OS เป็น Server กันเท่าไหร่จริงไหม ?) แต่เราต้องวาง source code folder อะไรต่างๆให้ให้ถูกต้อง แต่เหตุผลหลักที่เรายังต้องการ xcode project เนี่ย ก็เพราะว่า เราพัฒนาบน Mac เป็นหลัก การใช้ Xcode เป็นเครื่องมือในการเขียน code มันดีกว่าการไปเขียนด้วย text editor ตัวอื่นๆ และถ้าหากเราไม่ใช้ command line tool  คุณก็ต้องมาจัดการ กับ dependency และ source code ใน xcode project ด้วยตัวเอง ซึ่งมันเสียเวลา ดังนั้นการที่มีเครื่องมือมาให้ นับว่าเป็นข้อดีอย่างมาก

Code Style

ในการเขียน backend นั้นจะมี framework หลักๆ อยู่หลายเจ้า อย่างเช่น Kitura ของ IBM หรืออาจจะเป็น Perfect และ Zewo อะไรก็ว่ากันไป แต่ถ้าหากเทียบกันแล้ว Vapor นั้นมีการเขียน coding style ที่ดูเหมือนจะเป็นสไตล์ swift มากกว่าเจ้าอื่นๆ .. อย่างกรณีของ Kitura นั้น ได้ออกแบบมาให้เหมือนกับ express ของ Node JS ดังนั้นแล้ว วิธีการในการเขียนมันก็เลย เหมือนเขียน NodeJS  ผมว่า Vapor นี้มันเข้ากับสไตล์ของผมมากกว่า

Database Support

ในการเขียน backend แน่ๆคือมันต้องเชื่อมต่อกับ database สักตัว ข้อดีที่เห็นได้ชัดมากคือ มันมี framework ที่เรียกว่า fluent ซึ่งเราไม่ต้องไปจัดการเขียน code พวก sql เอง เราสามารถสร้าง model เพื่อให้มัน จัดเก็บลง database ได้เลย  และมันก็รองรับ postgres , mongo, sqlite โดยจะทำงานผ่านสิ่งทีเรียกว่า provider และข้อดีอีกอย่างของ fluent คือเขียน unit test ง่าย (ถ้าใครเคยเขียน  unit test ที่เชื่อมต่อกับ database จะเข้าใจว่ามันปวดหัวแค่ไหน)

JSON Suport

ข้อดีอีกอย่างของ fluent คือมันแปลง json เป็น model ได้ค่อนข้างง่าย รวมไปถึง การเปลี่ยน model กลับไปเป็น json ก็ง่าย มันสะดวกมากเวลาที่จะตอบ response กลับไปเป็น json

Authentication

การยืนยันตัวตน เป็นฟีเจอร์ที่แทบจะทุก service ต้องมี ซึ่งใน vapor มันจะทำงานผ่านทาง provider (เหมือนกับกรณี database) และมันก็รองรับการ authen หลายอย่างมาก ไม่ว่าจะเป็นจะเป็นแบบ username – password หรือว่า ใช้ token ก็ได้ และรองรับ JWT ด้วย ซึ่งตรงนี้ผมว่ามันค่อนข้างสะดวก ผมยังไม่เคยลองทำพวก third party authen นะ อย่างเช่น facebook , google ว่ามันทำงานได้ดีแค่ไหน

Route

การสร้าง Route ของ Vapor นั้นก็ค่อนข้างจะง่าย ไม่ว่าจะเป็นแบบ Rest หรือแบบ static path การเข้าถึง query หรือ parameter ของ request ที่เข้ามาก็มีฟังก์ชั่นมาครบ หรือถ้าหากต้องการจะกำหนด สิทธิการเข้าถึงแต่ละ path ก็ทำได้ค่อนข้างสะดวก

REST

หากต้องการจะให้ api เป็น แบบ rest ตัวของ vapor เองก็ทำได้ง่ายๆผ่านทาง controller builder ยิ่งถ้าใช้ร่วมกับ fluent แล้ว มันเป็นอะไรที่แจ่มมาก เพราะมันลดงานในการเขียน code ลงไปได้เยอะมาก แค่กำหนดว่า PUT , POST , UPDATE เรียกฟังก์ชั่นอะไรก็จบละ (คือมันลดการเขียน code DB sql แล้วยังลดการเขียน code ในส่วนของ route อีก)

Middleware

ใน vapor มี middleware ให้ใช้งานอยู่หลายตัว อย่าง redis ,facebook auth , realm และการเขียน middle ware ขึ้นมาใช้งานเอง ผมว่ามันง่ายนะ เพราะว่ามันมี protocol รองรับไว้อยู่แล้ว

Deployment

ในส่วนของการ deploy นั้น ตัว vapor เราจัดการ environment ได้ด้วย config ไฟล์ ซึ่งใน Vapor นี้มัน แยก มาให้เราเลยว่า เป็น development, staging หรือว่า production มันทำให้ เรากำหนดสิ่งต่างๆที่จำเป็นได้สะดวกมาก อย่างเช่นว่า ตอนพัฒนา ให้มันไปต่อกับ DB เครื่องตัวเอง แต่ตอน deploy จริงๆให้มันไปต่อกับ AWS แบบนี้ รวมไปถึงการจัดการ secret key ต่างๆ มันก็แยกให้เรา

หรือถ้าอยากจะ deploy เป็นแบบ container ผ่านทาง docker ก็ทำได้ คือตัว vapor มันมี docker file ที่ community ทำไว้ให้อยู่แล้ว ดังนั้นเราเลยไม่ต้องไปเริ่มเขียน docker file จากศูนย์

Debug

จากประสบการณ์ในการเขียน GO และ NodeJS ผมบอกได้คำเดียวสองอย่างนี้ ห่วยแตกในการ debug มาก คือในช่วงแรกๆ นี่ผมถามคนที่เขียน backend หลายคน (ทั้ง Go, NodeJS) นะว่า debug กันยังไง เค้าบอกว่า ใช้ print log ดูค่าเอา ผมนี่ถึงกับร้อง WTF !!!! คือส่วนตัวผมไม่ชอบเลยกับการที่ต้องมาดู log ว่าค่า มันเป็นอะไร แม้ว่า Go มันจะมี Debugger อย่าง Delve อยู่ แต่มันต้องมา config ให้มันทำงานร่วมกันผ่าน IDE ได้ ( ใช้ Gogland IDE อาจจะง่ายกว่า VS Code หน่อยหนึ่ง) และประสิทธิภาพของ debugger นี่ก็อ่อนด้อยมาก ในขณะที่ Swift นั้นการ debug มันง่ายมาก ถ้าหากเราทำผ่าน Xcode

Unit test

เท่าที่ลองใช้งาน ตัว vapor มัน build in พวก function ในการทดสอบ route (request / response) อยู่แล้ว ไม่ต้องไปเขียน XCTest กับแบบเพียวๆเท่าไหร่ และก็อย่างที่ได้บอกไปว่า ถ้าหากใช้ fluent การเขียน unit test จะทำได้ง่ายมาก เพราะว่า เราไม่ต้องให้มันไปเชื่อมต่อกับ database server จริงๆ แค่กำหนดให้มันสร้าง db ใน memory ในตอนที่เรา run testing เท่านั้นเอง ซึ่งในบางครั้ง มันลดการเขียน mock ไปด้วยนะ

Document / Community / Sample / Tutorial

ในส่วนนี้ผมว่า มันดีมากๆ คือมันมีคนใช้เยอะ ทำให้เราหาตัวอย่างโค้ดได้ง่าย รวมไปถึง document ที่เขียนไว้ค่อนข้างจะครบ ทำให้เวลาติดปัญหาเนี่ย มันหาทางออกได้รวดเร็ว

Feature อื่นๆ

อันที่จริงมันมีอีกหลาย feature ที่ผมยังไม่เคยลองใช้งาน อย่างเช่น session , core หรือการใช้ให้มันเป็น web server ดังนั้นในส่วนนี้ก็เลยบอกไม่ได้ว่า เป็นยังไง

vapor.cloud

อันนี้ผมก็ไม่ได้ลองใช้งานนะครับ ที่ยกมาพูดถึงเนี่ย ผมแค่จะบอกว่า Vapor น่าจะมีอนาคตสดใสอยู่นะ เพราะว่า อาจจะเป็น cloud เจ้าแรก ที่ใช้ Swift เป็นหลัก

ข้อเสียละ ?

ข้อเสีย อย่างแรกของมันคือ เค้าบอกว่า มันทำงานได้ช้ากว่าตัวอื่นๆ ซึ่งก็มีคนลอง bench mark   ซึ่งก็มีผลว่า Vapor 2 ทำงานได้ค่อนข้างช้ากว่าคนอื่น เร็วสุดก็ Go และมั้ง แต่ว่าในส่วนนี้ผมไม่ค่อยแคร์เรื่อง performance สักเท่าไหร่ เพราะว่า จำนวนผู้ใช้งานอยู่แค่หลักพัน ไม่ได้ทำ server ที่จะรองรับผู้ใช้งาน หลักล้านคน ข้อเสียอย่างที่สองคือ ยังไม่มีค่อยมีคนเอา swift เป็น backend เจอปัญหาอาจจะต้องหาทางแก้เอาเอง

สรุป

ถ้าคุณสามารถใช้ firebase หรือพวก service สำเร็จรูปอื่นๆได้ก็ไม่ต้องเขียนเองหรอกครับ แต่ถ้าต้องเขียน backend เอง ผมว่า Vapor เป็นทางเลือกที่ดี ตัวหนึ่งเลยนะครับ เหมาะมากสำหรับทีม ที่มี iOS Dev เยอะๆ

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

หลักสูตรอบรมการเรียนโปรแกรมด้วยภาษา Swift จากเริ่มต้นสู่มือโปร

ในที่สุดก็เสร็จแล้วนะครับ กับคอร์สหลักสูตรการเขียนโปรแกรมด้วยภาษา Swift  มีความยาวกว่า 10 ชม. ผมกล้าพูดได้เต็มปากว่า ไม่น่าจะมีหลักสูตรในไทยที่ไหน สอนละเอียดขนาดนี้ เพราะมันอัดแน่นด้วยเนื้อหาแทบจะครบทุกๆอย่างของภาษา Swift ตั้งแต่ขั้นเริ่มต้นอย่างการประกาศตัวแปร ไปจนถึงเรื่อง Closure , Memory Management หรือ Generic

หลักสูตรที่ผมทำขึ้นมา ไม่ใช่ให้เขียนโค้ดตามอย่างเดียว แต่เน้นไปยัง “Fundamental” อธิบายถึงที่มาที่ไป รวมไปถึง concept ต่าง ซึ่งจะทำให้เข้าใจในการทำงานของส่วนต่างๆ ได้อย่างแท้จริง

ผมใช้เวลากว่า 4 เดือนในการทำหลักสูตรขึ้นมา ซึ่งมันก็มีต้นทุนที่ผมได้ลงไปเยอะพอสมควร โดยเฉพาะต้นทุนเวลา ต้องเตรียมเนื้อหา เตรียมตัวอย่างประกอบ รูปภาพ สไลด์ และนำมาย่อยให้ง่ายต่อการเข้าใจ รวมถึงเอาประสบการณ์ของผมถ่ายทอดลงไปด้วย ซึ่งผมเชื่อว่า คุ้มค่าเงินทุกบาททุกสตางค์แน่นอน

ราคาเต็มอยู่ที่ 6400 บาท แต่ในช่วงเปิดคอร์สนี้ผมมีคูปองส่วนลดให้

สำหรับนักเรียน นักศึกษา ผมให้คูปองพิเศษ ลด 50% ให้ครับ ไม่ต้องไปแย่งกับคนอื่น 🙂 เพียงถ่ายรูป บัตรนักศึกษา และส่ง message มาทาง fb – fan page หรือจะส่ง email มาที่ macfeteria แอท gmail เพื่อยืนยันว่าเป็นนักศึกษาจริงๆ

และสำหรับผู้ที่ไม่มีบัตรเครดิต ส่ง email มาหาผมได้ครับ เดี๋ยวบอก รายละเอียดวิธีการสั่งซื้อให้

เนื้อหามีประมาณ 20 กว่าบทได้แก่

  • Variable
  • Operator
  • Making Decision
  • String
  • Collection ( Array , Dictionary )
  • Loop
  • Switch
  • Function
  • OOP
  • Initializer
  • Closure
  • Memory Management
  • Structure
  • Enumeration
  • Protocol
  • Extension
  • Error Handling
  • Generic

ในแต่ละบทยังแบ่งย่อยออกเป็นอีกหลายๆเรื่องนะครับ ลองเข้าไปดู Course ได้ครับที่

https://www.udemy.com/swift-th

ปล 1. ผม update course ให้ตลอดนะครับ หากมีเนื้อหาใหม่ๆเพิ่มเติม
ปล 2. ผมทำคูปองมาให้แล้ว ก่อนซื้อโปรดใช้คูปอง นะครับ

GH 60 Keyboard Building log

หลายคนก็น่าจะพอรู้ว่าผมมีงานอดิเรกอย่างหนึ่งคือ ทำ keyboard ไว้ใช้เอง ก็อย่างที่เคยได้โพสไปในครั้งก่อนโน้น ว่าจากการเริ่มต้นด้วยการสร้าง keyboard แบบ handwire ผมก็มีโปรเจคสร้าง keyboard แบบใช้ PCB บ้าง  และมันก็มาถึงโปรเจค GH60 ซึ่งเป็น Project Opensource Hardware จากทาง GeekHack ( Keyboard Community ) อันที่จริงโปรเจคนี้ได้เริ่มมาตั้งแต่ปี 2014 แต่กว่ามันจะสมบูรณ์มาเป็นตัวปัจจุบัน (REV C) ก็ 2016

IMG_5347

โดยหลักการแล้ว ตัววงจร PCB ก็ใช้หลักการเดียวกับ Handwire ที่ผมได้ทำไปคือ มีตัว Micro Controller ตัวเดียวกัน ใช้ Firmware เหมือนกัน เพียงแต่ว่าถ้าใช้แบบ PCB เราก็ไม่ต้องมานั่งเชื่อมสายไฟ บัดกรี พวก ไอโอด และ Microcontroller เอง จะเหลือส่วนให้ บัดกรี จริงๆ คือ switch เท่านั้น

_DSC0208

ในครั้งนี้ผมได้ลองเอา Cherry  Switch สีเขียว มาใช้งาน (สวิตช์ สีเขียว ปกติจะใช้กับ space bar เพราะมันต้องการแรงกดค่อนข้างมาก)

สวิตช์สีเขียว รวมถึง Stabilizer สั่งมาจาก มาจาก Mouser ราคาไม่ได้แพงมาก แต่เจอภาษี เข้าไป ก็คือว่าแพงอยู่  แต่ถ้าคุณจะสั่ง ผมแนะนำว่าให้สั่งจากเวปพวก mechanicalkeyboards หรือ WASD ดีกว่าครับ เพราะ ปัญหาหลักที่ผมเจอตอนสั่งของจาก Mouser ก็คือว่า Mouser ไม่มี Costar Stabilizer มีแต่ Cherry Stabilizer อันนี้มันก็พอแก้ขัดได้ แต่ปัญหาอย่างที่สองเนี่ย ทำเอาปวดหัว นั่นก็คือเราต้องรู้จัก Part No. ครับ อย่างกรณี Cherry MX เนี่ย มันมีเป็น สิบๆ รหัส บางตัวใช้กับ PCB Mount (ไม่ต้องมี plate) ดังนั้นมันมีโอกาสที่เราจะสั่งผิดเยอะมาก  แต่ข้อดีของการสั่งจากเวปขายของ electronic แบบนี้ คือ ราคาถูกครับ อย่างสวิตช์ Cherry นี่ตัวละ 0.5 USD ในขณะที่เวปทั่วไปขาย 1 – 1.5 USD

_DSC0194

ส่วน Plate นั้นสั่งทำในไทย นี่แหละครับ คือมันจะมีร้านพวกทำงาน CNC อลูมิเนียม Laser Cutter ผมก็หาหลายเจ้านะ ถามๆดู ก็มีแต่รับงาน 10 ชิ้น ขึ้นไป หรือบางที่รับงานชิ้นเดียวแต่ราคาแพงมาก หาไปหามาจนกระทั่งเจอร้าน http://www.psstainlessthailand.com เค้าบอก อันเดียวก็รับทำ ผมเลยลอง email ไปถามเค้าดูว่าสั่งอันเดียวทำไหม ราคาเท่าไหร่ ผมต้องหาแผ่นอลูมิเนียมเองไหม เค้าก็บอกว่า รับทำ แผ่นอลูมิเนียมไม่ต้องหาเอง ผมก็เลยสั่งไป และราคาก็ไม่ได้แพงด้วย สรุปคือ ดีงาม (งานอาจจะไม่สวยนัก แต่ใช้ได้)

เมื่อทุกอย่างอยู่ในมือหมดแล้ว ในลำดับขั้นตอนต่อไปก็คือ เอา Switch มาใส่กับ Plate

_DSC0222

เสร็จแล้วก็ประกอบเข้ากับ PCB ใส่เข้าไปให้ตรงรู ที่เค้าเจาะไว้ให้

_DSC0224

เมื่อประกอบ switch ทุกตัวเสร็จ มันก็จะมีหน้าตาประมาณนี้

_DSC0232

ในส่วนด้านหลังก็จะเห็นว่า ช่องต่างๆ ก็จะเต็มพอดี

_DSC0244

จากนั้นก็ทำการบัดกรี และใส่ stabilizer ให้เรียบร้อย

IMG_5379

ในส่วนของ เคส นั้นผมสั่งจาก เวป alibaba express ครับ สั่งมาสองอัน สีขาว กับ ดำ (แต่ตัวที่ผมเอามาใช้กับตัวนี้คือสีขาว)

IMG_8673

คุณภาพของเคส ทีได้มาก็ถือว่า โอเค แต่เค้าไม่มี น๊อตให้นะ ต้องไปซื้อจากร้านขายน๊อต อีกที

และเมื่อประกอบเข้ากับ Keycaps สีเขียว/ขาว แล้วก็จะได้ Keyboard หน้าตาอย่างที่เห็น

IMG_6897

IMG_5401

เอามาเทียบกับ Handwire ที่เคยทำไป ก็เล็กกว่านิดหนึ่ง

IMG_5391

และสุดท้าย ลองมาวัดกับพี่ใหญ่อย่าง  Apple Extend Keyboard II  ซะหน่อย

IMG_7074

สรุป

ปัญหาหลักที่ผมเจอ ก็คือว่า Plate ผมสั่งมามันหนาไป ปกติเค้าใช้ 1.5 mm แต่ผมสั่ง 2 mm.  ด้วยความที่คิดว่าอยากให้มันทนทาน  ผมก็พบว่า มันทำให้ ใส่ stabilizer ลำบาก และไม่ลงตัว กลายเป็นต้องเอากระดาษทราย มาขัดเกลา stabilizer ให้มันบางลง เพื่อที่จะใส่ได้ ดังนั้นแนะนำว่า ควรให้มีความหนาแค่ 1.5 (+/- 0.1) นั่นแหละดีแล้ว

อย่างที่สองก็คือว่า ตัว switch สีเขียวนั้น ใช้งานแรกๆ นี่บอกตรงๆว่า กดเหนื่อยเลย เพราะมันค่อนข้างแข็ง แต่ใช้สักพักจะดีขึ้น แต่ยังไงก็ตาม ผมแนะนำว่า ถ้าเอามาใช้งานแบบพิมพ์งานเป็นหลักใช้สวิตช์สีอื่นเถอะ สีเขียวไม่ค่อย work หรอก เมื่อยนิ้วมาก เว้นแต่ว่าคุณเป็นพวก บ้าพลัง

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

Review Harman/Kardon Aura

เอาละวันนี้ผมจะมารีวิว Harman/Kardon Aura นะครับ เพิ่งได้มาใหม่ๆ เลย คือจริงๆแล้วอาทิตย์ก่อน ผมไป Homepro (สาขาที่ผมไปคือ พระราม 3)  จะไปซื้อน้ำยาทำความสะอาดเครื่องซักผ้า แต่ดันผ่านบูทเครื่องใช้ไฟฟ้า คือบางสาขา Homepro มันมีส่วนขายเครื่องใช้ไฟฟ้าอยู่ เดินไปเห็นป้ายลดราคาลำโพงรุ่นนี้อยู่ 30% ไม่รอช้ารีบเข้าไปดูราคาว่ามันจริงป่าวว่ะ สรุปว่า เออมันลดจริงๆ จาก 15K เหลือ 11K โดยประมาณ สรุปว่าลดไป 4 พันบาท

แต่ก่อนจะซื้อ ผมก็ดูใน net ก่อนนะว่า ราคาจริงๆเค้าขายกันเท่าไหร่ ก็ลอง search ดูเห็นมีในเวป อย่าง jib ก็ขายที่ 15,900 บาท แล้วก็มีใน Lazada ขายแค่ 11,000 เหมือนกัน แต่พอแล้วพอเข้าไปดู มันเป็นคนละรุ่นกัน คือตัว ที่ขายอยู่มันจะเป็น  Aura Studio ซึ่งมันจะตัด พวก airplay ออกไป

จากการหาข้อมูลราคาคร่าวๆ ก็เลยตัดสินใจ ซื้อมา คือจริงๆมันก็มีลำโพงรุ่นอื่นๆเหมือนกันนะ ที่ลดราคา บางตัวซื้อหนึ่งแถมหนึ่งอย่าง JBL (คือลำโพง 4 พันแถมอีกตัวในราคา 2 พันกว่าบาท คุ้มโคตร) แต่ว่าผมสนใจรุ่นนี้เป็นพิเศษ คือส่วนตัวผมไปลองลำโพงตัว 4-5 พัน แล้วเสียงมันงั้นๆ เหมาะกับพกเอาไปเที่ยวมากกว่า เอามาไว้ฟังจริงจัง

มาดูกันเลย กล่องก็หน้าตาแบบนี้ ด้านบนขวา บอกไว้ว่า มันได้ Reddot Design ด้วยนะ (คือมันก็สวยจริงแหละ ถึงได้รางวัล)

aura1

ด้านหลังของกล่องก็ประมาณนี้

aura2

ส่วนด้านบนของกล่องจะเขียนไว้ชัดเจนเลยว่า รุ่นนี้ใช้ได้ทั้ง Airplay / Wifi / Bluetootch / AUX  แต่อย่างที่ผมได้บอกไป ถ้าเป็นรุ่น Aura Studio มันจะไม่มี Airplay แล้ว

aura3

จากนั้นก็เปิดกล่องออกมา

aura4

aura5

ภายในกล่องจะมีสายไฟ Adapter มาให้ พวกสาย Aux 3.5 ไม่แถมนะครับ ถ้าใครอยากจะต่อแบบมีสาย ก็ต้องซื้อสายมาเอง

aura6

และนี่ก็คือโฉมหน้าของ Aura ใสๆ วัยรุ่นชอบ

IMG_8275

ในส่วนด้านหลังจะเห็นว่ามี ช่องเสียบต่างๆ รวมไปถึงช่องต่อไฟ

aura7

เอาไปวางคู่กับ Macbook และ จอ Dell ก็ลงตัวทีเดียว

aura10

ดูใกล้ๆอีกรอบ

aura9

ใส กิ๊ก บาดใจ

สรุปทดสอบโดยรวม

  • จากการใช้งานโดยทั่วๆไป เสียงดีมากๆ เปิดดังสุด ก็ให้เสียงไม่แตก เบสยังนิ่ง เสียงแน่นมาก จริงๆผมแนะนำให้ไปร้าน ไปลองฟังก่อนนนะ ลำโพง เรื่องเสียงนี่แล้วแต่สไตล์ความชอบส่วนตัวเลย แต่โดยรวมตัวนี้ ใครฟัง ก็บอกว่าเสียงดี
  • การลด เพิ่มเสียง เป็นระบบสัมผัส ไม่ต้องกดปุ่ม แค่เอานิ้ว ลูบๆไปตามขอบๆ ก็ลดเสียง เบาเสียงได้แล้ว
  • การเชื่อมต่อ Bluetooth ทำได้ดี
  • การเชื่อมต่อ Airplay ก็ดี แต่บางทีมันกระตุก (ในกรณีที่เครื่องทำงานอย่างอื่น หรือเปิด net โหลดหนักๆ) เข้าใจว่าเป็นเพราะ router wifi ที่ผมใช้มันอาจจะไม่ดีเท่าไหร่ ( ของแถมมากับ AIS Fiber)
  • เสียง Airplay ดีกว่า Bluetooth นิดหนึ่ง เชื่อว่าคนทั่วไป แยกไม่ออก
  • ถ้าต่อ Bluetooth เสียงทุกอย่างมันจะออกที่ลำโพงหมด อย่างเช่นถ้าเปิดฟังเพลงจาก youtube ก็จะได้ยินผ่านลำโพง
  • ถ้าใช้ Airplay จะใช้ได้กับพวก iTune หรือโปรแกรมที่รองรับ Airplay ในกรณีเปิดฟังเพลงผ่าน youtube เสียงจะไปออกที่ mac แทน
  • มี iOS Application ให้ใช้ แต่ผมยังไม่ได้ลอง
  • ถ้าเทียบกับ Bose SoundLink III ผมว่าตัว Bose นั้นเสียงดีกว่าตัวนี้ นิดหนึ่ง และ bose มีขนาดเล็กกว่า แต่ Bose นั้นต่อได้เพียงแค่บลูทูช และไม่มีระบบสัมผัส  และถ้าตั้งเอาไว้ที่บ้าน ผมว่าตัวนี้มันดูสวยงามกว่าเยอะ

สรุปสั้นๆคือ ผมชอบมาก เสียงดี คุ้มราคาเหลือเกิน ไปโฮมโปร แต่ได้ลำโพงเสียงดีมาแทน ส่วนน้ำยงน้ำยาอะไรนั่นเอาไว้ก่อนค่อยไปหาซื้อใหม่

และสำหรับวันนี้ก็เท่านี้ครับ

 

Update เพิ่มเติม 28 / Aug / 2017

พอดีว่า Spotify เพิ่งจะเปิดตัวในไทย ผมเลยลองสมัครใช้งานดู แต่ว่าด้วยข้อจำกัดของ account ฟรี ที่ไม่สามารถเชื่อมต่อลำโพงตัวนี้ .. ผมเลยตัดสินใจ จ่ายเงินแบบ premium ไป เพื่อที่จะฟังเพลงผ่านลำโพงนี้ .. แต่มันทำให้ผมค้นพบความสามารถอีกอย่างของลำโพง ที่ผมเพิ่งจะรู้คือ คือ เราสามารถฟังเพลงจาก spotify แม้ว่าเราจะปิดคอมพิวเตอร์ เพราะมันจะไป stream จาก internet .. อย่าง เมพพพพพ … แต่ว่าเราต้องเชื่อมลำโพงในแบบ air play นะครับ

Review Dell U2414H

จริงๆแล้วใช้ Macbook Retina จอภาพมันก็สวยดีนะ แต่ว่าเมื่อทำงานไปได้สักพักใหญ่ๆ ผมก็รู้สึกว่า จอมันเล็กเขียนโค้ดแล้วมันอ่านไม่ค่อยมันส์เลย คือบางทีต้องกวดสายตา เลื่อนจอภาพลงมาเพื่อให้เห็นโค้ดทั้งหมด ยิ่งมีเวลาเขียน iOS มี Simulator ด้วยแล้ว ก็รู้สึกว่า มันเล็กไปหน่อย ถ้าได้จอมาต่อก็น่าจะดี

จอภาพมันก็มีหลายแบบมากมายในตลาด ทั้งเล็ก ใหญ่ ราคาแพง ถูก หลายยี่ห้อมากมาย ดังนั้น ก่อนจะไปเลือกซื้อ หรือหาอะไร ผมก็ตั้งหลักไว้ว่า

  • ต้องมี port HDMI หรือ Display , Mini Display เพื่อใช้ต่อกับ Macbook Retina
  • มีประกันให้อุ่นใจ
  • งบไม่เกิน 10,000 บาท
  • ขนาดไม่เล็ก ไม่ใหญ่ไป (สำหรับผม 27″ ใหญ่ไป  และจอ 20″ ก็เล็กไปสำหรับเขียนโค้ด )

อันที่จริงมันก็มีจอหลายรุ่นที่ตรงตามที่ผมอยากได้ แต่ก็มาลงเอยกับ Dell U2414H เพราะว่า

  • เคยใช้จอ Dell มาก่อน จากประสบการณ์คิดว่ามันโอเค
  • รุ่นนี้ประกัน 5 ปี ( ถ้าเลือกเอา 3 ปีก็ถูกกว่านิดหน่อย )
  • ผมซื้อในราคา 8 พันบาท แต่ไปรับของเอง (ถ้าสั่งซื้อในเวปออนไลน์ ก็ประมาณ 9 พัน ส่งฟรี)
  • Onsite service
  • Spec ต่างๆของจอ อยู่ในขั้นดี
  • มันมีช่องต่อ usb จากจอ

Open Box

_DSC0106

ตัวที่ผมได้มานี้คือ Dell UltraShape U2414H (Rev A03) คือจอภาพรุ่นนี้จะมี Rev 1 , 2 , 3 ถ้าจะซื้อก็ต้องดูด้วยนะครับว่าเป็น Rev ไหน เพราะ Rev 3 คือรุ่นใหม่สุด (ณ เวลาที่ผมเขียน)

_DSC0107

เมื่อดูข้างๆกล่อง ตรงที่ผมขีดสีแดงเอาไว้ มันบอกว่า รุ่นนี้ ประกัน 5 ปี (U2414H ปกติจะประกัน 3 ปี)  เอาละอย่ามัวเสียเวลากันเลย เริ่มแกะกล่องกันเลยดีกว่า

_DSC0109

หลังจากแกะกล่องออกมา ก็จะพบสายไฟที่ให้มา ประกอบไปด้วย

_DSC0113

  • สาย power
  • สาย usb
  • สาย display port

_DSC0133

_DSC0131

คือมันไม่แถมสาย HDMI มาให้แต่ให้ สาย Mini Display ไว้ต่อกับ Macbook ก็ถือว่าโอเค

ฐานตั้งที่ให้มาก็ดูแข็งแรงดี

_DSC0114

_DSC0115

หลังจากแกะห่อออกมาละ ด้านหลังของจอภาพก็ประมาณนี้

_DSC0116

รายละเอียดต่างๆของการผลิต ก็บอกไว้หลังจอ และที่ผมได้มา มันก็เขียนไว้ว่าผลิต มกราคม 2016  ในส่วนของ serial number ก็ตรงกับข้างกล่อง

_DSC0119

ด้านหน้าจอ ก็อย่างที่เห็น ขอบบาง

_DSC0124

ดูกันใกล้ๆ จะเห็นว่าในส่วนของการแสดงผลเกือบจะติดขอบเลยทีเดียว

_DSC0123

เมื่อประกอบกับฐานเสร็จ ก็จะเป็นแบบนี้

_DSC0127

จอมันจะปรับเลื่อนขึ้นลงได้ และบิดองศาก้มเงิย ได้ พอประมาณ

_DSC0129

ถ้าหากไม่ชอบการวางจอภาพแนวนอน จะเปลี่ยนเป็นแนวตั้งก็ได้

_DSC0130

ในส่วนของภายนอก ก็พอมองเห็นภาพละ ต่อไปก็ลองเอาไปต่อกับ macbook  กันเลย

_DSC0160

จอ Dell U2414H นี้ไม่ใช่จอแบบความละเอียดสูงเหมือน retina display ดังนั้นแล้ว ความคม  (dpi ) จะเอาไปสู้ จอ macbook คงไม่ได้แน่ๆ

_DSC0159

แต่ถ้าเอามาเปรียบเทียบพื้นที่การทำงานก็จะเห็นได้ว่ามันมีพื้นที่เยอะกว่าเดิมมาก

Untitled-2

และในส่วนของการปรับแต่งก็เหมือนๆ จอทั่วๆไป ปรับโทนสี ความสว่าง เลือก input source ว่าจะรับสัญญาณจาก hdmi หรือ diplay port ได้

_DSC0161

รูปเปรียบเทียบกับ Macbook 13″

_DSC0165

สรุปแล้ว ผมว่ามันเป็นจอที่เหมาะกับการเขียนโปรแกรมมาก เพราะ

  • มีพื้นที่ให้เขียนโค้ดเยอะกว่า macbook retina
  • สีสันของภาพ คุณภาพของจออยู่ในขั้นดีมาก
  • ใช้ usb 1 ช่อง ต่อจาก macbook  ไปเข้าจอ แต่เราจะได้ช่อง usb หลังจอภาพ เพิ่มมา 3 ช่อง
  • ราคาคุ้มค่ากับที่ต้องจ่ายไป

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

สำหรับผมก็ขอจบการ review  เพียงเท่านี้