5 ฟีเจอร์ใหม่ใน Tailwind CSS v4 ที่ชอบ

1. ปรับปรุง engine ใหม่ เร็วกว่า v3 ราว 3.5 เท่า (full build) และเร็วกว่า v3 ราว 100 เท่า (incremental build)

2. ตั้งค่า theme ใน CSS ตรงๆ ได้เลย ไม่ต้องใช้ไฟล์ tailwind.config.js เหมือนใน v3 แล้ว

3. ลาก่อน postcss-import / autoprefixer ใน v4 สามารถใช้ @import ได้เลย ไม่ต้องพึ่ง plugin นี้แล้ว เพราะ build-in มาในตัว

4. ระบบสีแบบใหม่ (P3) รองรับสีที่กว้าง และสดใสขึ้น

5. ตรวจจับ content อัตโนมัติ จาก .gitignore ได้เลย ไม่ต้องกำหนดในไฟล์ tailwind.config.js ก็ได้

ฟรี! คอร์ส “Tailwind CSS v4 Fundamentals”

คอร์ส “Tailwind CSS v4 Fundamentals” (4 ชั่วโมง) ดูได้แล้วนะครับ!

เหมาะสำหรับคนที่ยังไม่เคยใช้ หรือคนที่เคยใช้ v3 มาบ้างแล้วอยากอัปเดตว่ามีอะไรใหม่บ้าง และแน่นอนก่อนใช้ Tailwind ควรมีพื้นฐานการเขียน CSS แบบปกติมาก่อน นะครับ

ดูได้ที่นี่ https://bit.ly/4lg0z6T

โค้ชเอก

8 ความผิดพลาดที่พบบ่อยในการออกแบบ RESTful API

1. ออกแบบจากภายใน (Inside-Out)

ใช้โครงสร้างภายในมาเปิดเผยผ่าน API เช่น

ตัวอย่าง:

❌ GET /api/database/tables/book_inventory/records?status=1

✅ GET /api/books?available=true

แนวคิดที่ถูกต้องคือ “นักพัฒนาจะเข้าใจสิ่งนี้ไหม ถ้าไม่รู้โครงสร้างระบบเราเลย?”

.

2. นิยาม URI ไม่ดี

หลีกเลี่ยงการใส่ verb ใน URL:

ตัวอย่าง:

GET /api/getUsers ❌ → GET /api/users ✅

POST /api/createOrder ❌ → POST /api/orders ✅

หลีกเลี่ยงการซ้อนโครงสร้างซับซ้อนเกินไป:

❌ GET /api/companies/456/departments/2/employees/123/projects

✅ GET /api/projects?employeeId=123

.

3. ใช้ HTTP Methods ผิด

ออกแบบ POST ทุกอย่าง = ไม่ดี

ตัวอย่าง:

POST /api/users/search ❌ → GET /api/users?name=Smith ✅

DELETE /api/products/123 ✅

.

4. จัดการ Error ไม่ดี

ข้อความ error คลุมเครือ:

ตัวอย่างที่ไม่ดี:

{ “error”: “An error occurred” } ❌

ตัวอย่างที่ดี:

{

“status”: 400,

“code”: “INVALID_PARAMETER”,

“message”: “The email address is improperly formatted”,

“details”: [{ “field”: “email”, “message”: “Must be a valid email address” }]

}

อย่าลืมใช้ HTTP Status Codes ให้เหมาะสม:

400: Bad Request

401: Unauthorized

403: Forbidden

404: Not Found

500: Server Error

.

5. ไม่จัดการเรื่อง Versioning

รูปแบบการจัด version ที่ดี:

แบบ URL: /api/v1/users

แบบ Header: Accept: application/vnd.company.api+json;version=1

แบบ Query: /api/users?version=1

อย่าลืมทำ document ความเปลี่ยนแปลง และแนวทางการอัปเกรดที่ชัดเจน

.

6. Response ซับซ้อนเกินไป

อย่าส่งทุกอย่างใน response เดียว ควรส่งเฉพาะข้อมูลที่จำเป็น:

ตัวอย่างที่ไม่ดี:

{

“id”: 123, “username”: “jsmith”, “email”: “jsmith@example.com”

}

ให้ใช้ query param เพื่อเลือก fields ที่ต้องการ:

ตัวอย่างที่ดี:

GET /api/users/123?fields=id,name,email

.

7. ละเลย Security

– ไม่ใช้ HTTPS หรือไม่มี token expiration

– ตรวจแค่การ authentication แต่ไม่ตรวจ authorization

