You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
366 lines
22 KiB
366 lines
22 KiB
# AGENTS.md
|
|
|
|
## ภาพรวมของโครงการ
|
|
|
|
Data Science for Beginners เป็นหลักสูตรที่ครอบคลุมระยะเวลา 10 สัปดาห์ รวม 20 บทเรียน ซึ่งสร้างขึ้นโดย Microsoft Azure Cloud Advocates โดยที่เก็บนี้เป็นแหล่งเรียนรู้ที่สอนแนวคิดพื้นฐานของวิทยาศาสตร์ข้อมูลผ่านบทเรียนที่เน้นโครงการ รวมถึง Jupyter notebooks, แบบทดสอบเชิงโต้ตอบ และการมอบหมายงานที่ต้องลงมือปฏิบัติ
|
|
|
|
**เทคโนโลยีหลัก:**
|
|
- **Jupyter Notebooks**: สื่อการเรียนรู้หลักที่ใช้ Python 3
|
|
- **Python Libraries**: pandas, numpy, matplotlib สำหรับการวิเคราะห์และการแสดงผลข้อมูล
|
|
- **Vue.js 2**: แอปพลิเคชันแบบทดสอบ (โฟลเดอร์ quiz-app)
|
|
- **Docsify**: ตัวสร้างเว็บไซต์เอกสารสำหรับการเข้าถึงแบบออฟไลน์
|
|
- **Node.js/npm**: การจัดการแพ็กเกจสำหรับส่วนประกอบ JavaScript
|
|
- **Markdown**: เนื้อหาบทเรียนและเอกสารทั้งหมด
|
|
|
|
**สถาปัตยกรรม:**
|
|
- ที่เก็บการศึกษาหลายภาษา พร้อมการแปลที่ครอบคลุม
|
|
- โครงสร้างแบ่งเป็นโมดูลบทเรียน (1-Introduction ถึง 6-Data-Science-In-Wild)
|
|
- แต่ละบทเรียนประกอบด้วย README, notebooks, การมอบหมายงาน และแบบทดสอบ
|
|
- แอปพลิเคชันแบบทดสอบ Vue.js แบบสแตนด์อโลนสำหรับการประเมินก่อน/หลังบทเรียน
|
|
- รองรับ GitHub Codespaces และ VS Code dev containers
|
|
|
|
## คำสั่งการตั้งค่า
|
|
|
|
### การตั้งค่าที่เก็บ
|
|
```bash
|
|
# Clone the repository (if not already cloned)
|
|
git clone https://github.com/microsoft/Data-Science-For-Beginners.git
|
|
cd Data-Science-For-Beginners
|
|
```
|
|
|
|
### การตั้งค่าสภาพแวดล้อม Python
|
|
```bash
|
|
# Create a virtual environment (recommended)
|
|
python -m venv venv
|
|
source venv/bin/activate # On Windows: venv\Scripts\activate
|
|
|
|
# Install common data science libraries (no requirements.txt exists)
|
|
pip install jupyter pandas numpy matplotlib seaborn scikit-learn
|
|
```
|
|
|
|
### การตั้งค่าแอปพลิเคชันแบบทดสอบ
|
|
```bash
|
|
# Navigate to quiz app
|
|
cd quiz-app
|
|
|
|
# Install dependencies
|
|
npm install
|
|
|
|
# Start development server
|
|
npm run serve
|
|
|
|
# Build for production
|
|
npm run build
|
|
|
|
# Lint and fix files
|
|
npm run lint
|
|
```
|
|
|
|
### เซิร์ฟเวอร์เอกสาร Docsify
|
|
```bash
|
|
# Install Docsify globally
|
|
npm install -g docsify-cli
|
|
|
|
# Serve documentation locally
|
|
docsify serve
|
|
|
|
# Documentation will be available at localhost:3000
|
|
```
|
|
|
|
### การตั้งค่าโครงการการแสดงผล
|
|
สำหรับโครงการการแสดงผล เช่น meaningful-visualizations (บทเรียนที่ 13):
|
|
```bash
|
|
# Navigate to starter or solution folder
|
|
cd 3-Data-Visualization/13-meaningful-visualizations/starter
|
|
|
|
# Install dependencies
|
|
npm install
|
|
|
|
# Start development server
|
|
npm run serve
|
|
|
|
# Build for production
|
|
npm run build
|
|
|
|
# Lint files
|
|
npm run lint
|
|
```
|
|
|
|
|
|
## เวิร์กโฟลว์การพัฒนา
|
|
|
|
### การทำงานกับ Jupyter Notebooks
|
|
1. เริ่มต้น Jupyter ในโฟลเดอร์รากของที่เก็บ: `jupyter notebook`
|
|
2. ไปยังโฟลเดอร์บทเรียนที่ต้องการ
|
|
3. เปิดไฟล์ `.ipynb` เพื่อทำแบบฝึกหัด
|
|
4. Notebooks มีคำอธิบายและเซลล์โค้ดในตัว
|
|
5. ส่วนใหญ่ใช้ pandas, numpy และ matplotlib - ตรวจสอบให้แน่ใจว่าติดตั้งแล้ว
|
|
|
|
### โครงสร้างบทเรียน
|
|
แต่ละบทเรียนมักประกอบด้วย:
|
|
- `README.md` - เนื้อหาหลักของบทเรียนพร้อมทฤษฎีและตัวอย่าง
|
|
- `notebook.ipynb` - แบบฝึกหัด Jupyter notebook
|
|
- `assignment.ipynb` หรือ `assignment.md` - การมอบหมายงานเพื่อฝึกฝน
|
|
- โฟลเดอร์ `solution/` - โน้ตบุ๊กและโค้ดคำตอบ
|
|
- โฟลเดอร์ `images/` - วัสดุภาพประกอบ
|
|
|
|
### การพัฒนาแอปพลิเคชันแบบทดสอบ
|
|
- แอปพลิเคชัน Vue.js 2 พร้อม hot-reload ระหว่างการพัฒนา
|
|
- แบบทดสอบจัดเก็บใน `quiz-app/src/assets/translations/`
|
|
- แต่ละภาษามีโฟลเดอร์การแปลของตัวเอง (en, fr, es, ฯลฯ)
|
|
- หมายเลขแบบทดสอบเริ่มต้นที่ 0 และไปจนถึง 39 (รวม 40 แบบทดสอบ)
|
|
|
|
### การเพิ่มการแปลภาษา
|
|
- การแปลอยู่ในโฟลเดอร์ `translations/` ที่รากของที่เก็บ
|
|
- แต่ละภาษามีโครงสร้างบทเรียนที่สมบูรณ์เหมือนภาษาอังกฤษ
|
|
- การแปลอัตโนมัติผ่าน GitHub Actions (co-op-translator.yml)
|
|
|
|
## คำแนะนำการทดสอบ
|
|
|
|
### การทดสอบแอปพลิเคชันแบบทดสอบ
|
|
```bash
|
|
cd quiz-app
|
|
|
|
# Run lint checks
|
|
npm run lint
|
|
|
|
# Test build process
|
|
npm run build
|
|
|
|
# Manual testing: Start dev server and verify quiz functionality
|
|
npm run serve
|
|
```
|
|
|
|
### การทดสอบโน้ตบุ๊ก
|
|
- ไม่มีกรอบการทดสอบอัตโนมัติสำหรับโน้ตบุ๊ก
|
|
- การตรวจสอบด้วยตนเอง: รันเซลล์ทั้งหมดตามลำดับเพื่อให้แน่ใจว่าไม่มีข้อผิดพลาด
|
|
- ตรวจสอบว่าไฟล์ข้อมูลสามารถเข้าถึงได้และผลลัพธ์ถูกสร้างขึ้นอย่างถูกต้อง
|
|
- ตรวจสอบว่าการแสดงผลภาพทำงานได้อย่างเหมาะสม
|
|
|
|
### การทดสอบเอกสาร
|
|
```bash
|
|
# Verify Docsify renders correctly
|
|
docsify serve
|
|
|
|
# Check for broken links manually by navigating through content
|
|
# Verify all lesson links work in the rendered documentation
|
|
```
|
|
|
|
### การตรวจสอบคุณภาพโค้ด
|
|
```bash
|
|
# Vue.js projects (quiz-app and visualization projects)
|
|
cd quiz-app # or visualization project folder
|
|
npm run lint
|
|
|
|
# Python notebooks - manual verification recommended
|
|
# Ensure imports work and cells execute without errors
|
|
```
|
|
|
|
|
|
## แนวทางการเขียนโค้ด
|
|
|
|
### Python (Jupyter Notebooks)
|
|
- ปฏิบัติตามแนวทางสไตล์ PEP 8 สำหรับโค้ด Python
|
|
- ใช้ชื่อตัวแปรที่ชัดเจนซึ่งอธิบายข้อมูลที่กำลังวิเคราะห์
|
|
- รวมเซลล์ markdown พร้อมคำอธิบายก่อนเซลล์โค้ด
|
|
- ให้เซลล์โค้ดมุ่งเน้นไปที่แนวคิดหรือการดำเนินการเดียว
|
|
- ใช้ pandas สำหรับการจัดการข้อมูล, matplotlib สำหรับการแสดงผล
|
|
- รูปแบบการนำเข้าทั่วไป:
|
|
```python
|
|
import pandas as pd
|
|
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
```
|
|
|
|
|
|
### JavaScript/Vue.js
|
|
- ปฏิบัติตามแนวทางสไตล์ Vue.js 2 และแนวปฏิบัติที่ดีที่สุด
|
|
- การกำหนดค่า ESLint ใน `quiz-app/package.json`
|
|
- ใช้ส่วนประกอบ Vue แบบไฟล์เดียว (.vue files)
|
|
- รักษาสถาปัตยกรรมที่เน้นส่วนประกอบ
|
|
- รัน `npm run lint` ก่อนการ commit การเปลี่ยนแปลง
|
|
|
|
### เอกสาร Markdown
|
|
- ใช้ลำดับชั้นหัวข้อที่ชัดเจน (# ## ### ฯลฯ)
|
|
- รวมบล็อกโค้ดพร้อมตัวระบุภาษา
|
|
- เพิ่มข้อความ alt สำหรับภาพ
|
|
- ลิงก์ไปยังบทเรียนและแหล่งข้อมูลที่เกี่ยวข้อง
|
|
- รักษาความยาวบรรทัดให้อ่านง่าย
|
|
|
|
### การจัดระเบียบไฟล์
|
|
- เนื้อหาบทเรียนในโฟลเดอร์ที่มีหมายเลข (01-defining-data-science ฯลฯ)
|
|
- คำตอบในโฟลเดอร์ย่อย `solution/` โดยเฉพาะ
|
|
- การแปลโครงสร้างเหมือนภาษาอังกฤษในโฟลเดอร์ `translations/`
|
|
- เก็บไฟล์ข้อมูลใน `data/` หรือโฟลเดอร์เฉพาะบทเรียน
|
|
|
|
## การสร้างและการปรับใช้
|
|
|
|
### การปรับใช้แอปพลิเคชันแบบทดสอบ
|
|
```bash
|
|
cd quiz-app
|
|
|
|
# Build production version
|
|
npm run build
|
|
|
|
# Output is in dist/ folder
|
|
# Deploy dist/ folder to static hosting (Azure Static Web Apps, Netlify, etc.)
|
|
```
|
|
|
|
### การปรับใช้ Azure Static Web Apps
|
|
แอป quiz-app สามารถปรับใช้กับ Azure Static Web Apps:
|
|
1. สร้างทรัพยากร Azure Static Web App
|
|
2. เชื่อมต่อกับที่เก็บ GitHub
|
|
3. กำหนดค่าการตั้งค่าการสร้าง:
|
|
- ตำแหน่งแอป: `quiz-app`
|
|
- ตำแหน่งผลลัพธ์: `dist`
|
|
4. GitHub Actions workflow จะปรับใช้อัตโนมัติเมื่อมีการ push
|
|
|
|
### เว็บไซต์เอกสาร
|
|
```bash
|
|
# Build PDF from Docsify (optional)
|
|
npm run convert
|
|
|
|
# Docsify documentation is served directly from markdown files
|
|
# No build step required for deployment
|
|
# Deploy repository to static hosting with Docsify
|
|
```
|
|
|
|
### GitHub Codespaces
|
|
- ที่เก็บรวมการกำหนดค่า dev container
|
|
- Codespaces ตั้งค่าสภาพแวดล้อม Python และ Node.js โดยอัตโนมัติ
|
|
- เปิดที่เก็บใน Codespace ผ่าน UI ของ GitHub
|
|
- การติดตั้งการพึ่งพาทั้งหมดจะดำเนินการโดยอัตโนมัติ
|
|
|
|
## แนวทางการส่ง Pull Request
|
|
|
|
### ก่อนการส่ง
|
|
```bash
|
|
# For Vue.js changes in quiz-app
|
|
cd quiz-app
|
|
npm run lint
|
|
npm run build
|
|
|
|
# Test changes locally
|
|
npm run serve
|
|
```
|
|
|
|
### รูปแบบชื่อ PR
|
|
- ใช้ชื่อที่ชัดเจนและอธิบายได้
|
|
- รูปแบบ: `[Component] คำอธิบายสั้นๆ`
|
|
- ตัวอย่าง:
|
|
- `[Lesson 7] แก้ไขข้อผิดพลาดการนำเข้า Python notebook`
|
|
- `[Quiz App] เพิ่มการแปลภาษาเยอรมัน`
|
|
- `[Docs] อัปเดต README พร้อมข้อกำหนดเบื้องต้นใหม่`
|
|
|
|
### การตรวจสอบที่จำเป็น
|
|
- ตรวจสอบให้แน่ใจว่าโค้ดทั้งหมดทำงานได้โดยไม่มีข้อผิดพลาด
|
|
- ยืนยันว่าโน้ตบุ๊กทำงานได้สมบูรณ์
|
|
- ยืนยันว่าแอป Vue.js สร้างสำเร็จ
|
|
- ตรวจสอบว่าเอกสารลิงก์ทำงานได้
|
|
- ทดสอบแอปพลิเคชันแบบทดสอบหากมีการแก้ไข
|
|
- ยืนยันว่าโครงสร้างการแปลยังคงสอดคล้องกัน
|
|
|
|
### แนวทางการมีส่วนร่วม
|
|
- ปฏิบัติตามสไตล์และรูปแบบโค้ดที่มีอยู่
|
|
- เพิ่มความคิดเห็นอธิบายสำหรับตรรกะที่ซับซ้อน
|
|
- อัปเดตเอกสารที่เกี่ยวข้อง
|
|
- ทดสอบการเปลี่ยนแปลงในโมดูลบทเรียนต่างๆ หากเกี่ยวข้อง
|
|
- อ่านไฟล์ CONTRIBUTING.md
|
|
|
|
## หมายเหตุเพิ่มเติม
|
|
|
|
### ไลบรารีที่ใช้บ่อย
|
|
- **pandas**: การจัดการและวิเคราะห์ข้อมูล
|
|
- **numpy**: การคำนวณเชิงตัวเลข
|
|
- **matplotlib**: การแสดงผลและการพล็อตข้อมูล
|
|
- **seaborn**: การแสดงผลข้อมูลเชิงสถิติ (บางบทเรียน)
|
|
- **scikit-learn**: การเรียนรู้ของเครื่อง (บทเรียนขั้นสูง)
|
|
|
|
### การทำงานกับไฟล์ข้อมูล
|
|
- ไฟล์ข้อมูลอยู่ในโฟลเดอร์ `data/` หรือไดเรกทอรีเฉพาะบทเรียน
|
|
- โน้ตบุ๊กส่วนใหญ่คาดหวังไฟล์ข้อมูลในเส้นทางสัมพัทธ์
|
|
- ไฟล์ CSV เป็นรูปแบบข้อมูลหลัก
|
|
- บางบทเรียนใช้ JSON สำหรับตัวอย่างข้อมูลที่ไม่ใช่เชิงสัมพันธ์
|
|
|
|
### การสนับสนุนหลายภาษา
|
|
- การแปลมากกว่า 40 ภาษา ผ่าน GitHub Actions อัตโนมัติ
|
|
- เวิร์กโฟลว์การแปลใน `.github/workflows/co-op-translator.yml`
|
|
- การแปลในโฟลเดอร์ `translations/` พร้อมรหัสภาษา
|
|
- การแปลแบบทดสอบใน `quiz-app/src/assets/translations/`
|
|
|
|
### ตัวเลือกสภาพแวดล้อมการพัฒนา
|
|
1. **การพัฒนาในเครื่อง**: ติดตั้ง Python, Jupyter, Node.js ในเครื่อง
|
|
2. **GitHub Codespaces**: สภาพแวดล้อมการพัฒนาแบบคลาวด์ทันที
|
|
3. **VS Code Dev Containers**: การพัฒนาบนคอนเทนเนอร์ในเครื่อง
|
|
4. **Binder**: เปิดโน้ตบุ๊กในคลาวด์ (หากกำหนดค่าไว้)
|
|
|
|
### แนวทางเนื้อหาบทเรียน
|
|
- แต่ละบทเรียนเป็นแบบสแตนด์อโลนแต่สร้างขึ้นจากแนวคิดก่อนหน้า
|
|
- แบบทดสอบก่อนบทเรียนทดสอบความรู้ก่อนหน้า
|
|
- แบบทดสอบหลังบทเรียนเสริมสร้างการเรียนรู้
|
|
- การมอบหมายงานให้โอกาสฝึกฝน
|
|
- Sketchnotes ให้สรุปภาพรวม
|
|
|
|
### การแก้ไขปัญหาทั่วไป
|
|
|
|
**ปัญหา Jupyter Kernel:**
|
|
```bash
|
|
# Ensure correct kernel is installed
|
|
python -m ipykernel install --user --name=datascience
|
|
```
|
|
|
|
**ข้อผิดพลาด npm Install:**
|
|
```bash
|
|
# Clear npm cache and retry
|
|
npm cache clean --force
|
|
rm -rf node_modules package-lock.json
|
|
npm install
|
|
```
|
|
|
|
**ข้อผิดพลาดการนำเข้าในโน้ตบุ๊ก:**
|
|
- ตรวจสอบให้แน่ใจว่าติดตั้งไลบรารีที่จำเป็นทั้งหมด
|
|
- ตรวจสอบความเข้ากันได้ของเวอร์ชัน Python (แนะนำ Python 3.7+)
|
|
- ตรวจสอบให้แน่ใจว่าสภาพแวดล้อมเสมือนถูกเปิดใช้งาน
|
|
|
|
**Docsify ไม่โหลด:**
|
|
- ตรวจสอบว่าคุณกำลังให้บริการจากโฟลเดอร์รากของที่เก็บ
|
|
- ตรวจสอบว่า `index.html` มีอยู่
|
|
- ตรวจสอบการเข้าถึงเครือข่ายที่เหมาะสม (พอร์ต 3000)
|
|
|
|
### ข้อควรพิจารณาด้านประสิทธิภาพ
|
|
- ชุดข้อมูลขนาดใหญ่อาจใช้เวลาโหลดในโน้ตบุ๊ก
|
|
- การแสดงผลภาพอาจช้าสำหรับพล็อตที่ซับซ้อน
|
|
- เซิร์ฟเวอร์ dev ของ Vue.js เปิดใช้งาน hot-reload สำหรับการทำซ้ำอย่างรวดเร็ว
|
|
- การสร้างสำหรับการใช้งานจริงได้รับการปรับให้เหมาะสมและย่อขนาด
|
|
|
|
### หมายเหตุด้านความปลอดภัย
|
|
- ห้าม commit ข้อมูลหรือข้อมูลประจำตัวที่ละเอียดอ่อน
|
|
- ใช้ตัวแปรสภาพแวดล้อมสำหรับคีย์ API ในบทเรียนคลาวด์
|
|
- บทเรียนที่เกี่ยวข้องกับ Azure อาจต้องใช้ข้อมูลประจำตัวบัญชี Azure
|
|
- อัปเดตการพึ่งพาเพื่อรับแพตช์ความปลอดภัย
|
|
|
|
## การมีส่วนร่วมในการแปล
|
|
- การแปลอัตโนมัติจัดการผ่าน GitHub Actions
|
|
- ยินดีต้อนรับการแก้ไขด้วยตนเองเพื่อความถูกต้องของการแปล
|
|
- ปฏิบัติตามโครงสร้างโฟลเดอร์การแปลที่มีอยู่
|
|
- อัปเดตลิงก์แบบทดสอบให้รวมพารามิเตอร์ภาษา: `?loc=fr`
|
|
- ทดสอบบทเรียนที่แปลเพื่อให้แน่ใจว่าการแสดงผลถูกต้อง
|
|
|
|
## แหล่งข้อมูลที่เกี่ยวข้อง
|
|
- หลักสูตรหลัก: https://aka.ms/datascience-beginners
|
|
- Microsoft Learn: https://docs.microsoft.com/learn/
|
|
- Student Hub: https://docs.microsoft.com/learn/student-hub
|
|
- ฟอรัมสนทนา: https://github.com/microsoft/Data-Science-For-Beginners/discussions
|
|
- หลักสูตรอื่นๆ ของ Microsoft: ML for Beginners, AI for Beginners, Web Dev for Beginners
|
|
|
|
## การดูแลรักษาโครงการ
|
|
- อัปเดตเป็นประจำเพื่อให้เนื้อหาทันสมัย
|
|
- ยินดีต้อนรับการมีส่วนร่วมจากชุมชน
|
|
- ติดตามปัญหาบน GitHub
|
|
- PRs ตรวจสอบโดยผู้ดูแลหลักสูตร
|
|
- การตรวจสอบและอัปเดตเนื้อหารายเดือน
|
|
|
|
---
|
|
|
|
**ข้อจำกัดความรับผิดชอบ**:
|
|
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามนุษย์ที่มีความเชี่ยวชาญ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ |