diff --git a/translated_images/1.b6da8c1394b07491.he.png b/translated_images/1.b6da8c1394b07491.he.png new file mode 100644 index 000000000..b7196681f Binary files /dev/null and b/translated_images/1.b6da8c1394b07491.he.png differ diff --git a/translated_images/1.b6da8c1394b07491.id.png b/translated_images/1.b6da8c1394b07491.id.png new file mode 100644 index 000000000..fc1ecf31b Binary files /dev/null and b/translated_images/1.b6da8c1394b07491.id.png differ diff --git a/translated_images/1.b6da8c1394b07491.ms.png b/translated_images/1.b6da8c1394b07491.ms.png new file mode 100644 index 000000000..4abfa7efe Binary files /dev/null and b/translated_images/1.b6da8c1394b07491.ms.png differ diff --git a/translated_images/1.b6da8c1394b07491.sw.png b/translated_images/1.b6da8c1394b07491.sw.png new file mode 100644 index 000000000..5dcf910a1 Binary files /dev/null and b/translated_images/1.b6da8c1394b07491.sw.png differ diff --git a/translated_images/1.b6da8c1394b07491.tl.png b/translated_images/1.b6da8c1394b07491.tl.png new file mode 100644 index 000000000..60d13ff58 Binary files /dev/null and b/translated_images/1.b6da8c1394b07491.tl.png differ diff --git a/translated_images/1.b6da8c1394b07491.vi.png b/translated_images/1.b6da8c1394b07491.vi.png new file mode 100644 index 000000000..5dfb49b75 Binary files /dev/null and b/translated_images/1.b6da8c1394b07491.vi.png differ diff --git a/translated_images/1.cc07a5cbe114ad1d.he.png b/translated_images/1.cc07a5cbe114ad1d.he.png new file mode 100644 index 000000000..87c1ce9b5 Binary files /dev/null and b/translated_images/1.cc07a5cbe114ad1d.he.png differ diff --git a/translated_images/1.cc07a5cbe114ad1d.id.png b/translated_images/1.cc07a5cbe114ad1d.id.png new file mode 100644 index 000000000..49b82350a Binary files /dev/null and b/translated_images/1.cc07a5cbe114ad1d.id.png differ diff --git a/translated_images/1.cc07a5cbe114ad1d.ms.png b/translated_images/1.cc07a5cbe114ad1d.ms.png new file mode 100644 index 000000000..d3e171873 Binary files /dev/null and b/translated_images/1.cc07a5cbe114ad1d.ms.png differ diff --git a/translated_images/1.cc07a5cbe114ad1d.sw.png b/translated_images/1.cc07a5cbe114ad1d.sw.png new file mode 100644 index 000000000..390a3902d Binary files /dev/null and b/translated_images/1.cc07a5cbe114ad1d.sw.png differ diff --git a/translated_images/1.cc07a5cbe114ad1d.tl.png b/translated_images/1.cc07a5cbe114ad1d.tl.png new file mode 100644 index 000000000..fcb0eb03a Binary files /dev/null and b/translated_images/1.cc07a5cbe114ad1d.tl.png differ diff --git a/translated_images/1.cc07a5cbe114ad1d.vi.png b/translated_images/1.cc07a5cbe114ad1d.vi.png new file mode 100644 index 000000000..21c8fde85 Binary files /dev/null and b/translated_images/1.cc07a5cbe114ad1d.vi.png differ diff --git a/translated_images/2.1dae52ff08042246.he.png b/translated_images/2.1dae52ff08042246.he.png new file mode 100644 index 000000000..72854bd8c Binary files /dev/null and b/translated_images/2.1dae52ff08042246.he.png differ diff --git a/translated_images/2.1dae52ff08042246.id.png b/translated_images/2.1dae52ff08042246.id.png new file mode 100644 index 000000000..5159621cd Binary files /dev/null and b/translated_images/2.1dae52ff08042246.id.png differ diff --git a/translated_images/2.1dae52ff08042246.ms.png b/translated_images/2.1dae52ff08042246.ms.png new file mode 100644 index 000000000..b249c5233 Binary files /dev/null and b/translated_images/2.1dae52ff08042246.ms.png differ diff --git a/translated_images/2.1dae52ff08042246.sw.png b/translated_images/2.1dae52ff08042246.sw.png new file mode 100644 index 000000000..98e2213c6 Binary files /dev/null and b/translated_images/2.1dae52ff08042246.sw.png differ diff --git a/translated_images/2.1dae52ff08042246.tl.png b/translated_images/2.1dae52ff08042246.tl.png new file mode 100644 index 000000000..d8e75f404 Binary files /dev/null and b/translated_images/2.1dae52ff08042246.tl.png differ diff --git a/translated_images/2.1dae52ff08042246.vi.png b/translated_images/2.1dae52ff08042246.vi.png new file mode 100644 index 000000000..cd808f078 Binary files /dev/null and b/translated_images/2.1dae52ff08042246.vi.png differ diff --git a/translated_images/after-codeswing-extension-pb.0ebddddcf73b5509.he.png b/translated_images/after-codeswing-extension-pb.0ebddddcf73b5509.he.png new file mode 100644 index 000000000..2c4181332 Binary files /dev/null and b/translated_images/after-codeswing-extension-pb.0ebddddcf73b5509.he.png differ diff --git a/translated_images/after-codeswing-extension-pb.0ebddddcf73b5509.id.png b/translated_images/after-codeswing-extension-pb.0ebddddcf73b5509.id.png new file mode 100644 index 000000000..703fed12b Binary files /dev/null and b/translated_images/after-codeswing-extension-pb.0ebddddcf73b5509.id.png differ diff --git a/translations/sw/7-bank-project/4-state-management/README.md b/translations/sw/7-bank-project/4-state-management/README.md index 1e7c2a710..1984cc352 100644 --- a/translations/sw/7-bank-project/4-state-management/README.md +++ b/translations/sw/7-bank-project/4-state-management/README.md @@ -1,118 +1,242 @@ -# Jenga Programu ya Benki Sehemu ya 4: Dhana za Usimamizi wa Hali +# Jenga App ya Benki Sehemu ya 4: Dhana za Usimamizi wa Hali -## Maswali ya Awali ya Somo +## ⚡ Unachoweza Kufanya Katika Dakika 5 Zijazo -[Maswali ya awali ya somo](https://ff-quizzes.netlify.app/web/quiz/47) +**Njia ya Mwanzo wa Haraka kwa Waendelezaji Wenye Muda Mfupi** + +```mermaid +flowchart LR + A[⚡ Dakika 5] --> B[Chunguza matatizo ya hali] + B --> C[Tengeneza kitu cha hali ya kati] + C --> D[Ongeza kazi ya updateState] + D --> E[Tazama maboresho ya haraka] +``` +- **Dakika 1**: Jaribu tatizo la hali ya sasa - ingia, tazama upya ukurasa, angalia kuondolewa kwa kiingilio +- **Dakika 2**: Badilisha `let account = null` na `let state = { account: null }` +- **Dakika 3**: Unda kazi rahisi ya `updateState()` kwa sasisho za kidhibitiwa +- **Dakika 4**: Sasisha moja ya kazi ili kutumia muundo mpya +- **Dakika 5**: Jaribu utabiri ulioboreshwa na uwezo wa kutatua matatizo + +**Jaribio la Haraka la Uchunguzi**: +```javascript +// Kabla: Hali iliyosambazwa +let account = null; // Imepotea wakati wa kufungua upya! + +// Baada: Hali iliyojumuishwa +let state = Object.freeze({ account: null }); // Imebadiliwa na inafuata! +``` + +**Kwa Nini Hii ni Muhimu**: Katika dakika 5, utashuhudia mabadiliko kutoka kwa usimamizi wa hali usiovurugika hadi mifumo inayoweza kutabirika na kutatuliwa kwa urahisi. Hii ni msingi unaofanya programu changamano kuwa rahisi kudumishwa. + +## 🗺️ Safari Yako ya Kujifunza Kupitia Utaalamu wa Usimamizi wa Hali + +```mermaid +journey + title Kutoka Hali Zilizotawanyika hadi Usanifu wa Kitaalamu + section Kugundua Matatizo + Tambua matatizo ya upotevu wa hali: 3: You + Elewa masasisho yaliyotawanyika: 4: You + Tambua mahitaji ya usanifu: 6: You + section Kuweka Udhibiti Kando + Tengeneza kitu kimoja cha hali: 5: You + Tekeleza masasisho yanayodhibitiwa: 7: You + Ongeza mifumo isiyobadilika: 8: You + section Kuongeza Kudumu + Tekeleza localStorage: 6: You + Hudumia serialization: 7: You + Tengeneza kuendelea kwa kikao: 9: You + section Kuweka Mizani Kuwa Safi + Takasa uchakavu wa data: 5: You + Jenga mifumo ya kusasisha: 8: You + Fikia usawa bora: 9: You +``` +**Mwenendo wa Safari Yako**: Mwisho wa somo hili, utakuwa umejenga mfumo wa usimamizi wa hali wa kiwango cha kitaalamu unaoshughulikia uhifadhi, uhalisia wa data, na sasisho zinazotabirika - mifumo ile ile inayotumika katika programu za uzalishaji. + +## Mtihani wa Kabla ya Mzungumzo + +[Mtihani wa kabla ya mzungumzo](https://ff-quizzes.netlify.app/web/quiz/47) ## Utangulizi -Usimamizi wa hali ni kama mfumo wa urambazaji kwenye chombo cha Voyager – kila kitu kinapofanya kazi vizuri, huwezi hata kugundua kuwa upo. Lakini mambo yanapokwenda vibaya, inakuwa tofauti kati ya kufika anga za mbali na kupotea katika ulimwengu wa nyota. Katika ukuzaji wa wavuti, hali inawakilisha kila kitu ambacho programu yako inahitaji kukumbuka: hali ya kuingia kwa mtumiaji, data ya fomu, historia ya urambazaji, na hali za muda za kiolesura. +Usimamizi wa hali ni kama mfumo wa urambazaji kwenye chombo cha anga cha Voyager – wakati kila kitu kinafanya kazi kwa usawa, hujali tu kwamba upo. Lakini pale mambo yanapokosea, huwa ni tofauti kati ya kufika angani interstellar na kutawanyika kupotea katika maporomoko ya anga. Katika ujenzi wa wavuti, hali inaashiria kila kitu ambacho programu yako inahitaji kukumbuka: hali ya kuingia mtumiaji, data za fomu, historia ya urambazaji, na hali za muda za kiolesura. -Kadri programu yako ya benki imeendelea kutoka fomu rahisi ya kuingia hadi kuwa programu ya kisasa zaidi, huenda umekutana na changamoto za kawaida. Ukiboresha ukurasa, watumiaji huingia tena bila kutarajia. Ukifunga kivinjari, maendeleo yote yanapotea. Ukijaribu kutatua tatizo, unatafuta kupitia kazi nyingi zinazobadilisha data kwa njia tofauti. +App yako ya benki ikiwa imeendelea kutoka fomu rahisi ya kuingia hadi programu tata zaidi, labda umekutana na changamoto za kawaida. Rudisha ukurasa na watumiaji hupata kuondolewa kiotomatiki. Funga kivinjari na maendeleo yote hupotea. Tatua tatizo na unatafuta kupitia kazi nyingi zinazobadilisha data ile ile kwa njia tofauti. -Hizi si dalili za uandishi mbaya wa programu – ni changamoto za kawaida zinazotokea programu zinapofikia kiwango fulani cha ugumu. Kila msanidi programu hukutana na changamoto hizi programu zao zinapobadilika kutoka "uthibitisho wa dhana" hadi "tayari kwa uzalishaji." +Hizi si dalili za uandishi mbaya wa msimbo – ni maumivu ya kawaida yanayotokea wakati programu zinapofikia kiwango fulani cha ugumu. Kila msanidi hujikuta na changamoto hizi wakati programu zao zinapoanza kutoka "ushahidi wa dhana" hadi "tayari kwa uzalishaji." -Katika somo hili, tutaweka mfumo wa usimamizi wa hali ulio katikati ambao utabadilisha programu yako ya benki kuwa programu ya kuaminika na ya kitaalamu. Utajifunza kudhibiti mtiririko wa data kwa njia inayotabirika, kuhifadhi vikao vya watumiaji ipasavyo, na kuunda uzoefu laini wa mtumiaji ambao programu za wavuti za kisasa zinahitaji. +Katika somo hili, tutatekeleza mfumo wa usimamizi wa hali uliolengwa ambao utageuza app yako ya benki kuwa programu inayotegemeka na ya kitaalamu. Utajifunza kusimamia mtiririko wa data kwa utabiri, kuhifadhi vikao vya mtumiaji ipasavyo, na kutengeneza uzoefu laini wa mtumiaji unaohitajika na programu za kisasa za wavuti. ## Mahitaji ya Awali -Kabla ya kuingia kwenye dhana za usimamizi wa hali, unahitaji kuwa na mazingira yako ya ukuzaji yamewekwa vizuri na msingi wa programu yako ya benki uko tayari. Somo hili linajengwa moja kwa moja juu ya dhana na msimbo kutoka sehemu za awali za mfululizo huu. +Kabla ya kuingia katika dhana za usimamizi wa hali, unahitaji kuwa na mazingira yako ya maendeleo yamesh/setup kikamilifu na msingi wa app yako ya benki uko sawa. Somo hili linajengwa moja kwa moja kwenye dhana na msimbo kutoka sehemu zilizopita za mfululizo huu. Hakikisha una vipengele vifuatavyo tayari kabla ya kuendelea: -**Mazingira Yanayohitajika:** -- Kamilisha [somo la upatikanaji wa data](../3-data/README.md) - programu yako inapaswa kupakia na kuonyesha data ya akaunti kwa mafanikio +**Mipangilio Inayohitajika:** +- Maliza [somo la kupata data](../3-data/README.md) - app yako inapaswa kupakia na kuonyesha data za akaunti kwa mafanikio - Sakinisha [Node.js](https://nodejs.org) kwenye mfumo wako kwa ajili ya kuendesha API ya nyuma -- Anzisha [API ya seva](../api/README.md) kwa ndani ili kushughulikia shughuli za data ya akaunti +- Anzisha [seva API](../api/README.md) mahali pa ndani kushughulikia operesheni za data za akaunti -**Kujaribu Mazingira Yako:** +**Kujifunza Mazingira Yako:** -Thibitisha kuwa seva yako ya API inafanya kazi kwa usahihi kwa kutekeleza amri hii kwenye terminal: +Thibitisha kuwa seva yako ya API inaendesha kwa usahihi kwa kutekeleza amri hii kwenye terminal: ```sh curl http://localhost:5000/api -# -> should return "Bank API v1.0.0" as a result +# -> inapaswa kurudisha "Bank API v1.0.0" kama matokeo ``` -**Kile amri hii inafanya:** +**Mambo haya amri hufanya:** - **Inatuma** ombi la GET kwa seva yako ya API ya ndani -- **Inajaribu** muunganisho na kuthibitisha kuwa seva inajibu -- **Inarudisha** taarifa ya toleo la API ikiwa kila kitu kinafanya kazi vizuri +- **Inajaribu** muunganisho na kuthibitisha seva inatoa majibu +- **Inarejesha** taarifa za toleo la API ikiwa kila kitu kinafanya kazi vizuri + +## 🧠 Muhtasari wa Msingi wa Usimamizi wa Hali + +```mermaid +mindmap + root((Usimamizi wa Hali)) + Matatizo ya Sasa + Kupoteza Kikao + matatizo ya Kurejesha Ukurasa + Athari ya Kufunga Kivinjari + Matatizo ya Kurejesha Mabadiliko + Marekebisho yaliyogawanyika + Sehemu Nyingi za Mabadiliko + Changamoto za Kufuatilia Hitilafu + Tabia Isiyotabirika + Usafishaji Usio kamilifu + Matatizo ya Hali za Kutoka + Mtoaji wa Kumbukumbu + Masuala ya Usalama + Suluhisho za Kati + Kituo cha Hali Kimoja + Chanzo Kimoja cha Ukweli + Muundo Unaotabirika + Msingi Unaoweza Kupanuka + Marekebisho Dharura + Mifano Isiyobadilika + Matumizi ya Object.freeze + Mabadiliko Yaliyo kwenye Kazi + Ufuatiliaji wa Hali + Usimamizi wa Historia + Uonekano wa Hitilafu + Ukaguzi wa Mabadiliko + Mikakati ya Kuhifadhi + Muunganisho wa localStorage + Muendelevu wa Kikao + Uandikishaji wa JSON + Mlandanisho wa Kiotomatiki + Ubora wa Data + Ukaribishaji wa Server + Matibabu ya Data iliyochakaa + Uboreshaji wa Mizani + Uboreshaji wa Hifadhi + Data Ndogo + Kipaumbele cha Utendaji + Mawazo ya Usalama +``` +**Kanuni Muhimu**: Usimamizi wa hali wa kitaalamu unaweka mizani kati ya utabiri, uhifadhi, na utendaji kazi ili kuunda uzoefu wa mtumiaji unaotegemeka unaoweza kupanuka kutoka mwingiliano rahisi hadi michakato tata ya programu. --- -## Kutambua Masuala ya Hali ya Sasa +## Kuchambua Tatizo la Hali ya Sasa -Kama Sherlock Holmes akichunguza eneo la uhalifu, tunahitaji kuelewa kinachotokea katika utekelezaji wetu wa sasa kabla ya kutatua fumbo la vikao vya watumiaji vinavyopotea. +Kama Sherlock Holmes akichunguza eneo la uhalifu, tunahitaji kuelewa hasa kinachotokea katika utekelezaji wetu wa sasa kabla ya kutatua fumbo la kupotea kwa vikao vya mtumiaji. -Tufanye jaribio rahisi linaloonyesha changamoto za usimamizi wa hali: +Tufanye jaribio rahisi linaloonyesha changamoto za msingi za usimamizi wa hali: -**🧪 Jaribu Uchunguzi Huu:** -1. Ingia kwenye programu yako ya benki na nenda kwenye dashibodi -2. Boresha ukurasa wa kivinjari -3. Angalia kinachotokea kwa hali yako ya kuingia +**🧪 Jaribu Hili la Uchunguzi:** +1. Ingia kwenye app yako ya benki na nenda kwenye dashibodi +2. Rudisha ukurasa wa kivinjari +3. Tazama kinachotokea kwenye hali yako ya kuingia -Ikiwa unarudishwa kwenye skrini ya kuingia, umegundua tatizo la kawaida la uhifadhi wa hali. Tabia hii hutokea kwa sababu utekelezaji wetu wa sasa huhifadhi data ya mtumiaji kwenye vigezo vya JavaScript vinavyofutwa kila ukurasa unapobadilishwa. +Kama unarudiwa tena kwenye skrini ya kuingia, umegundua tatizo la uhifadhi wa hali. Tabia hii hutokea kwa sababu utekelezaji wetu wa sasa huhifadhi data za mtumiaji kwenye vigezo vya JavaScript vinavyosafishwa kila mara ukurasa unaporudishwa. **Matatizo ya Utekelezaji wa Sasa:** -Kigezo rahisi cha `account` kutoka [somo letu la awali](../3-data/README.md) kinazalisha matatizo matatu makubwa yanayoathiri uzoefu wa mtumiaji na utunzaji wa msimbo: +Kigezo rahisi cha `account` kutoka kwa [somo letu la awali](../3-data/README.md) kinasababisha matatizo makubwa matatu yanayoathiri uzoefu wa mtumiaji na uimara wa msimbo: | Tatizo | Sababu ya Kiufundi | Athari kwa Mtumiaji | |---------|--------|----------------| -| **Upotevu wa Kikao** | Kuboresha ukurasa hufuta vigezo vya JavaScript | Watumiaji wanapaswa kuingia mara kwa mara | -| **Mabadiliko Yaliyotawanyika** | Kazi nyingi hubadilisha hali moja kwa moja | Utatuzi wa matatizo unakuwa mgumu zaidi | -| **Usafishaji Usio Kamili** | Kuondoka hakufuti marejeleo yote ya hali | Wasiwasi wa usalama na faragha | - -**Changamoto ya Kimuundo:** - -Kama muundo wa sehemu za Titanic ulioonekana kuwa thabiti hadi sehemu nyingi zilipojaa maji kwa wakati mmoja, kutatua matatizo haya moja moja hakutashughulikia tatizo la kimuundo lililopo. Tunahitaji suluhisho la kina la usimamizi wa hali. - -> 💡 **Tunajaribu kufanikisha nini hapa?** - -[Usimamizi wa hali](https://en.wikipedia.org/wiki/State_management) kimsingi ni kuhusu kutatua mafumbo mawili ya msingi: - -1. **Data Yangu Iko Wapi?**: Kufuatilia taarifa tuliyonayo na inatoka wapi -2. **Je, Kila Mtu Yuko Ukurasa Mmoja?**: Kuhakikisha kile watumiaji wanachoona kinawiana na kinachotokea - -**Mpango Wetu wa Mchezo:** - -Badala ya kuzunguka bila mwelekeo, tutaunda mfumo wa **usimamizi wa hali ulio katikati**. Fikiria kama kuwa na mtu mmoja aliyeandaliwa vizuri anayesimamia mambo yote muhimu: - -![Mchoro unaoonyesha mtiririko wa data kati ya HTML, vitendo vya mtumiaji na hali](../../../../translated_images/data-flow.fa2354e0908fecc89b488010dedf4871418a992edffa17e73441d257add18da4.sw.png) - +| **Kupotea kwa Kikao** | Kurudisha ukurasa kunafuta vigezo vya JavaScript | Watumiaji wanapaswa kuingia mara kwa mara | +| **Sasisho Zilizopangwa Kwenye Sehemu Zenye Tofauti** | Kazi nyingi hubadilisha hali moja kwa moja | Kutatua matatizo kunazidi kuwa ngumu | +| **Usafishaji Mfupi** | Kuondoka haafuta marejeleo yote ya hali | Hatari za usalama na faragha | + +**Changamoto ya Miundo:** + +Kama muundo wa sehemu za Titanic ulioonekana imara hadi sehemu nyingi kuzama kwa pamoja, kurekebisha matatizo haya moja baada ya nyingine haitaondoa tatizo la msingi la usanifu. Tunahitaji suluhisho kamili la usimamizi wa hali. + +> 💡 **Tunajaribu kufanikisha nini hasa hapa?** + +[Usimamizi wa hali](https://en.wikipedia.org/wiki/State_management) ni kweli kuhusu kutatua fumbo mbili za msingi: + +1. **Data Yangu Iko Wapi?**: Kufuatilia taarifa tunazozipata na chanzo chake +2. **Je, Wote Wako na Taarifa Sawia?**: Kuhakikisha kile watumiaji wanaona kinaendana na kinachotokea + +**Mpango wetu wa Kiongozi:** + +Badala ya kuzunguka kwa kutafuta mwishowe, tutaunda **mfumo wa usimamizi wa hali uliolengwa katikati**. Fikiria kama mtu mmoja aliyepangwa vizuri anayehudumia vitu vyote muhimu: + +![Schema showing the data flows between the HTML, user actions and state](../../../../translated_images/data-flow.fa2354e0908fecc8.sw.png) + +```mermaid +flowchart TD + A[Hatua ya Mtumiaji] --> B[Msimamizi wa Tukio] + B --> C[Kazi ya updateState] + C --> D{Uhakiki wa Hali} + D -->|Halali| E[Tengeneza Hali Mpya] + D -->|Sio Halali| F[Usimamizi wa Makosa] + E --> G[Object.freeze] + G --> H[Update localStorage] + H --> I[Anzisha Sasisho la UI] + I --> J[Mtumiaji Anaona Mabadiliko] + F --> K[Mtumiaji Anaona Kosa] + + subgraph "Tabaka la Usimamizi wa Hali" + C + E + G + end + + subgraph "Tabaka la Uhifadhi" + H + L[localStorage] + H -.-> L + end +``` **Kuelewa mtiririko huu wa data:** -- **Unakusanya** hali yote ya programu katika eneo moja -- **Unapanga** mabadiliko yote ya hali kupitia kazi zilizodhibitiwa -- **Unahakikisha** UI inabaki kulingana na hali ya sasa -- **Unatoa** muundo wazi na unaotabirika wa usimamizi wa data +- **Unahusisha** hali zote za programu mahali pamoja +- **Pitia** mabadiliko yote ya hali kupitia kazi za kidhibitiwa +- **Hakikisha** UI inabaki sambamba na hali ya sasa +- **Toa** muundo wazi, unaoweza kutabirika wa usimamizi wa data -> 💡 **Ujuzi wa Kitaalamu**: Somo hili linazingatia dhana za msingi. Kwa programu ngumu, maktaba kama [Redux](https://redux.js.org) hutoa vipengele vya hali ya juu vya usimamizi wa hali. Kuelewa kanuni hizi za msingi kutakusaidia kumudu maktaba yoyote ya usimamizi wa hali. +> 💡 **Maarifa ya Kitaalamu**: Somo hili linazingatia dhana za msingi. Kwa programu changamano, maktaba kama [Redux](https://redux.js.org) hutoa vipengele vya juu vya usimamizi wa hali. Kuelewa misingi hii kutakusaidia kumiliki maktaba yoyote ya usimamizi wa hali. -> ⚠️ **Mada ya Juu**: Hatutashughulikia masasisho ya UI yanayotokea moja kwa moja kutokana na mabadiliko ya hali, kwani hili linahusisha dhana za [Programu ya Kijibu](https://en.wikipedia.org/wiki/Reactive_programming). Fikiria hili kama hatua nzuri inayofuata katika safari yako ya kujifunza! +> ⚠️ **Mada ya Juu**: Hatujajadili sasisho la kiotomatiki la UI linapotokea kwa mabadiliko ya hali, kwa kuwa hili linahusisha dhana za [Programming ya Kusikika](https://en.wikipedia.org/wiki/Reactive_programming). Dhana hii tena ni hatua nzuri kwa safari yako ya kujifunza! -### Kazi: Kuweka Muundo wa Hali Katikati +### Kazi: Kuweka Mfumo wa Hali Katikati -Tuanzishe mabadiliko ya usimamizi wa hali uliotawanyika kuwa mfumo ulio katikati. Hatua hii ya kwanza inaweka msingi wa maboresho yote yanayofuata. +Tuanze kubadilisha usimamizi wetu wa hali uliotawanyika kuwa mfumo ulioko katikati. Hatua hii ya kwanza inaweka msingi kwa maboresho yote yatakayofuata. -**Hatua ya 1: Unda Kitu cha Hali Katikati** +**Hatua ya 1: Unda Kitu cha Hali Kati** -Badilisha tamko rahisi la `account`: +Badilisha tangazo rahisi la `account`: ```js let account = null; ``` -Na kitu cha hali kilichopangwa: +Kwa kitu cha hali chenye muundo: ```js let state = { @@ -120,80 +244,112 @@ let state = { }; ``` -**Kwa nini mabadiliko haya ni muhimu:** -- **Unakusanya** data yote ya programu katika eneo moja -- **Unatayarisha** muundo wa kuongeza mali zaidi za hali baadaye -- **Unaunda** mpaka wazi kati ya hali na vigezo vingine -- **Unaanzisha** muundo unaokua kadri programu yako inavyopanuka +**Hii ni kwa nini mabadiliko haya ni muhimu:** +- **Unahusisha** data zote za programu mahali pamoja +- **Huandaa** muundo wa kuongeza mali zaidi baadaye +- **Huunda** mpaka wazi kati ya hali na vigezo vingine +- **Huanzisha** muundo unaopanuka kadri app yako inavyoendelea -**Hatua ya 2: Sasisha Mifumo ya Ufikiaji wa Hali** +**Hatua ya 2: Sasisha Mifumo ya Kufikia Hali** Sasisha kazi zako kutumia muundo mpya wa hali: -**Katika kazi za `register()` na `login()`**, badilisha: +**Katika kazi `register()` na `login()`**, badilisha: ```js account = ... ``` -Na: +Kwa: ```js state.account = ... ``` -**Katika kazi ya `updateDashboard()`**, ongeza mstari huu juu: +**Katika kazi `updateDashboard()`**, ongeza mstari huu juu: ```js const account = state.account; ``` -**Kile masasisho haya yanayofanikisha:** -- **Yanaweka** utendaji uliopo huku yakiboresha muundo -- **Yanatayarisha** msimbo wako kwa usimamizi wa hali wa kisasa zaidi -- **Yanaanzisha** mifumo thabiti ya kufikia data ya hali -- **Yanaweka** msingi wa masasisho ya hali yaliyo katikati +**Haya maboresho yanayafanya nini:** +- **Hudumisha** utendaji uliopo huku hutangaza muundo +- **Huandaa** msimbo wako kwa usimamizi wa hali wenye ustadi zaidi +- **Huunda** mifumo thabiti ya kufikia data ya hali +- **Huanzisha** msingi wa sasisho za hali zilizo na lengo katikati + +> 💡 **Kumbuka**: Marekebisho haya hayatatatua matatizo yetu mara moja, bali huweka msingi muhimu kwa maboresho makubwa yajayo! -> 💡 **Kumbuka**: Urekebishaji huu hauwezi kutatua matatizo yetu mara moja, lakini unaweka msingi muhimu kwa maboresho yenye nguvu yanayokuja! +### 🎯 Ukaguzi wa Kielimu: Kanuni za Kuweka Katikati -## Kutekeleza Masasisho ya Hali Yaliyo Dhibitiwa +**Pumzika na Fikiria**: Umeweka msingi wa usimamizi wa hali ulioko katikati. Hii ni uamuzi muhimu wa usanifu. -Kadri hali yetu inavyokusanywa, hatua inayofuata inahusisha kuanzisha mifumo iliyodhibitiwa ya mabadiliko ya data. Mbinu hii inahakikisha mabadiliko ya hali yanayotabirika na utatuzi rahisi wa matatizo. +**Uhakiki wa Haraka:** +- Je, unaweza kueleza kwa nini kuweka hali katikati kwenye kitu kimoja ni bora zaidi kuliko vigezo vilivyoenea? +- Kitatokea nini kama umetah forget kusasisha kazi kutumia `state.account`? +- Muundo huu hutayarisha vipi msimbo wako kwa vipengele vya hali vya juu? -Kanuni ya msingi inafanana na udhibiti wa trafiki ya anga: badala ya kuruhusu kazi nyingi kubadilisha hali kwa uhuru, tutapanga mabadiliko yote kupitia kazi moja iliyodhibitiwa. Muundo huu unatoa usimamizi wazi wa wakati na jinsi data inavyobadilika. +**Uhusiano wa Kisheria**: Muundo wa katikati uliyojifunza ni msingi wa mifumo ya kisasa kama Redux, Vuex, na React Context. Unajenga ile fikra ya usanifu inayotumika kwenye programu kubwa. -**Usimamizi wa Hali Isiyobadilika:** +**Swali la Changamoto**: Kama unahitaji kuongeza mapendeleo ya mtumiaji (mandhari, lugha), ungeongeza wapi kwenye muundo wa hali? Hii ingeenea vipi? -Tutachukulia kitu chetu cha `state` kama [*kisichobadilika*](https://en.wikipedia.org/wiki/Immutable_object), ikimaanisha hatutabadilisha moja kwa moja. Badala yake, kila mabadiliko yataunda kitu kipya cha hali na data iliyosasishwa. +## Kutekeleza Sasisho za Hali za Kudhibitiwa -Ingawa mbinu hii inaweza kuonekana kuwa isiyo na ufanisi mwanzoni ikilinganishwa na mabadiliko ya moja kwa moja, inatoa faida kubwa kwa utatuzi wa matatizo, upimaji, na kudumisha utabiri wa programu. +Hali yetu ikiwa katikati, hatua inayofuata ni kuunda mbinu za kudhibiti mabadiliko ya data. Njia hii huhakikisha mabadiliko ya hali yanayoweza kutabirika na rahisi kuchunguza tatizo. + +Kanuni kuu ni kama ukaguzi wa usafiri wa anga: badala ya kuruhusu kazi nyingi kubadilisha hali peke yake, tutapeleka mabadiliko yote kupitia kazi moja iliyodhibitiwa. Muundo huu hutoa usimamizi wazi wakati na jinsi data inavyobadilika. + +**Usimamizi wa Hali Isiyobadilika (Immutable):** + +Tutachukulia kitu cha `state` kama [*kisichobadilika*](https://en.wikipedia.org/wiki/Immutable_object), ikimaanisha hatubadilishi moja kwa moja. Badala yake, kila mabadiliko huunda kitu kipya cha hali chenye data iliyosasishwa. + +Ingawa njia hii inaweza kuonekana isiyo na ufanisi ikilinganishwa na mabadiliko ya moja kwa moja, inatoa faida kubwa katika kutatua matatizo, kufanya majaribio, na kudumisha utabiri wa programu. **Faida za usimamizi wa hali isiyobadilika:** | Faida | Maelezo | Athari | |---------|-------------|--------| -| **Utabiri** | Mabadiliko hutokea tu kupitia kazi zilizodhibitiwa | Rahisi kutatua matatizo na kupima | -| **Ufuatiliaji wa Historia** | Kila mabadiliko ya hali huunda kitu kipya | Inawezesha utendakazi wa kurudisha/kufanya upya | -| **Kuzuia Athari za Pembeni** | Hakuna mabadiliko ya bahati mbaya | Huzuia hitilafu za ajabu | -| **Uboreshaji wa Utendaji** | Rahisi kugundua wakati hali imebadilika | Inawezesha masasisho ya UI yenye ufanisi | +| **Utabiri** | Mabadiliko hutokea tu kupitia kazi za kudhibitiwa | Rahisi kutatua matatizo na kufanya majaribio | +| **Ufuatiliaji wa Historia** | Kila mabadiliko wa hali huunda kitu kipya | Inawezesha kipengele cha kubatilisha/kurudisha (undo/redo) | +| **Kuzuia Athari za Pembeni** | Hakuna mabadiliko ya bahati nasibu | Huzuia mende zisizojulikana | +| **Uboreshaji wa Utendaji** | Rahisi kugundua wakati hali hubadilika kweli | Inawezesha sasisho la UI kwa ufanisi | -**Usimamizi wa Hali Isiyobadilika kwa JavaScript na `Object.freeze()`:** +**Ubadilishaji wa JavaScript kwa `Object.freeze()`:** -JavaScript inatoa [`Object.freeze()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze) kuzuia mabadiliko ya vitu: +JavaScript hutoa [`Object.freeze()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze) ili kuzuia mabadiliko ya kitu: ```js const immutableState = Object.freeze({ account: userData }); -// Any attempt to modify immutableState will throw an error +// Jaribio lolote la kubadilisha immutableState litasababisha kosa ``` -**Kufafanua kinachotokea hapa:** -- **Inazuia** uwekaji wa mali moja kwa moja au ufutaji -- **Inatupa** makosa ikiwa majaribio ya mabadiliko yanafanywa +**Kuvunja kile kinachotokea hapa:** +- **Huzuia** kuweka au kufuta mali moja kwa moja +- **Inatupa** makosa ikiwa jaribio la kuibadilisha linatokea - **Inahakikisha** mabadiliko ya hali lazima yapitie kazi zilizodhibitiwa -- **Inaunda** mkataba wazi wa jinsi hali inavyoweza kusasishwa - -> 💡 **Uchambuzi wa Kina**: Jifunze kuhusu tofauti kati ya vitu vya *juu juu* na *vilivyo ndani kabisa* visivyobadilika katika [mdokumentari ya MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze#What_is_shallow_freeze). Kuelewa tofauti hii ni muhimu kwa miundo ya hali ngumu. - +- **Inatengeneza** makubaliano wazi ya jinsi hali inaweza kusasishwa + +> 💡 **Kujifunza Zaidi**: Jifunze tofauti kati ya vitu *isipozidi* na *isipozidi kwa kina* katika [nyaraka za MDN](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze#What_is_shallow_freeze). Kuelewa tofauti hii ni muhimu kwa miundo ya hali tata. + +```mermaid +stateDiagram-v2 + [*] --> StateV1: Hali ya Awali + StateV1 --> StateV2: updateState('account', newData) + StateV2 --> StateV3: updateState('account', anotherUpdate) + StateV3 --> StateV4: updateState('preferences', userSettings) + + note right of StateV1 + Object.freeze() + Haibadiliki + Inaweza kufuatiliwa + end note + + note right of StateV2 + Kitu kipya kimeundwa + Hali ya awali imehifadhiwa + Mabadiliko yanayoweza kutabirika + end note +``` ### Kazi -Tuunde kazi mpya ya `updateState()`: +Tundike kazi mpya ya `updateState()`: ```js function updateState(property, newData) { @@ -204,9 +360,9 @@ function updateState(property, newData) { } ``` -Katika kazi hii, tunaunda kitu kipya cha hali na kunakili data kutoka hali ya awali kwa kutumia [*spread (`...`) operator*](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Spread_syntax#Spread_in_object_literals). Kisha tunabadilisha mali fulani ya kitu cha hali na data mpya kwa kutumia [bracket notation](https://developer.mozilla.org/docs/Web/JavaScript/Guide/Working_with_Objects#Objects_and_properties) `[property]` kwa uwekaji. Hatimaye, tunafungia kitu ili kuzuia mabadiliko kwa kutumia `Object.freeze()`. Kwa sasa tuna mali ya `account` tu iliyohifadhiwa katika hali, lakini kwa mbinu hii unaweza kuongeza mali nyingi unavyohitaji katika hali. +Katika kazi hii, tunaunda kitu kipya cha hali na kunakili data kutoka hali ya awali kwa kutumia [*operator ya spread (`...`)*](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Spread_syntax#Spread_in_object_literals). Kisha tunabadilisha mali fulani ya kitu cha hali na data mpya kwa kutumia alama za mabano `[property]` kwa ajili ya kuweka. Hatimaye, tunalazimisha kitu hicho kwa kutumia `Object.freeze()`. Kwa sasa tunayo property `account` tu huhifadhiwa katika hali, lakini kwa njia hii unaweza kuongeza mali nyingi kama unavyohitaji. -Tutasasisha pia uanzishaji wa `state` kuhakikisha hali ya awali imefungwa pia: +Pia tutajisahihisha kuanzisha kwa `state` ili kuhakikisha hali ya mwanzo inawekwa imara: ```js let state = Object.freeze({ @@ -214,19 +370,19 @@ let state = Object.freeze({ }); ``` -Baada ya hapo, sasisha kazi ya `register` kwa kubadilisha uwekaji wa `state.account = result;` na: +Baada ya hapo, sasisha kazi ya `register` kwa kubadilisha `state.account = result;` na: ```js updateState('account', result); ``` -Fanya vivyo hivyo na kazi ya `login`, ukibadilisha `state.account = data;` na: +Fanya vivyo hivyo kwa kazi ya `login`, badilisha `state.account = data;` na: ```js updateState('account', data); ``` -Sasa tutatumia fursa ya kutatua tatizo la data ya akaunti kutosafishwa mtumiaji anapobofya *Logout*. +Sasa tutatumia fursa hii kurekebisha tatizo la data za akaunti kutafutwa wakati mtumiaji anabonyeza *Logout*. Unda kazi mpya `logout()`: @@ -237,105 +393,123 @@ function logout() { } ``` -Katika `updateDashboard()`, badilisha uelekezaji `return navigate('/login');` na `return logout()`; +Katika `updateDashboard()`, badilisha urejeshaji `return navigate('/login');` na `return logout()`; -Jaribu kusajili akaunti mpya, kutoka na kuingia tena ili kuhakikisha kila kitu bado kinafanya kazi vizuri. +Jaribu kuunda akaunti mpya, kutoka na kuingia tena ili kuhakiki kuwa kila kitu bado kinafanya kazi ipasavyo. -> Kidokezo: unaweza kuangalia mabadiliko yote ya hali kwa kuongeza `console.log(state)` chini ya `updateState()` na kufungua console katika zana za ukuzaji za kivinjari chako. +> Vidokezo: unaweza kutazama mabadiliko yote ya hali kwa kuongeza `console.log(state)` chini ya `updateState()` na kufungua console katika vifaa vya maendeleo vya kivinjari chako. ## Kutekeleza Uhifadhi wa Data -Tatizo la upotevu wa kikao tulilobaini awali linahitaji suluhisho la uhifadhi linalodumisha hali ya mtumiaji katika vikao vya kivinjari. Hii inabadilisha programu yetu kutoka uzoefu wa muda hadi kuwa zana ya kuaminika na ya kitaalamu. +Tatizo la kupotea kwa kikao tuliloligundua awali linahitaji suluhisho la uhifadhi unaoendelea unaoendeleza hali za mtumiaji kati ya vikao vya kivinjari. Hii hubadilisha programu yetu kutoka uzoefu wa muda mfupi hadi chombo kinachotegemewa na kitaalamu. -Fikiria jinsi saa za atomiki zinavyodumisha muda sahihi hata wakati wa kukatika kwa umeme kwa kuhifadhi hali muhimu katika kumbukumbu isiyopotea. Vivyo hivyo, programu za wavuti zinahitaji mifumo ya uhifadhi wa kudumu ili kuhifadhi data muhimu ya mtumiaji katika vikao vya kivinjari na ubadilishaji wa ukurasa. +Fikiria jinsi saa za atomiki zinavyoendelea kuonyesha saa sahihi hata wakati wa kukatika kwa nguvu kwa umeme kwa kuhifadhi hali muhimu katika kumbukumbu isiyohamishika. Vivyo hivyo, programu za wavuti zinahitaji mbinu za uhifadhi endelevu ili kuhifadhi data muhimu za mtumiaji kati ya vikao vya kivinjari na kurudisha ukurasa. -**Maswali ya Kistratejia kwa Uhifadhi wa Data:** +**Maswali ya Mkakati kwa Uhifadhi Data:** Kabla ya kutekeleza uhifadhi, fikiria mambo haya muhimu: -| Swali | Muktadha wa Programu ya Benki | Athari ya Uamuzi | +| Swali | Muktadha wa App ya Benki | Athari ya Uamuzi | |----------|-------------------|----------------| -| **Je, data ni nyeti?** | Mizani ya akaunti, historia ya miamala | Chagua mbinu salama za uhifadhi | -| **Inapaswa kudumu kwa muda gani?** | Hali ya kuingia vs. mapendeleo ya muda ya UI | Chagua muda wa uhifadhi unaofaa | -| **Je, seva inaihitaji?** | Tokeni za uthibitishaji vs. mipangilio ya UI | Amua mahitaji ya kushiriki | +| **Je, data ni nyeti?** | Salio la akaunti, historia ya muamala | Chagua mbinu za usalama za kuhifadhi | +| **Inapaswa kudumu kwa muda gani?** | Hali ya kuingia vs. mapendeleo ya muda ya UI | Chagua muda unaofaa wa kuhifadhi | +| **Je, server inahitaji?** | Vitambulisho vya uthibitishaji vs. mipangilio ya UI | Amua mahitaji ya kushirikiana | -**Chaguo za Uhifadhi wa Kivinjari:** +**Chaguzi za Uhifadhi wa Kivinjari:** -Vivinjari vya kisasa vinatoa mifumo kadhaa ya uhifadhi, kila moja imeundwa kwa matumizi tofauti: +Vivinjari vya kisasa vina taratibu mbalimbali za kuhifadhi, kila moja imetengenezwa kwa matumizi tofauti: -**API za Uhifadhi wa Msingi:** +**API Kuu za Uhifadhi:** -1. **[`localStorage`](https://developer.mozilla.org/docs/Web/API/Window/localStorage)**: Uhifadhi wa [Key/Value](https://en.wikipedia.org/wiki/Key%E2%80%93value_database) wa kudumu - - **Hudumu** data katika vikao vya kivinjari bila kikomo - - **Husalia** hata kivinjari kinapofungwa na kompyuta kuanzishwa upya - - **Imefungwa** kwa kikoa maalum cha tovuti - - **Inafaa** kwa mapendeleo ya mtumiaji na hali za kuingia +1. **[`localStorage`](https://developer.mozilla.org/docs/Web/API/Window/localStorage)**: Uhifadhi wa kudumu wa [Key/Value](https://en.wikipedia.org/wiki/Key%E2%80%93value_database) + - **Hudumu** data kati ya vikao vya kivinjari bila kikomo + - **Huanguka** mara kivinjari kinapoanzishwa upya na kompyuta kuwa boot + - **Inahudumia** eneo maalum la tovuti + - **Inafaa** kwa mapendeleo ya mtumiaji na hali za kujisajili -2. **[`sessionStorage`](https://developer.mozilla.org/docs/Web/API/Window/sessionStorage)**: Uhifadhi wa kikao cha muda - - **Hufanya kazi** sawa na localStorage wakati wa vikao hai - - **Hufutwa** kiotomatiki kivinjari kinapofungwa - - **Inafaa** kwa data ya muda ambayo haipaswi kudumu +2. **[`sessionStorage`](https://developer.mozilla.org/docs/Web/API/Window/sessionStorage)**: Uhifadhi wa muda wa kikao + - **Hufanya kazi** kama vile localStorage wakati wa vikao vinavyotumika + - **Hufuta** moja kwa moja wakati kichupo cha kivinjari kinapofungwa + - **Inafaa** kwa data za muda ambazo hazipaswi kuhifadhiwa -3. **[HTTP Cookies](https://developer.mozilla.org/docs/Web/HTTP/Cookies)**: Uhifadhi unaoshirikiwa na seva - - **Hutumwa** kiotomatiki na kila ombi la seva - - **Inafaa** kwa [uthibitishaji](https://en.wikipedia.org/wiki/Authentication) wa tokeni - - **Imewekewa mipaka** kwa ukubwa na inaweza kuathiri utendaji +3. **[HTTP Cookies](https://developer.mozilla.org/docs/Web/HTTP/Cookies)**: Uhifadhi wa kushirikiana na server + - **Hutumwa moja kwa moja** na kila ombi la server + - **Inafaa** kwa vitambulisho vya [uthibitishaji](https://en.wikipedia.org/wiki/Authentication) + - **Ina kikomo** ukubwa na inaweza kuathiri utendaji -**Mahitaji ya Usawazishaji wa Data:** +**Hitaji la Usanifuaji wa Data:** Zote `localStorage` na `sessionStorage` huhifadhi tu [nyuzi](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String): ```js -// Convert objects to JSON strings for storage +// Geuza vitu kuwa mizstrings ya JSON kwa ajili ya uhifadhi const accountData = { user: 'john', balance: 150 }; localStorage.setItem('account', JSON.stringify(accountData)); -// Parse JSON strings back to objects when retrieving +// Tafsiri mizstrings ya JSON kurudi kuwa vitu wakati wa kuondoa const savedAccount = JSON.parse(localStorage.getItem('account')); ``` -**Kuelewa usawazishaji:** +**Kuelewa usanifuaji:** - **Hubadilisha** vitu vya JavaScript kuwa nyuzi za JSON kwa kutumia [`JSON.stringify()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) -- **Hujenga upya** vitu kutoka JSON kwa kutumia [`JSON.parse()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse) -- **Hushughulikia** vitu vilivyopangwa kwa kina na safu kiotomatiki -- **Hushindwa** kwa kazi, thamani zisizoelezwa, na marejeleo ya mzunguko -> 💡 **Chaguo la Juu**: Kwa programu ngumu za nje ya mtandao zenye hifadhidata kubwa, fikiria kutumia [`IndexedDB` API](https://developer.mozilla.org/docs/Web/API/IndexedDB_API). Inatoa hifadhidata kamili upande wa mteja lakini inahitaji utekelezaji tata zaidi. - -### Kazi: Tekeleza Uhifadhi wa localStorage +- **Huunda upya** vitu kutoka JSON kwa kutumia [`JSON.parse()`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse) +- **Hushughulikia** vitu tata vilivyopangwa na orodha moja kwa moja +- **Hushindwa** kwenye kazi, thamani zisizojulikana, na marejeleo ya duara + +> 💡 **Uchaguo wa Kipekee**: Kwa programu tata zisizo mtandaoni zilizo na seti kubwa za data, angalia [`IndexedDB` API](https://developer.mozilla.org/docs/Web/API/IndexedDB_API). Inatoa hifadhidata kamili upande wa mteja lakini inahitaji utekelezaji tata zaidi. + +```mermaid +quadrantChart + title Chaguzi za Hifadhi ya Kivinjari + x-axis Ugumu Mdogo --> Ugumu Mkubwa + y-axis Muda Mfupi --> Muda Mrefu + + quadrant-1 Zana za Kitaalamu + quadrant-2 Uhifadhi Rahisi + quadrant-3 Hifadhi ya Muda + quadrant-4 Mifumo ya Juu + + localStorage: [0.3, 0.8] + sessionStorage: [0.2, 0.2] + HTTP Cookies: [0.6, 0.7] + IndexedDB: [0.9, 0.9] + Memory Variables: [0.1, 0.1] +``` +### Kazi: Tekeleza Kudumu kwa localStorage -Tutaweka uhifadhi wa kudumu ili watumiaji wabaki wameingia hadi watakapoamua kujiondoa. Tutatumia `localStorage` kuhifadhi data ya akaunti kati ya vikao vya kivinjari. +Tuwekee uhifadhi wa kudumu ili watumiaji wabaki wameingia hadi waondoke waziwazi. Tutatumia `localStorage` kuhifadhi data za akaunti kati ya vikao vya kivinjari. -**Hatua ya 1: Fafanua Usanidi wa Uhifadhi** +**Hatua 1: Eleza Mipangilio ya Uhifadhi** ```js const storageKey = 'savedAccount'; ``` -**Kile ambacho kigezo hiki kinatoa:** -- **Hutengeneza** kitambulisho thabiti kwa data yetu iliyohifadhiwa -- **Huzuia** makosa ya herufi katika marejeleo ya funguo za uhifadhi -- **Hufanya** iwe rahisi kubadilisha ufunguo wa uhifadhi ikiwa inahitajika -- **Hufuata** mbinu bora za msimbo unaoweza kudumishwa +**Hili linalotolewa na tabia hii:** +- **Huzima** kitambulisho thabiti kwa data yetu iliyohifadhiwa +- **Huzuia** makosa ya tahajia katika marejeleo ya ufunguo wa kuhifadhi +- **Hurahisisha** kubadilisha ufunguo wa kuhifadhi inapohitajika +- **Hufuata** mbinu bora za kuandika msimbo unaotunzwa -**Hatua ya 2: Ongeza Uhifadhi wa Kiotomatiki** +**Hatua 2: Ongeza Kudumu Moja kwa Moja** -Ongeza mstari huu mwishoni mwa kazi ya `updateState()`: +Ongeza mstari huu mwishoni mwa kazi `updateState()`: ```js localStorage.setItem(storageKey, JSON.stringify(state.account)); ``` -**Kufafanua kinachotokea hapa:** -- **Hubadilisha** kitu cha akaunti kuwa kamba ya JSON kwa uhifadhi -- **Huokoa** data kwa kutumia ufunguo wetu thabiti wa uhifadhi -- **Hutekeleza** kiotomatiki kila mabadiliko ya hali yanapotokea -- **Hakikisha** data iliyohifadhiwa inalingana na hali ya sasa +**Kuvunja kile kinachotokea hapa:** +- **Hubadilisha** kitu cha akaunti kuwa nyuzi ya JSON kwa kuhifadhi +- **Huinua** data kwa kutumia ufunguo wetu wa kuhifadhi thabiti +- **Hutekelezwa** moja kwa moja kila mara hali inapo badilika +- **Hakikisha** data iliyohifadhiwa inaendana kila wakati na hali ya sasa -> 💡 **Faida ya Usanifu**: Kwa sababu tulizingatia mabadiliko yote ya hali kupitia `updateState()`, kuongeza uhifadhi kulihitaji mstari mmoja tu wa msimbo. Hii inaonyesha nguvu ya maamuzi mazuri ya usanifu! +> 💡 **Faida ya Mimariko**: Kwa sababu tulilenga masasisho yote ya hali kupitia `updateState()`, kuongeza kudumu kulihitaji mstari mmoja tu wa msimbo. Hii inaonyesha nguvu ya maamuzi mazuri ya miundo! -**Hatua ya 3: Rudisha Hali Wakati Programu Inapopakia** +**Hatua 3: Rudisha Hali Unapoanzisha App** -Tengeneza kazi ya uanzishaji ili kurudisha data iliyohifadhiwa: +Tengeneza kazi ya kuanzisha ili kurudisha data iliyohifadhiwa: ```js function init() { @@ -344,7 +518,7 @@ function init() { updateState('account', JSON.parse(savedAccount)); } - // Our previous initialization code + // Msimbo wetu wa awali wa kuanzisha window.onpopstate = () => updateRoute(); updateRoute(); } @@ -352,49 +526,63 @@ function init() { init(); ``` -**Kuelewa mchakato wa uanzishaji:** -- **Hurejesha** data yoyote ya akaunti iliyohifadhiwa awali kutoka localStorage -- **Huchambua** kamba ya JSON kurudi kuwa kitu cha JavaScript -- **Husasa** hali kwa kutumia kazi yetu ya kusasisha iliyodhibitiwa -- **Hurudisha** kikao cha mtumiaji kiotomatiki wakati ukurasa unapopakia -- **Hutekeleza** kabla ya masasisho ya njia ili kuhakikisha hali inapatikana +**Kuelewa mchakato wa kuanzisha:** +- **Inapokea** data yoyote ya akaunti iliyohifadhiwa awali kutoka localStorage +- **Inatambua** nyuzi za JSON kurudisha tena kuwa kitu cha JavaScript +- **Inasasisha** hali kwa kutumia kazi yetu ya kusawazisha +- **Inarejesha** kikao cha mtumiaji moja kwa moja anapopakua ukurasa +- **Inatekelezwa** kabla ya masasisho ya njia ili kuhakikisha hali inapatikana -**Hatua ya 4: Boresha Njia ya Kawaida** +**Hatua 4: Boresha Njia ya Chaguo-msingi** -Sasisha njia ya kawaida ili kutumia uhifadhi: +Sasisha njia ya chaguo-msingi ili kutumia faida ya kudumu: Katika `updateRoute()`, badilisha: ```js -// Replace: return navigate('/login'); +// Badilisha: return navigate('/login'); return navigate('/dashboard'); ``` -**Kwa nini mabadiliko haya yana mantiki:** -- **Hutumia** mfumo wetu mpya wa uhifadhi kwa ufanisi -- **Huruhusu** dashibodi kushughulikia ukaguzi wa uthibitisho -- **Huelekeza** kiotomatiki kwenye kuingia ikiwa hakuna kikao kilichohifadhiwa -- **Hutengeneza** uzoefu wa mtumiaji usio na mshono +**Kwa nini mabadiliko haya yanaeleweka:** +- **Yatumia** mfumo wetu mpya wa kudumu kwa ufanisi +- **Inaruhusu** dashibodi kushughulikia ukaguzi wa uthibitishaji +- **Huelekeza** kwa kuingia moja kwa moja kama hakuna kikao kilichohifadhiwa +- **Inaunda** uzoefu mzuri zaidi kwa mtumiaji -**Kupima Utekelezaji Wako:** +**Jaribu Utekelezaji Wako:** -1. Ingia kwenye programu yako ya benki -2. Fanya upya ukurasa wa kivinjari -3. Thibitisha unakaa umeingia na uko kwenye dashibodi +1. Ingia kwenye app yako ya benki +2. Fanyia upya ukurasa wa kivinjari +3. Thibitisha bado uko umeingia na uko kwenye dashibodi 4. Funga na fungua tena kivinjari chako -5. Rudi kwenye programu yako na thibitisha bado uko umeingia +5. Rudi kwenye app yako na hakikisha bado umeingia + +🎉 **Mafanikio Yamepatikana**: Umefanikiwa kutekeleza usimamizi wa hali ya kudumu! App yako sasa hufanya kazi kama programu ya mtandao ya kitaalamu. -🎉 **Ufanisi Umefikiwa**: Umefanikiwa kutekeleza usimamizi wa hali ya kudumu! Programu yako sasa inafanya kazi kama programu ya kitaalamu ya wavuti. +### 🎯 Chunguzi la Kifundisho: Mimariko ya Kudumu -## Kuweka Mizani Kati ya Uhifadhi na Ufreshi wa Data +**Uelewa wa Mimariko**: Umetekeleza safu ya kudumu ya kisasa inayobadilisha uzoefu wa mtumiaji na urahisi wa usimamizi wa data. -Mfumo wetu wa uhifadhi unadumisha vikao vya mtumiaji kwa mafanikio, lakini unaleta changamoto mpya: uchakavu wa data. Wakati watumiaji au programu nyingi zinapobadilisha data sawa ya seva, taarifa iliyohifadhiwa ndani inakuwa ya zamani. +**Mafundisho Muhimu yaliyopatikana**: +- **Usanifuaji wa JSON**: Kubadilisha vitu tata kuwa nyuzi za kuhifadhi +- **Mlinganyo Moja kwa Moja**: Mabadiliko ya hali husababisha uhifadhi wa kudumu +- **Urekebishaji wa Kikao**: Programu zinaweza kurudisha mtazamo wa mtumiaji baada ya kuingiliwa +- **Kudumu Kwenye Kitu Kimoja**: Kazi moja ya masasisho hushughulikia sehemu zote za uhifadhi -Hali hii inafanana na mabaharia wa Viking waliotegemea ramani za nyota zilizohifadhiwa na uchunguzi wa nyota wa sasa. Ramani zilitoa uthabiti, lakini mabaharia walihitaji uchunguzi mpya ili kuzingatia hali zinazobadilika. Vivyo hivyo, programu yetu inahitaji hali ya mtumiaji iliyohifadhiwa na data ya sasa ya seva. +**Muunganisho wa Sekta**: Mfumo huu wa kudumu ni msingi wa Progressive Web Apps (PWAs), programu za offline kwanza, na uzoefu wa mtandao wa kisasa wa simu. Unajenga uwezo wa kiwango cha uzalishaji. + +**Swali la Tafakari**: Utabadilishaje mfumo huu kushughulikia akaunti nyingi za mtumiaji kwenye kifaa kimoja? Fikiria mambo ya faragha na usalama. + +## Kuweka Mizani kati ya Kudumu na Ufreshi wa Data + +Mfumo wetu wa kudumu umetunza vikao vya watumiaji kwa mafanikio, lakini umeleta changamoto mpya: data ya zamani. Wakati watumiaji wengi au programu hubadilisha data sawa ya server, taarifa zilizogandishwa haziwezi kusasishwa. + +Hali hii ni kama wavaazi wa Viking walivyotegemea ramani za nyota zilizo hifadhiwa pamoja na maangalia ya nyota wa sasa. Ramani zilihakikisha uthabiti, lakini wapiga ramani walihitaji maangalia mapya ili kuzingatia hali zinabadilika. Vivyo hivyo, programu yetu inahitaji hali ya kudumu ya mtumiaji na data ya sasa ya server. **🧪 Kugundua Tatizo la Ufreshi wa Data:** -1. Ingia kwenye dashibodi ukitumia akaunti ya `test` -2. Endesha amri hii kwenye terminal ili kuiga muamala kutoka chanzo kingine: +1. Ingia kwenye dashibodi kwa kutumia akaunti ya `test` +2. Endesha amri hii kwenye terminal kuiga muamala kutoka chanzo kingine: ```sh curl --request POST \ @@ -403,31 +591,47 @@ curl --request POST \ http://localhost:5000/api/accounts/test/transactions ``` -3. Fanya upya ukurasa wa dashibodi yako kwenye kivinjari -4. Angalia ikiwa unaona muamala mpya +3. Fanyia upya ukurasa wako wa dashibodi kwenye kivinjari +4. Angalia kama unaona muamala mpya -**Kile ambacho jaribio hili linaonyesha:** -- **Inaonyesha** jinsi localStorage inaweza kuwa "chakavu" (ya zamani) -- **Inaiga** hali halisi ambapo mabadiliko ya data hutokea nje ya programu yako -- **Inafichua** mvutano kati ya uhifadhi na ufreshi wa data +**Kile jaribio hili linaonyesha:** +- **Inaonesha** jinsi uhifadhi wa ndani unaweza kuwa "zamani" (hauko sawa) +- **Inaigiza** hali halisi ambapo data hubadilika nje ya app yako +- **Inafichua** mgogoro kati ya kudumu na ufreshi wa data -**Changamoto ya Uchakavu wa Data:** +**Changamoto ya Data Zamani:** | Tatizo | Sababu | Athari kwa Mtumiaji | -|--------|--------|---------------------| -| **Data Chakavu** | localStorage haimaliziki kiotomatiki | Watumiaji wanaona taarifa za zamani | -| **Mabadiliko ya Seva** | Programu/Watumiaji wengine hubadilisha data sawa | Maoni yasiyo thabiti kati ya majukwaa | -| **Akiba vs. Uhalisia** | Akiba ya ndani haifanani na hali ya seva | Uzoefu duni wa mtumiaji na mkanganyiko | +|---------|-------|-------------| +| **Data Zamani** | localStorage haijagiika kiotomatiki | Watumiaji wanaona taarifa za zamani | +| **Mabadiliko ya Server** | Programu/watumiaji wengine hubadilisha data moja | Mtazamo usio sambamba katika majukwaa | +| **Cache vs. Ukweli** | Cache ya ndani haifanani na hali ya server | Uzoefu mbaya wa mtumiaji na mkanganyiko | **Mkakati wa Suluhisho:** -Tutatekeleza muundo wa "ufreshi wakati wa kupakia" ambao unadumisha faida za uhifadhi huku ukihakikisha usahihi wa data. - -### Kazi: Tekeleza Mfumo wa Ufreshi wa Data +Tutatekeleza mfumo wa "kusasisha kwa upakiaji" unaowezesha faida za udumu na uhifadhi wa data safi. Njia hii huhakikisha uzoefu laini wa mtumiaji huku ikihakikisha usahihi wa data. + +```mermaid +sequenceDiagram + participant U as Mtumiaji + participant A as App + participant L as localStorage + participant S as Seva + + U->>A: Fungua app + A->>L: Pakia hali iliyohifadhiwa + L-->>A: Rudisha data iliyohifadhiwa + A->>U: Onyesha UI mara moja + A->>S: Pata data safi + S-->>A: Rudisha data ya sasa + A->>L: Sasisha hifadhidata + A->>U: Sasisha UI na data safi +``` +### Kazi: Tekeleza Mfumo wa Kusasisha Data -Tutatengeneza mfumo ambao unaleta kiotomatiki data mpya kutoka kwa seva huku ukidumisha faida za usimamizi wetu wa hali ya kudumu. +Tutaunda mfumo unaopakua data safi kutoka server pamoja na kutunza faida za usimamizi wa hali ya kudumu. -**Hatua ya 1: Tengeneza Kisasa cha Data ya Akaunti** +**Hatua 1: Tengeneza Kisahihishaji cha Data ya Akaunti** ```js async function updateAccountData() { @@ -446,14 +650,14 @@ async function updateAccountData() { ``` **Kuelewa mantiki ya kazi hii:** -- **Hukagua** ikiwa mtumiaji ameingia (state.account ipo) -- **Huelekeza** kwenye kujiondoa ikiwa hakuna kikao halali kilichopatikana -- **Huleta** data mpya ya akaunti kutoka kwa seva kwa kutumia kazi ya `getAccount()` iliyopo -- **Hushughulikia** makosa ya seva kwa kujiondoa vikao visivyo halali -- **Husasa** hali na data mpya kwa kutumia mfumo wetu wa kusasisha uliodhibitiwa -- **Husababisha** uhifadhi wa localStorage kiotomatiki kupitia kazi ya `updateState()` +- **Hukagua** kama mtumiaji anaingia sasa (state.account ipo) +- **Hupeleka** mtu aondoke ikiwa hakuna kikao halali +- **Huleta** data safi ya akaunti kutoka server kwa kutumia kazi `getAccount()` +- **Hushughulikia** makosa ya server kwa kuondoa vikao visivyo halali +- **Huisasisha** hali kwa data safi kwa kutumia mfumo wetu wa masasisho +- **Huisababishia** uhifadhi wa moja kwa moja wa localStorage kupitia `updateState()` -**Hatua ya 2: Tengeneza Kishughulikia Ufreshi wa Dashibodi** +**Hatua 2: Tengeneza Kishughulikiaji cha Kusasisha Dashibodi** ```js async function refresh() { @@ -462,15 +666,15 @@ async function refresh() { } ``` -**Kile ambacho kazi hii ya ufreshi inakamilisha:** -- **Husimamia** mchakato wa ufreshi wa data na masasisho ya UI -- **Husubiri** data mpya ipakie kabla ya kusasisha onyesho -- **Hakikisha** dashibodi inaonyesha taarifa za sasa zaidi -- **Hudumisha** mgawanyo safi kati ya usimamizi wa data na masasisho ya UI +**Kile kazi hii ya kusasisha inafanya:** +- **Iratibu** mchakato wa kusasisha data na masasisho ya UI +- **Inasubiri** data safi ipakuliwe kabla ya kusasisha onyesho +- **Inahakikisha** dashibodi inaonesha taarifa za hivi sasa zaidi +- **Inazuia** ufungamano kati ya usimamizi wa data na masasisho ya UI -**Hatua ya 3: Jumuisha na Mfumo wa Njia** +**Hatua 3: Unganisha na Mfumo wa Njia** -Sasisha usanidi wa njia zako ili kusababisha ufreshi kiotomatiki: +Sasisha usanidi wa njia yako ili kuanzisha kusasisha moja kwa moja: ```js const routes = { @@ -479,71 +683,126 @@ const routes = { }; ``` -**Jinsi ujumuishaji huu unavyofanya kazi:** -- **Hutekeleza** kazi ya ufreshi kila wakati njia ya dashibodi inapopakia -- **Hakikisha** data mpya inaonyeshwa kila wakati watumiaji wanapohamia kwenye dashibodi -- **Hudumisha** muundo wa njia uliopo huku ukiongeza ufreshi wa data -- **Hutoa** muundo thabiti wa uanzishaji maalum wa njia - -**Kupima Mfumo Wako wa Ufreshi wa Data:** - -1. Ingia kwenye programu yako ya benki -2. Endesha amri ya curl kutoka awali ili kuunda muamala mpya -3. Fanya upya ukurasa wa dashibodi yako au nenda mbali na urudi -4. Thibitisha kuwa muamala mpya unaonekana mara moja +**Jinsi muunganisho huu unavyofanya kazi:** +- **Hutekeleza** kazi ya kusasisha kila mara njia ya dashibodi inapopakuliwa +- **Hakikisha** data safi daima inaonyeshwa watumiaji wanapotembelea dashibodi +- **Inatunza** muundo wa njia uliopo huku ikiongeza ufreshi wa data +- **Inatoa** mfano thabiti wa kuanzisha sehemu maalum za njia + +**Jaribu Mfumo wako wa Kusasisha Data:** + +1. Ingia kwenye app yako ya benki +2. Endesha amri ya curl tuliyotumia awali kuunda muamala mpya +3. Fanyia upya ukurasa wa dashibodi au tembelea mbali na rudi +4. Thibitisha muamala mpya unaonekana mara moja + +🎉 **Mizani Bora Imepatikana**: App yako sasa inachanganya uzoefu laini wa hali ya kudumu pamoja na usahihi wa data safi ya server! + +## 📈 Ratiba Yako ya Ujuzi wa Usimamizi wa Hali + +```mermaid +timeline + title Safari ya Usimamizi wa Hali ya Kitaalamu + + section Kutambua Tatizo + State Issues Diagnosis + : Tambua matatizo ya kupoteza kikao + : Elewa matatizo ya masasisho yaliyosambazwa + : Tambua mahitaji ya usanifu + + section Msingi wa Usanifu + Centralized State Design + : Tengeneza vitu vya hali vilivyoundwa pamoja + : Tekeleza mifumo ya masasisho yenye udhibiti + : Anzisha kanuni zisizobadilika + + Predictable Updates + : Jifunze matumizi ya Object.freeze() + : Jenga mifumo inayorahisisha utambuzi wa makosa + : Tengeneza mifano inayoweza kupanuka + + section Ustadi wa Kuhifadhi + localStorage Integration + : Shughulikia usindikaji wa JSON + : Tekeleza usawazishaji wa moja kwa moja + : Tengeneza uendelevu wa kikao + + Data Freshness Balance + : Shughulikia changamoto za upungufu wa data + : Jenga mifumo ya kuhuisha data + : Boresha utendakazi dhidi ya usahihi + + section Mifumo ya Kitaalamu + Production-Ready Systems + : Tekeleza usimamizi wa makosa + : Tengeneza usanifu unaoweza kudumishwa + : Fuata mbinu bora za sekta + + Advanced Capabilities + : Kuwa tayari kwa ujumuishwaji wa mfumo + : Kuwa tayari kwa mahitaji magumu ya hali + : Msingi wa vipengele vya wakati halisi +``` +**🎓 Hatua ya Kuandikishwa**: Umefanikiwa kujenga mfumo kamili wa usimamizi wa hali kwa kutumia kanuni zinazotumika katika Redux, Vuex, na maktaba zingine za hali wa kitaalamu. Mifumo hii hukua kutoka programu rahisi hadi programu za viwanda. -🎉 **Mizani Kamili Imepatikana**: Programu yako sasa inachanganya uzoefu laini wa hali ya kudumu na usahihi wa data mpya ya seva! +**🔄 Uwezo wa Ngazi Inayofuata**: +- Tayari kwa ujuzi wa mifumo ya usimamizi wa hali (Redux, Zustand, Pinia) +- Tayari kutekeleza vipengele vya wakati halisi kwa kutumia WebSockets +- Umejifunza kujenga Progressive Web Apps zinazoanza offline kwanza +- Msingi umewekwa kwa mifumo ya hali ya juu kama mashine za hali na wachunguzi -## Changamoto ya Wakala wa GitHub Copilot 🚀 +## Changamoto ya GitHub Copilot Agent 🚀 -Tumia hali ya Wakala kukamilisha changamoto ifuatayo: +Tumia hali ya Agent kukamilisha changamoto ifuatayo: -**Maelezo:** Tekeleza mfumo wa kina wa usimamizi wa hali na utendakazi wa kurudisha/kufanya upya kwa programu ya benki. Changamoto hii itakusaidia kufanya mazoezi ya dhana za hali ya juu za usimamizi wa hali ikiwa ni pamoja na ufuatiliaji wa historia ya hali, masasisho yasiyobadilika, na usawazishaji wa kiolesura cha mtumiaji. +**Maelezo:** Tekeleza mfumo kamili wa usimamizi wa hali unaojumuisha uwezo wa kufuta/kurudi nyuma kwa mabadiliko kwa app ya benki. Changamoto hii itakuwezesha kufanya mazoezi ya dhana za hali za juu za usimamizi wakiwemo rekodi ya historia ya hali, masasisho yasiyobadilika, na ulinganifu wa kiolesura cha mtumiaji. -**Kichocheo:** Tengeneza mfumo wa hali ulioboreshwa unaojumuisha: 1) Kundi la historia ya hali linalofuatilia hali zote za awali, 2) Kazi za kurudisha na kufanya upya zinazoweza kurudi kwenye hali za awali, 3) Vitufe vya UI vya operesheni za kurudisha/kufanya upya kwenye dashibodi, 4) Kikomo cha historia cha hali 10 ili kuzuia masuala ya kumbukumbu, na 5) Usafishaji sahihi wa historia wakati mtumiaji anajiondoa. Hakikisha utendakazi wa kurudisha/kufanya upya unafanya kazi na mabadiliko ya salio la akaunti na unadumu kati ya upya wa kivinjari. +**Onyesho:** Tengeneza mfumo ulioimarishwa wa usimamizi wa hali unaojumuisha: 1) safu ya historia ya hali inayofuatilia hali zote zilizopita, 2) kazi za kufuta na kutekeleza tena zinazoweza kurudisha hali zilizopita, 3) vifungo vya UI kwa operesheni za ufuta/tekeleza tena kwenye dashibodi, 4) kikomo cha historia cha hali 10 ili kuzuia matatizo ya kumbukumbu, na 5) usafishaji wa historia baada ya mtumiaji kuondoka. Hakikisha utendaji wa ufuta/tekeleza tena unafanya kazi na mabadiliko ya salio la akaunti na unadumu hata baada ya kivinjari kufanywa upya. -Jifunze zaidi kuhusu [hali ya wakala](https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode) hapa. +Jifunze zaidi kuhusu [agent mode](https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode) hapa. ## 🚀 Changamoto: Uboreshaji wa Uhifadhi -Utekelezaji wako sasa unashughulikia vikao vya mtumiaji, ufreshi wa data, na usimamizi wa hali kwa ufanisi. Hata hivyo, fikiria ikiwa mbinu yetu ya sasa inasawazisha kwa ufanisi uhifadhi na utendakazi. +Utekelezaji wako sasa unashughulikia vikao vya watumiaji, kusasisha data, na usimamizi wa hali kwa ufanisi. Hata hivyo, fikiria kama njia yetu ya sasa inalinganisha vyema ufanisi wa uhifadhi na kazi. -Kama mabingwa wa chess wanaotofautisha kati ya vipande muhimu na vigae vinavyoweza kutolewa, usimamizi mzuri wa hali unahitaji kutambua data gani lazima ihifadhiwe dhidi ya data gani inapaswa kuwa mpya kila wakati kutoka kwa seva. +Kama mabingwa wa chess wanaotofautisha kati ya vipande muhimu na askari wa kurudisha mithili, usimamizi mzuri wa hali unahitaji kubaini ni data gani lazima idumu na ni ipi inapaswa kila wakati kuwa mpya kutoka server. **Uchambuzi wa Uboreshaji:** -Tathmini utekelezaji wako wa localStorage wa sasa na fikiria maswali haya ya kimkakati: -- Ni taarifa gani ya chini inayohitajika kudumisha uthibitisho wa mtumiaji? -- Ni data gani hubadilika mara kwa mara kiasi kwamba uhifadhi wa ndani hauna faida? -- Uboreshaji wa uhifadhi unaweza kuboresha utendakazi bila kupunguza uzoefu wa mtumiaji? +Tathmini utekelezaji wako wa localStorage sasa na fikiria maswali haya ya kimkakati: +- Ni taarifa ngapi minimal zinazohitajika kudumisha uthibitishaji wa mtumiaji? +- Ni data gani hubadilika mara kwa mara kiasi ambayo kuhifadhiwa mara nyingi ndani haileti faida? +- Je, uboreshaji wa uhifadhi unaweza kuboresha utendaji bila kupunguza uzoefu wa mtumiaji? -Aina hii ya uchambuzi wa usanifu inawatofautisha watengenezaji wenye uzoefu wanaozingatia utendakazi na ufanisi katika suluhisho zao. +Aina hii ya uchambuzi wa miundo hutoa tofauti kwa watengenezaji wenye uzoefu wanaofikiria kazi na ufanisi kwa suluhisho zao. **Mkakati wa Utekelezaji:** -- **Tambua** data muhimu ambayo lazima ihifadhiwe (labda tu kitambulisho cha mtumiaji) -- **Badilisha** utekelezaji wako wa localStorage ili kuhifadhi tu data muhimu ya kikao -- **Hakikisha** data mpya inapakiwa kila wakati kutoka kwa seva wakati wa ziara za dashibodi -- **Jaribu** kwamba mbinu yako iliyoboreshwa inadumisha uzoefu sawa wa mtumiaji +- **Baini** data muhimu kabisa inayohitaji kudumu (labda ni kitambulisho cha mtumiaji tu) +- **Badilisha** utekelezaji wako wa localStorage kuhifadhi tu data muhimu ya kikao +- **Hakikisha** data safi kila wakati inapakia kutoka server unapotembelea dashibodi +- **Jaribu** kuwa njia yako iliyoboreshwa bado inatunza uzoefu mmoja wa mtumiaji -**Fikra ya Juu:** -- **Linganisheni** faida na hasara kati ya kuhifadhi data kamili ya akaunti dhidi ya tokeni za uthibitisho pekee -- **Andika** maamuzi yako na mantiki kwa wanachama wa timu ya baadaye +**Kuzingatia kwa Juu:** +- **Linganisho** la manufaa na hasara kati ya kuhifadhi data kamili ya akaunti dhidi ya vitambulisho vya uthibitishaji pekee +- **Andika** maamuzi yako na sababu zako kwa wanateam wa baadaye -Changamoto hii itakusaidia kufikiria kama mtengenezaji wa kitaalamu anayezingatia uzoefu wa mtumiaji na ufanisi wa programu. Chukua muda wako kujaribu mbinu tofauti! +Changamoto hii itakusaidia kufikiri kama mtaalamu anayeangalia uzoefu wa mtumiaji na ufanisi wa programu. Chukua muda wako kujaribu mbinu mbalimbali! -## Jaribio la Baada ya Somo +## Mtihani wa Baada ya Mhadhara -[Jaribio la baada ya somo](https://ff-quizzes.netlify.app/web/quiz/48) +[Post-lecture quiz](https://ff-quizzes.netlify.app/web/quiz/48) -## Kazi +## Kazi ya Nyumbani -[Tekeleza "Ongeza muamala" dirisha](assignment.md) +[Implement "Add transaction" dialog](assignment.md) -Hapa kuna mfano wa matokeo baada ya kukamilisha kazi: +Huu ni mfano wa matokeo baada ya kukamilisha kazi: -![Picha inayoonyesha mfano wa dirisha la "Ongeza muamala"](../../../../translated_images/dialog.93bba104afeb79f12f65ebf8f521c5d64e179c40b791c49c242cf15f7e7fab15.sw.png) +![Screenshot showing an example "Add transaction" dialog](../../../../translated_images/dialog.93bba104afeb79f1.sw.png) --- -**Kanusho**: -Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kwa usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file + +**Hapati**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Wakati tunajitahidi kwa usahihi, tafadhali fahamu kwamba tafsiri zilizotengenezwa kwa mashine zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake ya asili inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa za muhimu sana, tafsiri ya kitaalamu inayotolewa na watu inashauriwa. Hatubeba uwajibikaji wowote kwa kutoelewana au tafsiri potofu zinazotokana na matumizi ya tafsiri hii. + \ No newline at end of file diff --git a/translations/sw/7-bank-project/4-state-management/assignment.md b/translations/sw/7-bank-project/4-state-management/assignment.md index 916b1abe9..0f481d87e 100644 --- a/translations/sw/7-bank-project/4-state-management/assignment.md +++ b/translations/sw/7-bank-project/4-state-management/assignment.md @@ -112,7 +112,7 @@ Rejelea [nyaraka za API ya seva](../api/README.md) kwa: **Matokeo Yanayotarajiwa:** Baada ya kukamilisha kazi hii, programu yako ya benki inapaswa kuwa na kipengele kamili cha "Ongeza Muamala" ambacho kinaonekana na kinafanya kazi kitaalamu: -![Picha ya skrini inayoonyesha mfano wa dialogi ya "Ongeza muamala"](../../../../translated_images/dialog.93bba104afeb79f12f65ebf8f521c5d64e179c40b791c49c242cf15f7e7fab15.sw.png) +![Picha ya skrini inayoonyesha mfano wa dialogi ya "Ongeza muamala"](../../../../translated_images/dialog.93bba104afeb79f1.sw.png) ## Kupima Utekelezaji Wako diff --git a/translations/sw/7-bank-project/README.md b/translations/sw/7-bank-project/README.md index cbc0c145f..a6e4c04a8 100644 --- a/translations/sw/7-bank-project/README.md +++ b/translations/sw/7-bank-project/README.md @@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA: Katika mradi huu, utajifunza jinsi ya kujenga benki ya kufikirika. Masomo haya yanajumuisha maelekezo ya jinsi ya kupanga programu ya wavuti na kutoa njia, kujenga fomu, kusimamia hali (state), na kupata data kutoka kwa API ambayo unaweza kutumia kupata data ya benki. -| ![Screen1](../../../translated_images/screen1.baccbba0f1f93364672eb250d2fbd21574bb1caf79a2155022dc098a741cbdfe.sw.png) | ![Screen2](../../../translated_images/screen2.123c82a831a1d14ab2061994be2fa5de9cec1ce651047217d326d4773a6348e4.sw.png) | +| ![Screen1](../../../translated_images/screen1.baccbba0f1f93364.sw.png) | ![Screen2](../../../translated_images/screen2.123c82a831a1d14a.sw.png) | |--------------------------------|--------------------------------| ## Masomo diff --git a/translations/sw/8-code-editor/1-using-a-code-editor/README.md b/translations/sw/8-code-editor/1-using-a-code-editor/README.md index d8ee82abc..be20e5862 100644 --- a/translations/sw/8-code-editor/1-using-a-code-editor/README.md +++ b/translations/sw/8-code-editor/1-using-a-code-editor/README.md @@ -1,372 +1,639 @@ -# Kutumia Mhariri wa Nambari: Kumiliki VSCode.dev +# Kutumia Mhariri wa Msimbo: Kuweza VSCode.dev -Unakumbuka kwenye *The Matrix* wakati Neo alihitaji kuunganishwa na kompyuta kubwa ili kuingia kwenye ulimwengu wa kidijitali? Zana za maendeleo ya mtandao za leo ni kinyume kabisa – uwezo wa ajabu unaopatikana kutoka popote. VSCode.dev ni mhariri wa nambari unaotegemea kivinjari ambao huleta zana za maendeleo ya kitaalamu kwenye kifaa chochote chenye muunganisho wa intaneti. +Kumbuka katika *The Matrix* pale Neo alipotakiwa kuunganisha kwenye kituo kikubwa cha kompyuta ili kufikia dunia ya kidijitali? Vifaa vya maendeleo ya wavuti vya leo ni hadithi kinyume – uwezo mkubwa sana unaopatikana kutoka mahali popote. VSCode.dev ni mhariri wa msimbo unaotumia kivinjari ambao huleta vifaa vya maendeleo ya kitaalamu kwa kifaa chochote kilicho na muunganisho wa intaneti. -Kama vile mashine ya uchapishaji ilivyofanya vitabu kupatikana kwa kila mtu, si kwa waandishi tu katika monasteri, VSCode.dev inafanya coding kuwa ya kila mtu. Unaweza kufanya kazi kwenye miradi kutoka kwenye kompyuta ya maktaba, maabara ya shule, au popote unapoingia kwenye kivinjari. Hakuna usakinishaji, hakuna vikwazo vya "Nahitaji mpangilio wangu maalum". +Kama vile mashine ya kuchapisha ilivyofanya vitabu kupatikana kwa kila mtu, siwaandishi tu katika monastari, VSCode.dev huleta usawa wa upatikanaji wa kuandika msimbo. Unaweza kufanya kazi kwenye miradi kutoka kwenye kompyuta ya maktaba, maabara ya shule, au mahali popote ambapo unapata kivinjari. Hakuna usakinishaji, hakuna vizingiti vya "nahitaji usanidi wangu maalum". -Mwisho wa somo hili, utaelewa jinsi ya kuzunguka VSCode.dev, kufungua hifadhi za GitHub moja kwa moja kwenye kivinjari chako, na kutumia Git kwa udhibiti wa toleo – ujuzi ambao watengenezaji wa kitaalamu hutegemea kila siku. +Mwisho wa somo hili, utakuwa umeelewa jinsi ya kuvinjari VSCode.dev, kufungua hifadhidata za GitHub moja kwa moja kwenye kivinjari chako, na kutumia Git kwa ajili ya udhibiti wa matoleo – ujuzi wote ambao wataalamu wa maendeleo hutumia kila siku. -## Utakachojifunza +## ⚡ Unachoweza Kufanya kwa Dakika 5 Zijazo -Baada ya kupitia somo hili pamoja, utaweza: +**Njia ya Kuanza Haraka kwa Waendelezaji Wenye Muda Mfupi** -- Kuzunguka VSCode.dev kama ni nyumbani kwako – ukipata kila unachohitaji bila kupotea -- Kufungua hifadhi yoyote ya GitHub kwenye kivinjari chako na kuanza kuhariri mara moja (hii ni ya kichawi sana!) -- Kutumia Git kufuatilia mabadiliko yako na kuhifadhi maendeleo yako kama mtaalamu -- Kuongeza nguvu kwa mhariri wako kwa viendelezi vinavyofanya coding kuwa haraka na ya kufurahisha -- Kuunda na kupanga faili za miradi kwa kujiamini +```mermaid +flowchart LR + A[⚡ Dakika 5] --> B[Tembelea vscode.dev] + B --> C[Unganisha akaunti ya GitHub] + C --> D[Fungua hifadhi yoyote] + D --> E[Anza kuhariri mara moja] +``` +- **Dakika 1**: Nenda kwenye [vscode.dev](https://vscode.dev) - hakuna usakinishaji unaohitajika +- **Dakika 2**: Ingia kwa kutumia GitHub kuungana na hifadhidata zako +- **Dakika 3**: Jaribu mbinu ya URL: badilisha `github.com` kuwa `vscode.dev/github` katika URL yoyote ya hifadhidata +- **Dakika 4**: Tengeneza faili jipya na uangalie jinsi mwangaza wa sintaksia unavyofanya kazi moja kwa moja +- **Dakika 5**: Fanya mabadiliko na yafanye kuwasilishwa kupitia paneli ya Udhibiti wa Chanzo + +**URL ya Jaribio la Haraka**: +``` +# Transform this: +github.com/microsoft/Web-Dev-For-Beginners + +# Into this: +vscode.dev/github/microsoft/Web-Dev-For-Beginners +``` + +**Kwa Nini Hii ni Muhimu**: Kwa dakika 5 tu, utapata uhuru wa kuandika msimbo mahali popote ukiwa na vifaa vya kitaalamu. Hii ni mustakabali wa maendeleo - inapatikana, yenye nguvu, na ya mara moja. + +## 🗺️ Safari Yako ya Kujifunza Kupitia Maendeleo ya Wingu + +```mermaid +journey + title Kutoka Usanidi wa Mitaa hadi Utaalamu wa Maendeleo ya Wingu + section Kuelewa Jukwaa + Gundua uhariri wa mtandao: 4: You + Unganisha na mfumo wa GitHub: 6: You + Shuhudia urambazaji wa kiolesura: 7: You + section Ujuzi wa Usimamizi wa Faili + Tengeneza na panga faili: 5: You + Hariri kwa muonekano wa sintaksia: 7: You + Pita kwenye miundo ya mradi: 8: You + section Utaalamu wa Udhibiti wa Toleo + Elewa ujumuishaji wa Git: 6: You + Fanya mazoezi ya mchakato wa commit: 8: You + Shuhudia mifumo ya ushirikiano: 9: You + section Ubunifu wa Kitaalamu + Sakinisha nyongeza zenye nguvu: 7: You + Panga mazingira ya maendeleo: 8: You + Tengeneza michakato binafsi: 9: You +``` +**Lengo la Safari Yako**: Mwisho wa somo hili, utakuwa umeweza kutumia mazingira ya kitaalamu ya maendeleo ya wingu yanayofanya kazi kutoka kifaa chochote, kukuwezesha kuandika msimbo kwa kutumia vifaa vinavyotumiwa na waendelezaji katika makampuni makubwa ya teknolojia. + +## Unachojifunza -## Utakachohitaji +Baada ya kutembea pamoja, utaweza: + +- Kuvinjari VSCode.dev kama ni nyumba yako ya pili – kupata kila unachohitaji bila kupotea +- Kufungua hifadhidata yoyote ya GitHub kwenye kivinjari chako na kuanza kuhariri mara moja (hii ni ya kushangaza sana!) +- Kutumia Git kufuatilia mabadiliko yako na kuhifadhi maendeleo kama mtaalamu +- Kuongeza nguvu kwa mhariri wako kwa kutumia nyongeza zinazofanya kuandika msimbo kuwa haraka na kufurahisha zaidi +- Kuunda na kupanga faili za mradi kwa kujiamini + +## Utabidi Unachohitaji Mahitaji ni rahisi: -- Akaunti ya bure ya [GitHub](https://github.com) (tutakuelekeza jinsi ya kuunda ikiwa unahitaji) -- Uelewa wa msingi wa vivinjari vya wavuti -- Somo la Misingi ya GitHub linatoa msingi mzuri, ingawa si lazima +- Akaunti ya bure ya [GitHub](https://github.com) (tutakuongoza kuunda kama inahitajika) +- Uwezo wa msingi wa kutumia vivinjari vya wavuti +- Somo la Misingi ya GitHub linatoa msingi mzuri wa maarifa, ingawa si sharti + +> 💡 **Mpya kwa GitHub?** Kuunda akaunti ni bure na huchukua dakika chache. Kama vile kadi ya maktaba inavyokuwezesha kupata vitabu duniani kote, akaunti ya GitHub hukufungulia milango ya hifadhidata za msimbo mtandao mzima. -> 💡 **Mgeni wa GitHub?** Kuunda akaunti ni bure na huchukua dakika chache. Kama vile kadi ya maktaba inavyokupa ufikiaji wa vitabu duniani kote, akaunti ya GitHub inafungua milango kwa hifadhi za nambari kote mtandaoni. +## 🧠 Muhtasari wa Mfumo wa Maendeleo ya Wingu + +```mermaid +mindmap + root((VSCode.dev Utaalamu)) + Platform Benefits + Accessibility + Uhuru wa Kifaa + Hakuna Ufungaji Unahitajika + Sasisho la Mara Moja + Ufikiaji Ulimwenguni + Integration + Muunganisho wa GitHub + Mfumo wa Kukimbia Hifadhi + Uhifadhi wa Mipangilio + Tayari kwa Ushirikiano + Development Workflow + File Management + Muundo wa Mradi + Mwangaza wa Sarufi + Kuhariri Tab Tofauti + Sifa za Hifadhi Yaotomatiki + Version Control + Muunganisho wa Git + Mizunguko ya Kuajiri + Usimamizi wa Matawi + Ufuatiliaji wa Mabadiliko + Customization Power + Extensions Ecosystem + Vifaa vya Uzalishaji + Msaada wa Lugha + Chaguo za Mandhari + Njia Fupi za Custom + Environment Setup + Mapendeleo Binafsi + Mpangilio wa Eneo la Kazi + Muunganisho wa Vifaa + Uboreshaji wa Mtiririko wa Kazi + Professional Skills + Industry Standards + Udhibiti wa Toleo + Ubora wa Msimbo + Ushirikiano + Nyaraka + Career Readiness + Kazi Mbali + Maendeleo ya Wingu + Miradi ya Timu + Chanzo Huru +``` +**Kanuni Muhimu**: Mazingira ya maendeleo ya msingi wa wingu ni mustakabali wa kuandika msimbo – yanatoa zana za kitaalamu zinazopatikana kwa urahisi, zinazoshirikiana, na zisizo tegemea jukwaa lolote. -## Kwa Nini Wahitaji Mhariri wa Nambari wa Kivinjari? +## Kwa Nini Wahariri wa Msimbo wa Mtandao ni Muhimu -Kabla ya intaneti, wanasayansi katika vyuo vikuu tofauti hawakuweza kushiriki utafiti kwa urahisi. Kisha ARPANET ikaja miaka ya 1960, ikunganisha kompyuta kwa umbali. Wahariri wa nambari wa kivinjari hufuata kanuni hiyo hiyo – kufanya zana zenye nguvu kupatikana bila kujali eneo lako au kifaa. +Kabla ya intaneti, wanasayansi katika vyuo mbalimbali hawakuweza kushirikiana tafiti kwa urahisi. Kisha ARPANET ilikuja miaka ya 1960, ikawaunganisha kompyuta kutoka maeneo tofauti. Wahariri wa msimbo wa mtandao hufuata kanuni hii ile ile – kufanya zana za nguvu zipatikane bila kujali mahali ulipo au kifaa unachotumia. -Mhariri wa nambari hufanya kazi kama eneo lako la maendeleo, ambapo unaandika, kuhariri, na kupanga faili za nambari. Tofauti na wahariri wa maandishi rahisi, wahariri wa nambari wa kitaalamu hutoa mwangaza wa sintaksia, kugundua makosa, na vipengele vya usimamizi wa miradi. +Mhariri wa msimbo hutumika kama eneo lako la kazi la maendeleo, ambapo unaandika, kuhariri, na kupanga faili za msimbo. Tofauti na wahariri wa maandishi rahisi, wahariri wa msimbo wa kitaalamu hutoa mwangaza wa sintaksia, utambuzi wa makosa, na vipengele vya usimamizi wa miradi. VSCode.dev huleta uwezo huu kwenye kivinjari chako: -**Faida za kuhariri kwa kivinjari:** +**Faida za kuhariri mtandaoni:** -| Kipengele | Maelezo | Faida ya Kivitendo | -|-----------|---------|--------------------| -| **Uhuru wa Jukwaa** | Inaendeshwa kwenye kifaa chochote chenye kivinjari | Fanya kazi kutoka kompyuta tofauti bila shida | -| **Hakuna Usakinishaji Unaohitajika** | Ufikiaji kupitia URL ya wavuti | Epuka vikwazo vya usakinishaji wa programu | -| **Sasisho za Kiotomatiki** | Daima ina toleo la hivi karibuni | Pata vipengele vipya bila sasisho za mikono | -| **Muunganisho wa Hifadhi** | Muunganisho wa moja kwa moja na GitHub | Hariri nambari bila usimamizi wa faili za ndani | +| Kipengele | Maelezo | Faida Zaidi | +|---------|-------------|----------| +| **Hutoa Uhuru wa Jukwaa Lolote** | Inaendeshwa kwenye kifaa chochote chenye kivinjari | Fanya kazi kutoka kompyuta tofauti bila shida | +| **Hakuna Usakinishaji Unahitajika** | Inapatikana kupitia URL ya wavuti | Epuka vizuizi vya usakinishaji wa programu | +| **Mabadiliko Ya Moja kwa Moja** | Huuendeshwa kwa toleo la hivi karibuni kila mara | Upatikanaji wa sifa mpya bila usasishaji wa mkono | +| **Muunganisho wa Hifadhidata** | Muunganisho wa moja kwa moja na GitHub | Hariri msimbo bila kusimamia faili za ndani | -**Matokeo ya kivitendo:** -- Mwendelezo wa kazi katika mazingira tofauti -- Kiolesura thabiti bila kujali mfumo wa uendeshaji +**Athari za vitendo:** +- Kuendelea kwa kazi katika mazingira tofauti +- Muonekano thabiti bila kujali mfumo wa uendeshaji - Uwezo wa kushirikiana mara moja -- Mahitaji ya uhifadhi wa ndani yaliyopunguzwa +- Kupunguza hitaji la kuhifadhi kwa kifaa cha eneo la nahe ## Kuchunguza VSCode.dev -Kama vile maabara ya Marie Curie ilivyokuwa na vifaa vya kisasa katika nafasi rahisi, VSCode.dev ina zana za maendeleo ya kitaalamu ndani ya kiolesura cha kivinjari. Programu hii ya wavuti hutoa utendaji wa msingi sawa na wahariri wa nambari wa desktop. +Kama vile maabara ya Marie Curie ilivyokuwa na vifaa vya hali ya juu katika nafasi rahisi, VSCode.dev hujumuisha zana za kitaalamu za maendeleo katika jukwaa la kivinjari. Programu hii ya wavuti hutoa uwezo sawa kama wahariri wa msimbo wa kompyuta za mezani. -Anza kwa kwenda [vscode.dev](https://vscode.dev) kwenye kivinjari chako. Kiolesura kinapakia bila kupakua au kusakinisha mfumo – matumizi ya moja kwa moja ya kanuni za kompyuta ya wingu. +Anza kwa kuvinjari [vscode.dev](https://vscode.dev) kwenye kivinjari chako. Muonekano huo hujazwa bila kupakua au kusakinisha mfumo wowote – ni utekelezaji wa moja kwa moja wa kanuni za kompyuta za wingu. ### Kuunganisha Akaunti Yako ya GitHub -Kama vile simu ya Alexander Graham Bell ilivyounganisha maeneo ya mbali, kuunganisha akaunti yako ya GitHub huunganisha VSCode.dev na hifadhi zako za nambari. Unapoulizwa kuingia na GitHub, kukubali muunganisho huu kunapendekezwa. +Kama vile simu ya Alexander Graham Bell ilivyowezesha mawasiliano ya mbali, kuunganisha akaunti yako ya GitHub huunganisha VSCode.dev na hifadhidata zako. Ukiwaombwa kuingia kwa GitHub, kukubali muunganisho huu kinapendekezwa. **Muunganisho wa GitHub hutoa:** -- Ufikiaji wa moja kwa moja wa hifadhi zako ndani ya mhariri -- Mipangilio na viendelezi vilivyolinganishwa kwenye vifaa tofauti -- Mtiririko wa kuhifadhi ulio rahisi kwa GitHub +- Upatikanaji wa moja kwa moja wa hifadhidata zako ndani ya mhariri +- Mipangilio na nyongeza zimeunganishwa kwenye vifaa mbalimbali +- Mtiririko rahisi wa kuhifadhi kazi kwenye GitHub - Mazingira ya maendeleo yaliyobinafsishwa -### Kujifunza Eneo Lako Jipya la Kazi +### Kufahamu Eneo Lako Jipya la Kazi -Mara kila kitu kinapopakia, utaona eneo la kazi safi na lenye mpangilio mzuri ambalo limeundwa kukufanya uzingatie kile kinachojalisha – nambari yako! +Mara kila kitu kinapopakuliwa, utaona eneo la kazi safi na la kuvutia lililoundwa kukuweka makini na kinachohitajika – msimbo wako! -![Kiolesura cha kawaida cha VSCode.dev](../../../../translated_images/default-vscode-dev.5d06881d65c1b3234ce50cd9ed3b0028e6031ad5f5b441bcbed96bfa6311f6d0.sw.png) +![Muonekano wa kawaida wa VSCode.dev](../../../../translated_images/default-vscode-dev.5d06881d65c1b323.sw.png) -**Hapa kuna ziara ya eneo:** -- **Upau wa Shughuli** (kile kipande upande wa kushoto): Urambazaji wako kuu na Explorer 📁, Tafuta 🔍, Udhibiti wa Chanzo 🌿, Viendelezi 🧩, na Mipangilio ⚙️ -- **Upau wa Pembeni** (paneli karibu nayo): Hubadilika kuonyesha maelezo yanayofaa kulingana na kile ulichoteua -- **Eneo la Mhariri** (nafasi kubwa katikati): Hapa ndipo uchawi hutokea – eneo lako kuu la kuandika nambari +**Hapa ni ziara yako ya mtaa:** +- **Ukuta wa Shughuli** (ukingo wa kushoto): Urambazaji wako mkuu una Explorer 📁, Tafuta 🔍, Udhibiti wa Chanzo 🌿, Nyongeza 🧩, na Mipangilio ⚙️ +- **Upau wa Pembeni** (bamba upande wake): Hubadilika kuonyesha taarifa husika kulingana na unachochagua +- **Eneo la Mhariri** (sehemu kubwa katikati): Hapa ndipo uchawi unapotokea – eneo lako kuu la kuandika msimbo -**Chukua muda kuchunguza:** -- Bonyeza ikoni za Upau wa Shughuli na uone kila moja inafanya nini -- Angalia jinsi upau wa pembeni unavyosasisha kuonyesha maelezo tofauti – ni nzuri, sivyo? -- Mwonekano wa Explorer (📁) pengine ndio utatumia muda mwingi, kwa hivyo zoea nao +**Chukua muda kugundua:** +- Bonyeza alama za Ukuta wa Shughuli na uone kila moja inavyofanya kazi gani +- Angalia jinsi upau wa pembeni unavyosasishwa kuonyesha taarifa tofauti – ni nzuri, sivyo? +- Muonekano wa Explorer (📁) ni sehemu ambayo utatumia zaidi muda wako, hivyo jiandae nayo -## Kufungua Hifadhi za GitHub +```mermaid +flowchart TB + subgraph "Usanifu wa Kiolesura cha VSCode.dev" + A[Ukanda wa Shughuli] --> B[Mchunguzi 📁] + A --> C[Utafutaji 🔍] + A --> D[Udhibiti wa Chanzo 🌿] + A --> E[Virutubisho 🧩] + A --> F[Mipangilio ⚙️] + + B --> G[Mti wa Faili] + C --> H[Tafuta & Badilisha] + D --> I[Hali ya Git] + E --> J[Soko la Virutubisho] + F --> K[Mipangilio] + + L[Upau wa Pembeni] --> M[Bodi ya Muktadha] + N[Eneo la Mhariri] --> O[Faili za Msimbo] + P[Terminala/Matokeo] --> Q[Mstari wa Amri] + end +``` +## Kufungua Hifadhidata za GitHub -Kabla ya intaneti, watafiti walihitaji kusafiri kimwili kwenda maktaba kupata nyaraka. Hifadhi za GitHub hufanya kazi kwa njia sawa – ni mkusanyiko wa nambari uliowekwa mbali. VSCode.dev huondoa hatua ya jadi ya kupakua hifadhi kwenye mashine yako ya ndani kabla ya kuhariri. +Kabla ya intaneti, watafiti walilazimika kusafiri kwenda maktaba kupata nyaraka. Hifadhidata za GitHub zinafanya kazi kwa njia ile ile – ni makusanyo ya msimbo yaliyohifadhiwa mbali. VSCode.dev huondoa hatua ya kawaida ya kupakua hifadhidata kwenye mashine yako kabla ya kuhariri. -Uwezo huu unaruhusu ufikiaji wa haraka wa hifadhi yoyote ya umma kwa kutazama, kuhariri, au kuchangia. Hapa kuna njia mbili za kufungua hifadhi: +Uwezo huu unaruhusu upatikanaji wa mara moja wa hifadhidata yoyote ya umma kwa ajili ya kutazama, kuhariri, au kuchangia. Hapa kuna njia mbili za kufungua hifadhidata: -### Njia ya 1: Njia ya Kubonyeza na Kuchagua +### Njia ya 1: Kidhibiti-na-Klika -Hii ni bora unapokuwa unaanza upya kwenye VSCode.dev na unataka kufungua hifadhi maalum. Ni rahisi na rafiki kwa wanaoanza: +Hii ni bora unapoanza mpya kwenye VSCode.dev na unataka kufungua hifadhidata maalum. Ni rahisi na rafiki kwa wanaoanza: **Hivi ndivyo unavyofanya:** -1. Nenda kwenye [vscode.dev](https://vscode.dev) ikiwa bado hujafika -2. Tafuta kitufe cha "Fungua Hifadhi ya Mbali" kwenye skrini ya kukaribisha na bonyeza +1. Nenda kwenye [vscode.dev](https://vscode.dev) kama bado hujafika +2. Tafuta kitufe cha "Open Remote Repository" kwenye skrini ya kuanza na kubofya - ![Fungua hifadhi ya mbali](../../../../translated_images/open-remote-repository.bd9c2598b8949e7fc283cdfc8f4050c6205a7c7c6d3f78c4b135115d037d6fa2.sw.png) + ![Fungua hifadhidata ya mbali](../../../../translated_images/open-remote-repository.bd9c2598b8949e7f.sw.png) -3. Bandika URL yoyote ya hifadhi ya GitHub (jaribu hii: `https://github.com/microsoft/Web-Dev-For-Beginners`) -4. Bonyeza Enter na uone uchawi ukitokea! +3. Bandika URL yoyote ya hifadhidata ya GitHub (jaribu hii: `https://github.com/microsoft/Web-Dev-For-Beginners`) +4. Bonyeza Enter na angalia uchawi unavyotokea! -**Kidokezo cha kitaalamu - Njia ya Command Palette:** +**Ushauri wa mtaalamu - Mkato wa Komandi ya Palette:** -Unataka kujisikia kama mchawi wa coding? Jaribu njia ya mkato ya kibodi: Ctrl+Shift+P (au Cmd+Shift+P kwenye Mac) kufungua Command Palette: +Unataka kujisikia kama mchawi wa kuandika msimbo? Jaribu mkato huu wa kibodi: Ctrl+Shift+P (au Cmd+Shift+P kwa Mac) kufungua Komandi ya Palette: -![Command Palette](../../../../translated_images/palette-menu.4946174e07f426226afcdad707d19b8d5150e41591c751c45b5dee213affef91.sw.png) +![Komandi ya Palette](../../../../translated_images/palette-menu.4946174e07f42622.sw.png) -**Command Palette ni kama injini ya utafutaji kwa kila kitu unachoweza kufanya:** -- Andika "open remote" na itapata kifungua hifadhi kwa ajili yako -- Inakumbuka hifadhi ulizofungua hivi karibuni (ni muhimu sana!) -- Ukizoea, utajisikia kama unafanya coding kwa kasi ya umeme -- Ni kama "Hey Siri, lakini kwa coding" ya VSCode.dev +**Komandi ya Palette ni kama kuwa na injini ya utafutaji ya kila jambo unaloweza kufanya:** +- Andika "open remote" na itakupata kifungua hifadhidata +- Inakumbuka hifadhidata ulizofungua hivi karibuni (ni rahisi sana!) +- Ukizoea, utajisikia unavyotuma msimbo kwa kasi ya radi +- Hii ni aina ya VSCode.dev ya "Hey Siri, lakini kwa kuandika msimbo" -### Njia ya 2: Mbinu ya Kubadilisha URL +### Njia ya 2: Mbinu ya Mabadiliko ya URL -Kama vile HTTP na HTTPS zinavyotumia itifaki tofauti huku zikihifadhi muundo wa kikoa sawa, VSCode.dev hutumia muundo wa URL unaoakisi mfumo wa anwani wa GitHub. URL yoyote ya hifadhi ya GitHub inaweza kubadilishwa kufunguliwa moja kwa moja kwenye VSCode.dev. +Kama vile HTTP na HTTPS wanavyotumia itifaki tofauti huku wakidumisha muundo wa kikoa sawa, VSCode.dev hutumia muundo wa URL unaoiga mfumo wa anwani za GitHub. URL yoyote ya hifadhidata ya GitHub inaweza kubadilishwa kufunguliwa moja kwa moja VSCode.dev. -**Muundo wa mabadiliko ya URL:** +**Mfano wa mabadiliko ya URL:** -| Aina ya Hifadhi | URL ya GitHub | URL ya VSCode.dev | -|------------------|---------------|-------------------| -| **Hifadhi ya Umma** | `github.com/microsoft/Web-Dev-For-Beginners` | `vscode.dev/github/microsoft/Web-Dev-For-Beginners` | -| **Mradi wa Kibinafsi** | `github.com/your-username/my-project` | `vscode.dev/github/your-username/my-project` | -| **Hifadhi Yoyote Inayopatikana** | `github.com/their-username/awesome-repo` | `vscode.dev/github/their-username/awesome-repo` | +| Aina ya Hifadhidata | URL ya GitHub | URL ya VSCode.dev | +|----------------|---------------------|----------------| +| **Hifadhidata ya Umma** | `github.com/microsoft/Web-Dev-For-Beginners` | `vscode.dev/github/microsoft/Web-Dev-For-Beginners` | +| **Mradi Binafsi** | `github.com/your-username/my-project` | `vscode.dev/github/your-username/my-project` | +| **Hifadhidata Ipo kwa Upatikanaji** | `github.com/their-username/awesome-repo` | `vscode.dev/github/their-username/awesome-repo` | **Utekelezaji:** -- Badilisha `github.com` na `vscode.dev/github` -- Hifadhi vipengele vyote vya URL bila kubadilika -- Inafanya kazi na hifadhi yoyote inayopatikana kwa umma -- Hutoa ufikiaji wa haraka wa kuhariri +- Badilisha `github.com` kuwa `vscode.dev/github` +- Hifadhi sehemu zingine zote za URL bila kubadilika +- Inaweza kufanya kazi na hifadhidata yoyote ya umma +- Hutoa upatikanaji wa moja kwa moja wa kuhariri -> 💡 **Kidokezo cha kubadilisha maisha**: Hifadhi matoleo ya VSCode.dev ya hifadhi zako unazozipenda. Nina alama za kurasa kama "Hariri Wasifu Wangu" na "Sahihisha Nyaraka" ambazo hunipeleka moja kwa moja kwenye hali ya kuhariri! +> 💡 **Kidokezo cha kubadilisha maisha**: Weka alama za VSCode.dev za hifadhidata zako unazozipenda. Mimi nina alama kama "Hariri Miradi Yangu" na "Rekebisha Nyaraka" zinazonipeleka moja kwa moja kwenye hali ya kuhariri! **Ni njia gani unapaswa kutumia?** -- **Njia ya kiolesura**: Nzuri unapochunguza au huwezi kukumbuka majina halisi ya hifadhi -- **Mbinu ya URL**: Bora kwa ufikiaji wa haraka unapojua hasa unakoenda +- **Njia ya kiolesura**: Nzuri unapotafuta au hujui majina sahihi ya hifadhidata +- **Mbinu ya URL**: Bora kwa upatikanaji wa haraka unapojua hasa mahali unapotaka kwenda + +### 🎯 Kagua Kujifunza: Upatikanaji wa Maendeleo ya Wingu + +**Simama na Fikiria**: Umejifunza njia mbili za kufikia hifadhidata kwa njia ya kivinjari. Hii ni mabadiliko makubwa katika jinsi maendeleo yanavyofanya kazi. + +**Tathmini Yako ya Haraka:** +- Je, unaweza kuelezea kwa nini kuhariri mtandaoni huondoa hitaji la "usanidi wa mazingira ya maendeleo" ya kawaida? +- Ni faida gani mbinu ya mabadiliko ya URL hutoa ikilinganishwa na kunakili git mahali poko? +- Jinsi gani njia hii huhariri njia unavyoweza kuchangia miradi ya chanzo wazi? + +**Muunganisho wa Dunia Halisi**: Makampuni makubwa kama GitHub, GitLab, na Replit wamejenga jukwaa lao la maendeleo kwa misingi hii ya kihudumu wa wingu. Unajifunza mitiririko ile ile inayotumiwa na timu za maendeleo duniani kote. + +**Swali la Changamoto**: Maendeleo ya wingu yanaweza kubadilisha vipi jinsi kuandaliwa kwa kozi ya kuandika msimbo katika shule? Fikiria kuhusu mahitaji ya vifaa, usimamizi wa programu, na uwezekano wa kushirikiana. ## Kufanya Kazi na Faili na Miradi -Sasa kwa kuwa umefungua hifadhi, hebu tuanze kujenga! VSCode.dev inakupa kila unachohitaji kuunda, kuhariri, na kupanga faili za nambari zako. Fikiria kama warsha yako ya kidijitali – kila zana iko mahali unapoihitaji. +Sasa umefungua hifadhidata, hebu tuanze kujenga! VSCode.dev inakupatia kila kitu unachohitaji kuunda, kuhariri, na kupanga faili zako za msimbo. Fikiria kama warsha yako ya kidijitali – kila zana iko mahali unapotakiwa. -Hebu tuingie kwenye kazi za kila siku ambazo zitaunda sehemu kubwa ya mtiririko wako wa kazi wa coding. +Tuanze na kazi za kila siku zitakazokuwa sehemu kubwa ya mtiririko wako wa kuandika msimbo. ### Kuunda Faili Mpya -Kama kupanga michoro katika ofisi ya mhandisi, uundaji wa faili katika VSCode.dev hufuata mbinu ya muundo. Mfumo huu unasaidia aina zote za faili za maendeleo ya wavuti. +Kama kupanga ramani za majengo ofisini mwa mbuni wa majengo, uundaji wa faili ndani ya VSCode.dev hufuata mtindo ulio wazi. Mfumo unaunga mkono aina zote za kawaida za faili za maendeleo ya wavuti. **Mchakato wa kuunda faili:** -1. Nenda kwenye folda lengwa kwenye upau wa pembeni wa Explorer -2. Elekeza juu ya jina la folda ili kufichua ikoni ya "Faili Mpya" (📄+) -3. Ingiza jina la faili likijumuisha kiendelezi kinachofaa (`style.css`, `script.js`, `index.html`) +1. Vinjari folda lengwa kwenye upande wa Explorer +2. Lusua juu ya jina la folda kuonyesha ikoni ya "Faili Mpya" (📄+) +3. Andika jina la faili pamoja na kiendelezi kinachofaa (`style.css`, `script.js`, `index.html`) 4. Bonyeza Enter kuunda faili -![Kuunda faili mpya](../../../../translated_images/create-new-file.2814e609c2af9aeb6c6fd53156c503ac91c3d538f9cac63073b2dd4a7631f183.sw.png) +![Kuunda faili mpya](../../../../translated_images/create-new-file.2814e609c2af9aeb.sw.png) -**Misingi ya kutaja faili:** -- Tumia majina yanayoelezea madhumuni ya faili +**Kanuni za kuitia majina:** +- Tumia majina ya kueleweka yanayoonyesha matumizi ya faili - Jumuisha viendelezi vya faili kwa mwangaza sahihi wa sintaksia -- Fuata mifumo thabiti ya kutaja faili katika miradi -- Tumia herufi ndogo na alama za kuunganisha badala ya nafasi +- Fuata mifumo ya majina thabiti katika miradi +- Tumia herufi ndogo na mabano badala ya nafasi ### Kuhariri na Kuhifadhi Faili -Hapa ndipo raha halisi inaanza! Mhariri wa VSCode.dev umejaa vipengele vya kusaidia vinavyofanya coding kuwa laini na ya angavu. Ni kama kuwa na msaidizi mzuri wa kuandika, lakini kwa nambari. +Hapa ndipo furaha ya kweli inaanza! Mhariri wa VSCode.dev umejaa vipengele vya kusaidia vinavyofanya kuandika msimbo kuwa laini na ya kueleweka. Kama kuwa na msaidizi mahiri wa uandishi, lakini kwa msimbo. **Mtiririko wako wa kuhariri:** -1. Bonyeza faili yoyote kwenye Explorer ili kuifungua kwenye eneo kuu -2. Anza kuandika na uone VSCode.dev ikikusaidia kwa rangi, mapendekezo, na kugundua makosa -3. Hifadhi kazi yako kwa Ctrl+S (Windows/Linux) au Cmd+S (Mac) – ingawa inahifadhi kiotomatiki pia! +1. Bonyeza faili yoyote kwenye Explorer kufungua katika eneo kuu +2. Anza kuandika na uangalie VSCode.dev ikikuongezea rangi, mapendekezo, na kugundua makosa +3. Hifadhi kazi kwa Ctrl+S (Windows/Linux) au Cmd+S (Mac) – ingawa huhifadhi moja kwa moja pia! -![Kuhariri faili katika VSCode.dev](../../../../translated_images/edit-a-file.52c0ee665ef19f08119d62d63f395dfefddc0a4deb9268d73bfe791f52c5807a.sw.png) +![Kuhariri faili kwenye VSCode.dev](../../../../translated_images/edit-a-file.52c0ee665ef19f08.sw.png) -**Mambo mazuri yanayotokea unapoandika nambari:** -- Nambari yako inapata rangi nzuri ili iwe rahisi kusoma -- VSCode.dev inapendekeza marekebisho unapoandika (kama autocorrect, lakini bora zaidi) -- Inagundua makosa na makosa ya tahajia kabla hujahifadhi -- Unaweza kuwa na faili nyingi wazi kwenye tabo, kama kwenye kivinjari -- Kila kitu kinahifadhiwa kiotomatiki kwa nyuma +**Mambo mazuri yanayotokea unapoandika msimbo:** +- Msimbo wako unatolewa kwa rangi nzuri ili uwe rahisi kusoma +- VSCode.dev inapendekeza mitiifu ya neno unaloteka (kama kusahihisha moja kwa moja, lakini zaidi intelligent) +- Inakagua makosa kabla haujahifadhi +- Unaweza kuwa na faili nyingi zikiwa wazi kwenye tabo tofauti, kama kwenye kivinjari +- Kila kitu huhifadhiwa moja kwa moja nyuma ya pazia -> ⚠️ **Kidokezo cha haraka**: Ingawa auto-save inakusaidia, kubonyeza Ctrl+S au Cmd+S bado ni tabia nzuri. Inahifadhi kila kitu mara moja na kuanzisha vipengele vingine vya kusaidia kama ukaguzi wa makosa. +> ⚠️ **Kidokezo cha haraka**: Ingawa kuhifadhi moja kwa moja kuna msaada, kuzima Ctrl+S au Cmd+S bado ni desturi nzuri. Huhifadhi mara moja kila kitu na huanzisha vipengele vingine vya msaada kama ukaguzi wa makosa. -### Udhibiti wa Toleo na Git +### Udhibiti wa Matoleo kwa Git -Kama vile wanakiolojia wanavyounda rekodi za kina za tabaka za uchimbaji, Git hufuatilia mabadiliko katika nambari yako kwa muda. Mfumo huu huhifadhi historia ya mradi na hukuwezesha kurudi kwenye matoleo ya awali unapohitaji. VSCode.dev inajumuisha utendaji wa Git. +Kama wachimbaji wa kumbukumbu wanavyotengeneza kumbukumbu za kina za tabaka za kuchimba, Git hufuatilia mabadiliko kwenye msimbo wako kwa muda. Mfumo huu unahifadhi historia ya mradi na unakuwezesha kurudi kwa matoleo ya awali inapohitajika. VSCode.dev ina utendakazi wa Git uliounganishwa. **Kiolesura cha Udhibiti wa Chanzo:** -1. Fikia paneli ya Udhibiti wa Chanzo kupitia ikoni ya 🌿 kwenye Upau wa Shughuli +1. Ingia kwenye paneli ya Udhibiti wa Chanzo kwa kutumia ikoni ya 🌿 kwenye Ukuta wa Shughuli 2. Faili zilizobadilishwa zinaonekana katika sehemu ya "Mabadiliko" -3. Uwekaji rangi unaonyesha aina za mabadiliko: kijani kwa nyongeza, nyekundu kwa kufutwa +3. Rangi hutambulisha aina za mabadiliko: kijani kwa nyongeza, nyekundu kwa ufutaji -![Kuangalia mabadiliko katika Udhibiti wa Chanzo](../../../../translated_images/working-tree.c58eec08e6335c79cc708c0c220c0b7fea61514bd3c7fb7471905a864aceac7c.sw.png) +![Kutazama mabadiliko katika Udhibiti wa Chanzo](../../../../translated_images/working-tree.c58eec08e6335c79.sw.png) -**Kuhifadhi kazi yako (mtiririko wa commit):** +**Kuhifadhi kazi yako (mtiririko wa kufanya commit):** ```mermaid flowchart TD - A[Make changes to files] --> B[View changes in Source Control] - B --> C[Stage changes by clicking +] - C --> D[Write descriptive commit message] - D --> E[Click checkmark to commit] - E --> F[Changes pushed to GitHub] + A[Fanya mabadiliko kwenye faili] --> B[Tazama mabadiliko katika Udhibiti wa Chanzo] + B --> C[Tayarisha mabadiliko kwa kubofya +] + C --> D[Andika ujumbe wa kujitolea unaoelezea] + D --> E[Bonyeza alama ya kuangalia ili kujitolea] + E --> F[Mabadiliko yametumwa GitHub] +``` +```mermaid +stateDiagram-v2 + [*] --> Modified: Hariri faili + Modified --> Staged: Bonyeza + kuweka hatua + Staged --> Modified: Bonyeza - kuondoa hatua + Staged --> Committed: Ongeza ujumbe & jitihada + Committed --> [*]: Sambaza kwenye GitHub + + state Committed { + [*] --> LocalCommit + LocalCommit --> RemotePush: Sambaza kiotomatiki + } ``` - **Hivi ndivyo unavyofanya hatua kwa hatua:** -- Bonyeza ikoni ya "+" karibu na faili unazotaka kuhifadhi (hii inaziweka "staged") -- Hakikisha kuwa unaridhika na mabadiliko yote yaliyowekwa -- Andika maelezo mafupi yanayoelezea ulichofanya (hii ni "commit message" yako) -- Bonyeza kitufe cha alama ya tiki ili kuhifadhi kila kitu kwenye GitHub -- Ikiwa unabadili mawazo kuhusu kitu, ikoni ya kurudisha nyuma inakuruhusu kufuta mabadiliko +- Bonyeza ikoni ya "+" kando ya faili unazotaka kuhifadhi (hii inawaita "kuweka awali" faili) +- Hakikisha mara mbili kwamba umefurahishwa na mabadiliko yote yaliyopangwa +- Andika noti fupi ikielezea ulichofanya (hii ni "ujumbe wako wa kujiwekea") +- Bonyeza kitufe cha tiki kuhifadhi kila kitu kwenye GitHub +- Ikiwa utabadilisha mawazo kuhusu jambo fulani, ikoni ya kufuta inakuwezesha kukataa mabadiliko + +**Kuandika ujumbe mzuri wa kujiwekea (hii ni rahisi kuliko unavyofikiri!):** +- Elezea tu ulichofanya, kama "Ongeza fomu ya mawasiliano" au "Rekebisha urambazaji uliovunjika" +- Fanya iwe fupi na nzuri – fikiria kama twiti, sio insha +- Anza kwa maneno ya kitendo kama "Ongeza", "Rekebisha", "Sasisha", au "Ondoa" +- **Mifano mizuri**: "Ongeza menyu ya urambazaji inayojibadilisha", "Rekebisha masuala ya muundo wa simu", "Sasisha rangi kwa ufikiaji bora" -**Kuandika ujumbe mzuri wa commit (hii ni rahisi kuliko unavyofikiria!):** -- Eleza tu ulichofanya, kama "Ongeza fomu ya mawasiliano" au "Sahihisha urambazaji uliovunjika" -- Ifanye iwe fupi na rahisi – fikiria urefu wa tweet, si insha -- Anza na maneno ya hatua kama "Ongeza", "Sahihisha", "Sasisha", au "Ondoa" -- **Mifano mizuri**: "Ongeza menyu ya urambazaji inayojibika", "Sahihisha masuala ya mpangilio wa simu", "Sasisha rangi kwa upatikanaji bora" +> 💡 **Kidokezo cha urambazaji haraka**: Tumia menyu ya hamburger (☰) juu kushoto kurudi kwenye hifadhi yako ya GitHub na kuona mabadiliko uliyojiwekea mtandaoni. Ni kama lango kati ya mazingira yako ya uhariri na nyumbani kwa mradi wako GitHub! -> 💡 **Kidokezo cha urambazaji wa haraka**: Tumia menyu ya hamburger (☰) upande wa juu kushoto kurudi kwenye hifadhi yako ya GitHub na kuona mabadiliko yako yaliyohifadhiwa mtandaoni. Ni kama lango kati ya mazingira yako ya kuhariri na nyumbani kwa mradi wako kwenye GitHub! +## Kuongeza Ufanisi Kwa Kuongeza Vipengele + +Kama vile duka la msanii linavyokuwa na zana maalum kwa kazi tofauti, VSCode.dev inaweza kuboreshwa kwa vipengele vinavyoongeza uwezo maalum. Viendelezaji waliotengenezwa na jamii hurekebisha mahitaji ya kawaida ya maendeleo kama vile upangaji wa msimbo, onyesho la moja kwa moja, na uunganisho bora wa Git. + +Soko la vipengele lina maelfu ya zana za bure zilizotengenezwa na watengenezaji duniani kote. Kila kiendelezaji hutatua changamoto maalum za mtiririko wa kazi, kukuwezesha kujenga mazingira ya maendeleo yaliyoongozwa na mahitaji yako binafsi na mapendeleo. + +```mermaid +mindmap + root((Extension Ecosystem)) + Essential Categories + Productivity + Live Server + Auto Rename Tag + Bracket Pair Colorizer + GitLens + Code Quality + Prettier + ESLint + Spell Checker + Error Lens + Language Support + HTML CSS Support + JavaScript ES6 + Python Extension + Markdown Preview + Themes & UI + Dark+ Modern + Material Icon Theme + Peacock + Rainbow Brackets + Discovery Methods + Popular Rankings + Idadi za Kupakua + Ratings za Watumiaji + Sasisho za Karibuni + Mapitio ya Jamii + Recommendations + Mapendekezo ya Eneo la Kazi + Kulingana na Lugha + Kazi maalum ya Mtiririko + Viwango vya Timu +``` +### Kupata Vipengele Vyako Kamili -## Kuongeza Uwezo na Viendelezi +Soko la vipengele limepangiliwa vyema, hivyo hutapotea ukitafuta unachohitaji. Limebuniwa kusaidia kugundua zana maalum na vitu vya kuvutia ambavyo haujajua vilikuwepo! -Kama vile warsha ya fundi ina zana maalum kwa kazi tofauti, VSCode.dev inaweza kubinafsishwa na viendelezi vinavyoongeza uwezo maalum. Programu hizi zilizotengenezwa na jamii zinashughulikia mahitaji ya kawaida ya maendeleo kama uundaji wa nambari, mwonekano wa moja kwa moja, na ushirikiano ulioboreshwa wa Git. +**Jinsi ya kufikia soko la vipengele:** -Soko la viendelezi lina maelfu ya zana za bure zilizotengenezwa na watengenezaji kote ulimwenguni. Kila kiendelezi hutatua changamoto fulani za mtiririko wa kazi, ikiruhusu kujenga mazingira ya maendeleo yaliyobinafsishwa yanayofaa mahitaji na mapendeleo yako maalum. +1. Bonyeza ikoni ya Vipengele (🧩) kwenye Upau wa Shughuli +2. Vinjari au tafuta kitu maalum +3. Bonyeza chochote kinachovutia kujifunza zaidi -### Kupata Viendelezi Vyako Bora +![Kiolesura cha soko la vipengele](../../../../translated_images/extensions.eca0e0c7f59a10b5.sw.png) -Soko la viendelezi limepangwa vizuri, kwa hivyo hutapotea ukijaribu kutafuta unachohitaji. Limeundwa kusaidia kugundua zana maalum na vitu vya kuvutia ambavyo hata hukujua vinapatikana! +**Utakachoona humo:** -**Kufikia soko:** +| Sehemu | Kile Kilicho Ndani | Kwa Nini Ni Msaada | +|----------|---------|----------| +| **Imesakinishwa** | Vipengele ulivyoviongeza tayari | Zana zako binafsi za uandishi wa msimbo | +| **Maarufu** | Vipendwa na wengi | Vilivyo maarufu kwa watengenezaji wengi | +| **Inapendekezwa** | Mapendekezo mazuri kwa mradi wako | Mapendekezo ya msaada ya VSCode.dev | -1. Bonyeza ikoni ya Viendelezi (🧩) kwenye Upau wa Shughuli -2. Vin -- Kila kiendelezi kinaonyesha alama za ukadiriaji, idadi ya upakuaji, na maoni ya watumiaji halisi -- Unapata picha za skrini na maelezo wazi ya kile kila moja inafanya -- Kila kitu kimewekwa alama wazi na taarifa za ulinganifu -- Viendelezi vinavyofanana vinapendekezwa ili uweze kulinganisha chaguo +**Kile kinachofanya urambazaji kuwa rahisi:** +- Kila kiendelezaji kina viwango, idadi ya pakizi, na maoni halisi ya watumiaji +- Unapata picha na maelezo wazi ya kile kila kimoja hufanya +- Kila kitu kimeainishwa kwa uwazi na taarifa ya ulinganifu +- Vipengele vinavyofanana vinapendekezwa ili ulinganishe chaguzi -### Kusakinisha Viendelezi (Ni Rahisi Sana!) +### Kusakinisha Vipengele (Ni Rahisi Sana!) -Kuongeza nguvu mpya kwenye mhariri wako ni rahisi kama kubonyeza kitufe. Viendelezi husakinishwa kwa sekunde na kuanza kufanya kazi mara moja – hakuna kuanzisha upya, hakuna kusubiri. +Kuwaongeza nguvu mpya mhariri wako ni rahisi kama kubonyeza kitufe. Vipengele husakinishwa kwa sekunde na kuanza kufanya kazi mara moja – hakuna kuanzisha upya, hakuna kusubiri. -**Hivi ndivyo unavyopaswa kufanya:** +**Hivi ndivyo unavyofanya:** 1. Tafuta unachotaka (jaribu kutafuta "live server" au "prettier") -2. Bonyeza kile kinachoonekana kizuri ili kuona maelezo zaidi -3. Soma kile kinachofanya na angalia alama za ukadiriaji -4. Bonyeza kitufe cha bluu "Install" na umemaliza! +2. Bonyeza kile kinachoonekana kizuri kuona maelezo zaidi +3. Soma kuhusu kile hufanya na angalia viwango +4. Bonyeza kitufe cha buluu cha "Install" na umemaliza! -![Kusakinisha viendelezi](../../../../8-code-editor/images/install-extension.gif) +![Kusakinisha vipengele](../../../../8-code-editor/images/install-extension.gif) **Kinachotokea nyuma ya pazia:** -- Kiendelezi kinapakuliwa na kujisakinisha kiotomatiki -- Vipengele vipya vinaonekana kwenye kiolesura chako mara moja -- Kila kitu kinaanza kufanya kazi mara moja (kweli, ni haraka hivyo!) -- Ikiwa umeingia, kiendelezi kinasawazishwa kwenye vifaa vyako vyote +- Kiendelezaji hupakuliwa na kujiseti moja kwa moja +- Vipengele vipya vinaonekana katika kiolesura chako mara moja +- Kila kitu kinaanza kufanya kazi papo hapo (kwa kweli, ni haraka hivyo!) +- Ikiwa umeingia kwenye akaunti, kiendelezaji kinalinganisha vifaa vyako vyote -**Baadhi ya viendelezi ninavyopendekeza kuanza navyo:** -- **Live Server**: Tazama tovuti yako ikisasishwa moja kwa moja unapoandika (hiki ni cha kichawi!) -- **Prettier**: Hufanya msimbo wako uonekane safi na wa kitaalamu kiotomatiki -- **Auto Rename Tag**: Badilisha tagi moja ya HTML na mwenza wake pia anasasishwa -- **Bracket Pair Colorizer**: Inaweka rangi kwenye mabano yako ili usipotee -- **GitLens**: Inaongeza nguvu kwenye vipengele vyako vya Git na taarifa nyingi za msaada +**Vipengele vingine ninavyopendekeza kuanzia navyo:** +- **Live Server**: Tazama tovuti yako ikibadilika kwa wakati halisi unapotengeneza (hiki ni cha kishangaza!) +- **Prettier**: Hufanya msimbo wako kuwa safi na wa kitaalamu moja kwa moja +- **Auto Rename Tag**: Badilisha lebo moja ya HTML na mshirika wake hubadilika pia +- **Bracket Pair Colorizer**: Rangi mabano yako ili usipotee kabisa +- **GitLens**: Inaongeza nguvu kwa vipengele vya Git na taarifa nyingi za msaada -### Kubinafsisha Viendelezi Vyako +### Kubinafsisha Vipengele Vyako -Viendelezi vingi vina mipangilio unayoweza kurekebisha ili kufanya vifanye kazi jinsi unavyopenda. Fikiria kama kurekebisha kiti na vioo kwenye gari – kila mtu ana mapendeleo yake! +Vipengele vingi huja na mipangilio unayoweza kubadilisha ili kufanya kazi jinsi unavyotaka. Fikiria kama kurekebisha kiti na vioo ndani ya gari – kila mtu ana mapendeleo yake! -**Kurekebisha mipangilio ya kiendelezi:** +**Kurekebisha mipangilio ya kiendelezaji:** -1. Tafuta kiendelezi chako kilichosakinishwa kwenye paneli ya Viendelezi -2. Tafuta ikoni ndogo ya gia (⚙️) karibu na jina lake na bonyeza -3. Chagua "Extension Settings" kutoka kwenye menyu ya kushuka -4. Rekebisha mambo hadi yahisi sawa na mtiririko wako wa kazi +1. Pata kiendelezaji ulichosakinisha kwenye paneli ya Vipengele +2. Tafuta ikoni ya gia ndogo (⚙️) kando ya jina lake na bonyeza +3. Chagua "Extension Settings" kutoka kwenye menyu ya kushuka chini +4. Rekebisha vitu hadi viwe vinakufaa kabisa kwa mtiririko wako wa kazi -![Kubinafsisha mipangilio ya kiendelezi](../../../../translated_images/extension-settings.21c752ae4f4cdb78a867f140ccd0680e04619d0c44bb4afb26373e54b829d934.sw.png) +![Kubinafsisha mipangilio ya kiendelezaji](../../../../translated_images/extension-settings.21c752ae4f4cdb78.sw.png) -**Mambo ya kawaida unayoweza kutaka kurekebisha:** -- Jinsi msimbo wako unavyopangwa (tabu dhidi ya nafasi, urefu wa mistari, nk.) -- Vifupisho vya kibodi vinavyosababisha vitendo tofauti -- Aina gani za faili kiendelezi kinapaswa kufanya kazi nazo -- Kuwasha au kuzima vipengele maalum ili kuweka mambo safi +**Vitu vya kawaida ambavyo unaweza kutaka kubadilisha:** +- Jinsi msimbo wako unavyoandaliwa (taps vs nafasi, urefu wa mstari, n.k.) +- Ni vitufe gani vya kibodi vinavyochochea vitendo tofauti +- Aina ya faili ambazo kiendelezaji kinapaswa kufanya nao kazi +- Kuzima au kuwasha vipengele maalum ili kuweka kila kitu safi -### Kuweka Viendelezi Vyako Vizuri +### Kuweka Vipengele Vyako Katika Mpangilio -Unapogundua viendelezi zaidi vya kuvutia, utataka kuweka mkusanyiko wako safi na unaofanya kazi vizuri. VSCode.dev inafanya hili kuwa rahisi sana kusimamia. +Unapogundua vipengele zaidi vya kuvutia, utataka kuweka mkusanyiko wako katika mpangilio mzuri na kuendesha vizuri. VSCode.dev inafanya hili kuwa rahisi sana kusimamia. -**Chaguo zako za usimamizi wa viendelezi:** +**Chaguzi zako za usimamizi wa vipengele:** -| Unachoweza Kufanya | Wakati Inapokuwa Msaada | Kidokezo cha Mtaalamu | +| Unaweza Kufanya Nini | Linapokuwa Msaada | Kumbukumbu ya Mtaalamu | |--------|---------|----------| -| **Disable** | Kuangalia kama kiendelezi kinasababisha matatizo | Bora kuliko kuondoa ikiwa unaweza kutaka kurudisha | -| **Uninstall** | Kuondoa kabisa viendelezi usivyohitaji | Huweka mazingira yako safi na haraka | -| **Update** | Kupata vipengele vipya na marekebisho ya hitilafu | Kawaida hufanyika kiotomatiki, lakini ni vyema kuangalia | +| **Zima** | Kupima ikiwa kiendelezaji kinayosababisha matatizo | Bora kuliko kuondoa ikiwa ungetaka kurudisha baadaye | +| **Ondoa** | Kuondoa kabisa vipengele usivihitaji | Huweka mazingira yako safi na ya kasi | +| **Sasisha** | Kupata vipengele na marekebisho ya hitilafu mpya | Kawaida hufanyika moja kwa moja, lakini ni vyema kuangalia | + +**Jinsi ninavyopenda kusimamia vipengele:** +- Kila miezi michache, hupitia kile nilicho nacho na kuondoa visivyotumika +- Ninasasisha vipengele ili kupata maboresho mapya na marekebisho ya usalama +- Ikiwa kitu kinaonekana cha polepole, huwasha au kuzima kwa muda vipengele kuona kama kilikuwa chanzo +- Ninasoma maelezo ya sasisho wakati vipengele vinapopata maboresho makubwa – wakati mwingine kuna vipengele vipya vya kuvutia! + +> ⚠️ **Kidokezo cha utendaji**: Vipengele ni vya ajabu, lakini kuwa na nyingi sana kunaweza kuharakisha mfumo. Lenga kwenye zile zinazokuongeza maisha rahisi na usiogope kuondoa zile ambazo hutumiwi kamwe. + +### 🎯 Ukaguzi wa Kifundisho: Urekebishaji wa Mazingira ya Maendeleo + +**Uelewa wa Miundo**: Umejifunza kubinafsisha mazingira ya kitaalamu ya maendeleo kwa kutumia vipengele vilivyotengenezwa na jamii. Hii inaendana na jinsi timu za maendeleo za makampuni zinavyotengeneza zana za kawaida. + +**Mada Muhimu Uliyothibitisha**: +- **Ugunduzi wa Vipengele**: Kupata zana zinazotatua changamoto maalum za maendeleo +- **Usanidi wa Mazingira**: Kubinafsisha zana kufuata mapendeleo binafsi au timu +- **Uboreshaji wa Utendaji**: Kuweka uwiano kati ya ufanisi na utendaji wa mfumo +- **Ushirikiano wa Jamii**: Kutumia zana zilizo tengenezwa na jamii ya watengenezaji duniani -**Jinsi ninavyopenda kusimamia viendelezi:** -- Kila miezi michache, ninapitia nilichosakinisha na kuondoa chochote nisichotumia -- Ninaweka viendelezi vikiwa vimesasishwa ili nipate maboresho ya hivi karibuni na marekebisho ya usalama -- Ikiwa kitu kinaonekana kuwa polepole, ninazima viendelezi kwa muda ili kuona kama moja yao ndiyo sababu -- Ninasoma maelezo ya sasisho wakati viendelezi vinapata sasisho kubwa – wakati mwingine kuna vipengele vipya vya kuvutia! +**Uhusiano wa Sekta**: Mifumo ya vipengele ndio nguvu ya majukwaa makubwa ya maendeleo kama VS Code, Chrome DevTools, na IDE za kisasa. Kuelewa jinsi ya kutathmini, kusakinisha, na kusanidi vipengele ni muhimu kwa mtiririko wa kazi wa kitaalamu. + +**Swali la Tafakari**: Ungedhibiti vipi kuanzisha mazingira ya maendeleo yaliyosawazishwa kwa timu ya watengenezaji 10? Fikiria kuhusu utofauti, utendaji, na mapendeleo binafsi. + +## 📈 Ratiba Yako ya Uwezo wa Maendeleo ya Wingu + +```mermaid +timeline + title Safari ya Uendelezaji wa Wingu ya Kitaalamu + + section Misingi ya Jukwaa + Uelewa wa Uendelezaji wa Wingu + : Jifunze dhana za uhariri mtandaoni + : Unganisha mifumo ya uunganishaji wa GitHub + : Panda kutumia maeneo ya kitaalamu + + section Uwezo wa Kazi + Usimamizi wa Faili & Miradi + : Tengeneza miundo ya mradi uliopangwa + : Jifunze manufaa ya kuonyesha sentensi + : Simamia michakato ya uhariri wa faili nyingi + + Uunganishaji wa Udhibiti wa Toleo + : Elewa uonyesha wa Git + : Fanya mazoezi ya viwango vya ujumbe wa commit + : Jifunze michakato ya kufuatilia mabadiliko + + section Ubinafsishaji wa Mazingira + Eneo la Upanuzi + : Gundua virutubisho vya tija + : Sanidi mapendeleo ya ukuzaji + : Boresha utendaji vs utendakazi + + Usanidi wa Kitaalamu + : Tengeneza michakato thabiti + : Tengeneza usanidi unaoweza kutumika tena + : Weka viwango vya timu + + section Utaalamu wa Sekta + Uendelezaji wa Kwanza Wingu + : Jifunze mazoea ya ukuzaji wa mbali + : Elewa michakato ya ushirikiano + : Jenga ujuzi huru wa jukwaa + + Mazoezi ya Kitaalamu + : Fuata viwango vya sekta + : Tengeneza michakato inayoweza kudumishwa + : Jiandae kwa mazingira ya timu +``` +**🎓 Hatua ya Kuajiliwa**: Umefanikiwa kukamilisha maendeleo ya wingu kwa kutumia zana na mtiririko huo huo unaotumiwa na watengenezaji wa kitaalamu katika makampuni makubwa ya teknolojia. Hizi ni stadi za mustakabali wa maendeleo ya programu. -> ⚠️ **Kidokezo cha Utendaji**: Viendelezi ni vya ajabu, lakini kuwa na vingi sana vinaweza kupunguza kasi ya mambo. Zingatia vile vinavyokufanya maisha yako kuwa rahisi na usisite kuondoa vile usivyotumia. +**🔄 Uwezo wa Ngazi Ifuatayo**: +- Tayari kuchunguza majukwaa ya maendeleo ya wingu ya hali ya juu (Codespaces, GitPod) +- Tayari kufanya kazi katika timu za maendeleo zilizoenea +- Umebeba uwezo wa kuchangia miradi ya chanzo huria duniani +- Msingi umejengwa kwa mbinu za kisasa za DevOps na ujumuishaji endelevu ## Changamoto ya Wakala wa GitHub Copilot 🚀 -Kama mbinu iliyopangwa ambayo NASA hutumia kwa misheni za anga, changamoto hii inahusisha matumizi ya kimfumo ya ujuzi wa VSCode.dev katika hali kamili ya mtiririko wa kazi. +Kama vile NASA inavyotumia mbinu ya muundo kwa misheni za anga za juu, changamoto hii inahusisha matumizi ya kitaalamu ya ujuzi wa VSCode.dev katika hali kamili ya mtiririko wa kazi. -**Lengo:** Onyesha ustadi na VSCode.dev kwa kuanzisha mtiririko wa kazi wa maendeleo ya wavuti. +**Lengo:** Onyesha ufanisi na VSCode.dev kwa kuanzisha mtiririko kamili wa maendeleo ya wavuti. -**Mahitaji ya mradi:** Kwa kutumia msaada wa hali ya Wakala, kamilisha majukumu haya: -1. Fork hifadhi iliyopo au unda mpya +**Mahitaji ya mradi:** Kwa msaada wa hali ya Wakala, kamilisha kazi hizi: +1. Fanya nakala ya hifadhi iliyopo au unda mpya 2. Anzisha muundo wa mradi unaofanya kazi na faili za HTML, CSS, na JavaScript -3. Sakinisha na sanidi viendelezi vitatu vinavyoongeza maendeleo -4. Fanya udhibiti wa toleo na ujumbe wa maelezo ya commit -5. Jaribu kuunda na kurekebisha matawi ya vipengele +3. Sakinisha na sanidi vipengele vitatu vinavyoongeza maendeleo +4. Fanya mazoezi ya udhibiti wa toleo kwa ujumbe wa maelezo wa kujiwekea +5. Jaribu kuunda na kubadilisha matawi ya kipengele 6. Andika mchakato na mafunzo katika faili ya README.md -Zoezi hili linajumuisha dhana zote za VSCode.dev katika mtiririko wa kazi wa vitendo ambao unaweza kutumika kwa miradi ya maendeleo ya baadaye. +Mazoezi haya yanakusanya dhana zote za VSCode.dev katika mtiririko wa kazi wa vitendo unaoweza kutumika kwa miradi ya maendeleo yajayo. Jifunze zaidi kuhusu [hali ya wakala](https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode) hapa. ## Kazi -Ni wakati wa kujaribu ujuzi huu kwa vitendo! Nina mradi wa vitendo utakao kuruhusu kufanya mazoezi ya kila kitu tulichojadili: [Tengeneza tovuti ya wasifu kwa kutumia VSCode.dev](./assignment.md) +Wakati wa kutumia ujuzi huu kwa mtihani halisi! Nina mradi wa vitendo utakayokuwezesha kufanya mazoezi ya kila kitu tulichojifunza: [Unda tovuti ya wasifu kwa kutumia VSCode.dev](./assignment.md) -Kazi hii inakuelekeza jinsi ya kujenga tovuti ya wasifu wa kitaalamu kabisa kwenye kivinjari chako. Utatumia vipengele vyote vya VSCode.dev tulivyovijadili, na mwishoni, utakuwa na tovuti nzuri na ujasiri thabiti katika mtiririko wako mpya wa kazi. +Kazi hii itakuongoza kujenga tovuti ya kitaalamu ya wasifu kabisa kwa kutumia kivinjari chako. Utatumia sifa zote za VSCode.dev tulizochunguza, na mwishoni utakuwa na tovuti nzuri pamoja na uhakika imara katika mtiririko wako mpya wa kazi. ## Endelea Kuchunguza na Kuongeza Ujuzi Wako -Sasa una msingi mzuri, lakini kuna mambo mengi zaidi ya kuvutia ya kugundua! Hapa kuna rasilimali na mawazo ya kukuza ujuzi wako wa VSCode.dev: +Umejenga msingi mzuri sasa, lakini kuna mambo mengi ya kuvutia zaidi ya kugundua! Hapa ni baadhi ya rasilimali na mawazo ya kuinua ujuzi wako wa VSCode.dev hadi ngazi inayofuata: -**Nyaraka rasmi zinazofaa kuwekwa alama:** -- [Nyaraka za VSCode Web](https://code.visualstudio.com/docs/editor/vscode-web?WT.mc_id=academic-0000-alfredodeza) – Mwongozo kamili wa kuhariri kwa kutumia kivinjari -- [GitHub Codespaces](https://docs.github.com/en/codespaces) – Kwa wakati unapotaka nguvu zaidi kwenye wingu +**Nyaraka rasmi za kuenzi:** +- [Nyaraka za Mtandao wa VSCode](https://code.visualstudio.com/docs/editor/vscode-web?WT.mc_id=academic-0000-alfredodeza) – Mwongozo kamili wa kuhariri kwenye kivinjari +- [GitHub Codespaces](https://docs.github.com/en/codespaces) – Kwa wakati unapotaka nguvu zaidi katika wingu -**Vipengele vya kuvutia vya kujaribu baadaye:** -- **Vifupisho vya Kibodi**: Jifunze mchanganyiko wa funguo utakufanya uhisi kama ninja wa msimbo -- **Mipangilio ya Workspace**: Sanidi mazingira tofauti kwa aina tofauti za miradi -- **Multi-root Workspaces**: Fanya kazi kwenye hifadhi nyingi kwa wakati mmoja (inasaidia sana!) -- **Ujumuishaji wa Terminal**: Fikia zana za mstari wa amri moja kwa moja kwenye kivinjari chako +**Vipengele vya kufurahisha vya kujaribu baadaye:** +- **Mifungo ya Kibodi**: Jifunze mchanganyiko wa funguo utakayohisi kama mtaalamu wa kuandika msimbo +- **Mipangilio ya Eneo la Kazi**: Andaa mazingira tofauti kwa aina tofauti za miradi +- **Mazingira ya Kazi ya Msingi Mwingi**: Fanya kazi kwenye hifadhi nyingi kwa wakati mmoja (ni rahisi sana!) +- **Uunganisho wa Terminal**: Pata zana za mstari wa amri moja kwa moja kwenye kivinjari chako **Mawazo ya kufanya mazoezi:** -- Jiunge na miradi ya chanzo huria na uchangie ukitumia VSCode.dev – ni njia nzuri ya kurudisha! -- Jaribu viendelezi tofauti ili kupata mpangilio wako bora -- Unda templeti za miradi kwa aina za tovuti unazojenga mara nyingi -- Fanya mazoezi ya mtiririko wa kazi wa Git kama kuunda matawi na kuunganisha – ujuzi huu ni dhahabu katika miradi ya timu +- Jitose kwenye miradi ya chanzo huria na changia kwa kutumia VSCode.dev – ni njia nzuri ya kutoa msaada! +- Jaribu vipengele tofauti kutafuta mpangilio wako kamili +- Unda templeti za miradi kwa aina za tovuti unazojenga mara nyingi zaidi +- Fanya mazoezi ya mikondo ya Git kama matawi na mchanganyiko – hizi ni dhahabu kwa miradi ya timu --- -**Umebobea katika maendeleo ya msingi wa kivinjari!** 🎉 Kama jinsi uvumbuzi wa vyombo vinavyobebeka uliruhusu wanasayansi kufanya utafiti katika maeneo ya mbali, VSCode.dev inawezesha usimbaji wa kitaalamu kutoka kwa kifaa chochote chenye muunganisho wa intaneti. +**Umeshinda maendeleo ya kivinjari!** 🎉 Kama vile uvumbuzi wa vyombo vinavyobebwa ulivyoruhusu wanasayansi kufanya utafiti katika maeneo ya mbali, VSCode.dev inakuwezesha kuandika msimbo kitaaluma kutoka kifaa chochote kilichounganishwa na intaneti. -Ujuzi huu unaakisi mazoea ya sasa ya sekta – watengenezaji wengi wa kitaalamu hutumia mazingira ya maendeleo ya msingi wa wingu kwa kubadilika na upatikanaji wake. Umejifunza mtiririko wa kazi unaoweza kupanuka kutoka miradi ya mtu binafsi hadi ushirikiano wa timu kubwa. +Stadi hizi zinaonyesha mbinu za sasa za sekta – watengenezaji wengi wa kitaalamu hutumia mazingira ya maendeleo ya wingu kwa ugumu na upatikanaji wake. Umejifunza mtiririko wa kazi unaobadilika kutoka kwenye miradi ya mtu binafsi hadi ushirikiano mkubwa wa timu. -Tumia mbinu hizi kwenye mradi wako wa maendeleo unaofuata! 🚀 +Tumia mbinu hizi kwa mradi wako unaofuata wa maendeleo! 🚀 --- -**Kanusho**: -Hati hii imetafsiriwa kwa kutumia huduma ya kutafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kwa usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file + +**Tangazo la Kukataa**: +Nyaraka hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kwa usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kasoro. Nyaraka asili katika lugha yake ya asili inapaswa kuchukuliwa kama chanzo halali. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na binadamu inashauriwa. Hatuwajibiki kwa kutokuelewana au tafsiri potofu zinazotokana na matumizi ya tafsiri hii. + \ No newline at end of file diff --git a/translations/sw/8-code-editor/1-using-a-code-editor/assignment.md b/translations/sw/8-code-editor/1-using-a-code-editor/assignment.md index 057be3245..249fd020c 100644 --- a/translations/sw/8-code-editor/1-using-a-code-editor/assignment.md +++ b/translations/sw/8-code-editor/1-using-a-code-editor/assignment.md @@ -78,7 +78,7 @@ Kwa kuwa VSCode.dev inahitaji angalau faili moja kufungua hifadhi, tutaunda fail 4. **Andika** ujumbe wa kujitolea: "Ongeza muundo wa awali wa HTML" 5. **Bonyeza** "Commit new file" ili kuhifadhi mabadiliko yako -![Kuunda faili ya awali kwenye GitHub](../../../../translated_images/new-file-github.com.c886796d800e8056561829a181be1382c5303da9d902d8b2dd82b68a4806e21f.sw.png) +![Kuunda faili ya awali kwenye GitHub](../../../../translated_images/new-file-github.com.c886796d800e8056.sw.png) **Hiki ndicho uanzishaji huu wa awali unakamilisha:** - **Unaunda** muundo sahihi wa hati ya HTML5 na vipengele vya kimantiki @@ -104,7 +104,7 @@ Sasa kwa kuwa msingi wa hifadhi yako umeanzishwa, hebu tubadilishe kwa VSCode.de ✅ **Kiashiria cha mafanikio**: Unapaswa kuona faili za mradi wako kwenye upau wa kando wa Explorer na `index.html` ikipatikana kwa kuhariri kwenye eneo kuu la mhariri. -![Mradi umepakiwa kwenye VSCode.dev](../../../../translated_images/project-on-vscode.dev.e79815a9a95ee7feac72ebe5c941c91279716be37c575dbdbf2f43bea2c7d8b6.sw.png) +![Mradi umepakiwa kwenye VSCode.dev](../../../../translated_images/project-on-vscode.dev.e79815a9a95ee7fe.sw.png) **Unachokiona kwenye kiolesura:** - **Upau wa kando wa Explorer**: **Unaonyesha** faili za hifadhi yako na muundo wa folda @@ -448,7 +448,7 @@ Viendelezi vinaboresha uzoefu wako wa maendeleo kwa kutoa uwezo wa hakikisho la **Matokeo ya haraka baada ya usakinishaji:** Mara tu CodeSwing itakaposakinishwa, utaona hakikisho la moja kwa moja la tovuti yako ya resume likijitokeza kwenye mhariri. Hii inakuwezesha kuona jinsi tovuti yako inavyoonekana unavyofanya mabadiliko. -![Kiendelezi cha CodeSwing kikionyesha hakikisho la moja kwa moja](../../../../translated_images/after-codeswing-extension-pb.0ebddddcf73b550994947a9084e35e2836c713ae13839d49628e3c764c1cfe83.sw.png) +![Kiendelezi cha CodeSwing kikionyesha hakikisho la moja kwa moja](../../../../translated_images/after-codeswing-extension-pb.0ebddddcf73b5509.sw.png) **Kuelewa kiolesura kilichoboreshwa:** - **Muonekano wa mgawanyiko**: **Unaonyesha** msimbo wako upande mmoja na hakikisho la moja kwa moja upande mwingine diff --git a/translations/sw/9-chat-project/README.md b/translations/sw/9-chat-project/README.md index 1eef189a3..47f8497cf 100644 --- a/translations/sw/9-chat-project/README.md +++ b/translations/sw/9-chat-project/README.md @@ -1,102 +1,213 @@ -# Jinsi ya Kujenga Msaidizi wa Mazungumzo kwa Kutumia AI +# Jenga Msaidizi wa Chat kwa AI -Unakumbuka kwenye Star Trek jinsi wafanyakazi walivyokuwa wakiongea na kompyuta ya meli, wakiuliza maswali magumu na kupata majibu ya kina? Kile kilichoonekana kama hadithi ya kisayansi katika miaka ya 1960 sasa ni kitu unachoweza kujenga kwa kutumia teknolojia za mtandao unazozijua tayari. +Kumbuka kwenye Star Trek wanapotumia mazungumzo ya kawaida na kompyuta ya meli, wakimuuliza maswali magumu na kupata majibu yenye fikira? Kinachokuwa kama hadithi ya sayansi katika miaka ya 1960 sasa ni kitu ambacho unaweza kujenga kwa kutumia teknolojia za wavuti unazozijua tayari. -Katika somo hili, tutatengeneza msaidizi wa mazungumzo wa AI kwa kutumia HTML, CSS, JavaScript, na muunganisho wa nyuma. Utajifunza jinsi ujuzi ule ule unaojifunza unaweza kuunganishwa na huduma za AI zenye uwezo wa kuelewa muktadha na kutoa majibu yenye maana. +Katika somo hili, tutaunda msaidizi wa AI wa mazungumzo kwa kutumia HTML, CSS, JavaScript, na muunganisho wa nyuma. Utagundua jinsi ujuzi ule ule ambao umekuwa ukijifunza unaweza kuunganishwa na huduma zenye nguvu za AI ambazo zinaweza kuelewa muktadha na kutoa majibu yenye maana. -Fikiria AI kama kuwa na ufikiaji wa maktaba kubwa ambayo si tu inapata taarifa bali pia inazichanganya kuwa majibu yanayofaa kulingana na maswali yako maalum. Badala ya kutafuta kupitia maelfu ya kurasa, unapata majibu ya moja kwa moja na ya muktadha. +Fikiria AI kama kuwa na upatikanaji wa maktaba kubwa ambayo si tu inatafuta taarifa bali pia inaunda majibu yaliyo na maelezo yaliyounganishwa na maswali yako maalum. Badala ya kutafuta kupitia maelfu ya kurasa, unapata majibu ya moja kwa moja na yenye muktadha. -Muunganisho unafanyika kupitia teknolojia za mtandao zinazofanya kazi pamoja. HTML inaunda kiolesura cha mazungumzo, CSS inashughulikia muundo wa kuona, JavaScript inasimamia mwingiliano wa mtumiaji, na API ya nyuma inaunganisha kila kitu na huduma za AI. Ni sawa na jinsi sehemu tofauti za orchestra zinavyofanya kazi pamoja kuunda symphony. +Muunganisho hufanyika kupitia teknolojia za wavuti zinazojulikana zinazofanya kazi pamoja. HTML huunda kiolesura cha mazungumzo, CSS hushughulikia muundo wa kuona, JavaScript inasimamia mwingiliano wa mtumiaji, na API ya nyuma inaunganisha kila kitu na huduma za AI. Hii ni sawa na jinsi sehemu tofauti za orkesta zinavyofanya kazi pamoja kuunda sinfonia. -Kimsingi tunajenga daraja kati ya mawasiliano ya kawaida ya binadamu na usindikaji wa mashine. Utajifunza utekelezaji wa kiufundi wa muunganisho wa huduma za AI na mifumo ya muundo inayofanya mwingiliano kuwa wa kawaida. +Kwa msingi, tunajenga daraja kati ya mawasiliano ya asili ya binadamu na usindikaji wa mashine. Utajifunza utekelezaji wa kiufundi wa muunganisho wa huduma za AI na mifumo ya muundo inayofanya mwingiliano hisike kwa njia ya asili. -Mwisho wa somo hili, muunganisho wa AI hautahisi kama mchakato wa ajabu bali kama API nyingine unayoweza kufanya kazi nayo. Utaelewa mifumo ya msingi inayowezesha programu kama ChatGPT na Claude, kwa kutumia kanuni zile zile za maendeleo ya mtandao unazojifunza. +Mwisho wa somo hili, muunganisho wa AI utakuhisi si kama mchakato wa ajabu bali kama API nyingine unayoweza kutumia. Utatafuta mifumo ya msingi inayochochea programu kama ChatGPT na Claude, ukitumia kanuni zile zile za maendeleo ya wavuti ulizojifunza. -Hivi ndivyo mradi wako wa mwisho utakavyoonekana: +## ⚡ Unaweza Kufanya Nini Katika Dakika 5 Zijazo -![Kiolesura cha programu ya mazungumzo kinachoonyesha mazungumzo kati ya mtumiaji na msaidizi wa AI](../../../translated_images/screenshot.0a1ee0d123df681b4501eb53ffb267519fcc20aa653eabecef1e7561ddfb1cab.sw.png) +**Njia ya Kuanzisha Haraka kwa Waendelezaji Walioko Mbusy** -## Kuelewa AI: Kutoka Siri hadi Ustadi +```mermaid +flowchart LR + A[⚡ Dakika 5] --> B[Pata tokeni ya GitHub] + B --> C[Jaribu uwanja wa michezo wa AI] + C --> D[Nakili msimbo wa Python] + D --> E[Tazama majibu ya AI] +``` +- **Dakika 1**: Tembelea [GitHub Models Playground](https://github.com/marketplace/models/azure-openai/gpt-4o-mini/playground) na tengeneza tokeni ya upatikanaji binafsi +- **Dakika 2**: Jaribu mwingiliano wa AI moja kwa moja kwenye kiolesura cha playground +- **Dakika 3**: Bonyeza kichupo cha "Code" na nakili kipande cha Python +- **Dakika 4**: Endesha msimbo kwa ndani kwa kutumia tokeni yako: `GITHUB_TOKEN=your_token python test.py` +- **Dakika 5**: Tazama jibu lako la kwanza la AI likiundwa kutoka kwa msimbo wako mwenyewe -Kabla ya kuingia kwenye msimbo, hebu tuelewe tunachofanya kazi nacho. Ikiwa umewahi kutumia API, unajua muundo wa msingi: tuma ombi, pokea jibu. +**Msimbo wa Jaribio la Haraka**: +```python +import os +from openai import OpenAI -API za AI zinafuata muundo sawa, lakini badala ya kupata data iliyohifadhiwa kutoka kwenye hifadhidata, zinazalisha majibu mapya kulingana na mifumo iliyojifunza kutoka kwa maandishi mengi. Fikiria kama tofauti kati ya mfumo wa katalogi ya maktaba na mtaalamu wa maktaba anayejua kuchanganya taarifa kutoka vyanzo mbalimbali. +client = OpenAI( + base_url="https://models.github.ai/inference", + api_key="your_token_here" +) -### "Generative AI" ni Nini Haswa? +response = client.chat.completions.create( + messages=[{"role": "user", "content": "Hello AI!"}], + model="openai/gpt-4o-mini" +) -Fikiria jinsi Jiwe la Rosetta lilivyowezesha wasomi kuelewa hieroglyphics za Misri kwa kutafuta mifumo kati ya lugha zinazojulikana na zisizojulikana. Miundo ya AI inafanya kazi kwa njia sawa – inatafuta mifumo katika maandishi mengi ili kuelewa jinsi lugha inavyofanya kazi, kisha kutumia mifumo hiyo kutoa majibu yanayofaa kwa maswali mapya. +print(response.choices[0].message.content) +``` + +**Kwa Nini Hii ni Muhimu**: Ndani ya dakika 5, utaona uchawi wa mwingiliano wa AI kwa programu. Hii inaonyesha kizuizi cha msingi kinachochochea kila programu ya AI unayotumia. + +Hivi ndivyo mradi wako utakavyoonekana umemalizika: -**Hebu niweke wazi kwa kulinganisha rahisi:** -- **Hifadhidata ya jadi**: Kama kuuliza cheti chako cha kuzaliwa – unapata hati ile ile kila wakati -- **Injini ya utafutaji**: Kama kuuliza mtaalamu wa maktaba kutafuta vitabu kuhusu paka – wanakuonyesha kilichopo -- **Generative AI**: Kama kuuliza rafiki mwenye ujuzi kuhusu paka – wanakuambia mambo ya kuvutia kwa maneno yao wenyewe, kulingana na unachotaka kujua +![Chat app interface showing conversation between user and AI assistant](../../../translated_images/screenshot.0a1ee0d123df681b.sw.png) + +## 🗺️ Safari Yako ya Kujifunza Kupitia Maendeleo ya Programu za AI + +```mermaid +journey + title Kutoka Maendeleo ya Wavuti hadi Muunganiko wa AI + section Kuelewa Misingi ya AI + Gundua dhana za AI inayotengeneza: 4: You + Chunguza jukwaa la Models la GitHub: 6: You + Kamilisha vigezo na maagizo ya AI: 8: You + section Muunganiko wa Backend + Jenga seva ya API ya Python: 5: You + Tekeleza simu za kazi za AI: 7: You + Shughulikia shughuli zisizo za wakati mmoja: 8: You + section Maendeleo ya Mbele (Frontend) + Tengeneza interface ya mazungumzo ya kisasa: 6: You + Kamilisha mwingiliano wa wakati halisi: 8: You + Jenga uzoefu wa mtumiaji unaojibu: 9: You + section Maombi ya Kitaalamu + Tumia mfumo kamili wa AI: 7: You + Boresha mifumo ya utendaji: 8: You + Tengeneza app inayostahili uzalishaji: 9: You +``` +**Hatua Yako ya Mwisho**: Mwisho wa somo hili, utakuwa umejenga programu kamilifu inayotumia AI kwa kutumia teknolojia na mifumo ileile inayochochea wasaidizi wa AI wa kisasa kama ChatGPT, Claude, na Google Bard. + +## Kuelewa AI: Kutoka Shaka hadi Utaalamu + +Kabla ya kuingia kwenye msimbo, hebu kuelewa tunafanya kazi na nini. Ikiwa umewahi kutumia API hapo awali, unajua muundo wa msingi: tuma ombi, pokea jibu. + +API za AI hufuata muundo ule ule, lakini badala ya kupata data iliyohifadhiwa tayari kutoka kwa hifadhidata, zinatengeneza majibu mapya kulingana na mifumo iliyojifunza kutoka kwa maandishi mengi sana. Fikiria kama tofauti kati ya mfumo wa katalogi wa maktaba na mkutubi mwenye maarifa anayeweza kuchanganya taarifa kutoka vyanzo vingi. + +### Nini Ni "AI Inayozalisha" Kweli? + +Fikiria jinsi Jiwe la Rosetta lilivyoruhusu wataalamu kuelewa hieroglyphics za Misri kwa kutafuta mifumo kati ya lugha zinazoeleweka na zisizoeleweka. Mifano ya AI hufanya jambo kama hilo – huita patterns kutoka kwa maandishi mengi kuelewa jinsi lugha inavyofanya kazi, halafu hutumia mifano hiyo kutengeneza majibu yanayofaa kwa maswali mapya. + +**Hebu niifafanue kwa kulinganisha rahisi:** +- **Hifadhidata ya kawaida**: Kama kuomba cheti chako cha kuzaliwa – unapata hati ile ile kila wakati +- **Mfumo wa utafutaji**: Kama kumuomba mkutubi kupata vitabu kuhusu paka – wanaonyesha kinachopatikana +- **AI Inayozalisha**: Kama kumuuliza rafiki mwenye maarifa kuhusu paka – wanakuambia mambo ya kuvutia kwa maneno yao wenyewe, yaliyobinafsishwa kwa kile unachotaka kujua ```mermaid graph LR - A[Your Question] --> B[AI Model] - B --> C[Pattern Recognition] - C --> D[Content Generation] - D --> E[Contextual Response] + A[Swali Lako] --> B[Mfano wa AI] + B --> C[Utambuzi wa Mifumo] + C --> D[Uundaji wa Yaliyomo] + D --> E[Jibu la Muktadha] - F[Training Data
Books, Articles, Web] --> B + F[Data ya Mafunzo
Vitabu, Makala, Tovuti] --> B ``` +### Jinsi Mifano ya AI Hujifunza (Toleo Rahisi) -### Jinsi Miundo ya AI Inavyojifunza (Toleo Rahisi) - -Miundo ya AI hujifunza kupitia kufichuliwa na seti kubwa za data zinazojumuisha maandishi kutoka vitabu, makala, na mazungumzo. Kupitia mchakato huu, inatambua mifumo katika: -- Jinsi mawazo yanavyopangwa katika mawasiliano ya maandishi -- Maneno yanayojitokeza pamoja mara kwa mara -- Jinsi mazungumzo yanavyotiririka kawaida +Mifano ya AI hujifunza kupitia kufundishwa na seti kubwa za data zinazojumuisha maandishi kutoka vitabu, makala, na mazungumzo. Kupitia mchakato huu, hutambua mifumo katika: +- Jinsi mawazo yanavyopangwa katika mawasiliano yaliyoandikwa +- Ni maneno gani yanayotokea pamoja mara kwa mara +- Jinsi mazungumzo huendelea kawaida - Tofauti za muktadha kati ya mawasiliano rasmi na yasiyo rasmi -**Ni sawa na jinsi wanajiolojia wanavyotafsiri lugha za kale**: wanachambua maelfu ya mifano ili kuelewa sarufi, msamiati, na muktadha wa kitamaduni, hatimaye kuwa na uwezo wa kutafsiri maandishi mapya kwa kutumia mifumo iliyojifunza. +**Hii ni sawa na jinsi wanasayansi wa kale wanavyofasiri lugha za zamani**: huchambua maelfu ya mifano kuelewa sarufi, msamiati, na muktadha wa kitamaduni, na hatimaye kuwa na uwezo wa kutafsiri maandishi mapya kwa kutumia mifumo hiyo iliyojifunza. -### Kwa Nini Miundo ya GitHub? +### Kwa Nini GitHub Models? -Tunatumia Miundo ya GitHub kwa sababu ya sababu ya kiutendaji – inatupa ufikiaji wa AI ya kiwango cha biashara bila kulazimika kuanzisha miundombinu yetu ya AI (ambayo, kwa hakika, hutaki kufanya sasa hivi!). Fikiria kama kutumia API ya hali ya hewa badala ya kujaribu kutabiri hali ya hewa mwenyewe kwa kuanzisha vituo vya hali ya hewa kila mahali. +Tunatumia GitHub Models kwa sababu ya kiutendaji – inatupa upatikanaji wa AI ya viwango vya biashara bila kuanzisha miundombinu yetu ya AI (ambayo, niamini, hutaki kufanya sasa hivi!). Fikiria kama kutumia API ya hali ya hewa badala ya kujaribu kutabiri hali ya hewa mwenyewe kwa kuweka vituo vya hali ya hewa kila mahali. -Ni kimsingi "AI-kama-Huduma," na sehemu bora? Ni bure kuanza, kwa hivyo unaweza kujaribu bila kuwa na wasiwasi kuhusu gharama kubwa. +Hii ni "AI kama Huduma," na sehemu nzuri ni kwamba ni bure kuanza, hivyo unaweza kujaribu bila wasiwasi wa gharama kubwa. ```mermaid graph LR - A[Frontend Chat UI] --> B[Your Backend API] - B --> C[GitHub Models API] - C --> D[AI Model Processing] + A[UI ya Chat ya Mbele] --> B[API Yako ya Backend] + B --> C[API za Mfano wa GitHub] + C --> D[Usindikaji wa Mfano wa AI] D --> C C --> B B --> A ``` +Tutatumia GitHub Models kwa muunganisho wetu wa nyuma, inayotoa upatikanaji wa uwezo wa AI wa kiwango cha kitaalamu kupitia kiolesura kinachopendelewa na waendelezaji. [GitHub Models Playground](https://github.com/marketplace/models/azure-openai/gpt-4o-mini/playground) ni mazingira ya majaribio ambapo unaweza kujaribu mifano tofauti ya AI na kuelewa uwezo wake kabla ya kuitekeleza katika msimbo. + +## 🧠 Mfumo wa Maendeleo ya Programu za AI -Tutatumia Miundo ya GitHub kwa muunganisho wetu wa nyuma, ambayo hutoa ufikiaji wa uwezo wa AI wa kiwango cha kitaalamu kupitia kiolesura kinachofaa kwa watengenezaji. [GitHub Models Playground](https://github.com/marketplace/models/azure-openai/gpt-4o-mini/playground) inatumika kama mazingira ya majaribio ambapo unaweza kujaribu miundo tofauti ya AI na kuelewa uwezo wake kabla ya kuitekeleza kwenye msimbo. +```mermaid +mindmap + root((AI Development)) + Understanding AI + Generative Models + Pattern Recognition + Content Generation + Context Understanding + Response Synthesis + AI Parameters + Temperature Control + Token Limits + Top-p Filtering + System Prompts + Backend Architecture + API Integration + GitHub Models + Authentication + Request Handling + Error Management + Python Infrastructure + FastAPI Framework + Async Operations + Environment Security + CORS Configuration + Frontend Experience + Chat Interface + Real-time Updates + Message History + User Feedback + Loading States + Modern Web Tech + ES6 Classes + Async/Await + DOM Manipulation + Event Handling + Professional Patterns + Security Best Practices + Token Management + Input Validation + XSS Prevention + Error Boundaries + Production Readiness + Performance Optimization + Responsive Design + Accessibility + Testing Strategies +``` +**Kanuni Msingi**: Maendeleo ya programu za AI yanachanganya ujuzi wa maendeleo ya wavuti wa kawaida na muunganisho wa huduma za AI, kuunda programu za akili zinazohisi kuwa za asili na zinazojibu watumiaji vizuri. -![Kiolesura cha GitHub Models AI Playground kinachoonyesha uteuzi wa modeli na eneo la majaribio](../../../translated_images/playground.d2b927122224ff8ff4028fc842176e353c339147d8925455f36c92fb1655c477.sw.png) +![GitHub Models AI Playground interface with model selection and testing area](../../../translated_images/playground.d2b927122224ff8f.sw.png) -**Hivi ndivyo uwanja wa majaribio unavyofaa:** -- **Jaribu** miundo tofauti ya AI kama GPT-4o-mini, Claude, na nyinginezo (bure kabisa!) -- **Pima** mawazo yako na maelekezo kabla ya kuandika msimbo wowote -- **Pata** vipande vya msimbo vilivyotayarishwa kwa lugha yako ya programu unayoipenda -- **Rekebisha** mipangilio kama kiwango cha ubunifu na urefu wa majibu ili kuona jinsi yanavyoathiri matokeo +**Hapa ni kinachofanya playground kuwa muhimu:** +- **Jaribu** mifano tofauti ya AI kama GPT-4o-mini, Claude, na mingine (zote ni bure!) +- **Testi** mawazo yako na maelekezo kabla hujaandika msimbo wowote +- **Pata** vipande vya msimbo vinavyotumika moja kwa moja kwa lugha unayopendelea ya programu +- **Boresha** mipangilio kama kiwango cha ubunifu na urefu wa jibu kuona jinsi zinavyoathiri matokeo -Baada ya kucheza kidogo, bonyeza tu kichupo cha "Code" na uchague lugha yako ya programu ili kupata msimbo wa utekelezaji utakaohitaji. +Baada ya kucheza kidogo, bonyeza kichupo cha "Code" na chagua lugha yako ya programu kupata msimbo wa utekelezaji utakao hitajiwa. -![Uchaguzi wa uwanja wa majaribio unaoonyesha chaguo za kizazi cha msimbo kwa lugha tofauti za programu](../../../translated_images/playground-choice.1d23ba7d407f47584c9f446c77f0bcf70cae794cc9c8d7849a3cca4a3693e6c4.sw.png) +![Playground choice showing code generation options for different programming languages](../../../translated_images/playground-choice.1d23ba7d407f4758.sw.png) -## Kuweka Muunganisho wa Nyuma wa Python +## Kuanzisha Muunganisho wa Backend wa Python -Sasa hebu tutekeleze muunganisho wa AI kwa kutumia Python. Python ni bora kwa programu za AI kwa sababu ya sintaksia yake rahisi na maktaba zenye nguvu. Tutaanza na msimbo kutoka uwanja wa majaribio wa Miundo ya GitHub kisha kuubadilisha kuwa kazi inayoweza kutumika tena na inayofaa kwa uzalishaji. +Sasa tutaweka muunganisho wa AI kwa kutumia Python. Python ni nzuri kwa programu za AI kwa sababu ya sarufi yake rahisi na maktaba zenye nguvu. Tutaanza na msimbo kutoka GitHub Models playground kisha tuurekebishe ili kuwa kazi inayoweza kutumika tena na tayari kwa uzalishaji. ### Kuelewa Utekelezaji wa Msingi -Unapochukua msimbo wa Python kutoka uwanja wa majaribio, utapata kitu kinachoonekana kama hiki. Usijali ikiwa inaonekana kuwa nyingi mwanzoni – hebu tuipitie kipande kwa kipande: +Unapopata msimbo wa Python kutoka playground, utapata kitu kinachofanana na hiki. Usijali kama kinaonekana kuwa kingi mwanzoni – tuitakaye kidogo kidogo: ```python """Run this model in Python @@ -106,14 +217,13 @@ Unapochukua msimbo wa Python kutoka uwanja wa majaribio, utapata kitu kinachoone import os from openai import OpenAI -# To authenticate with the model you will need to generate a personal access token (PAT) in your GitHub settings. -# Create your PAT token by following instructions here: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens +# Ili kuthibitisha na modeli utahitaji kuunda tokeni ya upatikanaji binafsi (PAT) kwenye mipangilio yako ya GitHub. +# Unda tokeni yako ya PAT kwa kufuata maelekezo hapa: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens client = OpenAI( base_url="https://models.github.ai/inference", api_key=os.environ["GITHUB_TOKEN"], ) -```python response = client.chat.completions.create( messages=[ { @@ -134,17 +244,17 @@ response = client.chat.completions.create( print(response.choices[0].message.content) ``` -**Hivi ndivyo kinachotokea kwenye msimbo huu:** -- **Tunajumuisha** zana tunazohitaji: `os` kwa kusoma vigezo vya mazingira na `OpenAI` kwa kuzungumza na AI -- **Tunasanidi** mteja wa OpenAI kuelekeza kwenye seva za AI za GitHub badala ya OpenAI moja kwa moja -- **Tunathibitisha** kwa kutumia tokeni maalum ya GitHub (zaidi kuhusu hilo baadaye!) -- **Tunapanga** mazungumzo yetu na "roles" tofauti – fikiria kama kuweka mandhari ya mchezo wa kuigiza -- **Tunatuma** ombi letu kwa AI na baadhi ya vigezo vya kurekebisha -- **Tunatoa** maandishi halisi ya majibu kutoka kwa data yote inayorudi +**Hivi ndivyo msimbo unavyofanya:** +- **Tunachukua** zana tunazohitaji: `os` kusoma mazingira ya mabadiliko na `OpenAI` kuzungumza na AI +- **Tunaanzisha** mteja wa OpenAI kuelekea seva za AI za GitHub badala ya OpenAI moja kwa moja +- **Tunathibitisha** kwa kutumia tokeni maalum ya GitHub (zaidi kuhusu hayo baadae!) +- **Tunapanga** mazungumzo yetu na "maudhi" tofauti – fikiria kama kuweka onyesho kwa tamthilia +- **Tunatuma** ombi letu kwa AI na baadhi ya vigezo vya kufinyanga +- **Tunachukua** maandishi halisi ya jibu kutoka kwenye data yote inayorudi -### Kuelewa Majukumu ya Ujumbe: Mfumo wa Mazungumzo ya AI +### Kuelewa Nafasi za Ujumbe: Mfumo wa Mazungumzo wa AI -Mazungumzo ya AI hutumia muundo maalum na "roles" tofauti zinazotumikia madhumuni maalum: +Mazungumzo ya AI hutumia muundo maalum wenye “maudhi” tofauti yenye majukumu tofauti: ```python messages=[ @@ -159,97 +269,97 @@ messages=[ ] ``` -**Fikiria kama kuongoza mchezo wa kuigiza:** -- **System role**: Kama maelekezo ya jukwaa kwa mwigizaji – inamwambia AI jinsi ya kujiendesha, tabia gani kuwa nayo, na jinsi ya kujibu -- **User role**: Swali halisi au ujumbe kutoka kwa mtu anayetumia programu yako -- **Assistant role**: Jibu la AI (hili hutumika katika historia ya mazungumzo lakini halitumwi) +**Fikiria kama kuongoza tamthilia:** +- **Nafasi ya mfumo**: Kama maelekezo ya jukwaani kwa mhusika – inamuambia AI jinsi ya tabia, utu wake, na jinsi ya kujibu +- **Nafasi ya mtumiaji**: Swali halisi au ujumbe kutoka kwa mtu anayetumia programu yako +- **Nafasi ya msaidizi**: Jibu la AI (huli tuma, lakini linaonekana katika historia ya mazungumzo) -**Mfano wa maisha halisi**: Fikiria unamtambulisha rafiki kwa mtu kwenye sherehe: -- **Ujumbe wa mfumo**: "Huyu ni rafiki yangu Sarah, yeye ni daktari mzuri katika kuelezea dhana za matibabu kwa njia rahisi" -- **Ujumbe wa mtumiaji**: "Unaweza kuelezea jinsi chanjo zinavyofanya kazi?" -- **Jibu la msaidizi**: Sarah anajibu kama daktari rafiki, si kama wakili au mpishi +**Mfano wa maisha halisi**: Fikiria unamtambulisha rafiki kwa mtu kwenye karamu: +- **Ujumbe wa mfumo**: "Huyu ni rafiki yangu Sarah, ni daktari mzuri wa kuelezea dhana za matibabu kwa maneno rahisi" +- **Ujumbe wa mtumiaji**: "Unaweza kufafanua jinsi chanjo zinavyofanya kazi?" +- **Jibu la msaidizi**: Sarah anajibu kama daktari mkarimu, si kama mwanasheria au mpishi -### Kuelewa Vigezo vya AI: Kurekebisha Tabia ya Majibu +### Kuelewa Vigezo vya AI: Kufinyanga Tabia ya Jibu -Vigezo vya nambari katika miito ya API ya AI vinadhibiti jinsi modeli inavyotoa majibu. Mipangilio hii inakuruhusu kurekebisha tabia ya AI kwa matumizi tofauti: +Vigezo vya nambari katika API za AI vinadhibiti jinsi mfano unavyotengeneza majibu. Mipangilio hii inakuwezesha kurekebisha tabia ya AI kwa matumizi tofauti: -#### Temperature (0.0 hadi 2.0): Kidhibiti Ubunifu +#### Joto (0.0 hadi 2.0): Diali ya Ubunifu -**Kazi yake**: Hudhibiti jinsi majibu ya AI yatakavyokuwa ya ubunifu au yanayotarajiwa. +**Inafanya nini**: Inadhibiti ni kiasi gani majibu ya AI yatakuwa ya ubunifu au yanayoweza kutabirika. -**Fikiria kama kiwango cha ubunifu cha mpiga jazz:** -- **Temperature = 0.1**: Kucheza melodi ile ile kila wakati (inayotarajiwa sana) -- **Temperature = 0.7**: Kuongeza tofauti za ladha huku ikibaki kutambulika (ubunifu wa wastani) -- **Temperature = 1.5**: Jazz ya majaribio kamili na mabadiliko yasiyotarajiwa (isiyotabirika sana) +**Fikiria kama kiwango cha kuigiza kwa mwanamuziki wa jazz:** +- **Joto = 0.1**: Kuimba melodi ile ile kila mara (inayoweza kutabirika sana) +- **Joto = 0.7**: Kuongeza mabadiliko ya ladha huku ukibaki waeleweke (uwezo wa ubunifu wa wastani) +- **Joto = 1.5**: Jazz ya majaribio kamili yenye miondoko isiyotabirika (ubunifu mkubwa) ```python -# Very predictable responses (good for factual questions) +# Majibu yanayoweza kutabirika sana (mzuri kwa maswali ya ukweli) response = client.chat.completions.create( messages=[{"role": "user", "content": "What is 2+2?"}], - temperature=0.1 # Will almost always say "4" + temperature=0.1 # Takriban kila mara atasema "4" ) -# Creative responses (good for brainstorming) +# Majibu ya ubunifu (mzuri kwa kuibua mawazo) response = client.chat.completions.create( messages=[{"role": "user", "content": "Write a creative story opening"}], - temperature=1.2 # Will generate unique, unexpected stories + temperature=1.2 # Atatengeneza hadithi za kipekee, zisizotarajiwa ) ``` -#### Max Tokens (1 hadi 4096+): Kidhibiti Urefu wa Majibu +#### Juu ya Tokens (1 hadi 4096+): Kidhibiti cha Urefu wa Jibu -**Kazi yake**: Huweka kikomo cha jinsi majibu ya AI yanavyoweza kuwa marefu. +**Inafanya nini**: Inaweka kikomo juu ya urefu wa jibu la AI. -**Fikiria tokeni kama maneno kwa takriban** (karibu tokeni 1 = maneno 0.75 kwa Kiingereza): -- **max_tokens=50**: Fupi na tamu (kama ujumbe wa maandishi) -- **max_tokens=500**: Aya moja au mbili nzuri -- **max_tokens=2000**: Maelezo ya kina na mifano +**Fikiria tokens kama maneno kwa takriban** (kati ya token moja = karibu maneno 0.75 kwa Kiingereza): +- **max_tokens=50**: Fupi na tamu (kama ujumbe mfupi) +- **max_tokens=500**: Aya nzuri au mbili +- **max_tokens=2000**: Maelezo ya kina yenye mifano ```python -# Short, concise answers +# Majibu mafupi na ya wazi response = client.chat.completions.create( messages=[{"role": "user", "content": "Explain JavaScript"}], - max_tokens=100 # Forces a brief explanation + max_tokens=100 # Inalazimisha maelezo mafupi ) -# Detailed, comprehensive answers +# Majibu ya kina na ya kina response = client.chat.completions.create( messages=[{"role": "user", "content": "Explain JavaScript"}], - max_tokens=1500 # Allows for detailed explanations with examples + max_tokens=1500 # Inaruhusu maelezo ya kina pamoja na mifano ) ``` -#### Top_p (0.0 hadi 1.0): Kidhibiti Umakini +#### Top_p (0.0 hadi 1.0): Kigezo cha Kuzingatia -**Kazi yake**: Hudhibiti jinsi AI inavyobaki makini kwenye majibu yanayowezekana zaidi. +**Inafanya nini**: Inadhibiti jinsi AI inavyolingania na majibu yanayoweza kutokea zaidi. -**Fikiria AI kuwa na msamiati mkubwa, uliopangwa kulingana na uwezekano wa kila neno:** -- **top_p=0.1**: Inazingatia maneno 10% ya juu zaidi yanayowezekana (makini sana) -- **top_p=0.9**: Inazingatia 90% ya maneno yanayowezekana (ubunifu zaidi) -- **top_p=1.0**: Inazingatia kila kitu (tofauti kubwa) +**Picha inaonyesha AI akiwa na msamiati mkubwa, umesawazishwa kwa uwezekano wa kila neno:** +- **top_p=0.1**: Inazingatia maneno 10% ya juu yenye uwezekano mkubwa zaidi (ilenye makini sana) +- **top_p=0.9**: Inazingatia 90% ya maneno yanayowezekana (zaidi ya ubunifu) +- **top_p=1.0**: Inazingatia yote (tofauti kubwa zaidi) -**Kwa mfano**: Ukisema "Anga kwa kawaida ni..." -- **Top_p ya chini**: Karibu hakika itasema "bluu" -- **Top_p ya juu**: Inaweza kusema "bluu", "mawingu", "kubwa", "inabadilika", "nzuri", n.k. +**Kwa mfano**: Ukiuliza "Anga ni kawaida..." +- **Top_p ya chini**: Kusema "buluu" kabisa bila shaka +- **Top_p ya juu**: Inaweza kusema "buluu", "mawingu", "kubwa", "kubadilika", "mzuri", n.k. -### Kuweka Yote Pamoja: Mchanganyiko wa Vigezo kwa Matumizi Tofauti +### Kuunganisha Pamoja: Mchanganyiko wa Vigezo kwa Matumizi Tofauti ```python -# For factual, consistent answers (like a documentation bot) +# Kwa majibu ya kweli, ya kuzingatia (kama roboti wa hati) factual_params = { "temperature": 0.2, "max_tokens": 300, "top_p": 0.3 } -# For creative writing assistance +# Kwa msaada wa uandishi wa ubunifu creative_params = { "temperature": 1.1, "max_tokens": 1000, "top_p": 0.9 } -# For conversational, helpful responses (balanced) +# Kwa majibu ya mazungumzo, yenye msaada (yenye uwiano) conversational_params = { "temperature": 0.7, "max_tokens": 500, @@ -257,56 +367,293 @@ conversational_params = { } ``` -**Kuelewa kwa nini vigezo hivi ni muhimu**: Programu tofauti zinahitaji aina tofauti za majibu. Boti ya huduma kwa wateja inapaswa kuwa thabiti na ya ukweli (temperature ya chini), wakati msaidizi wa uandishi wa ubunifu anapaswa kuwa wa kufikiria na wa tofauti (temperature ya juu). Kuelewa vigezo hivi kunakupa udhibiti wa tabia na mtindo wa majibu ya AI yako. -**Hii ndiyo sababu FastAPI ni bora kwa kile tunachojenga:** -- **Async kwa default**: Inaweza kushughulikia maombi mengi ya AI kwa wakati mmoja bila kukwama -- **Nyaraka za kiotomatiki**: Tembelea `/docs` na upate ukurasa mzuri wa nyaraka za API unaoweza kuingiliana bila malipo -- **Uthibitishaji wa ndani**: Hukamata makosa kabla hayajasababisha matatizo -- **Haraka sana**: Mojawapo ya mifumo ya Python yenye kasi zaidi -- **Python ya kisasa**: Inatumia vipengele vyote vya hivi karibuni na bora vya Python +```mermaid +quadrantChart + title Mkataba wa Uboreshaji wa Vigezo vya AI + x-axis Ubunifu Mdogo --> Ubunifu Mkubwa + y-axis Jibu Fupi --> Jibu Refu + + quadrant-1 Maudhui ya Ubunifu + quadrant-2 Uchambuzi wa Kina + quadrant-3 Taarifa za Haraka + quadrant-4 AI ya Mazungumzo + + Documentation Bot: [0.2, 0.3] + Customer Service: [0.4, 0.4] + General Assistant: [0.7, 0.5] + Creative Writer: [0.9, 0.9] + Brainstorming Tool: [0.8, 0.8] +``` +**Kuelewa kwa nini vigezo hivi ni muhimu**: Programu tofauti zinahitaji aina tofauti za majibu. Bot wa huduma kwa wateja anatakiwa kuwa thabiti na wa ukweli (joto la chini), wakati msaidizi wa uandishi wa ubunifu anatakiwa kuwa wa mawazo na mabadiliko (joto la juu). Kuelewa vigezo hivi kunakupa udhibiti juu ya utu na mtindo wa jibu wa AI yako. +``` + +**Here's what's happening in this code:** +- **We import** the tools we need: `os` for reading environment variables and `OpenAI` for talking to the AI +- **We set up** the OpenAI client to point to GitHub's AI servers instead of OpenAI directly +- **We authenticate** using a special GitHub token (more on that in a minute!) +- **We structure** our conversation with different "roles" – think of it like setting the scene for a play +- **We send** our request to the AI with some fine-tuning parameters +- **We extract** the actual response text from all the data that comes back + +> 🔐 **Security Note**: Never hardcode API keys in your source code! Always use environment variables to store sensitive credentials like your `GITHUB_TOKEN`. + +### Creating a Reusable AI Function + +Let's refactor this code into a clean, reusable function that we can easily integrate into our web application: + +```python +import asyncio +from openai import AsyncOpenAI + +# Use AsyncOpenAI for better performance +client = AsyncOpenAI( + base_url="https://models.github.ai/inference", + api_key=os.environ["GITHUB_TOKEN"], +) + +async def call_llm_async(prompt: str, system_message: str = "You are a helpful assistant."): + """ + Sends a prompt to the AI model asynchronously and returns the response. + + Args: + prompt: The user's question or message + system_message: Instructions that define the AI's behavior and personality + + Returns: + str: The AI's response to the prompt + """ + try: + response = await client.chat.completions.create( + messages=[ + { + "role": "system", + "content": system_message, + }, + { + "role": "user", + "content": prompt, + } + ], + model="openai/gpt-4o-mini", + temperature=1, + max_tokens=4096, + top_p=1 + ) + return response.choices[0].message.content + except Exception as e: + logger.error(f"AI API error: {str(e)}") + return "I'm sorry, I'm having trouble processing your request right now." + +# Backward compatibility function for synchronous calls +def call_llm(prompt: str, system_message: str = "You are a helpful assistant."): + """Synchronous wrapper for async AI calls.""" + return asyncio.run(call_llm_async(prompt, system_message)) +``` + +**Kuelewa kazi hii iliyoboreshwa:** +- **Inakubali** vigezo viwili: maelekezo ya mtumiaji na ujumbe wa mfumo wa hiari +- **Inatoa** ujumbe wa mfumo wa msingi kwa tabia ya msaidizi kwa ujumla +- **Inatumia** aina za Python kwa usahihi kwa ajili ya nyaraka bora za msimbo +- **Inajumuisha** maelezo ya kina ya kazi na vigezo vyake +- **Inarejesha** maudhui ya jibu tu, kufanya iwe rahisi kutumia katika API yetu ya wavuti +- **Inadumisha** vigezo vile vile vya mfano kwa tabia thabiti ya AI + +### Uchawi wa Maelekezo ya Mfumo: Kuprogramu Utu wa AI + +Ikiwa vigezo vinadhibiti jinsi AI inavyofikiria, maelekezo ya mfumo yanadhibiti ni nani AI anayejiamini kuwa. Hii ni mojawapo ya sehemu za kuvutia zaidi za kufanya kazi na AI – unampa AI utu kamili, kiwango cha utaalamu, na mtindo wa mawasiliano. + +**Fikiria maelekezo ya mfumo kama kung'oa wauigizaji tofauti kwa majukumu tofauti**: Badala ya kuwa na msaidizi mmoja wa kawaida, unaweza kuunda wataalamu maalum kwa hali tofauti. Unahitaji mwalimu mvumilivu? Mshirika wa ubunifu? Mshauri wa biashara asiye na upotovu? Badilisha tu maelekezo ya mfumo! + +#### Kwa Nini Maelekezo ya Mfumo Ni Yenye Nguvu + +Sehemu ya kuvutia: mifano ya AI imetengenezwa kwa mazungumzo mengi ambapo watu hukumbatia majukumu na viwango vya utaalamu tofauti. Unapompa AI jukumu maalum, ni kama kuwasha swichi inayochochea mifumo yote hiyo iliyojifunza. + +**Ni kama utendaji wa kina kwa AI**: Mwambie mwigizaji "wewe ni profesa mzee mwenye busara" na uone jinsi wanavyobadilisha mkao, msamiati, na tabia zao. AI hufanya kitu kinachofanana sana na mifumo ya lugha. + +#### Kuunda Maelekezo Bora ya Mfumo: Sanaa na Sayansi + +**Muundo wa maelekezo bora ya mfumo:** +1. **Jukumu/Utu**: AI ni nani? +2. **Utaalamu**: Anajua nini? +3. **Mtindo wa mawasiliano**: Anazungumza vipi? +4. **Maelekezo maalum**: Angalau atazingatia nini? + +```python +# ❌ Amri ya mfumo isiyoeleweka +"You are helpful." + +# ✅ Amri ya mfumo yenye maelezo, yenye ufanisi +"You are Dr. Sarah Chen, a senior software engineer with 15 years of experience at major tech companies. You explain programming concepts using real-world analogies and always provide practical examples. You're patient with beginners and enthusiastic about helping them understand complex topics." +``` + +#### Mifano ya Maelekezo ya Mfumo kwa Muktadha + +Tuwone jinsi maelekezo tofauti ya mfumo yanavyounda utu tofauti kabisa wa AI: + +```python +# Mfano 1: Mwalimu Muvumilivu +teacher_prompt = """ +You are an experienced programming instructor who has taught thousands of students. +You break down complex concepts into simple steps, use analogies from everyday life, +and always check if the student understands before moving on. You're encouraging +and never make students feel bad for not knowing something. +""" + +# Mfano 2: Mshirikishi Mbunifu +creative_prompt = """ +You are a creative writing partner who loves brainstorming wild ideas. You're +enthusiastic, imaginative, and always build on the user's ideas rather than +replacing them. You ask thought-provoking questions to spark creativity and +offer unexpected perspectives that make stories more interesting. +""" + +# Mfano 3: Mshauri Mkakati wa Biashara +business_prompt = """ +You are a strategic business consultant with an MBA and 20 years of experience +helping startups scale. You think in frameworks, provide structured advice, +and always consider both short-term tactics and long-term strategy. You ask +probing questions to understand the full business context before giving advice. +""" +``` + +#### Kuona Maelekezo ya Mfumo Kazi + +Tujaribu swali lile lile na maelekezo tofauti ya mfumo kuona tofauti kubwa: + +**Swali**: "Ninawezaje kushughulikia uthibitishaji wa mtumiaji katika app yangu ya wavuti?" + +```python +# Kwa maelekezo ya mwalimu: +teacher_response = call_llm( + "How do I handle user authentication in my web app?", + teacher_prompt +) +# Jibu la kawaida: "Swali zuri! Hebu tugawanye uthibitishaji katika hatua rahisi. +# Fikiria kama mlinzi wa klabu ya usiku anayeangalia kitambulisho..." + +# Kwa maelekezo ya biashara: +business_response = call_llm( + "How do I handle user authentication in my web app?", + business_prompt +) +# Jibu la kawaida: "Kwa mtazamo wa kimkakati, uthibitishaji ni muhimu kwa +# imani ya mtumiaji na uzingatiaji wa sheria. Acha nitoe muundo ukizingatia usalama, +# uzoefu wa mtumiaji, na uwezekano wa kupanuka..." +``` + +#### Mbinu Zinazopiga Kufika za Maelekezo ya Mfumo + +**1. Kuweka Muktadha**: Mpa AI taarifa za awali +```python +system_prompt = """ +You are helping a junior developer who just started their first job at a startup. +They know basic HTML/CSS/JavaScript but are new to backend development and databases. +Be encouraging and explain things step-by-step without being condescending. +""" +``` + +**2. Kupangilia Matokeo**: Mwambie AI jinsi ya kupanga majibu +```python +system_prompt = """ +You are a technical mentor. Always structure your responses as: +1. Quick Answer (1-2 sentences) +2. Detailed Explanation +3. Code Example +4. Common Pitfalls to Avoid +5. Next Steps for Learning +""" +``` + +**3. Kuweka Vizingiti**: Eleza kile ambacho AI haipaswi kufanya +```python +system_prompt = """ +You are a coding tutor focused on teaching best practices. Never write complete +solutions for the user - instead, guide them with hints and questions so they +learn by doing. Always explain the 'why' behind coding decisions. +""" +``` + +#### Kwa Nini Hii Inahusu Msaidizi Wako wa Chat + +Kuelewa maelekezo ya mfumo kunakupa nguvu kubwa ya kuunda wasaidizi maalum wa AI: +- **Bot ya huduma kwa wateja**: Msaidizi, mvumilivu, anayejuwa sera +- **Mwalimu wa kujifunza**: Anayehimiza, hatua kwa hatua, anathibitisha kuelewa +- **Mshirika mbunifu**: Mzuri katika kufikiria, huongeza mawazo, huuliza "je, vipi?" +- **Mtaalamu wa kiufundi**: Sahihi, ana maelezo, anayeangalia usalama + +**Mwelekeo muhimu**: Haujui tu kuwaita API ya AI – unaunda utu maalum wa AI unaotumikia matumizi yako maalum. Hii ndiyo inayofanya programu za kisasa za AI kuonekana zimebinafsishwa na zikiwa na manufaa badala ya za kawaida. + +### 🎯 Ukaguzi wa Kitaalamu: Kuprogramu Utu wa AI + +**Acha na Fikiria**: Umejifunza programu za utu wa AI kupitia maelekezo ya mfumo. Hii ni ujuzi wa msingi katika maendeleo ya programu za kisasa za AI. -**Na hii ndiyo sababu tunahitaji backend kabisa:** +**Tathmini Haraka ya Kibinafsi**: +- Je, unaweza kueleza tofauti kati ya maelekezo ya mfumo na ujumbe wa kawaida wa mtumiaji? +- Je, tofauti kati ya vigezo vya joto na top_p ni ipi? +- Je, ungeundaje maelekezo ya mfumo kwa matumizi maalum (kama mwalimu wa kupanga programu)? -**Usalama**: API key yako ya AI ni kama nywila – ukiiweka kwenye JavaScript ya frontend, mtu yeyote anayepitia msimbo wa tovuti yako anaweza kuiba na kutumia mikopo yako ya AI. Backend inahifadhi hati nyeti salama. +**Uhusiano wa Dunia halisi**: Mbinu za maelekezo ya mfumo ulizojifunza hutumika katika kila programu kuu ya AI - kuanzia msaada wa uandishi wa GitHub Copilot hadi kiolesura cha mazungumzo cha ChatGPT. Unatambua mifumo ile ile inayotumiwa na timu za bidhaa za AI katika makampuni makubwa ya teknolojia. -**Kudhibiti Kiwango cha Maombi**: Backend inakuruhusu kudhibiti mara ngapi watumiaji wanaweza kufanya maombi, kutekeleza uthibitishaji wa watumiaji, na kuongeza ufuatiliaji wa matumizi. +**Swali la Changamoto**: Unawezaje kubuni utu tofauti wa AI kwa aina tofauti za watumiaji (mwanzo dhidi ya mtaalamu)? Fikiria jinsi mfano huo huo wa AI unavyoweza kuhudumia hadhira tofauti kupitia uhandisi wa maelekezo. -**Usindikaji wa Data**: Unaweza kutaka kuhifadhi mazungumzo, kuchuja maudhui yasiyofaa, au kuunganisha huduma nyingi za AI. Backend ndiyo mahali mantiki hii inapoishi. +## Kujenga Web API kwa FastAPI: Kituo chako cha Mawasiliano ya AI ya Ufanisi Mno -**Muundo unafanana na mfano wa mteja-server:** -- **Frontend**: Safu ya kiolesura cha mtumiaji kwa mwingiliano -- **Backend API**: Safu ya usindikaji wa maombi na uelekezaji -- **Huduma ya AI**: Hesabu ya nje na kizazi cha majibu -- **Vigezo vya Mazingira**: Usanidi salama na uhifadhi wa hati +Sasa tuanze kujenga backend inayounganisha frontend yako na huduma za AI. Tutatumia FastAPI, fremu ya kisasa ya Python inayobobea katika ujenzi wa API za programu za AI. -### Kuelewa Mtiririko wa Maombi na Majibu +FastAPI inatoa faida kadhaa kwa mradi huu: msaada wa async ukiwezesha kushughulikia maombi mengi sambamba, utengenezaji wa moja kwa moja wa nyaraka za API, na utendaji bora. Server yako ya FastAPI inafanya kazi kama mpatanishi anayepokea maombi kutoka frontend, kuwasiliana na huduma za AI, na kurudisha majibu yaliyopangwa. -Hebu tufuate kinachotokea mtumiaji anapotuma ujumbe: +### Kwa Nini FastAPI Kwa Programu za AI? + +Huenda unajiuliza: "Siwezi tu kuitwa AI moja kwa moja kutoka JavaScript ya frontend yangu?" au "Kwa nini FastAPI badala ya Flask au Django?" Maswali mazuri! + +**Hapa ndio sababu FastAPI ni bora kwa tunachojenga:** +- **Async kwa default**: Inaweza kushughulikia maombi mengi ya AI kwa wakati mmoja bila kuziba +- **Nyaraka moja kwa moja**: Tembelea `/docs` upate ukurasa mzuri wa nyaraka za API zenye mwingiliano bure +- **Uthibitishaji uliojengewa ndani**: Hugundua makosa kabla hayajasababisha matatizo +- **Haraka sana**: Moja ya fremu za Python zenye kasi zaidi +- **Python ya kisasa**: Inatumia vipengele vyote vya hivi karibuni vya Python + +**Na hapa ndio kwanini tunahitaji backend kabisa:** + +**Usalama**: Ufunguo wako wa API ya AI ni kama nenosiri – ukiuweka kwenye JavaScript ya frontend, mtu yeyote anayehakikisha chanzo cha tovuti yako anaweza kuiba na kutumia mikopo yako ya AI. Backend huhifadhi habari nyeti salama. + +**Kudhibiti Kasi na Udhibiti**: Backend inakusaidia kudhibiti mara ngapi watumiaji wanaweza kutuma maombi, kutekeleza uthibitishaji wa watumiaji, na kuongeza rejista ya matumizi. + +**Usindikaji Data**: Huenda unataka kuhifadhi mazungumzo, kuchuja maudhui yasiyofaa, au kuunganisha huduma nyingi za AI. Backend ndio mahali hii mantiki inakuwa. + +**Muundo unafanana na mfano wa mteja-serveri:** +- **Frontend**: Tabaka la kiolesura cha mtumiaji kwa mwingiliano +- **Backend API**: Tabaka la usindikaji wa maombi na kupitisha +- **Huduma ya AI**: Utambuzi wa nje na uzalishaji wa majibu +- **Mabadiliko ya Mazingira**: Usanidi salama na uhifadhi wa nyaraka za siri + +### Kuelewa Mtiririko wa Ombi-Jibu + +Tufuate kinachoendelea wakati mtumiaji anapotuma ujumbe: ```mermaid sequenceDiagram - participant User as 👤 User - participant Frontend as 🌐 Frontend - participant API as 🔧 FastAPI Server - participant AI as 🤖 AI Service + participant User as 👤 Mtumiaji + participant Frontend as 🌐 Mbele ya Mbele + participant API as 🔧 Seva ya FastAPI + participant AI as 🤖 Huduma ya AI - User->>Frontend: Types "Hello AI!" + User->>Frontend: Andika "Hello AI!" Frontend->>API: POST /hello {"message": "Hello AI!"} - Note over API: Validates request
Adds system prompt - API->>AI: Sends formatted request - AI->>API: Returns AI response - Note over API: Processes response
Logs conversation - API->>Frontend: {"response": "Hello! How can I help?"} - Frontend->>User: Displays AI message + Note over API: Inathibitisha ombi
Inaongeza kiito mfumo + API->>AI: Inatuma ombi lililopangwa + AI->>API: Inarudisha jibu la AI + Note over API: Inachakata jibu
Inaandika mazungumzo + API->>Frontend: {"response": "Hello! Naweza kusaidia vipi?"} + Frontend->>User: Inaonyesha ujumbe wa AI ``` - **Kuelewa kila hatua:** -1. **Mwingiliano wa mtumiaji**: Mtu anaandika kwenye kiolesura cha mazungumzo -2. **Usindikaji wa frontend**: JavaScript inakamata pembejeo na kuunda kama JSON -3. **Uthibitishaji wa API**: FastAPI inathibitisha kiotomatiki ombi kwa kutumia mifano ya Pydantic -4. **Muunganisho wa AI**: Backend inaongeza muktadha (mfano wa mfumo) na kuita huduma ya AI -5. **Usimamizi wa majibu**: API inapokea majibu ya AI na inaweza kuyabadilisha ikiwa inahitajika -6. **Onyesho la frontend**: JavaScript inaonyesha majibu kwenye kiolesura cha mazungumzo +1. **Mwingiliano wa mtumiaji**: Mtu anaandika katika kiolesura cha mazungumzo +2. **Usindikaji wa frontend**: JavaScript inachukua maingizo na kuyaweka katika muundo wa JSON +3. **Uthibitishaji wa API**: FastAPI inathibitisha maombi moja kwa moja kwa kutumia mifano ya Pydantic +4. **Uingizaji wa AI**: Backend inaongeza muktadha (maelekezo ya mfumo) na kuita huduma ya AI +5. **Ushughulikiaji wa jibu**: API inapokea jibu la AI na inaweza kulibadilisha kama ni lazima +6. **Onyesho la frontend**: JavaScript inaonyesha jibu kwenye kiolesura cha mazungumzo ### Kuelewa Muundo wa API @@ -317,17 +664,38 @@ sequenceDiagram participant AI Function participant GitHub Models - Frontend->>FastAPI: POST /hello {"message": "Hello AI!"} + Frontend->>FastAPI: POST /hello {"message": "Hujambo AI!"} FastAPI->>AI Function: call_llm(message, system_prompt) - AI Function->>GitHub Models: API request - GitHub Models->>AI Function: AI response - AI Function->>FastAPI: response text - FastAPI->>Frontend: {"response": "Hello! How can I help?"} + AI Function->>GitHub Models: Ombi la API + GitHub Models->>AI Function: Jibu la AI + AI Function->>FastAPI: maandishi ya jibu + FastAPI->>Frontend: {"response": "Hujambo! Naweza kusaidia vipi?"} +``` +```mermaid +flowchart TD + A[Ingizo la Mtumiaji] --> B[Uthibitishaji wa Mbele] + B --> C[Ombi la HTTP POST] + C --> D[Router ya FastAPI] + D --> E[Uthibitishaji wa Pydantic] + E --> F[Simu ya Kazi ya AI] + F --> G[API za Modeli za GitHub] + G --> H[Usindikaji wa Majibu] + H --> I[Jibu la JSON] + I --> J[Usasishaji wa Mbele] + + subgraph "Tabaka la Usalama" + K[Kati ya CORS] + L[Hali za Mazingira] + M[Ushughulikiaji wa Makosa] + end + + D --> K + F --> L + H --> M ``` - ### Kuunda Programu ya FastAPI -Hebu tujenge API yetu hatua kwa hatua. Unda faili inayoitwa `api.py` na msimbo wa FastAPI ufuatao: +Tujenge API yetu hatua kwa hatua. Tengeneza faili liitwalo `api.py` na msimbo unaofuata wa FastAPI: ```python # api.py @@ -337,27 +705,27 @@ from pydantic import BaseModel from llm import call_llm import logging -# Configure logging +# Sanidi uandikishaji logi logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) -# Create FastAPI application +# Unda programu ya FastAPI app = FastAPI( title="AI Chat API", description="A high-performance API for AI-powered chat applications", version="1.0.0" ) -# Configure CORS +# Sanidi CORS app.add_middleware( CORSMiddleware, - allow_origins=["*"], # Configure appropriately for production + allow_origins=["*"], # Sanidi ipasavyo kwa ajili ya uzalishaji allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) -# Pydantic models for request/response validation +# Mifano ya Pydantic kwa uthibitishaji wa ombi/jibu class ChatMessage(BaseModel): message: str @@ -382,14 +750,14 @@ async def health_check(): async def chat_endpoint(chat_message: ChatMessage): """Main chat endpoint that processes messages and returns AI responses.""" try: - # Extract and validate message + # Toa na thibitisha ujumbe message = chat_message.message.strip() if not message: raise HTTPException(status_code=400, detail="Message cannot be empty") logger.info(f"Processing message: {message[:50]}...") - # Call AI service (note: call_llm should be made async for better performance) + # Piga huduma ya AI (kumbuka: call_llm inapaswa kufanywa async kwa utendaji bora) ai_response = await call_llm_async(message, "You are a helpful and friendly assistant.") logger.info("AI response generated successfully") @@ -407,213 +775,213 @@ if __name__ == "__main__": ``` **Kuelewa utekelezaji wa FastAPI:** -- **Inaleta** FastAPI kwa utendakazi wa mfumo wa wavuti wa kisasa na Pydantic kwa uthibitishaji wa data -- **Inaunda** nyaraka za API kiotomatiki (zinapatikana kwenye `/docs` wakati seva inapoendesha) -- **Inawezesha** middleware ya CORS kuruhusu maombi ya frontend kutoka asili tofauti -- **Inafafanua** mifano ya Pydantic kwa uthibitishaji wa maombi/majibu kiotomatiki na nyaraka -- **Inatumia** endpoints za async kwa utendaji bora na maombi ya wakati mmoja -- **Inatekeleza** nambari sahihi za hali ya HTTP na usimamizi wa makosa kwa HTTPException -- **Inajumuisha** ufuatiliaji uliopangwa kwa ufuatiliaji na urekebishaji wa makosa -- **Inatoa** endpoint ya ukaguzi wa afya kwa ufuatiliaji wa hali ya huduma - -**Faida kuu za FastAPI ikilinganishwa na mifumo ya jadi:** -- **Uthibitishaji wa kiotomatiki**: Mifano ya Pydantic inahakikisha uadilifu wa data kabla ya usindikaji -- **Nyaraka za kiingiliana**: Tembelea `/docs` kwa nyaraka za API zinazotengenezwa kiotomatiki na zinazoweza kujaribiwa -- **Usalama wa aina**: Maelezo ya aina ya Python yanazuia makosa ya wakati wa kukimbia na kuboresha ubora wa msimbo -- **Msaada wa async**: Kushughulikia maombi mengi ya AI kwa wakati mmoja bila kuzuia -- **Utendaji**: Usindikaji wa maombi kwa kasi zaidi kwa programu za wakati halisi +- **Inaagiza** FastAPI kwa utendaji wa fremu ya wavuti ya kisasa na Pydantic kwa uthibitishaji wa data +- **Inaunda** nyaraka za API moja kwa moja (zinapatikana kwenye `/docs` wakati server inapoanza) +- **Inawezeshwa** CORS middleware kuruhusu maombi ya frontend kutoka asili tofauti +- **Inaeleza** mifano ya Pydantic kwa uthibitishaji wa maombi/majibu na nyaraka za moja kwa moja +- **Inatumia** maeneo async kwa utendaji bora na maombi mengi sambamba +- **Inatekeleza** misimbo sahihi ya hali za HTTP na usimamizi wa makosa kwa HTTPException +- **Inajumuisha** uandikishaji uliopangwa kwa ajili ya ufuatiliaji na utatuzi wa matatizo +- **Inatoa** sehemu ya ukaguzi wa afya kwa kufuatilia hali ya huduma + +**Faida kuu za FastAPI dhidi ya fremu za kawaida:** +- **Uthibitishaji moja kwa moja**: Mifano ya Pydantic huhakikisha usahihi wa data kabla ya usindikaji +- **Nyaraka zenye mwingiliano**: Tembelea `/docs` kupata nyaraka za API zinazotengenezwa na zinaweza kujaribiwa +- **Usalama wa aina**: Vidokezo vya aina za Python hupunguza makosa ya wakati wa utekelezaji na kuboresha ubora wa msimbo +- **Msaada wa async**: Hudumia maombi mengi ya AI kwa wakati mmoja bila kuziba +- **Utendaji**: Usindikaji wa maombi kwa kasi kubwa kwa programu zinazotegemea wakati halisi ### Kuelewa CORS: Mlinzi wa Usalama wa Wavuti -CORS (Cross-Origin Resource Sharing) ni kama mlinzi wa usalama katika jengo ambaye hukagua ikiwa wageni wanaruhusiwa kuingia. Hebu tuelewe kwa nini hili ni muhimu na jinsi linavyoathiri programu yako. +CORS (Cross-Origin Resource Sharing) ni kama mlinzi wa usalama kwenye jengo ambaye hakuangalia kama wageni wanaruhusiwa kuingia. Tuelewe kwa nini hii ni muhimu na jinsi inavyoathiri programu yako. -#### CORS ni nini na Kwa Nini Lipo? +#### CORS ni Nini na Kwa Nini Ipo? -**Tatizo**: Fikiria ikiwa tovuti yoyote ingeweza kufanya maombi kwa tovuti ya benki yako kwa niaba yako bila ruhusa yako. Hilo lingekuwa janga la usalama! Vivinjari vinazuia hili kwa default kupitia "Sera ya Asili Moja." +**Tatizo**: Fikiria kama tovuti yoyote ingekuwa na uwezo wa kutuma maombi kwenye tovuti ya benki yako kwa niaba yako bila idhini yako. Hii ingekuwa shida kubwa ya usalama! Vivinjari huzuia hili kwa kutumia "Sera ya Asili Ileile." -**Sera ya Asili Moja**: Vivinjari huruhusu kurasa za wavuti kufanya maombi tu kwa kikoa, bandari, na itifaki sawa walizopakiwa kutoka. +**Sera ya Asili Ileile**: Vivinjari huruhusu kuruhusu kuruka maombi kutoka kwenye tovuti zenye eneo, bandari, na itifaki ile ile waliyoanzia kupakiwa. -**Mfano wa ulimwengu halisi**: Ni kama usalama wa jengo la ghorofa – ni wakazi tu (asili sawa) wanaweza kufikia jengo kwa default. Ikiwa unataka kumruhusu rafiki (asili tofauti) kutembelea, unahitaji kumwambia mlinzi wa usalama waziwazi kuwa ni sawa. +**Mfano wa dunia halisi**: Ni kama usalama wa nyumba ya ghorofa – wakazi tu (asilimia ile ile) wanaruhusiwa kuingia. Ukitaka kuruhusu rafiki (asilimia tofauti) kutembelea, lazima umwambie mlinzi waziwazi ni sawa. -#### CORS katika Mazingira Yako ya Maendeleo +#### CORS Katika Mazingira Yako ya Maendeleo -Wakati wa maendeleo, frontend yako na backend yako zinaendesha kwenye bandari tofauti: +Wakati wa maendeleo, frontend na backend zako zinafanya kazi katika bandari tofauti: - Frontend: `http://localhost:3000` (au file:// ikiwa unafungua HTML moja kwa moja) - Backend: `http://localhost:5000` -Hizi zinachukuliwa kuwa "asili tofauti" hata kama ziko kwenye kompyuta moja! +Hizi zinachukuliwa kuwa "asilimia tofauti" ingawa ziko kwenye kompyuta ile ile! ```python from fastapi.middleware.cors import CORSMiddleware app = FastAPI(__name__) -CORS(app) # This tells browsers: "It's okay for other origins to make requests to this API" +CORS(app) # Hii inawaambia vivinjari: "Ni sawa kwa asili nyingine kuomba huduma kwa API hii" ``` -**Kile usanidi wa CORS unachofanya kwa vitendo:** -- **Huongeza** vichwa maalum vya HTTP kwa majibu ya API yanayoambia vivinjari "ombi hili la asili tofauti linaruhusiwa" -- **Hushughulikia** maombi ya "preflight" (vivinjari wakati mwingine hukagua ruhusa kabla ya kutuma ombi halisi) -- **Huzuia** kosa la "kuzuia na sera ya CORS" katika koni ya kivinjari chako +**Kifanikio cha usanidi wa CORS kwa vitendo:** +- **Inaongeza** vichwa maalum vya HTTP kwenye majibu ya API vinavyoambia vivinjari "ombi hili la asili tofauti linaruhusiwa" +- **Inashughulikia** maombi ya "preflight" (vivinjari mara nyingine huchunguza ruhusa kabla ya kutuma ombi halisi) +- **Inazuia** kosa la "kuzuia sera ya CORS" ambalo linapotokea kwenye koni ya kivinjari chako -#### Usalama wa CORS: Maendeleo dhidi ya Uzalishaji +#### Usalama wa CORS: Maendeleo vs Uzalishaji ```python -# 🚨 Development: Allows ALL origins (convenient but insecure) +# 🚨 Maendeleo: Inaruhusu vyanzo vyote (rahisi lakini hatari) CORS(app) -# ✅ Production: Only allow your specific frontend domain +# ✅ Uzalishaji: Ruhusu tu eneo lako la frontend lililobainishwa CORS(app, origins=["https://yourdomain.com", "https://www.yourdomain.com"]) -# 🔒 Advanced: Different origins for different environments -if app.debug: # Development mode +# 🔒 Kiwango cha juu: Vyanzo tofauti kwa mazingira tofauti +if app.debug: # Hali ya maendeleo CORS(app, origins=["http://localhost:3000", "http://127.0.0.1:3000"]) -else: # Production mode +else: # Hali ya uzalishaji CORS(app, origins=["https://yourdomain.com"]) ``` -**Kwa nini hili ni muhimu**: Katika maendeleo, `CORS(app)` ni kama kuacha mlango wako wazi – rahisi lakini si salama. Katika uzalishaji, unataka kubainisha ni tovuti gani hasa zinaweza kuzungumza na API yako. +**Kwa nini hii ni muhimu**: Katika maendeleo, `CORS(app)` ni kama kuacha mlango wa mbele wazi – ndio rahisi lakini si salama. Katika uzalishaji, unataka kutaja ni tovuti gani hasa zinaweza kuongea na API yako. -#### Matukio ya Kawaida ya CORS na Suluhisho +#### Hali za Kawaida za CORS na Suluhisho | Hali | Tatizo | Suluhisho | -|------|--------|----------| -| **Maendeleo ya Kawaida** | Frontend haiwezi kufikia backend | Ongeza CORSMiddleware kwa FastAPI | -| **GitHub Pages + Heroku** | Frontend iliyotumwa haiwezi kufikia API | Ongeza URL ya GitHub Pages yako kwa asili za CORS | -| **Kikoa Maalum** | Makosa ya CORS katika uzalishaji | Sasisha asili za CORS ili zilingane na kikoa chako | -| **Programu ya Simu** | Programu haiwezi kufikia API ya wavuti | Ongeza kikoa cha programu yako au tumia `*` kwa uangalifu | +|----------|---------|----------| +| **Maendeleo ya Ndani (Local Development)** | Frontend haiwezi kufikia backend | Ongeza CORSMiddleware kwenye FastAPI | +| **GitHub Pages + Heroku** | Frontend iliyowekwa haitumii API | Ongeza URL ya GitHub Pages kwenye asili za CORS | +| **Domeni Maalum** | Makosa ya CORS uzalishaji | Sasisha asili za CORS kulingana na domeni yako | +| **Programu ya Simu** | Programu haiwezi kufikia API ya wavuti | Ongeza domeni ya programu yako au tumia `*` kwa uangalifu | -**Kidokezo cha kitaalamu**: Unaweza kuangalia vichwa vya CORS katika Zana za Wasanidi wa kivinjari chako chini ya kichupo cha Mtandao. Tafuta vichwa kama `Access-Control-Allow-Origin` katika majibu. +**Ushauri mzuri**: Unaweza kuangalia vichwa vya CORS kwenye zana za Watengenezaji wa kivinjari chako chini ya kichupo cha Mtandao. Tafuta vichwa kama `Access-Control-Allow-Origin` kwenye jibu. -### Usimamizi wa Makosa na Uthibitishaji +### Ushughulikiaji wa Makosa na Uthibitishaji -Angalia jinsi API yetu inavyoshirikisha usimamizi sahihi wa makosa: +Angalia jinsi API yetu inavyoshughulikia makosa kwa usahihi: ```python -# Validate that we received a message +# Thibitisha kwamba tumepokea ujumbe if not message: return jsonify({"error": "Message field is required"}), 400 ``` **Kanuni kuu za uthibitishaji:** -- **Hukagua** uwanja unaohitajika kabla ya kusindika maombi +- **Huthibitisha** viwanja muhimu kabla ya kusindika maombi - **Hurejesha** ujumbe wa makosa wenye maana katika muundo wa JSON -- **Hutumia** nambari sahihi za hali ya HTTP (400 kwa maombi mabaya) -- **Hutoa** maoni wazi kusaidia wasanidi wa frontend kurekebisha masuala +- **Inatumia** misimbo sahihi ya hali ya HTTP (400 kwa maombi mabaya) +- **Hutoa** mrejesho wazi kusaidia waendelezaji wa frontend kutatua matatizo ## Kuweka na Kuendesha Backend Yako -Sasa kwa kuwa tuna muunganisho wetu wa AI na seva ya FastAPI tayari, hebu tuanze kila kitu. Mchakato wa usanidi unahusisha kusakinisha utegemezi wa Python, kusanidi vigezo vya mazingira, na kuanzisha seva yako ya maendeleo. +Sasa tunapokuwa na uingizaji wetu wa AI na server ya FastAPI tayari, tuanzishe kila kitu kilicho tayari. Mchakato wa usanikishaji unahusisha kusakinisha maktaba za Python, kusanidi mabadiliko ya mazingira, na kuanzisha server yako ya maendeleo. -### Usanidi wa Mazingira ya Python +### Kuanzisha Mazingira ya Python -Hebu tusanidi mazingira yako ya maendeleo ya Python. Mazingira ya kawaida ni kama mbinu ya mradi wa Manhattan – kila mradi unapata nafasi yake ya pekee na zana maalum na utegemezi, kuzuia migongano kati ya miradi tofauti. +Tuwashie mazingira ya maendeleo ya Python. Mazingira ya virtual ni kama mpango wa Manhattan uliogawanywa sehemu – kila mradi unapata nafasi yake pekee ya pekee yenye zana maalum na utegemezi, kuzuia migongano kati ya miradi tofauti. ```bash -# Navigate to your backend directory +# Elekea kwenye saraka yako ya nyuma cd backend -# Create a virtual environment (like creating a clean room for your project) +# Unda mazingira ya kweli (kama kuunda chumba safi kwa mradi wako) python -m venv venv -# Activate it (Linux/Mac) +# Iwasha (Linux/Mac) source ./venv/bin/activate -# On Windows, use: +# Kwenye Windows, tumia: # venv\Scripts\activate -# Install the good stuff +# Sakinisha vitu vizuri pip install openai fastapi uvicorn python-dotenv ``` -**Kile tulichofanya:** -- **Tumeunda** Bubble yetu ya Python ambapo tunaweza kusakinisha vifurushi bila kuathiri chochote kingine -- **Tumeiwezesha** ili terminal yetu ijue kutumia mazingira haya maalum -- **Tumesakinisha** vitu muhimu: OpenAI kwa uchawi wa AI, FastAPI kwa API yetu ya wavuti, Uvicorn kuendesha, na python-dotenv kwa usimamizi salama wa siri +**Tulichofanya sasa hivi:** +- **Tumeunda** povu yetu ndogo ya Python ambapo tunaweza kusakinisha maktaba bila kuathiri vingine +- **Tumezikwa** ili terminal yetu ijue kutumia mazingira haya maalum +- **Tumefunga** muhimu: OpenAI kwa uchawi wa AI, FastAPI kwa API yetu ya wavuti, Uvicorn kuendesha server, na python-dotenv kwa usimamizi wa siri salama -**Utegemezi muhimu umeelezwa:** -- **FastAPI**: Mfumo wa wavuti wa kisasa, wa haraka na nyaraka za API kiotomatiki -- **Uvicorn**: Seva ya ASGI yenye kasi inayoweza kuendesha programu za FastAPI -- **OpenAI**: Maktaba rasmi kwa GitHub Models na muunganisho wa API ya OpenAI -- **python-dotenv**: Upakiaji salama wa vigezo vya mazingira kutoka kwa faili za .env +**Marekebisho muhimu yaliyoelezwa:** +- **FastAPI**: Fremu ya kisasa, yenye kasi ya wavuti na nyaraka za API za moja kwa moja +- **Uvicorn**: Server ya ASGI yenye kasi mno inayochukua na kuendesha programu za FastAPI +- **OpenAI**: Maktaba rasmi kwa modeli za GitHub na API ya OpenAI +- **python-dotenv**: Kubeba mabadiliko ya mazingira kwa usalama kutoka kwa faili `.env` -### Usanidi wa Mazingira: Kuhifadhi Siri Salama +### Usanidi wa Mazingira: Kuzingatia Siri Salama -Kabla ya kuanza API yetu, tunahitaji kuzungumzia mojawapo ya masomo muhimu zaidi katika maendeleo ya wavuti: jinsi ya kuhifadhi siri zako salama. Vigezo vya mazingira ni kama chumba cha usalama ambacho programu yako pekee inaweza kufikia. +Kabla hatujaanza API yetu, tunahitaji kujadili moja ya masomo muhimu zaidi katika maendeleo ya wavuti: jinsi ya kuweka siri zako kweli zisiwe wazi. Mabadiliko ya mazingira ni kama sefeli salama ambayo programu yako tu inaweza kufikia. -#### Vigezo vya Mazingira ni Nini? +#### Mabadiliko ya Mazingira ni Nini? -**Fikiria vigezo vya mazingira kama sanduku la usalama** – unaweka vitu vyako vya thamani humo, na ni wewe tu (na programu yako) unayeweza kufungua. Badala ya kuandika taarifa nyeti moja kwa moja kwenye msimbo wako (ambapo kila mtu anaweza kuiona), unaihifadhi salama katika mazingira. +**Fikiria mabadiliko ya mazingira kama sanduku la amana salama** – unailaza vitu vyako vya thamani humo, na wewe tu (na programu yako) una funguo la kuipata. Badala ya kuandika taarifa nyeti moja kwa moja kwenye msimbo wako (ambapo mtu yeyote anaweza kuiona), unahifadhi kwa usalama katika mazingira. -**Hii ndiyo tofauti:** -- **Njia mbaya**: Kuandika nywila yako kwenye karatasi ya kunata na kuiweka kwenye skrini yako -- **Njia sahihi**: Kuhifadhi nywila yako katika meneja wa nywila salama ambao ni wewe tu unayeweza kufikia +**Hii ndio tofauti:** +- **Njia mbaya**: Kuandika nenosiri lako kwenye karatasi na kuiweka kwenye skrini yako ya kompyuta +- **Njia sahihi**: Kuweka nenosiri lako kwenye meneja wa nenosiri salama unayemiliki wewe peke yako -#### Kwa Nini Vigezo vya Mazingira ni Muhimu +#### Kwa Nini Mabadiliko ya Mazingira Ni Muhimu ```python -# 🚨 NEVER DO THIS - API key visible to everyone +# 🚨 USIFANYE HIVYO - Fikira la API linaonekana kwa kila mtu client = OpenAI( - api_key="ghp_1234567890abcdef...", # Anyone can steal this! + api_key="ghp_1234567890abcdef...", # Mtu yeyote anaweza kuiba hii! base_url="https://models.github.ai/inference" ) -# ✅ DO THIS - API key stored securely +# ✅ FANYA HIVYO - Fikira la API lihifadhiwe kwa usalama client = OpenAI( - api_key=os.environ["GITHUB_TOKEN"], # Only your app can access this + api_key=os.environ["GITHUB_TOKEN"], # Ni programu yako tu inaweza kufikia hii base_url="https://models.github.ai/inference" ) ``` -**Kinachotokea unapoweka siri moja kwa moja kwenye msimbo:** -1. **Ufunuo wa udhibiti wa toleo**: Mtu yeyote mwenye ufikiaji wa hifadhi yako ya Git anaona API key yako -2. **Hifadhi za umma**: Ukisukuma kwenye GitHub, key yako inaonekana kwa mtandao mzima -3. **Kushiriki timu**: Wasanidi wengine wanaofanya kazi kwenye mradi wako wanapata ufikiaji wa API key yako ya kibinafsi -4. **Uvunjaji wa usalama**: Ikiwa mtu ataiba API key yako, anaweza kutumia mikopo yako ya AI +**Kinachotokea ukiandika siri moja kwa moja:** +1. **Ufunuo kwa usimamizi wa toleo**: Yeyote aliye na ufikiaji wa hifadhi yako ya Git anaona ufunguo wako wa API +2. **Hifadhi za umma**: Ukiweka kwenye GitHub, ufunguo wako unaonekana kwa kila mtu mtandaoni +3. **Kushirikiana kwa timu**: Waendelezaji wengine kwenye mradi wako wanapata ufunguo wako wa API binafsi +4. **Uvunjaji wa usalama**: Ikiwa mtu ataiba ufunguo wako wa API, anaweza kutumia mikopo yako ya AI -#### Kuunda Faili Yako ya Mazingira +#### Kuunda Faili Yako la Mazingira `.env` -Unda faili `.env` katika saraka ya backend yako. Faili hii huhifadhi siri zako kwa ndani: +Tengeneza faili `.env` katika saraka ya backend yako. Faili hii huhifadhi siri zako ndani ya kompyuta: ```bash -# .env file - This should NEVER be committed to Git +# Faili la .env - Hili HAUWASHWI kamwe kupelekwa kwenye Git GITHUB_TOKEN=your_github_personal_access_token_here FASTAPI_DEBUG=True ENVIRONMENT=development ``` -**Kuelewa faili ya .env:** -- **Siri moja kwa kila mstari** katika muundo wa `KEY=value` -- **Hakuna nafasi** karibu na alama ya usawa -- **Hakuna nukuu** zinazohitajika karibu na maadili (kawaida) +**Kuelewa faili la .env:** +- **Siri moja kwa mstari** katika muundo wa `KEY=value` +- **Hakuna nafasi** karibu na alama ya sawa +- **Hakuna nukuu** zinahitajika kwenye thamani (kawaida) - **Maoni** huanza na `#` -#### Kuunda Tokeni Yako ya Ufikiaji wa Kibinafsi ya GitHub +#### Kuunda Tokeni Yako Binafsi ya Kufikia GitHub -Tokeni yako ya GitHub ni kama nywila maalum inayotoa ruhusa kwa programu yako kutumia huduma za AI za GitHub: +Tokeni yako ya GitHub ni kama nenosiri maalum linaloruhusu programu yako kutumia huduma za AI za GitHub: **Hatua kwa hatua kuunda tokeni:** -1. **Nenda kwa Mipangilio ya GitHub** → Mipangilio ya msanidi programu → Tokeni za ufikiaji wa kibinafsi → Tokeni (classic) +1. **Nenda kwenye Mipangilio ya GitHub** → Mipangilio ya mtengenezaji → Tokeni za huduma binafsi → Tokeni (classic) 2. **Bonyeza "Generate new token (classic)"** -3. **Weka muda wa kuisha** (siku 30 kwa majaribio, muda mrefu kwa uzalishaji) -4. **Chagua maeneo**: Angalia "repo" na ruhusa nyingine unazohitaji -5. **Tengeneza tokeni** na nakili mara moja (huwezi kuiona tena!) -6. **Bandika kwenye faili yako ya .env** +3. **Weka muda wa kumalizika** (siku 30 kwa majaribio, muda mrefu kwa uzalishaji) +4. **Chagua wigo**: Angalia "repo" na ruhusa zingine unazohitaji +5. **Tengeneza tokeni** na uibandike mara moja (hauna tena ruhusa ya kuiona!) +6. **Mweka kwenye faili lako la .env** ```bash -# Example of what your token looks like (this is fake!) +# Mfano wa jinsi tokeni yako inavyoonekana (hii ni feki!) GITHUB_TOKEN=ghp_1A2B3C4D5E6F7G8H9I0J1K2L3M4N5O6P7Q8R ``` -#### Kupakia Vigezo vya Mazingira katika Python +#### Kupakia Mabadiliko ya Mazingira katika Python ```python import os from dotenv import load_dotenv -# Load environment variables from .env file +# Pakia mabadiliko ya mazingira kutoka kwa faili la .env load_dotenv() -# Now you can access them securely +# Sasa unaweza kuyafikia kwa usalama api_key = os.environ.get("GITHUB_TOKEN") if not api_key: raise ValueError("GITHUB_TOKEN not found in environment variables!") @@ -624,18 +992,18 @@ client = OpenAI( ) ``` -**Kile msimbo huu unafanya:** -- **Unapakia** faili yako ya .env na kufanya vigezo kupatikana kwa Python -- **Hukagua** ikiwa tokeni inayohitajika ipo (usimamizi mzuri wa makosa!) -- **Inainua** kosa wazi ikiwa tokeni haipo -- **Inatumia** tokeni kwa usalama bila kuifunua kwenye msimbo +**Msimbo huu unafanya:** +- **Unapakia** faili lako la .env na kufanya mabadiliko kupatikana kwa Python +- **Huthibitisha** kama tokeni muhimu ipo (ushughulikiaji mzuri wa makosa!) +- **Hutoa** kosa la wazi ikiwa tokeni haipo +- **Inatumia** tokeni kwa usalama bila kuionyesha kwenye msimbo -#### Usalama wa Git: Faili ya .gitignore +#### Usalama wa Git: Faili la .gitignore -Faili yako ya `.gitignore` inaambia Git ni faili zipi zisizo na haja ya kufuatiliwa au kupakiwa: +Faili lako la `.gitignore` linaambia Git ni faili gani isizotakwa kufuatiliwa au kupakiwa: ```bash -# .gitignore - Add these lines +# .gitignore - Ongeza mistari hii .env *.env .env.local @@ -645,57 +1013,56 @@ venv/ .vscode/ ``` -**Kwa nini hili ni muhimu**: Mara tu unapoongeza `.env` kwa `.gitignore`, Git itapuuza faili yako ya mazingira, kuzuia wewe kupakia siri zako kwa GitHub kwa bahati mbaya. +**Kwa nini hii ni muhimu**: Mara tu unapoongeza `.env` kwenye `.gitignore`, Git itapuuzia faili lako la mazingira, ikuzuia kupakia siri zako kwa bahati mbaya kwenye GitHub. #### Mazingira Tofauti, Siri Tofauti -Programu za kitaalamu hutumia API key tofauti kwa mazingira tofauti: +Programu za kitaalamu hutumia funguo tofauti za API kwa mazingira tofauti: ```bash -# .env.development +# .env.kuendeleza GITHUB_TOKEN=your_development_token DEBUG=True -# .env.production +# .env.utengenezaji GITHUB_TOKEN=your_production_token DEBUG=False ``` -**Kwa nini hili ni muhimu**: Hutaki majaribio yako ya maendeleo yaathiri kiwango chako cha matumizi ya AI ya uzalishaji, na unataka viwango tofauti vya usalama kwa mazingira tofauti. +**Kwa nini hii ni muhimu**: Hutaki majaribio ya maendeleo kuathiri msamaha wako wa matumizi ya AI wa uzalishaji, na unataka viwango tofauti vya usalama kwa mazingira tofauti. -### Kuanzisha Seva Yako ya Maendeleo: Kuleta FastAPI Yako Hai - -Sasa ni wakati wa kusisimua – kuanzisha seva yako ya maendeleo ya FastAPI na kuona muunganisho wako wa AI ukifanya kazi! FastAPI inatumia Uvicorn, seva ya ASGI yenye kasi iliyoundwa mahsusi kwa programu za Python za async. +### Kuanzisha Server ya Maendeleo: Kuleta FastAPI Yako Kuishi +Sasa inakuja wakati wa kusisimua – kuanzisha seva yako ya maendeleo ya FastAPI na kuona muunganisho wako wa AI ukiamka hai! FastAPI hutumia Uvicorn, seva ya ASGI yenye mwendo wa mwanga ambayo imeundwa mahsusi kwa programu za Python async. #### Kuelewa Mchakato wa Kuanzisha Seva ya FastAPI ```bash -# Method 1: Direct Python execution (includes auto-reload) +# Njia 1: Utekelezaji wa moja kwa moja wa Python (inajumuisha upya-ziada wa moja kwa moja) python api.py -# Method 2: Using Uvicorn directly (more control) +# Njia 2: Kutumia Uvicorn moja kwa moja (udhibiti zaidi) uvicorn api:app --host 0.0.0.0 --port 5000 --reload ``` -Unapoendesha amri hii, haya ndiyo yanayotokea nyuma ya pazia: +Unapoendesha amri hii, hapa ndilo linatokea nyuma ya pazia: -**1. Python inapakua programu yako ya FastAPI**: -- Inaleta maktaba zote zinazohitajika (FastAPI, Pydantic, OpenAI, nk.) -- Inapakia vigezo vya mazingira kutoka kwa faili yako ya `.env` -- Inaunda mfano wa programu ya FastAPI na nyaraka za kiotomatiki +**1. Python inapakia programu yako ya FastAPI**: +- Inaingiza maktaba zote muhimu (FastAPI, Pydantic, OpenAI, n.k.) +- Inapakia mabadiliko ya mazingira kutoka kwa faili yako `.env` +- Inatengeneza mfano wa programu ya FastAPI na nyaraka za moja kwa moja -**2. Uvicorn inasanidi seva ya ASGI**: -- Inaunganisha na bandari ya 5000 na uwezo wa kushughulikia maombi ya async -- Inasanidi uelekezaji wa maombi na uthibitishaji wa kiotomatiki -- Inawezesha upakiaji wa haraka kwa maendeleo (kuanzisha upya mabadiliko ya faili) -- Inazalisha nyaraka za API zinazoweza kuingiliana +**2. Uvicorn huandaa seva ya ASGI**: +- Inajihusisha na bandari 5000 na uwezo wa kushughulikia maombi async +- Inaweka njia za kuongoza maombi na uhakikisho wa moja kwa moja +- Inawezeshwa upya moja kwa moja kwa maendeleo (huanzisha upya faili zinapobadilika) +- Inazalisha nyaraka za API zenye mwingiliano **3. Seva inaanza kusikiliza**: - Terminal yako inaonyesha: `INFO: Uvicorn running on http://0.0.0.0:5000` -- Seva inaweza kushughulikia maombi mengi ya AI kwa wakati mmoja -- API yako iko tayari na nyaraka za kiotomatiki kwenye `http://localhost:5000/docs` +- Seva inaweza kushughulikia maombi mengi ya AI sambamba +- API yako iko tayari na nyaraka za moja kwa moja kwenye `http://localhost:5000/docs` -#### Kile Unachopaswa Kuona Wakati Kila Kitu Kinafanya Kazi +#### Unapaswa Kuona Nini Wakati Kila Kitu Kinafanya Kazi ```bash $ python api.py @@ -708,27 +1075,45 @@ INFO: Application startup complete. ``` **Kuelewa matokeo ya FastAPI:** -- **Itatazama mabadiliko**: Upakiaji wa kiotomatiki umewezeshwa kwa maendeleo -- **Uvicorn inaendesha**: Seva ya ASGI yenye utendaji wa juu iko hai -- **Mchakato wa upakiaji upya umeanza**: Mfuatiliaji wa faili kwa kuanzisha upya kiotomatiki -- **Kuanzisha programu kumekamilika**: Programu ya FastAPI imeanzishwa kwa mafanikio -- **Nyaraka za kiingiliana zinapatikana**: Tembelea `/docs` kwa nyaraka za API kiotomatiki +- **Itatazama mabadiliko**: Auto-reload imewezeshwa kwa maendeleo +- **Uvicorn inafanya kazi**: Seva ya ASGI yenye utendaji mkubwa inatumika +- **Mchakato wa reloader umeanzishwa**: Mtafiti wa faili kwa kuanzisha upya moja kwa moja +- **Mwanzo wa programu umekamilika**: App ya FastAPI imezinduliwa kwa mafanikio +- **Nyaraka za mwingiliano zinapatikana**: Tembelea `/docs` kwa nyaraka za API za moja kwa moja + +#### Kupima FastAPI Yako: Njia Nyingi Zenye Nguvu + +FastAPI hutoa njia kadhaa rahisi za kupima API yako, ikiwa ni pamoja na nyaraka za mwingiliano za moja kwa moja: + +**Njia 1: Nyaraka za Mwingiliano za API (Inapendekezwa)** +1. Fungua kivinjari chako na nenda `http://localhost:5000/docs` +2. Utaona Swagger UI na mwisho wote wako umeandikwa +3. Bonyeza `/hello` → "Try it out" → Andika ujumbe wa majaribio → "Execute" +4. Tazama jibu moja kwa moja kwenye kivinjari kwa muundo sahihi + +**Njia 2: Jaribio la Kivinjari la Msingi** +1. Nenda `http://localhost:5000` kwa mwisho wa mzizi +2. Nenda `http://localhost:5000/health` kuangalia afya ya seva +3. Hii inathibitisha seva yako ya FastAPI inafanya kazi vizuri -#### Kujaribu FastAPI Yako: Njia Nyingi Zenye Nguvu +**Njia 2: Jaribio la Line ya Amri (Zaidi)** +```bash +# Jaribu kwa kutumia curl (ikiwa inapatikana) +curl -X POST http://localhost:5000/hello \ + -H "Content-Type: application/json" \ + -d '{"message": "Hello AI!"}' -FastAPI inatoa njia kadhaa rahisi za kujaribu API yako, ikiwa ni pamoja na nyaraka za kiotomatiki zinazoweza kuingiliana: +# Jibu linalotarajiwa: +# {"response": "Habari! Mimi ni msaidizi wako wa AI. Naweza kukusaidiaje leo?"} +``` -**Njia ya 1: Nyaraka za API Zinazoweza Kuingiliana (Inapendekezwa)** -1. Fungua kivinjari chako na nenda kwa `http://localhost:5000/docs` -2. Utaona Swagger UI na endpoints zako zote zikiwa zimeandikwa -3. Bonyeza kwenye `/hello` → "Jaribu" → Weka ujumbe wa majaribio → "Tekeleza" -4. Tazama majibu moja kwa moja +**Njia 3: Skripti ya Jaribio la Python** ```python -# test_api.py - Create this file to test your API +# test_api.py - Unda faili hili kupima API yako import requests import json -# Test the API endpoint +# Pima mwisho wa API url = "http://localhost:5000/hello" data = {"message": "Tell me a joke about programming"} @@ -740,34 +1125,34 @@ else: print("Error:", response.status_code, response.text) ``` -#### Kutatua Masuala ya Kawaida ya Kuanza +#### Kutatua Tatizo la Kawaida la Mwanzo -| Ujumbe wa Kosa | Maana Yake | Jinsi ya Kurekebisha | -|----------------|------------|-----------------------| -| `ModuleNotFoundError: No module named 'fastapi'` | FastAPI haijasakinishwa | Run `pip install fastapi uvicorn` katika mazingira yako ya virtual | -| `ModuleNotFoundError: No module named 'uvicorn'` | ASGI server haijasakinishwa | Run `pip install uvicorn` katika mazingira yako ya virtual | -| `KeyError: 'GITHUB_TOKEN'` | Kigezo cha mazingira hakijapatikana | Angalia faili yako ya `.env` na wito wa `load_dotenv()` | -| `Address already in use` | Bandari 5000 inatumika | Zima michakato mingine inayotumia bandari 5000 au badilisha bandari | -| `ValidationError` | Data ya ombi haifanani na modeli ya Pydantic | Hakikisha muundo wa ombi lako unalingana na schema inayotarajiwa | -| `HTTPException 422` | Kitu kisichoweza kusindika | Uthibitishaji wa ombi umeshindwa, angalia `/docs` kwa muundo sahihi | -| `OpenAI API error` | Uthibitishaji wa huduma ya AI umeshindwa | Hakikisha token yako ya GitHub ni sahihi na ina ruhusa zinazofaa | +| Ujumbe wa Hitilafu | Kinachomaanisha | Jinsi ya Kurekebisha | +|---------------|---------------|------------| +| `ModuleNotFoundError: No module named 'fastapi'` | FastAPI haijasakinishwa | Endesha `pip install fastapi uvicorn` kwenye mazingira yako ya virtual | +| `ModuleNotFoundError: No module named 'uvicorn'` | Seva ya ASGI haijasakinishwa | Endesha `pip install uvicorn` kwenye mazingira yako ya virtual | +| `KeyError: 'GITHUB_TOKEN'` | Kigezo cha mazingira hakipatikani | Angalia faili yako `.env` na mwito wa `load_dotenv()` | +| `Address already in use` | Bandari 5000 inatumika | Funga mchakato mwingine unaotumia bandari 5000 au badilisha bandari | +| `ValidationError` | Data ya ombi hailingani na mfano wa Pydantic | Angalia muundo wa ombi lako unaendana na skimu inayotarajiwa | +| `HTTPException 422` | Kiumbe kisichoshughulikiwa | Uhakiki wa ombi umefaulu, angalia `/docs` kwa muundo sahihi | +| `OpenAI API error` | Huduma ya AI imeshindwa kuthibitishwa | Hakikisha tokeni yako ya GitHub ni sahihi na ina ruhusa sahihi | -#### Mazoea Bora ya Maendeleo +#### Miongozo Bora ya Maendeleo -**Hot Reloading**: FastAPI na Uvicorn hutoa upakiaji wa moja kwa moja unapohifadhi mabadiliko kwenye faili zako za Python. Hii inamaanisha unaweza kurekebisha msimbo wako na kujaribu mara moja bila kuanzisha tena kwa mikono. +**Upakiaji Moto**: FastAPI na Uvicorn hutoa upakiaji wa moja kwa moja unapohifadhi mabadiliko kwenye faili zako za Python. Hii inamaanisha unaweza kubadilisha msimbo na kupima mara moja bila kuanzisha upya kwa mkono. ```python -# Enable hot reloading explicitly +# Wezesha upakiaji wa moto kwa uwazi if __name__ == "__main__": - app.run(host="0.0.0.0", port=5000, debug=True) # debug=True enables hot reload + app.run(host="0.0.0.0", port=5000, debug=True) # debug=True inaruhusu upakiaji wa moto ``` -**Kuweka kumbukumbu kwa Maendeleo**: Ongeza kumbukumbu ili kuelewa kinachoendelea: +**Kuinua kumbukumbu kwa Maendeleo**: Ongeza kumbukumbu ili kuelewa kinachoendelea: ```python import logging -# Set up logging +# Weka upigaji taarifa logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) @@ -791,21 +1176,21 @@ def hello(): return jsonify({"error": "AI service temporarily unavailable"}), 500 ``` -**Kwa nini kuweka kumbukumbu kunasaidia**: Wakati wa maendeleo, unaweza kuona hasa ni maombi gani yanayoingia, ni nini AI inajibu, na wapi makosa yanatokea. Hii inafanya utatuzi kuwa wa haraka zaidi. +**Kwa nini kumbukumbu husaidia**: Wakati wa maendeleo, unaweza kuona hasa maombi yanayokuja, AI inajibu vipi, na mahali pa kutokea kwa makosa. Hii hufanya utambuzi wa hitilafu kuwa wa kasi zaidi. -### Kuseti kwa GitHub Codespaces: Maendeleo ya Wingu Rahisi +### Kusanidi kwa GitHub Codespaces: Maendeleo ya Wingu Yaliyorahisishwa -GitHub Codespaces ni kama kuwa na kompyuta yenye nguvu ya maendeleo kwenye wingu ambayo unaweza kufikia kutoka kwa kivinjari chochote. Ikiwa unafanya kazi katika Codespaces, kuna hatua kadhaa za ziada za kufanya backend yako ipatikane kwa frontend yako. +GitHub Codespaces ni kama kuwa na kompyuta yenye nguvu ya maendeleo kwenye wingu unayoweza kufikia kutoka kivinjari chochote. Ikiwa unafanya kazi ndani ya Codespaces, kuna hatua chache za ziada za kufanya backend yako ipatikane kwa frontend yako. #### Kuelewa Mtandao wa Codespaces -Katika mazingira ya maendeleo ya ndani, kila kitu kinaendeshwa kwenye kompyuta moja: +Katika mazingira ya maendeleo ya ndani, kila kitu kinaendeshwa kwenye kompyuta ile ile: - Backend: `http://localhost:5000` - Frontend: `http://localhost:3000` (au file://) -Katika Codespaces, mazingira yako ya maendeleo yanaendeshwa kwenye seva za GitHub, kwa hivyo "localhost" ina maana tofauti. GitHub huunda URLs za umma kwa huduma zako kiotomatiki, lakini unahitaji kuzisanidi ipasavyo. +Katika Codespaces, mazingira yako ya maendeleo yanaendeshwa kwenye seva za GitHub, hivyo "localhost" ina maana tofauti. GitHub hutengeneza URL za umma kwa huduma zako kwa moja, lakini unahitaji kuziweka ipasavyo. -#### Hatua kwa Hatua ya Usanidi wa Codespaces +#### Usaidizi wa Hatua kwa Hatua wa Codespaces **1. Anzisha seva yako ya backend**: ```bash @@ -813,51 +1198,51 @@ cd backend python api.py ``` -Utaona ujumbe wa kawaida wa kuanza wa FastAPI/Uvicorn, lakini tambua kuwa inaendeshwa ndani ya mazingira ya Codespace. +Utaona ujumbe wa kuanzisha FastAPI/Uvicorn unaofahamika, lakini ukumbuke iko ndani ya mazingira ya Codespace. -**2. Sanidi mwonekano wa bandari**: -- Tafuta tabo ya "Ports" kwenye paneli ya chini ya VS Code +**2. Sanidi uonekano wa bandari**: +- Tafuta kichupo cha "Ports" kwenye paneli ya chini ya VS Code - Tafuta bandari 5000 kwenye orodha - Bonyeza kulia kwenye bandari 5000 - Chagua "Port Visibility" → "Public" -**Kwa nini kuifanya iwe ya umma?** Kwa kawaida, bandari za Codespace ni za kibinafsi (zinapatikana tu kwako). Kuzifanya za umma kunaruhusu frontend yako (ambayo inaendeshwa kwenye kivinjari) kuwasiliana na backend yako. +**Kwa nini kuweka umma?** Kwa kawaida, bandari za Codespace ni za faragha (zinapatikana kwako tu). Kuweka umma kunaruhusu frontend yako (inayoendesha kwenye kivinjari) kuwasiliana na backend yako. **3. Pata URL yako ya umma**: -Baada ya kufanya bandari iwe ya umma, utaona URL kama: +Baada ya kuweka bandari kuwa umma, utaona URL kama hii: ``` https://your-codespace-name-5000.app.github.dev ``` **4. Sasisha usanidi wa frontend yako**: ```javascript -// In your frontend app.js, update the BASE_URL: +// Katika app.js ya frontend yako, sasisha BASE_URL: this.BASE_URL = "https://your-codespace-name-5000.app.github.dev"; ``` -#### Kuelewa URLs za Codespace +#### Kuelewa URL za Codespace -URLs za Codespace zinafuata muundo unaotabirika: +URL za Codespace zina muundo unaotabirika: ``` https://[codespace-name]-[port].app.github.dev ``` -**Kuvunja hii:** -- `codespace-name`: Kitambulisho cha kipekee cha Codespace yako (kwa kawaida kinajumuisha jina lako la mtumiaji) -- `port`: Namba ya bandari ambayo huduma yako inaendeshwa (5000 kwa programu yetu ya FastAPI) +**Kuvunja haya:** +- `codespace-name`: Kitambulisho cha kipekee kwa Codespace yako (kawaida kina jina la mtumiaji wako) +- `port`: Nambari ya bandari huduma yako inayoendeshwa (5000 kwa app yetu ya FastAPI) - `app.github.dev`: Kikoa cha GitHub kwa programu za Codespace -#### Kujaribu Usanidi wa Codespace Yako +#### Kupima Usanidi wako wa Codespace **1. Jaribu backend moja kwa moja**: -Fungua URL yako ya umma kwenye tabo mpya ya kivinjari. Unapaswa kuona: +Fungua URL yako ya umma kwa kichupo kipya cha kivinjari. Unapaswa kuona: ``` Welcome to the AI Chat API. Send POST requests to /hello with JSON payload containing 'message' field. ``` -**2. Jaribu na zana za msanidi wa kivinjari**: +**2. Jaribu na zana za mende wa kivinjari**: ```javascript -// Open browser console and test your API +// Fungua console ya kivinjari na jaribu API yako fetch('https://your-codespace-name-5000.app.github.dev/hello', { method: 'POST', headers: {'Content-Type': 'application/json'}, @@ -867,101 +1252,123 @@ fetch('https://your-codespace-name-5000.app.github.dev/hello', { .then(data => console.log(data)); ``` -#### Codespaces vs Maendeleo ya Ndani +#### Codespaces dhidi ya Maendeleo ya Ndani | Kipengele | Maendeleo ya Ndani | GitHub Codespaces | -|-----------|--------------------|-------------------| -| **Muda wa Usanidi** | Mrefu (sakinisha Python, utegemezi) | Papo hapo (mazingira yaliyosanidiwa awali) | -| **Ufikiaji wa URL** | `http://localhost:5000` | `https://xyz-5000.app.github.dev` | -| **Usanidi wa Bandari** | Kiotomatiki | Mwongozo (fanya bandari ziwe za umma) | -| **Uhifadhi wa Faili** | Kompyuta ya ndani | Hifadhi ya GitHub | -| **Ushirikiano** | Ngumu kushiriki mazingira | Rahisi kushiriki kiungo cha Codespace | -| **Utegemezi wa Mtandao** | Kwa simu za API za AI pekee | Inahitajika kwa kila kitu | +|--------|-------------------|-------------------| +| **Muda wa Usanidi** | Mrefu (sasisha Python, utegemezi) | Mara moja (mazingira tayari yamesanidiwa) | +| **Upatikanaji wa URL** | `http://localhost:5000` | `https://xyz-5000.app.github.dev` | +| **Usanidi wa Bandari** | Moja kwa moja | Mikono (weka bandari kuwa za umma) | +| **Uendelevu wa Faili** | Kompyuta ya ndani | Rejesta ya GitHub | +| **Ushirikiano** | Gumu kushiriki mazingira | Rahisi kushiriki kiungo cha Codespace | +| **Utegemezi wa Intaneti** | Kwa maombi ya API ya AI pekee | Inahitajika kwa kila kitu | #### Vidokezo vya Maendeleo ya Codespace -**Vigezo vya Mazingira katika Codespaces**: -Faili yako ya `.env` inafanya kazi kwa njia sawa katika Codespaces, lakini unaweza pia kuweka vigezo vya mazingira moja kwa moja katika Codespace: +**Mabadiliko ya Mazingira katika Codespaces**: +Faili yako `.env` inafanya kazi sawa ndani ya Codespaces, lakini pia unaweza kuweka vigezo vya mazingira moja kwa Codespace: ```bash -# Set environment variable for the current session +# Weka thamani ya mazingira kwa kikao cha sasa export GITHUB_TOKEN="your_token_here" -# Or add to your .bashrc for persistence +# Au ongeza kwenye .bashrc yako kwa kudumu echo 'export GITHUB_TOKEN="your_token_here"' >> ~/.bashrc ``` **Usimamizi wa Bandari**: -- Codespaces hugundua kiotomatiki wakati programu yako inaanza kusikiliza kwenye bandari -- Unaweza kupeleka bandari nyingi kwa wakati mmoja (inasaidia ikiwa utaongeza hifadhidata baadaye) +- Codespaces hutambua moja kwa moja wakati programu yako inaanza kusikiliza bandari +- Unaweza kupeleka bandari nyingi kwa wakati mmoja (inayosaidia kama utaongeza hifadhidata baadaye) - Bandari zinabaki kupatikana mradi Codespace yako inaendelea **Mtiririko wa Kazi wa Maendeleo**: 1. Fanya mabadiliko ya msimbo katika VS Code -2. FastAPI inajipakia upya kiotomatiki (shukrani kwa hali ya upakiaji upya ya Uvicorn) +2. FastAPI ina auto-reload (shukrani kwa mode ya reload ya Uvicorn) 3. Jaribu mabadiliko mara moja kupitia URL ya umma -4. Fanya commit na push unapokuwa tayari +4. Fanya commit na push ukimaliza -> 💡 **Kidokezo cha Pro**: Weka alama URL yako ya backend ya Codespace wakati wa maendeleo. Kwa kuwa majina ya Codespace ni thabiti, URL haitabadilika mradi unatumia Codespace ile ile. +> 💡 **Ushauri Bora**: Weka alama URL ya backend ya Codespace wakati wa maendeleo. Kwa kuwa majina ya Codespace ni thabiti, URL haitabadilika mradi unatumia Codespace ile ile. -## Kuunda Kiolesura cha Gumzo cha Frontend: Ambapo Binadamu Hukutana na AI +## Kuunda Uso wa Chat wa Frontend: Hapo Watu Wanakutana na AI -Sasa tutajenga kiolesura cha mtumiaji – sehemu inayodhibiti jinsi watu wanavyowasiliana na msaidizi wako wa AI. Kama muundo wa kiolesura cha awali cha iPhone, tunazingatia kufanya teknolojia ngumu iwe rahisi na ya asili kutumia. +Sasa tutaweka muonekano wa mtumiaji – sehemu inayobainisha jinsi watu wanavyowasiliana na msaidizi wako wa AI. Kama muundo wa interface ya iPhone asili, tunalenga kufanya teknolojia tata ionekane rahisi na ya asili kutumia. -### Kuelewa Usanifu wa Kisasa wa Frontend +### Kuelewa Mhandisi wa Kisasa wa Frontend -Kiolesura chetu cha gumzo kitakuwa kile tunachokiita "Single Page Application" au SPA. Badala ya mbinu ya zamani ambapo kila bonyeza inasababisha ukurasa mpya kupakiwa, programu yetu inasasisha kwa urahisi na mara moja: +Uso wetu wa chat utakuwa kile tunachokiita "Programu ya Ukurasa Mmoja" au SPA. Badala ya mbinu ya zamani ambapo kila kubonyeza kunapakia ukurasa mpya, app yetu husasisha kwa simu na papo hapo: -**Tovuti za zamani**: Kama kusoma kitabu cha karatasi – unageuza kurasa mpya kabisa -**Programu yetu ya gumzo**: Kama kutumia simu yako – kila kitu kinatiririka na kusasishwa bila shida +**Tovuti za zamani**: Kama kusoma kitabu cha karatasi – unageuza kurasa mpya kabisa +**App yetu ya chat**: Kama kutumia simu yako – kila kitu kinatiririka na kusasishwa bila shida ```mermaid graph TD - A[User Types Message] --> B[JavaScript Captures Input] - B --> C[Validate & Format Data] - C --> D[Send to Backend API] - D --> E[Display Loading State] - E --> F[Receive AI Response] - F --> G[Update Chat Interface] - G --> H[Ready for Next Message] + A[Mtu Mtumiaji Andika Ujumbe] --> B[JavaScript Inakamata Kuingiza] + B --> C[Thibitisha & Panga Data] + C --> D[Tuma kwa API ya Backend] + D --> E[Onyesha Hali ya Kupakia] + E --> F[Pokea Jibu la AI] + F --> G[Sabisha Kiolesura cha Mazungumzo] + G --> H[Tayari kwa Ujumbe Ufuo] +``` +```mermaid +classDiagram + class ChatApp { + +messages: HTMLElement + +form: HTMLElement + +input: HTMLElement + +sendButton: HTMLElement + +BASE_URL: string + +API_ENDPOINT: string + + +constructor() + +initializeEventListeners() + +handleSubmit(event) + +callAPI(message) + +appendMessage(text, role) + +escapeHtml(text) + +scrollToBottom() + +setLoading(isLoading) + } + + ChatApp --> DOM : inaendesha + ChatApp --> FastAPI : inatuma maombi ``` - ### Nguzo Tatu za Maendeleo ya Frontend -Kila programu ya frontend – kutoka tovuti rahisi hadi programu ngumu kama Discord au Slack – inajengwa juu ya teknolojia tatu za msingi. Fikiria kama msingi wa kila kitu unachokiona na kuingiliana nacho kwenye wavuti: +Kila programu ya frontend – kutoka tovuti rahisi hadi app ngumu kama Discord au Slack – imejengwa kwa teknolojia kuu tatu. Fikiri kama msingi wa kila unachoona na kuwasiliana nacho kwenye wavuti: -**HTML (Muundo)**: Hii ni msingi wako -- Inaamua ni vipengele gani vinavyokuwepo (vifungo, maeneo ya maandishi, vyombo) -- Inatoa maana kwa maudhui (hii ni kichwa, hii ni fomu, nk.) -- Inaunda muundo wa msingi ambao kila kitu kingine kinajengwa juu yake +**HTML (Muundo)**: Hii ni msingi wako +- Hutoa maelezo kuhusu vipengele vilivyopo (vitufe, maeneo ya maandishi, chombo) +- Hutoa maana kwa maudhui (hii ni kichwa, hii ni fomu, n.k.) +- Hutengeneza muundo wa msingi unaoendeshwa na kila kitu kingine -**CSS (Uwasilishaji)**: Hii ni mbunifu wako wa ndani -- Inafanya kila kitu kionekane kizuri (rangi, fonti, mipangilio) -- Inashughulikia saizi tofauti za skrini (simu vs laptop vs tablet) -- Inaunda michoro laini na maoni ya kuona +**CSS (Uwasilishaji)**: Hii ni mbunifu wako wa ndani +- Inafanya kila kitu kuonekana nzuri (rangi, fonti, upangaji) +- Inasimamia ukubwa tofauti za skrini (simu vs laptop vs kibao) +- Hutoa michoro laini na mrejesho wa kuona -**JavaScript (Tabia)**: Hii ni akili yako -- Inajibu kile watumiaji wanachofanya (kubofya, kuandika, kusogeza) -- Inazungumza na backend yako na kusasisha ukurasa -- Inafanya kila kitu kiwe cha kuingiliana na cha nguvu +**JavaScript (Tabia)**: Hii ni ubongo wako +- Inajibu kile watumiaji wanachofanya (kubofya, kuandika, kurusha chini) +- Inazungumza na backend yako na kusasisha ukurasa +- Inafanya kila kitu kuwa mwingiliano na nguvu -**Fikiria kama muundo wa usanifu:** -- **HTML**: Mchoro wa muundo (kufafanua nafasi na uhusiano) -- **CSS**: Muundo wa uzuri na mazingira (mtindo wa kuona na uzoefu wa mtumiaji) +**Fikiri kama usanifu wa usanifu:** +- **HTML**: Ramani ya muundo (kueleza nafasi na uhusiano) +- **CSS**: Muundo wa urembo na mazingira (mwelekeo wa kuona na uzoefu wa mtumiaji) - **JavaScript**: Mifumo ya mitambo (utendaji na mwingiliano) -### Kwa nini Usanifu wa Kisasa wa JavaScript Unahitajika +### Kwa Nini Usanifu wa JavaScript wa Kisasa Ni Muhimu -Programu yetu ya gumzo itatumia mifumo ya kisasa ya JavaScript ambayo utaona katika programu za kitaalamu. Kuelewa dhana hizi kutakusaidia unapokua kama msanidi programu: +App yetu ya chat itatumia mifumo ya kisasa ya JavaScript ambayo utaiona katika programu za kitaalamu. Kuelewa dhana hizi kutakusaidia unavyoendelea kama mendelezaji: -**Usanifu wa Msingi wa Darasa**: Tutapanga msimbo wetu katika madarasa, ambayo ni kama kuunda michoro ya vitu -**Async/Await**: Njia ya kisasa ya kushughulikia shughuli zinazochukua muda (kama simu za API) -**Programu Inayoendeshwa na Matukio**: Programu yetu inajibu vitendo vya mtumiaji (kubofya, kubonyeza funguo) badala ya kuendesha katika mzunguko -**Manipulation ya DOM**: Kusasisha maudhui ya ukurasa wa wavuti kwa nguvu kulingana na mwingiliano wa mtumiaji na majibu ya API +**Usanifu wa Mifumo ya Darasa**: Tutapanga msimbo wetu kwa madarasa, ambayo ni kama kutengeneza ramani za vitu +**Async/Await**: Njia ya kisasa kushughulikia shughuli zinazochukua muda (kama miito ya API) +**Programu Iliyotegemea Matukio**: App yetu inajibu hatua za mtumiaji (kama kubofya, kubonyeza vidokezo) badala ya kuendesha kwa mizunguko +**Udhibiti wa DOM**: Kusasisha mabadiliko ya ukurasa wa wavuti kwa misukumo ya mtumiaji na majibu ya API -### Usanidi wa Muundo wa Mradi +### Mpangilio wa Mradi -Unda saraka ya frontend na muundo huu uliopangwa: +Unda saraka ya frontend na mpangilio huu uliopangwa: ```text frontend/ @@ -971,17 +1378,17 @@ frontend/ ``` **Kuelewa usanifu:** -- **Inatenganisha** masuala kati ya muundo (HTML), tabia (JavaScript), na uwasilishaji (CSS) -- **Inadumisha** muundo rahisi wa faili ambao ni rahisi kuvinjari na kurekebisha -- **Inafuata** mazoea bora ya maendeleo ya wavuti kwa shirika na usimamizi +- **Inatenga** masuala kati ya muundo (HTML), tabia (JavaScript), na uwasilishaji (CSS) +- **Inadumisha** muundo rahisi wa faili unaoweza kutembea na kuhariri kwa urahisi +- **Inafuata** mbinu bora za maendeleo ya wavuti kwa usimamizi na uendelevu -### Kujenga Msingi wa HTML: Muundo wa Semantiki kwa Ufikiaji +### Kujenga Msingi wa HTML: Muundo wa Semantic kwa Upatikanaji -Hebu tuanze na muundo wa HTML. Maendeleo ya kisasa ya wavuti yanasisitiza "HTML ya semantiki" – kutumia vipengele vya HTML vinavyoelezea waziwazi kusudi lao, si tu muonekano wao. Hii inafanya programu yako ipatikane kwa wasomaji wa skrini, injini za utafutaji, na zana zingine. +Tuanze na muundo wa HTML. Maendeleo ya wavuti ya kisasa yanasisitiza "HTML semantic" – kutumia vipengele vya HTML vinavyoelezea wazi kusudi lao, si tu muonekano. Hii hufanya programu yako ipatikane kwa wasomaji wa skrini, injini za utafutaji, na zana nyingine. -**Kwa nini HTML ya semantiki ni muhimu**: Fikiria kuelezea programu yako ya gumzo kwa mtu kupitia simu. Ungeweza kusema "kuna kichwa na kichwa, eneo kuu ambapo mazungumzo yanaonekana, na fomu chini kwa kuandika ujumbe." HTML ya semantiki hutumia vipengele vinavyolingana na maelezo haya ya asili. +**Kwa nini HTML semantic ni muhimu**: Fikiria unamuambia mtu app yako ya chat kwa simu. Ungesema "kuna kichwa lenye kichwa na maelezo, eneo kuu ambapo mazungumzo yanaonekana, na fomu chini kwa kuandika ujumbe." HTML semantic hutumia vipengele vinavyolingana na maelezo haya ya asili. -Unda `index.html` na markup hii iliyopangwa kwa uangalifu: +Tengeneza `index.html` na alama hii iliyoundwa kwa kufikiria: ```html @@ -1026,74 +1433,73 @@ Unda `index.html` na markup hii iliyopangwa kwa uangalifu: **Kuelewa kila kipengele cha HTML na kusudi lake:** #### Muundo wa Hati -- **``**: Inaambia kivinjari hii ni HTML5 ya kisasa -- **``**: Inataja lugha ya ukurasa kwa wasomaji wa skrini na zana za tafsiri -- **``**: Inahakikisha usimbaji sahihi wa herufi kwa maandishi ya kimataifa -- **``**: Inafanya ukurasa uweze kujibika kwa simu kwa kudhibiti zoom na kiwango - -#### Vipengele vya Semantiki -- **`
`**: Inatambulisha wazi sehemu ya juu na kichwa na maelezo -- **`
`**: Inateua eneo kuu la maudhui (ambapo mazungumzo yanatokea) -- **`
`**: Sahihi semantiki kwa pembejeo ya mtumiaji, inawezesha urambazaji sahihi wa kibodi +- **``**: Inamfahamisha kivinjari hii ni HTML5 ya kisasa +- **``**: Inaeleza lugha ya ukurasa kwa wasomaji wa skrini na zana za tafsiri +- **``**: Inahakikisha usimbaji wa herufi uko sahihi kwa maandishi ya kimataifa +- **``**: Inafanya ukurasa uwe na muundo unaojibu simu kwa kudhibiti boriti na kiwango -#### Vipengele vya Ufikiaji -- **`role="log"`**: Inaambia wasomaji wa skrini eneo hili lina kumbukumbu ya mpangilio wa ujumbe -- **`aria-live="polite"`**: Inatangaza ujumbe mpya kwa wasomaji wa skrini bila kuingilia -- **`aria-label`**: Inatoa lebo za maelezo kwa vidhibiti vya fomu -- **`required`**: Kivinjari kinathibitisha kwamba watumiaji wanaingiza ujumbe kabla ya kutuma +#### Vipengele vya Semantic +- **`
`**: Hutoa sehemu ya juu wazi ya kichwa na maelezo +- **`
`**: Inaonyesha eneo kuu la maudhui (ambapo mazungumzo hufanyika) +- **``**: Ni sahihi kwa kisheria kwa ingizo la mtumiaji, hurahisisha kuvinjari kwa keyboard -#### Ujumuishaji wa CSS na JavaScript -- **`class` attributes**: Hutoa ndoano za mitindo kwa CSS (mfano, `chat-container`, `input-group`) -- **`id` attributes**: Inaruhusu JavaScript kupata na kudhibiti vipengele maalum -- **Mahali pa Script**: Faili ya JavaScript imepakizwa mwishoni ili HTML ipakizwe kwanza +#### Sifa za Upatikanaji +- **`role="log"`**: Inaambia wasomaji wa skrini eneo hili lina daftari la muda wa maandishi +- **`aria-live="polite"`**: Inatangaza ujumbe mpya kwa wasomaji wa skrini bila kuvuruga +- **`aria-label`**: Hutoa maelezo ya vidhibiti vya fomu +- **`required`**: Kivinjari kinathibitisha mtumiaji anaingiza ujumbe kabla ya kutuma -**Kwa nini muundo huu unafanya kazi:** -- **Mtiririko wa kimantiki**: Kichwa → Maudhui kuu → Fomu ya pembejeo inalingana na mpangilio wa kusoma wa asili -- **Inapatikana kwa kibodi**: Watumiaji wanaweza kuzunguka vipengele vyote vya kuingiliana -- **Inafaa kwa wasomaji wa skrini**: Alama wazi na maelezo kwa watumiaji wenye ulemavu wa kuona -- **Inajibu kwa simu**: Lebo ya meta ya viewport inawezesha muundo unaojibika -- **Uboreshaji wa maendeleo**: Inafanya kazi hata kama CSS au JavaScript haijapakizwa +#### Mchanganyiko wa CSS na JavaScript +- **`class` attributes**: Hutoa alama za mtindo kwa CSS (mfano, `chat-container`, `input-group`) +- **`id` attributes**: Huruhusu JavaScript kupata na kuhariri vipengele maalumu +- **Mahali pa script**: Faili la JavaScript linaletwa mwishoni ili HTML ipakie kwanza -### Kuongeza JavaScript ya Kuingiliana: Mantiki ya Programu ya Kisasa ya Wavuti +**Kwa nini muundo huu unaendana:** +- **Mtiririko wa mantiki**: Kichwa → Maudhui kuu → Fomu la ingizo linaendana na mfululizo wa kusoma asilia +- **Upatikanaji wa keyboard**: Watumiaji wanaweza kutumia tab kupitia vipengele vyote vya kuingilia +- **Rafiki kwa wasomaji wa skrini**: Alama za wazi na maelezo kwa watumiaji wenye ulemavu wa kuona +- **Inayojibu simu**: Meta tag ya viewport inaruhusu muundo unaojibu +- **Uboreshaji Endelevu**: Hufanya kazi hata kama CSS au JavaScript itashindikana kupakia -Sasa hebu tujenge JavaScript inayofanya kiolesura chetu cha gumzo kiwe hai. Tutatumia mifumo ya kisasa ya JavaScript ambayo utakutana nayo katika maendeleo ya wavuti ya kitaalamu, ikiwa ni pamoja na madarasa ya ES6, async/await, na programu inayoendeshwa na matukio. +### Kuongeza JavaScript ya Mwingiliano: Mantiki ya Programu ya Wavuti ya Kisasa +Sasa tufanye JavaScript inayoleta kiolesura chetu cha mazungumzo kuwa hai. Tutatumia mitindo ya kisasa ya JavaScript ambayo utakutana nayo katika maendeleo ya wavuti ya kitaalamu, ikiwa ni pamoja na madarasa ya ES6, async/await, na programu zinazotegemea matukio. -#### Kuelewa Usanifu wa Kisasa wa JavaScript +#### Kuelewa Mimariko ya Kisasa ya JavaScript -Badala ya kuandika msimbo wa utaratibu (mfululizo wa kazi zinazokimbia kwa mpangilio), tutaunda **usanifu wa msingi wa darasa**. Fikiria darasa kama mchoro wa kuunda vitu – kama vile mchoro wa mhandisi unaweza kutumika kujenga nyumba nyingi. +Badala ya kuandika msururu wa vipengele (mfululizo wa kazi ambazo zinafanya kwa mpangilio), tutaunda **mimari inayotegemea madarasa**. Fikiria darasa kama ramani ya jinsi ya kutengeneza vitu – kama vile ramani za mbunifu jengo zinazoweza kutumika kujenga nyumba nyingi. -**Kwa nini kutumia madarasa kwa programu za wavuti?** -- **Shirika**: Utendaji wote unaohusiana umewekwa pamoja -- **Urejelezaji**: Unaweza kuunda matukio mengi ya gumzo kwenye ukurasa mmoja -- **Usimamizi**: Rahisi kutatua na kurekebisha vipengele maalum -- **Kiwango cha kitaalamu**: Muundo huu unatumika katika mifumo kama React, Vue, na Angular +**Kwa nini kutumia madarasa kwa maombi ya wavuti?** +- **Mpangilio**: Kazi zote zinazohusiana zimeunganishwa pamoja +- **Tumia tena**: Unaweza kuunda matukio mengi ya mazungumzo kwenye ukurasa mmoja +- **Matengenezo rahisi**: Rahisi kuchunguza hitilafu na kubadilisha vipengele maalum +- **Kiwango cha kitaalamu**: Mtindo huu hutumika katika mifumo kama React, Vue, na Angular -Unda `app.js` na JavaScript hii ya kisasa, iliyopangwa vizuri: +Unda `app.js` ukiwa na JavaScript hii ya kisasa, iliyopangwa vizuri: ```javascript -// app.js - Modern chat application logic +// app.js - Mmantikio wa programu ya mazungumzo ya kisasa class ChatApp { constructor() { - // Get references to DOM elements we'll need to manipulate + // Pata marejeo kwa vipengele vya DOM tunavyohitaji kuvitawala this.messages = document.getElementById("messages"); this.form = document.getElementById("chatForm"); this.input = document.getElementById("messageInput"); this.sendButton = document.getElementById("sendBtn"); - // Configure your backend URL here - this.BASE_URL = "http://localhost:5000"; // Update this for your environment + // Sanidi URL ya seva yako hapa + this.BASE_URL = "http://localhost:5000"; // Sasisha hii kwa mazingira yako this.API_ENDPOINT = `${this.BASE_URL}/hello`; - // Set up event listeners when the chat app is created + // Weka wasikilizaji wa matukio unapounda programu ya mazungumzo this.initializeEventListeners(); } initializeEventListeners() { - // Listen for form submission (when user clicks Send or presses Enter) + // Sikiliza kuwasilishwa kwa fomu (wakati mtumiaji anabonyeza Tuma au anabonyeza Enter) this.form.addEventListener("submit", (e) => this.handleSubmit(e)); - // Also listen for Enter key in the input field (better UX) + // Pia sikiliza kitufe cha Enter kwenye sehemu ya ingizo (UX bora) this.input.addEventListener("keypress", (e) => { if (e.key === "Enter" && !e.shiftKey) { e.preventDefault(); @@ -1103,31 +1509,31 @@ class ChatApp { } async handleSubmit(event) { - event.preventDefault(); // Prevent form from refreshing the page + event.preventDefault(); // Zuia fomu isiboreshe ukurasa const messageText = this.input.value.trim(); - if (!messageText) return; // Don't send empty messages + if (!messageText) return; // Usitume ujumbe tupu - // Provide user feedback that something is happening + // Toa mrejesho kwa mtumiaji kwamba kuna jambo linaendelea this.setLoading(true); - // Add user message to chat immediately (optimistic UI) + // Ongeza ujumbe wa mtumiaji kwenye mazungumzo mara moja (UI ya matumaini) this.appendMessage(messageText, "user"); - // Clear input field so user can type next message + // Futa sehemu ya ingizo ili mtumiaji aweze kuandika ujumbe unaofuata this.input.value = ''; try { - // Call the AI API and wait for response + // Piga API ya AI na subiri jibu const reply = await this.callAPI(messageText); - // Add AI response to chat + // Ongeza jibu la AI kwenye mazungumzo this.appendMessage(reply, "assistant"); } catch (error) { console.error('API Error:', error); this.appendMessage("Sorry, I'm having trouble connecting right now. Please try again.", "error"); } finally { - // Re-enable the interface regardless of success or failure + // Rejesha kiolesura kwa kutumia mafanikio au kushindwa this.setLoading(false); } } @@ -1180,7 +1586,7 @@ class ChatApp { } } -// Initialize the chat application when the page loads +// Anzisha programu ya mazungumzo wakati ukurasa unapopakia document.addEventListener("DOMContentLoaded", () => { new ChatApp(); }); @@ -1192,26 +1598,26 @@ document.addEventListener("DOMContentLoaded", () => { ```javascript class ChatApp { constructor() { - // This runs when you create a new ChatApp instance - // It's like the "setup" function for your chat + // Hii inakwenda wakati unapotengeneza mfano mpya wa ChatApp + // Ni kama kazi ya "setup" kwa mazungumzo yako } methodName() { - // Methods are functions that belong to the class - // They can access class properties using "this" + // Mbinu ni kazi ambazo ni mali ya darasa + // Wanaweza kufikia mali za darasa kwa kutumia "this" } } ``` -**Mfumo wa Async/Await**: +**Mtindo wa Async/Await**: ```javascript -// Old way (callback hell): +// Njia ya zamani (jeuri ya kurejea): fetch(url) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error)); -// Modern way (async/await): +// Njia ya kisasa (async/await): try { const response = await fetch(url); const data = await response.json(); @@ -1221,73 +1627,90 @@ try { } ``` -**Programu Inayoendeshwa na Matukio**: -Badala ya kuangalia kila mara ikiwa kitu kimetokea, tunasikiliza matukio: +**Programu Inayotegemea Matukio**: +Badala ya kuangalia kila wakati kama kitu kimefanyika, tunasikiliza matukio: ```javascript -// When form is submitted, run handleSubmit +// Wakati fomu inapotumwa, endesha handleSubmit this.form.addEventListener("submit", (e) => this.handleSubmit(e)); -// When Enter key is pressed, also run handleSubmit +// Wakati kitufe cha Enter kinapobonyezwa, pia endesha handleSubmit this.input.addEventListener("keypress", (e) => { /* ... */ }); ``` -**Manipulation ya DOM**: +**Udhibiti wa DOM**: ```javascript -// Create new elements +// Tengeneza vipengele vipya const messageElement = document.createElement("div"); -// Modify their properties +// Badilisha mali zao messageElement.className = "message user"; messageElement.innerHTML = "Hello world!"; -// Add to the page +// Ongeza kwenye ukurasa this.messages.appendChild(messageElement); ``` -#### Usalama na Mazoea Bora +#### Usalama na Maarifa Bora **Kuzuia XSS**: ```javascript escapeHtml(text) { const div = document.createElement('div'); - div.textContent = text; // This automatically escapes HTML + div.textContent = text; // Hii huhifadhi HTML kiotomatiki return div.innerHTML; } ``` -**Kwa nini hii ni muhimu**: Ikiwa mtumiaji anaandika ``, kazi hii inahakikisha inaonyeshwa kama maandishi badala ya kutekelezwa kama msimbo. +**Kwa nini hili ni muhimu**: Ikiwa mtumiaji ataandika ``, kazi hii inahakikisha inaonyeshwa kama maandishi badala ya kutekelezwa kama msimbo. -**Kushughulikia Makosa**: +**Udhibiti wa Makosa**: ```javascript try { const reply = await this.callAPI(messageText); this.appendMessage(reply, "assistant"); } catch (error) { - // Show user-friendly error instead of breaking the app + // Onyesha kosa rafiki kwa mtumiaji badala ya kuvunja programu this.appendMessage("Sorry, I'm having trouble...", "error"); } ``` -**Mazingatio ya Uzoefu wa Mtumiaji**: -- **UI ya Optimistic**: Ongeza ujumbe wa mtumiaji mara moja, usisubiri majibu ya seva -- **Hali za kupakia**: Lemaza vifungo na onyesha "Inatuma..." wakati wa kusubiri -- **Auto-scroll**: Weka ujumbe mpya zaidi unaoonekana -- **Uthibitishaji wa pembejeo**: Usitume ujumbe tupu -- **Njia za mkato za kibodi**: Funguo ya Enter inatuma ujumbe (kama programu halisi za gumzo) +**Mambo ya Kuzingatia Kuhusu Uzoefu wa Mtumiaji**: +- **UI ya matumaini**: Ongeza ujumbe wa mtumiaji mara moja, usisubiri jibu la seva +- **Hali ya kupakia**: Zima vifungo na onyesha "Inatumwa..." wakati wa kusubiri +- **Kuzungusha kiotomatiki**: Weka ujumbe mpya uwe waonekana +- **Uthibitisho wa ingizo**: Usitume ujumbe tupu +- **Njia za ufunguo wa kibodi**: Kitufe cha Enter kinatuma ujumbe (kama programu halisi za mazungumzo) #### Kuelewa Mtiririko wa Programu -1. **Ukurasa unapakizwa** → Tukio la `DOMContentLoaded` linatokea → `new ChatApp()` linaundwa -2. **Constructor inaendeshwa** → Inapata marejeleo ya vipengele vya DOM → Inasanidi wasikilizaji wa matukio -3. **Mtumiaji anaandika ujumbe** → Anabonyeza Enter au anabonyeza Tuma → `handleSubmit` inaendeshwa -4. **handleSubmit** → Inathibitisha pembejeo → Ina -Muundo huu unaweza kupanuka – unaweza kuongeza vipengele kama kuhariri ujumbe, kupakia faili, au nyuzi nyingi za mazungumzo bila kuandika upya muundo wa msingi. +1. **Ukifungua ukurasa** → tukio la `DOMContentLoaded` linaanzishwa → `new ChatApp()` inaumbwa +2. **Kijenga kinaendesha** → hupata marejeleo ya vipengele vya DOM → huandaa wasikilizaji wa matukio +3. **Mtumiaji anaandika ujumbe** → Bonyeza Enter au bonyeza Send → `handleSubmit` inaendesha +4. **handleSubmit** → Inathibitisha ingizo → Inaonyesha hali ya kupakia → Inaita API +5. **API inajibu** → Ongeza ujumbe wa AI kwenye mazungumzo → Rudisha hali ya kiolesura kuweza kutumika tena +6. **Tayari kwa ujumbe unaofuata** → Mtumiaji anaweza kuendelea kuzungumza + +Mimari hii inaweza kupanuliwa – unaweza kwa urahisi kuongeza vipengele kama kuhariri ujumbe, kupakia faili, au nyuzi nyingi za mazungumzo bila kuandika upya muundo mkuu. + +### 🎯 Ukaguzi wa Kisia: Mimariko ya Kisasa ya Frontend -### Kustaili Kiolesura Chako cha Gumzo +**Kuelewa Mimariko**: Umetekeleza programu kamili ya ukurasa mmoja kwa kutumia mitindo ya kisasa ya JavaScript. Hii inaonyesha maendeleo ya frontendi ya kiwango cha kitaalamu. -Sasa hebu tuunde kiolesura cha kisasa, kinachovutia kwa CSS. Staili nzuri hufanya programu yako ionekane ya kitaalamu na kuboresha uzoefu wa mtumiaji kwa ujumla. Tutatumia vipengele vya kisasa vya CSS kama Flexbox, CSS Grid, na mali maalum kwa muundo unaojibika na unaopatikana. +**Dhana Muhimu Ulizozifahamu**: +- **Mimari ya darasa la ES6**: Muundo wa msimbo uliopangwa na rahisi kutunza +- **Mitindo ya Async/Await**: Programu ya kisasa isiyo sambaa +- **Programu Inayotegemea Matukio**: Ubunifu unaojibu wa kiolesura cha mtumiaji +- **Mbinu Bora za Usalama**: Kuzuia XSS na uthibitisho wa ingizo -Unda `styles.css` na staili hizi za kina: +**Muunganisho wa Sekta**: Mitindo uliyojifunza (mimari ya darasa, shughuli za async, udhibiti wa DOM) ni msingi wa mifumo ya kisasa kama React, Vue, na Angular. Unajenga kwa kufikiria kama inayotumika katika maombi ya uzalishaji. + +**Swali la Tafakari**: Unaweza kutumiaje programu hii ya mazungumzo kushughulikia mazungumzo mengi au uthibitishaji wa mtumiaji? Fikiria mabadiliko ya mimari yanayohitajika na jinsi muundo wa darasa unavyobadilika. + +### Kubuni Kiolesura Chako cha Mazungumzo + +Sasa tujenge kiolesura cha mazungumzo cha kisasa, chenye mvuto wa kuona kwa kutumia CSS. Urembo mzuri hufanya programu yako ionekane ya kitaalamu na kuboresha uzoefu wa mtumiaji kwa ujumla. Tutatumia sifa za kisasa za CSS kama Flexbox, CSS Grid, na mali za desturi kwa muundo unaojibu na unaopatikana kwa ajili ya wote. + +Unda `styles.css` ukiwa na mitindo hii kamili: ```css /* styles.css - Modern chat interface styling */ @@ -1546,107 +1969,166 @@ body { } ``` -**Kuelewa muundo wa CSS:** -- **Inatumia** mali maalum za CSS (variables) kwa mandhari thabiti na matengenezo rahisi -- **Inatekeleza** mpangilio wa Flexbox kwa muundo unaojibika na mpangilio sahihi -- **Inajumuisha** michoro laini kwa kuonekana kwa ujumbe bila kuvuruga -- **Inatoa** utofauti wa kuona kati ya ujumbe wa mtumiaji, majibu ya AI, na hali za makosa -- **Inasaidia** muundo unaojibika unaofanya kazi kwenye vifaa vya mezani na simu -- **Inazingatia** upatikanaji kwa mapendeleo ya mwendo uliopunguzwa na uwiano sahihi wa utofauti -- **Inatoa** msaada wa hali ya giza kulingana na mapendeleo ya mfumo wa mtumiaji +**Kuelewa mimariko ya CSS:** +- **Inatumia** mali za desturi za CSS (mabadiliko ya thamani) kwa muundo thabiti na urahisi wa matengenezo +- **Inatekeleza** mpangilio wa Flexbox kwa muundo unaojibu na upangaji sahihi +- **Inajumuisha** mienendo laini ya ujumbe bila kusumbua +- **Inatoa** tofauti za kuona kati ya ujumbe wa mtumiaji, majibu ya AI, na hali za makosa +- **Inaunga mkono** muundo unaofaa kwa vifaa vya desktop na simu za mkononi +- **Inazingatia** upatikanaji kwa upendeleo wa kupunguza mienendo na uwiano mzuri wa rangi +- **Inatoa** msaada wa hali ya giza kulingana na upendeleo wa mfumo wa mtumiaji -### Kuseti URL ya Backend Yako +### Kusanidi URL ya Seva Yako ya Backend -Hatua ya mwisho ni kusasisha `BASE_URL` katika JavaScript yako ili ilingane na seva yako ya backend: +Hatua ya mwisho ni kusasisha `BASE_URL` katika JavaScript yako ili ifuate seva yako ya backend: ```javascript -// For local development +// Kwa maendeleo ya ndani this.BASE_URL = "http://localhost:5000"; -// For GitHub Codespaces (replace with your actual URL) +// Kwa GitHub Codespaces (badilisha na URL yako halisi) this.BASE_URL = "https://your-codespace-name-5000.app.github.dev"; ``` **Kujua URL ya backend yako:** -- **Maendeleo ya ndani**: Tumia `http://localhost:5000` ikiwa unakimbia frontend na backend zote ndani -- **Codespaces**: Tafuta URL ya backend yako katika kichupo cha Ports baada ya kufanya bandari ya 5000 kuwa ya umma -- **Uzalishaji**: Badilisha na kikoa chako halisi unapoweka kwenye huduma ya mwenyeji +- **Maendeleo ya eneo la karibu**: Tumia `http://localhost:5000` ikiwa unafanya kazi mbili, frontend na backend, eneo hilo moja +- **Codespaces**: Tafuta URL ya backend kwenye kichupo cha Ports baada ya kufungua mlangoni 5000 kwa umma +- **Uzalishaji**: Badilisha na kikoa chako halisi unapopeleka huduma kwenye mtoa huduma + +> 💡 **Kidokezo cha Mtihani**: Unaweza kujaribu backend yako moja kwa moja kwa kutembelea URL ya mzizi katika kivinjari chako. Unapaswa kuona ujumbe wa karibu kutoka kwa seva yako ya FastAPI. -> 💡 **Kidokezo cha Kupima**: Unaweza kupima backend yako moja kwa moja kwa kutembelea URL ya mizizi kwenye kivinjari chako. Unapaswa kuona ujumbe wa kukaribisha kutoka kwa seva yako ya FastAPI. -## Kupima na Kuweka -Sasa kwa kuwa una vipengele vya frontend na backend vilivyojengwa, hebu tujaribu kila kitu kinafanya kazi pamoja na kuchunguza chaguo za kuweka ili kushiriki msaidizi wako wa gumzo na wengine. +## Upimaji na Uwekaji Mtandaoni -### Mtiririko wa Kupima wa Ndani +Sasa baada ya kuwa na vipengele vya frontendi na backend vimejengwa, tukajaribu kama yote yanafanya kazi pamoja na kuchunguza chaguzi za kuweka mtandaoni ili kushiriki msaidizi wako wa mazungumzo na wengine. -Fuata hatua hizi kupima programu yako kamili: +### Mtiririko wa Kujaribu Kwenye Eneo la Mitaa + +Fuatilia hatua hizi kujaribu programu yako kamili: ```mermaid graph TD - A[Start Backend Server] --> B[Configure Environment Variables] - B --> C[Test API Endpoints] - C --> D[Open Frontend in Browser] - D --> E[Test Chat Functionality] - E --> F[Debug Any Issues] + A[Anzisha Mtoaji wa Backend] --> B[Rekebisha Vigezo vya Mazingira] + B --> C[Jaribu Vipindi vya API] + C --> D[Fungua Frontend kwenye Kivinjari] + D --> E[Jaribu Uwezo wa Mazungumzo] + E --> F[Rekebisha Tatizo Lolote] ``` - -**Mchakato wa kupima hatua kwa hatua:** +**Mchakato wa hatua kwa hatua wa majaribio:** 1. **Anzisha seva yako ya backend**: ```bash cd backend - source venv/bin/activate # or venv\Scripts\activate on Windows + source venv/bin/activate # au venv\Scripts\activate kwenye Windows python api.py ``` -2. **Thibitisha API inafanya kazi**: - - Fungua `http://localhost:5000` kwenye kivinjari chako - - Unapaswa kuona ujumbe wa kukaribisha kutoka kwa seva yako ya FastAPI +2. **Thibitisha API ina kazi**: + - Fungua `http://localhost:5000` katika kivinjari chako + - Unapaswa kuona ujumbe wa karibu kutoka kwa seva yako ya FastAPI 3. **Fungua frontend yako**: - - Nenda kwenye saraka ya frontend yako - - Fungua `index.html` kwenye kivinjari chako cha wavuti - - Au tumia kiendelezi cha Live Server cha VS Code kwa uzoefu bora wa maendeleo + - Nenda kwenye saraka ya frontend + - Fungua `index.html` katika kivinjari chako + - Au tumia ugani wa Live Server wa VS Code kwa uzoefu bora wa maendeleo -4. **Jaribu utendaji wa gumzo**: - - Andika ujumbe kwenye uwanja wa kuingiza - - Bonyeza "Tuma" au bonyeza Enter +4. **Jaribu kazi ya mazungumzo**: + - Andika ujumbe katika sehemu ya ingizo + - Bonyeza "Send" au bonyeza Enter - Thibitisha AI inajibu ipasavyo - - Angalia console ya kivinjari kwa makosa yoyote ya JavaScript + - Angalia console ya kivinjari kwa makosa ya JavaScript ### Kutatua Masuala ya Kawaida | Tatizo | Dalili | Suluhisho | -|--------|--------|-----------| -| **Hitilafu ya CORS** | Frontend haiwezi kufikia backend | Hakikisha FastAPI CORSMiddleware imewekwa vizuri | -| **Hitilafu ya API Key** | Majibu ya 401 Unauthorized | Angalia variable ya mazingira ya `GITHUB_TOKEN` | -| **Muunganisho Umekataliwa** | Hitilafu za mtandao kwenye frontend | Thibitisha URL ya backend na kwamba seva ya Flask inafanya kazi | -| **Hakuna Jibu la AI** | Majibu tupu au makosa | Angalia magogo ya backend kwa masuala ya API au uthibitishaji | +|---------|----------|----------| +| **Hitilafu ya CORS** | Frontend haiwezi kufikia backend | Hakikisha FastAPI CORSMiddleware imeandaliwa vizuri | +| **Hitilafu ya API Key** | Misingi ya 401 Unauthorized | Angalia toleo lako la mazingira `GITHUB_TOKEN` | +| **Muunganisho Umezuiwa** | Makosa ya mtandao frontend | Hakikisha URL ya backend ni sahihi na seva ya Flask inaendesha | +| **Hakuna Jibu la AI** | Majibu tupu au ya makosa | Angalia kumbukumbu za backend kwa makosa ya API au hitilafu za uthibitisho | -**Hatua za kawaida za kutatua matatizo:** -- **Angalia** Console ya Zana za Msanidi Programu wa kivinjari kwa makosa ya JavaScript -- **Thibitisha** kichupo cha Mtandao kinaonyesha maombi na majibu ya API yaliyofanikiwa -- **Pitia** matokeo ya terminal ya backend kwa makosa ya Python au masuala ya API -- **Thibitisha** variables za mazingira zimepakiwa vizuri na zinapatikana +**Hatua za kawaida za uchunguzi wa hitilafu:** +- **Angalia** Console ya Zana za Developer wa kivinjari kwa makosa ya JavaScript +- **Thibitisha** kichupo cha Mtandao kinaonyesha maombi na majibu ya API kwa mafanikio +- **Kagua** matokeo ya kiolesura cha backend kwa makosa ya Python au matatizo ya API +- **Hakiki** mipangilio ya mazingira imeload kwa usahihi na inapatikana -## Changamoto ya Wakala wa GitHub Copilot 🚀 +## 📈 Muda wako wa Mwalimu wa Mageuzi wa AI -Tumia hali ya Wakala kukamilisha changamoto ifuatayo: +```mermaid +timeline + title Safari Kamili ya Maendeleo ya Programu ya AI + + section Misingi ya AI + Kuelewa AI Inayotengeneza + : Fahamu dhana za utambuzi wa mifumo + : Shuhudia udhibiti wa vigezo vya AI + : Jifunze mbinu za uhandisi wa maelekezo + + Muunganisho wa Modeli za GitHub + : Naviga majukwaa ya huduma za AI + : Shimika usalama wa uthibitishaji + : Boreshaji vigezo vya modeli + + section Maendeleo ya Backend + Miundo ya API ya Python + : Tengeneza programu za FastAPI + : Tekeleza kazi zisizo za kawaida (async) + : Unda njia salama za kuingia + + Muunganisho wa Huduma za AI + : Unganishaji na API za AI kutoka nje + : Shimika ukomo wa kiasi cha maombi + : Tekeleza mipaka ya makosa + + section Utaalamu wa Frontend + Mifumo ya Kisasa ya JavaScript + : Shuhudia usanifu wa darasa la ES6 + : Tekeleza mtiririko wa async/await + : Tengeneza interfaces zinazojibadilisha + + Uzoefu wa Mtumiaji wa Wakati Halisi + : Tengeneza interfaces za mazungumzo zilizo hai + : Shimika hali za upakiaji + : Boreshaji mwingiliano wa mtumiaji + + section Utayari wa Uzalishaji + Usalama & Utendaji + : Tekeleza usimamizi salama wa vibali + : Zuia udhaifu wa XSS + : Boreshaji utendaji wa API + + Utekelezaji wa Kitaalamu + : Tengeneza usanifu unaoweza kupanuka + : Unda msimbo unaotunzwa kwa urahisi + : Andika mchakato wa maendeleo +``` +**🎓 Hatua ya Kuisha Masomo**: Umefanikiwa kujenga programu kamili yenye nguvu za AI ukitumia teknolojia na mitindo ya mibuni inayotumia programu za msaidizi wa AI wa kisasa. Ujuzi huu unaonyesha mseto wa maendeleo ya wavuti wa jadi na ushirikiano wa AI wa kisasa. + +**🔄 Uwezo wa Kiwango Kifuatacho**: +- Tayari kuchunguza mifumo ya AI yenye maendeleo (LangChain, LangGraph) +- Imekomeshwa kujenga programu za AI zenye aina nyingi (maandishi, picha, sauti) +- Imetayarishwa kutekeleza hifadhidata za vekta na mifumo ya upokezaji +- Msingi umewekwa kwa kujifunza mashine na marekebisho ya mfano wa AI + +## Changamoto ya Wakalimu wa GitHub Copilot 🚀 + +Tumia hali ya Wakili kumaliza changamoto ifuatayo: -**Maelezo:** Boresha msaidizi wa gumzo kwa kuongeza historia ya mazungumzo na uhifadhi wa ujumbe. Changamoto hii itakusaidia kuelewa jinsi ya kudhibiti hali katika programu za gumzo na kutekeleza uhifadhi wa data kwa uzoefu bora wa mtumiaji. +**Maelezo:** Boresha msaidizi wa mazungumzo kwa kuongeza historia ya mazungumzo na uhifadhi wa ujumbe. Changamoto hii itakusaidia kuelewa jinsi ya kusimamia hali katika programu za mazungumzo na kutekeleza uhifadhi wa data kwa uzoefu bora wa mtumiaji. -**Kichocheo:** Badilisha programu ya gumzo ili kujumuisha historia ya mazungumzo inayodumu kati ya vikao. Ongeza utendaji wa kuhifadhi ujumbe wa gumzo kwenye uhifadhi wa ndani, onyesha historia ya mazungumzo wakati ukurasa unapopakia, na ujumuisha kitufe cha "Futa Historia". Pia tekeleza viashiria vya kuandika na timestamps za ujumbe ili kufanya uzoefu wa gumzo uwe wa kweli zaidi. +**Mhimili:** Badilisha programu ya mazungumzo ili kujumuisha historia ya mazungumzo inayodumu kati ya vikao. Ongeza kazi ya kuhifadhi ujumbe wa mazungumzo kwenye hifadhi ya ndani, onesha historia ya mazungumzo wakati ukurasa unapopakia, na jumuisha kitufe cha "Futa Historia". Pia tekeleza viashiria vya uandikaji na nyakati za ujumbe kufanya uzoefu wa mazungumzo kuwa halisi zaidi. -Jifunze zaidi kuhusu [hali ya wakala](https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode) hapa. +Jifunze zaidi kuhusu [hali ya wakili](https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode) hapa. -## Kazi: Jenga Msaidizi Wako wa AI Binafsi +## Kazi: Tengeneza Msaidizi Wako wa AI Binafsi -Sasa utaunda utekelezaji wako wa msaidizi wa AI. Badala ya kurudia tu msimbo wa mafunzo, hii ni fursa ya kutumia dhana huku ukijenga kitu kinachoakisi maslahi yako na matumizi yako. +Sasa utaunda utekelezaji wako wa msaidizi wa AI binafsi. Badala ya kunakili msimbo wa mafunzo tu, hii ni fursa ya kutumia dhana huku unajenga kitu kinachokamilisha maslahi na matumizi yako binafsi. -### Mahitaji ya Mradi +### Sharti za Mradi -Hebu tuweke mradi wako na muundo safi, uliopangwa: +Tuweke mradi wako ukiwa na muundo safi, uliopangwa: ```text my-ai-assistant/ @@ -1662,69 +2144,69 @@ my-ai-assistant/ └── README.md # Tell the world about your creation ``` -### Kazi za Msingi za Utekelezaji +### Kazi Muhimu za Utekelezaji **Maendeleo ya Backend:** -- **Chukua** msimbo wetu wa FastAPI na uufanye wako -- **Unda** utu wa kipekee wa AI – labda msaidizi wa kupika mwenye msaada, mshirika wa uandishi wa ubunifu, au rafiki wa kujifunza? -- **Ongeza** utunzaji mzuri wa makosa ili programu yako isivunjike wakati mambo yanapokwenda vibaya +- **Chukua** msimbo wetu wa FastAPI na uufanye wake +- **Tengeneza** tabia ya kipekee ya AI – labda msaidizi wa upishi, mshirika wa uandishi wa ubunifu, au rafiki wa kusomea? +- **Ongeza** udhibiti madhubuti wa makosa ili programu yako isivunjike wakati mambo yanaposhindikana - **Andika** nyaraka wazi kwa yeyote anayetaka kuelewa jinsi API yako inavyofanya kazi **Maendeleo ya Frontend:** -- **Jenga** kiolesura cha gumzo kinachohisi kuwa cha angavu na cha kukaribisha -- **Andika** JavaScript safi, ya kisasa ambayo ungejivunia kuonyesha kwa watengenezaji wengine -- **Buni** staili maalum zinazoakisi utu wa AI yako – za kufurahisha na za rangi? Safi na ndogo? Ni juu yako kabisa! +- **Jenga** kiolesura cha mazungumzo kinachoonekana kuwa rahisi na kinachokaribisha +- **Andika** JavaScript safi, ya kisasa ambayo utajivunia kuonyesha kwa watengenezaji wengine +- **Buni** mitindo ya desturi inayowakilisha tabia ya AI yako – mchangamfu na yenye rangi? Safi na ya chini kabisa? Yako kabisa! - **Hakikisha** inafanya kazi vizuri kwenye simu na kompyuta -**Mahitaji ya Kubinafsisha:** -- **Chagua** jina la kipekee na utu kwa msaidizi wako wa AI – labda kitu kinachoakisi maslahi yako au matatizo unayotaka kutatua -- **Binafsisha** muundo wa kuona ili ulingane na hali ya msaidizi wako -- **Andika** ujumbe wa kukaribisha wa kuvutia unaowafanya watu watake kuanza kuzungumza -- **Jaribu** msaidizi wako na aina tofauti za maswali ili kuona jinsi unavyojibu +**Sharti za Uboreshaji Binafsi:** +- **Chagua** jina na tabia ya kipekee kwa msaidizi wako wa AI – labda kitu kinachowakilisha maslahi yako au matatizo unayotaka kutatua +- **Boresha** muundo wa kuona ili uendane na hali ya msaidizi wako +- **Andika** ujumbe wa ukaribisho mzuri unaowafanya watu watake kuanza kuzungumza +- **Jaribu** msaidizi wako na aina mbalimbali za maswali kuona jinsi anavyojibu -### Mawazo ya Uboreshaji (Hiari) +### Mapendekezo ya Uboreshaji (Hiari) -Unataka kuchukua mradi wako hadi kiwango kingine? Hapa kuna mawazo ya kufurahisha ya kuchunguza: +Unataka kupeleka mradi wako hatua inayofuata? Hapa kuna mawazo ya kufurahia: -| Kipengele | Maelezo | Ujuzi Utakaofanya Mazoezi | -|-----------|---------|--------------------------| -| **Historia ya Ujumbe** | Kumbuka mazungumzo hata baada ya upya wa ukurasa | Kufanya kazi na localStorage, kushughulikia JSON | -| **Viashiria vya Kuandika** | Onyesha "AI inaandika..." wakati wa kusubiri majibu | Michoro ya CSS, programu ya async | -| **Timestamps za Ujumbe** | Onyesha wakati kila ujumbe ulitumwa | Uundaji wa tarehe/muda, muundo wa UX | -| **Hamisha Gumzo** | Waruhusu watumiaji kupakua mazungumzo yao | Kushughulikia faili, usafirishaji wa data | -| **Kubadilisha Mandhari** | Kubadili hali ya mwanga/giza | Mali za CSS, mapendeleo ya mtumiaji | -| **Ingizo la Sauti** | Ongeza utendaji wa hotuba-kwa-maandishi | API za Wavuti, upatikanaji | +| Kipengele | Maelezo | Ujuzi Utayafanyia Mazoezi | +|---------|-------------|------------------------| +| **Historia ya Ujumbe** | Kukumbuka mazungumzo hata baada ya ukurasa kusasishwa | Kufanya kazi na localStorage, kushughulikia JSON | +| **Viashiria vya Kuandika** | Onyesha "AI anaandika..." wakati wa kusubiri majibu | Mienendo ya CSS, programu asynchronous | +| **Nyakati za Ujumbe** | Onyesha lini kila ujumbe umetumwa | Muundo wa tarehe/nyakati, ubunifu wa uzoefu wa mtumiaji | +| **Kukabidhi Mazungumzo** | Ruhusu watumiaji kupakua mazungumzo yao | Udhibiti faili, usafirishaji wa data | +| **Kubadilisha Mandhari** | Badilisha kati ya hali nyepesi/giza | Mali za CSS, mapendeleo ya mtumiaji | +| **Ingizo la Sauti** | Ongeza utendakazi wa hotuba hadi maandishi | API za wavuti, upatikanaji | -### Kupima na Nyaraka +### Upimaji na Nyaraka -**Uhakikisho wa Ubora:** -- **Jaribu** programu yako na aina mbalimbali za pembejeo na hali za ukingo -- **Thibitisha** muundo unaojibika unafanya kazi kwenye saizi tofauti za skrini +**Uhakiki wa Ubora:** +- **Jaribu** programu yako kwa aina tofauti za ingizo na hali maalum +- **Thibitisha** muundo unaojibu unafanya kazi kwenye saizi mbalimbali za skrini - **Angalia** upatikanaji kwa urambazaji wa kibodi na wasomaji wa skrini - **Thibitisha** HTML na CSS kwa kufuata viwango -**Mahitaji ya Nyaraka:** -- **Andika** README.md inayoelezea mradi wako na jinsi ya kuendesha -- **Jumuisha** picha za skrini za kiolesura chako cha gumzo kikiwa kimefanya kazi -- **Andika** vipengele vyovyote vya kipekee au ubinafsishaji ulioongeza -- **Toa** maelekezo wazi ya usanidi kwa watengenezaji wengine +**Sharti za Nyaraka:** +- **Andika** README.md inayoelezea mradi wako na jinsi ya kuutumia +- **Jumuisha** picha za skrini za kiolesura chako cha mazungumzo kinavyofanya kazi +- **Andika** vipengele vyovyote maalum au ubinafsishaji ulioufanya +- **Toa** maelezo wazi ya usanidi kwa watengenezaji wengine -### Miongozo ya Uwasilishaji +### Miongozo ya Kuwasilisha -**Vitu vya Mradi:** -1. Folda kamili ya mradi na msimbo wote wa chanzo +**Vifurushi vya Mradi:** +1. Folda kamili ya mradi yenye msimbo wote chanzo 2. README.md yenye maelezo ya mradi na maelekezo ya usanidi -3. Picha za skrini zinazoonyesha msaidizi wako wa gumzo ukifanya kazi +3. Picha za skrini zinaonyesha msaidizi wako wa mazungumzo akifanya kazi 4. Tafakari fupi juu ya kile ulichojifunza na changamoto ulizokutana nazo **Vigezo vya Tathmini:** -- **Utendaji**: Je, msaidizi wa gumzo unafanya kazi kama inavyotarajiwa? -- **Ubora wa Msimbo**: Je, msimbo umeandaliwa vizuri, umeandikwa maoni, na unadumika? -- **Muundo**: Je, kiolesura ni cha kuvutia na rahisi kutumia? -- **Ubunifu**: Je, utekelezaji wako ni wa kipekee na wa kibinafsi kiasi gani? -- **Nyaraka**: Je, maelekezo ya usanidi ni wazi na kamili? +- **Ufanisi**: Je, msaidizi wa mazungumzo anafanya kazi kama inavyotarajiwa? +- **Ubora wa Msimbo**: Je, msimbo umepangwa vizuri, umeandikwa maelezo, na unaendeshwa kwa urahisi? +- **Muundo**: Je, kiolesura kina mvuto wa kuona na kinavutia mtumiaji? +- **Ubunifu**: Utekelezaji wako ni wa kipekee kiasi gani na umebinafsishwa vipi? +- **Nyaraka**: Je, maagizo ya usanidi ni wazi na kamili? -> 💡 **Kidokezo cha Mafanikio**: Anza na mahitaji ya msingi kwanza, kisha ongeza uboreshaji mara tu kila kitu kinapofanya kazi. Lenga kuunda uzoefu wa msingi uliosuguliwa kabla ya kuongeza vipengele vya hali ya juu. +> 💡 **Kidokezo cha Mafanikio**: Anza na mahitaji ya msingi kwanza, kisha ongeza uboreshaji baada ya kila kitu kuwa kinavyofanya kazi. Lenga kuunda uzoefu mzuri kabla ya kuongeza vipengele vya hali ya juu. ## Suluhisho @@ -1732,11 +2214,11 @@ Unataka kuchukua mradi wako hadi kiwango kingine? Hapa kuna mawazo ya kufurahish ## Changamoto za Ziada -Uko tayari kuchukua msaidizi wako wa AI hadi kiwango kingine? Jaribu changamoto hizi za hali ya juu ambazo zitakufundisha zaidi kuhusu ujumuishaji wa AI na maendeleo ya wavuti. +Tayari kuchukua msaidizi wako wa AI hatua inayofuata? Jaribu changamoto hizi za hali ya juu zitakazoroga uelewa wako wa ushirikiano wa AI na maendeleo ya wavuti. -### Kubinafsisha Utu +### Uboreshaji wa Tabia -Uchawi halisi hutokea unapompa msaidizi wako wa AI utu wa kipekee. Jaribu vichocheo tofauti vya mfumo kuunda wasaidizi maalum: +Uchawi halisi hutokea unapoleta tabia ya kipekee kwa msaidizi wako wa AI. Jaribu maagizo tofauti ya mfumo kuunda wasaidizi maalum: **Mfano wa Msaidizi wa Kitaalamu:** ```python @@ -1755,65 +2237,65 @@ call_llm(message, "You are a patient senior developer who explains complex progr ### Uboreshaji wa Frontend -Badilisha kiolesura chako cha gumzo na uboreshaji huu wa kuona na wa kiutendaji: +Badilisha kiolesura chako cha mazungumzo kwa maboresho haya ya kuona na utendaji: -**Vipengele vya CSS vya Juu:** -- **Tekeleza** michoro laini za ujumbe na mabadiliko -- **Ongeza** miundo maalum ya baluni za gumzo na maumbo ya CSS na gradients -- **Unda** michoro ya kiashiria cha kuandika kwa wakati AI "inawaza" -- **Buni** maoni ya emoji au mfumo wa ukadiriaji wa ujumbe +**Sifa za CSS za Juu:** +- **Tekeleza** mienendo laini na mabadiliko ya ujumbe +- **Ongeza** muundo wa bubbule maalum za mazungumzo kwa kutumia umbo la CSS na miale ya rangi +- **Tengeneza** mienendo ya kiashiria cha kuandika wakati AI anafanya "kufikiria" +- **Buni** hisia za emoji au mfumo wa tathmini ya ujumbe **Uboreshaji wa JavaScript:** -- **Ongeza** njia za mkato za kibodi (Ctrl+Enter kwa kutuma, Escape kufuta pembejeo) -- **Tekeleza** utendaji wa kutafuta na kuchuja ujumbe -- **Unda** kipengele cha kusafirisha mazungumzo (pakua kama maandishi au JSON) -- **Ongeza** uhifadhi wa kiotomatiki kwenye localStorage ili kuzuia kupoteza ujumbe +- **Ongeza** njia za mkato wa kibodi (Ctrl+Enter kutuma, Escape kufuta ingizo) +- **Tekeleza** utambuzi na uchujaji wa ujumbe +- **Tengeneza** kipengele cha kusafirisha mazungumzo (kupakua kama maandishi au JSON) +- **Ongeza** uhifadhi kiotomatiki kwenye localStorage kuepuka kupoteza ujumbe -### Ujumuishaji wa AI wa Juu +### Ushirikiano wa AI wa Juu -**Utu Mbalimbali wa AI:** -- **Unda** menyu ya kushuka kubadili kati ya utu tofauti wa AI -- **Hifadhi** utu unaopendelewa na mtumiaji kwenye localStorage -- **Tekeleza** ubadilishaji wa muktadha unaodumisha mtiririko wa mazungumzo +**Tabia Nyingi za AI:** +- **Tengeneza** menyu ya kunyang’anywa kuchagua kati ya tabia tofauti za AI +- **Hifadhi** tabia inayopendelewa ya mtumiaji katika localStorage +- **Tekeleza** kubadilisha muktadha unaoendeleza mtiririko wa mazungumzo -**Vipengele vya Jibu la Smart:** -- **Ongeza** ufahamu wa muktadha wa mazungumzo (AI inakumbuka ujumbe wa awali) -- **Tekeleza** mapendekezo ya smart kulingana na mada ya mazungumzo -- **Unda** vifungo vya jibu la haraka kwa maswali ya kawaida +**Vipengele Mahiri vya Jibu:** +- **Ongeza** ufahamu wa muktadha wa mazungumzo (AI anakumbuka ujumbe uliopita) +- **Tekeleza** mapendekezo mahiri kulingana na mada ya mazungumzo +- **Unda** vitufe vya majibu ya haraka kwa maswali ya kawaida -> 🎯 **Lengo la Kujifunza**: Changamoto hizi za ziada zinakusaidia kuelewa mifumo ya hali ya juu ya maendeleo ya wavuti na mbinu za ujumuishaji wa AI zinazotumika katika programu za uzalishaji. +> 🎯 **Lengo la Kujifunza**: Changamoto hizi za ziada zinakusaidia kuelewa mifumo ya maendeleo ya wavuti yenye maendeleo ya hali ya juu na mbinu za uunganishaji wa AI zinazotumiwa katika programu za uzalishaji. -## Muhtasari na Hatua Zifuatazo +## Muhtasari na Hatua Zitakazofuata -Hongera! Umefanikiwa kujenga msaidizi kamili wa gumzo unaotumia AI kutoka mwanzo. Mradi huu umekupa uzoefu wa vitendo na teknolojia za kisasa za maendeleo ya wavuti na ujumuishaji wa AI – ujuzi ambao unazidi kuwa muhimu katika mazingira ya teknolojia ya leo. +Hongera! Umefanikiwa kujenga msaidizi wa mazungumzo unaotumia AI kutoka mwanzo. Mradi huu umekupa uzoefu wa vitendo na teknolojia za kisasa za maendeleo ya wavuti na uunganishaji wa AI – ujuzi unaozidi kuwa muhimu katika mazingira ya teknolojia ya sasa. -### Uliyofanikiwa +### Uliyofanikiwa Kutanua -Katika somo hili, umemudu teknolojia na dhana kadhaa muhimu: +Katika somo hili, umejifunza teknolojia na dhana kuu kadhaa: -**Maendeleo ya Backend:** -- **Umeunganisha** na GitHub Models API kwa utendaji wa AI -- **Umejenga** API ya RESTful kwa kutumia Flask na utunzaji sahihi wa makosa -- **Umetekeleza** uthibitishaji salama kwa kutumia variables za mazingira -- **Umesanidi** CORS kwa maombi ya asili tofauti kati ya frontend na backend +**Maendeleo ya Backend:** +- **Umeunganishwa** na GitHub Models API kwa ajili ya utendaji wa AI +- **Umejenga** API ya RESTful kwa kutumia Flask na usimamizi sahihi wa makosa +- **Umetekeleza** uthibitishaji salama kwa kutumia mabadiliko ya mazingira +- **Umeweka** CORS kwa maombi ya kuvuka-meneo kati ya frontend na backend -**Maendeleo ya Frontend:** -- **Umeunda** kiolesura cha gumzo kinachojibika kwa kutumia HTML ya kimantiki -- **Umetekeleza** JavaScript ya kisasa kwa async/await na muundo wa msingi wa darasa -- **Umebuni** kiolesura cha mtumiaji kinachovutia kwa CSS Grid, Flexbox, na michoro -- **Umeongeza** vipengele vya upatikanaji na kanuni za muundo unaojibika +**Maendeleo ya Frontend:** +- **Umeunda** kiolesura cha mazungumzo kinachobadili ukubwa kwa kutumia HTML semantiki +- **Umetumia** JavaScript za kisasa na async/await pamoja na usanifu wa darasa +- **Umetengeneza** kiolesura cha kuvutia kwa kutumia CSS Grid, Flexbox, na michoro ya michoro +- **Umeongeza** vipengele vya upatikanaji na kanuni za muundo unaobadilika saizi -**Ujumuishaji wa Full-Stack:** -- **Umeunganisha** frontend na backend kupitia maombi ya API ya HTTP -- **Umeshughulikia** mwingiliano wa mtumiaji wa wakati halisi na mtiririko wa data wa async -- **Umetekeleza** utunzaji wa makosa na maoni ya mtumiaji katika programu nzima -- **Umejaribu** mtiririko kamili wa programu kutoka pembejeo ya mtumiaji hadi jibu la AI +**Uunganishaji wa Full-Stack:** +- **Umeunganisha** frontend na backend kupitia simu za API za HTTP +- **Umesimamia** mwingiliano wa wakati halisi wa mtumiaji na mtiririko wa data usio na usawa +- **Umetekeleza** usimamizi wa makosa na mrejesho kwa mtumiaji katika programu nzima +- **Umejaribu** mtiririko kamili wa programu kutoka kwa ingizo la mtumiaji hadi jibu la AI -### Matokeo Muhimu ya Kujifunza +### Matokeo Muhimu ya Kujifunza ```mermaid mindmap - root((AI Chat App Skills)) + root((Ujuzi wa AI Chat App)) API Integration Authentication Error Handling @@ -1830,45 +2312,72 @@ mindmap Prompt Engineering Model Parameters Conversation Flow -``` +``` +Mradi huu umekujulisha misingi ya kujenga programu zinazoendeshwa na AI, ambayo ni mustakabali wa maendeleo ya wavuti. Sasa unaelewa jinsi ya kuingiza uwezo wa AI katika programu za wavuti za jadi, kuunda uzoefu wa mtumiaji unaovutia unaoonekana kuwa mwenye akili na wa haraka. + +### Matumizi ya Kitaalamu + +Ujuzi ulioupata katika somo hili unatumika moja kwa moja katika taaluma za kisasa za maendeleo ya programu: + +- **Maendeleo ya wavuti ya full-stack** kwa kutumia mifumo na API za kisasa +- **Uunganishaji wa AI** katika programu za wavuti na programu za simu +- **Ubunifu na maendeleo ya API** kwa usanifu wa microservices +- **Maendeleo ya kiolesura cha mtumiaji** kwa kuzingatia upatikanaji na muundo unaobadilika ukubwa +- **Mazoezi ya DevOps** ikijumuisha usanidi wa mazingira na utoaji + +### Kuendeleza Safari Yako ya Maendeleo ya AI + +**Hatua Zinazo Fuata za Kujifunza:** +- **Chunguza** mifano na API za AI za hali ya juu zaidi (GPT-4, Claude, Gemini) +- **Jifunze** mbinu za uhandisi wa prompt kwa majibu bora ya AI +- **Soma** kuhusu ubunifu wa mazungumzo na kanuni za uzoefu wa mtumiaji wa chatbot +- **Chunguza** usalama wa AI, maadili, na mbinu za maendeleo ya AI kwa uwajibikaji +- **Jenga** programu tata zaidi zenye kumbukumbu za mazungumzo na ufahamu wa muktadha + +**Mawazo ya Miradi ya Juu:** +- Vyumba vya mazungumzo vya watumiaji wengi na udhibiti wa AI +- Chatbots za huduma kwa wateja zinazotumia AI +- Msaada wa kufundisha wa kielimu wenye mafunzo binafsi +- Washirika wa uandishi wa ubunifu wenye tabia mbalimbali za AI +- Msaidizi wa nyaraka za kiufundi kwa watengenezaji + +## Kuanzisha na GitHub Codespaces -Mradi huu umekutambulisha kwa misingi ya kujenga programu zinazotumia AI, ambayo inawakilisha mustakabali wa maendeleo ya wavuti. Sasa unaelewa jinsi ya kuunganisha uwezo wa AI katika programu za wavuti za jadi, kuunda uzoefu wa mtumiaji unaovutia ambao unahisi kuwa wa akili na unaojibika. +Unataka kujaribu mradi huu katika mazingira ya maendeleo ya wingu? GitHub Codespaces inatoa usanidi kamili wa maendeleo katika kivinjari chako, bora kwa kujaribu programu za AI bila haja ya usanidi wa eneo lako la mashine. -### Matumizi ya Kitaalamu +### Kuweka Mazingira Yako ya Maendeleo -Ujuzi uliouendeleza katika somo hili unatumika moja kwa moja kwa kazi za kisasa za maendeleo ya programu: +**Hatua 1: Unda Kutoka Kwenye Kiolezo** +- **Tembelea** hazina ya [Web Dev For Beginners repository](https://github.com/microsoft/Web-Dev-For-Beginners) +- **Bonyeza** "Use this template" juu kulia (hakikisha umeingia kwenye GitHub) -- **Maendeleo ya wavuti ya full-stack** kwa kutumia mifumo ya kisasa na API -- **Ujumuishaji wa AI** katika programu za wavuti na programu za simu -- **Ubunifu na maendeleo ya API** kwa usanifu wa huduma ndogo -- **Maendeleo ya kiolesura cha mtumiaji** kwa kuzingatia upatikanaji na muundo unaojibika -- **Mazoezi ya DevOps** ikiwa ni pamoja na usanidi wa mazingira na uwekaji +![Create from template interface showing the green "Use this template" button](../../../translated_images/template.67ad477109d29a2b.sw.png) -### Kuendeleza Safari Yako ya Maendeleo ya AI +**Hatua 2: Anzisha Codespaces** +- **Fungua** hazina uliyounda hivi karibuni +- **Bonyeza** kitufe cha kijani "Code" na chagua "Codespaces" +- **Chagua** "Create codespace on main" kuanzisha mazingira yako ya maendeleo -**Hatua Zifuatazo za Kujifunza:** -- **Chunguza** mifano ya AI ya hali ya juu zaidi na API (GPT-4, Claude, Gemini) -- **Jifunze** kuhusu mbinu za uhandisi wa kichocheo kwa majibu bora ya AI -- **Soma** muundo wa mazungumzo na kanuni za uzoefu wa mtumiaji wa chatbot -- **Chunguza** usalama wa AI, maadili, na mazoea ya maendeleo ya AI yenye uwajibikaji -- **Jenga** programu ngumu zaidi na kumbukumbu ya mazungumzo na ufahamu wa muktadha +![Create codespace interface with options for launching cloud development environment](../../../translated_images/codespace.bcecbdf5d2747d3d.sw.png) -**Mawazo ya Mradi wa Juu:** -- Vyumba vya gumzo vya watumiaji wengi na usimamizi wa AI -- Chatbots za huduma kwa wateja zinazotumia AI -- Wasaidizi wa kufundisha elimu na ujifunzaji wa kibinafsi -- -- **Kuelekeza bandari** kwa ajili ya kujaribu programu zako +**Hatua 3: Usanidi wa Mazingira** +Mara wakati Codespace yako ianzishwa, utakuwa na: +- **Zana zilizo wekwa tayari** Python, Node.js, na zana zote zinazohitajika za maendeleo +- **Kiolesura cha VS Code** na viendelezi vya maendeleo ya wavuti +- **Ufikiaji wa terminal** kwa kuendesha seva za backend na frontend +- **Kuweka mbele bandari** kwa ajili ya kujaribu programu zako -**Kile Codespaces inatoa:** -- **Inaondoa** matatizo ya usanidi na mipangilio ya mazingira ya ndani -- **Inatoa** mazingira ya maendeleo yanayofanana kwenye vifaa tofauti -- **Inajumuisha** zana na viendelezi vilivyosanidiwa awali kwa ajili ya maendeleo ya wavuti -- **Inatoa** muunganisho wa moja kwa moja na GitHub kwa udhibiti wa toleo na ushirikiano +**Nini Codespaces hutolewa:** +- **Hutoa kuondoa matatizo ya usanidi wa mazingira ya eneo lako** +- **Hutoa mazingira thabiti ya maendeleo kwa vifaa mbalimbali** +- **Inajumuisha zana na viendelezi vilivyosanidiwa kwa maendeleo ya wavuti** +- **Inatoa uunganisho mzuri na GitHub kwa usimamizi wa matoleo na ushirikiano** -> 🚀 **Ushauri wa Wataalamu**: Codespaces ni bora kwa kujifunza na kuunda programu za AI kwa sababu inashughulikia usanidi wa mazingira magumu moja kwa moja, ikikuruhusu kuzingatia kujenga na kujifunza badala ya matatizo ya usanidi. +> 🚀 **Kipendekezo cha Mtaalamu**: Codespaces ni bora kwa kujifunza na kutunga mfano wa programu za AI kwa kuwa hutatua kabisa matatizo ya usanidi wa mazingira, ikikuruhusu kuzingatia kujenga na kujifunza badala ya kutatua changamoto za usanidi. --- -**Kanusho**: -Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kwa usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file + +**Kiasi cha Masuala**: +Nyaraka hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Wakati tunajitahidi kwa usahihi, tafadhali fahamu kwamba tafsiri za moja kwa moja zinaweza kuwa na makosa au kutokukamilika. Nyaraka ya asili katika lugha yake ya asili inapaswa kuchukuliwa kama chanzo halali. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inashauriwa. Hatutawajibika kwa mkanganyiko wowote au tafsiri potofu zitokanazo na matumizi ya tafsiri hii. + \ No newline at end of file diff --git a/translations/sw/README.md b/translations/sw/README.md index d909660aa..a76dbd48f 100644 --- a/translations/sw/README.md +++ b/translations/sw/README.md @@ -1,8 +1,8 @@ -[Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](../my/README.md) | [Chinese (Simplified)](../zh/README.md) | [Chinese (Traditional, Hong Kong)](../hk/README.md) | [Chinese (Traditional, Macau)](../mo/README.md) | [Chinese (Traditional, Taiwan)](../tw/README.md) | [Croatian](../hr/README.md) | [Czech](../cs/README.md) | [Danish](../da/README.md) | [Dutch](../nl/README.md) | [Estonian](../et/README.md) | [Finnish](../fi/README.md) | [French](../fr/README.md) | [German](../de/README.md) | [Greek](../el/README.md) | [Hebrew](../he/README.md) | [Hindi](../hi/README.md) | [Hungarian](../hu/README.md) | [Indonesian](../id/README.md) | [Italian](../it/README.md) | [Japanese](../ja/README.md) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../br/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](./README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) +[Kiarabu](../ar/README.md) | [Kibengali](../bn/README.md) | [Kibulgaria](../bg/README.md) | [Kiburma (Myanmar)](../my/README.md) | [Kichina (Rahisi)](../zh/README.md) | [Kichina (Marefu, Hong Kong)](../hk/README.md) | [Kichina (Marefu, Macau)](../mo/README.md) | [Kichina (Marefu, Taiwan)](../tw/README.md) | [Kikroeshia](../hr/README.md) | [Kicheki](../cs/README.md) | [Kideni](../da/README.md) | [Kiholanzi](../nl/README.md) | [Kiestonia](../et/README.md) | [Kifini](../fi/README.md) | [Kifaransa](../fr/README.md) | [Kijerumani](../de/README.md) | [Kigiriki](../el/README.md) | [Kiebrania](../he/README.md) | [Kihindi](../hi/README.md) | [Kihungari](../hu/README.md) | [Kiindonesia](../id/README.md) | [Kiitaliano](../it/README.md) | [Kijapani](../ja/README.md) | [Kikannada](../kn/README.md) | [Kikorea](../ko/README.md) | [Kilituwania](../lt/README.md) | [Kimalay](../ms/README.md) | [Kimalayalamu](../ml/README.md) | [Kimarathi](../mr/README.md) | [Kinepali](../ne/README.md) | [Kipidgin cha Nigeria](../pcm/README.md) | [Kinorwe](../no/README.md) | [Kifarsi (Farsi)](../fa/README.md) | [Kipolishi](../pl/README.md) | [Kireno (Brazil)](../br/README.md) | [Kireno (Portugal)](../pt/README.md) | [Kipunjabi (Gurmukhi)](../pa/README.md) | [Kiromania](../ro/README.md) | [Kirusi](../ru/README.md) | [Kiserbia (Cyrillic)](../sr/README.md) | [Kislovak](../sk/README.md) | [Kislovenia](../sl/README.md) | [Kihispania](../es/README.md) | [Kiswahili](./README.md) | [Kiswidi](../sv/README.md) | [Kitagalog (Kifilipino)](../tl/README.md) | [Kitamil](../ta/README.md) | [Kitelugu](../te/README.md) | [Kitailandi](../th/README.md) | [Kituruki](../tr/README.md) | [Kiukraine](../uk/README.md) | [Kiurdu](../ur/README.md) | [Kivietinamu](../vi/README.md) + +> **Ungependa Kukopi Kwenye Kompyuta Yako?** + +> Repositori hii ina tafsiri zaidi ya 50 za lugha ambazo huongeza ukubwa wa faili kupakuliwa. Ili kukopi bila tafsiri, tumia sparse checkout: +> ```bash +> git clone --filter=blob:none --sparse https://github.com/microsoft/Web-Dev-For-Beginners.git +> cd Web-Dev-For-Beginners +> git sparse-checkout set --no-cone '/*' '!translations' '!translated_images' +> ``` +> Hii inakupa kila kitu unachohitaji kukamilisha kozi kwa upakuaji wa haraka zaidi. -**Ikiwa ungependa kuwa na msaada wa lugha za ziada, orodha ya lugha zinazosaidiwa inapatikana [hapa](https://github.com/Azure/co-op-translator/blob/main/getting_started/supported-languages.md)** +**Ikiwa unataka lugha za tafsiri zaidi zinazoungwa mkono ziko [hapa](https://github.com/Azure/co-op-translator/blob/main/getting_started/supported-languages.md)** [![Fungua katika Visual Studio Code](https://img.shields.io/static/v1?logo=visualstudiocode&label=&message=Open%20in%20Visual%20Studio%20Code&labelColor=2c2c32&color=007acc&logoColor=007acc)](https://open.vscode.dev/microsoft/Web-Dev-For-Beginners) #### 🧑‍🎓 _Je, wewe ni mwanafunzi?_ -Tembelea [**Ukurasa wa Kituo cha Wanafunzi**](https://docs.microsoft.com/learn/student-hub/?WT.mc_id=academic-77807-sagibbon) ambapo utapata rasilimali za wanaoanza, vifurushi vya wanafunzi na hata njia za kupata vocha ya cheti cha bure. Huu ni ukurasa unaopaswa kuhifadhi na kuangalia mara kwa mara kwani tunabadilisha maudhui kila mwezi. +Tembelea [**ukurasa wa Student Hub**](https://docs.microsoft.com/learn/student-hub/?WT.mc_id=academic-77807-sagibbon) ambapo utapata rasilimali za waanzilishi, vifurushi vya wanafunzi na hata njia za kupata vocha ya cheti bila malipo. Huu ni ukurasa unayotakiwa kuweka alama na kuangalia mara kwa mara wakati tunapobadilisha maudhui kila mwezi. -### 📣 Tangazo - Changamoto Mpya za hali ya wakala wa GitHub Copilot za kukamilisha! +### 📣 Tangazo - Changamoto mpya za GitHub Copilot Agent mode za kukamilisha! -Changamoto mpya imeongezwa, tafuta "Changamoto ya Wakala wa GitHub Copilot 🚀" katika sura nyingi. Hii ni changamoto mpya kwako kukamilisha kwa kutumia GitHub Copilot na hali ya Wakala. Ikiwa hujawahi kutumia hali ya Wakala hapo awali, ina uwezo wa si tu kuunda maandishi bali pia kuunda na kuhariri faili, kuendesha amri na zaidi. +Changamoto Mpya imeongezwa, tazama "GitHub Copilot Agent Challenge 🚀" katika sura nyingi. Hiyo ni changamoto mpya ya kukamilisha ukitumia GitHub Copilot na Agent mode. Ikiwa hujawahi kutumia Agent mode hapo awali, ina uwezo wa si tu kuunda maandishi bali pia kuunda na kuhariri faili, kuendesha amri na zaidi. -### 📣 Tangazo - _Mradi Mpya wa kujenga kwa kutumia AI ya Kizazi_ +### 📣 Tangazo - _Mradi Mpya wa kujenga ukitumia AI Inayozalisha_ -Mradi mpya wa Msaidizi wa AI umeongezwa tu, angalia [mradi](./09-chat-project/README.md) +Mradi mpya wa Msaidizi wa AI umeongezwa tu, angalia [mradi](./9-chat-project/README.md) -### 📣 Tangazo - _Mtaala Mpya_ wa AI ya Kizazi kwa JavaScript umetolewa tu +### 📣 Tangazo - _Mtaala Mpya_ juu ya AI Inayozalisha kwa JavaScript umeachiliwa hivi karibuni -Usikose mtaala wetu mpya wa AI ya Kizazi! +Usikose mtaala wetu mpya wa AI Inayozalisha! Tembelea [https://aka.ms/genai-js-course](https://aka.ms/genai-js-course) kuanza! -![Mandhari](../../translated_images/background.148a8d43afde57303419a663f50daf586681bc2fabf833f66ef6954073983c66.sw.png) +![Background](../../translated_images/background.148a8d43afde5730.sw.png) -- Masomo yanayofunika kila kitu kutoka kwa misingi hadi RAG. -- Shirikiana na wahusika wa kihistoria kwa kutumia GenAI na programu yetu ya msaidizi. -- Hadithi ya kufurahisha na ya kuvutia, utasafiri kwa wakati! +- Masomo yanayofunika kila kitu kutoka misingi hadi RAG. +- Shirikiana na wahusika wa kihistoria ukitumia GenAI na programu yetu ya msaidizi. +- Hadithi za kufurahisha na kuvutia, utasafiri kwa wakati! -![mhusika](../../translated_images/character.5c0dd8e067ffd693c16e2c5b7412ab075a2215ce31f998305639fa3a05e14fbe.sw.png) +![character](../../translated_images/character.5c0dd8e067ffd693.sw.png) -Kila somo linajumuisha kazi ya kukamilisha, ukaguzi wa maarifa na changamoto ya kukuongoza kujifunza mada kama: -- Kuunda maelezo na uhandisi wa maelezo + +Kila somo lina kazi ya kukamilisha, ukaguzi wa maarifa na changamoto ya kukuongoza kujifunza mada kama: +- Kuanzisha na uhandisi wa kuanzisha - Uundaji wa programu za maandishi na picha - Programu za utafutaji Tembelea [https://aka.ms/genai-js-course](../../[https:/aka.ms/genai-js-course) kuanza! -## 🌱 Kuanzisha -> **Walimu**, tumetoa [mapendekezo kadhaa](for-teachers.md) ya jinsi ya kutumia mtaala huu. Tunapenda maoni yako [kwenye jukwaa letu la majadiliano](https://github.com/microsoft/Web-Dev-For-Beginners/discussions/categories/teacher-corner)! -**[Wanafunzi](https://aka.ms/student-page/?WT.mc_id=academic-77807-sagibbon)**, kwa kila somo, anza na jaribio la awali la mihadhara na uendelee kwa kusoma nyenzo za mihadhara, ukamilishe shughuli mbalimbali na uhakiki uelewa wako kwa jaribio la baada ya mihadhara. +## 🌱 Kuanzishwa + +> **Walimu**, tumetoa [mapendekezo kadhaa](for-teachers.md) juu ya jinsi ya kutumia mtaala huu. Tunapenda maoni yako [katika jukwaa letu la majadiliano](https://github.com/microsoft/Web-Dev-For-Beginners/discussions/categories/teacher-corner)! -Ili kuboresha uzoefu wako wa kujifunza, ungana na wenzako kufanya kazi kwenye miradi pamoja! Mijadala inahimizwa katika [jukwaa letu la majadiliano](https://github.com/microsoft/Web-Dev-For-Beginners/discussions) ambapo timu yetu ya wasimamizi itapatikana kujibu maswali yako. +**[Wanafunzi](https://aka.ms/student-page/?WT.mc_id=academic-77807-sagibbon)**, kwa kila somo, anza na mtihani wa kabla ya somo na fuata kwa kusoma nyenzo ya somo, kukamilisha shughuli mbalimbali na angalia uelewa wako kwa mtihani wa baada ya somo. -Ili kuendeleza elimu yako, tunapendekeza sana kuchunguza [Microsoft Learn](https://learn.microsoft.com/users/wirelesslife/collections/p1ddcy5jwy0jkm?WT.mc_id=academic-77807-sagibbon) kwa nyenzo za ziada za masomo. +Ili kuboresha uzoefu wako wa kujifunza, ungana na wenzao kufanya kazi kwa pamoja miradi! Majadiliano yanahimizwa katika [jukwaa letu la majadiliano](https://github.com/microsoft/Web-Dev-For-Beginners/discussions) ambapo timu yetu ya wasimamizi itakuwa tayari kujibu maswali yako. -### 📋 Kuandaa mazingira yako +Ili kuendeleza elimu yako, tunapendekeza sana kuchunguza [Microsoft Learn](https://learn.microsoft.com/users/wirelesslife/collections/p1ddcy5jwy0jkm?WT.mc_id=academic-77807-sagibbon) kwa nyenzo za ziada za kusoma. -Mtaala huu una mazingira ya maendeleo tayari! Unapoanza unaweza kuchagua kuendesha mtaala katika [Codespace](https://github.com/features/codespaces/) (_mazingira yanayotumia kivinjari, hakuna haja ya kusakinisha_), au kwa ndani kwenye kompyuta yako kwa kutumia mhariri wa maandishi kama [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon). +### 📋 Kuweka mazingira yako -#### Unda hifadhi yako -Ili kuokoa kazi yako kwa urahisi, inashauriwa kwamba uunde nakala yako mwenyewe ya hifadhi hii. Unaweza kufanya hivyo kwa kubonyeza kitufe cha **Tumia kiolezo hiki** juu ya ukurasa. Hii itaunda hifadhi mpya katika akaunti yako ya GitHub yenye nakala ya mtaala. +Mtaala huu una mazingira ya maendeleo tayari! Unapoanza unaweza kuchagua kuendesha mtaala katika [Codespace](https://github.com/features/codespaces/) (_mazingira ya kivinjari, hakuna usakinishaji unaohitajika_), au kwa ndani kwenye kompyuta yako ukitumia mhariri wa maandishi kama [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon). + +#### Unda repositori yako +Ili iwe rahisi kuhifadhi kazi yako, inashauriwa kuunda nakala yako mwenyewe ya repositori hii. Unaweza kufanya hivyo kwa kubonyeza kitufe cha **Tumia templeti hii** kilele cha ukurasa. Hii itaunda repositori mpya katika akaunti yako ya GitHub ikiwa na nakala ya mtaala. Fuata hatua hizi: -1. **Fork Hifadhi**: Bonyeza kitufe cha "Fork" kwenye kona ya juu-kulia ya ukurasa huu. -2. **Clone Hifadhi**: `git clone https://github.com/microsoft/Web-Dev-For-Beginners.git` +1. **Fanya Nakala ya Repositori**: Bonyeza kitufe cha "Fork" kona ya juu ya kulia ya ukurasa huu. +2. **Nakili Repositori**: `git clone https://github.com/microsoft/Web-Dev-For-Beginners.git` #### Kuendesha mtaala katika Codespace -Katika nakala yako ya hifadhi hii uliyoijenga, bonyeza kitufe cha **Code** na uchague **Fungua na Codespaces**. Hii itaunda Codespace mpya kwako kufanya kazi ndani yake. +Katika nakala yako ya repositori uliyounda, bonyeza kitufe cha **Code** na chagua **Fungua na Codespaces**. Hii itaunda Codespace mpya ya kufanya kazi ndani yake. -![Codespace](../../translated_images/createcodespace.0238bbf4d7a8d955fa8fa7f7b6602a3cb6499a24708fbee589f83211c5a613b7.sw.png) +![Codespace](../../translated_images/createcodespace.0238bbf4d7a8d955.sw.png) -#### Kuendesha mtaala kwa ndani kwenye kompyuta yako +#### Kuendesha mtaala ndani ya kompyuta yako -Ili kuendesha mtaala huu kwa ndani kwenye kompyuta yako, utahitaji mhariri wa maandishi, kivinjari na zana ya mstari wa amri. Somo letu la kwanza, [Utangulizi wa Lugha za Programu na Zana za Kazi](../../1-getting-started-lessons/1-intro-to-programming-languages), litakutembeza kupitia chaguo mbalimbali za kila moja ya zana hizi ili uchague kinachokufaa zaidi. +Ili kuendesha mtaala huu ndani ya kompyuta yako, utahitaji mhariri wa maandishi, kivinjari na chombo cha mstari wa amri. Somo letu la kwanza, [Utangulizi wa Lugha za Kuprogramu na Vifaa vya Biashara](../../1-getting-started-lessons/1-intro-to-programming-languages), litakuongoza kupitia chaguzi mbalimbali za zana hizi ili uchague inayofaa zaidi kwako. -Pendekezo letu ni kutumia [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon) kama mhariri wako, ambao pia una [Terminal](https://code.visualstudio.com/docs/terminal/basics/?WT.mc_id=academic-77807-sagibbon) iliyojengwa ndani. Unaweza kupakua Visual Studio Code [hapa](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon). +Tunapendekeza kutumia [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon) kama mhariri wako, ambao pia una [Terminal](https://code.visualstudio.com/docs/terminal/basics/?WT.mc_id=academic-77807-sagibbon) builtin. Unaweza kupakua Visual Studio Code [hapa](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon). -1. Clone hifadhi yako kwenye kompyuta yako. Unaweza kufanya hivyo kwa kubonyeza kitufe cha **Code** na kunakili URL: - [CodeSpace](./images/createcodespace.png) +1. Nakili repositori yako kwenye kompyuta yako. Unaweza kufanya hivyo kwa kubonyeza kitufe cha **Code** na kunakili URL: - Kisha, fungua [Terminal](https://code.visualstudio.com/docs/terminal/basics/?WT.mc_id=academic-77807-sagibbon) ndani ya [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon) na endesha amri ifuatayo, ukibadilisha `` na URL uliyonakili: + [CodeSpace](./images/createcodespace.png) +Kisha, fungua [Terminal](https://code.visualstudio.com/docs/terminal/basics/?WT.mc_id=academic-77807-sagibbon) ndani ya [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon) na endesha amri ifuatayo, ukibadilisha `` na URL uliyokuwa umetumia: ```bash git clone ``` -2. Fungua folda katika Visual Studio Code. Unaweza kufanya hivyo kwa kubonyeza **Faili** > **Fungua Folda** na kuchagua folda uliyoklon. +2. Fungua folda ndani ya Visual Studio Code. Unaweza kufanya hivi kwa kubofya **File** > **Open Folder** na kuchagua folda uliyokuwa umetengeneza nakala yake. -> Viendelezi vya Visual Studio Code vinavyopendekezwa: + +> Upanuzi uliopendekezwa wa Visual Studio Code: > -> * [Live Server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer&WT.mc_id=academic-77807-sagibbon) - kuonyesha kurasa za HTML ndani ya Visual Studio Code -> * [Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot&WT.mc_id=academic-77807-sagibbon) - kusaidia kuandika msimbo haraka +> * [Live Server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer&WT.mc_id=academic-77807-sagibbon) - kuangalia mapema kurasa za HTML ndani ya Visual Studio Code +> * [Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot&WT.mc_id=academic-77807-sagibbon) - kusaidia kuandika msimbo kwa haraka zaidi ## 📂 Kila somo linajumuisha: -- sketchnote ya hiari -- video ya ziada ya hiari -- jaribio la kujiandaa kabla ya somo +- sketchnote hiari +- video ya ziada hiari +- mtihani wa kuamka kabla ya somo - somo lililoandikwa -- kwa masomo yanayozingatia miradi, mwongozo wa hatua kwa hatua wa jinsi ya kujenga mradi -- ukaguzi wa maarifa +- kwa masomo yanayotegemea miradi, mwongozo wa hatua kwa hatua wa jinsi ya kujenga mradi +- vipimo vya maarifa - changamoto - usomaji wa ziada - kazi ya nyumbani -- [jaribio baada ya somo](https://ff-quizzes.netlify.app/web/) +- [mtihani wa baada ya somo](https://ff-quizzes.netlify.app/web/) -> **Maelezo kuhusu majaribio**: Majaribio yote yamejumuishwa kwenye folda ya Quiz-app, jumla ya majaribio 48 yenye maswali matatu kila moja. Yanapatikana [hapa](https://ff-quizzes.netlify.app/web/) programu ya jaribio inaweza kuendeshwa kwa ndani au kupelekwa kwenye Azure; fuata maelekezo kwenye folda ya `quiz-app`. +> **Kidokezo kuhusu mitihani**: Mitihani yote iko ndani ya folda ya Quiz-app, jumla ya mitihani 48 yenye maswali matatu kila mmoja. Inapatikana [hapa](https://ff-quizzes.netlify.app/web/) app ya mtihani inaweza kuendeshwa mahali hapa au kuiweka kwenye Azure; fuata maelekezo katika folda ya `quiz-app`. ## 🗃️ Masomo -| | Jina la Mradi | Dhana Zinazofundishwa | Malengo ya Kujifunza | Somo Lililounganishwa | Mwandishi | -| :-: | :------------------------------------------------------: | :--------------------------------------------------------------------: | ----------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------: | :---------------------: | -| 01 | Kuanza | Utangulizi wa Uprogramu na Zana za Kazi | Jifunze misingi ya lugha nyingi za programu na kuhusu programu zinazosaidia watengenezaji wa programu kufanya kazi zao | [Utangulizi wa Lugha za Uprogramu na Zana za Kazi](./1-getting-started-lessons/1-intro-to-programming-languages/README.md) | Jasmine | -| 02 | Kuanza | Misingi ya GitHub, ikijumuisha kufanya kazi na timu | Jinsi ya kutumia GitHub katika mradi wako, jinsi ya kushirikiana na wengine kwenye msimbo wa programu | [Utangulizi wa GitHub](./1-getting-started-lessons/2-github-basics/README.md) | Floor | -| 03 | Kuanza | Ufikiaji | Jifunze misingi ya ufikiaji wa wavuti | [Misingi ya Ufikiaji](./1-getting-started-lessons/3-accessibility/README.md) | Christopher | -| 04 | Misingi ya JS | Aina za Data za JavaScript | Misingi ya aina za data za JavaScript | [Aina za Data](./2-js-basics/1-data-types/README.md) | Jasmine | -| 05 | Misingi ya JS | Kazi na Mbinu | Jifunze kuhusu kazi na mbinu za kudhibiti mtiririko wa mantiki wa programu | [Kazi na Mbinu](./2-js-basics/2-functions-methods/README.md) | Jasmine na Christopher | -| 06 | Misingi ya JS | Kufanya Maamuzi na JS | Jifunze jinsi ya kuunda masharti katika msimbo wako kwa kutumia mbinu za kufanya maamuzi | [Kufanya Maamuzi](./2-js-basics/3-making-decisions/README.md) | Jasmine | -| 07 | Misingi ya JS | Arrays na Loops | Fanya kazi na data kwa kutumia arrays na loops katika JavaScript | [Arrays na Loops](./2-js-basics/4-arrays-loops/README.md) | Jasmine | -| 08 | [Terrarium](./3-terrarium/solution/README.md) | HTML kwa Vitendo | Jenga HTML ili kuunda terrarium mtandaoni, ukizingatia kuunda mpangilio | [Utangulizi wa HTML](./3-terrarium/1-intro-to-html/README.md) | Jen | -| 09 | [Terrarium](./3-terrarium/solution/README.md) | CSS kwa Vitendo | Jenga CSS ili kuunda mtindo wa terrarium mtandaoni, ukizingatia misingi ya CSS ikijumuisha kufanya ukurasa uwe msikivu | [Utangulizi wa CSS](./3-terrarium/2-intro-to-css/README.md) | Jen | -| 10 | [Terrarium](./3-terrarium/solution/README.md) | JavaScript Closures, Manipulasi ya DOM | Jenga JavaScript ili kufanya terrarium ifanye kazi kama kiolesura cha drag/drop, ukizingatia closures na manipulasi ya DOM | [JavaScript Closures, Manipulasi ya DOM](./3-terrarium/3-intro-to-DOM-and-closures/README.md) | Jen | -| 11 | [Typing Game](./4-typing-game/solution/README.md) | Jenga Mchezo wa Kuandika | Jifunze jinsi ya kutumia matukio ya kibodi kuendesha mantiki ya programu yako ya JavaScript | [Programu Inayoendeshwa na Matukio](./4-typing-game/typing-game/README.md) | Christopher | -| 12 | [Green Browser Extension](./5-browser-extension/solution/README.md) | Kufanya Kazi na Vivinjari | Jifunze jinsi vivinjari vinavyofanya kazi, historia yao, na jinsi ya kuunda vipengele vya kwanza vya kiendelezi cha kivinjari | [Kuhusu Vivinjari](./5-browser-extension/1-about-browsers/README.md) | Jen | -| 13 | [Green Browser Extension](./5-browser-extension/solution/README.md) | Kujenga fomu, kuita API na kuhifadhi vigezo kwenye hifadhi ya ndani | Jenga vipengele vya JavaScript vya kiendelezi chako cha kivinjari ili kuita API kwa kutumia vigezo vilivyohifadhiwa kwenye hifadhi ya ndani | [APIs, Fomu, na Hifadhi ya Ndani](./5-browser-extension/2-forms-browsers-local-storage/README.md) | Jen | -| 14 | [Green Browser Extension](./5-browser-extension/solution/README.md) | Michakato ya nyuma ya kivinjari, utendaji wa wavuti | Tumia michakato ya nyuma ya kivinjari kudhibiti ikoni ya kiendelezi; jifunze kuhusu utendaji wa wavuti na baadhi ya uboreshaji wa kufanya | [Kazi za Nyuma na Utendaji](./5-browser-extension/3-background-tasks-and-performance/README.md) | Jen | -| 15 | [Space Game](./6-space-game/solution/README.md) | Maendeleo ya Mchezo wa Juu na JavaScript | Jifunze kuhusu Urithi kwa kutumia Darasa na Muundo na muundo wa Pub/Sub, kama maandalizi ya kujenga mchezo | [Utangulizi wa Maendeleo ya Juu ya Mchezo](./6-space-game/1-introduction/README.md) | Chris | -| 16 | [Space Game](./6-space-game/solution/README.md) | Kuchora kwenye canvas | Jifunze kuhusu API ya Canvas, inayotumika kuchora vipengele kwenye skrini | [Kuchora kwenye Canvas](./6-space-game/2-drawing-to-canvas/README.md) | Chris | -| 17 | [Space Game](./6-space-game/solution/README.md) | Kusogeza vipengele kwenye skrini | Gundua jinsi vipengele vinavyoweza kupata mwendo kwa kutumia kuratibu za cartesian na API ya Canvas | [Kusogeza Vipengele](./6-space-game/3-moving-elements-around/README.md) | Chris | -| 18 | [Space Game](./6-space-game/solution/README.md) | Kugundua Migongano | Fanya vipengele vigongane na kuathiriana kwa kutumia kubonyeza vitufe na toa kazi ya kupoza ili kuhakikisha utendaji wa mchezo | [Kugundua Migongano](./6-space-game/4-collision-detection/README.md) | Chris | -| 19 | [Space Game](./6-space-game/solution/README.md) | Kuhesabu Alama | Fanya mahesabu ya hesabu kulingana na hali ya mchezo na utendaji | [Kuhesabu Alama](./6-space-game/5-keeping-score/README.md) | Chris | -| 20 | [Space Game](./6-space-game/solution/README.md) | Kumaliza na kuanzisha tena mchezo | Jifunze kuhusu kumaliza na kuanzisha tena mchezo, ikijumuisha kusafisha mali na kuweka upya thamani za vigezo | [Hali ya Kumaliza](./6-space-game/6-end-condition/README.md) | Chris | -| 21 | [Banking App](./7-bank-project/solution/README.md) | Violezo vya HTML na Njia katika Programu ya Wavuti | Jifunze jinsi ya kuunda muundo wa usanifu wa tovuti yenye kurasa nyingi kwa kutumia njia na violezo vya HTML | [Violezo vya HTML na Njia](./7-bank-project/1-template-route/README.md) | Yohan | -| 22 | [Banking App](./7-bank-project/solution/README.md) | Jenga Fomu ya Kuingia na Usajili | Jifunze kuhusu kujenga fomu na kushughulikia taratibu za uthibitishaji | [Fomu](./7-bank-project/2-forms/README.md) | Yohan | -| 23 | [Banking App](./7-bank-project/solution/README.md) | Njia za Kupata na Kutumia Data | Jinsi data inavyotiririka ndani na nje ya programu yako, jinsi ya kuipata, kuihifadhi, na kuiondoa | [Data](./7-bank-project/3-data/README.md) | Yohan | -| 24 | [Banking App](./7-bank-project/solution/README.md) | Dhana za Usimamizi wa Hali | Jifunze jinsi programu yako inavyohifadhi hali na jinsi ya kuisimamia kwa programu | [Usimamizi wa Hali](./7-bank-project/4-state-management/README.md) | Yohan | -| 25 | [Browser/VScode Code](../../8-code-editor) | Kufanya kazi na VScode | Jifunze jinsi ya kutumia mhariri wa msimbo| [Tumia Mhariri wa Msimbo wa VScode](./8-code-editor/1-using-a-code-editor/README.md) | Chris | +| | Jina la Mradi | Misingi Iliyofundishwa | Malengo ya Kujifunza | Somo Lililohusishwa | Mwandishi | +| :-: | :-------------------------------------------------------: | :-------------------------------------------------------------------------: | ---------------------------------------------------------------------------------------------------------------------------------- | :-----------------------------------------------------------------------------------------------------------------------------: | :------------------------: | +| 01 | Kuanzia | Utangulizi wa Uprogramu na Zana za Biashara | Jifunze misingi ya lugha nyingi za programu na kuhusu programu zinazosaidia watengenezaji wa kitaalamu kufanya kazi zao | [Utangulizi wa Lugha za Kuprogramu na Zana za Biashara](./1-getting-started-lessons/1-intro-to-programming-languages/README.md) | Jasmine | +| 02 | Kuanzia | Misingi ya GitHub, pamoja na kufanya kazi na timu | Jinsi ya kutumia GitHub kwenye mradi wako, jinsi ya kushirikiana na wengine kwenye msingi wa msimbo | [Utangulizi wa GitHub](./1-getting-started-lessons/2-github-basics/README.md) | Floor | +| 03 | Kuanzia | Ufikikaji | Jifunze misingi ya ufikikaji wa wavuti | [Misingi ya Ufikikaji](./1-getting-started-lessons/3-accessibility/README.md) | Christopher | +| 04 | JS Misingi | Aina za Data za JavaScript | Misingi ya aina za data za JavaScript | [Aina za Data](./2-js-basics/1-data-types/README.md) | Jasmine | +| 05 | JS Misingi | Kazi na Mbinu | Jifunze kuhusu kazi na mbinu za kusimamia mtiririko wa mantiki ya programu | [Kazi na Mbinu](./2-js-basics/2-functions-methods/README.md) | Jasmine na Christopher | +| 06 | JS Misingi | Kufanya Maamuzi kwa JS | Jifunze jinsi ya kuunda masharti katika msimbo wako kwa kutumia mbinu za kufanya maamuzi | [Kutegemea Maamuzi](./2-js-basics/3-making-decisions/README.md) | Jasmine | +| 07 | JS Misingi | Arrays na Loops | Fanya kazi na data kwa kutumia arrays na loops ndani ya JavaScript | [Arrays na Loops](./2-js-basics/4-arrays-loops/README.md) | Jasmine | +| 08 | [Terrarium](./3-terrarium/solution/README.md) | HTML Katika Mazoezi | Jenga HTML kuunda terrarium mtandaoni, ukizingatia muundo | [Utangulizi wa HTML](./3-terrarium/1-intro-to-html/README.md) | Jen | +| 09 | [Terrarium](./3-terrarium/solution/README.md) | CSS Katika Mazoezi | Jenga CSS kupendeza terrarium mtandaoni, ukizingatia misingi ya CSS ikijumuisha kufanya kurasa itumike kwenye vifaa tofauti | [Utangulizi wa CSS](./3-terrarium/2-intro-to-css/README.md) | Jen | +| 10 | [Terrarium](./3-terrarium/solution/README.md) | Mifungo ya JavaScript, uendeshaji wa DOM | Jenga JavaScript ili kufanya terrarium ifanye kazi kama kiolesura cha buruta/acha, ukizingatia mifungo na uendeshaji wa DOM | [Mifungo ya JavaScript, uendeshaji wa DOM](./3-terrarium/3-intro-to-DOM-and-closures/README.md) | Jen | +| 11 | [Typing Game](./4-typing-game/solution/README.md) | Jenga Mchezo wa Kuandikia | Jifunze jinsi ya kutumia matukio ya kibodi kuendesha mantiki ya programu yako ya JavaScript | [Uprogramu Inayotegemea Matukio](./4-typing-game/typing-game/README.md) | Christopher | +| 12 | [Green Browser Extension](./5-browser-extension/solution/README.md) | Kufanya kazi na Vivinjari | Jifunze jinsi vivinjari vinavyofanya kazi, historia yao, na jinsi ya kuanzisha vipengele vya mwanzo vya kiendelezi cha kivinjari | [Kuhusu Vivinjari](./5-browser-extension/1-about-browsers/README.md) | Jen | +| 13 | [Green Browser Extension](./5-browser-extension/solution/README.md) | J constructing form, calling an API and storing variables in local storage | Jenga vipengele vya JavaScript vya kiendelezi chako cha kivinjari ili kuitumia API kwa kutumia variable zilizohifadhiwa ndani | [APIs, Fomu, na Hifadhi ya Ndani](./5-browser-extension/2-forms-browsers-local-storage/README.md) | Jen | +| 14 | [Green Browser Extension](./5-browser-extension/solution/README.md) | Mchakato wa nyuma katika kivinjari, utendaji wavuti | Tumia michakato ya nyuma ya kivinjari kusimamia ikoni ya kiendelezi; jifunze kuhusu utendaji wavuti na marekebisho kadhaa | [Kazi za Nyuma na Utendaji](./5-browser-extension/3-background-tasks-and-performance/README.md) | Jen | +| 15 | [Space Game](./6-space-game/solution/README.md) | Maendeleo ya Juu Zaidi ya Mchezo kwa JavaScript | Jifunze kuhusu Urithi kwa kutumia Darasa na Muundo pamoja na muundo wa Pub/Sub, kwa ajili ya kujenga mchezo | [Utangulizi wa Maendeleo ya Mchezo Juu Zaidi](./6-space-game/1-introduction/README.md) | Chris | +| 16 | [Space Game](./6-space-game/solution/README.md) | Kuchora kwenye kanausi | Jifunze kuhusu Canvas API, inayotumika kuchora vipengele kwenye skrini | [Kuchora kwenye Kanausi](./6-space-game/2-drawing-to-canvas/README.md) | Chris | +| 17 | [Space Game](./6-space-game/solution/README.md) | Kusogeza vipengele kuzunguka skrini | Gundua jinsi vipengele vinaweza kupata mwendo kwa kutumia kuratibu za karthesiani na Canvas API | [Kusogeza Vipengele](./6-space-game/3-moving-elements-around/README.md) | Chris | +| 18 | [Space Game](./6-space-game/solution/README.md) | Kugundua migongano | Fanya vipengele vigongane na kuathiriana kwa kutumia vibonye vya kibodi na toa kipengele cha kupumzika ili kuhakikisha utendaji | [Kugundua Migongano](./6-space-game/4-collision-detection/README.md) | Chris | +| 19 | [Space Game](./6-space-game/solution/README.md) | Kuhifadhi alama | Fanya mahesabu ya hisabati kulingana na hali na utendaji wa mchezo | [Kuhifadhi Alama](./6-space-game/5-keeping-score/README.md) | Chris | +| 20 | [Space Game](./6-space-game/solution/README.md) | Kumaliza na kuanzisha upya mchezo | Jifunze kuhusu kumaliza na kuanzisha upya mchezo, ikijumuisha kusafisha mali na kuweka upya thamani za variable | [Hali ya Kumaliza](./6-space-game/6-end-condition/README.md) | Chris | +| 21 | [Banking App](./7-bank-project/solution/README.md) | Violezo vya HTML na Njia kwenye Programu ya Wavuti | Jifunze jinsi ya kuunda msingi wa muundo wa tovuti yenye kurasa nyingi kwa kutumia njia na violezo vya HTML | [Violezo vya HTML na Njia](./7-bank-project/1-template-route/README.md) | Yohan | +| 22 | [Banking App](./7-bank-project/solution/README.md) | Jenga Fomu ya Kuingia na Usajili | Jifunze kuhusu kujenga fomu na kushughulikia taratibu za uthibitishaji | [Fomu](./7-bank-project/2-forms/README.md) | Yohan | +| 23 | [Banking App](./7-bank-project/solution/README.md) | Mbinu za Kupata na Kutumia Data | Jinsi data inavyosogea ndani na nje ya programu yako, jinsi ya kuipata, kuhifadhi na kuiondoa | [Data](./7-bank-project/3-data/README.md) | Yohan | +| 24 | [Banking App](./7-bank-project/solution/README.md) | Misingi ya Usimamizi wa Hali | Jifunze jinsi programu yako inavyohifadhi hali na jinsi ya kuisimamia kwa mpangilio wa programu | [Usimamizi wa Hali](./7-bank-project/4-state-management/README.md) | Yohan | +| 25 | [Browser/VScode Code](../../8-code-editor) | Kufanya kazi na VScode | Jifunze jinsi ya kutumia mhariri wa msimbo| [Tumia Mhariri wa VScode](./8-code-editor/1-using-a-code-editor/README.md) | Chris | | 26 | [AI Assistants](./9-chat-project/README.md) | Kufanya kazi na AI | Jifunze jinsi ya kujenga msaidizi wako wa AI | [Mradi wa Msaidizi wa AI](./9-chat-project/README.md) | Chris | -## 🏫 Pedagogia +## 🏫 Mbinu za Kufundishia + +Mtaala wetu umeundwa kwa misingi miwili muhimu ya kifikra: +* kujifunza kwa misingi ya miradi +* mitihani ya mara kwa mara -Mtaala wetu umeundwa kwa kuzingatia kanuni mbili kuu za pedagogia: -* kujifunza kwa msingi wa miradi -* majaribio ya mara kwa mara +Mpango wa masomo hufundisha misingi ya JavaScript, HTML, na CSS, pamoja na zana na mbinu mpya zinazotumika na watengenezaji wa wavuti wa leo. Wanafunzi watakuwa na fursa ya kupata uzoefu wa vitendo kwa kujenga mchezo wa kuandika, terrarium ya mtandaoni, kiendelezi cha kivinjari rafiki kwa mazingira, mchezo wa aina ya uvamizi wa anga, na programu ya benki kwa biashara. Mwisho wa mfululizo, wanafunzi watakuwa na uelewa thabiti wa maendeleo ya wavuti. -Programu inafundisha misingi ya JavaScript, HTML, na CSS, pamoja na zana na mbinu za kisasa zinazotumiwa na watengenezaji wa wavuti wa leo. Wanafunzi watapata fursa ya kupata uzoefu wa vitendo kwa kujenga mchezo wa kuandika, terrarium ya mtandaoni, kiendelezi cha kivinjari kinachojali mazingira, mchezo wa mtindo wa space-invader, na programu ya benki kwa biashara. Mwisho wa mfululizo, wanafunzi watakuwa wamepata uelewa mzuri wa maendeleo ya wavuti. +> 🎓 Unaweza kuchukua masomo ya kwanza machache ya mtaala huu kama [Njia ya Kujifunza](https://docs.microsoft.com/learn/paths/web-development-101/?WT.mc_id=academic-77807-sagibbon) kwenye Microsoft Learn! -> 🎓 Unaweza kuchukua masomo machache ya kwanza katika mtaala huu kama [Njia ya Kujifunza](https://docs.microsoft.com/learn/paths/web-development-101/?WT.mc_id=academic-77807-sagibbon) kwenye Microsoft Learn! +Kwa kuhakikisha maudhui yanalingana na miradi, mchakato unakuwa wa kuvutia zaidi kwa wanafunzi na uhifadhi wa dhana utaongezeka. Pia tuliandika masomo kadhaa ya kuanzisha kuhusu misingi ya JavaScript ili kuanzisha dhana, sambamba na video kutoka kwa mkusanyiko wa video wa "[Mfululizo wa Waanzilishi kwa: JavaScript](https://channel9.msdn.com/Series/Beginners-Series-to-JavaScript/?WT.mc_id=academic-77807-sagibbon)", baadhi ya waandishi wake walisaidia kuandaa mtaala huu. -Kwa kuhakikisha kuwa maudhui yanalingana na miradi, mchakato unakuwa wa kuvutia zaidi kwa wanafunzi na uhifadhi wa dhana utaongezeka. Pia tuliandika masomo kadhaa ya kuanzia katika misingi ya JavaScript ili kuanzisha dhana, pamoja na video kutoka kwa "[Mfululizo wa Wanaoanza: JavaScript](https://channel9.msdn.com/Series/Beginners-Series-to-JavaScript/?WT.mc_id=academic-77807-sagibbon)" mkusanyiko wa mafunzo ya video, baadhi ya waandishi wake walichangia mtaala huu. +Vilevile, mtihani wa kiwango kidogo kabla ya darasa huweka nia ya mwanafunzi kuelekea kujifunza mada, wakati mtihani wa pili baada ya darasa huhakikisha uhifadhi zaidi. Mtaala huu umeundwa kuwa na unyumbufu na kufurahisha na unaweza kuchukuliwa kwa jumla au sehemu. Miradi huanza ndogo na kuwa ngumu zaidi mwishoni mwa mzunguko wa wiki 12. -Zaidi ya hayo, jaribio lenye hatari ndogo kabla ya darasa linaweka nia ya mwanafunzi kuelekea kujifunza mada, wakati jaribio la pili baada ya darasa linahakikisha uhifadhi zaidi. Mtaala huu uliundwa kuwa rahisi na wa kufurahisha na unaweza kuchukuliwa kwa ukamilifu au kwa sehemu. Miradi huanza ndogo na kuwa ngumu zaidi mwishoni mwa mzunguko wa wiki 12. +Ingawa tumeweka mkazo wa kuepuka kuanzisha mifumo ya JavaScript ili kuzingatia ujuzi wa msingi unaohitajika kama mtengenezaji wa wavuti kabla ya kutumia mfumo, hatua nzuri inayofuata kutimiza mtaala huu ni kujifunza kuhusu Node.js kupitia mkusanyiko mwingine wa video: "[Mfululizo wa Waanzilishi kwa: Node.js](https://channel9.msdn.com/Series/Beginners-Series-to-Nodejs/?WT.mc_id=academic-77807-sagibbon)". -Wakati tumekusudia kuepuka kuanzisha mifumo ya JavaScript ili kuzingatia ujuzi wa msingi unaohitajika kama mtengenezaji wa wavuti kabla ya kupitisha mfumo, hatua nzuri inayofuata baada ya kukamilisha mtaala huu itakuwa kujifunza kuhusu Node.js kupitia mkusanyiko mwingine wa video: "[Mfululizo wa Wanaoanza: Node.js](https://channel9.msdn.com/Series/Beginners-Series-to-Nodejs/?WT.mc_id=academic-77807-sagibbon)". +> Tembelea [Kanuni zetu za Maadili](CODE_OF_CONDUCT.md) na miongozo ya [Kushiriki](CONTRIBUTING.md). Tunakukaribisha maoni yako ya kujenga! -> Tembelea [Kanuni za Maadili](CODE_OF_CONDUCT.md) na miongozo ya [Kuchangia](CONTRIBUTING.md). Tunakaribisha maoni yako ya kujenga! -## 🧭 Ufikiaji wa Nje ya Mtandao +## 🧭 Upatikanaji wa nje ya mtandao -Unaweza kuendesha nyaraka hizi nje ya mtandao kwa kutumia [Docsify](https://docsify.js.org/#/). Fork repo hii, [sakinisha Docsify](https://docsify.js.org/#/quickstart) kwenye mashine yako ya ndani, kisha kwenye folda ya mizizi ya repo hii, andika `docsify serve`. Tovuti itahudumiwa kwenye bandari 3000 kwenye localhost yako: `localhost:3000`. +Unaweza kuendesha nyaraka hizi nje ya mtandao kwa kutumia [Docsify](https://docsify.js.org/#/). Fikiria hii repo, [weka Docsify](https://docsify.js.org/#/quickstart) kwenye mashine yako ya karibu, kisha katika folda kuu ya repo hii, andika `docsify serve`. Tovuti itatumiwa kwenye bandari 3000 kwenye localhost yako: `localhost:3000`. ## 📘 PDF PDF ya masomo yote inaweza kupatikana [hapa](https://microsoft.github.io/Web-Dev-For-Beginners/pdf/readme.pdf). -## 🎒 Kozi Nyingine -Timu yetu inazalisha kozi nyingine! Angalia: +## 🎒 Kozi Nyingine +Timu yetu hutengeneza kozi nyingine! Angalia: -### Azure / Edge / MCP / Agents -[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI kwa Kompyuta](https://img.shields.io/badge/Edge%20AI%20kwa%20Kompyuta-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP kwa Kompyuta](https://img.shields.io/badge/MCP%20kwa%20Kompyuta-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Wakala wa AI kwa Kompyuta](https://img.shields.io/badge/Wakala%20wa%20AI%20kwa%20Kompyuta-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +### LangChain +[![LangChain4j kwa Waanzilishi](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js kwa Waanzilishi](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) --- -### Mfululizo wa AI ya Kizazi -[![AI ya Kizazi kwa Kompyuta](https://img.shields.io/badge/AI%20ya%20Kizazi%20kwa%20Kompyuta-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI ya Kizazi (.NET)](https://img.shields.io/badge/AI%20ya%20Kizazi%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![AI ya Kizazi (Java)](https://img.shields.io/badge/AI%20ya%20Kizazi%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![AI ya Kizazi (JavaScript)](https://img.shields.io/badge/AI%20ya%20Kizazi%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +### Azure / Edge / MCP / Wakala +[![AZD kwa Waanzilishi](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI kwa Waanzilishi](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP kwa Waanzilishi](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Makala wa AI kwa Waanzilishi](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### Mafunzo ya Msingi -[![ML kwa Kompyuta](https://img.shields.io/badge/ML%20kwa%20Kompyuta-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Sayansi ya Takwimu kwa Kompyuta](https://img.shields.io/badge/Sayansi%20ya%20Takwimu%20kwa%20Kompyuta-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI kwa Kompyuta](https://img.shields.io/badge/AI%20kwa%20Kompyuta-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Usalama wa Mtandao kwa Kompyuta](https://img.shields.io/badge/Usalama%20wa%20Mtandao%20kwa%20Kompyuta-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Maendeleo ya Wavuti kwa Kompyuta](https://img.shields.io/badge/Maendeleo%20ya%20Wavuti%20kwa%20Kompyuta-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT kwa Kompyuta](https://img.shields.io/badge/IoT%20kwa%20Kompyuta-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![Maendeleo ya XR kwa Kompyuta](https://img.shields.io/badge/Maendeleo%20ya%20XR%20kwa%20Kompyuta-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) + +### Mfululizo wa AI Inayounda +[![AI Inayounda kwa Waanzilishi](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Inayounda (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![AI Inayounda (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![AI Inayounda (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- + +### Kujifunza Msingi +[![ML kwa Waanzilishi](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Sayansi ya Takwimu kwa Waanzilishi](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI kwa Waanzilishi](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Usalama wa Mtandao kwa Waanzilishi](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Uendelezaji wa Wavuti kwa Waanzilishi](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT kwa Waanzilishi](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![Maendeleo ya XR kwa Waanzilishi](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) -### Mfululizo wa Copilot -[![Copilot kwa Uandishi wa Programu ya Pamoja ya AI](https://img.shields.io/badge/Copilot%20kwa%20Uandishi%20wa%20Programu%20ya%20Pamoja%20ya%20AI-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot kwa C#/.NET](https://img.shields.io/badge/Copilot%20kwa%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Safari ya Copilot](https://img.shields.io/badge/Safari%20ya%20Copilot-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) +--- + +### Mfululizo wa Copilot +[![Copilot kwa Programu za Pamoja za AI](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot kwa C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) -## Kupata Msaada +## Kupata Msaada -Ikiwa unakwama au una maswali kuhusu kujenga programu za AI, jiunge: +Kama unagongwa au una maswali yoyote kuhusu ujenzi wa programu za AI. Jiunge na wajasiriamali wenzako na waendelezaji wenye uzoefu katika mijadala kuhusu MCP. Ni jamii yenye msaada ambapo maswali yanakaribishwa na maarifa yanashirikiwa kwa uhuru. -[![Azure AI Foundry Discord](https://img.shields.io/badge/Discord-Jamii_ya_Discord_ya_Azure_AI_Foundry-blue?style=for-the-badge&logo=discord&color=5865f2&logoColor=fff)](https://aka.ms/foundry/discord) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Ikiwa una maoni kuhusu bidhaa au makosa wakati wa kujenga tembelea: +Kama una maoni au makosa wakati wa kujenga tembelea: -[![Azure AI Foundry Developer Forum](https://img.shields.io/badge/GitHub-Jukwaa_la_Watengenezaji_wa_Azure_AI_Foundry-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) -## Leseni +## Leseni -Hifadhi hii imesajiliwa chini ya leseni ya MIT. Tazama faili ya [LICENSE](../../LICENSE) kwa maelezo zaidi. +Hifadhidata hii imepewa leseni chini ya leseni ya MIT. Angalia faili la [LICENSE](../../LICENSE) kwa maelezo zaidi. --- -**Kanusho**: -Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kwa usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii. \ No newline at end of file + +**FAQADHALI**: +Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuwa sahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokamilika. Hati asili katika lugha yake ya asili inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu kutoka kwa mtu inashauriwa. Hatubebei dhamana kwa maelewano mabaya au tafsiri potofu zinazotokana na matumizi ya tafsiri hii. + \ No newline at end of file diff --git a/translations/sw/for-teachers.md b/translations/sw/for-teachers.md index 14b11611e..c3c323bb6 100644 --- a/translations/sw/for-teachers.md +++ b/translations/sw/for-teachers.md @@ -42,10 +42,10 @@ Mtaala huu unajumuisha pakiti zinazoweza kuingizwa kwa kazi za kawaida za LMS. - Moodle Cloud ina msaada mdogo wa Common Cartridge. Pendekeza faili ya Moodle hapo juu, ambayo pia inaweza kupakiwa kwenye Canvas. - Baada ya kuingiza, hakiki moduli, tarehe za mwisho, na mipangilio ya majaribio ili kuendana na ratiba ya muhula wako. -![Moodle](../../translated_images/moodle.94eb93d714a50cb2c97435b408017dee224348b61bc86203ffd43a4f4e57b95f.sw.png) +![Moodle](../../translated_images/moodle.94eb93d714a50cb2.sw.png) > Mtaala katika darasa la Moodle -![Canvas](../../translated_images/canvas.fbd605ff8e5b8aff567d398528ce113db304446b90b9cad55c654de3fdfcda34.sw.png) +![Canvas](../../translated_images/canvas.fbd605ff8e5b8aff.sw.png) > Mtaala katika Canvas ### Kutumia hifadhi moja kwa moja (bila Classroom) diff --git a/translations/tl/1-getting-started-lessons/1-intro-to-programming-languages/README.md b/translations/tl/1-getting-started-lessons/1-intro-to-programming-languages/README.md index 397a0bea6..023ac0c99 100644 --- a/translations/tl/1-getting-started-lessons/1-intro-to-programming-languages/README.md +++ b/translations/tl/1-getting-started-lessons/1-intro-to-programming-languages/README.md @@ -17,7 +17,7 @@ Alam mo, naiintindihan ko kung bakit nakakatakot ang programming sa simula. Noon Ngayon, sisilipin natin ang mga kamangha-manghang tools na ginagawang posible ang modernong web development – at sobrang nakakaadik! Pinag-uusapan natin ang parehong editors, browsers, at workflows na ginagamit ng mga developer sa Netflix, Spotify, at sa paborito mong indie app studio araw-araw. At eto ang magpapasayaw sa'yo: karamihan sa mga propesyonal-grade, industry-standard tools na ito ay ganap na libre! -![Intro Programming](../../../../translated_images/webdev101-programming.d6e3f98e61ac4bff0b27dcbf1c3f16c8ed46984866f2d29988929678b0058fde.tl.png) +![Intro Programming](../../../../translated_images/webdev101-programming.d6e3f98e61ac4bff.tl.png) > Sketchnote ni [Tomomi Imura](https://twitter.com/girlie_mac) ```mermaid diff --git a/translations/tl/1-getting-started-lessons/2-github-basics/README.md b/translations/tl/1-getting-started-lessons/2-github-basics/README.md index b39adf335..6d2428a4d 100644 --- a/translations/tl/1-getting-started-lessons/2-github-basics/README.md +++ b/translations/tl/1-getting-started-lessons/2-github-basics/README.md @@ -17,7 +17,7 @@ Alam kong maaaring nakakatakot ito sa simula – naalala ko pa noong una kong ti Sama-sama nating tatahakin ang paglalakbay na ito, hakbang-hakbang. Walang pagmamadali, walang pressure – ikaw, ako, at ilang napakagandang tool na magiging bago mong matalik na kaibigan! -![Panimula sa GitHub](../../../../translated_images/webdev101-github.8846d7971abef6f947909b4f9d343e2a23778aa716ca6b9d71df7174ee5009ac.tl.png) +![Panimula sa GitHub](../../../../translated_images/webdev101-github.8846d7971abef6f9.tl.png) > Sketchnote ni [Tomomi Imura](https://twitter.com/girlie_mac) ```mermaid @@ -604,7 +604,7 @@ Una, maghanap tayo ng repository (o **repo**) sa GitHub na interesado ka at kung ✅ Isang magandang paraan para makahanap ng 'beginner-friendly' na mga repo ay [maghanap gamit ang tag na 'good-first-issue'](https://github.blog/2020-01-22-browse-good-first-issues-to-start-contributing-to-open-source/). -![Kopyahin ang repo sa lokal](../../../../translated_images/clone_repo.5085c48d666ead57664f050d806e325d7f883be6838c821e08bc823ab7c66665.tl.png) +![Kopyahin ang repo sa lokal](../../../../translated_images/clone_repo.5085c48d666ead57.tl.png) May ilang paraan para kopyahin ang code. Isa sa mga paraan ay "i-clone" ang nilalaman ng repository, gamit ang HTTPS, SSH, o gamit ang GitHub CLI (Command Line Interface). diff --git a/translations/tl/1-getting-started-lessons/3-accessibility/README.md b/translations/tl/1-getting-started-lessons/3-accessibility/README.md index 08f56a352..93c5ec76a 100644 --- a/translations/tl/1-getting-started-lessons/3-accessibility/README.md +++ b/translations/tl/1-getting-started-lessons/3-accessibility/README.md @@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA: --> # Paglikha ng Accessible na Mga Webpage -![Lahat Tungkol sa Accessibility](../../../../translated_images/webdev101-a11y.8ef3025c858d897a403a1a42c0897c76e11b724d9a8a0c0578dd4316f7507622.tl.png) +![Lahat Tungkol sa Accessibility](../../../../translated_images/webdev101-a11y.8ef3025c858d897a.tl.png) > Sketchnote ni [Tomomi Imura](https://twitter.com/girlie_mac) ```mermaid diff --git a/translations/tl/2-js-basics/1-data-types/README.md b/translations/tl/2-js-basics/1-data-types/README.md index 41bcb9c29..161cd29fb 100644 --- a/translations/tl/2-js-basics/1-data-types/README.md +++ b/translations/tl/2-js-basics/1-data-types/README.md @@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA: --> # Mga Pangunahing Kaalaman sa JavaScript: Mga Uri ng Data -![Mga Pangunahing Kaalaman sa JavaScript - Mga Uri ng Data](../../../../translated_images/webdev101-js-datatypes.4cc470179730702c756480d3ffa46507f746e5975ebf80f99fdaaf1cff09a7f4.tl.png) +![Mga Pangunahing Kaalaman sa JavaScript - Mga Uri ng Data](../../../../translated_images/webdev101-js-datatypes.4cc470179730702c.tl.png) > Sketchnote ni [Tomomi Imura](https://twitter.com/girlie_mac) ```mermaid diff --git a/translations/tl/2-js-basics/2-functions-methods/README.md b/translations/tl/2-js-basics/2-functions-methods/README.md index d21bbbe29..52ab58e03 100644 --- a/translations/tl/2-js-basics/2-functions-methods/README.md +++ b/translations/tl/2-js-basics/2-functions-methods/README.md @@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA: --> # Mga Pangunahing Kaalaman sa JavaScript: Mga Pamamaraan at Function -![Mga Pangunahing Kaalaman sa JavaScript - Mga Function](../../../../translated_images/webdev101-js-functions.be049c4726e94f8b7605c36330ac42eeb5cd8ed02bcdd60fdac778174d6cb865.tl.png) +![Mga Pangunahing Kaalaman sa JavaScript - Mga Function](../../../../translated_images/webdev101-js-functions.be049c4726e94f8b.tl.png) > Sketchnote ni [Tomomi Imura](https://twitter.com/girlie_mac) ```mermaid diff --git a/translations/tl/2-js-basics/3-making-decisions/README.md b/translations/tl/2-js-basics/3-making-decisions/README.md index c66d496e7..ac1253a78 100644 --- a/translations/tl/2-js-basics/3-making-decisions/README.md +++ b/translations/tl/2-js-basics/3-making-decisions/README.md @@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA: --> # Mga Pangunahing Kaalaman sa JavaScript: Paggawa ng Desisyon -![Mga Pangunahing Kaalaman sa JavaScript - Paggawa ng Desisyon](../../../../translated_images/webdev101-js-decisions.69e1b20f272dd1f0b1cb2f8adaff3ed2a77c4f91db96d8a0594132a353fa189a.tl.png) +![Mga Pangunahing Kaalaman sa JavaScript - Paggawa ng Desisyon](../../../../translated_images/webdev101-js-decisions.69e1b20f272dd1f0.tl.png) > Sketchnote ni [Tomomi Imura](https://twitter.com/girlie_mac) diff --git a/translations/tl/2-js-basics/4-arrays-loops/README.md b/translations/tl/2-js-basics/4-arrays-loops/README.md index d4bfb1730..103506c0c 100644 --- a/translations/tl/2-js-basics/4-arrays-loops/README.md +++ b/translations/tl/2-js-basics/4-arrays-loops/README.md @@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA: --> # Mga Pangunahing Kaalaman sa JavaScript: Arrays at Loops -![Mga Pangunahing Kaalaman sa JavaScript - Arrays](../../../../translated_images/webdev101-js-arrays.439d7528b8a294558d0e4302e448d193f8ad7495cc407539cc81f1afe904b470.tl.png) +![Mga Pangunahing Kaalaman sa JavaScript - Arrays](../../../../translated_images/webdev101-js-arrays.439d7528b8a29455.tl.png) > Sketchnote ni [Tomomi Imura](https://twitter.com/girlie_mac) ```mermaid diff --git a/translations/tl/3-terrarium/1-intro-to-html/README.md b/translations/tl/3-terrarium/1-intro-to-html/README.md index c8fcb5c55..7876e062b 100644 --- a/translations/tl/3-terrarium/1-intro-to-html/README.md +++ b/translations/tl/3-terrarium/1-intro-to-html/README.md @@ -26,7 +26,7 @@ journey Build terrarium: 5: Student ``` -![Panimula sa HTML](../../../../translated_images/webdev101-html.4389c2067af68e98280c1bde52b6c6269f399eaae3659b7c846018d8a7b0bbd9.tl.png) +![Panimula sa HTML](../../../../translated_images/webdev101-html.4389c2067af68e98.tl.png) > Sketchnote ni [Tomomi Imura](https://twitter.com/girlie_mac) Ang HTML, o HyperText Markup Language, ang pundasyon ng bawat website na iyong binisita. Isipin ang HTML bilang balangkas na nagbibigay ng istruktura sa mga web page – ito ang nagtatakda kung saan ilalagay ang nilalaman, paano ito iaayos, at ano ang kinakatawan ng bawat bahagi. Habang ang CSS ang magpapaganda sa iyong HTML gamit ang mga kulay at layout, at ang JavaScript ang magdadagdag ng interaktibidad, ang HTML ang nagbibigay ng mahalagang istruktura na nagpapahintulot sa lahat ng iba pang aspeto na maging posible. @@ -88,7 +88,7 @@ Gagawa ka ng dedikadong folder para sa iyong proyekto ng terrarium at magdadagda 4. Sa Explorer pane, i-click ang "New File" icon 5. Pangalanan ang iyong file na `index.html` -![VS Code Explorer na nagpapakita ng paggawa ng bagong file](../../../../translated_images/vs-code-index.e2986cf919471eb984a0afef231380c8b132b000635105f2397bd2754d1b689c.tl.png) +![VS Code Explorer na nagpapakita ng paggawa ng bagong file](../../../../translated_images/vs-code-index.e2986cf919471eb9.tl.png) **Opsyon 2: Gamit ang Terminal Commands** ```bash diff --git a/translations/tl/3-terrarium/2-intro-to-css/README.md b/translations/tl/3-terrarium/2-intro-to-css/README.md index 78adf26e8..bc4d69262 100644 --- a/translations/tl/3-terrarium/2-intro-to-css/README.md +++ b/translations/tl/3-terrarium/2-intro-to-css/README.md @@ -30,7 +30,7 @@ journey Glass reflections: 5: Student ``` -![Panimula sa CSS](../../../../translated_images/webdev101-css.3f7af5991bf53a200d79e7257e5e450408d8ea97f5b531d31b2e3976317338ee.tl.png) +![Panimula sa CSS](../../../../translated_images/webdev101-css.3f7af5991bf53a20.tl.png) > Sketchnote ni [Tomomi Imura](https://twitter.com/girlie_mac) Naalala mo ba kung gaano kasimple ang hitsura ng iyong HTML terrarium? Sa CSS, binabago natin ang simpleng istruktura na iyon upang maging mas kaakit-akit sa paningin. @@ -205,7 +205,7 @@ body { Buksan ang developer tools ng iyong browser (F12), pumunta sa Elements tab, at i-inspect ang iyong `

` element. Makikita mo na namamana nito ang font family mula sa body: -![namana na font](../../../../translated_images/1.cc07a5cbe114ad1d4728c35134584ac1b87db688eff83cf75985cf31fe0ed95c.tl.png) +![namana na font](../../../../translated_images/1.cc07a5cbe114ad1d.tl.png) ✅ **Experiment Time**: Subukang mag-set ng iba pang inheritable properties sa `` tulad ng `color`, `line-height`, o `text-align`. Ano ang nangyayari sa iyong heading at iba pang elemento? @@ -599,7 +599,7 @@ Handa ka na bang pagandahin ang iyong terrarium gamit ang realistic glass reflec Gagawa ka ng subtle highlights na ginagaya kung paano nagre-reflect ang ilaw sa glass surfaces. Ang approach na ito ay kahalintulad ng paraan ng mga pintor noong Renaissance tulad ni Jan van Eyck na gumamit ng ilaw at reflection upang gawing three-dimensional ang painted glass. Narito ang layunin mo: -![finished terrarium](../../../../translated_images/terrarium-final.2f07047ffc597d0a06b06cab28a77801a10dd12fdb6c7fc630e9c40665491c53.tl.png) +![finished terrarium](../../../../translated_images/terrarium-final.2f07047ffc597d0a.tl.png) **Ang iyong hamon:** - **Gumawa** ng subtle white o light-colored oval shapes para sa glass reflections diff --git a/translations/tl/3-terrarium/3-intro-to-DOM-and-closures/README.md b/translations/tl/3-terrarium/3-intro-to-DOM-and-closures/README.md index 6fbe9b9fb..79c7a5f2e 100644 --- a/translations/tl/3-terrarium/3-intro-to-DOM-and-closures/README.md +++ b/translations/tl/3-terrarium/3-intro-to-DOM-and-closures/README.md @@ -26,7 +26,7 @@ journey Complete terrarium: 5: Student ``` -![DOM at isang closure](../../../../translated_images/webdev101-js.10280393044d7eaaec7e847574946add7ddae6be2b2194567d848b61d849334a.tl.png) +![DOM at isang closure](../../../../translated_images/webdev101-js.10280393044d7eaa.tl.png) > Sketchnote ni [Tomomi Imura](https://twitter.com/girlie_mac) Maligayang pagdating sa isa sa mga pinaka-kapanapanabik na aspeto ng web development - ang paggawa ng mga bagay na interactive! Ang Document Object Model (DOM) ay parang tulay sa pagitan ng iyong HTML at JavaScript, at ngayon gagamitin natin ito upang buhayin ang iyong terrarium. Nang likhain ni Tim Berners-Lee ang unang web browser, inisip niya ang isang web kung saan ang mga dokumento ay maaaring maging dynamic at interactive - ang DOM ang nagpapaganap ng pangitain na iyon. @@ -105,7 +105,7 @@ flowchart TD style Q fill:#ffebee ``` -![Representasyon ng DOM tree](../../../../translated_images/dom-tree.7daf0e763cbbba9273f9a66fe04c98276d7d23932309b195cb273a9cf1819b42.tl.png) +![Representasyon ng DOM tree](../../../../translated_images/dom-tree.7daf0e763cbbba92.tl.png) > Isang representasyon ng DOM at ang HTML markup na tumutukoy dito. Mula kay [Olfa Nasraoui](https://www.researchgate.net/publication/221417012_Profile-Based_Focused_Crawler_for_Social_Media-Sharing_Websites) @@ -150,7 +150,7 @@ flowchart LR > 💡 **Pag-unawa sa Closures**: Ang closures ay isang mahalagang paksa sa JavaScript, at maraming developer ang gumagamit nito sa loob ng maraming taon bago lubos na maunawaan ang lahat ng teoretikal na aspeto. Ngayon, magpo-focus tayo sa praktikal na aplikasyon - makikita mo ang closures na natural na lumilitaw habang binubuo natin ang ating mga interactive na feature. Ang pag-unawa ay lalago habang nakikita mo kung paano nila nilulutas ang mga totoong problema. -![Representasyon ng DOM tree](../../../../translated_images/dom-tree.7daf0e763cbbba9273f9a66fe04c98276d7d23932309b195cb273a9cf1819b42.tl.png) +![Representasyon ng DOM tree](../../../../translated_images/dom-tree.7daf0e763cbbba92.tl.png) > Isang representasyon ng DOM at ang HTML markup na tumutukoy dito. Mula kay [Olfa Nasraoui](https://www.researchgate.net/publication/221417012_Profile-Based_Focused_Crawler_for_Social_Media-Sharing_Websites) @@ -598,7 +598,7 @@ Ngayon, subukan ang iyong interactive terrarium! Buksan ang iyong `index.html` f - **Suporta sa iba't ibang device**: Gumagana sa desktop at mobile - **Performance conscious**: Walang memory leaks o redundant calculations -![finished terrarium](../../../../translated_images/terrarium-final.0920f16e87c13a84cd2b553a5af9a3ad1cffbd41fbf8ce715d9e9c43809a5e2c.tl.png) +![finished terrarium](../../../../translated_images/terrarium-final.0920f16e87c13a84.tl.png) --- diff --git a/translations/tl/3-terrarium/README.md b/translations/tl/3-terrarium/README.md index 4f3d1c892..cd4775c53 100644 --- a/translations/tl/3-terrarium/README.md +++ b/translations/tl/3-terrarium/README.md @@ -1,45 +1,30 @@ -# Ang Aking Terrarium: Isang proyekto para matutunan ang HTML, CSS, at DOM manipulation gamit ang JavaScript 🌵🌱 +## I-deploy ang iyong Terrarium -Isang maliit na drag and drop code-meditation. Sa kaunting HTML, JS, at CSS, magagawa mong bumuo ng web interface, i-style ito, at magdagdag ng iba't ibang interaksyon ayon sa iyong kagustuhan. - -![ang aking terrarium](../../../translated_images/screenshot_gray.0c796099a1f9f25e40aa55ead81f268434c00af30d7092490759945eda63067d.tl.png) - -# Mga Aralin - -1. [Panimula sa HTML](./1-intro-to-html/README.md) -2. [Panimula sa CSS](./2-intro-to-css/README.md) -3. [Panimula sa DOM at JS Closures](./3-intro-to-DOM-and-closures/README.md) - -## Mga Kredito - -Isinulat nang may ♥️ ni [Jen Looper](https://www.twitter.com/jenlooper) - -Ang terrarium na ginawa gamit ang CSS ay inspirasyon mula sa glass jar ni Jakub Mandra sa [codepen](https://codepen.io/Rotarepmi/pen/rjpNZY). - -Ang mga likhang sining ay mano-manong iginuhit ni [Jen Looper](http://jenlooper.com) gamit ang tulong ng Procreate. - -## I-deploy ang Iyong Terrarium - -Maaari mong i-deploy, o i-publish ang iyong terrarium sa web gamit ang Azure Static Web Apps. +Maaari mong i-deploy, o i-publish ang iyong Terrarium sa web gamit ang **Azure Static Web Apps**. 1. I-fork ang repo na ito -2. Pindutin ang button na ito +2. Pindutin ang button na ito 👇 -[![Deploy to Azure button](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/?feature.customportal=false&WT.mc_id=academic-77807-sagibbon#create/Microsoft.StaticApp) +[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.StaticApp) -3. Sundan ang wizard para sa paglikha ng iyong app. Siguraduhing itakda ang app root sa `/solution` o sa root ng iyong codebase. Walang API sa app na ito, kaya huwag mag-alala tungkol sa pagdaragdag nito. Isang github folder ang malilikha sa iyong forked repository na makakatulong sa Azure Static Web Apps' build services upang i-build at i-publish ang iyong app sa isang bagong URL. +3. Sundin ang setup wizard upang likhain ang iyong app. + - Itakda ang **App root** sa alinman sa `/solution` o ang root ng iyong codebase. + - Walang API sa app na ito, kaya maaari mong laktawan ang API configuration. + - Isang `.github` folder ang awtomatikong lilikhain upang tulungan ang Azure Static Web Apps na itayo at i-publish ang iyong app. --- -**Paunawa**: -Ang dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't sinisikap naming maging tumpak, pakitandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa kanyang katutubong wika ang dapat ituring na opisyal na sanggunian. Para sa mahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na dulot ng paggamit ng pagsasaling ito. \ No newline at end of file + +**Pahayag ng Pagsuway**: +Ang dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagamat aming nilalayon ang pagiging tumpak, pakatandaan na ang awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o kamalian. Ang orihinal na dokumento sa kanyang sariling wika ang dapat ituring na pangunahing sanggunian. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang maling pagkakaintindi o maling interpretasyon na maaaring magmula sa paggamit ng pagsasaling ito. + \ No newline at end of file diff --git a/translations/tl/3-terrarium/solution/README.md b/translations/tl/3-terrarium/solution/README.md index a71bbdb84..9155e2a37 100644 --- a/translations/tl/3-terrarium/solution/README.md +++ b/translations/tl/3-terrarium/solution/README.md @@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA: Isang maliit na drag and drop na code-meditation. Sa kaunting HTML, JS, at CSS, maaari kang gumawa ng web interface, i-style ito, at magdagdag ng interaksyon. -![ang aking terrarium](../../../../translated_images/screenshot_gray.0c796099a1f9f25e40aa55ead81f268434c00af30d7092490759945eda63067d.tl.png) +![ang aking terrarium](../../../../translated_images/screenshot_gray.0c796099a1f9f25e.tl.png) ## Mga Kredito diff --git a/translations/tl/5-browser-extension/1-about-browsers/README.md b/translations/tl/5-browser-extension/1-about-browsers/README.md index 4aed7f0b1..f96e1102d 100644 --- a/translations/tl/5-browser-extension/1-about-browsers/README.md +++ b/translations/tl/5-browser-extension/1-about-browsers/README.md @@ -26,7 +26,7 @@ journey Polish experience: 5: Student ``` -![Browser sketchnote](../../../../translated_images/browser.60317c9be8b7f84adce43e30bff8d47a1ae15793beab762317b2bc6b74337c1a.tl.jpg) +![Browser sketchnote](../../../../translated_images/browser.60317c9be8b7f84a.tl.jpg) > Sketchnote ni [Wassim Chegham](https://dev.to/wassimchegham/ever-wondered-what-happens-when-you-type-in-a-url-in-an-address-bar-in-a-browser-3dob) ## Pre-Lecture Quiz @@ -79,7 +79,7 @@ Ang prosesong ito ay sumasalamin sa disenyo ng unang web browser, ang WorldWideW ✅ **Kaunting Kasaysayan**: Ang unang browser ay tinawag na 'WorldWideWeb' at nilikha ni Sir Timothy Berners-Lee noong 1990. -![early browsers](../../../../translated_images/earlybrowsers.d984b711cdf3a42ddac919d46c4b5ca7232f68ccfbd81395e04e5a64c0015277.tl.jpg) +![early browsers](../../../../translated_images/earlybrowsers.d984b711cdf3a42d.tl.jpg) > Ilang maagang browser, mula kay [Karen McGrane](https://www.slideshare.net/KMcGrane/week-4-ixd-history-personal-computing) ### Paano Pinoproseso ng Mga Browser ang Web Content @@ -198,7 +198,7 @@ quadrantChart Ang pag-unawa sa proseso ng pag-install ng extension ay tumutulong sa iyo na ma-anticipate ang karanasan ng user kapag ini-install nila ang iyong extension. Ang proseso ng pag-install ay standardized sa mga modernong browser, na may kaunting pagkakaiba sa disenyo ng interface. -![screenshot ng Edge browser na nagpapakita ng bukas na edge://extensions page at bukas na settings menu](../../../../translated_images/install-on-edge.d68781acaf0b3d3dada8b7507cde7a64bf74b7040d9818baaa9070668e819f90.tl.png) +![screenshot ng Edge browser na nagpapakita ng bukas na edge://extensions page at bukas na settings menu](../../../../translated_images/install-on-edge.d68781acaf0b3d3d.tl.png) > **Mahalaga**: Siguraduhing i-toggle ang developer mode at payagan ang mga extension mula sa ibang mga tindahan kapag sinusubukan ang iyong sariling mga extension. @@ -313,10 +313,10 @@ Ito ay sumusunod sa prinsipyo ng progressive disclosure na ginagamit sa disenyo ### Overview ng Extension Views **Setup View** - Paunang configuration ng user: -![screenshot ng tapos na extension na bukas sa browser, nagpapakita ng form na may mga input para sa pangalan ng rehiyon at API key.](../../../../translated_images/1.b6da8c1394b07491afeb6b2a8e5aca73ebd3cf478e27bcc9aeabb187e722648e.tl.png) +![screenshot ng tapos na extension na bukas sa browser, nagpapakita ng form na may mga input para sa pangalan ng rehiyon at API key.](../../../../translated_images/1.b6da8c1394b07491.tl.png) **Results View** - Pagpapakita ng data ng carbon footprint: -![screenshot ng tapos na extension na nagpapakita ng mga halaga para sa carbon usage at fossil fuel percentage para sa rehiyong US-NEISO.](../../../../translated_images/2.1dae52ff0804224692cd648afbf2342955d7afe3b0101b617268130dfb427f55.tl.png) +![screenshot ng tapos na extension na nagpapakita ng mga halaga para sa carbon usage at fossil fuel percentage para sa rehiyong US-NEISO.](../../../../translated_images/2.1dae52ff08042246.tl.png) ### Pagbuo ng Configuration Form diff --git a/translations/tl/5-browser-extension/2-forms-browsers-local-storage/README.md b/translations/tl/5-browser-extension/2-forms-browsers-local-storage/README.md index 234140d27..4f8a8605e 100644 --- a/translations/tl/5-browser-extension/2-forms-browsers-local-storage/README.md +++ b/translations/tl/5-browser-extension/2-forms-browsers-local-storage/README.md @@ -268,7 +268,7 @@ stateDiagram-v2 ClearStorage --> FirstTime: Back to setup ``` -![Local storage pane](../../../../translated_images/localstorage.472f8147b6a3f8d141d9551c95a2da610ac9a3c6a73d4a1c224081c98bae09d9.tl.png) +![Local storage pane](../../../../translated_images/localstorage.472f8147b6a3f8d1.tl.png) > ⚠️ **Pagsasaalang-alang sa Seguridad**: Sa mga production application, ang pag-iimbak ng API keys sa LocalStorage ay may panganib sa seguridad dahil maa-access ito ng JavaScript. Para sa layunin ng pag-aaral, ang approach na ito ay maayos, ngunit ang mga totoong application ay dapat gumamit ng secure server-side storage para sa mga sensitibong credentials. diff --git a/translations/tl/5-browser-extension/3-background-tasks-and-performance/README.md b/translations/tl/5-browser-extension/3-background-tasks-and-performance/README.md index ac0c355d9..acd9ba721 100644 --- a/translations/tl/5-browser-extension/3-background-tasks-and-performance/README.md +++ b/translations/tl/5-browser-extension/3-background-tasks-and-performance/README.md @@ -126,7 +126,7 @@ Upang buksan ang Developer Tools sa Edge, i-click ang tatlong tuldok sa kanang i Subukan natin ito. Buksan ang isang website (Microsoft.com ay maganda para dito) at i-click ang 'Record' button. Ngayon i-refresh ang pahina at panoorin ang profiler na kinukuha ang lahat ng nangyayari. Kapag tumigil ka sa pag-record, makikita mo ang detalyadong breakdown kung paano 'scripts', 'renders', at 'paints' ng browser ang site. Parang kung paano mino-monitor ng mission control ang bawat sistema sa panahon ng paglulunsad ng rocket - makakakuha ka ng real-time na data sa eksaktong nangyayari at kailan. -![Edge profiler](../../../../translated_images/profiler.5a4a62479c5df01cfec9aab74173dba13f91d2c968e1a1ae434c26165792df15.tl.png) +![Edge profiler](../../../../translated_images/profiler.5a4a62479c5df01c.tl.png) ✅ Ang [Microsoft Documentation](https://docs.microsoft.com/microsoft-edge/devtools-guide/performance/?WT.mc_id=academic-77807-sagibbon) ay may maraming detalye kung nais mong mas malalim na pag-aralan. @@ -136,11 +136,11 @@ Piliin ang mga elemento ng profile timeline upang mag-zoom in sa mga event na na Kumuha ng snapshot ng performance ng iyong pahina sa pamamagitan ng pagpili ng bahagi ng profile timeline at pagtingin sa summary pane: -![Edge profiler snapshot](../../../../translated_images/snapshot.97750180ebcad73794a3594b36925eb5c8dbaac9e03fec7f9b974188c9ac63c7.tl.png) +![Edge profiler snapshot](../../../../translated_images/snapshot.97750180ebcad737.tl.png) Suriin ang Event Log pane upang makita kung may anumang event na tumagal ng higit sa 15 ms: -![Edge event log](../../../../translated_images/log.804026979f3707e00eebcfa028b2b5a88cec6292f858767bb6703afba65a7d9c.tl.png) +![Edge event log](../../../../translated_images/log.804026979f3707e0.tl.png) ✅ Kilalanin ang iyong profiler! Buksan ang developer tools sa site na ito at tingnan kung may mga bottleneck. Ano ang pinakamabagal na naglo-load na asset? Ang pinakamabilis? diff --git a/translations/tl/5-browser-extension/README.md b/translations/tl/5-browser-extension/README.md index b7a8daf2e..e6fda37e0 100644 --- a/translations/tl/5-browser-extension/README.md +++ b/translations/tl/5-browser-extension/README.md @@ -23,7 +23,7 @@ Ang extension na ito ay maaaring tawagin ng isang user kapag ang isang API key a ### Mga Kredito -![isang berdeng browser extension](../../../translated_images/extension-screenshot.0e7f5bfa110e92e3875e1bc9405edd45a3d2e02963e48900adb91926a62a5807.tl.png) +![isang berdeng browser extension](../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.tl.png) ## Mga Kredito diff --git a/translations/tl/5-browser-extension/solution/README.md b/translations/tl/5-browser-extension/solution/README.md index 2007064d7..a97269a00 100644 --- a/translations/tl/5-browser-extension/solution/README.md +++ b/translations/tl/5-browser-extension/solution/README.md @@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA: Gamit ang tmrow's CO2 Signal API para subaybayan ang paggamit ng kuryente, gumawa ng browser extension upang magkaroon ka ng paalala sa iyong browser tungkol sa bigat ng paggamit ng kuryente sa iyong rehiyon. Ang paggamit ng extension na ito nang ad hoc ay makakatulong sa iyo na gumawa ng mas maingat na desisyon sa iyong mga aktibidad batay sa impormasyong ito. -![screenshot ng extension](../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3875e1bc9405edd45a3d2e02963e48900adb91926a62a5807.tl.png) +![screenshot ng extension](../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.tl.png) ## Pagsisimula @@ -31,7 +31,7 @@ npm run build Para i-install sa Edge, gamitin ang menu na 'three dot' sa kanang itaas na bahagi ng browser upang hanapin ang Extensions panel. Mula roon, piliin ang 'Load Unpacked' upang mag-load ng bagong extension. Buksan ang 'dist' folder kapag lumitaw ang prompt, at mai-load ang extension. Upang magamit ito, kakailanganin mo ng API key para sa CO2 Signal's API ([kumuha dito sa pamamagitan ng email](https://www.co2signal.com/) - ilagay ang iyong email sa kahon sa pahinang ito) at ang [code para sa iyong rehiyon](http://api.electricitymap.org/v3/zones) na tumutugma sa [Electricity Map](https://www.electricitymap.org/map) (halimbawa, sa Boston, ginagamit ko ang 'US-NEISO'). -![pag-install](../../../../translated_images/install-on-edge.78634f02842c48283726c531998679a6f03a45556b2ee99d8ff231fe41446324.tl.png) +![pag-install](../../../../translated_images/install-on-edge.78634f02842c4828.tl.png) Kapag na-input na ang API key at rehiyon sa interface ng extension, ang kulay ng tuldok sa browser extension bar ay magbabago upang ipakita ang paggamit ng enerhiya sa iyong rehiyon at magbibigay ng ideya kung anong mga aktibidad na mabigat sa enerhiya ang angkop na gawin. Ang konsepto sa likod ng sistemang 'tuldok' na ito ay inspirasyon mula sa [Energy Lollipop extension](https://energylollipop.com/) para sa emissions sa California. diff --git a/translations/tl/5-browser-extension/solution/translation/README.fr.md b/translations/tl/5-browser-extension/solution/translation/README.fr.md index ab59de0aa..8dbbdc989 100644 --- a/translations/tl/5-browser-extension/solution/translation/README.fr.md +++ b/translations/tl/5-browser-extension/solution/translation/README.fr.md @@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA: Gamit ang API ng CO2 Signal mula sa tmrow para subaybayan ang konsumo ng kuryente, gumawa ng browser extension upang magkaroon ka ng paalala direkta sa iyong browser tungkol sa konsumo ng kuryente sa iyong lugar. Ang paggamit ng extension na ito ay makakatulong sa iyo na magpasya sa iyong mga aktibidad base sa impormasyong ito. -![screenshot ng extension](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3875e1bc9405edd45a3d2e02963e48900adb91926a62a5807.tl.png) +![screenshot ng extension](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.tl.png) ## Pagsisimula @@ -31,7 +31,7 @@ npm run build Para i-install sa Edge, gamitin ang menu na 'tatlong tuldok' sa kanang itaas na bahagi ng browser upang hanapin ang panel ng Extensions. Mula doon, piliin ang 'Load unpacked extension' upang mag-load ng bagong extension. Buksan ang folder na 'dist' kapag na-prompt, at ang extension ay maglo-load. Para magamit ito, kakailanganin mo ng API key para sa CO2 Signal API ([kumuha ng isa dito sa pamamagitan ng email](https://www.co2signal.com/) - ilagay ang iyong email sa kahon sa pahinang ito) at ang [code para sa iyong rehiyon](http://api.electricitymap.org/v3/zones) na tumutugma sa [Electricity Map](https://www.electricitymap.org/map) (halimbawa, sa Boston, ginagamit ko ang 'US-NEISO'). -![pag-install](../../../../../translated_images/install-on-edge.78634f02842c48283726c531998679a6f03a45556b2ee99d8ff231fe41446324.tl.png) +![pag-install](../../../../../translated_images/install-on-edge.78634f02842c4828.tl.png) Kapag nailagay na ang API key at rehiyon sa interface ng extension, ang kulay ng tuldok sa extension bar ng browser ay dapat magbago upang ipakita ang konsumo ng enerhiya sa iyong lugar at magbigay ng indikasyon kung anong mga aktibidad na mataas sa enerhiya ang angkop gawin. Ang konsepto sa likod ng sistemang ito ng 'mga tuldok' ay inspirasyon ng [extension na Energy Lollipop](https://energylollipop.com/) para sa mga emisyon sa California. diff --git a/translations/tl/5-browser-extension/solution/translation/README.hi.md b/translations/tl/5-browser-extension/solution/translation/README.hi.md index 3a5226b23..96fec4297 100644 --- a/translations/tl/5-browser-extension/solution/translation/README.hi.md +++ b/translations/tl/5-browser-extension/solution/translation/README.hi.md @@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA: Gamit ang CO2 Signal API ng tmrow para subaybayan ang paggamit ng kuryente, gumawa ng isang browser extension na magbibigay sa iyo ng paalala kung gaano kabigat ang paggamit ng kuryente sa iyong lugar habang ginagamit ang iyong browser. Ang extension na ito ay makakatulong sa iyo na gumawa ng mga desisyon batay sa impormasyong ito para sa iyong mga aktibidad. -![Screenshot ng Extension](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3875e1bc9405edd45a3d2e02963e48900adb91926a62a5807.tl.png) +![Screenshot ng Extension](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.tl.png) ## Pagsisimula @@ -31,7 +31,7 @@ npm run build Para i-install sa Edge, gamitin ang 'tatlong tuldok' na menu sa kanang itaas ng browser para hanapin ang extension panel. Mula doon, piliin ang 'Load Unpacked' para mag-load ng bagong extension. Sa prompt, buksan ang 'dist' folder at ma-load ang extension. Para magamit ito, kakailanganin mo ng API key mula sa CO2 Signal ([makukuha dito sa pamamagitan ng email](https://www.co2signal.com/) - ilagay ang iyong email sa kahon sa page na iyon) at [code para sa iyong lugar](http://api.electricitymap.org/v3/zones) mula sa [Electricity Map](https://www.electricitymap.org/map) (halimbawa, sa Boston, ginagamit ko ang 'US-NEISO'). -![Pag-install](../../../../../translated_images/install-on-edge.78634f02842c48283726c531998679a6f03a45556b2ee99d8ff231fe41446324.tl.png) +![Pag-install](../../../../../translated_images/install-on-edge.78634f02842c4828.tl.png) Kapag na-input na ang API key at lugar sa extension interface, ang makikita mong makulay na tuldok sa browser extension bar ay magbabago upang ipakita ang paggamit ng enerhiya sa iyong lugar. Magbibigay ito sa iyo ng indikasyon kung ang mga energy-intensive na aktibidad ay angkop sa iyong kasalukuyang sitwasyon. Ang konsepto ng 'dot' system na ito ay inspirasyon ng [Energy Lollipop Extension](https://energylollipop.com/) para sa emissions sa California. diff --git a/translations/tl/5-browser-extension/solution/translation/README.it.md b/translations/tl/5-browser-extension/solution/translation/README.it.md index 937275f05..32100dcb2 100644 --- a/translations/tl/5-browser-extension/solution/translation/README.it.md +++ b/translations/tl/5-browser-extension/solution/translation/README.it.md @@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA: Gagamitin ang Signal CO2 API ng tmrow upang subaybayan ang paggamit ng kuryente at lumikha ng isang browser extension na magbibigay ng paalala direkta sa iyong browser kung gaano kabigat ang paggamit ng kuryente sa iyong rehiyon. Ang paggamit ng extension na ito ay makakatulong sa iyo na suriin ang iyong mga aktibidad batay sa impormasyong ito. -![screenshot ng extension](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3875e1bc9405edd45a3d2e02963e48900adb91926a62a5807.tl.png) +![screenshot ng extension](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.tl.png) ## Paano Magsimula @@ -31,7 +31,7 @@ npm run build Para i-install sa Edge, gamitin ang menu na "tatlong tuldok" sa kanang itaas na bahagi ng browser upang mahanap ang panel ng Mga Extension. Kung hindi pa naka-activate, i-on ang Developer Mode (nasa ibabang kaliwa). Piliin ang "Load unpacked" upang mag-load ng bagong extension. Buksan ang folder na "dist" sa prompt, at ang extension ay mai-load. Upang magamit ito, kakailanganin mo ng API key para sa CO2 Signal API (maaari kang [kumuha nito sa pamamagitan ng email](https://www.co2signal.com/) - ilagay ang iyong email sa kahon sa pahinang ito) at ang [code para sa iyong rehiyon](http://api.electricitymap.org/v3/zones) na tumutugma sa [electricity map](https://www.electricitymap.org/map) (halimbawa, sa Boston, "US-NEISO"). -![pag-install](../../../../../translated_images/install-on-edge.78634f02842c48283726c531998679a6f03a45556b2ee99d8ff231fe41446324.tl.png) +![pag-install](../../../../../translated_images/install-on-edge.78634f02842c4828.tl.png) Kapag nailagay na ang API key at rehiyon sa interface ng extension, ang kulay ng tuldok sa extension bar ng browser ay magbabago upang ipakita ang paggamit ng enerhiya sa rehiyon at magbibigay ng ideya kung aling mga aktibidad na mataas ang konsumo ng enerhiya ang angkop na gawin. Ang konsepto sa likod ng sistemang ito ng "mga tuldok" ay hango sa [Energy Lollipop extension](https://energylollipop.com/) para sa mga emisyon sa California. diff --git a/translations/tl/5-browser-extension/solution/translation/README.ja.md b/translations/tl/5-browser-extension/solution/translation/README.ja.md index b06ee6dbf..85d730ca6 100644 --- a/translations/tl/5-browser-extension/solution/translation/README.ja.md +++ b/translations/tl/5-browser-extension/solution/translation/README.ja.md @@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA: Gagamitin natin ang CO2 Signal API ng tmrow upang subaybayan ang paggamit ng kuryente sa iyong lugar at ipapakita ito bilang paalala sa iyong browser. Sa pamamagitan ng browser extension na ito, maaari mong gamitin ang impormasyong ito upang magdesisyon sa iyong mga aktibidad. -![screenshot ng extension](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3875e1bc9405edd45a3d2e02963e48900adb91926a62a5807.tl.png) +![screenshot ng extension](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.tl.png) ## Panimula @@ -31,7 +31,7 @@ npm run build Upang mai-install sa Edge, hanapin ang "Extensions" panel mula sa menu na "tatlong tuldok" sa kanang itaas ng browser. Piliin ang "Load Unpacked" at i-load ang bagong extension. Sa prompt, buksan ang "dist" folder upang ma-load ang extension. Upang magamit ito, kakailanganin mo ng API key mula sa CO2 Signal API ([kumuha dito sa pamamagitan ng email](https://www.co2signal.com/) - ilagay ang iyong email sa kahon sa pahinang iyon) at ang [code para sa iyong rehiyon](http://api.electricitymap.org/v3/zones) na tugma sa [Electricity Map](https://www.electricitymap.org/map) (halimbawa, sa Boston, ginagamit ang 'US-NEISO'). -![pag-install](../../../../../translated_images/install-on-edge.78634f02842c48283726c531998679a6f03a45556b2ee99d8ff231fe41446324.tl.png) +![pag-install](../../../../../translated_images/install-on-edge.78634f02842c4828.tl.png) Kapag nailagay mo na ang API key at rehiyon sa interface ng extension, magbabago ang kulay ng dot na makikita sa extension bar ng iyong browser. Ang kulay ng dot ay sumasalamin sa paggamit ng enerhiya sa iyong lugar at nagbibigay ng ideya kung anong mga aktibidad ang angkop batay sa pangangailangan ng enerhiya. Ang konsepto ng "dot" system na ito ay inspirasyon ng [Energy Lollipop extension](https://energylollipop.com/) para sa emissions sa California. diff --git a/translations/tl/5-browser-extension/solution/translation/README.ms.md b/translations/tl/5-browser-extension/solution/translation/README.ms.md index a58f3a2ce..3a857b3b7 100644 --- a/translations/tl/5-browser-extension/solution/translation/README.ms.md +++ b/translations/tl/5-browser-extension/solution/translation/README.ms.md @@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA: Gamit ang API ng CO2 Signal mula sa tmrow para subaybayan ang paggamit ng kuryente, gumawa ng isang browser extension na magbibigay ng abiso sa iyong browser tungkol sa bigat ng paggamit ng kuryente sa iyong lugar. Ang paggamit ng extension na ito ay makakatulong sa iyo na magdesisyon tungkol sa iyong mga aktibidad base sa impormasyong ito. -![screenshot ng browser extension](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3875e1bc9405edd45a3d2e02963e48900adb91926a62a5807.tl.png) +![screenshot ng browser extension](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.tl.png) ## Paano Magsimula @@ -31,7 +31,7 @@ npm run build Para i-install sa Edge, gamitin ang menu na 'tatlong tuldok' sa kanang itaas na bahagi ng browser para hanapin ang panel ng Extensions. Mula roon, piliin ang 'Load Unpacked' para mag-load ng bagong extension. Buksan ang folder na 'dist' kapag hiniling, at ang extension ay mai-load. Para magamit ito, kakailanganin mo ng API key para sa CO2 Signal API ([kumuha ng isa dito sa pamamagitan ng email](https://www.co2signal.com/) - ilagay ang iyong email sa kahon sa pahinang ito) at [code para sa iyong rehiyon](http://api.electricitymap.org/v3/zones) na tumutugma sa [Electricity Map](https://www.electricitymap.org/map) (halimbawa, sa Boston, ginamit ko ang 'US-NEISO'). -![nagda-download](../../../../../translated_images/install-on-edge.78634f02842c48283726c531998679a6f03a45556b2ee99d8ff231fe41446324.tl.png) +![nagda-download](../../../../../translated_images/install-on-edge.78634f02842c4828.tl.png) Kapag nailagay na ang API key at rehiyon sa interface ng extension, ang kulay ng tuldok sa extension bar ng browser ay magbabago upang ipakita ang paggamit ng enerhiya sa iyong lugar at magbibigay ng mga rekomendasyon tungkol sa mga aktibidad na angkop gawin. Ang konsepto sa likod ng sistemang 'dot' na ito ay nakuha ko mula sa [Energy Lollipop browser extension](https://energylollipop.com/) para sa emissions sa California. diff --git a/translations/tl/5-browser-extension/start/README.md b/translations/tl/5-browser-extension/start/README.md index 166c8616c..6bd0eaded 100644 --- a/translations/tl/5-browser-extension/start/README.md +++ b/translations/tl/5-browser-extension/start/README.md @@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA: Gamit ang tmrow's C02 Signal API para subaybayan ang paggamit ng kuryente, gumawa ng browser extension upang magkaroon ka ng paalala sa iyong browser tungkol sa bigat ng paggamit ng kuryente sa iyong rehiyon. Ang paggamit ng extension na ito nang ad hoc ay makakatulong sa iyo na gumawa ng mas maingat na desisyon sa iyong mga aktibidad batay sa impormasyong ito. -![extension screenshot](../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3875e1bc9405edd45a3d2e02963e48900adb91926a62a5807.tl.png) +![extension screenshot](../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.tl.png) ## Pagsisimula @@ -31,7 +31,7 @@ npm run build Para i-install sa Edge, gamitin ang menu na 'three dot' sa kanang itaas na bahagi ng browser upang hanapin ang Extensions panel. Mula doon, piliin ang 'Load Unpacked' upang mag-load ng bagong extension. Buksan ang 'dist' folder sa prompt at maglo-load ang extension. Para magamit ito, kakailanganin mo ng API key para sa CO2 Signal's API ([kumuha dito sa pamamagitan ng email](https://www.co2signal.com/) - ilagay ang iyong email sa kahon sa pahinang ito) at ang [code para sa iyong rehiyon](http://api.electricitymap.org/v3/zones) na tumutugma sa [Electricity Map](https://www.electricitymap.org/map) (halimbawa, sa Boston, ginagamit ko ang 'US-NEISO'). -![installing](../../../../translated_images/install-on-edge.78634f02842c48283726c531998679a6f03a45556b2ee99d8ff231fe41446324.tl.png) +![installing](../../../../translated_images/install-on-edge.78634f02842c4828.tl.png) Kapag na-input na ang API key at rehiyon sa interface ng extension, ang kulay ng tuldok sa browser extension bar ay dapat magbago upang ipakita ang paggamit ng enerhiya sa iyong rehiyon at magbigay ng gabay kung anong mga aktibidad na mabigat sa enerhiya ang angkop na gawin. Ang konsepto sa likod ng sistemang 'dot' na ito ay ibinigay sa akin ng [Energy Lollipop extension](https://energylollipop.com/) para sa emissions sa California. diff --git a/translations/tl/6-space-game/2-drawing-to-canvas/README.md b/translations/tl/6-space-game/2-drawing-to-canvas/README.md index cef096a49..6e14ee6a6 100644 --- a/translations/tl/6-space-game/2-drawing-to-canvas/README.md +++ b/translations/tl/6-space-game/2-drawing-to-canvas/README.md @@ -108,7 +108,7 @@ quadrantChart UI Elements: [0.9, 0.1] ``` -![ang grid ng canvas](../../../../translated_images/canvas_grid.5f209da785ded492a01ece440e3032afe51efa500cc2308e5ea4252487ceaf0b.tl.png) +![ang grid ng canvas](../../../../translated_images/canvas_grid.5f209da785ded492.tl.png) > Imahe mula sa [MDN](https://developer.mozilla.org/docs/Web/API/Canvas_API/Tutorial/Drawing_shapes) Para mag-drawing sa canvas element, susundin mo ang parehong tatlong hakbang na proseso na bumubuo sa pundasyon ng lahat ng canvas graphics. Kapag nagawa mo ito nang ilang beses, magiging natural na ito: @@ -329,11 +329,11 @@ Gagawa ka ng web page na may Canvas element. Dapat itong mag-render ng black scr - Hero ship - ![Hero ship](../../../../translated_images/player.dd24c1afa8c71e9b82b2958946d4bad13308681392d4b5ddcc61a0e818ef8088.tl.png) + ![Hero ship](../../../../translated_images/player.dd24c1afa8c71e9b.tl.png) - 5*5 monster - ![Monster ship](../../../../translated_images/enemyShip.5df2a822c16650c2fb3c06652e8ec8120cdb9122a6de46b9a1a56d54db22657f.tl.png) + ![Monster ship](../../../../translated_images/enemyShip.5df2a822c16650c2.tl.png) ### Mga Inirerekomendang Hakbang para Simulan ang Development @@ -470,7 +470,7 @@ for (let x = START_X; x < STOP_X; x += ENEMY_SPACING) { Ang tapos na resulta ay dapat magmukhang ganito: -![Itim na screen na may isang bayani at 5*5 na mga halimaw](../../../../translated_images/partI-solution.36c53b48c9ffae2a5e15496b23b604ba5393433e4bf91608a7a0a020eb7a2691.tl.png) +![Itim na screen na may isang bayani at 5*5 na mga halimaw](../../../../translated_images/partI-solution.36c53b48c9ffae2a.tl.png) ## Solusyon diff --git a/translations/tl/6-space-game/5-keeping-score/README.md b/translations/tl/6-space-game/5-keeping-score/README.md index e8571bc79..9e6cc39eb 100644 --- a/translations/tl/6-space-game/5-keeping-score/README.md +++ b/translations/tl/6-space-game/5-keeping-score/README.md @@ -160,7 +160,7 @@ sequenceDiagram ``` - **Sistema ng puntos**: Ang bawat nasirang barko ng kalaban ay nagbibigay ng 100 puntos (mas madaling kalkulahin ng mga manlalaro ang mga bilog na numero). Ang score ay makikita sa ibabang kaliwang sulok. -- **Counter ng buhay**: Ang iyong hero ay magsisimula sa tatlong buhay - isang pamantayan na itinatag ng mga unang arcade games para balansehin ang hamon at kasiyahan sa paglalaro. Ang bawat banggaan sa kalaban ay magbabawas ng isang buhay. Ipapakita natin ang natitirang buhay sa ibabang kanan gamit ang mga icon ng barko ![life image](../../../../translated_images/life.6fb9f50d53ee0413cd91aa411f7c296e10a1a6de5c4a4197c718b49bf7d63ebf.tl.png). +- **Counter ng buhay**: Ang iyong hero ay magsisimula sa tatlong buhay - isang pamantayan na itinatag ng mga unang arcade games para balansehin ang hamon at kasiyahan sa paglalaro. Ang bawat banggaan sa kalaban ay magbabawas ng isang buhay. Ipapakita natin ang natitirang buhay sa ibabang kanan gamit ang mga icon ng barko ![life image](../../../../translated_images/life.6fb9f50d53ee0413.tl.png). ## Simulan na Natin ang Paggawa! diff --git a/translations/tl/7-bank-project/1-template-route/README.md b/translations/tl/7-bank-project/1-template-route/README.md index 4e6d2e3de..8feef51b2 100644 --- a/translations/tl/7-bank-project/1-template-route/README.md +++ b/translations/tl/7-bank-project/1-template-route/README.md @@ -652,7 +652,7 @@ sequenceDiagram Ang paggamit ng `history.pushState` ay lumilikha ng mga bagong entry sa navigation history ng browser. Maaari mong suriin iyon sa pamamagitan ng pag-hold sa *back button* ng iyong browser, dapat itong magpakita ng ganito: -![Screenshot ng navigation history](../../../../translated_images/history.7fdabbafa521e06455b738d3dafa3ff41d3071deae60ead8c7e0844b9ed987d8.tl.png) +![Screenshot ng navigation history](../../../../translated_images/history.7fdabbafa521e064.tl.png) Kung susubukan mong mag-click sa back button nang ilang beses, makikita mo na nagbabago ang kasalukuyang URL at na-update ang history, ngunit ang parehong template ang patuloy na ipinapakita. diff --git a/translations/tl/7-bank-project/2-forms/README.md b/translations/tl/7-bank-project/2-forms/README.md index e6729f4eb..17995b0d2 100644 --- a/translations/tl/7-bank-project/2-forms/README.md +++ b/translations/tl/7-bank-project/2-forms/README.md @@ -295,7 +295,7 @@ Una, obserbahan natin kung ano ang nangyayari sa basic form submission: 2. Obserbahan ang mga pagbabago sa address bar ng iyong browser 3. Pansinin kung paano nagre-reload ang page at lumalabas ang data sa URL -![Screenshot ng pagbabago sa URL ng browser pagkatapos i-click ang Register button](../../../../translated_images/click-register.e89a30bf0d4bc9ca867dc537c4cea679a7c26368bd790969082f524fed2355bc.tl.png) +![Screenshot ng pagbabago sa URL ng browser pagkatapos i-click ang Register button](../../../../translated_images/click-register.e89a30bf0d4bc9ca.tl.png) ### Paghahambing ng HTTP Methods @@ -350,7 +350,7 @@ I-configure natin ang iyong registration form para maayos na makipag-ugnayan sa 2. **I-click** ang "Create Account" button 3. **Obserbahan** ang server response sa iyong browser -![Isang browser window sa address na localhost:5000/api/accounts, nagpapakita ng JSON string na may user data](../../../../translated_images/form-post.61de4ca1b964d91a9e338416e19f218504dd0af5f762fbebabfe7ae80edf885f.tl.png) +![Isang browser window sa address na localhost:5000/api/accounts, nagpapakita ng JSON string na may user data](../../../../translated_images/form-post.61de4ca1b964d91a.tl.png) **Ang dapat mong makita:** - **Ang browser ay nagre-redirect** sa API endpoint URL @@ -615,7 +615,7 @@ async function register() { 3. **I-click** ang "Create Account" 4. **Obserbahan** ang mga mensahe sa console at feedback ng user -![Screenshot na nagpapakita ng log message sa console ng browser](../../../../translated_images/browser-console.efaf0b51aaaf67782a29e1a0bb32cc063f189b18e894eb5926e02f1abe864ec2.tl.png) +![Screenshot na nagpapakita ng log message sa console ng browser](../../../../translated_images/browser-console.efaf0b51aaaf6778.tl.png) **Ano ang dapat mong makita:** - **Loading state** na lumalabas sa submit button @@ -790,7 +790,7 @@ Palakasin natin ang iyong registration form gamit ang matibay na pag-validate na 3. **Subukan** ang mga espesyal na karakter sa field ng username 4. **Mag-input** ng negatibong halaga ng balanse -![Screenshot na nagpapakita ng error sa pag-validate kapag sinusubukang isumite ang form](../../../../translated_images/validation-error.8bd23e98d416c22f80076d04829a4bb718e0e550fd622862ef59008ccf0d5dce.tl.png) +![Screenshot na nagpapakita ng error sa pag-validate kapag sinusubukang isumite ang form](../../../../translated_images/validation-error.8bd23e98d416c22f.tl.png) **Ano ang iyong mapapansin:** - **Ipinapakita ng browser** ang mga native na mensahe ng pag-validate @@ -932,7 +932,7 @@ Magpakita ng error message sa HTML kung ang user ay umiiral na. Narito ang isang halimbawa ng kung ano ang magiging hitsura ng final login page pagkatapos ng kaunting pag-istilo: -![Screenshot ng login page pagkatapos magdagdag ng mga estilo sa CSS](../../../../translated_images/result.96ef01f607bf856aa9789078633e94a4f7664d912f235efce2657299becca483.tl.png) +![Screenshot ng login page pagkatapos magdagdag ng mga estilo sa CSS](../../../../translated_images/result.96ef01f607bf856a.tl.png) ## Post-Lecture Quiz diff --git a/translations/tl/7-bank-project/3-data/README.md b/translations/tl/7-bank-project/3-data/README.md index 4ac1a88c8..85da5b29e 100644 --- a/translations/tl/7-bank-project/3-data/README.md +++ b/translations/tl/7-bank-project/3-data/README.md @@ -160,7 +160,7 @@ sequenceDiagram Browser->>User: Displays new page (flash/reload) ``` -![Workflow ng pag-update sa multi-page application](../../../../translated_images/mpa.7f7375a1a2d4aa779d3f928a2aaaf9ad76bcdeb05cfce2dc27ab126024050f51.tl.png) +![Workflow ng pag-update sa multi-page application](../../../../translated_images/mpa.7f7375a1a2d4aa77.tl.png) **Bakit pakiramdam na clunky ang approach na ito:** - Bawat click ay nangangahulugan ng pag-rebuild ng buong page mula sa simula @@ -187,7 +187,7 @@ sequenceDiagram Browser->>User: Shows updated content (no reload) ``` -![Workflow ng pag-update sa single-page application](../../../../translated_images/spa.268ec73b41f992c2a21ef9294235c6ae597b3c37e2c03f0494c2d8857325cc57.tl.png) +![Workflow ng pag-update sa single-page application](../../../../translated_images/spa.268ec73b41f992c2.tl.png) **Bakit mas maganda ang pakiramdam ng SPAs:** - Ang mga bahagi lang na talagang nagbago ang na-update (matalino, di ba?) @@ -523,7 +523,7 @@ if (data.error) { Ngayon, kapag sinubukan mong mag-login gamit ang invalid na account, makikita mo ang isang kapaki-pakinabang na mensahe ng error sa mismong pahina! -![Screenshot na nagpapakita ng mensahe ng error na lumalabas sa pag-login](../../../../translated_images/login-error.416fe019b36a63276764c2349df5d99e04ebda54fefe60c715ee87a28d5d4ad0.tl.png) +![Screenshot na nagpapakita ng mensahe ng error na lumalabas sa pag-login](../../../../translated_images/login-error.416fe019b36a6327.tl.png) #### Hakbang 4: Pagiging Inclusive sa Accessibility @@ -961,7 +961,7 @@ Handa ka na bang dalhin ang iyong banking app sa susunod na antas? Gawin natin i Ganito ang maaaring hitsura ng isang polished na dashboard: -![Screenshot ng isang halimbawa ng resulta ng dashboard pagkatapos ng styling](../../../../translated_images/screen2.123c82a831a1d14ab2061994be2fa5de9cec1ce651047217d326d4773a6348e4.tl.png) +![Screenshot ng isang halimbawa ng resulta ng dashboard pagkatapos ng styling](../../../../translated_images/screen2.123c82a831a1d14a.tl.png) Huwag kang mag-alala kung hindi mo ito eksaktong ma-match - gamitin ito bilang inspirasyon at gawin itong sarili mo! diff --git a/translations/tl/7-bank-project/4-state-management/README.md b/translations/tl/7-bank-project/4-state-management/README.md index bcf4608a7..fe842ab10 100644 --- a/translations/tl/7-bank-project/4-state-management/README.md +++ b/translations/tl/7-bank-project/4-state-management/README.md @@ -190,7 +190,7 @@ Ang [state management](https://en.wikipedia.org/wiki/State_management) ay tungko Sa halip na maguluhan, gagawa tayo ng **centralized state management** system. Isipin ito na parang may isang organisadong tao na namamahala sa lahat ng mahahalagang bagay: -![Schema na nagpapakita ng daloy ng data sa pagitan ng HTML, mga aksyon ng user, at estado](../../../../translated_images/data-flow.fa2354e0908fecc89b488010dedf4871418a992edffa17e73441d257add18da4.tl.png) +![Schema na nagpapakita ng daloy ng data sa pagitan ng HTML, mga aksyon ng user, at estado](../../../../translated_images/data-flow.fa2354e0908fecc8.tl.png) ```mermaid flowchart TD @@ -803,7 +803,7 @@ Ang hamon na ito ay makakatulong sa iyo na mag-isip tulad ng isang propesyonal n Narito ang isang halimbawa ng resulta pagkatapos makumpleto ang assignment: -![Screenshot na nagpapakita ng halimbawa ng "Add transaction" dialog](../../../../translated_images/dialog.93bba104afeb79f12f65ebf8f521c5d64e179c40b791c49c242cf15f7e7fab15.tl.png) +![Screenshot na nagpapakita ng halimbawa ng "Add transaction" dialog](../../../../translated_images/dialog.93bba104afeb79f1.tl.png) --- diff --git a/translations/tl/7-bank-project/4-state-management/assignment.md b/translations/tl/7-bank-project/4-state-management/assignment.md index 89f0bc851..c8eeb6d6b 100644 --- a/translations/tl/7-bank-project/4-state-management/assignment.md +++ b/translations/tl/7-bank-project/4-state-management/assignment.md @@ -112,7 +112,7 @@ Tingnan ang [server API documentation](../api/README.md) para sa: **Inaasahang Resulta:** Pagkatapos makumpleto ang assignment na ito, ang iyong banking app ay dapat magkaroon ng ganap na functional na "Magdagdag ng Transaksyon" na tampok na mukhang propesyonal at maayos ang pagganap: -![Screenshot na nagpapakita ng halimbawa ng "Magdagdag ng Transaksyon" na dialog](../../../../translated_images/dialog.93bba104afeb79f12f65ebf8f521c5d64e179c40b791c49c242cf15f7e7fab15.tl.png) +![Screenshot na nagpapakita ng halimbawa ng "Magdagdag ng Transaksyon" na dialog](../../../../translated_images/dialog.93bba104afeb79f1.tl.png) ## Pagsubok ng Iyong Pagpapatupad diff --git a/translations/tl/7-bank-project/README.md b/translations/tl/7-bank-project/README.md index ae04f72d1..b3b05ce5b 100644 --- a/translations/tl/7-bank-project/README.md +++ b/translations/tl/7-bank-project/README.md @@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA: Sa proyektong ito, matututo kang gumawa ng isang kathang-isip na bangko. Kasama sa mga araling ito ang mga tagubilin kung paano mag-layout ng isang web app at magbigay ng mga ruta, gumawa ng mga form, pamahalaan ang estado, at kumuha ng data mula sa isang API kung saan maaari mong makuha ang datos ng bangko. -| ![Screen1](../../../translated_images/screen1.baccbba0f1f93364672eb250d2fbd21574bb1caf79a2155022dc098a741cbdfe.tl.png) | ![Screen2](../../../translated_images/screen2.123c82a831a1d14ab2061994be2fa5de9cec1ce651047217d326d4773a6348e4.tl.png) | +| ![Screen1](../../../translated_images/screen1.baccbba0f1f93364.tl.png) | ![Screen2](../../../translated_images/screen2.123c82a831a1d14a.tl.png) | |--------------------------------|--------------------------------| ## Mga Aralin diff --git a/translations/tl/8-code-editor/1-using-a-code-editor/README.md b/translations/tl/8-code-editor/1-using-a-code-editor/README.md index f38d3c313..df7ad8508 100644 --- a/translations/tl/8-code-editor/1-using-a-code-editor/README.md +++ b/translations/tl/8-code-editor/1-using-a-code-editor/README.md @@ -185,7 +185,7 @@ Katulad ng kung paano nagkonekta ang telepono ni Alexander Graham Bell sa mga ma Kapag na-load na ang lahat, makikita mo ang isang malinis na workspace na dinisenyo para panatilihin kang nakatuon sa mahalaga – ang iyong code! -![Default VSCode.dev interface](../../../../translated_images/default-vscode-dev.5d06881d65c1b3234ce50cd9ed3b0028e6031ad5f5b441bcbed96bfa6311f6d0.tl.png) +![Default VSCode.dev interface](../../../../translated_images/default-vscode-dev.5d06881d65c1b323.tl.png) **Narito ang tour sa iyong bagong lugar:** - **Activity Bar** (ang strip sa kaliwa): Ang iyong pangunahing navigation na may Explorer 📁, Search 🔍, Source Control 🌿, Extensions 🧩, at Settings ⚙️ @@ -233,7 +233,7 @@ Perpekto ito kapag nagsisimula ka sa VSCode.dev at nais magbukas ng partikular n 1. Pumunta sa [vscode.dev](https://vscode.dev) kung hindi ka pa naroon 2. Hanapin ang "Open Remote Repository" button sa welcome screen at i-click ito - ![Open remote repository](../../../../translated_images/open-remote-repository.bd9c2598b8949e7fc283cdfc8f4050c6205a7c7c6d3f78c4b135115d037d6fa2.tl.png) + ![Open remote repository](../../../../translated_images/open-remote-repository.bd9c2598b8949e7f.tl.png) 3. I-paste ang anumang GitHub repository URL (subukan ito: `https://github.com/microsoft/Web-Dev-For-Beginners`) 4. Pindutin ang Enter at panoorin ang magic! @@ -242,7 +242,7 @@ Perpekto ito kapag nagsisimula ka sa VSCode.dev at nais magbukas ng partikular n Gusto mo bang maramdaman na parang coding wizard? Subukan ang keyboard shortcut na ito: Ctrl+Shift+P (o Cmd+Shift+P sa Mac) para buksan ang Command Palette: -![Command Palette](../../../../translated_images/palette-menu.4946174e07f426226afcdad707d19b8d5150e41591c751c45b5dee213affef91.tl.png) +![Command Palette](../../../../translated_images/palette-menu.4946174e07f42622.tl.png) **Ang Command Palette ay parang search engine para sa lahat ng magagawa mo:** - I-type ang "open remote" at hahanapin nito ang repository opener para sa iyo @@ -304,7 +304,7 @@ Katulad ng pag-aayos ng mga blueprint sa opisina ng isang arkitekto, ang paggawa 3. I-type ang filename kasama ang tamang extension (`style.css`, `script.js`, `index.html`) 4. Pindutin ang Enter para gawin ang file -![Creating a new file](../../../../translated_images/create-new-file.2814e609c2af9aeb6c6fd53156c503ac91c3d538f9cac63073b2dd4a7631f183.tl.png) +![Creating a new file](../../../../translated_images/create-new-file.2814e609c2af9aeb.tl.png) **Mga Naming Conventions:** - Gumamit ng mga deskriptibong pangalan na nagpapahiwatig ng layunin ng file @@ -322,7 +322,7 @@ Dito nagsisimula ang totoong kasiyahan! Ang editor ng VSCode.dev ay puno ng mga 2. Simulan ang pag-type at panoorin ang VSCode.dev na tumutulong sa iyo gamit ang kulay, mga suggestion, at pag-detect ng error 3. I-save ang iyong trabaho gamit ang Ctrl+S (Windows/Linux) o Cmd+S (Mac) – bagama't auto-save din ito! -![Editing files in VSCode.dev](../../../../translated_images/edit-a-file.52c0ee665ef19f08119d62d63f395dfefddc0a4deb9268d73bfe791f52c5807a.tl.png) +![Editing files in VSCode.dev](../../../../translated_images/edit-a-file.52c0ee665ef19f08.tl.png) **Ang mga cool na bagay na nangyayari habang nagko-code ka:** - Ang iyong code ay nagiging maganda ang kulay kaya madali itong basahin @@ -343,7 +343,7 @@ Katulad ng kung paano gumagawa ng detalyadong tala ang mga archaeologist ng exca 2. Ang mga binagong file ay lumalabas sa seksyong "Changes" 3. Ang color coding ay nagpapahiwatig ng uri ng pagbabago: berde para sa mga dagdag, pula para sa mga binura -![Viewing changes in Source Control](../../../../translated_images/working-tree.c58eec08e6335c79cc708c0c220c0b7fea61514bd3c7fb7471905a864aceac7c.tl.png) +![Viewing changes in Source Control](../../../../translated_images/working-tree.c58eec08e6335c79.tl.png) **Pag-save ng iyong trabaho (ang commit workflow):** @@ -438,7 +438,7 @@ Ang extension marketplace ay talagang maayos ang pagkakaorganisa, kaya hindi ka 2. Mag-browse o maghanap ng isang partikular na bagay 3. I-click ang anumang mukhang kawili-wili upang matuto pa tungkol dito -![Interface ng extension marketplace](../../../../translated_images/extensions.eca0e0c7f59a10b5c88be7fe24b3e32cca6b6058b35a49026c3a9d80b1813b7c.tl.png) +![Interface ng extension marketplace](../../../../translated_images/extensions.eca0e0c7f59a10b5.tl.png) **Ano ang makikita mo roon:** @@ -491,7 +491,7 @@ Karamihan sa mga extension ay may mga setting na maaari mong i-tweak upang guman 3. Piliin ang "Extension Settings" mula sa dropdown 4. Ayusin ang mga bagay hanggang sa maging tama ang pakiramdam para sa iyong workflow -![Pag-customize ng mga setting ng extension](../../../../translated_images/extension-settings.21c752ae4f4cdb78a867f140ccd0680e04619d0c44bb4afb26373e54b829d934.tl.png) +![Pag-customize ng mga setting ng extension](../../../../translated_images/extension-settings.21c752ae4f4cdb78.tl.png) **Mga karaniwang bagay na maaaring gusto mong ayusin:** - Paano nafo-format ang iyong code (tabs vs spaces, haba ng linya, atbp.) diff --git a/translations/tl/8-code-editor/1-using-a-code-editor/assignment.md b/translations/tl/8-code-editor/1-using-a-code-editor/assignment.md index cbfb3f7d6..0c7738a6f 100644 --- a/translations/tl/8-code-editor/1-using-a-code-editor/assignment.md +++ b/translations/tl/8-code-editor/1-using-a-code-editor/assignment.md @@ -78,7 +78,7 @@ Dahil ang VSCode.dev ay nangangailangan ng kahit isang file upang buksan ang rep 4. **Maglagay** ng commit message: "Magdagdag ng initial HTML structure" 5. **I-click** ang "Commit new file" upang i-save ang iyong mga pagbabago -![Paglikha ng initial file sa GitHub](../../../../translated_images/new-file-github.com.c886796d800e8056561829a181be1382c5303da9d902d8b2dd82b68a4806e21f.tl.png) +![Paglikha ng initial file sa GitHub](../../../../translated_images/new-file-github.com.c886796d800e8056.tl.png) **Narito ang nagagawa ng initial setup na ito:** - **Nag-eestablish** ng tamang HTML5 document structure gamit ang semantic elements @@ -104,7 +104,7 @@ Ngayon na ang pundasyon ng iyong repository ay na-set up, lumipat tayo sa VSCode ✅ **Indicator ng Tagumpay**: Makikita mo ang mga file ng iyong proyekto sa Explorer sidebar at ang `index.html` na available para i-edit sa pangunahing editor area. -![Proyekto na naka-load sa VSCode.dev](../../../../translated_images/project-on-vscode.dev.e79815a9a95ee7feac72ebe5c941c91279716be37c575dbdbf2f43bea2c7d8b6.tl.png) +![Proyekto na naka-load sa VSCode.dev](../../../../translated_images/project-on-vscode.dev.e79815a9a95ee7fe.tl.png) **Ano ang makikita mo sa interface:** - **Explorer sidebar**: **Ipinapakita** ang mga file ng iyong repository at istruktura ng folder @@ -448,7 +448,7 @@ Ang mga extension ay nagpapahusay sa iyong development experience sa pamamagitan **Mga agarang resulta pagkatapos ng pag-install:** Kapag na-install ang CodeSwing, makikita mo ang live preview ng iyong resume website na lumalabas sa editor. Pinapayagan ka nitong makita kung paano eksaktong magmumukha ang iyong site habang gumagawa ng mga pagbabago. -![CodeSwing extension na nagpapakita ng live preview](../../../../translated_images/after-codeswing-extension-pb.0ebddddcf73b550994947a9084e35e2836c713ae13839d49628e3c764c1cfe83.tl.png) +![CodeSwing extension na nagpapakita ng live preview](../../../../translated_images/after-codeswing-extension-pb.0ebddddcf73b5509.tl.png) **Pag-unawa sa pinahusay na interface:** - **Split view**: **Ipinapakita** ang iyong code sa isang bahagi at ang live preview sa kabila diff --git a/translations/tl/9-chat-project/README.md b/translations/tl/9-chat-project/README.md index e97fc4438..c7b24b69e 100644 --- a/translations/tl/9-chat-project/README.md +++ b/translations/tl/9-chat-project/README.md @@ -61,7 +61,7 @@ print(response.choices[0].message.content) Ganito ang magiging hitsura ng iyong natapos na proyekto: -![Chat app interface na nagpapakita ng usapan sa pagitan ng user at AI assistant](../../../translated_images/screenshot.0a1ee0d123df681b4501eb53ffb267519fcc20aa653eabecef1e7561ddfb1cab.tl.png) +![Chat app interface na nagpapakita ng usapan sa pagitan ng user at AI assistant](../../../translated_images/screenshot.0a1ee0d123df681b.tl.png) ## 🗺️ Ang Iyong Paglalakbay sa Pagbuo ng AI Application @@ -194,7 +194,7 @@ mindmap **Pangunahing Prinsipyo**: Ang pagbuo ng AI application ay pinagsasama ang tradisyunal na kasanayan sa web development at AI service integration, na lumilikha ng matatalinong aplikasyon na natural at tumutugon sa mga user. -![GitHub Models AI Playground interface na may model selection at testing area](../../../translated_images/playground.d2b927122224ff8ff4028fc842176e353c339147d8925455f36c92fb1655c477.tl.png) +![GitHub Models AI Playground interface na may model selection at testing area](../../../translated_images/playground.d2b927122224ff8f.tl.png) **Narito kung bakit kapaki-pakinabang ang playground:** - **Subukan** ang iba't ibang AI models tulad ng GPT-4o-mini, Claude, at iba pa (lahat libre!) @@ -204,7 +204,7 @@ mindmap Kapag nakapaglaro ka na nang kaunti, i-click lang ang "Code" tab at piliin ang programming language para makuha ang implementation code na kailangan mo. -![Playground choice na nagpapakita ng code generation options para sa iba't ibang programming languages](../../../translated_images/playground-choice.1d23ba7d407f47584c9f446c77f0bcf70cae794cc9c8d7849a3cca4a3693e6c4.tl.png) +![Playground choice na nagpapakita ng code generation options para sa iba't ibang programming languages](../../../translated_images/playground-choice.1d23ba7d407f4758.tl.png) ## Pag-set Up ng Python Backend Integration @@ -2364,14 +2364,14 @@ Gusto mo bang subukan ang proyektong ito sa isang cloud development environment? - **Pumunta** sa [Web Dev For Beginners repository](https://github.com/microsoft/Web-Dev-For-Beginners) - **I-click** ang "Use this template" sa kanang itaas na bahagi (siguraduhing naka-log in ka sa GitHub) -![Interface ng paggawa mula sa template na nagpapakita ng berdeng "Use this template" button](../../../translated_images/template.67ad477109d29a2b04599a83c964c87fcde041256d4f04d3589cbb00c696f76c.tl.png) +![Interface ng paggawa mula sa template na nagpapakita ng berdeng "Use this template" button](../../../translated_images/template.67ad477109d29a2b.tl.png) **Hakbang 2: I-launch ang Codespaces** - **Buksan** ang iyong bagong likhang repository - **I-click** ang berdeng "Code" button at piliin ang "Codespaces" - **Piliin** ang "Create codespace on main" upang simulan ang iyong development environment -![Interface ng paggawa ng codespace na may mga opsyon para sa paglulunsad ng cloud development environment](../../../translated_images/codespace.bcecbdf5d2747d3d17da67a78ad911c8853d68102e34748ec372cde1e9236e1d.tl.png) +![Interface ng paggawa ng codespace na may mga opsyon para sa paglulunsad ng cloud development environment](../../../translated_images/codespace.bcecbdf5d2747d3d.tl.png) **Hakbang 3: Configuration ng Environment** Kapag nag-load ang iyong Codespace, magkakaroon ka ng access sa: diff --git a/translations/tl/README.md b/translations/tl/README.md index 6ab7d4723..bb0ab64e0 100644 --- a/translations/tl/README.md +++ b/translations/tl/README.md @@ -1,259 +1,280 @@ -[![GitHub license](https://img.shields.io/github/license/microsoft/Web-Dev-For-Beginners.svg)](https://github.com/microsoft/Web-Dev-For-Beginners/blob/master/LICENSE) -[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/Web-Dev-For-Beginners.svg)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/graphs/contributors/) -[![GitHub issues](https://img.shields.io/github/issues/microsoft/Web-Dev-For-Beginners.svg)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/issues/) -[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/Web-Dev-For-Beginners.svg)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/pulls/) -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/Web-Dev-For-Beginners.svg)](https://github.com/microsoft/Web-Dev-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/Web-Dev-For-Beginners.svg)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/Web-Dev-For-Beginners.svg)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/Web-Dev-For-Beginners.svg)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/Web-Dev-For-Beginners.svg?style=social&label=Watch&maxAge=2592000)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/watchers/) -[![GitHub forks](https://img.shields.io/github/forks/microsoft/Web-Dev-For-Beginners.svg?style=social&label=Fork&maxAge=2592000)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/network/) -[![GitHub stars](https://img.shields.io/github/stars/microsoft/Web-Dev-For-Beginners.svg?style=social&label=Star&maxAge=2592000)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/Web-Dev-For-Beginners.svg?style=social&label=Watch&maxAge=2592000)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/Web-Dev-For-Beginners.svg?style=social&label=Fork&maxAge=2592000)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/Web-Dev-For-Beginners.svg?style=social&label=Star&maxAge=2592000)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/stargazers/) -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -# Web Development para sa mga Baguhan - Isang Kurikulum +# Web Development para sa mga Nagsisimula - Isang Kurikulum -Matutunan ang mga pangunahing kaalaman sa web development gamit ang aming 12-linggong komprehensibong kurso mula sa Microsoft Cloud Advocates. Ang bawat isa sa 24 na aralin ay sumasaklaw sa JavaScript, CSS, at HTML sa pamamagitan ng mga praktikal na proyekto tulad ng terrariums, browser extensions, at space games. Makilahok sa mga pagsusulit, talakayan, at mga praktikal na gawain. Paunlarin ang iyong kakayahan at pagbutihin ang iyong kaalaman gamit ang aming epektibong project-based na pamamaraan. Simulan ang iyong coding journey ngayon! +Matutunan ang mga pundasyon ng web development sa aming 12-linggong komprehensibong kurso mula sa Microsoft Cloud Advocates. Bawat isa sa 24 na aralin ay sumisid sa JavaScript, CSS, at HTML sa pamamagitan ng mga hands-on na proyekto tulad ng mga terrarium, browser extensions, at mga laro sa kalawakan. Makilahok sa mga pagsusulit, talakayan, at praktikal na mga asignatura. Paunlarin ang iyong mga kasanayan at pahusayin ang pagkatuto gamit ang aming epektibong metodolohiyang nakabatay sa proyekto. Simulan ang iyong paglalakbay sa coding ngayon! -Sumali sa Azure AI Foundry Discord Community +Sumali sa Azure AI Foundry Discord Community -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Sundin ang mga hakbang na ito upang makapagsimula gamit ang mga resources na ito: -1. **I-Fork ang Repository**: I-click ang [![GitHub forks](https://img.shields.io/github/forks/microsoft/Web-Dev-For-beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/fork) -2. **I-Clone ang Repository**: `git clone https://github.com/microsoft/Web-Dev-For-Beginners.git` -3. [**Sumali sa Azure AI Foundry Discord at makipagkita sa mga eksperto at kapwa developer**](https://discord.com/invite/ByRwuEEgH4) +Sundin ang mga hakbang na ito para makapagsimula gamit ang mga mapagkukunang ito: +1. **I-fork ang Repositoryo**: I-click ang [![GitHub forks](https://img.shields.io/github/forks/microsoft/Web-Dev-For-beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/fork) +2. **I-clone ang Repositoryo**: `git clone https://github.com/microsoft/Web-Dev-For-Beginners.git` +3. [**Sumali sa Azure AI Foundry Discord at makipagkilala sa mga eksperto at kapwa developer**](https://discord.com/invite/ByRwuEEgH4) -### 🌐 Suporta sa Iba't Ibang Wika +### 🌐 Suporta para sa Maramihang Wika -#### Sinusuportahan sa pamamagitan ng GitHub Action (Automated at Laging Napapanahon) +#### Sinusuportahan sa pamamagitan ng GitHub Action (Awtomatiko at Palaging Napapanahon) - -[Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](../my/README.md) | [Chinese (Simplified)](../zh/README.md) | [Chinese (Traditional, Hong Kong)](../hk/README.md) | [Chinese (Traditional, Macau)](../mo/README.md) | [Chinese (Traditional, Taiwan)](../tw/README.md) | [Croatian](../hr/README.md) | [Czech](../cs/README.md) | [Danish](../da/README.md) | [Dutch](../nl/README.md) | [Estonian](../et/README.md) | [Finnish](../fi/README.md) | [French](../fr/README.md) | [German](../de/README.md) | [Greek](../el/README.md) | [Hebrew](../he/README.md) | [Hindi](../hi/README.md) | [Hungarian](../hu/README.md) | [Indonesian](../id/README.md) | [Italian](../it/README.md) | [Japanese](../ja/README.md) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../br/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](./README.md) | [Tamil](../ta/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) - + +[Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](../my/README.md) | [Chinese (Simplified)](../zh/README.md) | [Chinese (Traditional, Hong Kong)](../hk/README.md) | [Chinese (Traditional, Macau)](../mo/README.md) | [Chinese (Traditional, Taiwan)](../tw/README.md) | [Croatian](../hr/README.md) | [Czech](../cs/README.md) | [Danish](../da/README.md) | [Dutch](../nl/README.md) | [Estonian](../et/README.md) | [Finnish](../fi/README.md) | [French](../fr/README.md) | [German](../de/README.md) | [Greek](../el/README.md) | [Hebrew](../he/README.md) | [Hindi](../hi/README.md) | [Hungarian](../hu/README.md) | [Indonesian](../id/README.md) | [Italian](../it/README.md) | [Japanese](../ja/README.md) | [Kannada](../kn/README.md) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/README.md) | [Malayalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigerian Pidgin](../pcm/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../br/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](./README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) -**Kung nais mong magkaroon ng karagdagang mga pagsasalin, ang mga sinusuportahang wika ay nakalista [dito](https://github.com/Azure/co-op-translator/blob/main/getting_started/supported-languages.md)** +> **Mas gusto mo bang mag-clone nang lokal?** -[![Open in Visual Studio Code](https://img.shields.io/static/v1?logo=visualstudiocode&label=&message=Open%20in%20Visual%20Studio%20Code&labelColor=2c2c32&color=007acc&logoColor=007acc)](https://open.vscode.dev/microsoft/Web-Dev-For-Beginners) +> Kasama sa repositoryo na ito ang mahigit 50 mga pagsasalin ng wika na malaki ang dagdag sa laki ng download. Para mag-clone nang walang mga pagsasalin, gamitin ang sparse checkout: +> ```bash +> git clone --filter=blob:none --sparse https://github.com/microsoft/Web-Dev-For-Beginners.git +> cd Web-Dev-For-Beginners +> git sparse-checkout set --no-cone '/*' '!translations' '!translated_images' +> ``` +> Makukuha mo ang lahat ng kailangan mo para tapusin ang kurso nang mas mabilis mag-download. + -#### 🧑‍🎓 _Estudyante ka ba?_ +**Kung nais mong magkaroon pa ng ibang suporta sa mga wika ng pagsasalin, nakalista ito [dito](https://github.com/Azure/co-op-translator/blob/main/getting_started/supported-languages.md)** -Bisitahin ang [**Student Hub page**](https://docs.microsoft.com/learn/student-hub/?WT.mc_id=academic-77807-sagibbon) kung saan makakahanap ka ng mga resources para sa mga baguhan, Student packs, at maging mga paraan upang makakuha ng libreng certificate voucher. Ito ang pahinang dapat mong i-bookmark at balikan paminsan-minsan dahil nagbabago ang nilalaman buwan-buwan. +[![Open in Visual Studio Code](https://img.shields.io/static/v1?logo=visualstudiocode&label=&message=Open%20in%20Visual%20Studio%20Code&labelColor=2c2c32&color=007acc&logoColor=007acc)](https://open.vscode.dev/microsoft/Web-Dev-For-Beginners) -### 📣 Anunsyo - Mga Bagong Hamon gamit ang GitHub Copilot Agent mode! +#### 🧑‍🎓 _Estudyante ka ba?_ -May bagong hamon na idinagdag, hanapin ang "GitHub Copilot Agent Challenge 🚀" sa karamihan ng mga kabanata. Ito ay bagong hamon na maaari mong tapusin gamit ang GitHub Copilot at Agent mode. Kung hindi mo pa nagagamit ang Agent mode, kaya nitong hindi lang mag-generate ng text kundi pati gumawa at mag-edit ng mga file, magpatakbo ng mga command, at marami pa. +Bisitahin ang [**Student Hub page**](https://docs.microsoft.com/learn/student-hub/?WT.mc_id=academic-77807-sagibbon) kung saan makakakita ka ng mga mapagkukunang pambaguhan, Student packs at pati mga paraan para makakuha ng libreng voucher ng sertipiko. Ito ang pahina na gusto mong i-bookmark at paminsan-minsan tingnan dahil buwan-buwan ay pinalitan natin ang nilalaman. -### 📣 Anunsyo - _Bagong Proyekto gamit ang Generative AI_ +### 📣 Anunsyo - Mga bagong hamon sa GitHub Copilot Agent mode na dapat tapusin! -Bagong AI Assistant project ang idinagdag, tingnan ito [project](./09-chat-project/README.md) +May bagong hamon na idinagdag, hanapin ang "GitHub Copilot Agent Challenge 🚀" sa karamihan ng mga kabanata. Isa itong bagong hamon para sa iyo na tapusin gamit ang GitHub Copilot at Agent mode. Kung hindi mo pa nagamit ang Agent mode dati, kaya nitong hindi lang gumawa ng teksto kundi pati lumikha at mag-edit ng mga file, magpatakbo ng mga utos at marami pa. -### 📣 Anunsyo - _Bagong Kurikulum_ sa Generative AI para sa JavaScript +### 📣 Anunsyo - _Bagong Proyekto gamit ang Generative AI_ -Huwag palampasin ang aming bagong Generative AI curriculum! +Bagong AI Assistant na proyekto lang ang idinagdag, tingnan ang [proyekto](./9-chat-project/README.md) -Bisitahin ang [https://aka.ms/genai-js-course](https://aka.ms/genai-js-course) upang makapagsimula! +### 📣 Anunsyo - _Bagong Kurikulum_ tungkol sa Generative AI para sa JavaScript ay inilabas na -![Background](../../translated_images/background.148a8d43afde57303419a663f50daf586681bc2fabf833f66ef6954073983c66.tl.png) +Huwag palampasin ang aming bagong Generative AI kurikulum! -- Mga aralin mula sa mga pangunahing kaalaman hanggang sa RAG. -- Makipag-ugnayan sa mga makasaysayang karakter gamit ang GenAI at ang aming companion app. -- Masaya at nakaka-engganyong kwento, magta-time travel ka! +Bisitahin ang [https://aka.ms/genai-js-course](https://aka.ms/genai-js-course) para makapagsimula! -![character](../../translated_images/character.5c0dd8e067ffd693c16e2c5b7412ab075a2215ce31f998305639fa3a05e14fbe.tl.png) +![Background](../../translated_images/background.148a8d43afde5730.tl.png) -Ang bawat aralin ay may kasamang gawain na dapat tapusin, pagsusuri ng kaalaman, at hamon upang gabayan ka sa pag-aaral ng mga paksa tulad ng: -- Prompting at prompt engineering -- Text at image app generation -- Search apps +- Mga aralin mula sa mga batayan hanggang sa RAG. +- Makipag-ugnayan sa mga makasaysayang karakter gamit ang GenAI at aming companion app. +- Masaya at nakakaaliw na kuwento, tulad ng paglalakbay sa panahon! -Bisitahin ang [https://aka.ms/genai-js-course](../../[https:/aka.ms/genai-js-course) upang makapagsimula! +![character](../../translated_images/character.5c0dd8e067ffd693.tl.png) -## 🌱 Pagsisimula -> **Mga Guro**, nagdagdag kami ng [ilang mungkahi](for-teachers.md) kung paano gamitin ang kurikulum na ito. Gusto naming marinig ang inyong feedback [sa aming discussion forum](https://github.com/microsoft/Web-Dev-For-Beginners/discussions/categories/teacher-corner)! +Bawat aralin ay may nakalakip na asignatura, pagsusuri ng kaalaman, at hamon upang gabayan ka sa pag-aaral ng mga paksang tulad ng: +- Pag-prompt at prompt engineering +- Pagbuo ng text at image app +- Mga search app -**[Mga Mag-aaral](https://aka.ms/student-page/?WT.mc_id=academic-77807-sagibbon)**, para sa bawat aralin, magsimula sa pre-lecture quiz at sundan ito sa pagbabasa ng lecture material, pagtapos ng iba't ibang aktibidad, at suriin ang inyong kaalaman gamit ang post-lecture quiz. +Bisitahin ang [https://aka.ms/genai-js-course](../../[https:/aka.ms/genai-js-course) para makapagsimula! -Upang mapahusay ang inyong karanasan sa pag-aaral, makipag-ugnayan sa inyong mga kapwa mag-aaral upang magtulungan sa mga proyekto! Ang mga talakayan ay hinihikayat sa aming [discussion forum](https://github.com/microsoft/Web-Dev-For-Beginners/discussions) kung saan ang aming team ng mga moderator ay handang sagutin ang inyong mga tanong. -Upang higit pang mapalawak ang inyong kaalaman, lubos naming inirerekomenda ang pag-explore sa [Microsoft Learn](https://learn.microsoft.com/users/wirelesslife/collections/p1ddcy5jwy0jkm?WT.mc_id=academic-77807-sagibbon) para sa karagdagang mga materyales sa pag-aaral. -### 📋 Pagsasaayos ng iyong kapaligiran +## 🌱 Pagsisimula -Ang kurikulum na ito ay may handang development environment! Sa pagsisimula, maaari kang pumili na patakbuhin ang kurikulum sa isang [Codespace](https://github.com/features/codespaces/) (_isang browser-based, walang kailangang i-install na environment_), o lokal sa iyong computer gamit ang isang text editor tulad ng [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon). +> **Mga Guro**, may [nagdagdag kaming ilang suhestiyon](for-teachers.md) kung paano gamitin ang kurikulum na ito. Nais naming marinig ang inyong puna [sa aming discussion forum](https://github.com/microsoft/Web-Dev-For-Beginners/discussions/categories/teacher-corner)! -#### Gumawa ng iyong repository -Upang madali mong mai-save ang iyong trabaho, inirerekomenda na gumawa ka ng sariling kopya ng repository na ito. Magagawa mo ito sa pamamagitan ng pag-click sa **Use this template** na button sa itaas ng pahina. Ito ay lilikha ng bagong repository sa iyong GitHub account na may kopya ng kurikulum. +**[Mga Nag-aaral](https://aka.ms/student-page/?WT.mc_id=academic-77807-sagibbon)**, para sa bawat aralin, magsimula sa pre-lecture quiz at sundan ito sa pagbabasa ng materyal ng lektura, pagtapos ng mga gawain, at pagsusuri ng iyong pag-unawa gamit ang post-lecture quiz. -Sundin ang mga hakbang na ito: -1. **I-Fork ang Repository**: I-click ang "Fork" button sa kanang itaas na bahagi ng pahinang ito. -2. **I-Clone ang Repository**: `git clone https://github.com/microsoft/Web-Dev-For-Beginners.git` +Para mapabuti ang iyong karanasan sa pag-aaral, makipag-ugnayan sa iyong mga kaklase upang magtulungan sa mga proyekto! Inirerekomenda ang mga talakayan sa aming [discussion forum](https://github.com/microsoft/Web-Dev-For-Beginners/discussions) kung saan naroon ang aming mga moderator na handang sagutin ang iyong mga tanong. -#### Pagpapatakbo ng kurikulum sa isang Codespace +Para lalo pang paunlarin ang iyong edukasyon, mariing inirerekumenda namin ang pag-explore sa [Microsoft Learn](https://learn.microsoft.com/users/wirelesslife/collections/p1ddcy5jwy0jkm?WT.mc_id=academic-77807-sagibbon) para sa karagdagang mga materyales sa pag-aaral. -Sa iyong kopya ng repository na iyong ginawa, i-click ang **Code** button at piliin ang **Open with Codespaces**. Ito ay lilikha ng bagong Codespace para sa iyo upang magtrabaho. +### 📋 Pagsasaayos ng iyong kapaligiran -![Codespace](../../translated_images/createcodespace.0238bbf4d7a8d955fa8fa7f7b6602a3cb6499a24708fbee589f83211c5a613b7.tl.png) +Mayroon nang handang development environment ang kurikulum na ito! Sa pagsisimula mo maaari mong piliin na patakbuhin ang kurikulum sa isang [Codespace](https://github.com/features/codespaces/) (_isang browser-based, hindi kailangan mag-install na kapaligiran_), o lokal sa iyong kompyuter gamit ang isang text editor tulad ng [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon). -#### Pagpapatakbo ng kurikulum nang lokal sa iyong computer +#### Gumawa ng iyong repositoryo +Para madaling masave ang iyong mga gawa, inirerekomenda na gumawa ka ng sariling kopya ng repositoryo na ito. Magagawa mo ito sa pamamagitan ng pag-click sa **Use this template** na button sa itaas ng pahina. Lilikha ito ng bagong repositoryo sa iyong GitHub account na may kopya ng kurikulum. -Upang patakbuhin ang kurikulum na ito nang lokal sa iyong computer, kakailanganin mo ng text editor, browser, at command line tool. Ang aming unang aralin, [Introduction to Programming Languages and Tools of the Trade](../../1-getting-started-lessons/1-intro-to-programming-languages), ay magpapaliwanag ng iba't ibang opsyon para sa bawat isa sa mga tool na ito upang makapili ka ng pinakaangkop para sa iyo. +Sundin ang mga hakbang na ito: +1. **I-fork ang Repositoryo**: I-click ang "Fork" button sa kanang itaas na bahagi ng pahinang ito. +2. **I-clone ang Repositoryo**: `git clone https://github.com/microsoft/Web-Dev-For-Beginners.git` -Ang aming rekomendasyon ay gamitin ang [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon) bilang iyong editor, na mayroon ding built-in na [Terminal](https://code.visualstudio.com/docs/terminal/basics/?WT.mc_id=academic-77807-sagibbon). Maaari mong i-download ang Visual Studio Code [dito](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon). +#### Pagpapatakbo ng kurikulum sa Codespace -1. I-clone ang iyong repository sa iyong computer. Magagawa mo ito sa pamamagitan ng pag-click sa **Code** button at pagkopya ng URL: +Sa iyong kopya ng repositoryo na ginawa mo, i-click ang **Code** button at piliin ang **Open with Codespaces**. Lilikha ito ng bagong Codespace para magtrabaho ka. - [CodeSpace](./images/createcodespace.png) +![Codespace](../../translated_images/createcodespace.0238bbf4d7a8d955.tl.png) - Pagkatapos, buksan ang [Terminal](https://code.visualstudio.com/docs/terminal/basics/?WT.mc_id=academic-77807-sagibbon) sa loob ng [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon) at patakbuhin ang sumusunod na command, palitan ang `` ng URL na iyong kinopya: +#### Pagpapatakbo ng kurikulum lokal sa iyong kompyuter + +Para patakbuhin ang kurikulum na ito lokal sa iyong kompyuter, kailangan mo ng text editor, browser, at command line tool. Ang unang aralin namin, [Introduction to Programming Languages and Tools of the Trade](../../1-getting-started-lessons/1-intro-to-programming-languages), ay gagabay sa iyo sa iba't ibang mga opsyon para sa mga ito upang pumili ka ng angkop sa iyo. + +Inirerekomenda naming gamitin ang [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon) bilang editor mo, na may built-in na [Terminal](https://code.visualstudio.com/docs/terminal/basics/?WT.mc_id=academic-77807-sagibbon). Maaari mong i-download ang Visual Studio Code [dito](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon). + + +1. I-clone ang iyong repositoryo sa iyong kompyuter. Magagawa mo ito sa pamamagitan ng pag-click sa **Code** button at pagkopya ng URL: + + [CodeSpace](./images/createcodespace.png) + Pagkatapos, buksan ang [Terminal](https://code.visualstudio.com/docs/terminal/basics/?WT.mc_id=academic-77807-sagibbon) sa loob ng [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon) at patakbuhin ang sumusunod na utos, palitan ang `` ng URL na kakopya mo lang: ```bash git clone ``` - -2. Buksan ang folder sa Visual Studio Code. Magagawa mo ito sa pamamagitan ng pag-click sa **File** > **Open Folder** at piliin ang folder na iyong na-clone. -> Inirerekomendang mga extension para sa Visual Studio Code: -> -> * [Live Server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer&WT.mc_id=academic-77807-sagibbon) - upang ma-preview ang mga HTML page sa loob ng Visual Studio Code -> * [Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot&WT.mc_id=academic-77807-sagibbon) - para tulungan kang magsulat ng code nang mas mabilis +2. Buksan ang folder sa Visual Studio Code. Magagawa mo ito sa pamamagitan ng pag-click sa **File** > **Open Folder** at piliin ang folder na kaklone mo lang. + -## 📂 Bawat aralin ay naglalaman ng: +> Inirerekomendang Visual Studio Code extensions: +> +> * [Live Server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer&WT.mc_id=academic-77807-sagibbon) - para makita ang preview ng mga pahina ng HTML sa loob ng Visual Studio Code +> * [Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot&WT.mc_id=academic-77807-sagibbon) - upang makatulong sa mas mabilis na pagsusulat ng code + +## 📂 Kasama sa bawat aralin: - opsyonal na sketchnote - opsyonal na karagdagang video -- paunang pagsusulit bago ang aralin +- pre-lesson warmup quiz - nakasulat na aralin -- para sa mga araling nakabatay sa proyekto, mga gabay na hakbang-hakbang kung paano buuin ang proyekto -- pagsusuri ng kaalaman +- para sa mga aralin na nakabase sa proyekto, mga gabay hakbang-hakbang sa kung paano buuin ang proyekto +- pagsubok sa kaalaman - isang hamon -- karagdagang babasahin +- karagdagang pagbasa - takdang-aralin -- [pagsusulit pagkatapos ng aralin](https://ff-quizzes.netlify.app/web/) +- [post-lesson quiz](https://ff-quizzes.netlify.app/web/) -> **Tungkol sa mga pagsusulit**: Ang lahat ng pagsusulit ay nasa folder ng Quiz-app, kabuuang 48 pagsusulit na may tig-tatlong tanong bawat isa. Makukuha ang mga ito [dito](https://ff-quizzes.netlify.app/web/) at maaaring patakbuhin ang quiz app nang lokal o i-deploy sa Azure; sundin ang mga tagubilin sa folder na `quiz-app`. +> **Isang tala tungkol sa mga pagsusulit**: Lahat ng pagsusulit ay nasa Quiz-app folder, may 48 na kabuuang pagsusulit na may tig-3 tanong bawat isa. Makukuha ang mga ito [dito](https://ff-quizzes.netlify.app/web/) ang quiz app ay maaaring patakbuhin locally o i-deploy sa Azure; sundin ang mga tagubilin sa `quiz-app` folder. ## 🗃️ Mga Aralin -| | Pangalan ng Proyekto | Mga Konseptong Itinuturo | Mga Layunin sa Pagkatuto | Nakakabit na Aralin | May-akda | +| | Pangalan ng Proyekto | Mga Konseptong Itinuturo | Mga Layunin sa Pagkatuto | Nakaugnay na Aralin | May-akda | | :-: | :------------------------------------------------------: | :--------------------------------------------------------------------: | ----------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------: | :---------------------: | -| 01 | Pagsisimula | Panimula sa Programming at Mga Kasangkapan sa Trabaho | Matutunan ang mga pangunahing pundasyon sa likod ng karamihan sa mga programming language at tungkol sa software na tumutulong sa mga propesyonal na developer sa kanilang trabaho | [Panimula sa Programming Languages at Mga Kasangkapan sa Trabaho](./1-getting-started-lessons/1-intro-to-programming-languages/README.md) | Jasmine | -| 02 | Pagsisimula | Mga Pangunahing Kaalaman sa GitHub, kabilang ang pakikipagtulungan sa isang koponan | Paano gamitin ang GitHub sa iyong proyekto, paano makipagtulungan sa iba sa isang code base | [Panimula sa GitHub](./1-getting-started-lessons/2-github-basics/README.md) | Floor | -| 03 | Pagsisimula | Accessibility | Matutunan ang mga pangunahing kaalaman sa web accessibility | [Mga Pangunahing Kaalaman sa Accessibility](./1-getting-started-lessons/3-accessibility/README.md) | Christopher | -| 04 | Mga Pangunahing Kaalaman sa JS | Mga Uri ng Data sa JavaScript | Ang mga pangunahing kaalaman sa mga uri ng data sa JavaScript | [Mga Uri ng Data](./2-js-basics/1-data-types/README.md) | Jasmine | -| 05 | Mga Pangunahing Kaalaman sa JS | Mga Function at Method | Matutunan ang tungkol sa mga function at method upang pamahalaan ang daloy ng lohika ng isang application | [Mga Function at Method](./2-js-basics/2-functions-methods/README.md) | Jasmine at Christopher | -| 06 | Mga Pangunahing Kaalaman sa JS | Paggawa ng Desisyon gamit ang JS | Matutunan kung paano gumawa ng mga kondisyon sa iyong code gamit ang mga pamamaraan sa paggawa ng desisyon | [Paggawa ng Desisyon](./2-js-basics/3-making-decisions/README.md) | Jasmine | -| 07 | Mga Pangunahing Kaalaman sa JS | Mga Array at Loop | Magtrabaho gamit ang data gamit ang mga array at loop sa JavaScript | [Mga Array at Loop](./2-js-basics/4-arrays-loops/README.md) | Jasmine | -| 08 | [Terrarium](./3-terrarium/solution/README.md) | HTML sa Praktika | Bumuo ng HTML upang lumikha ng isang online na terrarium, na nakatuon sa paggawa ng layout | [Panimula sa HTML](./3-terrarium/1-intro-to-html/README.md) | Jen | -| 09 | [Terrarium](./3-terrarium/solution/README.md) | CSS sa Praktika | Bumuo ng CSS upang i-style ang online na terrarium, na nakatuon sa mga pangunahing kaalaman sa CSS kabilang ang paggawa ng page na responsive | [Panimula sa CSS](./3-terrarium/2-intro-to-css/README.md) | Jen | -| 10 | [Terrarium](./3-terrarium/solution/README.md) | Mga JavaScript Closures, DOM Manipulation | Bumuo ng JavaScript upang gawing drag/drop interface ang terrarium, na nakatuon sa closures at DOM manipulation | [Mga JavaScript Closures, DOM Manipulation](./3-terrarium/3-intro-to-DOM-and-closures/README.md) | Jen | -| 11 | [Typing Game](./4-typing-game/solution/README.md) | Bumuo ng Typing Game | Matutunan kung paano gamitin ang mga keyboard event upang magmaneho ng lohika ng iyong JavaScript app | [Event-Driven Programming](./4-typing-game/typing-game/README.md) | Christopher | -| 12 | [Green Browser Extension](./5-browser-extension/solution/README.md) | Paggawa gamit ang Mga Browser | Matutunan kung paano gumagana ang mga browser, ang kanilang kasaysayan, at kung paano i-scaffold ang mga unang elemento ng isang browser extension | [Tungkol sa Mga Browser](./5-browser-extension/1-about-browsers/README.md) | Jen | -| 13 | [Green Browser Extension](./5-browser-extension/solution/README.md) | Paggawa ng form, pagtawag sa API at pag-iimbak ng mga variable sa local storage | Bumuo ng mga elemento ng JavaScript ng iyong browser extension upang tumawag sa API gamit ang mga variable na nakaimbak sa local storage | [Mga API, Form, at Local Storage](./5-browser-extension/2-forms-browsers-local-storage/README.md) | Jen | -| 14 | [Green Browser Extension](./5-browser-extension/solution/README.md) | Mga proseso sa background sa browser, web performance | Gamitin ang mga proseso sa background ng browser upang pamahalaan ang icon ng extension; matutunan ang tungkol sa web performance at ilang mga optimization upang mapabuti | [Mga Background Task at Performance](./5-browser-extension/3-background-tasks-and-performance/README.md) | Jen | -| 15 | [Space Game](./6-space-game/solution/README.md) | Mas Advanced na Game Development gamit ang JavaScript | Matutunan ang tungkol sa Inheritance gamit ang parehong Classes at Composition at ang Pub/Sub pattern, bilang paghahanda sa paggawa ng laro | [Panimula sa Advanced Game Development](./6-space-game/1-introduction/README.md) | Chris | -| 16 | [Space Game](./6-space-game/solution/README.md) | Pag-drawing sa canvas | Matutunan ang tungkol sa Canvas API, na ginagamit upang mag-drawing ng mga elemento sa screen | [Pag-drawing sa Canvas](./6-space-game/2-drawing-to-canvas/README.md) | Chris | -| 17 | [Space Game](./6-space-game/solution/README.md) | Paggalaw ng mga elemento sa screen | Tuklasin kung paano makakakuha ng galaw ang mga elemento gamit ang cartesian coordinates at ang Canvas API | [Paggalaw ng mga Elemento](./6-space-game/3-moving-elements-around/README.md) | Chris | -| 18 | [Space Game](./6-space-game/solution/README.md) | Pagtukoy ng banggaan | Gawing magbanggaan at mag-react ang mga elemento sa isa't isa gamit ang keypresses at magbigay ng cooldown function upang matiyak ang performance ng laro | [Pagtukoy ng Banggaan](./6-space-game/4-collision-detection/README.md) | Chris | -| 19 | [Space Game](./6-space-game/solution/README.md) | Pagpapanatili ng score | Gumawa ng mga kalkulasyon sa matematika batay sa status at performance ng laro | [Pagpapanatili ng Score](./6-space-game/5-keeping-score/README.md) | Chris | -| 20 | [Space Game](./6-space-game/solution/README.md) | Pagtatapos at pag-restart ng laro | Matutunan ang tungkol sa pagtatapos at pag-restart ng laro, kabilang ang paglilinis ng mga asset at pag-reset ng mga halaga ng variable | [Kondisyon ng Pagtatapos](./6-space-game/6-end-condition/README.md) | Chris | -| 21 | [Banking App](./7-bank-project/solution/README.md) | Mga HTML Template at Route sa Web App | Matutunan kung paano gumawa ng scaffold ng arkitektura ng isang multipage website gamit ang routing at HTML template | [Mga HTML Template at Route](./7-bank-project/1-template-route/README.md) | Yohan | -| 22 | [Banking App](./7-bank-project/solution/README.md) | Bumuo ng Login at Registration Form | Matutunan ang tungkol sa paggawa ng mga form at paghawak ng mga validation routine | [Mga Form](./7-bank-project/2-forms/README.md) | Yohan | -| 23 | [Banking App](./7-bank-project/solution/README.md) | Mga Paraan ng Pagkuha at Paggamit ng Data | Paano dumadaloy ang data papasok at palabas ng iyong app, paano ito kunin, iimbak, at itapon | [Data](./7-bank-project/3-data/README.md) | Yohan | -| 24 | [Banking App](./7-bank-project/solution/README.md) | Mga Konsepto ng State Management | Matutunan kung paano pinapanatili ng iyong app ang estado at kung paano ito pamahalaan sa programmatically | [State Management](./7-bank-project/4-state-management/README.md) | Yohan | -| 25 | [Browser/VScode Code](../../8-code-editor) | Paggawa gamit ang VScode | Matutunan kung paano gamitin ang code editor| [Gamitin ang VScode Code Editor](./8-code-editor/1-using-a-code-editor/README.md) | Chris | -| 26 | [AI Assistants](./9-chat-project/README.md) | Paggawa gamit ang AI | Matutunan kung paano bumuo ng sarili mong AI assistant | [AI Assistant project](./9-chat-project/README.md) | Chris | +| 01 | Getting Started | Introduksyon sa Programming at Mga Kagamitan sa Trabaho | Matutunan ang mga pundamental na kaalaman sa likod ng karamihan sa mga programming language at tungkol sa software na tumutulong sa mga propesyonal na developer | [Intro to Programming Languages and Tools of the Trade](./1-getting-started-lessons/1-intro-to-programming-languages/README.md) | Jasmine | +| 02 | Getting Started | Mga Batayan ng GitHub, kasama ang pagtatrabaho sa koponan | Paano gamitin ang GitHub sa iyong proyekto, paano makipagtulungan sa iba sa isang code base | [Intro to GitHub](./1-getting-started-lessons/2-github-basics/README.md) | Floor | +| 03 | Getting Started | Accessibility | Matutunan ang mga batayan ng web accessibility | [Accessibility Fundamentals](./1-getting-started-lessons/3-accessibility/README.md) | Christopher | +| 04 | JS Basics | Mga Uri ng Data sa JavaScript | Mga batayan ng mga uri ng data sa JavaScript | [Data Types](./2-js-basics/1-data-types/README.md) | Jasmine | +| 05 | JS Basics | Mga Function at Method | Matuto tungkol sa mga function at method para pamahalaan ang daloy ng lohika ng aplikasyon | [Functions and Methods](./2-js-basics/2-functions-methods/README.md) | Jasmine at Christopher | +| 06 | JS Basics | Paggawa ng mga Desisyon gamit ang JS | Matutunan kung paano gumawa ng mga kondisyon sa iyong code gamit ang mga pamamaraan sa paggawa ng desisyon | [Making Decisions](./2-js-basics/3-making-decisions/README.md) | Jasmine | +| 07 | JS Basics | Arrays at Loops | Gumamit ng data gamit ang arrays at loops sa JavaScript | [Arrays and Loops](./2-js-basics/4-arrays-loops/README.md) | Jasmine | +| 08 | [Terrarium](./3-terrarium/solution/README.md) | HTML sa Praktis | Buoin ang HTML upang makagawa ng online terrarium, na nakatuon sa paggawa ng layout | [Introduction to HTML](./3-terrarium/1-intro-to-html/README.md) | Jen | +| 09 | [Terrarium](./3-terrarium/solution/README.md) | CSS sa Praktis | Buoin ang CSS upang istayl ang online terrarium, na nakatuon sa mga batayan ng CSS kabilang ang paggawa ng pahina na responsive | [Introduction to CSS](./3-terrarium/2-intro-to-css/README.md) | Jen | +| 10 | [Terrarium](./3-terrarium/solution/README.md) | JavaScript Closures, DOM manipulation | Buoin ang JavaScript upang gumana ang terrarium bilang drag/drop interface, na nakatuon sa closures at DOM manipulation | [JavaScript Closures, DOM manipulation](./3-terrarium/3-intro-to-DOM-and-closures/README.md) | Jen | +| 11 | [Typing Game](./4-typing-game/solution/README.md) | Gumawa ng Typing Game | Matutunan kung paano gamitin ang mga keyboard event upang patakbuhin ang lohika ng iyong JavaScript app | [Event-Driven Programming](./4-typing-game/typing-game/README.md) | Christopher | +| 12 | [Green Browser Extension](./5-browser-extension/solution/README.md) | Paggamit ng Browsers | Matutunan kung paano gumagana ang mga browser, ang kanilang kasaysayan, at paano gumawa ng unang mga elemento ng isang browser extension | [About Browsers](./5-browser-extension/1-about-browsers/README.md) | Jen | +| 13 | [Green Browser Extension](./5-browser-extension/solution/README.md) | Pagbuo ng form, pagtawag ng API at pagtatago ng variables sa local storage | Buoin ang mga JavaScript na elemento ng iyong browser extension para tumawag ng API gamit ang mga variable na nakaimbak sa local storage | [APIs, Forms, and Local Storage](./5-browser-extension/2-forms-browsers-local-storage/README.md) | Jen | +| 14 | [Green Browser Extension](./5-browser-extension/solution/README.md) | Mga proseso sa background ng browser, web performance | Gamitin ang mga proseso sa background ng browser para pamahalaan ang icon ng extension; alamin ang tungkol sa web performance at ilang mga optimisasyon para mapahusay ito | [Background Tasks and Performance](./5-browser-extension/3-background-tasks-and-performance/README.md) | Jen | +| 15 | [Space Game](./6-space-game/solution/README.md) | Mas Advanced na Pag-develop ng Laro gamit ang JavaScript | Matutunan ang tungkol sa Inheritance gamit ang parehong Classes at Composition at ang Pub/Sub pattern, bilang paghahanda sa paggawa ng laro | [Introduction to Advanced Game Development](./6-space-game/1-introduction/README.md) | Chris | +| 16 | [Space Game](./6-space-game/solution/README.md) | Pagguuhit sa canvas | Matutunan ang Canvas API, na ginagamit para mag-draw ng mga elemento sa screen | [Drawing to Canvas](./6-space-game/2-drawing-to-canvas/README.md) | Chris | +| 17 | [Space Game](./6-space-game/solution/README.md) | Paggalaw ng mga elemento sa paligid ng screen | Tuklasin kung paano magkakaroon ng galaw ang mga elemento gamit ang cartesian coordinates at ang Canvas API | [Moving Elements Around](./6-space-game/3-moving-elements-around/README.md) | Chris | +| 18 | [Space Game](./6-space-game/solution/README.md) | Pagtuklas ng banggaan | Pahintulutan ang mga elemento na magbanggaan at mag-react sa isa't isa gamit ang mga keypress at magbigay ng cooldown function upang mapanatili ang performance ng laro | [Collision Detection](./6-space-game/4-collision-detection/README.md) | Chris | +| 19 | [Space Game](./6-space-game/solution/README.md) | Pagpapanatili ng iskor | Gumawa ng mga kalkulasyon base sa status at performance ng laro | [Keeping Score](./6-space-game/5-keeping-score/README.md) | Chris | +| 20 | [Space Game](./6-space-game/solution/README.md) | Pagtatapos at pagsisimula muli ng laro | Matutunan ang tungkol sa pagtatapos at pagsisimula muli ng laro, kabilang ang paglilinis ng mga asset at pag-reset ng mga halaga ng variable | [The Ending Condition](./6-space-game/6-end-condition/README.md) | Chris | +| 21 | [Banking App](./7-bank-project/solution/README.md) | Mga HTML Template at Ruta sa Web App | Matutunan kung paano gumawa ng balangkas ng arkitektura ng multipage website gamit ang routing at mga HTML template | [HTML Templates and Routes](./7-bank-project/1-template-route/README.md) | Yohan | +| 22 | [Banking App](./7-bank-project/solution/README.md) | Gumawa ng Form para sa Pag-login at Pagrehistro | Matuto tungkol sa paggawa ng mga form at paghawak ng mga routine sa validation | [Forms](./7-bank-project/2-forms/README.md) | Yohan | +| 23 | [Banking App](./7-bank-project/solution/README.md) | Mga Paraan ng Pagkuha at Paggamit ng Data | Paano dumadaloy ang data papasok at palabas ng iyong app, paano ito kunin, itago, at itapon | [Data](./7-bank-project/3-data/README.md) | Yohan | +| 24 | [Banking App](./7-bank-project/solution/README.md) | Mga Konsepto ng State Management | Matuto kung paano nakahawak ang iyong app ng estado at paano ito pamahalaan nang programatiko | [State Management](./7-bank-project/4-state-management/README.md) | Yohan | +| 25 | [Browser/VScode Code](../../8-code-editor) | Paggamit ng VScode | Matutunan kung paano gumamit ng code editor | [Use VScode Code Editor](./8-code-editor/1-using-a-code-editor/README.md) | Chris | +| 26 | [AI Assistants](./9-chat-project/README.md) | Paggamit ng AI | Matutunan kung paano gumawa ng sarili mong AI assistant | [AI Assistant project](./9-chat-project/README.md) | Chris | ## 🏫 Pedagohiya -Ang aming kurikulum ay dinisenyo gamit ang dalawang pangunahing prinsipyo ng pedagohiya: -* pagkatuto na nakabatay sa proyekto +Ang aming kurikulum ay idinisenyo gamit ang dalawang pangunahing prinsipyo sa pedagogiya: +* pagkatuto batay sa proyekto * madalas na pagsusulit -Ang programa ay nagtuturo ng mga pundasyon ng JavaScript, HTML, at CSS, pati na rin ang mga pinakabagong kasangkapan at teknik na ginagamit ng mga web developer ngayon. Magkakaroon ang mga mag-aaral ng pagkakataon na magkaroon ng hands-on na karanasan sa pamamagitan ng paggawa ng typing game, virtual terrarium, eco-friendly browser extension, space-invader-style na laro, at banking app para sa mga negosyo. Sa pagtatapos ng serye, magkakaroon ang mga mag-aaral ng matibay na pag-unawa sa web development. +Itinuturo ng programa ang mga pundasyon ng JavaScript, HTML, at CSS, pati na rin ang mga pinakabagong mga kagamitan at teknik na ginagamit ng mga web developer sa kasalukuyan. Magkakaroon ang mga estudyante ng pagkakataon na magkaroon ng praktikal na karanasan sa paggawa ng isang typing game, virtual terrarium, eco-friendly browser extension, space-invader-style game, at isang banking app para sa mga negosyo. Sa pagtatapos ng serye, magkakaroon ang mga estudyante ng matibay na pag-unawa sa web development. -> 🎓 Maaari mong kunin ang unang ilang aralin sa kurikulum na ito bilang isang [Learn Path](https://docs.microsoft.com/learn/paths/web-development-101/?WT.mc_id=academic-77807-sagibbon) sa Microsoft Learn! +> 🎓 Maaari mong kunin ang mga unang aralin sa kurikulum na ito bilang isang [Learn Path](https://docs.microsoft.com/learn/paths/web-development-101/?WT.mc_id=academic-77807-sagibbon) sa Microsoft Learn! -Sa pamamagitan ng pagtiyak na ang nilalaman ay naaayon sa mga proyekto, ang proseso ay nagiging mas nakakaengganyo para sa mga mag-aaral at ang pagkatuto ng mga konsepto ay mas mapapalakas. Nagsulat din kami ng ilang mga panimulang aralin sa mga pangunahing kaalaman sa JavaScript upang ipakilala ang mga konsepto, na ipinares sa isang video mula sa "[Beginners Series to: JavaScript](https://channel9.msdn.com/Series/Beginners-Series-to-JavaScript/?WT.mc_id=academic-77807-sagibbon)" na koleksyon ng mga video tutorial, ang ilan sa mga may-akda nito ay nag-ambag sa kurikulum na ito. +Sa pamamagitan ng pagtitiyak na ang nilalaman ay nakaayon sa mga proyekto, nagiging mas kaakit-akit ang proseso para sa mga estudyante at mas mapapalalim ang pag-alala ng mga konsepto. Sumulat din kami ng ilang panimulang aralin sa mga batayan ng JavaScript upang ipakilala ang mga konsepto, na pinagsama sa isang video mula sa koleksyon ng mga video tutorial na "[Beginners Series to: JavaScript](https://channel9.msdn.com/Series/Beginners-Series-to-JavaScript/?WT.mc_id=academic-77807-sagibbon)", na ang ilan sa mga may-akda ay nag-ambag sa kurikulum na ito. -Bukod dito, ang isang mababang-panganib na pagsusulit bago ang klase ay nagtatakda ng intensyon ng mag-aaral patungo sa pag-aaral ng isang paksa, habang ang pangalawang pagsusulit pagkatapos ng klase ay mas nagpapalakas ng pagkatuto. Ang kurikulum na ito ay dinisenyo upang maging flexible at masaya at maaaring kunin nang buo o bahagi lamang. Ang mga proyekto ay nagsisimula sa maliit at nagiging mas kumplikado sa pagtatapos ng 12-linggong siklo. +Bukod dito, ang isang low-stakes na pagsusulit bago ang klase ay nagtatakda ng intensyon ng estudyante sa pag-aaral ng isang paksa, habang ang pangalawang pagsusulit pagkatapos ng klase ay nagsisiguro ng karagdagang pag-alala. Ang kurikulum na ito ay idinisenyo upang maging flexible at masaya at maaaring kunin nang buo o bahagi lamang. Nagsisimula sa maliit ang mga proyekto at nagiging mas kumplikado habang papalapit ang pagtatapos ng 12-linggong siklo. -Habang sinadya naming iwasan ang pagpapakilala ng mga JavaScript framework upang magtuon sa mga pangunahing kasanayan na kinakailangan bilang isang web developer bago magpatibay ng framework, ang isang magandang susunod na hakbang pagkatapos makumpleto ang kurikulum na ito ay ang pag-aaral tungkol sa Node.js sa pamamagitan ng isa pang koleksyon ng mga video: "[Beginner Series to: Node.js](https://channel9.msdn.com/Series/Beginners-Series-to-Nodejs/?WT.mc_id=academic-77807-sagibbon)". +Habang sinadyang iniiwasan naming ipakilala ang mga JavaScript framework upang magtuon sa mga pangunahing kasanayan na kailangan bilang web developer bago gumamit ng framework, isang magandang susunod na hakbang sa pagtatapos ng kurikulum na ito ay ang pag-aaral tungkol sa Node.js sa pamamagitan ng isa pang koleksyon ng mga video: "[Beginner Series to: Node.js](https://channel9.msdn.com/Series/Beginners-Series-to-Nodejs/?WT.mc_id=academic-77807-sagibbon)". -> Bisitahin ang aming [Code of Conduct](CODE_OF_CONDUCT.md) at [Contributing](CONTRIBUTING.md) na mga alituntunin. Malugod naming tinatanggap ang iyong nakabubuong feedback! +> Bisitahin ang aming [Code of Conduct](CODE_OF_CONDUCT.md) at [Contributing](CONTRIBUTING.md) na mga patnubay. Tinatanggap namin ang iyong konstruktibong puna! -## 🧭 Offline na access +## 🧭 Offline access -Maaari mong patakbuhin ang dokumentasyong ito offline gamit ang [Docsify](https://docsify.js.org/#/). I-fork ang repo na ito, [i-install ang Docsify](https://docsify.js.org/#/quickstart) sa iyong lokal na makina, at pagkatapos sa root folder ng repo na ito, i-type ang `docsify serve`. Ang website ay magsisilbi sa port 3000 sa iyong localhost: `localhost:3000`. +Maaari mong patakbuhin ang dokumentasyong ito offline gamit ang [Docsify](https://docsify.js.org/#/). I-fork ang repo na ito, [i-install ang Docsify](https://docsify.js.org/#/quickstart) sa iyong local na makina, at pagkatapos sa root folder ng repo na ito, i-type ang `docsify serve`. Ang website ay ihahatid sa port 3000 sa iyong localhost: `localhost:3000`. ## 📘 PDF -Ang PDF ng lahat ng mga aralin ay makikita [dito](https://microsoft.github.io/Web-Dev-For-Beginners/pdf/readme.pdf). - +Isang PDF ng lahat ng mga aralin ay matatagpuan [dito](https://microsoft.github.io/Web-Dev-For-Beginners/pdf/readme.pdf). -## 🎒 Iba Pang Kurso +## 🎒 Iba Pang Mga Kurso Ang aming koponan ay gumagawa ng iba pang mga kurso! Tingnan: -### Azure / Edge / MCP / Agents -[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI para sa mga Baguhan](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP para sa mga Baguhan](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI Agents para sa mga Baguhan](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) + +### LangChain +[![LangChain4j para sa mga Baguhan](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js para sa mga Baguhan](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) --- -### Generative AI Series -[![Generative AI para sa mga Baguhan](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +### Azure / Edge / MCP / Agents +[![AZD para sa mga Baguhan](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI para sa mga Baguhan](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP para sa mga Baguhan](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents para sa mga Baguhan](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - -### Pangunahing Pag-aaral -[![ML para sa mga Baguhan](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Data Science para sa mga Baguhan](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI para sa mga Baguhan](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![Cybersecurity para sa mga Baguhan](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Web Dev para sa mga Baguhan](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT para sa mga Baguhan](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![XR Development para sa mga Baguhan](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) + +### Generative AI Series +[![Generative AI para sa mga Baguhan](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- + +### Pangunahing Pag-aaral +[![ML para sa mga Baguhan](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science para sa mga Baguhan](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI para sa mga Baguhan](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity para sa mga Baguhan](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev para sa mga Baguhan](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT para sa mga Baguhan](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development para sa mga Baguhan](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) -### Copilot Series -[![Copilot para sa AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot para sa C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) +--- + +### Copilot Series +[![Copilot para sa AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot para sa C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Pakikipagsapalaran ng Copilot](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) + -## Pagtatanong ng Tulong +## Pagkuha ng Tulong -Kung ikaw ay nahihirapan o may mga katanungan tungkol sa paggawa ng mga AI apps, sumali sa mga kapwa mag-aaral at mga bihasang developer sa mga talakayan tungkol sa MCP. Isa itong suportadong komunidad kung saan malugod na tinatanggap ang mga tanong at malayang ibinabahagi ang kaalaman. +Kung ikaw ay natigil o may mga tanong tungkol sa paggawa ng AI apps. Sumali sa mga kapwa nag-aaral at may karanasang mga developer sa mga talakayan tungkol sa MCP. Ito ay isang sumusuportang komunidad kung saan malugod na tinatanggap ang mga tanong at malayang ibinabahagi ang kaalaman. -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Kung mayroon kang feedback sa produkto o mga error habang gumagawa, bisitahin: +Kung mayroon kang puna tungkol sa produkto o mga error habang nagtatayo, bisitahin: -[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) -## Lisensya +## Lisensya -Ang repositoryong ito ay lisensyado sa ilalim ng MIT license. Tingnan ang [LICENSE](../../LICENSE) file para sa karagdagang impormasyon. +Ang repositoryong ito ay lisensyado sa ilalim ng MIT license. Tingnan ang [LICENSE](../../LICENSE) na file para sa karagdagang impormasyon. --- -**Paunawa**: -Ang dokumentong ito ay isinalin gamit ang AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). Bagamat sinisikap naming maging tumpak, mangyaring tandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa kanyang katutubong wika ang dapat ituring na mapagkakatiwalaang pinagmulan. Para sa mahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na dulot ng paggamit ng pagsasaling ito. +**Paalala**: +Ang dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagamat nagsusumikap kaming maging tumpak, pakatandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o kamalian. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pangunahing sanggunian. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na nagmula sa paggamit ng pagsasaling ito. \ No newline at end of file diff --git a/translations/tl/for-teachers.md b/translations/tl/for-teachers.md index ed2897a33..918b9aa20 100644 --- a/translations/tl/for-teachers.md +++ b/translations/tl/for-teachers.md @@ -42,10 +42,10 @@ Kasama sa kurikulum na ito ang mga importable na package para sa karaniwang mga - Limitado ang suporta ng Moodle Cloud para sa Common Cartridge. Mas mainam gamitin ang Moodle file sa itaas, na maaari ring i-upload sa Canvas. - Pagkatapos ng import, suriin ang mga module, petsa ng due, at mga setting ng pagsusulit upang tumugma sa iskedyul ng inyong term. -![Moodle](../../translated_images/moodle.94eb93d714a50cb2c97435b408017dee224348b61bc86203ffd43a4f4e57b95f.tl.png) +![Moodle](../../translated_images/moodle.94eb93d714a50cb2.tl.png) > Ang kurikulum sa isang Moodle classroom -![Canvas](../../translated_images/canvas.fbd605ff8e5b8aff567d398528ce113db304446b90b9cad55c654de3fdfcda34.tl.png) +![Canvas](../../translated_images/canvas.fbd605ff8e5b8aff.tl.png) > Ang kurikulum sa Canvas ### Direktang paggamit ng repositoryo (walang Classroom) diff --git a/translations/vi/1-getting-started-lessons/1-intro-to-programming-languages/README.md b/translations/vi/1-getting-started-lessons/1-intro-to-programming-languages/README.md index ac5d0d50b..e245b0d13 100644 --- a/translations/vi/1-getting-started-lessons/1-intro-to-programming-languages/README.md +++ b/translations/vi/1-getting-started-lessons/1-intro-to-programming-languages/README.md @@ -17,7 +17,7 @@ Nghe này, tôi hoàn toàn hiểu nếu lập trình có vẻ đáng sợ ngay Hôm nay, chúng ta sẽ khám phá những công cụ tuyệt vời làm cho phát triển web hiện đại không chỉ khả thi mà còn thực sự gây nghiện. Tôi đang nói về chính những trình soạn thảo, trình duyệt và quy trình làm việc mà các nhà phát triển tại Netflix, Spotify, và studio ứng dụng indie yêu thích của bạn sử dụng mỗi ngày. Và đây là phần sẽ khiến bạn nhảy múa vui vẻ: hầu hết các công cụ chuyên nghiệp, tiêu chuẩn ngành này đều hoàn toàn miễn phí! -![Giới thiệu Lập trình](../../../../translated_images/webdev101-programming.d6e3f98e61ac4bff0b27dcbf1c3f16c8ed46984866f2d29988929678b0058fde.vi.png) +![Giới thiệu Lập trình](../../../../translated_images/webdev101-programming.d6e3f98e61ac4bff.vi.png) > Sketchnote bởi [Tomomi Imura](https://twitter.com/girlie_mac) ```mermaid diff --git a/translations/vi/1-getting-started-lessons/2-github-basics/README.md b/translations/vi/1-getting-started-lessons/2-github-basics/README.md index 58b8e80ea..1b9743aa0 100644 --- a/translations/vi/1-getting-started-lessons/2-github-basics/README.md +++ b/translations/vi/1-getting-started-lessons/2-github-basics/README.md @@ -17,7 +17,7 @@ Mình biết điều này có thể khiến bạn cảm thấy hơi quá tải l Chúng ta sẽ cùng nhau đi qua hành trình này, từng bước một. Không vội vàng, không áp lực – chỉ có bạn, mình, và một số công cụ cực kỳ thú vị sắp trở thành người bạn thân mới của bạn! -![Giới thiệu về GitHub](../../../../translated_images/webdev101-github.8846d7971abef6f947909b4f9d343e2a23778aa716ca6b9d71df7174ee5009ac.vi.png) +![Giới thiệu về GitHub](../../../../translated_images/webdev101-github.8846d7971abef6f9.vi.png) > Sketchnote bởi [Tomomi Imura](https://twitter.com/girlie_mac) ```mermaid @@ -610,7 +610,7 @@ Bạn không chỉ học cách viết mã ở đây – bạn đang chuẩn bị ✅ Một cách tốt để tìm các repo 'thân thiện với người mới bắt đầu' là [tìm kiếm theo thẻ 'good-first-issue'](https://github.blog/2020-01-22-browse-good-first-issues-to-start-contributing-to-open-source/). -![Sao chép repo về máy](../../../../translated_images/clone_repo.5085c48d666ead57664f050d806e325d7f883be6838c821e08bc823ab7c66665.vi.png) +![Sao chép repo về máy](../../../../translated_images/clone_repo.5085c48d666ead57.vi.png) Có nhiều cách để sao chép mã. Một cách là "clone" nội dung của repository, sử dụng HTTPS, SSH, hoặc GitHub CLI (Command Line Interface). diff --git a/translations/vi/1-getting-started-lessons/3-accessibility/README.md b/translations/vi/1-getting-started-lessons/3-accessibility/README.md index 9e80b6ea2..cac684faa 100644 --- a/translations/vi/1-getting-started-lessons/3-accessibility/README.md +++ b/translations/vi/1-getting-started-lessons/3-accessibility/README.md @@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA: --> # Tạo Trang Web Dễ Tiếp Cận -![Tất cả về khả năng tiếp cận](../../../../translated_images/webdev101-a11y.8ef3025c858d897a403a1a42c0897c76e11b724d9a8a0c0578dd4316f7507622.vi.png) +![Tất cả về khả năng tiếp cận](../../../../translated_images/webdev101-a11y.8ef3025c858d897a.vi.png) > Sketchnote bởi [Tomomi Imura](https://twitter.com/girlie_mac) ```mermaid diff --git a/translations/vi/2-js-basics/1-data-types/README.md b/translations/vi/2-js-basics/1-data-types/README.md index e9cb39538..213a6bfa3 100644 --- a/translations/vi/2-js-basics/1-data-types/README.md +++ b/translations/vi/2-js-basics/1-data-types/README.md @@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA: --> # Cơ bản về JavaScript: Kiểu dữ liệu -![Cơ bản về JavaScript - Kiểu dữ liệu](../../../../translated_images/webdev101-js-datatypes.4cc470179730702c756480d3ffa46507f746e5975ebf80f99fdaaf1cff09a7f4.vi.png) +![Cơ bản về JavaScript - Kiểu dữ liệu](../../../../translated_images/webdev101-js-datatypes.4cc470179730702c.vi.png) > Sketchnote bởi [Tomomi Imura](https://twitter.com/girlie_mac) ```mermaid diff --git a/translations/vi/2-js-basics/2-functions-methods/README.md b/translations/vi/2-js-basics/2-functions-methods/README.md index 254ab8bda..a66d4eaa5 100644 --- a/translations/vi/2-js-basics/2-functions-methods/README.md +++ b/translations/vi/2-js-basics/2-functions-methods/README.md @@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA: --> # Cơ bản về JavaScript: Phương thức và Hàm -![Cơ bản về JavaScript - Hàm](../../../../translated_images/webdev101-js-functions.be049c4726e94f8b7605c36330ac42eeb5cd8ed02bcdd60fdac778174d6cb865.vi.png) +![Cơ bản về JavaScript - Hàm](../../../../translated_images/webdev101-js-functions.be049c4726e94f8b.vi.png) > Sketchnote bởi [Tomomi Imura](https://twitter.com/girlie_mac) ```mermaid diff --git a/translations/vi/2-js-basics/3-making-decisions/README.md b/translations/vi/2-js-basics/3-making-decisions/README.md index 734141841..01193e15b 100644 --- a/translations/vi/2-js-basics/3-making-decisions/README.md +++ b/translations/vi/2-js-basics/3-making-decisions/README.md @@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA: --> # Cơ bản về JavaScript: Ra quyết định -![Cơ bản về JavaScript - Ra quyết định](../../../../translated_images/webdev101-js-decisions.69e1b20f272dd1f0b1cb2f8adaff3ed2a77c4f91db96d8a0594132a353fa189a.vi.png) +![Cơ bản về JavaScript - Ra quyết định](../../../../translated_images/webdev101-js-decisions.69e1b20f272dd1f0.vi.png) > Sketchnote bởi [Tomomi Imura](https://twitter.com/girlie_mac) diff --git a/translations/vi/2-js-basics/4-arrays-loops/README.md b/translations/vi/2-js-basics/4-arrays-loops/README.md index 2673a9ff8..c6465974a 100644 --- a/translations/vi/2-js-basics/4-arrays-loops/README.md +++ b/translations/vi/2-js-basics/4-arrays-loops/README.md @@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA: --> # Cơ bản về JavaScript: Mảng và Vòng lặp -![Cơ bản về JavaScript - Mảng](../../../../translated_images/webdev101-js-arrays.439d7528b8a294558d0e4302e448d193f8ad7495cc407539cc81f1afe904b470.vi.png) +![Cơ bản về JavaScript - Mảng](../../../../translated_images/webdev101-js-arrays.439d7528b8a29455.vi.png) > Sketchnote bởi [Tomomi Imura](https://twitter.com/girlie_mac) ```mermaid diff --git a/translations/vi/3-terrarium/1-intro-to-html/README.md b/translations/vi/3-terrarium/1-intro-to-html/README.md index d9336cd5c..1eb67470e 100644 --- a/translations/vi/3-terrarium/1-intro-to-html/README.md +++ b/translations/vi/3-terrarium/1-intro-to-html/README.md @@ -26,7 +26,7 @@ journey Build terrarium: 5: Student ``` -![Giới thiệu về HTML](../../../../translated_images/webdev101-html.4389c2067af68e98280c1bde52b6c6269f399eaae3659b7c846018d8a7b0bbd9.vi.png) +![Giới thiệu về HTML](../../../../translated_images/webdev101-html.4389c2067af68e98.vi.png) > Sketchnote bởi [Tomomi Imura](https://twitter.com/girlie_mac) HTML, hay HyperText Markup Language, là nền tảng của mọi trang web mà bạn từng truy cập. Hãy nghĩ về HTML như bộ khung xương cung cấp cấu trúc cho các trang web – nó xác định nơi nội dung sẽ xuất hiện, cách tổ chức và ý nghĩa của từng phần. Trong khi CSS sẽ "trang trí" HTML của bạn với màu sắc và bố cục, và JavaScript sẽ làm cho nó sống động với tính tương tác, HTML cung cấp cấu trúc cơ bản làm nền tảng cho mọi thứ khác. @@ -88,7 +88,7 @@ Bạn sẽ tạo một thư mục dành riêng cho dự án terrarium và thêm 4. Trong bảng Explorer, nhấp vào biểu tượng "New File" 5. Đặt tên tệp của bạn là `index.html` -![VS Code Explorer hiển thị việc tạo tệp mới](../../../../translated_images/vs-code-index.e2986cf919471eb984a0afef231380c8b132b000635105f2397bd2754d1b689c.vi.png) +![VS Code Explorer hiển thị việc tạo tệp mới](../../../../translated_images/vs-code-index.e2986cf919471eb9.vi.png) **Cách 2: Sử dụng Lệnh Terminal** ```bash diff --git a/translations/vi/3-terrarium/2-intro-to-css/README.md b/translations/vi/3-terrarium/2-intro-to-css/README.md index b87e0f09c..47bd84116 100644 --- a/translations/vi/3-terrarium/2-intro-to-css/README.md +++ b/translations/vi/3-terrarium/2-intro-to-css/README.md @@ -30,7 +30,7 @@ journey Glass reflections: 5: Student ``` -![Giới thiệu về CSS](../../../../translated_images/webdev101-css.3f7af5991bf53a200d79e7257e5e450408d8ea97f5b531d31b2e3976317338ee.vi.png) +![Giới thiệu về CSS](../../../../translated_images/webdev101-css.3f7af5991bf53a20.vi.png) > Sketchnote bởi [Tomomi Imura](https://twitter.com/girlie_mac) Bạn còn nhớ terrarium HTML của mình trông khá đơn giản chứ? CSS chính là nơi chúng ta biến cấu trúc cơ bản đó thành một thứ hấp dẫn về mặt thị giác. @@ -205,7 +205,7 @@ body { Mở công cụ phát triển của trình duyệt (F12), điều hướng đến tab Elements, và kiểm tra phần tử `

` của bạn. Bạn sẽ thấy rằng nó thừa hưởng font family từ body: -![font thừa hưởng](../../../../translated_images/1.cc07a5cbe114ad1d4728c35134584ac1b87db688eff83cf75985cf31fe0ed95c.vi.png) +![font thừa hưởng](../../../../translated_images/1.cc07a5cbe114ad1d.vi.png) ✅ **Thời gian thử nghiệm**: Hãy thử đặt các thuộc tính có thể thừa hưởng khác trên `` như `color`, `line-height`, hoặc `text-align`. Điều gì xảy ra với tiêu đề và các phần tử khác? @@ -599,7 +599,7 @@ Sẵn sàng nâng cấp terrarium của bạn với hiệu ứng phản chiếu Bạn sẽ tạo các điểm sáng tinh tế mô phỏng cách ánh sáng phản chiếu trên bề mặt thủy tinh. Cách tiếp cận này tương tự như cách các họa sĩ thời Phục hưng như Jan van Eyck sử dụng ánh sáng và phản chiếu để làm cho thủy tinh được vẽ trông như ba chiều. Đây là mục tiêu của bạn: -![terrarium hoàn thiện](../../../../translated_images/terrarium-final.2f07047ffc597d0a06b06cab28a77801a10dd12fdb6c7fc630e9c40665491c53.vi.png) +![terrarium hoàn thiện](../../../../translated_images/terrarium-final.2f07047ffc597d0a.vi.png) **Thử thách của bạn:** - **Tạo** các hình oval màu trắng hoặc sáng để làm hiệu ứng phản chiếu thủy tinh diff --git a/translations/vi/3-terrarium/3-intro-to-DOM-and-closures/README.md b/translations/vi/3-terrarium/3-intro-to-DOM-and-closures/README.md index 153ba0e3b..1d3455a39 100644 --- a/translations/vi/3-terrarium/3-intro-to-DOM-and-closures/README.md +++ b/translations/vi/3-terrarium/3-intro-to-DOM-and-closures/README.md @@ -26,7 +26,7 @@ journey Complete terrarium: 5: Student ``` -![DOM và một closure](../../../../translated_images/webdev101-js.10280393044d7eaaec7e847574946add7ddae6be2b2194567d848b61d849334a.vi.png) +![DOM và một closure](../../../../translated_images/webdev101-js.10280393044d7eaa.vi.png) > Sketchnote bởi [Tomomi Imura](https://twitter.com/girlie_mac) Chào mừng bạn đến với một trong những khía cạnh thú vị nhất của phát triển web - làm cho mọi thứ trở nên tương tác! Mô hình Đối tượng Tài liệu (DOM) giống như một cây cầu giữa HTML và JavaScript của bạn, và hôm nay chúng ta sẽ sử dụng nó để làm cho terrarium của bạn sống động. Khi Tim Berners-Lee tạo ra trình duyệt web đầu tiên, ông đã hình dung một web nơi các tài liệu có thể động và tương tác - DOM làm cho tầm nhìn đó trở thành hiện thực. @@ -105,7 +105,7 @@ flowchart TD style Q fill:#ffebee ``` -![Biểu diễn cây DOM](../../../../translated_images/dom-tree.7daf0e763cbbba9273f9a66fe04c98276d7d23932309b195cb273a9cf1819b42.vi.png) +![Biểu diễn cây DOM](../../../../translated_images/dom-tree.7daf0e763cbbba92.vi.png) > Một biểu diễn của DOM và mã HTML tham chiếu nó. Từ [Olfa Nasraoui](https://www.researchgate.net/publication/221417012_Profile-Based_Focused_Crawler_for_Social_Media-Sharing_Websites) @@ -150,7 +150,7 @@ flowchart LR > 💡 **Hiểu về Closures**: Closures là một chủ đề quan trọng trong JavaScript, và nhiều nhà phát triển sử dụng chúng trong nhiều năm trước khi hiểu đầy đủ tất cả các khía cạnh lý thuyết. Hôm nay, chúng ta tập trung vào ứng dụng thực tế - bạn sẽ thấy closures xuất hiện tự nhiên khi chúng ta xây dựng các tính năng tương tác. Hiểu biết sẽ phát triển khi bạn thấy cách chúng giải quyết các vấn đề thực tế. -![Biểu diễn cây DOM](../../../../translated_images/dom-tree.7daf0e763cbbba9273f9a66fe04c98276d7d23932309b195cb273a9cf1819b42.vi.png) +![Biểu diễn cây DOM](../../../../translated_images/dom-tree.7daf0e763cbbba92.vi.png) > Một biểu diễn của DOM và mã HTML tham chiếu nó. Từ [Olfa Nasraoui](https://www.researchgate.net/publication/221417012_Profile-Based_Focused_Crawler_for_Social_Media-Sharing_Websites) @@ -598,7 +598,7 @@ Bây giờ hãy kiểm tra terrarium tương tác của bạn! Mở tệp `index - **Hỗ trợ đa thiết bị**: Hoạt động trên máy tính và di động - **Ý thức về hiệu suất**: Không có rò rỉ bộ nhớ hay tính toán dư thừa -![terrarium hoàn chỉnh](../../../../translated_images/terrarium-final.0920f16e87c13a84cd2b553a5af9a3ad1cffbd41fbf8ce715d9e9c43809a5e2c.vi.png) +![terrarium hoàn chỉnh](../../../../translated_images/terrarium-final.0920f16e87c13a84.vi.png) --- diff --git a/translations/vi/3-terrarium/README.md b/translations/vi/3-terrarium/README.md index 868cc4647..d0dc7b236 100644 --- a/translations/vi/3-terrarium/README.md +++ b/translations/vi/3-terrarium/README.md @@ -1,45 +1,30 @@ -# Terrarium của tôi: Một dự án học về HTML, CSS và thao tác DOM bằng JavaScript 🌵🌱 - -Một bài tập nhỏ về kéo thả mã. Với một chút HTML, JS và CSS, bạn sẽ có thể xây dựng giao diện web, tạo kiểu cho nó, và thậm chí thêm nhiều tương tác theo ý thích. - -![terrarium của tôi](../../../translated_images/screenshot_gray.0c796099a1f9f25e40aa55ead81f268434c00af30d7092490759945eda63067d.vi.png) - -# Bài học - -1. [Giới thiệu về HTML](./1-intro-to-html/README.md) -2. [Giới thiệu về CSS](./2-intro-to-css/README.md) -3. [Giới thiệu về DOM và JS Closures](./3-intro-to-DOM-and-closures/README.md) - -## Tín dụng - -Được viết với ♥️ bởi [Jen Looper](https://www.twitter.com/jenlooper) - -Terrarium được tạo qua CSS lấy cảm hứng từ lọ thủy tinh của Jakub Mandra trên [codepen](https://codepen.io/Rotarepmi/pen/rjpNZY). - -Tác phẩm nghệ thuật được vẽ tay bởi [Jen Looper](http://jenlooper.com) với sự hỗ trợ của Procreate. - ## Triển khai Terrarium của bạn -Bạn có thể triển khai, hoặc xuất bản terrarium của mình lên web bằng Azure Static Web Apps. +Bạn có thể triển khai hoặc xuất bản Terrarium của mình trên web bằng cách sử dụng **Azure Static Web Apps**. -1. Fork kho lưu trữ này +1. Fork repo này -2. Nhấn nút này +2. Nhấn nút này 👇 -[![Nút triển khai lên Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/?feature.customportal=false&WT.mc_id=academic-77807-sagibbon#create/Microsoft.StaticApp) +[![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.StaticApp) -3. Làm theo hướng dẫn trong wizard để tạo ứng dụng của bạn. Đảm bảo bạn đặt thư mục gốc của ứng dụng là `/solution` hoặc thư mục gốc của mã nguồn. Ứng dụng này không có API, vì vậy không cần lo lắng về việc thêm API. Một thư mục github sẽ được tạo trong kho lưu trữ đã fork của bạn, giúp dịch vụ xây dựng của Azure Static Web Apps xây dựng và xuất bản ứng dụng của bạn lên một URL mới. +3. Làm theo trình hướng dẫn thiết lập để tạo ứng dụng của bạn. + - Đặt **App root** thành `/solution` hoặc thư mục gốc của mã nguồn của bạn. + - Ứng dụng này không có API, vì vậy bạn có thể bỏ qua cấu hình API. + - Một thư mục `.github` sẽ được tạo tự động để giúp Azure Static Web Apps xây dựng và xuất bản ứng dụng của bạn. --- + **Tuyên bố miễn trừ trách nhiệm**: -Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp từ con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ gốc của nó nên được coi là nguồn chính xác và uy tín nhất. Đối với thông tin quan trọng, việc dịch thuật chuyên nghiệp do con người thực hiện được khuyến nghị. Chúng tôi không chịu trách nhiệm về bất kỳ sự hiểu lầm hoặc sai sót nào phát sinh từ việc sử dụng bản dịch này. + \ No newline at end of file diff --git a/translations/vi/3-terrarium/solution/README.md b/translations/vi/3-terrarium/solution/README.md index dd7cc074c..ccef162ea 100644 --- a/translations/vi/3-terrarium/solution/README.md +++ b/translations/vi/3-terrarium/solution/README.md @@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA: Một bài tập nhỏ về kéo và thả. Với một chút HTML, JS và CSS, bạn có thể tạo giao diện web, định kiểu và thêm tương tác. -![terrarium của tôi](../../../../translated_images/screenshot_gray.0c796099a1f9f25e40aa55ead81f268434c00af30d7092490759945eda63067d.vi.png) +![terrarium của tôi](../../../../translated_images/screenshot_gray.0c796099a1f9f25e.vi.png) ## Tín dụng diff --git a/translations/vi/5-browser-extension/1-about-browsers/README.md b/translations/vi/5-browser-extension/1-about-browsers/README.md index 619070728..28690ee36 100644 --- a/translations/vi/5-browser-extension/1-about-browsers/README.md +++ b/translations/vi/5-browser-extension/1-about-browsers/README.md @@ -26,7 +26,7 @@ journey Polish experience: 5: Student ``` -![Ghi chú hình ảnh về trình duyệt](../../../../translated_images/browser.60317c9be8b7f84adce43e30bff8d47a1ae15793beab762317b2bc6b74337c1a.vi.jpg) +![Ghi chú hình ảnh về trình duyệt](../../../../translated_images/browser.60317c9be8b7f84a.vi.jpg) > Ghi chú hình ảnh bởi [Wassim Chegham](https://dev.to/wassimchegham/ever-wondered-what-happens-when-you-type-in-a-url-in-an-address-bar-in-a-browser-3dob) ## Câu hỏi trước bài giảng @@ -79,7 +79,7 @@ Quá trình này giống như cách trình duyệt web đầu tiên, WorldWideWe ✅ **Một chút lịch sử**: Trình duyệt đầu tiên được gọi là 'WorldWideWeb' và được tạo ra bởi Sir Timothy Berners-Lee vào năm 1990. -![trình duyệt đầu tiên](../../../../translated_images/earlybrowsers.d984b711cdf3a42ddac919d46c4b5ca7232f68ccfbd81395e04e5a64c0015277.vi.jpg) +![trình duyệt đầu tiên](../../../../translated_images/earlybrowsers.d984b711cdf3a42d.vi.jpg) > Một số trình duyệt đầu tiên, qua [Karen McGrane](https://www.slideshare.net/KMcGrane/week-4-ixd-history-personal-computing) ### Cách Trình duyệt Xử lý Nội dung Web @@ -198,7 +198,7 @@ quadrantChart Hiểu quy trình cài đặt tiện ích mở rộng giúp bạn dự đoán trải nghiệm người dùng khi họ cài đặt tiện ích mở rộng của bạn. Quy trình cài đặt được chuẩn hóa trên các trình duyệt hiện đại, với những biến thể nhỏ trong thiết kế giao diện. -![ảnh chụp màn hình trình duyệt Edge hiển thị trang edge://extensions mở và menu cài đặt mở](../../../../translated_images/install-on-edge.d68781acaf0b3d3dada8b7507cde7a64bf74b7040d9818baaa9070668e819f90.vi.png) +![ảnh chụp màn hình trình duyệt Edge hiển thị trang edge://extensions mở và menu cài đặt mở](../../../../translated_images/install-on-edge.d68781acaf0b3d3d.vi.png) > **Quan trọng**: Đảm bảo bật chế độ nhà phát triển và cho phép tiện ích mở rộng từ các cửa hàng khác khi thử nghiệm tiện ích mở rộng của riêng bạn. @@ -313,10 +313,10 @@ Bây giờ chúng ta sẽ xây dựng các thành phần giao diện người d ### Tổng quan về Giao diện Tiện ích Mở rộng **Màn hình Cấu hình** - Cấu hình người dùng lần đầu: -![ảnh chụp màn hình tiện ích mở rộng hoàn chỉnh mở trong trình duyệt, hiển thị một biểu mẫu với các trường nhập cho tên vùng và khóa API.](../../../../translated_images/1.b6da8c1394b07491afeb6b2a8e5aca73ebd3cf478e27bcc9aeabb187e722648e.vi.png) +![ảnh chụp màn hình tiện ích mở rộng hoàn chỉnh mở trong trình duyệt, hiển thị một biểu mẫu với các trường nhập cho tên vùng và khóa API.](../../../../translated_images/1.b6da8c1394b07491.vi.png) **Màn hình Kết quả** - Hiển thị dữ liệu dấu chân carbon: -![ảnh chụp màn hình tiện ích mở rộng hoàn chỉnh hiển thị các giá trị về sử dụng carbon và tỷ lệ nhiên liệu hóa thạch cho vùng US-NEISO.](../../../../translated_images/2.1dae52ff0804224692cd648afbf2342955d7afe3b0101b617268130dfb427f55.vi.png) +![ảnh chụp màn hình tiện ích mở rộng hoàn chỉnh hiển thị các giá trị về sử dụng carbon và tỷ lệ nhiên liệu hóa thạch cho vùng US-NEISO.](../../../../translated_images/2.1dae52ff08042246.vi.png) ### Xây dựng Biểu mẫu Cấu hình diff --git a/translations/vi/5-browser-extension/2-forms-browsers-local-storage/README.md b/translations/vi/5-browser-extension/2-forms-browsers-local-storage/README.md index 545dee44a..7e68c8f6b 100644 --- a/translations/vi/5-browser-extension/2-forms-browsers-local-storage/README.md +++ b/translations/vi/5-browser-extension/2-forms-browsers-local-storage/README.md @@ -268,7 +268,7 @@ stateDiagram-v2 ClearStorage --> FirstTime: Back to setup ``` -![Bảng bộ nhớ cục bộ](../../../../translated_images/localstorage.472f8147b6a3f8d141d9551c95a2da610ac9a3c6a73d4a1c224081c98bae09d9.vi.png) +![Bảng bộ nhớ cục bộ](../../../../translated_images/localstorage.472f8147b6a3f8d1.vi.png) > ⚠️ **Cân nhắc về bảo mật**: Trong các ứng dụng sản xuất, việc lưu trữ khóa API trong LocalStorage gây rủi ro bảo mật vì JavaScript có thể truy cập dữ liệu này. Đối với mục đích học tập, cách tiếp cận này hoạt động tốt, nhưng các ứng dụng thực tế nên sử dụng lưu trữ phía máy chủ an toàn cho thông tin đăng nhập nhạy cảm. diff --git a/translations/vi/5-browser-extension/3-background-tasks-and-performance/README.md b/translations/vi/5-browser-extension/3-background-tasks-and-performance/README.md index ba16c12b6..31b745149 100644 --- a/translations/vi/5-browser-extension/3-background-tasks-and-performance/README.md +++ b/translations/vi/5-browser-extension/3-background-tasks-and-performance/README.md @@ -126,7 +126,7 @@ flowchart LR Hãy thử điều này. Mở một trang web (Microsoft.com hoạt động tốt cho việc này) và nhấp vào nút 'Record'. Bây giờ làm mới trang và xem profiler ghi lại mọi thứ xảy ra. Khi bạn dừng ghi, bạn sẽ thấy một phân tích chi tiết về cách trình duyệt 'scripts', 'renders', và 'paints' trang web. Nó làm tôi nhớ đến cách trung tâm điều khiển giám sát mọi hệ thống trong một lần phóng tên lửa - bạn nhận được dữ liệu thời gian thực về chính xác những gì đang xảy ra và khi nào. -![Edge profiler](../../../../translated_images/profiler.5a4a62479c5df01cfec9aab74173dba13f91d2c968e1a1ae434c26165792df15.vi.png) +![Edge profiler](../../../../translated_images/profiler.5a4a62479c5df01c.vi.png) ✅ [Tài liệu Microsoft](https://docs.microsoft.com/microsoft-edge/devtools-guide/performance/?WT.mc_id=academic-77807-sagibbon) có rất nhiều chi tiết nếu bạn muốn tìm hiểu sâu hơn @@ -136,11 +136,11 @@ Chọn các phần của dòng thời gian profile để phóng to các sự ki Lấy một ảnh chụp nhanh về hiệu suất trang của bạn bằng cách chọn một phần của dòng thời gian profile và nhìn vào bảng tóm tắt: -![Edge profiler snapshot](../../../../translated_images/snapshot.97750180ebcad73794a3594b36925eb5c8dbaac9e03fec7f9b974188c9ac63c7.vi.png) +![Edge profiler snapshot](../../../../translated_images/snapshot.97750180ebcad737.vi.png) Kiểm tra bảng Event Log để xem liệu có sự kiện nào mất hơn 15 ms: -![Edge event log](../../../../translated_images/log.804026979f3707e00eebcfa028b2b5a88cec6292f858767bb6703afba65a7d9c.vi.png) +![Edge event log](../../../../translated_images/log.804026979f3707e0.vi.png) ✅ Làm quen với profiler của bạn! Mở công cụ dành cho nhà phát triển trên trang này và xem liệu có bất kỳ nút thắt nào không. Tài nguyên nào tải chậm nhất? Nhanh nhất? diff --git a/translations/vi/5-browser-extension/README.md b/translations/vi/5-browser-extension/README.md index b86f7f066..69f72e9b3 100644 --- a/translations/vi/5-browser-extension/README.md +++ b/translations/vi/5-browser-extension/README.md @@ -23,7 +23,7 @@ Tiện ích này có thể được người dùng gọi bất kỳ lúc nào sa ### Ghi nhận -![một tiện ích mở rộng trình duyệt màu xanh lá cây](../../../translated_images/extension-screenshot.0e7f5bfa110e92e3875e1bc9405edd45a3d2e02963e48900adb91926a62a5807.vi.png) +![một tiện ích mở rộng trình duyệt màu xanh lá cây](../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.vi.png) ## Ghi nhận diff --git a/translations/vi/5-browser-extension/solution/README.md b/translations/vi/5-browser-extension/solution/README.md index 385d2424b..79acafa50 100644 --- a/translations/vi/5-browser-extension/solution/README.md +++ b/translations/vi/5-browser-extension/solution/README.md @@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA: Sử dụng API C02 Signal của tmrow để theo dõi mức tiêu thụ điện, bạn có thể xây dựng một tiện ích mở rộng trình duyệt để nhận nhắc nhở ngay trong trình duyệt về mức độ tiêu thụ điện năng trong khu vực của bạn. Việc sử dụng tiện ích này một cách linh hoạt sẽ giúp bạn đưa ra quyết định về các hoạt động của mình dựa trên thông tin này. -![ảnh chụp tiện ích](../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3875e1bc9405edd45a3d2e02963e48900adb91926a62a5807.vi.png) +![ảnh chụp tiện ích](../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.vi.png) ## Bắt Đầu @@ -31,7 +31,7 @@ npm run build Để cài đặt trên Edge, sử dụng menu 'ba chấm' ở góc trên bên phải của trình duyệt để tìm bảng Tiện Ích Mở Rộng (Extensions). Từ đó, chọn 'Tải Tiện Ích Không Đóng Gói' (Load Unpacked) để tải một tiện ích mới. Mở thư mục 'dist' khi được nhắc và tiện ích sẽ được tải. Để sử dụng, bạn cần một khóa API cho API của CO2 Signal ([lấy một khóa qua email tại đây](https://www.co2signal.com/) - nhập email của bạn vào ô trên trang này) và [mã khu vực của bạn](http://api.electricitymap.org/v3/zones) tương ứng với [Electricity Map](https://www.electricitymap.org/map) (ví dụ, ở Boston, tôi sử dụng 'US-NEISO'). -![cài đặt](../../../../translated_images/install-on-edge.78634f02842c48283726c531998679a6f03a45556b2ee99d8ff231fe41446324.vi.png) +![cài đặt](../../../../translated_images/install-on-edge.78634f02842c4828.vi.png) Khi bạn đã nhập khóa API và mã khu vực vào giao diện tiện ích, chấm màu trong thanh tiện ích mở rộng của trình duyệt sẽ thay đổi để phản ánh mức tiêu thụ năng lượng của khu vực bạn và cung cấp gợi ý về các hoạt động tiêu tốn năng lượng phù hợp. Ý tưởng đằng sau hệ thống 'chấm màu' này được lấy cảm hứng từ tiện ích mở rộng [Energy Lollipop](https://energylollipop.com/) dành cho lượng khí thải ở California. diff --git a/translations/vi/5-browser-extension/solution/translation/README.fr.md b/translations/vi/5-browser-extension/solution/translation/README.fr.md index b27f4d1fd..e54a9d07e 100644 --- a/translations/vi/5-browser-extension/solution/translation/README.fr.md +++ b/translations/vi/5-browser-extension/solution/translation/README.fr.md @@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA: Sử dụng API C02 Signal của tmrow để theo dõi mức tiêu thụ điện năng, hãy tạo một tiện ích mở rộng trình duyệt để bạn có thể nhận được thông báo trực tiếp trong trình duyệt về mức tiêu thụ điện năng của khu vực bạn. Việc sử dụng tiện ích mở rộng này sẽ giúp bạn đưa ra quyết định về các hoạt động của mình dựa trên thông tin này. -![ảnh chụp tiện ích mở rộng](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3875e1bc9405edd45a3d2e02963e48900adb91926a62a5807.vi.png) +![ảnh chụp tiện ích mở rộng](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.vi.png) ## Bắt đầu @@ -31,7 +31,7 @@ npm run build Để cài đặt trên Edge, sử dụng menu 'ba chấm' ở góc trên bên phải của trình duyệt để tìm bảng điều khiển Tiện ích mở rộng. Từ đó, chọn 'Tải tiện ích mở rộng chưa nén' để tải một tiện ích mới. Mở thư mục 'dist' khi được nhắc và tiện ích sẽ được tải. Để sử dụng, bạn cần một khóa API cho API CO2 Signal ([lấy một khóa qua email tại đây](https://www.co2signal.com/) - nhập email của bạn vào ô trên trang này) và [mã khu vực của bạn](http://api.electricitymap.org/v3/zones) tương ứng với [Bản đồ điện năng](https://www.electricitymap.org/map) (ví dụ, ở Boston, tôi sử dụng 'US-NEISO'). -![cài đặt](../../../../../translated_images/install-on-edge.78634f02842c48283726c531998679a6f03a45556b2ee99d8ff231fe41446324.vi.png) +![cài đặt](../../../../../translated_images/install-on-edge.78634f02842c4828.vi.png) Sau khi nhập khóa API và khu vực vào giao diện tiện ích mở rộng, điểm màu trong thanh tiện ích mở rộng của trình duyệt sẽ thay đổi để phản ánh mức tiêu thụ năng lượng của khu vực bạn và cung cấp cho bạn một chỉ báo về các hoạt động tiêu thụ năng lượng mà bạn nên thực hiện. Ý tưởng đằng sau hệ thống 'điểm' này được lấy cảm hứng từ [tiện ích mở rộng Energy Lollipop](https://energylollipop.com/) dành cho lượng khí thải ở California. diff --git a/translations/vi/5-browser-extension/solution/translation/README.hi.md b/translations/vi/5-browser-extension/solution/translation/README.hi.md index 52b4f9f28..df96fbf3a 100644 --- a/translations/vi/5-browser-extension/solution/translation/README.hi.md +++ b/translations/vi/5-browser-extension/solution/translation/README.hi.md @@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA: Sử dụng API tín hiệu CO2 của tmrow để theo dõi mức tiêu thụ điện năng, xây dựng một tiện ích mở rộng trình duyệt nhằm nhắc nhở bạn về mức độ tiêu thụ điện năng trong khu vực của bạn ngay trong trình duyệt. Việc sử dụng tiện ích này sẽ giúp bạn đưa ra quyết định dựa trên thông tin đó về các hoạt động của mình. -![Ảnh chụp màn hình tiện ích mở rộng](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3875e1bc9405edd45a3d2e02963e48900adb91926a62a5807.vi.png) +![Ảnh chụp màn hình tiện ích mở rộng](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.vi.png) ## Bắt đầu @@ -31,7 +31,7 @@ npm run build Để cài đặt trên Edge, sử dụng menu 'ba chấm' ở góc trên bên phải của trình duyệt để tìm bảng tiện ích mở rộng. Từ đó, chọn 'Load unpacked' để tải một tiện ích mở rộng mới. Khi được nhắc, mở thư mục 'dist' và tiện ích mở rộng sẽ được tải. Để sử dụng, bạn cần một khóa API của CO2 Signal ([nhận qua email tại đây](https://www.co2signal.com/) - nhập email của bạn vào hộp trên trang này) và [mã khu vực của bạn](http://api.electricitymap.org/v3/zones) từ [Electricity Map](https://www.electricitymap.org/map) (ví dụ: ở Boston, tôi sử dụng 'US-NEISO'). -![Cài đặt](../../../../../translated_images/install-on-edge.78634f02842c48283726c531998679a6f03a45556b2ee99d8ff231fe41446324.vi.png) +![Cài đặt](../../../../../translated_images/install-on-edge.78634f02842c4828.vi.png) Sau khi nhập khóa API và mã khu vực vào giao diện tiện ích mở rộng, dấu chấm màu trong thanh tiện ích mở rộng của trình duyệt sẽ thay đổi để phản ánh mức tiêu thụ năng lượng của khu vực bạn và cung cấp cho bạn một chỉ báo về các hoạt động tiêu thụ năng lượng phù hợp với hiệu suất của bạn. Ý tưởng về hệ thống 'dấu chấm' này được lấy cảm hứng từ tiện ích mở rộng [Energy Lollipop](https://energylollipop.com/) dành cho lượng khí thải ở California. diff --git a/translations/vi/5-browser-extension/solution/translation/README.it.md b/translations/vi/5-browser-extension/solution/translation/README.it.md index 8c76f531b..e906a2719 100644 --- a/translations/vi/5-browser-extension/solution/translation/README.it.md +++ b/translations/vi/5-browser-extension/solution/translation/README.it.md @@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA: Chúng ta sẽ sử dụng API Signal CO2 của tmrow để theo dõi việc sử dụng điện và tạo một tiện ích mở rộng cho trình duyệt, giúp bạn nhận được thông báo trực tiếp trên trình duyệt về mức độ tiêu thụ điện năng trong khu vực của mình. Việc sử dụng tiện ích mở rộng này sẽ giúp bạn đánh giá các hoạt động của mình dựa trên thông tin này. -![ảnh chụp màn hình tiện ích mở rộng](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3875e1bc9405edd45a3d2e02963e48900adb91926a62a5807.vi.png) +![ảnh chụp màn hình tiện ích mở rộng](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.vi.png) ## Bắt đầu @@ -31,7 +31,7 @@ npm run build Để cài đặt trên Edge, sử dụng menu "ba chấm" ở góc trên bên phải của trình duyệt để tìm bảng điều khiển Tiện ích mở rộng. Nếu chưa được kích hoạt, hãy bật Chế độ nhà phát triển (ở góc dưới bên trái). Chọn "Tải không nén" để tải một tiện ích mở rộng mới. Mở thư mục "dist" khi được nhắc và tiện ích mở rộng sẽ được tải lên. Để sử dụng, bạn sẽ cần một khóa API cho API CO2 Signal (bạn có thể [nhận tại đây qua email](https://www.co2signal.com/) - nhập email của bạn vào ô trên trang này) và [mã khu vực của bạn](http://api.electricitymap.org/v3/zones) tương ứng với [bản đồ điện](https://www.electricitymap.org/map) (ví dụ, ở Boston, mã là "US-NEISO"). -![cài đặt](../../../../../translated_images/install-on-edge.78634f02842c48283726c531998679a6f03a45556b2ee99d8ff231fe41446324.vi.png) +![cài đặt](../../../../../translated_images/install-on-edge.78634f02842c4828.vi.png) Khi bạn đã nhập khóa API và khu vực vào giao diện của tiện ích mở rộng, chấm màu trong thanh tiện ích mở rộng của trình duyệt sẽ thay đổi để phản ánh mức tiêu thụ năng lượng của khu vực và cung cấp gợi ý về những hoạt động tiêu tốn nhiều năng lượng nào phù hợp để thực hiện. Ý tưởng đằng sau hệ thống "chấm" này được lấy cảm hứng từ [tiện ích mở rộng Energy Lollipop](https://energylollipop.com/) dành cho lượng khí thải ở California. diff --git a/translations/vi/5-browser-extension/solution/translation/README.ja.md b/translations/vi/5-browser-extension/solution/translation/README.ja.md index 948b1ee05..284c32118 100644 --- a/translations/vi/5-browser-extension/solution/translation/README.ja.md +++ b/translations/vi/5-browser-extension/solution/translation/README.ja.md @@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA: Xây dựng một tiện ích mở rộng trình duyệt để hiển thị lời nhắc trên trình duyệt về mức độ sử dụng điện trong khu vực của bạn, sử dụng API CO2 Signal của tmrow để theo dõi lượng điện tiêu thụ. Bằng cách sử dụng tiện ích mở rộng này, bạn có thể đưa ra quyết định về các hoạt động của mình dựa trên thông tin này. -![extension screenshot](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3875e1bc9405edd45a3d2e02963e48900adb91926a62a5807.vi.png) +![extension screenshot](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.vi.png) ## Bắt đầu @@ -31,7 +31,7 @@ npm run build Để cài đặt trên Edge, hãy tìm bảng điều khiển "Tiện ích mở rộng" từ menu "ba chấm" ở góc trên bên phải của trình duyệt. Từ đó, chọn "Load Unpacked" để tải tiện ích mở rộng mới. Khi được nhắc, mở thư mục "dist" và tiện ích mở rộng sẽ được tải. Để sử dụng, bạn cần một API key của CO2 Signal ([lấy tại đây qua email](https://www.co2signal.com/) - nhập email của bạn vào ô trên trang này) và [mã khu vực tương ứng](http://api.electricitymap.org/v3/zones) từ [Electricity Map](https://www.electricitymap.org/map) (ví dụ, ở Boston, sử dụng 'US-NEISO'). -![installing](../../../../../translated_images/install-on-edge.78634f02842c48283726c531998679a6f03a45556b2ee99d8ff231fe41446324.vi.png) +![installing](../../../../../translated_images/install-on-edge.78634f02842c4828.vi.png) Sau khi nhập API key và khu vực vào giao diện tiện ích, một chấm màu sẽ xuất hiện trên thanh tiện ích mở rộng của trình duyệt, thay đổi màu sắc để phản ánh mức độ sử dụng năng lượng trong khu vực của bạn. Điều này giúp bạn biết khi nào là thời điểm thích hợp để thực hiện các hoạt động cần nhiều năng lượng. Ý tưởng về hệ thống "chấm màu" này được lấy cảm hứng từ [Energy Lollipop extension](https://energylollipop.com/) dành cho lượng phát thải ở California. diff --git a/translations/vi/5-browser-extension/solution/translation/README.ms.md b/translations/vi/5-browser-extension/solution/translation/README.ms.md index 29a511775..e4098c561 100644 --- a/translations/vi/5-browser-extension/solution/translation/README.ms.md +++ b/translations/vi/5-browser-extension/solution/translation/README.ms.md @@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA: Sử dụng API CO2 Signal của tmrow để theo dõi mức tiêu thụ điện năng, xây dựng tiện ích mở rộng trình duyệt để bạn có thể nhận được cảnh báo trong trình duyệt về mức độ tiêu thụ điện năng của khu vực bạn. Việc sử dụng tiện ích này sẽ giúp bạn cân nhắc các hoạt động của mình dựa trên thông tin này. -![ảnh chụp tiện ích mở rộng trình duyệt](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3875e1bc9405edd45a3d2e02963e48900adb91926a62a5807.vi.png) +![ảnh chụp tiện ích mở rộng trình duyệt](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.vi.png) ## Bắt Đầu Từ Đây @@ -31,7 +31,7 @@ npm run build Để cài đặt trên Edge, sử dụng menu 'ba chấm' ở góc trên bên phải của trình duyệt để tìm bảng Tiện Ích Mở Rộng. Từ đó, chọn 'Load Unpacked' để tải tiện ích mở rộng mới. Mở thư mục 'dist' theo yêu cầu và tiện ích mở rộng sẽ được tải. Để sử dụng, bạn cần một khóa API cho API CO2 Signal ([lấy một khóa qua email tại đây](https://www.co2signal.com/) - nhập email của bạn vào ô trên trang này) và [mã khu vực của bạn](http://api.electricitymap.org/v3/zones) tương ứng với [Bản Đồ Điện](https://www.electricitymap.org/map) (ở Boston, ví dụ, tôi sử dụng 'US-NEISO'). -![đang tải xuống](../../../../../translated_images/install-on-edge.78634f02842c48283726c531998679a6f03a45556b2ee99d8ff231fe41446324.vi.png) +![đang tải xuống](../../../../../translated_images/install-on-edge.78634f02842c4828.vi.png) Sau khi khóa API và khu vực được nhập vào giao diện tiện ích mở rộng, điểm màu trên thanh tiện ích mở rộng của trình duyệt sẽ thay đổi để phản ánh mức tiêu thụ năng lượng của khu vực bạn và cung cấp cho bạn gợi ý về các hoạt động phù hợp với mức tiêu thụ đó. Ý tưởng về hệ thống 'điểm màu' này được lấy cảm hứng từ [tiện ích mở rộng trình duyệt Lollipop Năng Lượng](https://energylollipop.com/) dành cho khu vực California. diff --git a/translations/vi/5-browser-extension/start/README.md b/translations/vi/5-browser-extension/start/README.md index 0f2b657dc..1dee3fbaa 100644 --- a/translations/vi/5-browser-extension/start/README.md +++ b/translations/vi/5-browser-extension/start/README.md @@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA: Sử dụng API C02 Signal của tmrow để theo dõi mức tiêu thụ điện, bạn sẽ xây dựng một tiện ích mở rộng trình duyệt để có thể nhận được nhắc nhở ngay trong trình duyệt về mức độ tiêu thụ điện năng của khu vực bạn. Việc sử dụng tiện ích này một cách linh hoạt sẽ giúp bạn đưa ra quyết định về các hoạt động của mình dựa trên thông tin này. -![ảnh chụp tiện ích](../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3875e1bc9405edd45a3d2e02963e48900adb91926a62a5807.vi.png) +![ảnh chụp tiện ích](../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.vi.png) ## Bắt đầu @@ -31,7 +31,7 @@ npm run build Để cài đặt trên Edge, sử dụng menu 'ba chấm' ở góc trên bên phải của trình duyệt để tìm bảng điều khiển Tiện ích mở rộng. Từ đó, chọn 'Tải không đóng gói' để tải một tiện ích mới. Mở thư mục 'dist' khi được nhắc và tiện ích sẽ được tải. Để sử dụng, bạn cần một API key cho API của CO2 Signal ([lấy tại đây qua email](https://www.co2signal.com/) - nhập email của bạn vào ô trên trang này) và [mã khu vực của bạn](http://api.electricitymap.org/v3/zones) tương ứng với [Electricity Map](https://www.electricitymap.org/map) (ví dụ, ở Boston, tôi sử dụng 'US-NEISO'). -![cài đặt](../../../../translated_images/install-on-edge.78634f02842c48283726c531998679a6f03a45556b2ee99d8ff231fe41446324.vi.png) +![cài đặt](../../../../translated_images/install-on-edge.78634f02842c4828.vi.png) Khi API key và mã khu vực được nhập vào giao diện tiện ích, chấm màu trong thanh tiện ích trình duyệt sẽ thay đổi để phản ánh mức tiêu thụ năng lượng của khu vực bạn và cung cấp cho bạn gợi ý về các hoạt động tiêu tốn năng lượng phù hợp. Ý tưởng đằng sau hệ thống 'chấm' này được lấy cảm hứng từ tiện ích mở rộng [Energy Lollipop](https://energylollipop.com/) dành cho lượng khí thải ở California. diff --git a/translations/vi/6-space-game/2-drawing-to-canvas/README.md b/translations/vi/6-space-game/2-drawing-to-canvas/README.md index 0943fedec..f111a02ea 100644 --- a/translations/vi/6-space-game/2-drawing-to-canvas/README.md +++ b/translations/vi/6-space-game/2-drawing-to-canvas/README.md @@ -108,7 +108,7 @@ quadrantChart UI Elements: [0.9, 0.1] ``` -![lưới của canvas](../../../../translated_images/canvas_grid.5f209da785ded492a01ece440e3032afe51efa500cc2308e5ea4252487ceaf0b.vi.png) +![lưới của canvas](../../../../translated_images/canvas_grid.5f209da785ded492.vi.png) > Hình ảnh từ [MDN](https://developer.mozilla.org/docs/Web/API/Canvas_API/Tutorial/Drawing_shapes) Để vẽ trên phần tử canvas, bạn sẽ làm theo quy trình ba bước giống nhau, tạo nền tảng cho tất cả đồ họa canvas. Một khi bạn làm điều này vài lần, nó sẽ trở thành bản năng: @@ -329,11 +329,11 @@ Bạn sẽ xây dựng một trang web với một phần tử Canvas. Nó sẽ - Tàu nhân vật chính - ![Tàu nhân vật chính](../../../../translated_images/player.dd24c1afa8c71e9b82b2958946d4bad13308681392d4b5ddcc61a0e818ef8088.vi.png) + ![Tàu nhân vật chính](../../../../translated_images/player.dd24c1afa8c71e9b.vi.png) - 5*5 quái vật - ![Tàu quái vật](../../../../translated_images/enemyShip.5df2a822c16650c2fb3c06652e8ec8120cdb9122a6de46b9a1a56d54db22657f.vi.png) + ![Tàu quái vật](../../../../translated_images/enemyShip.5df2a822c16650c2.vi.png) ### Các bước được khuyến nghị để bắt đầu phát triển @@ -470,7 +470,7 @@ for (let x = START_X; x < STOP_X; x += ENEMY_SPACING) { Kết quả hoàn chỉnh sẽ trông như sau: -![Màn hình đen với một nhân vật chính và 5*5 quái vật](../../../../translated_images/partI-solution.36c53b48c9ffae2a5e15496b23b604ba5393433e4bf91608a7a0a020eb7a2691.vi.png) +![Màn hình đen với một nhân vật chính và 5*5 quái vật](../../../../translated_images/partI-solution.36c53b48c9ffae2a.vi.png) ## Giải pháp diff --git a/translations/vi/6-space-game/5-keeping-score/README.md b/translations/vi/6-space-game/5-keeping-score/README.md index a48650235..09e6515bb 100644 --- a/translations/vi/6-space-game/5-keeping-score/README.md +++ b/translations/vi/6-space-game/5-keeping-score/README.md @@ -34,7 +34,7 @@ Việc hiển thị trực quan rất quan trọng - hiển thị biểu tượn Bây giờ chúng ta sẽ triển khai các hệ thống phản hồi cốt lõi để giữ người chơi tham gia: - **Hệ thống điểm số**: Mỗi tàu địch bị tiêu diệt sẽ thưởng 100 điểm (số tròn dễ tính toán hơn cho người chơi). Điểm số sẽ hiển thị ở góc dưới bên trái. -- **Bộ đếm mạng sống**: Nhân vật chính của bạn bắt đầu với ba mạng sống - một tiêu chuẩn được thiết lập bởi các trò chơi arcade đầu tiên để cân bằng giữa thử thách và khả năng chơi. Mỗi lần va chạm với kẻ địch sẽ mất một mạng sống. Chúng ta sẽ hiển thị số mạng sống còn lại ở góc dưới bên phải bằng biểu tượng tàu ![life image](../../../../translated_images/life.6fb9f50d53ee0413cd91aa411f7c296e10a1a6de5c4a4197c718b49bf7d63ebf.vi.png). +- **Bộ đếm mạng sống**: Nhân vật chính của bạn bắt đầu với ba mạng sống - một tiêu chuẩn được thiết lập bởi các trò chơi arcade đầu tiên để cân bằng giữa thử thách và khả năng chơi. Mỗi lần va chạm với kẻ địch sẽ mất một mạng sống. Chúng ta sẽ hiển thị số mạng sống còn lại ở góc dưới bên phải bằng biểu tượng tàu ![life image](../../../../translated_images/life.6fb9f50d53ee0413.vi.png). ## Bắt đầu xây dựng! diff --git a/translations/vi/7-bank-project/1-template-route/README.md b/translations/vi/7-bank-project/1-template-route/README.md index fc52e5254..38e03bf1b 100644 --- a/translations/vi/7-bank-project/1-template-route/README.md +++ b/translations/vi/7-bank-project/1-template-route/README.md @@ -652,7 +652,7 @@ sequenceDiagram Sử dụng `history.pushState` tạo các mục mới trong lịch sử điều hướng của trình duyệt. Bạn có thể kiểm tra điều đó bằng cách giữ *nút quay lại* của trình duyệt, nó sẽ hiển thị như sau: -![Ảnh chụp màn hình lịch sử điều hướng](../../../../translated_images/history.7fdabbafa521e06455b738d3dafa3ff41d3071deae60ead8c7e0844b9ed987d8.vi.png) +![Ảnh chụp màn hình lịch sử điều hướng](../../../../translated_images/history.7fdabbafa521e064.vi.png) Nếu bạn thử nhấp vào nút quay lại vài lần, bạn sẽ thấy rằng URL hiện tại thay đổi và lịch sử được cập nhật, nhưng cùng một mẫu vẫn được hiển thị. diff --git a/translations/vi/7-bank-project/2-forms/README.md b/translations/vi/7-bank-project/2-forms/README.md index 3f6f4ccf2..2d1f4df89 100644 --- a/translations/vi/7-bank-project/2-forms/README.md +++ b/translations/vi/7-bank-project/2-forms/README.md @@ -295,7 +295,7 @@ Hãy cùng xem điều gì thực sự xảy ra khi ai đó nhấn nút gửi. 2. Quan sát các thay đổi trong thanh địa chỉ của trình duyệt 3. Lưu ý cách trang tải lại và dữ liệu xuất hiện trong URL -![Ảnh chụp màn hình thay đổi URL của trình duyệt sau khi nhấn nút Đăng ký](../../../../translated_images/click-register.e89a30bf0d4bc9ca867dc537c4cea679a7c26368bd790969082f524fed2355bc.vi.png) +![Ảnh chụp màn hình thay đổi URL của trình duyệt sau khi nhấn nút Đăng ký](../../../../translated_images/click-register.e89a30bf0d4bc9ca.vi.png) ### So sánh phương thức HTTP @@ -350,7 +350,7 @@ Hãy cấu hình biểu mẫu đăng ký của bạn để giao tiếp đúng c 2. **Nhấn** nút "Tạo tài khoản" 3. **Quan sát** phản hồi của máy chủ trong trình duyệt của bạn -![Một cửa sổ trình duyệt tại địa chỉ localhost:5000/api/accounts, hiển thị chuỗi JSON với dữ liệu người dùng](../../../../translated_images/form-post.61de4ca1b964d91a9e338416e19f218504dd0af5f762fbebabfe7ae80edf885f.vi.png) +![Một cửa sổ trình duyệt tại địa chỉ localhost:5000/api/accounts, hiển thị chuỗi JSON với dữ liệu người dùng](../../../../translated_images/form-post.61de4ca1b964d91a.vi.png) **Những gì bạn nên thấy:** - **Trình duyệt chuyển hướng** đến URL điểm cuối API @@ -615,7 +615,7 @@ async function register() { 3. **Nhấp** vào "Tạo tài khoản" 4. **Quan sát** các thông báo trên bảng điều khiển và phản hồi của người dùng -![Ảnh chụp màn hình hiển thị thông báo nhật ký trong bảng điều khiển trình duyệt](../../../../translated_images/browser-console.efaf0b51aaaf67782a29e1a0bb32cc063f189b18e894eb5926e02f1abe864ec2.vi.png) +![Ảnh chụp màn hình hiển thị thông báo nhật ký trong bảng điều khiển trình duyệt](../../../../translated_images/browser-console.efaf0b51aaaf6778.vi.png) **Những gì bạn sẽ thấy:** - **Trạng thái tải** xuất hiện trên nút gửi @@ -790,7 +790,7 @@ Hãy nâng cao biểu mẫu đăng ký của bạn với xác thực mạnh mẽ 3. **Thử** các ký tự đặc biệt trong trường tên người dùng 4. **Nhập** số dư âm -![Ảnh chụp màn hình hiển thị lỗi xác thực khi cố gắng gửi biểu mẫu](../../../../translated_images/validation-error.8bd23e98d416c22f80076d04829a4bb718e0e550fd622862ef59008ccf0d5dce.vi.png) +![Ảnh chụp màn hình hiển thị lỗi xác thực khi cố gắng gửi biểu mẫu](../../../../translated_images/validation-error.8bd23e98d416c22f.vi.png) **Những gì bạn sẽ quan sát:** - **Trình duyệt hiển thị** các thông báo xác thực gốc @@ -940,7 +940,7 @@ Hiển thị thông báo lỗi trong HTML nếu người dùng đã tồn tại. Dưới đây là một ví dụ về giao diện trang đăng nhập cuối cùng sau khi thêm một chút kiểu dáng: -![Ảnh chụp màn hình của trang đăng nhập sau khi thêm kiểu dáng CSS](../../../../translated_images/result.96ef01f607bf856aa9789078633e94a4f7664d912f235efce2657299becca483.vi.png) +![Ảnh chụp màn hình của trang đăng nhập sau khi thêm kiểu dáng CSS](../../../../translated_images/result.96ef01f607bf856a.vi.png) ## Câu hỏi sau bài giảng diff --git a/translations/vi/7-bank-project/3-data/README.md b/translations/vi/7-bank-project/3-data/README.md index 3c2f3e02b..5944fc2c5 100644 --- a/translations/vi/7-bank-project/3-data/README.md +++ b/translations/vi/7-bank-project/3-data/README.md @@ -160,7 +160,7 @@ sequenceDiagram Browser->>User: Displays new page (flash/reload) ``` -![Quy trình cập nhật trong ứng dụng nhiều trang](../../../../translated_images/mpa.7f7375a1a2d4aa779d3f928a2aaaf9ad76bcdeb05cfce2dc27ab126024050f51.vi.png) +![Quy trình cập nhật trong ứng dụng nhiều trang](../../../../translated_images/mpa.7f7375a1a2d4aa77.vi.png) **Tại sao cách tiếp cận này cảm thấy cồng kềnh:** - Mỗi lần nhấp chuột đều yêu cầu xây dựng lại toàn bộ trang từ đầu @@ -187,7 +187,7 @@ sequenceDiagram Browser->>User: Shows updated content (no reload) ``` -![Quy trình cập nhật trong ứng dụng một trang](../../../../translated_images/spa.268ec73b41f992c2a21ef9294235c6ae597b3c37e2c03f0494c2d8857325cc57.vi.png) +![Quy trình cập nhật trong ứng dụng một trang](../../../../translated_images/spa.268ec73b41f992c2.vi.png) **Tại sao SPA cảm thấy tốt hơn:** - Chỉ những phần thực sự thay đổi mới được cập nhật (thông minh, đúng không?) @@ -523,7 +523,7 @@ if (data.error) { Bây giờ khi bạn thử với tài khoản không hợp lệ, bạn sẽ thấy một thông báo lỗi hữu ích ngay trên trang! -![Ảnh chụp màn hình hiển thị thông báo lỗi trong quá trình đăng nhập](../../../../translated_images/login-error.416fe019b36a63276764c2349df5d99e04ebda54fefe60c715ee87a28d5d4ad0.vi.png) +![Ảnh chụp màn hình hiển thị thông báo lỗi trong quá trình đăng nhập](../../../../translated_images/login-error.416fe019b36a6327.vi.png) #### Bước 4: Tạo Sự Bao Gồm Với Khả Năng Tiếp Cận @@ -958,7 +958,7 @@ Sẵn sàng nâng cấp ứng dụng ngân hàng của bạn lên một tầm ca Dưới đây là hình ảnh bảng điều khiển được chỉnh sửa: -![Ảnh chụp màn hình ví dụ về kết quả bảng điều khiển sau khi thêm kiểu dáng](../../../../translated_images/screen2.123c82a831a1d14ab2061994be2fa5de9cec1ce651047217d326d4773a6348e4.vi.png) +![Ảnh chụp màn hình ví dụ về kết quả bảng điều khiển sau khi thêm kiểu dáng](../../../../translated_images/screen2.123c82a831a1d14a.vi.png) Đừng cảm thấy rằng bạn phải làm giống hệt như vậy - hãy sử dụng nó làm nguồn cảm hứng và tạo dấu ấn riêng của bạn! diff --git a/translations/vi/7-bank-project/4-state-management/README.md b/translations/vi/7-bank-project/4-state-management/README.md index ba89d040a..f4428f162 100644 --- a/translations/vi/7-bank-project/4-state-management/README.md +++ b/translations/vi/7-bank-project/4-state-management/README.md @@ -190,7 +190,7 @@ Giống như thiết kế ngăn cách của Titanic tưởng chừng như mạnh Thay vì chạy vòng quanh, chúng ta sẽ tạo một hệ thống **quản lý trạng thái tập trung**. Hãy nghĩ về nó như có một người thực sự tổ chức chịu trách nhiệm về tất cả những thứ quan trọng: -![Sơ đồ hiển thị luồng dữ liệu giữa HTML, hành động người dùng và trạng thái](../../../../translated_images/data-flow.fa2354e0908fecc89b488010dedf4871418a992edffa17e73441d257add18da4.vi.png) +![Sơ đồ hiển thị luồng dữ liệu giữa HTML, hành động người dùng và trạng thái](../../../../translated_images/data-flow.fa2354e0908fecc8.vi.png) ```mermaid flowchart TD @@ -803,7 +803,7 @@ Thử thách này sẽ giúp bạn suy nghĩ như một nhà phát triển chuy Dưới đây là kết quả ví dụ sau khi hoàn thành bài tập: -![Ảnh chụp màn hình hiển thị hộp thoại "Thêm giao dịch" ví dụ](../../../../translated_images/dialog.93bba104afeb79f12f65ebf8f521c5d64e179c40b791c49c242cf15f7e7fab15.vi.png) +![Ảnh chụp màn hình hiển thị hộp thoại "Thêm giao dịch" ví dụ](../../../../translated_images/dialog.93bba104afeb79f1.vi.png) --- diff --git a/translations/vi/7-bank-project/4-state-management/assignment.md b/translations/vi/7-bank-project/4-state-management/assignment.md index 4a74ef679..be9bcc4b5 100644 --- a/translations/vi/7-bank-project/4-state-management/assignment.md +++ b/translations/vi/7-bank-project/4-state-management/assignment.md @@ -112,7 +112,7 @@ Tham khảo [tài liệu API máy chủ](../api/README.md) để biết: **Kết quả mong đợi:** Sau khi hoàn thành bài tập này, ứng dụng ngân hàng của bạn sẽ có tính năng "Thêm giao dịch" hoạt động đầy đủ, trông chuyên nghiệp và hoạt động mượt mà: -![Ảnh chụp màn hình hiển thị ví dụ về hộp thoại "Thêm giao dịch"](../../../../translated_images/dialog.93bba104afeb79f12f65ebf8f521c5d64e179c40b791c49c242cf15f7e7fab15.vi.png) +![Ảnh chụp màn hình hiển thị ví dụ về hộp thoại "Thêm giao dịch"](../../../../translated_images/dialog.93bba104afeb79f1.vi.png) ## Kiểm tra triển khai của bạn diff --git a/translations/vi/7-bank-project/README.md b/translations/vi/7-bank-project/README.md index 07315aafc..ab5bdf23a 100644 --- a/translations/vi/7-bank-project/README.md +++ b/translations/vi/7-bank-project/README.md @@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA: Trong dự án này, bạn sẽ học cách xây dựng một ngân hàng giả tưởng. Những bài học này bao gồm hướng dẫn về cách thiết kế ứng dụng web và cung cấp các tuyến đường, xây dựng biểu mẫu, quản lý trạng thái, và lấy dữ liệu từ API để truy xuất thông tin của ngân hàng. -| ![Screen1](../../../translated_images/screen1.baccbba0f1f93364672eb250d2fbd21574bb1caf79a2155022dc098a741cbdfe.vi.png) | ![Screen2](../../../translated_images/screen2.123c82a831a1d14ab2061994be2fa5de9cec1ce651047217d326d4773a6348e4.vi.png) | +| ![Screen1](../../../translated_images/screen1.baccbba0f1f93364.vi.png) | ![Screen2](../../../translated_images/screen2.123c82a831a1d14a.vi.png) | |--------------------------------|--------------------------------| ## Các bài học diff --git a/translations/vi/8-code-editor/1-using-a-code-editor/README.md b/translations/vi/8-code-editor/1-using-a-code-editor/README.md index 95ab8e488..aa81c2923 100644 --- a/translations/vi/8-code-editor/1-using-a-code-editor/README.md +++ b/translations/vi/8-code-editor/1-using-a-code-editor/README.md @@ -185,7 +185,7 @@ Giống như cách điện thoại của Alexander Graham Bell kết nối các Khi mọi thứ đã tải lên, bạn sẽ thấy một không gian làm việc sạch sẽ được thiết kế để giúp bạn tập trung vào điều quan trọng – mã của bạn! -![Giao diện mặc định của VSCode.dev](../../../../translated_images/default-vscode-dev.5d06881d65c1b3234ce50cd9ed3b0028e6031ad5f5b441bcbed96bfa6311f6d0.vi.png) +![Giao diện mặc định của VSCode.dev](../../../../translated_images/default-vscode-dev.5d06881d65c1b323.vi.png) **Đây là chuyến tham quan khu vực của bạn:** - **Thanh Hoạt Động** (dải bên trái): Điều hướng chính của bạn với Explorer 📁, Tìm kiếm 🔍, Source Control 🌿, Tiện ích 🧩, và Cài đặt ⚙️ @@ -233,7 +233,7 @@ Khả năng này cho phép truy cập ngay lập tức vào bất kỳ kho công 1. Truy cập [vscode.dev](https://vscode.dev) nếu bạn chưa ở đó 2. Tìm nút "Open Remote Repository" trên màn hình chào mừng và nhấp vào nó - ![Mở kho từ xa](../../../../translated_images/open-remote-repository.bd9c2598b8949e7fc283cdfc8f4050c6205a7c7c6d3f78c4b135115d037d6fa2.vi.png) + ![Mở kho từ xa](../../../../translated_images/open-remote-repository.bd9c2598b8949e7f.vi.png) 3. Dán vào bất kỳ URL kho GitHub nào (thử cái này: `https://github.com/microsoft/Web-Dev-For-Beginners`) 4. Nhấn Enter và xem điều kỳ diệu xảy ra! @@ -242,7 +242,7 @@ Khả năng này cho phép truy cập ngay lập tức vào bất kỳ kho công Muốn cảm thấy như một phù thủy lập trình? Thử phím tắt này: Ctrl+Shift+P (hoặc Cmd+Shift+P trên Mac) để mở Command Palette: -![Command Palette](../../../../translated_images/palette-menu.4946174e07f426226afcdad707d19b8d5150e41591c751c45b5dee213affef91.vi.png) +![Command Palette](../../../../translated_images/palette-menu.4946174e07f42622.vi.png) **Command Palette giống như có một công cụ tìm kiếm cho mọi thứ bạn có thể làm:** - Gõ "open remote" và nó sẽ tìm trình mở kho cho bạn @@ -304,7 +304,7 @@ Giống như việc tổ chức các bản vẽ trong văn phòng kiến trúc s 3. Nhập tên tệp bao gồm phần mở rộng phù hợp (`style.css`, `script.js`, `index.html`) 4. Nhấn Enter để tạo tệp -![Tạo tệp mới](../../../../translated_images/create-new-file.2814e609c2af9aeb6c6fd53156c503ac91c3d538f9cac63073b2dd4a7631f183.vi.png) +![Tạo tệp mới](../../../../translated_images/create-new-file.2814e609c2af9aeb.vi.png) **Quy ước đặt tên:** - Sử dụng tên mô tả chỉ ra mục đích của tệp @@ -322,7 +322,7 @@ Giống như việc tổ chức các bản vẽ trong văn phòng kiến trúc s 2. Bắt đầu gõ và xem VSCode.dev hỗ trợ bạn với màu sắc, gợi ý và phát hiện lỗi 3. Lưu công việc của bạn bằng Ctrl+S (Windows/Linux) hoặc Cmd+S (Mac) – mặc dù nó cũng tự động lưu! -![Chỉnh sửa tệp trong VSCode.dev](../../../../translated_images/edit-a-file.52c0ee665ef19f08119d62d63f395dfefddc0a4deb9268d73bfe791f52c5807a.vi.png) +![Chỉnh sửa tệp trong VSCode.dev](../../../../translated_images/edit-a-file.52c0ee665ef19f08.vi.png) **Những điều thú vị xảy ra khi bạn lập trình:** - Mã của bạn được tô màu đẹp mắt để dễ đọc @@ -343,7 +343,7 @@ Giống như cách các nhà khảo cổ tạo hồ sơ chi tiết về các l 2. Các tệp đã chỉnh sửa xuất hiện trong phần "Changes" 3. Mã màu chỉ ra loại thay đổi: xanh lá cho bổ sung, đỏ cho xóa -![Xem các thay đổi trong Source Control](../../../../translated_images/working-tree.c58eec08e6335c79cc708c0c220c0b7fea61514bd3c7fb7471905a864aceac7c.vi.png) +![Xem các thay đổi trong Source Control](../../../../translated_images/working-tree.c58eec08e6335c79.vi.png) **Lưu công việc của bạn (quy trình commit):** @@ -438,7 +438,7 @@ Marketplace của extensions được tổ chức rất tốt, vì vậy bạn s 2. Duyệt qua hoặc tìm kiếm một thứ gì đó cụ thể 3. Nhấp vào bất kỳ thứ gì trông thú vị để tìm hiểu thêm về nó -![Giao diện marketplace của extensions](../../../../translated_images/extensions.eca0e0c7f59a10b5c88be7fe24b3e32cca6b6058b35a49026c3a9d80b1813b7c.vi.png) +![Giao diện marketplace của extensions](../../../../translated_images/extensions.eca0e0c7f59a10b5.vi.png) **Những gì bạn sẽ thấy ở đó:** @@ -491,7 +491,7 @@ Hầu hết các extensions đi kèm với các cài đặt bạn có thể đi 3. Chọn "Extension Settings" từ menu thả xuống 4. Điều chỉnh mọi thứ cho đến khi cảm thấy phù hợp với quy trình làm việc của bạn -![Tùy chỉnh cài đặt extension](../../../../translated_images/extension-settings.21c752ae4f4cdb78a867f140ccd0680e04619d0c44bb4afb26373e54b829d934.vi.png) +![Tùy chỉnh cài đặt extension](../../../../translated_images/extension-settings.21c752ae4f4cdb78.vi.png) **Những điều phổ biến bạn có thể muốn điều chỉnh:** - Cách mã của bạn được định dạng (tab so với khoảng trắng, độ dài dòng, v.v.) diff --git a/translations/vi/8-code-editor/1-using-a-code-editor/assignment.md b/translations/vi/8-code-editor/1-using-a-code-editor/assignment.md index 4098f32c0..4324ea2f9 100644 --- a/translations/vi/8-code-editor/1-using-a-code-editor/assignment.md +++ b/translations/vi/8-code-editor/1-using-a-code-editor/assignment.md @@ -78,7 +78,7 @@ Vì VSCode.dev yêu cầu ít nhất một tệp để mở kho lưu trữ, chú 4. **Viết** thông điệp commit: "Thêm cấu trúc HTML ban đầu" 5. **Nhấn** "Commit new file" để lưu thay đổi của bạn -![Tạo tệp ban đầu trên GitHub](../../../../translated_images/new-file-github.com.c886796d800e8056561829a181be1382c5303da9d902d8b2dd82b68a4806e21f.vi.png) +![Tạo tệp ban đầu trên GitHub](../../../../translated_images/new-file-github.com.c886796d800e8056.vi.png) **Những gì thiết lập ban đầu này đạt được:** - **Thiết lập** cấu trúc tài liệu HTML5 đúng chuẩn với các phần tử ngữ nghĩa @@ -104,7 +104,7 @@ Bây giờ nền tảng kho lưu trữ của bạn đã được thiết lập, ✅ **Chỉ báo thành công**: Bạn sẽ thấy các tệp dự án của mình trong thanh bên Explorer và `index.html` có sẵn để chỉnh sửa trong khu vực chỉnh sửa chính. -![Dự án được tải trong VSCode.dev](../../../../translated_images/project-on-vscode.dev.e79815a9a95ee7feac72ebe5c941c91279716be37c575dbdbf2f43bea2c7d8b6.vi.png) +![Dự án được tải trong VSCode.dev](../../../../translated_images/project-on-vscode.dev.e79815a9a95ee7fe.vi.png) **Những gì bạn sẽ thấy trong giao diện:** - **Thanh bên Explorer**: **Hiển thị** các tệp và cấu trúc thư mục của kho lưu trữ @@ -448,7 +448,7 @@ Các tiện ích mở rộng cải thiện trải nghiệm phát triển của b **Kết quả ngay sau khi cài đặt:** Khi CodeSwing được cài đặt, bạn sẽ thấy một bản xem trước trực tiếp của website sơ yếu lý lịch xuất hiện trong trình chỉnh sửa. Điều này cho phép bạn thấy chính xác cách website của bạn trông như thế nào khi thực hiện các thay đổi. -![Tiện ích CodeSwing hiển thị bản xem trước trực tiếp](../../../../translated_images/after-codeswing-extension-pb.0ebddddcf73b550994947a9084e35e2836c713ae13839d49628e3c764c1cfe83.vi.png) +![Tiện ích CodeSwing hiển thị bản xem trước trực tiếp](../../../../translated_images/after-codeswing-extension-pb.0ebddddcf73b5509.vi.png) **Hiểu giao diện được cải tiến:** - **Chế độ xem chia đôi**: **Hiển thị** mã của bạn ở một bên và bản xem trước trực tiếp ở bên kia diff --git a/translations/vi/9-chat-project/README.md b/translations/vi/9-chat-project/README.md index adb54e8cd..57c5e5e25 100644 --- a/translations/vi/9-chat-project/README.md +++ b/translations/vi/9-chat-project/README.md @@ -61,7 +61,7 @@ print(response.choices[0].message.content) Dưới đây là hình ảnh dự án hoàn chỉnh của bạn: -![Giao diện ứng dụng chat hiển thị cuộc trò chuyện giữa người dùng và trợ lý AI](../../../translated_images/screenshot.0a1ee0d123df681b4501eb53ffb267519fcc20aa653eabecef1e7561ddfb1cab.vi.png) +![Giao diện ứng dụng chat hiển thị cuộc trò chuyện giữa người dùng và trợ lý AI](../../../translated_images/screenshot.0a1ee0d123df681b.vi.png) ## 🗺️ Hành trình học tập của bạn qua phát triển ứng dụng AI @@ -194,7 +194,7 @@ mindmap **Nguyên tắc cốt lõi**: Phát triển ứng dụng AI kết hợp các kỹ năng phát triển web truyền thống với tích hợp dịch vụ AI, tạo ra các ứng dụng thông minh mang lại cảm giác tự nhiên và phản hồi nhanh cho người dùng. -![Giao diện GitHub Models AI Playground với khu vực chọn mô hình và thử nghiệm](../../../translated_images/playground.d2b927122224ff8ff4028fc842176e353c339147d8925455f36c92fb1655c477.vi.png) +![Giao diện GitHub Models AI Playground với khu vực chọn mô hình và thử nghiệm](../../../translated_images/playground.d2b927122224ff8f.vi.png) **Dưới đây là những gì làm cho playground trở nên hữu ích:** - **Thử nghiệm** các mô hình AI khác nhau như GPT-4o-mini, Claude và các mô hình khác (tất cả đều miễn phí!) @@ -204,7 +204,7 @@ mindmap Sau khi bạn đã thử nghiệm một chút, chỉ cần nhấp vào tab "Code" và chọn ngôn ngữ lập trình của bạn để nhận mã triển khai mà bạn cần. -![Lựa chọn playground hiển thị các tùy chọn tạo mã cho các ngôn ngữ lập trình khác nhau](../../../translated_images/playground-choice.1d23ba7d407f47584c9f446c77f0bcf70cae794cc9c8d7849a3cca4a3693e6c4.vi.png) +![Lựa chọn playground hiển thị các tùy chọn tạo mã cho các ngôn ngữ lập trình khác nhau](../../../translated_images/playground-choice.1d23ba7d407f4758.vi.png) ## Thiết lập tích hợp backend Python @@ -2352,14 +2352,14 @@ Bạn muốn thử dự án này trong môi trường phát triển trên đám - **Đi tới** [Web Dev For Beginners repository](https://github.com/microsoft/Web-Dev-For-Beginners) - **Nhấn** "Use this template" ở góc trên bên phải (đảm bảo bạn đã đăng nhập vào GitHub) -![Giao diện tạo từ mẫu hiển thị nút "Use this template" màu xanh lá cây](../../../translated_images/template.67ad477109d29a2b04599a83c964c87fcde041256d4f04d3589cbb00c696f76c.vi.png) +![Giao diện tạo từ mẫu hiển thị nút "Use this template" màu xanh lá cây](../../../translated_images/template.67ad477109d29a2b.vi.png) **Bước 2: Khởi chạy Codespaces** - **Mở** repository vừa tạo của bạn - **Nhấn** nút "Code" màu xanh lá cây và chọn "Codespaces" - **Chọn** "Create codespace on main" để bắt đầu môi trường phát triển của bạn -![Giao diện tạo codespace với các tùy chọn khởi chạy môi trường phát triển trên đám mây](../../../translated_images/codespace.bcecbdf5d2747d3d17da67a78ad911c8853d68102e34748ec372cde1e9236e1d.vi.png) +![Giao diện tạo codespace với các tùy chọn khởi chạy môi trường phát triển trên đám mây](../../../translated_images/codespace.bcecbdf5d2747d3d.vi.png) **Bước 3: Cấu hình môi trường** Khi Codespace của bạn tải xong, bạn sẽ có quyền truy cập vào: diff --git a/translations/vi/README.md b/translations/vi/README.md index ea89c067c..0ef3009bb 100644 --- a/translations/vi/README.md +++ b/translations/vi/README.md @@ -1,265 +1,276 @@ -[![Giấy phép GitHub](https://img.shields.io/github/license/microsoft/Web-Dev-For-Beginners.svg)](https://github.com/microsoft/Web-Dev-For-Beginners/blob/master/LICENSE) -[![Người đóng góp GitHub](https://img.shields.io/github/contributors/microsoft/Web-Dev-For-Beginners.svg)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/graphs/contributors/) -[![Vấn đề GitHub](https://img.shields.io/github/issues/microsoft/Web-Dev-For-Beginners.svg)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/issues/) -[![Yêu cầu kéo GitHub](https://img.shields.io/github/issues-pr/microsoft/Web-Dev-For-Beginners.svg)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/pulls/) -[![Chào mừng PRs](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) +[![GitHub license](https://img.shields.io/github/license/microsoft/Web-Dev-For-Beginners.svg)](https://github.com/microsoft/Web-Dev-For-Beginners/blob/master/LICENSE) +[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/Web-Dev-For-Beginners.svg)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/graphs/contributors/) +[![GitHub issues](https://img.shields.io/github/issues/microsoft/Web-Dev-For-Beginners.svg)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/issues/) +[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/Web-Dev-For-Beginners.svg)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/pulls/) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![Người theo dõi GitHub](https://img.shields.io/github/watchers/microsoft/Web-Dev-For-Beginners.svg?style=social&label=Watch&maxAge=2592000)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/watchers/) -[![Fork GitHub](https://img.shields.io/github/forks/microsoft/Web-Dev-For-Beginners.svg?style=social&label=Fork&maxAge=2592000)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/network/) -[![Sao GitHub](https://img.shields.io/github/stars/microsoft/Web-Dev-For-Beginners.svg?style=social&label=Star&maxAge=2592000)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/stargazers/) +[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/Web-Dev-For-Beginners.svg?style=social&label=Watch&maxAge=2592000)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/watchers/) +[![GitHub forks](https://img.shields.io/github/forks/microsoft/Web-Dev-For-Beginners.svg?style=social&label=Fork&maxAge=2592000)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/network/) +[![GitHub stars](https://img.shields.io/github/stars/microsoft/Web-Dev-For-Beginners.svg?style=social&label=Star&maxAge=2592000)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/stargazers/) -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) + +# Phát triển Web cho Người mới bắt đầu - Chương trình học -# Phát triển Web cho Người mới bắt đầu - Một chương trình học +Học những điều cơ bản về phát triển web với khóa học toàn diện 12 tuần do Microsoft Cloud Advocates thiết kế. Mỗi trong số 24 bài học đào sâu về JavaScript, CSS, và HTML thông qua các dự án thực hành như terrariums, tiện ích mở rộng trình duyệt, và trò chơi không gian. Tham gia với các bài kiểm tra, thảo luận, và bài tập thực tế. Nâng cao kỹ năng và tối ưu hóa việc ghi nhớ kiến thức với phương pháp dựa trên dự án hiệu quả của chúng tôi. Bắt đầu hành trình lập trình của bạn ngay hôm nay! -Học các kiến thức cơ bản về phát triển web với khóa học 12 tuần toàn diện của Microsoft Cloud Advocates. Mỗi bài học trong 24 bài sẽ đi sâu vào JavaScript, CSS và HTML thông qua các dự án thực hành như làm terrarium, tiện ích mở rộng trình duyệt và trò chơi không gian. Tham gia các bài kiểm tra, thảo luận và bài tập thực hành. Nâng cao kỹ năng và tối ưu hóa việc ghi nhớ kiến thức của bạn với phương pháp học dựa trên dự án hiệu quả của chúng tôi. Bắt đầu hành trình lập trình của bạn ngay hôm nay! +Tham gia Cộng đồng Discord Azure AI Foundry + +[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Tham gia cộng đồng Azure AI Foundry Discord +Làm theo các bước sau để bắt đầu sử dụng các tài nguyên này: +1. **Fork Kho lưu trữ**: Nhấp vào [![GitHub forks](https://img.shields.io/github/forks/microsoft/Web-Dev-For-beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/fork) +2. **Clone Kho lưu trữ**: `git clone https://github.com/microsoft/Web-Dev-For-Beginners.git` +3. [**Tham gia Discord Azure AI Foundry và gặp gỡ các chuyên gia cũng như các nhà phát triển khác**](https://discord.com/invite/ByRwuEEgH4) -[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) +### 🌐 Hỗ trợ Đa ngôn ngữ -Thực hiện các bước sau để bắt đầu sử dụng tài nguyên này: -1. **Fork kho lưu trữ**: Nhấp vào [![Fork GitHub](https://img.shields.io/github/forks/microsoft/Web-Dev-For-beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/fork) -2. **Clone kho lưu trữ**: `git clone https://github.com/microsoft/Web-Dev-For-Beginners.git` -3. [**Tham gia Azure AI Foundry Discord và gặp gỡ các chuyên gia và nhà phát triển khác**](https://discord.com/invite/ByRwuEEgH4) +#### Hỗ trợ qua GitHub Action (Tự động & Luôn được cập nhật) -### 🌐 Hỗ trợ đa ngôn ngữ + +[Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](../my/README.md) | [Chinese (Simplified)](../zh/README.md) | [Chinese (Traditional, Hong Kong)](../hk/README.md) | [Chinese (Traditional, Macau)](../mo/README.md) | [Chinese (Traditional, Taiwan)](../tw/README.md) | [Croatian](../hr/README.md) | [Czech](../cs/README.md) | [Danish](../da/README.md) | [Dutch](../nl/README.md) | [Estonian](../et/README.md) | [Finnish](../fi/README.md) | [French](../fr/README.md) | [German](../de/README.md) | [Greek](../el/README.md) | [Hebrew](../he/README.md) | [Hindi](../hi/README.md) | [Hungarian](../hu/README.md) | [Indonesian](../id/README.md) | [Italian](../it/README.md) | [Japanese](../ja/README.md) | [Kannada](../kn/README.md) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/README.md) | [Malayalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigerian Pidgin](../pcm/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../br/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](./README.md) -#### Được hỗ trợ qua GitHub Action (Tự động & Luôn cập nhật) +> **Ưu tiên Clone về máy tính?** - -[Tiếng Ả Rập](../ar/README.md) | [Tiếng Bengal](../bn/README.md) | [Tiếng Bulgaria](../bg/README.md) | [Tiếng Miến Điện (Myanmar)](../my/README.md) | [Tiếng Trung (Giản thể)](../zh/README.md) | [Tiếng Trung (Phồn thể, Hồng Kông)](../hk/README.md) | [Tiếng Trung (Phồn thể, Macau)](../mo/README.md) | [Tiếng Trung (Phồn thể, Đài Loan)](../tw/README.md) | [Tiếng Croatia](../hr/README.md) | [Tiếng Séc](../cs/README.md) | [Tiếng Đan Mạch](../da/README.md) | [Tiếng Hà Lan](../nl/README.md) | [Tiếng Estonia](../et/README.md) | [Tiếng Phần Lan](../fi/README.md) | [Tiếng Pháp](../fr/README.md) | [Tiếng Đức](../de/README.md) | [Tiếng Hy Lạp](../el/README.md) | [Tiếng Do Thái](../he/README.md) | [Tiếng Hindi](../hi/README.md) | [Tiếng Hungary](../hu/README.md) | [Tiếng Indonesia](../id/README.md) | [Tiếng Ý](../it/README.md) | [Tiếng Nhật](../ja/README.md) | [Tiếng Hàn](../ko/README.md) | [Tiếng Litva](../lt/README.md) | [Tiếng Mã Lai](../ms/README.md) | [Tiếng Marathi](../mr/README.md) | [Tiếng Nepal](../ne/README.md) | [Tiếng Na Uy](../no/README.md) | [Tiếng Ba Tư (Farsi)](../fa/README.md) | [Tiếng Ba Lan](../pl/README.md) | [Tiếng Bồ Đào Nha (Brazil)](../br/README.md) | [Tiếng Bồ Đào Nha (Bồ Đào Nha)](../pt/README.md) | [Tiếng Punjab (Gurmukhi)](../pa/README.md) | [Tiếng Romania](../ro/README.md) | [Tiếng Nga](../ru/README.md) | [Tiếng Serbia (Cyrillic)](../sr/README.md) | [Tiếng Slovak](../sk/README.md) | [Tiếng Slovenia](../sl/README.md) | [Tiếng Tây Ban Nha](../es/README.md) | [Tiếng Swahili](../sw/README.md) | [Tiếng Thụy Điển](../sv/README.md) | [Tiếng Tagalog (Philippines)](../tl/README.md) | [Tiếng Tamil](../ta/README.md) | [Tiếng Thái](../th/README.md) | [Tiếng Thổ Nhĩ Kỳ](../tr/README.md) | [Tiếng Ukraina](../uk/README.md) | [Tiếng Urdu](../ur/README.md) | [Tiếng Việt](./README.md) - +> Kho lưu trữ này bao gồm hơn 50 bản dịch ngôn ngữ làm tăng đáng kể kích thước tải xuống. Để clone mà không có bản dịch, hãy sử dụng sparse checkout: +> ```bash +> git clone --filter=blob:none --sparse https://github.com/microsoft/Web-Dev-For-Beginners.git +> cd Web-Dev-For-Beginners +> git sparse-checkout set --no-cone '/*' '!translations' '!translated_images' +> ``` +> Điều này cung cấp cho bạn tất cả những gì bạn cần để hoàn thành khóa học với tốc độ tải xuống nhanh hơn nhiều. + -**Nếu bạn muốn có thêm các ngôn ngữ dịch, danh sách các ngôn ngữ được hỗ trợ có [tại đây](https://github.com/Azure/co-op-translator/blob/main/getting_started/supported-languages.md)** +**Nếu bạn muốn có thêm các ngôn ngữ dịch hỗ trợ được liệt kê [ở đây](https://github.com/Azure/co-op-translator/blob/main/getting_started/supported-languages.md)** -[![Mở trong Visual Studio Code](https://img.shields.io/static/v1?logo=visualstudiocode&label=&message=Open%20in%20Visual%20Studio%20Code&labelColor=2c2c32&color=007acc&logoColor=007acc)](https://open.vscode.dev/microsoft/Web-Dev-For-Beginners) +[![Open in Visual Studio Code](https://img.shields.io/static/v1?logo=visualstudiocode&label=&message=Open%20in%20Visual%20Studio%20Code&labelColor=2c2c32&color=007acc&logoColor=007acc)](https://open.vscode.dev/microsoft/Web-Dev-For-Beginners) -#### 🧑‍🎓 _Bạn là học sinh/sinh viên?_ +#### 🧑‍🎓 _Bạn là sinh viên?_ -Truy cập [**Trang Hub dành cho Học sinh**](https://docs.microsoft.com/learn/student-hub/?WT.mc_id=academic-77807-sagibbon) nơi bạn sẽ tìm thấy tài nguyên cho người mới bắt đầu, các gói dành cho học sinh và thậm chí là cách nhận voucher chứng chỉ miễn phí. Đây là trang bạn nên đánh dấu và kiểm tra thường xuyên vì nội dung sẽ được thay đổi hàng tháng. +Truy cập [**Trang Trung tâm Sinh viên**](https://docs.microsoft.com/learn/student-hub/?WT.mc_id=academic-77807-sagibbon) nơi bạn sẽ tìm thấy tài nguyên cho người mới bắt đầu, bộ dụng cụ dành cho sinh viên và thậm chí cả cách nhận phiếu chứng nhận miễn phí. Đây là trang bạn nên đánh dấu và kiểm tra thường xuyên vì chúng tôi thay đổi nội dung hàng tháng. -### 📣 Thông báo - Thử thách chế độ Agent của GitHub Copilot mới để hoàn thành! +### 📣 Thông báo - Thử thách mới về Chế độ GitHub Copilot Agent để hoàn thành! -Thử thách mới đã được thêm, tìm "Thử thách GitHub Copilot Agent 🚀" trong hầu hết các chương. Đây là một thử thách mới để bạn hoàn thành bằng cách sử dụng GitHub Copilot và chế độ Agent. Nếu bạn chưa từng sử dụng chế độ Agent trước đây, nó không chỉ có khả năng tạo văn bản mà còn có thể tạo và chỉnh sửa tệp, chạy lệnh và nhiều hơn nữa. +Thử thách mới đã được thêm, tìm "GitHub Copilot Agent Challenge 🚀" trong hầu hết các chương. Đây là thử thách mới dành cho bạn hoàn thành bằng cách sử dụng GitHub Copilot và Chế độ Agent. Nếu bạn chưa từng dùng Chế độ Agent trước đây, nó không chỉ tạo ra văn bản mà còn có thể tạo và chỉnh sửa tệp, chạy lệnh và nhiều hơn thế. -### 📣 Thông báo - _Dự án mới để xây dựng bằng AI Tạo sinh_ +### 📣 Thông báo - _Dự án mới xây dựng sử dụng AI Tạo sinh_ -Dự án Trợ lý AI mới vừa được thêm, hãy xem [dự án](./09-chat-project/README.md) +Dự án Trợ lý AI mới vừa được thêm, xem ngay [dự án](./9-chat-project/README.md) -### 📣 Thông báo - _Chương trình học mới_ về AI Tạo sinh cho JavaScript vừa được phát hành +### 📣 Thông báo - _Chương trình học mới_ về Generative AI cho JavaScript vừa được phát hành -Đừng bỏ lỡ chương trình học AI Tạo sinh mới của chúng tôi! +Đừng bỏ lỡ chương trình học Generative AI mới của chúng tôi! -Truy cập [https://aka.ms/genai-js-course](https://aka.ms/genai-js-course) để bắt đầu! +Truy cập [https://aka.ms/genai-js-course](https://aka.ms/genai-js-course) để bắt đầu! -![Nền](../../translated_images/background.148a8d43afde57303419a663f50daf586681bc2fabf833f66ef6954073983c66.vi.png) +![Background](../../translated_images/background.148a8d43afde5730.vi.png) -- Các bài học bao gồm mọi thứ từ cơ bản đến RAG. -- Tương tác với các nhân vật lịch sử bằng GenAI và ứng dụng đồng hành của chúng tôi. -- Câu chuyện thú vị và hấp dẫn, bạn sẽ được du hành thời gian! +- Các bài học bao phủ từ cơ bản đến RAG. +- Tương tác với các nhân vật lịch sử bằng GenAI và ứng dụng đồng hành của chúng tôi. +- Câu chuyện thú vị và hấp dẫn, bạn sẽ du hành thời gian! -![nhân vật](../../translated_images/character.5c0dd8e067ffd693c16e2c5b7412ab075a2215ce31f998305639fa3a05e14fbe.vi.png) +![character](../../translated_images/character.5c0dd8e067ffd693.vi.png) -Mỗi bài học bao gồm một bài tập để hoàn thành, một bài kiểm tra kiến thức và một thử thách để hướng dẫn bạn học các chủ đề như: -- Tạo prompt và kỹ thuật tạo prompt -- Ứng dụng tạo văn bản và hình ảnh -- Ứng dụng tìm kiếm +Mỗi bài học bao gồm một bài tập hoàn thành, kiểm tra kiến thức và một thử thách để hướng dẫn bạn học các chủ đề như: +- Lời nhắc và kỹ thuật tạo lời nhắc +- Tạo ứng dụng văn bản và hình ảnh +- Ứng dụng tìm kiếm -Truy cập [https://aka.ms/genai-js-course](https://aka.ms/genai-js-course) để bắt đầu! +Truy cập [https://aka.ms/genai-js-course](../../[https:/aka.ms/genai-js-course) để bắt đầu! -## 🌱 Bắt đầu -> **Giáo viên**, chúng tôi đã [bao gồm một số gợi ý](for-teachers.md) về cách sử dụng chương trình học này. Chúng tôi rất mong nhận được phản hồi của bạn [trong diễn đàn thảo luận của chúng tôi](https://github.com/microsoft/Web-Dev-For-Beginners/discussions/categories/teacher-corner)! -**[Người học](https://aka.ms/student-page/?WT.mc_id=academic-77807-sagibbon)**, với mỗi bài học, hãy bắt đầu bằng bài kiểm tra trước bài giảng và tiếp tục đọc tài liệu bài giảng, hoàn thành các hoạt động khác nhau và kiểm tra hiểu biết của bạn với bài kiểm tra sau bài giảng. +## 🌱 Bắt đầu -Để nâng cao trải nghiệm học tập của bạn, hãy kết nối với bạn bè để cùng làm các dự án! Khuyến khích thảo luận trong [diễn đàn thảo luận của chúng tôi](https://github.com/microsoft/Web-Dev-For-Beginners/discussions) nơi đội ngũ quản trị viên của chúng tôi sẽ sẵn sàng trả lời câu hỏi của bạn. +> **Giáo viên**, chúng tôi đã [đưa ra một số gợi ý](for-teachers.md) về cách sử dụng chương trình học này. Chúng tôi rất mong nhận được phản hồi của bạn [trong diễn đàn thảo luận của chúng tôi](https://github.com/microsoft/Web-Dev-For-Beginners/discussions/categories/teacher-corner)! -Để mở rộng kiến thức của bạn, chúng tôi khuyến khích bạn khám phá [Microsoft Learn](https://learn.microsoft.com/users/wirelesslife/collections/p1ddcy5jwy0jkm?WT.mc_id=academic-77807-sagibbon) để tìm thêm tài liệu học tập. +**[Người học](https://aka.ms/student-page/?WT.mc_id=academic-77807-sagibbon)**, với mỗi bài học, bắt đầu với bài kiểm tra trước bài giảng và tiếp tục đọc tài liệu bài giảng, hoàn thành các hoạt động đa dạng và kiểm tra hiểu biết của bạn bằng bài kiểm tra sau bài giảng. -### 📋 Thiết lập môi trường của bạn +Để nâng cao trải nghiệm học tập, hãy kết nối với bạn bè để cùng làm các dự án! Thảo luận được khuyến khích trong [diễn đàn thảo luận](https://github.com/microsoft/Web-Dev-For-Beginners/discussions) nơi đội ngũ điều hành của chúng tôi sẽ hỗ trợ trả lời câu hỏi của bạn. -Chương trình học này đã có sẵn môi trường phát triển! Khi bạn bắt đầu, bạn có thể chọn chạy chương trình học trong một [Codespace](https://github.com/features/codespaces/) (_một môi trường dựa trên trình duyệt, không cần cài đặt_), hoặc trên máy tính của bạn bằng cách sử dụng trình soạn thảo văn bản như [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon). +Để mở rộng kiến thức, chúng tôi khuyên bạn nên khám phá [Microsoft Learn](https://learn.microsoft.com/users/wirelesslife/collections/p1ddcy5jwy0jkm?WT.mc_id=academic-77807-sagibbon) để có thêm tài liệu học tập. -#### Tạo kho lưu trữ của bạn -Để dễ dàng lưu công việc của bạn, chúng tôi khuyến nghị bạn tạo một bản sao của kho lưu trữ này. Bạn có thể làm điều này bằng cách nhấp vào nút **Use this template** ở đầu trang. Điều này sẽ tạo một kho lưu trữ mới trong tài khoản GitHub của bạn với một bản sao của chương trình học. +### 📋 Thiết lập môi trường -Thực hiện các bước sau: -1. **Fork kho lưu trữ**: Nhấp vào nút "Fork" ở góc trên bên phải của trang này. -2. **Clone kho lưu trữ**: `git clone https://github.com/microsoft/Web-Dev-For-Beginners.git` +Chương trình học này đã có sẵn môi trường phát triển! Khi bắt đầu, bạn có thể chọn chạy chương trình trong [Codespace](https://github.com/features/codespaces/) (_một môi trường trên trình duyệt không cần cài đặt_), hoặc chạy cục bộ trên máy tính sử dụng trình soạn thảo văn bản như [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon). -#### Chạy chương trình học trong Codespace +#### Tạo kho lưu trữ của bạn +Để dễ dàng lưu trữ công việc của bạn, bạn nên tạo bản sao riêng của kho lưu trữ này. Bạn có thể làm điều đó bằng cách nhấp vào nút **Use this template** ở đầu trang. Điều này sẽ tạo một kho lưu trữ mới trong tài khoản GitHub của bạn với bản sao chương trình học. -Trong bản sao kho lưu trữ mà bạn đã tạo, nhấp vào nút **Code** và chọn **Open with Codespaces**. Điều này sẽ tạo một Codespace mới để bạn làm việc. +Thực hiện theo các bước: +1. **Fork Kho lưu trữ**: Nhấp vào nút "Fork" ở góc trên bên phải của trang này. +2. **Clone Kho lưu trữ**: `git clone https://github.com/microsoft/Web-Dev-For-Beginners.git` -![Codespace](../../translated_images/createcodespace.0238bbf4d7a8d955fa8fa7f7b6602a3cb6499a24708fbee589f83211c5a613b7.vi.png) +#### Chạy chương trình trong Codespace -#### Chạy chương trình học trên máy tính của bạn +Trong bản sao kho lưu trữ bạn đã tạo, nhấp nút **Code** và chọn **Open with Codespaces**. Điều này sẽ tạo Codespace mới để bạn làm việc. -Để chạy chương trình học này trên máy tính của bạn, bạn sẽ cần một trình soạn thảo văn bản, một trình duyệt và một công cụ dòng lệnh. Bài học đầu tiên của chúng tôi, [Giới thiệu về Ngôn ngữ Lập trình và Công cụ](../../1-getting-started-lessons/1-intro-to-programming-languages), sẽ hướng dẫn bạn qua các tùy chọn khác nhau cho từng công cụ này để bạn chọn những gì phù hợp nhất với bạn. +![Codespace](../../translated_images/createcodespace.0238bbf4d7a8d955.vi.png) -Chúng tôi khuyến nghị sử dụng [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon) làm trình soạn thảo, nó cũng có một [Terminal](https://code.visualstudio.com/docs/terminal/basics/?WT.mc_id=academic-77807-sagibbon) tích hợp sẵn. Bạn có thể tải xuống Visual Studio Code [tại đây](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon). +#### Chạy chương trình trên máy tính của bạn -1. Clone kho lưu trữ của bạn về máy tính. Bạn có thể làm điều này bằng cách nhấp vào nút **Code** và sao chép URL: +Để chạy chương trình này trên máy tính, bạn cần trình soạn thảo văn bản, trình duyệt và công cụ dòng lệnh. Bài học đầu tiên của chúng tôi, [Giới thiệu về Ngôn ngữ Lập trình và Công cụ](../../1-getting-started-lessons/1-intro-to-programming-languages), sẽ hướng dẫn bạn các lựa chọn cho từng công cụ để bạn chọn phù hợp nhất. - [CodeSpace](./images/createcodespace.png) +Chúng tôi khuyên bạn dùng [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon) làm trình soạn thảo, trình soạn thảo này cũng có [Terminal](https://code.visualstudio.com/docs/terminal/basics/?WT.mc_id=academic-77807-sagibbon) tích hợp sẵn. Bạn có thể tải Visual Studio Code [tại đây](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon). - Sau đó, mở [Terminal](https://code.visualstudio.com/docs/terminal/basics/?WT.mc_id=academic-77807-sagibbon) trong [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon) và chạy lệnh sau, thay `` bằng URL bạn vừa sao chép: + +1. Clone kho lưu trữ về máy tính. Bạn có thể làm điều này bằng cách nhấp nút **Code** và sao chép URL: + + [CodeSpace](./images/createcodespace.png) +Sau đó, mở [Terminal](https://code.visualstudio.com/docs/terminal/basics/?WT.mc_id=academic-77807-sagibbon) trong [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon) và chạy lệnh sau, thay thế `` bằng URL bạn vừa sao chép: ```bash git clone ``` - -2. Mở thư mục trong Visual Studio Code. Bạn có thể làm điều này bằng cách nhấp vào **File** > **Open Folder** và chọn thư mục bạn vừa clone. -> Các tiện ích mở rộng Visual Studio Code được khuyến nghị: -> -> * [Live Server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer&WT.mc_id=academic-77807-sagibbon) - để xem trước các trang HTML trong Visual Studio Code +2. Mở thư mục trong Visual Studio Code. Bạn có thể làm điều này bằng cách nhấp vào **File** > **Open Folder** và chọn thư mục bạn vừa sao chép. + +> Các tiện ích mở rộng Visual Studio Code được khuyến nghị: +> +> * [Live Server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer&WT.mc_id=academic-77807-sagibbon) - để xem trước các trang HTML trong Visual Studio Code > * [Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot&WT.mc_id=academic-77807-sagibbon) - giúp bạn viết mã nhanh hơn ## 📂 Mỗi bài học bao gồm: -- sketchnote tùy chọn -- video bổ sung tùy chọn -- bài kiểm tra khởi động trước bài học +- có thể có sketchnote tùy chọn +- có thể có video bổ sung tùy chọn +- bài kiểm tra làm nóng trước bài học - bài học viết -- đối với các bài học dựa trên dự án, hướng dẫn từng bước để xây dựng dự án -- kiểm tra kiến thức +- đối với các bài học dựa trên dự án, hướng dẫn từng bước cách xây dựng dự án +- các bài kiểm tra kiến thức - một thử thách - tài liệu đọc bổ sung -- bài tập -- [bài kiểm tra sau bài học](https://ff-quizzes.netlify.app/web/) +- bài kiểm tra sau bài học [post-lesson quiz](https://ff-quizzes.netlify.app/web/) -> **Lưu ý về bài kiểm tra**: Tất cả các bài kiểm tra nằm trong thư mục Quiz-app, tổng cộng 48 bài kiểm tra, mỗi bài gồm ba câu hỏi. Chúng có sẵn [tại đây](https://ff-quizzes.netlify.app/web/) và ứng dụng kiểm tra có thể chạy cục bộ hoặc triển khai lên Azure; làm theo hướng dẫn trong thư mục `quiz-app`. +> **Lưu ý về các bài kiểm tra**: Tất cả các bài kiểm tra đều nằm trong thư mục Quiz-app, tổng cộng 48 bài kiểm tra với mỗi bài 3 câu hỏi. Chúng có sẵn [tại đây](https://ff-quizzes.netlify.app/web/); ứng dụng kiểm tra có thể chạy cục bộ hoặc triển khai lên Azure; làm theo hướng dẫn trong thư mục `quiz-app`. ## 🗃️ Các bài học -| | Tên Dự Án | Các Khái Niệm Được Dạy | Mục Tiêu Học Tập | Liên Kết Bài Học | Tác Giả | -| :-: | :------------------------------------------------------: | :--------------------------------------------------------------------: | ----------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------: | :---------------------: | -| 01 | Bắt Đầu | Giới thiệu về Lập trình và Công cụ hỗ trợ | Tìm hiểu các nguyên lý cơ bản đằng sau hầu hết các ngôn ngữ lập trình và phần mềm giúp các nhà phát triển chuyên nghiệp làm việc | [Giới thiệu về Ngôn ngữ Lập trình và Công cụ hỗ trợ](./1-getting-started-lessons/1-intro-to-programming-languages/README.md) | Jasmine | -| 02 | Bắt Đầu | Cơ bản về GitHub, bao gồm làm việc nhóm | Cách sử dụng GitHub trong dự án của bạn, cách cộng tác với người khác trên mã nguồn | [Giới thiệu về GitHub](./1-getting-started-lessons/2-github-basics/README.md) | Floor | -| 03 | Bắt Đầu | Khả năng truy cập | Tìm hiểu các nguyên tắc cơ bản về khả năng truy cập web | [Nguyên tắc cơ bản về Khả năng truy cập](./1-getting-started-lessons/3-accessibility/README.md) | Christopher | -| 04 | Cơ bản JS | Kiểu dữ liệu trong JavaScript | Các nguyên tắc cơ bản về kiểu dữ liệu trong JavaScript | [Kiểu Dữ Liệu](./2-js-basics/1-data-types/README.md) | Jasmine | -| 05 | Cơ bản JS | Hàm và Phương thức | Tìm hiểu về hàm và phương thức để quản lý luồng logic của ứng dụng | [Hàm và Phương thức](./2-js-basics/2-functions-methods/README.md) | Jasmine và Christopher | -| 06 | Cơ bản JS | Ra quyết định với JS | Tìm hiểu cách tạo điều kiện trong mã của bạn bằng các phương pháp ra quyết định | [Ra Quyết Định](./2-js-basics/3-making-decisions/README.md) | Jasmine | -| 07 | Cơ bản JS | Mảng và Vòng lặp | Làm việc với dữ liệu bằng mảng và vòng lặp trong JavaScript | [Mảng và Vòng lặp](./2-js-basics/4-arrays-loops/README.md) | Jasmine | -| 08 | [Terrarium](./3-terrarium/solution/README.md) | HTML trong thực tế | Xây dựng HTML để tạo một terrarium trực tuyến, tập trung vào việc xây dựng bố cục | [Giới thiệu về HTML](./3-terrarium/1-intro-to-html/README.md) | Jen | -| 09 | [Terrarium](./3-terrarium/solution/README.md) | CSS trong thực tế | Xây dựng CSS để tạo kiểu cho terrarium trực tuyến, tập trung vào các nguyên tắc cơ bản của CSS bao gồm làm cho trang web đáp ứng | [Giới thiệu về CSS](./3-terrarium/2-intro-to-css/README.md) | Jen | -| 10 | [Terrarium](./3-terrarium/solution/README.md) | Đóng gói JavaScript, thao tác DOM | Xây dựng JavaScript để làm cho terrarium hoạt động như một giao diện kéo/thả, tập trung vào đóng gói và thao tác DOM | [Đóng gói JavaScript, thao tác DOM](./3-terrarium/3-intro-to-DOM-and-closures/README.md) | Jen | -| 11 | [Trò chơi gõ phím](./4-typing-game/solution/README.md) | Xây dựng Trò chơi gõ phím | Tìm hiểu cách sử dụng sự kiện bàn phím để điều khiển logic của ứng dụng JavaScript của bạn | [Lập trình dựa trên sự kiện](./4-typing-game/typing-game/README.md) | Christopher | -| 12 | [Tiện ích mở rộng trình duyệt xanh](./5-browser-extension/solution/README.md) | Làm việc với trình duyệt | Tìm hiểu cách trình duyệt hoạt động, lịch sử của chúng và cách tạo các yếu tố đầu tiên của tiện ích mở rộng trình duyệt | [Về trình duyệt](./5-browser-extension/1-about-browsers/README.md) | Jen | -| 13 | [Tiện ích mở rộng trình duyệt xanh](./5-browser-extension/solution/README.md) | Xây dựng biểu mẫu, gọi API và lưu trữ biến trong bộ nhớ cục bộ | Xây dựng các yếu tố JavaScript của tiện ích mở rộng trình duyệt của bạn để gọi API bằng các biến được lưu trữ trong bộ nhớ cục bộ | [API, Biểu mẫu và Bộ nhớ cục bộ](./5-browser-extension/2-forms-browsers-local-storage/README.md) | Jen | -| 14 | [Tiện ích mở rộng trình duyệt xanh](./5-browser-extension/solution/README.md) | Quá trình nền trong trình duyệt, hiệu suất web | Sử dụng các quá trình nền của trình duyệt để quản lý biểu tượng của tiện ích mở rộng; tìm hiểu về hiệu suất web và một số tối ưu hóa để cải thiện | [Nhiệm vụ nền và Hiệu suất](./5-browser-extension/3-background-tasks-and-performance/README.md) | Jen | -| 15 | [Trò chơi không gian](./6-space-game/solution/README.md) | Phát triển trò chơi nâng cao hơn với JavaScript | Tìm hiểu về Kế thừa bằng cách sử dụng cả Lớp và Thành phần và mô hình Pub/Sub, chuẩn bị cho việc xây dựng trò chơi | [Giới thiệu về Phát triển Trò chơi Nâng cao](./6-space-game/1-introduction/README.md) | Chris | -| 16 | [Trò chơi không gian](./6-space-game/solution/README.md) | Vẽ lên canvas | Tìm hiểu về API Canvas, được sử dụng để vẽ các yếu tố lên màn hình | [Vẽ lên Canvas](./6-space-game/2-drawing-to-canvas/README.md) | Chris | -| 17 | [Trò chơi không gian](./6-space-game/solution/README.md) | Di chuyển các yếu tố trên màn hình | Khám phá cách các yếu tố có thể chuyển động bằng cách sử dụng tọa độ cartesian và API Canvas | [Di chuyển các yếu tố](./6-space-game/3-moving-elements-around/README.md) | Chris | -| 18 | [Trò chơi không gian](./6-space-game/solution/README.md) | Phát hiện va chạm | Làm cho các yếu tố va chạm và phản ứng với nhau bằng cách sử dụng các phím nhấn và cung cấp chức năng làm mát để đảm bảo hiệu suất của trò chơi | [Phát hiện Va chạm](./6-space-game/4-collision-detection/README.md) | Chris | -| 19 | [Trò chơi không gian](./6-space-game/solution/README.md) | Ghi điểm | Thực hiện các phép tính toán học dựa trên trạng thái và hiệu suất của trò chơi | [Ghi điểm](./6-space-game/5-keeping-score/README.md) | Chris | -| 20 | [Trò chơi không gian](./6-space-game/solution/README.md) | Kết thúc và khởi động lại trò chơi | Tìm hiểu về việc kết thúc và khởi động lại trò chơi, bao gồm dọn dẹp tài nguyên và đặt lại giá trị biến | [Điều kiện Kết thúc](./6-space-game/6-end-condition/README.md) | Chris | -| 21 | [Ứng dụng Ngân hàng](./7-bank-project/solution/README.md) | Mẫu HTML và Định tuyến trong Ứng dụng Web | Tìm hiểu cách tạo khung kiến trúc của một trang web nhiều trang bằng cách sử dụng định tuyến và mẫu HTML | [Mẫu HTML và Định tuyến](./7-bank-project/1-template-route/README.md) | Yohan | -| 22 | [Ứng dụng Ngân hàng](./7-bank-project/solution/README.md) | Xây dựng Biểu mẫu Đăng nhập và Đăng ký | Tìm hiểu về việc xây dựng biểu mẫu và xử lý các quy trình xác thực | [Biểu mẫu](./7-bank-project/2-forms/README.md) | Yohan | -| 23 | [Ứng dụng Ngân hàng](./7-bank-project/solution/README.md) | Phương pháp Lấy và Sử dụng Dữ liệu | Cách dữ liệu luân chuyển vào và ra khỏi ứng dụng của bạn, cách lấy, lưu trữ và xử lý dữ liệu | [Dữ liệu](./7-bank-project/3-data/README.md) | Yohan | -| 24 | [Ứng dụng Ngân hàng](./7-bank-project/solution/README.md) | Khái niệm về Quản lý Trạng thái | Tìm hiểu cách ứng dụng của bạn duy trì trạng thái và cách quản lý nó bằng lập trình | [Quản lý Trạng thái](./7-bank-project/4-state-management/README.md) | Yohan | -| 25 | [Trình duyệt/VScode Code](../../8-code-editor) | Làm việc với VScode | Tìm hiểu cách sử dụng trình soạn thảo mã | [Sử dụng Trình soạn thảo Mã VScode](./8-code-editor/1-using-a-code-editor/README.md) | Chris | -| 26 | [Trợ lý AI](./9-chat-project/README.md) | Làm việc với AI | Tìm hiểu cách xây dựng trợ lý AI của riêng bạn | [Dự án Trợ lý AI](./9-chat-project/README.md) | Chris | +| | Tên Dự Án | Khái Niệm Được Dạy | Mục Tiêu Học Tập | Bài Học Liên Kết | Tác Giả | +| :-: | :----------------------------------------------------: | :----------------------------------------------------------------------: | -------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------: | :-----------------------: | +| 01 | Getting Started | Giới thiệu về Lập trình và Công cụ làm việc | Tìm hiểu nền tảng cơ bản đằng sau hầu hết các ngôn ngữ lập trình và về phần mềm hỗ trợ các nhà phát triển chuyên nghiệp | [Intro to Programming Languages and Tools of the Trade](./1-getting-started-lessons/1-intro-to-programming-languages/README.md) | Jasmine | +| 02 | Getting Started | Kiến thức cơ bản về GitHub, bao gồm làm việc nhóm | Cách sử dụng GitHub trong dự án của bạn, cách hợp tác với người khác trên mã code | [Intro to GitHub](./1-getting-started-lessons/2-github-basics/README.md) | Floor | +| 03 | Getting Started | Khả năng truy cập | Tìm hiểu các kiến thức cơ bản về truy cập web | [Accessibility Fundamentals](./1-getting-started-lessons/3-accessibility/README.md) | Christopher | +| 04 | JS Basics | Các loại dữ liệu trong JavaScript | Các kiến thức cơ bản về các loại dữ liệu trong JavaScript | [Data Types](./2-js-basics/1-data-types/README.md) | Jasmine | +| 05 | JS Basics | Hàm và Phương thức | Tìm hiểu về hàm và phương thức để quản lý luồng logic ứng dụng | [Functions and Methods](./2-js-basics/2-functions-methods/README.md) | Jasmine và Christopher | +| 06 | JS Basics | Ra quyết định với JavaScript | Tìm hiểu cách tạo điều kiện trong mã của bạn bằng các phương pháp ra quyết định | [Making Decisions](./2-js-basics/3-making-decisions/README.md) | Jasmine | +| 07 | JS Basics | Mảng và Vòng lặp | Làm việc với dữ liệu bằng cách sử dụng mảng và vòng lặp trong JavaScript | [Arrays and Loops](./2-js-basics/4-arrays-loops/README.md) | Jasmine | +| 08 | [Terrarium](./3-terrarium/solution/README.md) | HTML trong Thực hành | Xây dựng HTML để tạo một terrarium trực tuyến, tập trung vào xây dựng bố cục | [Introduction to HTML](./3-terrarium/1-intro-to-html/README.md) | Jen | +| 09 | [Terrarium](./3-terrarium/solution/README.md) | CSS trong Thực hành | Xây dựng CSS để tạo kiểu cho terrarium trực tuyến, tập trung vào kiến thức cơ bản CSS bao gồm làm trang web phản hồi | [Introduction to CSS](./3-terrarium/2-intro-to-css/README.md) | Jen | +| 10 | [Terrarium](./3-terrarium/solution/README.md) | JavaScript Closures, thao tác DOM | Xây dựng JavaScript để làm cho terrarium hoạt động như giao diện kéo và thả, tập trung vào closures và thao tác DOM | [JavaScript Closures, DOM manipulation](./3-terrarium/3-intro-to-DOM-and-closures/README.md) | Jen | +| 11 | [Typing Game](./4-typing-game/solution/README.md) | Xây dựng trò chơi đánh máy | Tìm hiểu cách sử dụng sự kiện bàn phím để điều khiển luồng logic cho ứng dụng JavaScript của bạn | [Event-Driven Programming](./4-typing-game/typing-game/README.md) | Christopher | +| 12 | [Green Browser Extension](./5-browser-extension/solution/README.md) | Làm việc với Trình duyệt | Tìm hiểu về cách trình duyệt hoạt động, lịch sử của nó và cách dựng khung đầu tiên cho tiện ích mở rộng trình duyệt | [About Browsers](./5-browser-extension/1-about-browsers/README.md) | Jen | +| 13 | [Green Browser Extension](./5-browser-extension/solution/README.md) | Xây dựng biểu mẫu, gọi API và lưu biến trong bộ nhớ cục bộ | Xây dựng các thành phần JavaScript của tiện ích trình duyệt để gọi API sử dụng biến lưu trữ trong bộ nhớ cục bộ | [APIs, Forms, and Local Storage](./5-browser-extension/2-forms-browsers-local-storage/README.md) | Jen | +| 14 | [Green Browser Extension](./5-browser-extension/solution/README.md) | Các tiến trình nền của trình duyệt, hiệu suất web | Sử dụng các tiến trình nền của trình duyệt để quản lý biểu tượng tiện ích; tìm hiểu về hiệu suất web và một số tối ưu để cải thiện | [Background Tasks and Performance](./5-browser-extension/3-background-tasks-and-performance/README.md) | Jen | +| 15 | [Space Game](./6-space-game/solution/README.md) | Phát triển trò chơi nâng cao hơn với JavaScript | Tìm hiểu về Kế thừa sử dụng cả Lớp và Thành phần cũng như mô hình Pub/Sub, chuẩn bị cho việc xây dựng trò chơi | [Introduction to Advanced Game Development](./6-space-game/1-introduction/README.md) | Chris | +| 16 | [Space Game](./6-space-game/solution/README.md) | Vẽ lên canvas | Tìm hiểu về Canvas API, sử dụng để vẽ các phần tử lên màn hình | [Drawing to Canvas](./6-space-game/2-drawing-to-canvas/README.md) | Chris | +| 17 | [Space Game](./6-space-game/solution/README.md) | Di chuyển các phần tử trên màn hình | Khám phá cách các phần tử có thể di chuyển sử dụng tọa độ Decart và Canvas API | [Moving Elements Around](./6-space-game/3-moving-elements-around/README.md) | Chris | +| 18 | [Space Game](./6-space-game/solution/README.md) | Phát hiện va chạm | Làm cho các phần tử va chạm và phản ứng lẫn nhau sử dụng phím bấm và cung cấp chức năng làm mát để đảm bảo hiệu suất của trò chơi | [Collision Detection](./6-space-game/4-collision-detection/README.md) | Chris | +| 19 | [Space Game](./6-space-game/solution/README.md) | Giữ điểm số | Thực hiện các phép tính toán dựa trên trạng thái và hiệu suất của trò chơi | [Keeping Score](./6-space-game/5-keeping-score/README.md) | Chris | +| 20 | [Space Game](./6-space-game/solution/README.md) | Kết thúc và khởi động lại trò chơi | Tìm hiểu về kết thúc và khởi động lại trò chơi, bao gồm dọn dẹp tài nguyên và đặt lại các giá trị biến | [The Ending Condition](./6-space-game/6-end-condition/README.md) | Chris | +| 21 | [Banking App](./7-bank-project/solution/README.md) | Mẫu HTML và Định tuyến trong Web App | Tìm hiểu cách tạo khung kiến trúc website nhiều trang bằng kỹ thuật định tuyến và mẫu HTML | [HTML Templates and Routes](./7-bank-project/1-template-route/README.md) | Yohan | +| 22 | [Banking App](./7-bank-project/solution/README.md) | Xây dựng mẫu đăng nhập và đăng ký | Tìm hiểu cách xây dựng biểu mẫu và xử lý các quy trình xác thực | [Forms](./7-bank-project/2-forms/README.md) | Yohan | +| 23 | [Banking App](./7-bank-project/solution/README.md) | Các phương thức lấy và sử dụng dữ liệu | Cách dữ liệu chảy vào và ra khỏi ứng dụng của bạn, cách lấy dữ liệu, lưu trữ và loại bỏ | [Data](./7-bank-project/3-data/README.md) | Yohan | +| 24 | [Banking App](./7-bank-project/solution/README.md) | Các khái niệm quản lý trạng thái | Tìm hiểu cách ứng dụng của bạn giữ trạng thái và cách quản lý nó bằng lập trình | [State Management](./7-bank-project/4-state-management/README.md) | Yohan | +| 25 | [Browser/VScode Code](../../8-code-editor) | Làm việc với VScode | Tìm hiểu cách sử dụng trình soạn thảo mã | [Use VScode Code Editor](./8-code-editor/1-using-a-code-editor/README.md) | Chris | +| 26 | [AI Assistants](./9-chat-project/README.md) | Làm việc với AI | Tìm hiểu cách xây dựng trợ lý AI của riêng bạn | [AI Assistant project](./9-chat-project/README.md) | Chris | ## 🏫 Phương pháp giảng dạy -Chương trình học của chúng tôi được thiết kế với hai nguyên tắc sư phạm chính: -* học tập dựa trên dự án -* bài kiểm tra thường xuyên +Chương trình học của chúng tôi được thiết kế dựa trên hai nguyên tắc sư phạm chủ chốt: +* học dựa trên dự án +* các bài kiểm tra thường xuyên -Chương trình giảng dạy các nguyên tắc cơ bản của JavaScript, HTML và CSS, cũng như các công cụ và kỹ thuật mới nhất được các nhà phát triển web hiện nay sử dụng. Học viên sẽ có cơ hội phát triển kinh nghiệm thực tế bằng cách xây dựng một trò chơi gõ phím, terrarium ảo, tiện ích mở rộng trình duyệt thân thiện với môi trường, trò chơi kiểu không gian và ứng dụng ngân hàng cho doanh nghiệp. Đến cuối chuỗi bài học, học viên sẽ có được sự hiểu biết vững chắc về phát triển web. +Chương trình giảng dạy dạy các kiến thức cơ bản của JavaScript, HTML và CSS, cũng như các công cụ và kỹ thuật mới nhất được các nhà phát triển web hiện nay sử dụng. Học sinh sẽ có cơ hội phát triển kinh nghiệm thực hành bằng cách xây dựng trò chơi đánh máy, terrarium ảo, tiện ích mở rộng trình duyệt thân thiện với môi trường, trò chơi kiểu xâm lược không gian và ứng dụng ngân hàng cho doanh nghiệp. Cuối chuỗi bài học, học viên sẽ nắm chắc kiến thức cơ bản về phát triển web. -> 🎓 Bạn có thể tham gia một số bài học đầu tiên trong chương trình này dưới dạng [Lộ trình học](https://docs.microsoft.com/learn/paths/web-development-101/?WT.mc_id=academic-77807-sagibbon) trên Microsoft Learn! +> 🎓 Bạn có thể theo học vài bài học đầu tiên trong chương trình này dưới dạng [Learn Path](https://docs.microsoft.com/learn/paths/web-development-101/?WT.mc_id=academic-77807-sagibbon) trên Microsoft Learn! -Bằng cách đảm bảo rằng nội dung phù hợp với các dự án, quá trình học tập trở nên thú vị hơn cho học viên và việc ghi nhớ các khái niệm sẽ được tăng cường. Chúng tôi cũng đã viết một số bài học khởi đầu về các nguyên tắc cơ bản của JavaScript để giới thiệu các khái niệm, kết hợp với video từ bộ sưu tập "[Dành cho người mới bắt đầu: JavaScript](https://channel9.msdn.com/Series/Beginners-Series-to-JavaScript/?WT.mc_id=academic-77807-sagibbon)", một số tác giả của bộ sưu tập này đã đóng góp vào chương trình học này. +Bằng cách đảm bảo nội dung phù hợp với dự án, quá trình học trở nên hấp dẫn hơn cho học sinh và khả năng ghi nhớ các khái niệm sẽ được tăng cường. Chúng tôi cũng đã viết một số bài học khởi đầu về cơ bản JavaScript để giới thiệu các khái niệm, kết hợp với video từ bộ sưu tập "[Beginners Series to: JavaScript](https://channel9.msdn.com/Series/Beginners-Series-to-JavaScript/?WT.mc_id=academic-77807-sagibbon)", một số tác giả của video này đã góp sức vào chương trình học này. -Ngoài ra, một bài kiểm tra không áp lực trước lớp sẽ định hướng ý định của học viên đối với việc học một chủ đề, trong khi một bài kiểm tra thứ hai sau lớp đảm bảo việc ghi nhớ thêm. Chương trình học này được thiết kế linh hoạt và thú vị, có thể học toàn bộ hoặc từng phần. Các dự án bắt đầu từ nhỏ và trở nên phức tạp hơn vào cuối chu kỳ 12 tuần. +Ngoài ra, một bài kiểm tra nhẹ trước lớp giúp học sinh có định hướng học tập chủ động về chủ đề, trong khi một bài kiểm tra thứ hai sau lớp giúp đảm bảo sự ghi nhớ lâu dài. Chương trình này được thiết kế linh hoạt và vui vẻ, bạn có thể học toàn bộ hoặc học từng phần. Các dự án bắt đầu nhỏ và trở nên phức tạp hơn dần vào cuối chu kỳ 12 tuần. -Mặc dù chúng tôi cố ý tránh giới thiệu các framework JavaScript để tập trung vào các kỹ năng cơ bản cần thiết như một nhà phát triển web trước khi áp dụng một framework, một bước tiếp theo tốt sau khi hoàn thành chương trình học này sẽ là tìm hiểu về Node.js thông qua một bộ sưu tập video khác: "[Dành cho người mới bắt đầu: Node.js](https://channel9.msdn.com/Series/Beginners-Series-to-Nodejs/?WT.mc_id=academic-77807-sagibbon)". - -> Hãy ghé thăm [Quy tắc ứng xử](CODE_OF_CONDUCT.md) và [Hướng dẫn đóng góp](CONTRIBUTING.md) của chúng tôi. Chúng tôi hoan nghênh phản hồi mang tính xây dựng của bạn! +Mặc dù chúng tôi cố tình tránh giới thiệu các framework JavaScript để tập trung vào các kỹ năng cơ bản cần thiết cho một nhà phát triển web trước khi áp dụng framework, bước tiếp theo tốt để hoàn thành chương trình học này là tìm hiểu về Node.js thông qua bộ sưu tập video khác: "[Beginner Series to: Node.js](https://channel9.msdn.com/Series/Beginners-Series-to-Nodejs/?WT.mc_id=academic-77807-sagibbon)". +> Hãy tham khảo hướng dẫn [Quy tắc ứng xử](CODE_OF_CONDUCT.md) và [Đóng góp](CONTRIBUTING.md) của chúng tôi. Chúng tôi rất hoan nghênh phản hồi xây dựng của bạn! ## 🧭 Truy cập ngoại tuyến -Bạn có thể chạy tài liệu này ngoại tuyến bằng cách sử dụng [Docsify](https://docsify.js.org/#/). Fork repo này, [cài đặt Docsify](https://docsify.js.org/#/quickstart) trên máy của bạn, và sau đó trong thư mục gốc của repo này, gõ `docsify serve`. Trang web sẽ được phục vụ trên cổng 3000 trên localhost của bạn: `localhost:3000`. +Bạn có thể chạy tài liệu này ngoại tuyến bằng cách sử dụng [Docsify](https://docsify.js.org/#/). Fork kho lưu trữ này, [cài đặt Docsify](https://docsify.js.org/#/quickstart) trên máy tính của bạn, sau đó trong thư mục gốc của kho này, gõ `docsify serve`. Trang web sẽ được phục vụ trên cổng 3000 tại localhost của bạn: `localhost:3000`. ## 📘 PDF -Một tệp PDF của tất cả các bài học có thể được tìm thấy [tại đây](https://microsoft.github.io/Web-Dev-For-Beginners/pdf/readme.pdf). +Bản PDF của tất cả các bài học có thể được tìm thấy [tại đây](https://microsoft.github.io/Web-Dev-For-Beginners/pdf/readme.pdf). ## 🎒 Các khóa học khác +Nhóm của chúng tôi còn sản xuất các khóa học khác! Hãy xem qua: -Nhóm của chúng tôi sản xuất các khóa học khác! Hãy xem: - + ### LangChain -[![LangChain4j cho người mới bắt đầu](https://img.shields.io/badge/LangChain4j%20cho%20người%20mới%20bắt%20đầu-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) -[![LangChain.js cho người mới bắt đầu](https://img.shields.io/badge/LangChain.js%20cho%20người%20mới%20bắt%20đầu-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) +[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) +[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) + --- ### Azure / Edge / MCP / Agents -[![AZD cho Người Mới Bắt Đầu](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) -[![Edge AI cho Người Mới Bắt Đầu](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![MCP cho Người Mới Bắt Đầu](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI Agents cho Người Mới Bắt Đầu](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) +[![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) --- - + ### Chuỗi AI Tạo Sinh -[![AI Tạo Sinh cho Người Mới Bắt Đầu](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) -[![AI Tạo Sinh (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) -[![AI Tạo Sinh (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) -[![AI Tạo Sinh (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) +[![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) +[![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) +[![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) +[![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) --- - + ### Học Tập Cốt Lõi -[![ML cho Người Mới Bắt Đầu](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) -[![Khoa Học Dữ Liệu cho Người Mới Bắt Đầu](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) -[![AI cho Người Mới Bắt Đầu](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) -[![An Ninh Mạng cho Người Mới Bắt Đầu](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) -[![Phát Triển Web cho Người Mới Bắt Đầu](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) -[![IoT cho Người Mới Bắt Đầu](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) -[![Phát Triển XR cho Người Mới Bắt Đầu](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) +[![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) +[![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) +[![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) +[![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) +[![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) +[![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) +[![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) --- - + ### Chuỗi Copilot -[![Copilot cho Lập Trình Cặp AI](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) -[![Copilot cho C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) -[![Cuộc Phiêu Lưu với Copilot](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) +[![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) +[![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) +[![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) -## Nhận Hỗ Trợ +## Nhận trợ giúp -Nếu bạn gặp khó khăn hoặc có bất kỳ câu hỏi nào về việc xây dựng ứng dụng AI, hãy tham gia cùng các học viên và nhà phát triển có kinh nghiệm trong các cuộc thảo luận về MCP. Đây là một cộng đồng hỗ trợ, nơi mọi câu hỏi đều được chào đón và kiến thức được chia sẻ tự do. +Nếu bạn gặp khó khăn hoặc có bất kỳ câu hỏi nào về việc xây dựng ứng dụng AI, hãy tham gia cùng những người học khác và các nhà phát triển giàu kinh nghiệm trong các cuộc thảo luận về MCP. Đây là một cộng đồng hỗ trợ, nơi các câu hỏi được chào đón và kiến thức được chia sẻ tự do. [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) -Nếu bạn có phản hồi về sản phẩm hoặc gặp lỗi trong quá trình xây dựng, hãy truy cập: +Nếu bạn có phản hồi về sản phẩm hoặc lỗi trong quá trình xây dựng, hãy truy cập: -[![Diễn Đàn Nhà Phát Triển Microsoft Foundry](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) +[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) -## Giấy Phép +## Giấy phép Kho lưu trữ này được cấp phép theo giấy phép MIT. Xem tệp [LICENSE](../../LICENSE) để biết thêm thông tin. --- -**Tuyên bố miễn trừ trách nhiệm**: -Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp của con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này. +**Tuyên bố từ chối trách nhiệm**: +Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI [Co-op Translator](https://github.com/Azure/co-op-translator). Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc sai sót. Tài liệu gốc bằng ngôn ngữ nguyên bản nên được xem là nguồn thông tin chính xác nhất. Đối với các thông tin quan trọng, nên sử dụng dịch vụ dịch thuật chuyên nghiệp bởi người dịch. Chúng tôi không chịu trách nhiệm đối với bất kỳ sự hiểu nhầm hay giải thích sai nào phát sinh từ việc sử dụng bản dịch này. \ No newline at end of file diff --git a/translations/vi/for-teachers.md b/translations/vi/for-teachers.md index 2b3e0dec5..96bd466d3 100644 --- a/translations/vi/for-teachers.md +++ b/translations/vi/for-teachers.md @@ -42,10 +42,10 @@ Giáo trình này bao gồm các gói có thể nhập vào để phù hợp v - Moodle Cloud có hỗ trợ hạn chế đối với Common Cartridge. Ưu tiên sử dụng tệp Moodle ở trên, tệp này cũng có thể được tải lên Canvas. - Sau khi nhập, hãy xem lại các mô-đun, ngày đến hạn và cài đặt bài kiểm tra để phù hợp với lịch học của bạn. -![Moodle](../../translated_images/moodle.94eb93d714a50cb2c97435b408017dee224348b61bc86203ffd43a4f4e57b95f.vi.png) +![Moodle](../../translated_images/moodle.94eb93d714a50cb2.vi.png) > Giáo trình trong lớp học Moodle -![Canvas](../../translated_images/canvas.fbd605ff8e5b8aff567d398528ce113db304446b90b9cad55c654de3fdfcda34.vi.png) +![Canvas](../../translated_images/canvas.fbd605ff8e5b8aff.vi.png) > Giáo trình trong Canvas ### Sử dụng kho lưu trữ trực tiếp (không dùng Classroom)