Skip to content

Latest commit

 

History

History
107 lines (74 loc) · 3.41 KB

File metadata and controls

107 lines (74 loc) · 3.41 KB

Contributing to เรียน Axum ฉบับสมบูรณ์

ขอบคุณที่สนใจมีส่วนร่วมกับ Axum Tutorial! 🎉

วิธีการมีส่วนร่วม

🐛 รายงานข้อผิดพลาด (Bug Reports)

หากพบข้อผิดพลาดในเนื้อหาหรือโค้ด:

  1. ตรวจสอบ Issues ว่ามีคนรายงานแล้วหรือไม่
  2. สร้าง Issue ใหม่พร้อมรายละเอียด:
    • บทที่พบปัญหา
    • คำอธิบายปัญหา
    • แนวทางแก้ไข (ถ้ามี)

📝 แก้ไขเนื้อหา (Content Fixes)

สำหรับการแก้ไขเล็กน้อย (typos, คำผิด):

  1. Fork repository
  2. แก้ไขไฟล์ .md ที่ต้องการ
  3. สร้าง Pull Request

🆕 เพิ่มเนื้อหาใหม่

หากต้องการเพิ่มบทหรือหัวข้อใหม่:

  1. เปิด Issue เพื่อหารือก่อน
  2. รอการอนุมัติ
  3. Fork และสร้างเนื้อหา
  4. สร้าง Pull Request

📋 Guidelines

รูปแบบเนื้อหา

  • ภาษา: คำอธิบายเป็นภาษาไทย, โค้ดเป็นภาษาอังกฤษ
  • กลุ่มเป้าหมาย: ผู้ที่มีพื้นฐาน Rust แล้วต้องการเรียนรู้ Axum
  • โครงสร้าง: แต่ละบทควรมีเนื้อหา, ตัวอย่างโค้ด, และสรุป

รูปแบบโค้ด

// ✅ ดี - มี comments อธิบายจุดสำคัญ
async fn handler(State(state): State<AppState>) -> impl IntoResponse {
    // ดึงข้อมูลจาก Database
    let users = sqlx::query("SELECT * FROM users")
        .fetch_all(&state.db)
        .await
        .unwrap();
        
    Json(users)
}

// ❌ ไม่ดี - ไม่มีคำอธิบาย
async fn handler(State(s): State<S>) -> Json<Vec<U>> {
    Json(s.db.q("...").await.unwrap())
}

Commit Messages

docs: แก้ไข typo ในบทที่ 5
feat: เพิ่มตัวอย่าง WebSocket ใน ch12
fix: แก้ไข link ผิดใน README

🛠️ การพัฒนา

Prerequisites

# ติดตั้ง Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# ติดตั้ง mdBook
cargo install mdbook

Build และ Preview

cd docs
mdbook serve
# เปิด http://localhost:3000

ทดสอบโค้ด

# ทดสอบ code blocks ในหนังสือ
cd docs
mdbook test

# ทดสอบ examples
cargo run --example hello_world

📜 License

โดยการมีส่วนร่วม คุณยอมรับว่าเนื้อหาจะอยู่ภายใต้ MIT License

🙏 ขอบคุณ

ขอบคุณทุกคนที่ช่วยทำให้ Axum Tutorial ดีขึ้น!