– เผยข้อมูลสำคัญ หรือ sensitive data ผ่าน error หรือ response

– ไม่จำกัดอัตราการเรียก (Rate Limiting)

แนวทางที่ดี:

– ใช้ OAuth 2.0

– บังคับ HTTPS

– ตรวจสิทธิ์ทั้ง endpoint และระดับ object

– ใช้ HTTP 429 เมื่อถูกเรียกเกิน quota

.

8. ไม่มีหรือมีเอกสารที่แย่

– นักพัฒนาใช้ไม่ได้ = API ล้มเหลว

เอกสารที่ดีต้องมี:

– วิธีเริ่มต้น

– ตัวอย่าง request/response

– คำอธิบาย error

– SDK/Client library

– เปลี่ยนอะไรในแต่ละเวอร์ชัน

.

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

โค้ชเอก

สรุป คำสั่ง อัปเกรด “Express.js” จาก v4 เป็น v5.x (LTS)

คำสั่ง อัปเกรด “Express.js” จาก v4 เป็น v5.x (LTS) แบบอัตโนมัติไม่ต้อง manual เอง

ถ้าอยากอัปเกรดเป็น Express.js v5.x แบบทั้งหมด ใช้คำสั่ง

npx @expressjs/codemod upgrade

(อย่าลืม backup โค้ดก่อน​)

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

1. แปลงสตริง “back” ที่ถูกเลิกใช้

npx @expressjs/codemod magic-redirect

2. แปลงเมธอดให้เป็นพหูพจน์

npx @expressjs/codemod pluralized-methods

3. แปลงรูปแบบเมธอดที่ถูกเลิกใช้ใน Express v4

npx @expressjs/codemod v4-deprecated-signatures

4. เปลี่ยน req.param เป็นแบบใหม่

npx @expressjs/codemod req-param

สรุป 5 Utility Types ที่ใช้บ่อยใน TypeScript

สำหรับมือใหม่ที่เริ่มเขียน TypeScript มาสักพักนึงอยากให้ลองศึกษา Utility Types ของ TypeScript เพิ่มเติมกันด้วยนะครับ ​:)

.

1. Partial<Type>

ทำให้ทุก property ทั้งหมดใน type เป็น optional

ตัวอย่าง:

interface Customer {

id: string

name: string

}

type PartialCustomer = Partial<Customer>

// ผลลัพธ์: { id?: string; name?: string }

อาจใช้ในกรณี request ตอนอัปเดตข้อมูลก็ได้ เช่น UpdateCustomerRequest เป็นต้น

.

2. Record<Keys, Type>

ช่วยสร้างชนิดข้อมูล object ที่ key ของ property เป็น Keys และ value ของ property เป็น Type ได้

ตัวอย่าง:

type Staff = “John” | “Bob”

const canPlayFootball: Record<Staff, boolean> = {

John: true,

Bob: false,

}

และยังใช้ร่วมกับ Partial<Record<…>> เมื่อไม่ต้องการ map ทุก key แต่ยังอยากได้ type safety

.

3. Omit<Type, Keys>

ลบ property บางตัว ออกจาก type ที่ต้องการ

ตัวอย่าง:

interface Product {

name: string

price: number

}

type ProductWithName = Omit<Product, “price”>

// ผลลัพธ์: { name: string }

.

4. ReturnType<Type>

ดึงชนิดข้อมูล (type) ของฟังก์ชันแบบ return ค่า

ตัวอย่าง:

function multiply(a: number, b: number): number {

return a * b

}

