# ការរួមចំណែកក្នុង Data Science សម្រាប់អ្នកចាប់ផ្ដើម សូមអរគុណសម្រាប់ការចាប់អារម្មណ៍របស់អ្នកក្នុងការរួមចំណែកទៅកាន់វគ្គសិក្សា Data Science សម្រាប់អ្នកចាប់ផ្ដើម! យើងសូមស្វាគមន៍ការរួមចំណែកពីសហគមន៍។ ## តារាងមាតិកា - [វិន័យអំពើ](#វិន័យអំពើ) - [តើខ្ញុំអាចរួមចំណែកបានយ៉ាងដូចម្តេច?](#តើខ្ញុំអាចរួមចំណែកបានយ៉ាងដូចម្តេច) - [ការចាប់ផ្ដើម](#ការចាប់ផ្ដើម) - [មគ្គុទេសក៍ការរួមចំណែក](#មគ្គុទេសក៍ការរួមចំណែក) - [ដំណើរការការស្នើសុំ Pull Request](#ដំណើរការជូនពរ-pull-request) - [មគ្គុទេសក៍រចនាបថ](#មគ្គុទេសក៍រចនាបថ) - [សន្ធិសញ្ញាប័ណ្ណអ្នករួមចំណែក](#សន្ធិសញ្ញាប័ណ្ណអ្នករួមចំណែក) ## វិន័យអំពើ គម្រោងនេះបានអនុម័ត [កូដវិន័យប្រើប្រាស់មូលដ្ឋានមើលដោយ Microsoft](https://opensource.microsoft.com/codeofconduct/)។ សម្រាប់ព័ត៌មានបន្ថែម សូមមើល [សំណួរដែលសួរញឹកញាប់អំពីកូដវិន័យ](https://opensource.microsoft.com/codeofconduct/faq/) ឬទាក់ទង [opencode@microsoft.com](mailto:opencode@microsoft.com) សម្រាប់សំណួរឬមតិយោបល់បន្ថែម។ ## តើខ្ញុំអាចរួមចំណែកបានយ៉ាងដូចម្តេច? ### ការរាយការណ៍បញ្ហា មុនបង្កើតរបាយការណ៍កំហុស សូមពិនិត្យមើលបញ្ហាជាប់ទាក់ទងដែលមានស្រាប់ដើម្បីជៀសវាងការបំលែងដង។ ពេលអ្នកបង្កើតរបាយការណ៍កំហុស សូមបញ្ចូលព័ត៌មានលម្អិតច្រើនបំផុតដែលអាចធ្វើទៅបាន៖ - **ប្រើចំណងជើងច្បាស់លាស់ និងពិពណ៌នាបញ្ជាក់** - **ពិពណ៌នាជំហានច្បាស់លាស់ដើម្បីធ្វើឲ្យបញ្ហាឡើងវិញ** - **ផ្តល់ឧទាហរណ៍ច្បាស់លាស់** (កូដនិងរូបភាពបង្ហាញ) - **ពិពណ៌នាពីអាកប្បកិរិយាដែលអ្នកបានសង្កេត និងអ្វីដែលអ្នករំពឹងទុក** - **បញ្ចូលព័ត៌មានបរិបទរបស់អ្នក** (ប្រព័ន្ធប្រតិបត្តិការ, កំណែ Python, កម្មវិធីរុករក) ### ផ្តល់យោបល់បន្ថែម យោបល់បន្ថែមសូមស្វាគមន៍! ពេលផ្តល់យោបល់: - **ប្រើចំណងជើងច្បាស់លាស់ និងពិពណ៌នាបញ្ជាក់** - **ផ្តល់ពិពណ៌នាពីការកែលម្អដែលអ្នកស្នើសុំ** - **ពន្យល់មូលហេតុដែលការកែប្រែនេះមានប្រយោជន៍** - **រាយបញ្ជីលក្ខណៈសម្បត្តិដូចគ្នានៅក្នុងគម្រោងផ្សេងទៀត ប្រសិនបើមាន** ### រួមចំណែកក្នុងឯកសារយោង ការកែលម្អឯកសារយោងគឺតែងតែទទួលស្គាល់: - **ជួសជុលកំហុសអក្ខរកម្ម និងវេយ្យាករណ៍** - **ធ្វើឲ្យការពន្យល់មានភាពច្បាស់ផងដែរ** - **បន្ថែមឯកសារយោងដែលខ្វះ** - **ធ្វើឲ្យព័ត៌មានអាប់ដេតឲ្យទាន់សម័យ** - **បន្ថែមឧទាហរណ៍ ឬករណីប្រើប្រាស់** ### រួមចំណែកក្នុងកូដ យើងសូមស្វាគមន៍ការរួមចំណែកកូដរួមមាន៖ - **មេរៀន ឬលំហាត់ថ្មីៗ** - **ជួសជុលកំហុស** - **កែលម្អសៀវភៅតំណភ្ជាប់ដែលមានស្រាប់** - **ដាតាដុំ ឬឧទាហរណ៍ថ្មីៗ** - **កែលម្អកម្មវិធីសំណួរ** ## ការចាប់ផ្ដើម ### ការត្រូវមានមុន មុនរួមចំណែក សូមធ្វើការ: 1. មានគណនី GitHub 2. តំឡើង Git នៅលើប្រព័ន្ធរបស់អ្នក 3. តំឡើង Python 3.7+ និង Jupyter 4. តំឡើង Node.js និង npm (សម្រាប់ការរួមចំណែកកម្មវិធីសំណួរ) 5. របស់ភ្ជាប់ជាមួយរចនាសម្ព័ន្ធវគ្គសិក្សា មើល [INSTALLATION.md](INSTALLATION.md) សម្រាប់ការណែនាំបំផុត។ ### Fork និង Clone 1. **Fork ឃ្លាំងទិន្នន័យ** នៅលើ GitHub 2. **Clone Fork របស់អ្នក មកលើកុំព្យូទ័រ**៖ ```bash git clone https://github.com/YOUR-USERNAME/Data-Science-For-Beginners.git cd Data-Science-For-Beginners ``` 3. **បន្ថែម upstream remote**៖ ```bash git remote add upstream https://github.com/microsoft/Data-Science-For-Beginners.git ``` ### បង្កើតសាខាថ្មី បង្កើតសាខាថ្មីសម្រាប់ការងាររបស់អ្នក៖ ```bash git checkout -b feature/your-feature-name # ឬ git checkout -b fix/your-bug-fix ``` បទបញ្ជាសម្រាប់ឈ្មោះសាខា៖ - `feature/` - លក្ខណៈសម្បត្តិ ឬមេរៀនថ្មី - `fix/` - ជួសជុលកំហុស - `docs/` - ការផ្លាស់ប្តូរឯកសារ - `refactor/` - ការផ្លាស់ប្តូរកូដ ## មគ្គុទេសក៍ការរួមចំណែក ### សម្រាប់មាតិកាមេរៀន ពេលរួមចំណែកឬកែលម្អមេរៀនដែលមានស្រាប់៖ 1. **អនុវត្តរចនាសម្ព័ន្ធដែលមានស្រាប់**៖ - README.md ជាមួយមាតិកាមេរៀន - សៀវភៅ Jupyter ជាមួយលំហាត់ - ការបែងចែក (បើមាន) - តំណភ្ជាប់ទៅការសាកល្បងមុន និងក្រោយ 2. **រួមបញ្ចូលធាតុទាំងនេះ**៖ - គោលបំណងរៀនដែលច្បាស់ - ពិពណ៌នាដំណាក់កាលជាដំណាក់កាល - ឧទាហរណ៍កូដជាសេចក្ដីយល់ឃើញ - លំហាត់សម្រាប់អនុវត្ត - តំណភ្ជាប់ទៅធនធានបន្ថែម 3. **ធានាការចូលដំណើរការ**៖ - ប្រើភាសាដែលធម្មតា និងច្បាស់ - បញ្ចូលអត្ថបទ alt សម្រាប់រូបភាព - រួមបញ្ចូលចំណាំកូដ - អនុវត្តចំពោះលក្ខណៈរៀនដ៏ខុសគ្នា ### សម្រាប់សៀវភៅ Jupyter 1. **សម្អាតចេញពីលទ្ធផលទាំងអស់ មុនពេលប្តូរ**៖ ```bash jupyter nbconvert --clear-output --inplace notebook.ipynb ``` 2. **រួមបញ្ចូលផ្នែក markdown ជាមួយពិពណ៌នា** 3. **ប្រើរចនាបថស៊ីជម្រៅកំណត់**៖ ```python # នាំចូលបណ្ណាល័យនៅខាងលើ import pandas as pd import numpy as np import matplotlib.pyplot as plt # ប្រើឈ្មោះអថេរដែលមានន័យ # បន្ថែមកំណត់ចំណាំសម្រាប់ប្រតិបត្តិការដ៏ពិបាក # តាមដានមីស្តង់រចនាបថ PEP 8 ``` 4. **សាកល្បងសៀវភៅរបស់អ្នកយ៉ាងពេញលេញ មុនពេលដាក់ស្នើ** ### សម្រាប់កូដ Python អនុវត្តតាមមគ្គុទេសក៍រចនាបថ [PEP 8](https://www.python.org/dev/peps/pep-0008/)៖ ```python # ប៉ាត់ប៉ូលល្អ import pandas as pd def calculate_mean(data): """Calculate the mean of a dataset. Args: data (list): List of numerical values Returns: float: Mean of the dataset """ return sum(data) / len(data) ``` ### សម្រាប់ការរួមចំណែកកម្មវិធីសំណួរ ពេលកែលម្អកម្មវិធីសំណួរ៖ 1. **សាកល្បងបណ្ដាច់មូលដ្ឋាន**៖ ```bash cd quiz-app npm install npm run serve ``` 2. **បើកដំណើរការ linter**៖ ```bash npm run lint ``` 3. **សាងសង់ដោយជោគជ័យ**៖ ```bash npm run build ``` 4. **អនុវត្តមាគ៌ារចនាបថ Vue.js និងគំរូដែលមានស្រាប់** ### សម្រាប់ការបកប្រែ ពេលបន្ថែម ឬកែលម្អការបកប្រែ៖ 1. អនុវត្តរចនាសម្ព័ន្ធក្នុងថត `translations/` 2. ប្រើកូដភាសាជាឈ្មោះថត (ឧ. `fr` សម្រាប់ភាសាបារាំង) 3. រក្សារចនាសម្ព័ន្ធឯកសារដូចជាភាសាអង់គ្លេស 4. បច្ចុប្បន្នភាពតំណភ្ជាប់ជាមួយប៉ារ៉ាម៉ែត្រភាសា៖ `?loc=fr` 5. សាកល្បងតំណទាំងអស់ និងរចនាបថ ## ដំណើរការជូនពរ Pull Request ### មុនបញ្ជូន 1. **ធ្វើឲ្យសាខារបស់អ្នកទាន់សម័យជាមួយការផ្លាស់ប្តូរទំនើបបំផុត**៖ ```bash git fetch upstream git rebase upstream/main ``` 2. **សាកល្បងការផ្លាស់ប្តូររបស់អ្នក**៖ - បើកទស្សនាវិជ្ជាបានបង្កើតបានទាំងឡាយ - សាកល្បងកម្មវិធីសំណួរចំពោះការកែប្រែ - ផ្ទៀងផ្ទាត់តំណទាំងអស់ - ពិនិត្យកំហុសសរសេរពាក្យ និងវេយ្យាករណ៍ 3. **Commit ការផ្លាស់ប្តូររបស់អ្នក**៖ ```bash git add . git commit -m "Brief description of changes" ``` សរសេរពាក្យ commit ឲ្យច្បាស់៖ - ប្រើសព្ទវេលាបច្ចុប្បន្ន ("Add feature" មិនមែន "Added feature") - ប្រើបំពានបរិបទ ("Move cursor to..." មិនមែន "Moves cursor to...") - កំណត់បន្ទាត់ទីមួយមិនឲ្យលើស 72 តួអក្សរ - ឧបករណ៍បញ្ហា និង pull requests ដែលពាក់ព័ន្ធ 4. **បញ្ចូនទៅ fork របស់អ្នក**៖ ```bash git push origin feature/your-feature-name ``` ### ការបង្កើត Pull Request 1. ទៅកាន់ [repository](https://github.com/microsoft/Data-Science-For-Beginners) 2. ចុច "Pull requests" → "New pull request" 3. ចុច "compare across forks" 4. ជ្រើស fork និងសាខារបស់អ្នក 5. ចុច "Create pull request" ### ទ្រង់ទ្រាយចំណងជើង PR ប្រើចំណងជើងច្បាស់លាស់ តាមទ្រង់ទ្រាយដូចខាងក្រោម៖ ``` [Component] Brief description ``` ឧទាហរណ៍៖ - `[Lesson 7] ជួសជុលកំហុសនាំចូលសៀវភៅ Python` - `[Quiz App] បន្ថែមការបកប្រែ ភាសាអាល្លឺម៉ង់` - `[Docs] ថ្មីសម័យ README ជាមួយការទាមទារថ្មីៗ` - `[Fix] កែប្រែផ្លូវទិន្នន័យនៅ មេរៀនបង្ហាញទិន្នន័យ` ### ការពិពណ៌នាប្រកាស PR រួមបញ្ចូលក្នុងការពិពណ៌នាប្រកាស PR របស់អ្នក៖ - **អ្វី**៖ តើអ្នកបានផ្លាស់ប្តូរអ្វី? - **ហេតុអ្វី**៖ ហេតុអ្វីការផ្លាស់ប្តូរនេះចាំបាច់? - **របៀប**៖ តើធ្វើការផ្លាស់ប្តូរយ៉ាងដូចម្តេច? - **ការសាកល្បង**៖ តើអ្នកបានសាកល្បងការផ្លាស់ប្តូរដូចម្តេច? - **រូបថតអេក្រង់**៖ បញ្ចូលរូបថតអេក្រង់សម្រាប់ការផ្លាស់ប្តូរក្នុងចក្ខុវិស័យ - **បញ្ហាដែលពាក់ព័ន្ធ**៖ តំណបញ្ហាដែលពាក់ព័ន្ធ (ឧ. "Fixes #123") ### ដំណើរការត្រួតពិនិត្យ 1. **ការត្រួតពិនិត្យស្វ័យប្រវត្តិ** នឹងដំណើរការលេី PR របស់អ្នក 2. **អ្នកថែទាំនឹងពិនិត្យការរួមចំណែករបស់អ្នក** 3. **ដោះស្រាយមតិយោបល់** ដោយបង្កើត commit បន្ថែម 4. ពេលទទួលស្គាល់ ហើយអ្នកថែទាំនឹងបញ្ចូល PR របស់អ្នក ### បន្ទាប់ពី PR របស់អ្នកត្រូវបានបញ្ចូល 1. លុបសាខាររបស់អ្នក៖ ```bash git branch -d feature/your-feature-name git push origin --delete feature/your-feature-name ``` 2. ផ្ទុះសាខា fork របស់អ្នក៖ ```bash git checkout main git pull upstream main git push origin main ``` ## មគ្គុទេសក៍រចនាបថ ### Markdown - ប្រើកម្រិតជំពូកយ៉ាងរឹងមាំ - រក្សាបន្ទាត់ទទេ រវាងផ្នែក - ប្រើទ្រង់ទ្រាយកូដជាមួយនៃភាសាបញ្ជាក់៖ ````markdown ```python import pandas as pd ``` ```` - បន្ថែមអត្ថបទ alt ទៅរូបភាព៖ `![Alt text](../../translated_images/km/image.4ee84a82b5e4c9e6.webp)` - រក្សាប្រវែងបន្ទាត់សមរម្យ (ប្រហែល ៨០-១០០ តួអក្សរ) ### Python - អនុវត្តមគ្គុទេសក៍រចនាបថ PEP 8 - ប្រើឈ្មោះផ្ទុកមានន័យ - បន្ថែម docstrings ទៅមុខងារ - រួមបញ្ចូលសញ្ញាប្រភេទពេលដែលសមស្រប៖ ```python def process_data(df: pd.DataFrame) -> pd.DataFrame: """Process the input dataframe.""" return df ``` ### JavaScript/Vue.js - អនុវត្តមគ្គុទេសក៍រចនាបថ Vue.js 2 - ប្រើការកំណត់ ESLint ដែលបានផ្តល់ - សរសេរតំបន់មេធ្វើបានច្រើន និងអាចប្រើឡើងវិញ - បន្ថែមចំណាំសម្រាប់តុល្យភាពស្មុគស្មាញ ### ការរៀបចំឯកសារ - រក្សាឯកសារដែលពាក់ព័ន្ធជាក្រុម - ប្រើឈ្មោះឯកសារដែលពិពណ៌នា - អនុវត្តរចនាសម្ព័ន្ធថតដែលមានស្រាប់ - អត់ commit ឯកសារដែលមិនចាំបាច់ (.DS_Store, .pyc, node_modules, ល។) ## សន្ធិសញ្ញាប័ណ្ណអ្នករួមចំណែក គម្រោងនេះស្វាគមន៍ការរួមចំណែក និងយោបល់។ ការរួមចំណែកច្រើនត្រូវការអ្នកព្រមព្រៀងទៅលើ សន្ធិសញ្ញាប័ណ្ណអ្នករួមចំណែក (CLA) ដែលថ្លែងថាអ្នកមានសិទ្ធ និងពិតជាផ្តាច់សិទ្ធិឲ្យយើងប្រើប្រាស់ការរួមចំណែករបស់អ្នក។ សម្រាប់ព័ត៌មានលម្អិត ចូលទៅ https://cla.microsoft.com។ ពេលអ្នកបញ្ជូន pull request មួយ CLA-bot នឹងកំណត់ដោយស្វ័យប្រវត្តិថាតើអ្នកត្រូវការផ្តល់ CLA ឬអត់ និងតភ្ជាប់ស្លាកត្រឹមត្រូវ (ឧ. ស្លាក, មតិ)។ សូមអនុវត្តតាមការណែនាំដែលបានផ្ដល់ដោយ bot។ អ្នកត្រូវតែធ្វើម្ដងតែតែមួយគត់ សម្រាប់គ្រប់ឃ្លាំងដែលប្រើ CLA របស់យើង។ ## មានសំណួរទៀត? - ពិនិត្យមើល [ឆានែល Discord #data-science-for-beginners](https://aka.ms/ds4beginners/discord) - ចូលរួមសហគមន៍ Discord របស់យើង៖ https://aka.ms/ds4beginners/discord - ពិនិត្យមើលបញ្ហា​ដែលមានស្រាប់ និង pull requests ៖ https://github.com/microsoft/Data-Science-For-Beginners/issues និង https://github.com/microsoft/Data-Science-For-Beginners/pulls ## អរគុណ! ការរួមចំណែករបស់អ្នកធ្វើឲ្យវគ្គសិក្សានេះកាន់តែល្អសម្រាប់មនុស្សគ្រប់រូប។ សូមអរគុណដែលបានចំណាយពេលក្នុងការរួមចំណែក! --- **ការបដិសេធ**: ឯកសារនេះត្រូវបានបម្រើប្រាស់ដោយសេវាកម្មបកប្រែ AI ដែលមានឈ្មោះ [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំប្រឹងប្រែងដើម្បីភាពត្រឹមត្រូវ សូមយល់ដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវមួយចំនួន។ ឯកសារដើមក្នុងភាសាមាតុភូមិគួរត្រូវបានយកទៅជាប្រភពចម្បង។ សម្រាប់ព័ត៌មានសំខាន់ៗ, គ្រាន់តែបកប្រែដោយអ្នកជំនាញមនុស្សត្រូវបានផ្តល់អនុសាសន៍។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំណាស់ ឬការបកប្រែខុសពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។