chore(i18n): sync translations with latest source changes (chunk 22/44, 100 files)

pull/1670/head
localizeflow[bot] 3 months ago
parent b17d745a02
commit 8e29ab5741

@ -25,7 +25,7 @@ journey
تست عملکرد: 5: دانشجو
تکمیل تراریوم: 5: دانشجو
```
![DOM و یک closure](../../../../translated_images/webdev101-js.10280393044d7eaa.fa.png)
![DOM و یک closure](../../../../translated_images/fa/webdev101-js.10280393044d7eaa.webp)
> اسکتچ‌نوت توسط [تومومی ایمورا](https://twitter.com/girlie_mac)
به یکی از جذاب‌ترین بخش‌های توسعه وب خوش آمدید - ایجاد تعامل! مدل شیء سند (DOM) مانند پلی بین HTML و جاوااسکریپت شما است و امروز از آن برای زنده کردن تراریوم شما استفاده خواهیم کرد. زمانی که تیم برنرز-لی نخستین مرورگر وب را ساخت، دنیای وب را جایی تصور می‌کرد که اسناد پویا و تعاملی باشند - DOM این چشم‌انداز را ممکن می‌سازد.
@ -102,7 +102,7 @@ flowchart TD
style P fill:#ffebee
style Q fill:#ffebee
```
![نمایش درخت DOM](../../../../translated_images/dom-tree.7daf0e763cbbba92.fa.png)
![نمایش درخت DOM](../../../../translated_images/fa/dom-tree.7daf0e763cbbba92.webp)
> نمایشی از DOM و نشانه‌گذاری HTML که به آن اشاره دارد. از [اولفا نصرآویی](https://www.researchgate.net/publication/221417012_Profile-Based_Focused_Crawler_for_Social_Media-Sharing_Websites)
@ -146,7 +146,7 @@ flowchart LR
```
> 💡 **درک بسته‌ها**: بسته‌ها موضوع مهمی در جاوااسکریپت هستند و بسیاری از توسعه‌دهندگان برای سال‌ها از آنها استفاده می‌کنند قبل از اینکه تمام جنبه‌های نظری آن را به طور کامل درک کنند. امروز، تمرکز ما بر کاربرد عملی است - خواهید دید که بسته‌ها به طور طبیعی هنگام ساخت ویژگی‌های تعاملی پدیدار می‌شوند. درک شما با مشاهده حل مسائل واقعی رشد خواهد کرد.
![نمایش درخت DOM](../../../../translated_images/dom-tree.7daf0e763cbbba92.fa.png)
![نمایش درخت DOM](../../../../translated_images/fa/dom-tree.7daf0e763cbbba92.webp)
> نمایشی از DOM و نشانه‌گذاری HTML که به آن اشاره دارد. از [اولفا نصرآویی](https://www.researchgate.net/publication/221417012_Profile-Based_Focused_Crawler_for_Social_Media-Sharing_Websites)
@ -591,7 +591,7 @@ function stopElementDrag() {
- **پشتیبانی چند دستگاهی**: کار روی دسکتاپ و موبایل
- **آگاه به عملکرد**: بدون نشت حافظه یا محاسبات زائد
![terrarium نهایی](../../../../translated_images/terrarium-final.0920f16e87c13a84.fa.png)
![terrarium نهایی](../../../../translated_images/fa/terrarium-final.0920f16e87c13a84.webp)
---

@ -25,7 +25,7 @@ journey
رفع اشکال: 4: Student
بهبود تجربه: 5: Student
```
![نقشه‌برداری مرورگر](../../../../translated_images/browser.60317c9be8b7f84a.fa.jpg)
![نقشه‌برداری مرورگر](../../../../translated_images/fa/browser.60317c9be8b7f84a.webp)
> نقشه‌برداری توسط [Wassim Chegham](https://dev.to/wassimchegham/ever-wondered-what-happens-when-you-type-in-a-url-in-an-address-bar-in-a-browser-3dob)
## آزمون پیش از درس
@ -77,7 +77,7 @@ mindmap
**یک تاریخچه کوتاه**: اولین مرورگر 'WorldWideWeb' نام داشت و توسط سر تیموتی برنرز-لی در سال ۱۹۹۰ ساخته شد.
![مرورگرهای اولیه](../../../../translated_images/earlybrowsers.d984b711cdf3a42d.fa.jpg)
![مرورگرهای اولیه](../../../../translated_images/fa/earlybrowsers.d984b711cdf3a42d.webp)
> برخی مرورگرهای اولیه، از طریق [Karen McGrane](https://www.slideshare.net/KMcGrane/week-4-ixd-history-personal-computing)
### چگونه مرورگرها محتوای وب را پردازش می‌کنند
@ -194,7 +194,7 @@ quadrantChart
درک فرایند نصب افزونه به شما کمک می‌کند تجربه کاربری را وقتی مردم افزونه شما را نصب می‌کنند پیش‌بینی کنید. فرایند نصب در مرورگرهای مدرن استاندارد است و تغییرات جزئی در طراحی رابط وجود دارد.
![عکس صفحه مرورگر Edge که صفحه اضافات "edge://extensions" را باز و منوی تنظیمات را نشان می‌دهد](../../../../translated_images/install-on-edge.d68781acaf0b3d3d.fa.png)
![عکس صفحه مرورگر Edge که صفحه اضافات "edge://extensions" را باز و منوی تنظیمات را نشان می‌دهد](../../../../translated_images/fa/install-on-edge.d68781acaf0b3d3d.webp)
> **مهم**: حتما حالت توسعه‌دهنده را روشن کرده و اجازه نصب افزونه‌ها از فروشگاه‌های دیگر را هنگام تست افزونه‌های خود فعال کنید.
@ -308,10 +308,10 @@ project-root/
### مروری بر نماهای افزونه
**نمای تنظیمات** - پیکربندی اولیه برای کاربر اولین بار:
![عکس صفحه افزونه تکمیل شده در مرورگر، نمایش یک فرم با ورودی‌هایی برای نام منطقه و کلید API.](../../../../translated_images/1.b6da8c1394b07491.fa.png)
![عکس صفحه افزونه تکمیل شده در مرورگر، نمایش یک فرم با ورودی‌هایی برای نام منطقه و کلید API.](../../../../translated_images/fa/1.b6da8c1394b07491.webp)
**نمای نتایج** - نمایش داده‌های ردپای کربن:
![عکس صفحه افزونه تکمیل شده که مقادیر استفاده کربن و درصد سوخت‌های فسیلی منطقه US-NEISO را نشان می‌دهد.](../../../../translated_images/2.1dae52ff08042246.fa.png)
![عکس صفحه افزونه تکمیل شده که مقادیر استفاده کربن و درصد سوخت‌های فسیلی منطقه US-NEISO را نشان می‌دهد.](../../../../translated_images/fa/2.1dae52ff08042246.webp)
### ساخت فرم پیکربندی

@ -263,7 +263,7 @@ stateDiagram-v2
Reset --> ClearStorage: حذف داده‌های ذخیره‌شده
ClearStorage --> FirstTime: بازگشت به راه‌اندازی
```
![بخش ذخیره‌سازی محلی](../../../../translated_images/localstorage.472f8147b6a3f8d1.fa.png)
![بخش ذخیره‌سازی محلی](../../../../translated_images/fa/localstorage.472f8147b6a3f8d1.webp)
> ⚠️ **ملاحظات امنیتی**: در برنامه‌های واقعی، ذخیره کلیدهای API در LocalStorage ریسک امنیتی دارد چون جاوااسکریپت به این داده‌ها دسترسی دارد. برای اهداف آموزشی این روش خوب است، اما برنامه‌های واقعی باید از ذخیره امن سمت سرور برای اطلاعات حساس استفاده کنند.

@ -123,7 +123,7 @@ flowchart LR
بیایید این را امتحان کنیم. یک وب‌سایت باز کنید (Microsoft.com برای این کار خوب است) و روی دکمه 'Record' کلیک کنید. حالا صفحه را دوباره بارگذاری کنید و پروفایلر را مشاهده کنید که همه چیز را ثبت می‌کند. وقتی ضبط را متوقف کنید، تقسیم‌بندی دقیقی از چگونگی 'اجرای اسکریپت‌ها'، 'رندر' و 'نقاشی' سایت مشاهده خواهید کرد. این من را یاد کنترل ماموریت می‌اندازد که هر سیستم را در طول پرتاب راکت نظارت می‌کند - شما داده‌های زمان واقعی دقیق از اتفاقات و زمان وقوع آنها می‌گیرید.
![Edge profiler](../../../../translated_images/profiler.5a4a62479c5df01c.fa.png)
![Edge profiler](../../../../translated_images/fa/profiler.5a4a62479c5df01c.webp)
✅ مستندات [مایکروسافت](https://docs.microsoft.com/microsoft-edge/devtools-guide/performance/?WT.mc_id=academic-77807-sagibbon) جزئیات بیشتری دارد اگر می‌خواهید عمیق‌تر وارد شوید
@ -133,11 +133,11 @@ flowchart LR
با انتخاب بخشی از جدول زمانی پروفایل، نمای خلاصه‌ای از عملکرد صفحه را ببینید:
![Edge profiler snapshot](../../../../translated_images/snapshot.97750180ebcad737.fa.png)
![Edge profiler snapshot](../../../../translated_images/fa/snapshot.97750180ebcad737.webp)
برای دیدن اینکه آیا رویدادی بیشتر از 15 میلی‌ثانیه طول کشیده است، پنل Event Log را بررسی کنید:
![Edge event log](../../../../translated_images/log.804026979f3707e0.fa.png)
![Edge event log](../../../../translated_images/fa/log.804026979f3707e0.webp)
✅ با پروفایلر خود آشنا شوید! ابزارهای توسعه را روی این سایت باز کنید و ببینید آیا گلوگاه‌هایی وجود دارد یا خیر. کدام دارایی کندترین بارگذاری را دارد؟ سریع‌ترین چیست؟

@ -105,7 +105,7 @@ quadrantChart
Power-up: [0.7, 0.6]
UI Elements: [0.9, 0.1]
```
![شبکه کانواس](../../../../translated_images/canvas_grid.5f209da785ded492.fa.png)
![شبکه کانواس](../../../../translated_images/fa/canvas_grid.5f209da785ded492.webp)
> تصویر از [MDN](https://developer.mozilla.org/docs/Web/API/Canvas_API/Tutorial/Drawing_shapes)
برای کشیدن روی عنصر کانواس، شما همان فرایند سه مرحله‌ای را دنبال می‌کنید که اساس همه گرافیک‌های کانواس است. وقتی چند بار این کار را انجام دهید، عادتتان می‌شود:
@ -323,11 +323,11 @@ flowchart TD
- کشتی قهرمان
![کشتی قهرمان](../../../../translated_images/player.dd24c1afa8c71e9b.fa.png)
![کشتی قهرمان](../../../../translated_images/fa/player.dd24c1afa8c71e9b.webp)
- هیولا ۵ در ۵
![کشتی هیولا](../../../../translated_images/enemyShip.5df2a822c16650c2.fa.png)
![کشتی هیولا](../../../../translated_images/fa/enemyShip.5df2a822c16650c2.webp)
### مراحل پیشنهادی برای شروع توسعه
@ -463,7 +463,7 @@ for (let x = START_X; x < STOP_X; x += ENEMY_SPACING) {
نتیجه نهایی باید به این شکل باشد:
![صفحه سیاه با یک قهرمان و ۵*۵ هیولا](../../../../translated_images/partI-solution.36c53b48c9ffae2a.fa.png)
![صفحه سیاه با یک قهرمان و ۵*۵ هیولا](../../../../translated_images/fa/partI-solution.36c53b48c9ffae2a.webp)
## راه‌حل

@ -155,7 +155,7 @@ sequenceDiagram
end
```
- **سیستم امتیازدهی**: هر سفینه دشمن نابود شده ۱۰۰ امتیاز می‌دهد (اعداد رند برای بازیکنان راحت‌تر محاسبه ذهنی هستند). امتیاز در گوشه پایین سمت چپ نمایش داده می‌شود.
- **شمارش جان‌ها**: قهرمان شما با سه جان شروع می‌کند — استانداردی که بازی‌های آرکید اولیه برای تعادل چالش و قابل بازی بودن تعیین کردند. هر برخورد با دشمن یک جان از دست می‌دهید. تعداد جان‌های باقی‌مانده در گوشه پایین سمت راست با آیکون سفینه نشان داده می‌شود ![life image](../../../../translated_images/life.6fb9f50d53ee0413.fa.png).
- **شمارش جان‌ها**: قهرمان شما با سه جان شروع می‌کند — استانداردی که بازی‌های آرکید اولیه برای تعادل چالش و قابل بازی بودن تعیین کردند. هر برخورد با دشمن یک جان از دست می‌دهید. تعداد جان‌های باقی‌مانده در گوشه پایین سمت راست با آیکون سفینه نشان داده می‌شود ![life image](../../../../translated_images/fa/life.6fb9f50d53ee0413.webp).
## بیایید شروع کنیم!

@ -644,7 +644,7 @@ sequenceDiagram
استفاده از `history.pushState` ورودی‌های جدیدی در تاریخچه ناوبری مرورگر ایجاد می‌کند. می‌توانید این را با نگه داشتن دکمه *بازگشت* مرورگر خود امتحان کنید، باید چیزی شبیه این ببینید:
![Screenshot of navigation history](../../../../translated_images/history.7fdabbafa521e064.fa.png)
![Screenshot of navigation history](../../../../translated_images/fa/history.7fdabbafa521e064.webp)
اگر چند بار روی دکمه برگشت کلیک کنید، می‌بینید که URL فعلی تغییر می‌کند و تاریخچه به‌روزرسانی می‌شود، اما همان قالب نمایش داده می‌شود.

@ -292,7 +292,7 @@ graph TD
2. تغییرات نوار آدرس مرورگر را مشاهده کنید
3. توجه کنید که صفحه دوباره بارگذاری می‌شود و اطلاعات در URL ظاهر می‌شود
![عکس‌از تغییر URL مرورگر پس از کلیک روی دکمه ثبت‌نام](../../../../translated_images/click-register.e89a30bf0d4bc9ca.fa.png)
![عکس‌از تغییر URL مرورگر پس از کلیک روی دکمه ثبت‌نام](../../../../translated_images/fa/click-register.e89a30bf0d4bc9ca.webp)
### مقایسه روش‌های HTTP
@ -346,7 +346,7 @@ graph TD
2. **روی دکمه "ایجاد حساب" کلیک کنید**
3. **پاسخ سرور را در مرورگر مشاهده کنید**
![یک پنجره مرورگر در آدرس localhost:5000/api/accounts که رشته JSON شامل داده کاربر را نشان می‌دهد](../../../../translated_images/form-post.61de4ca1b964d91a.fa.png)
![یک پنجره مرورگر در آدرس localhost:5000/api/accounts که رشته JSON شامل داده کاربر را نشان می‌دهد](../../../../translated_images/fa/form-post.61de4ca1b964d91a.webp)
**آنچه باید ببینید:**
- **مرورگر به URL نقطه انتهایی API هدایت می‌شود**
@ -609,7 +609,7 @@ async function register() {
3. **کلیک** روی "ایجاد حساب"
4. **مشاهده** پیام‌های کنسول و بازخورد برای کاربر
![تصویری از پیام‌های لاگ در کنسول مرورگر](../../../../translated_images/browser-console.efaf0b51aaaf6778.fa.png)
![تصویری از پیام‌های لاگ در کنسول مرورگر](../../../../translated_images/fa/browser-console.efaf0b51aaaf6778.webp)
**آنچه باید ببینید:**
- **حالت بارگذاری** روی دکمه ارسال ظاهر می‌شود
@ -783,7 +783,7 @@ input:focus:invalid {
3. **استفاده از** کاراکترهای خاص در فیلد نام کاربری
4. **وارد کردن** مقدار منفی در موجودی
![تصویری از خطای اعتبارسنجی هنگام تلاش برای ارسال فرم](../../../../translated_images/validation-error.8bd23e98d416c22f.fa.png)
![تصویری از خطای اعتبارسنجی هنگام تلاش برای ارسال فرم](../../../../translated_images/fa/validation-error.8bd23e98d416c22f.webp)
**آنچه مشاهده خواهید کرد:**
- **مرورگر پیام‌های اعتبارسنجی بومی را نمایش می‌دهد**
@ -943,7 +943,7 @@ timeline
نمونه‌ای از ظاهر نهایی صفحه ورود پس از افزودن کمی استایل:
![تصویر صفحه ورود پس از افزودن استایل‌های CSS](../../../../translated_images/result.96ef01f607bf856a.fa.png)
![تصویر صفحه ورود پس از افزودن استایل‌های CSS](../../../../translated_images/fa/result.96ef01f607bf856a.webp)
## آزمون بعد از درس

@ -156,7 +156,7 @@ sequenceDiagram
Server->>Browser: ارسال صفحه کامل HTML
Browser->>User: نمایش صفحه جدید (فلش/بارگذاری مجدد)
```
![جریان به‌روزرسانی در برنامه چندصفحه‌ای](../../../../translated_images/mpa.7f7375a1a2d4aa77.fa.png)
![جریان به‌روزرسانی در برنامه چندصفحه‌ای](../../../../translated_images/fa/mpa.7f7375a1a2d4aa77.webp)
**چرا این روش کند و زمخت به نظر می‌رسید:**
- هر کلیک به معنای ساختن کل صفحه از نو بود
@ -182,7 +182,7 @@ sequenceDiagram
JavaScript->>Browser: به‌روزرسانی عناصر خاص صفحه
Browser->>User: نمایش محتوای به‌روزشده (بدون بارگذاری مجدد)
```
![جریان به‌روزرسانی در برنامه تک‌صفحه‌ای](../../../../translated_images/spa.268ec73b41f992c2.fa.png)
![جریان به‌روزرسانی در برنامه تک‌صفحه‌ای](../../../../translated_images/fa/spa.268ec73b41f992c2.webp)
**چرا SPAها اینقدر بهتر به نظر می‌رسند:**
- فقط بخش‌هایی که واقعاً تغییر کرده‌اند به‌روزرسانی می‌شوند (هوشمندانه، درست است؟)
@ -516,7 +516,7 @@ if (data.error) {
حالا وقتی با حساب نامعتبر تست کنید، پیام خطای مفیدی درست روی صفحه می‌بینید!
![اسکرین‌شات نمایش پیام خطا در هنگام ورود](../../../../translated_images/login-error.416fe019b36a6327.fa.png)
![اسکرین‌شات نمایش پیام خطا در هنگام ورود](../../../../translated_images/fa/login-error.416fe019b36a6327.webp)
#### مرحله ۴: توجه به دسترسی
@ -950,7 +950,7 @@ timeline
این تصویری از یک داشبورد صیقلی شده پس از استایل‌دهی است:
![Screenshot of an example result of the dashboard after styling](../../../../translated_images/screen2.123c82a831a1d14a.fa.png)
![Screenshot of an example result of the dashboard after styling](../../../../translated_images/fa/screen2.123c82a831a1d14a.webp)
نمی‌خواهیم دقیقاً همین را پیاده کنید - از آن به عنوان الهام استفاده کنید و آن را به سبک خودتان بسازید!

@ -187,7 +187,7 @@ mindmap
به جای دور خود چرخیدن، می‌خواهیم یک سیستم **مدیریت وضعیت متمرکز** بسازیم. مثل داشتن یک نفر بسیار منظم در مسئولیت همه امور مهم:
![Schema showing the data flows between the HTML, user actions and state](../../../../translated_images/data-flow.fa2354e0908fecc8.fa.png)
![Schema showing the data flows between the HTML, user actions and state](../../../../translated_images/fa/data-flow.fa2354e0908fecc8.webp)
```mermaid
flowchart TD
@ -798,7 +798,7 @@ timeline
نمونه نتیجه پس از تکمیل تکلیف:
![تصویری از گفتگو نمونه "افزودن تراکنش"](../../../../translated_images/dialog.93bba104afeb79f1.fa.png)
![تصویری از گفتگو نمونه "افزودن تراکنش"](../../../../translated_images/fa/dialog.93bba104afeb79f1.webp)
---

@ -112,7 +112,7 @@ CO_OP_TRANSLATOR_METADATA:
**نتیجه مورد انتظار:**
پس از تکمیل این تمرین، اپلیکیشن بانکی شما باید قابلیت "افزودن تراکنش" کاملاً کاربردی و حرفه‌ای داشته باشد:
![تصویر صفحه‌ای که دیالوگ "افزودن تراکنش" را نشان می‌دهد](../../../../translated_images/dialog.93bba104afeb79f1.fa.png)
![تصویر صفحه‌ای که دیالوگ "افزودن تراکنش" را نشان می‌دهد](../../../../translated_images/fa/dialog.93bba104afeb79f1.webp)
## تست پیاده‌سازی شما

@ -182,7 +182,7 @@ VSCode.dev این قابلیت‌ها را به مرورگر شما می‌آو
وقتی همه چیز بارگذاری شد، یک فضای کاری تمیز و زیبا مشاهده خواهید کرد که برای تمرکز شما روی چیزی که مهم است کدتان طراحی شده است!
![رابط پیش‌فرض VSCode.dev](../../../../translated_images/default-vscode-dev.5d06881d65c1b323.fa.png)
![رابط پیش‌فرض VSCode.dev](../../../../translated_images/fa/default-vscode-dev.5d06881d65c1b323.webp)
**این گشتی در محله شماست:**
- **نوار فعالیت** (نوار سمت چپ): ناوبری اصلی شما با اکسپلورر 📁، جستجو 🔍، کنترل منبع 🌿، افزونه‌ها 🧩 و تنظیمات ⚙️
@ -228,7 +228,7 @@ flowchart TB
1. به [vscode.dev](https://vscode.dev) بروید اگر هنوز آنجا نیستید
2. در صفحه خوش‌آمدگویی دکمه "Open Remote Repository" را پیدا کرده و کلیک کنید
![باز کردن مخزن از راه دور](../../../../translated_images/open-remote-repository.bd9c2598b8949e7f.fa.png)
![باز کردن مخزن از راه دور](../../../../translated_images/fa/open-remote-repository.bd9c2598b8949e7f.webp)
3. آدرس URL مخزن GitHub را وارد کنید (این را امتحان کنید: `https://github.com/microsoft/Web-Dev-For-Beginners`)
4. کلید Enter را بزنید و جادو را ببینید!
@ -237,7 +237,7 @@ flowchart TB
می‌خواهید مانند یک جادوگر کدنویسی حس کنید؟ میانبر صفحه‌کلید Ctrl+Shift+P (یا Cmd+Shift+P در مک) را برای باز کردن پنل فرمان‌ها امتحان کنید:
![پنل فرمان](../../../../translated_images/palette-menu.4946174e07f42622.fa.png)
![پنل فرمان](../../../../translated_images/fa/palette-menu.4946174e07f42622.webp)
**پنل فرمان مثل داشتن یک موتور جستجو برای همه کارهایی است که می‌توانید انجام دهید:**
- تایپ کنید "open remote" تا بازکننده مخزن را برای شما پیدا کند
@ -298,7 +298,7 @@ flowchart TB
3. نام فایل را با پسوند مناسب وارد کنید (`style.css`، `script.js`، `index.html`)
4. Enter را فشار دهید تا فایل ایجاد شود
![ایجاد فایل جدید](../../../../translated_images/create-new-file.2814e609c2af9aeb.fa.png)
![ایجاد فایل جدید](../../../../translated_images/fa/create-new-file.2814e609c2af9aeb.webp)
**قوانین نام‌گذاری:**
- از نام‌های توصیفی که هدف فایل را نشان می‌دهند استفاده کنید
@ -315,7 +315,7 @@ flowchart TB
2. شروع به تایپ کنید و ببینید VSCode.dev با رنگ‌ها، پیشنهادها و تشخیص خطا به شما کمک می‌کند
3. با Ctrl+S (ویندوز/لینوکس) یا Cmd+S (مک) کار خود را ذخیره کنید اگرچه به طور خودکار هم ذخیره می‌شود!
![ویرایش فایل در VSCode.dev](../../../../translated_images/edit-a-file.52c0ee665ef19f08.fa.png)
![ویرایش فایل در VSCode.dev](../../../../translated_images/fa/edit-a-file.52c0ee665ef19f08.webp)
**کارهای جالبی که هنگام کد زدن اتفاق می‌افتد:**
- کد شما به صورت زیبایی رنگ‌آمیزی می‌شود تا خواندن آن راحت باشد
@ -335,7 +335,7 @@ flowchart TB
2. فایل‌های تغییر یافته در بخش "Changes" نمایش داده می‌شوند
3. رنگ‌ها نوع تغییر را نشان می‌دهند: سبز برای افزودن، قرمز برای حذف
![مشاهده تغییرات در کنترل منبع](../../../../translated_images/working-tree.c58eec08e6335c79.fa.png)
![مشاهده تغییرات در کنترل منبع](../../../../translated_images/fa/working-tree.c58eec08e6335c79.webp)
**ذخیره کار شما (جریان کار کامیت):**
@ -427,7 +427,7 @@ mindmap
2. جستجو کنید یا گشت و گذار کنید برای چیزی خاص
3. روی هر چیزی که جالب به نظر می‌رسد کلیک کنید تا اطلاعات بیشتر ببینید
![رابط بازارچه افزونه‌ها](../../../../translated_images/extensions.eca0e0c7f59a10b5.fa.png)
![رابط بازارچه افزونه‌ها](../../../../translated_images/fa/extensions.eca0e0c7f59a10b5.webp)
**چیزی که آنجا می‌بینید:**
@ -480,7 +480,7 @@ mindmap
3. گزینه "Extension Settings" را از منوی کشویی انتخاب کنید
4. تنظیمات را تغییر دهید تا دقیقاً برای جریان کار شما مناسب باشد
![سفارشی‌سازی تنظیمات افزونه](../../../../translated_images/extension-settings.21c752ae4f4cdb78.fa.png)
![سفارشی‌سازی تنظیمات افزونه](../../../../translated_images/fa/extension-settings.21c752ae4f4cdb78.webp)
**موارد رایجی که ممکن است بخواهید تغییر دهید:**
- چگونگی فرمت شدن کد شما (tabs در مقابل فاصله، طول خط و غیره)

@ -78,7 +78,7 @@ CO_OP_TRANSLATOR_METADATA:
4. **یک پیام کامیت بنویسید:** "Add initial HTML structure"
5. **روی** "Commit new file" کلیک کنید تا تغییرات ذخیره شود
![ایجاد فایل اولیه در GitHub](../../../../translated_images/new-file-github.com.c886796d800e8056.fa.png)
![ایجاد فایل اولیه در GitHub](../../../../translated_images/fa/new-file-github.com.c886796d800e8056.webp)
**این تنظیمات اولیه چه کار می‌کند:**
- **ایجاد** ساختار درست سند HTML5 با عناصر معنایی
@ -104,7 +104,7 @@ CO_OP_TRANSLATOR_METADATA:
**نشانه موفقیت**: شما باید فایل‌های پروژه را در نوار کناری Explorer ببینید و `index.html` برای ویرایش در ناحیه اصلی باز باشد.
![پروژه بارگذاری شده در VSCode.dev](../../../../translated_images/project-on-vscode.dev.e79815a9a95ee7fe.fa.png)
![پروژه بارگذاری شده در VSCode.dev](../../../../translated_images/fa/project-on-vscode.dev.e79815a9a95ee7fe.webp)
**چه چیزی در رابط کاربری مشاهده خواهید کرد:**
- **نوار کناری Explorer**: **نمایش** فایل‌های مخزن و ساختار پوشه‌ای
@ -448,7 +448,7 @@ li:before {
**نتایج فوری پس از نصب:**
پس از نصب CodeSwing، پیش‌نمایش زنده وب‌سایت رزومه در ویرایشگر ظاهر می‌شود. این امکان را به شما می‌دهد که دقیقاً ببینید تغییرات سایت چگونه است.
![افزونه CodeSwing که پیش‌نمایش زنده را نشان می‌دهد](../../../../translated_images/after-codeswing-extension-pb.0ebddddcf73b5509.fa.png)
![افزونه CodeSwing که پیش‌نمایش زنده را نشان می‌دهد](../../../../translated_images/fa/after-codeswing-extension-pb.0ebddddcf73b5509.webp)
**درک رابط کاربری پیشرفته:**
- **نمایش تقسیم شده:** **نمایش** کد در یک طرف و پیش‌نمایش زنده در طرف دیگر

@ -60,7 +60,7 @@ print(response.choices[0].message.content)
پروژه نهایی شما به این شکل خواهد بود:
![رابط اپلیکیشن چت که مکالمه بین کاربر و دستیار هوش مصنوعی را نشان می‌دهد](../../../translated_images/screenshot.0a1ee0d123df681b.fa.png)
![رابط اپلیکیشن چت که مکالمه بین کاربر و دستیار هوش مصنوعی را نشان می‌دهد](../../../translated_images/fa/screenshot.0a1ee0d123df681b.webp)
## 🗺️ مسیر یادگیری شما در توسعه اپلیکیشن‌های هوش مصنوعی
@ -189,7 +189,7 @@ mindmap
```
**اصل اصلی**: توسعه اپلیکیشن‌های هوش مصنوعی ترکیبی از مهارت‌های سنتی توسعه وب با ادغام سرویس‌های هوش مصنوعی است که برنامه‌هایی هوشمند و پاسخگو برای کاربران ایجاد می‌کند.
![رابط GitHub Models AI Playground با انتخاب مدل و بخش تست](../../../translated_images/playground.d2b927122224ff8f.fa.png)
![رابط GitHub Models AI Playground با انتخاب مدل و بخش تست](../../../translated_images/fa/playground.d2b927122224ff8f.webp)
**دلایلی که محیط بازیابی بسیار مفید است:**
- **آزمایش** مدل‌های مختلف هوش مصنوعی مثل GPT-4o-mini، Claude و دیگران (همه رایگان!)
@ -199,7 +199,7 @@ mindmap
وقتی بازی کردید، کافی است روی تب "Code" کلیک کنید و زبان برنامه‌نویسی خود را انتخاب کنید تا کد پیاده‌سازی مورد نیاز را دریافت نمایید.
![انتخاب در Playground که گزینه‌های تولید کد برای زبان‌های مختلف را نشان می‌دهد](../../../translated_images/playground-choice.1d23ba7d407f4758.fa.png)
![انتخاب در Playground که گزینه‌های تولید کد برای زبان‌های مختلف را نشان می‌دهد](../../../translated_images/fa/playground-choice.1d23ba7d407f4758.webp)
## راه‌اندازی ادغام پشت‌صحنه پایتون
@ -2350,14 +2350,14 @@ mindmap
- **مراجعه** به مخزن [Web Dev For Beginners](https://github.com/microsoft/Web-Dev-For-Beginners)
- **کلیک** روی "Use this template" در گوشه بالا سمت راست (اطمینان حاصل کنید که وارد حساب GitHub شده‌اید)
![Create from template interface showing the green "Use this template" button](../../../translated_images/template.67ad477109d29a2b.fa.png)
![Create from template interface showing the green "Use this template" button](../../../translated_images/fa/template.67ad477109d29a2b.webp)
**مرحله 2: راه‌اندازی Codespaces**
- **باز کردن** مخزن تازه ساخته شده
- **کلیک** روی دکمه سبز "Code" و انتخاب "Codespaces"
- **انتخاب** "Create codespace on main" برای شروع محیط توسعه شما
![Create codespace interface with options for launching cloud development environment](../../../translated_images/codespace.bcecbdf5d2747d3d.fa.png)
![Create codespace interface with options for launching cloud development environment](../../../translated_images/fa/codespace.bcecbdf5d2747d3d.webp)
**مرحله 3: پیکربندی محیط**
پس از بارگذاری Codespace، به موارد زیر دسترسی خواهید داشت:

@ -72,13 +72,13 @@ CO_OP_TRANSLATOR_METADATA:
برای شروع به [https://aka.ms/genai-js-course](https://aka.ms/genai-js-course) مراجعه کنید!
![Background](../../translated_images/background.148a8d43afde5730.fa.png)
![Background](../../translated_images/fa/background.148a8d43afde5730.webp)
- درس‌هایی که از اصول پایه تا RAG را پوشش می‌دهد.
- تعامل با شخصیت‌های تاریخی با استفاده از GenAI و اپلیکیشن همراه ما.
- روایت سرگرم‌کننده و جذاب، شما را در سفر در زمان می‌برد!
![character](../../translated_images/character.5c0dd8e067ffd693.fa.png)
![character](../../translated_images/fa/character.5c0dd8e067ffd693.webp)
هر درس شامل یک تکلیف برای تکمیل، یک آزمون دانش و یک چالش برای راهنمایی شما در مباحث مانند:
@ -115,7 +115,7 @@ CO_OP_TRANSLATOR_METADATA:
در نسخه‌ای که از این مخزن ساخته‌اید، دکمه **Code** را بزنید و گزینه **Open with Codespaces** را انتخاب کنید. این یک Codespace جدید برای کار کردن شما ایجاد می‌کند.
![Codespace](../../translated_images/createcodespace.0238bbf4d7a8d955.fa.png)
![Codespace](../../translated_images/fa/createcodespace.0238bbf4d7a8d955.webp)
#### اجرای برنامه به صورت محلی روی رایانه شما

@ -42,10 +42,10 @@ CO_OP_TRANSLATOR_METADATA:
- Moodle Cloud پشتیبانی محدودی از Common Cartridge دارد. فایل Moodle بالا را ترجیح دهید که همچنین می‌تواند در Canvas بارگذاری شود.
- پس از وارد کردن، ماژول‌ها، تاریخ‌های سررسید و تنظیمات آزمون را بررسی کنید تا با برنامه ترم شما مطابقت داشته باشد.
![Moodle](../../translated_images/moodle.94eb93d714a50cb2.fa.png)
![Moodle](../../translated_images/fa/moodle.94eb93d714a50cb2.webp)
> برنامه درسی در کلاس Moodle
![Canvas](../../translated_images/canvas.fbd605ff8e5b8aff.fa.png)
![Canvas](../../translated_images/fa/canvas.fbd605ff8e5b8aff.webp)
> برنامه درسی در Canvas
### استفاده مستقیم از مخزن (بدون Classroom)

@ -17,7 +17,7 @@ Kuule, ymmärrän täysin, jos ohjelmointi tuntuu juuri nyt pelottavalta. Kun al
Tänään tutustumme uskomattomiin työkaluihin, jotka tekevät modernista web-kehityksestä paitsi mahdollisen, myös todella koukuttavan. Puhun samoista editoreista, selaimista ja työnkuluista, joita Netflixin, Spotifyn ja suosikkisi indie-sovellusstudion kehittäjät käyttävät joka päivä. Ja tässä tulee se osuus, joka saa sinut tanssimaan ilosta: suurin osa näistä ammattitason, teollisuusstandardin työkaluista on täysin ilmaisia!
![Intro Programming](../../../../translated_images/webdev101-programming.d6e3f98e61ac4bff.fi.png)
![Intro Programming](../../../../translated_images/fi/webdev101-programming.d6e3f98e61ac4bff.png)
> Sketchnote by [Tomomi Imura](https://twitter.com/girlie_mac)
```mermaid

@ -17,7 +17,7 @@ Tiedän, että tämä voi tuntua aluksi paljolta muistan itsekin tuijottanee
Otamme tämän matkan yhdessä, askel kerrallaan. Ei kiirettä, ei painetta vain sinä, minä ja muutama todella siisti työkalu, joista tulee pian uusia parhaita ystäviäsi!
![Johdanto GitHubiin](../../../../translated_images/webdev101-github.8846d7971abef6f9.fi.png)
![Johdanto GitHubiin](../../../../translated_images/fi/webdev101-github.8846d7971abef6f9.png)
> Sketchnote: [Tomomi Imura](https://twitter.com/girlie_mac)
```mermaid
@ -605,7 +605,7 @@ Etsi ensin GitHubista repositorio (tai **repo**), joka kiinnostaa sinua ja johon
✅ Hyvä tapa löytää 'aloittelijaystävällisiä' repoja on [etsiä tagilla 'good-first-issue'](https://github.blog/2020-01-22-browse-good-first-issues-to-start-contributing-to-open-source/).
![Kopioi repo paikallisesti](../../../../translated_images/clone_repo.5085c48d666ead57.fi.png)
![Kopioi repo paikallisesti](../../../../translated_images/fi/clone_repo.5085c48d666ead57.png)
Koodin kopioimiseen on useita tapoja. Yksi tapa on "klonata" repositorion sisältö HTTPS:n, SSH:n tai GitHub CLI:n (komentoriviliittymän) avulla.

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# Luodaan saavutettavia verkkosivuja
![Kaikki saavutettavuudesta](../../../../translated_images/webdev101-a11y.8ef3025c858d897a.fi.png)
![Kaikki saavutettavuudesta](../../../../translated_images/fi/webdev101-a11y.8ef3025c858d897a.png)
> Sketchnote: [Tomomi Imura](https://twitter.com/girlie_mac)
```mermaid
@ -1020,12 +1020,12 @@ Jokaisella verkkosivustosi kuvalla on tarkoitus. Tämän tarkoituksen ymmärtäm
**Informatiiviset kuvat** - välittävät tärkeää tietoa:
```html
<img src="../../../../translated_images/chart.31c7eb0eb5c4450deba10b6f236732dfee8e8a11f6c0d8f31d2c2efb9d4c00ef.fi.png" alt="Sales increased 25% from Q1 to Q2 2024">
<img src="../../../../translated_images/fi/chart.31c7eb0eb5c4450deba10b6f236732dfee8e8a11f6c0d8f31d2c2efb9d4c00ef.png" alt="Sales increased 25% from Q1 to Q2 2024">
```
**Koristeelliset kuvat** - pelkästään visuaalisia, ilman informatiivista arvoa:
```html
<img src="../../../../translated_images/decorative-border.b2f3c4d6634fb79d57fb6357835906c16938df3d5651c1314c196c3b1c52df98.fi.png" alt="" role="presentation">
<img src="../../../../translated_images/fi/decorative-border.b2f3c4d6634fb79d57fb6357835906c16938df3d5651c1314c196c3b1c52df98.png" alt="" role="presentation">
```
**Toiminnalliset kuvat** - toimivat painikkeina tai ohjaimina:
@ -1037,7 +1037,7 @@ Jokaisella verkkosivustosi kuvalla on tarkoitus. Tämän tarkoituksen ymmärtäm
**Monimutkaiset kuvat** - kaaviot, diagrammit, infografiikat:
```html
<img src="../../../../translated_images/complex-chart.c831f461a363b446a688be5ccacde20d011221758c902cb082cfd4293534ef17.fi.png" alt="Quarterly sales data" aria-describedby="chart-description">
<img src="../../../../translated_images/fi/complex-chart.c831f461a363b446a688be5ccacde20d011221758c902cb082cfd4293534ef17.png" alt="Quarterly sales data" aria-describedby="chart-description">
<div id="chart-description">
<p>Detailed description: Sales data shows a steady increase across all quarters...</p>
</div>
@ -1077,7 +1077,7 @@ Jokaisella verkkosivustosi kuvalla on tarkoitus. Tämän tarkoituksen ymmärtäm
<picture>
<source media="(min-width: 800px)" srcset="large-chart.png">
<source media="(min-width: 400px)" srcset="medium-chart.png">
<img src="../../../../translated_images/small-chart.c50c7b1bbcce43d8d24fbfbab8f691fe47d8f25fb7c70857c9eae21d5f22862e.fi.png" alt="Website traffic increased 40% after accessibility improvements">
<img src="../../../../translated_images/fi/small-chart.c50c7b1bbcce43d8d24fbfbab8f691fe47d8f25fb7c70857c9eae21d5f22862e.png" alt="Website traffic increased 40% after accessibility improvements">
</picture>
```

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# JavaScriptin perusteet: Tietotyypit
![JavaScriptin perusteet - Tietotyypit](../../../../translated_images/webdev101-js-datatypes.4cc470179730702c.fi.png)
![JavaScriptin perusteet - Tietotyypit](../../../../translated_images/fi/webdev101-js-datatypes.4cc470179730702c.png)
> Sketchnote: [Tomomi Imura](https://twitter.com/girlie_mac)
```mermaid

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# JavaScriptin perusteet: metodit ja funktiot
![JavaScript Basics - Functions](../../../../translated_images/webdev101-js-functions.be049c4726e94f8b.fi.png)
![JavaScript Basics - Functions](../../../../translated_images/fi/webdev101-js-functions.be049c4726e94f8b.png)
> Sketchnote by [Tomomi Imura](https://twitter.com/girlie_mac)
```mermaid

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# JavaScriptin perusteet: Päätöksenteko
![JavaScriptin perusteet - Päätöksenteko](../../../../translated_images/webdev101-js-decisions.69e1b20f272dd1f0.fi.png)
![JavaScriptin perusteet - Päätöksenteko](../../../../translated_images/fi/webdev101-js-decisions.69e1b20f272dd1f0.png)
> Sketchnote: [Tomomi Imura](https://twitter.com/girlie_mac)

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# JavaScriptin perusteet: Taulukot ja silmukat
![JavaScriptin perusteet - Taulukot](../../../../translated_images/webdev101-js-arrays.439d7528b8a29455.fi.png)
![JavaScriptin perusteet - Taulukot](../../../../translated_images/fi/webdev101-js-arrays.439d7528b8a29455.png)
> Sketchnote: [Tomomi Imura](https://twitter.com/girlie_mac)
```mermaid

@ -26,7 +26,7 @@ journey
Build terrarium: 5: Student
```
![Johdatus HTML:ään](../../../../translated_images/webdev101-html.4389c2067af68e98.fi.png)
![Johdatus HTML:ään](../../../../translated_images/fi/webdev101-html.4389c2067af68e98.png)
> Sketchnote: [Tomomi Imura](https://twitter.com/girlie_mac)
HTML eli HyperText Markup Language on jokaisen verkkosivun perusta, jonka olet koskaan vieraillut. Ajattele HTML:ää verkkosivujen "luurankona" se määrittää, mihin sisältö sijoitetaan, miten se järjestetään ja mitä kukin osa edustaa. Vaikka CSS myöhemmin "pukee" HTML:n väreillä ja asetteluilla ja JavaScript tuo siihen interaktiivisuutta, HTML tarjoaa olennaisen rakenteen, joka tekee kaiken muun mahdolliseksi.
@ -88,7 +88,7 @@ Luo oma kansio terraario-projektillesi ja lisää ensimmäinen HTML-tiedostosi.
4. Explorer-paneelissa klikkaa "New File" -ikonia
5. Nimeä tiedostosi `index.html`
![VS Code Explorer näyttää uuden tiedoston luomisen](../../../../translated_images/vs-code-index.e2986cf919471eb9.fi.png)
![VS Code Explorer näyttää uuden tiedoston luomisen](../../../../translated_images/fi/vs-code-index.e2986cf919471eb9.png)
**Vaihtoehto 2: Käytä terminaalikomentoja**
```bash
@ -239,48 +239,48 @@ Lisää kasvikuvat järjestettyinä kahteen sarakkeeseen `<body></body>`-tagien
<div id="page">
<div id="left-container" class="container">
<div class="plant-holder">
<img class="plant" alt="plant" id="plant1" src="../../../../translated_images/plant1.d87946a2ca70cc4316bda6e6c3af7210fbe9ada5539a7885141a9ce0efaf7be3.fi.png" />
<img class="plant" alt="plant" id="plant1" src="../../../../translated_images/fi/plant1.d87946a2ca70cc4316bda6e6c3af7210fbe9ada5539a7885141a9ce0efaf7be3.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant2" src="../../../../translated_images/plant2.8daa1606c9c1ad896bb171212c7d1d882e504b76b8ec3a2d1c337d775cf50dc3.fi.png" />
<img class="plant" alt="plant" id="plant2" src="../../../../translated_images/fi/plant2.8daa1606c9c1ad896bb171212c7d1d882e504b76b8ec3a2d1c337d775cf50dc3.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant3" src="../../../../translated_images/plant3.8b0d484381a2a2a77c5c06ad97ab6ae5b7023da8c6c7678b0183bc0e46ea17a7.fi.png" />
<img class="plant" alt="plant" id="plant3" src="../../../../translated_images/fi/plant3.8b0d484381a2a2a77c5c06ad97ab6ae5b7023da8c6c7678b0183bc0e46ea17a7.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant4" src="../../../../translated_images/plant4.656e16ae1df37be2af5f4e7b5ab6c5decc432c3d3ec2eb98b904ddbecad49db0.fi.png" />
<img class="plant" alt="plant" id="plant4" src="../../../../translated_images/fi/plant4.656e16ae1df37be2af5f4e7b5ab6c5decc432c3d3ec2eb98b904ddbecad49db0.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant5" src="../../../../translated_images/plant5.2b41b9355f11ebccd62d327f5f14e56531ecda9c6f970bc89e386ee9f0273bb0.fi.png" />
<img class="plant" alt="plant" id="plant5" src="../../../../translated_images/fi/plant5.2b41b9355f11ebccd62d327f5f14e56531ecda9c6f970bc89e386ee9f0273bb0.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant6" src="../../../../translated_images/plant6.3d1827d03b6569946be13ae5da1f32947ae56732638a43757a7c616a6adccc5d.fi.png" />
<img class="plant" alt="plant" id="plant6" src="../../../../translated_images/fi/plant6.3d1827d03b6569946be13ae5da1f32947ae56732638a43757a7c616a6adccc5d.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant7" src="../../../../translated_images/plant7.8152c302ac97f621a6c595bdf3939103568f9efc7d3b06a0f02a1ea66f479de0.fi.png" />
<img class="plant" alt="plant" id="plant7" src="../../../../translated_images/fi/plant7.8152c302ac97f621a6c595bdf3939103568f9efc7d3b06a0f02a1ea66f479de0.png" />
</div>
</div>
<div id="right-container" class="container">
<div class="plant-holder">
<img class="plant" alt="plant" id="plant8" src="../../../../translated_images/plant8.38d6428174ffa850a47cd1b81d528fa528adda7d23f3ae0bb42f4a27356ca5e6.fi.png" />
<img class="plant" alt="plant" id="plant8" src="../../../../translated_images/fi/plant8.38d6428174ffa850a47cd1b81d528fa528adda7d23f3ae0bb42f4a27356ca5e6.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant9" src="../../../../translated_images/plant9.f0e38d3327c37fc29cd2734d48d20c2cf69300898ece6d46708829e02ce540e3.fi.png" />
<img class="plant" alt="plant" id="plant9" src="../../../../translated_images/fi/plant9.f0e38d3327c37fc29cd2734d48d20c2cf69300898ece6d46708829e02ce540e3.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant10" src="../../../../translated_images/plant10.b159d6d6e985595f56d86b4b38061b8e7b4c9969c210c199fe967269cf935e7f.fi.png" />
<img class="plant" alt="plant" id="plant10" src="../../../../translated_images/fi/plant10.b159d6d6e985595f56d86b4b38061b8e7b4c9969c210c199fe967269cf935e7f.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant11" src="../../../../translated_images/plant11.2a03a1c2ec8ea84ef3a80c06cc6883f3960fbb669f2c0b0bd824ba33d7eb7d32.fi.png" />
<img class="plant" alt="plant" id="plant11" src="../../../../translated_images/fi/plant11.2a03a1c2ec8ea84ef3a80c06cc6883f3960fbb669f2c0b0bd824ba33d7eb7d32.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant12" src="../../../../translated_images/plant12.60e9b53e538fbaf3e5797ebf800acb483baf5639e6cf378292ac2321ab8a5ea9.fi.png" />
<img class="plant" alt="plant" id="plant12" src="../../../../translated_images/fi/plant12.60e9b53e538fbaf3e5797ebf800acb483baf5639e6cf378292ac2321ab8a5ea9.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant13" src="../../../../translated_images/plant13.07a51543c820bcf57f67a9a6c0acbd6211ff795e2e67a42a9718224534e95fab.fi.png" />
<img class="plant" alt="plant" id="plant13" src="../../../../translated_images/fi/plant13.07a51543c820bcf57f67a9a6c0acbd6211ff795e2e67a42a9718224534e95fab.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant14" src="../../../../translated_images/plant14.6e486371ba7d36ba3520d9828887993cb4c3edad8bdd8ff9b1b315717ff8cb63.fi.png" />
<img class="plant" alt="plant" id="plant14" src="../../../../translated_images/fi/plant14.6e486371ba7d36ba3520d9828887993cb4c3edad8bdd8ff9b1b315717ff8cb63.png" />
</div>
</div>
</div>

@ -30,7 +30,7 @@ journey
Glass reflections: 5: Student
```
![Johdatus CSS:ään](../../../../translated_images/webdev101-css.3f7af5991bf53a20.fi.png)
![Johdatus CSS:ään](../../../../translated_images/fi/webdev101-css.3f7af5991bf53a20.png)
> Sketchnote: [Tomomi Imura](https://twitter.com/girlie_mac)
Muistatko, kuinka HTML-terrariumisi näytti melko yksinkertaiselta? CSS:n avulla voimme muuttaa tuon pelkistetyn rakenteen visuaalisesti houkuttelevaksi.
@ -205,7 +205,7 @@ body {
Avaa selaimesi kehitystyökalut (F12), siirry Elements-välilehteen ja tarkista `<h1>`-elementtisi. Näet, että se perii fonttiperheen body-elementiltä:
![peritty fontti](../../../../translated_images/1.cc07a5cbe114ad1d.fi.png)
![peritty fontti](../../../../translated_images/fi/1.cc07a5cbe114ad1d.png)
**Kokeilua**: Kokeile asettaa muita periytyviä ominaisuuksia `<body>`-elementille, kuten `color`, `line-height` tai `text-align`. Mitä tapahtuu otsikolle ja muille elementeille?
@ -335,7 +335,7 @@ Terrariumissamme jokainen kasvi tarvitsee samanlaista tyylittelyä, mutta myös
**Tässä on jokaisen kasvin HTML-rakenne:**
```html
<div class="plant-holder">
<img class="plant" alt="Decorative plant for terrarium" id="plant1" src="../../../../translated_images/plant1.d18b18ffe73da18f8b1ac7aba73b4050af52f4a0c9174aeac464b85123fc2850.fi.png" />
<img class="plant" alt="Decorative plant for terrarium" id="plant1" src="../../../../translated_images/fi/plant1.d18b18ffe73da18f8b1ac7aba73b4050af52f4a0c9174aeac464b85123fc2850.png" />
</div>
```
@ -592,7 +592,7 @@ Valmis parantamaan terrariumiasi realistisilla lasin heijastuksilla? Tämä tekn
Luot hienovaraisia korostuksia, jotka simuloivat, miten valo heijastuu lasipinnoilta. Tämä lähestymistapa on samanlainen kuin miten renessanssimaalari Jan van Eyck käytti valoa ja heijastusta saadakseen maalatun lasin näyttämään kolmiulotteiselta. Tässä on tavoitteenasi:
![valmis terrarium](../../../../translated_images/terrarium-final.2f07047ffc597d0a.fi.png)
![valmis terrarium](../../../../translated_images/fi/terrarium-final.2f07047ffc597d0a.png)
**Haasteesi:**
- **Luo** hienovaraisia valkoisia tai vaaleanvärisiä soikeita muotoja lasin heijastuksille

@ -26,7 +26,7 @@ journey
Complete terrarium: 5: Student
```
![DOM ja sulkeuma](../../../../translated_images/webdev101-js.10280393044d7eaa.fi.png)
![DOM ja sulkeuma](../../../../translated_images/fi/webdev101-js.10280393044d7eaa.png)
> Sketchnote: [Tomomi Imura](https://twitter.com/girlie_mac)
Tervetuloa yhteen verkkokehityksen kiehtovimmista osa-alueista interaktiivisuuden luomiseen! Document Object Model (DOM) toimii sillan tavoin HTML:n ja JavaScriptin välillä, ja tänään käytämme sitä herättääksemme terrariosi eloon. Kun Tim Berners-Lee loi ensimmäisen verkkoselaimen, hän kuvitteli verkon, jossa dokumentit voisivat olla dynaamisia ja interaktiivisia DOM tekee tämän vision mahdolliseksi.
@ -105,7 +105,7 @@ flowchart TD
style Q fill:#ffebee
```
![DOM-puun esitys](../../../../translated_images/dom-tree.7daf0e763cbbba92.fi.png)
![DOM-puun esitys](../../../../translated_images/fi/dom-tree.7daf0e763cbbba92.png)
> DOM:n ja sitä vastaavan HTML-koodin esitys. Lähde: [Olfa Nasraoui](https://www.researchgate.net/publication/221417012_Profile-Based_Focused_Crawler_for_Social_Media-Sharing_Websites)
@ -150,7 +150,7 @@ flowchart LR
> 💡 **Sulkeumien ymmärtäminen**: Sulkeumat ovat merkittävä aihe JavaScriptissä, ja monet kehittäjät käyttävät niitä vuosia ennen kuin täysin ymmärtävät kaikki teoreettiset näkökohdat. Tänään keskitymme käytännön sovellukseen näet, kuinka sulkeumat syntyvät luonnollisesti interaktiivisia ominaisuuksia rakentaessamme. Ymmärrys kehittyy, kun näet, kuinka ne ratkaisevat todellisia ongelmia.
![DOM-puun esitys](../../../../translated_images/dom-tree.7daf0e763cbbba92.fi.png)
![DOM-puun esitys](../../../../translated_images/fi/dom-tree.7daf0e763cbbba92.png)
> DOM:n ja sitä vastaavan HTML-koodin esitys. Lähde: [Olfa Nasraoui](https://www.researchgate.net/publication/221417012_Profile-Based_Focused_Crawler_for_Social_Media-Sharing_Websites)
@ -589,7 +589,7 @@ Testaa nyt interaktiivista terrariumiasi! Avaa `index.html`-tiedosto verkkoselai
- **Laitteiden välinen tuki**: Toimii sekä työpöydällä että mobiililaitteilla
- **Suorituskyky huomioitu**: Ei muistivuotoja tai tarpeettomia laskelmia
![valmis terrarium](../../../../translated_images/terrarium-final.0920f16e87c13a84.fi.png)
![valmis terrarium](../../../../translated_images/fi/terrarium-final.0920f16e87c13a84.png)
---

@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA:
Pieni vedä ja pudota -koodimeditaatio. Vähän HTML:ää, JS:ää ja CSS:ää käyttäen voit rakentaa verkkokäyttöliittymän, tyylitellä sen ja lisätä siihen vuorovaikutteisuutta.
![minun terraarioni](../../../../translated_images/screenshot_gray.0c796099a1f9f25e.fi.png)
![minun terraarioni](../../../../translated_images/fi/screenshot_gray.0c796099a1f9f25e.png)
## Tekijät

@ -26,7 +26,7 @@ journey
Polish experience: 5: Student
```
![Selaimen luonnos](../../../../translated_images/browser.60317c9be8b7f84a.fi.jpg)
![Selaimen luonnos](../../../../translated_images/fi/browser.60317c9be8b7f84a.jpg)
> Luonnos: [Wassim Chegham](https://dev.to/wassimchegham/ever-wondered-what-happens-when-you-type-in-a-url-in-an-address-bar-in-a-browser-3dob)
## Ennakkokysely
@ -79,7 +79,7 @@ Tämä prosessi muistuttaa, kuinka ensimmäinen selain, WorldWideWeb, suunnitelt
**Pieni historia**: Ensimmäinen selain oli nimeltään 'WorldWideWeb' ja sen loi Sir Timothy Berners-Lee vuonna 1990.
![varhaiset selaimet](../../../../translated_images/earlybrowsers.d984b711cdf3a42d.fi.jpg)
![varhaiset selaimet](../../../../translated_images/fi/earlybrowsers.d984b711cdf3a42d.jpg)
> Joitakin varhaisia selaimia, lähde: [Karen McGrane](https://www.slideshare.net/KMcGrane/week-4-ixd-history-personal-computing)
### Kuinka selaimet käsittelevät verkkosisältöä
@ -198,7 +198,7 @@ quadrantChart
Laajennuksen asennusprosessin ymmärtäminen auttaa sinua ennakoimaan käyttäjäkokemusta, kun ihmiset asentavat laajennuksesi. Asennusprosessi on standardoitu moderneissa selaimissa, pienillä käyttöliittymäsuunnittelun eroilla.
![kuvakaappaus Edge-selaimesta, jossa edge://extensions-sivu ja asetukset-valikko ovat avoinna](../../../../translated_images/install-on-edge.d68781acaf0b3d3d.fi.png)
![kuvakaappaus Edge-selaimesta, jossa edge://extensions-sivu ja asetukset-valikko ovat avoinna](../../../../translated_images/fi/install-on-edge.d68781acaf0b3d3d.png)
> **Tärkeää**: Varmista, että kehittäjätila on kytketty päälle ja salli laajennusten asentaminen muista kaupoista testatessasi omia laajennuksiasi.
@ -313,10 +313,10 @@ Tämä noudattaa progressiivisen paljastamisen periaatetta, jota on käytetty k
### Laajennusnäkymien yleiskatsaus
**Asetusnäkymä** - Ensimmäisen käyttökerran asetukset:
![kuvakaappaus valmiista laajennuksesta avoinna selaimessa, jossa näkyy lomake alueen nimen ja API-avaimen syöttämiseksi.](../../../../translated_images/1.b6da8c1394b07491.fi.png)
![kuvakaappaus valmiista laajennuksesta avoinna selaimessa, jossa näkyy lomake alueen nimen ja API-avaimen syöttämiseksi.](../../../../translated_images/fi/1.b6da8c1394b07491.png)
**Tulosnäkymä** - Hiilijalanjälkitietojen näyttö:
![kuvakaappaus valmiista laajennuksesta, joka näyttää hiilen käytön ja fossiilisten polttoaineiden prosenttiosuuden US-NEISO-alueelle.](../../../../translated_images/2.1dae52ff08042246.fi.png)
![kuvakaappaus valmiista laajennuksesta, joka näyttää hiilen käytön ja fossiilisten polttoaineiden prosenttiosuuden US-NEISO-alueelle.](../../../../translated_images/fi/2.1dae52ff08042246.png)
### Asetuslomakkeen rakentaminen

@ -266,7 +266,7 @@ stateDiagram-v2
ClearStorage --> FirstTime: Back to setup
```
![Paikallisen tallennuksen näkymä](../../../../translated_images/localstorage.472f8147b6a3f8d1.fi.png)
![Paikallisen tallennuksen näkymä](../../../../translated_images/fi/localstorage.472f8147b6a3f8d1.png)
> ⚠️ **Tietoturvahuomio**: Tuotantosovelluksissa API-avainten tallentaminen LocalStorageen aiheuttaa tietoturvariskejä, koska JavaScript voi käyttää näitä tietoja. Oppimiskäyttöön tämä lähestymistapa toimii hyvin, mutta oikeissa sovelluksissa tulisi käyttää turvallista palvelinpuolen tallennusta arkaluontoisille tunnuksille.

@ -126,7 +126,7 @@ Avaa Edge-selaimen kehitystyökalut klikkaamalla oikeassa yläkulmassa olevia ko
Kokeillaan tätä. Avaa verkkosivusto (Microsoft.com toimii hyvin tähän) ja klikkaa 'Tallenna'-painiketta. Päivitä sivu ja katso, kuinka profiilintyökalu tallentaa kaiken, mitä tapahtuu. Kun lopetat tallennuksen, näet yksityiskohtaisen erittelyn siitä, kuinka selain 'skriptasi', 'renderöi' ja 'maalasi' sivuston. Se muistuttaa minua siitä, kuinka ohjauskeskus seuraa jokaista järjestelmää raketin laukaisun aikana saat reaaliaikaista dataa siitä, mitä tapahtuu ja milloin.
![Edge profiler](../../../../translated_images/profiler.5a4a62479c5df01c.fi.png)
![Edge profiler](../../../../translated_images/fi/profiler.5a4a62479c5df01c.png)
✅ [Microsoftin dokumentaatio](https://docs.microsoft.com/microsoft-edge/devtools-guide/performance/?WT.mc_id=academic-77807-sagibbon) sisältää paljon lisätietoa, jos haluat syventyä aiheeseen.
@ -136,11 +136,11 @@ Valitse profiilin aikajanan osia zoomataksesi tapahtumiin, jotka tapahtuvat sivu
Saat yleiskuvan sivusi suorituskyvystä valitsemalla osan profiilin aikajanasta ja katsomalla yhteenvetopaneelia:
![Edge profiler snapshot](../../../../translated_images/snapshot.97750180ebcad737.fi.png)
![Edge profiler snapshot](../../../../translated_images/fi/snapshot.97750180ebcad737.png)
Tarkista Tapahtumaloki-paneeli nähdäksesi, kestikö jokin tapahtuma yli 15 ms:
![Edge event log](../../../../translated_images/log.804026979f3707e0.fi.png)
![Edge event log](../../../../translated_images/fi/log.804026979f3707e0.png)
✅ Tutustu profiilityökaluusi! Avaa kehitystyökalut tällä sivustolla ja katso, onko pullonkauloja. Mikä on hitaimmin latautuva resurssi? Nopein?

@ -23,7 +23,7 @@ Tätä laajennusta käyttäjä voi kutsua ad hoc -tyyliin, kun API-avain ja alue
### Kiitokset
![vihreä selaimen laajennus](../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.fi.png)
![vihreä selaimen laajennus](../../../translated_images/fi/extension-screenshot.0e7f5bfa110e92e3.png)
## Kiitokset

@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA:
Käyttämällä tmrow:n CO2 Signal -API:ta sähkönkulutuksen seuraamiseen voit rakentaa selainlaajennuksen, joka muistuttaa sinua suoraan selaimessa siitä, kuinka kuormittavaa alueesi sähkönkulutus on. Tämän laajennuksen satunnainen käyttö auttaa sinua tekemään päätöksiä toimistasi tämän tiedon perusteella.
![laajennuksen kuvakaappaus](../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.fi.png)
![laajennuksen kuvakaappaus](../../../../translated_images/fi/extension-screenshot.0e7f5bfa110e92e3.png)
## Aloittaminen
@ -31,7 +31,7 @@ npm run build
Asentaaksesi laajennuksen Edge-selaimeen, käytä selaimen oikean yläkulman 'kolmen pisteen' valikkoa löytääksesi Laajennukset-paneelin. Valitse sieltä 'Lataa purkamaton' ladataksesi uuden laajennuksen. Avaa 'dist'-kansio kehotteessa, ja laajennus latautuu. Käyttääksesi sitä tarvitset API-avaimen CO2 Signal -API:lle ([hanki avain sähköpostitse täältä](https://www.co2signal.com/) - syötä sähköpostiosoitteesi tämän sivun laatikkoon) sekä [alueesi koodin](http://api.electricitymap.org/v3/zones), joka vastaa [Electricity Map](https://www.electricitymap.org/map) -karttaa (esimerkiksi Bostonissa käytän koodia 'US-NEISO').
![asennus](../../../../translated_images/install-on-edge.78634f02842c4828.fi.png)
![asennus](../../../../translated_images/fi/install-on-edge.78634f02842c4828.png)
Kun API-avain ja alueen koodi on syötetty laajennuksen käyttöliittymään, selaimen laajennuspalkin värillinen piste muuttuu heijastamaan alueesi energiankulutusta ja antaa sinulle vihjeitä siitä, mitkä energiaintensiiviset toiminnot olisivat sopivia suorittaa. Tämän 'pistejärjestelmän' konsepti tuli minulle [Energy Lollipop -laajennuksesta](https://energylollipop.com/) Kalifornian päästöjen seuraamiseen.

@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA:
Käyttämällä tmrow'n CO2 Signal -API:ta sähkönkulutuksen seuraamiseen, luo selaimen laajennus, joka tarjoaa suoraan selaimessasi muistutuksen alueesi sähkönkulutuksesta. Tämän ad hoc -laajennuksen käyttö auttaa sinua tekemään päätöksiä toimistasi perustuen tähän tietoon.
![laajennuksen kuvakaappaus](../../../../../translated_images/extension-screenshot.352c4c3ba54e4041ad2f6af749d562cc5705f527b5826efd53d11c3528f5ae45.fi.png)
![laajennuksen kuvakaappaus](../../../../../translated_images/fi/extension-screenshot.352c4c3ba54e4041ad2f6af749d562cc5705f527b5826efd53d11c3528f5ae45.png)
## Aloittaminen
@ -31,7 +31,7 @@ npm run build
Asentaaksesi Edge-selaimeen, käytä selaimen oikeassa yläkulmassa olevaa 'kolmen pisteen' valikkoa löytääksesi Laajennukset-paneelin. Valitse sieltä 'Lataa purkamaton' ladataksesi uuden laajennuksen. Avaa 'dist'-kansio, kun sitä pyydetään, ja laajennus ladataan. Käyttääksesi sitä tarvitset API-avaimen CO2 Signal -API:lle ([hanki avain sähköpostitse täältä](https://www.co2signal.com/) - syötä sähköpostiosoitteesi tämän sivun laatikkoon) sekä [sähköaluekoodin](http://api.electricitymap.org/v3/zones), joka vastaa [Electricity Map](https://www.electricitymap.org/map) -karttaa (esimerkiksi Bostonissa käytän 'US-NEISO').
![asennus](../../../../../translated_images/install-on-edge.8bd0ee3ca7dcda1c5334b5195603a43c864e3b38d088b03d57376d25e77b9459.fi.png)
![asennus](../../../../../translated_images/fi/install-on-edge.8bd0ee3ca7dcda1c5334b5195603a43c864e3b38d088b03d57376d25e77b9459.png)
Kun API-avain ja alue on syötetty laajennuksen käyttöliittymään, väripiste selaimen laajennuspalkissa muuttuu heijastamaan alueesi energiankulutusta ja antaa sinulle indikaattorin siitä, mitkä korkean energiankulutuksen toiminnot olisivat sinulle sopivia. Tämän "pistejärjestelmän" konseptin sain [Energy Lollipop -laajennuksesta](https://energylollipop.com/) Kalifornian päästöille.

@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA:
Käyttämällä tmrow'n CO2 Signal -API:ta sähkönkulutuksen seuraamiseen, luo selainlaajennus, joka muistuttaa sinua suoraan selaimessasi alueesi sähkönkulutuksesta. Tämän ad hoc -laajennuksen käyttö auttaa sinua tekemään päätöksiä toimintasi suhteen näiden tietojen perusteella.
![laajennuksen kuvakaappaus](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.fi.png)
![laajennuksen kuvakaappaus](../../../../../translated_images/fi/extension-screenshot.0e7f5bfa110e92e3.png)
## Aloittaminen
@ -31,7 +31,7 @@ npm run build
Asentaaksesi laajennuksen Edge-selaimeen, käytä selaimen oikean yläkulman 'kolmen pisteen' valikkoa löytääksesi Laajennukset-paneelin. Valitse sieltä 'Lataa purkamaton laajennus' ladataksesi uuden laajennuksen. Avaa 'dist'-kansio kehotteessa, ja laajennus latautuu. Käyttääksesi laajennusta tarvitset API-avaimen CO2 Signal -API:lle ([hanki avain sähköpostitse täältä](https://www.co2signal.com/) - syötä sähköpostiosoitteesi sivun laatikkoon) sekä [alueesi koodin](http://api.electricitymap.org/v3/zones), joka vastaa [Electricity Map -karttaa](https://www.electricitymap.org/map) (esimerkiksi Bostonissa käytän 'US-NEISO').
![asennus](../../../../../translated_images/install-on-edge.78634f02842c4828.fi.png)
![asennus](../../../../../translated_images/fi/install-on-edge.78634f02842c4828.png)
Kun API-avain ja alue on syötetty laajennuksen käyttöliittymään, selaimen laajennuspalkin värillisen pisteen tulisi muuttua heijastamaan alueesi energiankulutusta ja antaa sinulle vihjeen siitä, millaisia energiaintensiivisiä toimintoja olisi sopivaa tehdä. Tämän 'pistejärjestelmän' konsepti on saanut inspiraationsa [Energy Lollipop -laajennuksesta](https://energylollipop.com/) Kalifornian päästöjen osalta.

@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA:
Tmrow:n CO2 Signal API:n avulla seurataan sähkönkulutusta ja luodaan selainlaajennus, joka muistuttaa sinua siitä, kuinka kuormittavaa alueesi sähkönkäyttö on selaimessasi. Tämän laajennuksen käyttö auttaa sinua tekemään päätöksiä toiminnastasi tämän tiedon perusteella.
![Laajennuksen kuvakaappaus](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.fi.png)
![Laajennuksen kuvakaappaus](../../../../../translated_images/fi/extension-screenshot.0e7f5bfa110e92e3.png)
## Aloittaminen
@ -31,7 +31,7 @@ npm run build
Asentaaksesi sen Edge-selaimeen, käytä selaimen oikeassa yläkulmassa olevaa "kolmen pisteen" valikkoa löytääksesi laajennuspaneelin. Valitse sieltä "Lataa purkamaton" ladataksesi uuden laajennuksen. Avaa kehotteessa "dist"-kansio, ja laajennus latautuu. Käyttääksesi sitä, tarvitset CO2 Signal API -avaimen ([saatavilla sähköpostitse täältä](https://www.co2snal.com/) - syötä sähköpostiosoitteesi sivun laatikkoon) ja [alueesi koodin](http://api.electricitymap.org/v3/zones) [Electricity Map](https://www.electricitymap.org/map) -sivustolta (esimerkiksi Bostonissa käytän "US-NEISO").
![Asennus](../../../../../translated_images/install-on-edge.78634f02842c4828.fi.png)
![Asennus](../../../../../translated_images/fi/install-on-edge.78634f02842c4828.png)
Kun API-avain ja alue on syötetty laajennuksen käyttöliittymään, selaimen laajennuspalkissa oleva värillinen piste muuttuu heijastamaan alueesi energiankäyttöä ja antaa sinulle indikaattorin siitä, mitkä energiaintensiiviset toiminnot sopivat parhaiten suoritettavaksi. Tämän "piste"-järjestelmän idea tuli minulle Kalifornian päästöjen [Energy Lollipop -laajennuksesta](https://energylollipop.com/).

@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA:
Tässä projektissa käytetään tmrow:n Signal CO2 -rajapintaa sähköenergian käytön seuraamiseen. Tarkoituksena on luoda selainlaajennus, joka muistuttaa suoraan selaimessa, kuinka kuormittavaa sähköenergian käyttö on omalla alueella. Tämän laajennuksen avulla voi arvioida omia toimintojaan näiden tietojen perusteella.
![laajennuksen näkymä](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.fi.png)
![laajennuksen näkymä](../../../../../translated_images/fi/extension-screenshot.0e7f5bfa110e92e3.png)
## Aloittaminen
@ -31,7 +31,7 @@ npm run build
Asentaaksesi laajennuksen Edge-selaimeen, käytä selaimen oikeassa yläkulmassa olevaa "kolmen pisteen" valikkoa ja etsi Laajennukset-paneeli. Jos kehittäjätila ei ole vielä käytössä, ota se käyttöön (vasemmassa alakulmassa). Valitse "Lataa purkamaton" lisätäksesi uuden laajennuksen. Avaa "dist"-kansio kehotteessa, ja laajennus ladataan. Käyttöä varten tarvitset API-avaimen CO2 Signal -rajapintaan (voit [hankkia sen sähköpostitse täältä](https://www.co2signal.com/) - syötä sähköpostiosoitteesi sivulla olevaan kenttään) sekä [alueesi koodin](http://api.electricitymap.org/v3/zones), joka vastaa [sähkökarttaa](https://www.electricitymap.org/map) (esimerkiksi Bostonissa "US-NEISO").
![asennus](../../../../../translated_images/install-on-edge.78634f02842c4828.fi.png)
![asennus](../../../../../translated_images/fi/install-on-edge.78634f02842c4828.png)
Kun API-avain ja alue on syötetty laajennuksen käyttöliittymään, selaimen laajennuspalkissa oleva väripiste muuttuu heijastamaan alueen energiankäyttöä. Se antaa myös vihjeitä siitä, mitkä korkean energiankulutuksen toiminnot olisivat sopivia suorittaa. Tämän "pistejärjestelmän" konsepti on peräisin [Energy Lollipop -laajennuksesta](https://energylollipop.com/), joka seuraa Kalifornian päästöjä.

@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA:
Rakennetaan selainlaajennus, joka käyttää tmrow:n CO2 Signal API:ta seuratakseen energiankulutusta ja näyttää muistutuksena, kuinka paljon sähköä alueellasi käytetään. Tämän laajennuksen avulla voit tehdä päätöksiä toiminnastasi tämän tiedon perusteella.
![laajennuksen kuvakaappaus](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.fi.png)
![laajennuksen kuvakaappaus](../../../../../translated_images/fi/extension-screenshot.0e7f5bfa110e92e3.png)
## Aloitus
@ -31,7 +31,7 @@ npm run build
Asentaaksesi laajennuksen Edge-selaimeen, etsi selaimen oikeasta yläkulmasta "kolmen pisteen" valikosta "Laajennukset"-paneeli. Valitse sieltä "Load Unpacked" ja lataa uusi laajennus. Kun sinua kehotetaan, avaa "dist"-kansio, jolloin laajennus latautuu. Käyttääksesi laajennusta tarvitset CO2 Signal API:n API-avaimen ([hanki yksi sähköpostitse täältä](https://www.co2signal.com/) - syötä sähköpostisi tämän sivun laatikkoon) sekä [Electricity Map](https://www.electricitymap.org/map) -sivuston mukaisen [aluekoodin](http://api.electricitymap.org/v3/zones) (esimerkiksi Bostonissa käytetään 'US-NEISO').
![asennus](../../../../../translated_images/install-on-edge.78634f02842c4828.fi.png)
![asennus](../../../../../translated_images/fi/install-on-edge.78634f02842c4828.png)
Kun syötät API-avaimen ja aluekoodin laajennuksen käyttöliittymään, selainlaajennuspalkissa näkyvä värillinen piste muuttuu ja heijastaa alueesi energiankulutusta. Tämä auttaa sinua arvioimaan, millaisia energiaa vaativia toimintoja on sopivaa tehdä. Tämän "piste"-järjestelmän idea tuli minulle Kalifornian päästöjen [Energy Lollipop -laajennuksesta](https://energylollipop.com/).

@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA:
Käyttämällä tmrow:n CO2 Signal -API:ta sähkönkulutuksen seuraamiseen, rakenna selaimen laajennus, joka antaa sinulle ilmoituksia siitä, kuinka raskasta alueesi sähkönkulutus on. Tämän laajennuksen käyttö auttaa sinua tekemään tietoisempia päätöksiä toiminnastasi näiden tietojen perusteella.
![selaimen laajennuksen kuvakaappaus](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.fi.png)
![selaimen laajennuksen kuvakaappaus](../../../../../translated_images/fi/extension-screenshot.0e7f5bfa110e92e3.png)
## Aloita tästä
@ -31,7 +31,7 @@ npm run build
Asentaaksesi laajennuksen Edge-selaimeen, käytä selaimen oikeassa yläkulmassa olevaa "kolmen pisteen" valikkoa löytääksesi Laajennukset-paneelin. Valitse sieltä 'Load Unpacked' ladataksesi uuden laajennuksen. Avaa 'dist'-kansio pyynnön mukaisesti, ja laajennus latautuu. Käyttääksesi sitä tarvitset API-avaimen CO2 Signal -API:lle ([hanki avain sähköpostitse täältä](https://www.co2signal.com/) - syötä sähköpostiosoitteesi sivun laatikkoon) sekä [alueesi koodin](http://api.electricitymap.org/v3/zones), joka vastaa [Electricity Map](https://www.electricitymap.org/map) -karttaa (esimerkiksi Bostonissa käytän 'US-NEISO').
![lataus käynnissä](../../../../../translated_images/install-on-edge.78634f02842c4828.fi.png)
![lataus käynnissä](../../../../../translated_images/fi/install-on-edge.78634f02842c4828.png)
Kun API-avain ja aluekoodi on syötetty laajennuksen käyttöliittymään, selaimen laajennuspalkin värillinen piste muuttuu heijastamaan alueesi energiankulutusta ja antaa sinulle vihjeitä siitä, millaisia raskaita toimintoja kannattaa tehdä. Tämän "pistejärjestelmän" konsepti tuli minulle [Energy Lollipop -selaimen laajennuksesta](https://energylollipop.com/) Kalifornian päästöjen seuraamiseen.

@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA:
Käyttämällä tmrow'n CO2 Signal API:ta sähkönkulutuksen seuraamiseen, voit rakentaa selaimen laajennuksen, joka muistuttaa sinua suoraan selaimessa siitä, kuinka kuormittavaa alueesi sähkönkulutus on. Tämän laajennuksen satunnainen käyttö auttaa sinua tekemään harkittuja päätöksiä toimistasi tämän tiedon perusteella.
![laajennuksen kuvakaappaus](../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.fi.png)
![laajennuksen kuvakaappaus](../../../../translated_images/fi/extension-screenshot.0e7f5bfa110e92e3.png)
## Aloittaminen
@ -31,7 +31,7 @@ npm run build
Asentaaksesi laajennuksen Edge-selaimeen, käytä selaimen oikean yläkulman "kolmen pisteen" valikkoa löytääksesi Laajennukset-paneelin. Valitse sieltä "Lataa purkamaton" ladataksesi uuden laajennuksen. Avaa kehotteessa "dist"-kansio, ja laajennus latautuu. Käyttääksesi sitä, tarvitset API-avaimen CO2 Signal API:lle ([hanki avain sähköpostitse täältä](https://www.co2signal.com/) - syötä sähköpostiosoitteesi tämän sivun laatikkoon) sekä [alueesi koodin](http://api.electricitymap.org/v3/zones), joka vastaa [Electricity Map](https://www.electricitymap.org/map) -karttaa (esimerkiksi Bostonissa käytän koodia 'US-NEISO').
![asennus](../../../../translated_images/install-on-edge.78634f02842c4828.fi.png)
![asennus](../../../../translated_images/fi/install-on-edge.78634f02842c4828.png)
Kun API-avain ja alueen koodi on syötetty laajennuksen käyttöliittymään, selaimen laajennuspalkin värillinen piste muuttuu heijastamaan alueesi energiankulutusta ja antaa sinulle vihjeitä siitä, mitkä energiaintensiiviset toiminnot olisivat sopivia suorittaa. Tämän "piste"-järjestelmän konsepti on peräisin [Energy Lollipop -laajennuksesta](https://energylollipop.com/) Kalifornian päästöjen seurantaan.

@ -108,7 +108,7 @@ quadrantChart
UI Elements: [0.9, 0.1]
```
![canvasin ruudukko](../../../../translated_images/canvas_grid.5f209da785ded492.fi.png)
![canvasin ruudukko](../../../../translated_images/fi/canvas_grid.5f209da785ded492.png)
> Kuva [MDN:stä](https://developer.mozilla.org/docs/Web/API/Canvas_API/Tutorial/Drawing_shapes)
Canvas-elementille piirtäminen noudattaa samaa kolmen vaiheen prosessia, joka muodostaa kaikkien canvas-grafiikoiden perustan. Kun teet tämän muutaman kerran, se muuttuu toiseksi luonteeksi:
@ -329,11 +329,11 @@ Sinun tulee rakentaa verkkosivu, jossa on Canvas-elementti. Sen tulisi näyttä
- Sankarilaiva
![Sankarilaiva](../../../../translated_images/player.dd24c1afa8c71e9b.fi.png)
![Sankarilaiva](../../../../translated_images/fi/player.dd24c1afa8c71e9b.png)
- 5*5 hirviöjoukko
![Hirviölaiva](../../../../translated_images/enemyShip.5df2a822c16650c2.fi.png)
![Hirviölaiva](../../../../translated_images/fi/enemyShip.5df2a822c16650c2.png)
### Suositellut kehitysvaiheet
@ -467,7 +467,7 @@ for (let x = START_X; x < STOP_X; x += ENEMY_SPACING) {
Valmis tulos näyttää tältä:
![Musta ruutu, jossa sankari ja 5*5 hirviötä](../../../../translated_images/partI-solution.36c53b48c9ffae2a.fi.png)
![Musta ruutu, jossa sankari ja 5*5 hirviötä](../../../../translated_images/fi/partI-solution.36c53b48c9ffae2a.png)
## Ratkaisu

@ -160,7 +160,7 @@ sequenceDiagram
```
- **Pistejärjestelmä**: Jokainen tuhottu vihollisalus antaa 100 pistettä (pyöreät numerot ovat helpompia pelaajien laskea mielessään). Pisteet näytetään vasemmassa alakulmassa.
- **Elämälaskuri**: Sankarisi aloittaa kolmella elämällä standardi, jonka varhaiset arcade-pelit asettivat tasapainottamaan haastetta ja pelattavuutta. Jokainen törmäys viholliseen maksaa yhden elämän. Näytämme jäljellä olevat elämät oikeassa alakulmassa aluksen ikoneilla ![elämäkuva](../../../../translated_images/life.6fb9f50d53ee0413.fi.png).
- **Elämälaskuri**: Sankarisi aloittaa kolmella elämällä standardi, jonka varhaiset arcade-pelit asettivat tasapainottamaan haastetta ja pelattavuutta. Jokainen törmäys viholliseen maksaa yhden elämän. Näytämme jäljellä olevat elämät oikeassa alakulmassa aluksen ikoneilla ![elämäkuva](../../../../translated_images/fi/life.6fb9f50d53ee0413.png).
## Aloitetaan rakentaminen!

@ -639,7 +639,7 @@ sequenceDiagram
`history.pushState` luo uusia merkintöjä selaimen navigointihistoriaan. Voit tarkistaa tämän pitämällä *takaisin-painiketta* painettuna selaimessasi, sen pitäisi näyttää jotain tällaista:
![Navigointihistorian kuvakaappaus](../../../../translated_images/history.7fdabbafa521e064.fi.png)
![Navigointihistorian kuvakaappaus](../../../../translated_images/fi/history.7fdabbafa521e064.png)
Jos yrität klikata takaisin-painiketta muutaman kerran, huomaat, että nykyinen URL-osoite muuttuu ja historia päivittyy, mutta sama template pysyy näytettynä.

@ -295,7 +295,7 @@ Ensiksi tarkastellaan, mitä tapahtuu peruslomakkeen lähetyksessä:
2. Tarkkaile muutoksia selaimesi osoiterivillä
3. Huomaa, kuinka sivu latautuu uudelleen ja tiedot näkyvät URL-osoitteessa
![Kuvakaappaus selaimen URL-osoitteen muutoksesta Rekisteröidy-painikkeen klikkauksen jälkeen](../../../../translated_images/click-register.e89a30bf0d4bc9ca.fi.png)
![Kuvakaappaus selaimen URL-osoitteen muutoksesta Rekisteröidy-painikkeen klikkauksen jälkeen](../../../../translated_images/fi/click-register.e89a30bf0d4bc9ca.png)
### HTTP-menetelmien vertailu
@ -350,7 +350,7 @@ Konfiguroidaan rekisteröintilomakkeesi kommunikoimaan oikein taustapalvelimen A
2. **Klikkaa** "Luo tili" -painiketta
3. **Tarkkaile** palvelimen vastausta selaimessasi
![Selaimen ikkuna osoitteessa localhost:5000/api/accounts, jossa näkyy JSON-merkkijono käyttäjätiedoilla](../../../../translated_images/form-post.61de4ca1b964d91a.fi.png)
![Selaimen ikkuna osoitteessa localhost:5000/api/accounts, jossa näkyy JSON-merkkijono käyttäjätiedoilla](../../../../translated_images/fi/form-post.61de4ca1b964d91a.png)
**Mitä sinun pitäisi nähdä:**
- **Selaimen uudelleenohjaus** API-päätepisteen URL-osoitteeseen
@ -554,7 +554,7 @@ async function register() {
3. **Klikkaa** "Luo tili"
4. **Tarkkaile** konsoliviestejä ja käyttäjäpalautetta
![Näyttökuva, jossa näkyy lokiviesti selaimen konsolissa](../../../../translated_images/browser-console.efaf0b51aaaf6778.fi.png)
![Näyttökuva, jossa näkyy lokiviesti selaimen konsolissa](../../../../translated_images/fi/browser-console.efaf0b51aaaf6778.png)
**Mitä sinun pitäisi nähdä:**
- **Lataustila** näkyy lähetyspainikkeessa
@ -729,7 +729,7 @@ Parannetaan rekisteröintilomakettasi vankalla validoinnilla, joka tarjoaa erino
3. **Kokeile** erikoismerkkejä käyttäjänimi-kentässä
4. **Anna** negatiivinen saldo
![Näyttökuva, jossa näkyy validointivirhe lomakkeen lähettämisen yhteydessä](../../../../translated_images/validation-error.8bd23e98d416c22f.fi.png)
![Näyttökuva, jossa näkyy validointivirhe lomakkeen lähettämisen yhteydessä](../../../../translated_images/fi/validation-error.8bd23e98d416c22f.png)
**Mitä huomaat:**
- **Selaimen näyttämät** natiivivalidointiviestit
@ -859,7 +859,7 @@ Näytä virheilmoitus HTML:ssä, jos käyttäjä on jo olemassa.
Tässä on esimerkki siitä, miltä lopullinen kirjautumissivu voi näyttää pienen tyylittelyn jälkeen:
![Näyttökuva kirjautumissivusta CSS-tyylien lisäämisen jälkeen](../../../../translated_images/result.96ef01f607bf856a.fi.png)
![Näyttökuva kirjautumissivusta CSS-tyylien lisäämisen jälkeen](../../../../translated_images/fi/result.96ef01f607bf856a.png)
## Luentojälkeinen kysely

@ -160,7 +160,7 @@ sequenceDiagram
Browser->>User: Displays new page (flash/reload)
```
![Päivitysprosessi monisivuisessa sovelluksessa](../../../../translated_images/mpa.7f7375a1a2d4aa77.fi.png)
![Päivitysprosessi monisivuisessa sovelluksessa](../../../../translated_images/fi/mpa.7f7375a1a2d4aa77.png)
**Miksi tämä lähestymistapa tuntui kömpelöltä:**
- Jokainen klikkaus tarkoitti koko sivun uudelleenrakentamista
@ -187,7 +187,7 @@ sequenceDiagram
Browser->>User: Shows updated content (no reload)
```
![Päivitysprosessi yksisivuisessa sovelluksessa](../../../../translated_images/spa.268ec73b41f992c2.fi.png)
![Päivitysprosessi yksisivuisessa sovelluksessa](../../../../translated_images/fi/spa.268ec73b41f992c2.png)
**Miksi SPA:t tuntuvat niin paljon paremmilta:**
- Vain ne osat, jotka oikeasti muuttuivat, päivitetään (fiksua, eikö?)
@ -515,7 +515,7 @@ if (data.error) {
Nyt kun testaat virheellisellä tilillä, näet hyödyllisen virheilmoituksen suoraan sivulla!
![Näyttökuva, jossa virheilmoitus näkyy kirjautumisen aikana](../../../../translated_images/login-error.416fe019b36a6327.fi.png)
![Näyttökuva, jossa virheilmoitus näkyy kirjautumisen aikana](../../../../translated_images/fi/login-error.416fe019b36a6327.png)
#### Vaihe 4: Ole inklusiivinen saavutettavuuden suhteen
@ -928,7 +928,7 @@ Valmis viemään pankkisovelluksesi seuraavalle tasolle? Tehdään siitä jotain
Tältä viimeistelty kojelauta voisi näyttää:
![Esimerkkikuva viimeistellystä kojelaudasta tyylittelyn jälkeen](../../../../translated_images/screen2.123c82a831a1d14a.fi.png)
![Esimerkkikuva viimeistellystä kojelaudasta tyylittelyn jälkeen](../../../../translated_images/fi/screen2.123c82a831a1d14a.png)
Sinun ei tarvitse kopioida tätä täysin - käytä sitä inspiraationa ja tee siitä oman näköisesi!

@ -190,7 +190,7 @@ Kuten Titanicin osastoitu rakenne, joka vaikutti vankalta, kunnes useat osastot
Sen sijaan, että juoksisimme ympyrää, luomme **keskitetyn tilanhallintajärjestelmän**. Ajattele sitä kuin yhtä todella järjestelmällistä henkilöä, joka vastaa kaikesta tärkeästä:
![Kaavio, joka näyttää datavirrat HTML:n, käyttäjän toimien ja tilan välillä](../../../../translated_images/data-flow.fa2354e0908fecc8.fi.png)
![Kaavio, joka näyttää datavirrat HTML:n, käyttäjän toimien ja tilan välillä](../../../../translated_images/fi/data-flow.fa2354e0908fecc8.png)
```mermaid
flowchart TD

@ -112,7 +112,7 @@ Katso [palvelimen API-dokumentaatio](../api/README.md) saadaksesi tietoa:
**Odotettu tulos:**
Tehtävän suorittamisen jälkeen pankkisovelluksessasi pitäisi olla täysin toimiva "Lisää tapahtuma" -ominaisuus, joka näyttää ja käyttäytyy ammattimaisesti:
![Näyttökuva esimerkkidialogista "Lisää tapahtuma"](../../../../translated_images/dialog.93bba104afeb79f1.fi.png)
![Näyttökuva esimerkkidialogista "Lisää tapahtuma"](../../../../translated_images/fi/dialog.93bba104afeb79f1.png)
## Toteutuksen testaus

@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA:
Tässä projektissa opit rakentamaan kuvitteellisen pankin. Näissä oppitunneissa annetaan ohjeita siitä, miten verkkosovellus suunnitellaan ja reitit määritetään, miten lomakkeita rakennetaan, tilaa hallitaan ja tietoja haetaan API:sta, josta voit hakea pankin tiedot.
| ![Screen1](../../../translated_images/screen1.baccbba0f1f93364.fi.png) | ![Screen2](../../../translated_images/screen2.123c82a831a1d14a.fi.png) |
| ![Screen1](../../../translated_images/fi/screen1.baccbba0f1f93364.png) | ![Screen2](../../../translated_images/fi/screen2.123c82a831a1d14a.png) |
|--------------------------------|--------------------------------|
## Oppitunnit

@ -185,7 +185,7 @@ Aivan kuten Alexander Graham Bellin puhelin yhdisti etäisiä paikkoja, GitHub-t
Kun kaikki on latautunut, näet kauniin ja selkeän työtilan, joka on suunniteltu pitämään sinut keskittyneenä siihen, mikä on tärkeää koodisi!
![VSCode.dev:n oletuskäyttöliittymä](../../../../translated_images/default-vscode-dev.5d06881d65c1b323.fi.png)
![VSCode.dev:n oletuskäyttöliittymä](../../../../translated_images/fi/default-vscode-dev.5d06881d65c1b323.png)
**Tässä on kierros naapurustossa:**
- **Toimintopalkki** (vasemmalla oleva kaistale): Päänavigointisi, jossa on Explorer 📁, Search 🔍, Source Control 🌿, Extensions 🧩 ja Settings ⚙️
@ -233,7 +233,7 @@ Tämä on täydellinen, kun aloitat VSCode.devissä ja haluat avata tietyn repos
1. Siirry osoitteeseen [vscode.dev](https://vscode.dev), jos et ole jo siellä
2. Etsi "Open Remote Repository" -painike aloitusnäytöltä ja klikkaa sitä
![Avaa etärepositorio](../../../../translated_images/open-remote-repository.bd9c2598b8949e7f.fi.png)
![Avaa etärepositorio](../../../../translated_images/fi/open-remote-repository.bd9c2598b8949e7f.png)
3. Liitä mikä tahansa GitHub-repositorion URL (kokeile tätä: `https://github.com/microsoft/Web-Dev-For-Beginners`)
4. Paina Enter ja katso, kuinka taikuus tapahtuu!
@ -242,7 +242,7 @@ Tämä on täydellinen, kun aloitat VSCode.devissä ja haluat avata tietyn repos
Haluatko tuntea itsesi koodausvelhoksi? Kokeile tätä näppäinyhdistelmää: Ctrl+Shift+P (tai Cmd+Shift+P Macilla) avataksesi komentopalettin:
![Komentopaletti](../../../../translated_images/palette-menu.4946174e07f42622.fi.png)
![Komentopaletti](../../../../translated_images/fi/palette-menu.4946174e07f42622.png)
**Komentopaletti on kuin hakukone kaikelle, mitä voit tehdä:**
- Kirjoita "open remote", ja se löytää repositorion avaajan puolestasi
@ -304,7 +304,7 @@ Aivan kuten arkkitehdin toimistossa piirustusten järjestäminen, tiedostojen lu
3. Syötä tiedoston nimi, mukaan lukien oikea tiedostopääte (`style.css`, `script.js`, `index.html`)
4. Paina Enter luodaksesi tiedoston
![Uuden tiedoston luominen](../../../../translated_images/create-new-file.2814e609c2af9aeb.fi.png)
![Uuden tiedoston luominen](../../../../translated_images/fi/create-new-file.2814e609c2af9aeb.png)
**Nimeämiskäytännöt:**
- Käytä kuvailevia nimiä, jotka kertovat tiedoston tarkoituksen
@ -322,7 +322,7 @@ Tässä alkaa todellinen hauskuus! VSCode.dev:n editori on täynnä hyödyllisi
2. Aloita kirjoittaminen ja katso, kuinka VSCode.dev auttaa sinua väreillä, ehdotuksilla ja virheiden tunnistamisella
3. Tallenna työsi Ctrl+S (Windows/Linux) tai Cmd+S (Mac) vaikka se tallentaa automaattisesti!
![Tiedostojen muokkaaminen VSCode.devissä](../../../../translated_images/edit-a-file.52c0ee665ef19f08.fi.png)
![Tiedostojen muokkaaminen VSCode.devissä](../../../../translated_images/fi/edit-a-file.52c0ee665ef19f08.png)
**Siistit jutut, jotka tapahtuvat koodatessasi:**
- Koodisi saa kauniin värikoodauksen, joten sitä on helppo lukea
@ -398,7 +398,7 @@ Laajennusmarkkinapaikka on todella hyvin järjestetty, joten et eksy etsiessäsi
2. Selaa tai etsi jotain tiettyä
3. Klikkaa mitä tahansa kiinnostavaa saadaksesi lisätietoja
![Laajennusmarkkinapaikan käyttöliittymä](../../../../translated_images/extensions.eca0e0c7f59a10b5.fi.png)
![Laajennusmarkkinapaikan käyttöliittymä](../../../../translated_images/fi/extensions.eca0e0c7f59a10b5.png)
**Mitä siellä näet:**
@ -451,7 +451,7 @@ Useimmissa laajennuksissa on asetuksia, joita voit säätää, jotta ne toimivat
3. Valitse "Laajennuksen asetukset" pudotusvalikosta
4. Säädä asetuksia, kunnes ne tuntuvat sopivilta työnkulullesi
![Laajennusasetusten räätälöinti](../../../../translated_images/extension-settings.21c752ae4f4cdb78.fi.png)
![Laajennusasetusten räätälöinti](../../../../translated_images/fi/extension-settings.21c752ae4f4cdb78.png)
**Yleisiä asioita, joita saatat haluta säätää:**
- Miten koodisi muotoillaan (välilehdet vs välilyönnit, rivin pituus jne.)

@ -78,7 +78,7 @@ Koska VSCode.dev vaatii vähintään yhden tiedoston repositorion avaamiseen, lu
4. **Kirjoita** commit-viesti: "Lisätty alkuperäinen HTML-rakenne"
5. **Klikkaa** "Commit new file" tallentaaksesi muutokset
![Luodaan alkuperäinen tiedosto GitHubissa](../../../../translated_images/new-file-github.com.c886796d800e8056.fi.png)
![Luodaan alkuperäinen tiedosto GitHubissa](../../../../translated_images/fi/new-file-github.com.c886796d800e8056.png)
**Mitä tämä alkuperäinen asetus saavuttaa:**
- **Luo** asianmukaisen HTML5-dokumenttirakenteen semanttisilla elementeillä
@ -104,7 +104,7 @@ Nyt kun repositorion perusta on luotu, siirrytään VSCode.dev:iin varsinaista k
**Onnistumisen merkki**: Näet projektitiedostosi Explorer-sivupalkissa ja `index.html`-tiedoston muokattavissa pääeditorialueella.
![Projekti ladattu VSCode.dev:ssä](../../../../translated_images/project-on-vscode.dev.e79815a9a95ee7fe.fi.png)
![Projekti ladattu VSCode.dev:ssä](../../../../translated_images/fi/project-on-vscode.dev.e79815a9a95ee7fe.png)
**Mitä näet käyttöliittymässä:**
- **Explorer-sivupalkki**: **Näyttää** repositorion tiedostot ja kansiorakenteen
@ -448,7 +448,7 @@ Laajennukset parantavat kehityskokemustasi tarjoamalla reaaliaikaisia esikatselu
**Välittömät tulokset asennuksen jälkeen:**
Kun CodeSwing on asennettu, näet ansioluettelosivustosi reaaliaikaisen esikatselun editorissa. Tämä mahdollistaa sen, että näet tarkalleen, miltä sivustosi näyttää tehdessäsi muutoksia.
![CodeSwing-laajennus näyttää reaaliaikaisen esikatselun](../../../../translated_images/after-codeswing-extension-pb.0ebddddcf73b5509.fi.png)
![CodeSwing-laajennus näyttää reaaliaikaisen esikatselun](../../../../translated_images/fi/after-codeswing-extension-pb.0ebddddcf73b5509.png)
**Parannetun käyttöliittymän ymmärtäminen:**
- **Jaettu näkymä**: **Näyttää** koodisi toisella puolella ja reaaliaikaisen esikatselun toisella

@ -61,7 +61,7 @@ print(response.choices[0].message.content)
Tältä valmis projektisi näyttää:
![Keskustelusovelluksen käyttöliittymä, jossa näkyy keskustelu käyttäjän ja tekoälyavustajan välillä](../../../translated_images/screenshot.0a1ee0d123df681b.fi.png)
![Keskustelusovelluksen käyttöliittymä, jossa näkyy keskustelu käyttäjän ja tekoälyavustajan välillä](../../../translated_images/fi/screenshot.0a1ee0d123df681b.png)
## 🗺️ Oppimismatka tekoälysovellusten kehittämiseen
@ -194,7 +194,7 @@ mindmap
**Keskeinen periaate**: Tekoälysovellusten kehitys yhdistää perinteiset verkkokehitystaidot tekoälypalveluiden integrointiin, luoden älykkäitä sovelluksia, jotka tuntuvat käyttäjille luonnollisilta ja reagoivilta.
![GitHub Models AI Playground -käyttöliittymä, jossa mallin valinta ja testausalue](../../../translated_images/playground.d2b927122224ff8f.fi.png)
![GitHub Models AI Playground -käyttöliittymä, jossa mallin valinta ja testausalue](../../../translated_images/fi/playground.d2b927122224ff8f.png)
**Mikä tekee Playgroundista niin hyödyllisen:**
- **Kokeile** eri tekoälymalleja, kuten GPT-4o-mini, Claude ja muita (kaikki ilmaisia!)
@ -204,7 +204,7 @@ mindmap
Kun olet kokeillut hieman, klikkaa vain "Code"-välilehteä ja valitse ohjelmointikieli saadaksesi toteutuskoodin, jota tarvitset.
![Playground-vaihtoehto, jossa näkyy koodin generointivaihtoehdot eri ohjelmointikielille](../../../translated_images/playground-choice.1d23ba7d407f4758.fi.png)
![Playground-vaihtoehto, jossa näkyy koodin generointivaihtoehdot eri ohjelmointikielille](../../../translated_images/fi/playground-choice.1d23ba7d407f4758.png)
## Python-taustaintegraation asettaminen
@ -2141,14 +2141,14 @@ Haluatko kokeilla tätä projektia pilvipohjaisessa kehitysympäristössä? GitH
- **Siirry** [Web Dev For Beginners -repositoryyn](https://github.com/microsoft/Web-Dev-For-Beginners)
- **Klikkaa** "Use this template" oikeassa yläkulmassa (varmista, että olet kirjautunut GitHubiin)
![Luo mallista -käyttöliittymä, jossa näkyy vihreä "Use this template" -painike](../../../translated_images/template.67ad477109d29a2b.fi.png)
![Luo mallista -käyttöliittymä, jossa näkyy vihreä "Use this template" -painike](../../../translated_images/fi/template.67ad477109d29a2b.png)
**Vaihe 2: Käynnistä Codespaces**
- **Avaa** juuri luomasi repository
- **Klikkaa** vihreää "Code"-painiketta ja valitse "Codespaces"
- **Valitse** "Create codespace on main" aloittaaksesi kehitysympäristön
![Luo Codespace -käyttöliittymä, jossa näkyy vaihtoehdot pilvipohjaisen kehitysympäristön käynnistämiseen](../../../translated_images/codespace.bcecbdf5d2747d3d.fi.png)
![Luo Codespace -käyttöliittymä, jossa näkyy vaihtoehdot pilvipohjaisen kehitysympäristön käynnistämiseen](../../../translated_images/fi/codespace.bcecbdf5d2747d3d.png)
**Vaihe 3: Ympäristön konfigurointi**
Kun Codespace latautuu, sinulla on käytössäsi:

@ -72,13 +72,13 @@ Uusi AI-avustajaprojekti juuri lisätty, tutustu projektiin [tästä](./9-chat-p
Käy osoitteessa [https://aka.ms/genai-js-course](https://aka.ms/genai-js-course) aloittaaksesi!
![Background](../../translated_images/background.148a8d43afde5730.fi.png)
![Background](../../translated_images/fi/background.148a8d43afde5730.png)
- Oppitunnit kattavat kaiken perusteista RAG:iin.
- Vuorovaikutus historiallisten hahmojen kanssa GenAI:n ja lisäsovelluksemme kautta.
- Hauska ja mukaansatempaava tarinankerronta, matkustat ajassa!
![character](../../translated_images/character.5c0dd8e067ffd693.fi.png)
![character](../../translated_images/fi/character.5c0dd8e067ffd693.png)
Jokaisessa oppitunnissa on tehtävä suoritettavaksi, tietoarviointi ja haaste, jotka ohjaavat sinua oppimaan aiheista kuten:
@ -115,7 +115,7 @@ Noudata näitä ohjeita:
Omassa kopiossasi tästä repositoriosta, jonka loit, klikkaa **Code** ja valitse **Open with Codespaces**. Tämä luo sinulle uuden Codespace-työtilan.
![Codespace](../../translated_images/createcodespace.0238bbf4d7a8d955.fi.png)
![Codespace](../../translated_images/fi/createcodespace.0238bbf4d7a8d955.png)
#### Opetussuunnitelman suorittaminen paikallisesti tietokoneella

@ -42,10 +42,10 @@ Tämä opetusohjelma sisältää tuontipaketteja yleisiin LMS-työnkulkuihin.
- Moodle Cloud tukee rajoitetusti Common Cartridgea. Suosi yllä olevaa Moodle-tiedostoa, joka voidaan myös ladata Canvasiin.
- Tuonnin jälkeen tarkista moduulit, määräajat ja visailuasetukset, jotta ne vastaavat lukukautesi aikataulua.
![Moodle](../../translated_images/moodle.94eb93d714a50cb2.fi.png)
![Moodle](../../translated_images/fi/moodle.94eb93d714a50cb2.png)
> Opetusohjelma Moodle-luokassa
![Canvas](../../translated_images/canvas.fbd605ff8e5b8aff.fi.png)
![Canvas](../../translated_images/fi/canvas.fbd605ff8e5b8aff.png)
> Opetusohjelma Canvasissa
### Repositorion käyttö suoraan (ilman Classroomia)

@ -17,7 +17,7 @@ Tu connais ce moment où tu utilises ton application préférée et tout semb
Aujourdhui, nous allons explorer les outils incroyables qui rendent le développement web moderne non seulement possible, mais carrément addictif. Je parle exactement des éditeurs, navigateurs et flux de travail que les développeurs de Netflix, Spotify et ton studio dapplications indie préféré utilisent chaque jour. Et voici la partie qui va te faire danser de joie : la plupart de ces outils professionnels, standards de lindustrie, sont complètement gratuits !
![Intro Programming](../../../../translated_images/webdev101-programming.d6e3f98e61ac4bff.fr.png)
![Intro Programming](../../../../translated_images/fr/webdev101-programming.d6e3f98e61ac4bff.webp)
> Sketchnote par [Tomomi Imura](https://twitter.com/girlie_mac)
```mermaid

@ -17,7 +17,7 @@ Je sais que tout cela peut sembler beaucoup au début franchement, je me sou
Nous allons faire ce voyage ensemble, étape par étape. Pas de précipitation, pas de pression juste toi, moi, et quelques outils vraiment sympas qui vont devenir tes nouveaux meilleurs amis !
![Intro to GitHub](../../../../translated_images/webdev101-github.8846d7971abef6f9.fr.png)
![Intro to GitHub](../../../../translated_images/fr/webdev101-github.8846d7971abef6f9.webp)
> Sketchnote par [Tomomi Imura](https://twitter.com/girlie_mac)
```mermaid
@ -604,7 +604,7 @@ Tout dabord, trouvons un dépôt (ou **repo**) sur GitHub qui vous intéresse
✅ Un bon moyen de trouver des dépôts "accessibles aux débutants" est de [chercher avec le tag 'good-first-issue'](https://github.blog/2020-01-22-browse-good-first-issues-to-start-contributing-to-open-source/).
![Copier un repo localement](../../../../translated_images/clone_repo.5085c48d666ead57.fr.png)
![Copier un repo localement](../../../../translated_images/fr/clone_repo.5085c48d666ead57.webp)
Il existe plusieurs façons de copier du code. Une façon est de "cloner" le contenu du dépôt, en utilisant HTTPS, SSH, ou linterface en ligne de commande GitHub CLI.

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# Créer des pages web accessibles
![Tout sur l'accessibilité](../../../../translated_images/webdev101-a11y.8ef3025c858d897a.fr.png)
![Tout sur l'accessibilité](../../../../translated_images/fr/webdev101-a11y.8ef3025c858d897a.webp)
> Sketchnote par [Tomomi Imura](https://twitter.com/girlie_mac)
```mermaid
@ -1049,12 +1049,12 @@ Chaque image sur votre site remplit un but. Comprendre ce but vous aide à rédi
**Images informatives** transmettent une information importante :
```html
<img src="../../../../translated_images/chart.31c7eb0eb5c4450d.fr.png" alt="Sales increased 25% from Q1 to Q2 2024">
<img src="../../../../translated_images/fr/chart.31c7eb0eb5c4450d.png" alt="Sales increased 25% from Q1 to Q2 2024">
```
**Images décoratives** purement visuelles, sans valeur informationnelle :
```html
<img src="../../../../translated_images/decorative-border.b2f3c4d6634fb79d.fr.png" alt="" role="presentation">
<img src="../../../../translated_images/fr/decorative-border.b2f3c4d6634fb79d.png" alt="" role="presentation">
```
**Images fonctionnelles** servent de boutons ou de commandes :
@ -1066,7 +1066,7 @@ Chaque image sur votre site remplit un but. Comprendre ce but vous aide à rédi
**Images complexes** graphiques, diagrammes, infographies :
```html
<img src="../../../../translated_images/complex-chart.c831f461a363b446.fr.png" alt="Quarterly sales data" aria-describedby="chart-description">
<img src="../../../../translated_images/fr/complex-chart.c831f461a363b446.png" alt="Quarterly sales data" aria-describedby="chart-description">
<div id="chart-description">
<p>Detailed description: Sales data shows a steady increase across all quarters...</p>
</div>
@ -1106,7 +1106,7 @@ Chaque image sur votre site remplit un but. Comprendre ce but vous aide à rédi
<picture>
<source media="(min-width: 800px)" srcset="large-chart.png">
<source media="(min-width: 400px)" srcset="medium-chart.png">
<img src="../../../../translated_images/small-chart.c50c7b1bbcce43d8.fr.png" alt="Website traffic increased 40% after accessibility improvements">
<img src="../../../../translated_images/fr/small-chart.c50c7b1bbcce43d8.png" alt="Website traffic increased 40% after accessibility improvements">
</picture>
```

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# Notions de base en JavaScript : Types de données
![Notions de base en JavaScript - Types de données](../../../../translated_images/webdev101-js-datatypes.4cc470179730702c.fr.png)
![Notions de base en JavaScript - Types de données](../../../../translated_images/fr/webdev101-js-datatypes.4cc470179730702c.webp)
> Sketchnote par [Tomomi Imura](https://twitter.com/girlie_mac)
```mermaid

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# Les bases de JavaScript : Méthodes et Fonctions
![JavaScript Basics - Functions](../../../../translated_images/webdev101-js-functions.be049c4726e94f8b.fr.png)
![JavaScript Basics - Functions](../../../../translated_images/fr/webdev101-js-functions.be049c4726e94f8b.webp)
> Sketchnote par [Tomomi Imura](https://twitter.com/girlie_mac)
```mermaid

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# Notions de base en JavaScript : Prendre des décisions
![JavaScript Basics - Making decisions](../../../../translated_images/webdev101-js-decisions.69e1b20f272dd1f0.fr.png)
![JavaScript Basics - Making decisions](../../../../translated_images/fr/webdev101-js-decisions.69e1b20f272dd1f0.webp)
> Sketchnote par [Tomomi Imura](https://twitter.com/girlie_mac)

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# Les bases de JavaScript : Tableaux et Boucles
![Les bases de JavaScript - Tableaux](../../../../translated_images/webdev101-js-arrays.439d7528b8a29455.fr.png)
![Les bases de JavaScript - Tableaux](../../../../translated_images/fr/webdev101-js-arrays.439d7528b8a29455.webp)
> Sketchnote par [Tomomi Imura](https://twitter.com/girlie_mac)
```mermaid

@ -25,7 +25,7 @@ journey
Améliorer l'accessibilité: 5: Student
Construire un terrarium: 5: Student
```
![Introduction à HTML](../../../../translated_images/webdev101-html.4389c2067af68e98.fr.png)
![Introduction à HTML](../../../../translated_images/fr/webdev101-html.4389c2067af68e98.webp)
> Sketchnote par [Tomomi Imura](https://twitter.com/girlie_mac)
HTML, ou HyperText Markup Language, est le fondement de tous les sites web que vous avez jamais visités. Pensez à HTML comme au squelette qui donne la structure aux pages web il définit où va le contenu, comment il est organisé et ce que chaque élément représente. Alors que le CSS "habillera" ultérieurement votre HTML avec des couleurs et des mises en page, et que JavaScript lui donnera vie avec de linteractivité, HTML fournit la structure essentielle qui rend tout le reste possible.
@ -86,7 +86,7 @@ Vous allez créer un dossier dédié pour votre projet terrarium et y ajouter vo
4. Dans le panneau Explorateur, cliquez sur licône "Nouveau fichier"
5. Nommez votre fichier `index.html`
![Explorateur VS Code montrant la création dun nouveau fichier](../../../../translated_images/vs-code-index.e2986cf919471eb9.fr.png)
![Explorateur VS Code montrant la création dun nouveau fichier](../../../../translated_images/fr/vs-code-index.e2986cf919471eb9.webp)
**Option 2 : Utiliser des Commandes Terminal**
```bash
@ -236,48 +236,48 @@ Ajoutez maintenant les images des plantes organisées en deux colonnes entre vos
<div id="page">
<div id="left-container" class="container">
<div class="plant-holder">
<img class="plant" alt="plant" id="plant1" src="../../../../translated_images/plant1.d87946a2ca70cc43.fr.png" />
<img class="plant" alt="plant" id="plant1" src="../../../../translated_images/fr/plant1.d87946a2ca70cc43.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant2" src="../../../../translated_images/plant2.8daa1606c9c1ad89.fr.png" />
<img class="plant" alt="plant" id="plant2" src="../../../../translated_images/fr/plant2.8daa1606c9c1ad89.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant3" src="../../../../translated_images/plant3.8b0d484381a2a2a7.fr.png" />
<img class="plant" alt="plant" id="plant3" src="../../../../translated_images/fr/plant3.8b0d484381a2a2a7.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant4" src="../../../../translated_images/plant4.656e16ae1df37be2.fr.png" />
<img class="plant" alt="plant" id="plant4" src="../../../../translated_images/fr/plant4.656e16ae1df37be2.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant5" src="../../../../translated_images/plant5.2b41b9355f11ebcc.fr.png" />
<img class="plant" alt="plant" id="plant5" src="../../../../translated_images/fr/plant5.2b41b9355f11ebcc.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant6" src="../../../../translated_images/plant6.3d1827d03b656994.fr.png" />
<img class="plant" alt="plant" id="plant6" src="../../../../translated_images/fr/plant6.3d1827d03b656994.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant7" src="../../../../translated_images/plant7.8152c302ac97f621.fr.png" />
<img class="plant" alt="plant" id="plant7" src="../../../../translated_images/fr/plant7.8152c302ac97f621.png" />
</div>
</div>
<div id="right-container" class="container">
<div class="plant-holder">
<img class="plant" alt="plant" id="plant8" src="../../../../translated_images/plant8.38d6428174ffa850.fr.png" />
<img class="plant" alt="plant" id="plant8" src="../../../../translated_images/fr/plant8.38d6428174ffa850.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant9" src="../../../../translated_images/plant9.f0e38d3327c37fc2.fr.png" />
<img class="plant" alt="plant" id="plant9" src="../../../../translated_images/fr/plant9.f0e38d3327c37fc2.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant10" src="../../../../translated_images/plant10.b159d6d6e985595f.fr.png" />
<img class="plant" alt="plant" id="plant10" src="../../../../translated_images/fr/plant10.b159d6d6e985595f.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant11" src="../../../../translated_images/plant11.2a03a1c2ec8ea84e.fr.png" />
<img class="plant" alt="plant" id="plant11" src="../../../../translated_images/fr/plant11.2a03a1c2ec8ea84e.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant12" src="../../../../translated_images/plant12.60e9b53e538fbaf3.fr.png" />
<img class="plant" alt="plant" id="plant12" src="../../../../translated_images/fr/plant12.60e9b53e538fbaf3.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant13" src="../../../../translated_images/plant13.07a51543c820bcf5.fr.png" />
<img class="plant" alt="plant" id="plant13" src="../../../../translated_images/fr/plant13.07a51543c820bcf5.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant14" src="../../../../translated_images/plant14.6e486371ba7d36ba.fr.png" />
<img class="plant" alt="plant" id="plant14" src="../../../../translated_images/fr/plant14.6e486371ba7d36ba.png" />
</div>
</div>
</div>

@ -29,7 +29,7 @@ journey
Design réactif: 5: Student
Reflets de verre: 5: Student
```
![Introduction au CSS](../../../../translated_images/webdev101-css.3f7af5991bf53a20.fr.png)
![Introduction au CSS](../../../../translated_images/fr/webdev101-css.3f7af5991bf53a20.webp)
> Sketchnote par [Tomomi Imura](https://twitter.com/girlie_mac)
Vous vous souvenez comment votre terrarium HTML avait lair assez basique ? Le CSS est ce qui transforme cette structure simple en quelque chose de visuellement attrayant.
@ -202,7 +202,7 @@ body {
Ouvrez les outils de développement de votre navigateur (F12), allez dans longlet Éléments, et inspectez votre élément `<h1>`. Vous verrez quil hérite de la famille de polices du body :
![police héritée](../../../../translated_images/1.cc07a5cbe114ad1d.fr.png)
![police héritée](../../../../translated_images/fr/1.cc07a5cbe114ad1d.webp)
**Temps dexpérimentation** : Essayez de définir dautres propriétés héritables sur le `<body>` comme `color`, `line-height` ou `text-align`. Que se passe-t-il pour votre titre et les autres éléments ?
@ -332,7 +332,7 @@ Dans notre terrarium, chaque plante nécessite un style similaire mais doit auss
**Voici la structure HTML pour chaque plante :**
```html
<div class="plant-holder">
<img class="plant" alt="Decorative plant for terrarium" id="plant1" src="../../../../translated_images/plant1.d18b18ffe73da18f.fr.png" />
<img class="plant" alt="Decorative plant for terrarium" id="plant1" src="../../../../translated_images/fr/plant1.d18b18ffe73da18f.png" />
</div>
```
@ -594,7 +594,7 @@ Prêt à améliorer votre terrarium avec des reflets de verre réalistes ? Cette
Vous allez créer des reflets subtils qui simulent la façon dont la lumière se reflète sur les surfaces de verre. Cette approche est similaire à celle utilisée par les peintres de la Renaissance comme Jan van Eyck qui utilisaient lumière et réflexion pour donner un aspect tridimensionnel au verre peint. Voici ce que vous devrez viser :
![finished terrarium](../../../../translated_images/terrarium-final.2f07047ffc597d0a.fr.png)
![finished terrarium](../../../../translated_images/fr/terrarium-final.2f07047ffc597d0a.webp)
**Votre défi :**
- **Créer** des formes ovales blanches ou claires subtiles pour les reflets du verre

@ -25,7 +25,7 @@ journey
Tester la fonctionnalité: 5: Student
Compléter le terrarium: 5: Student
```
![DOM et une closure](../../../../translated_images/webdev101-js.10280393044d7eaa.fr.png)
![DOM et une closure](../../../../translated_images/fr/webdev101-js.10280393044d7eaa.webp)
> Sketchnote par [Tomomi Imura](https://twitter.com/girlie_mac)
Bienvenue dans l'un des aspects les plus passionnants du développement web - rendre les choses interactives ! Le Document Object Model (DOM) est comme un pont entre votre HTML et JavaScript, et aujourd'hui nous l'utiliserons pour donner vie à votre terrarium. Lorsque Tim Berners-Lee a créé le premier navigateur web, il imaginait un web où les documents pourraient être dynamiques et interactifs - le DOM rend cette vision possible.
@ -102,7 +102,7 @@ flowchart TD
style P fill:#ffebee
style Q fill:#ffebee
```
![Représentation de l'arbre DOM](../../../../translated_images/dom-tree.7daf0e763cbbba92.fr.png)
![Représentation de l'arbre DOM](../../../../translated_images/fr/dom-tree.7daf0e763cbbba92.webp)
> Une représentation du DOM et du balisage HTML qui le référence. Par [Olfa Nasraoui](https://www.researchgate.net/publication/221417012_Profile-Based_Focused_Crawler_for_Social_Media-Sharing_Websites)
@ -146,7 +146,7 @@ flowchart LR
```
> 💡 **Comprendre les Closures** : Les closures sont un sujet important en JavaScript, et beaucoup de développeurs les utilisent pendant des années avant de maîtriser tous les aspects théoriques. Aujourd'hui, nous nous concentrons sur l'application pratique - vous verrez les closures émerger naturellement au fur et à mesure que nous construisons nos fonctionnalités interactives. La compréhension se développera en voyant comment elles résolvent des problèmes réels.
![Représentation de l'arbre DOM](../../../../translated_images/dom-tree.7daf0e763cbbba92.fr.png)
![Représentation de l'arbre DOM](../../../../translated_images/fr/dom-tree.7daf0e763cbbba92.webp)
> Une représentation du DOM et du balisage HTML qui le référence. Par [Olfa Nasraoui](https://www.researchgate.net/publication/221417012_Profile-Based_Focused_Crawler_for_Social_Media-Sharing_Websites)
@ -591,7 +591,7 @@ Testez maintenant votre terrarium interactif ! Ouvrez votre fichier `index.html`
- **Compatibilité multi-appareils** : fonctionne sur bureau et mobile
- **Conscience de la performance** : pas de fuites mémoire ni calculs redondants
![terrarium fini](../../../../translated_images/terrarium-final.0920f16e87c13a84.fr.png)
![terrarium fini](../../../../translated_images/fr/terrarium-final.0920f16e87c13a84.webp)
---

@ -25,7 +25,7 @@ journey
Déboguer les problèmes: 4: Student
Affiner lexpérience: 5: Student
```
![Browser sketchnote](../../../../translated_images/browser.60317c9be8b7f84a.fr.jpg)
![Browser sketchnote](../../../../translated_images/fr/browser.60317c9be8b7f84a.webp)
> Sketchnote par [Wassim Chegham](https://dev.to/wassimchegham/ever-wondered-what-happens-when-you-type-in-a-url-in-an-address-bar-in-a-browser-3dob)
## Quiz avant la leçon
@ -77,7 +77,7 @@ Ce processus reflète la conception du premier navigateur web, WorldWideWeb, cr
**Un peu d'histoire** : Le premier navigateur s'appelait 'WorldWideWeb' et a été créé par Sir Timothy Berners-Lee en 1990.
![navigateurs anciens](../../../../translated_images/earlybrowsers.d984b711cdf3a42d.fr.jpg)
![navigateurs anciens](../../../../translated_images/fr/earlybrowsers.d984b711cdf3a42d.webp)
> Quelques navigateurs anciens, via [Karen McGrane](https://www.slideshare.net/KMcGrane/week-4-ixd-history-personal-computing)
### Comment les navigateurs traitent le contenu web
@ -194,7 +194,7 @@ quadrantChart
Comprendre le processus d'installation d'une extension vous aide à anticiper l'expérience utilisateur lorsque des personnes installent votre extension. Le processus d'installation est standardisé sur les navigateurs modernes, avec de légères variations dans la conception de l'interface.
![capture d'écran du navigateur Edge montrant la page ouverte edge://extensions et le menu des paramètres ouvert](../../../../translated_images/install-on-edge.d68781acaf0b3d3d.fr.png)
![capture d'écran du navigateur Edge montrant la page ouverte edge://extensions et le menu des paramètres ouvert](../../../../translated_images/fr/install-on-edge.d68781acaf0b3d3d.webp)
> **Important** : Assurez-vous d'activer le mode développeur et d'autoriser les extensions provenant d'autres magasins lors du test de vos propres extensions.
@ -308,10 +308,10 @@ Cela suit le principe de divulgation progressive utilisé dans la conception d'i
### Vue d'ensemble des vues de l'extension
**Vue de configuration** - Configuration utilisateur initiale :
![capture d'écran de l'extension terminée ouverte dans un navigateur, affichant un formulaire avec des champs pour le nom de région et la clé API.](../../../../translated_images/1.b6da8c1394b07491.fr.png)
![capture d'écran de l'extension terminée ouverte dans un navigateur, affichant un formulaire avec des champs pour le nom de région et la clé API.](../../../../translated_images/fr/1.b6da8c1394b07491.webp)
**Vue des résultats** - Affichage des données d'empreinte carbone :
![capture d'écran de l'extension terminée affichant les valeurs d'utilisation carbone et le pourcentage d'énergies fossiles pour la région US-NEISO.](../../../../translated_images/2.1dae52ff08042246.fr.png)
![capture d'écran de l'extension terminée affichant les valeurs d'utilisation carbone et le pourcentage d'énergies fossiles pour la région US-NEISO.](../../../../translated_images/fr/2.1dae52ff08042246.webp)
### Création du formulaire de configuration

@ -263,7 +263,7 @@ stateDiagram-v2
Reset --> ClearStorage: Supprimer les données sauvegardées
ClearStorage --> FirstTime: Retour à l'installation
```
![Volet de stockage local](../../../../translated_images/localstorage.472f8147b6a3f8d1.fr.png)
![Volet de stockage local](../../../../translated_images/fr/localstorage.472f8147b6a3f8d1.webp)
> ⚠️ **Considération de sécurité** : Dans les applications en production, stocker les clés API dans LocalStorage présente des risques de sécurité puisque JavaScript peut accéder à ces données. Pour lapprentissage, cette approche fonctionne bien, mais les applications réelles doivent utiliser un stockage sécurisé côté serveur pour les informations sensibles.

@ -123,7 +123,7 @@ Pour ouvrir les Outils de développement dans Edge, cliquez sur ces trois points
Essayons cela. Ouvrez un site web (Microsoft.com fonctionne bien) et cliquez sur ce bouton « Enregistrer ». Maintenant, rafraîchissez la page et regardez le profileur capturer tout ce qui se passe. Quand vous arrêtez lenregistrement, vous verrez une répartition détaillée de comment le navigateur « script », « rend » et « peint » le site. Cela me fait penser à la manière dont le centre de contrôle de mission surveille chaque système durant le lancement dune fusée - vous obtenez des données en temps réel sur ce qui se passe et quand.
![Edge profiler](../../../../translated_images/profiler.5a4a62479c5df01c.fr.png)
![Edge profiler](../../../../translated_images/fr/profiler.5a4a62479c5df01c.webp)
✅ La [Documentation Microsoft](https://docs.microsoft.com/microsoft-edge/devtools-guide/performance/?WT.mc_id=academic-77807-sagibbon) propose beaucoup plus de détails si vous souhaitez approfondir
@ -133,11 +133,11 @@ Sélectionnez des éléments dans la timeline du profil pour zoomer sur des év
Prenez un instantané des performances de votre page en sélectionnant une partie de la timeline du profil et en regardant le panneau de résumé :
![Edge profiler snapshot](../../../../translated_images/snapshot.97750180ebcad737.fr.png)
![Edge profiler snapshot](../../../../translated_images/fr/snapshot.97750180ebcad737.webp)
Consultez le panneau du journal des événements pour voir si un événement a duré plus de 15 ms :
![Edge event log](../../../../translated_images/log.804026979f3707e0.fr.png)
![Edge event log](../../../../translated_images/fr/log.804026979f3707e0.webp)
✅ Familiarisez-vous avec votre profileur ! Ouvrez les outils de développement sur ce site et voyez sil y a des goulots détranglement. Quel est lactif qui charge le plus lentement ? Le plus rapidement ?

@ -105,7 +105,7 @@ quadrantChart
Power-up: [0.7, 0.6]
UI Elements: [0.9, 0.1]
```
![la grille du canvas](../../../../translated_images/canvas_grid.5f209da785ded492.fr.png)
![la grille du canvas](../../../../translated_images/fr/canvas_grid.5f209da785ded492.webp)
> Image de [MDN](https://developer.mozilla.org/docs/Web/API/Canvas_API/Tutorial/Drawing_shapes)
Pour dessiner sur lélément canvas, vous suivrez le même processus en trois étapes qui forme la base de tous les graphismes sur canvas. Une fois que vous faites cela quelques fois, cela devient naturel :
@ -323,11 +323,11 @@ Vous allez créer une page web avec un élément Canvas. Elle doit afficher un
- Vaisseau héros
![Vaisseau héros](../../../../translated_images/player.dd24c1afa8c71e9b.fr.png)
![Vaisseau héros](../../../../translated_images/fr/player.dd24c1afa8c71e9b.webp)
- Monstre 5×5
![Vaisseau monstre](../../../../translated_images/enemyShip.5df2a822c16650c2.fr.png)
![Vaisseau monstre](../../../../translated_images/fr/enemyShip.5df2a822c16650c2.webp)
### Étapes recommandées pour démarrer le développement
@ -463,7 +463,7 @@ for (let x = START_X; x < STOP_X; x += ENEMY_SPACING) {
Le résultat final devrait ressembler à ceci :
![Écran noir avec un héros et 5*5 monstres](../../../../translated_images/partI-solution.36c53b48c9ffae2a.fr.png)
![Écran noir avec un héros et 5*5 monstres](../../../../translated_images/fr/partI-solution.36c53b48c9ffae2a.webp)
## Solution

@ -155,7 +155,7 @@ sequenceDiagram
end
```
- **Système de score** : Chaque vaisseau ennemi détruit rapporte 100 points (les nombres ronds sont plus faciles à calculer mentalement pour les joueurs). Le score saffiche en bas à gauche.
- **Compteur de vies** : Votre héros commence avec trois vies une norme fixée par les premiers jeux darcade pour équilibrer défi et jouabilité. Chaque collision avec un ennemi coûte une vie. Nous afficherons les vies restantes en bas à droite à laide dicônes de vaisseau ![life image](../../../../translated_images/life.6fb9f50d53ee0413.fr.png).
- **Compteur de vies** : Votre héros commence avec trois vies une norme fixée par les premiers jeux darcade pour équilibrer défi et jouabilité. Chaque collision avec un ennemi coûte une vie. Nous afficherons les vies restantes en bas à droite à laide dicônes de vaisseau ![life image](../../../../translated_images/fr/life.6fb9f50d53ee0413.webp).
## Cest parti !

@ -644,7 +644,7 @@ sequenceDiagram
Lutilisation de `history.pushState` crée de nouvelles entrées dans lhistorique de navigation du navigateur. Vous pouvez vérifier cela en maintenant appuyé le *bouton retour* de votre navigateur, cela devrait afficher quelque chose comme ceci :
![Capture décran de lhistorique de navigation](../../../../translated_images/history.7fdabbafa521e064.fr.png)
![Capture décran de lhistorique de navigation](../../../../translated_images/fr/history.7fdabbafa521e064.webp)
Si vous cliquez plusieurs fois sur le bouton retour, vous verrez que lURL change et que l'historique est mis à jour, mais que le même template reste affiché.

@ -292,7 +292,7 @@ Commençons par observer ce qui se passe avec la soumission basique dun formu
2. Observez les changements dans la barre dadresse de votre navigateur
3. Notez comment la page se recharge et les données apparaissent dans lURL
![Capture décran du changement dURL du navigateur après avoir cliqué sur le bouton Sinscrire](../../../../translated_images/click-register.e89a30bf0d4bc9ca.fr.png)
![Capture décran du changement dURL du navigateur après avoir cliqué sur le bouton Sinscrire](../../../../translated_images/fr/click-register.e89a30bf0d4bc9ca.webp)
### Comparaison des méthodes HTTP
@ -346,7 +346,7 @@ Configurons votre formulaire dinscription pour communiquer correctement avec
2. **Cliquez** sur le bouton "Créer un compte"
3. **Observez** la réponse du serveur dans votre navigateur
![Une fenêtre de navigateur à ladresse localhost:5000/api/accounts, affichant une chaîne JSON avec des données utilisateur](../../../../translated_images/form-post.61de4ca1b964d91a.fr.png)
![Une fenêtre de navigateur à ladresse localhost:5000/api/accounts, affichant une chaîne JSON avec des données utilisateur](../../../../translated_images/fr/form-post.61de4ca1b964d91a.webp)
**Ce que vous devriez voir :**
- **Le navigateur redirige** vers lURL du point de terminaison API
@ -609,7 +609,7 @@ async function register() {
3. **Cliquez** sur "Créer un compte"
4. **Observez** les messages dans la console et les retours utilisateurs
![Capture décran montrant le message de log dans la console du navigateur](../../../../translated_images/browser-console.efaf0b51aaaf6778.fr.png)
![Capture décran montrant le message de log dans la console du navigateur](../../../../translated_images/fr/browser-console.efaf0b51aaaf6778.webp)
**Ce que vous devriez voir :**
- **État de chargement** visible sur le bouton de soumission
@ -783,7 +783,7 @@ Améliorons votre formulaire dinscription avec une validation robuste offrant
3. **Essayez** des caractères spéciaux dans le champ nom dutilisateur
4. **Indiquez** un montant de solde négatif
![Capture décran montrant lerreur de validation lors de la tentative de soumission du formulaire](../../../../translated_images/validation-error.8bd23e98d416c22f.fr.png)
![Capture décran montrant lerreur de validation lors de la tentative de soumission du formulaire](../../../../translated_images/fr/validation-error.8bd23e98d416c22f.webp)
**Ce que vous observerez :**
- **Le navigateur affiche** les messages natifs de validation
@ -943,7 +943,7 @@ Affichez un message d'erreur dans le HTML si l'utilisateur existe déjà.
Voici un exemple de l'apparence que peut avoir la page de connexion finale après un peu de stylisation :
![Capture d'écran de la page de connexion après l'ajout des styles CSS](../../../../translated_images/result.96ef01f607bf856a.fr.png)
![Capture d'écran de la page de connexion après l'ajout des styles CSS](../../../../translated_images/fr/result.96ef01f607bf856a.webp)
## Quiz post-conférence

@ -156,7 +156,7 @@ sequenceDiagram
Server->>Browser: Renvoie la page HTML complète
Browser->>User: Affiche la nouvelle page (clignotement/rechargement)
```
![Flux de mise à jour dans une application multi-page](../../../../translated_images/mpa.7f7375a1a2d4aa77.fr.png)
![Flux de mise à jour dans une application multi-page](../../../../translated_images/fr/mpa.7f7375a1a2d4aa77.webp)
**Pourquoi cette approche semblait lourde :**
- Chaque clic impliquait de reconstruire toute la page depuis le début
@ -182,7 +182,7 @@ sequenceDiagram
JavaScript->>Browser: Met à jour des éléments spécifiques de la page
Browser->>User: Affiche le contenu mis à jour (sans rechargement)
```
![Flux de mise à jour dans une application monpage](../../../../translated_images/spa.268ec73b41f992c2.fr.png)
![Flux de mise à jour dans une application monpage](../../../../translated_images/fr/spa.268ec73b41f992c2.webp)
**Pourquoi les SPA sont tellement mieux ressenties :**
- Seules les parties effectivement modifiées sont mises à jour (intelligent, non ?)
@ -516,7 +516,7 @@ if (data.error) {
Maintenant, lorsque vous testez avec un compte invalide, vous verrez un message derreur utile directement sur la page !
![Capture d'écran montrant le message d'erreur affiché lors de la connexion](../../../../translated_images/login-error.416fe019b36a6327.fr.png)
![Capture d'écran montrant le message d'erreur affiché lors de la connexion](../../../../translated_images/fr/login-error.416fe019b36a6327.webp)
#### Étape 4 : Être inclusif avec l'accessibilité
@ -950,7 +950,7 @@ Prêt à faire passer votre application bancaire au niveau supérieur ? Donnons-
Voici à quoi pourrait ressembler un tableau de bord élégant :
![Capture d'écran d'un exemple de résultat du tableau de bord après stylisation](../../../../translated_images/screen2.123c82a831a1d14a.fr.png)
![Capture d'écran d'un exemple de résultat du tableau de bord après stylisation](../../../../translated_images/fr/screen2.123c82a831a1d14a.webp)
Ne vous sentez pas obligé de correspondre exactement à ça utilisez-le comme source dinspiration et faites-le vôtre !

@ -187,7 +187,7 @@ La [gestion détat](https://fr.wikipedia.org/wiki/Gestion_d%27%C3%A9tat) cons
Au lieu de courir après notre queue, nous allons créer un système de **gestion détat centralisé**. Pensez-y comme avoir une personne vraiment organisée en charge de toutes les choses importantes :
![Schéma montrant les flux de données entre le HTML, les actions utilisateur et létat](../../../../translated_images/data-flow.fa2354e0908fecc8.fr.png)
![Schéma montrant les flux de données entre le HTML, les actions utilisateur et létat](../../../../translated_images/fr/data-flow.fa2354e0908fecc8.webp)
```mermaid
flowchart TD
@ -798,7 +798,7 @@ Ce défi vous aidera à penser comme un développeur professionnel mêlant expé
Voici un exemple de résultat après avoir complété le devoir :
![Capture d'écran montrant un exemple de boîte de dialogue "Ajouter une transaction"](../../../../translated_images/dialog.93bba104afeb79f1.fr.png)
![Capture d'écran montrant un exemple de boîte de dialogue "Ajouter une transaction"](../../../../translated_images/fr/dialog.93bba104afeb79f1.webp)
---

@ -112,7 +112,7 @@ Référez-vous à la [documentation API serveur](../api/README.md) pour :
**Résultat attendu :**
Après avoir réalisé cette tâche, votre application bancaire doit disposer dune fonctionnalité "Ajouter une transaction" complètement fonctionnelle, professionnelle en apparence et en comportement :
![Capture d'écran montrant un exemple de boîte de dialogue "Ajouter une transaction"](../../../../translated_images/dialog.93bba104afeb79f1.fr.png)
![Capture d'écran montrant un exemple de boîte de dialogue "Ajouter une transaction"](../../../../translated_images/fr/dialog.93bba104afeb79f1.webp)
## Tester votre implémentation

@ -182,7 +182,7 @@ Commencez par naviguer sur [vscode.dev](https://vscode.dev) dans votre navigateu
Une fois que tout est chargé, vous verrez un espace de travail joliment épuré, conçu pour vous garder concentré sur lessentiel votre code !
![Interface par défaut de VSCode.dev](../../../../translated_images/default-vscode-dev.5d06881d65c1b323.fr.png)
![Interface par défaut de VSCode.dev](../../../../translated_images/fr/default-vscode-dev.5d06881d65c1b323.webp)
**Voici votre visite du quartier :**
- **Barre dactivité** (la bande sur la gauche) : votre navigation principale avec Explorateur 📁, Recherche 🔍, Contrôle de Source 🌿, Extensions 🧩, et Paramètres ⚙️
@ -229,7 +229,7 @@ Parfait quand vous commencez dans VSCode.dev et souhaitez ouvrir un dépôt spé
1. Rendez-vous sur [vscode.dev](https://vscode.dev) si vous ny êtes pas encore
2. Cherchez le bouton "Open Remote Repository" sur lécran daccueil et cliquez dessus
![Ouvrir un dépôt distant](../../../../translated_images/open-remote-repository.bd9c2598b8949e7f.fr.png)
![Ouvrir un dépôt distant](../../../../translated_images/fr/open-remote-repository.bd9c2598b8949e7f.webp)
3. Collez lURL de nimporte quel dépôt GitHub (essayez celui-ci : `https://github.com/microsoft/Web-Dev-For-Beginners`)
4. Appuyez sur Entrée et regardez la magie opérer !
@ -238,7 +238,7 @@ Parfait quand vous commencez dans VSCode.dev et souhaitez ouvrir un dépôt spé
Envie de vous sentir comme un magicien du code ? Essayez ce raccourci clavier : Ctrl+Shift+P (ou Cmd+Shift+P sur Mac) pour ouvrir la Palette de Commandes :
![Palette de Commandes](../../../../translated_images/palette-menu.4946174e07f42622.fr.png)
![Palette de Commandes](../../../../translated_images/fr/palette-menu.4946174e07f42622.webp)
**La Palette de Commandes, cest comme un moteur de recherche pour tout ce que vous pouvez faire :**
- Tapez "open remote" et elle vous trouvera loutil pour ouvrir un dépôt
@ -300,7 +300,7 @@ Comme organiser des plans dans le bureau dun architecte, la création de fich
3. Entrez le nom du fichier incluant lextension appropriée (`style.css`, `script.js`, `index.html`)
4. Appuyez sur Entrée pour créer le fichier
![Créer un nouveau fichier](../../../../translated_images/create-new-file.2814e609c2af9aeb.fr.png)
![Créer un nouveau fichier](../../../../translated_images/fr/create-new-file.2814e609c2af9aeb.webp)
**Conventions de nommage :**
- Utilisez des noms descriptifs qui indiquent la fonction du fichier
@ -318,7 +318,7 @@ Cest là que le vrai plaisir commence ! Léditeur de VSCode.dev regorge de
2. Commencez à taper et regardez VSCode.dev vous aider avec les couleurs, les suggestions et la détection derreurs
3. Sauvegardez votre travail avec Ctrl+S (Windows/Linux) ou Cmd+S (Mac) même si lenregistrement automatique est aussi actif !
![Éditer un fichier dans VSCode.dev](../../../../translated_images/edit-a-file.52c0ee665ef19f08.fr.png)
![Éditer un fichier dans VSCode.dev](../../../../translated_images/fr/edit-a-file.52c0ee665ef19f08.webp)
**Les choses cool qui se passent pendant que vous codez :**
- Votre code est joliment coloré pour le rendre facile à lire
@ -339,7 +339,7 @@ Comme les archéologues qui créent des registres détaillés des couches de fou
2. Les fichiers modifiés apparaissent dans la section "Modifications"
3. La coloration indique les types de changement : vert pour ajouts, rouge pour suppressions
![Voir les changements dans le Contrôle de Source](../../../../translated_images/working-tree.c58eec08e6335c79.fr.png)
![Voir les changements dans le Contrôle de Source](../../../../translated_images/fr/working-tree.c58eec08e6335c79.webp)
**Sauvegarder votre travail (le flux de travail du commit) :**
@ -431,7 +431,7 @@ Le marketplace des extensions est vraiment bien organisé, vous ne vous perdrez
2. Parcourez ou recherchez quelque chose de spécifique
3. Cliquez sur tout ce qui vous semble intéressant pour en savoir plus
![Interface du marketplace des extensions](../../../../translated_images/extensions.eca0e0c7f59a10b5.fr.png)
![Interface du marketplace des extensions](../../../../translated_images/fr/extensions.eca0e0c7f59a10b5.webp)
**Ce que vous y verrez :**
@ -484,7 +484,7 @@ La plupart des extensions proposent des paramètres que vous pouvez ajuster pour
3. Choisissez « Paramètres de lextension » dans le menu déroulant
4. Modifiez les réglages jusquà ce que ce soit parfait pour votre flux de travail
![Personnaliser les paramètres dune extension](../../../../translated_images/extension-settings.21c752ae4f4cdb78.fr.png)
![Personnaliser les paramètres dune extension](../../../../translated_images/fr/extension-settings.21c752ae4f4cdb78.webp)
**Choses courantes que vous pourriez vouloir modifier :**
- Comment votre code est formaté (tabulations vs espaces, longueur des lignes, etc.)

@ -78,7 +78,7 @@ Puisque VSCode.dev requiert au moins un fichier pour ouvrir un dépôt, nous all
4. **Écrivez** un message de commit : « Add initial HTML structure »
5. **Cliquez** sur « Commit new file » pour sauvegarder vos modifications
![Création du fichier initial sur GitHub](../../../../translated_images/new-file-github.com.c886796d800e8056.fr.png)
![Création du fichier initial sur GitHub](../../../../translated_images/fr/new-file-github.com.c886796d800e8056.webp)
**Voici ce que cette configuration initiale accomplit :**
- **Établit** une structure de document HTML5 correcte avec des éléments sémantiques
@ -105,7 +105,7 @@ Maintenant que les fondations de votre dépôt sont posées, passons à VSCode.d
**Indicateur de réussite** : Vous devriez voir les fichiers de votre projet dans la barre latérale de lExplorateur et `index.html` disponible à lédition dans la zone principale.
![Projet chargé dans VSCode.dev](../../../../translated_images/project-on-vscode.dev.e79815a9a95ee7fe.fr.png)
![Projet chargé dans VSCode.dev](../../../../translated_images/fr/project-on-vscode.dev.e79815a9a95ee7fe.webp)
**Ce que vous verrez dans linterface :**
- **Barre latérale Explorateur** : **Affiche** les fichiers et dossiers de votre dépôt
@ -450,7 +450,7 @@ Les extensions améliorent votre expérience de développement en fournissant de
**Résultats immédiats après installation :**
Une fois CodeSwing installé, vous verrez une prévisualisation en direct de votre site de CV apparaître dans léditeur. Cela vous permet de voir exactement à quoi ressemble votre site au fur et à mesure des modifications.
![Extension CodeSwing affichant la prévisualisation en direct](../../../../translated_images/after-codeswing-extension-pb.0ebddddcf73b5509.fr.png)
![Extension CodeSwing affichant la prévisualisation en direct](../../../../translated_images/fr/after-codeswing-extension-pb.0ebddddcf73b5509.webp)
**Comprendre linterface améliorée :**
- **Vue en double** : **Montre** votre code dun côté et la prévisualisation en direct de lautre

@ -60,7 +60,7 @@ print(response.choices[0].message.content)
Voici à quoi ressemblera votre projet final :
![Interface de l'application de chat montrant une conversation entre l'utilisateur et l'assistant IA](../../../translated_images/screenshot.0a1ee0d123df681b.fr.png)
![Interface de l'application de chat montrant une conversation entre l'utilisateur et l'assistant IA](../../../translated_images/fr/screenshot.0a1ee0d123df681b.webp)
## 🗺️ Votre parcours dapprentissage au travers du développement dapplications IA
@ -189,7 +189,7 @@ mindmap
```
**Principe clé** : Le développement dapplications IA combine des compétences traditionnelles de développement web avec lintégration de services IA, créant des applications intelligentes qui paraissent naturelles et réactives pour les utilisateurs.
![Interface du GitHub Models AI Playground avec sélection de modèle et zone de test](../../../translated_images/playground.d2b927122224ff8f.fr.png)
![Interface du GitHub Models AI Playground avec sélection de modèle et zone de test](../../../translated_images/fr/playground.d2b927122224ff8f.webp)
**Voici ce qui rend le playground si utile :**
- **Essayez** différents modèles IA comme GPT-4o-mini, Claude et dautres (tous gratuits !)
@ -199,7 +199,7 @@ mindmap
Une fois que vous avez joué un peu, cliquez simplement sur longlet « Code » et choisissez votre langage pour obtenir le code dimplémentation dont vous avez besoin.
![Choix dans le playground montrant options de génération de code pour différents langages](../../../translated_images/playground-choice.1d23ba7d407f4758.fr.png)
![Choix dans le playground montrant options de génération de code pour différents langages](../../../translated_images/fr/playground-choice.1d23ba7d407f4758.webp)
## Mise en place de lintégration back-end Python
@ -2350,14 +2350,14 @@ Vous souhaitez tester ce projet dans un environnement de développement cloud ?
- **Accédez** au [dépôt Web Dev For Beginners](https://github.com/microsoft/Web-Dev-For-Beginners)
- **Cliquez** sur "Use this template" en haut à droite (assurez-vous dêtre connecté à GitHub)
![Create from template interface showing the green "Use this template" button](../../../translated_images/template.67ad477109d29a2b.fr.png)
![Create from template interface showing the green "Use this template" button](../../../translated_images/fr/template.67ad477109d29a2b.webp)
**Étape 2 : Lancer Codespaces**
- **Ouvrez** votre nouveau dépôt créé
- **Cliquez** sur le bouton vert "Code" et sélectionnez "Codespaces"
- **Choisissez** "Create codespace on main" pour démarrer votre environnement de développement
![Create codespace interface with options for launching cloud development environment](../../../translated_images/codespace.bcecbdf5d2747d3d.fr.png)
![Create codespace interface with options for launching cloud development environment](../../../translated_images/fr/codespace.bcecbdf5d2747d3d.webp)
**Étape 3 : Configuration de lenvironnement**
Une fois votre Codespace chargé, vous aurez accès à :

@ -72,13 +72,13 @@ Ne manquez pas notre nouveau programme IA Générative !
Visitez [https://aka.ms/genai-js-course](https://aka.ms/genai-js-course) pour commencer !
![Fond](../../translated_images/background.148a8d43afde5730.fr.png)
![Fond](../../translated_images/fr/background.148a8d43afde5730.webp)
- Leçons couvrant tout, des bases au RAG.
- Interagissez avec des personnages historiques grâce à GenAI et notre application compagnon.
- Narration ludique et engageante, vous ferez un voyage dans le temps !
![personnage](../../translated_images/character.5c0dd8e067ffd693.fr.png)
![personnage](../../translated_images/fr/character.5c0dd8e067ffd693.webp)
Chaque leçon inclut un devoir à compléter, un contrôle des connaissances et un défi pour vous guider dans lapprentissage de sujets comme :
@ -115,7 +115,7 @@ Suivez ces étapes :
Dans votre copie de ce dépôt que vous avez créée, cliquez sur le bouton **Code** et sélectionnez **Open with Codespaces**. Cela créera un nouveau Codespace pour que vous puissiez y travailler.
![Codespace](../../translated_images/createcodespace.0238bbf4d7a8d955.fr.png)
![Codespace](../../translated_images/fr/createcodespace.0238bbf4d7a8d955.webp)
#### Exécuter le programme localement sur votre ordinateur

@ -42,10 +42,10 @@ Ce programme inclut des packages importables pour les flux de travail LMS couran
- Moodle Cloud a un support limité pour Common Cartridge. Préférez le fichier Moodle ci-dessus, qui peut également être importé dans Canvas.
- Après l'importation, vérifiez les modules, les dates d'échéance et les paramètres des quiz pour les adapter à votre calendrier.
![Moodle](../../translated_images/moodle.94eb93d714a50cb2.fr.png)
![Moodle](../../translated_images/fr/moodle.94eb93d714a50cb2.webp)
> Le programme dans une classe Moodle
![Canvas](../../translated_images/canvas.fbd605ff8e5b8aff.fr.png)
![Canvas](../../translated_images/fr/canvas.fbd605ff8e5b8aff.webp)
> Le programme dans Canvas
### Utilisation directe du dépôt (sans Classroom)

@ -17,7 +17,7 @@ CO_OP_TRANSLATOR_METADATA:
היום, אנחנו הולכים לחקור את הכלים המדהימים שהופכים את פיתוח האינטרנט המודרני לא רק לאפשרי, אלא לממכר ברצינות. אני מדבר על אותם עורכים, דפדפנים ותהליכי עבודה שהמפתחים בנטפליקס, ספוטיפיי, ובסטודיו האפליקציות האהוב עליך משתמשים בהם כל יום. והנה החלק שיגרום לך לרקוד משמחה: רוב הכלים המקצועיים האלה, ברמת תעשייה, הם לגמרי בחינם!
![מבוא לתכנות](../../../../translated_images/webdev101-programming.d6e3f98e61ac4bff.he.png)
![מבוא לתכנות](../../../../translated_images/he/webdev101-programming.d6e3f98e61ac4bff.png)
> איור מאת [Tomomi Imura](https://twitter.com/girlie_mac)
```mermaid

@ -17,7 +17,7 @@ CO_OP_TRANSLATOR_METADATA:
אנחנו הולכים לעבור את המסע הזה יחד, צעד אחר צעד. בלי למהר, בלי לחץ רק אתה, אני, וכמה כלים מגניבים שהולכים להפוך לחברים הכי טובים שלך!
![מבוא ל-GitHub](../../../../translated_images/webdev101-github.8846d7971abef6f9.he.png)
![מבוא ל-GitHub](../../../../translated_images/he/webdev101-github.8846d7971abef6f9.png)
> איור מאת [Tomomi Imura](https://twitter.com/girlie_mac)
```mermaid
@ -605,7 +605,7 @@ flowchart TD
✅ דרך טובה למצוא ריפואים 'ידידותיים למתחילים' היא [לחפש לפי התג 'good-first-issue'](https://github.blog/2020-01-22-browse-good-first-issues-to-start-contributing-to-open-source/).
![העתקת ריפו מקומית](../../../../translated_images/clone_repo.5085c48d666ead57.he.png)
![העתקת ריפו מקומית](../../../../translated_images/he/clone_repo.5085c48d666ead57.png)
יש כמה דרכים להעתיק קוד. אחת מהן היא "לשכפל" את התוכן של הריפו, באמצעות HTTPS, SSH, או באמצעות GitHub CLI (ממשק שורת הפקודה).

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# יצירת דפי אינטרנט נגישים
![הכל על נגישות](../../../../translated_images/webdev101-a11y.8ef3025c858d897a.he.png)
![הכל על נגישות](../../../../translated_images/he/webdev101-a11y.8ef3025c858d897a.png)
> איור מאת [Tomomi Imura](https://twitter.com/girlie_mac)
```mermaid
@ -1045,12 +1045,12 @@ pie title "Common ARIA Usage Patterns"
**תמונות אינפורמטיביות** - מעבירות מידע חשוב:
```html
<img src="../../../../translated_images/chart.31c7eb0eb5c4450deba10b6f236732dfee8e8a11f6c0d8f31d2c2efb9d4c00ef.he.png" alt="Sales increased 25% from Q1 to Q2 2024">
<img src="../../../../translated_images/he/chart.31c7eb0eb5c4450deba10b6f236732dfee8e8a11f6c0d8f31d2c2efb9d4c00ef.png" alt="Sales increased 25% from Q1 to Q2 2024">
```
**תמונות דקורטיביות** - חזותיות בלבד ללא ערך מידע:
```html
<img src="../../../../translated_images/decorative-border.b2f3c4d6634fb79d57fb6357835906c16938df3d5651c1314c196c3b1c52df98.he.png" alt="" role="presentation">
<img src="../../../../translated_images/he/decorative-border.b2f3c4d6634fb79d57fb6357835906c16938df3d5651c1314c196c3b1c52df98.png" alt="" role="presentation">
```
**תמונות פונקציונליות** - משמשות ככפתורים או בקרות:
@ -1062,7 +1062,7 @@ pie title "Common ARIA Usage Patterns"
**תמונות מורכבות** - גרפים, דיאגרמות, אינפוגרפיקה:
```html
<img src="../../../../translated_images/complex-chart.c831f461a363b446a688be5ccacde20d011221758c902cb082cfd4293534ef17.he.png" alt="Quarterly sales data" aria-describedby="chart-description">
<img src="../../../../translated_images/he/complex-chart.c831f461a363b446a688be5ccacde20d011221758c902cb082cfd4293534ef17.png" alt="Quarterly sales data" aria-describedby="chart-description">
<div id="chart-description">
<p>Detailed description: Sales data shows a steady increase across all quarters...</p>
</div>
@ -1102,7 +1102,7 @@ pie title "Common ARIA Usage Patterns"
<picture>
<source media="(min-width: 800px)" srcset="large-chart.png">
<source media="(min-width: 400px)" srcset="medium-chart.png">
<img src="../../../../translated_images/small-chart.c50c7b1bbcce43d8d24fbfbab8f691fe47d8f25fb7c70857c9eae21d5f22862e.he.png" alt="Website traffic increased 40% after accessibility improvements">
<img src="../../../../translated_images/he/small-chart.c50c7b1bbcce43d8d24fbfbab8f691fe47d8f25fb7c70857c9eae21d5f22862e.png" alt="Website traffic increased 40% after accessibility improvements">
</picture>
```

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# יסודות JavaScript: סוגי נתונים
![JavaScript Basics - Data types](../../../../translated_images/webdev101-js-datatypes.4cc470179730702c.he.png)
![JavaScript Basics - Data types](../../../../translated_images/he/webdev101-js-datatypes.4cc470179730702c.png)
> סקיצה מאת [Tomomi Imura](https://twitter.com/girlie_mac)
```mermaid

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# יסודות JavaScript: שיטות ופונקציות
![JavaScript Basics - Functions](../../../../translated_images/webdev101-js-functions.be049c4726e94f8b.he.png)
![JavaScript Basics - Functions](../../../../translated_images/he/webdev101-js-functions.be049c4726e94f8b.png)
> סקיצה מאת [Tomomi Imura](https://twitter.com/girlie_mac)
```mermaid

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# יסודות JavaScript: קבלת החלטות
![JavaScript Basics - Making decisions](../../../../translated_images/webdev101-js-decisions.69e1b20f272dd1f0.he.png)
![JavaScript Basics - Making decisions](../../../../translated_images/he/webdev101-js-decisions.69e1b20f272dd1f0.png)
> סקיצה מאת [Tomomi Imura](https://twitter.com/girlie_mac)

@ -9,7 +9,7 @@ CO_OP_TRANSLATOR_METADATA:
-->
# יסודות JavaScript: מערכים ולולאות
![JavaScript Basics - Arrays](../../../../translated_images/webdev101-js-arrays.439d7528b8a29455.he.png)
![JavaScript Basics - Arrays](../../../../translated_images/he/webdev101-js-arrays.439d7528b8a29455.png)
> סקיצה מאת [Tomomi Imura](https://twitter.com/girlie_mac)
```mermaid

@ -26,7 +26,7 @@ journey
Build terrarium: 5: Student
```
![מבוא ל-HTML](../../../../translated_images/webdev101-html.4389c2067af68e98.he.png)
![מבוא ל-HTML](../../../../translated_images/he/webdev101-html.4389c2067af68e98.png)
> סקיצה מאת [Tomomi Imura](https://twitter.com/girlie_mac)
HTML, או HyperText Markup Language, הוא הבסיס לכל אתר שביקרת בו אי פעם. חשבו על HTML כשלד שמעניק מבנה לדפי אינטרנט הוא מגדיר היכן התוכן נמצא, איך הוא מאורגן ומה כל חלק מייצג. בעוד ש-CSS "ילביש" את ה-HTML בצבעים ובפריסות, ו-JavaScript יעניק לו חיים עם אינטראקטיביות, HTML מספק את המבנה הבסיסי שמאפשר את כל השאר.
@ -88,7 +88,7 @@ mindmap
4. בלוח ה-Explorer, לחצו על אייקון "New File"
5. תנו לקובץ את השם `index.html`
![VS Code Explorer מציג יצירת קובץ חדש](../../../../translated_images/vs-code-index.e2986cf919471eb9.he.png)
![VS Code Explorer מציג יצירת קובץ חדש](../../../../translated_images/he/vs-code-index.e2986cf919471eb9.png)
**אפשרות 2: שימוש בפקודות טרמינל**
```bash
@ -239,48 +239,48 @@ HTML משתמש בתגים זוגיים כדי להגדיר אלמנטים. לר
<div id="page">
<div id="left-container" class="container">
<div class="plant-holder">
<img class="plant" alt="plant" id="plant1" src="../../../../translated_images/plant1.d87946a2ca70cc4316bda6e6c3af7210fbe9ada5539a7885141a9ce0efaf7be3.he.png" />
<img class="plant" alt="plant" id="plant1" src="../../../../translated_images/he/plant1.d87946a2ca70cc4316bda6e6c3af7210fbe9ada5539a7885141a9ce0efaf7be3.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant2" src="../../../../translated_images/plant2.8daa1606c9c1ad896bb171212c7d1d882e504b76b8ec3a2d1c337d775cf50dc3.he.png" />
<img class="plant" alt="plant" id="plant2" src="../../../../translated_images/he/plant2.8daa1606c9c1ad896bb171212c7d1d882e504b76b8ec3a2d1c337d775cf50dc3.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant3" src="../../../../translated_images/plant3.8b0d484381a2a2a77c5c06ad97ab6ae5b7023da8c6c7678b0183bc0e46ea17a7.he.png" />
<img class="plant" alt="plant" id="plant3" src="../../../../translated_images/he/plant3.8b0d484381a2a2a77c5c06ad97ab6ae5b7023da8c6c7678b0183bc0e46ea17a7.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant4" src="../../../../translated_images/plant4.656e16ae1df37be2af5f4e7b5ab6c5decc432c3d3ec2eb98b904ddbecad49db0.he.png" />
<img class="plant" alt="plant" id="plant4" src="../../../../translated_images/he/plant4.656e16ae1df37be2af5f4e7b5ab6c5decc432c3d3ec2eb98b904ddbecad49db0.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant5" src="../../../../translated_images/plant5.2b41b9355f11ebccd62d327f5f14e56531ecda9c6f970bc89e386ee9f0273bb0.he.png" />
<img class="plant" alt="plant" id="plant5" src="../../../../translated_images/he/plant5.2b41b9355f11ebccd62d327f5f14e56531ecda9c6f970bc89e386ee9f0273bb0.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant6" src="../../../../translated_images/plant6.3d1827d03b6569946be13ae5da1f32947ae56732638a43757a7c616a6adccc5d.he.png" />
<img class="plant" alt="plant" id="plant6" src="../../../../translated_images/he/plant6.3d1827d03b6569946be13ae5da1f32947ae56732638a43757a7c616a6adccc5d.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant7" src="../../../../translated_images/plant7.8152c302ac97f621a6c595bdf3939103568f9efc7d3b06a0f02a1ea66f479de0.he.png" />
<img class="plant" alt="plant" id="plant7" src="../../../../translated_images/he/plant7.8152c302ac97f621a6c595bdf3939103568f9efc7d3b06a0f02a1ea66f479de0.png" />
</div>
</div>
<div id="right-container" class="container">
<div class="plant-holder">
<img class="plant" alt="plant" id="plant8" src="../../../../translated_images/plant8.38d6428174ffa850a47cd1b81d528fa528adda7d23f3ae0bb42f4a27356ca5e6.he.png" />
<img class="plant" alt="plant" id="plant8" src="../../../../translated_images/he/plant8.38d6428174ffa850a47cd1b81d528fa528adda7d23f3ae0bb42f4a27356ca5e6.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant9" src="../../../../translated_images/plant9.f0e38d3327c37fc29cd2734d48d20c2cf69300898ece6d46708829e02ce540e3.he.png" />
<img class="plant" alt="plant" id="plant9" src="../../../../translated_images/he/plant9.f0e38d3327c37fc29cd2734d48d20c2cf69300898ece6d46708829e02ce540e3.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant10" src="../../../../translated_images/plant10.b159d6d6e985595f56d86b4b38061b8e7b4c9969c210c199fe967269cf935e7f.he.png" />
<img class="plant" alt="plant" id="plant10" src="../../../../translated_images/he/plant10.b159d6d6e985595f56d86b4b38061b8e7b4c9969c210c199fe967269cf935e7f.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant11" src="../../../../translated_images/plant11.2a03a1c2ec8ea84ef3a80c06cc6883f3960fbb669f2c0b0bd824ba33d7eb7d32.he.png" />
<img class="plant" alt="plant" id="plant11" src="../../../../translated_images/he/plant11.2a03a1c2ec8ea84ef3a80c06cc6883f3960fbb669f2c0b0bd824ba33d7eb7d32.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant12" src="../../../../translated_images/plant12.60e9b53e538fbaf3e5797ebf800acb483baf5639e6cf378292ac2321ab8a5ea9.he.png" />
<img class="plant" alt="plant" id="plant12" src="../../../../translated_images/he/plant12.60e9b53e538fbaf3e5797ebf800acb483baf5639e6cf378292ac2321ab8a5ea9.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant13" src="../../../../translated_images/plant13.07a51543c820bcf57f67a9a6c0acbd6211ff795e2e67a42a9718224534e95fab.he.png" />
<img class="plant" alt="plant" id="plant13" src="../../../../translated_images/he/plant13.07a51543c820bcf57f67a9a6c0acbd6211ff795e2e67a42a9718224534e95fab.png" />
</div>
<div class="plant-holder">
<img class="plant" alt="plant" id="plant14" src="../../../../translated_images/plant14.6e486371ba7d36ba3520d9828887993cb4c3edad8bdd8ff9b1b315717ff8cb63.he.png" />
<img class="plant" alt="plant" id="plant14" src="../../../../translated_images/he/plant14.6e486371ba7d36ba3520d9828887993cb4c3edad8bdd8ff9b1b315717ff8cb63.png" />
</div>
</div>
</div>

@ -30,7 +30,7 @@ journey
Glass reflections: 5: Student
```
![מבוא ל-CSS](../../../../translated_images/webdev101-css.3f7af5991bf53a20.he.png)
![מבוא ל-CSS](../../../../translated_images/he/webdev101-css.3f7af5991bf53a20.png)
> איור מאת [Tomomi Imura](https://twitter.com/girlie_mac)
זוכרים איך הטרריום שלכם ב-HTML נראה די בסיסי? CSS הוא המקום שבו אנו הופכים את המבנה הפשוט הזה למשהו מושך מבחינה חזותית.
@ -205,7 +205,7 @@ body {
פתחו את כלי המפתחים של הדפדפן שלכם (F12), עברו ללשונית Elements ובדקו את אלמנט `<h1>` שלכם. תראו שהוא יורש את משפחת הגופן מה-body:
![גופן בירושה](../../../../translated_images/1.cc07a5cbe114ad1d.he.png)
![גופן בירושה](../../../../translated_images/he/1.cc07a5cbe114ad1d.png)
**זמן ניסוי**: נסו להגדיר תכונות אחרות שניתן לרשת על `<body>` כמו `color`, `line-height` או `text-align`. מה קורה לכותרת ולשאר האלמנטים?
@ -335,7 +335,7 @@ h1 {
**הנה מבנה ה-HTML לכל צמח:**
```html
<div class="plant-holder">
<img class="plant" alt="Decorative plant for terrarium" id="plant1" src="../../../../translated_images/plant1.d18b18ffe73da18f8b1ac7aba73b4050af52f4a0c9174aeac464b85123fc2850.he.png" />
<img class="plant" alt="Decorative plant for terrarium" id="plant1" src="../../../../translated_images/he/plant1.d18b18ffe73da18f8b1ac7aba73b4050af52f4a0c9174aeac464b85123fc2850.png" />
</div>
```
@ -599,7 +599,7 @@ flowchart LR
תיצרו הדגשות עדינות שמדמות כיצד אור משתקף על פני זכוכית. גישה זו דומה לאופן שבו ציירי הרנסנס כמו יאן ואן אייק השתמשו באור והשתקפות כדי לגרום לזכוכית מצוירת להיראות תלת-ממדית. הנה מה שאתם שואפים להשיג:
![finished terrarium](../../../../translated_images/terrarium-final.2f07047ffc597d0a.he.png)
![finished terrarium](../../../../translated_images/he/terrarium-final.2f07047ffc597d0a.png)
**האתגר שלכם:**
- **צרו** צורות אליפטיות עדינות בצבע לבן או בהיר עבור השתקפויות הזכוכית

@ -26,7 +26,7 @@ journey
Complete terrarium: 5: Student
```
![DOM וסגירה](../../../../translated_images/webdev101-js.10280393044d7eaa.he.png)
![DOM וסגירה](../../../../translated_images/he/webdev101-js.10280393044d7eaa.png)
> איור מאת [Tomomi Imura](https://twitter.com/girlie_mac)
ברוכים הבאים לאחד ההיבטים המרתקים ביותר בפיתוח אתרים - הפיכת דברים לאינטראקטיביים! מודל האובייקטים של המסמך (DOM) הוא כמו גשר בין ה-HTML שלך ל-JavaScript, והיום נשתמש בו כדי להחיות את הטרריום שלך. כשטים ברנרס-לי יצר את הדפדפן הראשון, הוא דמיין רשת שבה מסמכים יכולים להיות דינמיים ואינטראקטיביים - ה-DOM הופך את החזון הזה לאפשרי.
@ -105,7 +105,7 @@ flowchart TD
style Q fill:#ffebee
```
![ייצוג עץ DOM](../../../../translated_images/dom-tree.7daf0e763cbbba92.he.png)
![ייצוג עץ DOM](../../../../translated_images/he/dom-tree.7daf0e763cbbba92.png)
> ייצוג של ה-DOM והסימון של ה-HTML שמתייחס אליו. מתוך [Olfa Nasraoui](https://www.researchgate.net/publication/221417012_Profile-Based_Focused_Crawler_for_Social_Media-Sharing_Websites)
@ -150,7 +150,7 @@ flowchart LR
> 💡 **הבנת סגירות**: סגירות הן נושא משמעותי ב-JavaScript, ומפתחים רבים משתמשים בהן במשך שנים לפני שהם מבינים את כל ההיבטים התיאורטיים. היום נתמקד ביישום מעשי - תראה סגירות מופיעות באופן טבעי כשנבנה את התכונות האינטראקטיביות שלנו. ההבנה תתפתח כשתראה איך הן פותרות בעיות אמיתיות.
![ייצוג עץ DOM](../../../../translated_images/dom-tree.7daf0e763cbbba92.he.png)
![ייצוג עץ DOM](../../../../translated_images/he/dom-tree.7daf0e763cbbba92.png)
> ייצוג של ה-DOM והסימון של ה-HTML שמתייחס אליו. מתוך [Olfa Nasraoui](https://www.researchgate.net/publication/221417012_Profile-Based_Focused_Crawler_for_Social_Media-Sharing_Websites)
@ -593,7 +593,7 @@ function stopElementDrag() {
- **תמיכה חוצת מכשירים**: עובד על מחשבים שולחניים וניידים
- **מודעות ביצועים**: ללא דליפות זיכרון או חישובים מיותרים
![טרריום סופי](../../../../translated_images/terrarium-final.0920f16e87c13a84.he.png)
![טרריום סופי](../../../../translated_images/he/terrarium-final.0920f16e87c13a84.png)
---

@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA:
תרגול קטן של גרירה ושחרור. עם מעט HTML, JS ו-CSS, תוכלו לבנות ממשק אינטרנט, לעצב אותו ולהוסיף אינטראקציה.
![הטרריום שלי](../../../../translated_images/screenshot_gray.0c796099a1f9f25e.he.png)
![הטרריום שלי](../../../../translated_images/he/screenshot_gray.0c796099a1f9f25e.png)
## קרדיטים

@ -26,7 +26,7 @@ journey
Polish experience: 5: Student
```
![שרטוט דפדפן](../../../../translated_images/browser.60317c9be8b7f84a.he.jpg)
![שרטוט דפדפן](../../../../translated_images/he/browser.60317c9be8b7f84a.jpg)
> שרטוט מאת [Wassim Chegham](https://dev.to/wassimchegham/ever-wondered-what-happens-when-you-type-in-a-url-in-an-address-bar-in-a-browser-3dob)
## שאלון לפני השיעור
@ -79,7 +79,7 @@ mindmap
**קצת היסטוריה**: הדפדפן הראשון נקרא 'WorldWideWeb' ונוצר על ידי סר טימותי ברנרס-לי בשנת 1990.
![דפדפנים מוקדמים](../../../../translated_images/earlybrowsers.d984b711cdf3a42d.he.jpg)
![דפדפנים מוקדמים](../../../../translated_images/he/earlybrowsers.d984b711cdf3a42d.jpg)
> כמה דפדפנים מוקדמים, דרך [Karen McGrane](https://www.slideshare.net/KMcGrane/week-4-ixd-history-personal-computing)
### איך דפדפנים מעבדים תוכן אינטרנטי
@ -198,7 +198,7 @@ quadrantChart
הבנת תהליך התקנת ההרחבות עוזרת לכם לצפות את חוויית המשתמש כאשר אנשים מתקינים את ההרחבה שלכם. תהליך ההתקנה סטנדרטי בדפדפנים מודרניים, עם וריאציות קלות בעיצוב הממשק.
![צילום מסך של דפדפן Edge שמציג את דף ניהול ההרחבות edge://extensions ואת תפריט ההגדרות הפתוח](../../../../translated_images/install-on-edge.d68781acaf0b3d3d.he.png)
![צילום מסך של דפדפן Edge שמציג את דף ניהול ההרחבות edge://extensions ואת תפריט ההגדרות הפתוח](../../../../translated_images/he/install-on-edge.d68781acaf0b3d3d.png)
> **חשוב**: ודאו שאתם מפעילים מצב מפתחים ומאפשרים הרחבות מחנויות אחרות כאשר אתם בודקים את ההרחבות שלכם.
@ -313,10 +313,10 @@ project-root/
### סקירת תצוגות ההרחבה
**תצוגת הגדרות** - הגדרת משתמש בפעם הראשונה:
![צילום מסך של ההרחבה המושלמת פתוחה בדפדפן, מציגה טופס עם שדות להזנת שם אזור ומפתח API.](../../../../translated_images/1.b6da8c1394b07491.he.png)
![צילום מסך של ההרחבה המושלמת פתוחה בדפדפן, מציגה טופס עם שדות להזנת שם אזור ומפתח API.](../../../../translated_images/he/1.b6da8c1394b07491.png)
**תצוגת תוצאות** - הצגת נתוני טביעת רגל פחמנית:
![צילום מסך של ההרחבה המושלמת מציגה ערכים לשימוש פחמן ואחוז דלקים מאובנים עבור אזור US-NEISO.](../../../../translated_images/2.1dae52ff08042246.he.png)
![צילום מסך של ההרחבה המושלמת מציגה ערכים לשימוש פחמן ואחוז דלקים מאובנים עבור אזור US-NEISO.](../../../../translated_images/he/2.1dae52ff08042246.png)
### בניית טופס ההגדרות

@ -268,7 +268,7 @@ stateDiagram-v2
ClearStorage --> FirstTime: Back to setup
```
![Local storage pane](../../../../translated_images/localstorage.472f8147b6a3f8d1.he.png)
![Local storage pane](../../../../translated_images/he/localstorage.472f8147b6a3f8d1.png)
> ⚠️ **שיקול אבטחה**: באפליקציות ייצור, אחסון מפתחות API ב-LocalStorage מהווה סיכון אבטחה מכיוון ש-JavaScript יכול לגשת לנתונים אלה. למטרות לימוד, הגישה הזו מתאימה, אבל באפליקציות אמיתיות יש להשתמש באחסון מאובטח בצד השרת עבור אישורים רגישים.

@ -126,7 +126,7 @@ flowchart LR
בואו ננסה את זה. פתחו אתר (Microsoft.com עובד טוב לזה) ולחצו על כפתור 'הקלט'. עכשיו רעננו את הדף וצפו בפרופיילר לוכד את כל מה שקורה. כשעוצרים את ההקלטה, תראו פירוט מפורט של איך הדפדפן 'מפעיל', 'מצייר' ו'מעדכן' את האתר. זה מזכיר לי איך מרכז הבקרה עוקב אחרי כל מערכת בזמן שיגור רקטה - אתם מקבלים נתונים בזמן אמת על מה בדיוק קורה ומתי.
![פרופיילר Edge](../../../../translated_images/profiler.5a4a62479c5df01c.he.png)
![פרופיילר Edge](../../../../translated_images/he/profiler.5a4a62479c5df01c.png)
✅ [תיעוד Microsoft](https://docs.microsoft.com/microsoft-edge/devtools-guide/performance/?WT.mc_id=academic-77807-sagibbon) מכיל המון פרטים נוספים אם אתם רוצים לצלול לעומק
@ -136,11 +136,11 @@ flowchart LR
קבלו תמונת מצב של ביצועי הדף שלכם על ידי בחירת חלק מציר הזמן של הפרופיל והסתכלות על חלונית הסיכום:
![תמונת מצב פרופיילר Edge](../../../../translated_images/snapshot.97750180ebcad737.he.png)
![תמונת מצב פרופיילר Edge](../../../../translated_images/he/snapshot.97750180ebcad737.png)
בדקו את חלונית יומן האירועים כדי לראות אם יש אירוע שלקח יותר מ-15 מילי-שניות:
![יומן אירועים Edge](../../../../translated_images/log.804026979f3707e0.he.png)
![יומן אירועים Edge](../../../../translated_images/he/log.804026979f3707e0.png)
✅ הכירו את הפרופיילר שלכם! פתחו את כלי המפתחים באתר הזה ובדקו אם יש צווארי בקבוק. מהו הנכס שנטען הכי לאט? הכי מהר?

@ -23,7 +23,7 @@ CO_OP_TRANSLATOR_METADATA:
### קרדיטים
![תוסף דפדפן ירוק](../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.he.png)
![תוסף דפדפן ירוק](../../../translated_images/he/extension-screenshot.0e7f5bfa110e92e3.png)
## קרדיטים

@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA:
באמצעות ה-API של CO2 Signal של tmrow למעקב אחר צריכת חשמל, ניתן לבנות תוסף לדפדפן שיזכיר לכם ישירות בדפדפן עד כמה צריכת החשמל באזורכם כבדה. שימוש בתוסף זה באופן מזדמן יעזור לכם לקבל החלטות מושכלות על פעילויותיכם בהתבסס על מידע זה.
![צילום מסך של התוסף](../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.he.png)
![צילום מסך של התוסף](../../../../translated_images/he/extension-screenshot.0e7f5bfa110e92e3.png)
## התחלת עבודה
@ -31,7 +31,7 @@ npm run build
כדי להתקין ב-Edge, השתמשו בתפריט 'שלוש הנקודות' בפינה הימנית העליונה של הדפדפן כדי למצוא את לוח ההרחבות. משם, בחרו 'Load Unpacked' כדי לטעון תוסף חדש. בחרו בתיקיית 'dist' כאשר תתבקשו, והתוסף ייטען. כדי להשתמש בו, תצטרכו מפתח API ל-API של CO2 Signal ([השיגו אחד כאן דרך אימייל](https://www.co2signal.com/) - הזינו את האימייל שלכם בתיבה בעמוד זה) ואת [הקוד לאזור שלכם](http://api.electricitymap.org/v3/zones) התואם ל-[Electricity Map](https://www.electricitymap.org/map) (לדוגמה, בבוסטון אני משתמש ב-'US-NEISO').
![התקנה](../../../../translated_images/install-on-edge.78634f02842c4828.he.png)
![התקנה](../../../../translated_images/he/install-on-edge.78634f02842c4828.png)
לאחר הזנת מפתח ה-API והאזור בממשק התוסף, הנקודה הצבעונית בסרגל התוספים של הדפדפן אמורה להשתנות כדי לשקף את צריכת האנרגיה באזורכם ולתת לכם רמז אילו פעילויות כבדות אנרגיה מתאימות לביצוע. הרעיון מאחורי מערכת ה'נקודה' הזו הושאל מתוסף [Energy Lollipop](https://energylollipop.com/) לפליטות בקליפורניה.

@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA:
באמצעות ה-API של CO2 Signal מבית tmrow למעקב אחר צריכת חשמל, ניתן ליצור הרחבת דפדפן שתספק תזכורת ישירה בדפדפן לגבי צריכת החשמל באזור שלך. השימוש בהרחבה זו יעזור לך לקבל החלטות בנוגע לפעילויות שלך בהתבסס על מידע זה.
![extension screenshot](../../../../../translated_images/extension-screenshot.352c4c3ba54e4041ad2f6af749d562cc5705f527b5826efd53d11c3528f5ae45.he.png)
![extension screenshot](../../../../../translated_images/he/extension-screenshot.352c4c3ba54e4041ad2f6af749d562cc5705f527b5826efd53d11c3528f5ae45.png)
## התחלה
@ -31,7 +31,7 @@ npm run build
להתקנה ב-Edge, השתמש בתפריט 'שלוש הנקודות' בפינה הימנית העליונה של הדפדפן כדי למצוא את לוח ההרחבות. משם, בחר 'טען ללא אריזה' כדי לטעון הרחבה חדשה. פתח את תיקיית 'dist' כאשר תתבקש, וההרחבה תיטען. כדי להשתמש בה, תצטרך מפתח API ל-API של CO2 Signal ([קבל אחד כאן באמצעות דוא"ל](https://www.co2signal.com/) - הזן את כתובת הדוא"ל שלך בתיבה שבדף זה) ואת [הקוד לאזור שלך](http://api.electricitymap.org/v3/zones) המתאים ל-[מפת החשמל](https://www.electricitymap.org/map) (לדוגמה, בבוסטון אני משתמש ב-'US-NEISO').
![installing](../../../../../translated_images/install-on-edge.8bd0ee3ca7dcda1c5334b5195603a43c864e3b38d088b03d57376d25e77b9459.he.png)
![installing](../../../../../translated_images/he/install-on-edge.8bd0ee3ca7dcda1c5334b5195603a43c864e3b38d088b03d57376d25e77b9459.png)
לאחר הזנת מפתח ה-API והאזור בממשק ההרחבה, הנקודה הצבעונית בסרגל ההרחבות של הדפדפן אמורה להשתנות כדי לשקף את צריכת האנרגיה באזור שלך ולספק לך אינדיקציה לגבי פעילויות עתירות אנרגיה שיהיו מתאימות עבורך. הרעיון מאחורי מערכת ה"נקודות" הזו הגיע אליי מה-[הרחבת Energy Lollipop](https://energylollipop.com/) עבור פליטות בקליפורניה.

@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA:
באמצעות ה-API של CO2 Signal מבית tmrow למעקב אחר צריכת חשמל, צרו הרחבת דפדפן שתאפשר לכם לקבל תזכורת ישירות בדפדפן על צריכת החשמל באזורכם. השימוש בהרחבה זו יעזור לכם לקבל החלטות מושכלות לגבי הפעילויות שלכם בהתבסס על מידע זה.
![צילום מסך של ההרחבה](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.he.png)
![צילום מסך של ההרחבה](../../../../../translated_images/he/extension-screenshot.0e7f5bfa110e92e3.png)
## התחלה
@ -31,7 +31,7 @@ npm run build
כדי להתקין ב-Edge, השתמשו בתפריט 'שלוש נקודות' בפינה הימנית העליונה של הדפדפן כדי למצוא את לוח ההרחבות. משם, בחרו 'טען הרחבה לא מכווצת' כדי לטעון הרחבה חדשה. פתחו את תיקיית 'dist' כאשר תתבקשו, וההרחבה תיטען. כדי להשתמש בה, תצטרכו מפתח API ל-API של CO2 Signal ([קבלו אחד כאן באמצעות אימייל](https://www.co2signal.com/) - הכניסו את כתובת האימייל שלכם בתיבה בעמוד זה) ואת [קוד האזור שלכם](http://api.electricitymap.org/v3/zones) התואם ל[מפת החשמל](https://www.electricitymap.org/map) (לדוגמה, בבוסטון אני משתמש ב-'US-NEISO').
![התקנה](../../../../../translated_images/install-on-edge.78634f02842c4828.he.png)
![התקנה](../../../../../translated_images/he/install-on-edge.78634f02842c4828.png)
לאחר שהזנתם את מפתח ה-API ואת האזור בממשק ההרחבה, הנקודה הצבעונית בסרגל ההרחבות של הדפדפן אמורה להשתנות כדי לשקף את צריכת האנרגיה באזורכם ולספק לכם אינדיקציה לגבי פעילויות עתירות אנרגיה שיהיה מתאים לבצע. הרעיון מאחורי מערכת ה'נקודות' הזו נלקח מה-[הרחבת Energy Lollipop](https://energylollipop.com/) עבור פליטות קליפורניה.

@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA:
שימוש ב-API של CO2 Signal של tmrow למעקב אחר צריכת חשמל, בניית תוסף דפדפן שיזכיר לכם כמה עמוסה צריכת החשמל באזורכם דרך הדפדפן שלכם. שימוש בתוסף הזה יכול לעזור לכם לקבל החלטות על סמך המידע הזה לגבי הפעילויות שלכם.
![צילום מסך של התוסף ](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.he.png)
![צילום מסך של התוסף ](../../../../../translated_images/he/extension-screenshot.0e7f5bfa110e92e3.png)
## התחלה
@ -31,7 +31,7 @@ npm run build
להתקנה בדפדפן Edge, השתמשו בתפריט 'שלוש נקודות' בפינה הימנית העליונה של הדפדפן כדי למצוא את פאנל התוספים. משם, בחרו 'טעינת תוסף לא ארוז' כדי לטעון תוסף חדש. בתיבת הדיאלוג, פתחו את תיקיית 'dist' והתוסף ייטען. כדי להשתמש בו, תצטרכו מפתח API ל-CO2 Signal ([קבלו אותו כאן דרך אימייל](https://www.co2snal.com/) - הזינו את האימייל שלכם בתיבה בעמוד זה) וקוד [האזור שלכם](http://api.electricitymap.org/v3/zones) [במפת החשמל](https://www.electricitymap.org/map) (לדוגמה, בבוסטון אני משתמש ב-'US-NEISO').
![התקנה](../../../../../translated_images/install-on-edge.78634f02842c4828.he.png)
![התקנה](../../../../../translated_images/he/install-on-edge.78634f02842c4828.png)
לאחר הזנת מפתח ה-API והאזור בממשק התוסף, הנקודה הצבעונית בסרגל התוספים של הדפדפן אמורה להשתנות כדי לשקף את צריכת האנרגיה באזורכם ולספק לכם אינדיקציה אילו פעילויות כבדות אנרגיה מתאימות לביצוע. הרעיון מאחורי מערכת ה'נקודה' הזו הגיע לי מתוסף [Energy Lollipop](https://energylollipop.com/) עבור פליטות קליפורניה.

@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA:
נשתמש ב-API של Signal CO2 מבית tmrow כדי לעקוב אחר צריכת החשמל וליצור תוסף לדפדפן, כך שנוכל לקבל תזכורת ישירות בדפדפן על כמה כבדה צריכת החשמל באזור שלנו. השימוש בתוסף הזה יעזור להעריך את הפעילויות שלנו בהתבסס על המידע הזה.
![צילום מסך של התוסף](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.he.png)
![צילום מסך של התוסף](../../../../../translated_images/he/extension-screenshot.0e7f5bfa110e92e3.png)
## איך להתחיל
@ -31,7 +31,7 @@ npm run build
להתקנה ב-Edge, יש להשתמש בתפריט "שלוש נקודות" בפינה הימנית העליונה של הדפדפן כדי למצוא את לוח הבקרה של תוספים. אם מצב מפתחים לא פעיל, יש להפעיל אותו (בפינה השמאלית התחתונה). לבחור "טען ללא דחיסה" כדי לטעון תוסף חדש. לפתוח את תיקיית "dist" בהנחיה, והתוסף ייטען. כדי להשתמש בו, תצטרכו מפתח API ל-API של CO2 Signal (ניתן [לקבל אותו כאן דרך אימייל](https://www.co2signal.com/) - הכניסו את כתובת האימייל שלכם בתיבה בעמוד הזה) ואת [קוד האזור שלכם](http://api.electricitymap.org/v3/zones) התואם ל-[מפת החשמל](https://www.electricitymap.org/map) (לדוגמה, בבוסטון, "US-NEISO").
![התקנה](../../../../../translated_images/install-on-edge.78634f02842c4828.he.png)
![התקנה](../../../../../translated_images/he/install-on-edge.78634f02842c4828.png)
לאחר שמפתח ה-API והאזור הוזנו בממשק התוסף, הנקודה הצבעונית בסרגל התוסף בדפדפן אמורה להשתנות כדי לשקף את צריכת האנרגיה באזור ולספק רמז אילו פעילויות עתירות אנרגיה יהיו מתאימות לביצוע. הרעיון מאחורי מערכת ה"נקודות" הזו נלקח מה-[תוסף Energy Lollipop](https://energylollipop.com/) עבור פליטות בקליפורניה.

@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA:
בנו תוסף לדפדפן שמציג תזכורת על צריכת החשמל באזורכם, באמצעות ה-API של CO2 Signal מבית tmrow. התוסף מאפשר לכם לעקוב אחר צריכת החשמל באזורכם ולהשתמש במידע הזה כדי לקבל החלטות מושכלות לגבי הפעילות שלכם.
![צילום מסך של התוסף](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.he.png)
![צילום מסך של התוסף](../../../../../translated_images/he/extension-screenshot.0e7f5bfa110e92e3.png)
## הקדמה
@ -31,7 +31,7 @@ npm run build
כדי להתקין ב-Edge, מצאו את לוח ה"הרחבות" דרך תפריט "שלוש הנקודות" בפינה הימנית העליונה של הדפדפן. משם, בחרו "Load Unpacked" כדי לטעון את התוסף החדש. כאשר תתבקשו, פתחו את תיקיית "dist", והתוסף ייטען. לשימוש בתוסף, תצטרכו מפתח API של CO2 Signal ([קבלו אחד כאן דרך אימייל](https://www.co2signal.com/) - הזינו את האימייל שלכם בתיבה שבדף) וקוד לאזור שלכם התואם ל-[Electricity Map](https://www.electricitymap.org/map) ([ראו כאן את הקוד לאזור שלכם](http://api.electricitymap.org/v3/zones)). לדוגמה, בבוסטון משתמשים ב-'US-NEISO'.
![התקנה](../../../../../translated_images/install-on-edge.78634f02842c4828.he.png)
![התקנה](../../../../../translated_images/he/install-on-edge.78634f02842c4828.png)
לאחר שתזינו את מפתח ה-API והאזור בממשק התוסף, נקודה צבעונית שתופיע בסרגל ההרחבות של הדפדפן תשתנה בהתאם לצריכת האנרגיה באזורכם. הנקודה תספק אינדיקציה אילו פעילויות שדורשות אנרגיה מתאימות לביצוע באותו זמן. הרעיון של מערכת ה"נקודה" נלקח מהתוסף [Energy Lollipop](https://energylollipop.com/) שנועד למעקב אחר פליטות בקליפורניה.

@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA:
באמצעות ה-API של CO2 Signal מבית tmrow לזיהוי צריכת חשמל, ניתן לבנות תוסף לדפדפן שיתריע בפניכם על רמת צריכת החשמל באזורכם. שימוש בתוסף זה יעזור לכם לקבל החלטות מושכלות לגבי הפעילויות שלכם בהתבסס על המידע הזה.
![צילום מסך של תוסף הדפדפן](../../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.he.png)
![צילום מסך של תוסף הדפדפן](../../../../../translated_images/he/extension-screenshot.0e7f5bfa110e92e3.png)
## התחלה
@ -31,7 +31,7 @@ npm run build
כדי להתקין ב-Edge, השתמשו בתפריט 'שלוש הנקודות' בפינה הימנית העליונה של הדפדפן כדי למצוא את לוח התוספים. משם, בחרו 'Load Unpacked' כדי לטעון את התוסף החדש. פתחו את תיקיית 'dist' לפי הבקשה, והתוסף ייטען. כדי להשתמש בו, תצטרכו מפתח API ל-API של CO2 Signal ([קבלו אחד כאן דרך אימייל](https://www.co2signal.com/) - הכניסו את האימייל שלכם בתיבה שבדף זה) ואת [הקוד לאזור שלכם](http://api.electricitymap.org/v3/zones) המתאים ל-[מפת החשמל](https://www.electricitymap.org/map) (לדוגמה, בבוסטון אני משתמש ב-'US-NEISO').
![התקנה](../../../../../translated_images/install-on-edge.78634f02842c4828.he.png)
![התקנה](../../../../../translated_images/he/install-on-edge.78634f02842c4828.png)
לאחר הכנסת מפתח ה-API והאזור לממשק התוסף, הנקודה הצבעונית בסרגל התוספים של הדפדפן תשתנה כדי לשקף את צריכת האנרגיה באזורכם ותספק לכם רמזים לגבי פעילויות כבדות שמתאימות לביצוע. הרעיון מאחורי מערכת ה'נקודה' הזו נלקח מ-[תוסף הדפדפן Energy Lollipop](https://energylollipop.com/) עבור פליטות בקליפורניה.

@ -11,7 +11,7 @@ CO_OP_TRANSLATOR_METADATA:
באמצעות ה-API של tmrow, C02 Signal, למעקב אחר צריכת חשמל, ניתן לבנות הרחבת דפדפן שתספק תזכורת ישירות בדפדפן לגבי רמת צריכת החשמל באזור שלך. שימוש בהרחבה זו באופן מזדמן יעזור לך לקבל החלטות מושכלות לגבי הפעילויות שלך בהתבסס על מידע זה.
![צילום מסך של ההרחבה](../../../../translated_images/extension-screenshot.0e7f5bfa110e92e3.he.png)
![צילום מסך של ההרחבה](../../../../translated_images/he/extension-screenshot.0e7f5bfa110e92e3.png)
## איך מתחילים
@ -31,7 +31,7 @@ npm run build
כדי להתקין ב-Edge, השתמשו בתפריט 'שלוש הנקודות' בפינה הימנית העליונה של הדפדפן כדי למצוא את לוח ההרחבות. משם, בחרו 'טעינת הרחבה לא ארוזה' כדי לטעון הרחבה חדשה. פתחו את תיקיית 'dist' כאשר תתבקשו, וההרחבה תיטען. כדי להשתמש בה, תצטרכו מפתח API ל-API של CO2 Signal ([קבלו אחד כאן דרך אימייל](https://www.co2signal.com/) - הכניסו את האימייל שלכם בתיבה בעמוד זה) ואת [קוד האזור שלכם](http://api.electricitymap.org/v3/zones) התואם ל-[Electricity Map](https://www.electricitymap.org/map) (לדוגמה, בבוסטון אני משתמש ב-'US-NEISO').
![התקנה](../../../../translated_images/install-on-edge.78634f02842c4828.he.png)
![התקנה](../../../../translated_images/he/install-on-edge.78634f02842c4828.png)
לאחר הזנת מפתח ה-API והאזור בממשק ההרחבה, הנקודה הצבעונית בסרגל ההרחבות של הדפדפן אמורה להשתנות כדי לשקף את צריכת האנרגיה באזור שלכם ולספק לכם הכוונה לגבי אילו פעילויות עתירות אנרגיה יהיו מתאימות לביצוע. הרעיון מאחורי מערכת ה'נקודה' הזו נלקח מההרחבה [Energy Lollipop](https://energylollipop.com/) לפליטות בקליפורניה.

Loading…
Cancel
Save