8 ข้อน่ารู้เกี่ยวกับ Drizzle ORM

  1. Drizzle ORM ถูกสร้างเมื่อ 3 ปีที่แล้ว แต่การเติบโตดีมากๆ ดูได้จากยอดดาวน์โหลดบน NPM 8IY[
    https://bestofjs.org/projects/drizzle-orm
  2. จากเว็บ stateofdb จากการสำรวจในปี 2023 พบว่า Drizzle ถูกยกเป็น tool (ORMs) เหนือ Prisma แล้ว (Drizzle อันดับ 2 และ Prisma อันดับ 3)
    https://stateofdb.com/tools/drizzle
  3. เป็น ORM เดียวที่มี query API ทั้งแบบ relational และ SQL-like (เขียนเหมือนภาษา SQL) ดูตัวอย่างโค้ดนี้

แบบ relational (Queries API)
const users = await db.query.users.findMany();

แบบ SQL-like
const result = await db.select().from(users);

  1. ถูกออกแบบมาให้มีขนาดเล็ก มี typesafe (TypeScript) และมีประสิทธิภาพสูง (0 dependencies!)
    ดูการเปรียบเทียบกับ Prisma ที่นี่ https://orm.drizzle.team/benchmarks
    บอกเลยว่าดูดีกว่า Prisma 🙂
  2. Drizzle มี concept ที่ว่า “ถ้าคุณรู้จัก SQL คุณก็จะรู้จัก Drizzle” อย่างที่บอกไปในข้อ 3 ว่าจุดเด่นอีกอย่างของ Drizzle คือมีคำสั่งที่คล้ายกับภาษา SQL ที่หลายคนคุ้นเคยเป็นอย่างมาก ทำให้ไม่ต้องเรียนรู้ใหม่มากนัก สามารถเขียนได้เลย
  3. Output ของ Queries API ของ Drizzle จะเป็น 1 SQL query เสมอ นั่นหมายความว่า เราสามารถใช้พวก serverless database ได้อย่างสบายใจ ไม่ต้องกังวลกับ performance หรือ ต้นทุนการ roundtrip แน่นอนไม่ต้องกังวลกับปัญหา n+1 อีกด้วย
  4. ณ ตอนที่เขียนนี้อาจจะรองรับ driver ของฐานข้อมูลเจ้าดังๆ ไม่มากนัก ตอนนี้มี Postgres, MySQL, SQLite, Supabase และอื่นๆ แต่ทีมก็กำลังจะเพิ่มเข้ามาในเร็วๆ นี้ และเห็นว่า v1 อาจจะมี MariaDB และ SQL Server ตามมา
  5. มี Drizzle Studio ช่วยให้เราสามารถจัดการฐานข้อมูลในโปรเจคได้อย่างสบาย ไม่ว่าจะดู เพิ่ม ลบ แก้ไขข้อมูลครับ

8 เหตุผล ทำไมควรเรียน NestJS

NestJS เป็นเฟรมเวิร์กสำหรับพัฒนา Web App ทางฝั่งเซิร์ฟเวอร์ (Node.js framework) นิยมพัฒนาเป็น RESTful API (Backend) และเขียนด้วย TypeScript ครับ

แล้วทำไมเราต้องเรียน NestJS ด้วย มีเหตุผลดังนี้ครับ

1. การออกแบบเชิงโมดูล (Modular Architecture)

NestJS ใช้การออกแบบเชิงโมดูล ทำให้โค้ดมีโครงสร้างที่ชัดเจน สามารถแบ่งเป็นโมดูลย่อย ๆ ง่ายต่อการพัฒนา แก้ไข หรือเพิ่มฟีเจอร์ใหม่ แน่นอนเหมาะมากสำหรับทำงานเป็นทีมครับ

2. รองรับ TypeScript เต็มรูปแบบ

NestJS นั้นเขียนด้วย TypeScript แน่นอนช่วยลดข้อผิดพลาดในการเขียนโค้ด และการตรวจจับข้อผิดพลาดต่างๆทำได้ง่ายขึ้น

3. เหมาะสำหรับการสร้าง Web App ขนาดใหญ่

NestJS ถูกออกแบบมาเพื่อรองรับ Web App ขนาดใหญ่ที่ต้องการโครงสร้างที่แข็งแกร่งและยืดหยุ่น จึงเหมาะสำหรับการพัฒนาแอปพลิเคชันสำหรับใช้ในองค์กร การทำ Microservices และอื่นๆ

4. สามารถทำงานร่วมกับ Express หรือ Fastify ก็ได้

NestJS ใช้ Express.js เป็นเอนจินในการทำงานฝั่งเซิร์ฟเวอร์โดย default แต่ก็สามารถเปลี่ยนไปใช้ Fastify ได้ หากต้องการประสิทธิภาพที่มากขึ้น

5. สนับสนุน Dependency Injection หรือ DI

การทำ Dependency Injection ทำให้การจัดการ dependency ต่างๆ ของคลาสในโปรเจ็กต์ทำได้ง่ายและมีความเป็นระเบียบมากขึ้น NestJS นั้นมี DI เป็นค่าเริ่มต้น ซึ่งช่วยให้เราเขียน test ได้ดีขึ้น และบำรุงรักษาโค้ดได้ง่ายขึ้น

6. เครื่องมือที่มาให้ค่อนข้างครบ

NestJS มี CLI ที่ช่วยสร้างโปรเจคใหม่ รันโปรเจค สร้าง Module, Controller และ Service ต่าง ๆ อัตโนมัติ ลดขั้นตอนการเขียนโค้ดด้วยตัวเอง นอกจากนี้ยังรองรับการสร้างเอกสาร API ด้วย Swagger ซึ่งได้ง่ายมากอีกด้วย

7. รองรับ Microservices และ GraphQL

NestJS ออกแบบมาให้รองรับ Microservices ได้ง่ายและมี built-in สำหรับการสร้างระบบที่ต้องการสเกลใหญ่ ๆ นอกจากนี้ยังสนับสนุน GraphQL ซึ่งช่วยให้การสร้าง API ที่ยืดหยุ่นและรวดเร็วมากขึ้น

8. ชุมชนและการสนับสนุนที่เพิ่มขึ้น

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

สรุป คือ NestJS เป็นเฟรมเวิร์กที่น่าเรียนรู้ หากเราต้องการพัฒนา Web App ที่มีโครงสร้างขนาดใหญ่ มีความซับซ้อน ต้องการใช้ TypeScript และต้องการทำงานเป็นทีม แนะนำให้ศึกษาเลยครับ

มีอะไรใหม่ใน React 16.9.0

มาดูกันว่า React เวอร์ชันนี้ มีอะไรน่าสนใจบ้าง 🙂

.
1. กำลังจะยกเลิกคำสั่ง javascript: ที่เราใส่ใน href ของ tag <a></a> ครับ เพราะอาจเสี่ยงต่อการถูกโจมตีและความปลอดภัย (cross-site scripting) หากใครอัปเดตเวอร์ชันนี้จะมี warning ออกมาครับ อนาคตจะเอาออกแล้ว แน่นอนจะมี error แสดงเลย หากใครต้องการใช้อยู่ก็แนะนำให้ใช้ dangerouslySetInnerHTML แทนนะ

ดูเพิ่มเติมได้ที่ => http://bit.ly/2N0pJsc

.
2. ในอนาคต (เวอร์ชัน 17) จะมีการนำ lifecycle methods ออกไปทั้งหมด 3 methods ได้แก่ componentWillMount, componentWillReceiveProps, componentWillUpdate แล้วนะครับ

ถ้าในเวอร์ชันนี้ (16.9.0) ก็ยังใช้ได้แต่จะมีการแจ้งเตือนออกมา (warning) เค้าแนะนำให้เราเติมคำว่า UNSAFE_ เข้าไปด้านหน้าชื่อ methods ครับหากใครยังใช้อยู่

แต่ถ้าโปรเจคใหญ่จะมานั่งแก้เองคงไม่ไหว ก็แนะนำให้ติดตั้ง “codemod” ได้เลยครับ ด้วยคำสั่ง

npx react-codemod rename-unsafe-lifecycles

เดี๋ยวมันจัดการ rename ให้เราเอง

.
3. สามารถใช้ Profiler API สำหรับวัดประสิทธิภาพของ Web App ด้วยการเขียนโค้ดได้แล้วนะครับ (ปกติจะใช้ React DevTools) โดยต้องระบุ id และเขียน callback ที่ onRender เพื่อรับข้อมูลด้านประสิทธิภาพต่างๆ ได้

ดูเพิ่มเติมได้ที่ => http://bit.ly/2H5hzuV

.
4. ทำให้ฟังก์ชัน ReactTestUtils.act() สามารถใช้งานแบบ Asynchronous ได้ สำหรับใครที่เขียน test อยู่ก็ลองดูได้ครับ

.
อื่นๆ ลองตามไปอ่านได้ที่ blog ได้เลย => http://bit.ly/31yHnHB

.
จริงๆ แล้วใน React เวอร์ชัน 16 นี้มี features เพิ่มเข้ามาหลายอย่างครับ ไม่ว่าจะเป็น Hooks, context API, การทำ lazy loading ด้วย Suspense เป็นต้น ใครยังไม่ได้ลอง แนะนำให้ลองเอามาใช้ดูครับ

.
สุดท้ายใครอยากอัปเดตก็ง่ายๆ ครับ ลุยได้เลย

npm install –save react@^16.9.0 react-dom@^16.9.0

หรือ

yarn add react@^16.9.0 react-dom@^16.9.0

.
ลองดูนะครับ
โค้ชเอก

สรุป HTTP Status Codes สำหรับคนที่จะทำ APIs ควรรู้จัก

🎉 สรุป HTTP Status Codes สำหรับคนที่จะทำ APIs ควรรู้จัก 🎉
—————————-

 200 – ร้องขอสำเร็จ ทุกอย่างโอเค (OK)

 201- สร้างบางอย่างเรียบร้อยแล้ว (Created)

 202 – ยอมรับแล้ว แต่กำลังประมวลผลบางอย่าง เช่น video encoding หรือ ย่อขนาดรูปภาพ เป็นต้น

 400 – ไวยากรณ์ที่ร้องขอมานั้นมีความผิดพลาด หรือบางคนอาจใช้เพื่อการทำ validation

 401 – ไม่มีสิทธิ์ ไม่ได้รับอนุญาต (Unauthorized) ต้องทำการพิสูจน์ตัวตนก่อน

 403 – ผู้ใช้ปัจจุบันถูกห้ามไม่ให้เข้าถึงข้อมูลส่วนนี้ (Forbidden)

 404 – URL ที่เรียกมาไม่ใช่เส้นทางที่ถูกต้อง หรือทรัพยากรที่ร้องขอไม่พบบนเครื่องเซิร์ฟเวอร์

 405 – Method Not Allowed เซิร์ฟเวอร์ไม่รู้จัก request methods ที่ร้องขอมา (เช่น get, post) หรือถูกปิด ไม่สามารถใช้งานได้

 410 – ข้อมูลถูกลบไปเรียบร้อย อาจจะเป็นกรณีถูกระงับ หรือปิดการใช้งานแล้ว เป็นต้น

 415 – คำขอมี Content-Type ซึ่งเซิร์ฟเวอร์ไม่รู้จักวิธีที่จะจัดการ (ไม่รองรับ)

 429 – Rate Limited หยุดสักพักหนึ่ง ค่อยลองอีกครั้ง

 500 – มีบางสิ่งที่ไม่คาดคิดเกิดขึ้นและเป็นความผิดพลาดของ เซิร์ฟเวอร์ (Internal Server Error)

 503 – เซิร์ฟเวอร์ ยังไม่พร้อมบริการ โปรดลองอีกครั้ง

E-BOOK ภาษา SQL ฟรี

สำหรับมือใหม่หรือคนที่สนใจศึกษาภาษา SQL ผมได้ทำ E-BOOK ภาษา SQL ฟรี ไว้ให้อยู่นะครับ ตอนนี้ระบบเมล์ในเว็บใช้งานได้แล้ว สามารถเข้าไปโหลดได้เลย ระบบจะส่งลิงก์ E-BOOK ให้ทางอีเมลที่ได้กรอกไว้ครับ

.
เล่มที่ 1 E-Book “การจัดการฐานข้อมูลเบื้องต้นด้วย SQL”
ลิงก์ => https://goo.gl/rxbj59

.
เล่มที่ 2 E-Book “SQL: แบบฝึกหัดพัฒนาทักษะภาษา SQL สำหรับโปรแกรมเมอร์”
ลิงก์ => https://goo.gl/wbVpfd

เขียน Angular ได้แล้ว อยากทำ Desktop applications

สำหรับคนที่เขียน Angular ได้แล้ว อยากทำ Desktop applications แบบ cross platform (Electron) แบบง่ายๆ ลองใช้ตัวนี้ได้ครับ

.
ผมลองทดสอบเขียนดึง APIs (ตามภาพ) และลอง build เป็น Windows Apps ดู ก็ใช้ได้ดีเลย เพียงแค่รันคำสั่ง npm run electron:windows เท่านั้น 

ลองดูนะครับ

รายละเอียด: https://goo.gl/mp6BPa

24 ข้อคิด ที่ผมได้เรียนรู้ในปีที่ผ่านมาครับ

1. หากอยากได้อะไรแต่ยังไม่ได้ อาจเป็นไปได้ว่าเรายังพัฒนาตัวเอง “ไม่รอบด้าน” พอ

.
2. ความรู้เรื่องการเงินสำคัญ และเป็นคนละเรื่องกับความรู้ในสายอาชีพ จงศึกษาทั้งสองอย่างควบคู่กันไป

.
3. ฝึกเป็นคนที่รับผิดชอบชีวิตตัวเองอย่างเต็มกำลัง

.
4. แม้จะรับรายได้เป็นเงินเดือนอยู่ ก็ขอให้ลองรับงานที่คิดตามผลงานด้วย

.
5. พยายามทำงานให้เกินรายรับเสมอ

.
6. ในช่วงแรกจงรับโอกาสทั้งหมดที่เราสร้างมา แต่ในช่วงหลังจงเลือกรับโอกาสที่ดีสุดๆ จริงๆ

.
7. กล้าให้ผู้อื่นก่อน กล้าให้ในสิ่งที่มีคุณค่า แล้ววันหนึ่งจะได้รับกลับมา

.
8. การได้อยู่กับตัวเอง เป็นเวลาที่มีค่ามาก

.
9. Passive Income เกือบทุกอย่าง ไม่ใช่รอเก็บเงินอย่างเดียว ต้องดูแลมันด้วย

.
10. Passive Income ช่วยให้ชีวิตสบาย Active Income ช่วยให้ชีวิตมีความหมาย

.
11. จงลองทำอะไรใหม่ๆ ที่คอยช่วยเสริมความรู้เดิม

.
12 .ในช่วงเริ่มงานใหม่ จงโฟกัส core หลักของอาชีพให้เยอะๆ

.
13. การจะมีรายได้เพิ่มขึ้น ต้องพัฒนาตัวเองไปพร้อมๆกันทุกด้าน ไม่ใช่แค่ด้านใดด้านหนึ่งเท่านั้น

.
14. หากยังไม่มีทุน ก็ให้มองหาโอกาสจากสิ่งที่ถนัด และมีในตัวเองก่อน

.
15. แม้เราจะมีข้อมูลในมือมากแค่ไหน แต่ความชำนาญยังต้องใช้เวลาฝึกฝนเสมอ

.
16. ไม่มีความสำเร็จชั่วข้ามคืน ทุกคนที่สำเร็จล้วนผ่านการสะสมความสามารถมาหลายปี

.
17. เราไม่สามารถทำทุกอย่างที่อยากจะทำได้ เพราะฉะนั้นก็ให้ทำสิ่งที่ต้องทำให้เต็มที่

.
18. ทัศนคติที่มีต่อเงินมีผลมาก ว่าเราจะมีรายได้มาก หรือมีรายได้น้อย

.
19. จงเป็นคนเริ่มต้นอะไรง่ายๆ แบบเด็กๆ อย่ามองทุกอย่างยากเกินไปนัก

.
20. ทำเพื่อผู้อื่นบ้าง เพราะทุกอย่างที่ลงไป ล้วนมีอะไรดีๆ กลับมาเสมอ

.
21. จงใช้ชื่อเสียงที่ได้รับในทางดีเท่านั้น

.
22. ทำให้เยอะ โม้ให้น้อย

.
23. จงเป็นคนอ่อนน้อมถ่อมตนกับผู้อื่นเสมอ

.
24. คนรักและครอบครัวสำคัญเสมอในทุกๆโอกาสและชีวิตเรา หากมีกำลังก็ดูกันและกันให้เต็มที่

.

โค้ชเอก

แนะนำสำหรับคนที่อยากเริ่มเขียน Mobile App ด้วย React Native

26952542_632242900279259_7302068128138228052_o

สำหรับคนที่อยากเริ่มเขียน Mobile App ด้วย React Native แนะนำดังนี้ครับ

.
1. เราต้องมีความรู้พื้นฐาน HTML, CSS และ JavaScript (แนะนำให้ศึกษา JavaScript เวอร์ชั่น ES6/ES2015 ขึ้นไปนะครับ) สรุปคือต้องเคยเขียนเว็บมาก่อนนั่นเอง

.
2. มีพื้นฐานการเขียน React และเข้าใจ Concept ต่างๆ ยกตัวอย่างเช่น Component, Props, State เป็นต้น

https://reactjs.org/

.
3. ถ้ามีความรู้ หรือเคยเขียน Mobile App แบบ native มาบ้าง จะช่วยได้มากครับ แต่ก็ค่อยๆ ศึกษาเพิ่มเติมทีหลังได้

.
ส่วนคนที่อยากลองเขียนเลย (สำหรับคนที่ใช้ Windows) ให้ทำขั้นตอน ตามนี้

.
1. ติดตั้ง Node.js แนะนำเวอร์ชัน 8 และให้ใช้ npm เวอร์ชัน 4 แทนเวอร์ชัน 5 นะครับ (เวอร์ชัน 5 มีปัญหายังไม่รองรับ)
https://goo.gl/aAKGFH

.
2. ติดตั้ง Python แนะนำเป็นเวอร์ชัน 2
https://goo.gl/qQEmH3

.
3. ติดตั้ง JAVA JDK แนะนำเวอร์ชัน 8
https://goo.gl/vnkT4Y

.
4. ติดตั้ง React Native CLI เปิด Command Prompt แล้วรันคำสั่ง

npm install -g react-native-cli

.
5. สร้างโปรเจคใหม่ ด้วยคำสั่ง
create-react-native-app MyReactNativeProject

.
6. cd เข้าไปในโฟลเดอร์ MyReactNativeProject แล้วรันคำสั่ง npm start

จะมีคู่มือแนะนำต่างๆ และจะได้ QR code มาครับ

.
7. การทดสอบ App ในมือถือ ให้ติดตั้ง Expo Client ในมือถือเราก่อนครับ ตามลิงก์ https://goo.gl/7ppgPm

ส่วนการทดสอบ app นั้นก็แค่ scan QR code จากข้อ 6 จะสามารถทดสอบ app บนเครื่องจริงได้เลย (มือถือกับเครื่องคอมฯเราต้องอยู่ในวงแลนเดียวกัน)

.
8. ถ้าต้องการแก้ไขหรือเขียนโค้ด ก็สามารถใช้ Editor ที่ถนัดได้เลยนะครับ แนะนำ Visual Studio Code

.
ส่วนถ้าใครอยาก build เป็น android app หรือทดสอบผ่านสาย usb เครื่องจริง ก็ให้ติดตั้ง Android Studio ด้วย มีขั้นตอนละเอียดแล้ว ตามดูคู่มือของ React Native ได้เลยตามนี้ https://goo.gl/YK3Dkx

.
ลองดูนะครับ
โค้ชเอก

PrimeNG เป็น UI components สำหรับ Angular 2

PrimeNG เป็น UI components สำหรับ Angular 2 ครับ เผื่อใครอยากลอง สวยและน่าใช้ทีเดียว
รายละเอียด: http://goo.gl/4pChbo

อีกตัวสำหรับคนที่คุ้นเคย Bootstrap อยู่แล้ว ก็แนะนำตัวนี้เลยครับ เป็น native คือ ไม่ต้องเพิ่ม jQuery หรือ JS ของ Bootstrap เข้ามา
รายละเอียด: http://goo.gl/UwQpC2

สำหรับคนที่รอคอร์ส Angular 2 อยู่ ช่วงนี้ขอเคลียร์งานค้างก่อนนะครับ ไว้ผมจะแจ้งในเพจอีกที