type Multiply(Return = ReturnType<typeof multiply>

// ผลลัพธ์: number

.

5. Readonly<Type>

ทำให้ property ทั้งหมดไม่สามารถถูกแก้ไขได้ (readonly)

ตัวอย่าง:

function resetScore(score: Readonly<Score>) {

score.count = 0 // จะ Error ตรงนี้

}

ใช้สำหรับให้รู้ว่าค่าจะต้องไม่ถูกเปลี่ยน ช่วยให้อ่านง่าย และป้องกันการแก้ไขโดยไม่ได้ตั้งใจ

.

สรุป การใช้ utility types จะช่วยให้โค้ดมีความยืดหยุ่น ปลอดภัย และลดความซับซ้อนได้ดีมาก

และโดยปกติ utility types จะทำงานแค่ระดับเดียว หากทุกคนต้องการรองรับแบบหลายระดับ (deep support) แนะนำ library ชื่อว่า ts-toolbelt https://github.com/millsp/ts-toolbelt นะครับ

KendoReact (จากทีม Telerik) ปล่อยฟรี 50+ components

KendoReact (จากทีม Telerik) ปล่อย 50+ components ระดับ Enterprise-Grade ฟรี ไม่มีเงื่อนไขรวมถึง Data Grid! ใครสนใจลองดูนะครับ

ดูรายละเอียด และการติดตั้งที่นี่ครับ

https://www.telerik.com/kendo-react-ui/components/free

แนะนำหนังสือ “Exploring JavaScript (ES2024 Edition)”

อยากศึกษา/ทบทวน JS ล่าสุด แนะนำเล่มนี้ “Exploring JavaScript (ES2024 Edition)” ของ Dr. Axel อ่านแบบออนไลน์ได้ฟรีครับ

อ่าน ebook เล่มนี้ได้ที่นี่ครับ

https://exploringjs.com/js/book/index.html

มีอะไรใหม่ใน React Native 0.76

  1. React Native 0.76 มาพร้อมกับ New Architecture ที่เขียนใหม่ทั้งหมด โดย default
    ซึ่งมาพร้อมกับฟีเจอร์ของ React แบบ full support (เมื่อก่อนไม่ครบ) ไม่ว่าจะเป็น Suspense, useLayoutEffect, Transitions เป็นต้น
  2. มาพร้อมกับ React Native DevTools ใหม่ ช่วยให้การ Debug App ของเราดีขึ้นมากๆ
  3. ปรับปรุง Metro (JavaScript bundler) ใหม่ช่วยให้ทำงานเร็วขึ้น 15 เท่า
  4. เพิ่ม style props ให้กับ boxShadow และ filter ที่ดีขึ้น ให้ทำงานเหมือนกับเขียน web แม้มีข้อจำกัดบ้าง แต่ถ้าใครเขียนเว็บอยู่แล้วใช้ได้อย่างสบาย
  5. ขนาดของ App ที่ build android ลดลงถึง 20% และเวลาเริ่มต้น App เฉลี่ยลดลงประมาณ 8% อีกด้วย
  6. ปรับขั้นต่ำ iOS เป็น 15.1 และ Android SDK เป็นเวอร์ชัน 24 (Android 7)
  7. มี Native Module และ Native Component แบบใหม่ ทุกคนสามารถเขียน Module หรือ Component ใช้เอง หรือใช้ไลบรารีภายนอกที่มีประสิทธิภาพมากขึ้น เราสามารถเขียนเรียก native interface (Synchronous access) โดยไม่ต้องมี bridge อีกต่อไป ตัวอย่างโค้ด

// Sync response from Native Module
const value = nativeModule.getValue();

// value can be a reference to a native object
nativeModule.doSomething(value);

  1. New Architecture ที่ถูกเขียนใหม่หมด แน่นอนการเอา bridge ออกไปจะทำให้แอปที่เขียนมี startup ที่เร็วขึ้น การสื่อสารระหว่าง JavaScript กับ native runtime ที่ดีขึ้น ส่งผลให้การรายงาน error ที่ชัดเจนขึ้น การ debug ก็ดีขึ้นด้วยครับ
  2. แน่นอน Meta ได้นำ New Architecture นี้ไปใช้งานจริงบน production ไม่ว่าจะเป็นแอป Facebook , Instagram และผลิตภัณฑ์อื่นๆ อีกด้วย
  3. ณ ตอนที่เขียนนี้มีไลบรารีเจ้าดังๆ รองรับ New Architecture แล้วกว่า 950 ไลบรารี ดูได้จากเว็บแหล่งรวมไลบรารีของ React Native ที่นี่ https://reactnative.directory/
  4. Expo SDK (framework) เวอร์ชัน 52 ล่าสุด รองรับ React Native เวอร์ชัน 0.76 และ New Architecture นี้เรียบร้อยแล้ว!

สุดท้าย ไม่เกี่ยวสักเท่าไหร่แต่มีข่าวว่าพนักงาน full-time ของ Flutter ถูกเลิกจ้าง แม้ Google จะยืนยันว่าไม่ทิ้ง Flutter แต่ก็มีนักพัฒนาแยกออกมาทำโครงการ Flock (fork of Flutter) มารวมตัวกันสร้างเป็น Flutter+ อนาคตของ Flutter จะเป็นอย่างไรก็ต้องรอดูกันต่อไปนะครับ

เรียน React Native กับโค้ชเอก ดูที่นี่ครับ https://codingthailand.com/react_native_2024_live/

โค้ชเอก