parent
05bab63d1e
commit
b819a815bf
@ -0,0 +1,25 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "b0a9b4cccd918195f58224d5793da1a6",
|
||||
"translation_date": "2026-01-08T10:33:54+00:00",
|
||||
"source_file": "CODE_OF_CONDUCT.md",
|
||||
"language_code": "pcm"
|
||||
}
|
||||
-->
|
||||
# Microsoft Open Source Code of Conduct
|
||||
|
||||
Dis project don adopt di [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/?WT.mc_id=academic-77807-sagibbon).
|
||||
|
||||
Resources:
|
||||
|
||||
- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/?WT.mc_id=academic-77807-sagibbon)
|
||||
- [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/?WT.mc_id=academic-77807-sagibbon)
|
||||
- Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) wit questions or concerns
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**Disclaimer**:
|
||||
Dis document dem don translate am wit AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). Even as we dey try make am correct, abeg sabi say automated translation fit get some mistakes or error. The original document wey dem write for im own language na the main correct one. For important tori, e good make person use professional human translation. We no go fit take any blame if person no understand well or misunderstand because of dis translation.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,30 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "777400e9f0336c7ee2f9a1200a88478f",
|
||||
"translation_date": "2026-01-08T10:14:05+00:00",
|
||||
"source_file": "CONTRIBUTING.md",
|
||||
"language_code": "pcm"
|
||||
}
|
||||
-->
|
||||
# Contributing
|
||||
|
||||
Dis project dey welcome contributions and suggestions. Most contributions go require say you
|
||||
agree to one Contributor License Agreement (CLA) wey talk say you get di right to
|
||||
and really do, give us di rights to use your contribution. For more details, visit
|
||||
[https://cla.microsoft.com](https://cla.microsoft.com/?WT.mc_id=academic-77807-sagibbon).
|
||||
|
||||
When you submit one pull request, one CLA-bot go automatically check whether you need
|
||||
provide one CLA and add di correct thing for di PR (like label, comment). Just follow di
|
||||
instructions wey di bot give. You go only need do dis one time for all repositories wey dey use our CLA. Abeg also try tell us why you make dat change so we fit understand your request well.
|
||||
|
||||
Dis project don adopt di [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/?WT.mc_id=academic-77807-sagibbon).
|
||||
For more information, see di [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/?WT.mc_id=academic-77807-sagibbon)
|
||||
or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) if you get any additional questions or comments.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**Disclaimer**:
|
||||
Dis document na AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator) wey translate am. Even though we dey try make e correct, abeg sabi say automated translation fit get some mistakes or inaccuracy. The original document wey e dey for im correct language na di real correct one. If na serious matter, better make person wey sabi do human translation help you. We no go take responsibility if anybody misunderstand or misinterpret anything from dis translation.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,145 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "5cf5e1ed51455fefed4895fcc4d6ba2a",
|
||||
"translation_date": "2026-01-08T10:45:55+00:00",
|
||||
"source_file": "Git-Basics/README.md",
|
||||
"language_code": "pcm"
|
||||
}
|
||||
-->
|
||||
## Basics of GIT for web-dev beginners👶
|
||||
|
||||
|
||||
## Wetin be `Git`?
|
||||
1. Git na one kind distributed version control system.
|
||||
2. Di whole codebase and history dey available for every developer computer,
|
||||
wey dey allow easy branching and merging.
|
||||
3. Dem dey use am as Version Control System (VCS) to track changes for computer files.
|
||||
|
||||
* Distributed version control
|
||||
* E dey coordinate work between many developers
|
||||
* Who change wetin and when
|
||||
* Fit revert back anytime
|
||||
* Local & remote repos
|
||||
|
||||
## CONCEPTS OF GIT
|
||||
* E dey keep track of code history
|
||||
* E dey take "snapshots" of your files
|
||||
* Na you dey decide when to take snapshot by doing "commit"
|
||||
* You fit go any snapshot anytime
|
||||
* You fit stage files before you commit
|
||||
|
||||
### Difference Between Git & GitHub
|
||||
|
||||
| Git | GitHub |
|
||||
| ------- | ----------- |
|
||||
| Git na software | GitHub na cloud service |
|
||||
| Git dey installed locally for system | GitHub dey hosted for web |
|
||||
| Na command-line tool e be | Na graphical user interface e be |
|
||||
| Linux dey maintain Git | Microsoft dey maintain GitHub |
|
||||
| E focus on version control and code sharing | E focus on centralized source code hosting |
|
||||
| Git get open-source license | GitHub get free-tier plus pay-for-use tier |
|
||||
| Git release for 2005 | GitHub release for 2008 |
|
||||
|
||||
|
||||
## GIT Installation
|
||||
* Linux(Debian)
|
||||
`$sudo apt-get install git`
|
||||
* Linux(Fedora)
|
||||
`$sudo yum install git`
|
||||
* [Download](http://git-scm.com/download/mac) for Mac
|
||||
* [Download](http://git-scm.com/download/win) for Windows
|
||||
|
||||
|
||||
### Installation Process Steps:
|
||||
1. <img width="500" height="400" src="https://user-images.githubusercontent.com/61585443/190359823-e421b976-515a-4565-990d-2f2e4e62977a.png"/>
|
||||
2. <img width="500" height="400" src="https://user-images.githubusercontent.com/61585443/190360530-a7bfa681-47f4-4859-9b8a-4120e0cad348.png"/>
|
||||
3. <img width="500" height="400" src="https://user-images.githubusercontent.com/61585443/190360760-30db7768-19e0-4848-a99d-a6c955e041e2.png"/>
|
||||
4. <img width="500" height="400" src="https://user-images.githubusercontent.com/61585443/190360896-473e1e54-f083-4b5c-a5f0-539f70469142.png"/>
|
||||
5. <img width="500" height="400" src="https://user-images.githubusercontent.com/61585443/190361144-bc670a2b-b776-4867-9785-7b509d416fbb.png"/>
|
||||
6. And then Continue Next > Next > Next > <b>Install</b>
|
||||
7. <img width="500" height="400" src="https://user-images.githubusercontent.com/61585443/190361548-4b700d85-c7d5-4d26-90e7-e5cc3ce24311.png"/>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### After you don install, we need configure git using git bash
|
||||
1. `git config --global user.name 'YourName'`
|
||||
2. `git config --global user.email 'YourEmail'`
|
||||
___
|
||||
|
||||
|
||||
|
||||
## Git Commands
|
||||
___
|
||||
|
||||
### Getting & Creating Projects
|
||||
|
||||
| Command | Description |
|
||||
| ------- | ----------- |
|
||||
| `git init` | Start local Git repository |
|
||||
| `git clone ssh://git@github.com/[username]/[repository-name].git` | Make local copy of remote repository |
|
||||
|
||||
### Basic Snapshotting
|
||||
|
||||
| Command | Description |
|
||||
| ------- | ----------- |
|
||||
| `git status` | Check status |
|
||||
| `git add [file-name.txt]` | Add file to staging area |
|
||||
| `git add -A` | Add all new and changed files to staging area |
|
||||
| `git commit -m "[commit message]"` | Commit changes |
|
||||
| `git rm -r [file-name.txt]` | Remove file or folder |
|
||||
| `git push` | Push To Remote Repository |
|
||||
| `git pull` | Pull Latest Changes From Remote Repository |
|
||||
|
||||
### Branching & Merging
|
||||
|
||||
| Command | Description |
|
||||
| ------- | ----------- |
|
||||
| `git branch` | List branches (asterisk na current branch) |
|
||||
| `git branch -a` | List all branches (local and remote) |
|
||||
| `git branch [branch name]` | Create new branch |
|
||||
| `git branch -D [branch name]` | Delete branch |
|
||||
| `git push origin --delete [branch name]` | Delete remote branch |
|
||||
| `git checkout -b [branch name]` | Create and switch to new branch |
|
||||
| `git checkout -b [branch name] origin/[branch name]` | Clone remote branch and switch to am |
|
||||
| `git branch -m [old branch name] [new branch name]` | Rename local branch |
|
||||
| `git checkout [branch name]` | Switch to branch |
|
||||
| `git checkout -` | Switch to last checked branch |
|
||||
| `git checkout -- [file-name.txt]` | Discard changes to file |
|
||||
| `git merge [branch name]` | Merge branch into active branch |
|
||||
| `git merge [source branch] [target branch]` | Merge branch into target branch |
|
||||
| `git stash` | Stash changes for dirty working directory |
|
||||
| `git stash clear` | Remove all stashed entries |
|
||||
|
||||
### Sharing & Updating Projects
|
||||
|
||||
| Command | Description |
|
||||
| ------- | ----------- |
|
||||
| `git push origin [branch name]` | Push branch to your remote repository |
|
||||
| `git push -u origin [branch name]` | Push changes to remote and remember branch |
|
||||
| `git push` | Push changes to remote (remembered branch) |
|
||||
| `git push origin --delete [branch name]` | Delete remote branch |
|
||||
| `git pull` | Update local repo to newest commit |
|
||||
| `git pull origin [branch name]` | Pull changes from remote repository |
|
||||
| `git remote add origin ssh://git@github.com/[username]/[repository-name].git` | Add remote repository |
|
||||
| `git remote set-url origin ssh://git@github.com/[username]/[repository-name].git` | Set origin branch to SSH |
|
||||
|
||||
### Inspection & Comparison
|
||||
|
||||
| Command | Description |
|
||||
| ------- | ----------- |
|
||||
| `git log` | View changes |
|
||||
| `git log --summary` | View changes (detailed) |
|
||||
| `git log --oneline` | View changes (brief) |
|
||||
| `git diff [source branch] [target branch]` | Preview changes before merging |
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**Disclaimer**:
|
||||
Dis document na AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator) translate am. Even though we dey try make am correct, make you sabi say automated translation fit get some mistakes or no too clear. Di original document wey e dey for im correct language na di main correct source. If na serious information, better make person wey sabi do professional human translation do am. We no go take responsibility if pesin no understand well or e get wahala because of this translation.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,277 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "fea3a0fceb8ad86fd640c09cf63a2aac",
|
||||
"translation_date": "2026-01-08T10:36:02+00:00",
|
||||
"source_file": "README.md",
|
||||
"language_code": "pcm"
|
||||
}
|
||||
-->
|
||||
[](https://github.com/microsoft/Web-Dev-For-Beginners/blob/master/LICENSE)
|
||||
[](https://GitHub.com/microsoft/Web-Dev-For-Beginners/graphs/contributors/)
|
||||
[](https://GitHub.com/microsoft/Web-Dev-For-Beginners/issues/)
|
||||
[](https://GitHub.com/microsoft/Web-Dev-For-Beginners/pulls/)
|
||||
[](http://makeapullrequest.com)
|
||||
|
||||
[](https://GitHub.com/microsoft/Web-Dev-For-Beginners/watchers/)
|
||||
[](https://GitHub.com/microsoft/Web-Dev-For-Beginners/network/)
|
||||
[](https://GitHub.com/microsoft/Web-Dev-For-Beginners/stargazers/)
|
||||
|
||||
[](https://discord.gg/nTYy5BXMWG)
|
||||
|
||||
# Web Development for Beginners - A Curriculum
|
||||
|
||||
Learn di basics of web development wit our 12-week full course wey Microsoft Cloud Advocates run. Each one of di 24 lessons dey dive inside JavaScript, CSS, and HTML through hands-on projects like terrariums, browser extensions, and space games. Join quizzes, talks, and practical assignments. Improve your skills and make your knowledge stay well wit our effective project-based teaching. Start your coding journey today!
|
||||
|
||||
Join di Azure AI Foundry Discord Community
|
||||
|
||||
[](https://discord.gg/nTYy5BXMWG)
|
||||
|
||||
Follow these steps to start to use these resources:
|
||||
1. **Fork the Repository**: Click [](https://GitHub.com/microsoft/Web-Dev-For-Beginners/fork)
|
||||
2. **Clone the Repository**: `git clone https://github.com/microsoft/Web-Dev-For-Beginners.git`
|
||||
3. [**Join The Azure AI Foundry Discord and meet experts and fellow developers**](https://discord.com/invite/ByRwuEEgH4)
|
||||
|
||||
### 🌐 Multi-Language Support
|
||||
|
||||
#### Supported via GitHub Action (Automated & Always Up-to-Date)
|
||||
|
||||
<!-- CO-OP TRANSLATOR LANGUAGES TABLE START -->
|
||||
[Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](../my/README.md) | [Chinese (Simplified)](../zh/README.md) | [Chinese (Traditional, Hong Kong)](../hk/README.md) | [Chinese (Traditional, Macau)](../mo/README.md) | [Chinese (Traditional, Taiwan)](../tw/README.md) | [Croatian](../hr/README.md) | [Czech](../cs/README.md) | [Danish](../da/README.md) | [Dutch](../nl/README.md) | [Estonian](../et/README.md) | [Finnish](../fi/README.md) | [French](../fr/README.md) | [German](../de/README.md) | [Greek](../el/README.md) | [Hebrew](../he/README.md) | [Hindi](../hi/README.md) | [Hungarian](../hu/README.md) | [Indonesian](../id/README.md) | [Italian](../it/README.md) | [Japanese](../ja/README.md) | [Kannada](../kn/README.md) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/README.md) | [Malayalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigerian Pidgin](./README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../br/README.md) | [Portuguese (Portugal)](../pt/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md)
|
||||
|
||||
> **Prefer to Clone Locally?**
|
||||
|
||||
> Dis repository get 50+ language translations wey fit make di download size big well-well. To clone without di translations, use sparse checkout:
|
||||
> ```bash
|
||||
> git clone --filter=blob:none --sparse https://github.com/microsoft/Web-Dev-For-Beginners.git
|
||||
> cd Web-Dev-For-Beginners
|
||||
> git sparse-checkout set --no-cone '/*' '!translations' '!translated_images'
|
||||
> ```
|
||||
> Dis one go give you everything wey you need to complete di course wit faster download.
|
||||
<!-- CO-OP TRANSLATOR LANGUAGES TABLE END -->
|
||||
|
||||
**If you want more translations, di supported languages dey listed [here](https://github.com/Azure/co-op-translator/blob/main/getting_started/supported-languages.md)**
|
||||
|
||||
[](https://open.vscode.dev/microsoft/Web-Dev-For-Beginners)
|
||||
|
||||
#### 🧑🎓 _You be student?_
|
||||
|
||||
Visit [**Student Hub page**](https://docs.microsoft.com/learn/student-hub/?WT.mc_id=academic-77807-sagibbon) wey you go find beginner resources, Student packs and even ways to get free certificate voucher. Na dis page you suppose bookmark and dey check from time to time as we dey update content every month.
|
||||
|
||||
### 📣 Announcement - New GitHub Copilot Agent mode challenges to complete!
|
||||
|
||||
New Challenge don add, find "GitHub Copilot Agent Challenge 🚀" for most chapters. Na new challenge for you to complete wit GitHub Copilot and Agent mode. If you never use Agent mode before, e fit no be only generate text but e fit also create and edit files, run commands and more.
|
||||
|
||||
### 📣 Announcement - _New Project to build using Generative AI_
|
||||
|
||||
New AI Assistant project just add, check am out [project](./9-chat-project/README.md)
|
||||
|
||||
### 📣 Announcement - _New Curriculum_ on Generative AI for JavaScript don release
|
||||
|
||||
No miss our new Generative AI curriculum!
|
||||
|
||||
Visit [https://aka.ms/genai-js-course](https://aka.ms/genai-js-course) to start!
|
||||
|
||||

|
||||
|
||||
- Lessons wey cover from basics reach RAG.
|
||||
- Talk wit historical characters using GenAI and our companion app.
|
||||
- Fun and interesting story, you go dey time travel!
|
||||
|
||||

|
||||
|
||||
|
||||
Each lesson get assignment to complete, knowledge check and challenge to guide you inside learning topics like:
|
||||
- Prompting and prompt engineering
|
||||
- Text and image app generation
|
||||
- Search apps
|
||||
|
||||
Visit [https://aka.ms/genai-js-course](../../[https:/aka.ms/genai-js-course) to start!
|
||||
|
||||
|
||||
|
||||
## 🌱 Getting Started
|
||||
|
||||
> **Teachers**, we don [put some suggestions](for-teachers.md) on how to use dis curriculum. We go like make you give your feedback [for our discussion forum](https://github.com/microsoft/Web-Dev-For-Beginners/discussions/categories/teacher-corner)!
|
||||
|
||||
**[Learners](https://aka.ms/student-page/?WT.mc_id=academic-77807-sagibbon)**, for each lesson, start wit pre-lecture quiz, follow by reading di lecture materials, complete di activities then check your understanding wit post-lecture quiz.
|
||||
|
||||
To make your learning better, join your peers to work on di projects together! Discussions dey encouraged for our [discussion forum](https://github.com/microsoft/Web-Dev-For-Beginners/discussions) where our moderators go ready answer your questions.
|
||||
|
||||
To improve your education, we dey highly recommend make you explore [Microsoft Learn](https://learn.microsoft.com/users/wirelesslife/collections/p1ddcy5jwy0jkm?WT.mc_id=academic-77807-sagibbon) for extra study materials.
|
||||
|
||||
### 📋 Setting up your environment
|
||||
|
||||
Dis curriculum get development environment wey ready! As you start, you fit choose run di curriculum for [Codespace](https://github.com/features/codespaces/) (_browser-based, no installation needed environment_), or locally for your computer using text editor like [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon).
|
||||
|
||||
#### Create your repository
|
||||
To make e easy for you to save your work, e good make you create your own copy of dis repo. You fit do am by clicking **Use this template** button for top of di page. E go create new repository inside your GitHub account wit copy of di curriculum.
|
||||
|
||||
Follow these steps:
|
||||
1. **Fork the Repository**: Click the "Fork" button wey dey top-right corner of dis page.
|
||||
2. **Clone the Repository**: `git clone https://github.com/microsoft/Web-Dev-For-Beginners.git`
|
||||
|
||||
#### Running the curriculum in a Codespace
|
||||
|
||||
For your copy of this repository wey you create, click the **Code** button then select **Open with Codespaces**. E go create new Codespace for you to work inside.
|
||||
|
||||

|
||||
|
||||
#### Running the curriculum locally on your computer
|
||||
|
||||
To run dis curriculum locally on your computer, you go need text editor, browser and command line tool. Our first lesson, [Introduction to Programming Languages and Tools of the Trade](../../1-getting-started-lessons/1-intro-to-programming-languages), go guide you through different options for each of these tools so you fit choose the one wey best for you.
|
||||
|
||||
We recommend make you use [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon) as your editor, e get built-in [Terminal](https://code.visualstudio.com/docs/terminal/basics/?WT.mc_id=academic-77807-sagibbon). You fit download Visual Studio Code [here](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon).
|
||||
|
||||
|
||||
1. Clone your repository to your computer. You fit do am by clicking the **Code** button then copy di URL:
|
||||
|
||||
[CodeSpace](./images/createcodespace.png)
|
||||
Then, open [Terminal](https://code.visualstudio.com/docs/terminal/basics/?WT.mc_id=academic-77807-sagibbon) for inside [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon) and run dis command, change `<your-repository-url>` to di URL wey you just copy:
|
||||
|
||||
```bash
|
||||
git clone <your-repository-url>
|
||||
```
|
||||
|
||||
2. Open di folder for Visual Studio Code. You fit do dis by click **File** > **Open Folder** and choose di folder wey you just clone.
|
||||
|
||||
> Recommended Visual Studio Code extensions:
|
||||
>
|
||||
> * [Live Server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer&WT.mc_id=academic-77807-sagibbon) - to preview HTML pages inside Visual Studio Code
|
||||
> * [Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot&WT.mc_id=academic-77807-sagibbon) - to help you write code faster
|
||||
|
||||
## 📂 Every lesson get:
|
||||
|
||||
- optional sketchnote
|
||||
- optional supplemental video
|
||||
- pre-lesson warmup quiz
|
||||
- written lesson
|
||||
- for project-based lessons, step-by-step guides how to build di project
|
||||
- knowledge checks
|
||||
- challenge
|
||||
- supplemental reading
|
||||
- assignment
|
||||
- [post-lesson quiz](https://ff-quizzes.netlify.app/web/)
|
||||
|
||||
> **Note about quizzes**: All di quizzes dey inside the Quiz-app folder, 48 quizzes total wey get three questions each. Dem dey available [here](https://ff-quizzes.netlify.app/web/) quiz app fit run locally or deploy for Azure; follow the instruction inside `quiz-app` folder.
|
||||
|
||||
## 🗃️ Lessons
|
||||
|
||||
| | Project Name | Concepts Taught | Learning Objectives | Linked Lesson | Author |
|
||||
| :-: | :------------------------------------------------------: | :--------------------------------------------------------------------: | ----------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------: | :---------------------: |
|
||||
| 01 | Getting Started | Introduction to Programming and Tools of the Trade | Learn di basic tins wey dey behind most programming languages and about software wey help professional developers do dia work | [Intro to Programming Languages and Tools of the Trade](./1-getting-started-lessons/1-intro-to-programming-languages/README.md) | Jasmine |
|
||||
| 02 | Getting Started | Basics of GitHub, include how to work with team | How to use GitHub for your project, how to work together with others on top code base | [Intro to GitHub](./1-getting-started-lessons/2-github-basics/README.md) | Floor |
|
||||
| 03 | Getting Started | Accessibility | Learn the basics of web accessibility | [Accessibility Fundamentals](./1-getting-started-lessons/3-accessibility/README.md) | Christopher |
|
||||
| 04 | JS Basics | JavaScript Data Types | The basics of JavaScript data types | [Data Types](./2-js-basics/1-data-types/README.md) | Jasmine |
|
||||
| 05 | JS Basics | Functions and Methods | Learn about functions and methods to manage how application logic flow go | [Functions and Methods](./2-js-basics/2-functions-methods/README.md) | Jasmine and Christopher |
|
||||
| 06 | JS Basics | Making Decisions with JS | Learn how to create conditions inside your code using decision-making methods | [Making Decisions](./2-js-basics/3-making-decisions/README.md) | Jasmine |
|
||||
| 07 | JS Basics | Arrays and Loops | Work with data using arrays and loops for JavaScript | [Arrays and Loops](./2-js-basics/4-arrays-loops/README.md) | Jasmine |
|
||||
| 08 | [Terrarium](./3-terrarium/solution/README.md) | HTML in Practice | Build di HTML to create online terrarium, focus on how to build layout | [Introduction to HTML](./3-terrarium/1-intro-to-html/README.md) | Jen |
|
||||
| 09 | [Terrarium](./3-terrarium/solution/README.md) | CSS in Practice | Build di CSS to style the online terrarium, focus on basics of CSS including how to make the page responsive | [Introduction to CSS](./3-terrarium/2-intro-to-css/README.md) | Jen |
|
||||
| 10 | [Terrarium](./3-terrarium/solution/README.md) | JavaScript Closures, DOM manipulation | Build the JavaScript to make terrarium work as drag/drop interface, focus on closures and DOM manipulation | [JavaScript Closures, DOM manipulation](./3-terrarium/3-intro-to-DOM-and-closures/README.md) | Jen |
|
||||
| 11 | [Typing Game](./4-typing-game/solution/README.md) | Build a Typing Game | Learn how to use keyboard events to direct the logic of your JavaScript app | [Event-Driven Programming](./4-typing-game/typing-game/README.md) | Christopher |
|
||||
| 12 | [Green Browser Extension](./5-browser-extension/solution/README.md) | Working with Browsers | Learn how browsers dey work, dia history, and how to begin the first elements for a browser extension | [About Browsers](./5-browser-extension/1-about-browsers/README.md) | Jen |
|
||||
| 13 | [Green Browser Extension](./5-browser-extension/solution/README.md) | Building form, call API and store variables for local storage | Build JavaScript elements for your browser extension to call API using variables inside local storage | [APIs, Forms, and Local Storage](./5-browser-extension/2-forms-browsers-local-storage/README.md) | Jen |
|
||||
| 14 | [Green Browser Extension](./5-browser-extension/solution/README.md) | Background processes for browser, web performance | Use browser background processes to manage extension's icon; learn about web performance and some optimization to improve | [Background Tasks and Performance](./5-browser-extension/3-background-tasks-and-performance/README.md) | Jen |
|
||||
| 15 | [Space Game](./6-space-game/solution/README.md) | More Advanced Game Development with JavaScript | Learn about Inheritance wey dey use both Classes and Composition plus Pub/Sub pattern, prepare to build game | [Introduction to Advanced Game Development](./6-space-game/1-introduction/README.md) | Chris |
|
||||
| 16 | [Space Game](./6-space-game/solution/README.md) | Drawing to canvas | Learn about Canvas API, wey dem use to draw things for screen | [Drawing to Canvas](./6-space-game/2-drawing-to-canvas/README.md) | Chris |
|
||||
| 17 | [Space Game](./6-space-game/solution/README.md) | Moving elements around screen | Discover how elements fit move using cartesian coordinates and Canvas API | [Moving Elements Around](./6-space-game/3-moving-elements-around/README.md) | Chris |
|
||||
| 18 | [Space Game](./6-space-game/solution/README.md) | Collision detection | Make elements collide and respond to each other using keypresses and give cooldown function to make sure game perform well | [Collision Detection](./6-space-game/4-collision-detection/README.md) | Chris |
|
||||
| 19 | [Space Game](./6-space-game/solution/README.md) | Keeping score | Do math calculations based on game's status and performance | [Keeping Score](./6-space-game/5-keeping-score/README.md) | Chris |
|
||||
| 20 | [Space Game](./6-space-game/solution/README.md) | Ending and restarting the game | Learn about how to end and restart game, include how to clean assets and reset variable values | [The Ending Condition](./6-space-game/6-end-condition/README.md) | Chris |
|
||||
| 21 | [Banking App](./7-bank-project/solution/README.md) | HTML Templates and Routes for Web App | Learn how to create base architecture of multipage website with routing and HTML templates | [HTML Templates and Routes](./7-bank-project/1-template-route/README.md) | Yohan |
|
||||
| 22 | [Banking App](./7-bank-project/solution/README.md) | Build Login and Registration Form | Learn about building forms and validation routines | [Forms](./7-bank-project/2-forms/README.md) | Yohan |
|
||||
| 23 | [Banking App](./7-bank-project/solution/README.md) | Methods of Fetching and Using Data | How data flow inside your app and outside, how to fetch am, store am and delete am | [Data](./7-bank-project/3-data/README.md) | Yohan |
|
||||
| 24 | [Banking App](./7-bank-project/solution/README.md) | Concepts of State Management | Learn how your app hold state and how to manage am by programming | [State Management](./7-bank-project/4-state-management/README.md) | Yohan |
|
||||
| 25 | [Browser/VScode Code](../../8-code-editor) | Working with VScode | Learn how to use code editor | [Use VScode Code Editor](./8-code-editor/1-using-a-code-editor/README.md) | Chris |
|
||||
| 26 | [AI Assistants](./9-chat-project/README.md) | Working with AI | Learn how to build your own AI assistant | [AI Assistant project](./9-chat-project/README.md) | Chris |
|
||||
|
||||
## 🏫 Pedagogy
|
||||
|
||||
Our curriculum design dey based on two key teaching principles:
|
||||
* project-based learning
|
||||
* frequent quizzes
|
||||
|
||||
Di program dey teach basics of JavaScript, HTML, CSS, plus latest tools and techniques wey web developers dey use nowadays. Students go get chance to get hands-on experience by building typing game, virtual terrarium, eco-friendly browser extension, space-invader style game, and banking app for businesses. By di end of di series, students go sabi ground well well for web development.
|
||||
|
||||
> 🎓 You fit take di first few lessons for dis curriculum as [Learn Path](https://docs.microsoft.com/learn/paths/web-development-101/?WT.mc_id=academic-77807-sagibbon) for Microsoft Learn!
|
||||
|
||||
By making sure say content match projects, e make di process more enjoyable for students and e go help them remember concepts well well. We still write plenty starter lessons for JavaScript basics to introduce concepts, plus video from the "[Beginners Series to: JavaScript](https://channel9.msdn.com/Series/Beginners-Series-to-JavaScript/?WT.mc_id=academic-77807-sagibbon)" video tutorials wey some authors contribute to dis curriculum.
|
||||
|
||||
Plus, one low-stakes quiz dey before class to set student mind for learning topic, while second quiz after class make sure say dem remember more. Dis curriculum design be flexible and fun and fit be taken whole or in part. Di projects start small and dey become more complex by di end of di 12-week course.
|
||||
|
||||
Though we avoid introducing JavaScript frameworks so that focus dey on basic skills wey web developer need before dem use framework, a good next step after dis curriculum na to learn Node.js through another group of videos: "[Beginner Series to: Node.js](https://channel9.msdn.com/Series/Beginners-Series-to-Nodejs/?WT.mc_id=academic-77807-sagibbon)".
|
||||
|
||||
> Visit our [Code of Conduct](CODE_OF_CONDUCT.md) and [Contributing](CONTRIBUTING.md) guidelines. We welcome your constructive feedback!
|
||||
|
||||
## 🧭 Offline access
|
||||
|
||||
You fit run dis documentation offline by using [Docsify](https://docsify.js.org/#/). Fork dis repo, [install Docsify](https://docsify.js.org/#/quickstart) for your local machine, then for root folder of dis repo, type `docsify serve`. Website go dey for port 3000 for your localhost: `localhost:3000`.
|
||||
|
||||
## 📘 PDF
|
||||
|
||||
PDF of all lessons fit be found [here](https://microsoft.github.io/Web-Dev-For-Beginners/pdf/readme.pdf).
|
||||
|
||||
## 🎒 Other Courses
|
||||
Our team dey produce oda kurs dem! Check am out:
|
||||
|
||||
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
|
||||
### LangChain
|
||||
[](https://aka.ms/langchain4j-for-beginners)
|
||||
[](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
|
||||
|
||||
---
|
||||
|
||||
### Azure / Edge / MCP / Agents
|
||||
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
|
||||
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
|
||||
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
|
||||
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
|
||||
|
||||
---
|
||||
|
||||
### Generative AI Series
|
||||
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
|
||||
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
|
||||
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
|
||||
[-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
|
||||
|
||||
---
|
||||
|
||||
### Core Learning
|
||||
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
|
||||
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
|
||||
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
|
||||
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
|
||||
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
|
||||
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
|
||||
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
|
||||
|
||||
---
|
||||
|
||||
### Copilot Series
|
||||
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
|
||||
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
|
||||
[](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
|
||||
<!-- CO-OP TRANSLATOR OTHER COURSES END -->
|
||||
|
||||
## Getting Help
|
||||
|
||||
If you jam or get any gbege about how to build AI app dem. Join other learners and baba developers for talk about MCP. Na beta community wey dey support, questions dey welcome and knowledge dey free to share.
|
||||
|
||||
[](https://discord.gg/nTYy5BXMWG)
|
||||
|
||||
If you get product feedback or error while you dey build, waka go:
|
||||
|
||||
[](https://aka.ms/foundry/forum)
|
||||
|
||||
## License
|
||||
|
||||
This repository get MIT license. See the [LICENSE](../../LICENSE) file for more tori.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**Wetin I Go Talk**:
|
||||
Dis dokument don translate wit AI translation service wey dem call [Co-op Translator](https://github.com/Azure/co-op-translator). Even though we dey try make am correct, make you sabi say machine translate fit get mistake or no correct. Di original dokument wey dem write for im own language na di real correct one. If na serious matter, make you use professional human translator. We no go responsible if pesin no understand or understand wrong because of dis translation.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,53 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "4ecc3bf2e27983d4c780be6f26ee6228",
|
||||
"translation_date": "2026-01-08T10:34:55+00:00",
|
||||
"source_file": "SECURITY.md",
|
||||
"language_code": "pcm"
|
||||
}
|
||||
-->
|
||||
## Security
|
||||
|
||||
Microsoft dey take the security of our software products and services seriously, wey include all source code repositories wey dey managed through our GitHub organizations, wey include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/?WT.mc_id=academic-77807-sagibbon).
|
||||
|
||||
If you believe say you don find security vulnerability for any Microsoft-owned repository wey meet [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/previous-versions/tn-archive/cc751383(v=technet.10)/?WT.mc_id=academic-77807-sagibbon), abeg report am to us as we describe below.
|
||||
|
||||
## Reporting Security Issues
|
||||
|
||||
**Abeg make you no report security vulnerabilities through public GitHub issues.**
|
||||
|
||||
Instead, abeg report dem to the Microsoft Security Response Center (MSRC) for [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report/?WT.mc_id=academic-77807-sagibbon).
|
||||
|
||||
If you prefer to submit without logging in, send email go [secure@microsoft.com](mailto:secure@microsoft.com). If e possible, encrypt your message with our PGP key; abeg download am from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/msrc/pgp-key-msrc/?WT.mc_id=academic-77807-sagibbon).
|
||||
|
||||
You go get response inside 24 hours. If for any reason you no get am, abeg follow up through email make sure say we receive your original message. You fit find more information for [microsoft.com/msrc](https://www.microsoft.com/msrc/?WT.mc_id=academic-77807-sagibbon).
|
||||
|
||||
Abeg include the requested information wey dey below (as much as you fit give) to help us better understand the nature and scope of the possible issue:
|
||||
|
||||
* Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
|
||||
* Full paths of the source file(s) wey relate to the manifestation of the issue
|
||||
* The location of the affected source code (tag/branch/commit or direct URL)
|
||||
* Any special configuration wey dey required to reproduce the issue
|
||||
* Step-by-step instructions to reproduce the issue
|
||||
* Proof-of-concept or exploit code (if e possible)
|
||||
* Impact of the issue, including how attacker fit exploit the issue
|
||||
|
||||
This information go help us triage your report faster.
|
||||
|
||||
If you dey report for bug bounty, more complete reports fit make you get higher bounty award. Abeg visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty/?WT.mc_id=academic-77807-sagibbon) page make you see more details about our active programs.
|
||||
|
||||
## Preferred Languages
|
||||
|
||||
We prefer say all communications go dey English.
|
||||
|
||||
## Policy
|
||||
|
||||
Microsoft dey follow the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/msrc/cvd/?WT.mc_id=academic-77807-sagibbon).
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**Disclaimer**:
|
||||
Dis document don translate using AI translation service wey dem dey call [Co-op Translator](https://github.com/Azure/co-op-translator). Even though we try make am correct, abeg sabi say automated translation fit get some mistakes or wahala. Di original document wey original language n be di correct one. If na serious matter, better make professional human translation do am. We no go hold ourselves responsible if pesin for misunderstand or mix up tins because of dis translation.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,27 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "c9d207ff77b4bb46e46dc2b607a8ec1a",
|
||||
"translation_date": "2026-01-08T10:12:59+00:00",
|
||||
"source_file": "SUPPORT.md",
|
||||
"language_code": "pcm"
|
||||
}
|
||||
-->
|
||||
# Support
|
||||
|
||||
## How to file issues and get help
|
||||
|
||||
Dis project dey use GitHub Issues to track bugs and feature requests. Abeg try find if de issues don dey before you file new one to avoid duplicates. For new issues, file your bug or feature request as new Issue.
|
||||
|
||||
For help and questions about how to use dis project, abeg check [our contributing guidelines](CONTRIBUTING.md).
|
||||
|
||||
## Microsoft Support Policy
|
||||
|
||||
Support for dis project limited to the resources wey dem list above.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**Disclaimer**:
|
||||
Dis document na im don translate wit AI translation service wey dem dey call [Co-op Translator](https://github.com/Azure/co-op-translator). Even though we dey try make am correct, abeg sabi say automated translations fit get some mistake or error. If you want correct and serious info, abeg make you check original document wey dem write for im ogbonge language. For important mata, better make human professional translate am. We no go take any blame if person no understand or misinterpret tins because of this translation.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,23 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "ea9f0804bd62f46d9808e953ec7fc459",
|
||||
"translation_date": "2026-01-08T10:19:27+00:00",
|
||||
"source_file": "_404.md",
|
||||
"language_code": "pcm"
|
||||
}
|
||||
-->
|
||||
# Waka dey go
|
||||
|
||||
We dey work on dis page. Abeg come check am later.
|
||||
|
||||
Open an [issue](https://github.com/microsoft/Web-Dev-For-Beginners/issues/new/choose) if you get any question.
|
||||
|
||||
**[Go back home](../../../../../../..)**
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**Warning**:
|
||||
Dis document don get translation from AI translation service wey dem dey call [Co-op Translator](https://github.com/Azure/co-op-translator). Even though we dey try make everything correct, abeg sabi say sometimes automated translation fit get mistakes or no too correct. If you get the original document for dia language, na dat one be the correct source. For important matter, make you use human wey sabi do professional translation. We no go take responsibility if person no understand well or if mistake happen because of dis translation.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,36 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "3bd2f51ecf4ac9b39277cba748943793",
|
||||
"translation_date": "2026-01-08T11:38:49+00:00",
|
||||
"source_file": "docs/_navbar.md",
|
||||
"language_code": "pcm"
|
||||
}
|
||||
-->
|
||||
- Translations
|
||||
- [English (United States)](../../../docs/README)
|
||||
- [বাংলা](../../../docs/README.bn)
|
||||
- [中文(中国)](../../../docs/README.zh-cn)
|
||||
- [中文(台湾)](../../../docs/README.zh-tw)
|
||||
- [Español](../../../docs/README.es)
|
||||
- [Français](../../../docs/README.fr)
|
||||
- [Ελληνικά](../../../docs/README.el)
|
||||
- [हिन्दी](../../../docs/README.hi)
|
||||
- [Bahasa Melayu](../../../docs/README.ms)
|
||||
- [മലയാളം](../../../docs/README.ml)
|
||||
- [தமிழ்](../../../docs/README.ta)
|
||||
- [తెలుగు](../../../docs/README.te)
|
||||
- [Bahasa Indonesia](../../../docs/README.id)
|
||||
- [Italiano](../../../docs/README.it)
|
||||
- [日本語](../../../docs/README.ja)
|
||||
- [Nederlands](../../../docs/README.nl)
|
||||
- [नेपाली](../../../docs/README.np)
|
||||
- [Português](../../../docs/README.pt)
|
||||
- [Русский](../../../docs/README.ru)
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**Disclaimer**:
|
||||
Dis document dem translate am wit AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). Even though we dey try make am correct, abeg sabi say automated translation fit get mistake or wahala. Di original document wey dey dia for im correct language na im be di true one. If na serious info, make person wey sabi do correct human translation do am. We no go take any blame if pesin no understand or if dis translation cause any gbege.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,53 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "655c91b5979de46f1d70d97f0c5f1d14",
|
||||
"translation_date": "2026-01-08T11:37:22+00:00",
|
||||
"source_file": "docs/_sidebar.md",
|
||||
"language_code": "pcm"
|
||||
}
|
||||
-->
|
||||
- Introduction
|
||||
- [1](../1-getting-started-lessons/1-intro-to-programming-languages/README.md)
|
||||
- [2](../1-getting-started-lessons/2-github-basics/README.md)
|
||||
- [3](../1-getting-started-lessons/3-accessibility/README.md)
|
||||
|
||||
- JS Basics
|
||||
- [4](../2-js-basics/1-data-types/README.md)
|
||||
- [5](../2-js-basics/2-functions-methods/README.md)
|
||||
- [6](../2-js-basics/3-making-decisions/README.md)
|
||||
- [7](../2-js-basics/4-arrays-loops/README.md)
|
||||
|
||||
- HTML, CSS, JS
|
||||
- [8](../3-terrarium/1-intro-to-html/README.md)
|
||||
- [9](../3-terrarium/2-intro-to-css/README.md)
|
||||
- [10](../3-terrarium/3-intro-to-DOM-and-closures/README.md)
|
||||
|
||||
- Typing game
|
||||
- [11](../4-typing-game/typing-game/README.md)
|
||||
|
||||
- Browser Extension
|
||||
- [12](../5-browser-extension/1-about-browsers/README.md)
|
||||
- [13](../5-browser-extension/2-forms-browsers-local-storage/README.md)
|
||||
- [14](../5-browser-extension/3-background-tasks-and-performance/README.md)
|
||||
|
||||
- Space Game
|
||||
- [15](../6-space-game/1-introduction/README.md)
|
||||
- [16](../6-space-game/2-drawing-to-canvas/README.md)
|
||||
- [17](../6-space-game/3-moving-elements-around/README.md)
|
||||
- [18](../6-space-game/4-collision-detection/README.md)
|
||||
- [19](../6-space-game/5-keeping-score/README.md)
|
||||
- [20](../6-space-game/6-end-condition/README.md)
|
||||
|
||||
- Bank Project
|
||||
- [21](../7-bank-project/1-template-route/README.md)
|
||||
- [22](../7-bank-project/2-forms/README.md)
|
||||
- [23](../7-bank-project/3-data/README.md)
|
||||
- [24](../7-bank-project/4-state-management/README.md)
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**Disclaimer**:
|
||||
Dis dokument don translate wit AI translation service wey dem dey call [Co-op Translator](https://github.com/Azure/co-op-translator). Even though we dey try make everything correct, abeg sabi say automated translation fit get some kan error or e no too correct. Di original dokument wey dem write for im own language na di real correct source. For important matter dem, e better make professional human translation do am. We no go responsible for any misunderstanding or wrong meaning wey fit show because of dis translation.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,67 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "0494be70ad7fadd13a8c3d549c23e355",
|
||||
"translation_date": "2026-01-08T11:40:47+00:00",
|
||||
"source_file": "lesson-template/README.md",
|
||||
"language_code": "pcm"
|
||||
}
|
||||
-->
|
||||
# [Lesson Topic]
|
||||
|
||||

|
||||
|
||||
## [Pre-lecture quiz](../../../lesson-template/quiz-url)
|
||||
|
||||
[Tok say wetin we go learn]
|
||||
|
||||
### Introduction
|
||||
|
||||
Tok wetin we go cover
|
||||
|
||||
> Notes
|
||||
|
||||
### Prerequisite
|
||||
|
||||
Which steps dem suppose don cover before dis lesson?
|
||||
|
||||
### Preparation
|
||||
|
||||
Steps to take before you start dis lesson
|
||||
|
||||
---
|
||||
|
||||
[Step through content in blocks]
|
||||
|
||||
## [Topic 1]
|
||||
|
||||
### Task:
|
||||
|
||||
Make una work together make una dey improve your codebase small small to fit build the project with shared code:
|
||||
|
||||
```html
|
||||
code blocks
|
||||
```
|
||||
|
||||
✅ Knowledge Check - use dis time to test students knowledge with open questions
|
||||
|
||||
## [Topic 2]
|
||||
|
||||
## [Topic 3]
|
||||
|
||||
🚀 Challenge: Add one challenge make students work on am together for class to improve the project
|
||||
|
||||
Optional: add screenshot of the finished lesson UI if e make sense
|
||||
|
||||
## [Post-lecture quiz](../../../lesson-template/quiz-url)
|
||||
|
||||
## Review & Self Study
|
||||
|
||||
**Assignment Due [MM/YY]**: [Assignment Name](assignment.md)
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**Disclaimer**:
|
||||
Dis document na AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator) wey translate am. Even though we dey try make am correct, abeg sabi say automated translation fit get some mistakes or no too correct. The original document wey e for im own language still be di real source. If na serious matter, make you use professional human translation. We no go responsible for any wahala or misinterpretation wey fit happen from using dis translation.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,25 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "b5f62ec256c7e43e771f0d3b4e1a9130",
|
||||
"translation_date": "2026-01-08T11:42:01+00:00",
|
||||
"source_file": "lesson-template/assignment.md",
|
||||
"language_code": "pcm"
|
||||
}
|
||||
-->
|
||||
# [Assignment Name]
|
||||
|
||||
## Instructions
|
||||
|
||||
## Rubric
|
||||
|
||||
| Criteria | Exemplary | Adequate | Needs Improvement |
|
||||
| -------- | --------- | -------- | ----------------- |
|
||||
| | | | |
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**Disclaimer**:
|
||||
Dis document na wetin AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator) help translate. Even though we try make am correct, abeg sabi say automated translations fit get some errors or wahala. Di original document wey e dey for im own language na di correct one to trust. If na serious matter, better make person wey sabi human translation do am. We no go take responsibility if person mis-understand or mis-interpret because of dis translation.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,52 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "ff47271e53637b2ba6ba72ad2b70f6d7",
|
||||
"translation_date": "2026-01-08T11:28:22+00:00",
|
||||
"source_file": "memory-game/README.md",
|
||||
"language_code": "pcm"
|
||||
}
|
||||
-->
|
||||
Dis na [Next.js](https://nextjs.org) project wey dem bootstrapped wit [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
|
||||
|
||||
## Getting Started
|
||||
|
||||
First, run di development server:
|
||||
|
||||
```bash
|
||||
npm run dev
|
||||
# or
|
||||
yarn dev
|
||||
# or
|
||||
pnpm dev
|
||||
# or
|
||||
bun dev
|
||||
```
|
||||
|
||||
Open [http://localhost:3000](http://localhost:3000) wit your browser to see di result.
|
||||
|
||||
You fit start to edit di page by modifying `app/page.js`. Di page go auto-update as you dey edit di file.
|
||||
|
||||
Dis project dey use [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), one new font family for Vercel.
|
||||
|
||||
## Learn More
|
||||
|
||||
To learn more about Next.js, make you check di following resources:
|
||||
|
||||
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
|
||||
- [Learn Next.js](https://nextjs.org/learn) - interactive Next.js tutorial.
|
||||
|
||||
You fit also check [di Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions dey welcome!
|
||||
|
||||
## Deploy on Vercel
|
||||
|
||||
Di easiest way to deploy your Next.js app na to use di [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from di creators of Next.js.
|
||||
|
||||
Check our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**Disclaimer**:
|
||||
Dis document na AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator) wey translate am. Even though we dey try make everything correct, abeg understand say automated translations fit get mistake or no too correct. The original document wey e dey for im own language na the correct one. If na serious matter, better make human expert translate am. We no go responsible for any misunderstanding wey fit happen because of this translation.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,78 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "17b8ec8e85d99e27dcb3f73842e583be",
|
||||
"translation_date": "2026-01-08T20:22:09+00:00",
|
||||
"source_file": "1-getting-started-lessons/1-intro-to-programming-languages/assignment.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# అసైన్మెంట్: ఆధునిక వెబ్ అభివృద్ధి సాధనాలను అన్వేషించడం
|
||||
|
||||
## సూచనలు
|
||||
|
||||
వెబ్ అభివృద్ధి పరిసరాలు వెరీయస్ ప్రత్యేక సాధనాలను కలిగి ఉంటాయి, ఇవి డెవలపర్లకు అనువైనంగా అప్లికేషన్లు అభివృద్ధి, పరీక్షించడం మరియు నిర్వహణలో సహాయం చేస్తాయి. ఈ పాఠంలో పరిగణించబడని సాధనాలను పరిశీలించి అర్థం చేసుకోవడం మీ పని.
|
||||
|
||||
**మీ మిషన్:** ఈ పాఠంలో కవర్ చేయబడని **మూడు సాధనాలు** ఎంచుకోండి (ఇప్పుడు ఉన్న కోడ్ ఎడిటర్లు, బ్రౌజర్లు, లేదా కమాండ్ లైన్ సాధనాలు వలన తప్పించుకోండి). ఆధునిక వెబ్ అభివృద్ధి వర్క్ఫ్లోలలో ప్రత్యేక సమస్యలను పరిష్కరించేవి అయిన సాధనాలపై దృష్టి పెట్టండి.
|
||||
|
||||
**ప్రతి సాధన కోసం అందించవలసినవి:**
|
||||
|
||||
1. **సాధన పేరు మరియు వర్గం** (ఉదాహరణకు, "Figma - డిజైన్ సాధనం" లేదా "Jest - టెస్టింగ్ ఫ్రేమ్వర్క్")
|
||||
2. **ఉద్దేశ్యం మరియు లాభాలు** - 2-3 వాక్యాలలో వెబ్ డెవలపర్ ఎందుకు ఈ సాధనం ఉపయోగిస్తాడో, ఏ సమస్యలను పరిష్కరిస్తుందో వివరించండి
|
||||
3. **అధికారిక డాక్యుమెంటేషన్ లింక్** - సాధన అధికారిక డాక్యుమెంటేషన్ లేదా వెబ్సైట్కు లింక్ అందించండి (కేవలం ట్యుటోరియల్ సైట్లకి కాకుండా)
|
||||
4. **వాస్తవ ప్రపంచ సందర్భం** - ఈ సాధనం ఒక ప్రొఫెషనల్ అభివృద్ధి వర్క్ఫ్లోలో ఎలా ఉపయోగపడుతుందో ఒక ఉదాహరణ చూపండి
|
||||
|
||||
## సూచించిన సాధన వర్గాలు
|
||||
|
||||
ఈ వర్గాల నుండి సాధనాలను పరిశీలించండి:
|
||||
|
||||
| వర్గం | ఉదాహరణలు | అవి చేసే పనులు |
|
||||
|----------|----------|--------------|
|
||||
| **బిల్డ్ టూల్స్** | Vite, Webpack, Parcel, esbuild | త్వరిత అభివృద్ధి సర్వర్లతో ఉత్పత్తి కోడ్ను బండిల్ చేసి ఆప్టిమైజ్ చేస్తాయి |
|
||||
| **టెస్టింగ్ ఫ్రేమ్వర్క్స్** | Vitest, Jest, Cypress, Playwright | కోడ్ సరిగా పనిచేస్తుందో లేదో నిర్ధారించి, బగ్స్ను డిప్లాయ్మెంట్ ముందు పట్టుకుంటాయి |
|
||||
| **డిజైన్ టూల్స్** | Figma, Adobe XD, Penpot | మాకప్లు, ప్రోటోటైప్స్ మరియు డిజైన్ సిస్టమ్స్ను కలిసి రూపొందిస్తాయి |
|
||||
| **డిప్లాయ్మెంట్ ప్లాట్ఫామ్స్** | Netlify, Vercel, Cloudflare Pages | వెబ్సైట్లను ఆటోమాటిక్ CI/CDతో హోస్ట్ చేసి పంపిణీ చేస్తాయి |
|
||||
| **వెర్షన్ కంట్రోల్** | GitHub, GitLab, Bitbucket | కోడ్ మార్పులు, సహకారం, మరియు ప్రాజెక్ట్ వర్క్ఫ్లోలను నిర్వహిస్తాయి |
|
||||
| **CSS ఫ్రేమ్వర్క్స్** | Tailwind CSS, Bootstrap, Bulma | ముందస్తుగా తయారుచేసిన కంపోనెంట్ లైబ్రరీస్తో స్టైలింగ్ వేగవంతం చేస్తాయి |
|
||||
| **ప్యాకేజ్ మేనేజర్లు** | npm, pnpm, Yarn | కోడ్ లైబ్రరీస్ మరియు డిపెండెన్సీలను ఇన్స్టాల్ చేసి నిర్వహిస్తాయి |
|
||||
| **అక్సెసిబిలిటీ టూల్స్** | axe-core, Lighthouse, Pa11y | సమాజసేవ్ డిజైన్ మరియు WCAG అనుగుణతను పరీక్షిస్తాయి |
|
||||
| **API అభివృద్ధి** | Postman, Insomnia, Thunder Client | అభివృద్ధి సమయంలో APIలను పరీక్షించి డాక్యుమెంట్ చేస్తాయి |
|
||||
|
||||
## ఫార్మాట్ అవసరాలు
|
||||
|
||||
**ప్రతి సాధన కొరకు:**
|
||||
```
|
||||
### [Tool Name] - [Category]
|
||||
|
||||
**Purpose:** [2-3 sentences explaining why developers use this tool]
|
||||
|
||||
**Documentation:** [Official website/documentation link]
|
||||
|
||||
**Workflow Integration:** [1 sentence about how it fits into development process]
|
||||
```
|
||||
|
||||
## నాణ్యత మార్గదర్శకాలు
|
||||
|
||||
- **ప్రస్తుత సాధనాలను ఎంచుకోండి**: 2025లో చురుకైన మరియు విస్తృతంగా ఉపయోగించే సాధనాలను ఎంచుకోండి
|
||||
- **మూల్యంపై దృష్టి పెట్టండి**: సాధనం ఏమి చేస్తుందో కాకుండా, దాని ప్రత్యేక లాభాలు వివరించండి
|
||||
- **వృత్తిపరమైన సందర్భం**: వ్యక్తిగత హాబీ తత్వంతో కాకుండా అభివృద్ధి బృందాలలో ఉపయోగించే సాధనాలు పరిగణించండి
|
||||
- **వివిధ ఎంపిక**: వర్క్ఫ్లో పరిధిని చూపేందుకు వేర్వేరు వర్గాల నుండి సాధనాలు ఎంచుకోండి
|
||||
- **ఆధునిక ప్రాముఖ్యత**: ప్రస్తుత వెబ్ అభివృద్ధి ధోరణులకు మరియు ఉత్తమ ఆచారాలకు అనుగుణంగా సాధనాలను ప్రాధాన్యమివ్వండి
|
||||
|
||||
## రూబ్రిక్
|
||||
|
||||
| అద్భుతం | మంచిది | మెరుగుదల అవసరం |
|
||||
|-----------|------|-------------------|
|
||||
| **ప్రతి సాధనం ఎందుకు ఉపయోగిస్తారో మరియు ఏ సమస్యలను పరిష్కరిస్తుందో స్పష్టంగా వివరించబడింది** | **సాధనం చేసే పనిని వివరించారు కానీ దాని విలువ గురించి కొద్దిగా ఆలోచించలేదు** | **సాధనాల జాబితా ఇచ్చారు కానీ వాటి ఉద్దేశ్యం లేదా లాభాలు వివరించలేదు** |
|
||||
| **అధికారిక డాక్యుమెంటేషన్ లింకులు అందించబడ్డాయి** | **మొత్తం సుమ మీద అధికారిక లింకులు, 1-2 ట్యుటోరియల్ సైట్లతో** | **ట్యుటోరియల్ సైట్లపై ఆధారపడ్డారు, అధికారిక డాక్యుమెంటేషన్ ఎక్కువగా ఇవ్వలేదు** |
|
||||
| **ప్రస్తుత, వృత్తిపరమైన ఉపయోగంలో ఉన్న సాధనాలను వివిధ వర్గాల నుండి ఎంచుకున్నారు** | **బాగా ఎంచుకున్నారు కానీ వర్గాల వైవిధ్యం తక్కువది** | **పాతగా ఉన్న సాధనాలు లేదా ఒక్క వర్గం నుండి మాత్రమే ఎంచుకున్నారు** |
|
||||
| **సాధనాలు అభివృద్ధి వర్క్ఫ్లోలో ఎలా ఉపయోగపడతాయో అర్ధం చూపించారు** | **వృత్తి సందర్భంపై కొంత అవగాహన చూపించారు** | **వర్క్ఫ్లో సందర్భం లేకుండా సాధన ఫీచర్లపై మాత్రమే దృష్టి పెట్టారు** |
|
||||
|
||||
> 💡 **అన్వేషణ సూచన:** వెబ్ డెవలపర్ ఉద్యోగ ప్రకటనల్లో ఉన్న సాధనాలు చూడండి, ప్రముఖ డెవలపర్ సర్వేల మీద చూడండి లేదా GitHubపై విజయవంతమైన ఓపెన్ సోర్స్ ప్రాజెక్టుల డిపెండెన్సీలను పరిశీలించండి!
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**అస్పష్టత**:
|
||||
ఈ పత్రం AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము నిర్దిష్టత కోసం ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాలలో పొరపాట్లు లేదా అసమగ్రతలు ఉండవచ్చు. మౌలిక పత్రం దాని స్థానిక భాషలో అధికారిక మూలంగా పరిగణించాలి. కీలక సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేస్తాము. ఈ అనువాదం ఉపయోగం వల్ల కలిగిన ఏదైనా అవగాహన లోపం లేదా తప్పుదోవలకు మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,261 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "e6d0f456dfc22afb41bbdefeb5ec179d",
|
||||
"translation_date": "2026-01-08T19:50:51+00:00",
|
||||
"source_file": "1-getting-started-lessons/3-accessibility/assignment.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# సమగ్ర వెబ్సైట్ ప్రాప్యత ఆడిట్
|
||||
|
||||
## సూచనలు
|
||||
|
||||
ఈ అసైన్మెంట్లో, మీరు నేర్చుకున్న సూత్రాలు మరియు సాంకేతికతలను వర్తింపజేస్తూ ఒక నిజమైన వెబ్సైట్ యొక్క ప్రొఫెషనల్ స్థాయి ప్రాప్యత ఆడిట్ చేపడతారు. ఈ ప్రాక్టికల్ అనుభవం ప్రాప్యతకు సంబంధించిన అడ్డంకులు మరియు పరిష్కారాలపై మీ అవగాహనను గాఢతరం చేస్తుంది.
|
||||
|
||||
ప్రాప్యత సమస్యలుంటున్నట్లు కనబడే వెబ్సైట్ను ఎంచుకోండి — ఇది ఇప్పటికే పర్ఫెక్ట్ ఉన్న సైట్ విశ్లేషణ కన్నా ఎక్కువ నేర్పుతుంది. మంచి అభ్యర్థులు లోపల పాత వెబ్సైట్లు, క్లిష్టమైన వెబ్ అప్లికేషన్లు లేదా సంపూర్ణ మల్టిమీడియా కంటెంట్ కలిగిన साइटలు ఉంటాయి.
|
||||
|
||||
### దశ 1: వ్యూహాత్మక మాన్యువల్ మూల్యాంకనం
|
||||
|
||||
ఆటోమేటెడ్ టూల్స్కు ముందుగా, సమగ్ర మాన్యువల్ అంచనాను చేయండి. ఈ మానవ-కేంద్రిక పద్ధతి సాధారణంగా టూల్స్ కు కనిపించని సమస్యలను వెలుగులోకి తెస్తుంది మరియు వాస్తవ వినియోగదారుల అనుభవాన్ని అర్థం చేసుకోవడంలో సహాయపడుతుంది.
|
||||
|
||||
**🔍 అవసరమైన అంచనా ప్రమాణాలు:**
|
||||
|
||||
**నావిగేషన్ మరియు నిర్మాణం:**
|
||||
- మీరేమాత్రం కీబోర్డ్ (Tab, Shift+Tab, Enter, Space, Arrow keys) ఉపయోగించి మొత్తం సైట్ను నావిగేట్ చేయగలరా?
|
||||
- అన్ని ఇంటరాక్టివ్ అంశాలలో ఫోకస్ సూచికలు స్పష్టంగా కనిపిస్తున్నాయా?
|
||||
- హెడింగ్ నిర్మాణం (H1-H6) ఒక కొట్టమొత్తం విషయరహిత ప్రణాళికను సృష్టిస్తున్నదా?
|
||||
- మెయిన్ కంటెంట్కి ఎక్కే స్కిప్ లింకులు ఉన్నాయా?
|
||||
|
||||
**దృశ్య ప్రాప్యత:**
|
||||
- మొత్తం సైట్ నిండి సరిపడా రంగు వ్యత్యాసం ఉందా (సాధారణ పాఠ్యానికి కనీసం 4.5:1)?
|
||||
- ముఖ్యమైన సమాచారాన్ని చూపించడానికి సైట్ కేవలం రంగుపై ఆధారపడుతోందా?
|
||||
- అన్ని చిత్రాలకు అనుకూల ప్రత్యామ్నాయ పాఠ్యం ఉందా?
|
||||
- 200% జూమ్ చేస్తే కూడా లేఅవుట్ సక్రమంగా పని చేస్తుందా?
|
||||
|
||||
**కంటెంట్ మరియు కమ్యూనికేషన్:**
|
||||
- ఎటువంటి "ఇక్కడ క్లిక్ చేయండి" లేదా అస్పష్ట లింకుల పాఠ్యాలు ఉన్నాయా?
|
||||
- దృశ్య సంకేతాలు లేకుండా కంటెంట్ మరియు ఫంక్షనాలిటీని అర్థం చేసుకోవచ్చా?
|
||||
- ఫారమ్ ఫీల్డ్స్ సరిగ్గా లేబుల్ చేయబడ్డాయా మరియు సమూహాలుగా ఉన్నాయి?
|
||||
- లోపపు సందేశాలు స్పష్టంగా మరియు సహాయకరంగా ఉన్నాయా?
|
||||
|
||||
**ఇంటరాక్టివ్ అంశాలు:**
|
||||
- అన్ని బటన్లు మరియు ఫారమ్ నియంత్రణలు కీబోర్డ్తోనే పనిచేస్తాయా?
|
||||
- డైనమిక్ కంటెంట్ మార్పులను స్క్రీన్ రీడర్లు ప్రకటిస్తాయా?
|
||||
- మోడల్ డైలాగులు మరియు క్లిష్టమైన విడ్జెట్లకు సరైన ప్రాప్యత నమూనాలు ఉన్నాయి?
|
||||
|
||||
📝 **మీ కనుగొనలును** నిర్దిష్ట ఉదాహరణలు, స్క్రీన్షాట్లు మరియు పేజీ URLs తో నమోదు చేయండి. సమస్యలూ మరియు బాగా ఉన్న అంశాలూ రెండూ గుర్తించండి.
|
||||
|
||||
### దశ 2: సమగ్ర ఆటోమేటెడ్ టెస్టింగ్
|
||||
|
||||
ఇప్పుడీ మీరు నిర్వహించిన మాన్యువల్ ఫలితాలను పరిశీలించి, పరిశ్రమ-స్థాయి ప్రాప్యత టెస్టింగ్ టూల్స్ ఉపయోగించి విస్తరించండి. ప్రతి టూల్కు వేర్వేరు శక్తులు ఉంటాయి, కాబట్టి అనేక టూల్స్ ఉపయోగించడం ద్వారా పూర్తిగా కవరేజ్ సాధించవచ్చు.
|
||||
|
||||
**🛠️ అవసరమైన టెస్టింగ్ టూల్స్:**
|
||||
|
||||
1. **లైట్లౌస్ ప్రాప్యత ఆడిషన్** (Chrome/Edge డెవ్టూల్స్లో ఉండేది)
|
||||
- అనేక పేజీలపై ఆడిట్ నిర్వహించండి
|
||||
- నిర్దిష్ట మెట్రిక్స్ మరియు సిఫార్సులపై దృష్టి పెట్టండి
|
||||
- మీ ప్రాప్యత స్కోరు మరియు నిర్దిష్ట ఉల్లంఘనలను నమోదు చేయండి
|
||||
|
||||
2. **axe DevTools** (బ్రౌజర్ ఎక్స్టెన్షన్ - పరిశ్రమ స్థాయి)
|
||||
- లైట్లౌస్ కంటే మరింత విపులమైన అంశాల వివరాలు
|
||||
- సరిదిద్దాలికలకు నిర్దిష్ట కోడ్ ఉదాహరణలు అందిస్తుంది
|
||||
- WCAG 2.1 ప్రమాణాలపై పరీక్షలు నిర్వహిస్తుంది
|
||||
|
||||
3. **WAVE వెబ్ ప్రాప్యత మూల్యాంకకుడు** (బ్రౌజర్ ఎక్స్టెన్షన్)
|
||||
- ప్రాప్యత లక్షణాల దృశ్య ప్రతినిధి
|
||||
- పొరపాట్లు మరియు సానుకూల లక్షణాలు హైలైట్ చేస్తుంది
|
||||
- పేజీ నిర్మాణాన్ని అర్థం చేసుకోవడంలో ఉపయోగపడుతుంది
|
||||
|
||||
4. **రంగు వ్యత్యాస విశ్లేషకులు**
|
||||
- WebAIM Contrast Checker ప్రత్యేక రంగు జోడి కోసం
|
||||
- పేజీ-వ్యాప్తంగా విశ్లేషణ కోసం బ్రౌజర్ ఎక్స్టెన్షన్లు
|
||||
- WCAG AA మరియు AAA ప్రమాణాలపై పరీక్షలు
|
||||
|
||||
**🎧 నిజమైన సహాయక సాంకేతిక పరీక్షలు:**
|
||||
- **స్క్రీన్ రీడర్ టెస్టింగ్**: NVDA (విండోస్), VoiceOver (Mac), లేదా TalkBack (Android) ఉపయోగించండి
|
||||
- **కీబోర్డ్ మాత్రమే నావిగేషన్**: మీ మౌస్ను అనప్లగ్ చేసి సైట్ మొత్తం నావిగేట్ చేయండి
|
||||
- **జూమ్ టెస్టింగ్**: 200% మరియు 400% జూమ్ స్థాయిల్లో ఫంక్షనాలిటీని పరీక్షించండి
|
||||
- **వాయిస్ కంట్రోల్ టెస్టింగ్**: అందుబాటులో ఉంటే వాయిస్ నావిగేషన్ టూల్స్ ఉపయోగించండి
|
||||
|
||||
**📊 ఫలితాలను సంతులనగా నిర్వచించండి** మరియు మాస్టర్ స్ప్రెడ్షీట్ సృష్టించండి:
|
||||
- సమస్య వివరణ మరియు స్థానం
|
||||
- తీవ్రత స్థాయి (క్రిటికల్/హై/మీడియం/లో)
|
||||
- ఉల్లంఘించిన WCAG విజయ ప్రమాణాలు
|
||||
- సమస్య కనుగొన్న టూల్
|
||||
- స్క్రీన్షాట్లు, సాక్ష్యాలు
|
||||
|
||||
### దశ 3: సమగ్ర కనుగొనబడిన అంశాల డాక్మెంటేషన్
|
||||
|
||||
టెక్నికల్ సమస్యలు మరియు వాటి మానవ ప్రభావాన్ని చూపించే ప్రొఫెషనల్ ప్రాప్యత ఆడిట్ రిపోర్ట్ రూపొందించండి.
|
||||
|
||||
**📋 అవసరమైన రిపోర్ట్ విభాగాలు:**
|
||||
|
||||
1. **ఎగ్జిక్యూటివ్ సమ్మరీ** (1 పేజీ)
|
||||
- వెబ్సైట్ URL మరియు సంక్షిప్త వివరణ
|
||||
- మొత్తం ప్రాప్యత పరిపక్వత స్థాయి
|
||||
- ముంగిట 3 అత్యంత క్రిటికల్ సమస్యలు
|
||||
- వికలాంగులతో ఉన్న వినియోగదారులపై అంచనా ప్రభావం
|
||||
|
||||
2. **పద్ధతి** (½ పేజీ)
|
||||
- టెస్టింగ్ దృష్టికోణం మరియు ఉపయోగించిన టూల్స్
|
||||
- అంచనా నిర్వహించిన పేజీలు మరియు పరికరం/బ్రౌజర్ సంయోగాలు
|
||||
- ఆవలంబించిన ప్రమాణాలు (WCAG 2.1 AA)
|
||||
|
||||
3. **వिस्तృత కనుగొనికలు** (2-3 పేజీలు)
|
||||
- WCAG సూత్రాల ప్రకారం సంస్థీకృత సమస్యలు (Perceivable, Operable, Understandable, Robust)
|
||||
- స్క్రీన్షాట్లు మరియు నిర్దిష్ట ఉదాహరణలు చేర్చండి
|
||||
- కనుగొన్న సానుకూల ప్రాప్యత లక్షణాలు గుర్తించండి
|
||||
- ఆటోమేటెడ్ టూల్ ఫలితాలతో క్రాస్-రిఫరెన్స్
|
||||
|
||||
4. **వినియోగదారుల ప్రభావ అంచనా** (1 పేజీ)
|
||||
- గుర్తించిన సమస్యలు వివిధ వికలాంగులతో ఉన్న వినియోగదారులపై ఎలా ప్రభావితం చేస్తాయి
|
||||
- వాస్తవ వినియోగదారుల అనుభవాలను వివరిస్తున్న సన్నివేశాలు
|
||||
- వ్యాపార ప్రభావం (చట్టపరమైన ప్రమాదం, SEO, వినియోగదారుల జాబితా విస్తరణ)
|
||||
|
||||
**📸 సాక్ష్య సేకరణ:**
|
||||
- ప్రాప్యత ఉల్లంఘనల స్క్రీన్షాట్లు
|
||||
- సమస్యాకరమైన వినియోగదారుల ప్రవాహాల స్క్రీన్ రికార్డింగ్స్
|
||||
- టూల్ నివేదికలు (PDFలుగా భద్రపరచండి)
|
||||
- సమస్యలను చూపించే కోడ్ ఉదాహరణలు
|
||||
|
||||
### దశ 4: ప్రొఫెషనల్ సరిచేసే ప్రణాళిక
|
||||
|
||||
ప్రాప్యత సమస్యలను పరిష్కరించే వ్యూహాత్మక, ప్రాధాన్య సూచించిన ప్రణాళికను రూపొందించండి. ఇది నిజమైన వ్యాపార పరిమితులన్నం దృష్టిలో ఉంచుకునే ప్రొఫెషనల్ వెబ్ డెవలపర్ భావనను చూపుతుంది.
|
||||
|
||||
**🎯 వివరమైన మెరుగుదల సిఫార్సులు రూపొందించండి (కనీసం 10 సమస్యలు):**
|
||||
|
||||
**గుర్తించిన ప్రతి సమస్యకు, అందించండి:**
|
||||
|
||||
- **సమస్య వివరణ**: ఏమైంది, ఏ కారణం తో సమస్య ఉందో స్పష్టమైన వివరణ
|
||||
- **WCAG సూచన**: ఉల్లంఘించిన విజయ ప్రమాణం (ఉదా: "2.4.4 లింక్ ఉద్దేశం (సందర్భంలో) - స్థాయి A")
|
||||
- **వినియోగదారుల ప్రభావం**: వివిధ వికలాంగులతో ఉన్న వ్యక్తులపై ప్రభావం
|
||||
- **పరిష్కారం**: నిర్దిష్ట కోడ్ మార్పులు, రూపకల్పన సవరణలు, లేదా ప్రక్రিয়া మెరుగుదలలు
|
||||
- **ప్రాధాన్యత స్థాయి**: క్రిటికల్ (మూల సೌಲభ్యం నిలిపివేస్తుంది) / హై (గంభీర అడ్డంకి) / మిడియమ్ (ఉపయోగకర్త సమస్య) / లో (మెరుగుదల)
|
||||
- **అమలు కష్టతనము**: సమయం/సంక్లిష్టత అంచనా (త్వరిత విజయం / మధ్యస్థ ప్రయత్నం / ప్రధాన పునఃర్రూపకరణ)
|
||||
- **పరీక్ష ధృవీకరణ**: పరిష్కారం పనిచేస్తుందో ఎలా నిర్ధారించాలి
|
||||
|
||||
**ఉదాహరణ మెరుగుదల ఎంట్రీ:**
|
||||
|
||||
```
|
||||
Issue: Generic "Read more" link text appears 8 times on homepage
|
||||
WCAG Reference: 2.4.4 Link Purpose (In Context) - Level A
|
||||
User Impact: Screen reader users cannot distinguish between links when viewed in link list
|
||||
Solution: Replace with descriptive text like "Read more about sustainability initiatives"
|
||||
Priority: High (major navigation barrier)
|
||||
Effort: Low (30 minutes to update content)
|
||||
Testing: Generate link list with screen reader - each link should be meaningful standalone
|
||||
```
|
||||
|
||||
**📈 వ్యూహాత్మక అమలు దశలు:**
|
||||
|
||||
- **దశ 1 (0-2 వారాలు)**: మూల సౌలభ్యాన్ని బ్లాక్ చేసే కీలక సమస్యలు
|
||||
- **దశ 2 (1-2 నెలలు)**: మెరుగైన వినియోగదారుడి అనుభవం కోసం హై ప్రాధాన్యత సవరణలు
|
||||
- **దశ 3 (3-6 నెలలు)**: మిడియమ్ ప్రాధాన్యత మెరుగుదలలు మరియు ప్రక్రియా అభివృద్ధులు
|
||||
- **దశ 4 (నిరంతరం)**: నిరంతర పర్యవేక్షణ మరియు మెరుగుదల
|
||||
|
||||
## మూల్యాంకన రుబ్రిక్
|
||||
|
||||
మీ ప్రాప్యత ఆడిట్ ను సాంకేతిక ఖచ్చితత్వం మరియు ప్రొఫెషనల్ ప్రదర్శన రెండింటా ఆధారంగా మూల్యాంకనం చేయబడుతుంది:
|
||||
|
||||
| ప్రమాణం | అద్భుతం (90-100%) | మంచి (80-89%) | తగినంత (70-79%) | మెరుగుదల అవసరం (<70%) |
|
||||
|----------|-------------------|---------------|-------------------|------------------------|
|
||||
| **మాన్యువల్ టెస్టింగ్ లోతు** | ప్రత్యేకమైన POUR సిద్ధాంతాలన్నిటిపై సమగ్ర అంచనా, వివరమైన పరిశీలనలు, వినియోగదారుల సన్నివేశాలు | ఎక్కువ భాగం ప్రాప్యత ప్రాంతాలను మంచి కవరేజ్ తో, స్పష్టమైన కనుగొనికలు మరియు కొంత వినియోగదారు ప్రభావ విశ్లేషణ | ముఖ్యమైన ప్రాంతాలపై ప్రాథమిక అంచనా, తగిన పరిశీలనలు | పరిమిత పరీక్షలు, తక్కువ పరిశీలనలు మరియు చోటుచేసుకున్న వినియోగదారుల ప్రభావం |
|
||||
| **టూల్ వినియోగం & విశ్లేషణ** | అవసరమైన అన్ని టూల్స్ సమర్థవంతంగా ఉపయోగించి, కనుగొనికలకు క్రాస్-రిఫరెన్సింగ్, స్పష్టమైన సాక్ష్యాలు, టూల్ పరిమితులు విశ్లేషణ | ఎక్కువ టూల్స్ తో సరైన డాక్యుమెంటేషన్, కొంత క్రాస్-రిఫరెన్సింగ్, తగిన సాక్ష్యాలు | అవసరమైన టూల్స్ తో ప్రాథమిక డాక్యుమెంటేషన్ మరియు కొంత సాక్ష్యం | అత్యల్ప టూల్ వినియోగం, నెమ్మదైన డాక్యుమెంటేషన్ లేదా సాక్ష్యాలు కనుమరుగైనవి |
|
||||
| **సమస్య గుర్తింపు & వర్గీకరణ** | 15+ నిర్దిష్ట సమస్యలను WCAG సిద్ధాంతాలన్నిటి క్రింద గుర్తించడం, తీవ్రతతో సరైన వర్గీకరణ, లోతైన అవగాహన | 10-14 సమస్యల గుర్తింపు WCAG ప్రధాన భాగాలపై, మంచి వర్గీకరణ, దృఢ అవగాహన | 7-9 సమస్యలు తగిన WCAG కవరేజ్తో, ప్రాథమిక వర్గీకరణ | 7 కంటే తక్కువ సమస్యలు, పరిమిత పరిధి లేదా చెడ్డ వర్గీకరణ |
|
||||
| **పరిష్కారం నాణ్యత & సాధ్యత్వం** | 10+ వివరమైన, అమలు చేయదగిన పరిష్కారాలు, ఖచ్చిత WCAG సూచనలు, వాస్తవమైన అమలు సమయాలు, ధృవీకరణ పద్ధతులు | 8-9 మంచి పరిష్కారాలు ఎక్కువగా ఖచ్చిత సూచనలతో, మంచి అమలు వివరాలు | 6-7 ప్రాథమిక పరిష్కారాలు కొంత వివరాలతో, సాధ్యమైన విధానాలు | 6 కంటే తక్కువ పరిష్కారాలు, తక్కువ వివరాలు, అసాధ్యమైన అమలు |
|
||||
| **ప్రొఫెషనల్ కమ్యూనికేషన్** | రిపోర్ట్ అద్భుతంగా కూర్చినది, స్పష్టంగా రాయబడింది, ఎగ్జిక్యూటివ్ సమ్మరీతో, సరైన సాంకేతిక భాషను ఉపయోగించి, వ్యాపార డాక్యుమెంట్ ప్రమాణాలను అనుసరించి | బాగుంది, మంచి రచనా నాణ్యత, ఎక్కువ భాగం అవసరమైన విభాగాలు ఉన్నాయి, సరైన ధోరణి | తగినంత సవ్యంగా, అంగీకారయోగ్య రచన, ప్రాథమిక విభాగాలు | చెడు కూర్పు, అస్పష్ట రచన లేదా కీలక విభాగాలు లేకపోవడం |
|
||||
| **వాస్తవ-ప్రపంచ అన్వయము** | వ్యాపార ప్రభావం, చట్టపరమైన దృష్టికోణాలు, వినియోగదారు విభిన్నత, సాధనా సవాళ్లు అర్థం చేసుకోవడం | ప్రాక్టికల్ అన్వయంపై మంచి అవగాహన, కొంత వ్యాపార కంటెక్ట్స్తో | వాస్తవ ప్రపంచ అన్వయంపై ప్రాథమిక అవగాహన | ప్రాక్టికల్ అన్వయాలతో తక్కువ అనుసంధానం |
|
||||
|
||||
## ఆధునిక సవాలు ఎంపికలు
|
||||
|
||||
**🚀 అదనపు సవాలు కోరుకునే విద్యార్థులకోసం:**
|
||||
|
||||
- **తులనాత్మక విశ్లేషణ**: 2-3 పోటీ వెబ్సైట్లను ఆడిట్ చేసి వాటి ప్రాప్యత పరిపక్వతను పోల్చి చూడండి
|
||||
- **మొబైల్ ప్రాప్యత దృష్టి**: Android TalkBack లేదా iOS VoiceOver ఉపయోగించి మొబైల్ ప్రత్యేక పరిణామాలను లోతుగా అధ్యయనం చేయండి
|
||||
- **అంతర్జాతీయ దృష్టికోణం**: వివిధ దేశాల ప్రాప్యత ప్రమాణాలు (EN 301 549, సెక్షన్ 508, ADA) పరిశీలించి వర్తింప జేయండి
|
||||
- **ప్రాప్యత ప్రకటన సమీక్ష**: వెబ్సైట్ ఉన్న ప్రాప్యత ప్రకటనను (ఉంటే) మీ కనుగొనికలతో పరిశీలించండి
|
||||
|
||||
## సమర్పణలు
|
||||
|
||||
ప్రొఫెషనల్ స్థాయి విశ్లేషణ మరియు వాస్తవ అమలు ప్రణాళికను చూపించే సమగ్ర ప్రాప్యత ఆడిట్ రిపోర్ట్ సమర్పించండి:
|
||||
|
||||
**📄 తుది రిపోర్ట్ అవసరాలు:**
|
||||
|
||||
1. **ఎగ్జిక్యూటివ్ సమ్మరీ** (1 పేజీ)
|
||||
- వెబ్సైట్ అవలోకనం మరియు ప్రాప్యత పరిపక్వత మెరుగుదల
|
||||
- ప్రధాన కనుగొనికల సంక్షిప్తం మరియు వ్యాపార ప్రభావం
|
||||
- సిఫారసు చేసిన ప్రాధాన్యత చర్యలు
|
||||
|
||||
2. **పద్ధతి మరియు పరిధి** (1 పేజీ)
|
||||
- టెస్టింగ్ దృక్పథం, ఉపయోగించిన టూల్స్, అంచనా ప్రమాణాలు
|
||||
- అంచనా చేసిన పేజీలు/విభాగాలు, పరిమితులు
|
||||
- ప్రమాణాల అనుగుణత ఫ్రేమ్వర్క్ (WCAG 2.1 AA)
|
||||
|
||||
3. **విస్తృత కనుగొనికల రిపోర్ట్** (3-4 పేజీలు)
|
||||
- మాన్యువల్ టెస్టింగ్ గమనికలు మరియు వినియోగదారు సన్నివేశాలు
|
||||
- ఆటోమేటెడ్ టూల్ ఫలితాలు, క్రాస్-రిఫరెన్సింగ్
|
||||
- WCAG సిద్ధాంతాల ప్రకారం సమస్యలు, సాక్ష్యాలతో
|
||||
- గుర్తించిన సానుకూల ప్రాప్యత లక్షణాలు
|
||||
|
||||
4. **వ్యూహాత్మక సరిచేయు ప్రణాళిక** (3-4 పేజీలు)
|
||||
- ప్రాధాన్య అనుసారంగా మెరుగుదల సిఫార్సులు (కనీసం 10)
|
||||
- అమలు సమయరేఖా మరియు కృషి అంచనాలు
|
||||
- విజయ ప్రమాణాలు మరియు ధృవీకరణ పద్ధతులు
|
||||
- దీర్ఘకాల ప్రాప్యత నిర్వహణ వ్యూహం
|
||||
|
||||
5. **మద్దతు సాక్ష్యాలు** (అట్టాచెమెంట్లు)
|
||||
- ప్రాప్యత ఉల్లంఘనల స్క్రీన్షాట్లు మరియు టెస్టింగ్ టూల్స్
|
||||
- సమస్యలు మరియు పరిష్కారాలు చూపించే కోడ్ ఉదాహరణలు
|
||||
- టూల్ నివేదికలు మరియు ఆడిట్ సంగ్రహాలు
|
||||
- స్క్రీన్ రీడర్ పరీక్ష నోట్ల లేదా రికార్డింగ్స్
|
||||
|
||||
**📊 ఫార్మాట్ అవసరాలు:**
|
||||
- **డాక్యుమెంట్ ఫార్మాట్**: PDF (ప్రొఫెషనల్ ప్రెజెంటేషన్)
|
||||
- **పదాల సంఖ్య**: 2,500-3,500 పదాలు (అట్టాచెమెంట్లు, స్క్రీన్షాట్లు, మినహా)
|
||||
- **దృశ్య అంశాలు**: ఆThroughoutలో స్క్రీన్షాట్లు, диаграммы, ఉదాహరణలు చేర్చండి
|
||||
- **సూచనలు**: WCAG మార్గదర్శకాలు మరియు ప్రాప్యత వనరులు సరైన రీతిలో సూచించండి
|
||||
|
||||
**💡 ఉత్తమత కోసం ప్రో టిప్స్:**
|
||||
- స్థిరమైన శీర్షికలు మరియు శైలితో ప్రొఫెషనల్ రిపోర్ట్ ఫార్మాటింగ్ ఉపయోగించండి
|
||||
- సులభ నావిగేషన్ కోసం కంటెంట్ పట్టిక చేర్చండి
|
||||
- సాంకేతిక ఖచ్చితత్వం మరియు సాంఘిక దృష్టితో వ్యాపార సంబంధ భాష మధ్య సరిపోల్చుకోండి
|
||||
- సాంకేతిక అమలు మరియు వినియోగదారు ప్రభావం రెండింటినీ అర్థం చేసుకోవడాన్ని ప్రదర్శించండి
|
||||
|
||||
## శిక్షణ ఫలితాలు
|
||||
|
||||
ఈ సమగ్ర ప్రాప్యత ఆడిట్ పూర్తి చేసి, మీరు ముఖ్యమైన ప్రొఫెషనల్ నైపుణ్యాలు అభివృద్ధి చేసుకుంటారు:
|
||||
|
||||
**🎯 సాంకేతిక నైపుణ్యాలు:**
|
||||
- **ప్రాప్యత టెస్టింగ్ నైపుణ్యం**: పరిశ్రమ స్థాయి మాన్యువల్ మరియు ఆటోమేటెడ్ పరీక్షా పద్ధతుల్లో ప్రావీణ్యము
|
||||
- **WCAG వినియోగం**: వెబ్ కంటెంట్ని ప్రాప్యత మార్గదర్శకాలుగా వాస్తవ ప్రపంచ సందర్భాల్లో అన్వయించడంపై ప్రాక్టికల్ అనుభవం
|
||||
- **సహాయక సాంకేతిక అవగాహన**: స్క్రీన్ రీడర్లు మరియు కీబోర్డ్ నావిగేషన్ కొరకు ప్రాక్టికల్ అనుభవం
|
||||
- **సమస్య-పరిష్కార మ్యాపింగ్**: ప్రాప్యత అడ్డంకులను గుర్తించి, ప్రత్యేకమైన, అమలు చేయదగిన పరిష్కార వ్యూహాలు రూపొందించే సామర్ధ్యం
|
||||
|
||||
**💼 ప్రొఫెషనల్ నైపుణ్యాలు:**
|
||||
- **సాంకేతిక కమ్యూనికేషన్**: విభిన్న వాట్సోల్డర్ల కోసం ప్రొఫెషనల్ ప్రాప్యత నివేదికలు రాయడం లో అనుభవం
|
||||
- **వ్యూహాత్మక ప్రణాళిక**: వినియోగదారు ప్రభావం మరియు అమలు సాధ్యత ఆధారంగా ప్రాప్యత మెరుగుదలలను ప్రాధాన్య ఇవ్వుటలో సామర్థ్యం
|
||||
- **నాణ్యత హామీ**: అభివృద్ధి జీవనచక్రంలో భాగంగా ప్రాప్యత పరీక్షలపై అవగాహన
|
||||
- **ప్రమాద అంచనా**: ప్రాప్యత అనుగుణతలో చట్టపరమైన, వ్యాపార, నైతిక పరామర్శలపై అవగాహన
|
||||
|
||||
**🌍 సమగ్ర రూపకల్పన దృష్టికోణం:**
|
||||
- **వినియోగదారుల సహానుభూతి**: విభిన్న వినియోగదారుల అవసరాలు మరియు సహాయక సాంకేతిక పరిచయాలను లోతుగా అర్థం చేసుకోవడం
|
||||
- **సార్వత్రిక రూపకల్పన సూత్రాలు**: వికలాంగులు మాత్రమే కాదు, అందరి కి లాభదాయకమే అధిగమించే రూపకల్పన గుర్తింపు
|
||||
- **నిరంతర మెరుగుదల**: నిరంతరం ప్రాప్యత అంచన మరియు అభివృద్ధి కోసం తఱుము
|
||||
- **వక్తృత్వ నైపుణ్యాలు**: భవిష్యత్తు ప్రాజెక్ట్స్ మరియు బృందాలలో ప్రాప్యత ఉత్తమ ఆచరణలను ప్రోత్సహించే ధైర్యం
|
||||
|
||||
**🚀 కెరీర్ సిద్ధత:**
|
||||
ఈ అసైన్మెంట్ నిజ ప్రపంచ ప్రాప్యత కన్సల్టింగ్ ప్రాజెక్ట్లను ప్రతిబింబిస్తుంది, ఇది మీకు పోర్ట్ఫోలియోకి తగిన అనుభవాన్ని ఇస్తుంది, ఇది చూపిస్తుంది:
|
||||
- క్రమబద్ధమైన సమస్య పరిష్కార విధానం
|
||||
- సాంకేతిక వివరాలపైన మరియు వ్యాపార ప్రభావంపై దృష్టి
|
||||
- క్లిష్టమైన సాంకేతిక ఆలోచనల స్పష్టమైన కమ్యూనికేషన్
|
||||
- వెబ్ డెవలప్మెంట్లో చట్టపరమైన మరియు నైతిక బాధ్యతల అవగాహన
|
||||
|
||||
పూర్తి చేసిన తర్వాత, మీరు ఏ వెబ్ డెవలప్మెంట్ పాత్రలోనైనా ప్రాప్యత పథకాలకు అర్థవంతంగా తోడ్పడటానికి మరియు సమగ్ర రూపకల్పన సాధనలను ప్రోత్సహించడానికి సిద్ధంగా ఉంటారు.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**అసలు వ్యాఖ్య**:
|
||||
ఈ డాక్యుమెంట్ AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము సరైన అనువాదానికి ప్రయత్నిస్తున్నప్పటికీ, ఆటోమేటిక్ అనువాదాల్లో పొరపాట్లు లేదా లోపాలు ఉండవచ్చు. అసలైన డాక్యుమెంట్ native భాషలోనే అధికారిక మూలంగా పరిగణించబడాలి. ముఖ్యమైన సమాచారం కోసం, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వలన ఏర్పడిన ఏవైనా అనర్థాలు లేదా తప్పుదోవ పట్టుకోవడంలో మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,33 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "770d9f83dddc841c19f210dee5fe0712",
|
||||
"translation_date": "2026-01-08T11:40:03+00:00",
|
||||
"source_file": "1-getting-started-lessons/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# వెబ్ డెవలప్మెంట్ ప్రారంభం
|
||||
|
||||
ఈ పాఠ్యాంశంలో, మీరు ప్రొఫెషనల్ డెవలపర్గా మారడానికి అవసరమైన ప్రాజెక్ట్-ఆధారిత కాన్సెప్ట్లకు సంబంధించిన కాన్సెప్ట్స్ను పరిచయం చేయబడతారు.
|
||||
|
||||
### విషయాలు
|
||||
|
||||
1. [ప్రోగ్రామింగ్ భాషలు మరియు వాణిజ్య సాధనాల పరిచయం](1-intro-to-programming-languages/README.md)
|
||||
2. [GitHubకి పరిచయం](2-github-basics/README.md)
|
||||
3. [అభిజ్ఞతత యొక్క בסיסాలు](3-accessibility/README.md)
|
||||
|
||||
### క్రెడిట్స్
|
||||
|
||||
ప్రోగ్రామింగ్ భాషలు మరియు వాణిజ్య సాధనాల పరిచయం అన్నది ప్రేమతో [Jasmine Greenaway](https://twitter.com/paladique) ద్వారా రాయబడింది
|
||||
|
||||
GitHubకి పరిచయం అన్నది ప్రేమతో [Floor Drees](https://twitter.com/floordrees) ద్వారా రాయబడింది
|
||||
|
||||
అభిజ్ఞతత యొక్క בסיסాలు అన్నది ప్రేమతో [Christopher Harrison](https://twitter.com/geektrainer) ద్వారా రాయబడింది
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**హితజ్ఞాపకం**:
|
||||
ఈ డాక్యుమెంట్ను AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నిస్తున్నప్పటికీ, స్వయంచాలక అనువాదాలలో లోపాలు లేదా తప్పులు ఉండవచ్చు. అసలు డాక్యుమెంట్, దాని మాతృభాషలో ఉండేది, అధికారిక స్రోతస్గా పరిగణించాలి. కీలకమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదాన్ని సూచించబడుతుంది. ఈ అనువాదం వాడుకతో కలిగే ఏవైనా తప్పు అర్థాలు లేదా తప్పైన అర్థకాల్పనలకు మేము బాధ్యులవాదము కాదము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,103 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "6fd645e97c48cd5eb5a3d290815ec8b5",
|
||||
"translation_date": "2026-01-08T12:43:09+00:00",
|
||||
"source_file": "2-js-basics/1-data-types/assignment.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# డేటా టైప్స్ ప్రాక్టీస్: ఈ-కామర్స్ షాపింగ్ కార్ట్
|
||||
|
||||
## సూచనలు
|
||||
|
||||
మీరు ఒక ఆధునిక ఈ-కామర్స్ షాపింగ్ కార్ట్ సిస్టమ్ను నిర్మిస్తున్నారని ఊహించుకోండి. ఈ అసైన్మెంట్ వివిధ జావాస్క్రిప్ట్ డేటా టైప్స్ ఎలా కలిసి వాస్తవ ప్రపంచ అనువర్తనాలను సృష్టిస్తాయో అర్థం చేసుకోవడంలో మీకు సహాయపడుతుంది.
|
||||
|
||||
### మీ పని
|
||||
|
||||
ఒక షాపింగ్ కార్ట్ అప్లికేషన్లో మీరు జావాస్క్రిప్ట్ డేటా టైప్స్ను ఎలా ఉపయోగిస్తారని మీరు ఒక సమగ్ర విశ్లేషణ తయారు చేయాలి. ఏడు ప్రిమిటివ్ డేటా టైప్స్ మరియు ఆబ్జెక్టులలో ప్రతి ఒక్క దానికి:
|
||||
|
||||
1. **డేటా టైపు మరియు దాని ప్రయోజనాన్ని గుర్తించండి**
|
||||
2. **ఈ డేటా టైపు ప్రత్యేక షాపింగ్ కార్ట్ ఫీచర్లు కోసం ఎందుకు ఉత్తమమైనదో వివరించండి**
|
||||
3. **అధ్యయన డేటా టైపు ప్రదర్శించే వాస్తవిక కోడ్ ఉదాహరణలను ఇవ్వండి**
|
||||
4. **ఈ డేటా టైపు షాపింగ్ కార్ట్ యొక్క ఇతర భాగాలతో ఎలా పనిచేస్తుందో తెలపండి**
|
||||
|
||||
### కవర్లు కావలసిన డేటా టైప్స్
|
||||
|
||||
**ప్రిమిటివ్ డేటా టైప్స్:**
|
||||
- **String**: ఉత్పత్తి పేర్లు, వివరణలు, వినియోగదారుల సమాచారం
|
||||
- **Number**: ధరలు, పరిమాణాలు, పన్ను లెక్కింపులు
|
||||
- **Boolean**: ఐటెమ్ అందుబాటులో ఉండటం, వినియోగదారుల అభిరుచులు, కార్ట్ స్థితి
|
||||
- **Null**: ఉద్దేశ్యపూర్వకంగా ఖాళీ విలువలు (విలువ మిస్ అయిన డిస్కౌంట్ కోడ్స్ లాంటి)
|
||||
- **Undefined**: ప్రారంభం కాని విలువలు లేదా డేటా లేమి
|
||||
- **Symbol**: ప్రత్యేక గుర్తింపులు (అడ్వాన్స్డ్ వాడకం)
|
||||
- **BigInt**: భారీ ఆర్థిక లెక్కింపులు (అడ్వాన్స్డ్ వాడకం)
|
||||
|
||||
**రెఫరెన్స్ టైప్స్:**
|
||||
- **Object**: ఉత్పత్తి వివరాలు, వినియోగదారు ప్రొఫైల్లు, కార్ట్ కంటెంట్
|
||||
- **Array**: ఉత్పత్తుల జాబితా, ఆర్డర్ చరిత్ర, విభాగాలు
|
||||
|
||||
### ప్రతి డేటా టైపు కోసం ఉదాహరణ ఫార్మాట్
|
||||
|
||||
ప్రతి డేటా టైపు కోసం, మీ ప్రతిస్పందనను ఇలాగే నిర్మించండి:
|
||||
|
||||
```markdown
|
||||
## [Data Type Name]
|
||||
|
||||
**Purpose in Shopping Cart:** [Explain what this data type does]
|
||||
|
||||
**Why This Type:** [Explain why this is the best choice]
|
||||
|
||||
**Code Example:**
|
||||
```javascript
|
||||
// Your realistic code example here
|
||||
```
|
||||
|
||||
**వాస్తవ ప్రపంచ వినియోగం:** [ఇది ప్రాక్టీస్లో ఎలా పని చేస్తుందో వివరించండి]
|
||||
|
||||
**ఇంటరాక్షన్స్:** [ఈ డేటా టైపు ఇతరులతో ఎలా పనిచేస్తుందో వివరించండి]
|
||||
```
|
||||
|
||||
### Bonus Challenges
|
||||
|
||||
1. **Type Coercion**: Show an example where JavaScript automatically converts between data types in your shopping cart (e.g., string "5" + number 10)
|
||||
|
||||
2. **Data Validation**: Demonstrate how you would check if user input is the correct data type before processing
|
||||
|
||||
3. **Performance Considerations**: Explain when you might choose one data type over another for performance reasons
|
||||
|
||||
### Submission Guidelines
|
||||
|
||||
- Create a markdown document with clear headings for each data type
|
||||
- Include working JavaScript code examples
|
||||
- Use realistic e-commerce scenarios in your examples
|
||||
- Explain your reasoning clearly for beginners to understand
|
||||
- Test your code examples to ensure they work correctly
|
||||
|
||||
## Rubric
|
||||
|
||||
| Criteria | Exemplary (90-100%) | Proficient (80-89%) | Developing (70-79%) | Needs Improvement (Below 70%) |
|
||||
|----------|---------------------|---------------------|---------------------|------------------------------|
|
||||
| **Data Type Coverage** | All 7 primitive types and objects/arrays covered with detailed explanations | 6-7 data types covered with good explanations | 4-5 data types covered with basic explanations | Fewer than 4 data types or minimal explanations |
|
||||
| **Code Examples** | All examples are realistic, working, and well-commented | Most examples work and are relevant to e-commerce | Some examples work but may be generic | Code examples are incomplete or non-functional |
|
||||
| **Real-world Application** | Clearly connects each data type to practical shopping cart features | Good connection to e-commerce scenarios | Some connection to shopping cart context | Limited real-world application demonstrated |
|
||||
| **Technical Accuracy** | All technical information is correct and demonstrates deep understanding | Most technical information is accurate | Generally accurate with minor errors | Contains significant technical errors |
|
||||
| **Communication** | Explanations are clear, beginner-friendly, and well-organized | Good explanations that are mostly clear | Explanations are understandable but may lack clarity | Explanations are unclear or poorly organized |
|
||||
| **Bonus Elements** | Includes multiple bonus challenges with excellent execution | Includes one or more bonus challenges well done | Attempts bonus challenges with mixed success | No bonus challenges attempted |
|
||||
|
||||
### Learning Objectives
|
||||
|
||||
By completing this assignment, you will:
|
||||
- ✅ **Understand** the seven JavaScript primitive data types and their uses
|
||||
- ✅ **Apply** data types to real-world programming scenarios
|
||||
- ✅ **Analyze** when to choose specific data types for different purposes
|
||||
- ✅ **Create** working code examples that demonstrate data type usage
|
||||
- ✅ **Explain** technical concepts in beginner-friendly language
|
||||
- ✅ **Connect** fundamental programming concepts to practical applications
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**అస్వीकృతి**:
|
||||
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించారు. మేము ఖచ్చితత్వానికి సూచిస్తున్నప్పటికీ, స్వయంచాలక అనువాదాల్లో పొరపాట్లు లేదా తప్పులూ ఉండవచ్చు. మూల పత్రం దాని స్థానిక భాషలోనే అధికారిక మార్గదర్శకంగా పరిగణించబడాలి. ముఖ్యమైన సమాచారం కోసం తగిన నిపుణుల చేతులతో మానవ అనువాదాన్ని సూచిస్తాము. ఈ అనువాదం ఉపయోగంలో ఏర్పడిన ఏదైనా అభిప్రాయ భేదాలు లేదా తప్పుబాటులకు మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,82 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "8328f58f4593b4671656ff8f4b2edbd9",
|
||||
"translation_date": "2026-01-08T12:29:31+00:00",
|
||||
"source_file": "2-js-basics/2-functions-methods/assignment.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# ఫంక్షన్లతో సరదా
|
||||
|
||||
## సూచనలు
|
||||
|
||||
ఈ అసైన్మెంట్లో, మీరు వివిధ రకాల ఫంక్షన్లను సృష్టించడం ప్రాక్టీస్ చేస్తారు, మీరు నేర్చుకున్న జావాస్క్రిప్ట్ ఫంక్షన్లు, పరామితులు, డిఫాల్ట్ విలువలు మరియు రిటర్న్ స్టేట్మెంట్ల గురించి కాన్సెప్ట్లను బలపరిచేందుకు.
|
||||
|
||||
`functions-practice.js` అనే జావాస్క్రిప్ట్ ఫైల్ సృష్టించి, క్రింది ఫంక్షన్లను అమలు చేయండి:
|
||||
|
||||
### భాగం 1: ప్రాథమిక ఫంక్షన్లు
|
||||
1. **`sayHello` అనే ఫంక్షన్ సృష్టించండి** ఇది ఎలాంటి పరామితులు తీసుకోదు మరియు కేవలం "Hello!" ను console లో లాగ్ చేస్తుంది.
|
||||
|
||||
2. **`introduceYourself` అనే ఫంక్షన్ సృష్టించండి** ఇది `name` అనే పరామితిని తీసుకుని "Hi, my name is [name]" అనే సందేశాన్ని console లో లాగ్ చేస్తుంది.
|
||||
|
||||
### భాగం 2: డిఫాల్ట్ పరామితులతో ఫంక్షన్లు
|
||||
3. **`greetPerson` అనే ఫంక్షన్ సృష్టించండి** ఇది రెండు పరామితులు తీసుకుంటుంది: `name` (అవసరం) మరియు `greeting` (ఐచ్ఛికం, డిఫాల్ట్ "Hello"). ఈ ఫంక్షన్ "[greeting], [name]!" అని console లో లాగ్ చేస్తుంది.
|
||||
|
||||
### భాగం 3: విలువలు రిటర్న్ చేసే ఫంక్షన్లు
|
||||
4. **`addNumbers` అనే ఫంక్షన్ సృష్టించండి** ఇది రెండు పరామితులు (`num1` మరియు `num2`) తీసుకుని వాటి సరిపొత сумму ని రిటర్న్ చేస్తుంది.
|
||||
|
||||
5. **`createFullName` అనే ఫంక్షన్ సృష్టించండి** ఇది `firstName` మరియు `lastName` పరామితులను తీసుకుని పూర్తి పేరు ఒక స్ట్రింగ్గా రిటర్న్ చేస్తుంది.
|
||||
|
||||
### భాగం 4: అన్ని వాటిని కలపండి
|
||||
6. **`calculateTip` అనే ఫంక్షన్ సృష్టించండి** ఇది రెండు పరామితులు తీసుకుంటుంది: `billAmount` (అవసరం) మరియు `tipPercentage` (ఐచ్ఛికం, డిఫాల్ట్ 15). ఈ ఫంక్షన్ టిప్ మొత్తాన్ని లెక్కించి రిటర్న్ చేస్తుంది.
|
||||
|
||||
### భాగం 5: మీ ఫంక్షన్లని పరీక్షించండి
|
||||
మీ ప్రతీ ఫంక్షన్కు టెస్ట్ కాల్స్ జోడించి, ఫలితాలను `console.log()` ద్వారా ప్రదర్శించండి.
|
||||
|
||||
**ఉదాహరణ టెస్ట్ కాల్స్:**
|
||||
```javascript
|
||||
// ఇక్కడ మీ ఫంక్షన్లను పరీక్షించండి
|
||||
sayHello();
|
||||
introduceYourself("Sarah");
|
||||
greetPerson("Alex");
|
||||
greetPerson("Maria", "Hi");
|
||||
|
||||
const sum = addNumbers(5, 3);
|
||||
console.log(`The sum is: ${sum}`);
|
||||
|
||||
const fullName = createFullName("John", "Doe");
|
||||
console.log(`Full name: ${fullName}`);
|
||||
|
||||
const tip = calculateTip(50);
|
||||
console.log(`Tip for $50 bill: $${tip}`);
|
||||
```
|
||||
|
||||
## రూబ్రిక్
|
||||
|
||||
| ప్రమాణం | అత్యుత్తమం | సరిపోతుంది | మెరుగు అవసరం |
|
||||
| ------- | --------- | ---------- | -------------- |
|
||||
| **ఫంక్షన్ సృష్టి** | అన్ని 6 ఫంక్షన్లు సరైన సింటాక్స్ మరియు పేర్లు పాటిస్తూ అమలులో ఉన్నవి | 4-5 ఫంక్షన్లు సరైన సింటాక్స్తో ఉన్నాయి, అక్కడ అక్కడ చిన్న చిన్న తప్పులు ఉన్నా సరే | 3 లేదా తక్కువ ఫంక్షన్లు అమలు చేయబడ్డాయి లేదా పెద్ద సింటాక్స్ లోపాలు ఉన్నవి |
|
||||
| **పరామితులు & డిఫాల్ట్ విలువలు** | అవసరమైన, ఐచ్ఛిక పరామితులు మరియు డిఫాల్ట్ విలువలను సరైన రీతిలో ఉపయోగించటం జరిగింది | పరామితులను సరైన విధంగా ఉపయోగించడం జరిగింది కానీ డిఫాల్ట్ విలువల విషయంలో చిన్న తప్పులు ఉండవచ్చు | పరామితులు తప్పుగా లేదా లేకుండా అమలు |
|
||||
| **రిటర్న్ విలువలు** | విలువలను రిటర్న్ చేయాల్సిన ఫంక్షన్లు సరిగ్గా రిటర్న్ చేస్తున్నవి, చేయకూడినవి కేవలం చర్యలు మాత్రమే చేసేదిగా ఉన్నాయి | ఎక్కువ భాగం సరిగా ఉన్నా చెల్లని విషయాలు ఉన్నాయి | రిటర్న్ స్టేట్మెంట్లలో ప్రాముఖ్యమైన సమస్యలు |
|
||||
| **కోడ్ నాణ్యత** | పరిశుభ్రంగా, సరిగ్గా అమర్చిన కోడ్, అర్థవంతమైన వేరియబుల్ పేర్లు, సరైన ఇండెంటేషన్ | కోడ్ పనిచేస్తుంది కానీ మరింత శుభ్రంగా లేదా బాగా అమర్చాలి | కోడ్ చదవడం కష్టం లేదా అధికంగా నిర్మాణ రహితంగా ఉంది |
|
||||
| **పరీక్ష** | అన్ని ఫంక్షన్లు సరైన విధంగా పరీక్షించబడ్డాయి మరియు ఫలితాలు స్పష్టం గా ప్రదర్శించబడ్డాయి | ఎక్కువ భాగం సరైన పరీక్షలు ఉన్నవి | పరీక్ష పరిమితంగా లేదా తప్పుగా చేసినవి |
|
||||
|
||||
## బోనస్ సవాళ్లు (ఐచ్ఛికం)
|
||||
|
||||
మీరు మరింత సవాలు చేయాలనుకుంటే:
|
||||
|
||||
1. మీ ఫంక్షన్ల లో ఒకటి యొక్క ఆరో ఫంక్షన్ వెర్షన్ సృష్టించండి
|
||||
2. మరో ఫంక్షన్ను పరామితిగా తీసుకునే ఫంక్షన్ సృష్టించండి (పాఠం లోని `setTimeout` ఉదాహరణల లాంటి)
|
||||
3. మీ ఫంక్షన్లు సరైన ఇన్పుట్లను స్వీకరిస్తున్నాయా అని నిర్ధారించే ఇన్పుట్ వాలిడేషన్ జోడించండి
|
||||
|
||||
---
|
||||
|
||||
> 💡 **సూచన**: మీ బ్రౌజర్ డెవలపర్ కన్సోల్ (F12) తెరిచి, మీ `console.log()` స్టేట్మెంట్ల అవుట్పుట్ చూడడం మర్చిపోకండి!
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**విమర్శన**:
|
||||
ఈ పత్రం [Co-op Translator](https://github.com/Azure/co-op-translator) అనే AI అనువాద సేవను ఉపయోగించి అనుమతించబడింది. మేము ఖచ్చితత్వం కోసం ప్రయత్నించగా కూడా, స్వయంచాలక అనువాదాల్లో పొరపాట్లు లేదా అసత్యాలు ఉండవచ్చు. అసలు పత్రం మూల భాషలో మాత్రమే అధికారిక మూలంగా పరిగణించాలి. కీలక సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదాన్ని సంప్రదించడం ఉత్తమం. ఈ అనువాదాన్ని ఉపయోగించడం వలన కలిగే ఏ విపత్కర అర్థగర్భిత తీర్మానాలకు మేము బాధ్యత చేపడము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,120 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "ffe366b2d1f037b99fbadbe1dc81083d",
|
||||
"translation_date": "2026-01-08T12:55:07+00:00",
|
||||
"source_file": "2-js-basics/3-making-decisions/assignment.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# నిర్ణయాలు తీసుకోవడం: విద్యార్థి గ్రేడ్ ప్రాసెసర్
|
||||
|
||||
## నేర్చుకునే లక్ష్యాలు
|
||||
|
||||
ఈ అసైన్మెంట్లో, మీరు ఈ పాఠం నుండి నిర్ణయాలను తీసుకోవడంపై కొత్తగా నేర్చుకున్న కాన్సెప్ట్లను ప్రాక్టీస్ చేయబోతున్నారు ఒక ప్రోగ్రామ్ రూపొందించడం ద్వారా ఇది వివిధ గ్రేడింగ్ సిస్టమ్ల నుంచి విద్యార్థుల గ్రేడ్లను ప్రాసెస్ చేస్తుంది. మీరు `if...else` స్టేట్మెంట్లు, సరిపోలిక ఆపరేటర్లు, మరియు లాజికల్ ఆపరేటర్లను ఉపయోగించి ఎవరు తమ కోర్సులు পাশ్ అయ్యారో నిర్ణయించుకుంటారు.
|
||||
|
||||
## సవాలు
|
||||
|
||||
మీరు ఒక పాఠశాల కోసం పని చేస్తున్నారు, ఇది ఇటీవల మరొక సంస్థతో విలీనమైంది. ఇప్పుడు మీరు రెండు పూర్తిగా వేరే గ్రేడింగ్ సిస్టమ్ల నుంచి విద్యార్థుల గ్రేడ్లను ప్రాసెస్ చేయవలసి ఉంది మరియు ఎవరు পাশ్ అవుతున్నారో నిర్ణయించాలి. ఇది షరతుల లాజిక్ ప్రాక్టీస్ చేయడానికి అద్భుత అవకాశం!
|
||||
|
||||
### గ్రేడింగ్ సిస్టమ్లను అర్థం చేసుకోవడం
|
||||
|
||||
#### మొదటి గ్రేడింగ్ సిస్టమ్ (సంఖ్యల రూపంలో)
|
||||
- గ్రేడ్లు 1-5 మధ్య సంఖ్యలుగా ఉంటాయి
|
||||
- **పాస్ గ్రేడ్**: 3 మరియు అంతకంటే ఎక్కువ (3, 4, లేదా 5)
|
||||
- **ఫెయిల్ గ్రేడ్**: 3కి తక్కువ (1 లేదా 2)
|
||||
|
||||
#### రెండవ గ్రేడింగ్ సిస్టమ్ (అక్షరాల్లో)
|
||||
- గ్రేడ్లు అక్షరాలతో ఉంటాయి: `A`, `A-`, `B`, `B-`, `C`, `C-`
|
||||
- **పాస్ గ్రేడ్లు**: `A`, `A-`, `B`, `B-`, `C`, `C-` (ఎన్నీ పాస్)
|
||||
- **గమనిక**: ఈ సిస్టమ్లో `D` లేదా `F` వంటి ఫెయిల్ గ్రేడ్లు లేవు
|
||||
|
||||
### మీ పని
|
||||
|
||||
కింద ఇచ్చిన `allStudents` అనే అర్రే నుండి అన్ని విద్యార్థుల వారి గ్రేడ్లను సూచిస్తూ, వారి సంబంధిత గ్రేడింగ్ సిస్టమ్ల ప్రకారం పాస్ అయ్యే విద్యార్థులను కలిగిన కొత్త అర్రే `studentsWhoPass` ని నిర్మించండి.
|
||||
|
||||
```javascript
|
||||
let allStudents = [
|
||||
'A', // లెటర్ గ్రేడ్ - పాసింగ్
|
||||
'B-', // లెటర్ గ్రేడ్ - పాసింగ్
|
||||
1, // సంఖ్యా గ్రేడ్ - ఫెయిలింగ్
|
||||
4, // 숫자리 గ్రేడ్ - పాసింగ్
|
||||
5, // 숫자리 గ్రేడ్ - పాసింగ్
|
||||
2 // 숫자리 గ్రేడ్ - ఫెయిలింగ్
|
||||
];
|
||||
|
||||
let studentsWhoPass = [];
|
||||
```
|
||||
|
||||
### దశల వారీగా విధానం
|
||||
|
||||
1. `allStudents` అర్రేలో ప్రతి గ్రేడ్ మీద **లూప్ ఏర్పాటు** చేయండి
|
||||
2. **గ్రేడ్ రకాన్ని తనిఖీ చేయండి** (సంఖ్యా లేదా స్ట్రింగ్ అని)
|
||||
3. **సరైన గ్రేడింగ్ సిస్టమ్ నిబంధనలను వర్తింపచేయండి**:
|
||||
- సంఖ్యల కోసం: గ్రేడ్ >= 3 అని చెక్ చేయండి
|
||||
- స్ట్రింగ్ల కోసం: ఇది సరైన పాస్ అయ్యే అక్షర గ్రేడ్లలో ఉందా అని చెక్ చేయండి
|
||||
4. **పాస్ అయ్యే గ్రేడ్లను** `studentsWhoPass` అర్రేని జతచేయండి
|
||||
|
||||
### సహాయక కోడ్ సాంకేతికతలు
|
||||
|
||||
ఈ పాఠంలో నేర్చుకున్న జావాస్క్రిప్ట్ కాన్సెప్ట్లను ఉపయోగించండి:
|
||||
|
||||
- **typeof ఆపరేటర్**: `typeof grade === 'number'` అనే సంగతి చెక్ చేయడానికి ఇది ఉపయోగించండి
|
||||
- **సామాన్య సరిపోలిక ఆపరేటర్లు**: సంఖ్యా గ్రేడ్లను సరిపోల్చడానికి `>=`
|
||||
- **లాజికల్ ఆపరేటర్లు**: అనేక అక్షర గ్రేడ్ పరిస్థితులను తనిఖీ చేయడానికి `||`
|
||||
- **if...else స్టేట్మెంట్లు**: వేర్వేరు గ్రేడింగ్ సిస్టమ్లను నిర్వహించడానికి
|
||||
- **అర్రే క్రమాల పద్ధతులు**: పాస్ అయ్యే గ్రేడ్లను కొత్త అర్రేలో జత చేయడానికి `.push()`
|
||||
|
||||
### అంచనా ఫలితము
|
||||
|
||||
మీ ప్రోగ్రామ్ నడిపినపుడు, `studentsWhoPass` లో ఉండవలసినవి: `['A', 'B-', 4, 5]`
|
||||
|
||||
**ఏందుకు ఈ గ్రేడ్లు పాస్ అవుతున్నాయంటే:**
|
||||
- `'A'` మరియు `'B-'` సరైన అక్షర గ్రేడ్లు (ఈ సిస్టమ్లో అన్ని అక్షర గ్రేడ్లు పాస్)
|
||||
- `4` మరియు `5` సంఖ్యా గ్రేడ్లు >= 3
|
||||
- `1` మరియు `2` ఫెయిల్ అవుతున్నాయి ఎందుకంటే ఇవి 3కి తక్కువ సంఖ్ాళ గ్రేడ్లు
|
||||
|
||||
## మీ పరిష్కారాన్ని పరీక్షించడం
|
||||
|
||||
విభిన్న సందర్భాలలో మీ కోడ్ పరీక్షించండి:
|
||||
|
||||
```javascript
|
||||
// విభిన్న గ్రేడ్ సంయోజనాలతో పరీక్షించండి
|
||||
let testGrades1 = ['A-', 3, 'C', 1, 'B'];
|
||||
let testGrades2 = [5, 'A', 2, 'C-', 4];
|
||||
|
||||
// ఏవైనా చెల్లుబాటైన గ్రేడ్ సంయోజనాలతో మీ పరిష్కారం పనిచేయాలి
|
||||
```
|
||||
|
||||
## అదనపు సవాలు
|
||||
|
||||
బేసిక్ అసైన్మెంట్ పూర్తిచేసిన తర్వాత, ఈ విస్తరణలను ప్రయత్నించండి:
|
||||
|
||||
1. **నియమాలకు సరిపోలని గ్రేడ్లను** ధ్రువీకరించండి (ఉదాహరణకు నెగటివ్ సంఖ్యలు లేదా అమాన్య అక్షరాలు)
|
||||
2. **సంఖ్యాత్మక గణాంకాలు** చేయండి: ఎంత మంది విద్యార్థులు పాస్ అయిపోయారో మరియు ఫెయిల్ అయిపోయారో లెక్కించండి
|
||||
3. **గ్రేడ్ రూపాంతరం**: అన్ని గ్రేడ్లను ఒకే సంఖ్యా సిస్టమ్కు మార్చండి (A=5, B=4, C=3, మొదలైనవి)
|
||||
|
||||
## రుబ్రిక్
|
||||
|
||||
| ప్రమాణాలు | అద్భుతం (4) | సాధారణం (3) | అభివృద్ధి చెందుతోంది (2) | ప్రారంభం (1) |
|
||||
|----------|---------------|----------------|----------------|---------------|
|
||||
| **ఫంక్షనాలిటీ** | ప్రోగ్రామ్ రెండు సిస్టమ్ల నుండి అన్ని పాస్ అయ్యే గ్రేడ్లను సరిగా గుర్తిస్తుంది | చిన్న సమస్యలు లేదా అతి చిన్న కేసులతో ప్రోగ్రామ్ పనిచేస్తుంది | ప్రోగ్రామ్ భాగంగా పనిచేస్తోంది కానీ లాజిక్ లో లోపాలు ఉన్నాయి | ప్రోగ్రామ్ తీవ్రమైన లోపాలు కలిగి లేదా నడవట్లేదు |
|
||||
| **కోడ్ నిర్మాణం** | శుభ్రమైన, బాగా సర్దుబాటు చేసిన కోడ్ సరైన if...else లాజిక్ తో | సరైన స్ట్రక్చర్ మంచి షరతు స్టేట్మెంట్లతో | కొంత సంఖ్యలో వ్యవస్థాపనా సమస్యలతో అంగీకారయోగ్యమైన నిర్మాణం | పొరపాటు నిర్మాణం, లాజిక్ అనుసరించడం కఠినం |
|
||||
| **కాన్సెప్ట్ల వాడకం** | సరిపోలిక ఆపరేటర్లు, లాజికల్ ఆపరేటర్లు, మరియు షరతుల స్టేట్మెంట్లను సమర్థవంతంగా ఉపయోగిస్తుంది | పాఠంలో నేర్చుకున్న సాధారణ కాన్సెప్ట్లను బాగా ఉపయోగిస్తుంది | కొంత పాఠం కాన్సెప్ట్లు ఉపయోగిస్తుంది కానీ ముఖ్యాంశాలు మిస్సవుతున్నాయి | పాఠం కాన్సెప్ట్ల పరిమిత ఉపయోగం |
|
||||
| **సమస్య పరిష్కారం** | సమస్యపై స్పష్టం స్తాయిలో అర్థం చూపిస్తుంది మరియు అందమైన పరిష్కార విధానం సూచిస్తుంది | మంచి సమస్య పరిష్కారం మరియు బలమైన లాజిక్ | కొంత క్లారిటీతో సమస్య పరిష్కార విధానం | అస్పష్టం, అర్థం తెలపలేకపోతుంది |
|
||||
|
||||
## సబ్మిషన్ మార్గదర్శకాలు
|
||||
|
||||
1. **మీ కోడ్ను** ఉదాహరణలతో పూర్తిగా పరీక్షించండి
|
||||
2. **మీ లాజిక్ను** వివరించిన కామెంట్లు జోడించండి, ముఖ్యంగా షరతుల స్టేట్మెంట్ల కొరకు
|
||||
3. **ఫలితాలు** అంచనా ఫలితాలతో సరిపోలుతోందో చూడండి: `['A', 'B-', 4, 5]`
|
||||
4. **అనుకోని డేటా రకాలు లేదా ఖాళీ అర్రే లాంటివి** ఎడ్జ్ కేస్లను పరిగణలోకి తీసుకోండి
|
||||
|
||||
> 💡 **ప్రొ టిప్**: సులభంగా ప్రారంభించండి! మొదట ప్రాథమిక ఫంక్షనాలిటీని నిర్వహించండి, తర్వాత మరింత సంక్లిష్టమైన ఫీచర్లను జోడించండి. ఈ పాఠంలో నేర్చుకున్న సాధనాలతో నిర్ణయాలు తీసుకునే లాజిక్ను ప్రాక్టీస్ చేయడం ముఖ్య లక్ష్యం.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**చూసికోండి**:
|
||||
ఈ డాక్యుమెంట్ను AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ద్వారా అనువదించబడి ఉంది. మేము ఖచ్చితత్వానికి ప్రయత్నిస్తూనే ఉన్నప్పటికీ, ఆటోమేటెడ్ అనువాదాలలో పొరపాట్లు లేదా తప్పుదోవలు ఉండవచ్చు. మౌలిక భాషలోని మూల డాక్యుమెంట్ను అధికారిక ప్రామాణిక వనరుగా భావించండి. ముఖ్యమైన సమాచారానికి, తగిన నిపుణుల చేత చేసిన అనువాదాన్ని విశేషించి పరిగణించాలి. ఈ అనువాదం వాడకంవల్ల జరిగే ఏవైనా అపసమజ్ఞానాలు లేదా తప్పు అర్థాలను మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,750 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "1710a50a519a6e4a1b40a5638783018d",
|
||||
"translation_date": "2026-01-08T12:59:56+00:00",
|
||||
"source_file": "2-js-basics/4-arrays-loops/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# JavaScript ప్రాథమికాలు: శ్రేణులు మరియు పునరావృతాలు
|
||||
|
||||

|
||||
> స్కెచ్నోట్ [టొమోమీ ఇమురా](https://twitter.com/girlie_mac) ద్వారా
|
||||
|
||||
```mermaid
|
||||
journey
|
||||
title మీ అర్రేస్ & లూప్స్ సాహసము
|
||||
section అర్రే మౌలికాలు
|
||||
అర్రే లను సృష్టించడం: 5: You
|
||||
అంశాలను చేరుకోవడం: 4: You
|
||||
అర్రే పద్ధతులు: 5: You
|
||||
section లూప్ నైపుణ్యం
|
||||
ఫర్ లూప్స్: 4: You
|
||||
వైల్ లూప్స్: 5: You
|
||||
ఆధునిక సింటాక్స్: 4: You
|
||||
section డేటా ప్రాసెసింగ్
|
||||
అర్రే + లూప్స్: 5: You
|
||||
నిజజీవిత అనువర్తనాలు: 4: You
|
||||
పనితీరు ఆప్టిమైజేషన్: 5: You
|
||||
```
|
||||
## ముందు-పాఠం క్విజ్
|
||||
[మునుపటి పాఠం క్విజ్](https://ff-quizzes.netlify.app/web/quiz/13)
|
||||
|
||||
వెబ్సైట్లలో షాపింగ్ కార్ట్ వస్తువులను ఎలా ట్రాక్ చేస్తారో లేదా మీ స్నేహితుల జాబితాను ఎలా చూపిస్తారో మీరు ఎప్పుడైనా ఆలోచించారా? అటువంటి సందర్భాల్లో శ్రేణులు మరియు పునరావృతాలు ఉపయోగపడతాయి. శ్రేణులు అనేవి అనేక సమాచారం భాగాలను ఉంచే డిజిటల్ కంటైనర్లు లాగా ఉంటాయి, మరియు పునరావృతాలు ఆ డాటాను పునరావృతం లేకుండా సమర్థంగా ఉపయోగించుకోవడానికి సహాయపడతాయి.
|
||||
|
||||
ఈ రెండు సూత్రాలు కలిసి మీ ప్రోగ్రాములలో సమాచారాన్ని నిర్వహించే ప్రాధమిక నిర్మాణాన్ని ఏర్పరుస్తాయి. మీరు ప్రతి ఒక్క దశను చేతితో వ్రాయడం నుండి వేలు వెయ్యాలా లేదా వేల సంఖ్యలో అంశాలను త్వరగా ప్రాసెస్ చేయగల తెలివైన, సమర్థవంతమైన కోడ్ సృష్టించే దశకు ఎలా వెళ్ళాలో నేర్చుకుంటారు.
|
||||
|
||||
ఈ పాఠం చివరలో, మీరు కొద్ది కోడ్ లైన్లతో క్లిష్టమైన డేటా పనులను ఎలా సాధించాలో అర్థమవుతుంది. వస్తువులు మరియు పునరావృతాల పాఠాల ఈ ముఖ్యమైన భాగాలను అన్వేషిద్దాం.
|
||||
|
||||
[](https://youtube.com/watch?v=1U4qTyq02Xw "ష్రేణులు")
|
||||
|
||||
[](https://www.youtube.com/watch?v=Eeh7pxtTZ3k "పునరావృతాలు")
|
||||
|
||||
> 🎥 పై చిత్రాలను క్లిక్ చేసి ష్రేణులు మరియు పునరావృతాల గురించి వీడియోగ్రాఫ్ చూడండి.
|
||||
|
||||
> మీరు ఈ పాఠాన్ని [మైక్రోసాఫ్ట్ లెర్న్](https://docs.microsoft.com/learn/modules/web-development-101-arrays/?WT.mc_id=academic-77807-sagibbon) లోనూ తీసుకోవచ్చు!
|
||||
|
||||
```mermaid
|
||||
mindmap
|
||||
root((డేటా ప్రాసెసింగ్))
|
||||
Arrays
|
||||
Structure
|
||||
Square brackets syntax
|
||||
శూన్య-ఆధారమైన సూచిక
|
||||
డైనమిక్ సైజింగ్
|
||||
Operations
|
||||
push/pop
|
||||
shift/unshift
|
||||
indexOf/includes
|
||||
Types
|
||||
సాంఖ్యికాలు arrays
|
||||
స్ట్రింగ్స్ arrays
|
||||
మిశ్రమ రకాలు
|
||||
Loops
|
||||
For Loops
|
||||
ఆవర్తనల లెక్కింపు
|
||||
array ప్రాసెసింగ్
|
||||
ఊహించదగిన ప్రవাহం
|
||||
While Loops
|
||||
షరతు ఆధారిత
|
||||
తెలియని ఆవర్తనాలు
|
||||
యూజర్ ఇన్పుట్
|
||||
Modern Syntax
|
||||
for...of
|
||||
forEach
|
||||
ఫంక్షనల్ పద్ధతులు
|
||||
Applications
|
||||
Data Analysis
|
||||
గణాంకాలు
|
||||
ఫిల్టరింగ్
|
||||
మార్పులు
|
||||
User Interfaces
|
||||
జాబితాలు
|
||||
మెనూలు
|
||||
గ్యాలరీలు
|
||||
```
|
||||
## శ్రేణులు
|
||||
|
||||
శ్రేణులను ఒక డిజిటల్ ఫైలింగ్ కేబినెట్ లాగ భావించండి - ఒక్క ఓ షెల్ఫ్ లో ఒక్క డాక్యుమెంట్ నిల్వ చేయడానికి కాకుండా, మీరు అనేక సంబంధిత అంశాలను ఒకే, నిర్మిత కంటైనర్ లో సుధీర్ఘంగా ఉంచుకోవచ్చు. ప్రోగ్రామింగ్ దృష్టిలో, శ్రేణులు అనేది మీరు అనేక సమాచారం భాగాలను ఒక సక్రమ గూడుబిడ్డు లో నిల్వ చేయడానికి ఆప్షన్ ఇచ్చే కంటైనర్లు.
|
||||
|
||||
మీరు ఫోటో గ్యాలరీని లేదా టూ-డూ జాబితాని నిర్మిస్తున్నారో లేదా గేమ్ లో ఉన్న హై స్కోర్లను ట్రాక్ చేస్తున్నారో, శ్రేణులు డేటాను గూడబెట్టడానికి ప్రాధమిక ఆధారం ఇస్తాయి. అవి ఎలా పని చేస్తాయో చూద్దాం.
|
||||
|
||||
✅ శ్రేణులు మన చుట్టూ ఎక్కడు ఉన్నాయో చూశారా? ఉదాహరణకి సాలర్లు ప్యానెల్ శ్రేణి గురించి మీరు కొంత ఆలోచించగలరా?
|
||||
|
||||
### శ్రేణులు సృష్టించడం
|
||||
|
||||
శ్రేణిని సృష్టించడం చాలా సులభమే - కేవలం స్క్వేర్ బ్రాకెట్లను ఉపయోగించండి!
|
||||
|
||||
```javascript
|
||||
// ఖాళీ వరస - వస్తువులు కోసం ఎదురుచూస్తున్న ఖాళీ షాపింగ్ కార్ట్ మాదిరిగా
|
||||
const myArray = [];
|
||||
```
|
||||
|
||||
**ఇక్కడ ఏమి జరుగుతోంది?**
|
||||
మీరు స్క్వేర్ బ్రాకెట్ల `[]` ద్వారా ఖాళీ కంటైనర్ని సృష్టించారు. ఒక ఖాళీ గ్రంథాలయ షెల్ఫ్ లాగా ఉంది - మీరు ఇందులో ఏ పుస్తకాల్న అయినా ఉంచుకోవడానికి సిద్ధంగా ఉంది.
|
||||
|
||||
మీరు ప్రారంభంలోనే మీ శ్రేణిలో ప్రారంభ విలువలను కూడా నింపవచ్చు:
|
||||
|
||||
```javascript
|
||||
// మీ ఐస్ క్రీం షాప్ యొక్క ఫ్లేవర్ మెనూ
|
||||
const iceCreamFlavors = ["Chocolate", "Strawberry", "Vanilla", "Pistachio", "Rocky Road"];
|
||||
|
||||
// ఒక వినియోగదారుడి ప్రొఫైల్ సమాచారం (విభిన్న రకాల డేటాను కలపడం)
|
||||
const userData = ["John", 25, true, "developer"];
|
||||
|
||||
// మీ ప్రియమైన తరగతి కోసం పరీక్షా మార్కులు
|
||||
const scores = [95, 87, 92, 78, 85];
|
||||
```
|
||||
|
||||
**గమనించదగ్గ వాటి విషయం:**
|
||||
- ఒకే శ్రేణిలో మీరు పదాలు, సంఖ్యలు, నిజం/అబద్ధ విలువలన్నీ ఉంచుకోవచ్చు
|
||||
- ఒక్కో అంశాన్ని కామాతో విడగొట్టండి - ఇది సులభం!
|
||||
- శ్రేణులు సంబంధిత సమాచారాన్ని కలిసి ఉంచడానికి ఉత్తమం
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A["📦 గుణాంకాలు"] --> B["సృష్టించు [ ]"]
|
||||
A --> C["బహుళ అంశాలను నిల్వ చేయు"]
|
||||
A --> D["సూచి ద్వారా ప్రాప్తి"]
|
||||
|
||||
B --> B1["const arr = []"]
|
||||
B --> B2["const arr = [1,2,3]"]
|
||||
|
||||
C --> C1["సంఖ్యలు"]
|
||||
C --> C2["సంకేతాలు"]
|
||||
C --> C3["బూలియన్లు"]
|
||||
C --> C4["మిశ్రమ రకాలు"]
|
||||
|
||||
D --> D1["arr[0] = మొదటి"]
|
||||
D --> D2["arr[1] = రెండవది"]
|
||||
D --> D3["arr[2] = మూడవది"]
|
||||
|
||||
E["📊 గుణాంక సూచీ"] --> E1["సూచి 0: మొదటి"]
|
||||
E --> E2["సూచి 1: రెండవది"]
|
||||
E --> E3["సూచి 2: మూడవది"]
|
||||
E --> E4["సూచి n-1: చివరి"]
|
||||
|
||||
style A fill:#e3f2fd
|
||||
style B fill:#e8f5e8
|
||||
style C fill:#fff3e0
|
||||
style D fill:#f3e5f5
|
||||
style E fill:#e0f2f1
|
||||
```
|
||||
### శ్రేణి సూచికలు (Array Indexing)
|
||||
|
||||
ఇదే ఒక్క విషయం మొదటికి అసాధారణంగా అనిపించవచ్చు: శ్రేణులు తమ అంశాలను 0 నుండి నంబర్ చేస్తాయి, 1 నుండి కాదు. ఈ శూన్య ఆధారిత సూచిక విధానం కంప్యూటర్ మెమరీ పని విధానంలో మూలాలు కలిగి ఉంటుంది - ఇది తొలి రోజుల కంప్యూటర్ భాషలు, ముఖ్యంగా C భాష నుండి ప్రోగ్రామింగ్ సంప్రదాయం అయింది. శ్రేణిలో ప్రతి చోటుకు ఒక ప్రత్యేక చిరునామా నెంబరు ఉంటుంది, దీనిని **సూచిక (index)** అంటారు.
|
||||
|
||||
| సూచిక | విలువ | వివరణ |
|
||||
|-------|-------|-------------|
|
||||
| 0 | "Chocolate" | మొదటి అంశం |
|
||||
| 1 | "Strawberry" | రెండవ అంశం |
|
||||
| 2 | "Vanilla" | మూడవ అంశం |
|
||||
| 3 | "Pistachio" | నాల్గవ అంశం |
|
||||
| 4 | "Rocky Road" | ఐదవ అంశం |
|
||||
|
||||
✅ మీరు ఆశ్చర్యపోతున్నారా శ్రేణులు 0 సూచిక నుండి మొదలవుతాయని? కొన్ని ప్రోగ్రామింగ్ భాషల్లో సూచికలు 1 నుండీ మొదలవుతాయి. దీనికి సంబంధించిన ఆసక్తికర చరిత్ర మీరు [వికీపీడియాలో](https://en.wikipedia.org/wiki/Zero-based_numbering) చదవవచ్చు.
|
||||
|
||||
**శ్రేణి అంశాలను యాక్సెస్ చేయడం:**
|
||||
|
||||
```javascript
|
||||
const iceCreamFlavors = ["Chocolate", "Strawberry", "Vanilla", "Pistachio", "Rocky Road"];
|
||||
|
||||
// కోకు లోగడ నోటేషన్ ఉపయోగించి వ్యక్తిగత అంశాలను యాక్సెస్ చేయండి
|
||||
console.log(iceCreamFlavors[0]); // "చాక్లెట్" - మొదటి అంశం
|
||||
console.log(iceCreamFlavors[2]); // "వనిల్లా" - మూడవ అంశం
|
||||
console.log(iceCreamFlavors[4]); // "రోకి రోడ్" - చివరి అంశం
|
||||
```
|
||||
|
||||
**ఈ కోడ్ లో జరుగుతున్న విషయం:**
|
||||
- **స్క్వేర్ బ్రాకెట్ల సూచిక సంఖ్య ఉపయోగించి** అంశాలను యాక్సెస్ చేస్తుంది
|
||||
- **ఆ స్థానం లోని విలువను** తిరిగి ఇస్తుంది
|
||||
- 0 నుండి లెక్క ప్రారంభించి మొదటి అంశం సూచిక 0 అవుతుంది
|
||||
|
||||
**శ్రేణి అంశాలను మార్చడం:**
|
||||
|
||||
```javascript
|
||||
// ఉన్న విలువను మార్చు
|
||||
iceCreamFlavors[4] = "Butter Pecan";
|
||||
console.log(iceCreamFlavors[4]); // "బటర్ పీకాన్"
|
||||
|
||||
// చివరిలో కొత్త అంశం చేర్చండి
|
||||
iceCreamFlavors[5] = "Cookie Dough";
|
||||
console.log(iceCreamFlavors[5]); // "కూకీ డో"
|
||||
```
|
||||
|
||||
**ఈ కోడ్ లో:**
|
||||
- సూచిక 4 వద్ద ఉన్న "Rocky Road" అంశాన్ని "Butter Pecan"కి మార్చింది
|
||||
- సూచిక 5 వద్ద కొత్త అంశం "Cookie Dough"ని జోడించింది
|
||||
- ప్రస్తుతం ఉన్న పరిమితిని మించి జోడిస్తున్నప్పుడు స్వయంచాలకంగా శ్రేణి పొడవును పెంచుతుంది
|
||||
|
||||
### శ్రేణి పొడవు మరియు సాధారణ పద్ధతులు
|
||||
|
||||
శ్రేణులకు లోపల రూపొందిన గుణాలు మరియు పద్ధతులు ఉంటాయి, ఇవి డాటాతో పని చేయడాన్ని సులభతరం చేస్తాయి.
|
||||
|
||||
**శ్రేణి పొడవు తెలుసుకోవడం:**
|
||||
|
||||
```javascript
|
||||
const iceCreamFlavors = ["Chocolate", "Strawberry", "Vanilla", "Pistachio", "Rocky Road"];
|
||||
console.log(iceCreamFlavors.length); // 5
|
||||
|
||||
// అలవాటు మారుతున్నప్పుడు పొడవు స్వయంచాలకంగా నవీకరిస్తుంది
|
||||
iceCreamFlavors.push("Mint Chip");
|
||||
console.log(iceCreamFlavors.length); // 6
|
||||
```
|
||||
|
||||
**గమనించవలసిన ముఖ్యాంశాలు:**
|
||||
- శ్రేణిలో ఉన్న మొత్తం అంశాల సంఖ్యను తిరిగి ఇస్తుంది
|
||||
- అంశాలు జోడించబడితే లేదా తీసివేసితే ఆటోమేటిక్ గా నవీకరించబడుతుంది
|
||||
- పునరావృతాలకు మరియు సరైన ధృవీకరణకు ఉపయోగపడే డైనమిక్ లెక్కను ఇస్తుంది
|
||||
|
||||
**ముఖ్యమైన శ్రేణి పద్ధతులు:**
|
||||
|
||||
```javascript
|
||||
const fruits = ["apple", "banana", "orange"];
|
||||
|
||||
// అంశాలను జోడించండి
|
||||
fruits.push("grape"); // చివరకి జోడిస్తుంది: ["ఆపిల్", "బనానా", "ఆరెంజ్", "ద్రాక్ష"]
|
||||
fruits.unshift("strawberry"); // ప్రారంభంలో జోడిస్తుంది: ["స్ట్రాబెర్రీ", "ఆపిల్", "బనానా", "ఆరెంజ్", "ద్రాక్ష"]
|
||||
|
||||
// అంశాలను తొలగించండి
|
||||
const lastFruit = fruits.pop(); // "ద్రాక్ష"ని తొలగించి తిరిగి ఇస్తుంది
|
||||
const firstFruit = fruits.shift(); // "స్ట్రాబెర్రీ"ని తొలగించి తిరిగి ఇస్తుంది
|
||||
|
||||
// అంశాలను కనుగొనండి
|
||||
const index = fruits.indexOf("banana"); // 1 ను తిరిగి ఇస్తుంది ("బనానా" స్థానం)
|
||||
const hasApple = fruits.includes("apple"); // true ను తిరిగి ఇస్తుంది
|
||||
```
|
||||
|
||||
**ఈ పద్ధతుల అర్థం:**
|
||||
- `push()` (అంతే చివరలో) మరియు `unshift()` (ఆరంభంలో) ఉపయోగించి అంశాలను జోడిస్తుంది
|
||||
- `pop()` (చివర నుండి) మరియు `shift()` (ఆరంభం నుండి) ఉపయోగించి అంశాలను తొలగిస్తుంది
|
||||
- `indexOf()` తో అంశాల స్థానం తెలుసుకొంటుంది మరియు `includes()` తో ఉన్నదా కాదా దాన్ని చెక్ చేస్తుంది
|
||||
- తీసిన అంశాలు లేదా స్థానం సూచులను తిరిగి ఇస్తుంది
|
||||
|
||||
✅ మీరు ప్రయత్నించండి! మీ బ్రౌజర్ కన్సోల్ లో మీ స్వంత శ్రేణి సృష్టించి, దాన్ని నియంత్రించండి.
|
||||
|
||||
### 🧠 **శ్రేణి ప్రాథమికాలు తనిఖీ: మీ డేటాను సక్రమంగా నిర్వహించండి**
|
||||
|
||||
**మీ శ్రేణికి సంబంధించిన అర్ధాన్ని పరీక్షించండి:**
|
||||
- ఎందుకు శ్రేణులు 1 కాక 0 నుండి లెక్కను ప్రారంభిస్తాయి?
|
||||
- 5 అంశాల శ్రేణిలో అస్తిత్వం లేని సూచిక (ఉదా: `arr[100]`) ను యాక్సెస్ చేస్తే ఏమవుతుంది?
|
||||
- మీరు మూడు వాస్తవ జీవిత పరిస్థితులు చెప్పగలరా, అక్కడ శ్రేణులు ఉపయోగపడతాయి?
|
||||
|
||||
```mermaid
|
||||
stateDiagram-v2
|
||||
[*] --> EmptyArray: const arr = []
|
||||
EmptyArray --> WithItems: అంశాలు జోడించండి
|
||||
WithItems --> Accessing: సూచికలను ఉపయోగించండి
|
||||
Accessing --> Modifying: విలువలను మార్చండి
|
||||
Modifying --> Processing: పద్ధతులను ఉపయోగించండి
|
||||
|
||||
WithItems --> WithItems: push(), unshift()
|
||||
Processing --> Processing: pop(), shift()
|
||||
|
||||
note right of Accessing
|
||||
సున్నా-ఆధారిత సూచికలు
|
||||
arr[0] = మొదటి అంశం
|
||||
end note
|
||||
|
||||
note right of Processing
|
||||
అంతర్గత పద్ధతులు
|
||||
గతి విధానాలు
|
||||
end note
|
||||
```
|
||||
> **వాస్తవ ప్రపంచ అవగాహన**: ప్రోగ్రామింగ్ లో శ్రేణులు అన్ని చోట్ల ఉన్నాయి! సోషల్ మీడియా ఫీడ్లు, షాపింగ్ కార్టులు, ఫోటో గ్యాలరీలు, ప్లేలిస్ట్ పాటలు ఇలా చాలా చోట్ల ఇవే ఉన్నాయ్!
|
||||
|
||||
## పునరావృతాలు (Loops)
|
||||
|
||||
చార్ల్స్ డికెన్స్ నవలల నుండి తెలిసిన శిక్ష విధానం లో విద్యార్థులు పదాలు వరుసగా వ్రాయాల్సిన విధంగా ఉంది. ఇప్పుడు "ఈ వాక్యం 100 సార్లు వ్రాయండి" అని ఒకసారి చెప్పి వాటి ఎక్కడ చూసినా ఆ పని తక్షణమే జరిగిపోతుందని భావించండి. అదే పునరావృతాలు మీ కోడ్ కోసం చేస్తాయి.
|
||||
|
||||
పునరావృతాలు అంటే తప్పులు లేకుండా పనులను పునరావృతం చేసే తలంపు లేని సహాయకుడు లాగే. మీరు షాపింగ్ కార్ట్ లోని ప్రతి అంశాన్ని చెక్ చేయాలనుకున్నా లేక ఫోటో ఆల్బం లోని అన్ని చిత్రాలను చూపించాలనుకున్నా, పునరావృతాలు ఆ పునరావృతతను సమర్థవంతంగా నిర్వహిస్తాయి.
|
||||
|
||||
జావా స్క్రిప్ట్ వివిధ రకాల పునరావృతాలను అందిస్తుంది. వాటిని పరిశీలించి ఎప్పుడు ఉపయోగించాలో తెలుసుకుందాం.
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A["🔄 లూప్ రకాల"] --> B["ఫార్ లూప్"]
|
||||
A --> C["వైల్ లూప్"]
|
||||
A --> D["ఫర్...ఆఫ్ లూప్"]
|
||||
A --> E[" ఫర్ఈచ్ మెథడ్"]
|
||||
|
||||
B --> B1["తెలిసిన పునరావృతులు"]
|
||||
B --> B2["కౌంటర్ ఆధారిత"]
|
||||
B --> B3["for(init; condition; increment)"]
|
||||
|
||||
C --> C1["తెలియని పునరావృతులు"]
|
||||
C --> C2["నిబంధన ఆధారిత"]
|
||||
C --> C3["while(condition)"]
|
||||
|
||||
D --> D1["ఆధునిక ES6+"]
|
||||
D --> D2["అర్రే పునరావృతి"]
|
||||
D --> D3["for(item of array)"]
|
||||
|
||||
E --> E1["ఫంక్షనల్ శైలి"]
|
||||
E --> E2["అర్రే విధానం"]
|
||||
E --> E3["array.forEach(callback)"]
|
||||
|
||||
F["⏰ ఎప్పుడు ఉపయోగించాలి"] --> F1["ఫర్: లెక్కలు, సూచికలు"]
|
||||
F --> F2["వైల్: వినియోగదారు ఇన్పుట్, శోధన"]
|
||||
F --> F3["ఫర్...ఆఫ్: సరళమైన పునరావృతి"]
|
||||
F --> F4["ఫర్ఈచ్: ఫంక్షనల్ ప్రోగ్రామింగ్"]
|
||||
|
||||
style A fill:#e3f2fd
|
||||
style B fill:#e8f5e8
|
||||
style C fill:#fff3e0
|
||||
style D fill:#f3e5f5
|
||||
style E fill:#e0f2f1
|
||||
style F fill:#fce4ec
|
||||
```
|
||||
### For Loop
|
||||
|
||||
`for` లూప్ టైమర్ సెటింగ్ లాంటిది - మీరు ఒక పని ఏన్ని సార్లు జరగాలనో ముందే తెలుసు. ఇది బాగా సక్రమమైనది మరియు ఊహించదగ్గది, కనుక శ్రేణులతో పని చేస్తూ గణనలు చేయాల్సినప్పుడు ఇది అద్భుతంగా ఉంటుంది.
|
||||
|
||||
**For Loop నిర్మాణం:**
|
||||
|
||||
| భాగం | హోదా | ఉదాహరణ |
|
||||
|-----------|---------|----------|
|
||||
| **ఆరంభీకరణ** | ప్రారంభ స్థానం సెట్ చేస్తుంది | `let i = 0` |
|
||||
| **నిబంధన** | ఎప్పుడు కొనసాగించాలి | `i < 10` |
|
||||
| **పండుగ** | ఎలా నవీకరించాలి | `i++` |
|
||||
|
||||
```javascript
|
||||
// 0 నుండి 9 వరకు లెక్కించడం
|
||||
for (let i = 0; i < 10; i++) {
|
||||
console.log(`Count: ${i}`);
|
||||
}
|
||||
|
||||
// మరింత ప్రాక్టికల్ ఉదాహరణ: స్కోర్లను ప్రాసెస్ చేయడం
|
||||
const testScores = [85, 92, 78, 96, 88];
|
||||
for (let i = 0; i < testScores.length; i++) {
|
||||
console.log(`Student ${i + 1}: ${testScores[i]}%`);
|
||||
}
|
||||
```
|
||||
|
||||
**దశలవారీగా ఇది ఏమి చేస్తుందో:**
|
||||
- ప్రారంభంలో కౌంటర్ వేరియబుల్ `i` ని 0 గా ఇనిషియలైజ్ చేస్తుంది
|
||||
- ప్రతి పావతిలో ముందుగా షరతును `i < 10` చెక్ చేస్తుంది
|
||||
- షరతు నిజం అయితే కోడ్ బ్లాక్ నడుపుతుంది
|
||||
- ప్రతి పావతిలో `i++` ద్వారా `i`ని 1 పెంచుతుంది
|
||||
- షరతు అబద్ధంగా మారిపోయే (i = 10 కు చేరితే) స్టాప్ అవుతుంది
|
||||
|
||||
✅ ఈ కోడ్ ను మీ బ్రౌజర్ కన్సోల్లో నడిపి చూడండి. కౌంటర్, షరతు లేదా పునరావృతి ఎక్స్ప్రెషన్ లో చిన్న మార్పు చేస్తే ఏం జరుగుతుంది? మీరు దీన్ని వ్యతిరేక దిశలో (కౌంట్ డౌన్) నడిపించగలరా?
|
||||
|
||||
### 🗓️ **For Loop లో పట్టు తనిఖీ: నియంత్రిత పునరావృతం**
|
||||
|
||||
**మీ For loop అర్ధం పరీక్షించండి:**
|
||||
- For loop లో మూడు భాగాలు ఏవీ, వాటి ప్రతి ఒక్కటి ఏమి చేస్తుంది?
|
||||
- మీరు శ్రేణిని వెనుక టు ముందు ఎలా లూప్ చేస్తారు?
|
||||
- ఇన్క్రిమెంట్ను (`i++`) మర్చిపోతే ఏం జరుగుతుంది?
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A["🚀 ఫోర్ లూప్ ప్రారంభించండి"] --> B["ప్రారంభం: let i = 0"]
|
||||
B --> C{"నిబంధన: i < array.length?"}
|
||||
C -->|true| D["కోడ్ బ్లాక్ అమలు చేయండి"]
|
||||
D --> E["ఎక్కువ చేయండి: i++"]
|
||||
E --> C
|
||||
C -->|false| F["✅ లూప్ నుండి ఎగ్జిట్ అవ్వండి"]
|
||||
|
||||
G["📋 సాధారణ నమూనాలు"] --> G1["for(let i=0; i<n; i++)"]
|
||||
G --> G2["for(let i=n-1; i>=0; i--)"]
|
||||
G --> G3["for(let i=0; i<arr.length; i+=2)"]
|
||||
|
||||
style A fill:#e3f2fd
|
||||
style F fill:#e8f5e8
|
||||
style G fill:#fff3e0
|
||||
```
|
||||
> **లూప్ జ్ఞానం**: మీరు మీ పనిని ఎన్ని సార్లు చేయాలో మీరు ఖచ్చితంగా తెలుసుకున్న సందర్భంలో For loops మంచి ఎంపిక! శ్రేణి ప్రాసెసింగ్ లో ఇది చాలా సాధారణమైనది!
|
||||
|
||||
### While Loop
|
||||
|
||||
`while` లూప్ అంటే "ఇది జరుగుతూనే ఉండాలి..." అని చెప్పటం లాంటిది - మీరు ఇది ఎన్ని సార్లు నడుస్తుందో తెలియకపోవచ్చు, కానీ ఎప్పుడు ఆపాలనో తెలుసు. ఇది వినియోగదారుని ఇన్పుట్ కోరుతూ అనుకూల సమయంలో ఆపడం లేదా డేటాను శోధిస్తూ కావాల్సిన సందర్భంలో ఆపడం కోసం చాలా సరిపోయేది.
|
||||
|
||||
**While Loop లక్షణాలు:**
|
||||
- షరతు నిజంగానే ఉన్నంత సమయం కొనసాగుతుంది
|
||||
- కౌంటర్ వేరియబుల్స్ మాన్యువల్ గా నిర్వహించాలి
|
||||
- ప్రతి పునరావృతానికి ముందు షరతు చెక్ చేస్తుంది
|
||||
- షరతు ఎప్పుడూ మంచి అయినా అర్ధం లేకుండా అనంత లూపులు రావచ్చు
|
||||
|
||||
```javascript
|
||||
// ప్రాథమిక లెక్కింపు ఉదాహరణ
|
||||
let i = 0;
|
||||
while (i < 10) {
|
||||
console.log(`While count: ${i}`);
|
||||
i++; // పెరిగించుకోవడం మరచిపోకండి!
|
||||
}
|
||||
|
||||
// మరింత ప్రయోజనవంతమైన ఉదాహరణ: వినియోగదారుడి ఇన్పుట్ ప్రాసెసింగ్
|
||||
let userInput = "";
|
||||
let attempts = 0;
|
||||
const maxAttempts = 3;
|
||||
|
||||
while (userInput !== "quit" && attempts < maxAttempts) {
|
||||
userInput = prompt(`Enter 'quit' to exit (attempt ${attempts + 1}):`);
|
||||
attempts++;
|
||||
}
|
||||
|
||||
if (attempts >= maxAttempts) {
|
||||
console.log("Maximum attempts reached!");
|
||||
}
|
||||
```
|
||||
|
||||
**ఈ ఉదాహరణలు ఏమి చెబుతాయో:**
|
||||
- కౌంటర్ వేరియబుల్ `i`ని లూప్ బాడీ లో మాన్యువల్ గా నిర్వహిస్తుంది
|
||||
- అనంత లూపులు రాకుండా కౌంటర్ పెంచుతుంది
|
||||
- వినియోగదారుల ఇన్పుట్ మరియు ప్రయత్న పరిమితి చూపించి వ్యావహారిక ఉదాహరణ
|
||||
- ఎండ్లెస్ ఎగ్జిక్యూషన్ ని నివారించడానికి భద్రతా చర్యలు
|
||||
|
||||
### ♾️ **While Loop జ్ఞానం తనిఖీ: షరతుపై ఆధారపడి పునరావృతం**
|
||||
|
||||
**మీ While loop అర్ధం పరీక్షించండి:**
|
||||
- While loops ఉపయోగిస్తే ప్రధాన ప్రమాదం ఏమిటి?
|
||||
- మీరు ఎప్పుడు while loop ను for loop కంటే ఎంచుకుంటారు?
|
||||
- అనంత లూపులకు మీరు ఎలా నివారణ చెయ్యగలరు?
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A["🔄 While vs For"] --> B["While లూప్"]
|
||||
A --> C["For లూప్"]
|
||||
|
||||
B --> B1["తెలియని పునరావృతులు"]
|
||||
B --> B2["పరిస్థితి ఆధారిత"]
|
||||
B --> B3["వినియోగదారు ఇన్పుట్, శోధన"]
|
||||
B --> B4["⚠️ ప్రమాదం: అనంత లూప్లు"]
|
||||
|
||||
C --> C1["తెలిసిన పునరావృతులు"]
|
||||
C --> C2["కౌంటర్-ఆధారిత"]
|
||||
C --> C3["సరసరి ప్రాసెసింగ్"]
|
||||
C --> C4["✅ సురక్షితం: ఊహించదగిన ముగింపు"]
|
||||
|
||||
D["🛡️ భద్రతాపరమైన సూచనలు"] --> D1["ఎప్పుడూ పరిస్థితి వేరియబుల్ మార్చాలి"]
|
||||
D --> D2["ఎస్కేప్ పరిస్థితులు చేర్చండి"]
|
||||
D --> D3["గరిష్ఠ పునరావృతి పరిమితులు నిర్దేశించండి"]
|
||||
|
||||
style A fill:#e3f2fd
|
||||
style B fill:#fff3e0
|
||||
style C fill:#e8f5e8
|
||||
style D fill:#ffebee
|
||||
```
|
||||
> **భద్రత ముందు**: While loops శక్తివంతమైనవి కానీ సూచికను జాగ్రత్తగా నిర్వహించాలి. మీ లూప్ షరతు ఎప్పటికీ అబద్ధం అవుతుంది అని చూసుకోండి!
|
||||
|
||||
### ఆధునిక లూప్ ప్రత్యామ్నాయాలు
|
||||
|
||||
జావాస్క్రిప్ట్ ఆధునిక లూప్ వ్యాకరణాన్ని అందిస్తుంది, ఇది మీ కోడ్ ను చదవటానికి సులభం చేస్తుంది మరియు తప్పుల అవకాశాలను తగ్గిస్తుంది.
|
||||
|
||||
**For...of లూప్ (ES6+):**
|
||||
|
||||
```javascript
|
||||
const colors = ["red", "green", "blue", "yellow"];
|
||||
|
||||
// ఆధునిక దృష్టికోణం - సాఫ్టర్ మరియు భద్రతగలది
|
||||
for (const color of colors) {
|
||||
console.log(`Color: ${color}`);
|
||||
}
|
||||
|
||||
// సంప్రదాయ for లూప్తో పోల్చండి
|
||||
for (let i = 0; i < colors.length; i++) {
|
||||
console.log(`Color: ${colors[i]}`);
|
||||
}
|
||||
```
|
||||
|
||||
**for...of ప్రధాన లాభాలు:**
|
||||
- సూచిక నిర్వహణను మరియు తప్పు సంభవించే అవకాశాన్ని తొలగిస్తుంది
|
||||
- శ్రేణి అంశాలను నేరుగా పొందుతుంది
|
||||
- కోడ్ చదవదగినదిగా మారుతుంది మరియు సింటాక్స్ క్లిష్టత తగ్గుతుంది
|
||||
|
||||
**forEach పద్ధతి:**
|
||||
|
||||
```javascript
|
||||
const prices = [9.99, 15.50, 22.75, 8.25];
|
||||
|
||||
// ఫంక్షనల్ ప్రోగ్రామింగ్ శైలి కోసం forEach ఉపయోగించడం
|
||||
prices.forEach((price, index) => {
|
||||
console.log(`Item ${index + 1}: $${price.toFixed(2)}`);
|
||||
});
|
||||
|
||||
// సులభమైన ఆపరేషన్ల కోసం arrow ఫంక్షన్లతో forEach
|
||||
prices.forEach(price => console.log(`Price: $${price}`));
|
||||
```
|
||||
|
||||
**forEach గురించి ఎలాంటివి తెలుసుకోవాలి:**
|
||||
- ప్రతి శ్రేణి అంశం కొరకు ఒక ఫంక్షన్ నడుపుతుంది
|
||||
- అంశ విలువ మరియు సూచికను పరామితులుగా ఇస్తుంది
|
||||
- త్వరగా ఆపలేరు (సాంప్రదాయ లూప్స్ లాగా కాదు)
|
||||
- తిరిగి ఇస్తుంది 'undefined' (కొత్త శ్రేణి సృష్టించదు)
|
||||
|
||||
✅ మీరు For loop మరియు While loop మధ్య ఎంపిక ఎందుకు చేస్తారు? StackOverflow లో 17 వేల మంది చూస్తున్న ప్రశ్నకు సంబంధించిన కొన్ని అభిప్రాయాలు [మీకు ఆసక్తిగా ఉండవచ్చు](https://stackoverflow.com/questions/39969145/while-loops-vs-for-loops-in-javascript).
|
||||
|
||||
### 🎨 **ఆధునిక లూప్ వ్యాకరణం తనిఖీ: ES6+ అంగీకారము**
|
||||
|
||||
**మీ ఆధునిక జావాస్క్రిప్ట్ అర్ధం పరీక్షించండి:**
|
||||
- సాంప్రదాయ For loops కంటే for...of లాభాలు ఏవీ?
|
||||
- మీరు ఎప్పుడు సాంప్రదాయ మార్గాలు ఇంకా ఇష్టపడతారు?
|
||||
- forEach మరియు map మధ్య తేడా ఏమిటి?
|
||||
|
||||
```mermaid
|
||||
quadrantChart
|
||||
title లూప్ ఎంపిక గైడ్
|
||||
x-axis సాంప్రదాయం --> ఆధునికం
|
||||
y-axis సులభం --> సంక్లిష్టం
|
||||
quadrant-1 ఆధునిక Sanklishtam
|
||||
quadrant-2 సాంప్రదాయం Sanklishtam
|
||||
quadrant-3 సాంప్రదాయం సులభం
|
||||
quadrant-4 ఆధునిక సులభం
|
||||
|
||||
Traditional For: [0.2, 0.7]
|
||||
While Loop: [0.3, 0.6]
|
||||
For...of: [0.8, 0.3]
|
||||
forEach: [0.9, 0.4]
|
||||
Array Methods: [0.8, 0.8]
|
||||
```
|
||||
> **ఆధునిక ధోరణి**: `for...of` మరియు `forEach` వంటి ES6+ వ్యాకరణం శ్రేణులపైన లూపింగ్ సులభం, తప్పుడు పొరపాట్లను తగ్గిస్తాయి కాబట్టి ఇవి ప్రాధాన్య రూపం అవుతున్నాయి!
|
||||
|
||||
## పునరావృతాలు మరియు శ్రేణులు
|
||||
|
||||
శ్రేణులు మరియు పునరావృతాలను కలిపి ఉపయోగించడం శక్తివంతమైన డేటా ప్రాసెసింగ్ సామర్ధ్యాలను సృష్టిస్తుంది. ఇది అనేక ప్రోగ్రామింగ్ పనుల మధయ పెట్టుబడి, జాబితాలను చూపించడం నుండి గణాంకాలను లెక్కించడం వరకు ఉపయోగపడుతుంది.
|
||||
|
||||
**సాంప్రదాయ శ్రేణి ప్రాసెసింగ్:**
|
||||
|
||||
```javascript
|
||||
const iceCreamFlavors = ["Chocolate", "Strawberry", "Vanilla", "Pistachio", "Rocky Road"];
|
||||
|
||||
// క్లాసిక్ ఫర్ లూప్ పద్ధతి
|
||||
for (let i = 0; i < iceCreamFlavors.length; i++) {
|
||||
console.log(`Flavor ${i + 1}: ${iceCreamFlavors[i]}`);
|
||||
}
|
||||
|
||||
// ఆధునిక for...of పద్ధతి
|
||||
for (const flavor of iceCreamFlavors) {
|
||||
console.log(`Available flavor: ${flavor}`);
|
||||
}
|
||||
```
|
||||
|
||||
**ప్రతి పద్ధతిని అర్థం చేసుకుందాం:**
|
||||
- లూప్ పరిమితిని నిర్ణయించడానికి శ్రేణి పొడవు ప్రాపర్టీ ఉపయోగిస్తుంది
|
||||
- సాంప్రదాయ ఫర్ లూప్స్ లో సూచికతో అంశాలను యాక్సెస్ చేస్తుంది
|
||||
- for...of లూప్స్ లో నేరుగా అంశాలను పొందుతుంది
|
||||
- ప్రతి శ్రేణి అంశాన్ని ఒక్కసారి ప్రాసెస్ చేస్తుంది
|
||||
|
||||
**ప్రయోజనాత్మక డేటా ప్రాసెసింగ్ ఉదాహరణ:**
|
||||
|
||||
```javascript
|
||||
const studentGrades = [85, 92, 78, 96, 88, 73, 89];
|
||||
let total = 0;
|
||||
let highestGrade = studentGrades[0];
|
||||
let lowestGrade = studentGrades[0];
|
||||
|
||||
// ఒక్క లూప్తో అన్ని గ్రేడులను ప్రాసెస్ చేయండి
|
||||
for (let i = 0; i < studentGrades.length; i++) {
|
||||
const grade = studentGrades[i];
|
||||
total += grade;
|
||||
|
||||
if (grade > highestGrade) {
|
||||
highestGrade = grade;
|
||||
}
|
||||
|
||||
if (grade < lowestGrade) {
|
||||
lowestGrade = grade;
|
||||
}
|
||||
}
|
||||
|
||||
const average = total / studentGrades.length;
|
||||
console.log(`Average: ${average.toFixed(1)}`);
|
||||
console.log(`Highest: ${highestGrade}`);
|
||||
console.log(`Lowest: ${lowestGrade}`);
|
||||
```
|
||||
|
||||
**ఈ కోడ్ ఎలా పనిచేస్తుందో:**
|
||||
- మొత్తం మరియు తీవ్రమైన విలువలను ట్రాక్ చేయడానికి వేరియబుళ్లను ఇనిషియలైజ్ చేస్తుంది
|
||||
- ప్రతీ గ్రేడ్ను ఒక్క లూప్ లో సమర్థవంతంగా ప్రాసెస్ చేస్తుంది
|
||||
- సగటును లెక్కించడానికి మొత్తం చేర్చుకుంటోంది
|
||||
- లూప్ సమయంలో అతిపెద్ద మరియు కనిష్ట విలువలను ట్రాక్ చేస్తుంది
|
||||
- లూప్ ముగిసిన తర్వాత ముగింపు గణాంకాలు లెక్కిస్తుంది
|
||||
|
||||
✅ మీరు మీ స్వంత శ్రేణి తో మీ బ్రౌజర్ కన్సోల్ లో ప్రయోగం చేయండి.
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A["📦 పరిమాణ డేటా"] --> B["🔄 పునరావృత ప్రాసెసింగ్"]
|
||||
B --> C["📈 ఫలితాలు"]
|
||||
|
||||
A1["[85, 92, 78, 96, 88]"] --> A
|
||||
|
||||
B --> B1["మొత్తాన్ని లెక్కించండి"]
|
||||
B --> B2["కనిష్ఠం/గరిష్ఠం కనుగొనండి"]
|
||||
B --> B3["నిర్ధారిత పరిస్థితులను లెక్కించండి"]
|
||||
B --> B4["డేటాను మార్చండి"]
|
||||
|
||||
C --> C1["సగటు: 87.8"]
|
||||
C --> C2["అత్యున్నత: 96"]
|
||||
C --> C3["అనుమతింపు: 5/5"]
|
||||
C --> C4["అక్షర గ్రేడ్లు"]
|
||||
|
||||
D["⚡ ప్రాసెసింగ్ మొదలుపెట్టు"] --> D1["సేకరణ (మొత్తం)"]
|
||||
D --> D2["తులన (కనిష్ఠం/గరిష్ఠం)"]
|
||||
D --> D3["ఫిల్టరింగ్ (స్థితులు)"]
|
||||
D --> D4["మ్యాపింగ్ (మార్పు)"]
|
||||
|
||||
style A fill:#e3f2fd
|
||||
style B fill:#fff3e0
|
||||
style C fill:#e8f5e8
|
||||
style D fill:#f3e5f5
|
||||
```
|
||||
---
|
||||
|
||||
## GitHub Copilot ఏజెంట్ ఛాలెంజ్ 🚀
|
||||
|
||||
ఏజంట్ మోడ్ ఉపయోగించి క్రింది ఛాలెంజ్ పూర్తి చేయండి:
|
||||
|
||||
**వివరణ:** శ్రేణులు మరియు పునరావృతాలను కలిపి ఉపయోగించి డేటా సెట్ను విశ్లేషించి అర్ధం వచ్చే వివరాలను అందించే సమగ్ర డేటా ప్రాసెసింగ్ ఫంక్షన్ ను నిర్మించండి.
|
||||
|
||||
**ప్రాంప్ట్:** `analyzeGrades` అనే ఫంక్షన్ సృష్టించండి, ఇది విద్యార్థుల గ్రేడ్ ఆబ్జెక్టుల శ్రేణి (ప్రతి ఒకటిలో పేరు మరియు స్కోరు గుణాలున్నవి) తీసుకొని అత్యధిక స్కోరు, కనిష్ట స్కోరు, సగటు స్కోరు, పాసైనవారి సంఖ్య (స్కోరు >= 70), మరియు సగటు కన్నా ఎక్కువ స్కోరు పొందిన విద్యార్థుల పేర్ల శ్రేణిని గణించే గణాంకాలను కలిగి ఓ ఆబ్జెక్టును తిరిగి ఇస్తుంది. మీ పరిష్కారంలో కనీసం రెండు వేర్వేరు లూప్ రకాలను ఉపయోగించండి.
|
||||
|
||||
[ఏజెంట్ మోడ్ గురించి మరింత తెలుసుకోండి](https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode).
|
||||
|
||||
## 🚀 ఛాలెంజ్
|
||||
JavaScript అనేది కొన్ని ఆధునిక అర్రే విధానాలను అందిస్తుంది, ఇవి ప్రత్యేక పనుల కోసం సాంప్రదాయక లూపులను బదులుగా ఉపయోగించవచ్చు. [forEach](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach), [for-of](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/for...of), [map](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/map), [filter](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/filter), మరియు [reduce](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce) ను అన్వేషించండి.
|
||||
|
||||
**మీ సవాలు:** కనీసం మూడు వేర్వేరు అర్రే విధానాలను ఉపయోగించి విద్యార్థుల గ్రేడ్ ఉదాహరణను రీఫాక్టర్ చేయండి. ఆధునిక JavaScript సింటాక్స్తో కోడ్ ఎంత చక్కగా మరియు స్పష్టంగా మారిందో గమనించండి.
|
||||
|
||||
## లెక్చర్ తర్వాత క్విజ్
|
||||
[లెక్చర్ తర్వాత క్విజ్](https://ff-quizzes.netlify.app/web/quiz/14)
|
||||
|
||||
|
||||
## సమీక్ష & స్వీయ అధ్యయనం
|
||||
|
||||
JavaScriptలో అర్రేలతో అనేక విధానాలు జోడించబడ్డాయి, ఇవి డేటా నియంత్రణకు అత్యంత ఉపయోగకరంగా ఉంటాయి. [ఈ విధానాలను చదవండి](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array) మరియు మీ సృష్టించిన అర్రేపై (పుష్, పాప్, స్లైస్ మరియు స్ప్లైస్ వంటి) వాటిలో కొన్ని ప్రయత్నించండి.
|
||||
|
||||
## అసైన్మెంట్
|
||||
|
||||
[అర్రే ను లూక్ చేయండి](assignment.md)
|
||||
|
||||
---
|
||||
|
||||
## 📊 **మీ అర్రేల & లూప్ టూల్కిట్ సమరీ**
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A["🎯 అర్రేలు & లూప్ మాస్టరీ"] --> B["📦 అర్రే మౌలికాలు"]
|
||||
A --> C["🔄 లూప్ రకాలు"]
|
||||
A --> D["🔗 డేటా ప్రాసెసింగ్"]
|
||||
A --> E["🎨 ఆధునిక సాంకేతికతలు"]
|
||||
|
||||
B --> B1["సృష్టి: [ ]"]
|
||||
B --> B2["ఇండెక్సింగ్: arr[0]"]
|
||||
B --> B3["మెథడ్స్: push, pop"]
|
||||
B --> B4["గుణపరిధులు: length"]
|
||||
|
||||
C --> C1["For: తెలుసు పునరావృతాలు"]
|
||||
C --> C2["While: షరతు ఆధారితమైన"]
|
||||
C --> C3["For...of: ప్రత్యక్ష ప్రవేశం"]
|
||||
C --> C4["forEach: ఫంక్షనల్"]
|
||||
|
||||
D --> D1["గణాంకాల లెక్కింపు"]
|
||||
D --> D2["డేటా మార్పిడి"]
|
||||
D --> D3["ఫిల్టర్ & శోధన"]
|
||||
D --> D4["ప్రత్యక్ష-సమయం ప్రాసెసింగ్"]
|
||||
|
||||
E --> E1["అరో ఫంక్షన్లు"]
|
||||
E --> E2["మెథడ్ చెయినింగ్"]
|
||||
E --> E3["డిస్ట్రక్చరింగ్"]
|
||||
E --> E4["టెంప్లేట్ లిటరల్స్"]
|
||||
|
||||
F["💡 కీలక లాభాలు"] --> F1["దక్షంగా డేటా నిర్వహణ"]
|
||||
F --> F2["కోడ్ పునరావృతం తగ్గింపు"]
|
||||
F --> F3["విస్తరించదగిన పరిష్కారాలు"]
|
||||
F --> F4["శుభ్రంగా సింటాక్స్"]
|
||||
|
||||
style A fill:#e3f2fd
|
||||
style B fill:#e8f5e8
|
||||
style C fill:#fff3e0
|
||||
style D fill:#f3e5f5
|
||||
style E fill:#e0f2f1
|
||||
style F fill:#fce4ec
|
||||
```
|
||||
---
|
||||
|
||||
## 🚀 మీ అర్రేల & లూప్ మాస్టరీ టైમ్లైన్
|
||||
|
||||
### ⚡ **తర్వాతి 5 నిమిషాలలో మీరు చేయగలిగేది**
|
||||
- [ ] మీ ఇష్టమైన సినిమాల అర్రే సృష్టించి ప్రత్యేక అంశాలను యాక్సెస్ చేయండి
|
||||
- [ ] 1 నుండి 10 వరకు లెక్కించునట్లు ఒక for లూప్ రాయండి
|
||||
- [ ] పాఠం నుంచి ఆధునిక అర్రే విధానాల సవాలు ప్రయత్నించండి
|
||||
- [ ] బ్రౌజర్ కన్సోల్లో అర్రే ఇండెక్సింగ్ను భావన చేయండి
|
||||
|
||||
### 🎯 **ఈ గంటలో మీరు సాధించగలిగేది**
|
||||
- [ ] పాఠం తర్వాత క్విజ్ పూర్తి చేసి ఎటువంటి క్లిష్టమైన భావనలను సమీక్షించండి
|
||||
- [ ] GitHub Copilot సవాళ్ల నుండి సమగ్ర గ్రేడ్ అనలుగర్ నిర్మించండి
|
||||
- [ ] వస్తువులను జోడించి తీసివేసే సాదారణ షాపింగ్ కార్ట్ సృష్టించండి
|
||||
- [ ] వేర్వేరు లూప్ రకాల మధ్య మార్పిడి సాధన చేయండి
|
||||
- [ ] `push`, `pop`, `slice`, మరియు `splice` వంటి అర్రే విధానాలతో ప్రయోగం చేయండి
|
||||
|
||||
### 📅 **మీ వారాంతపు డేటా ప్రాసెసింగ్ ప్రయాణం**
|
||||
- [ ] సృజనాత్మక మెరుగుదలలతో "అర్రేను లూప్ చేయండి" అసైన్మెంట్ పూర్తి చేయండి
|
||||
- [ ] అర్రేలతో మరియు లూపులతో టు-డూ లిస్ట్ అప్లికేషన్ తయారుచేయండి
|
||||
- [ ] గణనీయ డేటా కోసం ఒక సాదారణ గణాంక కాలిక్యులేటర్ తయారుచేయండి
|
||||
- [ ] [MDN అర్రే విధానాలతో](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array) సాధన చేయండి
|
||||
- [ ] ఫోటో గ్యాలరీ లేదా సంగీత ప్లేలిస్ట్ ఇంటర్ఫేస్ నిర్మించండి
|
||||
- [ ] `map`, `filter`, మరియు `reduce` వంటి విధానాలతో ఫంక్షనల్ ప్రోగ్రామింగ్ అన్వేషించండి
|
||||
|
||||
### 🌟 **మీ నెలరోజుల మార్పిడి**
|
||||
- [ ] ఆధునిక అర్రే ఆపరేషన్లు మరియు పనితీరు ఆప్టిమైజేషన్లో మాస్టరీ సాధించండి
|
||||
- [ ] సంపూర్ణ డేటా విజువలైజేషన్ డాష్బోర్డ్ నిర్మించండి
|
||||
- [ ] డేటా ప్రాసెసింగ్లో పాల్గొన్న ఓపెన్ సోర్స్ ప్రాజెక్టులకు తోడ్పాటు ఇవ్వండి
|
||||
- [ ] ఉపయోగకరమైన ఉదాహరణలతో ఇతరులకు అర్రేల మరియు లూపులను బోధించండి
|
||||
- [ ] పునర్వినియోగ డేటా ప్రాసెసింగ్ ఫంక్షన్ల వ్యక్తిగత లైబ్రరీ సృష్టించండి
|
||||
- [ ] అర్రేల ఆధారంగా అల్గోరిథంలు మరియు డేటా నిర్మాణాలను అన్వేషించండి
|
||||
|
||||
### 🏆 **చివరి డేటా ప్రాసెసింగ్ చాంపియన్ చెక్-ఇన్**
|
||||
|
||||
**మీ అర్రేల మరియు లూప్ మాస్టరీని సెలబ్రేట్ చేయండి:**
|
||||
- మీరు నిజజీవిత అనువర్తనాలకు నేర్చుకున్న అత్యంత ఉపయోగకర అర్రే ఆపరేషన్ ఏది?
|
||||
- మీకు ఏ లూప్ రకం సహజంగా అనిపించిందీ మరియు ఎందుకు?
|
||||
- అర్రేలు మరియు లూపులను అర్థం చేసుకోవడం మీ డేటాను ఏర్పాటు చేసే దారిని ఎలా మార్చింది?
|
||||
- మీరు తదుపరి ఏ క్లిష్టమైన డేటా ప్రాసెసింగ్ టాస్క్ ను చేపట్టాలని కోరుకుంటున్నారు?
|
||||
|
||||
```mermaid
|
||||
journey
|
||||
title మీ డేటా ప్రాసెసింగ్ అభివృద్ధి
|
||||
section ఈ రోజు
|
||||
Array Confusion: 3: You
|
||||
Loop Basics: 4: You
|
||||
Index Understanding: 5: You
|
||||
section ఈ వారం
|
||||
Method Mastery: 4: You
|
||||
Efficient Processing: 5: You
|
||||
Modern Syntax: 5: You
|
||||
section వచ్చే నెల
|
||||
Complex Algorithms: 5: You
|
||||
Performance Optimization: 5: You
|
||||
Teaching Others: 5: You
|
||||
```
|
||||
> 📦 **మీరు డేటా ఏర్పాట్లు మరియు ప్రాసెసింగ్ శక్తిని అన్లాక్ చేసారు!** అర్రేలు మరియు లూపులు మీరు ఎప్పుడైనా తయారుచేసే ప్రతి అనువర్తనానికి మౌలికమైన పునాది. సాదా జాబితాల నుండి క్లిష్టమైన డేటా విశ్లేషణ వరకు, మీరు ఇప్పుడు సమాచారాన్ని సమర్థవంతంగా మరియు చక్కగా నిర్వహించడానికి టూల్స్ కలిగి ఉన్నారు. ప్రతి డైనమిక్ వెబ్సైట్, మొబైల్ యాప్ మరియు డేటా ఆధారిత అనువర్తనం ఈ మౌలిక భావనలపై ఆధారపడుతుంది. స్కేలబుల్ డేటా ప్రాసెసింగ్ ప్రపంచానికి స్వాగతం! 🎉
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**డిస్క్లైమర్**:
|
||||
ఈ డాక్యుమెంట్ను AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ద్వారా అనువదించబడినది. మేము నిజత్వంపై శ్రద్ధ వహించినప్పటికీ, ఆటోమేటెడ్ అనువాదాలలో పొరపాట్లు లేదా అసత్యతలు ఉండే అవకాశముంది. ఈ డాక్యుమెంట్ యొక్క మాతృష్టమైన భాషలో ఉన్న అసలు పత్రాన్ని అధికారిక మూలం గా పరిగణించాలి. గంభీరమైన సమాచారానికి, వృత్తిపరమైన మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంనుంచి వచ్చే ఏవైనా అర్థం తప్పుదోవ పడే పరిస్థితులకు మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,124 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "8abcada0534e0fb3a7556ea3c5a2a8a4",
|
||||
"translation_date": "2026-01-08T13:09:38+00:00",
|
||||
"source_file": "2-js-basics/4-arrays-loops/assignment.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# అర్రేస్ మరియు లూప్స్ అసైన్మెంట్
|
||||
|
||||
## సూచనలు
|
||||
|
||||
అర్రేస్ మరియు లూప్లతో పని చేసే అభ్యాసం కోసం క్రింది వ్యాయామాలను పూర్తి చేయండి. ప్రతి వ్యాయామం పాఠం నుండి సిద్ధాంతాలను బట్టి నిర్మించబడింది మరియు వివిధ లూప్ల రకాల మరియు అర్రే పద్ధతులను వర్తింపజేయగల గుణాన్ని ప్రోత్సహిస్తుంది.
|
||||
|
||||
### వ్యాయామం 1: నెంబర్ ప్యాటర్న్ జనరేటర్
|
||||
1-20 మధ్య ప్రతి 3వ సంఖ్యను జాబితా చేసి కన్సోల్లో ముద్రించుటకు ఒక ప్రోగ్రామ్ సృష్టించండి.
|
||||
|
||||
**అవసరాలు:**
|
||||
- కస్టమ్ ఇన్క్రిమెంట్తో `for` లూప్ ఉపయోగించండి
|
||||
- సంఖ్యలను వినియోగదారులకు స్నేహపూర్వక ఫార్మాట్లో చూపించండి
|
||||
- లాజిక్ను వివరిస్తూ వివరణాత్మక కామెంట్స్ జత చేయండి
|
||||
|
||||
**అంచనా అవుట్పుట్:**
|
||||
```
|
||||
3, 6, 9, 12, 15, 18
|
||||
```
|
||||
|
||||
> **సూచన:** మీ for లూప్లో iteration-expression ను మార్చి కొన్ని సంఖ్యలను దాటవేయండి.
|
||||
|
||||
### వ్యాయామం 2: అర్రే విశ్లేషణ
|
||||
కనీసం 8 వేర్వేరు సంఖ్యలతో అర్రే సృష్టించి, డేటాను విశ్లేషించడానికి ఫంక్షన్లను రాయండి.
|
||||
|
||||
**అవసరాలు:**
|
||||
- కనీసం 8 విలువలతో `numbers` అనే అర్రే సృష్టించండి
|
||||
- గరిష్ట సంఖ్యను తిరిగిచ్చే `findMaximum()` ఫంక్షన్ రాయండి
|
||||
- కనిష్ట సంఖ్యను తిరిగిచ్చే `findMinimum()` ఫంక్షన్ రాయండి
|
||||
- మొత్తం సంఖ్యల మొత్తాన్ని తిరిగిచ్చే `calculateSum()` ఫంక్షన్ రాయండి
|
||||
- ప్రతి ఫంక్షన్ను పరీక్షించి ఫలితాలను ప్రదర్శించండి
|
||||
|
||||
**బోనస్ ఛాలెంజ్:** అర్రెలో రెండవ గరిష్ట సంఖ్యను కనుగొనే ఫంక్షన్ రూపొందించండి.
|
||||
|
||||
### వ్యాయామం 3: స్ట్రింగ్ అర్రే ప్రాసెసింగ్
|
||||
మీ ఇష్టమైన సినిమాలు/పుస్తకాలు/పాటలతో అర్రే సృష్టించి వివిధ లూప్ రకాలపై అవగాహన పెంపొందించుకోండి.
|
||||
|
||||
**అవసరాలు:**
|
||||
- కనీసం 5 స్ట్రింగ్ విలువలతో ఒక అర్రే సృష్టించండి
|
||||
- సంఖ్యలతో(1. అంశం పేరు) అంశాలను ప్రదర్శించడానికి ప్రాచీన `for` లూప్ ఉపయోగించండి
|
||||
- అంశాలను పెద్దఅక్షరాలలో ప్రదర్శించడానికి `for...of` లూప్ ఉపయోగించండి
|
||||
- మొత్తం అక్షరాలను లెక్కించి ప్రదర్శించడానికి `forEach()` పద్ధతి ఉపయోగించండి
|
||||
|
||||
**ఉదాహరణ అవుట్పుట్:**
|
||||
```
|
||||
Traditional for loop:
|
||||
1. The Matrix
|
||||
2. Inception
|
||||
3. Interstellar
|
||||
|
||||
For...of loop (uppercase):
|
||||
THE MATRIX
|
||||
INCEPTION
|
||||
INTERSTELLAR
|
||||
|
||||
Character count:
|
||||
Total characters across all titles: 42
|
||||
```
|
||||
|
||||
### వ్యాయామం 4: డేటా ఫిల్టరింగ్ (అధునాతన)
|
||||
విద్యార్థులను సూచించే ఆబ్జెక్టుల అర్రేను ప్రాసెస్ చేసే ప్రోగ్రామ్ సృష్టించండి.
|
||||
|
||||
**అవసరాలు:**
|
||||
- కనీసం 5 విద్యార్థి ఆబ్జెక్టులతో `name`, `age`, `grade` లక్షణాలతో అర్రే సృష్టించండి
|
||||
- 18 సంవత్సరాల వయసు లేదా అంతకంటే మెద్ద అనిపించే విద్యార్థులను కనుగొనడానికి లూప్స్ ఉపయోగించండి
|
||||
- అన్ని విద్యార్థుల సగటు గ్రేడ్ను లెక్కించండి
|
||||
- గ్రేడ్ 85 పైగా ఉన్న విద్యార్థులతో కొత్త అర్రే సృష్టించండి
|
||||
|
||||
**ఉదాహరణ నిర్మాణం:**
|
||||
```javascript
|
||||
const students = [
|
||||
{ name: "Alice", age: 17, grade: 92 },
|
||||
{ name: "Bob", age: 18, grade: 84 },
|
||||
// మరిన్ని విద్యార్థుల్ని జోడించండి...
|
||||
];
|
||||
```
|
||||
|
||||
## మీ కోడ్ను పరీక్షించడం
|
||||
|
||||
మీ ప్రోగ్రామ్లను ఈ విధంగా పరీక్షించండి:
|
||||
1. మీ బ్రౌజర్ కన్సోల్లో ప్రతి వ్యాయామాన్ని నడపండి
|
||||
2. ఫలితాలు అంచనా ఫలితాలకు సరిపోతున్నాయో పరిశీలించండి
|
||||
3. వేర్వేరు డేటా సెట్లతో పరీక్షించండి
|
||||
4. మీ కోడ్ ఎడ్జ్ కేసులు (ఖాళీ అర్రేస్, ఒంటి అంశాలు) ఎలా నిర్వహిస్తుందో చూడండి
|
||||
|
||||
## సమర్పణ మార్గదర్శకాలు
|
||||
|
||||
మీ సమర్పణలో ఈ సమాచారాన్ని చేర్చండి:
|
||||
- ప్రతి వ్యాయామానికి బాగా వ్యాఖ్యానించిన జావాస్క్రిప్ట్ కోడ్
|
||||
- మీ ప్రోగ్రామ్లు నడిచిన స్క్రీన్شాట్లు లేదా టెక్స్ట్ అవుట్పుట్లు
|
||||
- ప్రతి పనికి మీరు ఏ లూప్ రకాన్ని ఎంచుకున్నారో మరియు ఎందుకు అనేది సంక్షిప్త వివరణ
|
||||
|
||||
## రూబ్రిక్
|
||||
|
||||
| ప్రమాణాలు | అద్భుతం (3 పాయంట్లు) | తగినంత (2 పాయంట్లు) | మెరుగుదల అవసరం (1 పాయింట్) |
|
||||
| -------- | -------------------- | ------------------- | --------------------------- |
|
||||
| **విధానసామర్థ్యం** | బోనస్ ఛాలెంజ్లతో సహా అన్ని వ్యాయామాలు సరిగా పూర్తి | అన్ని అవసరమైన వ్యాయామాలు సరిగ్గా పనిచేస్తాయ్ | కొన్ని వ్యాయామాలు అసంపూర్ణం లేదా లోపాలు కలిగి ఉన్నాయి |
|
||||
| **కోడ్ నాణ్యత** | శుభ్రమైన, బాగా నిర్వహించబడిన కోడ్, వివరణాత్మక వేరియబుల్ పేర్లతో | కోడ్ పనిచేస్తుంది కానీ మరింత శుభ్రంగా ఉండవచ్చు | కోడ్ అసుతిరి లేదా అర్థం చేసుకోవడానికి కష్టంగా ఉంది |
|
||||
| **వ్యాఖ్యలు** | లాజిక్ మరియు నిర్ణయాలను వివరిస్తూ సమగ్ర వ్యాఖ్యలు | ప్రాథమిక వ్యాఖ్యలు ఉన్నాయి | చాలా తక్కువ లేదా వ్యాఖ్యలు లేవు |
|
||||
| **లూప్ వినియోగం** | వివిధ లూప్ రకాలపై సరైన అవగాహన ప్రదర్శిస్తుంది | లూప్లను సరిగా వినియోగించ but పరిమితం చేయబడింది | లూప్ వినియోగం తప్పు లేదా సామర్థ్యం లోపిస్తుంది |
|
||||
| **పరీక్షణ** | బహుముఖ పరీక్షల అటవిడల ఆధారాలు ఉన్నాయి | ప్రాథమిక పరీక్షణ ప్రదర్శితమైంది | పరీక్షణ యొక్క కొంతచెల్లింపు లేదు |
|
||||
|
||||
## ఆలోచనా ప్రశ్నలు
|
||||
|
||||
వ్యాయామాలు పూర్తిచేసిన తర్వాత, ఆలోచించండి:
|
||||
1. ఏ లూప్ రకం ఎక్కువ సహజంగా అనిపించింది మరియు ఎందుకు?
|
||||
2. అర్రేతో పని చేసే సమయంలో మీరు ఏవెటువంటి సవాళ్ళను ఎదుర్కొన్నారు?
|
||||
3. ఈ నైపుణ్యాలు వాస్తవ ప్రపంచ వెబ్ డెవలప్మెంట్లో ఎలా ఉపయోగపడతాయి?
|
||||
4. పనితీరును మెరుగుపరచడానికి మీ కోడ్ను మీరు ఎలా వేరుగా ఆప్టిమైజ్ చేస్తారు?
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**అసమ్మతి**:
|
||||
ఈ పత్రం AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువాదం చేయబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నిస్తున్నప్పటినీ, స్వయంచాలక అనువాదాల్లో పొరపాట్లు లేదా తప్పులుంటే ఉండవచ్చు అనే దృష్టితో ఉండండి. అసలు పత్రం దాని స్థానిక భాషలోని మూల పత్రంగా పరిగణించబడాలి. ముఖ్యమైన సమాచారం కోసం, నిపుణుల మానవ అనువాదాన్ని సూచించబడుతుంది. ఈ అనువాద వినియోగంతో కలిగే అపవాదాలు లేదా తప్పనుమనిపించట్లేదనేది మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,30 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "cc9e70a2f096c67389c8acff1521fc27",
|
||||
"translation_date": "2026-01-08T10:44:48+00:00",
|
||||
"source_file": "2-js-basics/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# జావాస్క్రిప్ట్ పరిచయం
|
||||
|
||||
జావాస్క్రిప్ట్ అనేది వెబ్ భాష. ఈ నాలుగు పాఠాల్లో, మీరు దాని మౌలికాలను నేర్చుకుంటారు.
|
||||
|
||||
### విషయాలు
|
||||
|
||||
1. [చరాలు మరియు డేటా రకాలు](1-data-types/README.md)
|
||||
2. [ఫంక్షన్లు మరియు విధానాలు](2-functions-methods/README.md)
|
||||
3. [జావాస్క్రిప్ట్ తో నిర్ణయాలు తీసుకోవడం](3-making-decisions/README.md)
|
||||
4. [అర레이లు మరియు లూపులు](4-arrays-loops/README.md)
|
||||
|
||||
### క్రెడిట్స్
|
||||
|
||||
ఈ పాఠాలు ♥️ తో రాశారు [Jasmine Greenaway](https://twitter.com/paladique), [Christopher Harrison](https://twitter.com/geektrainer) మరియు [Chris Noring](https://twitter.com/chris_noring)
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**త్యజింపు**:
|
||||
ఈ డాక్యుమెంట్ [Co-op Translator](https://github.com/Azure/co-op-translator) అనే AI అనువాద సేవను ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటిక్ అనువాదాలలో పొరపాట్లు లేదా లోపాలు ఉండే అవకాశం ఉందని దయచేసి గమనించండి. మూల డాక్యుమెంట్ తన స్వదేశీ భాషలో ప్రామాణిక మూలంగా పరిగణించబడాలి. ముఖ్యమైన సమాచారం కోసం వృత్తిపరమైన మానవ అనువాదం సూచించబడుతుంది. ఈ అనువాదం వలన కలిగే ఏవైనా తప్పులపై లేదా అర్థం తప్పులపై మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,136 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "bee6762d4092a13fc7c338814963f980",
|
||||
"translation_date": "2026-01-08T19:27:59+00:00",
|
||||
"source_file": "3-terrarium/2-intro-to-css/assignment.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# CSS పునర్నిర్మాణ కేటాయింపు
|
||||
|
||||
## లక్ష్యం
|
||||
|
||||
మీ టెరిరియం ప్రాజెక్ట్ను ఆధునిక CSS లేఅవుట్ సాంకేతికతలు ఉపయోగించడానికి మార్చండి! ప్రస్తుత అబ్సల్యూట్ పొజిషనింగ్ విధానాన్ని పునర్నిర్మాణం చేసి, మరింత నిర్వహణగల, స్పందనతో కూడిన డిజైన్ కోసం **Flexbox** లేదా **CSS Grid** ఉపయోగించండి. ఈ కేటాయింపులో మీరు आधुनिक CSS ప్రమాణాలను వర్తింపజేయాల్సి ఉంటుంది, అలాగే మీ టెరిరియం యొక్క దృశ్య ఆకర్షణను కూడా నిలబెట్టుకోవాలి.
|
||||
|
||||
విభిన్న లేఅవుట్ పద్ధతులను ఎప్పుడు మరియు ఎలా ఉపయోగించాలో అర్థం చేసుకోవడం ఆధునిక వెబ్ అభివృద్ధికి ముఖ్యమైన నైపుణ్యం. ఈ వ్యాయామం సాంప్రదాయపరి స్థాన నిర్ధారణా సాంకేతికతలతో ఆధునిక CSS లేఅవుట్ వ్యవస్థలను అనుసంధానం చేస్తుంది.
|
||||
|
||||
## కేటాయింపు సూచనలు
|
||||
|
||||
### దశ 1: విశ్లేషణ మరియు ప్రణాళిక
|
||||
1. **మీ ప్రస్తుత టెరిరియం కోడ్ను సమీక్షించండి** - ఏ ఎలిమెంట్లు అబ్సల్యూట్ పొజిషనింగ్ ఉపయోగిస్తున్నారు అని గుర్తించండి
|
||||
2. **మీ లేఅవుట్ పద్ధతిని ఎంచుకోండి** - Flexbox లేదా CSS Grid మీ డిజైన్ లక్ష్యాలకు ఏది మెరుగైనదో నిర్ణయించండి
|
||||
3. **మీ కొత్త లేఅవుట్ నిర్మాణాన్ని స్కెచ్ చేయండి** - కంటైనర్లు మరియు మొక్కల మూలకాలు ఎలా ఏర్పాటుచేయబడతాయో ప్రణాళిక చేయండి
|
||||
|
||||
### దశ 2: అమలు
|
||||
1. **మీ టెరిరియం ప్రాజెక్ట్కు కొత్త వెర్షన్ సృష్టించండి** విడివిడిగా ఫోల్డర్లో
|
||||
2. **HTML నిర్మాణాన్ని అవసరమైతే మీ ఎంపిక అయిన లేఅవుట్ పద్ధతిని మద్దతు ఇవ్వడానికి నవీకరించండి**
|
||||
3. **CSS పునర్నిర్మాణం చేయండి** అబ్సల్యూట్ పొజిషనింగ్ స్థానంలో Flexbox లేదా CSS Grid ఉపయోగించండి
|
||||
4. **దృశ్య సారూప్యతను నిలుపుకోండి** - మీ మొక్కలు మరియు టెరిరియం జార్ ఒకటే స్థానాల్లో కనిపించేలా చూసుకోండి
|
||||
5. **స్పందించే ప్రవర్తనను అమలు చేయండి** - మీ లేఅవుట్ వివిధ తెర పరిమాణాలకు అందంగా తగినట్లుగా మార్చుకోగలగాలి
|
||||
|
||||
### దశ 3: పరీక్ష మరియు డాక్యుమెంటేషన్
|
||||
1. **క్రాస్బ్రౌజర్ పరీక్ష** - Chrome, Firefox, Edge, మరియు Safariలో మీ డిజైన్ పనిచేస్తుందో నిర్ధారించండి
|
||||
2. **స్పందించే పరీక్ష** - మొబైల్, టాబ్లెట్, మరియు డెస్క్టాప్ స్క్రీన్ పరిమాణాలపై మీ లేఅవుట్ను తనిఖీ చేయండి
|
||||
3. **డాక్యుమెంటేషన్** - మీ CSSలో మీ లేఅవుట్ ఎంపికలను వివరిస్తూ వ్యాఖ్యలను జోడించండి
|
||||
4. **స్క్రీన్షాట్లు** - వివిధ బ్రౌజర్లలో మరియు స్క్రీన్ పరిమాణాలలో మీ టెరిరియాన్ని పകര്చండి
|
||||
|
||||
## సాంకేతిక అవసరాలు
|
||||
|
||||
### లేఅవుట్ అమలు
|
||||
- **ఒకటే ఎంచుకోండి**: Flexbox లేదా CSS Grid (ఒకే ఎలిమెంట్లకు రెండూ కాదు)
|
||||
- **స్పందనాత్మక డిజైన్**: స్థిర పిక్సెల్ల బదులు అనప్తే యూనిట్లు (`rem`, `em`, `%`, `vw`, `vh`) ఉపయోగించండి
|
||||
- **అడగింపు సౌలభ్యం**: సరైన సేమాంటిక్ HTML నిర్మాణం మరియు alt టెక్స్ట్ నిలబెట్టండి
|
||||
- **కోడ్ నాణ్యత**: క్రమబద్ధీకరించిన పేర్ల నియమాలు మరియు సార్వత్రికంగా CSSను సక్రమంగా ఏర్పాటు చేయండి
|
||||
|
||||
### ఆధునిక CSS ఫీచర్లు
|
||||
```css
|
||||
/* Example Flexbox approach */
|
||||
.terrarium-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.plant-containers {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
max-width: 1200px;
|
||||
}
|
||||
|
||||
/* Example Grid approach */
|
||||
.terrarium-layout {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 3fr 1fr;
|
||||
grid-template-rows: auto 1fr;
|
||||
min-height: 100vh;
|
||||
gap: 1rem;
|
||||
}
|
||||
```
|
||||
|
||||
### బ్రౌజర్ మద్దతు అవసరాలు
|
||||
- **Chrome/Edge**: తాజా 2 వెర్షన్లు
|
||||
- **Firefox**: తాజా 2 వెర్షన్లు
|
||||
- **Safari**: తాజా 2 వెర్షన్లు
|
||||
- **మొబైల్ బ్రౌజర్లు**: iOS Safari, Chrome Mobile
|
||||
|
||||
## డెలివరబుల్స్
|
||||
|
||||
1. **ఉన్నత సేమాంటిక్ నిర్మాణంతో నవీకరించిన HTML ఫైల్**
|
||||
2. **ఆధునిక లేఅవుట్ సాంకేతికతలను ఉపయోగించి పునర్నిర్మాణం చేసిన CSS ఫైల్**
|
||||
3. **క్రాస్బ్రౌజర్ అనుకూలతను చూపే స్క్రీన్షాట్ల సమాహారం**:
|
||||
- డెస్క్టాప్ వీక్షణ (1920x1080)
|
||||
- టాబ్లెట్ వీక్షణ (768x1024)
|
||||
- మొబైల్ వీక్షణ (375x667)
|
||||
- కనిష్టం 2 వేరే బ్రౌజర్లు
|
||||
4. **README.md ఫైల్** డాక్యుమెంటింగ్:
|
||||
- మీ లేఅవుట్ ఎంపిక (Flexbox vs Grid) మరియు కారణాలు
|
||||
- పునర్నిర్మాణ సమయంలో ఎదురైన సవాళ్ళు
|
||||
- బ్రౌజర్ అనుకూలత నోట్స్
|
||||
- మీ కోడ్ నడిపేందుకు సూచనలు
|
||||
|
||||
## మూల్యాంకన రూబ్రిక్
|
||||
|
||||
| ప్రమాణం | అత్యుత్తమం (4) | నైపుణ్యం (3) | అభివృద్ధి అవుతోంది (2) | ప్రారంభ స్థాయి (1) |
|
||||
|----------|---------------|----------------|----------------|---------------|
|
||||
| **లేఅవుట్ అమలు** | Flexbox/Grid నైపుణ్యంతో అధునాతన లక్షణాలు; పూర్తిగా స్పందనాత్మకంగా ఉంటుంది | సరైన అమలు, మంచి స్పందనాత్మక ప్రవర్తన | ప్రాథమిక అమలు, చిన్న స్పందన సమస్యలతో | అసంపూర్ణ లేదా తప్పు అమలు |
|
||||
| **కోడ్ నాణ్యత** | శుభ్రమైన, సుసంవ్యవస్థિત CSS, అర్థవంతమైన వ్యాఖ్యలు మరియు స్థిరమైన పేరు నియమాలతో | మంచి నిర్మాణం, కొంత వ్యాఖ్యలతో | సరైన నిర్మాణం, తక్కువ వ్యాఖ్యలతో | చెడు నిర్మాణం, అర్థం చేసుకోవటానికి కష్టమే |
|
||||
| **క్రాస్బ్రౌజర్ అనుకూలత** | అన్ని అవసరమైన బ్రౌజర్లలో పూర్తి సారూప్యత, స్క్రీన్షాట్లతో | మంచి అనుకూలత, చిన్న తేడా గమనించినది | కొంత అనుకూలత సమస్యలు కానీ పనితీరు ఆపడం లేదు | ప్రధాన అనుకూలత సమస్యలు లేదా పరీక్షలు లేకపోవటం |
|
||||
| **స్పందనాత్మక డిజైన్** | అత్యుత్తమ మొబైల్-ఫస్ట్ విధానం, సున్నితమైన బ్రేక్ పాయింట్లు | మంచి స్పందన, తగిన బ్రేక్ పాయింట్లతో | ప్రాథమిక స్పందన లక్షణాలు, కొన్ని లేఅవుట్ సమస్యలతో | పరిమిత లేదా విరిగిన స్పందన ప్రవర్తన |
|
||||
| **డాక్యుమెంటేషన్** | విపుల README, వివరణాత్మక వ్యాసాలు, లోతైన అర్ధాలు | మంచి డాక్యుమెంటేషన్, అన్ని అవసర అంశాలను కవర్ చేసింది | ప్రాథమిక డాక్యుమెంటేషన్, తక్కువ వివరణలతో | అసంపూర్ణ లేదా డాక్యుమెంటేషన్ లేదు |
|
||||
|
||||
## సహాయక వనరులు
|
||||
|
||||
### లేఅవుట్ పద్ధతి మార్గదర్శకాలు
|
||||
- 📖 [Flexbox కు పూర్తి మార్గదర్శिका](https://css-tricks.com/snippets/css/a-guide-to-flexbox/)
|
||||
- 📖 [CSS Grid కు పూర్తి మార్గదర్శిక](https://css-tricks.com/snippets/css/complete-guide-grid/)
|
||||
- 📖 [Flexbox మరియు Grid - సరైన పరికరాన్ని ఎంచుకోండి](https://blog.webdevsimplified.com/2022-11/flexbox-vs-grid/)
|
||||
|
||||
### బ్రౌజర్ పరీక్ష టూల్స్
|
||||
- 🛠️ [Browser DevTools స్పందనాత్మక మోడ్](https://developer.chrome.com/docs/devtools/device-mode/)
|
||||
- 🛠️ [Can I Use - ఫీచర్ మద్దతు](https://caniuse.com/)
|
||||
- 🛠️ [BrowserStack - క్రాస్ బ్రౌజర్ పరీక్ష](https://www.browserstack.com/)
|
||||
|
||||
### కోడ్ నాణ్యత టూల్స్
|
||||
- ✅ [CSS Validator](https://jigsaw.w3.org/css-validator/)
|
||||
- ✅ [HTML Validator](https://validator.w3.org/)
|
||||
- ✅ [WebAIM Contrast Checker](https://webaim.org/resources/contrastchecker/)
|
||||
|
||||
## బోనస్ సవాళ్లు
|
||||
|
||||
🌟 **అధునాతన లేఅవుట్లు**: మీ డిజైన్లో Flexbox మరియు Grid రెండూ వేర్వేరు భాగాల్లో అమలు చేయండి
|
||||
🌟 **అనిమేషన్ సమ్మిళనం**: మీ కొత్త లేఅవుట్తో పనిచేసే CSS ట్రాన్శిషన్లు లేదా అనిమేషన్లు జోడించండి
|
||||
🌟 **డార్క్ మోడ్**: CSS కస్టమ్ ప్రాపర్టీల ఆధారంగా థీమ్ స్విచ్చర్ అమలు చేయండి
|
||||
🌟 **కంటైనర్ ప్రశ్నలు**: భాగాల స్థాయి స్పందనకు ఆధునిక కంటైనర్ క్వెరీ సాంకేతికతలను ఉపయోగించండి
|
||||
|
||||
> 💡 **గమనిక**: పనిచేసేలా చేయడం మాత్రమే కాదు, మీరు ఎంచుకున్న లేఅవుట్ పద్ధతి ఈ డిజైన్ సరసమయానికి అత్యుత్తమ పరిష్కారం ఎందుకు అనేది అర్థం చేసుకోవడమూ ముఖ్యమే!
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**గమనిక**:
|
||||
ఈ పత్రికను AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వాన్ని సాధించడానికి ప్రయత్నిస్తున్నప్పటికీ, ఆటోమేటెడ్ అనువాదాలలో లోపాలు లేదా అపార్ధాలు ఉండవచ్చు. స్థానిక భాషలో ఉన్న అసలు పత్రికను అధికారిక మూలంగా పరిగణించాలి. అత్యవసర సమాచారం కోసం, వృత్తిపరమైన మానవ అనువాదం చేయించడం ఉత్తమం. ఈ అనువాదాన్ని ఉపయోగించడంలో ఏవైనా తప్పు అర్థాలు లేదా విక్షేపాల కోసం మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,139 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "947ca5ce7c94aee9c7de7034e762bc17",
|
||||
"translation_date": "2026-01-08T19:05:51+00:00",
|
||||
"source_file": "3-terrarium/3-intro-to-DOM-and-closures/assignment.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# DOM Element Investigation Assignment
|
||||
|
||||
## అవలోకనం
|
||||
|
||||
మీరు DOM మానిప్యులేషన్ శక్తిని ప్రత్యక్షంగా అనుభవించిన తర్వాత, ఇప్పుడు DOM ఇంటర్ఫేసుల విస్తృత ప్రపంచాన్ని అన్వేషించడానికి సమయం వచ్చింది. ఈ అసైన్మెంట్ మీకు డ్రాగ్ చేయడం మాత్రమే కాకుండా వివిధ వెబ్ సాంకేతికతలు DOM తో ఎలా ఇంటరాక్ట్ అవుతాయో మీ అర్థం పెంపొందిస్తుంది.
|
||||
|
||||
## నేర్చుకోవలసిన లక్ష్యాలు
|
||||
|
||||
ఈ అసైన్మెంట్ పూర్తి చేయడం ద్వారా మీరు:
|
||||
- **శోధించండి** మరియు నిర్దిష్ట DOM ఇంటర్ఫేసును లోతుగా అర్థం చేసుకోండి
|
||||
- **విశ్లేషించండి** DOM మానిప్యులేషన్ యొక్క వాస్తవ ప్రపంచ అమలు విధానాలను
|
||||
- **జోడించండి** సిద్ధాంత పరమైన సిద్ధాంతాలను ప్రాథమిక ఉపయోగాలతో
|
||||
- **అభివృద్ధి చేయండి** సాంకేతిక డాక్యుమెంటేషన్ మరియు విశ్లేషణలో నైపుణ్యాలు
|
||||
|
||||
## సూచనలు
|
||||
|
||||
### దశ 1: మీ DOM ఇంటర్ఫేసును ఎంచుకోండి
|
||||
|
||||
MDN యొక్క విస్తృత [DOM ఇంటర్ఫేసుల జాబితా](https://developer.mozilla.org/docs/Web/API/Document_Object_Model) సందర్శించి మీరు ఆసక్తి ఉన్న ఒక ఇంటర్ఫేసును ఎంచుకోండి. వైవిధ్యానికి ఈ వర్గాల్లోంచి ఎంచుకోవడం పరిశీలించండి:
|
||||
|
||||
**ఆరంభ స్నేహపూర్వక ఎంపికలు:**
|
||||
- `Element.classList` - డైనమిక్ గా CSS తరగతులు నిర్వహించడం
|
||||
- `Document.querySelector()` - అధునాతన ఎలిమెంట్ ఎంపిక
|
||||
- `Element.addEventListener()` - పాయింటర్ ఈవెంట్లకు మించి ఈవెంట్ నిర్వహణ
|
||||
- `Window.localStorage` - క్లయింట్-సైడ్ డేటా నిల్వ
|
||||
|
||||
**మధ్యస్థ సవాళ్లు:**
|
||||
- `Intersection Observer API` - ఎలిమెంట్ దృశ్యమానత గుర్తింపు
|
||||
- `MutationObserver` - DOM మార్పులను పరిశీలించడం
|
||||
- `Drag and Drop API` - మా పాయింటర్ ఆధారిత విధానం కి ప్రత్యామ్నాయం
|
||||
- `Geolocation API` - వాడుకరి స్థానం పొందుట
|
||||
|
||||
**ఉన్నత అన్వేషణ:**
|
||||
- `Web Components` - కస్టమ్ ఎలిమెంట్లు మరియు శాడో.DOM
|
||||
- `Canvas API` - ప్రోగ్రామేటిక్ గ్రాఫిక్స్
|
||||
- `Web Workers` - బ్యాక్గ్రౌండ్ ప్రాసెసింగ్
|
||||
- `Service Workers` - ఆఫ్లైన్ ఫంక్షనాలిటీ
|
||||
|
||||
### దశ 2: పరిశోధన మరియు డాక్యుమెంటేషన్ చేయండి
|
||||
|
||||
క్రింద పేర్కొన్న అంశాలు కలిగిన సమగ్ర విశ్లేషణ (300-500 పదాలు) రూపొందించండి:
|
||||
|
||||
#### సాంకేతిక అవలోకనం
|
||||
- **మీ ఆలోచించిన ఇంటర్ఫేసు ఏమి చేస్తుంది అనే విషయం** సుస్పష్టం, ఆరంభ దశలో ఉన్నవారికి అనుకూలమైన భాషలో నిర్వచించండి
|
||||
- **కీలక పద్ధతులు, లక్షణాలు లేదా ఈవెంట్లను** వివరించండి
|
||||
- **అది పరిష్కరించేటటువంటి సమస్యల వర్గాలను** స్వళ్ళించండి
|
||||
|
||||
#### వాస్తవ ప్రపంచ అమలు
|
||||
- **మీరు ఎంచుకున్న ఇంటర్ఫేసును ఉపయోగించే ఏదైనా వెబ్సైట్ను కనుగొనండి** (కోడును పరిశీలించండి లేదా ఉదాహరణలు శోధించండి)
|
||||
- **కనం ఉంటే విశేష అమలును కోడ్ స్నిపెట్టులతో డాక్యుమెంట్ చేయండి**
|
||||
- **డెవలపర్లు ఈ విధానాన్ని ఎందుకు ఎంచుకున్నారో విశ్లేషించండి**
|
||||
- **ఇది యూజర్ అనుభవాన్ని ఎలా మెరుగుపరుస్తుందో వివరించండి**
|
||||
|
||||
#### ప్రాయోగిక అప్లికేషన్
|
||||
- **మీ ఇంటర్ఫేసును terrarium ప్రాజెక్టులో వాడిన సాంకేతికతలతో పోల్చండి**
|
||||
- **మీ ఇంటర్ఫేసు terrarium కార్యాచరణను ఎలా మెరుగుపరచవచ్చో సూచించండి**
|
||||
- **ఇది ఇతర ప్రాజెక్టులలో బాగా ఉపయోగపడే ప్రదేశాలను గుర్తించండి**
|
||||
|
||||
### దశ 3: కోడ్ ఉదాహరణ
|
||||
|
||||
మీ ఇంటర్ఫేసును ప్రదర్శించే సరళమైన, పనిచేసే కోడ్ ఉదాహరణను చేర్చండి. ఇది:
|
||||
- **చర్యాత్మకంగా పని చేయాలి** - వాస్తవ పరీక్షలో పనిచేయాలి
|
||||
- **వ్యాఖ్యలతో ఉండాలి** - ప్రతి భాగం ఏమి చేస్తుందో వివరించాలి
|
||||
- **సంబంధితంగా ఉండాలి** - వాస్తవ పనితీరు సందర్భంతో
|
||||
- **ఆరంభ దశలో ఉన్నవారికి అనుకూలంగా ఉండాలి**
|
||||
|
||||
## సమర్పణ ఫార్మాట్
|
||||
|
||||
మీ సమర్పణ స్పష్టమైన శీర్షికలతో నిర్మించండి:
|
||||
|
||||
```markdown
|
||||
# [Interface Name] DOM Investigation
|
||||
|
||||
## What It Does
|
||||
[Technical overview]
|
||||
|
||||
## Real-World Example
|
||||
[Website analysis and implementation details]
|
||||
|
||||
## Code Demonstration
|
||||
[Your working example with comments]
|
||||
|
||||
## Reflection
|
||||
[How this connects to our terrarium project and future applications]
|
||||
```
|
||||
|
||||
## మూల్యాంకన మ్యాట్రిక్స్
|
||||
|
||||
| ప్రమాణాలు | ఉత్తమ(A) | నిపుణత కలిగిన (B) | అభివృద్ధి చెందుతున్న (C) | మెరుగుదల అవసరం (D) |
|
||||
|----------|---------------|----------------|----------------|----------------------|
|
||||
| **సాంకేతిక అర్థం** | సరైన వివరణలు మరియు సక్రమ పదజాలంతో లోతైన అర్థం కనబరుస్తుంది | ఎక్కువ భాగం సరైన వివరణలతో బలమైన అర్థం చూపిస్తుంది | కొన్ని తప్పిదాలు ఉన్న ప్రాథమిక అర్థం | గణనీయమైన లోపాలతో పరిమిత అర్థం |
|
||||
| **వాస్తవ ప్రపంచ విశ్లేషణ** | నిర్దిష్ట ఉదాహరణలతో నిజమైన అమలును గుర్తించి, లోతుగా విశ్లేషిస్తుంది | తగిన విశ్లేషణతో నిజమైన ఉదాహరణను కనుగొంటుంది | ఉదాహరణను కనుగొంటుంది కానీ విశ్లేషణ లోతు కొరత | అస్పష్ట లేదా తప్పుల చేసిన వాస్తవ అనుబంధం |
|
||||
| **కోడ్ ఉదాహరణ** | పని చేసే, బాగా వ్యాఖ్యానించిన కోడ్ ఇంటర్ఫేసును స్పష్టంగా చూపిస్తుంది | సరైన వ్యాఖ్యలతో పని చేసే కోడ్ | కోడ్ పని చేస్తుంది కానీ డాక్యుమెంటేషన్ మెరుగవ్వాలి | కోడులో తప్పులున్నది లేదా విపరీత వివరణ |
|
||||
| **రాయడంలో నాణ్యత** | స్పష్టమైన, ఆకర్షణీయమైన రాయడం, సక్రమ నిర్మాణంతో | సక్రమంగా కాంటెంట్ వస్తుంది మరియు సాంకేతిక రాయడంలో బాగా ఉంటది | తగిన క్రమపద్ధతిలో ఉంది మరియు స్పష్టత | సరిగా క్రమం లేకపోవడం లేదా అపార్థమైన సంభాషణ |
|
||||
| **తీలకాత్మక ఆలోచన** | సిద్ధాంతాల మధ్య లోతైన సంబంధాలు కనబరుచుకుని, సృజనాత్మక ఉపయోగాలను సూచిస్తుంది | మంచి విశ్లేషణాత్మక ఆలోచన మరియు సంబంధాలను చూపిస్తుంది | కొంత విశ్లేషణ ఉంది కానీ లోతు లేకపోవచ్చు | తేలికపాటి తేలికగా తీలకాత్మక ఆలోచన |
|
||||
|
||||
## విజయానికి సూచనలు
|
||||
|
||||
**శోధనా వ్యూహాలు:**
|
||||
- **MDN డాక్యుమెంటేషన్** తో అధికారిక సమాచారం ప్రారంభించండి
|
||||
- **GitHub లేదా CodePen లో కోడ్ ఉదాహరణలు** చూడండి
|
||||
- **బ్రౌజర్ డెవలపర్ టూల్స్తో ప్రాచుర్యం చెందిన वेबसाइटలు పరిశీలించండి**
|
||||
- **విజువల్ వివరణలకు ట్యుటోరియల్ వీడియోలు చూడండి**
|
||||
|
||||
**రాయడం గైడ్లైన్స్:**
|
||||
- **మీ సొంత మాటల్లో రాయండి, కాపీ చేయవద్దు**
|
||||
- **నిర్దిష్ట ఉదాహరణలు మరియు కోడ్ స్నిపెట్టులను చేర్చండి**
|
||||
- **సాంకేతికக் కాన్సెప్ట్లను స్నేహితుడికి నేర్పినట్లు వివరించండి**
|
||||
- **మీ ఇంటర్ఫేసును వెబ్ అభివృద్ధి పెద్ద భావాలతో కలపండి**
|
||||
|
||||
**కోడ్ ఉదాహరణ ఆలోచనలు:**
|
||||
- **ఇంటర్ఫేసు ప్రధాన లక్షణాలను ప్రదర్శించే సరళమైన డెమో సృష్టించండి**
|
||||
- **terrarium ప్రాజెక్టు భావాలను అనుసరించి నిర్మాణం చేయండి**
|
||||
- **దృశ్య నమూనా కంటే ఫంక్షనాలిటీపై దృష్టి పెట్టండి**
|
||||
- **మీ కోడ్ సరైన పని చేస్తుందా పరీక్షించండి**
|
||||
|
||||
## సమర్పణ గడువు తేదీ
|
||||
|
||||
[ఇక్కడ గడువు తేదీ పెట్టండి]
|
||||
|
||||
## ప్రశ్నలున్నాయా?
|
||||
|
||||
ఈ అసైన్మెంట్ సంబంధించిన ఏ అంశంపై స్పష్టత కావాలంటే, సంకోచించకుండా అడగండి! ఈ విచారణDOM ద్వారా మద్దతు పొందే క్రియాశీల వెబ్ అనుభవాలను మీరు ప్రతి రోజు ఎలా వాడుతున్నారో లోతుగా అర్థం చేసుకునే అవకాశం ఇస్తుంది.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**అస్పష్టత**:
|
||||
ఈ డాక్యుమెంట్ను AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించినది. మేము సరిగా ఉండడానికి ప్రయత్నిస్తామని, అయినప్పటికీ ఆటోమేటెడ్ అనువాదాలలో పొరపాట్లు లేదా అప్రమాణాలు ఉండవచ్చు అని జాగ్రత్తగా గమనించండి. దయచేసి అసలు డాక్యుమెంట్ దాని స్థానిక భాషలో ఉన్నది అధికారిక మూలంగా పరిగణించాలి. కీలకమైన సమాచారం కోసం, ప్రొఫెషనల్ మానవ అనువాదం సూచించబడుతుంది. ఈ అనువాదం వాడకం వల్ల ఏదైనా అవగాహన లోపాలు లేదా తప్పు అర్థం చేసుకోవడంపై మేము బాధ్యులు కాదు.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,30 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "bc5c5550f79d10add90ce419ee34abb3",
|
||||
"translation_date": "2026-01-08T11:36:30+00:00",
|
||||
"source_file": "3-terrarium/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
## మీ టెర్రేరియంను మోపండి
|
||||
|
||||
మీరు **Azure Static Web Apps** ఉపయోగించి మీ టెర్రేరియాన్ని వెబ్ పై మోపవచ్చు లేదా ప్రచురించవచ్చు.
|
||||
|
||||
1. ఈ రిపోను fork చెయ్యండి
|
||||
|
||||
2. ఈ బటన్ను నొక్కండి 👇
|
||||
|
||||
[](https://portal.azure.com/#create/Microsoft.StaticApp)
|
||||
|
||||
3. మీ యాప్ని సృష్టించడానికి సెటప్ విజార్డ్ను అనుసరించండి.
|
||||
- **App root** ను `/solution` లేదా మీ కోడ్బేస్ రూట్గా సెట్ చేయండి.
|
||||
- ఈ యాప్లో API లేదు, కాబట్టి API కాన్ఫిగరేషన్ను సోకించవద్దు.
|
||||
- Azure Static Web Apps మీ యాప్ను బిల్డ్ చేసి ప్రచురించడానికి సహాయపడుతుంది, అందుకోసం `.github` ఫోల్డరు ఆటోమేటిగ్గా సృష్టించబడుతుంది.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**వ్యాఖ్య**:
|
||||
ఈ డాక్యుమెంట్ [Co-op Translator](https://github.com/Azure/co-op-translator) అనే AI అనువాద సేవను ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నిస్తున్నప్పటికీ, స్వయంచాలకంగా చేసిన అనువాదాలలో పొరపాట్లు లేదా తప్పులు ఉండొచ్చు. స్థానిక భాషలో ఉన్న మౌలిక డాక్యుమెంట్ ని అధికారిక మూల్యాధారం గా పరిగణించాలి. కీలక సమాచారం కోసం, నిపుణుల చేత చేసిన మానవ అనువాదం అవసరం. ఈ అనువాదాన్ని ఉపయోగించడంవల్ల ఏర్పడే ఏవైన అయోమయాలు లేదా తప్పుగా అర్థమగొనడంపై మేం బాధ్యత లేకపోదాము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,41 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "6329fbe8bd936068debd78cca6f09c0a",
|
||||
"translation_date": "2026-01-08T19:09:33+00:00",
|
||||
"source_file": "3-terrarium/solution/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# నా టెరారియం: జావాస్క్రిప్ట్ ఉపయోగించి HTML, CSS మరియు DOM మానిప్యులేషన్ గురించి నేర్చుకోవడానికి ఒక ప్రాజెక్టు 🌵🌱
|
||||
|
||||
స్వల్పమైన డ్రాగ్ అండ్ డ్రాప్ కోడ్-మెడిటేషన్. కొద్దిగా HTML, JS మరియు CSS తో, మీరు ఒక వబ్ ఇంటర్ఫేస్ని తయారుచేయవచ్చు, దాన్ని శోభాయమానంగా మార్చవచ్చు మరియు ఒక ఇంటరాక్షన్ చేర్చవచ్చు.
|
||||
|
||||

|
||||
|
||||
## క్రెడిట్స్
|
||||
|
||||
♥️ గల రచన [Jen Looper](https://www.twitter.com/jenlooper) ద్వారా
|
||||
|
||||
CSS ద్వారా సృష్టించబడిన టెరారియం, Jakub Mandra యొక్క గ్లాస్ జార్ [codepen](https://codepen.io/Rotarepmi/pen/rjpNZY) నుండి ప్రేరితమైంది.
|
||||
|
||||
కళాకృతి Procreate ఉపయోగించి [Jen Looper](http://jenlooper.com) చేత చేతుల మీదుగా వేసింది.
|
||||
|
||||
## మీ టెరారియం ను డిప్లాయ్ చేయండి
|
||||
|
||||
మీరు Azure Static Web Apps ను ఉపయోగించి మీ టెరారియం ను వెబ్లో డిప్లాయ్ చేయవచ్చు లేదా ప్రచురించవచ్చు.
|
||||
|
||||
1. ఈ రిపోను fork చేయండి
|
||||
|
||||
2. ఈ బటన్ నొక్కండి
|
||||
|
||||
[](https://portal.azure.com/?feature.customportal=false&WT.mc_id=academic-77807-sagibbon#create/Microsoft.StaticApp)
|
||||
|
||||
3. మీ యాప్ని సృష్టిస్తూ విజార్డ్ ద్వారా నడవండి. యాప్ రూట్ గా `/solution` లేదా మీ కోడ్బేస్ రూట్ని మీరు సెట్ చేశారంటే బాగుంటుంది. ఈ యాప్లో ఏ API లేదు కాబట్టి దానిని జోడించుకోవద్దు. మీ fork చేసిన repo లో .github ఫోల్డర్ సృష్టించబడుతుంది, ఇది Azure Static Web Apps యొక్క బిల్డ్ సర్వీస్కు మీ యాప్ను నిర్మించి కొత్త URL వద్ద ప్రచురించడానికి సహాయపడుతుంది.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**విడుదల నోటీసు**:
|
||||
ఈ పత్రాన్ని AI అనువాద సేవ అయిన [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించాము. మేము ఖచ్చితత్వానికి కొంత శ్రద్ధ పెట్టినా, స్వయంచాలక అనువాదాల్లో తప్పులు లేదా అసమర్ధతలు ఉండవచ్చని దయచేసి గమనించండి. స్థానిక భాషలో ఉన్న ఒరిజినల్ పత్రాన్ని అధికారిక మూలంగా పరిగణించాలి. అత్యవసర సమాచారానికి, వృత్తిపరమైన మానవ అనువాదాన్ని సూచిస్తాము. ఈ అనువాదం వలన కలిగే ఎటువంటి అపార్థాలు లేదా భ్రమలకైనా మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,290 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "efa2ab875b8bb5a7883816506da6b6d2",
|
||||
"translation_date": "2026-01-08T11:32:03+00:00",
|
||||
"source_file": "4-typing-game/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# ఈవెంట్-డ్రివెన్ ప్రోగ్రామింగ్ - ఒక టైపింగ్ గేమ్ తయారు చేయండి
|
||||
|
||||
```mermaid
|
||||
journey
|
||||
title మీ టైపింగ్ గేమ్ అభివృద్ధి ప్రయాణం
|
||||
section మౌలికం
|
||||
గేమ్ నిర్మాణం ప్రణాళిక: 3: Student
|
||||
వినియోగదారుడు ఇంటర్ఫేస్ డిజైన్ చేయండి: 4: Student
|
||||
HTML అంశాలను సెటప్ చేయండి: 4: Student
|
||||
section ఫంక్షనాలిటీ
|
||||
వినియోగదారు ఇన్పుట్ నిర్వహించండి: 4: Student
|
||||
సమయాన్ని ట్రాక్ చేయండి: 5: Student
|
||||
ఖచ్చితత్వాన్ని లెక్కించండి: 5: Student
|
||||
section లక్షణాలు
|
||||
విజువల్ ఫీడ్బ్యాక్ జోడించండి: 5: Student
|
||||
గేమ్ లాజిక్ అమలు చేయండి: 5: Student
|
||||
అనుభవాన్ని మెరుగుపరచండి: 5: Student
|
||||
```
|
||||
## పరిచయం
|
||||
|
||||
ప్రతి డెవలపర్ తెలుసుకున్న కానీ అరుదుగా మాట్లాడే విషయం ఇదే: వేగంగా టైప్ చేయటం ఒక సూపర్ పవర్! 🚀 దీ్ని గురించి ఆలోచించండి - మీరు మీ ఆలోచనలను మెదడుండి మీ కోడ్ ఎడిటర్ వరకు ఎంత వేగంగా తేవగలరో, అంతే మీ సృజనాత్మకత ఎక్కువగా ప్రవహిస్తుంది. ఇది మీ ఆలోచనలు మరియు స్క్రీన్ మధ్య ప్రత్యక్ష పైప్లైన్ లాగా ఉంటుంది.
|
||||
|
||||
```mermaid
|
||||
pie title గేమ్ ఫీచర్లు
|
||||
"సమయానుకూల అభిప్రాయం" : 25
|
||||
"ప్రదర్శన ట్రాకింగ్" : 20
|
||||
"ఇంటరాక్టివ్ UI" : 20
|
||||
"టైమర్ సిస్టమ్" : 15
|
||||
"కొటేషన్ నిర్వహణ" : 10
|
||||
"ఫలితాల ప్రదర్శన" : 10
|
||||
```
|
||||
ఈ నైపుణ్యాన్ని మెరుగుపర్చడానికి ఉత్తమ మార్గాల్లో ఒకటి తెలుసుకోవాలా? మీరు ఊహించినట్టు - మనం ఒక గేమ్ తయారుచేయబోతున్నాము!
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A[ప్లేయర్ ఆట మొదలుపెట్టి] --> B[యాదృచ్ఛిక اقتباس ప్రదర్శించబడింది]
|
||||
B --> C[ప్లేయర్ అక్షరాలు టైప్ చేస్తాడు]
|
||||
C --> D{అక్షరం సరియైనదా?}
|
||||
D -->|అవును| E[పచ్చటి హైలైట్]
|
||||
D -->|కాదు| F[ఆవిరి హైలైట్]
|
||||
E --> G[ఖచ్చితత్వాన్ని నవీకరించు]
|
||||
F --> G
|
||||
G --> H{اقتбاس పూర్తి కాలేదా?}
|
||||
H -->|కాదు| C
|
||||
H -->|అవును| I[వర్డ్ పర్ మినిట్ లెక్కించు]
|
||||
I --> J[ఫలితాలను ప్రదర్శించు]
|
||||
J --> K[మళ్ళీ ఆడు?]
|
||||
K -->|అవును| B
|
||||
K -->|కాదు| L[గేమ్ ముగిసింది]
|
||||
|
||||
style A fill:#e1f5fe
|
||||
style D fill:#fff3e0
|
||||
style E fill:#e8f5e8
|
||||
style F fill:#ffebee
|
||||
style I fill:#f3e5f5
|
||||
```
|
||||
> మనం కలిసి ఒక అద్భుతమైన టైపింగ్ గేమ్ సృష్టしましょう!
|
||||
|
||||
మీరు నేర్చుకుంటున్న JavaScript, HTML, మరియు CSS నైపుణ్యాలను ఉపయోగించడానికి సిద్ధంగా ఉన్నారా? మనం టైపింగ్ గేమ్ బిల్డ్ చేయబోతున్నాము, ఇది పුරాతన డిటెక్టివ్ [షెర్లాక్ హోమ్స్](https://en.wikipedia.org/wiki/Sherlock_Holmes) నుండి యాదృచ్ఛిక కోట్ లతో మీని సవాలు చేస్తుంది. ఈ గేమ్ మీరు ఎంత వేగంగా మరియు ఖచ్చితత్వంతో టైప్ చేయగలరో ట్రాక్ చేస్తుంది -そして నమ్మండి, ఇది మీరు అనుకున్నదానికంటే ఎక్కువ అలవాటు చేయనిది!
|
||||
|
||||
```mermaid
|
||||
mindmap
|
||||
root((টাইপিং গేమ్ উন্নয়ন))
|
||||
User Interface
|
||||
Input Elements
|
||||
Visual Feedback
|
||||
Responsive Design
|
||||
Accessibility
|
||||
Game Logic
|
||||
Quote Selection
|
||||
Timer Management
|
||||
Accuracy Tracking
|
||||
Score Calculation
|
||||
Event Handling
|
||||
Keyboard Input
|
||||
Button Clicks
|
||||
Real-time Updates
|
||||
Game State Changes
|
||||
Performance Metrics
|
||||
Words Per Minute
|
||||
Character Accuracy
|
||||
Error Tracking
|
||||
Progress Display
|
||||
User Experience
|
||||
Immediate Feedback
|
||||
Clear Instructions
|
||||
Engaging Content
|
||||
Achievement System
|
||||
```
|
||||

|
||||
|
||||
## మీరు తెలుసుకోవలసిందు ఏమిటి
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[యూజర్ చర్య] --> B{ఈవెంట్ రకం?}
|
||||
B -->|సెలక్ట్ నొక్కడం| C[కీలిపడ事件]
|
||||
B -->|బటన్ క్లిక్| D[మౌస్ ఈవెంట్]
|
||||
B -->|టైమర్| E[సమయం ఈవెంట్]
|
||||
|
||||
C --> F[అక్షరం తనిఖీ చేయండి]
|
||||
D --> G[గేమ్ ప్రారంభం/రీసెట్]
|
||||
E --> H[టైమర్ అప్డేటు]
|
||||
|
||||
F --> I{సరిచేయాలా?}
|
||||
I -->|అవును| J[గ్రీన్ హైలైట్]
|
||||
I -->|కాదు| K[రెడ్ హైలైట్]
|
||||
|
||||
J --> L[స్కోర్ అప్డేటు]
|
||||
K --> L
|
||||
L --> M[గేమ్ స్థితి తనిఖీ]
|
||||
|
||||
G --> N[కొత్త కోట్ తయారు చేయండి]
|
||||
H --> O[సమయం ప్రదర్శన]
|
||||
|
||||
M --> P{గేమ్ పూర్తయిందా?}
|
||||
P -->|అవును| Q[ఫలితాలు చూపించు]
|
||||
P -->|కాదు| R[గేమ్ కొనసాగించు]
|
||||
|
||||
style A fill:#e1f5fe
|
||||
style F fill:#e8f5e8
|
||||
style I fill:#fff3e0
|
||||
style Q fill:#f3e5f5
|
||||
```
|
||||
మనం లోతుగా వెళ్లేముందు, మీరు ఈ ఆలోచనలతో సౌకర్యంగా ఉన్నారని నిర్ధారించుకోండి (తక్షణ హవా అవసరం అయితే భయపడకండి - మనందరం అలానే ఉన్నాము!):
|
||||
|
||||
- టెక్స్ట్ ఇన్పుట్ మరియు బటన్ నియంత్రణలను సృష్టించడం
|
||||
- CSS మరియు తరగతుల ద్వారా శైలులను సెట్ చేయడం
|
||||
- JavaScript ప్రారంభాలు
|
||||
- అర్రే సృష్టించడం
|
||||
- యాదృచ్ఛిక సంఖ్యను సృష్టించడం
|
||||
- ప్రస్తుత సమయాన్ని పొందడం
|
||||
|
||||
ఇవి ఏదైనా కొంచెం మాత్రం నన్నయినట్లయితే, అది బాగానే ఉంది! కొన్ని సార్లు మీ జ్ఞానాన్ని బలపర్చడానికి ఉత్తమ మార్గం ప్రాజెక్టులో చొరబడడం మరియు దారిలో తెలుసుకోవడం.
|
||||
|
||||
### 🔄 **పాఠశాలాత్మక తనిఖీ**
|
||||
**ఆధార మూల్యాంకనం**: అభివృద్ధి ప్రారంభించే ముందు, మీరు ఈ విషయాలను అర్థం చేసుకోవాలి:
|
||||
- ✅ HTML ఫారమ్స్ మరియు ఇన్పుట్ ఎలిమెంట్లు ఎలా పనిచేస్తాయో
|
||||
- ✅ CSS తరగతులు మరియు డైనమిక్ స్టైలింగ్
|
||||
- ✅ JavaScript ఈవెంట్ లిసనర్లు మరియు హ్యాండ్లర్స్
|
||||
- ✅ అర్రే మానిప్యులేషన్ మరియు యాదృచ్ఛిక ఎంపిక
|
||||
- ✅ సమయ కొలత మరియు లెక్కలు
|
||||
|
||||
**త్వరిత స్వీయ పరీక్ష**: ఈ ఆలోచనలు ఇంటరాక్టివ్ గేమ్ లో ఎలా పనిచేస్తాయో మీరు వివరిస్తుందా?
|
||||
- **ఈవెంట్లు** వినియోగదారులు ఎలిమెంట్లతో ఇంటరాక్ట్ చేసినప్పుడు ప్రారంభమవుతాయి
|
||||
- **హ్యాండ్లర్స్** ఆ ఈవెంట్లను ప్రాసెస్ చేసి గేమ్ స్థితిని నవీకరిస్తాయి
|
||||
- **CSS** వినియోగదారుల చర్యలకు విజువల్ ఫీడ్బ్యాక్ ఇస్తుంది
|
||||
- **టైమింగ్** పనితీరు కొలత మరియు గేమ్ ప్రగతికి అనుమతిస్తుంది
|
||||
|
||||
```mermaid
|
||||
quadrantChart
|
||||
title టైపింగ్ గేమ్ నైపుణ్యాల అభివృద్ధి
|
||||
x-axis ప్రారంభకుడు --> నిపుణుడు
|
||||
y-axis స్థిరమైనది --> పరస్పర క్రియాత్మక
|
||||
quadrant-1 సున్నిత గేమ్స్
|
||||
quadrant-2 రియల్-టైమ్ యాప్స్
|
||||
quadrant-3 ప్రాథమిక పేజీలు
|
||||
quadrant-4 పరస్పర సైట్లు
|
||||
|
||||
HTML ఫారమ్స్: [0.3, 0.2]
|
||||
CSS స్టైలింగ్: [0.4, 0.3]
|
||||
ఈవెంట్ హ్యాండ్లింగ్: [0.7, 0.8]
|
||||
గేమ్ లాజిక్: [0.8, 0.9]
|
||||
పనితీరు ట్రాకింగ్: [0.9, 0.7]
|
||||
```
|
||||
## మనం ఈ విషయం సృష్టిద్దాం!
|
||||
|
||||
[ఈవెంట్ డ్రివెన్ ప్రోగ్రామింగ్ ఉపయోగించి టైపింగ్ గేమ్ సృష్టించడం](./typing-game/README.md)
|
||||
|
||||
### ⚡ **తరువాతి 5 నిమిషాల్లో మీరు చేయగలిగేది**
|
||||
- [ ] మీ బ్రౌజర్ కన్సోల్ తెరిచి, `addEventListener` తో కీబోర్డ్ ఈవెంట్లను వినడం ప్రయత్నించండి
|
||||
- [ ] ఒక సాదా HTML పేజీ సృష్టించి, ఇన్పుట్ ఫీల్డ్ తో టైపింగ్ గుర్తింపును పరీక్షించండి
|
||||
- [ ] టైప్ చేసిన టెక్స్ట్ ను లక్ష్య టెక్స్ట్ తో పోల్చి స్ట్రింగ్ మానిప్యులేషన్ పరిపర్యవేక్షణ
|
||||
- [ ] టైమింగ్ ఫంక్షన్లను అర్థం చేసుకోవడానికి `setTimeout` తో ప్రయోగించండి
|
||||
|
||||
### 🎯 **ఈ గంటలో మీరు సాధించగలిగేది**
|
||||
- [ ] పాఠం తరువాత చేసుకునే క్విజ్ పూర్తి చేసి ఈవెంట్-డ్రివెన్ ప్రోగ్రామింగ్ అర్థం చేసుకోవడం
|
||||
- [ ] పద ధ్రువీకరణతో టైపింగ్ గేమ్ యొక్క ప్రాథమిక వెర్షన్ నిర్మాణం
|
||||
- [ ] సరైన మరియు తప్పు టైపింగ్ కోసం విజువల్ ఫీడ్బ్యాక్ జోడించడం
|
||||
- [ ] వేగం మరియు ఖచ్చితత్వం ఆధారంగా సాధారణ స్కోరింగ్ వ్యవస్థ అమలు
|
||||
- [ ] మీ గేమ్ దృష్టిని ఆకర్షించేలా CSS తో స్టైలింగ్
|
||||
|
||||
### 📅 **మీ వారాంతపు గేమ్ అభివృద్ధి**
|
||||
- [ ] అన్ని ఫీచర్లతో పూర్తి టైపింగ్ గేమ్ తయారు చేయడం మరియు మెరుగుదల
|
||||
- [ ] వేరు వేరు పద క్లిష్టతలతో కష్టం స్థాయిలను జోడించడం
|
||||
- [ ] వినియోగదారుల గణాంకాలు ట్రాకింగ్ (WPM, సమయం తో ఖచ్చితత్వం)
|
||||
- [ ] మెరుగైన వినియోగదారుల అనుభవం కోసం శబ్ద эффекты మరియు అనిమేషన్స్ సృష్టించడం
|
||||
- [ ] మీ గేమ్ ను మొబైల్-ప్రతిస్పందకంగా చేసుకోవడం
|
||||
- [ ] ఆన్లైన్లో మీ గేమ్ను పంచుకోవడం మరియు వినియోగదారుల స్పందన సేకరించడం
|
||||
|
||||
### 🌟 **మీ నెల పాటు ఇంటరాక్టివ్ అభివృద్ధి**
|
||||
- [ ] వేరు వేరు ఇంటరాక్షన్ నమూనాలు ఇన్వెస్టిగేట్ చేసే మల్టిపుల్ గేమ్స్ సృష్టించడం
|
||||
- [ ] గేమ్ లూప్లు, స్థితి నిర్వహణ, పనితీరు మెరుగుదల గురించి నేర్చుకోవడం
|
||||
- [ ] ఓపెన్ సార్స్ గేమ్ అభివృద్ధి ప్రాజెక్టులకు సహకారం
|
||||
- [ ] ప్రగతిషీల టైమింగ్ కాన్సెప్ట్స్ మరియు సజీవ అనిమేషన్లలో నైపుణ్యం పొందడం
|
||||
- [ ] వివిధ ఇంటరాక్టివ్ అప్లికేషన్లను ప్రదర్శించే పోర్ట్ఫోలియో సృష్టించడం
|
||||
- [ ] గేమ్ అభివృద్ధి మరియు వినియోగదారు ఇంటరాక్షన్ లో ఆసక్తి ఉన్నవారికి మెంటార్గా ఉండడం
|
||||
|
||||
## 🎯 మీ టైపింగ్ గేమ్ మాస్టరీ టైమ్లైన్
|
||||
|
||||
```mermaid
|
||||
timeline
|
||||
title గేమ్ డెవలప్మెంట్ నేర్చుకొనే ప్రగతిచి
|
||||
|
||||
section సెటప్ (10 నిమిషాలు)
|
||||
ప్రాజెక్ట్ రचना: HTML మౌళికం
|
||||
: CSS స్టైలింగ్ సెటప్
|
||||
: JavaScript ఫైల్ సృష్టి
|
||||
|
||||
section యూజర్ ఇంటర్ఫేస్ (20 నిమిషాలు)
|
||||
ఇంటరాక్టివ్ ఎలిమెంట్స్: ఇన్పుట్ ఫీల్డ్స్
|
||||
: బటన్ నియంత్రణలు
|
||||
: ప్రదర్శన ప్రాంతాలు
|
||||
: స్పందనాత్మక లేఅవుట్
|
||||
|
||||
section ఈవెంట్ హ్యాండ్లింగ్ (25 నిమిషాలు)
|
||||
యూజర్ ఇంటరాక్షన్: కీబోర్డ్ ఈవెంట్స్
|
||||
: మౌస్ ఈవెంట్స్
|
||||
: తక్షణ స్పందన
|
||||
: స్థితి నిర్వహణ
|
||||
|
||||
section గేమ్ లాజిక్ (30 నిమిషాలు)
|
||||
మూల కార్యాచరణ: కోట్ సృష్టి
|
||||
: క్యారెక్టర్ సరిపోల్చడం
|
||||
: ఖచ్చితత్వ లెక్కింపు
|
||||
: టైమర్ అమలు
|
||||
|
||||
section పనితీరు ట్రాకింగ్ (35 నిమిషాలు)
|
||||
ప్రమాణాలు & విశ్లేషణలు: WPM లెక్కింపు
|
||||
: లోపాలని ట్రాక్ చేయడం
|
||||
: ప్రగతి విజువలైజేషన్
|
||||
: ఫలితాల ప్రదర్శన
|
||||
|
||||
section పాలిష్ & మెరుగుదల (45 నిమిషాలు)
|
||||
యూజర్ అనుభవం: దృశ్య స్పందన
|
||||
: శబ్ద ప్రభావాలు
|
||||
: కార్యక్రమాలు
|
||||
: ప్రాప్తి సౌకర్యాలు
|
||||
|
||||
section అభివృద్ధి గల ఫీచర్లు (1 వారంలో)
|
||||
విస్తృత కార్యాచరణ: కష్టస్థాయిలు
|
||||
: లీడర్బోర్డ్స్
|
||||
: వ్యక్తిగత కోట్స్
|
||||
: బహు-ప","\play\options
|
||||
|
||||
section ప్రొఫెషనల్ నైపుణ్యాలు (1 నెల)
|
||||
గేమ్ డెవలప్మెంట్: పనితీరు ఆప్టిమైజేషన్
|
||||
: కోడ్ వాస్తుశిల్పం
|
||||
: పరీక్షా వ్యూహాలు
|
||||
: మెయిన్ అమలు నమూనాలు
|
||||
```
|
||||
### 🛠️ మీ గేమ్ అభివృద్ధి టూల్కిట్ సంగ్రహం
|
||||
|
||||
ఈ ప్రాజెక్ట్ పూర్తి చేసిన తర్వాత, మీరు నేర్చుకుంటారు:
|
||||
- **ఈవెంట్-డ్రివెన్ ప్రోగ్రామింగ్**: ఇన్పుట్కు ప్రతిస్పందించే యూజర్ ఇంటర్ఫేస్లు
|
||||
- **రీయల్-టైమ్ ఫీడ్బ్యాక్**: తక్షణ విజువల్ మరియు పనితీరు అప్డేట్స్
|
||||
- **పనితీరు కొలత**: ఖచ్చితమైన టైమింగ్ మరియు స్కోరింగ్ సిస్టమ్లు
|
||||
- **గేమ్ స్థితి నిర్వహణ**: అనువర్తన ప్రవాహం మరియు వినియోగదారుల అనుభవం నియంత్రణ
|
||||
- **ఇంటరాక్టివ్ డిజైన్**: ఆకట్టుకునే, అలవాటు పెడిచే వినియోగదారు అనుభవాల సృష్టి
|
||||
- **ఆధునిక వెబ్ APIలు**: బ్రౌజర్ సామర్థ్యాలు వాడుకొని సమృద్ధి గల ఇంటరాక్షన్స్
|
||||
- **ప్రాప్తి నమూనాలు**: అన్ని వినియోగదారుల కోసం సమానమైన డిజైన్
|
||||
|
||||
**వాస్తవ ప్రపంచ అనువర్తనాలు**: ఈ నైపుణ్యాలు ప్రత్యక్షంగా వర్తిస్తాయి:
|
||||
- **వెబ్ అనువర్తనాలు**: ఏదైనా ఇంటరాక్టివ్ ఇంటర్ఫేస్ లేదా డాష్బోర్డు
|
||||
- **విద్యా సాఫ్ట్ వేర్**: నేర్చుకునే వేదికలు మరియు నైపుణ్య మూల్యాంకన టూల్లు
|
||||
- **ఉత్పాదకత టూల్లు**: టెక్ట్స్ ఎడిటర్లు, IDEలు మరియు సహకార సాఫ్ట్వేర్
|
||||
- **గేమింగ్ పరిశ్రమ**: బ్రౌజర్ గేమ్స్ మరియు ఇంటరాక్టివ్ వినోదం
|
||||
- **మొబైల్ అభివృద్ధి**: టచ్-ఆధారిత ఇంటర్ఫేస్లు మరియు ఇశారాలు నిర్వహణ
|
||||
|
||||
**తరువాతి స్థాయి**: మీరు అధునాతన గేమ్ ఫ్రేమ్వర్క్స్, రియల్-టైమ్ మల్టీ ప్లేయర్ సిస్టమ్స్, లేదా సంక్లిష్ట ఇంటరాక్టివ్ అప్లికేషన్లను అన్వేషించడానికి సిద్ధంగా ఉన్నారు!
|
||||
|
||||
## క్రెడిట్స్
|
||||
|
||||
♥️ తో రచించారు [Christopher Harrison](http://www.twitter.com/geektrainer)
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**అస్పష్టం**:
|
||||
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించడం జరిగింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, స్వయంచాలక అనువాదాల్లో తప్పులు లేదా అసమర్థతలు ఉండవచ్చు. స్థానిక భాషలో ఉన్న మౌలిక పత్రం అధికారిక మూలంగా పరిగణించాల్సినది. ముఖ్యమైన సమాచారానికి, నిపుణుల మానవ అనువాదం చేయించుకోవడం మంజూరు చేయబడింది. ఈ అనువాదం వాడకం వల్ల ఏర్పడే ఏవైనా అపార్థాలు లేదా తప్పుఅర్థాలు కోసం మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,17 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "068cbb9b3c10a96d503f6cdd6c9ace8c",
|
||||
"translation_date": "2026-01-08T18:07:50+00:00",
|
||||
"source_file": "4-typing-game/solution/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
ఇది ఒక ప్లేస్హోల్డర్, ఉద్దేశపూర్వకంగా ఖాళీగా ఉంచబడింది
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**డిస్క్లెయిమర్**:
|
||||
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ద్వారా అనువాదం చేసారు. మేము సరైనతకు యత్నిస్తున్నప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో తప్పిదాలు లేదా అసత్యతలు ఉండవచ్చని దయచేసి గమనించండి. మౌలిక భాషలో ఉన్న అసలు పత్రాన్ని అధికారిక వనరుగా పరిగణించాలి. అత్యవసర సమాచారం కోసం, నిపుణుల చేత మానవ అనువాదం చేయించడం మంచిది. ఈ అనువాదం వాడకం వల్ల కలిగే ఏవైనా అపార్థాలు లేదా తప్పుతెలుసుకోవడాలలో మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,613 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "da8bc72041a2bb3826a54654ee1a8844",
|
||||
"translation_date": "2026-01-08T18:09:43+00:00",
|
||||
"source_file": "4-typing-game/typing-game/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# ఈవెంట్ల ఉపయోగంతో గేమ్ సృష్టించడం
|
||||
|
||||
మీరు ఎప్పుడైనా ఆలోచించారా, మీరు బటన్పై క్లిక్ చేసినప్పుడు లేదా టెక్స్ట్ బాక్సులో టైపు చేసినప్పుడు వెబ్సైట్లు ఎలా తెలుసుకుంటాయో? అది ఈవెంట్-డ్రివెన్ ప్రోగ్రామింగ్ మాయాజాలం! మీరు ప్రతి కీస్ట్రోక్కు ప్రతిస్పందించే టైపింగ్ స్పీడ్ గేమ్ని నిర్మించడం ద్వారా ఈ మూలభూత నైపుణ్యాన్ని నేర్చుకోవటానికి ఇంత మంచి మార్గం ఏమిటి.
|
||||
|
||||
మీరు ప్రత్యక్షంగా చూడబోతున్నారు వెబ్ బ్రౌజర్లు మీ జావాస్క్రిప్ట్ కోడ్తో "మాట్లాడటం" ఎలా జరుగుతుందో. మీరు ప్రతి సారి క్లిక్ చేసినప్పుడు, టైపు చేసినప్పుడు లేదా మౌస్ సహజీవనం చేసినప్పుడు, బ్రౌజర్ చిన్న సందేశాలు (మేము వాటిని ఈవెంట్లు అని పిలుస్తాం) మీ కోడ్కు పంపుతోంది, మీరు ఎలా స్పందించాలో నిర్ణయించుకుంటారు!
|
||||
|
||||
మనం ఇక్కడికల్లా వచ్చినప్పుడు, మీరు ఒక నిజమైన టైపింగ్ గేమ్ను నిర్మించి ఉంటుంది, అది మీ వేగాన్ని మరియు ఖచ్చితత్వాన్ని ట్రాక్ చేస్తుంది. మరింత ముఖ్యంగా, మీరు ఇప్పటివరకు ఉపయోగించిన ప్రతి ఇంటరాక్టివ్ వెబ్సైట్ను శక్తివంతం చేసే ప్రాథమిక సంప్రదాయాలను అర్థం చేసుకుంటారు. మొదలు పెట్టుదాం!
|
||||
|
||||
## పాఠం మునుపటి ప్రశ్నావళి
|
||||
|
||||
[Pre-lecture quiz](https://ff-quizzes.netlify.app/web/quiz/21)
|
||||
|
||||
## ఈవెంట్-డ్రివెన్ ప్రోగ్రామింగ్
|
||||
|
||||
మీ ఇష్టమైన యాప్ లేదా వెబ్సైట్ గురించి ఆలోచించండి - దాన్ని ప్రత్యక్షంగా మరియు స్పందించేలా ఎలా చేస్తుంది? అది మీరు చేసే పనికి అది ఎలా స్పందించడమే ముఖ్యమైనది! ప్రతి ట్యాప్, క్లిక్, స్వైప్ లేదా కీస్ట్రోకు "ఈవెంట్" అని పిలవబడే ఒక ఘటనను సృష్టిస్తుంది, అక్కడ వెబ్ అభివృద్ధి యొక్క నిజమైన మాయాజాలం జరుగుతుంది.
|
||||
|
||||
ఇది వెబ్ కోసం ప్రోగ్రామింగ్లో ఆసక్తికరంగా 만드는 విషయం ఇది: మనం ఎప్పుడూ ఒకరు ఆ బటన్ పై క్లిక్ చేస్తారో లేదా టెక్స్ట్ బాక్సులో టైపు చేయడం మొదలుపెడతారో తెలియదు. వారు వెంటనే క్లిక్ చేయవచ్చు, అయిదు నిమిషాలు వేచి ఉండవచ్చు, లేకపోతే ఎప్పుడూ క్లిక్ చేయకపోవచ్చు! ఈ అనిశ్చితి మీ కోడ్ ఎలా రాయాలో మనం వేరే రీతిగా ఆలోచించాల్సిన అవసరాన్ని కలిగిస్తుంది.
|
||||
|
||||
చెక్కపట్టు ప్రక్రియలాగా పై నుండి కిందికి పనిచేసే కోడ్ రాయడానికే బదులు, మనం ఏదో జరగాలని శాంతంగా ఎదురు చూస్తూ ఉండే కోడ్ రాస్తాము. ఇది 1800లలో టెలిగ్రాఫ్ ఆపరేటర్లు తమ యంత్రాల పక్కన కూర్చొని, వైర్ ద్వారా ఒక సందేశం వచ్చిన వెంటనే స్పందించే రూపాన్ని పోలి ఉంటుంది.
|
||||
|
||||
కాబట్టి ఈవెంట్ అనేది ఏమిటి? సరళంగా చెప్పాలంటే, అది ఏదో జరిగినది! మీరు ఒక బటన్ పై క్లిక్ చేసినప్పుడు - అది ఒక ఈవెంట్. మీరు ఒక అక్షరాన్ని టైపు చేసినప్పుడు - అది ఒక ఈవెంట్. మీరు మీ మౌస్ను కదిలించినప్పుడు - అది మరో ఈవెంట్.
|
||||
|
||||
ఈవెంట్-డ్రివెన్ ప్రోగ్రామింగ్ మనకు కోడ్ను వినిపించడానికి మరియు స్పందించడానికి ఏర్పాటుచేసే అవకాశం ఇస్తుంది. మేము **ఈవెంట్ లిసనర్లు** అని పిలవబడే ప్రత్యేక ఫంక్షన్లు సృష్టిస్తాము, అవి నిర్దిష్ట సంఘటన జరుగాలని ఓర్పుగా ఎదురు చూస్తాయి, అవి జరిగితే వెంటనే చర్య తీసుకుంటాయి.
|
||||
|
||||
ఈవెంట్ వినికిడి లాంటి వి చూడండి మీ కోడ్ కోసం వేర్ద్వారం కలిగి ఉండటం వలె ఉంటుంది. మీరు వేర్ద్వారం ఏర్పాటు చేయాలి (`addEventListener()`), మీరు వినటానికి కావలసిన శబ్దం (ఉదాహరణకు 'click' లేదా 'keypress') చెప్పాలి, మరియు దాన్ని ఎవరు కొట్టినప్పుడు (మీ కస్టమ్ ఫంక్షన్) ఏమి జరగాలో నిర్దేశించాలి.
|
||||
|
||||
**ఈవెంట్ లిసనర్లు ఎలా పనిచేస్తాయో ఇక్కడ ఉన్నది:**
|
||||
- **గమనిస్తాయి** వినియోగదారుల ప్రత్యేక చర్యలను, ఉదాహరణకు క్లిక్లు, కీస్ట్రోక్స్, లేదా మౌస్ కదలికలు
|
||||
- **మీ కస్టమ్ కోడ్ను అమలు చేస్తాయి** నిర్దిష్ట ఈవెంట్ సంభవించినప్పుడు
|
||||
- **వినియోగదారుల ఇన్టరాక్షన్లకు వెంటనే స్పందిస్తాయి**, నిరాత్రుక अनुभवాన్ని సృష్టిస్తాయి
|
||||
- **అదే ఎలిమెంట్పై బహుళ ఈవెంట్లను** వివిధ లిసనర్లతో నిర్వహిస్తాయి
|
||||
|
||||
> **NOTE:** ఈవెంట్ లిసనర్లు సృష్టించడానికి అనేక మార్గాలు ఉన్నాయని చెప్పటం మంచిది. మీరు అనామక ఫంక్షన్లు ఉపయోగించవచ్చు, లేదా పేరున్నవాటి సృష్టించవచ్చు. మీరు వివిధ షార్ట్కట్లు ఉపయోగించవచ్చు, ఉదాహరణకు `click` ప్రాపర్టీని సెట్ చేయడం, లేదా `addEventListener()` ఉపయోగించడం. మన వ్యాయామంలో మనం `addEventListener()` మరియు అనామక ఫంక్షన్లపై ఫోకస్ చేస్తాము, ఎందుకంటే ఇది వెబ్ డెవలపర్లలో సాధారణంగా ఉపయోగించే పద్ధతి. ఇది కూడా అత్యంత సరళమైనది, ఎందుకంటే `addEventListener()` అన్ని ఈవెంట్లకు పనిచేస్తుంది మరియు ఈవెంట్ పేరు పారామీటర్గా ఇవ్వవచ్చు.
|
||||
|
||||
### సాధారణ ఈవెంట్లు
|
||||
|
||||
వెబ్ బ్రౌజర్లు విన్నేందుకు అనేక రకాల ఈవెంట్లను అందించినప్పటికీ, అతి ఇంటరాక్టివ్ అప్లికేషన్లలో చాలా అవసరమైన ఈవెంట్లపై ఆధారపడి ఉంటాయి. ఈ ప్రధాన ఈవెంట్లను అర్థం చేసుకోవడం మీకు అత్యున్నత వినియోగదారు ఇన్టరాక్షన్లను నిర్మించడానికి పునాది ఇస్తుంది.
|
||||
|
||||
అప్లికేషన్ సృష్టించే సమయంలో వినియోగదారు చేసే ఏదైనా చర్య ఈవెంట్ను రేకెత్తిస్తుంది, దీనితో మీకు కావల్సిన అనుభూతిని అందించడానికి పెద్ద శక్తి దక్కుతుంది. అదృష్టవశాత్తు, మీరు సాధారణంగా కొద్ది ఈవెంట్లన్నింటినీ అవసరం పడతారు. ఇక్కడ కొన్ని సాధారణ ఈవెంట్లు ఉన్నాయి (మా గేమ్ సృష్టించేటప్పుడు ఉపయోగించే రెండు ఈవెంట్లు సహా):
|
||||
|
||||
| ఈవెంట్ | వివరణ | సాధారణ ఉపయోగాలు |
|
||||
|-------|-------------|------------------|
|
||||
| `click` | వినియోగదారు ఏదైనా ఒకటిపై క్లిక్ చేసింది | బటన్లు, లింకులు, ఇంటరాక్టివ్ అంశాలు |
|
||||
| `contextmenu` | వినియోగదారు కుడి మౌస్ బటన్ క్లిక్ చేసింది | కస్టమ్ కుడి-క్లిక్ మెనూలు |
|
||||
| `select` | వినియోగదారు కొన్ని టెక్స్ట్ ను హైలైట్ చేశాడు | టెక్స్ట్ సవరణ, కాపీ ఆపరేషన్లు |
|
||||
| `input` | వినియోగదారు కొంత టెక్స్ట్ అందజేశాడు | ఫాం ప్రమాణీకరణ, రియల్-టైమ్ సెర్చ్ |
|
||||
|
||||
**ఈ ఈవెంట్లను అర్థం చేసుకోవడం:**
|
||||
- **సృష్టిస్తుంది** వినియోగదారులు పేజీ上的 నిర్దిష్ట అంశాలతో సహకరిస్తే
|
||||
- **సంధిస్తుంది** ఈవెంట్ ఆబ్జెక్ట్ల ద్వారా వినియోగదారుల చర్యలకు సంబంధించిన వివరాలను
|
||||
- **అనుమతిస్తుంది** ప్రతిస్పందించే, ఇంటరాక్టివ్ వెబ్ అప్లికేషన్లను సృష్టించడానికి
|
||||
- **ఇప్పటికీ పనిచేస్తుంది** అనేక బ్రౌజర్లు మరియు పరికరాలలో సమానంగా
|
||||
|
||||
## గేమ్ సృష్టించడం
|
||||
|
||||
ఈవెంట్లు ఎలా పని చేస్తాయో మీరు అర్థం చేసుకున్నందున, ఈ జ్ఞానాన్ని ఉపయోగించి ఒక ఉపయోగకరమైనవి తయారు చేద్దాం. మేము ఈవెంట్ హ్యాండ్లింగ్ను చూపించే టైపింగ్ స్పీడ్ గేమ్ను సృష్టిస్తాము, ఇది ఒక ముఖ్యమైన డెవలపర్ నైపుణ్యాన్ని అభివృద్ధి చేసేందుకు సహాయపడుతుంది.
|
||||
|
||||
మేము జావాస్క్రిప్ట్లో ఈవెంట్లు ఎలా పని చేస్తాయో తెలుసుకోవడానికి ఒక గేమ్ను సృష్టించబోతున్నాము. మా గేమ్ ఒక ప్లేయర్ టైపింగ్ నైపుణ్యాన్ని పరీక్షిస్తుంది, ఇది అన్ని డెవలపర్లు కలిగి ఉండాల్సిన అత్యంత అణచివేత నైపుణ్యాల్లో ఒకటి. సరదా విషయం: మనం ఈ రోజు ఉపయోగించే QWERTY కీబోర్డు లేఅవుట్ 1870లలో టైపర్ల కోసం డిజైన్ చేయబడింది - మరియు మంచి టైపింగ్ నైపుణ్యాలు ఇప్పటికీ ప్రోగ్రామర్లకు ఎంతో విలువైనవి! గేమ్ యొక్క సాధారణ ప్రవాహం ఇలా ఉంటుంది:
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[ఆటగాడు ఆరంభం పైన క్లిక్ చేస్తాడు] --> B[యాదృచ్ఛిక ఉధ్యరణ ప్రదర్శిస్తుంది]
|
||||
B --> C[ఆటగాడు టెక్స్ట్ బాక్స్ లో టైప్ చేస్తాడు]
|
||||
C --> D{పదం పూర్తయింది?}
|
||||
D -->|అవును| E[తదుపరి పదం హైలైట్ చేయండి]
|
||||
D -->|కాదు| F{ఇప్పటికీ సరియైనదా?}
|
||||
F -->|అవును| G[సాధారణ శైలి కొనసాగించండి]
|
||||
F -->|కాదు| H[పొరపాటు శైలి చూపించండి]
|
||||
E --> I{ఉధ్యరణ పూర్తయ్యిందా?}
|
||||
I -->|కాదు| C
|
||||
I -->|అవును| J[సమయం తో విజయ సందేశం చూపించండి]
|
||||
G --> C
|
||||
H --> C
|
||||
```
|
||||
**మా గేమ్ ఎలా పనిచేస్తుంది:**
|
||||
- **ప్రారంభమవుతుంది** ప్లేయర్ ప్రారంభ బటన్ క్లిక్ చేసినప్పుడు మరియు ఒక యాదృచ్ఛిక కోట్ ను చూపిస్తుంది
|
||||
- **ట్రాక్ చేస్తుంది** ప్లేయర్ టైపింగ్ పురోగతిని పదం వారీగా రియల్-టైమ్లో
|
||||
- **హైలైట్ చేస్తుంది** ప్రస్తుత పదాన్ని ప్లేయర్ దృష్టిని మార్గనిర్దేశం చేయడానికి
|
||||
- **తక్షణ ప్రతిస్పందన అందిస్తుంది** టైపింగ్ లోపాలకు
|
||||
- **ఎన్నుకుంటుంది** మరియు చూపిస్తుంది మొత్తం సమయం కోట్ పూర్తి అయినప్పుడల్లా
|
||||
|
||||
మా గేమ్ను నిర్మించుకుందాం, మరియు ఈవెంట్ల గురించి నేర్చుకుందాం!
|
||||
|
||||
### ఫైల్ నిర్మాణం
|
||||
|
||||
కోడ్ రాయడం మొదలుపెట్టేముందు, మనం వ్యవస్థీకృతంగా ఉండాలి! ప్రారంభం నుండి స్వచ్ఛమైన ఫైల్ నిర్మాణం ఉండటం తర్వాత తలనొప్పులు తగ్గించి, మీ ప్రాజెక్టును మరింత ప్రొఫెషనల్గా చేస్తుంది. 😊
|
||||
|
||||
మనం మూడు ఫైళ్ళతోనే సరిపోతాం: మా పేజీ నిర్మాణానికి `index.html`, మా గేమ్ లాజిక్ కోసం `script.js`, మరియు అంతా బాగుండేందుకు `style.css`. ఇది ఎక్కువగా వెబ్ని శక్తివంతం చేసే క్లాసిక్ ముగ్గురు!
|
||||
|
||||
**కన్సోల్ లేదా టెర్మినల్ విండో ఓపెన్ చేసి ఈ క్రింది కమాండ్లు ఇవ్వడం ద్వారా మీ పనికి కొత్త ఫోల్డర్ సృష్టించండి:**
|
||||
|
||||
```bash
|
||||
# లినక్స్ లేదా మ్యాక్OS
|
||||
mkdir typing-game && cd typing-game
|
||||
|
||||
# విండోస్
|
||||
md typing-game && cd typing-game
|
||||
```
|
||||
|
||||
**ఈ కమాండ్లు ఏమి చేస్తాయో:**
|
||||
- **సృష్టిస్తుంది** ఒక కొత్త డైరెక్టరీ పేరుతో `typing-game` మీ ప్రాజెక్ట్ ఫైళ్ళ కోసం
|
||||
- **దానిలోకి ప్రవేశిస్తుంది** ఆటోమేటీగా నూతనంగా సృష్టించబడిన డైరెక్టరీలోకి
|
||||
- **సెట్ చేస్తుంది** మీ గేమ్ అభివృద్ధికి స్వచ్ఛమైన వర్క్ప్లేస్
|
||||
|
||||
**విజువల్ స్టూడియో కోడ్ ఓపెన్ చేయండి:**
|
||||
|
||||
```bash
|
||||
code .
|
||||
```
|
||||
|
||||
**ఈ కమాండ్:**
|
||||
- **ప్రారంభిస్తుంది** కారెంట్ డైరెక్టరీలో Visual Studio Code ను
|
||||
- **మీ ప్రాజెక్ట్ ఫోల్డర్ను ఎడిటర్ లో తెరవడం**
|
||||
- **మీకు అవసరమైన అభివృద్ధి ఉపకరణాలను అందిస్తుంది**
|
||||
|
||||
**విజువల్ స్టూడియో కోడ్లో ఆ ఫోల్డర్లో ఈ క్రింది పేర్లతో మూడు ఫైళ్లను జోడించండి:**
|
||||
- `index.html` - మీ గేమ్ నిర్మాణం మరియు కంటెంట్ కలిపివుంది
|
||||
- `script.js` - అన్ని గేమ్ లాజిక్ మరియు ఈవెంట్ లిసనర్లను నిర్వహిస్తుంది
|
||||
- `style.css` - దృశ్య రూపం మరియు శైలీకరణ నిర్వచిస్తుంది
|
||||
|
||||
## యూజర్ ఇంటర్ఫేస్ను సృష్టించండి
|
||||
|
||||
ఇప్పుడు మన గేమ్ చర్య జరుగుతుంది స్థలాన్ని నిర్మిద్దాం! ఇంగ్లీష్లో స్పేస్షిప్కి కంట్రోల్ ప్యానెల్ రూపకల్పన చేయడం లాంటిది - మన ఆటగాళ్లకు అవసరమైన ప్రతిదీ వారి ఆశించిన చోట ఉండటానికి చూసుకోవాలి.
|
||||
|
||||
మన గేమ్కు ఏది అవసరమో మనం తెలుసుకుందాం. మీరు టైపింగ్ గేమ్ ఆడుతున్నట్లయితే, మీరు స్క్రీన్పై ఏమి చూడాలని అనుకొంటారు? మెనూ ఇక్కడ ఉంది:
|
||||
|
||||
| UI అంశం | ఉద్దేశ్యం | HTML అంశం |
|
||||
|------------|---------|-------------|
|
||||
| Quote Display | టైపు చేయవలసిన టెక్స్ట్ చూపిస్తుంది | `<p>` with `id="quote"` |
|
||||
| Message Area | స్థితి మరియు విజయ సందేశాలు చూపిస్తుంది | `<p>` with `id="message"` |
|
||||
| Text Input | ప్లేయర్లు కోట్ టైప్ చేసే విభాగం | `<input>` with `id="typed-value"` |
|
||||
| Start Button | గేమ్ ప్రారంభిస్తుంది | `<button>` with `id="start"` |
|
||||
|
||||
**UI నిర్మాణాన్ని అర్థం చేసుకోవడం:**
|
||||
- **కంటెంట్ను సరైన క్రమంలో** పై నుండి దిగువకు ఏర్పాటు చేస్తుంది
|
||||
- **అయిడీని** పరికరాలను జావాస్క్రిప్ట్ లక్ష్యం కోసం కేటాయిస్తుంది
|
||||
- **స్పష్టమైన దృశ్య హైరార్కీ అందిస్తుంది** మెరుగైన వినియోగదారు అనుభవం కోసం
|
||||
- **సెమాంటిక్ HTML అంశాలను కలిగి ఉంటుంది** అనుభవజ్ఞత్వానికి
|
||||
|
||||
ప్రతి ఒక్కదానికి మన JavaScript లో పని చేయడానికి ఐడీలు అవసరం. మేము CSS మరియు JavaScript ఫైళ్ళకు కూడా రిఫరెన్సులు జత చేస్తాము.
|
||||
|
||||
`index.html` అనే కొత్త ఫైల్ సృష్టించండి. ఈ క్రింది HTML జత చేయండి:
|
||||
|
||||
```html
|
||||
<!-- inside index.html -->
|
||||
<html>
|
||||
<head>
|
||||
<title>Typing game</title>
|
||||
<link rel="stylesheet" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<h1>Typing game!</h1>
|
||||
<p>Practice your typing skills with a quote from Sherlock Holmes. Click **start** to begin!</p>
|
||||
<p id="quote"></p> <!-- This will display our quote -->
|
||||
<p id="message"></p> <!-- This will display any status messages -->
|
||||
<div>
|
||||
<input type="text" aria-label="current word" id="typed-value" /> <!-- The textbox for typing -->
|
||||
<button type="button" id="start">Start</button> <!-- To start the game -->
|
||||
</div>
|
||||
<script src="script.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
**ఈ HTML నిర్మాణం ఏమి అందిస్తుంది:**
|
||||
- **శైలీకరణ కోసం** `<head>` లో CSS స్టైల్షీట్లను లింక్ చేస్తుంది
|
||||
- **స్పష్టమైన హెడ్డింగ్ మరియు సూచనలు** ఉపయోగదారులకు సృష్టిస్తుంది
|
||||
- **ఐడీలతో ప్రత్యేకమైన ప్లేస్హోల్డర్ ప్యారాగ్రాఫ్లు ఏర్పరిచి డైనమిక్ కంటెంట్ కోసం ఉంటుంది**
|
||||
- **ప్రవేశ ఫీల్డ్ను గమనించేందుకు అనువర్తించే లక్షణాలతో జత చేస్తుంది**
|
||||
- **గేమ్ ప్రారంభించడానికి స్టార్ట్ బటన్ అందిస్తుంది**
|
||||
- **ఉత్తమ పనితీరుకు జావాస్క్రిప్ట్ ఫైల్ను చివరికి లోడ్ చేస్తుంది**
|
||||
|
||||
### అప్లికేషన్ ప్రారంభించండి
|
||||
|
||||
అభివృద్ధి సమయంలో మీ అప్లికేషన్ను తరచుగా పరీక్షించడం, సమస్యలను సత్వరమే గుర్తించటానికి మరియు మీ పురోగతి ప్రత్యక్షంగా చూడటానికి సహాయపడుతుంది. లైవ్ సర్వర్ ఒక విలువైన ఉపకరం, ఇది మీరు చేంజ్ చేసిన ప్రతిసారూ ఆటోమేటిక్గా బ్రౌజర్ రిఫ్రెష్ చేస్తుంది, అభివృద్ధిని మరింత సమర్థవంతంగా చేస్తుంది.
|
||||
|
||||
విషయాన్ని మీరు ఎలా చూస్తోందో సరి చూసేందుకు అంసగతంగీ అభివృద్ధి చేయడం మంచిది. మన అప్లికేషన్ ప్రారంభిద్దాం. Visual Studio Codeకి ఉన్న అద్భుతమైన ఎక్స్టెన్షన్ [Live Server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer&WT.mc_id=academic-77807-sagibbon) మీ అప్లికేషన్ను స్థానికంగా హోస్ట్ చేస్తుంది మరియు మీరు సేవ్ చేసినప్పుడల్లా బ్రౌజర్ను రిఫ్రెష్ చేస్తుంది.
|
||||
|
||||
**[Live Server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer&WT.mc_id=academic-77807-sagibbon) ను ఇన్స్టాల్ చేయడానికి పై లింక్పై క్లిక్ చేసి ఇన్స్టాల్ క్లిక్ చేయండి:**
|
||||
|
||||
**ఇన్స్టాలేషన్ సమయంలో ఏం జరుగుతుందో:**
|
||||
- **మీ బ్రౌజర్ మీరు Visual Studio Codeని తెరవడానికి ప్రాంప్ట్ చేస్తుంది**
|
||||
- **ఎక్స్టెన్షన్ ఇన్స్టాలేషన్ ప్రక్రియను పరిచయం చేస్తుంది**
|
||||
- **సెట్టప్ పూర్తి చేయడానికి Visual Studio Codeను రీస్టార్ట్ చేయాలని అవసరం ఉండవచ్చు**
|
||||
|
||||
**ఇన్స్టాల్ అయిన తర్వాత, Visual Studio Codeలో Ctrl-Shift-P (లేదా Cmd-Shift-P) నొక్కి కమాండ్ ప్యాలెట్ తెరవండి:**
|
||||
|
||||
**కమాండ్ ప్యాలెట్ అర్థం చేసుకోవడం:**
|
||||
- **VS Codeలో అన్ని కమాండ్లకు త్వరితమైన ప్రవేశాన్ని అందిస్తుంది**
|
||||
- **మీ టైపు చేసినట్లుగా కమాండ్లను శోధిస్తుంది**
|
||||
- **త్వరిత అభివృద్ధి కోసం కీబోర్డ్ షార్ట్కట్లను అందిస్తుంది**
|
||||
|
||||
**"Live Server: Open with Live Server" టైపు చేయండి:**
|
||||
|
||||
**Live Server దీంట్లో చేయేది:**
|
||||
- **మీ ప్రాజెక్ట్ కోసం స్థానిక అభివృద్ధి సర్వర్ను ప్రారంభిస్తుంది**
|
||||
- **ఫైళ్లను సేవ్ చేసినప్పుడు బ్రౌజర్ను ఆటోమేటిక్గా రిఫ్రెష్ చేస్తుంది**
|
||||
- **ఫైళ్లు స్థానిక URL (సాధారణంగా `localhost:5500`) నుండి అందిస్తుంది**
|
||||
|
||||
**బ్రౌజర్ తెరచి `https://localhost:5500` కి వెళ్లండి:**
|
||||
|
||||
ఇప్పుడు మీరు సృష్టించిన పేజీ కనబడుతుంది! కొంత ఫంక్షనాలిటీ జోడిద్దాం.
|
||||
|
||||
## CSS జోడించండి
|
||||
|
||||
ఇప్పుడు దృశ్యరూపాన్ని అందంగా తయారు చేద్దాం! దృశ్య ప్రతిస్పందన యూజర్ ఇంటర్ఫేస్లకు కోనియరోజుల నుంచి ముఖ్యమైనది. 1980లలో పరిశోధకులు వెంటనే దృశ్య ప్రతిస్పందన వినియోగదారుల ప్రదర్శనను గణనీయంగా మెరుగుపరిచిందని మరియు లోపాలు తగ్గించిందని తెలుసుకున్నారు. మనం ఇదే పనిచేయించబోతున్నాం.
|
||||
|
||||
మన గేమ్ ఏదైన స్పష్టంగా ఉండాలి. ఆటగాళ్లు వెంటనే తనవంటి పదాన్ని టైప్ చేయాలని తెలిసేలా ఉండాలి, తప్పు చేసినట్లయితే అది వెంటనే కనిపించాలి. కొంచెం సరళమైన కానీ సమర్థవంతమైన స్టైలింగ్ ని చేద్దాం:
|
||||
|
||||
`style.css` అనే కొత్త ఫైల్ సృష్టించి ఈ క్రింది సింటాక్స్ జత చేయండి.
|
||||
|
||||
```css
|
||||
/* inside style.css */
|
||||
.highlight {
|
||||
background-color: yellow;
|
||||
}
|
||||
|
||||
.error {
|
||||
background-color: lightcoral;
|
||||
border: red;
|
||||
}
|
||||
```
|
||||
|
||||
**ఈ CSS క్లాసులను అర్థం చేసుకోవడం:**
|
||||
- **ప్రస్తుతం ఉన్న పదాన్ని పసుపు నేపథ్యంతో హైలైట్ చేస్తుంది** స్పష్టమైన దృశ్య మార్గనిర్దేశానికి
|
||||
- **టైపింగ్ లోపాలను కొరల్ వెలిగిపోయిన నేపథ్య రంగుతో సూచిస్తుంది**
|
||||
- **ద్రుత ప్రతిస్పందన అందిస్తుంది** వినియోగదారు టైపింగ్ ప్రవాహాన్ని అంతరాయపడకుండా
|
||||
- **మార్పు రంగులు ఉపయోగించి** అనుకూలత మరియు స్పష్టమైన దృశ్య కమ్యునికేషన్ ని కలిగి ఉంటుంది
|
||||
|
||||
✅ CSS విషయానికి వస్తే, మీరు మీ పేజీని మీ ఇష్టంగా అమర్చుకోవచ్చు. కొంత సమయం తీసుకుని పేజీ చూడటానికి మరింత ఆకర్షణీయంగా రూపొందించండి:
|
||||
|
||||
- వేరే ఫాంట్ ఎంచుకోండి
|
||||
- హెడ్డర్లకు రంగులు జోడించండి
|
||||
- అంశాలు పరిమాణం మార్చండి
|
||||
|
||||
## జావాస్క్రిప్ట్
|
||||
|
||||
ఇక్కడ విషయాలు ఆసక్తికరంగా మారతాయి! 🎉 మనకు HTML నిర్మాణం మరియు CSS శైలీకరణ ఉన్నాయి, కానీ ప్రస్తుతం మన గేమ్ ఇంజిన్ లేని అందమైన కారు లాంటిది. జావాస్క్రిప్ట్ ఆ ఇంజినే అవుతుంది - ఇది అన్ని పని చేయించేది మరియు ఆటగాళ్లు చేసే పనికి స్పందిస్తుంది.
|
||||
|
||||
ఇక్కడ మీ సృష్టి జీవించబోతుంది. మనం దశల వారీగా ముందుకువెళ్తాము కాబట్టి ఏదీ బరువు లాంటిది అనిపించదు:
|
||||
|
||||
| దశ | ఉద్దేశ్యం | మీరు నేర్చుకునేది |
|
||||
|------|---------|------------------|
|
||||
| [స్థిరాలు సృష్టించండి](../../../../4-typing-game/typing-game) | కోట్లు మరియు DOM సూచనలు సెట్ చేయండి | వేరియబుల్ నిర్వహణ మరియు DOM ఎంపిక |
|
||||
| [గేమ్ ప్రారంభానికి ఈవెంట్ లిసనర్](../../../../4-typing-game/typing-game) | గేమ్ ప్రారంభాన్ని నిర్వహించండి | ఈవెంట్ హ్యాండ్లింగ్ మరియు UI నవీకరణలు |
|
||||
| [టైపింగ్కు ఈవెంట్ లిసనర్](../../../../4-typing-game/typing-game) | వినియోగదారుల ఇన్పుట్ను రియల్-టైమ్లో ప్రాసెస్ చేయండి | ఇన్పుట్ నిర్ధారణ మరియు డైనమిక్ ప్రతిస్పందన |
|
||||
|
||||
**ఈ నిర్మిత విధానం మీకు సహాయపడుతుంది:**
|
||||
- **మీ కోడ్ను తార్కికమైన, నిర్వహించదగిన విభాగాలుగా ఆర్గనైజ్ చేయండి**
|
||||
- **లాజిక్ను పద్ధతిగా నిర్మించి డీబగ్గింగ్ సులభతరం చేయండి**
|
||||
- **మీ అప్లికేషన్ వేర్వేరు భాగాలు ఎలా కలిసి పని చేస్తాయో అర్థం చేసుకోండి**
|
||||
- **భవిష్యత్ ప్రాజెక్టుల కోసం పునరుపయోగ సాధనాలు సృష్టించండి**
|
||||
|
||||
కాని మొదట, `script.js` అనే కొత్త ఫైల్ సృష్టించండి.
|
||||
|
||||
### స్థిరాలను జోడించండి
|
||||
|
||||
చర్యలోకి దిగక ముందు మన వనరులను సేకరించుదాం! NASA మిషన్ కంట్రోల్ లా ఇయంతీ మానిటరింగ్ సిస్టమ్స్ అన్ని ప్రారంభించడానికి ముందు సక్రియపరుస్తారు, మనకు కూడా ప్రతిదీ సిద్ధంగా ఉండటం సరళం అవుతుంది. ఇది తర్వాత వస్తువుల కోసం తిరగొచ్చే పనిని తగ్గిస్తుంది మరియు టైపోలను నివారిస్తుంది.
|
||||
|
||||
ముందుగా మనం సెట్ చేసుకోవాలి:
|
||||
|
||||
| డేటా రకం | ఉద్దేశ్యం | ఉదాహరణ |
|
||||
|-----------|---------|--------|
|
||||
| اقتباسల శ్రేణి | ఆటకు అన్ని సాధ్యమైన اقتباسల ను నిల్వ చేయండి | `['Quote 1', 'Quote 2', ...]` |
|
||||
| పదాల శ్రేణి | ప్రస్తుత اقتبాసును వ్యక్తిగత పదాలుగా విభజించండి | `['When', 'you', 'have', ...]` |
|
||||
| పద సూచిక | ఆటగాడు ఎన్ని పదాలను టైప్ చేస్తున్నాడో ట్రాక్ చేయండి | `0, 1, 2, 3...` |
|
||||
| ప్రారంభ సమయం | స్కోరింగ్ కోసం గడిచిన సమయాన్ని లెక్కించండి | `Date.now()` |
|
||||
|
||||
**మేము మా UI అంశాలకు సూచనలూ అవసరం:**
|
||||
| అంశం | ID | ప్రయోజనం |
|
||||
|---------|----|---------|
|
||||
| వచన ఇన్పుట్ | `typed-value` | ఆటగాళ్లు టైప్ చేసే ప్రదేశం |
|
||||
| اقتبాస ప్రదర్శన | `quote` | టైప్ చేయాల్సిన اقتبాసును చూపిస్తుంది |
|
||||
| సందేశ ప్రాంతం | `message` | స్థితి నవీకరణలు చూపిస్తుంది |
|
||||
|
||||
```javascript
|
||||
// script.js లో
|
||||
// మన సర్వ కోట్స్
|
||||
const quotes = [
|
||||
'When you have eliminated the impossible, whatever remains, however improbable, must be the truth.',
|
||||
'There is nothing more deceptive than an obvious fact.',
|
||||
'I ought to know by this time that when a fact appears to be opposed to a long train of deductions it invariably proves to be capable of bearing some other interpretation.',
|
||||
'I never make exceptions. An exception disproves the rule.',
|
||||
'What one man can invent another can discover.',
|
||||
'Nothing clears up a case so much as stating it to another person.',
|
||||
'Education never ends, Watson. It is a series of lessons, with the greatest for the last.',
|
||||
];
|
||||
// పదాల జాబితాను మరియు ప్లేయర్ ప్రస్తుతం టైప్ చేస్తున్న పదం సూచికను నిల్వచేయండి
|
||||
let words = [];
|
||||
let wordIndex = 0;
|
||||
// ప్రారంభ సమయం
|
||||
let startTime = Date.now();
|
||||
// పేజీ అంశాలు
|
||||
const quoteElement = document.getElementById('quote');
|
||||
const messageElement = document.getElementById('message');
|
||||
const typedValueElement = document.getElementById('typed-value');
|
||||
```
|
||||
|
||||
**ఈ సెటప్ కోడ్ ఏం చేస్తుందో విశ్లేషణ:**
|
||||
- **ఉంచుతుంది** షెర్లాక్ హోల్మ్స్ اقتبాసల శ్రేణి `const` తో ఎందుకంటే اقتبాసలు మారవు
|
||||
- **ప్రారంభిస్తుంది** ట్రాకింగ్ చరాలు `let` తో ఎందుకంటే ఆట సమయంలో విలువలు మారుతాయి
|
||||
- **తీసుకోవడo** DOM అంశాల సూచనలను `document.getElementById()` తో సమర్థవంతమైన ప్రాప్తికి
|
||||
- **సెట్ చేస్తుంది** ఆట అన్ని ఫంక్షనల్ కోసం స్పష్టమైన, వివరణాత్మక చరాలతో
|
||||
- **సంగ్రహిస్తుంది** సంబంధిత డేటాను మరియు అంశాలను సગౌరవంగా సులభ నిర్వహణ కోసం
|
||||
|
||||
✅ మీరు మీ ఆటకు ఇంకా ఎక్కువ اقتبాసలు జోడించండి
|
||||
|
||||
> 💡 **ప్రో టిప్**: కోడ్లో ఎప్పుడైనా `document.getElementById()` తో అంశాలను పొందవచ్చు. ఎందుకంటే మనం ఈ అంశాలపై తరచుగా సూచిస్తాము కాబట్టి లిఖిత లోపాల నుంచి తప్పించుకోవడానికి స్థిరచారాలు ఉపయోగించాలి. [Vue.js](https://vuejs.org/) లేదా [React](https://reactjs.org/) వంటి ఫ్రేమ్వర్క్లు మీ కోడ్ను సక్రమంగా నిర్వహించడానికి సహాయపడతాయి.
|
||||
>
|
||||
**ఈ విధానం ఎందుకు బాగా పని చేస్తుంది:**
|
||||
- **తప్పుల్ని నివారిస్తుంది** పదం తప్పులని పదాన్ని తరచూ సూచించినపుడు
|
||||
- **మెరుగుపరుస్తుంది** కోడ్ పఠనీయతను వివరణాత్మక స్థిరచారాలతో
|
||||
- **ప్రముఖ IDE మద్దతు ఇస్తుంది** ఆటో కంప్లీట్ అండ్ పొరపాటు పరిక్షణతో
|
||||
- **సులభంగా మార్చడం** ఉంటే ఎలిమెంట్ ID మారితే
|
||||
|
||||
`const`, `let` మరియు `var` పై వీడియోను కొంత సేపు చూడండి
|
||||
|
||||
[](https://youtube.com/watch?v=JNIXfGiDWM8 "చరాల రకాల")
|
||||
|
||||
> 🎥 వేరియబుల్స్ గురించి వీడియో కోసం పై చిత్రం క్లిక్ చేయండి.
|
||||
|
||||
### ప్రారంభ లాజిక్ జోడించండి
|
||||
|
||||
ఇక్కడనే ప్రతిదీ సరిపోతుంది! 🚀 మీరు మీ మొదటి నిజమైన ఈవెంట్ లిసనర్ని రాయబోతున్నారు, మరియు బటన్ క్లిక్ కి మీ కోడ్ స్పందించడం చూడటం చాలా సంతృప్తికరం.
|
||||
|
||||
ఆలోచించండి: ఎక్కడో ఒక ఆటగాడు ఆ "ప్రారంభం" బటన్ను క్లిక్ చేస్తాడు, మరియు మీ కోడ్ వారి కోసం సిద్ధంగా ఉండాలి. వారు ఎప్పుడు క్లిక్ చేస్తారో తెలియదు — వెంటనే కావచ్చు, లేదా కాఫీ తీసుకొని తర్వాత కావచ్చు — కానీ క్లిక్ చేసిన సమయంపై మీ ఆట చైతన్యానికి వస్తుంది.
|
||||
|
||||
వినియోగదారు `start` క్లిక్ చేసినప్పుడు, ఒక اقتبాసు ఎంచుకోవాలి, UI సెట్ చేయాలి, ప్రస్తుత పదాన్ని మరియు సమయాన్ని ట్రాక్ చేయడానికి సెట్ చేయాలి. దిగువ JavaScript మీరు జోడించాల్సినది; స్క్రిప్ట్ బ్లాక్ తర్వాత దీన్ని చర్చిస్తాము.
|
||||
|
||||
```javascript
|
||||
// script.js చివరలో
|
||||
document.getElementById('start').addEventListener('click', () => {
|
||||
// ఒక కోట్ పొందండి
|
||||
const quoteIndex = Math.floor(Math.random() * quotes.length);
|
||||
const quote = quotes[quoteIndex];
|
||||
// కోట్ను పదాల సరసన పెట్టండి
|
||||
words = quote.split(' ');
|
||||
// ట్రాకింగ్ కోసం పద సూచికను రీసెట్ చేయండి
|
||||
wordIndex = 0;
|
||||
|
||||
// UI నవీకరణలు
|
||||
// క్లాస్ సెట్ చేయడానికి span ఎలిమెంట్ల సరసన సృష్టించండి
|
||||
const spanWords = words.map(function(word) { return `<span>${word} </span>`});
|
||||
// స్ట్రింగ్గా మార్చి quote డిస్ప్లేకి innerHTMLగా సెట్ చేయండి
|
||||
quoteElement.innerHTML = spanWords.join('');
|
||||
// మొదటి పదాన్ని హైలైట్ చేయండి
|
||||
quoteElement.childNodes[0].className = 'highlight';
|
||||
// పూర్వ సందేశాలను క్లియర్ చేయండి
|
||||
messageElement.innerText = '';
|
||||
|
||||
// టెక్స్ట్బాక్స్ను సెట్ చేయండి
|
||||
// టెక్స్ట్బాక్స్ను క్లియర్ చేయండి
|
||||
typedValueElement.value = '';
|
||||
// ఫోకస్ సెట్ చేయండి
|
||||
typedValueElement.focus();
|
||||
// ఈవెంట్ హ్యాండ్లర్ సెట్ చేయండి
|
||||
|
||||
// టైమర్ ప్రారంభించండి
|
||||
startTime = new Date().getTime();
|
||||
});
|
||||
```
|
||||
|
||||
**కోడ్ను తార్కిక విభాగాలుగా విభజిద్దాం:**
|
||||
|
||||
**📊 పద ట్రాకింగ్ సెటప్:**
|
||||
- **ఎంచుకుంటుంది** వేరొక اقتبాసు `Math.floor()` మరియు `Math.random()` తో వివిధంగా ఉండేందుకు
|
||||
- **మారుస్తుంది** اقتبాసును వ్యక్తిగత పదాల శ్రేణిగా `split(' ')` తో
|
||||
- **తిరిగి సెట్ చేస్తుంది** `wordIndex` ను 0 గా ఎందుకంటే ఆటగాళ్లు మొదటి పదం నుండి ప్రారంభిస్తారు
|
||||
- **సన్నద్ధం చేస్తుంది** ఆట స్థితిని తాజా రౌండ్ కోసం
|
||||
|
||||
**🎨 UI సెటప్ మరియు ప్రదర్శన:**
|
||||
- **తయారుచేస్తుంది** `<span>` అంశాల శ్రేణిని, ప్రతి పదం ప్రత్యేక శైలీకరణ కోసం చుట్టడం
|
||||
- **జోడిస్తుంది** span అంశాలను ఒంటి స్ట్రింగ్గా సమర్థవంతమైన DOM నవీకరణకు
|
||||
- **ప్రధానపదాన్ని హైలైట్ చేస్తుంది** `highlight` CSS తరగతిని జోడించడం ద్వారా
|
||||
- **తెలివిగా ముందటి సందేశాలను ఖాళీ చేస్తుంది** శుభ్రమైన స్థలాన్ని అందించడానికి
|
||||
|
||||
**⌨️ టెక్స్ట్ బాక్స్ సిద్ధం:**
|
||||
- **తొలుత ఉన్న టెక్స్ట్ ను ఖాళీ చేస్తుంది** ఇన్పుట్ ఫీల్డ్లో
|
||||
- **ఫోకస్ సెట్ చేస్తుంది** ఆటగాళ్లు వెంటనే టైప్ చేయడం ప్రారంభించడానికి
|
||||
- **ఇన్పుట్ ప్రాంతాన్ని సిద్ధం చేస్తుంది** కొత్త ఆట సెషన్ కోసం
|
||||
|
||||
**⏱️ టైమర్ ప్రారంభం:**
|
||||
- **ప్రస్తుతం సమయాన్ని పొందుతుంది** `new Date().getTime()` తో
|
||||
- **సరైన టైపింగ్ వేగం మరియు పూర్తిచేసిన సమయం లెక్కింపును ప్రారంభిస్తుంది**
|
||||
- **ఆట శకం పనితీరు ట్రాకింగ్ ప్రారంభం**
|
||||
|
||||
### టైపింగ్ లాజిక్ జోడించండి
|
||||
|
||||
ఇక్కడే మన ఆట మూలాన్ని తాకబోతూ ఉన్నాం! మొదటికి ఇది చాలా లాంటిదిగా అనిపించినా బాధ పడకండి — ప్రతి భాగం నాకు అడిగితే క్లుప్తంగా, చివరికి మీరు దీన్ని ఎంత తార్కికంగా ఉందో చూడగలరు.
|
||||
|
||||
మనం ఇక్కడ చేస్తున్నది చాలా సున్నితమైన పనీ: ప్రతి ఒక్కసారి ఒక అక్షరాన్ని టైప్ చేస్తే, మన కోడ్ అది ఏమిటీ అనేది చూడాలి, వారిని ఫీడ్బ్యాక్ ఇవ్వాలి, తరువాత ఏమి జరగాలో నిర్ణయించాలి. ఇది 1970లలో WordStar వంటి మొదటి పదం ప్రాసెసర్లతో సాదృశ్యం కలిగి ఉంటుంది.
|
||||
|
||||
```javascript
|
||||
// script.js చివరలో
|
||||
typedValueElement.addEventListener('input', () => {
|
||||
// ప్రస్తుత పదాన్ని పొందండి
|
||||
const currentWord = words[wordIndex];
|
||||
// ప్రస్తుత విలువను పొందండి
|
||||
const typedValue = typedValueElement.value;
|
||||
|
||||
if (typedValue === currentWord && wordIndex === words.length - 1) {
|
||||
// వాక్య చివరం
|
||||
// విజయాన్ని ప్రదర్శించండి
|
||||
const elapsedTime = new Date().getTime() - startTime;
|
||||
const message = `CONGRATULATIONS! You finished in ${elapsedTime / 1000} seconds.`;
|
||||
messageElement.innerText = message;
|
||||
} else if (typedValue.endsWith(' ') && typedValue.trim() === currentWord) {
|
||||
// పదం ముగింపు
|
||||
// కొత్త పదం కోసం typedValueElement ను క్లియర్ చేయండి
|
||||
typedValueElement.value = '';
|
||||
// తదుపరి పదానికి సాగండి
|
||||
wordIndex++;
|
||||
// కోట్లోని అన్నీ ఎలిమెంట్ల కోసం క్లాస్ పేరు రీసెట్ చేయండి
|
||||
for (const wordElement of quoteElement.childNodes) {
|
||||
wordElement.className = '';
|
||||
}
|
||||
// కొత్త పదాన్ని హైలైట్ చేయండి
|
||||
quoteElement.childNodes[wordIndex].className = 'highlight';
|
||||
} else if (currentWord.startsWith(typedValue)) {
|
||||
// ప్రస్తుతానికి సరైనది
|
||||
// తదుపరి పదాన్ని హైలైట్ చేయండి
|
||||
typedValueElement.className = '';
|
||||
} else {
|
||||
// లోప పరిస్థితి
|
||||
typedValueElement.className = 'error';
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
**టైపింగ్ లాజిక్ ప్రవాహం గురించి అవగాహన:**
|
||||
|
||||
ఈ ఫంక్షన్ వాటర్ఫాల్ విధానం ఉపయోగించి, అత్యంత ప్రత్యేకమైన పరిస్థితి నుండి అత్యంత సాధారణ పరిస్థితి వరకు తనిఖీలు చేస్తుంది. ప్రతీ సన్నివేశాన్ని విభజిద్దాం:
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[ఆడగాడు అక్షరం టైప్ చేస్తున్నాడు] --> B[ప్రస్తుత పదం మరియు టైప్ చేయబడిన విలువను పొందండి]
|
||||
B --> C{కొటేషన్ పూర్తయిందా?}
|
||||
C -->|అవును| D[సమయం తో పూర్తి సందేశం చూపించు]
|
||||
C -->|కాదు| E{పదం జతచేయబడిందా?}
|
||||
E -->|అవును| F[ఇన్పుట్ క్లియర్ చేయండి, తదుపరి పదానికి మార్చండి, హైలైట్ ను అనువర్తింపచేయండి]
|
||||
E -->|కాదు| G{ఇప్పటి వరకు టైపింగ్ సరేనా?}
|
||||
G -->|అవును| H[పిల్లలు స్టైలింగ్ తొలగించు]
|
||||
G -->|కాదు| I[పిల్లలు స్టైలింగ్ చూపించు]
|
||||
```
|
||||
**🏁 اقتبాసు పూర్తయింది (సన్నివేశం 1):**
|
||||
- **తనిఖీ చేస్తుంది** టైపైన విలువ ప్రస్తుత పదంతో సరిపోతుందా మరియు మనం చివరి పదాన ఉన్నామో
|
||||
- **గణన చేస్తుంది** గడిచిన సమయాన్ని ప్రారంభ సమయం నించి ప్రస్తుత సమయం తక్కువ చేయడం ద్వారా
|
||||
- **మిల్లిసెకండ్లను సెకన్లలోకి మార్చుతుంది** 1,000తో భాగించి
|
||||
- **గుర్తింపు సందేశాన్ని చూపిస్తుంది** పూర్తయిన సమయంతో
|
||||
|
||||
**✅ పదం పూర్తయింది (సన్నివేశం 2):**
|
||||
- **అందుకుంటుంది** పదం పూర్తి వలన ఇన్పుట్ చివరకు ఒక స్పేస్ ఉన్నప్పుడు
|
||||
- **సరైనదని ధృవీకరించడం** ట్రిమ్ చేసిన ఇన్పుట్ ప్రస్తుత పదంతో ఖచ్చితంగా సరిపోతుందా
|
||||
- **ఖాళీ చేస్తుంది** ఇన్పుట్ ఫీల్డ్ తదుపరి పదం కోసం
|
||||
- **ముందుకు సాగుతుంది** తదుపరి పదానికి `wordIndex` పెంచడం ద్వారా
|
||||
- **ప్రదర్శన మార్చుతుంది** అన్ని తరగతులు తీసివేసి కొత్త పదాన్ని హైలైట్ చేస్తుంది
|
||||
|
||||
**📝 టైపింగ్ కొనసాగుతోంది (సన్నివేశం 3):**
|
||||
- **నిర్ధారిస్తుంది** ప్రస్తుత పదం ఇప్పటి వరకు టైప్ చేసిన అంగాలతో మొదలవుతుందా
|
||||
- **తప్పు శైలిని తీసివేస్తుంది** ఇన్పుట్ సరైనదని చూపించడానికి
|
||||
- **అడుగు కొనసాగుతుంది** అవసరంలేకుండా టైపింగ్ కొనసాగించడానికి
|
||||
|
||||
**❌ లోపం స్థితి (సన్నివేశం 4):**
|
||||
- **రెండు స్ధాపిస్తుంది** టైప్ చేసిన పాఠం అంచనా వెనుకబడితే పాఠం తప్పు అంటే
|
||||
- **లోపం CSS తరగతిని వేసే** తక్షణ దృష్టాంతపు ఫీడ్బ్యాక్ ఇవ్వడానికి
|
||||
- **ఆటగాళ్లకు సహాయం** తప్పులను త్వరగా గుర్తించి సరిచేయడానికి
|
||||
|
||||
## మీ అప్లికేషన్ని పరీక్షించండి
|
||||
|
||||
మీరు చేసిన పని చూడండి! 🎉 మీరు ఈవెంట్-నిర్దేశిత ప్రోగ్రామింగ్ ఉపయోగించి నిజమైన టైపింగ్ ఆటను నిర్మించారు. దీన్ని గుర్తుచేసుకోండి - ఇది చిన్న పని కాదు!
|
||||
|
||||
ఇప్పుడు పరీక్షించే దశ! ఇది కోరినట్లుగా పనిచేస్తుందా? ఏదైనా మిస్ అయినదా? సాధారణ విషయం ఏమంటే: ఏదైనా తక్షణమే సరైన పని చేయకపోతే, ఇది సహజం. అనుభవజ్ఞులైన డెవలపర్లు కూడా తరచూ బగ్గాలను కనుగొంటారు. ఇది అభివృద్ధి ప్రక్రియలో భాగం!
|
||||
|
||||
`start` క్లిక్ చేసి టైపు చేయడం ప్రారంభించండి! కింద అచ్చైన అనిమేషన్ లాగా ఉండాలి.
|
||||
|
||||

|
||||
|
||||
**మీ అప్లికేషన్లో ఏమి పరీక్షించాలి:**
|
||||
- **ధృవీకరిస్తుంది** 'Start' క్లిక్ చేస్తున్నప్పుడు యాదృచ్ఛిక اقتبాస ప్రదర్శన జరుగుతుందా
|
||||
- **నిర్ధారిస్తుంది** టైపింగ్ ప్రస్తుత పదాన్ని సరైన రీతిలో హైలైట్ చేస్తుందా
|
||||
- **తనిఖీ చేస్తుంది** తప్పు టైపింగ్ ఉన్నప్పుడు లోపం శైలి కనిపిస్తుందా
|
||||
- **ఖచ్చితంగా నిలబెట్టి** పదాలు పూర్తయినప్పుడు హైలైట్ సరైన వివరంగా మారుతుందా
|
||||
- **పరీక్షిస్తుంది** اقتبాసు పూర్తయినప్పుడు పూర్తి సందేశం మరియు సమయం చూపుతుందా
|
||||
|
||||
**సాధారణ డీబగ్గింగ్ సూచనలు:**
|
||||
- **బ్రౌజర్ కన్సోల్** (F12) లో JavaScript లోపాలు చూడండి
|
||||
- **ఫైల్ పేర్లు** పూర్తిగా సరిపోతున్నాయో చూసుకోండి (కేస్-సెన్సిటివ్)
|
||||
- **Live Server** నడుస్తున్నదని మరియు రిఫ్రెష్ అవుతుందనేది ధృవీకరించండి
|
||||
- **వేరే اقتبాస్లు ప్రయత్నించి** యాదృచ్ఛిక ఎంచుకునే అంశం పనిచేస్తుందా చూసుకోండి
|
||||
|
||||
---
|
||||
|
||||
## GitHub Copilot ఏజెంట్ చాలెంజ్ 🎮
|
||||
|
||||
ఏజెంట్ మోడ్ ఉపయోగించి ఈ కింది చాలెంజ్ పూర్తి చేయండి:
|
||||
|
||||
**వివరణ:** ఆటగాడి పనితీరు ఆధారంగా ఆట దృఢత్వాన్ని సర్దుబాటు చేసే కఠినత్వం వ్యవస్థను అభివృద్ధి చేయాలి. ఈ చాలెంజ్ ఆధునిక ఈవెంట్ హ్యాండ్లింగ్, డేటా విశ్లేషణ మరియు డైనమిక్ UI నవీకరణలను అభ్యాసం చేస్తుంది.
|
||||
|
||||
**ప్రాంప్ట్:** టైపింగ్ ఆటకి కఠినత్వం సర్దుబాటు వ్యవస్థ సృష్టించండి:
|
||||
1. ఆటగాడి టైపింగ్ వేగం (_words per minute_) మరియు ఖచ్చితత్వ శాతం ట్రాక్ చేస్తుంది
|
||||
2. ఆటను మూడు కఠినత్వ స్థాయిలకు సవరించాలి: సులభం (సరళమైన اقتبాస్లు), మధ్యస్థ (ప్రస్తుత اقتبాస్లు), కఠినమైనది (పంక్చువేషన్తో క్లిష్ట اقتبాస్లు)
|
||||
3. ప్రస్తుత కఠినత్వ స్థాయి మరియు ఆటగాడి గణాంకాలు UIపై ప్రదర్శించాలి
|
||||
4. 3 క్రమం తప్పకుండా మంచి ప్రదర్శనల తర్వాత కఠినత్వం పెంచే స്ട్రీక్ కౌంటర్ అమలు చేయాలి
|
||||
5. కఠినత్వ మార్పులను సూచించడానికి దృశ్య ఫీడ్బ్యాక్ (రంగులు, అనిమేషన్లు) జోడించండి
|
||||
|
||||
ఈ ఫీచర్ అమలుకు అవసరమైన HTML అంశాలు, CSS శైలులు, JavaScript ఫังก్షన్లను చేర్చండి. సరైన లోపాల నిర్వహణను జోడించి, ARIA లేబుల్స్తో ఆట సులభంగా ఉండేలా చూసుకోండి.
|
||||
|
||||
[agent mode](https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode) గురించి మరింత తెలుసుకోండి.
|
||||
|
||||
## 🚀 చాలెంజ్
|
||||
|
||||
మీ టైపింగ్ ఆటను మరింత మెరుగుపరచటానికి సిద్ధంగా ఉన్నారా? ఈ ఆధునిక లక్షణాలను ఉపయోగించి ఈవెంట్ హ్యాండ్లింగ్ మరియు DOM మేనేజ్మెంట్ లో మీ అవగాహనను పెంచండి:
|
||||
|
||||
**ఇంకా ఫంక్షనాలిటీ జోడించండి:**
|
||||
|
||||
| లక్షణం | వివరణ | మీరు సాధించబోయే నైపుణ్యాలు |
|
||||
|---------|-------------|------------------------|
|
||||
| **ఇన్పుట్ నియంత్రణ** | పూర్తయినప్పుడు `input` ఈవెంట్ లిసనర్ ని నిలిపివేయండి, బటన్ క్లిక్ చేస్తే తిరిగి ప్రారంభించండి | ఈవెంట్ నిర్వహణ మరియు స్థితి నియంత్రణ |
|
||||
| **UI స్థితి నిర్వహణ** | ఆటగాడు اقتبాసు పూర్తిచేసినప్పుడు టెక్స్ట్బాక్స్ ని డిసేబుల్ చేయండి | DOM ప్రాపర్టీ మేనేజ్మెంట్ |
|
||||
| **మోడల్ డైలాగ్** | విజయ సందేశంతో మోడల్ డైలాగ్ బాక్స్ చూపించండి | ఆధునిక UI నమూనాలు మరియు సులభత |
|
||||
| **హై స్కోరు సిస్టమ్** | `localStorage` ఉపయోగించి హై స్కోర్లు నిల్వ చేయండి | బ్రౌజర్ నిల్వ APIs మరియు డేటా కొనసాగింపు |
|
||||
|
||||
**అమలులో సూచనలు:**
|
||||
- **కొంచెం అన్వేషించండి** `localStorage.setItem()` మరియు `localStorage.getItem()` గురించి స్థిర నిల్వ కొరకు
|
||||
- **ప్రాక్టీస్ చేయండి** ఈవెంట్ లిసనర్లని గమనించి జోడించడం మరియు తీసివేత
|
||||
- **HTML డైలాగ్ ఎలిమెంట్లు లేదా CSS మోడల్ నమూనాలను** అన్వేషించండి
|
||||
- **ఫారమ్ నియంత్రణలను డిసేబుల్ / ఎనేబుల్ చేసే సమయాల్లో సులభతను** పరిగణించండి
|
||||
|
||||
## పోస్ట్-లెక్చర్ క్విజ్
|
||||
|
||||
[Post-lecture quiz](https://ff-quizzes.netlify.app/web/quiz/22)
|
||||
|
||||
---
|
||||
|
||||
## 🚀 మీ టైపింగ్ ఆట నైపుణ్యాల కాలక్రమం
|
||||
|
||||
### ⚡ **మీరు తరువాత 5 నిమిషాలలో చేయగలరు**
|
||||
- [ ] వివిధ اقتبాస్లతో మీ typing ఆటను పరీక్షించండి
|
||||
- [ ] CSS శైలులను మార్చి హైలైట్ మరియు లోపం రంగులు మార్చండి
|
||||
- [ ] బ్రౌజర్ DevTools (F12) తెరుచుకొని Console చూడండి
|
||||
- [ ] ఒక اقتبాసునందు అత్యంత వేగంగా టైపు చేయవలసిన సామర్ధ్యాన్ని సవాలు చేసుకోండి
|
||||
|
||||
### ⏰ **ఈ గంటలో మీరు సాధించగలరు**
|
||||
- [ ] పోగులేని اقتబాస్లను జోడించండి (మీకి ఇష్టమైన పుస్తకాలు లేదా సినిమాల నుంచి)
|
||||
- [ ] చాలెంజ్ సెక్షన్ లో localStorage హై స్కోర్ సిస్టమ్ అమలు చేయండి
|
||||
- [ ] ప్రతి ఆట తర్వాతWords per minute క్యాల్క్యులేటర్ చూపించండి
|
||||
- [ ] సరైన టైపింగ్, లోపాలు మరియు పూర్తి చేసేందుకు శబ్ద ప్రభావాలు జోడించండి
|
||||
|
||||
### 📅 **మీ వారాంత ప్రయాణం**
|
||||
- [ ] మల్టీప్లేయర్ వర్షన్ నిర్మించండి, స్నేహితులు పక్కనపక్కనే పోటీ పడతారు
|
||||
- [ ] వివిధ కఠినత్వ స్థాయిలు రూపొందించండి వివిధ اقتبాస్ల క్లిష్టతతో
|
||||
- [ ] اقتبాసు ఎంత పూర్తయిందో చూపించే ప్రగతిబార్ జోడించండి
|
||||
- [ ] వ్యక్తిగత గణాంకాలు ట్రాక్ చేసే యూజర్ ఖాతాలు అమలు చేయండి
|
||||
- [ ] కస్టమ్ థీమ్ డిజైన్ చేసి యూజర్లకు వారి ఇష్టమైన శైలిని ఎంచుకోవడానికి అవకాశం ఇవ్వండి
|
||||
|
||||
### 🗓️ **మీ నెలంత ప్రయాణం**
|
||||
- [ ] సరైన వేళల వేడి వేయడాన్ని తెలుసుకునే శిక్షణా పాఠాలు కలిగిన టైపింగ్ కోర్సులు సృష్టించండి
|
||||
- [ ] ఏ అక్షరాలు లేదా పదాలు ఎక్కువగా లోపం కలిగిస్తున్నాయి అనేది చూపించే విశ్లేషణ పరికరాలు రూపొందించండి
|
||||
- [ ] భిన్న భాషలు మరియు కీబోర్డ్ లేఅవుట్లకు మద్దతు జోడించండి
|
||||
- [ ] సాహిత్య డేటాబేసుల నుంచి اقتబాస్లు తెచ్చే విద్యా APIsతో సహకరించండి
|
||||
- [ ] మీ మెరుగుపరచబడిన టైపింగ్ ఆటను ఇतरులకు ఉపయోగించేలా ప్రచురించండి
|
||||
|
||||
### 🎯 **చివరి ఆలోచన పరిక్ష**
|
||||
|
||||
**ముందుకు వెళ్లేముందు, వీలైతే ఈ క్షణాలను ఆనందించండి:**
|
||||
- ఈ ఆటను సృష్టించే సమయంలో అత్యంత సంతృప్తికరమైన క్షణం ఏది?
|
||||
- ఈవెంట్-నిర్దేశిత ప్రోగ్రామింగ్ పట్ల మీరు ఇప్పటి భావిస్తున్నది మొదటి సారి ప్రారంభించినప్పుడు ఎలా ఉంది?
|
||||
- ఈ ఆటను ప్రత్యేకంగా మార్చే ఏ ఫీచర్ జోడించదలచుకున్నారు?
|
||||
- ఈవెంట్ హ్యాండ్లింగ్ సూత్రాలను ఇతర ప్రాజెక్టుల్లో ఎలా ప్రయోగిస్తారు?
|
||||
|
||||
```mermaid
|
||||
journey
|
||||
title మీ ఈవెంట్ ప్రోగ్రామింగ్ నమ్మకం ప్రయాణం
|
||||
section Today
|
||||
ఈవెంట్లను అర్థం చేసుకోవడం: 3: You
|
||||
UI రూపొందించడం: 4: You
|
||||
ఈవెంట్ లిసనర్లను రాయడం: 5: You
|
||||
section This Week
|
||||
ఫీచర్లను జోడించడం: 4: You
|
||||
లోపాలను డిబగ్ చేయడం: 5: You
|
||||
UX మెరుగుపరుచడం: 4: You
|
||||
section Next Month
|
||||
సంక్లిష్ట యాప్ల నిర్మాణం: 5: You
|
||||
ఇతరులకు బోధించడం: 5: You
|
||||
ఫ్రేమ్వర్క్ల సృష్టించడం: 5: You
|
||||
```
|
||||
> 🌟 **మరుస్తవద్దు**: మీరు ఇప్పుడు ప్రతిస్పందనీయ వెబ్సైట్లను మరియు అప్లికేషన్లను సాధన చేసే కోర్ కాన్సెప్ట్స్ లో ఒకటి నేర్చుకున్నారు. ఈవెంట్-డ్రైవన్ ప్రోగ్రామింగ్ వెబ్ను జీవంతం గా, స్పందనీయంగా మారుస్తుంది. ప్రతిసారి మీరు డ్రాప్డౌన్ మెనూ, టైప్ చేస్తున్నప్పుడు ధృవీಕರಣ ఫారం, లేదా మీ క్లిక్లకు స్పందించే ఆట చూస్తే, మీరు ఇప్పుడు దాని వెనుక మాయాజాలాన్ని అర్థం చేసుకున్నారు. మీరు కేవలం కోడ్ నేర్చుకుంటూ కాకుండా అనుభవాలను సృష్టిస్తున్నారు! 🎉
|
||||
|
||||
---
|
||||
|
||||
## సమీక్ష & స్వయంఅధ్యయనం
|
||||
|
||||
[అన్ని ఈవెంట్లు తెలుసుకోండి](https://developer.mozilla.org/docs/Web/Events) వెబ్ బ్రౌజర్ ద్వారా డెవలపర్కు అందుబాటులో వున్నవి, మరియు మీరు ప్రతి ఒక్కటి ఎప్పుడు ఉపయోగించాలో ఆలోచించండి.
|
||||
|
||||
## అసైన్మెంట్
|
||||
|
||||
[కొత్త కీబోర్డ్ గేమ్ సృష్టించండి](assignment.md)
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**అస్పష్టతా ప్రకటనా**:
|
||||
ఈ దస్తావేజు AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము నిర్దిష్టత కోసం ప్రయత్నిస్తున్నప్పటికీ, ఆటోమేటెడ్ అనువాదాలలో పొరపాట్లు లేదా తప్పుదోవలు ఉండవచ్చును అన్న దాన్ని దయచేసి గమనించండి. స్థానిక భాషలో ఉన్న మూల दस्तावेजం అధికారిక మూలంగా భావించాలి. అత్యవసర సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సూచించబడుతుంది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుగా అర్థం చేసుకోబడటం కోసం మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,57 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "3eac59d70e2532a677a2ce6bf765485a",
|
||||
"translation_date": "2026-01-08T18:23:16+00:00",
|
||||
"source_file": "4-typing-game/typing-game/assignment.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# కొత్త కీబోర్డ్ గేమ్ సృష్టించండి
|
||||
|
||||
## సూచనలు
|
||||
|
||||
ఇప్పుడు మీరు టైపింగ్ గేమ్తో ఈవెంట్-డ్రివెన్ ప్రోగ్రామింగ్ మౌలికాలను నిపుణతతో నేర్చుకున్నప్పుడు, మీ సృజనాత్మకతను విడుదల చేయక్కర్ సమయం వచ్చింది! ఈవెంట్ హ్యాండ్లింగ్, DOM మానిప్యులేషన్, మరియు యూజర్ ఇంటరాక్షన్ నమూనాలపై మీ అవగాహనను ప్రదర్శించే మీ స్వంత కీబోర్డ్-ఆధారిత గేమ్ని డిజైన్ చేసి నిర్మించండి.
|
||||
|
||||
నిర్ధిష్ట కార్యాలు సాధించడానికి కీబోర్డ్ ఈవెంట్లు ఉపయోగించే చిన్న గేమ్ను సృష్టించండి. ఇది వేరే రకమైన టైపింగ్ గేమ్, కీవ్రోకులపై స్క్రీన్కి పిక్సెల్స్ పెయింట్ చేసే ఆర్ట్ అప్లికేషన్, హెడ్డుతిరుగు కీలు ఉపయోగించి నియంత్రించే సాదా ఆర్కేడ్-స్టైల్ గేమ్, లేదా మీరు ఊహించగలిగే మరేదైనా సృజనాత్మక భావన కావచ్చు. సృజనాత్మకంగా ఆలోచించండి, వేరే కీలు వేరే ప్రవర్తనలను ఎలా ప్రేరేపించగలవో పరిశీలించండి!
|
||||
|
||||
**మీ గేమ్లో ఉండాలి:**
|
||||
|
||||
| అవసరం | వివరణ | ఉద్దేశ్యం |
|
||||
|-------------|-------------|---------|
|
||||
| **ఈవెంట్ లిసనర్లు** | కనీసం 3 వేర్వేరు కీబోర్డ్ ఈవెంట్లకు స్పందించాలి | ఈవెంట్ హ్యాండ్లింగ్ అవగాహన ప్రదర్శించాలి |
|
||||
| **దృశ్య ప్రతిస్పందన** | యూజర్ ఇన్పుట్కి తక్షణ దృశ్య ప్రతిస్పందన ఇవ్వాలి | DOM మానిప్యులేషన్ లో నైపుణ్యం చూపించాలి |
|
||||
| **గేమ్ లాజిక్** | స్కోరింగ్, స్థాయిలు, లేదా పురోగతి మెకానిక్స్ చేర్చాలి | అప్లికేషన్ స్థితిని అమలు చేయడంలో పట్టు సాధించాలి |
|
||||
| **యూజర్ ఇంటర్ఫేస్** | స్పష్టమైన సూచనలు మరియు సుల భ ప్రయోగకర నియంత్రణలు ఉండాలి | యూజర్ అనుభవ డిజైన్ నైపుణ్యాలను అభివృద్ధి చేయాలి |
|
||||
|
||||
**ప్రత్యేక సృజనాత్మక ప్రాజెక్ట్ ఆలోచనలు:**
|
||||
- **రిథమ్ గేమ్**: ఆటగాళ్లు సంగీతం లేదా దృశ్య సూచనలతో సమయానుకూలంగా కీలు నొక్కతారు
|
||||
- **పిక్సెల్ ఆర్ట్ క్రియేటర్**: వేర్వేరు కీలు వేర్వేరు రంగులు లేదా నమూనాలను పెయింట్ చేస్తాయి
|
||||
- **వర్డ్ బిల్డర్**: ఆటగాళ్లు నిర్దిష్ట క్రమంలో అక్షరాలను టైప్ చేసి పదాలు సృష్టిస్తారు
|
||||
- **స్నేక్ గేమ్**: హెడ్డుతిరుగు కీలు ఉపయోగించి స్నేక్ ని నియంత్రించి అంశాలను సేకరించండి
|
||||
- **మ్యూజిక్ సింథेसైజర్**: వేర్వేరు కీలు వేర్వేరు సంగీత నోట్లను లేదా శబ్దాలను ప్లే చేస్తాయి
|
||||
- **స్పీడ్ టైపింగ్ వేరియంట్స్**: శాఖాపరమైన టైపింగ్ (ప్రోగ్రామింగ్ పదాలు, విదేశీ భాషలు)
|
||||
- **కీబోర్డ్ డ్రమ్మర్**: కీలను వేర్వేరు డ్రమ్ శబ్దాలకు మ్యాపింగ్ చేసి బీట్స్ సృష్టించండి
|
||||
|
||||
**అమలు సూచనలు:**
|
||||
- **సాధారణ కాన్సెప్ట్తో ప్రారంభించి సాంక్లిష్టతను మెల్లగా పెంచండి**
|
||||
- **సహజంగా అనిపించే సాఫీ, స్పందనీయ నియంత్రణలపై దృష్టి సారించండి**
|
||||
- **గేమ్ స్థితి మరియు ఆటగాడు పురోగతి కి స్పష్టమైన దృశ్య సూచికలను మిగులు చూపించండి**
|
||||
- **వివిధ వినియోగదారులతో మీ గేమ్ను పరీక్షించి, సులభమైన గేమ్ప్లే ఉండో లేదో ధృవీకరించండి**
|
||||
- **ఈవెంట్ హ్యాండ్లింగ్ వ్యూహాన్ని వివరించే వ్యాఖ్యలతో మీ కోడ్ను డాక్యుమెంట్ చేయండి**
|
||||
|
||||
## మానదండం
|
||||
|
||||
| ప్రమాణం | ఉదా రణాత్మక | సరిపోయేలా | మెరుగుపరుచుకోవాలి |
|
||||
| -------- | --------- | -------- | ----------------- |
|
||||
| **ఫంక్షనాలిటీ** | బహుముఖ లక్షణాలు మరియు సాఫీ గేమ్ప్లే ఉన్న పూర్తి, మెరుగైన గేమ్ | కీబోర్డ్ ఈవెంట్ హ్యాండ్లింగ్ను ప్రదర్శించే బేసిక్ లక్షణాలతో పని చేసే గేమ్ | పరిమిత ఫంక్షనాలిటీ లేదా గంభీర బగ్గిళ్లతో కనీస అమలు |
|
||||
| **కోడ్ నాణ్యత** | మంచి అమర్చబడిన, వ్యాఖ్యలతో కూడిన కోడ్, ఉత్తమ ఆచారాలతో మరియు సమర్థవంతమైన ఈవెంట్ హ్యాండ్లింగ్ తో | ఈవెంట్ లిసనర్ల మరియు DOM మానిప్యులేషన్ యొక్క సరైన ఉపయోగంతో శుభ్రమైన చదవగలిగే కోడ్ | కొంత ఆర్గనైజేషన్ సమస్యలు లేదా సమర్థవంతమైన అమలులేని ప్రాథమిక కోడ్ నిర్మాణం |
|
||||
| **యూజర్ అనుభవం** | సులభమైన నియంత్రణలు, స్పష్టమైన ఫీడ్బ్యాక్, మరియు అంతర్జాలంలో నైపుణ్యం గేమ్ప్లే | సమర్థవంతమైన ఇంటర్ఫేస్, తగిన వినియోగదారుల గైడెన్స్ మరియు స్పందన నియంత్రణలు | క్లియర్ కాని సూచనలు లేదా తక్కువ స్పందనీయతతో ప్రాథమిక ఇంటర్ఫేస్ |
|
||||
| **సృజనాత్మకత** | కీబోర్డ్ ఈవెంట్ల వినూత్న వినియోగం మరియు సృజనాత్మక సమస్య పరిష్కారంతో ఆరిజనల్ భావన | సాధారణ గేమ్ నమూనాలపై ఆసక్తికరమైన వైవిధ్యంతో మంచి ఈవెంట్ హ్యాండ్లింగ్ ఉపయోగం | కనీస సృజనాత్మక అంశాలతో ప్రాథమిక భావన సరళమైన అమలు |
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**ఫెడిక్లైమర్**:
|
||||
ఈ డాక్యుమెంట్ను AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వాన్ని నిర్ధారించేందుకు ప్రయత్నిస్తుంటే కూడా, స్వయంచాలక అనువాదాలలో పొరపాట్లు లేదా అసత్యతలు ఉండవచ్చు అనే అంశాన్ని దయచేసి గుర్తుంచుకోండి. మాతృ భాషలో ఉన్న అసలు డాక్యుమెంట్ను అధికారిక మూలంగా పరిగణించాలి. కీలక సమాచారం కోసం, నిపుణుల చేతి అనువాదం సూచించబడుతుంది. ఈ అనువాదం వల్ల కలగనున్న ఏవైనా అవగాహన లోపాలు లేదా తప్పుగా అర్థం చేసుకోవడాలపై మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,663 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "2b6203a48c48d8234e0948353b47d84e",
|
||||
"translation_date": "2026-01-08T15:05:12+00:00",
|
||||
"source_file": "5-browser-extension/2-forms-browsers-local-storage/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# బ్రౌజర్ పొడగింపు ప్రాజెక్ట్ పార్ట్ 2: API ను కాల్ చేయండి, లోకల్ స్టోరేజ్ ఉపయోగించండి
|
||||
|
||||
```mermaid
|
||||
journey
|
||||
title మీ API సమన్వయం & నిల్వ ప్రయాణం
|
||||
section బేస్
|
||||
DOM రిఫరెన్సులను సెట్ చేయండి: 3: Student
|
||||
ఈవెంట్ లిసనర్స్ జోడించండి: 4: Student
|
||||
ఫారమ్ సమర్పణను నిర్వహించండి: 4: Student
|
||||
section డేటా నిర్వహణ
|
||||
లోకల్ స్టోరేజ్ అమలుచేసి: 4: Student
|
||||
API కాళ్లను సృష్టించండి: 5: Student
|
||||
అసింక్ ఆపరేషన్లను నిర్వహించండి: 5: Student
|
||||
section వినియోగదారు అనుభవం
|
||||
పొరపాటు నిర్వహణను జోడించండి: 5: Student
|
||||
లోడింగ్ స్థితులను సృష్టించండి: 4: Student
|
||||
ఇంపుట్ పరస్పర చర్యలను మెరుగు పరచండి: 5: Student
|
||||
```
|
||||
## ప్రీ-లెక్చర్ క్విజ్
|
||||
|
||||
[ప్రీ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/web/quiz/25)
|
||||
|
||||
## పరిచయం
|
||||
|
||||
నువ్వు ప్రారంభించిన బ్రౌజర్ పొడగింపు గుర్తుందా? ఇప్పటికీ నీకు బాగున్న రూపం ఉంది, కానీ అది అసలే స్థిరమైనది. ఈ రోజు మనం దానిని ప్రాణం పోస్తాము, నిజమైన డేటాతో కనెక్ట్ చేసి, దీనికి స్మృతి ఇస్తాము.
|
||||
|
||||
అపోలో మిషన్ కంట్రోల్ కంప్యూటర్ల గురించి ఆలోచించు - అవి స్థిరమైన సమాచారాన్ని మాత్రమే ప్రదర్శించలేదు. అవి ఎప్పటికప్పుడు స్పేస్ క్రాఫ్ట్తో కమ్యూనికేట్ చేసి, టెలిమెట్రీ డేటాతో నవీకరించబడ్డాయి మరియు ముఖ్యమైన మిషన్ పరామితులను గుర్తు పెట్టుకున్నాయి. మనం ఈ రోజు నిర్మిస్తున్న డైనమిక్ ప్రవర్తన ఇష్టం. మీ పొడగింపు ఇంటర్నెట్కు చేరుకుంటుంది, నిజమైన పర్యావరణ డేటా తీసుకుంటుంది, మరియు మీ సెట్ చేసిన సెట్టింగ్స్ను భవిష్యత్తు కోసం గుర్తుంచుకుంటుంది.
|
||||
|
||||
API ఇంటిగ్రేషన్ కష్టం అనిపించవచ్చును, కానీ ఇది మీ కోడ్ను ఇతర సేవలతో ఎలా కమ్యూనికేట్ చేయాలో నేర్పించడం మాత్రమే. మీరు వాతావరణ డేటాను తీసుకునే, సోషల్ మీడియాలో ఫీడ్స్ను పొందే లేదా ఈ రోజు చేయబోయే విధంగా కార్బన్ ఫుట్ ప్రింట్ సమాచారం తీసుకునే విధానం, ఇవన్నీ ఈ డిజిటల్ కనెక్షన్లను ఏర్పాటు చేసే విషయం. మనము ఏ విధంగానే బ్రౌజర్లు ఎలా సమాచారాన్ని నిలిపివేయగలవో కూడా తెలుసుకుందాము - లైబ్రరీలు ఎలా కార్డు క్యాటలాగ్లు ఉపయోగించి పుస్తకాలు ఎక్కడ ఉన్నాయో గుర్తుంచుకున్నాయో అలా.
|
||||
|
||||
ఈ పాఠం పూర్తయిన తర్వాత, మీకు నిజమైన డేటా పాఠిస్తుంది, వినియోగదారు ప్రాధమ్యాలను నిలిపివేస్తుంది మరియు సరళమైన అనుభవాన్ని అందించే బ్రౌజర్ పొడగింపు ఉంటుంది. మొదలు పెట్టుదాం!
|
||||
|
||||
```mermaid
|
||||
mindmap
|
||||
root((Dynamic Extensions))
|
||||
DOM Manipulation
|
||||
Element Selection
|
||||
Event Handling
|
||||
State Management
|
||||
UI Updates
|
||||
Local Storage
|
||||
Data Persistence
|
||||
Key-Value Pairs
|
||||
Session Management
|
||||
User Preferences
|
||||
API Integration
|
||||
HTTP Requests
|
||||
Authentication
|
||||
Data Parsing
|
||||
Error Handling
|
||||
Async Programming
|
||||
Promises
|
||||
Async/Await
|
||||
Error Catching
|
||||
Non-blocking Code
|
||||
User Experience
|
||||
లోడ్ అవుతున్న స్థితులు
|
||||
పొరపాటు సందేశాలు
|
||||
సాఫ్టు మార్పులు
|
||||
డేటా ధృవీకరణ
|
||||
```
|
||||
✅ మీ కోడ్ ఎక్కడ ఉంచాలో తెలుసుకోవడానికి సంబంధిత ఫైల్స్ లో ఉన్న నంబర్ చేసిన సెగ్మెంట్లను అనుసరించండి
|
||||
|
||||
## పొడగింపులో మానిప్యులేట్ చేసే ఎలిమెంట్లను సెట్ చేయండి
|
||||
|
||||
మీ జావా స్క్రిప్ట్ ఇంటర్ఫేస్ను మానిప్యులేట్ చేయడానికి ముందు, అది ప్రత్యేక HTML ఎలిమెంట్లకు సూచనలు కావాలి. ఇది టెలిస్కోపును నిర్దిష్ట నక్షత్రాలపై దృష్టి పెట్టడంలాంటిది - గెలిలియో జుపిటర్ గోళ్ళను అధ్యయనం చేయడానికి ముందు జుపిటర్ను కనుగొని దానిపై దృష్టి పెట్టాలి.
|
||||
|
||||
మీ `index.js` ఫైలిలో, మనం ముఖ్యమైన ప్రతి ఫారం ఎలిమెంట్కి సూచనలను పట్టే `const` వేరియబుల్స్ సృష్టిస్తాము. ఇది శాస్త్రవేత్తలు తమ పరికరాలపై లేబుల్ పెడుతున్న తీరుగానే - ప్రతి సారి మొత్తం ప్రయోగశాలను అన్వేషించకుండా వారు అవసరమైన దాని నేరుగా యాక్సెస్ చేయగలుగుతారు.
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A[జావాస్క్రిప్ట్ కోడ్] --> B[document.querySelector]
|
||||
B --> C[CSS సెలెక్టర్లు]
|
||||
C --> D[HTML ఎలిమెంట్లు]
|
||||
|
||||
D --> E[".form-data"]
|
||||
D --> F[".region-name"]
|
||||
D --> G[".api-key"]
|
||||
D --> H[".loading"]
|
||||
D --> I[".errors"]
|
||||
D --> J[".result-container"]
|
||||
|
||||
E --> K[ఫారం ఎలిమెంట్]
|
||||
F --> L[ఇన్పుట్ ఫీల్డ్]
|
||||
G --> M[ఇన్పుట్ ఫీల్డ్]
|
||||
H --> N[UI ఎలిమెంట్]
|
||||
I --> O[UI ఎలిమెంట్]
|
||||
J --> P[UI ఎలిమెంట్]
|
||||
|
||||
style A fill:#e1f5fe
|
||||
style D fill:#e8f5e8
|
||||
style K fill:#fff3e0
|
||||
style L fill:#fff3e0
|
||||
style M fill:#fff3e0
|
||||
```
|
||||
```javascript
|
||||
// ఫారమ్ ఫీల్డ్స్
|
||||
const form = document.querySelector('.form-data');
|
||||
const region = document.querySelector('.region-name');
|
||||
const apiKey = document.querySelector('.api-key');
|
||||
|
||||
// ఫలితాలు
|
||||
const errors = document.querySelector('.errors');
|
||||
const loading = document.querySelector('.loading');
|
||||
const results = document.querySelector('.result-container');
|
||||
const usage = document.querySelector('.carbon-usage');
|
||||
const fossilfuel = document.querySelector('.fossil-fuel');
|
||||
const myregion = document.querySelector('.my-region');
|
||||
const clearBtn = document.querySelector('.clear-btn');
|
||||
```
|
||||
|
||||
**ఈ కోడ్ చేస్తున్నది:**
|
||||
- CSS క్లాస్ సెలెక్టర్లతో `document.querySelector()` ఉపయోగించి ఫాం ఎలిమెంట్లను పట్టుకుంటుంది
|
||||
- ప్రాంతం పేరు మరియు API కీ కోసం ఇన్పుట్ ఫీల్డ్స్కు సూచనలు సృష్టిస్తుంది
|
||||
- కార్బన్ వాడుక డేటా కోసం ఫలిత ప్రదర్శన ఎలిమెంట్లకు కనెక్షన్ను ఏర్పరుస్తుంది
|
||||
- లోడింగ్ సూచికలు మరియు లోప సూచనలు వంటి UI ఎలిమెంట్లను సెటప్ చేస్తుంది
|
||||
- మీ కోడ్ అంతటా సులభంగా పునఃఉపయోగం కోసం ప్రతి ఎలిమెంట్ సూచనను `const` వేరియబుల్ గా నిల్వ చేస్తుంది
|
||||
|
||||
## ఈవెంట్ లిసెనర్లను జోడించండి
|
||||
|
||||
ఇప్పుడు మనం మీ పొడగింపును వినియోగదారుల చర్యలకు స్పందింపజేసేందుకు చేస్తాము. ఈవెంట్ లిసెనర్లు అనేవి మీ కోడ్ వినియోగదారుల పరస్పర చర్యలను పరిశీలించే మార్గం. అవి మొదటి కాలాల్లోని టెలిఫోన్ ఎక్స్ఛేంజ్ ఆపరేటర్లాగా - వారు వచ్చిన కాల్స్కి కస్టమర్స్ కనెక్ట్ కావడానికి సరైన సర్క్యూట్లను అనుసంధానం చేసేవారు.
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant User
|
||||
participant Form
|
||||
participant JavaScript
|
||||
participant API
|
||||
participant Storage
|
||||
|
||||
User->>Form: ప్రాంతం/API కీని నింపండి
|
||||
User->>Form: సబ్మిట్ క్లిక్ చేయండి
|
||||
Form->>JavaScript: సబ్మిట్ ఈవెంట్ ట్రిగ్గర్ చేయు
|
||||
JavaScript->>JavaScript: handleSubmit(e)
|
||||
JavaScript->>Storage: వాడుకరి ప్రాధాన్యతలను సేవ్ చేయండి
|
||||
JavaScript->>API: కార్బన్ డేటాను తీసుకోండి
|
||||
API->>JavaScript: డేటా తిరిగి ఇచ్చు
|
||||
JavaScript->>Form: ఫలితాలతో UI ని నవీకరించు
|
||||
|
||||
User->>Form: క్లియర్ బటన్ క్లిక్ చేయండి
|
||||
Form->>JavaScript: క్లిక్ ఈవెంట్ ట్రిగ్గర్ చేయు
|
||||
JavaScript->>Storage: సేవ్ చేసిన డేటాను క్లియర్ చేయండి
|
||||
JavaScript->>Form: ప్రారంభ స్థితికి రీసెట్ చేయండి
|
||||
```
|
||||
```javascript
|
||||
form.addEventListener('submit', (e) => handleSubmit(e));
|
||||
clearBtn.addEventListener('click', (e) => reset(e));
|
||||
init();
|
||||
```
|
||||
|
||||
**ఈ సమాహారాల అర్థం:**
|
||||
- వినియోగదారులు ఎంటర్ నొక్కినప్పుడు లేదా సమర్పించడానికి క్లిక్ చేసినప్పుడు ట్రిగ్గర్ అయ్యే ఫాంకు సబ్మిట్ లిసినర్ను కట్టడం
|
||||
- ఫారమ్ను రీసెట్ చేయడానికి క్లియర్ బటన్కు క్లిక్ లిసినర్ను అనుసంధానం చేయడం
|
||||
- అదనపు నియంత్రణ కోసం ఈవెంట్ ఆబ్జెక్ట్ `(e)`ని హ్యాండ్లర్ ఫంక్షన్లకు పంపడం
|
||||
- మీ పొడగింపు ప్రారంభ స్థితిని అమర్చడానికి వెంటనే `init()` ఫంక్షన్ను పిలవడం
|
||||
|
||||
✅ ఇక్కడ ఉపయోగించిన షార్ట్ హ్యాండ్ ఏరో ఫంక్షన్ సింటాక్స్ను గమనించండి. ఈ ఆధునిక జావాస్క్రిప్ట్ విధానం సంప్రదాయ ఫంక్షన్ ఎక్స్ప్రెషన్ల కంటే మరింత క్లీనుగా ఉంటుంది, కానీ రెండూ బాగా పనిచేస్తాయి!
|
||||
|
||||
### 🔄 **పాఠశాల తనిఖీ**
|
||||
**ఈవెంట్ హ్యాండ్లింగ్ అర్థం చేసుకోవడం**: Initialization కు వెళ్లేముందు, మీరు తెలుసుకోవాలి:
|
||||
- ✅ `addEventListener` ఎలా వినియోగదారు చర్యలను జావాస్క్రిప్ట్ ఫంక్షన్స్ కు కలుపుతుందో బట్టి వివరించగలరు
|
||||
- ✅ హ్యాండ్లర్ ఫంక్షన్లకు ఈవెంట్ ఆబ్జెక్ట్ `(e)` ఎందుకు పాస్ చేయబడుతుందో తెలుసుకోవచ్చు
|
||||
- ✅ `submit` మరియు `click` ఈవెంట్ల మధ్య తేడా గుర్తించగలరు
|
||||
- ✅ `init()` ఫంక్షన్ ఎప్పుడు మరియు ఎందుకు అమలవుతుందో వివరించగలరు
|
||||
|
||||
**తక్షణమే స్వయం పరీక్ష**: మీరు `e.preventDefault()`ను ఫారం సబ్మిషన్లో మర్చిపోతే ఏమవుతుంది?
|
||||
*సమాధానం: పేజీ రీలోడ్ అవుతుంది, అందువలన అన్ని జావాస్క్రిప్ట్ స్థితులు పోతాయి మరియు వినియోగదారు అనుభవం అంతరాయం వస్తుంది*
|
||||
|
||||
## ప్రారంభకల్పన మరియు రీసెట్ ఫంక్షన్లను నిర్మించండి
|
||||
|
||||
మీ పొడగింపు కోసం Initialization లాజిక్ను సృష్టిద్దాం. `init()` ఫంక్షన్ ఒక నౌక యొక్క నావిగేషన్ సిస్టమ్ లాంటిదిది - ఇది ప్రస్తుత స్థితిని తనిఖీ చేసి అనుసరిస్తుంది. ఇది ఎవరో ముందు మీ పొడగింపును ఉపయోగించారో లేదా వారి పూర్వ సెట్టింగ్స్ను లోడ్ చేస్తుంది.
|
||||
|
||||
`reset()` ఫంక్షన్ వినియోగదారులకు కొత్త ప్రారంభాన్ని ఇస్తుంది - శాస్త్రవేత్తలు పరిశీలనల మధ్య తమ పరికరాలను రీసెట్ చేసే విధంగానే, శుభత డేటా కోసం.
|
||||
|
||||
```javascript
|
||||
function init() {
|
||||
// యూజర్ ముందు API ఆవశ్యకతలను సేవ్ చేసినారా అని తనిఖీ చేయండి
|
||||
const storedApiKey = localStorage.getItem('apiKey');
|
||||
const storedRegion = localStorage.getItem('regionName');
|
||||
|
||||
// ఎక్స్టెన్షన్ చిహ్నాన్ని సాధారణ ఆకుపచ్చ (భవిష్యత్తు పాఠానికి ప్లేస్హోల్డర్) గా సెట్ చేయండి
|
||||
// TODO: తదుపరి పాఠంలో చిహ్నం అప్డేట్ను అమలు చేయండి
|
||||
|
||||
if (storedApiKey === null || storedRegion === null) {
|
||||
// తొలి సారి యూజర్: సెటప్ ఫారాన్ని చూపించండి
|
||||
form.style.display = 'block';
|
||||
results.style.display = 'none';
|
||||
loading.style.display = 'none';
|
||||
clearBtn.style.display = 'none';
|
||||
errors.textContent = '';
|
||||
} else {
|
||||
// తిరిగి వచ్చిన యూజర్: వారి సేవ్ చేసిన డేటాను ఆటోమేటిగ్గా లోడ్ చేయండి
|
||||
displayCarbonUsage(storedApiKey, storedRegion);
|
||||
results.style.display = 'none';
|
||||
form.style.display = 'none';
|
||||
clearBtn.style.display = 'block';
|
||||
}
|
||||
}
|
||||
|
||||
function reset(e) {
|
||||
e.preventDefault();
|
||||
// కొత్త ప్రాంతాన్ని ఎంచుకునేందుకు నిల్వ చేసిన ప్రాంతాన్ని క్లియర్ చేయండి
|
||||
localStorage.removeItem('regionName');
|
||||
// ప్రారంభ ప్రక్రియను రీస్టార్ట్ చేయండి
|
||||
init();
|
||||
}
|
||||
```
|
||||
|
||||
**ఇక్కడ జరుగుతున్నది:**
|
||||
- బ్రౌజర్ లోకల్ స్టోరేజ్ నుండి నిల్వ చేయబడిన API కీ మరియు ప్రాంతాన్ని తీసుకుంటుంది
|
||||
- ఇది మొదటి సారి ఉపయోగిస్తున్నవారో (నిల్వ చేయబడిన ధృవపత్రాలు లేవో) లేదా తిరిగి వచ్చిన వినియోగదారో చెక్ చేస్తుంది
|
||||
- కొత్త వినియోగదారుల కోసం సెటప్ ఫారం చూపుతుంది మరియు ఇతర UI అంశాలను దాచుతుంది
|
||||
- తిరిగి వచ్చిన వినియోగదారుల కోసం స్వయంగా సঞ্চయించిన డేటాను లోడ్ చేసి రీసెట్ ఆప్షన్ చూపిస్తుంది
|
||||
- అందుబాటులో ఉన్న డేటాపై ఆధారపడి యూజర్ ఇంటర్ఫేస్ స్టేట్ను నిర్వహిస్తుంది
|
||||
|
||||
**లోకల్ స్టోరేజ్ గురించి ముఖ్యమైన భావనలు:**
|
||||
- బ్రౌజర్ సెషన్స్ మధ్య డేటాను నిలిపివేస్తుంది (సెషన్ స్టోరేజ్తో పోలిస్తే)
|
||||
- `getItem()` మరియు `setItem()` ఉపయోగించి కీ-వెల్యూ జోడింపుగా డేటాను నిల్వ చేస్తుంది
|
||||
- ఒక కీకి డేటా లేనప్పుడు `null` తిరిగి ఇస్తుంది
|
||||
- వినియోగదారుల ప్రాధమ్యాలు మరియు సెట్టింగ్స్ గుర్తుంచుకోవడం కోసం సులభమైన మార్గం అందిస్తుంది
|
||||
|
||||
> 💡 **బ్రౌజర్ స్టోరేజ్ అర్థం చేసుకోండి**: [LocalStorage](https://developer.mozilla.org/docs/Web/API/Window/localStorage) మీ పొడగింపుకు దృఢమైన స్మృతి ఇస్తుంది. ప్రాచీన అలెగ్జాండ్రియా గ్రంథాలయం రెక్కలుగా స్మృతిని నిలిపినట్లు ఆలోచించండి - శాస్త్రజ్ఞులు వెళ్లిపోయినా సమాచారం అందుబాటులో ఉంటుంది.
|
||||
>
|
||||
> **ప్రధాన లక్షణాలు:**
|
||||
> - బ్రౌజర్ మూసివేసినప్పటికీ డేటా నిలుస్తుంది
|
||||
> - కంప్యూటర్ రీస్టార్ట్లు, బ్రౌజర్ క్రాష్లను తట్టుకొంటుంది
|
||||
> - వినియోగదారుల ప్రాధమ్యాలకు పెద్ద నిల్వ స్థలం అందిస్తుంది
|
||||
> - నెట్వర్క్ ఆలస్యం లేకుండా తక్షణ యాక్సెస్ ఇస్తుంది
|
||||
|
||||
> **గురుతింపు**: మీ బ్రౌజర్ పొడగింపుకు ప్రత్యేకమైన లోకల్ స్టోరేజ్ ఉంటుంది, ఇది సాధారణ వెబ్ పేజీల నుండి వేరుగా ఉంటుంది. ఇది భద్రతను కలిగించి ఇతర వెబ్సైట్లు మధ్య కలకలం నివారిస్తుంది.
|
||||
|
||||
మీ నిల్వ చేసిన డేటాను చూడటానికి బ్రౌజర్ డెవలపర్ టూల్స్ (F12) తెరవాలి, ఆపై **Application** ట్యాబ్కు వెళ్లి **Local Storage** విభాగాన్ని విస్తరించండి.
|
||||
|
||||
```mermaid
|
||||
stateDiagram-v2
|
||||
[*] --> CheckStorage: ఎక్స్టెన్షన్ మొదలవుతుంది
|
||||
CheckStorage --> FirstTime: నిల్వ డేటా లేదు
|
||||
CheckStorage --> Returning: డేటా చెక్ చేయబడింది
|
||||
|
||||
FirstTime --> ShowForm: సెటప్ ఫారమ్ ప్రదర్శించు
|
||||
ShowForm --> UserInput: వినియోగదారు డేటా నమోదు చేస్తార
|
||||
UserInput --> SaveData: localStorage లో నిల్వ
|
||||
SaveData --> FetchAPI: కార్బన్ డేటా తెచ్చుకోండి
|
||||
|
||||
Returning --> LoadData: localStorage నుండి చదవండి
|
||||
LoadData --> FetchAPI: కార్బన్ డేటా తెచ్చుకోండి
|
||||
|
||||
FetchAPI --> ShowResults: డేటా ప్రదర్శన
|
||||
ShowResults --> UserAction: వినియోగదారు చర్య
|
||||
|
||||
UserAction --> Reset: క్లియర్ బటన్ నొక్కారు
|
||||
UserAction --> ShowResults: డేటా వీక్షణ
|
||||
|
||||
Reset --> ClearStorage: నిల్వ డేటాను తొలగించు
|
||||
ClearStorage --> FirstTime: సెటప్ కు తిరుగు
|
||||
```
|
||||

|
||||
|
||||
> ⚠️ **భద్రతా పరామర్శ**: ఉత్పత్తి అనువర్తనాల్లో, API కీలు LocalStorage లో నిల్వ చేయడం భద్రతా ప్రమాదాలను కలిగిస్తుంది ఎందుకంటే జావాస్క్రిప్ట్ ఈ డేటాకు యాక్సెస్ చేయగలదు. పాఠశాలలో ఈ విధానం సరైనది, కానీ నిజమైన అనువర్తనాలు సున్నితమైన ధారవాహికలకు సురక్షిత సర్వర్-సైడ్ నిల్వను ఉపయోగించాలి.
|
||||
|
||||
## ఫారం సమర్పణను నిర్వహించండి
|
||||
|
||||
ఇప్పుడు ఎవరో మీ ఫారాన్ని సమర్పించినప్పుడు ఏమవుతుంది అనేది చూస్తాము. డిఫాల్ట్గా, బ్రౌజర్లు ఫారం సమర్పించినప్పుడు పేజీని రీలోడ్ చేస్తాయి, కానీ మనం ఈ ప్రవర్తనను అడ్డుకుంటూ మృదువైన అనుభవం సృష్టిస్తాము.
|
||||
|
||||
ఈ విధానం మిషన్ కంట్రోల్ ఎలాంటి వ్యవస్థను ప్రతి ప్రచారం కోసం రీసెట్ చేయకుండా, నిరంతరంగా ఆపరేట్ చేస్తూ కొత్త సమాచారాన్ని ప్రాసెస్ చేసే విధానాన్ని సూచిస్తుంది.
|
||||
|
||||
ఫామ్ సమర్పణ ఈవెంట్ను పట్టుకొని వినియోగదారు ఇన్పుట్ను తీసుకునే ఫంక్షన్ను సృష్టించండి:
|
||||
|
||||
```javascript
|
||||
function handleSubmit(e) {
|
||||
e.preventDefault();
|
||||
setUpUser(apiKey.value, region.value);
|
||||
}
|
||||
```
|
||||
|
||||
**పై కోడ్లో:**
|
||||
- పేజీ రీలోడ్ అయ్యే డిఫాల్ట్ ఫారం సమర్పణ ప్రవర్తనను అడ్డుకుంటుంది
|
||||
- API కీ మరియు ప్రాంత ఫీల్డ్ల నుంచి వినియోగదారు ఇన్పుట్ విలువలను తీసుకుంటుంది
|
||||
- ప్రాసెసింగ్ కోసం `setUpUser()` ఫంక్షన్కు ఫారం డేటాను పంపిస్తుంది
|
||||
- సింగిల్-పేజీ అప్లికేషన్ ప్రవర్తనను నిలుపుకోవడానికి పేజీ రీలోడ్స్ నివారిస్తుంది
|
||||
|
||||
✅ మీ HTML ఫారం ఫీల్డ్లలో `required` అట్రిబ్యూట్ ఉన్నందున బ్రౌజర్ ఆ ట్రమ్ ఫంక్షన్లు అమలయ్యే ముందు వినియోగదారు API కీ, ప్రాంతం రెండింటినీ ఇవ్వాలని ఆటోమేటిక్ గా ధ్రువీకరిస్తుంది.
|
||||
|
||||
## వినియోగదారు ప్రాధమ్యాలను సెటప్ చేయండి
|
||||
|
||||
`setUpUser` ఫంక్షన్ వినియోగదారుడి ధృవపత్రాలను సేవ్ చేసి మొదటి API కాల్ను ప్రారంభిస్తుంది. ఇది సెటప్ నుండి ఫలితాల ప్రదర్శనకు సాఫీ మార్పును సృష్టిస్తుంది.
|
||||
|
||||
```javascript
|
||||
function setUpUser(apiKey, regionName) {
|
||||
// భవిష్యత్ సెషన్ల కోసం వినియోగదారు సాక్ష్యాలును సేవ్ చేయండి
|
||||
localStorage.setItem('apiKey', apiKey);
|
||||
localStorage.setItem('regionName', regionName);
|
||||
|
||||
// లోడింగ్ స్థితిని చూపడానికి UI నవీకరించండి
|
||||
loading.style.display = 'block';
|
||||
errors.textContent = '';
|
||||
clearBtn.style.display = 'block';
|
||||
|
||||
// వినియోగదారుని సాక్ష్యాలతో కార్బన్ వినియోగ డేటాను దిగుమతి చేసుకోండి
|
||||
displayCarbonUsage(apiKey, regionName);
|
||||
}
|
||||
```
|
||||
|
||||
**స్టెప్ బై స్టెప్:**
|
||||
- API కీ మరియు ప్రాంత명을 భవిష్యత్తులకు లోకల్ స్టోరేజ్లో నిల్వ చేస్తుంది
|
||||
- డేటా తీసుకురావడాన్ని తెలియజేయడానికి లోడింగ్ సూచికను చూపిస్తుంది
|
||||
- ప్రదర్శన నుంచి పూర్వ లోప సందేశాలను తొలగిస్తుంది
|
||||
- వినియోగదారులు వారి సెట్టింగ్స్ను రీసెట్ చేయడానికి క్లియర్ బటన్ను చూపిస్తుంది
|
||||
- నిజమైన కార్బన్ వాడుక డేటాను పొందేందుకు API కాల్ను మొదలుపెడుతుంది
|
||||
|
||||
ఈ ఫంక్షన్ డేటా నిలుపుదల మరియు UI నవీకరణలను ఒక సమన్వయ కృత్యంలో నిర్వహిస్తూ వినియోగదారుడికి సాఫీ అనుభవాన్ని అందిస్తుంది.
|
||||
|
||||
## కార్బన్ వాడుక డేటాను ప్రదర్శించండి
|
||||
|
||||
ఇప్పుడు మనం మీ పొడగింపును API ల ద్వారా బహిరంగ డేటా సోర్సులను కనెక్ట్ చేస్తాము. ఇది మీ పొడగింపును స్టాండ్ఎలోన్ టూల్ కంటే బయట నుండి నిజ కాల సమాచారాన్ని యాక్సెస్ చేసే సాధనంగా మార్చుతుంది.
|
||||
|
||||
**APIs అర్థం చేసుకోవడం**
|
||||
|
||||
[APIs](https://www.webopedia.com/TERM/A/API.html) అనేవి వివిధ అనువర్తనాలు ఎలా పరస్పరం సంభాషిస్తాయో చూపిస్తాయి. వీటిని 19వ శతాబ్దంలో దూర నగరాలను కలిపే టెలిగ్రాఫ్ వ్యవస్థగా చూడవచ్చు - ఆపరేటర్లు దూరపు స్టేషన్లకు అభ్యర్థనలు పంపి కోరిన సమాచారంతో ప్రతిస్పందనలు స్వీకరించేవారు. మీరు సోషల్ మీడియాను చూస్తున్నప్పుడు, వాయిస్ అసిస్టెంట్ ప్రశ్న అడిగినప్పుడు లేదా డెలివరీ యాప్ వాడినప్పుడు APIs ఈ డేటా మార్పిడులను సులభతరం చేస్తాయి.
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[మీ ఎక్స్టెన్షన్] --> B[HTTP అభ్యర్థన]
|
||||
B --> C[CO2 సిగ్నల్ API]
|
||||
C --> D{చెల్లుబాటు అయ్యే అభ్యర్థనా?}
|
||||
D -->|అవును| E[డేటాబేస్ ను విచారించండి]
|
||||
D -->|లేదు| F[లోపం తిరిగి ఇవ్వండి]
|
||||
E --> G[కార్బన్ డేటా]
|
||||
G --> H[JSON జవాబు]
|
||||
H --> I[మీ ఎక్స్టెన్షన్]
|
||||
F --> I
|
||||
I --> J[UI ను అప్డేట్ చేయండి]
|
||||
|
||||
subgraph "API అభ్యర్థన"
|
||||
K[శీర్షికలు: auth-token]
|
||||
L[పారామితులు: countryCode]
|
||||
M[విధానము: GET]
|
||||
end
|
||||
|
||||
subgraph "API జవాబు"
|
||||
N[కార్బన్ తీవ్రత]
|
||||
O[ఫాసిల్ ఇంధనం శాతం]
|
||||
P[కాలముద్ర]
|
||||
end
|
||||
|
||||
style C fill:#e8f5e8
|
||||
style G fill:#fff3e0
|
||||
style I fill:#e1f5fe
|
||||
```
|
||||
**REST APIs గురించి ముఖ్యమైన భావనలు:**
|
||||
- REST అర్థం 'Representational State Transfer'
|
||||
- డేటాతో చేపట్టేందుకు సాధారణ HTTP పద్ధతులు(GET, POST, PUT, DELETE) ఉపయోగిస్తుంది
|
||||
- డేటాను సాధారణంగా JSON ఫార్మాట్లో తిరిగి ఇస్తుంది
|
||||
- వివిధ రకాల అభ్యర్థనలకు సుదృఢ URL ఆధారిత ఎండ్పాయింట్లను అందిస్తుంది
|
||||
|
||||
✅ మనం ఉపయోగించబోయే [CO2 సిగ్నల్ API](https://www.co2signal.com/) ప్రపంచవ్యాప్తంగా విద్యుత్ గ్రిడ్ల నుండి నిజకాల కార్బన్ తీవ్రత సమాచారం ఇస్తుంది. ఇది వినియోగదారులకు వారి విద్యుత్ ఉపయోగం పర్యావరణ ప్రభావం గురించి అవగాహన కల్పిస్తుంది!
|
||||
|
||||
> 💡 **అసింక్రోనస్ జావాస్క్రిప్ట్ అర్థం చేసుకోండి**: [`async` కీవర్డ్](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/async_function) మీ కోడ్ను ఒకేసారి బహుళ క్రియాకలాపాలను నిర్వహించేందుకు అనుమతిస్తుంది. మీరు సర్వర్ నుండి డేటాను అభ్యర్థించే సమయంలో, మీ పొడగింపు మొత్తం ఎక్కడా ఆగకూడదు - అది ఏరో ట్రాఫిక్ కంట్రోల్ ఒక విమానం స్పందించముందు అన్ని ఆపరేషన్లు ఆపివేసిన తీరు కాదు.
|
||||
>
|
||||
> **ముఖ్య లాభాలు:**
|
||||
> - డేటా లోడ్ అయ్యేవరకు పొడగింపు స్పందనशीलంగా ఉంటుంది
|
||||
> - నెట్వర్క్ అభ్యర్థనల సమయంలో ఇతర కోడ్ అమలవ్వగలదు
|
||||
> - సంప్రదాయ కాల్బ్యాక్ పద్ధతుల కన్నా చదవడానికి సులభం
|
||||
> - నెట్వర్క్ సమస్యలకు సాఫీ లోప నిర్వహణ ఇస్తుంది
|
||||
|
||||
ఇదిగో `async` పై చిన్న వీడియో:
|
||||
|
||||
[](https://youtube.com/watch?v=YwmlRkrxvkk "Async and Await for managing promises")
|
||||
|
||||
> 🎥 పై చిత్రం మీద క్లిక్ చేసి async/await గురించి వీడియోను చూడండి.
|
||||
|
||||
### 🔄 **పాఠశాల తనిఖీ**
|
||||
**Async ప్రోగ్రామింగ్ అర్థం చేసుకోండి**: API ఫంక్షన్లోకి వెళ్లే ముందు తెలుసుకోండి:
|
||||
- ✅ ఎందుకు మనం మొత్తం పొడగింపును బ్లాక్ చేయకుండా `async/await` ఉపయోగిస్తామో
|
||||
- ✅ `try/catch` బ్లాకులు నెట్వర్క్ లోపాలను సాఫీగా ఎలా నిర్వహిస్తాయో
|
||||
- ✅ సమకాలీన (సింక్రోనస్) మరియు అసమకాలీన (అసింక్రోనస్) ఆపరేషన్ల మధ్య తేడా
|
||||
- ✅ API కాల్స్ ఎందుకు నిర్లక్ష్యం అయ్యే అవకాశముంది మరియు వాటిని ఎలా పరిష్కరించాలో
|
||||
|
||||
**వాస్తవ ప్రపంచ అనుసంధానం**: ఈ దైనందిన అసింక్రో ఉదాహరణల గురించి ఆలోచించండి:
|
||||
- **ఆపిల్ ఆర్డర్ చేయటం**: మీరు వంటగదీ ముందు నిలబడు వద్దు, రసీదు తీసుకుని ఇతర పనులు చేయవచ్చు
|
||||
- **ఈమెయిల్స్ పంపడం**: మీ ఈమెయిల్ యాప్ పంపేమీ సమయంలో ఫ్రీజ్ అవ్వదు - మరిన్ని ఈమెయిల్స్ రచించవచ్చు
|
||||
- **వెబ్ పేజీలు లోడ్ కావటం**: చిత్రం దశలవారీగా లోడ్ అవుతుంటే మీరు ఇప్పటికే టెక్స్ట్ చదవవచ్చు
|
||||
|
||||
**API ధృవీకరణ ప్రవాహం**:
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant Ext as విస్తరణ
|
||||
participant API as CO2 సిగ్నల్ API
|
||||
participant DB as డేటాబేస్
|
||||
|
||||
Ext->>API: ఆథ్-టోకెన్ తో అభ్యర్థన
|
||||
API->>API: టోకెన్ ని ధృవీకరించండి
|
||||
API->>DB: కార్బన్ డేటా విచారణ
|
||||
DB->>API: డేటా తిరిగి ఇవ్వు
|
||||
API->>Ext: JSON స్పందన
|
||||
Ext->>Ext: UI నవీకరణ
|
||||
```
|
||||
కార్బన్ వాడుక డేటా తీసుకురావడానికి ఫంక్షన్ సృష్టించండి:
|
||||
|
||||
```javascript
|
||||
// ఆధునిక fetch API విధానం (బాహ్య ఆధారాలు అవసరం లేదు)
|
||||
async function displayCarbonUsage(apiKey, region) {
|
||||
try {
|
||||
// CO2 సిగ్నల్ API నుండి కార్బన్ తీవ్రత డేటాను తీసుకోండి
|
||||
const response = await fetch('https://api.co2signal.com/v1/latest', {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'auth-token': apiKey,
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
// నిర్దిష్ట ప్రాంతం కోసం ప్రశ్న పరామితులను జోడించండి
|
||||
...new URLSearchParams({ countryCode: region }) && {
|
||||
url: `https://api.co2signal.com/v1/latest?countryCode=${region}`
|
||||
}
|
||||
});
|
||||
|
||||
// API అభ్యర్థన విజయవంతమైందా అని తనిఖీ చేయండి
|
||||
if (!response.ok) {
|
||||
throw new Error(`API request failed: ${response.status}`);
|
||||
}
|
||||
|
||||
const data = await response.json();
|
||||
const carbonData = data.data;
|
||||
|
||||
// ముడతలు పెట్టిన కార్బన్ తీవ్రత విలువను లెక్కించండి
|
||||
const carbonIntensity = Math.round(carbonData.carbonIntensity);
|
||||
|
||||
// తీసుకున్న డేటాతో వినియోగదారు ఇంటర్ఫేస్ ను నవీకరించండి
|
||||
loading.style.display = 'none';
|
||||
form.style.display = 'none';
|
||||
myregion.textContent = region.toUpperCase();
|
||||
usage.textContent = `${carbonIntensity} grams (grams CO₂ emitted per kilowatt hour)`;
|
||||
fossilfuel.textContent = `${carbonData.fossilFuelPercentage.toFixed(2)}% (percentage of fossil fuels used to generate electricity)`;
|
||||
results.style.display = 'block';
|
||||
|
||||
// TODO: calculateColor(carbonIntensity) - తదుపరి పాఠంలో అమలు చేయాలి
|
||||
|
||||
} catch (error) {
|
||||
console.error('Error fetching carbon data:', error);
|
||||
|
||||
// వినియోగదారులకు స్నేహపూర్వక దోష సందేశాన్ని చూపించండి
|
||||
loading.style.display = 'none';
|
||||
results.style.display = 'none';
|
||||
errors.textContent = 'Sorry, we couldn\'t fetch data for that region. Please check your API key and region code.';
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**ఇక్కడ ఏమవుతుంది:**
|
||||
- అదనపు లైబ్రరీలు లేకుండా శుభ్రంగా, ఆధునిక `fetch()` API ఉపయోగించడం
|
||||
- `response.ok` తో సరైన లోప తనిఖీ అమలు చేసి API విఫలమైతే ముందుగానే పట్టుకోవడం
|
||||
- అసింక్రోనస్ ఆపరేషన్లను `async/await` తో రూపొందించి చదవడానికి సులభం చేయడం
|
||||
- CO2 సిగ్నల్ APIతో `auth-token` హెడర్ ద్వారా ధృవీకరణ చేయడం
|
||||
- JSON ప్రతిస్పందన డేటా పార్థన చేసి కార्बన్ తీవ్రత సమాచారాన్ని తీసుకోవడం
|
||||
- పర్యావరణ డేటాతో UI లో అనేక ఎలిమెంట్లను నవీకరించడం
|
||||
- API కాల్స్ విఫలమైనప్పుడు వినియోగదారుకు స్నేహపూర్వక లోప సందేశాలను అందించడం
|
||||
|
||||
**ప్రముఖ ఆధునిక జావాస్క్రిప్ట్ భావనలు:**
|
||||
- `${}` సింటాక్స్ తో టెంప్లేట్ లిటరల్స్ ఉపయోగించి శుభ్రంగా స్ట్రింగ్ తయారు చేయడం
|
||||
- try/catch బ్లాకులతో లోప నిర్వహణ నిర్వహించడం
|
||||
- async/await పద్ధతి తో నెట్వర్క్ అభ్యర్థనలను సులభతరంగా నిర్వహించడం
|
||||
- ఓబ్జెక్ట్ డిస్ట్రక్చరింగ్ ద్వారా API ప్రతిస్పందన నుండి అవసరమైన డేటా తీసుకురావడం
|
||||
- మెథడ్ చైనింగ్ తో బహుళ DOM మానిప్యులేషన్లను చేయడం
|
||||
|
||||
✅ ఈ ఫంక్షన్ బాహ్య సర్వర్లతో కమ్యూనికేట్ చేయడం, ధృవీకరణ, డేటా ప్రాసెసింగ్, ఇంటర్ఫేస్ నవీకరణలు మరియు లోపాల నిర్వహణ వంటి అనేక కీలక వెబ్ డెవలప్మెంట్ నైపుణ్యాలు ప్రదర్శిస్తుంది. ఇవి నిపుణుల డెవలపర్ల ముఖ్యం.
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[API కాల్ ప్రారంభించండి] --> B[అనురোধాన్ని తీసుకోండి]
|
||||
B --> C{నెట్వర్క్ విజయమా?}
|
||||
C -->|ఏఠ| D[నెట్వర్క్ లోపం]
|
||||
C -->|అవును| E{ప్రతిస్పందన సరియా?}
|
||||
E -->|ఏఠ| F[API లోపం]
|
||||
E -->|అవును| G[JSON పార్స్ చేయండి]
|
||||
G --> H{డేటా చెల్లుబాటు సా?}
|
||||
H -->|ఏఠ| I[డేటా లోపం]
|
||||
H -->|అవును| J[UI ని నవీకరించండి]
|
||||
|
||||
D --> K[లోప సందేశం ప్రదర్శించండి]
|
||||
F --> K
|
||||
I --> K
|
||||
J --> L[లోడింగ్ దాచండి]
|
||||
K --> L
|
||||
|
||||
style A fill:#e1f5fe
|
||||
style J fill:#e8f5e8
|
||||
style K fill:#ffebee
|
||||
style L fill:#f3e5f5
|
||||
```
|
||||
### 🔄 **పాఠశాల తనిఖీ**
|
||||
**సంపూర్ణ వ్యవస్థ అర్థం చేసుకోండి**: మొత్తం ప్రవాహంపై పట్టు కుదించండి:
|
||||
- ✅ DOM సూచనలు జావాస్క్రిప్ట్ ఇంటర్ఫేస్ నియంత్రణకు ఎలా సహాయపడతాయో
|
||||
- ✅ బ్రౌజర్ సెషన్స్ మధ్య లోకల్ స్టోరేజ్ నిరంతరత్వాన్ని ఎలా పుట్టిస్తుందో
|
||||
- ✅ API కాల్స్ సమయంలో పొడగింపు ఫ్రీజ్ కాకుండా async/await ఎలా సహాయపడుతుందో
|
||||
- ✅ API కాల్స్ విఫలమైతే ఏమవుతుంది మరియు లోపాల నిర్వహణ ఎలా జరుగుతుందో
|
||||
- ✅ లోడింగ్ స్టేట్స్ మరియు లోప సందేశాలు వినియోగదారు అనుభవంలో ఎందుకు అవసరం
|
||||
|
||||
🎉 **మీ సాధనాలు:** మీరు క్రింది పనులు చేసే బ్రౌజర్ పొడగింపుని సృష్టించారు:
|
||||
- **ఇంటర్నెట్కు కనెక్ట్ అవుతుంది మరియు నిజమైన పర్యావరణ డేటాను పొందుతుంది**
|
||||
- **సెషన్స్ మధ్య వినియోగదారుల సెట్టింగ్స్ను నిలుపుతుంది**
|
||||
- **లోపాల వల్ల క్రాష్ కాకుండా సాఫీగా నిర్వహిస్తుంది**
|
||||
- **సక్రమతతో కూడిన, ప్రొఫెషనల్ వినియోగదారు అనుభవాన్ని అందిస్తుంది**
|
||||
|
||||
మీ పనిని పరీక్షించడానికి `npm run build` నడపండి మరియు బ్రౌజర్లో మీ పొడగింపును రీఫ్రెష్ చేయండి. మీకు ఇప్పుడు పనిచేసే కార్బన్ ఫుట్ ప్రింట్ ట్రాకర్ ఉంది. తదుపరి పాఠం డైనమిక్ ఐకాన్ ఫంక్షనాలిటీని జోడిస్తుంది.
|
||||
|
||||
---
|
||||
|
||||
## GitHub Copilot ఏజెంట్ చాలెంజ్ 🚀
|
||||
|
||||
క్రింద ఇచ్చిన చాలెంజ్ను Agent మోడ్ ఉపయోగించి పూర్తి చేయండి:
|
||||
**వివరణ:** బ్రౌజర్ విస్తరణను ఎర్రర్ హ్యాండ్లింగ్ మెరుగింపలతో మరియు వాడుకరి అనుభవ ప్రత్యేకతలతో మరింత అభివృద్ధి చేయండి. ఈ ఛాలెంజ్ ద్వారా మీరు APIs, లోకల్ స్టోరేజ్ మరియు DOM మ్యానిప్యులేషన్ను ఆధునిక జావాస్క్రిప్ట్ నమూనాల్లో ఎలా ఉపయోగించాలో అభ్యసించగలరు.
|
||||
|
||||
**ప్రాంప్ట్:** డిస్ప్లేకార్బన్యూసేజ్ ఫంక్షన్ యొక్క అభివృద్ధిచేసిన వెర్షన్ను సృష్టించండి, ఇది ఇలా ఉండాలి: 1) విఫలమైన API కాల్ల కోసం ఎక్స్పోనెన్షియల్ బ్యాక్ ఆఫ్తో రిట్రై మెకానిజం, 2) API కాల్ చేసే ముందు регион కోడ్ కోసం ఇన్పుట్ ధృవీకరణ, 3) ప్రోగ్రెస్ సూచికలతో లోడింగ్ అనిమేషన్, 4) API స్పందనలను localStorageలో 30 నిమిషాల అవధితో క్యాష్ చేయడం, మరియు 5) పూర్వ API కాల్ల నుండి చరిత్రాత్మక డేటాను ప్రదర్శించే ఫీచర్. అన్ని ఫంక్షన్ పరామితులు మరియు రిటర్న్ టైప్స్ కోసం సరైన TypeScript-శైలీ JSDoc వ్యాఖ్యలను జోడించండి.
|
||||
|
||||
[agent mode](https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode) గురించి మరింత తెలుసుకోండి.
|
||||
|
||||
## 🚀 ఛాలెంజ్
|
||||
|
||||
వెబ్ డెవలప్మెంట్ కోసం అందుబాటులో ఉన్న విస్తృత బ్రౌజర్ ఆధారిత APIలను అన్వేషిస్తూ APIలపై మీ అవగాహనను విస్తరించండి. ఈ క్రింది బ్రౌజర్ APIలలో ఒకటిని ఎంచుకుని ఒక చిన్న ప్రదర్శనని తయారుచేయండి:
|
||||
|
||||
- [Geolocation API](https://developer.mozilla.org/docs/Web/API/Geolocation_API) - 사용자의 ప్రస్తుత లొకేషన్ పొందండి
|
||||
- [Notification API](https://developer.mozilla.org/docs/Web/API/Notifications_API) - డెస్క్టాప్ నోటిఫికేషన్లు పంపండి
|
||||
- [HTML Drag and Drop API](https://developer.mozilla.org/docs/Web/API/HTML_Drag_and_Drop_API) - ఇంటరాక్టివ్ డ్రాగ్ ఇంటర్ఫేస్లను సృష్టించండి
|
||||
- [Web Storage API](https://developer.mozilla.org/docs/Web/API/Web_Storage_API) - ఆధునిక లోకల్ స్టోరేజ్ టెక్నిక్స్
|
||||
- [Fetch API](https://developer.mozilla.org/docs/Web/API/Fetch_API) - XMLHttpRequestకి ఆధునిక ప్రత్యామ్నాయం
|
||||
|
||||
**సాధన ప్రశ్నలు:**
|
||||
- ఈ API నిజజీవిత సమస్యలను ఎలా పరిష్కరిస్తుంది?
|
||||
- ఈ API ఎర్రర్లు మరియు ఎడ్జ్ కేసులను ఎలా హ్యాండిల్ చేస్తుంది?
|
||||
- ఈ API ఉపయోగించే సమయంలో ఏమి భద్రతా ఆలోచనలు ఉన్నాయి?
|
||||
- ఈ API విభిన్న బ్రౌజర్లలో ఎంతవరకు మద్దతు పొందింది?
|
||||
|
||||
మీ పరిశోధన తర్వాత, ఏ లక్షణాలు APIని అభివృద్ధిదారులకు స్నేహపూర్వకంగా మరియు విశ్వసనీయంగా చేస్తాయో గుర్తించండి.
|
||||
|
||||
## పోస్ట్-లెక్చర్ క్విజ్
|
||||
|
||||
[Post-lecture quiz](https://ff-quizzes.netlify.app/web/quiz/26)
|
||||
|
||||
## సమీక్ష & స్వయం అభ్యాసం
|
||||
|
||||
ఈ పాఠంలో మీరు LocalStorage మరియు APIs గురించి నేర్పుకున్నారు, ఇవి ప్రొఫెషనల్ వెబ్ డెవలపర్లకు ఎంతో ఉపయోగకరమైనవి. ఈ రెండు భావాలను ఎలా కలిసి పని చేస్తాయో మీరు ఆలోచించగలరా? ఒక API ఉపయోగించే వెబ్ సైట్ తయారీలో మీరు ఎలా స్థాపిస్తారో ఆలోచించండి.
|
||||
|
||||
### ⚡ **తదుపరి 5 నిమిషాలలో మీరు చేయగల పనిచేస్తే**
|
||||
- [ ] DevToolsలో Application ట్యాబ్ తెరచి ఏదైనా వెబ్సైట్లో localStorageని అన్వేషించండి
|
||||
- [ ] ఒక సాదాసీదా HTML ఫారం సృష్టించి బ్రౌజర్లో ఫారం ధృవీకరణను పరీక్షించండి
|
||||
- [ ] localStorageలో డేటా నిల్వ చేయడం మరియు తీసుకోవడం బ్రౌజర్ కన్సోల్ లో ప్రయత్నించండి
|
||||
- [ ] నెట్వర్క్ ట్యాబ్ ఉపయోగించి ఫారం డేటా సమర్పణను పరిశీలించండి
|
||||
|
||||
### 🎯 **ఈ గంటలో మీరు సాధించగలవు**
|
||||
- [ ] పోస్ట్-పాఠం క్విజ్ పూర్తి చేసి ఫారం హ్యాండ్లింగ్ కాన్సెప్ట్లు అర్థం చేసుకోండి
|
||||
- [ ] వాడుకరి అభిరుచులను నిల్వ చేసే బ్రౌజర్ విస్తరణ ఫారం నిర్మించండి
|
||||
- [ ] సహాయక ఎర్రర్ సందేశాలతో క్లైంట్-సైడ్ ఫారం ధృవీకరణ అమలు చేయండి
|
||||
- [ ] విస్తరణ డేటా నిల్వకోసం chrome.storage API ఉపయోగంపై అభ్యాసం
|
||||
- [ ] నిల్వ చేసిన వాడుకరి సెట్టింగులకు ప్రతిస్పందించే వాడుకరి ఇంటర్ఫేస్ సృష్టించండి
|
||||
|
||||
### 📅 **మీ వారాంత విస్తరణ నిర్మాణం**
|
||||
- [ ] ఫుల్-ఫీచర్ బ్రౌజర్ విస్తరణను ఫారం ఫంక్షనాలిటితో పూర్తి చేయండి
|
||||
- [ ] లోకల్, సింట్, సెషన్ స్టోరేజ్ వంటి వివిధ నిల్వ ఎంపికలను ప్రావీణ్యం చేయండి
|
||||
- [ ] ఆటోకంప్లీట్ మరియు ధృవీకరణ వంటి అధునాతన ఫారం ఫీచర్లను అమలు చేయండి
|
||||
- [ ] వాడుకరి డేటా కోసం దిగుమతి/ఎగుమతి ఫంక్షనాలిటీను చేర్చండి
|
||||
- [ ] విస్తరణను విభిన్న బ్రౌజర్లలో పూర్వకంగా పరీక్షించండి
|
||||
- [ ] విస్తరణ యొక్క వాడుకరి అనుభవం మరియు ఎర్రర్ హ్యాండ్లింగ్ను మెరుగుపరచండి
|
||||
|
||||
### 🌟 **మీ నెల ఘనమైన వెబ్ API నైపుణ్యం**
|
||||
- [ ] వివిధ బ్రౌజర్ స్టోరేజ్ APIలను ఉపయోగించి క్లిష్టమైన అప్లికేషన్లను సృష్టించండి
|
||||
- [ ] ఆఫ్లైన్-ఫస్ట్ అభివృద్ధి నమూనాలపై నేర్పుకోండి
|
||||
- [ ] డేటా నిల్వ సమస్యలు ఉన్న ఓపెన్ సోర్స్ ప్రాజెక్టులకు సహాయం చేయండి
|
||||
- [ ] ప్రైవసీ కేంద్రీకృత అభివృద్ధి మరియు GDPR అనుగుణతలో ప్రావీణ్యం సాధించండి
|
||||
- [ ] ఫారం హ్యాండ్లింగ్ మరియు డేటా నిర్వహణకు పునర్వినియోగపరచదగిన లైబ్రరీలు సృష్టించండి
|
||||
- [ ] వెబ్ APIలు మరియు విస్తరణ అభివృద్ధి గురించి జ్ఞానం పంచుకోండి
|
||||
|
||||
## 🎯 మీ విస్తరణ అభివృద్ధి నైపుణ్య కాలనిర్వచన
|
||||
|
||||
```mermaid
|
||||
timeline
|
||||
title API ఇంటిగ్రేషన్ & నిల్వ నేర్చుకునే పురోగతి
|
||||
|
||||
section DOM మౌలికాలు (15 నిమిషాలు)
|
||||
ఎలిమెంట్ సూచనలు: querySelector నైపుణ్యం
|
||||
: ఈవెంట్ లిసనర్ సెటప్
|
||||
: స్థితి నిర్వహణ మూలాలు
|
||||
|
||||
section లోకల్ స్టోరేజ్ (20 నిమిషాలు)
|
||||
డేటా నిలుపుదల: కీ-విలువ నిల్వ
|
||||
: సెషన్ నిర్వహణ
|
||||
: వినియోగదారు ప్రాధాన్యత నిర్వహణ
|
||||
: నిల్వ పరిశీలన పరికరాలు
|
||||
|
||||
section ఫారం నిర్వహణ (25 నిమిషాలు)
|
||||
వినియోగదారు ఇన్పుట్: ఫారం ధ్రువీకరణ
|
||||
: ఈవెంట్ నిరోధం
|
||||
: డేటా తీర్మానం
|
||||
: UI స్థితి మార్పులు
|
||||
|
||||
section API ఇంటిగ్రేషన్ (35 నిమిషాలు)
|
||||
బయటి కమ్యూనికేషన్: HTTP అభ్యర్థనలు
|
||||
: ప్రామాణీకరణ నమూనాలు
|
||||
: JSON డేటా పార్సింగ్
|
||||
: ప్రతిస్పందన నిర్వహణ
|
||||
|
||||
section అసింక్రో ప్రోగ్రామింగ్ (40 నిమిషాలు)
|
||||
ఆధునిక జావాస్క్రిప్ట్: ప్రామిస్ నిర్వహణ
|
||||
: అసింక్/అవైట్ నమూనాలు
|
||||
: తప్పుడు నిర్వహణ
|
||||
: నాన్-బ్లాకింగ్ ఆపరేషన్లు
|
||||
|
||||
section తప్పిద నిర్వహణ (30 నిమిషాలు)
|
||||
బలమైన అప్లికేషన్లు: ట్రై/క్యాచ్ బ్లాక్స్
|
||||
: వినియోగదారుకు స్నేహపూర్వక సందేశాలు
|
||||
: సౌమ్యంగా తగ్గింపు
|
||||
: డీబగ్గింగ్ సాంకేతికతలు
|
||||
|
||||
section అధునాతన నమూనాలు (1 వారం)
|
||||
వృద్దిపరచడం: క్యాషింగ్ వ్యూహాలు
|
||||
: రేట్ పరిమితి
|
||||
: రీట్రై యాంత్రికతలు
|
||||
: పనితీరు మెరుగుదల
|
||||
|
||||
section ప్రొడక్షన్ నైపుణ్యాలు (1 నెల)
|
||||
ఎంటర్ప్రైజ్ ఫీచర్లు: భద్రత ఉత్తమ పద్ధతులు
|
||||
: API వెర్షనింగ్
|
||||
: మానిటరింగ్ & లాగింగ్
|
||||
: విస్తరణాత్మక వాస్తవికరణ
|
||||
```
|
||||
### 🛠️ మీ పూర్తి-స్టాక్ అభివృద్ధి టూల్కిట్ సారాంశం
|
||||
|
||||
ఈ పాఠం పూర్తి చేసిన తరువాత, మీరు ఇప్పుడు కలిగి ఉన్నారు:
|
||||
- **DOM నైపుణ్యం**: ఖచ్చితమైన ఎలిమెంట్ లక్ష్యీకరణ మరియు మ్యానిప్యులేషన్
|
||||
- **స్టోరేజ్ నైపుణ్యం**: localStorageతో నిల్వ డేటా నిర్వహణ
|
||||
- **API సమ్మేళనం**: రియల్-టైమ్ డేటా ఫెッチింగ్ మరియు ప్రామాణీకరణ
|
||||
- **అసింక్రోనస్ ప్రోగ్రామింగ్**: ఆధునిక జావాస్క్రిప్ట్తో నాన్-బ్లాకింగ్ ఆపరేషన్లు
|
||||
- **ఎర్రర్ హ్యాండ్లింగ్**: విఫలతలను శ్రద్ధగా నిర్వహించే మద్దతు
|
||||
- **వాడుకరి అనుభవం**: లోడింగ్ స్టేట్ల, ధృవీకరణ, సరళమైన ఇంటరాక్షన్లు
|
||||
- **ఆధునిక నమూనాలు**: fetch API, async/await, మరియు ES6+ ఫీచర్లు
|
||||
|
||||
**ప్రొఫెషనల్ నైపుణ్యాలు పొందారు**: మీరు ఈ నమూనాలను అమలు చేశారు:
|
||||
- **వెబ్ అప్లికేషన్లు**: బాహ్య డేటా సోర్సులతో సింగిల్-పేజ్ యాప్స్
|
||||
- **మొబైల్ అభివృద్ధి**: ఆఫ్లైన్ సామర్థ్యాలతో API-చలన యాప్స్
|
||||
- **డెస్క్టాప్ సాఫ్ట్వేర్**: ఎలెక్ట్రాన్ యాప్స్తో నిల్వ
|
||||
- **ఎంటర్ప్రైజ్ సిస్టమ్స్**: ప్రామాణీకరణ, క్యాషింగ్, మరియు ఎర్రర్ హ్యాండ్లింగ్
|
||||
- **ఆధునిక ఫ్రేమ్వర్క్స్**: React/Vue/Angular డేటా నిర్వహణ నమూనాలు
|
||||
|
||||
**తదుపరి దశ**: క్యాషింగ్ వ్యూహాలు, రియల్-టైమ్ WebSocket కనెక్షన్లు లేదా క్లిష్ట స్టేట్ మేనేజ్మెంట్ వంటి అధునాతన అంశాలను అన్వేషించడానికి మీరు సిద్ధంగా ఉన్నారు!
|
||||
|
||||
## అసైన్మెంట్
|
||||
|
||||
[Adopt an API](assignment.md)
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**అసత్య ప్రకట:**
|
||||
ఈ పత్రం AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నిస్తూనే ఉన్నప్పటికీ, ఆటోమేటెడ్ అనువాదాలు లోపాలు లేదా అసత్యతలు ఉండవచ్చు. మౌలిక భాషలో ఉన్న అసలు పత్రాన్ని విశ్వసనీయ మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారం కోసం, నిపుణుల చేతుల అనువాదం చేయించడం సూచించబడుతుంది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు గురించి మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,109 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "25b8d28b8531352d4eb67291fd7824c4",
|
||||
"translation_date": "2026-01-08T15:17:04+00:00",
|
||||
"source_file": "5-browser-extension/2-forms-browsers-local-storage/assignment.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# APIని అంగీకరించండి
|
||||
|
||||
## అవలోకనం
|
||||
|
||||
APIs సృజనాత్మక వెబ్ అభివృద్ధికి ఎంతగానో అవకాశాలు తెరుస్తాయి! ఈ అసైన్మెంట్లో, మీరు ఒక బయటి APIని ఎంచుకుని, ఓ రియల్ సమస్యను పరిష్కరించగల లేదా వినియోగదారులకు విలువైన ఫంక్షనాలిటీని అందించే బ్రౌజర్ ఎక్స్టెన్షన్ నిర్మించాలి.
|
||||
|
||||
## సూచనాలు
|
||||
|
||||
### దశ 1: మీ APIను ఎంచుకోండి
|
||||
ఈ కూర్పుచేసిన [ఉచిత పబ్లిక్ APIs జాబితా](https://github.com/public-apis/public-apis) నుండి ఒక APIని ఎంచుకోండి. ఈ విభాగాలను పరిగణించండి:
|
||||
|
||||
**ప్రారంభకులకు ప్రయోగించదగిన ప్రముఖ ఎంపికలు:**
|
||||
- **వినోదం**: రాండమ్ కుక్క ఫొటోలు కోసం [Dog CEO API](https://dog.ceo/dog-api/)
|
||||
- **వాతావరణం**: ప్రస్తుత వాతావరణ సమాచారానికి [OpenWeatherMap](https://openweathermap.org/api)
|
||||
- **ఉహాపోహలు**: ప్రేరణాత్మక ఉహాపోహలకు [Quotable API](https://quotable.io/)
|
||||
- **సమాచారం**: ప్రస్తుత హెడ్లైన్స్ కోసం [NewsAPI](https://newsapi.org/)
|
||||
- **ఆనందకరమైన గమ్యాలు**: ఆసక్తికర సంఖ్యా గమనికలకు [Numbers API](http://numbersapi.com/)
|
||||
|
||||
### దశ 2: మీ ఎక్స్టెన్షన్కు పథకం తయారు చేయండి
|
||||
కోడింగ్ ప్రారంభించే ముందు ఈ ప్రణాళికా ప్రశ్నలకు సమాధానాలు ఇవ్వండి:
|
||||
- మీ ఎక్స్టెన్షన్ ఏ సమస్యను పరిష్కరిస్తుంది?
|
||||
- మీ లక్ష్య వినియోగదారెవరు?
|
||||
- మీరు స్థానిక నిల్వలో ఎలాంటి డేటా నిల్వ చేయదలచుకున్నారు?
|
||||
- API విఫలమైతే లేదా రేట్ పరిమితులు వచ్చేటప్పుడు మీరు ఎలా ఎదుర్కుంటారు?
|
||||
|
||||
### దశ 3: మీ ఎక్స్టెన్షన్ నిర్మించండి
|
||||
మీ ఎక్స్టెన్షన్ లో ఉండాల్సినవి:
|
||||
|
||||
**అవసరమైన ఫీచర్లు:**
|
||||
- ఏదైనా అవసరమైన API పారామీటర్ల కోసం ఫారమ్ ఇన్పుట్లు
|
||||
- సరైన తప్పుల నిర్వహణతో API ఇంటిగ్రేషన్
|
||||
- వినియోగదారుని ప్రాధాన్యతలు లేదా API కీలు నిల్వచేసేందుకు స్థానిక నిల్వ
|
||||
- శుభ్రమైన, స్పందనాత్మక యూజర్ ఇంటర్ఫేస్
|
||||
- లోడింగ్ స్థితులు మరియు వినియోగదారు ప్రతిక్రియ
|
||||
|
||||
**కోడ్ అవసరాలు:**
|
||||
- ఆధునిక JavaScript (ES6+) ఫీచర్లు ఉపయోగించండి
|
||||
- API కాల్స్ కోసం async/await అమలు చేయండి
|
||||
- try/catch బ్లాక్లతో సరైన తప్పుల నిర్వహణను చేర్చండి
|
||||
- మీ కోడ్ను వివరించే సార్థక వ్యాఖ్యలనివ్వండి
|
||||
- స్థిరమైన కోడ్ ఫార్మాటింగ్ పాటించండి
|
||||
|
||||
### దశ 4: పరీక్షించండి మరియు మెరుగుపరచండి
|
||||
- వివిధ ఇన్పుట్లతో మీ ఎక్స్టెన్షన్ను పరీక్షించండి
|
||||
- అతి సరిహద్దులను నిర్వహించండి (ఇంటర్నెట్ లేనప్పుడు, చెల్లని API స్పందనలు)
|
||||
- బ్రౌజర్ రీస్టార్ట్ తర్వాత మీ ఎక్స్టెన్షన్ పనిచేస్తుందో లేదో నిర్ధారించండి
|
||||
- వినియోగదారుఉద్దేశ్యానికి అనుగుణమైన తప్పుల సందేశాలు జోడించండి
|
||||
|
||||
## బోనస్ సవాళ్లు
|
||||
|
||||
మీ ఎక్స్టెన్షన్ను తదుపరి దశకు తీసుకెళ్లండి:
|
||||
- అధిక ఫంక్షనాలిటీ కోసం బహుళ API ఎండ్పాయింట్లను జోడించండి
|
||||
- API కాల్స్ తగ్గించేందుకు డేటా కాషింగ్ అమలు చేయండి
|
||||
- సాధారణ చర్యలకు కీబోర్డు షార్ట్కట్లు సృష్టించండి
|
||||
- డేటా ఎక్స్పోర్ట్/ఇంపోర్ట్ ఫీచర్లను జోడించండి
|
||||
- వినియోగదారు అనుకూలీకరణ ఎంపికలను అమలు చేయండి
|
||||
|
||||
## సమర్పణ అవసరాలు
|
||||
|
||||
1. మీరు ఎంచుకున్న APIతో విజయవంతంగా ఇంటిగ్రేట్ అయ్యే **పనిచేసే బ్రౌజర్ ఎక్స్టెన్షన్**
|
||||
2. **README ఫైల్** వివరిస్తుంది:
|
||||
- మీరు ఎంచుకున్న API మరియు ఎందుకు
|
||||
- మీ ఎక్స్టెన్షన్ని ఎలా ఇన్స్టాల్ చేసి ఉపయోగించాలి
|
||||
- ఏ API కీలు లేదా సెటప్ అవసరం ఉన్నా
|
||||
- మీ ఎక్స్టెన్షన్ పని చేస్తున్నసందర్బంలో స్క్రీన్షాట్లు
|
||||
3. ఆధునిక JavaScript ప్రథమాలు పాటిస్తూ సాఫీగా, వ్యాఖ్యలతో కూడిన కోడ్
|
||||
|
||||
## రూబ్రిక్
|
||||
|
||||
| ప్రమాణం | ఉత్తమత (90-100%) | ప్రావీణ్యం (80-89%) | అభివృద్ధి లో ఉంది (70-79%) | ప్రారంభం (60-69%) |
|
||||
|----------|---------------------|---------------------|---------------------|--------------------|
|
||||
| **API ఇంటిగ్రేషన్** | పూర్తి తప్పుల నిర్వహణ మరియు అతి సరిహద్దుల నిర్వహణతో ఉత్తమ API ఇంటిగ్రేషన్ | ప్రాథమిక తప్పుల నిర్వహణతో విజయవంతమైన API ఇంటిగ్రేషన్ | API పని చేస్తుంది కానీ తక్కువ తప్పుల నిర్వహణతో | API ఇంటిగ్రేషన్ లో ముఖ్యమైన సమస్యలున్నది |
|
||||
| **కోడ్ నాణ్యత** | మంచి వ్యాఖ్యలతో కూడిన స్వచ్చమైన ఆధునిక JavaScript, ఉత్తమ ఆచారాలు పాటించినది | సరైన వ్యాఖ్యాలతో మంచి కోడ్ నిర్మాణం | కోడ్ పని చేస్తుంది కానీ మంచి నిర్వహణకు అంతగా లేవు | స్పష్టమైన వ్యాఖ్యలు లేకుండా తేలికపాటి కోడ్ నాణ్యత |
|
||||
| **వినియోగదారు అనుభవం** | అతి మంచి లోడింగ్ స్థితులు మరియు వినియోగదారు ప్రతిస్పందనతో మెరుగైన ఇంటర్ఫేస్ | ప్రాథమిక వినియోగదారుఇన్పుట్తో మంచి ఇంటర్ఫేస్ | సరిపడిన ఇంటర్ఫేస్ | కలత కలిగించే ఇంటర్ఫేస్ తో తక్కువ యూజర్ అనుభవం |
|
||||
| **స్థానిక నిల్వ** | డేటా ధృవీకరణ మరియు నిర్వహణతో ఆధునిక స్థానిక నిల్వ వాడకం | కీలక లక్షణాలకు సరైన స్థానిక నిల్వ అమలు | ప్రాథమిక స్థానిక నిల్వ అమలు | తక్కువ లేదా తప్పు స్థానిక నిల్వ వాడకం |
|
||||
| **డాక్యుమెంటేషన్** | సెట్టప్ సూచనలు, స్క్రీన్షాట్లతో సమగ్ర README | మెజార్టీ అవసరాలను కవర్ చేసే మంచి డాక్యుమెంటేషన్ | కొంత అంశాలు మిస్సయ్యే ప్రాథమిక డాక్యుమెంటేషన్ | తక్కువగా లేదా లేనిది డాక్యుమెంటేషన్ |
|
||||
|
||||
## ప్రారంభించడానికి సూచనలు
|
||||
|
||||
1. **సరళంగా మొదలు పెట్టండి**: సంక్లిష్ట ప్రమాణీకరణ అవసరం లేని APIని ఎంచుకోండి
|
||||
2. **డాక్యుమెంటేషన్ చదవండి**: మీరు ఎంచుకున్న API ఎండ్పాయింట్లు మరియు స్పందనలను సమగ్రంగా అర్థం చేసుకోండి
|
||||
3. **మీ UIని పథకం చేయండి**: కోడింగ్ ప్రారంభించే ముందు మీ ఎక్స్టెన్షన్ ఇంటర్ఫేస్ను డిజైన్ చేయండి
|
||||
4. **అనేకసార్లు పరీక్షించండి**: అంతఃక్రమంగా నిర్మించండి మరియు ప్రతి ఫీచర్ను చేర్చినప్పుడు పరీక్షించండి
|
||||
5. **తప్పులని నిర్వహించండి**: API కాల్స్ విఫలమవచ్చు అనుకొని ముందుగా ప్రణాళిక రూపొందించండి
|
||||
|
||||
## వనరులు
|
||||
|
||||
- [బ్రౌజర్ ఎక్స్టెన్షన్ డాక్యుమెంటేషన్](https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions)
|
||||
- [ఫెచ్ API గైడ్](https://developer.mozilla.org/docs/Web/API/Fetch_API/Using_Fetch)
|
||||
- [స్థానిక నిల్వ ట్యుటోరియల్](https://developer.mozilla.org/docs/Web/API/Window/localStorage)
|
||||
- [JSON పార్సింగ్ మరియు నిర్వహణ](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/JSON)
|
||||
|
||||
ఉపయోగకరమైన, సృజనాత్మకమైన ఏదైనా తయారు చేయడంలో సరదాగా ఉంటోంది! 🚀
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**వివరణా నోట్**:
|
||||
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నిస్తున్నప్పటికీ, స్వయంచాలక అనువాదాలలో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం native భాషలో ఉన్నది అధికారికమైన మూలం అని పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రత్యేకంగా మానవ అనువాదం చేయించుకోవడం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం ఉపయోగంతో ఏర్పడిన ఏదైనా అపార్థాలు లేదా తప్పుదోవలకు మేము బాధ్యులేము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,597 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "b275fed2c6fc90d2b9b6661a3225faa2",
|
||||
"translation_date": "2026-01-08T15:21:26+00:00",
|
||||
"source_file": "5-browser-extension/3-background-tasks-and-performance/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# Browser Extension Project Part 3: బ్యాక్గ్రౌండ్ టాస్కులు మరియు పనితీరు గురించి తెలుసుకోండి
|
||||
|
||||
```mermaid
|
||||
journey
|
||||
title మీ పనితీరు మెరుగుదల యాత్ర
|
||||
section ఆధారం
|
||||
బ్రౌజర్ టూల్స్ నేర్చుకోండి: 3: Student
|
||||
ప్రొఫైలింగ్ అర్థం చేసుకోండి: 4: Student
|
||||
బాటిల్నెక్స్ గుర్తించండి: 4: Student
|
||||
section పొడగింపు లక్షణాలు
|
||||
కలర్ సిస్టమ్ నిర్మించండి: 4: Student
|
||||
బ్యాక్గ్రౌండ్ పనులు సృష్టించండి: 5: Student
|
||||
చిహ్నాలను గతి ప్రకారం నవీకరించండి: 5: Student
|
||||
section మెరుగుదల
|
||||
పనితీరు పర్యవేక్షించండి: 5: Student
|
||||
సమస్యలను డీబగ్ చేయండి: 4: Student
|
||||
అనుభవాన్ని మెరుగుపరచండి: 5: Student
|
||||
```
|
||||
కొన్ని బ్రౌజర్ ఎక్స్టెన్షన్లు త్వరగా మరియు స్పందించడానికి కారణం ఏమిటి అని ఎప్పుడైనా సంశయంగా ఉంది? ఇతరవారు మింది మెల్లగా అనిపిస్తే? రహస్యం సీన్గురించి జరుగుతున్నది. మీరు మీ ఎక్స్టెన్షన్ ఇంటర్ఫేస్లో క్లిక్ చేసినపుడు, బ్యాక్గ్రౌండ్లో డేటా ఫెచింగ్, ఐకాన్ అప్డేట్లు, మరియు సిస్టమ్ వనరుల నిర్వహణ హ్మారంగా జరుగుతుంది.
|
||||
|
||||
ఇది బ్రౌజర్ ఎక్స్టెన్షన్ సిరీస్లోని మా చివరి పాఠం, మరియు మేము మీ కార్బన్ ఫుట్ప్రింట్ ట్రాకర్ సాఫ్ట్గా పనిచేయిస్తాము. మీరు డైనమిక్ ఐకాన్ అప్డేట్లు జోడిస్తారు మరియు పనితీరు సమస్యలు సమస్యలుగా మారడానికి ముందుగానే గుర్తించటం నేర్చుకుంటారు. ఇది ఒక రేస్ కారును ట్యూన్ చేయడం లాంటిది - చిన్న ఆప్టిమైజేషన్లు వలన మొత్తం వ్యవస్థ ఎలా চলে అనేది చాలా మారుతుంది.
|
||||
|
||||
మనం ముగించేప్పుడు, మీ దగ్గర మెరుగైన ఎక్స్టెన్షన్ ఉండె మరియు మంచివి వెబ్ యాప్లను గొప్పవలె వేరుచేసే పనితీరు సూత్రాలు అర్థం చేసుకుంటారు. బ్రౌజర్ ఆప్టిమైజేషన్ ప్రపంచంలోకి దూకుకుందాం.
|
||||
|
||||
## ముందస్తు పాఠం క్విజ్
|
||||
|
||||
[Pre-lecture quiz](https://ff-quizzes.netlify.app/web/quiz/27)
|
||||
|
||||
### పరిచయం
|
||||
|
||||
మునుపటి పాఠాలలో మీరు ఒక ఫారం నిర్మించారు, దాన్ని APIకు కనెక్ట్ చేశారు, అసింక్రనస్ డేటా ఫెచింగ్ ను పరిష్కరించారు. మీ ఎక్స్టెన్షన్ బాగా రూపుదిద్దుకుంటోంది.
|
||||
|
||||
ఇప్పుడు మనం చివరి ట్విస్ట్లు జోడించాలి - ఆ ఎక్స్టెన్షన్ ఐకాన్ కార్బన్ డేటా ఆధారంగా రంగులను మార్చేలా చేయడం. ఇది నాసా అపోలో అంతరిక్ష నౌకలో ప్రతి సిస్టమ్ ఆప్టిమైజ్ చేయాల్సి వచ్చిన విధానాన్ని గుర్తుకు తెస్తుంది. వారు ఖర్చు లేకుండా సైకిళ్ళు లేదా మెమొరీ వాయిదా పెట్టలేకపోయారు ఎందుకంటే పనితీరు మీద ప్రాణాలు ఆధారపడ్డాయి. మన బ్రౌజర్ ఎక్స్టెన్షన్ అంత కీలకంగా లేకపోయినా, అదే సూత్రాలు వర్తిస్తాయి - సమర్థవంతమైన కోడ్ మంచిన యూజర్ అనుభవాలను సృష్టిస్తుంది.
|
||||
|
||||
```mermaid
|
||||
mindmap
|
||||
root((పర్ఫార్మెన్స్ & బ్యాక్గ్రౌండ్ టాస్కులు))
|
||||
Browser Performance
|
||||
రేండరింగ్ పైప్లైన్
|
||||
ఆస్తి ఆప్టిమైజేషన్
|
||||
DOM మ్యానిప్యులేషన్
|
||||
జావాస్క్రిప్ట్ ఎక్సిక్యూషన్
|
||||
Profiling Tools
|
||||
డెవలపర్ టూల్స్
|
||||
పర్ఫార్మెన్స్ టాబ్
|
||||
టైమ్లైన్ విశ్లేషణ
|
||||
బాటిల్నెక్ గుర్తించడం
|
||||
Extension Architecture
|
||||
బ్యాక్గ్రౌండ్ స్క్రిప్ట్లు
|
||||
కంటెంట్ స్క్రిప్ట్లు
|
||||
మెసేజ్ పంపడం
|
||||
ఐకాన్ నిర్వహణ
|
||||
Optimization Strategies
|
||||
కోడ్ స్ప్లిటింగ్
|
||||
లేజీ లోడింగ్
|
||||
కాచింగ్
|
||||
రిసోర్స్ కంప్రెషన్
|
||||
Visual Feedback
|
||||
డైనమిక్ ఐకాన్లు
|
||||
వర్ణ కోడింగ్
|
||||
రియల్ టైమ్ అప్డేట్లు
|
||||
వినియోగదారుని అనుభవం
|
||||
```
|
||||
## వెబ్ పనితీరు ప్రాథమికాలు
|
||||
|
||||
మీ కోడ్ సమర్థవంతంగా నడిచినపుడు, ప్రజలు వాస్తవంగా *భావిస్తారు* తేడాను. మీరు ఎప్పుడైనా ఒక పేజీ వెంటనే లోడ్ అయ్యిందని లేదా యానిమేషన్ సుగమంగా ఫ్లో అయ్యిందని గుర్తు పడుతుందా? అదే మంచి పనితీరు.
|
||||
|
||||
పనితీరు కేవలం వేగం గురించి కాదు - అది సహజంగా అనిపించే వెబ్ అనుభవాలను సృష్టించడం గురించి, చికాకు కలిగించే వాటిని కాకుండా. కంప్యూటింగ్ ప్రారంభ రోజుల్లో, గ్రేస్ హాపర్ ప్రసిద్ధిగా తన డెస్క్ పై ఒక నానోసెకండ్ (సుమారు ఒక్క అడుగు పొడవు తారలాంటి) ఉంచింది, ఇది ఒక బిలియన్వంతం సెకన్ లో వెలుతురు ఎంత పరుగు తీసుకొంటుందో చూపించడానికి. ఇది కంప్యూటింగ్ లో ప్రతి మైక్రోసెకండ్ ఎందుకు ముఖ్యం అనేది వివరించడానికి ఆమె మార్గం. మేము ఇప్పుడు ఏమి ఆలస్యం చేస్తుందని కనుగొనడానికి డిటెక్టివ్ టూల్స్ ని పరిశీలిద్దాం.
|
||||
|
||||
> "వెబ్ సైట్ పనితీరు రెండు విషయాల గురించి: పేజీ ఎంత వేగంగా లోడ్ అవుతుంది, మరియు అందులో కోడ్ ఎంత వేగంగా నడుస్తుంది." -- [Zack Grossbart](https://www.smashingmagazine.com/2012/06/javascript-profiling-chrome-developer-tools/)
|
||||
|
||||
మీ వెబ్సైట్లను అన్ని రకాల డివైసుల్లో, అన్ని రకాల యూజర్లకు, అన్ని రకాల పరిస్థితులలో అగ్నిమంతమైన వేగంగా చేయడం గురించి విషయం విస్తృతంగా ఉంది. మీరు సాధారణ వెబ్ ప్రాజెక్టు లేదా బ్రౌజర్ ఎక్స్టెన్షన్ తగ్గించేటప్పుడు గుర్తుంచుకునే కొన్ని ముఖ్యాంశాలు ఇక్కడ ఉన్నాయి.
|
||||
|
||||
మీ సైట్ ఆప్టిమైజ్ ప్రారంభ దశలో అయినది ఏం జరుగుతున్నదో అర్థం చేసుకోవడం. సంతోషకరంగా, మీ బ్రౌజర్ చాలా శక్తివంతమైన డిటెక్టివ్ టూల్లతో వస్తుంది.
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A[HTML] --> B[Parse]
|
||||
B --> C[DOM Tree]
|
||||
D[CSS] --> E[Parse]
|
||||
E --> F[CSSOM]
|
||||
G[JavaScript] --> H[Execute]
|
||||
|
||||
C --> I[రెండర్ ట్రీ]
|
||||
F --> I
|
||||
H --> I
|
||||
|
||||
I --> J[లేఅవుట్]
|
||||
J --> K[పెయింట్]
|
||||
K --> L[కాంపోజిట్]
|
||||
L --> M[ప్రదర్శన]
|
||||
|
||||
subgraph "బాధ్యమైన రెండరింగ్ పాత్"
|
||||
N["1. HTML ని పార్స్ చేయండి"]
|
||||
O["2. CSS ని పార్స్ చేయండి"]
|
||||
P["3. JS ని అమలు చేయండి"]
|
||||
Q["4. రెండర్ ట్రీ నిర్మించండి"]
|
||||
R["5. లేఅవుట్ మూలకాలు"]
|
||||
S["6. పిక్సెల్స్ పెయింట్ చేయండి"]
|
||||
T["7. లేయర్లు కాంపోజిట్ చేయండి"]
|
||||
end
|
||||
|
||||
style M fill:#e8f5e8
|
||||
style I fill:#fff3e0
|
||||
style H fill:#ffebee
|
||||
```
|
||||
Edgeలో Developer Tools తెరవాలంటే, పై కుడి మూలల్లో మూడడ్లు క్లిక్ చేసి, More Tools > Developer Tools కు వెళ్ళండి. లేదా Windowsలో `Ctrl` + `Shift` + `I` లేదా Macలో `Option` + `Command` + `I` కొరకు కీబోర్డ్ షార్ట్కట్ వాడండి. అక్కడ చేరిన తర్వాత Performance ట్యాబ్ క్లిక్ చేయండి - మీ గూగుల్ వెబ్ యాప్ ఫిట్నెస్ ట్రాకర్ లాంటిది అదే.
|
||||
|
||||
**ఇది మీ పనితీరు డిటెక్టివ్ టూల్కిట్**
|
||||
- **Developer Tools** తెరవండి (మీరు సాధారణంగా దీన్ని వినియోగిస్తారు)
|
||||
- **Performance ట్యాబ్** కు వెళ్లండి - ఇది మీ వెబ్ యాప్ ఫిట్నెస్ ట్రాకర్ లాంటిది
|
||||
- **Record బటన్** క్లిక్ చేసి మీ పేజీని పరిశీలించండి
|
||||
- **ఫలితాలను** అధ్యయనం చేసి ఏం ఆలస్యం చేస్తోందో గుర్తించండి
|
||||
|
||||
ఇదాన్ని ప్రయత్నించండి. ఒక వెబ్సైట్ ఓపెన్ చేయండి (Microsoft.com బాగా పనిచేస్తుంది) మరియు 'Record' బటన్ క్లిక్ చేయండి. ఇప్పుడు పేజీని రిఫ్రెష్ చేసి ప్రొఫైలర్ ప్రతి సందర్భం ఎలా జరుగుతుందో క్యాప్చర్ చేస్తుంది. రికార్డింగ్ ఆపినప్పుడు, బ్రౌజర్ 'scripts', 'renders', మరియు 'paints' చేసినవిధానాల విస్తృతంగా వివరాలు చూడవచ్చు. ఇది ఒక రాకెట్ లాంచ్ సమయంలో మిషన్ కంట్రోల్ ప్రతి వ్యవస్థను పరిశీలించే విధానం గుర్తొస్తుంది - మీరు ఏం జరిగిందో, ఎప్పుడు జరిగిందో రియల్ టైమ్ డేటా పొందగలుగుతారు.
|
||||
|
||||

|
||||
|
||||
✅ మరింత లోతుగా తెలుసుకోడానికి [Microsoft Documentation](https://docs.microsoft.com/microsoft-edge/devtools-guide/performance/?WT.mc_id=academic-77807-sagibbon) చూడండి
|
||||
|
||||
> ప్రో టిప్: టెస్టింగ్ ప్రారంభించేముందు మీ బ్రౌజర్ కాష్ క్లియర్ చేయండి, తద్వారా మొదటి సారి సందర్శించే వారికి మీ సైట్ ఎలా పని చేస్తుందో చూడవచ్చు - ఇది సాధారణంగా పునర్వినియోగంలో చేసిన విషయాల నుండి వేరు.
|
||||
|
||||
పేజీ లోడ్ సమయంలో జరిగే సంఘటనల్ని జూమ్ చేయడానికి ప్రొఫైల్ టైమ్లైన్లో ఎంపిక చేయండి.
|
||||
|
||||
పేజీ పనితీరు స్నాప్షాట్ను పొందడానికి ప్రొఫైల్ టైమ్లైన్ భాగాన్ని ఎంచుకుని సమరీ ప్యాను చూడండి:
|
||||
|
||||

|
||||
|
||||
ఏవైనా ఈవెంట్లు 15 మిల్లీసెకండ్ల కంటే ఎక్కువ సమయం తీసుకున్నాయా అంటే ఈవెంట్ లాగ్ ప్యాను చెక్ చేయండి:
|
||||
|
||||

|
||||
|
||||
✅ మీ ప్రొఫైలర్ను తెలుసుకోండి! ఈ సైట్ మీద డెవలపర్ టూల్స్ తెరవండి మరియు ఏ బాటిల్నెక్స్లు ఉన్నాయో చూడండి. ఏది మెల్లగా లోడ్ అవుతుంది? ఏది వేగంగా?
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[డెవ్టూల్స్ ఓపెన్ చేయండి] --> B[పర్ఫార్మెన్స్ టాబ్ కు వెళ్లండి]
|
||||
B --> C[రికార్డ్ బటన్ క్లిక్ చేయండి]
|
||||
C --> D[చర్యలు చేయండి]
|
||||
D --> E[రికార్డింగ్ ఆపు]
|
||||
E --> F{ఫలితాలను విశ్లేషించండి}
|
||||
|
||||
F --> G[టైమ్లైన్ తనిఖీ చేయండి]
|
||||
F --> H[నెట్వర్క్ సమీక్షించండి]
|
||||
F --> I[స్క్రిప్ట్స్ పరిశీలించండి]
|
||||
F --> J[పెయింట్ ఈవెంట్లు గుర్తించండి]
|
||||
|
||||
G --> K{పొడవైన పనులు?}
|
||||
H --> L{పెద్ద ఆస్తులు?}
|
||||
I --> M{రెండర్ బ్లాకింగ్?}
|
||||
J --> N{వేటికి ఎక్కువ ఖర్చు అయ్యే పెయింట్లు?}
|
||||
|
||||
K -->|అవును| O[జావాస్క్రిప్ట్ ఆప్టిమైజ్ చేయండి]
|
||||
L -->|అవును| P[ఆస్తులను కంప్రెస్ చేయండి]
|
||||
M -->|అవును| Q[అసింక్/డిఫర్ జోడించండి]
|
||||
N -->|అవును| R[స్టైల్స్ సులభతరం చేయండి]
|
||||
|
||||
O --> S[మళ్ళీ పరీక్షించండి]
|
||||
P --> S
|
||||
Q --> S
|
||||
R --> S
|
||||
|
||||
style A fill:#e1f5fe
|
||||
style F fill:#fff3e0
|
||||
style S fill:#e8f5e8
|
||||
```
|
||||
## ప్రొఫైలింగ్ చేస్తుండగా ఏమి గమనించాలి
|
||||
|
||||
ప్రొఫైలర్ నడిపించడం మొదటి దశ మాత్రమే - నిజమైన నైపుణ్యం ఆ రంగిన చార్ట్లు మీకువ్యక్తం చేసే అర్థం తెలుసుకోవడమే. నిరాశ చెందకండి, మీరు వాటిని చదవడం నేర్చుకుంటారు. అనుభవజ్ఞులైన డెవలపర్లు సమస్యలు పూర్తిగా చాకచక్యంగా మారితే ముందుగానే హెచ్చరికలు గమనించే పాడు సాధించారు.
|
||||
|
||||
సాధారణంగా పనితీరు సమస్యలు కలిగించే అంశాలను చర్చిద్దాం. ఎలా మారీ కూరియే తన లాబొరేటరీలో రేడియేషన్ లెవల్స్ జాగ్రత్తగా గమనించాల్సి వచ్చింది, అలాగే మనం కూడా కొన్ని నమూనాలను గమనించాలి, అవి సమస్యలు వెలుగులోకి రాక ముందే గుర్తించడం ముఖ్యం. ఆగడమూ మీరు (మరియు మీ యూజర్లు) చాలా బాధ నుండి రక్షిస్తుంది.
|
||||
|
||||
**ఆస్టు పరిమాణాలు**: వెబ్సైట్లు సంవత్సరాలుగా "భారీ" అవుతున్నాయి, మరియు ఎక్కువ భాగం దాని పరిమాణం చిత్రాల కంటే వచ్చింది. మనం మన డిజిటల్ సూట్కేస్ను ఎక్కువ మరియు ఎక్కువ పూర్తిగా నింపుతున్నాం.
|
||||
|
||||
✅ [Internet Archive](https://httparchive.org/reports/page-weight) చూడండి, ఏలా పేజీ పరిమాణాలు కాలక్రమేణా పెరిగాయి - ఇది చాలా సూచనీయంగా ఉంటుంది.
|
||||
|
||||
**మీ ఆస్తులను ఎలా ఆప్టిమైజ్ చేయాలి:**
|
||||
- **ఆ చిత్రాలను కంప్రెస్ చేయండి!** కొత్త ఫార్మాట్లు (WebP) ఫైల్ సైజులను చాలా తగ్గించగలవు
|
||||
- **ప్రతి డివైస్కు సరైన చిత్ర పరిమాణాన్ని సర్వ్ చేయండి** - ఫోన్లకు భారీ డెస్క్టాప్ చిత్రాలు పంపించాల్సిన అవసరం లేదు
|
||||
- **మీ CSS మరియు JavaScript ను మినిఫై చేయండి** - ప్రతి బైట్ ముఖ్యం
|
||||
- **లేజీ లోడింగ్ వాడండి** - చిత్రాలు యూజర్లు కలవరించినప్పుడు మాత్రమే డౌన్లోడ్ అవ్వాలి
|
||||
|
||||
**DOM ట్రావర్సల్స్**: బ్రౌజర్ Document Object Model ను మీ కోడ్ ఆధారంగా నిర్మించాల్సి ఉంటుంది, కాబట్టి మంచి పనితీరు కోసం ట్యాగ్లు కనిష్టంగా ఉపయోగించాలి మరియు పేజీ కి అవసరమైన వాటిని మాత్రమే స్టైల్ చేయాలి. ఉదాహరణకు, ఒక పేజీకి మాత్రమే అవసరమైన CSSని ప్రధాన స్టైల్ షీట్ లో కలపకుండా ఆప్టిమైజ్ చేయాలి.
|
||||
|
||||
**DOM ఆప్టిమైజేషన్ ముఖ్య వ్యూహాలు:**
|
||||
- **HTML ఎలిమెంట్స్ మరియు నెస్టింగ్ లెవల్స్ ను కనిష్టం చేయి**
|
||||
- **ఉపయోగించని CSS నిబంధనలను తీసివేయి మరియు స్టైల్షీట్లను సమర్థవంతంగా సమ్మేళనం చేయి**
|
||||
- **ప్రతి పేజీకి అవసరమైన CSS మాత్రమే లోడ్ అయ్యేలా నిర్వహించు**
|
||||
- **HTML ని సెంటిమెంటిక్గా నిర్మించి బ్రౌజర్ పార్సింగ్ మెరుగుపరుచు**
|
||||
|
||||
**JavaScript**: ప్రతి JavaScript డెవలపర్ ర Render-Blocking స్క్రిప్ట్లు ఉంటాయి అని గమనించాలి, అవి DOM ట్రావర్సింగ్ మరియు పేజీ చిత్రీకరణకు ముందు లోడ్ అవ్వాలి. మీరు inline స్క్రిప్ట్లకు `defer` వాడుతుంటే బాగుంటుంది (Terrarium మాడ్యూల్ నందు చేసినట్టు).
|
||||
|
||||
**ఆధునిక జావాస్క్రిప్ట్ ఆప్టిమైజేషన్ టెక్నిక్స్:**
|
||||
- **DOM పార్సింగ్ తరువాత స్క్రిప్ట్లు లోడ్ అయ్యేలా `defer` యాడ్ చేయండి**
|
||||
- **కోడు విభజన అమలు చేయండి** - అవసరమైన జావాస్క్రిప్ట్ మాత్రమే లోడ్ అవ్వాలి
|
||||
- **అవసరం లేని ఫంక్షనాలిటీకు లేజీ లోడింగ్ వాడండి**
|
||||
- **భారీ లైబ్రరీలు మరియు ఫ్రేమ్వర్క్లు తగ్గించండి**
|
||||
|
||||
✅ కొన్ని సైట్లను [Site Speed Test](https://www.webpagetest.org/) వెబ్సైట్ లో పరీక్షించి సాధారణ తనిఖీలు ఎలా ఉంటాయో తెలుసుకోండి.
|
||||
|
||||
### 🔄 **గురుకులాక్షణిక తనిఖీ**
|
||||
**పనితీరు అవగాహన**: ఎక్స్టెన్షన్ ఫీచర్లను నిర్మించడానికి ముందు, ఈ విషయాలు తెలిసి ఉండాలి:
|
||||
- ✅ HTML నుండి పిక్సెల్స్ వరకు క్రిటికల్ రండరింగ్ పాత్ వివరించగలగాలి
|
||||
- ✅ వెబ్ అప్లికేషన్లలో సాధారణ పనితీరు బాటిల్నెక్స్ గుర్తించగలగాలి
|
||||
- ✅ బ్రౌజర్ డెవలపర్ టూల్స్ ని ఉపయోగించి పేజీ పనితీరు ప్రొఫైల్ చేయగలగాలి
|
||||
- ✅ ఆస్తుల పరిమాణం మరియు DOM సంక్లిష్టత వేగం ఎలా ప్రభావితం చేస్తుందో అర్థం చేసుకోవాలి
|
||||
|
||||
**త్వరిత స్వ-పరీక్ష**: రేండర్ బ్లాకింగ్ జావాస్క్రిప్ట్ ఉన్నప్పుడు ఏమవుతుంది?
|
||||
*జవాబు: బ్రౌజర్ పేజీ పార్స్ చేయడం మరియు పేజీని రండర్ చేయడం ప్రారంభించే ముందు స్క్రిప్ట్ డౌన్లోడ్ చేసి నడిపించాలి*
|
||||
|
||||
**నిజ జీవిత పనితీరు ప్రభావం**:
|
||||
- **100ms ఆలస్యం**: యూజర్లు ఆలస్యం గమనిస్తారు
|
||||
- **1 సెకను ఆలస్యం**: యూజర్లు దృష్టి కోల్పోతారు
|
||||
- **3+ సెకన్లు**: 40% యూజర్లు పేజీని వదిలేస్తారు
|
||||
- **మొబైల్ నెట్వర్క్లు**: పనితీరు మరింత ముఖ్యం
|
||||
|
||||
ఇప్పుడు మీరు పంపిన ఆస్తులను బ్రౌజర్ ఎలా రండర్ చేస్తుందో తెలుసుకున్నారని, మీ ఎక్స్టెన్షన్ పూర్తి చేయడానికి చివరి కొన్ని పనులు చూద్దాం:
|
||||
|
||||
### రంగును లెక్కించే ఫంక్షన్ సృష్టించండి
|
||||
|
||||
ఇప్పుడు ఒక ఫంక్షన్ సృష్టిద్దాం, ఇది సంఖ్యల డేటాను అర్థవంతమైన రంగులుగా మార్చుతుంది. ఇది ట్రాఫిక్ లైట్ వలె భావించండి - గ్రీన్ అంటే శుభ్రమైన ఎనర్జీ, రెడ్ అంటే అధిక కార్బన్ తీవ్రత.
|
||||
|
||||
ఈ ఫంక్షన్ మా API నుంచి CO2 డేటా తీసుకుని పర్యావరణ ప్రభావాన్ని సూచించే ఉత్తమ రంగును నిర్ణయిస్తుంది. శాస్త్రవేత్తలు ఓషన్ ఉష్ణోగ్రతలు, నక్షత్ర నిర్మాణం వంటి క్లిష్ట సాంకేతిక డేటాను రంగుల ద్వారానే విజువలైజ్ చేయటాన్ని గుర్తు చేసుకోండి. దీనిని `/src/index.js` లో `const` వేరియబుల్స్ తర్వాత చేర్చండి:
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A[CO2 విలువ] --> B[అతి సమీప స్కేల్స్ పాయింట్ కనుగొను]
|
||||
B --> C[స్కేల్ సూచిక పొందు]
|
||||
C --> D[రంగు జోడించు]
|
||||
D --> E[ఛాయాచిత్రానికి పంపు]
|
||||
|
||||
subgraph "రంగు స్కేల్"
|
||||
F["0-150: ఆకుపచ్చ (శుభ్రమైనది)"]
|
||||
G["150-600: పసుపు (మధ్యమం)"]
|
||||
H["600-750: కమలం (అత్యధిక)"]
|
||||
I["750+: బూర্ণ (చాలా అత్యధిక)"]
|
||||
end
|
||||
|
||||
subgraph "సందేశం పంపడం"
|
||||
J[కంటెంట్ స్క్రిప్ట్]
|
||||
K[chrome.runtime.sendMessage]
|
||||
L[బ్యాక్గ్రౌండ్ స్క్రిప్ట్]
|
||||
M[ఐකాన్ నవీకరణ]
|
||||
end
|
||||
|
||||
style A fill:#e1f5fe
|
||||
style D fill:#e8f5e8
|
||||
style E fill:#fff3e0
|
||||
```
|
||||
```javascript
|
||||
function calculateColor(value) {
|
||||
// CO2 తీవ్రత స్కేల్ను నిర్వచించండి (గ్రాములు ప్రతి kWhకి)
|
||||
const co2Scale = [0, 150, 600, 750, 800];
|
||||
// గ్రీన్ (శుభ్రమైనది) నుండి డార్క్ బ్రౌన్ (అధిక కార్బన్) వరకు తగిన రంగులు
|
||||
const colors = ['#2AA364', '#F5EB4D', '#9E4229', '#381D02', '#381D02'];
|
||||
|
||||
// మన ఇన్పుట్కి సన్నిహితమైన స్కేల్ విలువను కనుగొనండి
|
||||
const closestNum = co2Scale.sort((a, b) => {
|
||||
return Math.abs(a - value) - Math.abs(b - value);
|
||||
})[0];
|
||||
|
||||
console.log(`${value} is closest to ${closestNum}`);
|
||||
|
||||
// రంగు మ్యాపింగ్ కోసం సూచికను కనుగొనండి
|
||||
const num = (element) => element > closestNum;
|
||||
const scaleIndex = co2Scale.findIndex(num);
|
||||
|
||||
const closestColor = colors[scaleIndex];
|
||||
console.log(scaleIndex, closestColor);
|
||||
|
||||
// బ్యాక్గ్రౌండ్ స్క్రిప్ట్కు రంగు నవీకరణ సందేశం పంపించండి
|
||||
chrome.runtime.sendMessage({ action: 'updateIcon', value: { color: closestColor } });
|
||||
}
|
||||
```
|
||||
|
||||
**ఈ తెలివైన ఫంక్షన్ ని విరుచుకుపడుదాం:**
|
||||
- **రెండు అర్రేలను సృష్టిస్తుంది** - ఒకటి CO2 స్థాయిల కోసం, ఇంకొకటి రంగుల కోసం (గ్రీన్=పరిమళం, బ్రౌన్=మలినం!)
|
||||
- **మేము అందుకున్న CO2 విలువకి దగ్గరగా ఉన్న సరిపోల్చే విలువను వెతుకుతుంది** అర్రే సార్టింగ్ ద్వారా
|
||||
- **findIndex() పద్ధతితో సరిపోలే రంగును అందుకుంటుంది**
|
||||
- **మా ఎంపిక చేసిన రంగుతో క్రోమ్ బ్యాక్గ్రౌండ్ స్క్రిప్ట్ కి సందేశం పంపుతుంది**
|
||||
- **సూటిగా స్ట్రింగ్ ఫార్మాటింగ్ కోసం టెంప్లేట్ లిటరల్స్ (బ్యాక్టిక్స్) ఉపయోగిస్తుంది**
|
||||
- **అన్ని కోడ్ని const ప్రకటింపులతో కట్టు క్రమంగా ఉంచుతుంది**
|
||||
|
||||
`chrome.runtime` [API](https://developer.chrome.com/extensions/runtime) మీరు ఎక్స్టెన్షన్ యొక్క నర్వస్ సిస్టమ్ లాంటిది - ఇది బ్యాక్గ్రౌండ్ కమ్యూనికేషన్ మరియు పనులను నిర్వహిస్తుంది:
|
||||
|
||||
> "chrome.runtime API ని బ్యాక్గ్రౌండ్ పేజీని రిట్రీవ్ చేయడానికి, మానిఫెస్ట్ వివరాలను తిరిగి పొందడానికి మరియు యాప్ లేదా ఎక్స్టెన్షన్ జీవనచక్రంలో ఈవెంట్స్ కు స్పందించడానికి వినియోగించండి. మీరు URL ల సాపేక్ష పాథ్ను పూర్తి URL లుగా మార్చడానికి కూడా ఈ API ని ఉపయోగించవచ్చు."
|
||||
|
||||
**Chrome Runtime API ఎందుకు పట్ల విలక్షణం:**
|
||||
- **మీ ఎక్స్టెన్షన్ లోని వివిధ భాగాలు ఒకదానితో మరొకటి మాట్లాడేలా చేస్తుంది**
|
||||
- **వినియోగదారు ఇంటర్ఫేస్ ఫ్రీజ్ కాకుండా బ్యాక్గ్రౌండ్ పనులను నిర్వహిస్తుంది**
|
||||
- **మీ ఎక్స్టెన్షన్ జీవనచక్ర ఈవెంట్స్ని నిర్వహిస్తుంది**
|
||||
- **స్క్రిప్ట్ల మధ్య సందేశ ప్రసారాన్ని సులభతరం చేస్తుంది**
|
||||
|
||||
✅ మీరు ఈ ఎక్స్టెన్షన్ని Edge కోసం అభివృద్ధి చేస్తుంటే ఆశ్చర్యం కలగవచ్చు, మీరు Chrome API వాడుతున్నారు. కొత్త Edge బ్రౌజర్ క్రమంగా Chromium బ్రౌజింగ్ ఇంజిన్ పై పనిచేస్తుంది కాబట్టి ఈ టూల్స్ ఉపయోగించవచ్చు.
|
||||
|
||||
```mermaid
|
||||
architecture-beta
|
||||
group browser(logos:chrome)[బ్రౌజర్]
|
||||
|
||||
service popup(logos:html5)[పాప్అప్ UI] in browser
|
||||
service content(logos:javascript)[కంటెంట్ స్క్రిప్ట్] in browser
|
||||
service background(database)[బ్యాక్గ్రౌండ్ స్క్రిప్ట్] in browser
|
||||
service api(logos:api)[బాహ్య API] in browser
|
||||
|
||||
popup:R -- L:content
|
||||
content:R -- L:background
|
||||
background:T -- B:api
|
||||
content:T -- B:api
|
||||
|
||||
junction junctionCenter in browser
|
||||
popup:R -- L:junctionCenter
|
||||
junctionCenter:R -- L:background
|
||||
```
|
||||
> **ప్రో టిప్**: మీరు ఒక బ్రౌజర్ ఎక్స్టెన్షన్ ప్రొఫైల్ చేయాలనుకుంటే, ప్రతీ ఎక్స్టెన్షన్ ప్రత్యేక బ్రౌజర్ ఇన్స్టెన్స్ అయ 있기 వలన, ఆ ఎక్స్టెన్షన్ లో నుండి డెవలపర్ టూల్స్ స్టార్ట్ చేయండి. ఇది ఎక్స్టెన్షన్ ప్రత్యేక పనితీరు మెట్రిక్స్కి యాక్సెస్ ఇస్తుంది.
|
||||
|
||||
### డిఫాల్ట్ ఐకాన్ రంగు సెట్ చేయండి
|
||||
|
||||
నిజమైన డేటా పొందటం మొదలుపెట్టేముందు, మన ఎక్స్టెన్షన్ కు ఒక ఆరంభ స్థానం ఇవ్వాలి. ఎవ్వరూ ఖాళీ లేదా పగులని ఐకాన్ మీద చూడటం ఇష్టం లేదు. మనం గ్రీన్ రంగును మొదటి రంగుగా సెట్ చేద్దాం, తద్వారా యూజర్లు ఎక్స్టెన్షన్ ఇన్స్టాల్ చేసిన మొదటినుండి అది పని చేస్తున్నట్లు అర్థం చేసుకుంటారు.
|
||||
|
||||
మీ `init()` ఫంక్షన్లో డిఫాల్ట్ గ్రీన్ ఐకాన్ ను సెట్ చేద్దాం:
|
||||
|
||||
```javascript
|
||||
chrome.runtime.sendMessage({
|
||||
action: 'updateIcon',
|
||||
value: {
|
||||
color: 'green',
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
**ఈ ప్రారంభీకరణ అందే ప్రయోజనాలు:**
|
||||
- **డిఫాల్ట్ స్టేట్గా న్యూట్రల్ గ్రీన్ కలర్ సెట్ చేస్తుంది**
|
||||
- **ఎక్స్టెన్షన్ లోడ్ అయినప్పుడు వెంటనే విజువల్ ఫీడ్బ్యాక్ అందిస్తుంది**
|
||||
- **బ్యాక్గ్రౌండ్ స్క్రిప్ట్తో కమ్యూనికేషన్ ప్యాటర్న్ ఏర్పరుస్తుంది**
|
||||
- **డేటా లోడ్ కావడానికి ముందు వినియోగదారులు పనిచేసే ఎక్స్టెన్షన్ చూస్తారు**
|
||||
|
||||
### ఫంక్షన్ను కాల్ చేసి ఆహ్వానం అమలు చేయండి
|
||||
|
||||
ఇప్పుడు ప్రతీకి కनेक్ట్ చేద్దాం, కొత్త CO2 డేటా వచ్చినప్పుడు ఐకాన్ స్వయంచాలకంగ రంగును మార్చేలా. ఇది ఒక ఎలక్ట్రానిక్ పరికరంలో చివరి సర్క్యూట్ కనెక్ట్ చేయడంలా - ఒక్కొక్క భాగం కలిసి ఒక సిస్టమ్ గా పని చేస్తుంది.
|
||||
|
||||
API నుండి CO2 డేటా పొందిన తర్వాత ఈ లైన్ జోడించండి:
|
||||
|
||||
```javascript
|
||||
// API నుండి CO2 డేటాను పొందిన తర్వాత
|
||||
// let CO2 = data.data[0].intensity.actual;
|
||||
calculateColor(CO2);
|
||||
```
|
||||
|
||||
**ఈ ఇంటిగ్రేషన్ accomplishes:**
|
||||
- **API డేటా ప్రవాహాన్ని విజువల్ సూచికా వ్యవస్థతో కనెక్ట్ చేస్తుంది**
|
||||
- **కొత్త డేటా వచ్చినపుడు ఐకాన్ అప్డేట్లు ఆటోమాటిక్ గా ట్రిగ్గర్ అవుతాయి**
|
||||
- **ప్రస్తుతం కార్బన్ తీవ్రత ఆధారంగా రియల్ టైమ్ విజువల్ ఫీడ్బ్యాక్ అందిస్తుంది**
|
||||
- **డేటా ఫెచింగ్ మరియు ప్రదర్శన తర్కాన్ని విడగొడుతుంది**
|
||||
|
||||
మరియు చివరగా, `/dist/background.js` లో ఈ బ్యాక్గ్రౌండ్ చర్య కాల్స్ కోసం లిసనర్ జోడించండి:
|
||||
|
||||
```javascript
|
||||
// కంటెంట్ స్క్రిప్ట్ నుండి సందేశాలను వినండి
|
||||
chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) {
|
||||
if (msg.action === 'updateIcon') {
|
||||
chrome.action.setIcon({ imageData: drawIcon(msg.value) });
|
||||
}
|
||||
});
|
||||
|
||||
// కాన్వాస్ API ఉపయోగించి డైనమిక్ ఐకాన్ను అందించండి
|
||||
// ఎనర్జీ లోలిపాప్ ఎక్స్టెన్షన్ నుండి తీర్చిదిద్దారు - చక్కటి లక్షణం!
|
||||
function drawIcon(value) {
|
||||
// మెరుగైన పనితీరు కోసం ఆఫ్స్క్రీన్ కాన్వాస్ సృష్టించండి
|
||||
const canvas = new OffscreenCanvas(200, 200);
|
||||
const context = canvas.getContext('2d');
|
||||
|
||||
// కార్బన్ తీవ్రతను సూచించే రంగు రంగు సర్కిల్ను రాయండి
|
||||
context.beginPath();
|
||||
context.fillStyle = value.color;
|
||||
context.arc(100, 100, 50, 0, 2 * Math.PI);
|
||||
context.fill();
|
||||
|
||||
// బ్రౌజర్ ఐకాన్ కోసం చిత్రం డేటాను తిరిగి ఇవ్వండి
|
||||
return context.getImageData(50, 50, 100, 100);
|
||||
}
|
||||
```
|
||||
|
||||
**ఈ బ్యాక్గ్రౌండ్ స్క్రిప్ట్ ని ఎం చేస్తుంది:**
|
||||
- **మీ ప్రధాన స్క్రిప్ట్ నుండి సందేశాలు వింటుంది (ఒక రిసెప్షనిస్ట్ లాంటి పనితీరు)**
|
||||
- **'updateIcon' అభ్యర్థనలను ప్రాసెస్ చేస్తుంది, మీ టూల్బార్ ఐకాన్ మార్చడానికి**
|
||||
- **Canvas API ఉపయోగించి కొత్త ఐకాన్లు తయారు చేస్తుంది**
|
||||
- **ప్రస్తుత కార్బన్ తీవ్రతను చూపించే ఒక సులభ రంగుల వృత్తాన్ని డ్రా చేస్తుంది**
|
||||
- **ప్రమదమైన ఐకాన్తో బ్రౌజర్ టూల్బార్ అప్డేట్ చేస్తుంది**
|
||||
- **స్మూత్ పనితీరు కోసం OffscreenCanvas ఉపయోగిస్తుంది (UI బ్లాకింగ్ లేదు)**
|
||||
|
||||
✅ మీరు Canvas API గురించి మరింత [Space Game lessons](../../6-space-game/2-drawing-to-canvas/README.md) లో నేర్చుకుంటారు.
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant CS as కంటెంట్ స్క్రిప్ట్
|
||||
participant BG as బ్యాక్గ్రౌండ్ స్క్రిప్ట్
|
||||
participant Canvas as ఆఫ్స్క్రీన్కాన్వాస్
|
||||
participant Browser as బ్రౌజర్ ఐకాన్
|
||||
|
||||
CS->>BG: sendMessage({action: 'updateIcon', color})
|
||||
BG->>Canvas: new OffscreenCanvas(200, 200)
|
||||
Canvas->>Canvas: getContext('2d')
|
||||
Canvas->>Canvas: beginPath() + fillStyle + arc()
|
||||
Canvas->>Canvas: fill() + getImageData()
|
||||
Canvas->>BG: చిత్రం డేటాను తిరిగి ఇవ్వండి
|
||||
BG->>Browser: chrome.action.setIcon(imageData)
|
||||
Browser->>Browser: టూల్బార్ ఐకాన్ని నవీకరించండి
|
||||
```
|
||||
### 🔄 **గురుకులాక్షణిక తనిఖీ**
|
||||
**పూర్తి ఎక్స్టెన్షన్ అర్ధం చేసుకోవడం**: మొత్తం వ్యవస్థపై మీ నైపుణ్యం నిర్ధారించుకోండి:
|
||||
- ✅ వివిధ ఎక్స్టెన్షన్ స్క్రిప్ట్ల మధ్య సందేశ ప్రసారం ఎలా జరుగుతుందో?
|
||||
- ✅ పనితీరు కోసం సాధారణ క్యాన్వాస్ కాకుండా OffscreenCanvas ఎందుకు వాడుతాం?
|
||||
- ✅ క్రోమ్ రన్టైమ్ API విస్తరణ వాస్తవిక నిర్మాణంలో ఏ పాత్ర పోషిస్తుంది?
|
||||
- ✅ రంగు గణన చరిత్రాల్గోరిథం డేటాను దృశ్య స్పందనకు ఎలా మ్యాప్ చేస్తుంది?
|
||||
|
||||
**పనితీరు పరిశీలనలు**: మీ విస్తరణ ఇప్పుడు చూపిస్తుంది:
|
||||
- **ప్రభావవంతమైన సందేశం పంపిణీ**: స్క్రిప్ట్ సందర్భాల మధ్య శుభ్రంగా కమ్యూనికేషన్
|
||||
- **ఆప్టిమైజ్డ్ రెండరింగ్**: OffscreenCanvas UI బ్లాకింగ్ నివారిస్తుంది
|
||||
- **రియల్-టైమ్ అప్డేట్లు**: ప్రత్యక్ష డేటా ఆధారంగా డైనమిక్ ఐకాన్ మార్పులు
|
||||
- **మేమరీ నిర్వహణ**: సరైన శుభ్రపరిచే మరియు వనరు నిర్వహణ
|
||||
|
||||
**మీ విస్తరణను పరీక్షించాల్సిన సమయం:**
|
||||
- **అన్ని** `npm run build` తో నిర్మించండి
|
||||
- **మీ విస్తరణను రీలోడ్ చేయండి** బ్రౌజర్లో (ఈ దశ మర్చిపోకండి)
|
||||
- **మీ విస్తరణను ఓపెన్ చేయండి** మరియు ఆ ఐకాన్ రంగులు మారుతున్నట్టు చూడండి
|
||||
- **ప్రత్యక్ష కార్బన్ డేటాకు ఎలా స్పందిస్తున్నదో పరిశీలించండి** ప్రపంచవ్యాప్తంగా నుండి
|
||||
|
||||
ఇప్పుడు మీరు ఒక చూపుతో మీ దుస్తుల భారం వేయడానికి మంచిది కాదా, లేక శుభ్రమైన శక్తి కోసం వేచే సమయం ఉందా అనేది తెలుసుకుంటారు. మీరు నిజంగా ఉపయోగకరమైనదాన్ని నిర్మించారు మరియు బ్రౌజర్ పనితీరును కూడా కూడ నేర్చుకున్నారు.
|
||||
|
||||
## GitHub Copilot ఏజెంట్ ఛాలెంజ్ 🚀
|
||||
|
||||
ఏజెంట్ మోడ్ ఉపయోగించి క్రింది ఛాలెంజ్ పూర్తి చేయండి:
|
||||
|
||||
**వివరణ:** బ్రౌజర్ విస్తరణ పనితీరును పర్యవేక్షించే సామర్థ్యాలను మెరుగుపరిచేందుకు విస్తరణలోని వివిధ భాగాల లోడ్ సమయాలను ట్రాక్ చేయడం మరియు ప్రదర్శించగల ఫీచర్ చేర్చండి.
|
||||
|
||||
**ప్రాంప్ట్:** సృష్టించండి ఒక పనితీరు పర్యవేక్షణ వ్యవస్థ, ఇది API నుండి CO2 డేటా పొందడానికి, రంగుల లెక్కించడం మరియు ఐకాన్ అప్డేట్ చేయడానికి తీసుకునే సమయాన్ని కొలిచి లాగ్ చేస్తుంది. ఒక ఫంక్షన్ `performanceTracker` ను జోడించండి, ఇది Performance API ని ఉపయోగించి ఈ ఆపరేషన్లను కొలుస్తుంది మరియు టైమ్స్టాంపులు మరియు వ్యవధి మీట్రిక్స్తో బ్రౌజర్ కన్సోల్లో ఫలితాలను ప్రదర్శిస్తుంది.
|
||||
|
||||
[agent mode](https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode) గురించి మరింత తెలుసుకోండి.
|
||||
|
||||
## 🚀 ఛాలెంజ్
|
||||
|
||||
ఇది ఒక ఆసక్తికరమైన డిటెక్టివ్ మిషన్: సంవత్సరాలుగా ఉన్న కొన్ని ఓపెన్ సోర్స్ వెబ్సైట్లు (వికీపీడియా, GitHub లేదా Stack Overflow వంటి) ఎంచుకుని వారి కమిట్ చరిత్రలోకి దృష్టిపడండి. వారు ఎక్కడ పనితీరు మెరుగులు చేర్పుకున్నారు? ఎటువంటి సమస్యలు యావత్తూ తరలినవి?
|
||||
|
||||
**మీ పరిశోధనా విధానం:**
|
||||
- **కమిట్ సందేశాలలో** "optimize," "performance," లేదా "faster" వంటి పదాలను శోధించండి
|
||||
- **ప్యాటర్న్స్ కోసం చూడండి** - ఒకే రకాల సమస్యలను తిరిగి పరిష్కరిస్తూ ఉన్నారా?
|
||||
- **ముఖ్య కారణాలను గుర్తించండి** వెబ్సైట్లను నెమ్మదింపజేసే వాటిని
|
||||
- **మీ కనుగొనుగోలను పంచుకోండి** - ఇతర డెవలపర్లు నిజ జీవిత ఉదాహరణల నుండి నేర్చుకుంటారు
|
||||
|
||||
## పోస్ట్-లెక్చర్ క్విజ్
|
||||
|
||||
[Post-lecture quiz](https://ff-quizzes.netlify.app/web/quiz/28)
|
||||
|
||||
## సమీక్ష & స్వీయ అధ్యయనం
|
||||
|
||||
[performance newsletter](https://perf.email/) కోసం సైన్ అప్ కండి
|
||||
|
||||
బ్రౌజర్లు వెబ్ పనితీరు కొలవడంలో కొన్ని మార్గాలను వెబ్ టూల్స్ లోని పనితీరు టాబ్స్ చదవడంలో పరిశీలించండి. మీరు ఎటువంటి ప్రధాన తేడాలు కనుగొంటారా?
|
||||
|
||||
### ⚡ **తరువాత 5 నిమిషాల్లో మీరు చేయగలిగేది**
|
||||
- [ ] బ్రౌజర్ Task Manager (Chrome లో Shift+Esc) ఓపెన్ చేసి విస్తరణ వనరు వినియోగాన్ని చూడండి
|
||||
- [ ] DevTools Performance టాబ్ ఉపయోగించి వెబ్పేజీ పనితీరును రికార్డు చేయండి మరియు విశ్లేషించండి
|
||||
- [ ] బ్రౌజర్ Extensions పేజి తనిఖీ చేయండి ఏ విస్తరణలు ప్రారంభ సమయాన్ని ప్రభావితం చేస్తున్నాయో చూడండి
|
||||
- [ ] తాత్కాలికంగా విస్తరణలని అగుమెంట్ చేసి పనితీరు తేడాలు పరిశీలించండి
|
||||
|
||||
### 🎯 **ఈ గంటలో మీరు సాధించగలిగేది**
|
||||
- [ ] పోస్ట్-లెసన్ క్విజ్ పూర్తి చేసి పనితీరు భావనలు అర్థం చేసుకోండి
|
||||
- [ ] మీ బ్రౌజర్ విస్తరణ కోసం బ్యాక్గ్రౌండ్ స్క్రిప్ట్ అమలు చేయండి
|
||||
- [ ] browser.alarms ఉపయోగించి సమర్థవంతమైన బ్యాక్గ్రౌండ్ పనులను నేర్చుకోండి
|
||||
- [ ] కంటెంట్ స్క్రిప్ట్స్ మరియు బ్యాక్గ్రౌండ్ స్క్రిప్ట్స్ మధ్య సందేశం పంపిణీ అభ్యాసం
|
||||
- [ ] మీ విస్తరణ వనరు వినియోగాన్ని కొలవడం మరియు ఆప్టిమైజ్ చేయడం
|
||||
|
||||
### 📅 **మీ వారాంత పనితీరు ప్రయాణం**
|
||||
- [ ] హై-పర్ఫార్మెన్స్ బ్రౌజర్ విస్తరణను పూర్తిచేయండి బ్యాక్గ్రౌండ్ ఫంక్షనాలిటీతో
|
||||
- [ ] సర్వీస్ వర్కర్లను మరియు ఆధునిక విస్తరణ నిర్మాణాన్ని స్వాధీనం చేసుకోండి
|
||||
- [ ] సమర్థవంతమైన డేటా సింక్రోనైజేషన్ మరియు క్యాషింగ్ వ్యూహాలు అమలు చేయండి
|
||||
- [ ] విస్తరణ పనితీరు కోసం అధునాతన డీబగ్గింగ్ సాంకేతికతలు నేర్చుకోండి
|
||||
- [ ] ఫంక్షనాలిటీ మరియు వనరు సామర్థ్యం రెండింటికీ ఆప్టిమైజ్ చేయండి
|
||||
- [ ] విస్తరణ పనితీరు సన్నివేశాలకు సమగ్ర పరీక్షలని సృష్టించండి
|
||||
|
||||
### 🌟 **మీ నెల విస్తరణ ఆప్టిమైజేషన్ నైపుణ్యం**
|
||||
- [ ] ఎంటర్ప్రైజ్-గ్రేడ్ బ్రౌజర్ విస్తరణలను అధిక పనితీరు తో నిర్మించండి
|
||||
- [ ] Web Workers, Service Workers, మరియు ఆధునిక వెబ్ పనితీరు గురించి నేర్చుకోండి
|
||||
- [ ] పనితీరు ఆప్టిమైజేషన్ కి సంబంధించిన ఓపెన్ సోర్స్ ప్రాజెక్టులకు సహాయం చెయ్యండి
|
||||
- [ ] బ్రౌజర్ ఇంటర్నల్స్ మరియు అధునాతన డీబగ్గింగ్ టెక్నిక్స్ మాస్టర్ చేయండి
|
||||
- [ ] పనితీరు పర్యవేక్షణ సాధనాలు మరియు ఉత్తమ అభ్యాస గైడ్లను సృష్టించండి
|
||||
- [ ] వెబ్ అప్లికేషన్ల ఆప్టిమైజేషన్లో సహాయం చేసే పనితీరు నిపుణుడిగా మారండి
|
||||
|
||||
## 🎯 మీ బ్రౌజర్ విస్తరణ నైపుణ్య కాలక్రమం
|
||||
|
||||
```mermaid
|
||||
timeline
|
||||
title పూర్తి ఎక్స్టెన్షన్ అభివృద్ధి ప్రగతి
|
||||
|
||||
section పనితీరు ప్రాథమికాలు (20 నిమిషాలు)
|
||||
బ్రౌజర్ ప్రొఫైలింగ్: DevTools నైపుణ్యం
|
||||
: టైమ్లైన్ విశ్లేషణ
|
||||
: బాటిల్నెక్ గుర్తింపు
|
||||
: క్రిటికల్ రెండరింగ్ పాథ్
|
||||
|
||||
section బ్యాక్గ్రౌండ్ టాస్కులు (25 నిమిషాలు)
|
||||
ఎక్స్టెన్షన్ వాస్టు నిర్మాణం: సందేశ ప్రసారం
|
||||
: బ్యాక్గ్రౌండ్ స్క్రిప్టులు
|
||||
: రన్టైమ్ API ఉపయోగం
|
||||
: క్రాస్-కాంటెక్స్ట్ కమ్యూనికేషన్
|
||||
|
||||
section విజువల్ ఫీడ్బ్యాక్ (30 నిమిషాలు)
|
||||
డైనమిక్ UI: రంగు లెక్కింపు ఆల్గోరిథమ్స్
|
||||
: కాన్వాస్ API ఆమిషం
|
||||
: ఐకాన్ ఉత్పత్తి
|
||||
: నిజకాల నవీకరణలు
|
||||
|
||||
section పనితీరు ఆప్టిమైజేషన్ (35 నిమిషాలు)
|
||||
సమర్థవంతమైన కోడ్: అసంక్రోనస్ ఆపరేషన్లు
|
||||
: మెమరీ నిర్వహణ
|
||||
: వనరు శుభ్రపరిచే ప్రక్రియ
|
||||
: పనితీరు పర్యవేక్షణ
|
||||
|
||||
section ఉత్పత్తి సిద్ధంగా (45 నిమిషాలు)
|
||||
పొలిష్ & పరీక్ష: క్రాస్-బ్రౌజర్ అనుకూలత
|
||||
: లోపాల నిర్వహణ
|
||||
: వినియోగదారుల అనుభవం
|
||||
: పనితీరు ధ్రువీకరణ
|
||||
|
||||
section ఆధునిక ఫీచర్లు (1 వారం)
|
||||
ఎక్స్టెన్షన్ ఈకోసిస్టమ్: క్రోమ్ వెబ్ స్టోర్
|
||||
: వినియోగదారుల ప్రతిస్పందన
|
||||
: అనలిటిక్స్ ఆమిషం
|
||||
: అప్డేట్ నిర్వహణ
|
||||
|
||||
section ప్రొఫెషనల్ అభివృద్ధి (2 వారాలు)
|
||||
ఎంటర్ప్రైజ్ ఎక్స్టెన్షన్లు: జట్టు సహకారం
|
||||
: కోడ్ సమీక్షలు
|
||||
: CI/CD పైప్లైన్లు
|
||||
: భద్రతా ఆడిట్లు
|
||||
|
||||
section నిపుణుల నైపుణ్యం (1 నెల)
|
||||
ప్లాట్ఫారం నైపుణ్యం: ఆధునిక క్రోమ్ APIs
|
||||
: పనితీరు ఆప్టిమైజేషన్
|
||||
: వాస్టు నమూనాలు
|
||||
: ఓపెన్ సోర్స్ దానం
|
||||
```
|
||||
### 🛠️ మీ పూర్తి విస్తరణ అభివృద్ధి టూల్కిట్
|
||||
|
||||
ఈ త్రిలాజీ పూర్తి చేసాక, మీరు ఇప్పుడు పట్టు సాధించారు:
|
||||
- **బ్రౌజర్ వాస్తవిక నిర్మాణం**: విస్తరణలు బ్రౌజర్ వ్యవస్థలతో ఏ విధంగా సమ్మిళితం అవుతాయో లోతైన అవగాహన
|
||||
- **పనితీరు ప్రొఫైలింగ్**: డెవలపర్ టూల్స్ ఉపయోగించి ఇబ్బందులను గుర్తించి పరిష్కరించగలిగే సామర్థ్యం
|
||||
- **అసంక్రోనస్ ప్రోగ్రామింగ్**: ప్రాధునిక JavaScript ప్యాటర్న్లు త్వరితగతిన, బ్లాక్ కానివ్వకుండా ఆపరేషన్ల కోసం
|
||||
- **API ఇంటిగ్రేషన్**: ధృవీకరణ మరియు ఎర్రర్ హ్యాండ్లింగ్ తో బాహ్య డేటా ఫెచింగ్
|
||||
- **దృశ్య డిజైన్**: డైనమిక్ UI అప్డేట్లు మరియు క్యాన్వాస్ ఆధారిత గ్రాఫిక్స్ ఉత్పత్తి
|
||||
- **సందేశాలు పంపిణీ**: విస్తరణ నిర్మాణాలలో అంతర్గతస్క్రిప్ట్ కమ్యూనికేషన్
|
||||
- **వినియోగదారు అనుభవం**: లోడింగ్ స్థితులు, లోపాల నిర్వహణ, మరియు సొగసైన ఇంటరాక్షన్లు
|
||||
- **ఉత్పత్తి నైపుణ్యాలు**: నిజ జీవిత డిప్లాయ్మెంట్ కోసం పరీక్షలు, డీబగ్గింగ్, మరియు ఆప్టిమైజేషన్
|
||||
|
||||
**నిజ జీవిత అప్లికేషన్లు**: మీ విస్తరణ అభివృద్ధి నైపుణ్యాలు ప్రత్యక్షంగా వర్తిస్తాయి:
|
||||
- **ప్రోగ్రెస్వ్ వెబ్ యాప్స్**: సమాన వాస్తవిక నిర్మాణం మరియు పనితీరు నమూనాలు
|
||||
- **ఎలక్ట్రాన్ డెస్క్టాప్ యాప్స్**: వెబ్ సాంకేతికతలతో క్రాస్-ప్లాట్ఫారమ్ అప్లికేషన్లు
|
||||
- **మొబైల్ హైబ్రిడ్ యాప్స్**: Cordova/PhoneGap అభివృద్ధి వెబ్ APIs ఉపయోగించి
|
||||
- **ఎంటర్ప్రైజ్ వెబ్ అప్లికేషన్లు**: సంక్లిష్ట డాష్బోర్డ్లు మరియు ఉత్పాదకత సాధనాలు
|
||||
- **క్రోమ్ DevTools విస్తరణలు**: అధునాతన డెవలపర్ సాధనాలు మరియు డీబగ్గింగ్
|
||||
- **వెబ్ API ఇంటిగ్రేషన్**: బాహ్య సర్వీసులతో కమ్యూనికేట్ చేసే ఏ యాప్లికేషన్ గొలుసు
|
||||
|
||||
**వృత్తిపరమైన ప్రభావం**: మీరు ఇప్పుడు చేయగలరు:
|
||||
- **అవగాహన నుండి డిప్లాయ్మెంట్ వరకు ఉత్పత్తి-సిద్ధ బ్రౌజర్ విస్తరణలను అభివృద్ధి చేయండి**
|
||||
- **పనితీరు ప్రొఫైలింగ్ సాధనాలు ఉపయోగించి వెబ్ యాప్లికేషన్ పనితీరును ఆప్టిమైజ్ చేయండి**
|
||||
- **మార్చగల సిస్టమ్లను తగిన విభాగాలడిపై నిర్మించండి**
|
||||
- **సంక్లిష్ట అసింక్ ఆపరేషన్లు మరియు క్రాస్-కాంటెక్స్ కమ్యూనికేషన్ డీబగ్గ్ చేయండి**
|
||||
- **ఓపెన్ సోర్స్ విస్తరణ ప్రాజెక్టులకు మరియు బ్రౌజర్ ప్రమాణాలకు సహకరించండి**
|
||||
|
||||
**తరువాతి స్థాయి అవకాశాలు**:
|
||||
- **క్రోమ్ వెబ్ స్టోర్ డెవలపర్**: లక్షల వినియోగదారులకు విస్తరణలు ప్రచురించండి
|
||||
- **వెబ్ పనితీరు ఇంజనీర్**: ఆప్టిమైజేషన్ మరియు వినియోగదారు అనుభవంపై ప్రత్యేకత
|
||||
- **బ్రౌజర్ ప్లాట్ఫారమ్ అభివృద్ధికర్త**: బ్రౌజర్ ఇంజిన్ అభివృద్ధికి సహారా చేయండి
|
||||
- **విస్తరణ ఫ్రేమ్వర్క్ సృష్టికర్త**: ఇతర డెవలపర్లకు సహాయపడే టూల్స్ నిర్మించండి
|
||||
- **డెవలపర్ రిలేషన్ల్స్**: బోధన మరియు సక్తి సృజన ద్వారా జ్ఞానం పంచుకోండి
|
||||
|
||||
🌟 **ప్రాప్తి సాధన**: మీరు పూర్తి, కార్యనిర్వాహక బ్రౌజర్ విస్తరణను నిర్మించారు, ఇది వృత్తిపరమైన అభివృద్ధి పద్ధతులు మరియు ఆధునిక వెబ్ ప్రమాణాలను చూపిస్తుంది!
|
||||
|
||||
## అసైన్మెంట్
|
||||
|
||||
[Analyze a site for performance](assignment.md)
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**అస్పష్టత**:
|
||||
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ద్వారా అనువదించబడింది. మేము సంది నిబద్దతకు ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాలలో తప్పులైనా పొరపాట్లు ఉండొచ్చు. ప్రామాణిక మూలంగా స్థానిక భాషలోని అసలు పత్రాన్ని ఎంతగానో పరిగణించాలి. కీలకమైన సమాచారానికి, వృత్తిపరమైన మానవ అనువాదం చేయించుకోవాలని సిఫార్సు చేస్తున్నాము. ఈ అనువాదం వాడకంతో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుతీర్మానాలకు మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,109 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "a203e560e58ccc6ba68bffc40c7c8676",
|
||||
"translation_date": "2026-01-08T15:32:01+00:00",
|
||||
"source_file": "5-browser-extension/3-background-tasks-and-performance/assignment.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# పనితీరు కోసం ఒక సైట్ను విశ్లేషించండి
|
||||
|
||||
## అసైన్మెంట్ అవలోకనం
|
||||
|
||||
పనితీరు విశ్లేషణ ఆధునిక వెబ్ డెవలపర్లకు ఒక కీలక నైపుణ్యం. ఈ అసైన్మెంట్లో, మీరు బ్రౌజర్ ఆధారిత టూల్స్ మరియు మూడవ పక్ష సేవలను ఉపయోగించి ఒక వాస్తవ వెబ్సైట్ యొక్క విస్తృత పనితీరు ఆడిట్ నిర్వహించి, జాప్యం కారణాలను గుర్తించి ఫలితాలను మెరుగుపరచడానికి సూచనలు చేయాలి.
|
||||
|
||||
మీ పని వెబ్ పనితీరు స 원 ్తాంశాలను మీ అవగాహనను మరియు వృత్తిపరమైన విశ్లేషణా టూల్స్ను సమర్థవంతంగా ఉపయోగించే మీ సామర్థ్యాన్ని ప్రదర్శించే వివరమైన పనితీరు నివేదికను అందించడం.
|
||||
|
||||
## అసైన్మెంట్ సూచనలు
|
||||
|
||||
**వెబ్సైట్ను ఎంచుకోండి** విశ్లేషణ కోసం - ఈ క్రింది ఎంపికలలో ఒకదాన్ని ఎంచుకోండి:
|
||||
- మీరు తరచుగా ఉపయోగించే ప్రస్తుతప్రసిద్ధ వెబ్సైట్ (వార్తా సైట్, సామాజిక మీడియా, ఈ-వాణిజ్య)
|
||||
- ఓపెన్-సోర్స్ ప్రాజెక్టు వెబ్సైట్ (GitHub పేజీలు, డాక్యుమెంటేషన్ సైట్లు)
|
||||
- స్థానిక వ్యాపార వెబ్సైట్ లేదా పోర్ట్ఫోలియో సైట్
|
||||
- మీ స్వంత ప్రాజెక్టు లేదా గత కోర్సు పని
|
||||
|
||||
**మల్టీ-టూల్ విశ్లేషణ నిర్వహించండి** కనీసం మూడు వివిధ విధానాలతో:
|
||||
- **బ్రౌజర్ DevTools** - Chrome/Edge పనితీరు ట్యాబ్ ఉపయోగించి వివరమైన ప్రొఫైలింగ్
|
||||
- **ఆన్లైన్ ఆడిటింగ్ టూల్స్** - Lighthouse, GTmetrix, లేదా WebPageTest ఉపయోగించండి
|
||||
- **నెట్వర్క్ విశ్లేషణ** - వనరుల లోడ్, ఫైల్ పరిమాణాలు, మరియు అభ్యర్థన నమూనాలను పరిశీలించండి
|
||||
|
||||
**మీ పరిశోధనలను డాక్యుమెంట్ చేయండి** ఒక సమగ్ర నివేదికలో, కలిగివున్నవి:
|
||||
|
||||
### పనితీరు సూచికల విశ్లేషణ
|
||||
- **లోడ్ సమయ కొలతలు** అనేక టూల్స్ మరియు కోణాల నుండి
|
||||
- **కోర్ వెబ్ వైటల్స్** స్కోర్లు (LCP, FID, CLS) మరియు వాటి ప్రభావాలు
|
||||
- **వనరు విభజన** ఏ అసెట్స్ లోడ్ సమయానికి ఎక్కువగా కృషి చేస్తున్నాయో చూపిస్తుంది
|
||||
- **నెట్వర్క్ వాటర్ఫాల్ విశ్లేషణ** నిర్బంధ వనరులను గుర్తిస్తుంది
|
||||
|
||||
### సమస్య గుర్తింపు
|
||||
- **నిర్దిష్ట పనితీరు అడ్డంకులు** తో మద్దతుగా డేటా
|
||||
- **మూల కారణ విశ్లేషణ** ప్రతి సమస్య ఎందుకు ఏర్పడింది అనే వివరణ
|
||||
- **వినియోగదారు ప్రభావం మూల్యాంకనం** సమస్యలు నిజమైన వినియోగదారులను ఎలా ప్రభావితం చేస్తాయో వివరించడం
|
||||
- **ప్రాధాన్యత ర్యాంకింగ్** తీవ్రత మరియు పరిష్కార సవాలుల ఆధారంగా సమస్యలు
|
||||
|
||||
### మెరుగుదల సూచనలు
|
||||
- **నిర్దిష్ట, కార్యాచరణ పనులు** అంచనా ప్రభావంతో
|
||||
- **ప్రతీ సిఫారసు మార్పుకు అమలు వ్యూహాలు**
|
||||
- **ఆధునిక ఉత్తమ పద్ధతులు** (లేజీ లోడింగ్, కంప్రెషన్, మొదలైనవి)
|
||||
- **సంచలనం పనితీరు పరిశీలన కోసం టూల్స్ మరియు సాంకేతికత**
|
||||
|
||||
## పరిశోధన అవసరాలు
|
||||
|
||||
**కేవలం బ్రౌజర్ టూల్స్ మీద ఆధారపడకండి** - మీరు విశ్లేషణను విస్తరించండి:
|
||||
|
||||
**మూడవ పక్ష ఆడిటింగ్ సేవలు:**
|
||||
- [Google Lighthouse](https://developers.google.com/web/tools/lighthouse) - విస్తృత ఆడిట్లు
|
||||
- [GTmetrix](https://gtmetrix.com/) - పనితీరు మరియు మెరుగుదల అవగాహన
|
||||
- [WebPageTest](https://www.webpagetest.org/) - వాస్తవ పరిస్థితుల పరీక్షలు
|
||||
- [Pingdom](https://tools.pingdom.com/) - గ్లోబల్ పనితీరు పరిశీలన
|
||||
|
||||
**ప్రత్యేక వైశిష్ట్యాల టూల్స్:**
|
||||
- [Bundle Analyzer](https://bundlephobia.com/) - జావాస్క్రిప్ట్ బండిల్ పరిమాణ విశ్లేషణ
|
||||
- [Image optimization tools](https://squoosh.app/) - అసెట్ మెరుగుదల అవకాశాలు
|
||||
- [Security headers analysis](https://securityheaders.com/) - భద్రతా పనితీరు ప్రభావం
|
||||
|
||||
## డెలివరబుల్స్ ఫార్మాట్
|
||||
|
||||
వృత్తిపరమైన నివేదిక (2-3 పేజీలు) తయారుచేయండి, అందులో ఇలా ఉండాలి:
|
||||
|
||||
1. **నిర్వహణ సారాంశం** - ముఖ్య నిష్కర్షలు మరియు సూచనలు
|
||||
2. **పద్ధతి** - ఉపయోగించిన టూల్స్ మరియు పరీక్షా విధానం
|
||||
3. **ప్రస్తుత పనితీరు మూల్యాంకనం** - ఆదార సూచికలు మరియు కొలతలు
|
||||
4. **గమనించిన సమస్యలు** - మద్దతు డేటాతో వివరించబడిన సమస్యలు
|
||||
5. **సిఫారసులు** - ప్రాధాన్యతను ఇచ్చిన మెరుగుదల వ్యూహాలు
|
||||
6. **అమలుపరచే రోడ్మ్యాప్** - దశల వారీ మెరుగుదల ప్రణాళిక
|
||||
|
||||
**దర్శన కలిగిన సాక్ష్యాలు చేర్పించండి:**
|
||||
- పనితీరు టూల్స్ మరియు సూచికల స్క్రీన్షాట్లు
|
||||
- పనితీరు డేటాను చూపించే చార్ట్స్ లేదా గ్రాఫ్లు
|
||||
- సాధ్యమైనంతవరకు ముందు/తరువాత తేడాలు
|
||||
- నెట్వర్క్ వాటర్ఫాల్ చార్ట్లు మరియు వనరుల విభజనలు
|
||||
|
||||
## రూబ్రిక్
|
||||
|
||||
| ప్రమాణాలు | ఉదాహరణాత్మకము (90-100%) | తగినంత (70-89%) | మెరుగుదల అవసరం (50-69%) |
|
||||
| -------- | ------------------------- | ----------------- | -------------------------- |
|
||||
| **విశ్లేషణ లోతు** | 4+ టూల్స్ ఉపయోగించి సమగ్రమైన విశ్లేషణ, root cause విశ్లేషణ, వినియోగదారుల ప్రభావం మూల్యాంకనం | 3 టూల్స్ ఉపయోగించి మంచి విశ్లేషణ, స్పష్టమైన మితాలు మరియు ప్రాథమిక సమస్య గుర్తింపు | 2 టూల్స్ ఉపయోగించి ప్రాథమిక విశ్లేషణ మరియు పరిమిత సమస్య గుర్తింపు |
|
||||
| **టూల్ వైవిధ్యం** | బ్రౌజర్ టూల్స్ + 3+ మూడవ పక్ష సేవలతో సరిపోల్చు విశ్లేషణలు మరియు అవగాహనలు | బ్రౌజర్ టూల్స్ + 2 మూడవ పక్ష సేవలతో కొంత సరిపోల్చు విశ్లేషణ | బ్రౌజర్ టూల్స్ + 1 మూడవ పక్ష సేవతో పరిమిత సరిపోల్చు విశ్లేషణ |
|
||||
| **సమస్య గుర్తింపు** | 5+ నిర్దిష్ట పనితీరు సమస్యలతో వివరమైన root cause విశ్లేషణ మరియు ఎత్తివేత ప్రభావం | 3-4 పనితీరు సమస్యలతో మంచి విశ్లేషణ మరియు కొంత ప్రభావ మాపింగ్ | 1-2 పనితీరు సమస్యలతో ప్రాథమిక విశ్లేషణ |
|
||||
| **సిఫారసులు** | నిర్దిష్ట, కార్యాచరణ సూచనలు, అమలు వివరాలు, అంచనా ప్రభావం, ఆధునిక ఉత్తమ పద్ధతులు | మంచి సిఫారసులు, కొంత అమలు మార్గదర్శకత్వం, అంచనా ఫలితాలు | ప్రాథమిక సిఫారసులు, పరిమిత అమలు వివరాలు |
|
||||
| **వృత్తిపరమైన ప్రదర్శన** | స్పష్టమైన నిర్మాణం, దృశ్య సాక్ష్యాలు, నిర్వహణ సారాంశం, व्यावవసాయిక రూపకల్పనతో బాగా బంధించబడిన నివేదిక | కొంత దృశ్య సాక్ష్యాలు మరియు స్పష్టమైన నిర్మాణంతో మంచిగా సమన్వయపరచబడింది | తక్కువ దృశ్య సాక్ష్యాలు మరియు మితమైన నిర్మాణంతో ప్రాథమిక నిర్వహణ |
|
||||
|
||||
## అభ్యాస ఫలితాలు
|
||||
|
||||
ఈ అసైన్మెంట్ పూర్తి చేయడం ద్వారా, మీరు చూపిస్తారు:
|
||||
- **పృథ్వీ ప్రదర్శన విశ్లేషణ టూల్స్ మరియు పద్ధతులు**ను వర్తింపచేయగలగడం
|
||||
- **డేటా ఆధారిత విశ్లేషణ**తో పనితీరు అడ్డంకులను గుర్తించగలగడం
|
||||
- **కోడ్ నాణ్యత మరియు వినియోగదారు అనుభవాల సంబంధాల**ను విశ్లేషించగలగడం
|
||||
- **నిర్దిష్ట, కార్యాచరణ నిర్వహణ సూచనలను సిఫారసు చేయగలగడం**
|
||||
- **సాంకేతిక వివరాలను వృత్తిపరమైన ఫార్మాట్లో కమ్యూనికేట్ చేయగలగడం**
|
||||
|
||||
ఈ అసైన్మెంట్ పాఠంలో నేర్చుకున్న పనితీరు భావాలను బలపరుస్తుంది మరియు మీ వెబ్ డెవలప్మెంట్ ఉద్యోగ జీవితంలో ఉపయోగించే సాంఘర్య నైపుణ్యాలను అభివృద్ధి చేస్తుంది.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**అస్పష్టత**:
|
||||
ఈ నమోదు AI అనువాద సేవ [Co-op అనువాదకుడు](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము సరైన అనువాదానికి ప్రయత్నిస్తున్నప్పటికీ, స్వయంచాలిత అనువాదాలలో తప్పిదాలు లేదా పొరపాట్లు ఉండవచ్చు. మూల డాక్యుమెంట్ దాని స్వంత భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదాన్ని توصیه చేస్తాము. ఈ అనువాదం వలన ఏర్పడే ఏ క్రత్యూను లేదా గందరగోళానికి మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,43 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "b121a279a6ab39878491f3e572673515",
|
||||
"translation_date": "2026-01-08T11:22:43+00:00",
|
||||
"source_file": "5-browser-extension/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# బ్రౌజర్ ఎక్స్టెన్షన్ నిర్మాణం
|
||||
|
||||
బ్రౌజర్ ఎక్స్టెన్షన్లు నిర్మించడం మీ అప్లికేషన్ల ప్రదర్శన గురించి ఆలోచించడానికి సరదాగా, ఆసక్తికరమైన మార్గం మరియు వెబ్ ఆస్తి వేరే రకాన్ని నిర్మించడం. ఈ మాడ్యూల్ బ్రౌజర్లు ఎలా పని చేస్తాయో మరియు బ్రౌజర్ ఎక్స్టెన్షన్ను ఎలా అనుసంధానించాలో, ఫారం ఎలా తయారు చేయాలో, API ఎలా పిలవాలో, స్థానిక సંગ્રహాన్ని ఎలా ఉపయోగించాలో మరియు మీ వెబ్సైట్ ప్రదర్శనను ఎలా కొలత చేయాలో మరియు మెరుగుపరచాలో పాఠాలు అందిస్తుంది.
|
||||
|
||||
మీరు ఎడ్జ్, క్రోమ్ మరియు ఫైర్ఫాక్స్లపై పనిచేసే బ్రౌజర్ ఎక్స్టెన్షన్ను నిర్మిస్తారు. ఇది ఒక చిన్న వెబ్సైట్ లాగా ఉండి, ఒక ప్రత్యేక పని కోసం రూపొందించబడినది, ఇచ్చిన ప్రాంతం యొక్క విద్యుత్ వినియోగం మరియు కార్బన్ తీవ్రత కోసం [C02 Signal API](https://www.co2signal.com)ని తనిఖీ చేస్తుంది, మరియు ఆ ప్రాంతం యొక్క కార్బన్ పాదముద్రపై చదువును ఇస్తుంది.
|
||||
|
||||
ఒక API కీ మరియు మండలం కోడ్ ఫారం లోకి ఇన్పుట్ చేసినప్పుడు, వినియోగదారు అవసరానికి అనుగుణంగా ఈ ఎక్స్టెన్షన్ను యాడ్ హాక్ పిలవవచ్చు, స్థానిక విద్యుత్ వినియోగాన్ని నిర్ణయించడానికి మరియు దీని ద్వారా, వినియోగదారుడి విద్యుత్ నిర్ణయాలను ప్రభావితం చేసే డేటాను అందించవచ్చు. ఉదాహరణకి, మీరు కట్టుబడి ఉన్న ప్రాంతంలో అధిక విద్యుత్ వినియోగ సమయంలో దుస్తులు ఆరగించే డ్రయర్ (కార్బన్ తీవ్ర కార్యకలాపం) నడిపించడాన్ని ఆలస్యంచేయడం ఉత్తమం కావచ్చు.
|
||||
|
||||
### అంశాలు
|
||||
|
||||
1. [బ్రౌజర్ గురించినవి](1-about-browsers/README.md)
|
||||
2. [ఫారాలు మరియు స్థానిక సాంఘ్రహణ](2-forms-browsers-local-storage/README.md)
|
||||
3. [పdorిత కార్యాలు మరియు ప్రదర్శన](3-background-tasks-and-performance/README.md)
|
||||
|
||||
### క్రెడిట్స్
|
||||
|
||||

|
||||
|
||||
## క్రెడిట్స్
|
||||
|
||||
ఈ వెబ్ కార్బన్ ట్రిగ్గర్ యొక్క ఆలోచన మైక్రోసాఫ్ట్ గ్రీన్ క్లౌడ్ అడ్వకసి జట్టు లీడ్ మరియు [గ్రీన్ ప్రిన్సిపల్స్](https://principles.green/) రచయిత అసిం హుస్సేన్ ద్వారా అందించబడింది. ఇది మొదటగా ఒక [వెబ్ సైట్ ప్రాజెక్ట్](https://github.com/jlooper/green).
|
||||
|
||||
బ్రౌజర్ ఎక్స్టెన్షన్ నిర్మాణం [అడెబోలా అడెనిరాన్ COVID ఎక్స్టెన్షన్](https://github.com/onedebos/covtension) ప్రభావితమైంది.
|
||||
|
||||
'dot' ఐకాన్ సిస్టమ్ వెనుక ఉన్న ఆలోచన కాలిఫోర్నియా ఉద్గారాల కోసం [ఎనర్జీ లోలిపాప్](https://energylollipop.com/) బ్రౌజర్ ఎక్స్టెన్షన్ యొక్క ఐకాన్ నిర్మాణం ద్వారా సూచించబడింది.
|
||||
|
||||
ఈ పాఠాలు ♥️ తో [జెన్ లూపర్](https://www.twitter.com/jenlooper) రాశారు.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**కార్యనిర్వాహక వ్యాఖ్య**:
|
||||
ఈ దస్త్రం AI అనువాద సేవ అయిన [Co-op Translator](https://github.com/Azure/co-op-translator) ద్వారా అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమెటెడ్ అనువాదాలలో దోషాలు లేదా అసమర్థతలు ఉండవచ్చు అని దయచేసి గ్రహించండి. మౌలిక దస్త్రం వారి స్వదేశీ భాషలోనే అధికారిక మూల్యాధారం కావాలి. ముఖ్యమైన సమాచారం కోసం, ప్రొఫెషనల్ మానవ అనువాదాన్ని సూచిస్తాము. ఈ అనువాదం వలన ఏర్పడిన ఏవైనా అవగాహన లోపాలు లేదా తప్పుదյուրుగా అర్థం చేసుకోవడంలో మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,43 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "fab4e6b4f0efcd587a9029d82991f597",
|
||||
"translation_date": "2026-01-08T15:58:08+00:00",
|
||||
"source_file": "5-browser-extension/solution/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# కార్బన్ ట్రిగ్గర్ బ్రౌజర్ ఎక్స్టెన్షన్: పూర్తైన కోడ్
|
||||
|
||||
tmrow యొక్క C02 సిగ్నల్ API ఉపయోగించి విద్యుత్ వినియోగాన్ని ట్రాక్ చేయడానికి, మీరు మీ బ్రౌజర్లోనే మీ ప్రాంతంలోని విద్యుత్ వినియోగం ఎంత ఎక్కువగా ఉందో గుర్తు చెప్పే రిమైండర్ కోసం బ్రౌజర్ ఎక్స్టెన్షన్ నిర్మించండి. ఈ ఎక్స్టెన్షన్ను అవసరానికి అనుగుణంగా ఉపయోగించడం ద్వారా, ఈ సమాచారంపై ఆధారపడి మీ కార్యకలాపాలపై నిర్ణయాలు తీసుకోవడానికి సహాయం అవుతుంది.
|
||||
|
||||

|
||||
|
||||
## మొదలు పెట్టడం
|
||||
|
||||
మీ computer లో [npm](https://npmjs.com) ఇన్స్టాల్ చేయబడివుండాలి. ఈ కోడ్ని మీ కంప్యూటర్లోని ఫోల్డర్లో డౌన్లోడ్ చేసుకోండి.
|
||||
|
||||
అన్ని అవసరమైన ప్యాకేజీలను ఇన్స్టాల్ చేయండి:
|
||||
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
webpack నుంచి ఎక్స్టెన్షన్ని బిల్డ్ చేయండి
|
||||
|
||||
```
|
||||
npm run build
|
||||
```
|
||||
|
||||
Edgeలో ఇన్స్టాల్ చేయడానికి, బ్రౌజర్ పెనెల్ లో టాప్ రైట్ కార్నర్లో ఉన్న 'మూడు డాట్' మెను ను ఉపయోగించి ఎక్స్టెన్షన్లు ప్యానెల్ కనుగొనండి. అక్కడి నుంచి, కొత్త ఎక్స్టెన్షన్ ని లోడ్ చేయడానికి 'Load Unpacked' ని ఎంచుకోండి. ప్రాంప్ట్ వద్ద 'dist' ఫోల్డర్ తెరవాలి, అప్పుడు ఎక్స్టెన్షన్ లోడ్ అవుతుంది. దీన్ని ఉపయోగించడానికి, CO2 Signal యొక్క APIకి API కీ కావాలి ([ఇక్కడ ఇమెయిల్ ద్వారా పొందండి](https://www.co2signal.com/) - ఈ పేజీలో మీ ఇమెయిల్ ఎంటర్ చేయండి) మరియు మీ ప్రాంతానికి అనుగుణమైన [కోడ్](http://api.electricitymap.org/v3/zones) ([Electricity Map](https://www.electricitymap.org/map) కొరకు) (ఉదాహరణకు బోస్టన్ లో నేను 'US-NEISO' ఉపయోగిస్తాను).
|
||||
|
||||

|
||||
|
||||
API కీ మరియు ప్రాంతం ఎక్స్టెన్షన్ ఇంటర్ఫేస్లో ఎంటర్ చేయగానే, బ్రౌజర్ ఎక్స్టెన్షన్ బారులోని రంగు ముద్ర (dot) మీ ప్రాంతం యొక్క ఎనర్జీ వినియోగాన్ని ప్రతిబింబించేలా మారుతుంది మరియు మీరు ఏ ఎనర్జీ-భారీ కార్యకలాపాలు చేయగలరో సూచన ఇస్తుంది. ఈ 'dot' సిస్టమ్ ఆలోచనను నాకు [Energy Lollipop ఎక్స్టెన్షన్](https://energylollipop.com/) నుంచి కేలిఫోర్నియా కాలుష్యం కొరకు ఇచ్చారు.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**అస్పష్టత**:
|
||||
ఈ పత్రం AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. సరైనతకు మేము ప్రయత్నిస్తూనే ఉన్నా, ఆటోమేటెడ్ అనువాదాలలో పొరబాటు లేదా లోపాలు ఉండవచ్చును అనేది తెలియజేయాలి. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించబడాలి. కీలక సమాచారానికి వృత్తిపరమైన మానవ అనువాదం సిఫారసు చేయబడుతుంది. ఈ అనువాదం వాడకంలో కలిగే ఏవైనా తప్పుల వల్ల మేము బాధ్యం వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,43 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "cbaf73f94a9ab4c680a10ef871e92948",
|
||||
"translation_date": "2026-01-08T16:09:31+00:00",
|
||||
"source_file": "5-browser-extension/solution/translation/README.es.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# కార్బన్ ట్రిగర్ బ్రౌజర్ విస్తరణ: పూర్తి కోడ్
|
||||
|
||||
tmrow C02 సిగ్నల్ API ను ఉపయోగించి విద్యుత్ వినియోగం ను ట్రాక్ చేయడానికి, మీ ప్రాంతంలో విద్యుత్ వినియోగంపై మీరు నేరుగా మీ బ్రౌజర్లో ఒక గుర్తింపు పొందడానికి బ్రౌజర్ విస్తరణను సృష్టించండి. ఈ తాత్కాలిక విస్తరణను ఉపయోగించడం ద్వారా మీరు ఈ సమాచారంపై ఆధారపడి మీ కార్యకలాపాల గురించి నిర్ణయాలు తీసుకోవడానికి సహాయం పొందుతారు.
|
||||
|
||||

|
||||
|
||||
## ప్రారంభించడం
|
||||
|
||||
మీ వద్ద [npm](https://npmjs.com) ఇన్స్టాల్ చేయబడాలి. ఈ కో드를 మీ కంప్యూటర్లోని ఒక ఫోల్డర్లో డౌన్లోడ్ చేసుకోండి.
|
||||
|
||||
అవసరమైన అన్ని ప్యాకేజీలు ఇన్స్టాల్ చేయండి:
|
||||
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
webpack నుండి విస్తరణను నిర్మించండి:
|
||||
|
||||
```
|
||||
npm run build
|
||||
```
|
||||
|
||||
Edge లో ఇన్స్టాల్ చేయడానికి, బ్రౌజర్ పైకోనంలో ఉన్న 'మూడు చుక్కలు' మెనూను ఉపయోగించి విస్తరణ ప్యానెల్ను కనుగొనండి. అక్కడ నుండి, కొత్త విస్తరణను లోడ్ చేయడానికి 'Unpacked load' ను ఎంచుకోండి. అడిగినప్పుడు 'dist' ఫోల్డర్ను తెరవండి మరియు విస్తరణ లోడ్ అవుతుంది. దీన్ని ఉపయోగించడానికి, CO2 Signal API కోసం API కీ ([ఈ పేజీలో మీ ఇమెయిల్ నమోదు చేయండి](https://www.co2signal.com/) - ఇమెయిల్ ద్వారా పొందండి) మరియు [ఎలక్ట్రిసిటీ మ్యాప్](https://www.electricitymap.org/map)కు అనుగుణంగా మీ ప్రాంత సూచిక కోడ్ ([http://api.electricitymap.org/v3/zones](http://api.electricitymap.org/v3/zones)) అవసరం (ఉదాహరణకు బోస్టన్లో నేను 'US-NEISO' ను ఉపయోగిస్తాను).
|
||||
|
||||

|
||||
|
||||
విస్థరణ ఇంటర్ఫేస్లో API కీ మరియు ప్రాంతం నమోదు చేసిన తర్వాత, విస్తరణ బార్లో రంగు బిందువు మీ ప్రాంత విద్యుత్ వినియోగాన్ని ప్రతిబింబిస్తుంది మరియు మీకు అధిక విద్యుత్ వినియోగ కార్యకలాపాల గురించి సూచన ఇస్తుంది. ఈ "పాయింట్ల" సిస్టమ్ వెనుక భావనని నాకు [Energy Lollipop విస్తరణ](https://energylollipop.com/) కల్పించింది, ఇది కాలిఫోర్నియాలోని ఎమిషన్స్ కోసం రూపొందించబడింది.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**అస్పష్టత**:
|
||||
ఈ దస్తావేజు AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వం కోసం ప్రయత్నించినప్పటికీ, ఆటోమేటిక్ అనువాదాల్లో తప్పిదాలు లేదా అసత్యతలు ఉండవచ్చు. మూల భాషలో ఉన్న అసలు దస్తావేజును అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారం కోసం పుణ్యనిపుణుల మానవ అనువాదం సిఫార్సు చేయబడింది. ఈ అనువాదం ఉపయోగిస్తున్నందున ఏవైనా తప్పేమన్నులు లేదా తప్పుదృష్టులకు మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,43 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "9361268ca430b2579375009e1eceb5e5",
|
||||
"translation_date": "2026-01-08T16:11:44+00:00",
|
||||
"source_file": "5-browser-extension/solution/translation/README.fr.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# Carbon Trigger బ్రౌజర్ ఎక్స్టెన్షన్: పూర్తి కోడ్
|
||||
|
||||
tmrow యొక్క CO2 సిగ్నల్ API ఉపయోగించి విద్యుత్ వినియోగాన్ని ట్రాక్ کرنے కోసం, మీరు మీ ప్రాంతంలోని విద్యుత్ వినియోగంపై నేరుగా మీ బ్రౌజర్లో ఒక రిమైండర్ ఉండేలా ఒక బ్రౌజర్ ఎక్స్టెన్షన్ సృష్టించండి. ఈ ప్రత్యేక ఎక్స్టెన్షన్ ఉపయోగించడం మీ కార్యకలాపాలను ఈ సమాచారంపై ఆధారపడి నిర్ణయం తీసుకోవడంలో మీకు సహాయం చేస్తుంది.
|
||||
|
||||

|
||||
|
||||
## ప్రారంభించండి
|
||||
|
||||
మీకు [npm](https://npmjs.com) ఇన్స్టాల్ చేసిన ఉండాలి. ఈ కోడ్ యొక్క ఒక కాపీని మీ కంప్యూటర్లోని ఒక ఫోల్డర్లో డౌన్లోడ్ చేసుకోండి.
|
||||
|
||||
అన్ని అవసరమైన ప్యాకేజీలను ఇన్స్టాల్ చేయండి:
|
||||
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
webpack నుండి ఎక్స్టెన్షన్ని రూపొందించండి
|
||||
|
||||
```
|
||||
npm run build
|
||||
```
|
||||
|
||||
Edgeలో ఇన్స్టాల్ చేయాలంటే, బ్రౌజర్ యొక్క పైభాగం కుడి మూలలోని 'మూడు బిందువులు' మెనూలోనికి వెళ్లండి మరియు ఎక్స్టెన్షన్ ప్యానెల్ కనుగొనండి. అక్కడ నుండి, 'అన్జిప్ చేసిన ఎక్స్టెన్షన్ లోడ్ చేయండి'ని ఎంచుకుని కొత్త ఎక్స్టెన్షన్ను లోడ్ చేయండి. ప్రాంప్ట్ వచ్చినప్పుడు 'dist' ఫోల్డర్ను తెరవండి, ఎక్స్టెన్షన్ లోడ్ అవుతుంది. దీన్ని ఉపయోగించడానికి, CO2 Signal API కోసం API కీ అవసరం ([ఇక్కడ ఇమెయిల్ ద్వారా పొందండి](https://www.co2signal.com/) - ఈ పేజీలో మీ ఇమెయిల్ అడగండి) మరియు [ఎలక్ట్రిసిటీ మ్యాప్](https://www.electricitymap.org/map) కి సంబంధించిన [మీ ప్రాంతానికి కోడ్](http://api.electricitymap.org/v3/zones) (ఉదాహరణకు బోస్టన్లో నేను 'US-NEISO' ఉపయోగిస్తున్నాను).
|
||||
|
||||

|
||||
|
||||
API కీ మరియు ప్రాంతం ఎక్స్టెన్షన్ ఇంటర్ఫేస్లో ఎంటర్ చేసిన తర్వాత, బ్రౌజర్ ఎక్స్టెన్షన్ బార్లోని రంగు పాయింట్ మీ ప్రాంత విద్యుత్ వినియోగాన్ని ప్రతిబింబించేలా మారుతుంది మరియు ఏ ఎనర్జీ-ఇంతా కార్యకలాపాలు చేయడం మీకు సరిగా ఉండొచ్చో సూచిస్తుంది. ఈ 'పాయింట్లు' వ్యవస్థ వెనుక కాన్సెప్ట్ నాకు కాలిఫోర్నియా ఉద్గారాల కొరకు [Energy Lollipop ఎక్స్టెన్షన్](https://energylollipop.com/) ద్వారా అందించబడింది.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**డిస్క్లెయిమర్**:
|
||||
ఈ документа AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మనం ఖచ్చితత్వం కోసం ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాలలో లోపాలు లేదా అసమర్ధతలు ఉండవచ్చు. మూలపత్రం native భాషలోని డాక్యుమెంట్ అధికారిక మూలంగా భావించాలి. కీలక సమాచారం కోసం, ప్రొఫెషనల్ మానవ అనువాదం సూచించబడుతుంది. ఈ అనువాదం ఉపయోగించడంవల్ల ఏర్పడిన ఏదైనా తప్పుదోవ పట్టుకోవడం లేదా తార్కిక తప్పుదోవలకి మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,43 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "dd58ae1b7707034f055718c1b68bc8de",
|
||||
"translation_date": "2026-01-08T16:07:05+00:00",
|
||||
"source_file": "5-browser-extension/solution/translation/README.hi.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# కార్బన్ ట్రిగ్గర్ బ్రౌజర్ ఎక్స్టెన్షన్: పూర్తి చేయబడిన కోడ్
|
||||
|
||||
విద్యుత్ వినియోగాన్ని ట్రాక్ చేయడానికి tmrow యొక్క CO2 సిగ్నల్ API ఉపయోగించడం, ఒక బ్రౌజర్ ఎక్స్టెన్షన్ రూపొందించడం, తద్వారా మీ బ్రౌజర్లో మీ ప్రాంతంలో విద్యుత్ వినియోగం ఎంత తీవ్రమో తెలుసుకోవడానికి ఒక రిమైండర్ పొందవచ్చు. ఈ తాత్కాలిక ఎక్స్టెన్షన్ను ఉపయోగించడం ద్వారా మీరు ఈ సమాచారంపై ఆధారపడి మీ కార్యకలాపాలపై నిర్ణయం తీసుకోవడంలో సహాయం పొందుతారు.
|
||||
|
||||

|
||||
|
||||
## ప్రారంభించడం
|
||||
|
||||
మీరు [npm](https://npmjs.com) ఇన్స్టాల్ చేసుకోవాలి. మీ కంప్యూటర్లో ఒక ఫొల్డర్లో ఈ కోడ్ యొక్క నకలు డౌన్లోడ్ చేయండి.
|
||||
|
||||
అన్ని అవసరమైన ప్యాకేజీలు ఇన్స్టాల్ చేయండి:
|
||||
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
వెబ్ప్యాక్ తో ఎక్స్టెన్షన్ రూపొందించండి
|
||||
|
||||
```
|
||||
npm run build
|
||||
```
|
||||
|
||||
ఎడ్జ్ లో ఇన్స్టాల్ చేసుకోవడానికి, బ్రౌజర్ యొక్క పై భాగం కుడి మూనలో 'మూడు డాట్స్' మెనూ ఉపయోగించి ఎక్స్టెన్షన్ ప్యానల్ కనుగొనండి. అక్కడ నుండి, కొత్త ఎక్స్టెన్షన్ లోడ్ చేయడానికి 'లోడ్ అన్ప్యాక్' ఎంచుకోండి. ప్రాంప్ట్లో 'dist' ఫొల్డర్ ఓపెన్ చేయండి, ఎక్స్టెన్షన్ లోడ్ అయ్యిపోతుంది. దీన్ని ఉపయోగించడానికి మీకు CO2 సిగ్నల్ API కోసం ([ఇక్కడ ఇమెయిల్ ద్వారా పొందండి](https://www.co2snal.com/) ఒక API కీ అవసరం - ఈ పేజీలో బాక్స్లో మీ ఇమెయిల్ ఎంటర్ చేయండి) మరియు [మీ ప్రాంతానికి కోడ్](http://api.electricitymap.org/v3/zones) [ఎలక్ట్రిసిటీ మ్యాప్](https://www.electricitymap.org/map) (ఉదాహరణకు, బోస్టన్లో, నేను 'US-NEISO' ఉపయోగిస్తాను) అవసరం.
|
||||
|
||||

|
||||
|
||||
ఒకసారి API కీ మరియు ప్రాంతం ఎక్స్టెన్షన్ ఇంటర్ఫేస్లో ఎంటర్ చేసిన తర్వాత, బ్రౌజర్ ఎక్స్టెన్షన్ బార్లోని రంగురంగుల డాట్ మీ ప్రాంతపు విద్యుత్ వినియోగాన్ని ప్రతిబింబించడానికి మారుతుంది మరియు మీరు మీ ప్రదర్శన ప్రకారం బహిరంగ ఉత్పత్తులు ఏవి ఎక్కువ ఉత్సర్జన కలిగించవచ్చో సూచిస్తుంది. ఈ 'డాట్' వ్యవస్థ వెనుక భావన నాకు కాలిఫోర్నియా ఉత్సర్జన కోసం [ఎనర్జీ లాలీపాప్ ఎక్స్టెన్షన్](https://energylollipop.com/) నుండి వచ్చింది.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**నిరాకరణ**:
|
||||
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదಿಸಲಾಗಿದೆ. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో తప్పులు లేదా నిర్ధారింపబడని అంశాలు ఉండవచ్చు అని దయచేసి గమనించండి. అసలు పత్రం దాని స్థానిక భాషలో ఉన్న దానిని అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, వృత్తిపరమైన మానవ అనువాదం సిఫారసు చేయబడుతుంది. ఈ అనువాదం వినియోగం వల్ల ఏర్పడిన ఏదైనా అపభ్రంశాలు లేదా తప్పుగా అర్థం చేసుకుం పులు పట్ల మేము బాధ్యులము కాదు.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,43 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "9a6b22a2eff0f499b66236be973b24ad",
|
||||
"translation_date": "2026-01-08T16:17:14+00:00",
|
||||
"source_file": "5-browser-extension/solution/translation/README.it.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# బ్రౌజర్ ఇది Carbon Trigger: ప్రారంభించడానికి కోడ్
|
||||
|
||||
ప్రాంతంలోని విద్యుత్ వినియోగాన్ని బ్రౌజర్లోనే నేరుగా రిమైండర్గా పొందుటకు tmrow యొక్క Signal C02 API ఉపయోగించి బ్రౌజర్ ఎక్స్టెన్షన్ రూపొందించబడుతుంది. ఈ ప్రత్యేకమైన ఎక్స్టెన్షన్ ఉపయోగించడం ద్వారా ఈ సమాచారంతో మీ కార్యకలాపాలను మూల్యాంకనం చేయడం సహాయపడుతుంది.
|
||||
|
||||

|
||||
|
||||
## ప్రారంభించడానికి
|
||||
|
||||
[npm](https://npmjs.com) ఇన్స్టాల్ చేయబడిన అవసరం. ఈ కోడ్ యొక్క ఒక ప్రతిని మీ కంప్యూటర్లోని ఒక ఫోల్డర్లో డౌన్లోడ్ చేసుకోండి.
|
||||
|
||||
అన్ని అవసరమైన ప్యాకేజీలను ఇన్స్టాల్ చేయండి:
|
||||
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
webpack నుండి ఎక్స్టెన్షన్ను సృష్టించండి
|
||||
|
||||
```
|
||||
npm run build
|
||||
```
|
||||
|
||||
Edge లో ఇన్స్టాల్ చేసుకోవడానికి, బ్రౌజర్ పైవైపు కుడి మూలలో ఉండే "మూడు పాయింట్లు" మెనూను ఉపయోగించి ఎక్స్టెన్షన్స్ ప్యానెల్ ను కనుగొనండి. యెడ్జ్ డెవలపర్ మోడ్ (తక్కువ వామభాగంలో) ఇన్స్టాల్చలేదు అయితే ఆన్ చేయండి. కొత్త ఎక్స్టెన్షన్ లోడ్ చేసేందుకు "అన్జిప్ చేయబడని లోడ్" ఎంపికను ఎంచుకోండి. కమాండ్ ప్రాంప్ట్ లో "dist" ఫోల్డర్ ఓపెన్ చేసి ఎక్స్టెన్షన్ లోడ్ చేయండి. దాన్ని ఉపయోగించడానికి, CO2 Signal API కోసం API కీ అవసరం (తర్వాత ఇమెయిల్ ద్వారా [ఇక్కడ పొందవచ్చు](https://www.co2signal.com/) - ఈ పేజీలో మీ ఇమెయిల్ టైప్ చేయండి) మరియు [విద్యుత్ మాపింగ్కోడ్](http://api.electricitymap.org/v3/zones) అవసరం, అది [విద్యుత్ మ్యాప్](https://www.electricitymap.org/map) కి అనుగుణంగా ఉంటుంది (బోస్టన్లో ఉదాహరణకు "US-NEISO").
|
||||
|
||||

|
||||
|
||||
API కీ మరియు ప్రాంతం ఎక్స్టెన్షన్ ఇంటర్ఫేస్లో ఎంటర్ చేసిన తర్వాత, బ్రౌజర్ ఎక్స్టెన్షన్ బార్లో రంగు పడ్డ పాయింట్ ఆ ప్రాంత విద్యుత్ వినియోగాన్ని ప్రతిబింబించడానికి మారుతుంది మరియు అధిక శక్తి వినియోగ కార్యకలాపాలు ఎప్పుడు చేయడం అనుకూలమో సూచిస్తుంది. ఈ "పాయింట్లు" ఆధారిత వ్యవస్థ భావన కాలిఫోర్నియా ఉద్గారాల కొరకు [Energy Lollipop ఎక్స్టెన్షన్](https://energylollipop.com/) నుండి ప్రేరణ పొందింది.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**డిస్క్లైమర్**:
|
||||
ఈ డాక్యుమెంట్ AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ద్వారా అనువదించబడింది. మేము ఖచ్చితత్వం కోసం ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా అపజ్ఞాతలు ఉండవచ్చు. మూల డాక్యుమెంట్ తన స్థానిక భాషలోని అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారం కోసం, ప్రొఫెషనల్ మానవ అనువాదం చేయించడం మంచిది. ఈ అనువాదం వలన కలిగే ఏమైనా అపర్థాలు లేదా భ్రమలకు మేము బాధ్యులు కురుకోము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,43 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "3f5e6821e0febccfc5d05e7c944d9e3d",
|
||||
"translation_date": "2026-01-08T16:13:37+00:00",
|
||||
"source_file": "5-browser-extension/solution/translation/README.ja.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# కార్బన్ ట్రిగ్గర్ బ్రౌజర్ విస్తరణ: పూర్తయిన కోడ్
|
||||
|
||||
tmrow యొక్క C02 సిగ్నల్ API ఉపయోగించి విద్యుత్ వినియోగాన్ని ట్రాక్ చేయడానికి, మీ ప్రాంతంలో విద్యుత్ వినియోగం ఎంత ఎక్కువగా ఉందో బ్రౌజర్లో రిమైండర్గా చూపించే బ్రౌజర్ విస్తరణను నిర్మించండి. ఈ విస్తరణను ఆడ్హాక్గా ఉపయోగించడం ద్వారా, ఈ సమాచారాన్ని ఆధారంగా మీ చర్యలను నిర్ణయించుకోవచ్చు.
|
||||
|
||||

|
||||
|
||||
## ప్రారంభం
|
||||
|
||||
[npm](https://npmjs.com) ఇన్స్టాల్ చేయబడిన ఉండాలి. ఈ కోడ్ ప్రతిని మీ కంప్యూటర్లోని ఫోల్డర్కు డౌన్లోడ్ చేసుకోండి.
|
||||
|
||||
అవసరమైన అన్ని ప్యాకేజీలను ఇన్స్టాల్ చేయండి.
|
||||
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
webpack నుండి విస్తరణను నిర్మించండి.
|
||||
|
||||
```
|
||||
npm run build
|
||||
```
|
||||
|
||||
Edgeలో ఇన్స్టాల్ చేయడానికి, బ్రౌజర్ మేనూ లో పై దాయి “3 డాట్స్” క్లిక్ చేసి “విస్తరణలు” ప్యానెల్ను కనుగొనండి. అక్కడ నుండి “Load Unpacked” ను ఎంచుకుని కొత్త విస్తరణను లోడ్ చేయండి. ప్రాంప్ట్ లో “dist” ఫోల్డర్ను తెరిచి విస్తరణను లోడ్ చేయండి. ఉపయోగించడానికి, CO2 సిగ్నల్ API యొక్క API కీ ([ఇక్కడ ఇమెయిల్ ద్వారా పొందండి](https://www.co2signal.com/) - ఈ పేజీ బాక్స్ లో మీ ఇమెయిల్ ఎంటర్ చేయండి) మరియు [Electricity Map](https://www.electricitymap.org/map) అనుసరించి మీ ప్రాంతానికి సంబంధించిన [కోడ్](http://api.electricitymap.org/v3/zones) అవసరం (ఉదాహరణకు బోస్టన్లో 'US-NEISO' ఉపయోగిస్తారు).
|
||||
|
||||

|
||||
|
||||
API కీ మరియు ప్రాంతం ని విస్తరణ ఇంటర్ఫేస్ లో ఎంటర్ చేస్తే, బ్రౌజర్ విస్తరణ బార్లో చూపించే రంగు డాట్ మారుతుంది, ఇది మీ ప్రాంతంలో విద్యుత్ వినియోగాన్ని ప్రతిబింబిస్తుంది, మరియు ఏ రకం శక్తి అవసరమయ్యే కార్యకలాపాలను చేయడం సరికదనేది తెలియజేస్తుంది. ఈ “డాట్” సిస్టమ్ కాన్సెప్ట్ను నాకు కేలిఫోర్నియాలో ఉద్గారాల కోసం [Energy Lollipop extension](https://energylollipop.com/) ద్వారా అందింది.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**అంగీకారం**:
|
||||
ఈ పత్రం AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము సరిగా ఉండడానికి యత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాలలో పొరపాట్లు లేదా అచ్చత్యాలలో తేడాలు ఉండొచ్చు. స్వదేశీ భాషలో ఉన్న మౌలిక పత్రాన్ని అధికారిక మూలంగా పరిగణించాలి. కీలక సమాచారం కోసం, వృత్తిపరమైన మానవ అనువాదాన్ని సిఫార్సు చేస్తున్నాము. ఈ అనువాద ఉపయోగం వల్ల కలగవచ్ఛు ఏప్రకటనలు లేదా తప్పు అర్థం చేసుకోవడాలకు మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,43 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "21b364c158c8e4f698de65eeac16c9fe",
|
||||
"translation_date": "2026-01-08T16:15:20+00:00",
|
||||
"source_file": "5-browser-extension/solution/translation/README.ms.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# కార్బన్ ట్రిగ్గర్ బ్రౌజర్ విస్తరణ: పూర్తి కోడ్
|
||||
|
||||
CO2 సూచన API tmrow ఉపయోగించి విద్యుత్ వినియోగాన్ని గుర్తించడానికి, మీ ప్రాంతంలో విద్యుత్ వినియోగం ఎంత బరువైనదో మీ బ్రౌజర్లోనే అభియోగాలను పొందేందుకు బ్రౌజర్ విస్తరణను నిర్మించండి. ఈ విస్తరణను ప్రత్యేకంగా ఉపయోగించడం ద్వారా మీరు ఈ సమాచారాన్ని ఆధారం చేసుకుని మీ కార్యకలాపాలపై నిర్ణయాలు తీసుకోవడంలో సహాయం పొందగలరు.
|
||||
|
||||

|
||||
|
||||
## ఇక్కడి నుండి ప్రారంభించండి
|
||||
|
||||
మీకు [npm] (https://npmjs.com) ఇన్స్టాల్ చేయాలి. ఈ కోడ్ కాపీని మీ కంప్యూటర్లోని ఒక ఫోల్డర్లో డౌన్లోడ్ చేయండి.
|
||||
|
||||
అవసరమైన అన్ని ప్యాకేజీలను ఇన్స్టాల్ చేయండి:
|
||||
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
webpack తో విస్తరణను నిర్మించండి
|
||||
|
||||
```
|
||||
npm run build
|
||||
```
|
||||
|
||||
Edge లో ఇన్స్టాల్ చేయడానికి, బ్రౌజర్ పై భాగం కుడి మూలలో ఉన్న 'మూడు డాట్లు' మెనూ ద్వారా ఎక్స్టెన్షన్స్ ప్యానెల్ను కనుగొనండి. అక్కడ నుండి, 'Load Unpacked' ఎంచుకుని కొత్త విస్తరణను లోడ్ చేయండి. dist ఫోల్డర్ను ఓపెన్ చేస్తే విస్తరణ లోడ్ అవుతుంది. దీన్ని ఉపయోగించాలంటే, CO2 సూచన APIకి API కీ అవసరం ([ఇక్కడ [ఈ-మెయిల్ ద్వారా పొందండి](https://www.co2signal.com/) - ఈ పేజీపై మీ ఈ-మెయిల్ బాక్స్లో నమోదు చేయండి) మరియు [మీ ప్రాంతానికి సరిపోయే కోడ్](http://api.electricitymap.org/v3/zones) ([Electicity Map](https://www.electricitymap.org/map) లో చూడవచ్చు) అవసరం (బోస్టన్లో ఉదాహరణకు 'US-NEISO' ను నేను ఉపయోగిస్తున్నాను).
|
||||
|
||||

|
||||
|
||||
API కీ మరియు ప్రాంతం ఒకసారి విస్తరణ ఇంటర్ఫేస్లో నమోదు చేయబడితే, బ్రౌజర్ ఎక్స్టెన్షన్ బార్ లో రంగురంగుల డాట్ మీ ప్రాంత విద్యుత్ వినియోగాన్ని ప్రతిబింబిస్తుంది మరియు మీకు తగిన బరువు కలిగిన కార్యకలాపాలకు సూచన కల్పిస్తుంది. ఈ 'డాట్' వ్యవస్థ వెనుక భావన నాకు California కోసం [Energy Lollipop బ్రౌజర్ విస్తరణ](https://energylollipop.com/) వారు ఇచ్చారు.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**స్పష్టం**:
|
||||
ఈ పత్రికను AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము సరిగా ఉండాలని ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో తప్పులు లేదా లోపాలు ఉండవచ్చు. అసలు పత్రికను స్థానిక భాషలోనే అధికారిక మూలంగా పరిగణించాలి. కీలకమైన సమాచారానికి పుష్కలమైన మానవ అనువాదాన్ని సూచిస్తాము. ఈ అనువాదం కారణంగా వచ్చిన ఏవైనా అపార్థాలు లేదా తప్పుగా అర్ధం చేసుకున్న కారణంగా మేము బాధ్యతారహితులు.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,43 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "26fd39046d264ba185dcb086d3a8cf3e",
|
||||
"translation_date": "2026-01-08T16:00:32+00:00",
|
||||
"source_file": "5-browser-extension/start/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# కార్బన్ ట్రిగ్గర్ బ్రౌజర్ ఎక్స్టెన్షన్: స్టార్టర్ కోడ్
|
||||
|
||||
tmrow యొక్క CO2 సిగ్నల్ APIని ఉపయోగించి విద్యుత్ వినియోగాన్ని ట్రాక్ చేయడానికి, మీ ప్రాంతం విద్యుత్ వినియోగం ఎంత భారీగా ఉందో మీ బ్రౌజర్లోనే ఒక రిమైండర్ కలిగి ఉండేలా బ్రౌజర్ ఎక్స్టెన్షన్ని నిర్మించండి. ఈ ఎక్స్టెన్షన్ని అవసరమైనప్పుడు ఉపయోగించడం దాని ఆధారంగా మీ కార్యకలాపాలపై నిర్ణయాలు తీసుకోవడంలో సహాయపడుతుంది.
|
||||
|
||||

|
||||
|
||||
## ప్రారంభం
|
||||
|
||||
మీ కంప్యూటర్లో [npm](https://npmjs.com) ఇన్స్టాల్ చేయబడినదిగా ఉండాలి. ఈ కోడ్ను మీ కంప్యూటర్లో ఒక ఫోల్డర్కు డౌన్లోడ్ చేసుకోండి.
|
||||
|
||||
అవసరమైన అన్ని ప్యాకేజీలను ఇన్స్టాల్ చేయండి:
|
||||
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
webpack నుండి ఎక్స్టెన్షన్ని నిర్మించండి
|
||||
|
||||
```
|
||||
npm run build
|
||||
```
|
||||
|
||||
Edgeలో ఇన్స్టాల్ చేయడానికి, బ్రౌజర్ యొక్క పై కుడి మూలలో ఉన్న 'మూడు డాట్' మెనూలను ఉపయోగించి ఎక్స్టెన్షన్స్ ప్యానెల్ కనుగొనండి. అక్కడి నుండి, కొత్త ఎక్స్టెన్షన్ని లోడ్ చేయడానికి 'Load Unpacked' ను ఎంచుకోండి. ప్రాంప్ట్ వద్ద 'dist' ఫోల్డర్ని ఓపెన్ చేయండి, ఆ ఎక్స్టెన్షన్ లోడ్ అవుతుంది. దీన్ని ఉపయోగించేందుకు, CO2 Signal యొక్క APIకి ఒక API కీ అవసరం ([ఇక్కడ ఇమెయిల్ ద్వారా పొందండి](https://www.co2signal.com/) - ఈ పేజీలో మీ ఇమెయిల్ పెట్టండి) మరియు [ఎలక్ట్రిసిటీ మ్యాప్](https://www.electricitymap.org/map) కు అనుగుణంగా మీ ప్రాంతానికి సంబంధించిన [కోడ్](http://api.electricitymap.org/v3/zones) (ఉదాహరణకు బోస్టన్ లో నేను 'US-NEISO' ఉపయోగిస్తాను).
|
||||
|
||||

|
||||
|
||||
API కీ మరియు ప్రాంతం ఎక్స్టెన్షన్ ఇంటర్ఫేస్లో ఇన్పుట్ చేసిన వెంటనే, బ్రౌజర్ ఎక్స్టెన్షన్ బార్లో ఉన్న రంగు డాట్ మీ ప్రాంతం యొక్క శక్తి వినియోగాన్ని ప్రతిబింబించేలా మారుతుంది మరియు ఎక్కువ శక్తి ఎక్కువగా ఉపయోగించే కార్యకలాపాలు మీకు అనుకూలంగా ఉండే సూచన ఇస్తుంది. ఈ 'డాట్' సిస్టమ్ వెనుక సంకల్పాన్ని నాకు [Energy Lollipop ఎక్స్టెన్షన్](https://energylollipop.com/) (కాలిఫోర్నియా ఉద్గారాల కొరకు) ఇచ్చింది.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**డిస్క్లెయిమర్**:
|
||||
ఈ డాక్యుమెంట్ను AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటిక్ అనువాదాల్లో తప్పులు లేదా అపార్ధాలు ఉండవచ్చు అని గమనించండి. అసలు డాక్యుమెంట్ దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించబడాలి. ముఖ్యమైన సమాచారం కోసం, ప్రొఫెషనల్ انسانی అనువాదాన్ని చేపట్టడం ఉత్తమం. ఈ అనువాదం వాడుక వల్ల ఏర్పడిన ఏవైనా తప్పుదారులు లేదా అపార్థాల పరంగా మేము బాధ్యులు కము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,83 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "87cd43afe5b69dbbffb5c4b209ea6791",
|
||||
"translation_date": "2026-01-08T13:47:07+00:00",
|
||||
"source_file": "6-space-game/2-drawing-to-canvas/assignment.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# అసైన్మెంట్: కాన్వాస్ APIని అన్వేషించండి
|
||||
|
||||
## నేర్చుకునే ఉద్దేశాలు
|
||||
|
||||
ఈ అసైన్మెంట్ను పూర్తి చేయడం వలన, మీరు కాన్వాస్ API పాఠాలపై మీ అవగాహనను ప్రదర్శించి, జావాస్క్రిప్ట్ మరియు HTML5 కాన్వాస్ ఉపయోగించి దృశ్య పదార్థాలను సృజనాత్మక సమస్య పరిష్కరణతో నిర్మించగలుగుతారు.
|
||||
|
||||
## సూచనలు
|
||||
|
||||
మీకు ఆసక్తి ఉన్న కాన్వాస్ API యొక్క ఒక అంశాన్ని ఎంచుకుని దాని చుట్టూ ఆసక్తికరమైన దృశ్య ప్రాజెక్టును సృష్టించండి. ఈ అసైన్మెంట్ మీరు నేర్చుకున్న డ్రాయింగ్ సామర్థ్యాలతో ప్రయోగల్ని ప్రోత్సహిస్తుంది, మీదైనదని కొంతమేరతో ఏదైనా నిర్మించండి.
|
||||
|
||||
### మీరు స్ఫూర్తి పొందడానికి ప్రాజెక్ట్ ఆలోచనలు
|
||||
|
||||
**జ్యామితీయ నమూనాలు:**
|
||||
- **సృష్టించండి** యాదృచ్చిక స్థానాల ద్వారా చమకబరిచే నక్షత్రాల గెలాక్సీని
|
||||
- **డిజైన్ చేయండి** పునరావృత జ్యామితీయ ఆకృతులతో ఆసక్తికరమైన వంటకాన్ని
|
||||
- **నిర్మించండి** తిప్పుకునే, రంగురంగుల నమూనాలతో కలైడోస్కోప్ ప్రభావాన్ని
|
||||
|
||||
**అంతర్రియ అంశాలు:**
|
||||
- **ఉన్నత పరిమాణం** మౌస్ కదలికలకు స్పందించే డ్రాయింగ్ పరికరాన్ని అభివృద్ధి చేయండి
|
||||
- **అమలు చేయండి** క్లిక్ చేసినప్పుడు రంగు మారే ఆకృతులను
|
||||
- **రూపకల్పన చేయండి** మధ్యలో కదలే అంశాలతో సరళమైన యానిమేషన్ లూప్
|
||||
|
||||
**గేమ్-సంబంధిత గ్రాఫిక్స్:**
|
||||
- **నిర్మించండి** స్పేస్ గేమ్ కోసం స్క్రోలింగ్ బ్యాక్గ్రౌండ్
|
||||
- **తయారు చేయండి** పేలుళ్లు లేదా మాయా పాఠాలతో పార్టికల్ ప్రభావాలు
|
||||
- **సృష్టించండి** బహు ఫ్రేమ్లతో యానిమేటెడ్ స్ప్రైట్లు
|
||||
|
||||
### అభివృద్ధి మార్గదర్శకాలు
|
||||
|
||||
**అన్వేషణ మరియు స్ఫూర్తి:**
|
||||
- **సందర్శించండి** CodePen లో సృజనాత్మక కాన్వాస్ ఉదాహరణలను (స్ఫూర్తికి, కాపీ చెయ్యకండి)
|
||||
- **అభ్యాసించండి** [Canvas API డాక్యుమెంటేషన్](https://developer.mozilla.org/docs/Web/API/Canvas_API)లో అదనపు పద్ధతులు
|
||||
- **పరీక్షించండి** వివిధ డ్రాయింగ్ ఫంక్షన్లు, రంగులు, యానిమేషన్లను
|
||||
|
||||
**సాంకేతిక అవసరాలు:**
|
||||
- **వాడండి** సరైన కాన్వాస్ సెటప్తో `getContext('2d')`
|
||||
- **సమావేశపరచండి** మీ దృష్టిని వివరించే అర్థవంతమైన వ్యాఖ్యానాలను
|
||||
- **పరీక్షించండి** మీ కోడ్ ను తప్పులేకుండా నడవడానికి
|
||||
- **అమలు చేయండి** ఆధునిక జావాస్క్రిప్ట్ సింటాక్స్ (const/let, arrow functions)
|
||||
|
||||
**సృజనాత్మక వ్యక్తీకరణ:**
|
||||
- **కేంద్రీకరించండి** ఒక కాన్వాస్ API ఫీచర్ పై కానీ దీని లోతుగా అన్వేషించండి
|
||||
- **జోడించండి** మీ స్వంత సృజనాత్మక ముడి మెలసిన ప్రాజెక్టును వ్యక్తిగతంగా తీర్చిదిద్దండి
|
||||
- **గమనించండి** మీ సృష్టి పెద్ద అప్లికేషన్ భాగంగా మారగలిగితే ఎలా ఉంటుంది
|
||||
|
||||
### సమర్పణ మార్గదర్శకాలు
|
||||
|
||||
మీ పూర్తి ప్రాజెక్టును ఒకే HTML ఫైల్గా ఎంబెడెడ్ CSS మరియు జావాస్క్రిప్ట్ తో లేదా వేర్వేరు ఫైల్లుగా ఫోల్డర్లో సమర్పించండి. మీ సృజనాత్మక ఎంపికలు మరియు మీరు అన్వేషించిన కాన్వాస్ API ఫీచర్లపై క్షుద్ర వ్యాఖ్యా లను చేర్చండి.
|
||||
|
||||
## రుబ్రిక్
|
||||
|
||||
| ప్రమాణాలు | ఉత్తమ | సరిపోతుంది | మెరుగుదల అవసరం |
|
||||
|----------|-----------|----------|-------------------|
|
||||
| **సాంకేతిక అమలు** | కాన్వాస్ APIను సృజనాత్మకంగా అనేక ఫీచర్లతో ఉపయోగించి, కోడ్ తప్పులేకుండా నడిచింది, ఆధునిక జావాస్క్రిప్ట్ సింటాక్స్ ఉపయోగించబడింది | కాన్వాస్ API సరిగా ఉపయోగించబడింది, కోడ్ లో చిన్న సమస్యలతో పని చేసింది, ప్రాథమిక అమలు | కాన్వాస్ API ప్రయత్నం అయినప్పటికీ కోడ్ లో తప్పులు లేదా అమలు కాలేదు |
|
||||
| **సృజనాత్మకత మరియు రూపకల్పన** | అత్యుత్తమ ఒరిజినల్ భావనతో మెరిసే దృశ్య గమనాన్ని కలిగి ఉంది, ఎంచుకున్న కాన్వాస్ ఫీచర్ లో లోతైన అన్వేషణ చూపించినది | కొన్ని సృజనాత్మక అంశాలతో కాన్వాస్ ఫీచర్లకు మంచి వినియోగం, బలమైన దృశ్య ఫలితం | కనీసమాత్ర సృజనాత్మకత లేదా దృశ్య ఆకర్షణతో ప్రాథమిక అమలు |
|
||||
| **కోడ్ నాణ్యత** | బాగా ఏర్పాటు చేసిన, వ్యాఖ్యానాలతో కూడిన కోడ్ ఉత్తమ సాధన పద్ధతులను పాటిస్తుంది, సమర్థవంతమైన అల్గోరిథమ్లు | స్వచ్ఛమైన కోడ్ కొంత వ్యాఖ్యలతో, ప్రాథమిక కోడింగ్ ప్రమాణాలు పాటిస్తుంది | కోడ్ లో ఏర్పాటు లేకపోవడం, తక్కువ వ్యాఖ్యలు, సమర్థవంతంకాకపోవడం |
|
||||
|
||||
## పునరాలోచన ప్రశ్నలు
|
||||
|
||||
మీ ప్రాజెక్టును పూర్తిచేసిన తర్వాత ఈ ప్రశ్నలను పరిగణించండి:
|
||||
|
||||
1. **మీరు ఎంచుకున్న కాన్వాస్ API ఫీచర్ ఏమిటి మరియు ఎందుకు?**
|
||||
2. **మీ ప్రాజెక్టును నిర్మించేటప్పుడు మీరు ఎదురైన సవాళ్ళు ఏంటి?**
|
||||
3. **ఈ ప్రాజెక్టును పెద్ద అప్లికేషన్ లేదా గేమ్ గా ఎలా పొడిగించగలరని మీరు భావిస్తున్నారు?**
|
||||
4. **మీ తరువాత ఏ ఇతర కాన్వాస్ API ఫీచర్లను అన్వేషించాలని మీరు కోరుకుంటున్నారు?**
|
||||
|
||||
> 💡 **ప్రో టిప్**: సరళంగా ప్రారంభించి దశలవారీగా సంక్లిష్టత జోడించండి. బాగా అమలైన సరళమైన ప్రాజెక్టు సరిగా పనిచేయని అధిక ఆశయంతో కూడుకున్న ప్రాజెక్టు కంటే మెరుగైనది!
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**స్వల్ప బాధ్యత రద్దు**:
|
||||
ఈ దస్తావేజు AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ద్వారా అనువాదం చేయబడింది. మనం నిరంతరం సరియైన అనువాదం కోసం ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా అసమర్థతలు ఉండవచ్చు అని దయచేసి గమనించండి. ఈ భాషలో ఉన్న అసలు దస్తావేజును అథారిటీగా పరిగణించాలి. ముఖ్యమైన సమాచారం కొరకు నిపుణుల చేత మనిషి అనువాద సేవలను సిఫార్సు చేస్తున్నాము. ఈ అనువాద ఉపయోగం కారణంగా కలిగిన ఏ పరిశోధనలు లేదా బాధ్యతలకు మేము బాధ్యులు కేము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,38 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "c162b3b3a1cafc1483c8015e9b266f0d",
|
||||
"translation_date": "2026-01-08T14:48:48+00:00",
|
||||
"source_file": "6-space-game/3-moving-elements-around/assignment.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# మీ కోడ్ను వ్యాఖ్యానించండి
|
||||
|
||||
## సూచనలు
|
||||
|
||||
పరిశుభ్రంగా, బాగా డాక్యుమెంటెడ్ కోడ్ మీ ప్రాజెక్టుల నిర్వహణ మరియు పంచుకోవడానికి అవసరం. ఈ అసైన్మెంట్లో, మీరు ప్రొఫెషనల్ డెవలపర్స్ యొక్క అత్యంత ముఖ్యమైన అలవాట్లలో ఒకదాన్ని అభ్యసించబోతున్నారు: మీ కోడ్ యొక్క ఉద్దేశ్యం మరియు కార్యాచరణను వివరించే స్పష్టమైన, ఉపయోగకరమైన వ్యాఖ్యలను రాయడం.
|
||||
|
||||
మీ గేమ్ ఫోల్డర్లో ఉన్న ప్రస్తుత `app.js` ఫైల్ను పరిశీలించి, దానిని వ్యాఖ్యానించి, సుశ్రూషించు మార్గాలను కనుగొనండి. కోడ్ నియంత్రణ కోల్పోటం చాలా సులభం, కాబట్టి ఇప్పుడు మీకు పాఠకీయ కోడ్ను కలిగి ఉండేందుకు వ్యాఖ్యలను జోడించే మంచి అవకాశం.
|
||||
|
||||
**మీ పనిలో ఇది ఉంటుంది:**
|
||||
- ప్రతి ప్రధాన కోడ్ విభాగం ఏమి చేస్తుందో వివరించే వ్యాఖ్యలు **జోడించండి**
|
||||
- వారి ఉద్దేశ్యం మరియు పారామీటర్లను స్పష్టంగా వివరించమని **ఫంక్షన్లను డాక్యుమెంట్ చేయండి**
|
||||
- కోడ్ను తార్కిక బ్లాకులుగా, విభాగ శీర్షికలతో **సంస్థాపించండి**
|
||||
- ఉపయోగించని లేదా పునరావృతమైన కోడ్ను **తొలగించండి**
|
||||
- వేరియబుల్లు మరియు ఫంక్షన్ల కోసం **ఒకరూపమైన పేర్ల నియమావళిని ఉపయోగించండి**
|
||||
|
||||
## మూల్యం
|
||||
|
||||
| ప్రమాణాలు | అద్భుతం | సరిపోతుంది | మెరుగుదల అవసరం |
|
||||
| -------- | --------- | -------- | ----------------- |
|
||||
| **కోడ్ డాక్యుమెంటేషన్** | `app.js` కోడ్ పూర్తిగా వ్యాఖ్యానించబడింది, major విభాగాలు మరియు ఫంక్షన్లకు స్పష్టమైన, ఉపయోగకరమైన వివరణలతో | `app.js` కోడ్ సరసమైన వ్యాఖ్యలతో ఉంది, చాలా విభాగాలకు ప్రాథమిక వివరణలతో | `app.js` కోడ్కి తక్కువ వ్యాఖ్యలు ఉన్నాయి మరియు స్పష్టమైన వివరణలు లేవు |
|
||||
| **కోడ్ సంస్థాపన** | కోడ్ను ముఖ్య విభాగ శీర్షికలతో తార్కిక బ్లాక్స్గా ఏర్పాటు చేశారు మరియు ఒకరూపమైన నిర్మాణంతో ఉంది | కోడ్లో కొంత సంస్థాపన ఉంది, సంబంధిత కార్యాచరణల బేసిక్ గుంపుమెట్లతో ఉంది | కోడ్ కొంత అంతరాయం కలిగి ఉంది మరియు అనుసరించటం కష్టం |
|
||||
| **కోడ్ నాణ్యత** | అన్ని వేరియబుల్స్ మరియు ఫంక్షన్లు వివరణాత్మక పేర్లను ఉపయోగిస్తాయి, ఉపయోగించని కోడ్ లేదు, సమాన నియమావళిని అనుసరిస్తుంది | ఎక్కువ కోడ్ మంచి పేర్ల నియమాలను పాటిస్తుంది, కనీసం ఉపయోగించని కోడ్ | వేరియబుల్ పేర్లు స్పష్టంగా లేవు, ఉపయోగించని కోడ్ ఉంది, శైలి అసమానంగా ఉంది |
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**డిస్క్లెయిమర్**:
|
||||
ఈ డాక్యుమెంట్ AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మా accuracy కోసం ప్రయత్నిస్తున్నప్పటికీ, ఆటోమేటెడ్ అనువాదంలో తప్పులు లేదా అసత్యాలు ఉండవచ్చును. అసలు డాక్యుమెంట్ యొక్క మూటి భాషలో ఉన్న మూల పత్రం అధికారిక స్రోతస్సుగా పరిగణించాల్సి ఉంటుంది. ముఖ్యమైన సమాచారానికి వృత్తిపరమైన మానవ అనువాదం స్వీకరించడమే ఉత్తమం. ఈ అనువాదం వలన కలిగే ఏవైనా అర్థం తప్పులు లేదా తప్పు అర్ధం తిప్పడాలకు మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,776 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "039b4d8ce65f5edd82cf48d9c3e6728c",
|
||||
"translation_date": "2026-01-08T13:27:23+00:00",
|
||||
"source_file": "6-space-game/4-collision-detection/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# స్పేస్ గేమ్ నిర్మాణం భాగం 4: లేజర్ను జోడించడం మరియు ఢీకి తెలియజేయడం
|
||||
|
||||
```mermaid
|
||||
journey
|
||||
title మీ ఠొక్కర గుర్తింపు ప్రయాణం
|
||||
section భౌతిక శాస్త్రం మౌలికం
|
||||
వరుసలను అర్థం చేసుకోండి: 3: విద్యార్థి
|
||||
సాంతర విభాగ గణితం నేర్చుకోండి: 4: విద్యార్థి
|
||||
సమన్వయ వ్యవస్థలను గ్రహించండి: 4: విద్యార్థి
|
||||
section ఆట యాంత్రిక శాస్త్రం
|
||||
లేజర్ షూటింగ్ అమలు చేయండి: 4: విద్యార్థి
|
||||
వస్తువు జీవన చక్రం జోడించండి: 5: విద్యార్థి
|
||||
ఠొక్కర నియమాలు సృష్టించండి: 5: విద్యార్థి
|
||||
section వ్యవస్థ సమీకరణం
|
||||
ఠొక్కర గుర్తింపు నిర్మించండి: 5: విద్యార్థి
|
||||
పనితీరు సంస్కరణ: 5: విద్యార్థి
|
||||
పరస్పర చర్య వ్యవస్థలను పరీక్షించండి: 5: విద్యార్థి
|
||||
```
|
||||
## పాఠం ముందరి క్విజ్
|
||||
|
||||
[పాఠం ముందరి క్విజ్](https://ff-quizzes.netlify.app/web/quiz/35)
|
||||
|
||||
స్టార్ వార్స్లో ల్యూక్ యొక్క ప్రోటాన్ టోర్పెడోలు డెత్ స్టార్ ఎగ్జాస్టు పోర్టును తగలగానే చోటుచేసుకున్న క్షణాన్ని గురించిన ఆలోచన చేయండి. ఆ ఖచ్చితమైన ఢీకి గుర్తింపు గెలాక్సీ యొక్క విధిని మార్చింది! గేమ్స్లో, ఢీకి గుర్తింపు అదే విధంగా పనిచేస్తుంది - ఇది వస్తువులు ఎప్పుడు పరస్పరం ఎదుర్కొంటున్నాయో నిర్ధారిస్తుంది మరియు తరువాత ఏమి జరుగుతుందో నిర్ణయిస్తుంది.
|
||||
|
||||
ఈ పాఠంలో, మీరు మీ స్పేస్ గేమ్కు లేజర్ ఆయుధాలను జోడించి ఢీకి గుర్తింపును అమలుపరుస్తారు. NASA మిషన్ ప్లానర్లు అశుభ్రత నివారించడానికి అంతరిక్షयान పథకాలను గణిస్తారని మీరు నేర్చుకుంటారు. మేము దీనిని ఒకదాని పైన మరొకటి నిర్మించే అనుకూలమైన దశలుగా విడగొడతాము.
|
||||
|
||||
చివరికి, లేజర్లు శత్రువులను నాశనం చేస్తూ, ఢీకి గమనించినప్పుడు గేమ్ సంఘటనలను రోగించే క్రియాశీల యుద్ధ వ్యవస్థను కలిగి ఉంటారు. ఇదే ఢీకి సూత్రాలు భౌతిక శాస్త్ర సిమ్యులేషన్స్ నుండి ఇంటరాక్టివ్ వెబ్ ఇంటర్ఫేస్ల వరకు ఉపయోగించబడతాయి.
|
||||
|
||||
```mermaid
|
||||
mindmap
|
||||
root((కలిషన్ డిటెక్షన్))
|
||||
Physics Concepts
|
||||
Rectangle Boundaries [చతురస్ర సరిహద్దులు]
|
||||
Intersection Testing [చిలుక కార్యక్రమం]
|
||||
Coordinate Systems [నిర్దేశాంక వ్యవస్థలు]
|
||||
Separation Logic [విభజన లాజిక్]
|
||||
Game Objects
|
||||
Laser Projectiles [లేజర్ ప్రాజెక్టైల్లు]
|
||||
Enemy Ships [శత్రు నౌకలు]
|
||||
Hero Character [నాయక పాత్ర]
|
||||
Collision Zones [కలిషన్ జోన్లు]
|
||||
Lifecycle Management
|
||||
Object Creation [వస్తువుల సృష్టి]
|
||||
Movement Updates [చలనం నవీకరణలు]
|
||||
Destruction Marking [వినాశం గుర్తింపు]
|
||||
Memory Cleanup [మెమరీ శుభ్రపరచడం]
|
||||
Event Systems
|
||||
Keyboard Input [కీబోర్డ్ ఇన్పుట్]
|
||||
Collision Events [కలిషన్ ఈవెంట్లు]
|
||||
Game State Changes [గేమ్ స్థితి మార్పులు]
|
||||
Audio/Visual Effects [ఆడియో/విజువల్ эффекты]
|
||||
Performance
|
||||
Efficient Algorithms [ఫలవంతమైన ఆల్గోరిథమ్స్]
|
||||
Frame Rate Optimization [ఫ్రేమ్ రేట్ ఆప్టిమైజేషన్]
|
||||
Memory Management [మెమరి నిర్వహణ]
|
||||
Spatial Partitioning [స్పేషియల్ పార్టిషనింగ్]
|
||||
```
|
||||
✅ మొదటి కంప్యూటర్ గేమ్ ఎప్పుడైన రాయబడింది మరియు దాని కార్యాచరణ ఏమిటి అన్న విషయంపై కొంత పరిశోధన చేయండి.
|
||||
|
||||
## ఢీకి గుర్తింపు
|
||||
|
||||
ఢీకి గుర్తింపు అబ్బలో లూనార్ మాడ్యూల్లోని సమీప సెన్సార్ల లాంటి పని చేస్తుంది - ఇది క్రమంగా దూరాలను పరిక్షిస్తూనే వస్తువులు చాలా దగ్గరైనప్పుడు హెచ్చరికని ఉత్పత్తి చేస్తుంది. గేమ్స్లో ఇది వస్తువుల పరస్పరం చర్యలను మరియు తరువాత ఏమి జరగాలో నిర్ణయిస్తుంది.
|
||||
|
||||
మనం ఉపయోగించుకునే పద్ధతి ప్రతి గేమ్ ఆబ్జెక్టును ఒక చతురస్రం అన్నట్లుగా భావిస్తుంది, ఇది ఎయిర్ ట్రాఫిక్ కంట్రోల్ సిస్టమ్స్ విమానాలను ట్రాక్ చేయడానికి సరళీకృత జ్యామితీయ ఆకారాలను ఉపయోగించే విధానాన్ని పోలికగా తీసుకుంటుంది. ఈ చతురస్ర పద్ధతి సాధారణంగా కనిపించవచ్చు, కాని ఇది గణనీయంగా సమర్థవంతమే మరియు ఎక్కువ గేమ్ సందర్భాల్లో బాగుంది.
|
||||
|
||||
### చతురస్ర ప్రతీకారం
|
||||
|
||||
ప్రతి గేమ్ వస్తువు స్థానంలో సరిహద్దు కోఆర్డినేట్లు అవసరం, మარს్ పాథ్ఫైండర్ రోవర్ మంగళ గ్రహ ఉపరితలంపై తన స్థానాన్ని గుర్తించడానికి ఎలా ఉపయోగించిందో అలానే. ఇవి మనం సరిహద్దు కోఆర్డినేట్లను నిర్వచించేదాన్ని:
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A["🎯 ఆట వస్తువు"] --> B["📍 స్థానము (x, y)"]
|
||||
A --> C["📏 పరిమాణాలు (వెడల్పు, ఎత్తు)"]
|
||||
|
||||
B --> D["పై భాగం: y"]
|
||||
B --> E["ఎడమ భాగం: x"]
|
||||
|
||||
C --> F["కింద భాగం: y + ఎత్తు"]
|
||||
C --> G["కుడి భాగం: x + వెడల్పు"]
|
||||
|
||||
D --> H["🔲 చతురస్ర గడులు"]
|
||||
E --> H
|
||||
F --> H
|
||||
G --> H
|
||||
|
||||
H --> I["ఘర్షణ గుర్తింపు సిద్ధం"]
|
||||
|
||||
style A fill:#e3f2fd
|
||||
style H fill:#e8f5e8
|
||||
style I fill:#fff3e0
|
||||
```
|
||||
```javascript
|
||||
rectFromGameObject() {
|
||||
return {
|
||||
top: this.y,
|
||||
left: this.x,
|
||||
bottom: this.y + this.height,
|
||||
right: this.x + this.width
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**దీనిని విడగొడదాం:**
|
||||
- **పై అంచు**: ఇది మీ వస్తువు ఎక్కడ నుండి ప్రారంభమయ్యింది అనేది నిలువుగా (ఆటస్ధానం y)
|
||||
- **ఎడమ అంచు**: ఇది أف్పుపరికి ఆడవైపు ప్రారంభ స్థానంని సూచిస్తుంది (ఆటస్ధానం x)
|
||||
- **కింద అంచు**: y స్థానానికి ఎత్తు జోడించండి - ఇక్కడ వస్తువు ముగుస్తుంది!
|
||||
- **కుడి అంచు**: x స్థానానికి వెడల్పు జోడించండి - మీరు పూర్తి సరిహద్దును పొందారు
|
||||
|
||||
### అసంక్రమణ అల్గోరిథమ్
|
||||
|
||||
చతురస్రాల అసంక్రమణలను గుర్తించడం హబుల్ స్పేస్ టెలిస్కోప్ విశ్వ పరిమాణంలో ఆకాశీయ వస్తువులు ఒకరిపై ఒకరు విభజించబోతున్నాయా అని నిర్ధారించే విధానం లాంటిదే. అల్గోరిథమ్ విడిపోవడాన్ని పరీక్షిస్తుంది:
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A["చతురస్రం 1"] --> B{"వేర్పాటు పరీక్షలు"}
|
||||
C["చతురస్రం 2"] --> B
|
||||
|
||||
B --> D["R2 ఎడమ > R1 కుడి?"]
|
||||
B --> E["R2 కుడి < R1 ఎడమ?"]
|
||||
B --> F["R2 పై > R1 క్రింద?"]
|
||||
B --> G["R2 క్రింద < R1 పై?"]
|
||||
|
||||
D --> H{"ఏదైనా నిజం?"}
|
||||
E --> H
|
||||
F --> H
|
||||
G --> H
|
||||
|
||||
H -->|అవును| I["❌ ఢీకొనడం లేదు"]
|
||||
H -->|కాదు| J["✅ ఢీకొనడం గుర్తించబడింది"]
|
||||
|
||||
style B fill:#e3f2fd
|
||||
style I fill:#ffebee
|
||||
style J fill:#e8f5e8
|
||||
```
|
||||
```javascript
|
||||
function intersectRect(r1, r2) {
|
||||
return !(r2.left > r1.right ||
|
||||
r2.right < r1.left ||
|
||||
r2.top > r1.bottom ||
|
||||
r2.bottom < r1.top);
|
||||
}
|
||||
```
|
||||
|
||||
**విభజన పరీక్ష రాడార్ వ్యవస్థలాగే పనిచేస్తుంది:**
|
||||
- చతురస్రం 2 పూర్తిగా చతురస్రం 1 కుడివైపు ఉందా?
|
||||
- చతురస్రం 2 పూర్తిగా చతురస్రం 1 ఎడమవైపు ఉందా?
|
||||
- చతురస్రం 2 పూర్తిగా చతురస్రం 1 కింద ఉందా?
|
||||
- చతురస్రం 2 పూర్తిగా చతురస్రం 1 పైగా ఉందా?
|
||||
|
||||
ఈ పరిస్థితేలపై ఇంకేమీ నిజం కాకపోతే, చతురస్రాలు ఒకరిపై ఒకరు ఉత్ప్రేరకంగా నిలబడ్డాయని అర్థం. ఇది రాడార్ ఆపరేటర్లు రెండు విమానాలు సురక్షిత దూరంలో ఉన్నాయా అని తెలుసుకునే విధానం.
|
||||
|
||||
## వస్తువుల జీవ చక్రాలను నిర్వహించడం
|
||||
|
||||
లేజర్ శత్రువు పైన తగిలితే, రెండు వస్తువులు గేమ్ నుండి తొలగించాలి. అయితే, లోపల లూప్ లో వస్తువులను తొలగించడం క్రాష్లకు దారి తీస్తుంది - ఇది అప్పోలో మార్గదర్శి కంప్యూటర్ వంటి ప్రాచీన కంప్యూటర్ వ్యవస్థలలో అనుభవించిన పాఠం. బదులుగా, "తొలగించడానికి గుర్తు" సూత్రాన్ని ఉపయోగిస్తాము, ఇది ఫ్రేమ్ల మధ్య వస్తువులను సురక్షితంగా తొలగిస్తుంది.
|
||||
|
||||
```mermaid
|
||||
stateDiagram-v2
|
||||
[*] --> Active: ఆబ్జెక్ట్ సృష్టించబడింది
|
||||
Active --> Collided: మందగించబడిన కలిభాష
|
||||
Collided --> MarkedDead: మృతిగా సెట్ చేయండి = true
|
||||
MarkedDead --> Filtered: తదుపరి ఫ్రేమ్
|
||||
Filtered --> [*]: ఆబ్జెక్ట్ తొలగించబడింది
|
||||
|
||||
Active --> OutOfBounds: స్క్రీన్ నుండి బయలు దెబ్బతినింది
|
||||
OutOfBounds --> MarkedDead
|
||||
|
||||
note right of MarkedDead
|
||||
కొనసాగించడానికి సురక్షితం
|
||||
ప్రస్తుత ఫ్రేమ్
|
||||
end note
|
||||
|
||||
note right of Filtered
|
||||
ఫ్రేమ్ల మధ్య
|
||||
ఆబ్జెక్టులు తొలగించబడ్డాయి
|
||||
end note
|
||||
```
|
||||
ఇలా ఏదైనా తొలగించడానికి గుర్తు చేస్తున్నాం:
|
||||
|
||||
```javascript
|
||||
// వస్తువును తొలగింపు కోసం గుర్తించండి
|
||||
enemy.dead = true;
|
||||
```
|
||||
|
||||
**ఈ విధానం ఎందుకు పనిచేస్తుంది**:
|
||||
- వస్తువును "డెడ్" గా గుర్తిస్తాం కానీ వెంటనే తొలగింపము చేయం
|
||||
- ఇది ప్రస్తుత గేమ్ ఫ్రేమ్ సురక్షితంగా పూర్తయ్యేలా చేస్తుంది
|
||||
- ముందే తొలగించిన వస్తువును ఉపయోగించటంలో దోషాలు రాకుండా చేస్తుంది!
|
||||
|
||||
తర్వాత తదుపరి రేండర్ చక్రానికి ముందే గుర్తించిన వస్తువులను ఫిల్టర్ చేస్తాం:
|
||||
|
||||
```javascript
|
||||
gameObjects = gameObjects.filter(go => !go.dead);
|
||||
```
|
||||
|
||||
**ఈ ఫిల్టరింగ్ చేస్తుంది:**
|
||||
- "జీవంత" వస్తువులతో కొత్త జాబితా సృష్టిస్తుంది
|
||||
- డెడ్ గా గుర్తించిన వాటిని బయటపెడుతుంది
|
||||
- మీ గేమ్ బాగుగా నడుస్తుంది
|
||||
- నాశనమైన వస్తువుల చేర్చడం వల్ల స్మృతి పెరిగేలా ఉండదు
|
||||
|
||||
## లేజర్ యాంత్రికతను అమలుచేయడం
|
||||
|
||||
గేమ్స్లో లేజర్ ప్రాజెక్టైల్స్ స్టార్ ట్రెక్లోని ఫోటాన్ టోర్పెడోల మాదిరిగా పనిచేస్తాయి - అవి నిర్దిష్ట వస్తువులు క్రమంగా సరేఖా గుండా ప్రయాణిస్తూ ఏదైనా తగలుతున్నంతవరకు. ప్రతి స్పేస్బార్ నొక్కటంతో కొత్త లేజర్ వస్తువు సృష్టించబడుతుంది, ఇది తెరపై కదులుతుంది.
|
||||
|
||||
ఇది పనిచేసేందుకు, కొన్ని భాగాలను సమన్వయింపచేయాలి:
|
||||
|
||||
**ప్రధాన భాగాలు అమలు చేసుకోవాలి:**
|
||||
- హీరో స్థానంలో నుండి లేజర్ వస్తువులను సృష్టించండి
|
||||
- కీబోర్డ్ ఇన్పుట్ను హ్యాండిల్ చేసి లేజర్ సృష్టింపు ప్రారంభించండి
|
||||
- లేజర్ కదలికను మరియు జీవ చక్రాన్ని నిర్వహించండి
|
||||
- లేజర్ ప్రాజెక్టైల్స్ కోసం విజువల్ ప్రతినిధిత్వాన్ని అమలు చేయండి
|
||||
|
||||
## ఆగిపోనున్న కాలం నియంత్రణ అమలు
|
||||
|
||||
అంగీకరించని వేగంతో తుప్పు వేయడం గేమ్ ఇంజన్ను ఒత్తిడికి లోనుచేస్తుంది మరియు ఆటను చాలా సులభతరం చేస్తుంది. నిజమైన ఆయుధ వ్యవస్థలు కూడా అటువంటి పరిమితులను ఎదుర్కొంటాయి - USS ఎంటర్ప్రైజ్ ఫేసర్స్ కు కాలం అవసరం ఉండేది ప్రతి షాట్ గడిచిన తర్వాత.
|
||||
|
||||
మనము అవకాశాలను తగ్గించే కూల్డౌన్ సిస్టమ్ అమలు చేస్తాము, ఇది తుప్పు వేయడంలో వేగాన్ని తగ్గిస్తుంటూ స్పందనాత్మక నియంత్రణలను కాపాడుతుంది:
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant Player
|
||||
participant Weapon
|
||||
participant Cooldown
|
||||
participant Game
|
||||
|
||||
Player->>Weapon: స్పేస్ బార్ నొక్కండి
|
||||
Weapon->>Cooldown: చల్లగా ఉందా చెక్ చేయండి
|
||||
|
||||
alt ఆయుధం సిద్ధంగా ఉంది
|
||||
Cooldown->>Weapon: cool = true
|
||||
Weapon->>Game: లేజర్ సృష్టించండి
|
||||
Weapon->>Cooldown: కొత్త cooldown ప్రారంభించండి
|
||||
Cooldown->>Cooldown: cool = false
|
||||
|
||||
Note over Cooldown: 500ms వేచి ఉండండి
|
||||
|
||||
Cooldown->>Cooldown: cool = true
|
||||
else ఆయుధం చల్లబడుతోంది
|
||||
Cooldown->>Weapon: cool = false
|
||||
Weapon->>Player: చర్య లేదు
|
||||
end
|
||||
```
|
||||
```javascript
|
||||
class Cooldown {
|
||||
constructor(time) {
|
||||
this.cool = false;
|
||||
setTimeout(() => {
|
||||
this.cool = true;
|
||||
}, time);
|
||||
}
|
||||
}
|
||||
|
||||
class Weapon {
|
||||
constructor() {
|
||||
this.cooldown = null;
|
||||
}
|
||||
|
||||
fire() {
|
||||
if (!this.cooldown || this.cooldown.cool) {
|
||||
// లేజర్ ప్రాజెక్టైల్ తయారు చేయండి
|
||||
this.cooldown = new Cooldown(500);
|
||||
} else {
|
||||
// ఆయుధం ఇంకా కూలింగ్ అవుతుంది
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**కూల్డౌన్ పని విధానం:**
|
||||
- సృష్టించినప్పుడు, ఆయుధం "హాట్" (ఇప్పుడే తుప్పు వేయడం వీల్గా లేదు)
|
||||
- టైమౌట్ తర్వాత, అది "కూల్" అవుతుంది (తుప్పుకు సిద్దంగా ఉంటుంది)
|
||||
- తుప్పు వేయక ముందు, "ఏయే ఆయుధం కూల్ గా ఉందా?" అని తనిఖీ చేస్తాం
|
||||
- ఇది తుప్పులను శీఘ్ర నిడివిలో ఉపయోగించకుండా చేస్తుంది కాని నియంత్రణల్ని స్పందన చేయగలిగేలా ఉంచుతుంది
|
||||
|
||||
✅ స్పేస్ గేమ్ పరంపరలో పాఠం 1 ను మరోసారి నోటీసు చేసుకోండి, కూల్డౌన్ల గురించి గుర్తు చేసుకోవడానికి.
|
||||
|
||||
## ఢీకి వ్యవస్థను నిర్మించడం
|
||||
|
||||
మీ ఇప్పటికే ఉన్న స్పేస్ గేమ్ కోడ్ను పొడిగించి ఢీకి గుర్తింపు వ్యవస్థను సృష్టిస్తారు. అంతర్జాతీయ అంతరిక్ష స్టేషన్ ఢీకి నివారణ వ్యవస్థల లాగా, మీ గేమ్ వస్తువుల స్థానాలను నిరంతరం పర్యవేక్షించి అసంక్రమణలను గుర్తించి స్పందిస్తుంది.
|
||||
|
||||
మీ పూర్వ పాఠాల కోడ్ నుండి ప్రారంభించి, వస్తువుల పరస్పర చర్యలను నియంత్రించే చట్టాలతో ఢీకి గుర్తింపు జోడిస్తారు.
|
||||
|
||||
> 💡 **ప్రో చిట్కా**: లేజర్ స్ప్రైట్ ఇప్పటికే మీ ఆసెట్ ఫోల్డర్లో ఉంది మరియు మీ కోడ్లో సూచించబడింది, అమలుకు సిద్ధంగా ఉంది.
|
||||
|
||||
### అమలు చేయవలసిన ఢీకి నియమాలు
|
||||
|
||||
**గేమ్ యాంత్రికతలకు జోడించవలసినవి:**
|
||||
1. **లేజర్ శత్రువును తగిలిస్తే**: లేజర్ ప్రాజెక్టైల్ తగిలిపోవడంవల్ల శత్రువు వస్తువు నాశనం అవుతుంది
|
||||
2. **లేజర్ తెర అంచుకు తగిలితే**: తెరపై పై అంచునకు చేరుకున్నప్పుడు లేజర్ తొలగించబడుతుంది
|
||||
3. **శత్రువు మరియు హీరో ఢీకి**: పరస్పరం తగిలితే రెండు వస్తువులు నాశనం చేస్తాయి
|
||||
4. **శత్రువు తెర దిగువకు చేరితే**: శత్రువులు తెర క్రిందకి చేరినప్పుడు గేమ్ ముగిసింది కారెక్కుతుందని భావిస్తాం
|
||||
|
||||
### 🔄 **బోధనా తనిఖీ**
|
||||
**ఢీకి గుర్తింపు పునాది**: అమలు ముందు, ఈ విషయాలు అర్థం చేసుకోండి:
|
||||
- ✅ చతురస్ర సరిహద్దులు ఢీకులను ఎలా నిర్వచిస్తాయి
|
||||
- ✅ కారణంగా విడిపోవడం పరీక్షించడం అసంఖ్య పద్ధతిని ఎందుకు మెరుగుపరుస్తుంది
|
||||
- ✅ గేమ్ లూప్లో వస్తువు జీవ చక్రం నిర్వహణ ముఖ్యత
|
||||
- ✅ ఘటన-ఆధారిత వ్యవస్థల ద్వారా ఢీకి స్పందనలు ఎలా సమన్వయింపబడతాయి
|
||||
|
||||
**తక్షణ స్వీయ పరీక్ష**: మీరు వస్తువులను వెంటనే తొలగిస్తే ఏమి జరుగుతుంది?
|
||||
*పలుకు: మధ్యలో తొలగిస్తే క్రాష్లు వస్తాయి లేదా లూప్లో వస్తువులు మిస్ కావచ్చు*
|
||||
|
||||
**భౌతిక శాస్త్ర అవగాహన**: ఈ విషయాలు మీరు గ్రహించాలి:
|
||||
- **కోఆర్డినేట్ వ్యవస్థలు**: స్థానాలు మరియు పరిమాణాలు సరిహద్దులను ఎలా సృష్టిస్తాయి
|
||||
- **అసంక్రమణ తాత్త్వికత**: ఢీకి గుర్తింపుకు గణిత సూత్రాలు
|
||||
- **స్థితిగతిగ వృద్ధి**: వాస్తవసమయ వ్యవస్థల్లో సమర్థ అల్గోరిథమ్ల ప్రాముఖ్యత
|
||||
- **స్మృతి నిర్వహణ**: సురక్షితంగా వస్తువులను నిర్వహించే విధానాలు
|
||||
|
||||
## మీ అభివృద్ధి వాతావరణాన్ని సెట్ చేయడం
|
||||
|
||||
సంతోషకరం - మేము మీకు చాలా ప్రాథమిక పని సిద్ధం చేశాము! మీ గేమ్ ఆసెట్లన్నీ మరియు ప్రాథమిక నిర్మాణం `your-work` ఉపఫోల్డర్లో ఉంది, మీరు చల్లని ఢీకి లక్షణాలను జోడించండి.
|
||||
|
||||
### ప్రాజెక్ట్ నిర్మాణం
|
||||
|
||||
```bash
|
||||
-| assets
|
||||
-| enemyShip.png
|
||||
-| player.png
|
||||
-| laserRed.png
|
||||
-| index.html
|
||||
-| app.js
|
||||
-| package.json
|
||||
```
|
||||
|
||||
**ఫైల్ నిర్మాణాన్ని అర్థం చేసుకోండి:**
|
||||
- గేమ్ వస్తువులకు అవసరమైన అన్ని స్ప్రైట్ చిత్రాలు ఉన్నాయి
|
||||
- ప్రధాన HTML డాక్యుమెంట్ మరియు జావాస్క్రిప్ట్ అప్లికేషన్ ఫైల్ను కూడా కలిగి ఉంది
|
||||
- స్థానిక అభివృద్ధి సర్వర్ కొరకు ప్యాకేజ్ కాన్ఫిగరేషన్ అందిస్తుంది
|
||||
|
||||
### అభివృద్ధి సర్వర్ ప్రారంభించడం
|
||||
|
||||
మీ ప్రాజెక్ట్ ఫోల్డర్ కి వెళ్లి స్థానిక సర్వర్ ప్రారంభించండి:
|
||||
|
||||
```bash
|
||||
cd your-work
|
||||
npm start
|
||||
```
|
||||
|
||||
**ఈ ఆదేశం క్రమం:**
|
||||
- మీ పని ప్రాజెక్ట్ ఫోల్డర్ కు మారుతుంది
|
||||
- `http://localhost:5000` వద్ద లోకల్ HTTP సర్వర్ ప్రారంభిస్తుంది
|
||||
- గేమ్ ఫైల్స్ ని పరీక్ష మరియు అభివృద్ధి కోసం అందిస్తుంది
|
||||
- లైవ్ అభివృద్ధితో ఆటోమాటిక్ రీలోడింగ్ యాక్టివేట్ చేస్తుంది
|
||||
|
||||
మీ బ్రౌజర్ను తెరిచి `http://localhost:5000` కి వెళ్ళి మీ ప్రస్తుత గేమ్ స్థితిని హీరో మరియు శత్రువులతో స్క్రీన్ పై చూడండి.
|
||||
|
||||
### దశల వారీ అమలు
|
||||
|
||||
NASA వాయేజర్ అంతరిక్షయాన ప్రోగ్రామ్ చేసిన విధంగా, మనము ఢీకి గుర్తింపును సistemా లోగడ మెట్టెల వారీగా అమలు చేద్దాము.
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A["1. చతురస్ర పరిమితులు"] --> B["2. ఆవర్తన గుర్తింపు"]
|
||||
B --> C["3. లేజర్ వ్యవస్థ"]
|
||||
C --> D["4. ఈవెంట్ హ్యాండ్లింగ్"]
|
||||
D --> E["5. ఢీకొనడం నియమాలు"]
|
||||
E --> F["6. కూల్డౌన్ వ్యవస్థ"]
|
||||
|
||||
G["వస్తువు సరిహద్దులు"] --> A
|
||||
H["భౌతిక శాస్త్ర అల్గోరిథమ్"] --> B
|
||||
I["ప్రాజెక్టైల్ సృష్టి"] --> C
|
||||
J["కీబోర్డ్ ఇన్పుట్"] --> D
|
||||
K["గేమ్ లాజిక్"] --> E
|
||||
L["రేట్ పరిమితి"] --> F
|
||||
|
||||
F --> M["🎮 పూర్తి గేమ్"]
|
||||
|
||||
style A fill:#e3f2fd
|
||||
style B fill:#e8f5e8
|
||||
style C fill:#fff3e0
|
||||
style D fill:#f3e5f5
|
||||
style E fill:#e0f2f1
|
||||
style F fill:#fce4ec
|
||||
style M fill:#e1f5fe
|
||||
```
|
||||
#### 1. చతురస్ర ఢీకి సరిహద్దులను జోడించడం
|
||||
|
||||
ముందుగా, మన గేమ్ వస్తువులకు వారి సరిహద్దులను ఎలా వివరించాలో నేర్పుదాం. ఇది మీ `GameObject` తరగతికి జోడించండి:
|
||||
|
||||
```javascript
|
||||
rectFromGameObject() {
|
||||
return {
|
||||
top: this.y,
|
||||
left: this.x,
|
||||
bottom: this.y + this.height,
|
||||
right: this.x + this.width,
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
**ఈ విధానం చేస్తుంది:**
|
||||
- ఖచ్చితమైన సరిహద్దు కోఆర్డినేట్లతో ఒక చతురస్రం వస్తువు సృష్టిస్తుంది
|
||||
- స్థానానికి ఎత్తు, వెడల్పు జోడించి దిగువ మరియు కుడి అంచులను లెక్కిస్తుంది
|
||||
- ఢీకి గుర్తింపు అల్గోరిథమ్ల కోసం సిద్ధంగా ఉన్న వస్తువు అందిస్తుంది
|
||||
- ప్రతి గేమ్ వస్తువుకు ప్రామాణిక ఇంటర్ఫేస్ అందిస్తుంది
|
||||
|
||||
#### 2. అసంక్రమణ గుర్తింపును అమలు చేయండి
|
||||
|
||||
ఇప్పుడు మన ఢీకి గూఢచర్యకర్తను సృష్టిద్దాం - రెండు చతురస్రాలు ఒక ఏర్పాటులో ఉన్నాయా లేమో చెబుతుంటే ఫంక్షన్:
|
||||
|
||||
```javascript
|
||||
function intersectRect(r1, r2) {
|
||||
return !(
|
||||
r2.left > r1.right ||
|
||||
r2.right < r1.left ||
|
||||
r2.top > r1.bottom ||
|
||||
r2.bottom < r1.top
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
**ఈ అల్గోరిథం పని విధానం:**
|
||||
- చతురస్రాల మధ్య నాలుగు విడిపోయే పరిస్థితులను పరీక్షిస్తుంది
|
||||
- ఏదైనా విడిపోవడం నిజమైతే `false` ను ఇవ్వాలి
|
||||
- విడిపోవడం లేకపోతే ఢీకి ఉన్నది అనిపిస్తుంది
|
||||
- సమర్థవంతమైన అసంక్రమణ పరీక్షకై వ్యతిరేకత తర్కాన్ని ఉపయోగిస్తుంది
|
||||
|
||||
#### 3. లేజర్ తుప్పు వ్యవస్థను అమలు చేయండి
|
||||
|
||||
ఇక్కడ అన్ని ఉత్తేజకర అంశాలు వస్తున్నాయి! మనము లేజర్ తుప్పు వ్యవస్థను సెట్ చేద్దాము.
|
||||
|
||||
##### సందేశ స్థిరాంకాలు
|
||||
|
||||
మొదట, గేమ్ భాగాలు పరస్పరం మాట్లాడటానికి సందేశ రకాలను నిర్వచిద్దాం:
|
||||
|
||||
```javascript
|
||||
KEY_EVENT_SPACE: "KEY_EVENT_SPACE",
|
||||
COLLISION_ENEMY_LASER: "COLLISION_ENEMY_LASER",
|
||||
COLLISION_ENEMY_HERO: "COLLISION_ENEMY_HERO",
|
||||
```
|
||||
|
||||
**ఈ స్థిరాంకాలు అందించడం:**
|
||||
- అప్లికేషన్ అంతటా ఈవెంట్ పేర్లను ప్రమాణీకరిస్తాయి
|
||||
- గేమ్ వ్యవస్థల మధ్య సుస్పష్ట కమ్యూనికేషన్ కోసం వీలు కలిగిస్తాయి
|
||||
- ఈవెంట్ హ్యాండ్లర్ రిజిస్ట్రేషన్లో తప్పులను నివారిస్తాయి
|
||||
|
||||
##### కీబోర్డ్ ఇన్పుట్ నిర్వహణ
|
||||
|
||||
మీ కీ ఈవెంట్ లిసనర్కు స్పేస్ కీ గుర్తింపును జోడించండి:
|
||||
|
||||
```javascript
|
||||
} else if(evt.keyCode === 32) {
|
||||
eventEmitter.emit(Messages.KEY_EVENT_SPACE);
|
||||
}
|
||||
```
|
||||
|
||||
**ఈ ఇన్పుట్ హ్యాండ్లర్:**
|
||||
- keyCode 32 ఉపయోగించి స్పేస్ కీ నొక్కినట్లు గుర్తిస్తుంది
|
||||
- ప్రమాణీకృత ఈవెంట్ సందేశాన్ని ఉత్పత్తి చేస్తుంది
|
||||
- వేరే భాగాల నుండి సంక్లిష్ట తుప్పు నియంత్రణని సాధ్యం చేస్తుంది
|
||||
|
||||
##### ఈవెంట్ లిసనర్ సెట్ చేసుకోవడం
|
||||
|
||||
మీ `initGame()` ఫంక్షన్లో తుప్పు ప్రవర్తనను నమోదు చేయండి:
|
||||
|
||||
```javascript
|
||||
eventEmitter.on(Messages.KEY_EVENT_SPACE, () => {
|
||||
if (hero.canFire()) {
|
||||
hero.fire();
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
**ఈ ఈవెంట్ లిసనర్:**
|
||||
- స్పేస్ కీ ఈవెంట్లకు స్పందిస్తుంది
|
||||
- తుప్పు వేయడానికి కూల్డౌన్ స్థితిని తనిఖీ చేస్తుంది
|
||||
- అనుమతిస్తే లేజర్ సృష్టిని ప్రారంభిస్తుంది
|
||||
|
||||
లేజర్-శత్రువు ఢీకి నిర్వహణ జోడించండి:
|
||||
|
||||
```javascript
|
||||
eventEmitter.on(Messages.COLLISION_ENEMY_LASER, (_, { first, second }) => {
|
||||
first.dead = true;
|
||||
second.dead = true;
|
||||
});
|
||||
```
|
||||
|
||||
**ఈ ఢీకి హ్యాండ్లర్:**
|
||||
- రెండూ వస్తువుల డేటాను సహా ఢీకి ఈవెంట్ను అందుకుంటుంది
|
||||
- రెండు వస్తువులను తొలగింపకు గుర్తిస్తుంది
|
||||
- ఢీకి తర్వాత సరైన శుభ్రతని యెక్కిస్తుంది
|
||||
|
||||
#### 4. లేజర్ తరగతిని సృష్టించండి
|
||||
|
||||
పైనకి కదులుతున్న, తాను జీవ చక్రాన్ని నిర్వహించే లేజర్ ప్రాజెక్టైల్ను అమలుచేయండి:
|
||||
|
||||
```javascript
|
||||
class Laser extends GameObject {
|
||||
constructor(x, y) {
|
||||
super(x, y);
|
||||
this.width = 9;
|
||||
this.height = 33;
|
||||
this.type = 'Laser';
|
||||
this.img = laserImg;
|
||||
|
||||
let id = setInterval(() => {
|
||||
if (this.y > 0) {
|
||||
this.y -= 15;
|
||||
} else {
|
||||
this.dead = true;
|
||||
clearInterval(id);
|
||||
}
|
||||
}, 100);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**ఈ తరగతి అమలు:**
|
||||
- GameObject ను విస్తృతం చేస్తూ ప్రాథమిక ఫంక్షనాలిటీని పొందుతుంది
|
||||
- లేజర్ స్ప్రైట్కు తగిన పరిమాణాలను సెట్ చేస్తుంది
|
||||
- `setInterval()` ఉపయోగించి ఆటోమేటిక్ పైనకి కదిలే కదలికను సృష్టిస్తుంది
|
||||
- తెరపై పై అంచుకు చేరినపుడు తానే తనను తానే ధ్వంసం చేసుకుంటుంది
|
||||
- తన యానిమేషన్ సమయాన్ని మరియు శుభ్రతను నిర్వహిస్తుంది
|
||||
|
||||
#### 5. ఢీకి గుర్తింపు వ్యవస్థను అమలు చేయండి
|
||||
|
||||
సమగ్ర ఢీకి గుర్తింపు ఫంక్షన్ సృష్టించండి:
|
||||
|
||||
```javascript
|
||||
function updateGameObjects() {
|
||||
const enemies = gameObjects.filter(go => go.type === 'Enemy');
|
||||
const lasers = gameObjects.filter(go => go.type === "Laser");
|
||||
|
||||
// లేజర్-శత్రు ఢీంకులకు పరీక్షించండి
|
||||
lasers.forEach((laser) => {
|
||||
enemies.forEach((enemy) => {
|
||||
if (intersectRect(laser.rectFromGameObject(), enemy.rectFromGameObject())) {
|
||||
eventEmitter.emit(Messages.COLLISION_ENEMY_LASER, {
|
||||
first: laser,
|
||||
second: enemy,
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// ధ్వంసమైన వస్తువులను తీసివేయండి
|
||||
gameObjects = gameObjects.filter(go => !go.dead);
|
||||
}
|
||||
```
|
||||
|
||||
**ఈ ఢీకి వ్యవస్థ:**
|
||||
- పరీక్ష కోసం గేమ్ వస్తువులను రకం ప్రకారం ఫిల్టర్ చేస్తుంది
|
||||
- ప్రతి లేజర్ ను ప్రతి శత్రువు పై పరీక్షించి అసంక్రమణలను గుర్తిస్తుంది
|
||||
- అసంక్రమణలు గుర్తించినపుడు ఢీకి ఈవెంట్లను ఉత్పత్తి చేస్తుంది
|
||||
- ఢీకి సంచాలన తర్వాత ధ్వంసిత వస్తువులను శుభ్రం చేస్తుంది
|
||||
|
||||
> ⚠️ **ముఖ్యము**: `updateGameObjects()`ని మీ ప్రధాన గేమ్ లూపులో `window.onload` లో జోడించండి, ఇది ఢీకి గుర్తింపునకు అనుమతిస్తుంది.
|
||||
|
||||
#### 6. హీరో క్లాస్లో కూల్డౌన్ వ్యవస్థను జోడించండి
|
||||
|
||||
ఫైరింగ్ యాంత్రికతను మరియు వేగ పరిమితిని ఉన్న హీరో క్లాస్ను మెరుగు పరచండి:
|
||||
|
||||
```javascript
|
||||
class Hero extends GameObject {
|
||||
constructor(x, y) {
|
||||
super(x, y);
|
||||
this.width = 99;
|
||||
this.height = 75;
|
||||
this.type = "Hero";
|
||||
this.speed = { x: 0, y: 0 };
|
||||
this.cooldown = 0;
|
||||
}
|
||||
|
||||
fire() {
|
||||
gameObjects.push(new Laser(this.x + 45, this.y - 10));
|
||||
this.cooldown = 500;
|
||||
|
||||
let id = setInterval(() => {
|
||||
if (this.cooldown > 0) {
|
||||
this.cooldown -= 100;
|
||||
} else {
|
||||
clearInterval(id);
|
||||
}
|
||||
}, 200);
|
||||
}
|
||||
|
||||
canFire() {
|
||||
return this.cooldown === 0;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**మరింత మెరుగైన హీరో క్లాస్ అర్థం:**
|
||||
- ప్రారంభంలో కూల్డౌన్ టైమర్ను సున్నా గా (తుప్పుకు సిద్దంగా) సెట్ చేస్తుంది
|
||||
- హీరో నౌక స్ధానానికి పైభాగంలో లేజర్లు సృష్టిస్తుంది
|
||||
- త్వరిత తుప్పుకు నిరోధం కొరకు కూల్డౌన్ సమయాన్ని సెట్ చేస్తుంది
|
||||
- ఇంటర్వల్ ఆధారిత నవీకరణలతో కూల్డౌన్ టైమర్ను తగ్గిస్తుంది
|
||||
- `canFire()` విధానం ద్వారా తుప్పు వేయడంలో స్థితిని ఇస్తుంది
|
||||
|
||||
### 🔄 **బోధనా తనిఖీ**
|
||||
**సistem పూర్తి అవగాహన**: ఢీకి వ్యవస్థపై మీ పట్టు:
|
||||
- ✅ చతురస్ర సరిహద్దులు సమర్థ ఢీకి గుర్తింపును ఎలా సాధిస్తాయి?
|
||||
- ✅ వస్తువు జీవ చక్ర నిర్వహణ గేమ్ స్థిరత్వానికి ఎందుకు ముఖ్యము?
|
||||
- ✅ కూల్డౌన్ వ్యవస్థ పనితీరును ఎలా నిలిపివేస్తుంది?
|
||||
- ✅ సంఘటన ఆధారిత ఆర్కిటెక్చర్ ఢీకి నిర్వహణలో ఎటువంటి పాత్ర కలిగి ఉంది?
|
||||
|
||||
**సистем్ సమాఖ్య**: మీ ఢీకి గుర్తింపు చూపిస్తుంది:
|
||||
- **గణిత ఖచ్చితత్వం**: చతురస్ర అసంక్రమణ అల్గోరిథమ్లు
|
||||
- **దక్షత పెంపు**: సమర్థ ఢీకి పరీక్ష నమూనాలు
|
||||
- **స్మృతి నిర్వహణ**: సురక్షిత వస్తువు సృష్టి మరియు నాశనం
|
||||
- **ఈవెంట్ సమన్వయం**: వేరొకరితో వ్యవస్థ కమ్యూనికేషన్
|
||||
- **వాస్తవసమయ ప్రాసెసింగ్**: ఫ్రేమ్ నవీకరణ చక్రాలు
|
||||
|
||||
**వృత్తిపరమైన నమూనాలు**: మీరు అమలుచేసారు:
|
||||
- **జాగ్రత్త విభజన**: భౌతిక శాస్త్రం, దృశ్యీకరణ, ఇన్పుట్ వేరుగా ఉంచడం
|
||||
- **ఆబ్జెక్ట్-ఓరియెంటెడ్ డిజైన్**: వారసత్వం మరియు పాళిమార్ఫిజం
|
||||
- **స్థితి నిర్వహణ**: వస్తువు జీవ చక్రం మరియు గేమ్ స్థితి ట్రాకింగ్
|
||||
- **దక్షత సాంకేతికత**: వాస్తవసమయ వినియోగానికి సమర్థ అల్గోరిథమ్లు
|
||||
|
||||
### మీ అమలుని పరీక్షించడం
|
||||
|
||||
మీ స్పేస్ గేమ్ ఇప్పుడు పూర్తి ఢీకి గుర్తింపు మరియు యుద్ధ యాంత్రికత కలిగి ఉంది. 🚀 ఈ కొత్త సామర్థ్యాలను పరీక్షించండి:
|
||||
- గమనించడానికి ఆనకీలు ఉపయోగించి కదిలండి
|
||||
- స్పేస్బార్ తో లేజర్ తుప్పండి - కూల్డౌన్ స్పామ్ తగ్గింపును గమనించండి
|
||||
- లేజర్లు శత్రువులు తగిలినప్పుడు ఢీకి గమనించి తొలగింపును సమీక్షించండి
|
||||
- నాశనం పొందిన వస్తువులు గేమ్ నుండి తొలగబడుతున్నప్పుడు పరిశీలించండి
|
||||
|
||||
మీరు విజయవంతంగా ఢీకి గుర్తింపు వ్యవస్థను అమలు చేశారని గుర్తించండి, ఇది అంతరిక్ష నావిగేషన్ మరియు రొబోటిక్స్ను మార్గనిర్దేశం చేసే అదే గణిత సూత్రాలు ఉపయోగిస్తుంది.
|
||||
|
||||
### ⚡ **తరువాతి 5 నిమిషాల్లో మీరు చేయగలిగేది**
|
||||
- [ ] డెవ్టూల్స్లో మీ ఢీకి గుర్తింపు ఫంక్షన్లో బ్రేక్ పాయింట్లను సెట్ చేయండి
|
||||
- [ ] లేజర్ వేగం లేదా శత్రువు కదలికను మార్చి ఢీకి ప్రభావాలను చూడండి
|
||||
- [ ] తుప్పు వేయుటకు వేర్వేరు కూల్డౌన్ విలువలతో ప్రయోగం చేయండి
|
||||
- [ ] సన్నికిత సంఘటనలను ప్రత్యక్షంగా ట్రాక్ చేయడానికి `console.log` స్టేట్మెంట్లను జోడించండి
|
||||
|
||||
### 🎯 **ఈ గంటలో మీరు సాధించగలిగేది ఏమిటి**
|
||||
- [ ] పాఠం తర్వాత క్విజ్ పూర్తి చేసి సన్నికిత గుర్తింపు అల్గోరిథంలను అర్థం చేసుకోవడం
|
||||
- [ ] సన్నికిత సందర్భంగా పేలుడు వంటి విజువల్ ప్రభావాలను జోడించడం
|
||||
- [ ] విభిన్న గుణ లక్షణాలతో వివిధ రకాల ప్రాజెక్టైళ్లను అమలు చేయడం
|
||||
- [ ] ఆటగాడి సామర్థ్యాలను తాత్కాలికంగా మెరుగుపరచే పవర్-అప్స్ సృష్టించడం
|
||||
- [ ] సన్నికితలకు మరింత సంతృప్తిదాయకంగా ఉండే శబ్దప్రభావాలను జోడించడం
|
||||
|
||||
### 📅 **మీ వారాంతం ఫిజిక్స్ ప్రోగ్రామింగ్**
|
||||
- [ ] మెరుగైన సన్నికిత వ్యవస్థలతో పూర్తి స్పేస్ గేమ్ పూర్తి చేయండి
|
||||
- [ ] చతురస్రాలని దాటించి అధునాతన సన్నికిత ఆకృతులను అమలు చేయడం (వృత్తాలు, బహుచతురస్రాలు)
|
||||
- [ ] వాస్తవిక పేలుడు ప్రభావాలకు పార్టికల్ సిస్టమ్స్ జోడించడం
|
||||
- [ ] సన్నికిత నివారణతో సంక్లిష్ట శత్రువు ప్రవర్తనను సృష్టించడం
|
||||
- [ ] అనేక వస్తువులతో మెరుగైన పనితనానికి సన్నికిత గుర్తింపును ఆప్టిమైజ్ చేయడం
|
||||
- [ ] త్వరణం మరియు వాస్తవిక ఉద్యమంలాంటి ఫిజిక్స్ సిమ్యులేషన్ ను జోడించడం
|
||||
|
||||
### 🌟 **మీ నెలరోజుల గేమ్ ఫిజిక్స్ నైపుణ్యం**
|
||||
- [ ] అధునాతన ఫిజిక్స్ ఇంజన్లతో మరియు వాస్తవిక సిమ్యులేషన్లతో గేమ్ లను నిర్మించడం
|
||||
- [ ] 3D సన్నికిత గుర్తింపు మరియు స్పేషియల్ పార్టిషనింగ్ అల్గోరిథంలను నేర్చుకోవడం
|
||||
- [ ] ఓపెన్ సోర్స్ ఫిజిక్స్ లైబ్రరీలు మరియు గేమ్ ఇంజన్లలో సహకరించడం
|
||||
- [ ] గ్రాఫిక్స్-భారతమైన అప్లికేషన్లకు పనితన ఆప్టిమైజేషన్లో నైపుణ్యం సాధించడం
|
||||
- [ ] గేమ్ ఫిజిక్స్ మరియు సన్నికిత గుర్తింపు గురించి విద్యా విషయాలు సృష్టించడం
|
||||
- [ ] అధునాతన ఫిజిక్స్ ప్రోగ్రామింగ్ నైపుణ్యాలతో పోర్ట్ఫోలియో నిర్మించడం
|
||||
|
||||
## 🎯 మీ సన్నికిత గుర్తింపు నైపుణ్య సమయం
|
||||
|
||||
```mermaid
|
||||
timeline
|
||||
title Collision Detection & Game Physics Learning Progression
|
||||
|
||||
section Foundatiion (10 minutes)
|
||||
Rectangle Math: కోఆర్డినేట్ సిస్టమ్స్
|
||||
: సరిహద్దుల లెక్కలు
|
||||
: స్థాన ట్రాకింగ్
|
||||
: పరిమాణ నిర్వహణ
|
||||
|
||||
section Algorithm Design (20 minutes)
|
||||
Intersection Logic: విడగొట్టడం పరీక్ష
|
||||
: ఓవర్లాప్ గుర్తింపు
|
||||
: పనితీరు మెరుగుపరచడం
|
||||
: ఎడ్జ్ కేస్ నిర్వహణ
|
||||
|
||||
section Game Implementation (30 minutes)
|
||||
Object Systems: జీవ చక్ర నిర్వహణ
|
||||
: ఈవెంట్ సమన్వయం
|
||||
: స్థాయి ట్రాకింగ్
|
||||
: మెమొరీ క్లీన్-అప్
|
||||
|
||||
section Interactive Features (40 minutes)
|
||||
Combat Mechanics: ప్రాజెక్టైల్ సిస్టమ్స్
|
||||
: ఆయుధ కొలమానాలు
|
||||
: నష్టం లెక్కింపు
|
||||
: దృశ్య స్పందన
|
||||
|
||||
section Advanced Physics (50 minutes)
|
||||
Real-time Systems: ఫ్రేమ్ రేట్ ఆప్టిమైజేషన్
|
||||
: స్థల విభజన
|
||||
: సంభటన స్పందన
|
||||
: ఫిజిక్స్ సిమ్యులేషన్
|
||||
|
||||
section Professional Techniques (1 week)
|
||||
Game Engine Concepts: కాంపోనెంట్ సిస్టమ్స్
|
||||
: ఫిజిక్స్ పైప్లైన్స్
|
||||
: పనితీరు ప్రొఫైలింగ్
|
||||
: క్రాస్-ప్లాట్ఫార్మ్ ఆప్టిమైజేషన్
|
||||
|
||||
section Industry Applications (1 month)
|
||||
Production Skills: పెద్ద ఎత్తున ఆప్టిమైజేషన్
|
||||
: జట్టు సహకారం
|
||||
: ఇంజిన్ అభివృద్ధి
|
||||
: ప్లాట్ఫార్మ్ విడుదల
|
||||
```
|
||||
### 🛠️ మీ గేమ్ ఫిజిక్స్ టూల్కిట్ సారాంశం
|
||||
|
||||
ఈ పాఠం పూర్తి చేసిన తరువాత, మీరు నాకు పూర్తి వచ్చారు:
|
||||
- **సన్నికిత గణితం**: చతురస్ర క్రాస్చెక్ అల్గోరిథమ్స్ మరియు కోఆర్డినేట్ సిస్టమ్స్
|
||||
- **పనితన ఆప్టిమైజేషన్**: ప్రత్యక్ష అప్లికేషన్ల కోసం సమయానుగుణ సన్నికిత గుర్తింపు సామర్థ్యం
|
||||
- **వస్తువు జీవితచక్ర నిర్వహణ**: సురక్షితమైన సృష్టి, నవీకరణ మరియు ధ్వంసం నమూనాలు
|
||||
- **సంఘటన ఆధారిత నిర్మాణం**: సన్నికిత ప్రతిస్పందన కొరకు డీకపుల్ చేసిన వ్యవస్థలు
|
||||
- **గేమ్ లూప్ సమ్మేళనం**: ఫ్రేమ్ ఆధారిత ఫిజిక్స్ నవీకరణలు మరియు రెండరింగ్ సమన్వయం
|
||||
- **ఇన్పుట్ సిస్టమ్స్**: స్పందనాత్మక నియంత్రణలు రేటు పరిమితి మరియు అభిప్రాయం తో
|
||||
- **మెమరీ నిర్వహణ**: సమర్థవంతమైన వస్తువు పూలింగ్ మరియు శుభ్రపరిచే వ్యూహాలు
|
||||
|
||||
**వాస్తవ ప్రపంచ అప్లికేషన్లు**: మీ సన్నికిత గుర్తింపు నైపుణ్యాలు నేరుగా వర్తిస్తాయి:
|
||||
- **ఇంటరాక్టివ్ సిమ్యులేషన్లు**: శాస్త్రీయ నమూనాలు మరియు విద్యా ఉపకరణాలు
|
||||
- **వినియోగదార ఇన్ఫర్ఫేస్ డిజైన్**: డ్రాగ్-అండ్-డ్రాప్ మరియు టచ్ గుర్తింపు
|
||||
- **డేటా విజువలైజేషన్**: ఇంటరాక్టివ్ చార్టులు మరియు క్లిక్ చేయదగిన అంశాలు
|
||||
- **మొబైల్ డెవలప్మెంట్**: టచ్ జెస్చర్ గుర్తింపు మరియు సన్నికిత నిర్వహణ
|
||||
- **రోబోటిక్స్ ప్రోగ్రామింగ్**: మార్గ ప్రణాళిక మరియు ఆటంక నివారణ
|
||||
- **కంప్యూటర్ గ్రాఫిక్స్**: రే ట్రేసింగ్ మరియు స్థల అల్గోరిథంలు
|
||||
|
||||
**వృత్తిపరమైన నైపుణ్యాలు పొందినవి**: మీరు ఇప్పుడే చేయగలరు:
|
||||
- **డిజైన్** సమయానుగుణ సన్నికిత గుర్తింపుకు సమర్థమైన అల్గోరిథంలు
|
||||
- **అంశాల సంక్లిష్టతతో మరింత స్కేల్ అయ్యే ఫిజిక్స్ సిస్టమ్స్ అమలు
|
||||
- **సాంకేతిక - గణిత సూత్రాలతో సంక్లిష్ట పరస్పర వ్యవస్థలను డీబగ్ చేయండి
|
||||
- **వివిధ హార్డ్వేర్ మరియు బ్రౌజర్ సామర్థ్యాలకు పనితనాన్ని ఆప్టిమైజ్ చేయండి
|
||||
- **ఆర్కిటెక్చర్** నిరూపిత డిజైన్ నమూనాలతో నిర్వహించదగిన గేమ్ వ్యవస్థలు
|
||||
|
||||
**గేమ్ డెవలప్మెంట్ కాన్సెప్ట్లు నేర్చుకున్నవి**:
|
||||
- **ఫిజిక్స్ సిమ్యులేషన్**: ప్రత్యక్ష సన్నికిత గుర్తింపు మరియు స్పందన
|
||||
- **పనితన ఇంజనీరింగ్**: ఇంటరాక్టివ్ అప్లికేషన్లకు ఆప్టిమైజ్ చేసిన అల్గోరిథమ్స్
|
||||
- **సంఘటన వ్యవస్థలు**: గేమ్ భాగాల మధ్య డీకపుల్ చేసిన కమ్యూనికేషన్
|
||||
- **వస్తువు నిర్వహణ**: గతి చెందిన విషయాల కోసం సమర్థవంతమైన జీవిత చక్ర నమూనాలు
|
||||
- **ఇన్పుట్ హ్యాండ్లింగ్**: సరైన అభిప్రాయం తో స్పందనాత్మక నియంత్రణలు
|
||||
|
||||
**తరువాతి దశ**: మీరు Matter.js వంటి అధునాతన ఫిజిక్స్ ఇంజన్లను అన్వేషించడానికి, 3D సన్నికిత గుర్తింపును అమలు చేయడానికి లేదా సంక్లిష్ట పార్టికల్ సిస్టమ్స్ నిర్మించడానికి సిద్దంగా ఉన్నారు!
|
||||
|
||||
🌟 **సాఫల్యం సాధించారు**: మీరు వృత్తిపరమైన స్థాయి సన్నికిత గుర్తింపు కలిగిన పూర్తి ఫిజిక్స్ ఆధారిత ఇంటరాక్షన్ సిస్టమ్ ని నిర్మించారు!
|
||||
|
||||
## GitHub Copilot ఏజెంట్ ఛాలెంజ్ 🚀
|
||||
|
||||
క్రింది ఛాలెంజ్ పూర్తి చేయడానికి ఏజెంట్ మోడ్ ఉపయోగించండి:
|
||||
|
||||
**వివరణ:** హీరో నౌక ద్వారా సేకరించబడినప్పుడు తాత్కాలిక సామర్థ్యాలు కలిగిన పవర్-అప్స్ యాదృచ్ఛికంగా ఉత్పత్తి అయ్యేలా సన్నికిత గుర్తింపు వ్యవస్థను బలోపేతం చేయండి.
|
||||
|
||||
**ప్రాంప్ట్:** గేమ్ఆబ్జెక్ట్ని విస్తరించే PowerUp తరగతిని సృష్టించి, హీరో మరియు పవర్-అప్స్ మధ్య సన్నికిత గుర్తింపును అమలు చేయండి. కనీసం రెండు రకాల పవర్-అప్స్ జోడించండి: ఒకటి అగ్ని వేగాన్ని పెంచుతుందని (కూల్డౌన్ తగ్గిస్తుంది) మరియు మరొకటి తాత్కాలిక షీల్డ్ సృష్టిస్తుంది. యాదృచ్ఛిక మధ్యంతరాలు మరియు స్థానాలలో పవర్-అప్స్ సృష్టించే స్పాన్ లాజిక్ చేర్చండి.
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
## 🚀 ఛాలెంజ్
|
||||
|
||||
ఒక పేలుడు జోడించండి! గేమ్ ఆసెట్లను [the Space Art repo](../../../../6-space-game/solution/spaceArt/readme.txt)లో చూడండి మరియు లేజర్ ఒక ఎలియన్ను తాకినప్పుడు పేలుడు జోడించడానికి ప్రయత్నించండి
|
||||
|
||||
## లెక్చర్ తర్వాత క్విజ్
|
||||
|
||||
[లెక్చర్ తర్వాత క్విజ్](https://ff-quizzes.netlify.app/web/quiz/36)
|
||||
|
||||
## సమీక్ష & స్వీయ అధ్యయనం
|
||||
|
||||
ఇప్పటి వరకు మీ గేమ్లో విరామాలను ప్రయోగించండి. వాటిని మార్చినప్పుడు ఏమి జరుగుతుంది? [JavaScript టైమింగ్ ఈవెంట్ల గురించి](https://www.freecodecamp.org/news/javascript-timing-events-settimeout-and-setinterval/) మరింత చదవండి.
|
||||
|
||||
## అసైన్మెంట్
|
||||
|
||||
[సన్నికితలను అన్వేషించండి](assignment.md)
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**త్యాగపత్రం**:
|
||||
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించారు. మేము సరిగా ఉండేందుకు ప్రయత్నించినప్పటికీ, స్వయం క్రియ అనువాదాలలో లోపాలు లేదా అసత్యతలు ఉండే అవకాశం ఉంది. అసలు పత్రం దాని స్థానిక భాషలోనే ప్రామాణికమైన మూలాధారం కావాలి. అత్యవసర సమాచారం కోసం, నిపుణుల చేత మనవదానం సిఫార్సు చేయబడింది. ఈ అనువాదం వాడకం కారణంగా ఏమైన అవగాహన లోపాలు లేదా తప్పు అర్థగ్రహణలకు మేము బాధ్యులు కాదు.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,64 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "124efddbb65166cddb38075ad6dae324",
|
||||
"translation_date": "2026-01-08T13:36:02+00:00",
|
||||
"source_file": "6-space-game/4-collision-detection/assignment.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# ఢీక్కులు అన్వేషించండి
|
||||
|
||||
## సూచనలు
|
||||
|
||||
విభిన్న రకాల ఆబ్జెక్ట్ సంభాషణలను చూపించేందుకు మీ ఢీక్కు గుర్తింపు జ్ఞానాన్ని ఉపయోగించి ఒక సాంప్రదాయ మిని-గేమ్ సృష్టించండి. ఈ అసైన్మెంట్ సృజనాత్మక అమలుతో మరియు ప్రయోగంతో ఢీక్కు యాంత్రిక బోధనలను అర్థం చేసుకోవడంలో మీకు సహాయపడుతుంది.
|
||||
|
||||
### ప్రాజెక్ట్ అవసరాలు
|
||||
|
||||
**క్రింది వాటిని కలిగి ఉన్న ఒక చిన్న ఇంటరాక్టివ్ గేమ్ తయారు చేయండి:**
|
||||
- **కీఫోర్డ్ లేదా మౌస్ ఇన్పుట్ ద్వారా నియంత్రించగల బహుళ చలన ఆబ్జెక్టులు**
|
||||
- **పాఠ్యంలోని చతురస్ర సందర్షణ సిద్దాంతాలను ఉపయోగించి ఢీక్కు గుర్తింపు వ్యవస్థ**
|
||||
- **ఢీక్కులు సంభవించినప్పుడు దృశ్యప్రతిస్పందన (ఆబ్జెక్ట్ ధ్వంసం, రంగుల మార్పులు, ప్రభావాలు)**
|
||||
- **ఢీక్కులు అర్థవంతమయిన మరియు ఆకర్షణీయమైనవి చేసే గేమ్ నియమాలు**
|
||||
|
||||
### సృజనాత్మక సూచనలు
|
||||
|
||||
**ఈ దృశ్యాలలో ఒక్కటిని అమలు చేయడం గురించి పరిగణించండి:**
|
||||
- **ఆస్టరాయిడ్ ఫీల్డ్**: ప్రమాదకర అంతరిక్ష శిఖరాల మధ్య ఒక నౌకను నడపండి
|
||||
- **బంపర్ కార్లు**: భౌతిక ఆధారిత ఢీక్కు అరణ్యం సృష్టించండి
|
||||
- **మీటియర్ రక్షణ**: భూమిని వస్తున్న అంతరిక్ష రాళ్ళ నుండి రక్షించండి
|
||||
- **సేకరణ గేమ్**: అడ్డంకులను దాటుకొని వస్తువులను సేకరించండి
|
||||
- **ప్రాంత నియంత్రణ**: స్థలాన్ని ఆక్రమించేందుకు పోటీ పడే ఆబ్జెక్టులు
|
||||
|
||||
### సాంకేతిక అమలు
|
||||
|
||||
**మీ పరిష్కారం కింద ఉన్నవి చూపించాలి:**
|
||||
- చతురస్ర ఆధారిత ఢీక్కు గుర్తింపు సరైన వినియోగం
|
||||
- వినియోగదారు ఇన్పుట్ కొరకు ఈవెంట్-డ్రివన్ ప్రోగ్రామింగ్
|
||||
- ఆబ్జెక్ట్ జీవ చక్రం నిర్వహణ (సృష్టి మరియు ధ్వంసం)
|
||||
- సరైన క్లాస్ నిర్మాణంతో సాఫీగా క్రమబద్దీకరించిన కోడ్
|
||||
|
||||
### బోనస్ సవాళ్లు
|
||||
|
||||
**మరిన్ని ఫీచర్లతో మీ గేమ్ను మెరుగుపరచండి:**
|
||||
- ఢీక్కులు సంభవించినప్పుడు పార్టికల్ ప్రభావాలు
|
||||
- వివిధ ఢీక్కు రకాల కొరకు శబ్ద ప్రభావాలు
|
||||
- ఢీక్కు ఫలితాల ఆధారంగా స్కోరింగ్ వ్యవస్థ
|
||||
- విభిన్న ప్రవర్తనలతో బహుళ ఢీక్కు రకాలు
|
||||
- కాలంతో పెరుగుతున్న కఠినత స్థాయి
|
||||
|
||||
## రుబ్రిక్
|
||||
|
||||
| ప్రమాణాలు | ఉత్తమంగా | తగినంత | మెరుగుపరచాలి |
|
||||
|----------|-----------|----------|-------------------|
|
||||
| **ఢీక్కు గుర్తింపు** | బహుళ ఆబ్జెక్ట్ రకాలుతో మరియు జఠిల సంభాషణ నియమాలతో ఖచ్చితమైన చతురస్ర ఆధారిత ఢీక్కు గుర్తింపును అమలు చేస్తుంది | సాదారణ ఆబ్జెక్ట్ సంభాషణలతో ప్రాథమిక ఢీక్కు గుర్తింపు సరిగ్గా పనిచేస్తుంది | ఢీక్కు గుర్తింపులో సమస్యలు ఉన్నవి లేదా స్థిరంగా పనిచేయవు |
|
||||
| **కోడ్ నాణ్యత** | సరైన క్లాస్ నిర్మాణంతో, అర్థవంతమైన వేరియబుల్ పేర్లతో, తగిన వ్యాఖ్యలతో శుభ్రమైన, బాగుగా గుండా నిర్వహించిన కోడ్ | కోడ్ పనిచేస్తుంది కానీ బాగా సక్రమీకరించబడలేదు లేదా దస్తావేజు చేయబడలేదు | కోడ్ అర్థం చేసుకోవడానికి కష్టం లేదా అనాaysුතු నిర్మాణం కలిగి ఉంది |
|
||||
| **వినియోగదారు సంభాషణ** | సున్నితమైన నియంత్రణలతో, సాఫీ గేమ్ప్లే, స్పష్టమైన దృశ్య ప్రతిస్పందన మరియు ఆకర్షణీయ యాంత్రికతలు | ప్రాథమిక నియంత్రణలు సరైన ప్రతిస్పందనతో పనిచేస్తాయి | నియంత్రణలు స్పందనలేని లేదా గందరగోళంగా ఉన్నాయి |
|
||||
| **సృజనాత్మకత** | ప్రత్యేక లక్షణాలు, దృశ్య పూర్ణత మరియు సృజనాత్మక ఢీక్కు ప్రవర్తనలతో అసలు ఆలోచన | కొన్ని సృజనాత్మక అంశాలతో ప్రామాణిక అమలు | సృజనాత్మక మెరుగుదలలില്ലిన ప్రాథమిక కార్యాచరణ |
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**డిస్క్లెయిమర్**:
|
||||
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువాదం చేశారు. మేము ఖచ్చితత కోసం ప్రయత్నిస్తున్నప్పటికీ, ఆటోమేటెడ్ అనువాదాలలో లోపాలు లేదా అసమతుల్యతలు ఉండే అవకాశముందని దయచేసి గమనించండి. స్వ ভাষలో ఉన్న అసలు పత్రమే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారం కోసం, వృత్తిపరమైన మానవ అనువాదం చేయించడం సిఫార్సు చేయబడింది. ఈ అనువాదం వాడకం నుండి ఉత్పన్నమయ్యే ఏవైనా అవగాహన లోపాలు లేదా తప్పుగా అర్థం చేసుకోవడాల పట్ల మేము బాధ్యులము కం.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,510 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "2ed9145a16cf576faa2a973dff84d099",
|
||||
"translation_date": "2026-01-08T14:08:34+00:00",
|
||||
"source_file": "6-space-game/5-keeping-score/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# ఒక స్పేస్ గేమ్ను నిర్మించండి భాగం 5: స్కోరింగ్ మరియు లైఫ్స్
|
||||
|
||||
```mermaid
|
||||
journey
|
||||
title మీ గేమ్ డిజైన్ ప్రయాణం
|
||||
section ప్లేయర్ అభిప్రాయం
|
||||
అంకెల మానసికతను అర్థం చేసుకొనడం: 3: Student
|
||||
దృశ్య కమ్యూనికేషన్ నేర్చుకోండి: 4: Student
|
||||
రివార్డ్ సిస్టమ్స్ రూపకల్పన: 4: Student
|
||||
section సాంకేతిక అమలు
|
||||
కాన్వాస్ టెక్స్ట్ రెండరింగ్: 4: Student
|
||||
స్టేట్ నిర్వహణ: 5: Student
|
||||
ఈవెంట్-చేరిన నవీకరణలు: 5: Student
|
||||
section గేమ్ పాలిష్
|
||||
వినియోగదారు అనుభవం డిజైన్: 5: Student
|
||||
సవాలు మరియు బహుమతులను సుమతించడం: 5: Student
|
||||
ఆసక్తికరమైన గేమ్ ప్లే రూపొందించండి: 5: Student
|
||||
```
|
||||
## ప్రీ-లెక్చర్ క్విజ్
|
||||
|
||||
[ప్రీ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/web/quiz/37)
|
||||
|
||||
మీ స్పేస్ గేమ్ నిజమైన గేమ్లాగా అనిపించేలా చేయడానికి సిద్ధంగా ఉన్నారా? ఇది స్కోరింగ్ పాయింట్లు మరియు లైఫ్స్ నిర్వహణను జోడిద్దాం—ప్రాథమిక ఆట మెకానిక్స్, ఇది ప్రాథమిక ఆర్కేడ్ గేమ్స్ వంటి స్పేస్ ఇన్వేడర్స్లను సాదా ప్రదర్శనల నుండి వ్యసనపూర్వక వినోదంగా మార్చింది. ఇక్కడే మీ గేమ్ నిజంగా ఆడగలదిగా మారుతుంది.
|
||||
|
||||
```mermaid
|
||||
mindmap
|
||||
root((గేమ్ ఫీడ్బ్యాక్ సిస్టమ్స్))
|
||||
Visual Communication
|
||||
టెక్స్ట్ రిండరింగ్
|
||||
చిహ్న ప్రదర్శన
|
||||
రంగు మానసిక శాస్త్రం
|
||||
లేఅవుట్ డిజైన్
|
||||
Scoring Mechanics
|
||||
పాయింట్ విలువలు
|
||||
రివార్డ్ సమయం
|
||||
పురోగతి ట్రాకింగ్
|
||||
సాధన సిస్టమ్స్
|
||||
Life Management
|
||||
రిస్క్ వర్సెస్ రివార్డ్
|
||||
ప్లేయర్ ఏజెన్సీ
|
||||
కష్టతల సంతులనం
|
||||
రికవరీ మెకానిక్స్
|
||||
User Experience
|
||||
తక్షణ ఫీడ్బ్యాక్
|
||||
స్పష్టమైన సమాచారం
|
||||
భావోద్వేగ ప్రతిస్పందన
|
||||
ఎంగేజ్మెంట్ లూప్స్
|
||||
Implementation
|
||||
క్యాన్వాస్ API
|
||||
స్టేట్ మేనేజ్మెంట్
|
||||
ఈవెంట్ సిస్టమ్స్
|
||||
పనితీరు
|
||||
```
|
||||
## స్క్రీన్ పై టెక్స్ట్ డ్రాయింగ్ - మీ గేమ్ యొక్క వోయిస్
|
||||
|
||||
మీ స్కోర్ను ప్రదర్శించడానికి, కేన్వాస్ పై టెక్స్ట్ ఎలా ఆకృతీకరించాలో నేర్చుకోవాలి. `fillText()` మెథడ్ మీ ప్రధాన సాధనం ఇది - స్కోర్స్, స్థితి సమాచారం చూపించడానికి క్లాసిక్ ఆర్కేడ్ గేమ్స్ ఉపయోగించిన అదే పద్ధతి.
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A["📝 పఠ్యపు విషయము"] --> B["🎨 శైలి"]
|
||||
B --> C["📍 స్థానం నిర్ణయం"]
|
||||
C --> D["🖼️ కేన్వాస్ ప్రదర్శన"]
|
||||
|
||||
E["ఫాంట్ కుటుంబం"] --> B
|
||||
F["ఫాంట్ పరిమాణం"] --> B
|
||||
G["రంగు"] --> B
|
||||
H["సమమానం"] --> B
|
||||
|
||||
I["X సమన్వయం"] --> C
|
||||
J["Y సమన్వయం"] --> C
|
||||
|
||||
style A fill:#e3f2fd
|
||||
style B fill:#e8f5e8
|
||||
style C fill:#fff3e0
|
||||
style D fill:#f3e5f5
|
||||
```
|
||||
మీ టెక్స్ట్ రంగురూపాన్ని పూర్తిగా నియంత్రించుకోవచ్చు:
|
||||
|
||||
```javascript
|
||||
ctx.font = "30px Arial";
|
||||
ctx.fillStyle = "red";
|
||||
ctx.textAlign = "right";
|
||||
ctx.fillText("show this on the screen", 0, 0);
|
||||
```
|
||||
|
||||
✅ [కేన్వాస్ పై టెక్స్ట్ జోడించడం](https://developer.mozilla.org/docs/Web/API/Canvas_API/Tutorial/Drawing_text) లో మరింత లోతుగా దూకండి — ఫాంట్లు మరియు స్టైలింగ్తో మీరు ఎంత సృజనాత్మకంగా ఉండవచ్చో మీరు ఆశ్చర్యపడేరు!
|
||||
|
||||
## లైఫ్స్ - కేవలం సంఖ్య మాత్రమే కాదు
|
||||
|
||||
గేమ్ డిజైన్లో, "లైఫ్" అంటే ప్లేయర్ కు తప్పుల కోసం వచ్చిన అవకాశం. ఈ భావన పిన్బాల్ మెషీన్ల నుండి వచ్చింద, అక్కడ మీరు పలు బంతులు ఆడటానికి అందేవి. ప్రాథమిక వీడియో గేమ్స్ అయిన అస్టెరాయిడ్స్ వంటివి లో, లైఫ్స్ ప్లేయర్లకు ప్రమాదాలను తీసుకోవడానికి మరియు తప్పుల నుండి నేర్చుకోడానికి అనుమతి ఇచ్చేవి.
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A["🎮 ప్లేయర్ చర్య"] --> B{"రిస్క్ అంచనాలు"}
|
||||
|
||||
B --> C["ఎక్కువ ప్రమాదం, భారీ బహుమతి"]
|
||||
B --> D["భద్రమైన వ్యూహం"]
|
||||
|
||||
C --> E{"ఫలితం"}
|
||||
D --> F["స్థిర ప్రగతి"]
|
||||
|
||||
E -->|విజయం| G["🏆 పెద్ద పాయింట్లు"]
|
||||
E -->|పోగొట్టు| H["💔 జీవితం కోల్పోవడం"]
|
||||
|
||||
H --> I{"జీవితాలు మిగిలి ఉన్నాయా?"}
|
||||
I -->|అవును| J["🔄 మళ్ళీ ప్రయత్నించు"]
|
||||
I -->|కాదు| K["💀 గేమ్ ముగిసింది"]
|
||||
|
||||
J --> B
|
||||
G --> B
|
||||
F --> B
|
||||
|
||||
style C fill:#ffebee
|
||||
style D fill:#e8f5e8
|
||||
style G fill:#e3f2fd
|
||||
style H fill:#fff3e0
|
||||
```
|
||||
ప్రతీతి ప్రదర్శన చాలా ముఖ్యంగా ఉంటుంది - కేవలం "లైవ్స్: 3" అని చెప్పడం కంటే షిప్ ఐకాన్లను చూపించడం వెంటనే దృశ్య గుర్తింపును కల్పిస్తుంది, ఇదే విధంగా ప్రారంభ ఆర్కేడ్ క్యాబినెట్లు భాషా అడ్డంకులెక్కించేందుకు ఐకనోగ్రఫీ ఉపయోగించేవి.
|
||||
|
||||
## మీ గేమ్ యొక్క రివార్డు సిస్టమ్ నిర్మాణం
|
||||
|
||||
ఇప్పుడు మేము ఆటగాళ్లను ఆకట్టుకొనే ప్రాథమిక ఫీడ్బ్యాక్ సిస్టమ్స్ను అమలు చేయబోతున్నాము:
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant Player
|
||||
participant GameEngine
|
||||
participant ScoreSystem
|
||||
participant LifeSystem
|
||||
participant Display
|
||||
|
||||
Player->>GameEngine: శత్రువు పైశించినాడు
|
||||
GameEngine->>ScoreSystem: పాయింట్లు జీతంగా ఇవ్వండి
|
||||
ScoreSystem->>ScoreSystem: +100 పాయింట్లు
|
||||
ScoreSystem->>Display: స్కోర్ని నవీకరించండి
|
||||
|
||||
Player->>GameEngine: శత్రువుతో 충돌నిచ్చాడు
|
||||
GameEngine->>LifeSystem: జీవితం కోల్పోండి
|
||||
LifeSystem->>LifeSystem: -1 జీవితం
|
||||
LifeSystem->>Display: జీవితం నవీకరించండి
|
||||
|
||||
alt Lives > 0
|
||||
LifeSystem->>Player: ఆడటం కొనసాగించు
|
||||
else Lives = 0
|
||||
LifeSystem->>GameEngine: ఆట ముగిసింది
|
||||
end
|
||||
```
|
||||
- **స్కోరింగ్ సిస్టమ్**: ప్రతీ ధ్వంసమైన శత్రు నౌక 100 పాయింట్లు అందిస్తుంది (మూర్ఖ సంఖ్యలు ప్లేయర్లకు మానసికంగా లెక్కించడానికి సులభం). స్కోర్ కింద ఎడమ మూలలో ప్రదర్శించబడుతుంది.
|
||||
- **లైఫ్ కౌంటర్**: మీ హీరో మూడు లైఫ్స్తో ప్రారంభమవుతాడు—ఇది ప్రాథమిక ఆర్కేడ్ గేమ్స్ ద్వారా స్తాపించబడిన ప్రమాణం, ఇది సవాలు మరియు ఆడగలిగే సామర్థ్యాన్ని సమతుల్యం చేస్తుంది. శత్రు తో ప్రతి ఢీ కొట్టు ఒక లైఫ్ను తగ్గిస్తుంది. మిగిలిన లైఫ్స్ కుడి కింద షిప్ ఐకాన్లతో చూపిస్తాము .
|
||||
|
||||
## మొదలు చేద్దాం!
|
||||
|
||||
ముందుగా, మీ వర్క్స్పేస్ సెట్ చేయండి. మీ `your-work` సబ్ ఫోల్డర్లోని ఫైళ్లకు వెళ్లండి. మీరు ఈ ఫైల్స్ చూడాలి:
|
||||
|
||||
```bash
|
||||
-| assets
|
||||
-| enemyShip.png
|
||||
-| player.png
|
||||
-| laserRed.png
|
||||
-| index.html
|
||||
-| app.js
|
||||
-| package.json
|
||||
```
|
||||
|
||||
మీ గేమ్ను పరీక్షించడానికి, `your_work` ఫోల్డర్ నుండి డెవలప్మెంట్ సర్వర్ను ప్రారంభించండి:
|
||||
|
||||
```bash
|
||||
cd your-work
|
||||
npm start
|
||||
```
|
||||
|
||||
ఇది `http://localhost:5000` లో ఒక లోకల్ సర్వర్ను నడపుతుంది. మీ బ్రౌజర్లో ఈ అడ్రస్ను తెరిచి మీ గేమ్ను చూడండి. అరో కీలు తో కంట్రోల్స్ను టెస్ట్ చేయండి మరియు శత్రువులను కాల్చి మీ గేమ్ సరిగ్గా పనిచేస్తుందో తనిఖీ చేయండి.
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A["1. ఆస్తి లోడ్ చేయడం"] --> B["2. గేమ్ వేరియబుల్లు"]
|
||||
B --> C["3. ఢీగ అంశ గుర్తింపు"]
|
||||
C --> D["4. హీరో అభివృద్ధి"]
|
||||
D --> E["5. ప్రదర్శన ఫంక్షన్లు"]
|
||||
E --> F["6. ఈవెంట్ హ్యాండిలర్లు"]
|
||||
|
||||
G["జీవిత చిహ్నం చిత్రం"] --> A
|
||||
H["స్కోరు & జీవితం ట్రాకింగ్"] --> B
|
||||
I["హీరో-శత్రువు కతలచేలు"] --> C
|
||||
J["పాయింట్లు & జీవితం విధానాలు"] --> D
|
||||
K["పాఠ్యం & చిహ్నం రేందరింగ్"] --> E
|
||||
L["ఇనామం & శిక్ష లాజిక్"] --> F
|
||||
|
||||
F --> M["🎮 పూర్తి గేమ్"]
|
||||
|
||||
style A fill:#e3f2fd
|
||||
style B fill:#e8f5e8
|
||||
style C fill:#fff3e0
|
||||
style D fill:#f3e5f5
|
||||
style E fill:#e0f2f1
|
||||
style F fill:#fce4ec
|
||||
style M fill:#e1f5fe
|
||||
```
|
||||
### కోడ్ టైమ్!
|
||||
|
||||
1. **మీకు కావలసిన దృశ్య ఆస్తులు అందుకోండి**. `solution/assets/` ఫోల్డర్ నుండి `life.png` ఆస్తిని మీ `your-work` ఫోల్డర్ లోకి కాపీ చేయండి. తర్వాత lifeImg ను మీ window.onload ఫంక్షన్లో జోడించండి:
|
||||
|
||||
```javascript
|
||||
lifeImg = await loadTexture("assets/life.png");
|
||||
```
|
||||
|
||||
1. మీ ఆస్తుల జాబితాలో `lifeImg` జోడించడం మరువకండి:
|
||||
|
||||
```javascript
|
||||
let heroImg,
|
||||
...
|
||||
lifeImg,
|
||||
...
|
||||
eventEmitter = new EventEmitter();
|
||||
```
|
||||
|
||||
2. **మీ గేమ్ వేరియబుల్స్ సెట్ చేయండి**. మొత్తం స్కోరు (0 నుండి ప్రారంభం) మరియు మిగిలిన లైఫ్స్ (3 తో ప్రారంభం) ను ట్రాక్ చేయడానికి కొడ్ జోడించండి. ప్లేయర్లు ఎల్లప్పుడూ తమ స్థితి తెలిసేలా స్క్రీన్పై వీటిని చూపిస్తాము.
|
||||
|
||||
3. **ఢీ కొట్టు గుర్తింపు అమలు చేయండి**. మీ `updateGameObjects()` ఫంక్షన్ను పొడగించి శత్రువులు మీ హీరోతో ఢీ కొట్టినప్పుడు గుర్తించండి:
|
||||
|
||||
```javascript
|
||||
enemies.forEach(enemy => {
|
||||
const heroRect = hero.rectFromGameObject();
|
||||
if (intersectRect(heroRect, enemy.rectFromGameObject())) {
|
||||
eventEmitter.emit(Messages.COLLISION_ENEMY_HERO, { enemy });
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
4. **మీ హీరోకి లైఫ్ మరియు పాయింట్ల ట్రాకింగ్ జోడించండి**.
|
||||
1. **కౌంటర్స్ ప్రారంభించండి**. మీ `Hero` క్లాస్లో `this.cooldown = 0` కింద, లైఫ్ మరియు పాయింట్లను సెట్ చేయండి:
|
||||
|
||||
```javascript
|
||||
this.life = 3;
|
||||
this.points = 0;
|
||||
```
|
||||
|
||||
1. **ప్లేయర్ కు ఈ విలువలు చూపించండి**. స్క్రీన్పై ఈ విలువలను డ్రా చేయడానికి ఫంక్షన్లు సృష్టించండి:
|
||||
|
||||
```javascript
|
||||
function drawLife() {
|
||||
// చేయవలసినది, 35, 27
|
||||
const START_POS = canvas.width - 180;
|
||||
for(let i=0; i < hero.life; i++ ) {
|
||||
ctx.drawImage(
|
||||
lifeImg,
|
||||
START_POS + (45 * (i+1) ),
|
||||
canvas.height - 37);
|
||||
}
|
||||
}
|
||||
|
||||
function drawPoints() {
|
||||
ctx.font = "30px Arial";
|
||||
ctx.fillStyle = "red";
|
||||
ctx.textAlign = "left";
|
||||
drawText("Points: " + hero.points, 10, canvas.height-20);
|
||||
}
|
||||
|
||||
function drawText(message, x, y) {
|
||||
ctx.fillText(message, x, y);
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
1. **అన్ని ఫంక్షన్స్ను మీ గేమ్ లూప్తో హుక్ చేయండి**. `updateGameObjects()` తరువాత window.onload ఫంక్షన్లో ఈ ఫంక్షన్స్ను జోడించండి:
|
||||
|
||||
```javascript
|
||||
drawPoints();
|
||||
drawLife();
|
||||
```
|
||||
|
||||
### 🔄 **బోధనా తనిఖీ**
|
||||
**గేమ్ డిజైన్ అవగాహన**: ఫలితాలను అమలు ముందు మీరు అర్థం చేసుకోవాలి:
|
||||
- ✅ దృశ్య ఫీడ్బ్యాక్ ఎలా ప్లేయర్ స్థితిని తెలియజేస్తుంది
|
||||
- ✅ UI అంశాల సారూప్యత ఎందుకు ఉపయోగకరం
|
||||
- ✅ పాయింట్ విలువలు మరియు లైఫ్ నిర్వహణ వెనుక సైకాలజీ
|
||||
- ✅ కేన్వాస్ టెక్స్ట్ రెండరింగ్ మరియు HTML టెక్స్ట్ వ్యత్యాసం
|
||||
|
||||
**త్వరిత స్వీయ-పరీక్ష**: శత్రు నిషేధాలలో ఆర్కేడ్ గేమ్స్ సాధారణంగా మూర్ఖ సంఖ్యలను ఎందుకు ఉపయోగిస్తాయి?
|
||||
*జవాబు: మూర్ఖ సంఖ్యలు ప్లేయర్లకి మానసికంగా సులభంగా లెక్కించుకోవడానికి మరియు సంతృప్తికరమైన మానసిక బహుమతులను సృష్టిస్తాయి*
|
||||
|
||||
**వినియోగదారు అనుభవ ప్రిన్సిపల్స్**: ఇప్పుడు మీరు ఉపయోగిస్తున్నారు:
|
||||
- **దృశ్య హయ్యరార్కీ**: ముఖ్య సమాచారం స్పష్టంగా ప్రదర్శించడం
|
||||
- **తక్షణ ఫీడ్బ్యాక్**: ప్లేయర్ చర్యలకు ప్రామాణిక అప్డేట్లు
|
||||
- **జ్ఞానం లోడింగ్**: సాదా, స్పష్టమైన సమాచారం ప్రదర్శన
|
||||
- **భావోద్వేగ డిజైన్**: ఐకాన్లు మరియు రంగులు ప్లేయర్ అనుబంధాన్ని కలుపుతాయి
|
||||
|
||||
1. **గేమ్ ఫలితాలు మరియు బహుమతులు అమలు చేయండి**. ఇప్పుడు మేము ప్లేయర్ చర్యలను అర్థవంతంగా చేయించే ఫీడ్బ్యాక్ సిస్టమ్స్ను జోడిస్తాము:
|
||||
|
||||
1. **ఢీ కొట్టడం లైఫ్స్ ను తగ్గిస్తుంది**. మీ హీరో ప్రతి సారి శత్రుతో ఢీ కొట్టినప్పుడు, మీకు ఒక లైఫ్ తప్పాలి.
|
||||
|
||||
దీనికి ఈ మెథడ్ను `Hero` క్లాస్లో జోడించండి:
|
||||
|
||||
```javascript
|
||||
decrementLife() {
|
||||
this.life--;
|
||||
if (this.life === 0) {
|
||||
this.dead = true;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
2. **శత్రువులను కాల్చడం పాయింట్లు ఇస్తుంది**. ప్రతీ విజయవంతమైన హిట్ 100 పాయింట్లను ఇస్తుంది, ఇది ఖచ్చితంగా కాల్చడం పై తక్షణం నకటివ్గా ఫీడ్బ్యాక్ ఇస్తుంది.
|
||||
|
||||
ఈ ఇన్క్రిమెంట్ మెథడ్ తో మీ Hero క్లాస్ను విస్తరించండి:
|
||||
|
||||
```javascript
|
||||
incrementPoints() {
|
||||
this.points += 100;
|
||||
}
|
||||
```
|
||||
|
||||
ఇప్పుడు ఈ ఫంక్షన్స్ను మీ ఢీ కొట్టు ఈవెంట్స్తో కలపండి:
|
||||
|
||||
```javascript
|
||||
eventEmitter.on(Messages.COLLISION_ENEMY_LASER, (_, { first, second }) => {
|
||||
first.dead = true;
|
||||
second.dead = true;
|
||||
hero.incrementPoints();
|
||||
})
|
||||
|
||||
eventEmitter.on(Messages.COLLISION_ENEMY_HERO, (_, { enemy }) => {
|
||||
enemy.dead = true;
|
||||
hero.decrementLife();
|
||||
});
|
||||
```
|
||||
|
||||
✅ JavaScript మరియు Canvas తో నిర్మించబడిన ఇతర గేమ్స్ గురించి ఆసక్తిగా ఉన్నారా? కొంత అన్వేషణ చేయండి - మీరు ఏమి సాధ్యం అవుతుందో ఆశ్చర్యపోతారు!
|
||||
|
||||
ఈ ఫీచర్లు అమలయ్యాక, మీ గేమ్ ను పరీక్షించండి పూర్తి ఫీడ్బ్యాక్ సిస్టమ్ను చూడడానికి. మీరు కుడి దిగువకు లైఫ్ ఐకాన్లు, ఎడమ దిగువకు స్కోర్ ను చూడాలి, ఢీ కొటాల వల్ల లైఫ్స్ తగ్గుతాయి మరియు విజయవంతమైన కాల్స్ స్కోర్ పెరుగుతుంటాయి.
|
||||
|
||||
మీ గేమ్ ఇప్పుడు ఆర్కేడ్ గేమ్స్కి స్ఫూర్తినిచ్చిన ముఖ్యమైన మెకానిక్స్ కలిగి ఉంది—స్పష్టమైన లక్ష్యాలు, తక్షణ ఫీడ్బ్యాక్, మరియు ఆటగాడు చర్యలకు అర్థవంతమైన ఫలితాలు.
|
||||
|
||||
### 🔄 **బోధనా తనిఖీ**
|
||||
**పూర్తి గేమ్ డిజైన్ సిస్టమ్**: ప్లేయర్ ఫీడ్బ్యాక్ సిస్టమ్స్ పై మీ మాస్టరీని నిర్ధారించండి:
|
||||
- ✅ స్కోరింగ్ మెకానిక్స్ ప్లేయర్ ప్రేరణ మరియు ఆసక్తి ఎలా సృష్టిస్తాయి?
|
||||
- ✅ వినియోగదారు ఇంటర్ఫేస్ డిజైన్లో దృశ్య సారూప్యత ఎందుకు ముఖ్యం?
|
||||
- ✅ లైఫ్ సిస్టమ్ సవాలు మరియు నిలుపుదలను ఎలా సమతౌల్యంగా ఉంచుతుందో?
|
||||
- ✅ తక్షణ ఫీడ్బ్యాక్ సంతృప్తికరమైన గేమ్ప్లే సృష్టించడంలో ఏ పాత్ర పోషిస్తోంది?
|
||||
|
||||
**సిస్టమ్ ఇంటగ్రేషన్**: మీ ఫీడ్బ్యాక్ సిస్టమ్ ప్రదర్శిస్తుంది:
|
||||
- **వినియోగదారు అనుభవ డిజైన్**: స్పష్టమైన దృశ్య కమ్యూనికేషన్ మరియు సమాచారం హయ్యరార్కీ
|
||||
- **ఈవెంట్-డ్రివెన్ ఆర్కిటెక్చర్**: ప్లేయర్ చర్యలకు స్పందించే అప్డేట్లు
|
||||
- **స్టేట్ మేనేజ్మెంట్**: డైనమిక్ గేమ్ డేటా ట్రాకింగ్ మరియు ప్రదర్శన
|
||||
- **కేన్వాస్ మాస్టరీ**: టెక్స్ట్ రెండరింగ్ మరియు స్ప్రైట్ పొజిషనింగ్
|
||||
- **గేమ్ సైకాలజీ**: ప్లేయర్ ప్రేరణ మరియు ఆసక్తి అర్థం చేసుకోవడం
|
||||
|
||||
**వృత్తిపరమైన నమూనాలు**: మీరు అమలుచేశారు:
|
||||
- **MVC ఆర్కిటెక్చర్**: గేమ్ లాజిక్, డేటా, మరియు ప్రదర్శన విడదీయడం
|
||||
- **ఆబ్జర్వర్ ప్యాటర్న్**: గేమ్ స్టేట్ మార్పుల పై ఈవెంట్-డ్రివెన్ అప్డేట్లు
|
||||
- **కంపోనెంట్ డిజైన్**: రీయూజబుల్ ఫంక్షన్స్ రెండరింగ్ మరియు లాజిక్ కోసం
|
||||
- **పర్ఫార్మెన్స్ ఆప్టిమైజేషన్**: గేమ్ లూప్స్లో సమర్థవంతమైన రెండరింగ్
|
||||
|
||||
### ⚡ **తదుపరి 5 నిమిషాల్లో మీరు చేయగలరు**
|
||||
- [ ] స్కోర్ ప్రదర్శనకు వివిధ ఫాంట్ పరిమాణాలు మరియు రంగులు ప్రయత్నించండి
|
||||
- [ ] పాయింట్ విలువలు మార్చి గేమ్ప్లే అనుభవాన్ని పరిశీలించండి
|
||||
- [ ] పాయింట్లు మరియు లైఫ్స్ మారినప్పుడు console.log స్టేట్మెంట్స్ జోడించండి
|
||||
- [ ] లైఫ్స్ అన్నయినప్పుడు లేదా అధిక స్కోర్లు సాధించినప్పుడు ఎడ్జ్ కేసెస్ను పరీక్షించండి
|
||||
|
||||
### 🎯 **ఈ గంటలో మీరు సాధించగలరు**
|
||||
- [ ] పోస్ట్-లెసన్ క్విజ్ పూర్తి చేసి గేమ్ డిజైన్ సైకాలజీ అర్థం చేసుకోవడం
|
||||
- [ ] స్కోరింగ్ మరియు లైఫ్స్ కోల్పోవడానికి సౌండ్ ఎఫెక్ట్స్ జోడించడం
|
||||
- [ ] localStorage ఉపయోగించి హై స్కోరు సిస్టమ్ అమలు చేయడం
|
||||
- [ ] విభిన్న శత్రు రకాల కోసం విభిన్న పాయింట్ విలువలు సృష్టించడం
|
||||
- [ ] లైఫ్ కోల్పోతున్నప్పుడు స్క్రీన్ షేక్స్ వంటి దృశ్య ప్రభావాలు జోడించడం
|
||||
|
||||
### 📅 **మీ వారాంత గేమ్ డిజైన్ ప్రయాణం**
|
||||
- [ ] పూర్తిగా పూర్తి స్పేస్ గేమ్ను అభివృద్ధి చేసి ఫీడ్బ్యాక్ సిస్టమ్స్ను మెరుగుపర్చడం
|
||||
- [ ] కాంబో మల్టిప్లయర్లు వంటి అధునాతన స్కోరింగ్ మెకానిక్స్ అమలు చేయడం
|
||||
- [ ] ఎచీవ్మెంట్స్ మరియు అన్లాకబుల్ కంటెంట్ జోడించడం
|
||||
- [ ] కష్టతరత మరియు సమతుల్యత సిస్టమ్స్ డిజైన్ చేయడం
|
||||
- [ ] మెనూలు మరియు గేమ్ ఓవర్ స్క్రీన్ల కోసం యూజర్ ఇంటర్ఫేస్లు రూపకల్పన చేయడం
|
||||
- [ ] ఇతర గేమ్స్ అధ్యయనం చేసి పాల్గొనే వ్యవస్థలను అర్థం చేసుకోవడం
|
||||
|
||||
### 🌟 **మీ నెలంత గేమ్ డెవలప్మెంట్ నైపుణ్యం**
|
||||
- [ ] సాంకీర్తిక ప్రగతి సిస్టమ్స్ తో పూర్తిగా గేమ్స్ నిర్మించడం
|
||||
- [ ] గేమ్ అనలిటిక్స్ మరియు ప్లేయర్ ప్రవర్తన కొలత నేర్చుకోవడం
|
||||
- [ ] ఓపెన్ సోర్స్ గేమ్ డెవలప్మెంట్ ప్రాజెక్ట్లకు సహకారం అందించడం
|
||||
- [ ] అధునాతన గేమ్ డిజైన్ నమూనాలు మరియు మోనిటైజేషన్ మాస్టరీ
|
||||
- [ ] గేమ్ డిజైన్ మరియు వినియోగదారు అనుభవంపై విద్యా కంటెంట్ సృష్టించడం
|
||||
- [ ] గేమ్ డిజైన్ మరియు డెవలప్మెంట్ నైపుణ్యాలను ప్రదర్శించే పోర్ట్ఫోలియో నిర్మించడం
|
||||
|
||||
## 🎯 మీ గేమ్ డిజైన్ మాస్టరీ టైమ్లైన్
|
||||
|
||||
```mermaid
|
||||
timeline
|
||||
title గేమ్ డిజైన్ & ప్లేయర్ ఫీడ్బ్యాక్ అభ్యాస పురోగతి
|
||||
|
||||
section ఫౌండేషన్ (10 నిమిషాలు)
|
||||
విజువల్ కమ్యూనికేషన్: టెక్స్ట్ చిత్రీకరణ
|
||||
: ఐకాన్ డిజైన్
|
||||
: లేఅవుట్ సూత్రాలు
|
||||
: రంగ psychology
|
||||
|
||||
section ప్లేయర్ సైకాలజీ (20 నిమిషాలు)
|
||||
ప్రేరణ వ్యవస్థలు: పాయింట్ విలువలు
|
||||
: ప్రమాదం వర్సెస్ బహుమతి
|
||||
: పురోగతి ఫీడ్బ్యాక్
|
||||
: సాధన డిజైన్
|
||||
|
||||
section సాంకేతిక అమలు (30 నిమిషాలు)
|
||||
క్యాన్వాస్ నైపుణ్యం: టెక్స్ట్ స్థానంలో ఉంచడం
|
||||
: స్ప్రైట్ చిత్రీకరణ
|
||||
: స్థితి నిర్వహణ
|
||||
: పనితీరు ఆప్టిమైజేషన్
|
||||
|
||||
section గేమ్ బ్యాలెన్స్ (40 నిమిషాలు)
|
||||
కఠినత డిజైన్: జీవితం నిర్వహణ
|
||||
: స్కోరింగ్ వక్రాలు
|
||||
: ప్లేయర్ నిల్వ
|
||||
: ప్రవేశం
|
||||
|
||||
section యూజర్ అనుభవం (50 నిమిషాలు)
|
||||
ఇంటర్ఫేస్ డిజైన్: సమాచారం శ్రేణి
|
||||
: ప్రతిస్పందన ఫీడ్బ్యాక్
|
||||
: భావోద్వేగ డిజైన్
|
||||
: ఉపయోగకరత పరీక్ష
|
||||
|
||||
section అధునాతన వ్యవస్థలు (1 వారం)
|
||||
గేమ్ మెకానిక్స్: పురోగతి వ్యవస్థలు
|
||||
: విశ్లేషణ సమ్మేళనం
|
||||
: ఆదాయ సిద్ధాంతం
|
||||
: కమ్యూనిటీ ఫీచర్స్
|
||||
|
||||
section పారిశ్రామిక నైపుణ్యాలు (1 నెల)
|
||||
వృత్తిపరమైన అభివృద్ధి: బృంద సహకారం
|
||||
: డిజైన్ డాక్యుమెంటేషన్
|
||||
: ప్లేయర్ పరిశోధన
|
||||
: ప్లాట్ఫామ్ ఆప్టిమైజేషన్
|
||||
```
|
||||
### 🛠️ మీ గేమ్ డిజైన్ టూల్కిట్ సారాంశం
|
||||
|
||||
ఈ పాఠం పూర్తి చేసిన తరువాత, మీరు ఇప్పటికీ మాస్టర్ అయిపోకున్నవి:
|
||||
- **ప్లేయర్ సైకాలజీ**: ప్రేరణ, ప్రమాదం/బహుమతి, మరియు ఆసక్తి లూప్స్ అర్థం చేసుకోవడం
|
||||
- **దృశ్య కమ్యూనికేషన్**: టెక్స్ట్, ఐకాన్లు, మరియు లేఅవుట్ ఉపయోగించి సమర్థవంత UI డిజైన్
|
||||
- **ఫీడ్బ్యాక్ సిస్టమ్స్**: ప్లేయర్ చర్యలు మరియు గేమ్ ఈవెంట్లపై ప్రత్యక్ష స్పందన
|
||||
- **స్టేట్ మేనేజ్మెంట్**: డైనమిక్ గేమ్ డేటా ట్రాకింగ్ మరియు ప్రదర్శన సమర్థవంతంగా
|
||||
- **కేన్వాస్ టెక్స్ట్ రెండరింగ్**: ప్రొఫెషనల్ టెక్స్ట్ ప్రదర్శన స్టైలింగ్ మరియు స్థానికరణతో
|
||||
- **ఈవెంట్ ఇంటిగ్రేషన్**: వినియోగదారు చర్యలను అర్థవంతమైన గేమ్ ఫలితాలతో కలపడం
|
||||
- **గేమ్ బ్యాలెన్స్**: కష్టతరత వక్రీకరణలు మరియు ప్లేయర్ ప్రగతి సిస్టమ్స్ రూపకల్పన
|
||||
|
||||
**వాస్తవ ప్రపంచ అనువర్తనాలు**: మీ గేమ్ డిజైన్ నైపుణ్యాలు నేరుగా ప్రయోజనవంతంగా ఉంటాయి:
|
||||
- **యూజర్ ఇంటర్ఫేస్ డిజైన్**: ఆకట్టుకునే మరియు సూటిగా ఉండే ఇంటర్ఫేస్లు సృష్టించడం
|
||||
- **ఉత్పత్తి అభివృద్ధి**: వినియోగదారు ప్రేరణ మరియు ఫీడ్బ్యాక్ లూప్స్ అర్థం చేసుకోవడం
|
||||
- **శిక్షణా సాంకేతికత**: గేమిఫికేషన్ మరియు నేర్చుకునే ఆసక్తి సిస్టమ్స్
|
||||
- **డేటా విజువలైజేషన్**: సంకీర్ణ సమాచారం అందుబాటులో ఉంచడం
|
||||
- **మొబైల్ యాప్ అభివృద్ధి**: నిలుపుదల మెకానిక్స్ మరియు వినియోగదారు అనుభవ డిజైన్
|
||||
- **మార్కెటింగ్ టెక్నాలజీ**: వినియోగదారు ప్రవర్తన మరియు మార్పిడి ఆప్టిమైజేషన్ అర్థం చేసుకోవడం
|
||||
|
||||
**వ్యవసాయ నైపుణ్యాలు పొందారు**: మీరు ఇప్పుడు చేయగలరు:
|
||||
- **డిజైన్** చేయటానికి వినియోగదారు అనుభవాలను ప్రేరేపించే మరియు ఆకర్షణీయంగా
|
||||
- **అమలు** చేయటానికి ఫీడ్బ్యాక్ సిస్టమ్స్ వాటిని సులభవంతం చేస్తాయి
|
||||
- **సమతౌల్యం** చేయటానికి సవాలు మరియుడానికి సౌకర్యాలు
|
||||
- **సృష్టించు** దృశ్య కమ్యూనికేషన్ వేర్వేరు వినియోగదారు గుంపుల కోసం పని చేసే
|
||||
- **విశ్లేషణ** చేయటానికి వినియోగదారు ప్రవర్తన మరియు డిజైన్ మెరుగుదలపై పునరావృతం చేయడం
|
||||
|
||||
**గేమ్ డెవలప్మెంట్ కాన్సెప్ట్లు మాస్టర్ చేశారు**:
|
||||
- **ప్లేయర్ ప్రేరణ**: ఆసక్తి మరియు నిలుపుదల ఎందుకు జరుగుతాయో అర్థం చేసుకోవడం
|
||||
- **దృశ్య డిజైన్**: స్పష్టమైన, ఆకర్షణీయ, మరియు కార్యాచరణ ఇంటర్ఫేస్లు తయారుచేయడం
|
||||
- **సిస్టమ్ ఇంటిగ్రేషన్**: సమగ్ర అనుభవం కోసం బహుళ గేమ్ సిస్టమ్స్ కలపడం
|
||||
- **పర్ఫార్మెన్స్ ఆప్టిమైజేషన్**: సమర్థవంతమైన రెండరింగ్ మరియు స్టేట్ మేనేజ్మెంట్
|
||||
- **అందుబాటులో ఉండటం**: భిన్న నైపుణ్య స్థాయిలు మరియు ప్లేయర్ అవసరాలకు డిజైన్ చేయడం
|
||||
|
||||
**తదుపరి దశ**: మీరు అధునాతన గేమ్ డిజైన్ నమూనాలను అన్వేషించడానికి, అనలిటిక్స్ సిస్టమ్స్ అమలు చేయడానికి, లేదా గేమ్ మోనిటైజేషన్ మరియు ప్లేయర్ నిలుపుదల వ్యూహాలు అధ్యయనం చేయడానికి సిద్ధంగా ఉన్నారు!
|
||||
|
||||
🌟 **అచీవ్మెంట్ అందుకుంది**: మీరు ప్రొఫెషనల్ గేమ్ డిజైన్ సూత్రాలతో పూర్తయిన ప్లేయర్ ఫీడ్బ్యాక్ సిస్టమ్ నిర్మించారు!
|
||||
|
||||
---
|
||||
|
||||
## GitHub Copilot ఏజెంట్ ఛాలెంజ్ 🚀
|
||||
|
||||
ఈ ఏజెంట్ మోడ్ ఉపయోగించి ఈ క్రింది ఛాలెంజ్ను పూర్తి చేయండి:
|
||||
|
||||
**వివరణ**: స్పేస్ గేమ్ స్కోరింగ్ సిస్టమ్ను బహుమతి స్కోరింగ్ మెకానిక్స్ మరియు పర్సిస్టెంట్ స్టోరేజ్ తో బస్ట్ చేయండి.
|
||||
|
||||
**ప్రాంప్ట్**: ప్లేయర్ యొక్క ఉత్తమ స్కోర్ను localStorage లో సేవ్ చేసే హై స్కోర్ సిస్టమ్ సృష్టించండి. క్రమంగా శత్రు హతమార్ప్స్ కోసం బోనస్ పాయింట్లు (కాంబో సిస్టమ్) జోడించండి మరియు వివిధ శత్రు రకాల కోసం వివిధ పాయింట్ విలువలతో అమలు చేయండి. ప్లేయర్ కొత్త హై స్కోర్ సాధించినప్పుడు ఒక దృశ్య సూచిక చేర్చండి మరియు గేమ్ స్క్రీన్ పై ప్రస్తుత హై స్కోర్ను ప్రదర్శించండి.
|
||||
|
||||
|
||||
|
||||
## 🚀 ఛాలెంజ్
|
||||
|
||||
మీ వద్ద ఇప్పుడు స్కోరింగ్ మరియు లైఫ్స్ ఉన్న ఫంక్షనల్ గేమ్ ఉంది. ప్లేయర్ అనుభవాన్ని మెరుగుపరచడానికి మరెలాంటి ఫీచర్లు కావచ్చునని పరిగణించండి.
|
||||
|
||||
## పోస్ట్-లెక్చర్ క్విజ్
|
||||
|
||||
[పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/web/quiz/38)
|
||||
|
||||
## సమీక్ష & స్వీయ అధ్యయనం
|
||||
|
||||
మరింత అన్వేషించాలనుకుంటున్నారా? గేమ్ స్కోరింగ్ మరియు లైఫ్ సిస్టమ్స్ కి విభిన్న 접근ాలను పరిశీలించండి. అక్కడ [PlayFab](https://playfab.com) లాంటి ఆసక్తికర గేమ్ ఇంజన్లు ఉన్నాయి, ఇవి స్కోరింగ్, లీడర్బోర్డ్స్, మరియు ప్లేయర్ ప్రగతిని నిర్వహిస్తాయి. అలాంటి దాన్ని సమగ్రపరచడం ఎలా మీ గేమ్ను తదుపరి స్థాయికి తీసుకెళ్తుందో తెలుసుకోండి.
|
||||
|
||||
## అసైన్మెంట్
|
||||
|
||||
[స్కోరింగ్ గేమ్ నిర్మించండి](assignment.md)
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**నిరాకరణ**:
|
||||
ఈ పత్రం AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, స్వయంచాలక అనువాదాలలో పొరపాట్లు లేదా తప్పులూ ఉండవచ్చు. మూల పత్రం తన స్థానిక భాషలో అధికారిక వనరు గా పరిగణించాలి. కీలకమైన సమాచారం కోసం, నిపుణుల మానవ అనువాదాన్ని ఆహ్వానిస్తాం. ఈ అనువాదం వాడకంలో ఏవైనా అపార్థాలు లేదా తప్పువారినట్టి పరిస్తితులకై మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,27 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "81f292dbda01685b91735e0398dc0504",
|
||||
"translation_date": "2026-01-08T14:14:18+00:00",
|
||||
"source_file": "6-space-game/5-keeping-score/assignment.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# స్కోరింగ్ గేమ్ని నిర్మించండి
|
||||
|
||||
## సూచనలు
|
||||
|
||||
మీరు జీవితం మరియు పాయింట్లను సృజనాత్మకమైన విధంగా ప్రదర్శించే గేమ్ను సృష్టించండి. జీవితం హృదయాలుగా మరియు పాయింట్లు స్క్రీన్ దిగువ మధ్య భాగంలో పెద్ద సంఖ్యగా చూపడానికి ఒక సలహా. ఇక్కడ చూడండి [ఉచిత గేమ్ వనరులు](https://www.kenney.nl/)
|
||||
|
||||
# ర్యూబ్రిక్
|
||||
|
||||
| ప్రమాణాలు | ఉదాహరణాత్మకమైనది | తగినంత | మెరుగుదల అవసరం |
|
||||
| -------- | -------------------------- | ------------------------- | ------------------------- |
|
||||
| | పూర్తి గేమ్ ప్రదర్శించబడింది | గేమ్ భాగంగా ప్రదర్శించబడింది | భాగస్వామ్య గేమ్ లో బగ్స్ ఉన్నాయి |
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**హెచ్చరిక**:
|
||||
ఈ దస్తావేజును AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించారు. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, యంత్ర అనువాదాలలో తప్పులు లేదా పొరపాట్లు ఉండవచ్చు. ఆమె భాషలో ఉన్న అసలు దస్తావేజే అధికారిక మూలం గా పరిగణించాలి. కీలకమైన సమాచారం కోసం, వృత్తిపరమైన మనుష్యులచే అనువాదం చేయించుకోవడం ఉత్తమం. ఈ అనువాదం వలన వచ్చే ఏవైనా అపరాధాలు లేదా భ్రమలకు మేము బాధ్యతాయుతులు కాదు.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,17 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "068cbb9b3c10a96d503f6cdd6c9ace8c",
|
||||
"translation_date": "2026-01-08T15:02:16+00:00",
|
||||
"source_file": "6-space-game/5-keeping-score/your-work/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
ఇది ఒక ప్లేస్హోల్డర్, చైతన్యంగా ఖాళీగా ఉంచబడింది
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**అస్పష్టం**:
|
||||
ఈ డాక్యుమెంట్ AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము సమగ్రతకు కృషి చేసినప్పటికీ, ఆటోమేటిక్ అనువాదాలలో పొరపాట్లు లేదా తప్పిదాలు ఉండొచ్చు తేలికగా ఉండవచ్చు. మూల డాక్యుమెంట్ స్థానిక భాషలో అధికారిక మూలం గా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, వృత్తిపరమైన మానవ అనువాదం సిఫారసు చేయబడుతుంది. ఈ అనువాదం ఉపయోగించడం వల్ల కలిగే ఏదైనా అపార్థం లేదా తప్పుగా అర్థం చేసుకోవడంకు మేము బాధ్యులు కంనీంలేము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,173 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "232d592791465c1678cab3a2bb6cd3e8",
|
||||
"translation_date": "2026-01-08T13:59:37+00:00",
|
||||
"source_file": "6-space-game/6-end-condition/assignment.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# ఒక నమూనా ఆటను నిర్మించండి
|
||||
|
||||
## అసైన్మెంట్ అవలోకనం
|
||||
|
||||
మీరు స్పేస్ గేమ్లో గేమ్ ముగింపు పరిస్థితులు మరియు రీస్టార్ట్ ఫంక్షనాలిటీని పాలించుకున్నాక, ఇప్పుడు మీరు ఈ భావనలను పూర్తిగా కొత్త గేమింగ్ అనుభవంలో వర్తింప చేయాలి. మీరు వివిధ ముగింపు పరిస్థితి నమూనాలను మరియు రీస్టార్ట్ మెకానిక్స్ను ప్రదర్శించే మీ స్వంత ఆటను డిజైన్ చేసి నిర్మించాలి.
|
||||
|
||||
ఈ అసైన్మెంట్ మీకు ఆట రూపకల్పన గురించి సృజనాత్మకంగా ఆలోచించడానికి మరియు మీరు నేర్చుకున్న సాంకేతిక నైపుణ్యాలను అభ్యాసం చేయడానికి సవాలు చేస్తుంది. మీరు వివిధ విజయం మరియు పరాజయ దృశ్యాలను అన్వేషించి, ప్లేయర్ పురోగతిని అనుసరించి, ఆకట్టుకునే రీస్టార్ట్ అనుభవాలను సృష్టిస్తారు.
|
||||
|
||||
## ప్రాజెక్ట్ అవసరాలు
|
||||
|
||||
### ప్రాథమిక ఆట లక్షణాలు
|
||||
|
||||
మీ ఆటలో ఈ క్రింది ప్రధాన అంశాలు ఉండాలి:
|
||||
|
||||
**ముగింపు పరిస్థితుల వైవిధ్యం**: ఆట ముగియగల రెండు వేరువేరు మార్గాలను అమలు చేయండి:
|
||||
- **పాయింట్-ఆధారిత విజయం**: ప్లేయర్ లక్ష్య స్కోర్ చేరుకోటం లేదా నిర్దిష్ట అంశాలను సేకరించడం
|
||||
- **జీవిత ఆధారిత పరాజయము**: ప్లేయర్ అందుబాటులో ఉన్న అన్ని జీవులను లేదా ఆరోగ్య పాయింట్లను కోల్పోతాడు
|
||||
- **విషయం పూర్తి చేయడం**: అన్ని శత్రువులు ఓడించి, నిర్దిష్ట అంశాలు సేకరించి లేదా లక్ష్యాలు సాధించడం
|
||||
- **సమయం ఆధారిత**: ఆట సెట్ చేసిన వ్యవధి తర్వాత లేదా కౌంట్డౌన్ మార్గం నులుకి చేరినప్పుడు ముగుస్తుంది
|
||||
|
||||
**రీస్టార్ట్ ఫంక్షనాలిటీ**:
|
||||
- **ఆట స్థితిని శుభ్రం చేయండి**: పూర్వపు ఆట వస్తువులన్నీ తొలగించి వేరియబుల్స్ రీసెట్ చేయండి
|
||||
- **వ్యవస్థలను మళ్లీ ప్రారంభించండి**: కొత్త ప్లేయర్ స్టాట్స్, శత్రువులు మరియు లక్ష్యాలతో సరికొత్తగా ప్రారంభించండి
|
||||
- **వినియోగదారుకి స్నేహపూర్వక నియంత్రణలు**: ఆటను రీస్టార్ట్ చేసేందుకు స్పష్టమైన సూచనలు ఇవ్వండి
|
||||
|
||||
**ప్లేయర్ అభిప్రాయం**:
|
||||
- **విజయ సందేశాలు**: ప్లేయర్ సాధనలను గర్వంగా ప్రదర్శిస్తూ సానుకూల స్పందనలు ఇవ్వండి
|
||||
- **పరాజయ సందేశాలు**: మళ్ళీ ఆడడానికి ప్రేరేపించే ప్రేరణాత్మక సందేశాలు అందించండి
|
||||
- **పురోగతి సూచికలు**: ప్రస్తుత స్కోర్, జీవులు లేదా లక్ష్యం స్థితి చూపించండి
|
||||
|
||||
### ఆట ఆలోచనలు మరియు ప్రేరణ
|
||||
|
||||
ఈ గేమ్ సంకల్పాలలో ఒకదాన్ని ఎంచుకోండి లేదా మీ స్వంతదాన్ని సృష్టించండి:
|
||||
|
||||
#### 1. కన్సోల్ అడ్వెంచర్ గేమ్
|
||||
పోరాట యాంత్రికతలతో ఒక టెక్స్ట్ ఆధారిత అడ్వెంచర్ సృష్టించండి:
|
||||
|
||||
```
|
||||
Hero> Strikes with broadsword - orc takes 3p damage
|
||||
Orc> Hits with club - hero takes 2p damage
|
||||
Hero> Kicks - orc takes 1p damage
|
||||
Game> Orc is defeated - Hero collects 2 coins
|
||||
Game> ****No more monsters, you have conquered the evil fortress****
|
||||
```
|
||||
|
||||
**అమలు చేయాల్సిన కీలక అంశాలు:**
|
||||
- **టర్న్-ఆధారిత పోరాటం** వేరువేరు దాడి ఎంపికలతో
|
||||
- ప్లేయర్ మరియు శత్రువులకు **ఆరోగ్య పాయింట్లు**
|
||||
- నాణేలు లేదా అంశాలను సేకరించడానికి **ఇన్వెంటరీ సిస్టమ్**
|
||||
- **వేర్వేరు శత్రు రకాలు** వేర్వేరు కష్టం స్థాయిలతో
|
||||
- అన్ని శత్రువులు ఓడినప్పుడు **విజయ పరిస్థితి**
|
||||
|
||||
#### 2. సేకరణ ఆట
|
||||
- **లక్ష్యం**: నిర్దిష్ట అంశాలను సేకరించండి, ఆటంకాలను తప్పించండి
|
||||
- **ముగింపు పరిస్థితులు**: లక్ష్య సేకరణ సంఖ్య చేరుకోవడం లేదా అన్ని జీవులు కోల్పోవడం
|
||||
- **పురోగతి**: ఆట కొనసాగుతున్న కొద్దీ అంశాలను పొందడం కష్టం అవుతుంది
|
||||
|
||||
#### 3. పజిల్ ఆట
|
||||
- **లక్ష్యం**: పెరుగుతున్న కష్టతరమైన పజిల్స్ను పరిష్కరించండి
|
||||
- **ముగింపు పరిస్థితులు**: అన్ని స్థాయిలను పూర్తి చేయడం లేదా ప్రయాణాలు/సమయం ఆగిపోవడం
|
||||
- **రీస్టార్ట్**: మొదటి స్థాయికి మరియు ఖాళీ పురోగతితో రీసెట్ చేయడం
|
||||
|
||||
#### 4. రక్షణ ఆట
|
||||
- **లక్ష్యం**: మీ బేస్ను శత్రువు తరంగాల నుండి రక్షించండి
|
||||
- **ముగింపు పరిస్థితులు**: అన్ని తరంగాలలో జీవించటం (విజయం) లేదా బేస్ ధ్వంసం (పరాజయం)
|
||||
- **పురోగతి**: శత్రువు తరంగాలు కష్టం మరియు సంఖ్య పెరుగుతుంది
|
||||
|
||||
## అమలు మార్గదర్శకాలు
|
||||
|
||||
### ప్రారంభించడం
|
||||
|
||||
1. **మీ ఆట రూపకల్పనను ప్రణాళిక చేయండి**:
|
||||
- ప్రాథమిక గేమ్ప్లే లూప్ను క్రోారపు చేసుకోండి
|
||||
- మీ ముగింపు పరిస్థితులను స్పష్టంగా నిర్వచించండి
|
||||
- రీస్టార్ట్ సమయంలో రీసెట్ చేయాల్సిన డేటాను గుర్తించండి
|
||||
|
||||
2. **మీ ప్రాజెక్ట్ నిర్మాణాన్ని సెట్ చేయండి**:
|
||||
```
|
||||
my-game/
|
||||
├── index.html
|
||||
├── style.css
|
||||
├── game.js
|
||||
└── README.md
|
||||
```
|
||||
|
||||
3. **మీ ప్రాథమిక ఆట లూప్ను సృష్టించండి**:
|
||||
- ఆట స్థితిని ప్రారంభించండి
|
||||
- వినియోగదారు ఇన్పుట్ను హ్యాండిల్ చేయండి
|
||||
- ఆట తర్కాన్ని అప్డేట్ చేయండి
|
||||
- ముగింపు పరిస్థితులను తనిఖీ చేయండి
|
||||
- ప్రస్తుత స్థితిని రెండర్ చేయండి
|
||||
|
||||
### సాంకేతిక అవసారాలు
|
||||
|
||||
**ఆధునిక జావాస్క్రిప్ట్ ఉపయోగించండి**:
|
||||
- వేరియబుల్స్ డిక్లరేషన్లకు `const` మరియు `let` ఉపయోగించండి
|
||||
- అవసరమైతే ఆరో ఫంక్షన్లను ఉపయోగించండి
|
||||
- ES6+ ఫీచర్లు, టెంప్లేట్ లిటరల్స్ మరియు డిస్ట్రక్చరింగ్ అమలు చేయండి
|
||||
|
||||
**ఈవెంట్ ఆధారిత వాస్తవికత**:
|
||||
- వినియోగదారుని చర్యలకు ఈవెంట్ హ్యాండ్లర్లను సృష్టించండి
|
||||
- ఈవెంట్ల ద్వారా ఆట స్థితి మార్పులను అమలు చేయండి
|
||||
- రీస్టార్ట్ ఫంక్షనాలిటీకి ఈవెంట్ లిస్నర్లను ఉపయోగించండి
|
||||
|
||||
**శుభ్రమైన కోడ్ అభ్యాసాలు**:
|
||||
- ఒకే బాధ్యత కలిగిన ఫంక్షన్లను వ్రాయండి
|
||||
- వేరియబుల్స్ మరియు ఫంక్షన్లకు వివరణాత్మక పేర్లు ఇవ్వండి
|
||||
- ఆట తర్కం మరియు నియమాలను వ్యాఖ్యలతో వివరించండి
|
||||
- కోడ్ను తర్కమేనైన విభాగాలుగా ఏర్పాటు చేయండి
|
||||
|
||||
## సమర్పణ అవసరాలు
|
||||
|
||||
### అందించవలసినవి
|
||||
|
||||
1. **సంపూర్ణ ఆట ఫైల్స్**: మీ ఆట నడిపేందుకు అవసరమైన అన్ని HTML, CSS మరియు JavaScript ఫైల్స్
|
||||
2. **README.md**: ఇది శోధన:
|
||||
- మీ ఆట ఎలా ఆడాలి
|
||||
- మీరు అమలు చేసిన ముగింపు పరిస్థితులు
|
||||
- రీస్టార్ట్ చేయడానికి సూచనలు
|
||||
- ఏ వామదాలు లేదా యాంత్రికాలు ఉన్నయో
|
||||
3. **కోడ్ వ్యాఖ్యలు**: మీ ఆట తర్కం మరియు అల్గోరిథమ్లకు స్పష్టమైన వివరణలు
|
||||
|
||||
### పరీక్షా చెక్లిస్ట్
|
||||
|
||||
సమర్పించే ముందు, మీరు ఆటను తనిఖీ చేయండి:
|
||||
|
||||
- [ ] **బ్రౌజర్ కన్సోల్లో పొరపాట్ల లేకుండా నడుస్తుంది**
|
||||
- [ ] **నిర్దిష్టించినట్టు బహుళ ముగింపు పరిస్థితులను అమలు చేసింది**
|
||||
- [ ] **తగ్గిన స్థితిని రీసెట్ చేస్తూ సరిగ్గా రీస్టార్ట్ అవుతుంది**
|
||||
- [ ] **ఆట స్థితికి సంబంధించిన స్పష్టమైన అభిప్రాయం అందిస్తుంది**
|
||||
- [ ] **ఆధునిక జావాస్క్రిప్ట్ సింటాక్స్ మరియు ఉత్తమ అభ్యాసాలను ఉపయోగిస్తుంది**
|
||||
- [ ] **README.md లో సమగ్ర డాక్యుమెంటేషన్ ఉంది**
|
||||
|
||||
## మూల్యాంకన రూబ్రిక్
|
||||
|
||||
| ప్రమాణాలు | ఉత్తమం (4) | ప్రావీణ్యం (3) | అభివృద్ధి (2) | ప్రారంభం (1) |
|
||||
|----------|-------------|----------------|---------------|------------|
|
||||
| **ఆట ఫంక్షనాలిటీ** | బహుళ ముగింపు పరిస్థితులతో పూర్తి ఆట, సున్నితమైన రీస్టార్ట్ మరియు మెరుగు గేమ్ప్లే అనుభవం | ప్రాథమిక ముగింపు పరిస్థితులు మరియు పని చేసే రీస్టార్ట్ మెకానిజం ఉన్న పూర్తి ఆట | కొన్ని ముగింపు పరిస్థితుల అమలు ఉన్న భాగస్వామ్య ఆట, రీస్టార్ట్ చిన్న సమస్యలతో ఉండవచ్చు | పరిమితం గల ఆట, సన్నిహితమైన బగ్లు మరియు అపరిపూర్ణమైన ఫంక్షనాలిటీ |
|
||||
| **కోడ్ నాణ్యత** | ఆధునిక జావాస్క్రిప్ట్ అభ్యాసాలతో శుభ్రమైన, బాగా సుస్థిరమైన కోడ్, సమగ్ర వ్యాఖ్యలు మరియు అద్భుతమైన నిర్మాణం | ఆధునిక సింటాక్స్, తగిన వ్యాఖ్యలు, స్పష్టమైన నిర్మాణంతో మంచి కోడ్ | ఆధునిక అభ్యాసాలు కొంతమేర అమలు చేసిన ప్రాథమిక కోడ్ | పాత సింటాక్స్, వ్యాఖ్యలు లేమి, కుదురని కోడ్ నిర్మాణం |
|
||||
| **వినియోగదార అనుభవం** | స్పష్టమైన సూచనలతో అంతులేని గేమ్ప్లే, అద్భుతమైన అభిప్రాయం, ఆకర్షణీయ ముగింపు/రీస్టార్ట్ అనుభవం | మంచి గేమ్ప్లే, సరిపడని సూచనలు మరియు అభిప్రాయం, పని చేసే ముగింపు/రీస్టార్ట్ | తక్కువ సూచనలు, పరిమిత అభిప్రాయం ఉన్న ప్రాథమిక గేమ్ప్లే | అగోచర సూచనలు, కనీస అభిప్రాయం గల గందరగోళమైన గేమ్ప్లే |
|
||||
| **సాంకేతిక అమలు** | ఆట అభివృద్ధి భావనలు, ఈవెంట్ హ్యాండ్లింగ్, స్థితి నిర్వహణలో నైపుణ్యం చూపిస్తుంది | మంచి ఆలోచనతో కష్టతరమైన అమలు చూపిస్తుంది | ఆలోచన తెలియజేసే ప్రాథమిక అమలు | తక్కువ అవగాహన మరియు బాగుపరచని అమలు |
|
||||
| **డాక్యుమెంటేషన్** | స్పష్టమైన సూచనలు, బాగా డాక్యుమెంటెడ్ కోడ్, పూర్తి పరీక్షా సాక్ష్యాల కలిగిన సమగ్ర README | సరిపడిన సూచనలు మరియు రాయబారాలను కలిగి మంచి డాక్యుమెంటేషన్ | తక్కువ సూచనలు కలిగిన ప్రాథమిక డాక్యుమెంటేషన్ | డాక్ లేమి లేదా అందుబాటులో లేదు |
|
||||
|
||||
### గ్రేడింగ్ స్కేలు
|
||||
- **ఉత్తమం (16-20 పాయింట్లు)**: సృజనాత్మక లక్షణాలతో మరియు మెరుగైన అమలుతో అంచనాలను మించిపోతోంది
|
||||
- **ప్రావీణ్యం (12-15 పాయింట్లు)**: అన్ని అవసరాలను చక్కగా నెరవేర్చింది
|
||||
- **అభివృద్ధి (8-11 పాయింట్లు)**: ఎక్కువ భాగాన్ని నెరవేర్చింది, కాస్త సమస్యలతో
|
||||
- **ప్రారంభం (4-7 పాయింట్లు)**: కొంత భాగాన్ని నెరవేర్చింది కానీ పెద్ద మెరుగుదల అవసరం
|
||||
|
||||
## అదనపు నేర్చుకోవడపు వనరులు
|
||||
|
||||
- [MDN గేమ్ డెవలప్మెంట్ గైడ్](https://developer.mozilla.org/en-US/docs/Games)
|
||||
- [జావాస్క్రిప్ట్ గేమ్ డెవలప్మెంట్ ట్యుటోరియల్స్](https://developer.mozilla.org/en-US/docs/Games/Tutorials)
|
||||
- [కాన్వాస్ API డాక్యుమెంటేషన్](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API)
|
||||
- [గేమ్ డిజైన్ సూత్రాలు](https://www.gamasutra.com/blogs/)
|
||||
|
||||
> 💡 **ప్రో టిప్**: సులభంగా ప్రారంభించి, లక్షణాలను దశలవారీగా జోడించండి. బగ్స్ లేని, బాగా మెరుగైన సాదాసీదా ఆట ఒక క్లిష్టమైన ఆట కన్నా మెరుగ్గా ఉంటుంది!
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**డిస్క్లైమర్**:
|
||||
ఈ డాక్యుమెంట్ [Co-op Translator](https://github.com/Azure/co-op-translator) AI అనువాద సేవ ఉపయోగించి అనువాదం చేయబడింది. మనం సరైనతకి శ్రద్ధ పెట్టినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో తప్పులు లేదా లోపాలు ఉండవచ్చు. అసలైన డాక్యుమెంట్ స్థానిక భాషలోని అధికారిక మూలంగా పరిగణించాలి. కీలక సమాచారం కోసం, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవడం మంచిది. ఈ అనువాదంతో ఉద్దిగొల్పిన ఏ వెచ్చ పాత్రనైనా లేదా తప్పుగా అర్థం చేసుకోవడంపై మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,17 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "068cbb9b3c10a96d503f6cdd6c9ace8c",
|
||||
"translation_date": "2026-01-08T15:01:29+00:00",
|
||||
"source_file": "6-space-game/6-end-condition/solution/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
ఇది ఒక ప్లేస్హోల్డర్, ఉద్దేశపూర్వకంగా ఖాళీగా ఉంచబడింది
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**మార్పిడి గమనిక**:
|
||||
ఈ డాక్యుమెంట్ను AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. సరిగా అనువదించాలని ప్రయత్నించినప్పటికీ, స్వయంచాలక అనువాదాల్లో పొరపాట్లు లేదా అపార్థాలు ఉండవచ్చు. మూల డాక్యుమెంట్ దాని స్వభావ భాషలోనే అధికృత మూలంగా పరిగణించబడాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదాన్ని సూచిస్తున్నాము. ఈ అనువాదాన్ని ఉపయోగించడంవల్ల కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారుల responsabilidade మేము తీసుకోము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,17 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "068cbb9b3c10a96d503f6cdd6c9ace8c",
|
||||
"translation_date": "2026-01-08T15:00:41+00:00",
|
||||
"source_file": "6-space-game/6-end-condition/your-work/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
ఇది ఒక తాత్కాలిక స్థానం, ఉద్దేశపూర్వకంగా ఖాళీగా వేశారు.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**అసమర్పణ**:
|
||||
ఈ డాక್ಯుమెంట్ [Co-op Translator](https://github.com/Azure/co-op-translator) అనే AI అనువాద సేవ ఉపయోగించి అనువాదం చేయబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నిస్తే కూడా, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పులుండే అవకాశం ఉంది. మౌలిక భాషలో ఉన్న అసలు డాక్యుమెంట్ అందుబాటులో ఉన్న అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, వృత్తిపరమైన మానవ అనువాదం సూచించబడుతుంది. ఈ అనువాదం వాడుక ద్వారా ఏర్పడే ఏమైనా తప్పుడు అర్థం లేదా తప్పుడు అర్థాగ్రహణలకు మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,47 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "c40a698395ee5102715f7880bba3f2e7",
|
||||
"translation_date": "2026-01-08T11:10:04+00:00",
|
||||
"source_file": "6-space-game/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# స్పేస్ గేమ్ ను నిర్మించండి
|
||||
|
||||
మరింత ప్రగతిశీలమైన జావాస్క్రిప్ట్ బేసిక్ వివరాలను నేర్పించే ఒక స్పేస్ గేమ్
|
||||
|
||||
ఈ పాఠంలో మీరు మీ స్వంత స్పేస్ గేమ్ ఎలా నిర్మించాలో నేర్చుకుంటారు. మీరు "స్పేస్ ఇన్వేడర్స్" అనే గేమ్ ఆడినట్లయితే, ఈ గేమ్ కూడా అదే ఆలోచనను కలిగి ఉంటుంది: ఒక స్పేస్షిప్ ను నియంత్రించి, పై నుండి దిగుతున్న మన్స్టర్స్ పై తగిలించడానికి. ఇక్కడ తుదిపరిణామ గేమ్ ఎలా ఉంటుందో చూడండి:
|
||||
|
||||

|
||||
|
||||
ఈ ఆరు పాఠాల్లో మీరు ఇలా నేర్చుకుంటారు:
|
||||
|
||||
- స్క్రీన్ పై చిత్రాలను చిత్రించడానికి కేన్వాస్ ఎలిమెంట్ తో **ఇంటరాక్ట్** చేయడం
|
||||
- కార్టెసియన్ కోఆర్డినేటు సిస్టమ్ ను **అర్ధం చేసుకోవడం**
|
||||
- నిర్వహణలో మరియు విస్తరణలో సులభత కోసం సౌండ్ గేమ్ ఆర్కిటెక్చర్ సృష్టించడానికి పబ్-సబ్ ప్యాటర్న్ **నెరLearn** చేయడం
|
||||
- గేమ్ వనరులను లోడ్ చేయడానికి అసింక్/అవైట్ ను **ఉపయోగించడం**
|
||||
- కీబోర్డు ఈవెంట్లను **నిర్వహించడం**
|
||||
|
||||
## అవలోకనం
|
||||
|
||||
- సిద్ధాంతం
|
||||
- [జావాస్క్రిప్ట్ తో గేమ్స్ నిర్మాణానికి పరిచయం](1-introduction/README.md)
|
||||
- ప్రాక్టీస్
|
||||
- [కేన్వాస్ పై డ్రాయింగ్](2-drawing-to-canvas/README.md)
|
||||
- [స్క్రీన్ లో ఎలిమెంట్లను తరలించడం](3-moving-elements-around/README.md)
|
||||
- [ఘర్షణ గుర్తింపు](4-collision-detection/README.md)
|
||||
- [స్కోర్ ను నిర్వహించడం](5-keeping-score/README.md)
|
||||
- [గేమ్ ముగింపు మరియు పునఃప్రారంభం](6-end-condition/README.md)
|
||||
|
||||
## క్రెడిట్స్
|
||||
|
||||
ఈ గేమ్ కోసం ఉపయోగించిన మూలాలు https://www.kenney.nl/ నుండి వచ్చాయి.
|
||||
మీరు గేమ్స్ నిర్మించడంలో ఆసక్తి ఉంటే, ఇవి నిజంగా మంచి మూలాలు, చాలా వాటి ఉచితం మరియు కొన్ని చెల్లింపుతో ఉన్నాయి.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**తేదీలు**:
|
||||
ఈ డాక్యుమెంట్ AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ను ఉపయోగించి అనువదించబడింది. మనం ఖచ్చితత్వం కోసం యత్నించినప్పటికీ, యంత్ర అనువాదాలు లోపాలు లేదా తప్పులు ఉండవచ్చని దయచేసి గమనించండి. ఒరిజినల్ డాక్యుమెంట్ native భాషలో ఉందనే సంగతి, అది అధికారిక మూలం అని పరిగణించి మెల్లగా తీసుకోండి. కీలకమైన సమాచారానికి, వృత్తిపరమైన మానవ అనువాదాన్ని సిఫార్సు చేస్తాము. ఈ అనువాదం వలన సంభవించే ఏవైనా తప్పుదోవ పట్టుకోవడాలు లేదా తప్పుల పైన మేము బాధ్యత వహించమని తెలియజేస్తాము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,17 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "068cbb9b3c10a96d503f6cdd6c9ace8c",
|
||||
"translation_date": "2026-01-08T14:36:24+00:00",
|
||||
"source_file": "6-space-game/solution/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
ఇది ఒక ప్లేస్హోల్డర్, ఉద్దేశపూర్వకంగా ఖాళీగా వదిలారు
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**సమాచార నిరాకరణ**:
|
||||
ఈ పత్రం AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వాన్ని లక్ష్యంగా పలుకుతున్నా, ఆటోమేటెడ్ అనువాదాల్లో లోపాలు లేదా తప్పుడు సమాచారం ఉండవచ్చు. స్థానిక భాషలోని ఒరిజినల్ పత్రం అధికారిక మూలంగా పరిగణించాలి. కీలకమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదాన్ని పొందటం ఉత్తమం. ఈ అనువాదం వలన కలిగిన ఏదైనా పొరపాట్లు లేదా తప్పుదారుల కోసం మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,166 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "efb01fcafd2ef40c593a6e662fc938a8",
|
||||
"translation_date": "2026-01-08T16:35:43+00:00",
|
||||
"source_file": "7-bank-project/2-forms/assignment.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# మీ బ్యాంక్ యాప్ను ఆధునిక CSS తో స్టైల్ చేయండి
|
||||
|
||||
## ప్రాజెక్ట్ అవలోకనం
|
||||
|
||||
మీ ఫంక్షనల్ బ్యాంకింగ్ అప్లికేషన్ను ఆధునిక CSS సాంకేతికతలను ఉపయోగించి దృశ్యంగా ఆకర్షణీయమైన, ప్రొఫెషనల్ లుక్ ఉన్న వెబ్ యాప్గా మార్చండి. మీరు వినియోగదారు అనుభవాన్ని మెరుగుపరచుకునే సమగ్ర డిజైన్ సిస్టమ్ను సృష్టిస్తారు, అదే సమయంలో యాక్సెస్IBILITY మరియు రెస్పాన్స్వివ్ డిజైన్ సూత్రాలను నిలుపుకుంటారు.
|
||||
|
||||
ఈ అసైన్మెంట్ మీకు సంఘటిత వెబ్ డిజైన్ నమూనాలను ఉపయోగించడానికి, నిరంతర దృశ్య ఐడెంటిటీని అమలు చేయడానికి, మరియు వినియోగదారులకు ఆకర్షణీయంగా మరియు సుగమంగా నావిగేట్ చేయగల ఇంటర్ఫేస్ను సృష్టించడానికి సవాలు అరుగుతుంది.
|
||||
|
||||
## సూచనలు
|
||||
|
||||
### దశ 1: మీ స్టైల్షీట్ను సెట్ చేయండి
|
||||
|
||||
**మీ CSS పునాది సృష్టించండి:**
|
||||
|
||||
1. **సృష్టించండి** మీ ప్రాజెక్ట్ రూట్లో `styles.css` అనే కొత్త ఫైల్
|
||||
2. **లింక్ చేయండి** స్టైల్షీట్ను మీ `index.html` ఫైల్లో:
|
||||
```html
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
```
|
||||
3. **ప్రారంభించండి** CSS రీసెట్ మరియు ఆధునిక డిఫాల్ట్లతో:
|
||||
```css
|
||||
/* Modern CSS reset and base styles */
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
}
|
||||
```
|
||||
|
||||
### దశ 2: డిజైన్ సిస్టమ్ అవసరాలు
|
||||
|
||||
**ఈ ముఖ్యమైన డిజైన్ అంశాలను అమలు చేయండి:**
|
||||
|
||||
#### రంగు పలెట్
|
||||
- **ప్రైమరీ కలర్**: బటన్లు మరియు హైలైట్స్ కోసం ప్రొఫెషనల్ రంగు ఎంచుకోండి
|
||||
- **సెకన్డరీ కలర్**: ఆకస్మిక చర్యలకు మరియు సెకండరీ యాక్షన్స్కు అనుగుణమైన రంగు
|
||||
- **న్యూట్రల్ కలర్స్**: టెక్స్ట్, బోర్డర్స్ మరియు బ్యాక్గ్రౌండ్ల కోసం గ్రే టోన్లు
|
||||
- **సక్సెస్/ఎర్రర్ కలర్స్**: విజయ స్థితుల కోసం గ్రీన్, తప్పుల కోసం ఎరుపు
|
||||
|
||||
#### టైపోగ్రఫీ
|
||||
- **హెడింగ్ హైరార్కీ**: H1, H2, మరియు H3 అంశాల మధ్య స్పష్టమైన భేదం
|
||||
- **బాడీ టెక్స్ట్**: సులభంగా చదవగల ఫాంట్ సైజ్ ( కనీసం 16px) మరియు సరైన లైన్ హైట్
|
||||
- **ఫారమ్ లేబుల్స్**: స్పష్టంగా, యాక్సెసిబుల్ టెక్స్ట్ స్టైలింగ్
|
||||
|
||||
#### లేఅవుట్ మరియు స్పేసింగ్
|
||||
- **నిరంతర స్పేసింగ్**: స్పేసింగ్ స్కేల్ను ఉపయోగించండి (8px, 16px, 24px, 32px)
|
||||
- **గ్రిడ్ సిస్టమ్**: ఫారమ్లు మరియు కంటెంట్ సెక్షన్ల కోసం వ్యవస్థీకృత లేఅవుట్
|
||||
- **రెస్పాన్స్వివ్ డిజైన్**: మొబైల్-ఫస్ట్ దృష్టికోణంతో బ్రేక్పాయింట్లు
|
||||
|
||||
### దశ 3: కంపోనెంట్ స్టైలింగ్
|
||||
|
||||
**ఈ ప్రత్యేక కంపోనెంట్లను స్టైల్ చేయండి:**
|
||||
|
||||
#### ఫారమ్లు
|
||||
- **ఇన్పుట్ ఫీల్డ్స్**: ప్రొఫెషనల్ బోర్డర్స్, ఫోకస్ స్థితులు, మరియు వాలిడేషన్ స్టైలింగ్
|
||||
- **బటన్లు**: హోవర్ ఎఫెక్ట్స్, డిసేబుల్ స్థితులు, మరియు లోడింగ్ సూచికలు
|
||||
- **లేబుల్స్**: స్పష్టమైన స్థాననిర్ణయం మరియు అవసరమైన ఫీల్డ్ సూచికలు
|
||||
- **ఎర్రర్ మెసేజెస్**: కనపడే ఎర్రర్ స్టైలింగ్ మరియు సహాయక సందేశాలు
|
||||
|
||||
#### నావిగేషన్
|
||||
- **హెడర్**: శుభ్రమైన, బ్రాండెడ్ నావిగేషన్ ప్రాంతం
|
||||
- **లింక్స్**: స్పష్టమైన హోవర్ స్థితులు మరియు యాక్టివ్ సూచికలు
|
||||
- **లోగో/శీర్షిక**: ప్రత్యేకమైన బ్రాండింగ్ అంశం
|
||||
|
||||
#### కంటెంట్ ఏరియాస్
|
||||
- **సెక్షన్లు**: వివిధ ప్రాంతాల మధ్య స్పష్టమైన దృశ్య విడిపోవడం
|
||||
- **కార్డులు**: కార్డు-ఆధారిత లేఅవుట్లు ఉపయోగిస్తే, శాడోస్ మరియు బోర్డర్స్ ఉంచండి
|
||||
- **బ్యాక్గ్రౌండ్లు**: సున్నితమైన బ్యాక్గ్రౌండ్లతో వైట్ స్పేస్ను సరైన మోతాదులో ఉపయోగించడం
|
||||
|
||||
### దశ 4: మెరుగైన ఫీచర్లు (ఐచ్ఛికం)
|
||||
|
||||
**ఈ ఆధునిక ఫీచర్లను అమలు చేయాలని పరిగణించండి:**
|
||||
- **డార్క్ మోడ్**: లైట్ మరియు డార్క్ థీమ్ల మధ్య టోగుల్
|
||||
- **అనిమేషన్లు**: సుబtle మార్పులు మరియు సూక్ష్మ పరస్పర చర్యలు
|
||||
- **లోడింగ్ స్థితులు**: ఫారమ్ సమర్పణ సమయంలో దృశ్య స్పందన
|
||||
- **రెస్పాన్స్వివ్ చిత్రాలు**: వేర్వేరు స్క్రీన్ పరిమాణాలకు ఆప్టిమైజ్ చేసిన చిత్రాలు
|
||||
|
||||
## డిజైన్ ప్రేరణ
|
||||
|
||||
**ఆధునిక బ్యాంకింగ్ యాప్ లక్షణాలు:**
|
||||
- **శుభ్రమైన, కనిష్ట డిజైన్** వైట్ స్పేస్ పుష్కలంగా
|
||||
- **ప్రొఫెషనల్ కలర్ స్కీమ్స్** (నీలాలు, ఆకులతో లేదా శ్రద్ధావంతమైన న్యూట్రల్స్)
|
||||
- **స్పష్టమైన దృశ్య హైరార్కీ** ప్రాముఖ్యమైన కాల్-టు-యాక్షన్ బటన్లతో
|
||||
- **యాక్సెసిబుల్ కాంట్రాస్ట్ రేషియోస్** WCAG మార్గదర్శకాలతో సరిపోలడం
|
||||
- **మొబైల్-రెస్పాన్స్వివ్ లేఅవుట్లు** అన్ని పరికరాలపై పని చేసే విధంగా
|
||||
|
||||
## సాంకేతిక అవసరాలు
|
||||
|
||||
### CSS విషయకరణ
|
||||
```css
|
||||
/* 1. CSS Custom Properties (Variables) */
|
||||
:root {
|
||||
--primary-color: #007bff;
|
||||
--secondary-color: #6c757d;
|
||||
/* Add more variables */
|
||||
}
|
||||
|
||||
/* 2. Base Styles */
|
||||
/* Reset, typography, general elements */
|
||||
|
||||
/* 3. Layout */
|
||||
/* Grid, flexbox, positioning */
|
||||
|
||||
/* 4. Components */
|
||||
/* Forms, buttons, cards */
|
||||
|
||||
/* 5. Utilities */
|
||||
/* Helper classes, responsive utilities */
|
||||
|
||||
/* 6. Media Queries */
|
||||
/* Responsive breakpoints */
|
||||
```
|
||||
|
||||
### యాక్సెస్IBILITY అవసరాలు
|
||||
- **రంగు కాంట్రాస్ట్**: సాధారణ టెక్స్ట్కు కనీసం 4.5:1 నిష్పత్తి నిర్ధారించండి
|
||||
- **ఫోకస్ సూచికలు**: కీబోర్డ్ నావిగేషన్ కోసం కనిపించే ఫోకస్ స్థితులు
|
||||
- **ఫారమ్ లేబుల్స్**: ఇన్పుట్లతో సరిగ్గా అనుసంధానితమైనవి
|
||||
- **రెస్పాన్స్వివ్ డిజైన్**: 320px నుండి 1920px వెడల్పు స్క్రీన్లపై ఉపయోగించదగినది
|
||||
|
||||
## మూల్యాంకన రుబ్రిక్
|
||||
|
||||
| ప్రమాణాలు | అద్భుతం (A) | ప్రావీణ్యం (B) | అభివృద్ధి (C) | మెరుగుదల అవసరం (F) |
|
||||
|----------|--------------|----------------|----------------|----------------------|
|
||||
| **డిజైన్ సిస్టమ్** | నిరంతర రంగులు, టైపోగ్రఫీ, మరియు స్పేసింగ్తో సమగ్ర డిజైన్ సిస్టమ్ను అమలు చేస్తుంది | స్పష్టమైన డిజైన్ నమూనాలు మరియు మంచి దృశ్య హైరార్కీతో స్థిరమైన స్టైలింగ్ ఉపయోగిస్తుంది | కొంత స్థిరమైన సమస్యలతో లేదా లేని డిజైన్ అంశాలతో ప్రాథమిక స్టైలింగ్ ఉపయోగించింది | తక్కువ స్టైలింగ్, అసమ్తుల లేదా విరుద్ధ డిజైన్ ఎంపికలు |
|
||||
| **వినియోగదారు అనుభవం** | అద్భుతమైన వినియోగదార అనుభవంతో, సులభమైన మరియు ప్రొఫెషనల్ ఇంటర్ఫేస్ సృష్టిస్తుంది | స్పష్టమైన నావిగేషన్ మరియు చదవదగిన కంటెంట్తో మంచి వినియోగదారు అనుభవం ఇస్తుంది | కొన్ని UX మెరుగుదలలతో ప్రాథమిక వాడుక యోగ్యత | చెడు వాడుక యోగ్యత, నావిగేట్ చేయడానికి లేదా చదవడానికి కష్టమే |
|
||||
| **సాంకేతిక అమలుపాటు** | ఆధునిక CSS సాంకేతికతలు, సక్రమంగా ఏర్పాటుచేసిన కోడ్ నిర్మాణం మరియు ఉత్తమ పద్ధతులు అనుసరిస్తుంది | CSSని సమర్థవంతంగా ఉపయోగించి మంచి నిర్వహణ మరియు సరైన సాంకేతికతలు అమలు చేస్తుంది | CSS సరిగ్గా పనిచేస్తుంది కానీ ఏర్పాటులో లేదా ఆధునిక దృష్టికోణాలలో లోపముంటుంది | చెడు CSS అమలు, సాంకేతిక సమస్యలు లేదా బ్రౌజర్ అనుకూలత సమస్యలు |
|
||||
| **రెస్పాన్స్వివ్ డిజైన్** | అన్ని పరికర పరిమాణాలపై అద్భుతంగా పనిచేసే పూర్తి రెస్పాన్స్వివ్ డిజైన్ | కొన్ని స్క్రీన్ల పరిమాణాలలో స్వల్ప సమస్యలతో మంచి రెస్పాన్స్వ్ ప్రవర్తన | కొంత లేఅవుట్ సమస్యలతో ప్రాథమిక రెస్పాన్స్వివ్ అమలు | రెస్పాన్సివ్ కాదు లేదా మొబైల్ పరికరాల్లో పెద్ద సమస్యలు |
|
||||
| **యాక్సెస్IBILITY** | అద్భుతమైన కీబోర్డ్ నావిగేషన్ మరియు స్క్రీన్ రీడర్ మద్దతుతో WCAG మార్గదర్శకాలకు అనుగుణంగా ఉంటుంది | సరైన కాంట్రాస్ట్ మరియు ఫోకస్ సూచికలతో మంచి యాక్సెస్IBILITY పద్ధతులు | కొన్ని లిప్తి అంశాలతో ప్రాథమిక యాక్సెస్IBILITY పరిగణన | చెడు యాక్సెస్IBILITY, వికలాంగులతో ఉన్న వినియోగదారులకు కష్టం |
|
||||
|
||||
## సమర్పణ మార్గదర్శకాలు
|
||||
|
||||
**మీ సమర్పణలో చేర్చండి:**
|
||||
- **styles.css**: మీ పూర్తి స్టైల్షీట్
|
||||
- **అప్డేటెడ్ HTML**: మీరు చేసిన ఏ HTML మార్పులు
|
||||
- **స్క్రీన్షాట్లు**: డెస్క్టాప్ మరియు మొబైల్పై మీ డిజైన్ చూపించే చిత్రాలు
|
||||
- **README**: మీ డిజైన్ ఎంపికలు మరియు రంగుల పలెట్ యొక్క సంక్షిప్త వివరణ
|
||||
|
||||
**బోనస్ పాయింట్లు కోసం:**
|
||||
- **CSS కస్టమ్ ప్రాపర్టీస్** మేన్టైనబుల్ థీమింగ్ కోసం
|
||||
- **అధునిక CSS ఫీచర్లు** జల్లు, ఫ్లెక్స్బాక్స్, లేదా CSS అనిమేషన్ల వంటి
|
||||
- **పర్ఫార్మెన్స్ పరిగణనలు** ఆప్టిమైజ్డ్ CSS మరియు కనీస ఫైల్ సైజ్
|
||||
- **క్రాస్-బ్రౌజర్ టెస్టింగ్** వేర్వేరు బ్రౌజర్లలో అనుకూలతను నిర్ధారించడం
|
||||
|
||||
> 💡 **ప్రో టిప్**: ముందుగా మొబైల్ డిజైన్తో ప్రారంభించండి, తరువాత పెద్ద స్క్రీన్ల కోసం మెరుగుపరచండి. ఈ మొబైల్-ఫస్ట్ దృష్టికోణం మీ యాప్ అన్ని పరికరాలపై బాగా పనిచేయించి ఆధునిక వెబ్ అభివృద్ధి ఉత్తమ పద్ధతులను అనుసరిస్తుంది.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**స్పష్టీకరణ**:
|
||||
ఈ పత్రం AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మనం ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదంలో పొరపాట్లు లేదా తప్పులున్నాయి కావచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారం కోసం, వృత్తిపరమైన మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వలన జనం కలిగిన ఏ వివరణా లోపాలు లేదా తప్పుదిద్దుల బాధ్యత మేము పడము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,144 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "d0a02cb117e91a5b5f24178080068a3d",
|
||||
"translation_date": "2026-01-08T17:29:16+00:00",
|
||||
"source_file": "7-bank-project/3-data/assignment.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# కోడ్ రిఫ్యాక్టరింగ్ మరియు డాక్యుమెంటేషన్ అసైన్మెంట్
|
||||
|
||||
## అభ్యాస లక్ష్యాలు
|
||||
|
||||
ఈ అసైన్మెంట్ పూర్తి చేసుకోవడం ద్వారా, మీరు వృత్తిపరమైన డెవలపర్లు రోజువారీగా ఉపయోగించే అవసరమైన సాఫ్ట్వేర్ అభివృద్ధి నైపుణ్యాలను అభ్యసిస్తారు. మీరు కోడ్ను నిర్వహణసాధ్యంగా వేసుకోవడం, అభిసరణ ద్వారా ప్రతులు తగ్గించడం, మరియు భవిష్యత్తు డెవలపర్ల (మీతో సహా!) కోసం మీ పని డాక్యుమెంట్ చేయడం నేర్పుకోగలుగుతారు.
|
||||
|
||||
స్వచ్ఛ, బాగా డాక్యుమెంట్ చేయబడిన కోడ్ అనేది నిజ జీవిత వెబ్ అభివృద్ధి ప్రాజెక్టుల కోసం చాలా కీలకమై ఉంటుంది, అక్కడ అనేక డెవలపర్లు కలిసి పని చేస్తారు మరియు కోడ్బేస్లు కాలక్రమేణా అభివృద్ధి చెందుతుంటాయి.
|
||||
|
||||
## అసైన్మెంట్ అవలోకనం
|
||||
|
||||
మీ బ్యాంకింగ్ యాప్ యొక్క `app.js` ఫైలు లాగిన్, రిజిస్ట్రేషన్, మరియు డ్యాష్బోర్డ్ ఫంక్షనాలిటీతో గణనీయంగా పెరిగిపోయింది. ఈ కోడ్ను వృత్తిపరమైన అభివృద్ధి ఆచరణలను ఉపయోగించి రీడబిలిటీ, నిర్వహణయోగ్యత మెరుగుపర్చడానికి మరియు ప్రతులు తగ్గించడానికి రిఫ్యాక్టర్ చేయాల్సిన సమయం వచ్చింది.
|
||||
|
||||
## సూచనలు
|
||||
|
||||
మీ ప్రస్తుత `app.js` కోడ్ను ఈ మూడు ప్రాథమిక రిఫ్యాక్టరింగ్ సాంకేతికాలను అమలు చేసి మార్చండి:
|
||||
|
||||
### 1. కాన్ఫిగరేషన్ కానిస్టెంట్లను తీసివేయండి
|
||||
|
||||
**టాస్క్**: మీ ఫైల్ టాప్లో ఉపయోగించదగిన కానిస్టెంట్లతో కాన్ఫిగరేషన్ విభాగాన్ని సృష్టించండి.
|
||||
|
||||
**అమలు మార్గదర్శకం:**
|
||||
- సర్వర్ API బేస్ URLని (ఇప్పటికి బహుళ చోట్ల హార్డ్కోడ్ అయినది) తీసివేయండి
|
||||
- బహుళ ఫంక్షన్లలో కనిపించే లోప సందేశాల కోసం కానిస్టెంట్లు సృష్టించండి
|
||||
- మళ్లీ మళ్లీ ఉపయోగించే రూట్ పాథులు మరియు ఎలిమెంట్ IDలను కూడా తీసివేయాలని పరిశీలించండి
|
||||
|
||||
**ఉదాహరణ నిర్మాణం:**
|
||||
```javascript
|
||||
// కాన్ఫిగరేషన్ స్థిరాంకాలు
|
||||
const API_BASE_URL = 'http://localhost:5000/api';
|
||||
const ROUTES = {
|
||||
LOGIN: '/login',
|
||||
DASHBOARD: '/dashboard'
|
||||
};
|
||||
```
|
||||
|
||||
### 2. ఏకీకృత రిక్వెస్ట్ ఫంక్షన్ సృష్టించండి
|
||||
|
||||
**టాస్క్**: `createAccount()` మరియు `getAccount()` మధ్య ప్రతిలిపి కోడ్ తొలగించే పునర్వినియోగించదగిన `sendRequest()` ఫంక్షన్ను నిర్మించండి.
|
||||
|
||||
**అవసరాలు:**
|
||||
- GET మరియు POST రెండు రిక్వెస్ట్లను నిర్వహించండి
|
||||
- సరైన లోప నిర్వహణను చేర్చండి
|
||||
- వేర్వేరు URL ఎండ్పాయింట్లకు మద్దతు ఇవ్వండి
|
||||
- ఐచ్చిక రిక్వెస్ట్ బాడీ డేటాను అంగీకరించండి
|
||||
|
||||
**ఫంక్షన్ సంతకం మార్గదర్శకం:**
|
||||
```javascript
|
||||
async function sendRequest(endpoint, method = 'GET', data = null) {
|
||||
// మీ ఇంప్లిమెంటేషన్ ఇక్కడ
|
||||
}
|
||||
```
|
||||
|
||||
### 3. వృత్తిపరమైన కోడ్ డాక్యుమెంటేషన్ జోడించండి
|
||||
|
||||
**టాస్క్**: మీ منطقمన "ఎందుకు" అనే విషయాన్ని స్పష్టంగా మరియు సహాయక కామెంట్లతో వివరించే కోడ్ డాక్యుమెంటేషన్ జోడించండి.
|
||||
|
||||
**డాక్యుమెంటేషన్ ప్రమాణాలు:**
|
||||
- ఫంక్షన్ గుణాత్మకత, పారామితులు మరియు రిటర్న్ విలువలను వివరించే డాక్యుమెంటేషన్ జోడించండి
|
||||
- క్లిష్టమైన లాజిక్ లేదా వ్యాపార నిబంధనలకు ఇంటర్నల్ కామెంట్లను చేర్చండి
|
||||
- సంబంధిత ఫంక్షన్లను సెక్షన్ హెడ్డర్లతో కలిపి గ్రూప్ చేయండి
|
||||
- స్పష్టంగా లేని కోడ్ నమూనాలు లేదా బ్రౌజర్-స్పెసిఫిక్ పనితీరు పరిష్కారాలను వివరించండి
|
||||
|
||||
**ఉదాహరణ డాక్యుమెంటేషన్ శైలి:**
|
||||
```javascript
|
||||
/**
|
||||
* Authenticates user and redirects to dashboard
|
||||
* @param {Event} event - Form submission event
|
||||
* @returns {Promise<void>} - Resolves when login process completes
|
||||
*/
|
||||
async function login(event) {
|
||||
// డిఫాల్ట్ ఫారం సమర్పణ ఆపి జావాస్క్రిప్ట్తో పరిచర్య చేయండి
|
||||
event.preventDefault();
|
||||
|
||||
// మీ అమలు...
|
||||
}
|
||||
```
|
||||
|
||||
## విజయ క్రీటీరియా
|
||||
|
||||
మీ రిఫ్యాక్టర్డ్ కోడ్ ఈ వృత్తిపరమైన అభివృద్ధి ఆచరణలను ప్రదర్శించాలి:
|
||||
|
||||
### ఆదర్శవంతమైన అమలు
|
||||
- ✅ **కానిస్టెంట్లు**: అన్ని మ్యాజిక్ స్ట్రింగ్లు మరియు URLలను స్పష్టంగా పేరుమీద ఉన్న కానిస్టెంట్లుగా తీసివేశారు
|
||||
- ✅ **DRY సూత్రం**: సాధారణ రిక్వెస్ట్ లాజిక్ పునర్వినియోగించదగిన `sendRequest()` ఫంక్షన్లో సమ్మిళితం చేయబడింది
|
||||
- ✅ **డాక్యుమెంటేషన్**: ఫంక్షన్ల వద్ద స్పష్టమైన JSDoc కామెంట్లు ఉన్నాయి, వాటి ఉద్దేశ్యం మరియు పారామితులు వివరించబడ్డాయి
|
||||
- ✅ **సంఘటన**: కోడ్ లాజికల్గా సెక్షన్ హెడ్డర్లు మరియు సुस్పష్ట ఫార్మాటింగ్తో గ్రూప్ చేయబడింది
|
||||
- ✅ **లోప నిర్వహణ**: కొత్త రిక్వెస్ట్ ఫంక్షన్ ద్వారా మెరుగైన లోప నిర్వహణ
|
||||
|
||||
### సరిపడిన అమలు
|
||||
- ✅ **కానిస్టెంట్లు**: ఎక్కువగా పునరావృత విలువలు తీసివేయబడ్డాయి, కొన్నిక డబ్బు గడచిన విలువలు మిగిలినవి
|
||||
- ✅ **ఫాక్టరైజేషన్**: ప్రాథమిక `sendRequest()` ఫంక్షన్ సృష్టించబడింది కానీ అన్ని క్లిష్ట పరిస్థితులను తగిలించకపోవచ్చు
|
||||
- ✅ **కామెంట్లు**: కీలక ఫంక్షన్లు డాక్యుమెంట్ చేయబడ్డాయి, అయినప్పటికీ కొన్ని వివరణలు మరింత పూర్తి కావచ్చు
|
||||
- ✅ **రీడబిలిటీ**: కోడ్ సాధారణంగా బాగా అమర్చబడి ఉంటే కొన్నిస్దలువల్ల మెరుగుదల అవసరం
|
||||
|
||||
### మెరుగుదల అవసరం
|
||||
- ❌ **కానిస్టెంట్లు**: చాలా మ్యాజిక్ స్ట్రింగ్లు మరియు URLలు ఫైల్ అంతటా హార్డ్కోడ్గా ఉన్నన్ని విధంగా ఉన్నాయి
|
||||
- ❌ **ప్రతులు**: సమానమైన ఫంక్షన్ల మధ్య గణనీయమైన కోడ్ ప్రతులు ఇంకా ఉన్నాయి
|
||||
- ❌ **డాక్యుమెంటేషన్**: కోడ్ యొక్క ఉద్దేశాన్ని వివరించని కాని లేదా తగినట్లుగా లేని కామెంట్లు
|
||||
- ❌ **ఆర్గనైజేషన్**: కోడ్ స్పష్టమైన నిర్మాణం మరియు లాజికల్ గ్రూపింగ్ లేదు
|
||||
|
||||
## మీ రిఫ్యాక్టర్డ్ కోడ్ను పరీక్షించడం
|
||||
|
||||
రిఫ్యాక్టరింగ్ తర్వాత, మీ బ్యాంకింగ్ యాప్ సరిగ్గా పనిచేస్తుందా అని నిర్ధారించండి:
|
||||
|
||||
1. **అన్ని యూజర్ ఫ్లోలను పరీక్షించండి**: రిజిస్ట్రేషన్, లాగిన్, డ్యాష్బోర్డ్ ప్రదర్శన, మరియు లోప నిర్వహణ
|
||||
2. **API కాల్స్ను ధృవీకరించండి**: `sendRequest()` ఫంక్షన్ ఖాతా సృష్టి మరియు పొందిక కోసం పనిచేస్తుందా అనేది నిర్ధారించండి
|
||||
3. **లోప పరిస్థితులను పరిశీలించండి**: చెల్లని సాక్ష్యపత్రాలతో మరియు నెట్వర్క్ లోపాలతో పరీక్షించండి
|
||||
4. **కాన్సోల్ అవుట్పుట్ను సమీక్షించండి**: రిఫ్యాక్టరింగ్ సమయంలో కొత్త లోపాలు పరిచయమయ్యాయని లేదు అనేది చూసుకోండి
|
||||
|
||||
## సమర్పణ మార్గదర్శకాలు
|
||||
|
||||
మీ రిఫ్యాక్టర్డ్ `app.js` ఫైల్ను క్రింద తెలిపిన విధంగా సమర్పించండి:
|
||||
- వివిధ ఫంక్షనాలిటీలను క్రమబద్ధీకరించడానికి స్పష్టమైన సెక్షన్ హెడ్డర్లు
|
||||
- ఒకే రకమైన కోడ్ ఫార్మాటింగ్ మరియు ఇన్డెంటేషన్
|
||||
- అన్ని ఫంక్షన్లకు పూర్తి JSDoc డాక్యుమెంటేషన్
|
||||
- మీ రిఫ్యాక్టరింగ్ దృక్కోణాన్ని వివరించే సంక్షిప్త కామెంట్ టాప్లో
|
||||
|
||||
**బోనస్ ఛాలెంజ్**: మీ యాప్ యొక్క ఆర్కిటెక్చర్ మరియు వివిధ ఫంక్షన్లు ఎలా కలిసి పనిచేస్తాయో వివరించే సాధారణ కోడ్ డాక్యుమెంటేషన్ ఫైలు (`CODE_STRUCTURE.md`) సృష్టించండి.
|
||||
|
||||
## నిజ జీవిత సంబంధం
|
||||
|
||||
ఈ అసైన్మెంట్ ప్రొఫెషనల్ డెవలపర్లు సాధారణంగా నిర్వహించే కోడ్ నిర్వహణ పనితనాన్ని ప్రతిబింబిస్తుంది. పరిశ్రమ పరిస్థితుల్లో:
|
||||
- **కోడ్ సమీక్షలు** ఈ అసైన్మెంట్ లాంటి రీడబిలిటీ మరియు నిర్వహణసాధ్యతను అంచనా వేస్తాయి
|
||||
- **టెక్నికల్ డెట్** కోడ్ రెగ్యులర్గా రిఫ్యాక్టర్ చేయబడని, డాక్యుమెంట్ చేయబడని సంబంధం వల్ల పెరుగుతుంది
|
||||
- **టీమ్ సహకారం** స్పష్టమైన, బాగా డాక్యుమెంట్ చేయబడిన కోడ్పై ఆధారపడి ఉంటుంది, కొత్త టీమ్ సభ్యులు అర్థం చేసుకోవాలంటే
|
||||
- **బగ్ ఫిక్స్లు** సరైన అభిసరణలతో, బాగా అమర్చబడ్డ కోడ్బేస్లలో చాలా సులభం
|
||||
|
||||
మీరు ఇక్కడ అభ్యసిస్తున్న నైపుణ్యాలు - కానిస్టెంట్లు తీసివేయడం, ప్రతులను తొలగించడం మరియు స్పష్టమైన డాక్యుమెంటేషన్ రాయడం - వృత్తిపరమైన సాఫ్ట్వేర్ అభివృద్ధి కోసం మౌలికమైనవి.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**ముందస్తు తెలియజేయడం**:
|
||||
ఈ డాక్యుమెంట్ AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము నిశితమైన అనువాదానికి ప్రయత్నించినప్పటికీ, ఆటోమేటిక్ అనువాదాల్లో తప్పులు లేదా పొరపాట్లు ఉండవచ్చు అని దయచేసి గమనించండి. అసలు డాక్యుమెంట్ దాని స్థానిక భాషలోనే అధికారిక మూలంగా పరిగణించబడాలి. ముఖ్యమైన సమాచారానికి, నిపుణుల మానవ అనువాదం చేయించుకోవడం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకం కారణంగా ఏర్పడిన ఏమైనా తప్పుదారితీసుకోవడాలు లేదా తప్పుగా అర్థం చేసుకోవడాలకు మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,164 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "50a7783473b39a2e0f133e271a102231",
|
||||
"translation_date": "2026-01-08T17:54:06+00:00",
|
||||
"source_file": "7-bank-project/4-state-management/assignment.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# "ట్రాన్సాక్షన్ చేర్పు" డైలాగ్ అమలు చేయండి
|
||||
|
||||
## అవలోకనం
|
||||
|
||||
మీ బ్యాంకింగ్ యాప్ ఇప్పుడు స్థిరమైన స్టేట్ మేనేజ్మెంట్ మరియు డేటా నిల్వను కలిగి ఉంది, కానీ ఇది నిజమైన బ్యాంకింగ్ యాప్స్కు అవసరమైన ఒక ముఖ్యమైన ఫీచర్ లేకుండా ఉంది: ఉపయోగదారులు తమ స్వంత ట్రాన్సాక్షన్లు చేర్చగల సామర్ధ్యం. ఈ అసైన్మెంట్లో, మీరు ఇప్పటికే ఉన్న స్టేట్ మేనేజ్మెంట్ సిస్టంలో సజావుగా ఏర్పడే పూర్తి "ట్రాన్సాక్షన్ చేర్పు" డైలాగ్ను అమలు చేస్తారు.
|
||||
|
||||
ఈ అసైన్మెంట్ మీరు నాలుగు బ్యాంకింగ్ పాఠాల్లో నేను విషయాలను సామరస్యంగా తీసుకొస్తుంది: HTML టెంప్లేటింగ్, ఫారం హ్యాండ్లింగ్, API ఇంటిగ్రేషన్, మరియు స్టేట్ మేనేజ్మెంట్.
|
||||
|
||||
## అభ్యాస లక్ష్యాలు
|
||||
|
||||
ఈ అసైన్మెంట్ పూర్తి చేసిన తర్వాత మీరు:
|
||||
- **సృష్టించండి** డేటా ఎంట్రీ కోసం వినియోగదారుకు అనుకూలమైన డైలాగ్ ఇంటర్ఫేస్
|
||||
- **అమలు చేయండి** కీబోర్డ్ మరియు స్క్రీన్ రీడర్ మద్దతుతో సులభంగా ప్రాప్తించగల ఫారం డిజైన్
|
||||
- **ఇన్టిగ్రేట్ చేయండి** మీ ఇప్పటికే ఉన్న స్టేట్ మేనేజ్మెంట్ సిస్టంలో కొత్త ఫీచర్లను
|
||||
- **ప్రాక్టీస్ చేయండి** API కమ్యూనికేషన్ మరియు ఎర్రర్ హ్యాండ్లింగ్లో
|
||||
- **వినియోగించండి** ఆధునిక వెబ్ డెవలప్మెంట్ నమూనాలను వాస్తవ ప్రపంచ ఫీచర్కు
|
||||
|
||||
## సూచనలు
|
||||
|
||||
### దశ 1: ట్రాన్సాక్షన్ చేర్పు బటన్
|
||||
|
||||
మీ డాష్బోర్డ్ పేజీలో ఒక "ట్రాన్సాక్షన్ చేర్పు" బటన్ **సృష్టించండి**, ఇది వినియోగదారులు సులభంగా కనుగొని ప్రాప్తించగలగాలి.
|
||||
|
||||
**అవసరాలు:**
|
||||
- బటన్ను డాష్బోర్డ్లో తగిన లాజికల్ ప్రాంతంలో **స్థాపించండి**
|
||||
- స్పష్టమైన, చర్య-ఆధారిత బటన్ టెక్స్ట్ **ఉపయోగించండి**
|
||||
- మీ ఇప్పటికే ఉన్న UI డిజైన్తో బటన్ **స్టైల్ చేయండి**
|
||||
- బటన్ కీబోర్డ్ ద్వారా సులభంగా ప్రాప్తించదగినదిగా ఉండాలని **ఖచ్చితంగా చూసుకోండి**
|
||||
|
||||
### దశ 2: డైలాగ్ అమలు
|
||||
|
||||
మీ డైలాగ్ అమలుకు ఈ రెండు మార్గాల్లో ఏదైనా ఒకదాన్ని ఎంచుకోండి:
|
||||
|
||||
**ఎంపిక A: విడిగా పేజీ**
|
||||
- ట్రాన్సాక్షన్ ఫారం కోసం ఒక కొత్త HTML టెంప్లేట్ **సృష్టించండి**
|
||||
- మీ రూటింగ్ సిస్టంలో ఒక కొత్త రూట్ **చేర్చండి**
|
||||
- ఫారం పేజీకి మరియు బయటకు **నావిగేషన్ అమలు చేయండి**
|
||||
|
||||
**ఎంపిక B: మోడల్ డైలాగ్ (సిఫార్సు చేయబడింది)**
|
||||
- డాష్బోర్డ్ నుండి తప్పకుండా వెళ్లకుండా జావాస్క్రిప్ట్ ద్వారా డైలాగ్ను చూపించి/దాచండి
|
||||
- [`hidden` ప్రాపర్టీ](https://developer.mozilla.org/docs/Web/HTML/Global_attributes/hidden) లేదా CSS తరగతులను ఉపయోగించి అమలు చేయండి
|
||||
- సరైన ఫోకస్ మేనేజ్మెంట్తో సాఫీగా వినియోగదారుని అనుభవం సృష్టించండి
|
||||
|
||||
### దశ 3: సులభత్వ అమలు
|
||||
|
||||
మీ డైలాగ్ [మోడల్ డైలాగ్ సులభత్వ ప్రమాణాలు](https://developer.paciellogroup.com/blog/2018/06/the-current-state-of-modal-dialog-accessibility/)ను తీరుగా అందించినదిగా ఉండాలని **ఖచ్చితంగా జాగ్రత్త వహించండి**:
|
||||
|
||||
**కీబోర్డ్ నావిగేషన్:**
|
||||
- డైలాగ్ను మూసేయడానికి ఎస్కేప్ కీ మద్దతు ఇవ్వండి
|
||||
- డైలాగ్ తెరిచినపుడు ఫోకస్ను అంతర్కొనబెట్టండి
|
||||
- డైలాగ్ మూసినపుడు ట్రిగ్గర్ బటన్కు ఫోకస్ తిరిగి ఇవ్వండి
|
||||
|
||||
**స్క్రీన్ రీడర్ మద్దతు:**
|
||||
- తగిన ARIA లేబుల్స్ మరియు పాత్రలు జోడించండి
|
||||
- డైలాగ్ తెరుచు/మూసే సంఘటనలను స్క్రీన్ రీడర్లకు ప్రకటించండి
|
||||
- క్లియర్ ఫామ్ ఫీల్డ్ లేబుల్స్ మరియు ఎర్రర్ సందేశాలు అందించండి
|
||||
|
||||
### దశ 4: ఫారం సృష్టి
|
||||
|
||||
ట్రాన్సాక్షన్ డేటాను సేకరించే HTML ఫారం **డిజైన్ చేయండి**:
|
||||
|
||||
**అవసరమైన ఫీల్డ్స్:**
|
||||
- **తేదీ**: ట్రాన్సాక్షన్ జరిగిన తేదీ
|
||||
- **వివరణ**: ట్రాన్సాక్షన్ ఏ కోసం ఉంది
|
||||
- **మొత్తం**: ట్రాన్సాక్షన్ విలువ (ఆదాయం కోసం ধనాత్మక, ఖర్చుల కోసం ঋణాత్మక)
|
||||
|
||||
**ఫారమ్ ఫీచర్లు:**
|
||||
- సమర్పించే ముందు వినియోగదారుని ఇన్పుట్ని **సరిచూసుకోండి**
|
||||
- తప్పు డేటాకి స్పష్టమైన ఎర్రర్ సందేశాలు **అందించండి**
|
||||
- సహాయక ప్లేస్హోల్డర్ టెక్స్ట్ మరియు లేబుల్స్ **జోడించండి**
|
||||
- మీ ఇప్పటికే ఉన్న డిజైన్తో సమంజసం **ఉండేలా స్టైల్ చేయండి**
|
||||
|
||||
### దశ 5: API ఇంటిగ్రేషన్
|
||||
|
||||
మీ ఫారమ్ను బ్యాక్ఎండ్ API తో **కనెక్ట్ చేయండి**:
|
||||
|
||||
**అమలు దశలు:**
|
||||
- [సర్వర్ API స్పెసిఫికేషన్లు](../api/README.md) పరిశీలించండి సరైన ఎండ్పాయింట్ మరియు డేటా ఫార్మాట్ కోసం
|
||||
- మీ ఫారమ్ ఇన్పుట్ల నుండి JSON డేటా **సృష్టించండి**
|
||||
- ఉచిత ఎర్రర్ హ్యాండ్లింగ్తో API కు డేటా పంపండి
|
||||
- విజయవంతమవడం / విఫలమవడం సందేశాలను వినియోగదారుకు **ప్రదర్శించండి**
|
||||
- నెట్వర్క్ సమస్యలను సరైన పద్ధతిలో **నిర్వహించండి**
|
||||
|
||||
### దశ 6: స్టేట్ మేనేజ్మెంట్ ఇంటిగ్రేషన్
|
||||
|
||||
కొత్త ట్రాన్సాక్షన్తో మీ డాష్బోర్డ్ను **అప్డేట్ చేయండి**:
|
||||
|
||||
**ఇంటిగ్రేషన్ అవసరాలు:**
|
||||
- విజయవంతమైన ట్రాన్సాక్షన్ చేర్పు తర్వాత ఖాతా డేటాను **రీఫ్రెష్ చేయండి**
|
||||
- పేజీ రీలోడ్ అవసరం లేకుండా డాష్బోర్డ్ ప్రదర్శనను **అప్డేట్ చేయండి**
|
||||
- కొత్త ట్రాన్సాక్షన్ వెంటనే కనిపించేందుకు **ఖచ్చితత్వం వహించండి**
|
||||
- మొత్తం ప్రాసెస్లో సరైన స్టేట్ అనుసరణ **కాలం నడవండి**
|
||||
|
||||
## సాంకేతిక స్పెసిఫికేషన్లు
|
||||
|
||||
**API ఎండ్పాయింట్ వివరాలు:**
|
||||
[సర్వర్ API డాక్యుమెంటేషన్](../api/README.md) లో దొరుకుతుంది:
|
||||
- ట్రాన్సాక్షన్ డేటా కోసం అవసరమైన JSON ఫార్మాట్
|
||||
- HTTP పద్ధతి మరియు ఎండ్పాయింట్ URL
|
||||
- సమాధానం సూచించబడిన ఫార్మాట్
|
||||
- లోపం స్పందన నిర్వహణ
|
||||
|
||||
**అంచనా ఫలితం:**
|
||||
ఈ అసైన్మెంట్ పూర్తి చేసిన తరువాత, మీ బ్యాంకింగ్ యాప్ పూర్తి ఉపయోగకరమైన "ట్రాన్సాక్షన్ చేర్పు" ఫీచర్ను కలిగి ఉండాలి, ఇది ప్రొఫెషనల్ రూపం మరియు ప్రవర్తన కలిగి ఉంటుంది:
|
||||
|
||||

|
||||
|
||||
## మీ అమలు పరీక్షించడం
|
||||
|
||||
**ప్రాయోగిక పరీక్ష:**
|
||||
1. "ట్రాన్సాక్షన్ చేర్పు" బటన్ స్పష్టంగా కనపడుతుందా మరియు సులభంగా ప్రాప్తించగలదా **నిర్ధారించండి**
|
||||
2. డైలాగ్ సరిగ్గా తెరవబడుతుందా మరియు మూసబడుతుందా **పరీక్షించండి**
|
||||
3. అన్ని అవసరమైన ఫీల్డ్స్ కోసం ఫారమ్ వాలిడేషన్ పని చేస్తున్నదా **ధృవీకరించండి**
|
||||
4. విజయవంతమైన ట్రాన్సాక్షన్లు వెంటనే డాష్బోర్డ్లో కనిపిస్తున్నాయా **పరిశీలించండి**
|
||||
5. తప్పు డేటా మరియు నెట్వర్క్ సమస్యల కోసం ఎర్రర్ హ్యాండ్లింగ్ పనిచేస్తుందా **ఖాళీ చేయండి**
|
||||
|
||||
**సులభత్వ పరీక్ష:**
|
||||
1. మొత్తం ఫ్లోలో కేవలం కీబోర్డ్ ఉపయోగిస్తూ నావిగేట్ చేయండి
|
||||
2. స్క్రీన్ రీడర్తో పరీక్షించి సరైన ప్రకటనలు వస్తున్నాయని చూడు
|
||||
3. ఫోకస్ మేనేజ్మెంట్ సరిగ్గా పని చేస్తుందా తనిఖీ చేయండి
|
||||
4. అన్ని ఫారమ్ వస్తువులకు తగిన లేబుల్స్ ఉన్నాయా నిర్ధారించండి
|
||||
|
||||
## అంచనా ప్రమాణాలు
|
||||
|
||||
| ప్రమాణం | ఉదాత్తమైనది | సరిపోతుంది | మెరుగుదల అవసరం |
|
||||
| -------- | --------- | -------- | ----------------- |
|
||||
| **ఫంక్షనాలిటీ** | ట్రాన్సాక్షన్ చేర్పు ఫీచర్ అద్భుతమైన వినియోగదార అనుభవంతో సజావుగా పని చేస్తుంది మరియు పాఠాల నుండి ఉత్తమ ఆచారాలని పాటిస్తుంది | ట్రాన్సాక్షన్ చేర్పు ఫీచర్ సరిగ్గా పని చేస్తుంది కానీ కొన్ని ఉత్తమ ఆచారాలను పాటించకపోవచ్చు లేదా చిన్న వినియోగ సౌలభ్య సమస్యలు ఉండవచ్చు | ట్రాన్సాక్షన్ చేర్పు ఫీచర్ భాగస్వామ్యంగా పనిచేస్తుంది లేదా గణనీయమైన వినియోగ సమస్యలు కలిగి ఉంటుంది |
|
||||
| **కోడ్ నాణ్యత** | కోడ్ బాగా వాడుకలో ఉన్న నమూనాలను అనుసరిస్తుంది, సరైన ఎర్రర్ హ్యాండ్లింగ్ కలిగి ఉంది, మరియు ఇప్పటికే ఉన్న స్టేట్ మేనేజ్మెంట్తో సజావుగా ఇంటిగ్రేట్ అవుతుంది | కోడ్ పనిచేస్తుంది కానీ संगठनలో కొన్ని సమస్యలు ఉండవచ్చు లేదా ఇప్పటికే ఉన్న కోడ్బేస్తో అసంపూర్ణ ప్యాటర్న్లు ఉండవచ్చు | కోడ్లో ప్రధాన నిర్మాణ సమస్యలు ఉన్నాయి లేదా ఇప్పటికే ఉన్న నమూనాలతో బాగు అనుసంధానం లేదు |
|
||||
| **సులభత్వం** | పూర్తి కీబోర్డ్ నావిగేషన్ మద్దతు, స్క్రీన్ రీడర్ మాతృకత, మరియు WCAG మార్గదర్శకాలు పాటించి చాలా మంచి ఫోకస్ నిర్వహణతో | ప్రాథమిక సులభత్వ లక్షణాలు అమలు అయి ఉండవచ్చు కానీ కొంత కీబోర్డ్ నావిగేషన్ లేదా స్క్రీన్ రీడర్ మద్దతు లేకపోవచ్చు | ఎలాంటి లేదా చాలా తక్కువ సులభత్వ పరిగణనలు అమలులో ఉన్నాయి |
|
||||
| **వినియోగదార అనుభవం** | సహజమైన, శ్రుష్టించబడిన ఇంటర్ఫేస్ స్పష్టమైన ఫీడ్బ్యాక్, సాఫీ ఇంటరాక్షన్లు మరియు ప్రొఫెషనల్ రూపాన్ని కలిగి ఉంది | మంచి వినియోగ అనుభవం కానీ ఫీడ్బ్యాక్ లేదా విజువల్ డిజైన్లో కొన్ని మెరుగుదలకు స్థలాలు ఉన్నాయి | అర్ధం వచ్చే విధంగా కాని ఇంటర్ఫేస్ లేదా వినియోగదారుని ఫీడ్బ్యాక్ లేకుండా ప్రారంబమైన అనుభవం |
|
||||
|
||||
## అదనపు సవాళ్లు (ఐచ్ఛికం)
|
||||
|
||||
మూలभૂત అవసరాలను పూర్తి చేసిన తర్వాత, ఈ మెరుగుదలలను పరిగణించండి:
|
||||
|
||||
**మెరుగైన ఫీచర్లు:**
|
||||
- ట్రాన్సాక్షన్ విభాగాలను (భోజనం, రవాణా, వినోదం, మరియు այլն) **జోడించండి**
|
||||
- రియల్టైం ఫీడ్బ్యాక్తో ఇన్పుట్ ధృవీకరణ **అమలు చేయండి**
|
||||
- పవర్ యూజర్ల కోసం కీబోర్డ్ షార్ట్కట్స్ **సృష్టించండి**
|
||||
- ట్రాన్సాక్షన్ సవరించడం మరియు తీసివేత సామర్ధ్యాలు **చేర్చండి**
|
||||
|
||||
**అధునాతన ఇంటిగ్రేషన్:**
|
||||
- ఇటీవల చేర్చిన ట్రాన్సాక్షన్లు కోసం undo కార్యాచరణను **అమలు చేయండి**
|
||||
- CSV ఫైళ్ల నుండి బల్క్ ట్రాన్సాక్షన్ దిగుమతిని **చేర్చండి**
|
||||
- ట్రాన్సాక్షన్ శోధన మరియు వడపోత సామర్ధ్యాలను **సృష్టించండి**
|
||||
- డేటా ఎగుమతి కార్యాచరణను **అమలు చేయండి**
|
||||
|
||||
ఇవే ఐచ్ఛిక ఫీచర్లు మీకు అధిక స్థాయి వెబ్ డెవలప్మెంట్ కాన్సెప్ట్లలో ప్రాక్టీస్ చేయడానికీ, మరింత పూర్తి బ్యాంకింగ్ అప్లికేషన్ సృష్టించడానికి సహాయపడతాయి!
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**నిరాకరణ**:
|
||||
ఈ డాక్యుమెంట్ AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ఉపయోగపడేందుకు ప్రయత్నించినప్పటికీ, స్వయంచాలక అనువాదాల్లో తప్పులు లేదా లోపాలు ఉండవచ్చు. మూల డాక్యుమెంట్ దాని స్థానిక భాషలో అధికారికమైన మూలంగా భావించబడాలి. కీలక సమాచారం కోసం, నిపుణుల మానవ అనువాదాన్ని సూచిస్తాము. ఈ అనువాదం వలన ఏర్పడే ఏవైనా అపార్థాలు లేదా తప్పుదిద్దుబాట్లకు మేము బాధ్యులేము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,37 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "830359535306594b448db6575ce5cdee",
|
||||
"translation_date": "2026-01-08T11:30:21+00:00",
|
||||
"source_file": "7-bank-project/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# :dollar: బ్యాంక్ను నిర్మించండి
|
||||
|
||||
ఈ ప్రాజెక్టులో, మీరు ఒక కల్పిత బ్యాంక్ను ఎలా నిర్మించాలో నేర్చుకుంటారు. ఈ పాఠాలు వెబ్ యాప్ను ఎలా అమర్చాలి, రూట్లు అందించాలి, ఫారమ్లు నిర్మించాలి, స్థితిని నిర్వహించాలి, మరియు బ్యాంక్ డేటాను పొందగల API నుండి డేటాను ఎలా పొందాలి అనే సూచనలు కలిగి ఉన్నాయి.
|
||||
|
||||
|  |  |
|
||||
|--------------------------------|--------------------------------|
|
||||
|
||||
## పాఠాలు
|
||||
|
||||
1. [వెబ్ యాప్లో HTML టెంప్లేట్లు మరియు రూట్లు](1-template-route/README.md)
|
||||
2. [లాగిన్ మరియు రిజిస్ట్రేషన్ ఫారమ్ నిర్మాణం](2-forms/README.md)
|
||||
3. [డేటాను పొందడం మరియు ఉపయోగించే విధానాలు](3-data/README.md)
|
||||
4. [స్థితి నిర్వహణా సిధ్ధాంతాలు](4-state-management/README.md)
|
||||
|
||||
### క్రెడిట్స్
|
||||
|
||||
ఈ పాఠాలు :hearts: తో [యోహాన్ లాసోర్సా](https://twitter.com/sinedied) రాశారు.
|
||||
|
||||
మీకు ఈ పాఠాల్లో ఉపయోగించిన [సర్వర్ API](/7-bank-project/api/README.md) ఎలా నిర్మించాలో నేర్చుకోవాలనుకుంటే, మీరు [ఈ వీడియోల సిరీస్](https://aka.ms/NodeBeginner) (ప్రత్యేకంగా 17 నుండి 21 వరకు వీడియోలు) ను అనుసరించవచ్చు.
|
||||
|
||||
మీరు [ఈ ఇంటరాక్టివ్ లెర్న్ ట్యుటోరియల్](https://aka.ms/learn/express-api) ను కూడా చూడవచ్చు.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**అంగీకారం**:
|
||||
ఈ పత్రం AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము సరిగ్గా అనువదించేందుకు ప్రయత్నించినప్పటికీ, స్వయంచాలక అనువాదాల్లో పొరపాట్లు లేదా అస్థిరతలు থাকতে అవకాశం ఉంది. స్వదేశీ భాషలో ఉన్న అసలు పత్రాన్ని ప్రామాణిక మూలంగా పరిగణించాలి. కీలక సమాచారం కోసం, వృత్తిపరమైన మానవ అనువాదం అవసరం. ఈ అనువాదం ఉపయోగంలో ఏర్పడే ఎటువంటి అపార్థాలు లేదా తప్పు అర్ధాల కోసం మేము బాధ్యులు కారు.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,50 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "9884f8c8a61cf56214450f8b16a094ce",
|
||||
"translation_date": "2026-01-08T16:39:16+00:00",
|
||||
"source_file": "7-bank-project/api/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# బ్యాంక్ ఏపీఐ
|
||||
|
||||
> [Node.js](https://nodejs.org) + [Express](https://expressjs.com/)తో నిర్మించబడిన బ్యాంక్ ఏపీఐ.
|
||||
|
||||
ఈ ఏపీఐ ఇప్పటికే మీ కోసం నిర్మించబడింది మరియు వ్యాయామ భాగం కాదు.
|
||||
|
||||
కానీ, మీరు ఇలాంటి ఏపీఐని ఎలా నిర్మించాలో తెలుసుకోవాలనుకుంటే మీరు ఈ వీడియోల సిరీస్ను అనుసరించవచ్చు: https://aka.ms/NodeBeginner (వీడియోలు 17 నుండి 21 ఈ ఏపీఐని నేరుగా కవర్ చేస్తాయి).
|
||||
|
||||
మీరు ఈ ఇంటరాక్టివ్ ట్యూటోరియల్ను కూడా చూడవచ్చు: https://aka.ms/learn/express-api
|
||||
|
||||
## సర్వర్ నడుపుట
|
||||
|
||||
మీ దగ్గర [Node.js](https://nodejs.org) ఇన్స్టాల్ అయి ఉన్నదని నిర్ధారించుకోండి.
|
||||
|
||||
1. ఈ రెపోను గిట్ క్లోన్ చేసుకోండి [The Web-Dev-For-Beginners](https://github.com/microsoft/Web-Dev-For-Beginners).
|
||||
2. మీ టెర్మినల్ ఓపెన్ చేసి `Web-Dev-For-Beginners/7-bank-project/api` ఫోల్డర్ వద్దకి వెళ్లండి
|
||||
2. `npm install` రన్ చేసి ప్యాకేజీలు ఇన్స్టాల్ అయ్యేందుకు వేచి ఉండండి(మీ ఇంటర్నెట్ కనెక్షన్ గుణాత్మకతపై ఆధారపడి కొంత సమయం పట్టవచ్చు).
|
||||
3. ఇన్స్టలేషన్ పూర్తయిన తర్వాత, `npm start` రన్ చేయండి మరియు మీరు సిద్ధంగా ఉన్నారు.
|
||||
|
||||
సర్వర్ పోర్ట్ `5000` మీద వినిపించటాన్ని ప్రారంభిస్తుంది.
|
||||
*ఈ సర్వర్ ప్రధాన బ్యాంక్ యాప్ సర్వర్ టెర్మినల్ పోర్ట్ `3000`తో పాటు నడుస్తుంది, దానిని మూసివేయవద్దు.*
|
||||
|
||||
> గమనిక: అన్ని ఎంట్రీలు మెమరీలోనే నిల్వ ఉంటాయి మరియు నిల్వ చేయబడవు, కాబట్టి సర్వర్ ఆపినప్పుడు అన్ని డేటా పోతుంది.
|
||||
|
||||
## ఏపీఐ వివరాలు
|
||||
|
||||
రూట్ | వివరణ
|
||||
---------------------------------------------|------------------------------------
|
||||
GET /api/ | సర్వర్ సమాచారం పొందండి
|
||||
POST /api/accounts/ | ఖాతా సృష్టించండి, ఉదా: `{ user: 'Yohan', description: 'My budget', currency: 'EUR', balance: 100 }`
|
||||
GET /api/accounts/:user | పేర్కొన్న ఖాతా కోసం అన్ని డేటాను పొందండి
|
||||
DELETE /api/accounts/:user | పేర్కొన్న ఖాతాను తొలగించండి
|
||||
POST /api/accounts/:user/transactions | ట్రాన్సాక్షన్ జోడించండి, ఉదా: `{ date: '2020-07-23T18:25:43.511Z', object: 'Bought a book', amount: -20 }`
|
||||
DELETE /api/accounts/:user/transactions/:id | పేర్కొన్న ట్రాన్సాక్షన్ను తొలగించండి
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**హచ్చకములు**:
|
||||
ఈ పత్రం AI అనువాద సేవ అయిన [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మనం ఖచ్చితత్వం కోసం ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా అనిశ్చితులు ఉండవచ్చు. అసలు పత్రం దాని స్వదేశీ భాషలో ఉన్నదే అధికారిక మూలంగా పరిగణించాలి. కీలకమైన సమాచారానికి, నిపుణుల మానవ అనువాదాన్ని సూచిస్తున్నాము. ఈ అనువాదం వాడడంతో కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదోషాల పట్ల మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,20 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "cb549dcad8eea3221cb89793aeaa3bb3",
|
||||
"translation_date": "2026-01-08T20:38:26+00:00",
|
||||
"source_file": "9-chat-project/solution/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# Run solution
|
||||
|
||||
1. ప్రారంభించండి [backend](./backend/README.md)
|
||||
1. ఇప్పుడు ప్రారంభించండి [fronten](./frontend/README.md)
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**విమర్శన**:
|
||||
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించాం. మనం సరిగ్గా ఉండేందుకు ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో తప్పులు లేదా లోపాలు ఉండవచ్చు. అసలు పత్రం దాని మూల భాషలోనే అధికారిక మూలంగా భావించాలి. కీలక సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవాలని సూచన. ఈ అనువాదం ఉపయోగంపై తలెత్తిన ఎలాంటి అపార్థాలు మరియు మూల్యాంకనాలకు మేము బాధ్యులు కావము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,19 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "bcd2c2bbaae71151b1ed1b9170aa78af",
|
||||
"translation_date": "2026-01-08T20:44:30+00:00",
|
||||
"source_file": "9-chat-project/solution/backend/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
మీ రన్టైమ్ని ఎంచుకోండి
|
||||
|
||||
- [Python](./python/README.md)
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**అస్వీకరణ**:
|
||||
ఈ దస్త్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వం కోసం ప్రయత్నిస్తూనే ఉన్నప్పటికీ, స్వయంచాలక అనువాదాలలో లోపాలు లేదా తప్పులు ఉండవచ్చు. అసలైన దస్త్రం మూల భాషలోని దానే ఆధికారం కలిగిన మూలం. ముఖ్య సమాచారం కోసం, ప్రొఫెషనల్ మానవ అనువాదాన్ని పరిగణించమని సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుగా అర్థం చేసుకోవడంపై మేము బాధ్యత తీసుకోము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,64 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "0aaa930f076f2d83cc872ad157f8ffd3",
|
||||
"translation_date": "2026-01-08T20:45:19+00:00",
|
||||
"source_file": "9-chat-project/solution/backend/python/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# కోడ్ నడపండి
|
||||
|
||||
## సెటప్
|
||||
|
||||
వర్చువల్ ఎన్విరాన్మెంట్ సృష్టించండి
|
||||
|
||||
```sh
|
||||
python -m venv venv
|
||||
source ./venv/bin/activate
|
||||
```
|
||||
|
||||
## డిపెండెన్సీలను ఇన్స్టాల్ చేయండి
|
||||
|
||||
```sh
|
||||
pip install openai fastapi uvicorn python-dotenv
|
||||
```
|
||||
|
||||
## API నడపండి
|
||||
|
||||
```sh
|
||||
# విధానం 1: నేరుగా అమలు చేయడం
|
||||
python api.py
|
||||
|
||||
# విధానం 2: uvicorn ఉపయోగించడం
|
||||
uvicorn api:app --host 0.0.0.0 --port 5000 --reload
|
||||
```
|
||||
|
||||
## APIని పరీక్షించండి
|
||||
|
||||
ఇంటరాక్టివ్ API డాక్యుమెంటేషన్ ని సందర్శించండి: `http://localhost:5000/docs`
|
||||
|
||||
## ఫ్రంట్ఎండ్ నడపండి
|
||||
|
||||
మీరు ఫ్రంట్ఎండ్ ఫోల్డర్ లో ఉంటున్నారని నిర్ధారించుకోండి
|
||||
|
||||
*app.js* ని కనుగొని, `BASE_URL` ను మీ బ్యాక్ఎండ్ URL కి మార్చండి
|
||||
|
||||
అది నడపండి
|
||||
|
||||
```
|
||||
npx http-server -p 8000
|
||||
```
|
||||
|
||||
చాట్ లో సందేశం టైప్ చేయడానికి ప్రయత్నించండి, మీకు స్పందన కనిపించాలి (మీరు దీన్ని కోడ్స్పేస్ లో నడుపుతుంటే లేదా యాక్సెస్ టోకెన్ సెటప్ చేసుకున్నట్లయితే).
|
||||
|
||||
## యాక్సెస్ టోకెన్ సెటప్ (మీరు దీన్ని కోడ్స్పేస్ లో నడపకపోతే)
|
||||
|
||||
[Set up PAT](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) చూడండి
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**అస్పష్టత**:
|
||||
ఈ పత్రాన్ని AI అనువాద సేవ అయిన [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువాదం చేయబడింది. మేము సరిగా ఉండేందుకు శ్రమిస్తూన్నాం గానీ, స్వయంచాలక అనువాదాల్లో పొరపాట్లు లేదా అసత్యాలు ఉండవచ్చు. అసలు పత్రం దీని స్థానిక భాషలోనే అధికారిక మూలసూచనగా పరిగణించాలి. ముఖ్యమైన సమాచారానికై, నిపుణుల మానవ అనువాదాన్ని సూచిస్తున్నాము. ఈ అనువాదాన్ని ఉపయోగించడంవలన జరిగే ఏమైనా అపార్థాలు లేదా తప్పుగా అర్థం చేసుకోవడాలపై మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,23 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "7746a470be8fc7f736eb1b43ebb710ee",
|
||||
"translation_date": "2026-01-08T20:39:12+00:00",
|
||||
"source_file": "9-chat-project/solution/frontend/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# కోడ్ ని కొనసాగించండి
|
||||
|
||||
```sh
|
||||
npx http-server -p 3000
|
||||
```
|
||||
|
||||
`app.js` లో `BASE_URL` ని కనుగొని దాన్ని వెనుకన ఉన్న బ్యాక్ఎండ్ URL కి సరిపోలేటట్టు మార్చండి.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**దరఖాస్తు**:
|
||||
ఈ దస్త్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము శుద్ధత కోసం ప్రయత్నించిపోతున్నప్పటికీ, స్వయంచాలక అనువాదాల్లో పొరపాట్లు లేదా తప్పులు ఉండే అవకాశం ఉండవచ్చు. మౌలిక భాషలో ఉన్న అసలు దస్త్రాన్ని అధికారిక మూలంగా పరిగణించాల్సివుందిది. ముఖ్యమైన సమాచారం కోసం, నిపుణుల చేతి అనువాదాన్ని సూచిస్తాము. ఈ అనువాదం ఉపయోగించడంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుప్రాప్తులకి మేము బాధ్యత తీసుకోము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,417 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "a362efd06d64d4134a0cfe8515a86d34",
|
||||
"translation_date": "2026-01-08T10:23:14+00:00",
|
||||
"source_file": "AGENTS.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# AGENTS.md
|
||||
|
||||
## Project Overview
|
||||
|
||||
ఇది ఆరంభకులకు వెబ్ అభివృద్ధి ప్రాథమికాలను బోధించడానికి ఒక విద్యా పాఠ్యక్రమ సంచయ కోశం. ఈ పాఠ్యపథకం మైక్రోసాఫ్ట్ క్లౌడ్ ఆక్టివ్లు అభివృద్ధి చేసిన 12-వారాల సమగ్ర కోర్సు, జావాస్క్రిప్ట్, CSS, మరియు HTML ను కవర్ చేసే 24 ప్రాయోగిక పాఠాలు కలిగి ఉంటుంది.
|
||||
|
||||
### Key Components
|
||||
|
||||
- **శిక్షణా విషయాలు**: ప్రాజెక్ట్-ఆధారిత మాడ్యూల్స్ లో 24 క్రమబద్ధీకరించిన పాఠాలు
|
||||
- **ప్రాయోగిక ప్రాజెక్టులు**: టెరరియం, టైపింగ్ ఆట, బ్రౌజర్ ఎక్స్టెన్షన్, స్పేస్ ఆట, బాంకింగ్ ఆప్, కోడ్ ఎడిటర్, మరియు AI చాట్ అసిస్టెంట్
|
||||
- **ఆకట్టుకునే క్విజ్లు**: ప్రతి పాఠానికి 3 ప్రశ్నలతో కలిపి 48 క్విజ్లు (పూర్వ / అనంతర-పాఠ పరీక్షలు)
|
||||
- **బహుభాషా మద్దతు**: GitHub Actions ద్వారా 50+ భాషలకి స్వయంచాలక అనువాదాలు
|
||||
- **సాంకేతికతలు**: HTML, CSS, JavaScript, Vue.js 3, Vite, Node.js, Express, Python (AI ప్రాజెక్టులకు)
|
||||
|
||||
### Architecture
|
||||
|
||||
- పాఠాల ఆధారంగా నిర్మించిన విద్యా కోశం
|
||||
- ప్రతి పాఠం ఫోల్డర్ README, కోడ్ ఉదాహరణలు, పరిష్కారాలు కలిగి ఉంటుంది
|
||||
- స్వతంత్ర ప్రాజెక్టులు వేరే డైరెక్టరీలలో (quiz-app, వివిధ పాఠ ప్రాజెక్టులు)
|
||||
- GitHub Actions (co-op-translator) ఉపయోగించి అనువాద వ్యవస్థ
|
||||
- Docsify ద్వారా డాక్యుమెంటేషన్ అందించబడుతుంది మరియు PDF లో కూడా అందుబాటులో ఉంది
|
||||
|
||||
## Setup Commands
|
||||
|
||||
ఈ సంచయ కోశం ఎక్కువగా విద్యా విషయాలను వినియోగించుకోవడానికి. ప్రత్యేక ప్రాజెక్టులతో పని చేయడానికి:
|
||||
|
||||
### Main Repository Setup
|
||||
|
||||
```bash
|
||||
git clone https://github.com/microsoft/Web-Dev-For-Beginners.git
|
||||
cd Web-Dev-For-Beginners
|
||||
```
|
||||
|
||||
### Quiz App Setup (Vue 3 + Vite)
|
||||
|
||||
```bash
|
||||
cd quiz-app
|
||||
npm install
|
||||
npm run dev # డెవలప్మెంట్ సర్వర్ను ప్రారంభించండి
|
||||
npm run build # ఉత్పత్తి కోసం నిర్మించండి
|
||||
npm run lint # ESLint నడపండి
|
||||
```
|
||||
|
||||
### Bank Project API (Node.js + Express)
|
||||
|
||||
```bash
|
||||
cd 7-bank-project/api
|
||||
npm install
|
||||
npm start # API సర్వర్ను ప్రారంభించండి
|
||||
npm run lint # ESLint ని నడపండి
|
||||
npm run format # Prettier తో ఫార్మాట్ చేయండి
|
||||
```
|
||||
|
||||
### Browser Extension Projects
|
||||
|
||||
```bash
|
||||
cd 5-browser-extension/solution
|
||||
npm install
|
||||
# బ్రౌజర్-ప్రత్యేక ఎక్స్టెన్షన్ లోడ్ చేయడం సంబంధిత సూచనలను అనుసరించండి
|
||||
```
|
||||
|
||||
### Space Game Projects
|
||||
|
||||
```bash
|
||||
cd 6-space-game/solution
|
||||
npm install
|
||||
# బ్రౌజర్లో index.html ని తెరవండి లేదా Live Server వినియోగించండి
|
||||
```
|
||||
|
||||
### Chat Project (Python Backend)
|
||||
|
||||
```bash
|
||||
cd 9-chat-project/solution/backend/python
|
||||
pip install openai
|
||||
# GITHUB_TOKEN పరిసర వేరియబుల్ సెట్చేయండి
|
||||
python api.py
|
||||
```
|
||||
|
||||
## Development Workflow
|
||||
|
||||
### For Content Contributors
|
||||
|
||||
1. **రిపాజిటరీని ఫోర్క్ చేయండి** మీ GitHub ఖాతాకు
|
||||
2. **మీ fork ని స్థానికంగా క్లోన్ చేయండి**
|
||||
3. మీ మార్పులకు **కొత్త బ్రాంచ్ సృష్టించండి**
|
||||
4. పాఠ విషయాలు లేదా కోడ్ ఉదాహరణలలో మార్పులు చేయండి
|
||||
5. సంబంధిత ప్రాజెక్ట్ డైరెక్టరీలలో కోడ్ మార్పులను పరీక్షించండి
|
||||
6. సహకార మార్గదర్శకాలను అనుసరించి పుల్ రిక్వెస్ట్లు పంపండి
|
||||
|
||||
### For Learners
|
||||
|
||||
1. రిపాజిటరీని ఫోర్క్ లేదా క్లోన్ చేయండి
|
||||
2. పాఠాల డైరెక్టరీలలో వరుసగా navigation చేయండి
|
||||
3. ప్రతి పాఠం README ఫైళ్ళను చదవండి
|
||||
4. pre-lesson క్విజ్లు పూర్తి చేయండి https://ff-quizzes.netlify.app/web/
|
||||
5. పాఠం ఫోల్డర్లలోని కోడ్ ఉదాహరణలపై పని చేయండి
|
||||
6. అసైన్మెంట్లు మరియు సవాళ్లను పూర్తి చేయండి
|
||||
7. post-lesson క్విజ్లు పూర్తి చేయండి
|
||||
|
||||
### Live Development
|
||||
|
||||
- **డాక్యుమెంటేషన్**: రూట్ లో `docsify serve` నడపండి (పోర్ట్ 3000)
|
||||
- **క్విజ్ ఆప్**: quiz-app డైరెక్టరీలో `npm run dev` నడపండి
|
||||
- **ప్రాజెక్టులు**: HTML ప్రాజెక్టులకు VS Code Live Server ఎక్స్టెన్షన్ ఉపయోగించండి
|
||||
- **API ప్రాజెక్టులు**: సంబంధిత API డైరెక్టరీలలో `npm start` నడపండి
|
||||
|
||||
## Testing Instructions
|
||||
|
||||
### Quiz App Testing
|
||||
|
||||
```bash
|
||||
cd quiz-app
|
||||
npm run lint # కోడ్ శైలి సమస్యలు తనిఖీ చేయండి
|
||||
npm run build # నిర్మాణం విజయవంతమవుతుందో నిర్ధారించుకోండి
|
||||
```
|
||||
|
||||
### Bank API Testing
|
||||
|
||||
```bash
|
||||
cd 7-bank-project/api
|
||||
npm run lint # కోడ్ స్టైల్ సమస్యలను తనిఖీ చేయండి
|
||||
node server.js # సర్వర్ లో తప్పులు లేకుండా ప్రారంభమవుతుందో ధృవీకరించండి
|
||||
```
|
||||
|
||||
### General Testing Approach
|
||||
|
||||
- ఇది పూర్తిస్థాయి ఆటోమెటిక్ పరీక్షలలేని విద్యా రిపాజిటరీ
|
||||
- మాన్యువల్ టెస్టింగ్ కింది అంశాలపై ఫోకస్ చేస్తుంది:
|
||||
- కోడ్ ఉదాహరణలు ఎర్రర్ లేకుండా నడుస్తున్నాయా
|
||||
- డాక్యుమెంటేషన్ లో లింకులు బాగా పనిచేస్తున్నాయా
|
||||
- ప్రాజెక్ట్ బిల్డింగ్ విజయవంతమయింది
|
||||
- ఉదాహరణలు ఉత్తమ అభ్యాసాలకు అనుగుణంగా ఉన్నాయా
|
||||
|
||||
### Pre-submission Checks
|
||||
|
||||
- package.json ఉన్న డైరెక్టరీలలో `npm run lint` నడపండి
|
||||
- మార్క్డౌన్ లింకులు సరైనవా అని ధృవీకరించండి
|
||||
- బ్రౌజర్ లేదా Node.js లో కోడ్ ఉదాహరణలను పరీక్షించండి
|
||||
- అనువాదాలు సరైన నిర్మాణాన్ని కలిగి ఉన్నాయా అని పరిశీలించండి
|
||||
|
||||
## Code Style Guidelines
|
||||
|
||||
### JavaScript
|
||||
|
||||
- ఆధునిక ES6+ వాక్యరచన ఉపయోగించండి
|
||||
- ప్రాజెక్టుల్లో కలిగిన ESLint నియమాలను అనుసరించండి
|
||||
- విద్యార్థుల స్పష్టతకు అర్థమయ్యే వేరియబుల్ మరియు ఫంక్షన్ పేర్లను వాడండి
|
||||
- కాంప్లెక్స్ కాన్సెప్ట్ల వివరణకు వ్యాఖ్యలు జోడించండి
|
||||
- Prettier ద్వారా ఫార్మాటింగ్ చేయండి (అక్కడ అమర్చబడిన ఉంటే)
|
||||
|
||||
### HTML/CSS
|
||||
|
||||
- సేమాంటిక్ HTML5 ఎలిమెంట్స్ ఉపయోగించండి
|
||||
- రెస్పాన్సివ్ డిజైన్ సూత్రాలు పాటించండి
|
||||
- క్లియర్ క్లాస్ నేమింగ్ కన్వెన్షన్స్
|
||||
- CSS సాంకేతికతలను అవగాహన కోసం వ్యాఖ్యలతో వివరించండి
|
||||
|
||||
### Python
|
||||
|
||||
- PEP 8 శైలీ మార్గదర్శకాలు
|
||||
- సరళమైన, విద్యా కోడ్ ఉదాహరణలు
|
||||
- నేర్చుకునే వారికి ఉపయోగపడే టైప్ హింట్స్
|
||||
|
||||
### Markdown Documentation
|
||||
|
||||
- స్పష్టమైన శీర్షిక హియరార్కీ
|
||||
- భాష స్పష్టీకరణతో కోడ్ బ్లాక్స్
|
||||
- అదనపు వనరులకు లింకులు
|
||||
- `images/` డైరెక్టరీలలో స్క్రీన్షాట్లు మరియు చిత్రాలు
|
||||
- అందుబాటుని పెంచేందుకు చిత్రాలకు ఆల్ట్ టెక్స్ట్
|
||||
|
||||
### File Organization
|
||||
|
||||
- పాఠాలు వరుస సంఖ్యలతో (1-getting-started-lessons, 2-js-basics, మొదలైనవి)
|
||||
- ప్రతి ప్రాజెక్ట్ కి `solution/`, తరచుగా `start/` లేదా `your-work/` ఫోల్డర్లు ఉంటాయి
|
||||
- చిత్రాలు పాఠానికి చెందిన `images/` ఫోల్డర్లలో భద్రపరచబడతాయి
|
||||
- అనువాదాలు `translations/{language-code}/` నిర్మాణంలో
|
||||
|
||||
## Build and Deployment
|
||||
|
||||
### Quiz App Deployment (Azure Static Web Apps)
|
||||
|
||||
quiz-app Azure Static Web Appsకి కాన్ఫిగర్ చేయబడింది:
|
||||
|
||||
```bash
|
||||
cd quiz-app
|
||||
npm run build # dist/ ఫోల్డర్ను సృష్టిస్తుంది
|
||||
# మెయిన్కు పుష్ చేసినప్పుడు GitHub Actions వర్క్ఫ్లో ద్వారా డిప్లాయ్ చేస్తుంది
|
||||
```
|
||||
|
||||
Azure Static Web Apps కాన్ఫిగరేషన్:
|
||||
- **యాప్ స్థానం**: `/quiz-app`
|
||||
- **అవుట్పుట్ స్థానం**: `dist`
|
||||
- **వర్క్ఫ్లో**: `.github/workflows/azure-static-web-apps-ashy-river-0debb7803.yml`
|
||||
|
||||
### Documentation PDF Generation
|
||||
|
||||
```bash
|
||||
npm install # docsify-to-pdf ని ఇన్స్టాల్ చేయండి
|
||||
npm run convert # డాక్స్ నుండి PDF సృష్టించండి
|
||||
```
|
||||
|
||||
### Docsify Documentation
|
||||
|
||||
```bash
|
||||
npm install -g docsify-cli # Docsify ను గ్లోబల్గా ఇన్స్టాల్ చేయండి
|
||||
docsify serve # localhost:3000 పై సర్వ్ చేయండి
|
||||
```
|
||||
|
||||
### Project-specific Builds
|
||||
|
||||
ప్రతి ప్రాజెక్ట్ డైరెక్టరీకి తన స్వంత బిల్డ్ ప్రక్రియ ఉండవచ్చు:
|
||||
- Vue ప్రాజెక్టులకు: `npm run build` ప్రొడక్షన్ బండిల్స్ సృష్టిస్తుంది
|
||||
- స్థిర ప్రాజెక్టులు: బిల్డ్ స్టెప్ అవసరం లేదు, ఫైళ్ళను నేరుగా సేవ్ చేయండి
|
||||
|
||||
## Pull Request Guidelines
|
||||
|
||||
### Title Format
|
||||
|
||||
మార్పు ప్రాంతాన్ని స్పష్టంగా సూచించే టైటిల్స్ వాడండి:
|
||||
- `[Quiz-app] పాఠం X కోసం కొత్త క్విజ్ జోడించండి`
|
||||
- `[Lesson-3] టెరరియం ప్రాజెక్ట్ లో టైపో సరిచేయండి`
|
||||
- `[Translation] పాఠం 5 కి స్పానిష్ అనువాదం జోడించండి`
|
||||
- `[Docs] సెటప్ సూచనలు నవీకరించండి`
|
||||
|
||||
### Required Checks
|
||||
|
||||
PR సమర్పించే ముందు:
|
||||
|
||||
1. **కోడ్ నాణ్యత**:
|
||||
- ప్రభావిత ప్రాజెక్ట్ డైరెక్టరీలలో `npm run lint` నడపండి
|
||||
- అన్ని లింట్ లోపాలు, హెచ్చరికలు సరి చేయండి
|
||||
|
||||
2. **బిల్డ్ ధృవీకరణ**:
|
||||
- అవసరమైతే `npm run build` నడపండి
|
||||
- ఎలాంటి బిల్డ్ లోపాలు లేవన్నారు తేల్చుకోండి
|
||||
|
||||
3. **లింక్ చెల్లింపుదనం**:
|
||||
- అన్ని మార్క్డౌన్ లింకులను పరీక్షించండి
|
||||
- చిత్ర సూచనలు పనిచేస్తున్నాయా పరిశీలించండి
|
||||
|
||||
4. **విషయ సమీక్ష**:
|
||||
- స్పెల్లింగ్, వ్యాకరణ పొరపాట్ల కోసం పృథ్వీశుద్ధి చేయండి
|
||||
- కోడ్ ఉదాహరణలు సరైనవి మరియు విద్యా పరంగానూ సరైనవి
|
||||
- అనువాదాలు మూల అర్థాన్ని కాపాడుతున్నాయా చూసుకోండి
|
||||
|
||||
### Contribution Requirements
|
||||
|
||||
- Microsoft CLAని అంగీకరించాలి (మొదటి PRపై ఆటోమెటిక్ చెక్)
|
||||
- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)ని అనుసరించాలి
|
||||
- పూర్తి మార్గదర్శకాలకు [CONTRIBUTING.md](./CONTRIBUTING.md) చూడండి
|
||||
- అవసరమైతే PR వివరణలో ఇష్యూ నంబర్లు సూచించండి
|
||||
|
||||
### Review Process
|
||||
|
||||
- PRలను నిర్వహకులు మరియు కమ్యూనిటీ సమీక్షిస్తారు
|
||||
- విద్యా స్పష్టత ప్రాధాన్యం కలదు
|
||||
- కోడ్ ఉదాహరణలు ప్రస్తుత ఉత్తమ అభ్యాసాలకు అనుగుణంగా ఉండాలి
|
||||
- అనువాదాలు ఖచ్చితత్వం మరియు సాంస్కృతిక అనుకూలత కోసం పరిశీలించబడతాయి
|
||||
|
||||
## Translation System
|
||||
|
||||
### Automated Translation
|
||||
|
||||
- GitHub Actions లో co-op-translator వర్క్ఫ్లో ఉపయోగిస్తుంది
|
||||
- 50+ భాషలకు ఆటోమేటిక్ అనువాదాలు చేస్తుంది
|
||||
- మూల ఫైళ్లు ప్రధాన డైరెక్టరీస్లో ఉంటాయి
|
||||
- అనువాద ఫైళ్లు `translations/{language-code}/`లో ఉంటాయి
|
||||
|
||||
### Adding Manual Translation Improvements
|
||||
|
||||
1. `translations/{language-code}/`లో ఫైల్ కనుగొనండి
|
||||
2. నిర్మాణాన్ని కాపాడుతూ మెరుగులు చేయండి
|
||||
3. కోడ్ ఉదాహరణలు ప్రావృత్తి రీతిలో పనిచేస్తున్నాయో చూడండి
|
||||
4. స్థానికృత క్విజ్ కంటెంట్ ను పరీక్షించండి
|
||||
|
||||
### Translation Metadata
|
||||
|
||||
అనువదించిన ఫైళ్ళలో మెటాడేటా హెడ్డర్ ఉంటుంది:
|
||||
```markdown
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "...",
|
||||
"translation_date": "...",
|
||||
"source_file": "...",
|
||||
"language_code": "..."
|
||||
}
|
||||
-->
|
||||
```
|
||||
|
||||
## Debugging and Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
**క్విజ్ యాప్ ప్రారంభం కావడం లేదు**:
|
||||
- Node.js వెర్షన్ తనిఖీ చేయండి (v14+ సిఫారసు)
|
||||
- `node_modules` మరియు `package-lock.json` తొలగించి `npm install` మళ్లీ నడపండి
|
||||
- పోర్ట్ ది. కేంద్రితంగా ఆపరేట్ అయితే తనిఖీ చేయండి (డిఫాల్ట్: Vite పోర్ట్ 5173)
|
||||
|
||||
**API సర్వర్ ప్రారంభం కావడం లేదు**:
|
||||
- Node.js కనీస వెర్షన్ (node >=10) తనిఖీ చేయండి
|
||||
- పోర్ట్ ఇప్పటికే వాడుకలో ఉందా శోధించండి
|
||||
- అన్ని డిపెండెన్సీలను `npm install` చేయండి
|
||||
|
||||
**బ్రౌజర్ ఎక్స్టెన్షన్ లోడ్ అవడం లేదు**:
|
||||
- manifest.json సరైన ఫార్మాట్ లో ఉందో చూసుకోండి
|
||||
- బ్రౌజర్ కన్సోల్ లో పొరపాట్లు ఉన్నాయా తనిఖీ చేయండి
|
||||
- బ్రౌజర్-ప్రత్యేక ఎక్స్టెన్షన్ ఇన్స్టాలేషన్ సూచనలు అనుసరించండి
|
||||
|
||||
**Python చాట్ ప్రాజెక్ట్ సమస్యలు**:
|
||||
- OpenAI ప్యాకేజీ ఇన్స్టాల్ చేసినట్టయితే చూసుకోండి: `pip install openai`
|
||||
- GITHUB_TOKEN_ENVIRONMENT వేరియబుల్ సెట్ అయినదని ధృవీకరించండి
|
||||
- GitHub Models యాక్సెస్ అనుమతులు తనిఖీ చేయండి
|
||||
|
||||
**Docsify డాక్స్ అందుబాటులో లేకపోవడం**:
|
||||
- docsify-cli గ్లోబల్ గా ఇన్స్టాల్ చేయండి: `npm install -g docsify-cli`
|
||||
- రిపాజిటరీ రూట్ నుండి నడపండి
|
||||
- `docs/_sidebar.md` ఉందో చూసుకోండి
|
||||
|
||||
### Development Environment Tips
|
||||
|
||||
- HTML ప్రాజెక్టులకు VS Code లో Live Server ఎక్స్టెన్షన్ ఉపయోగించండి
|
||||
- ESLint, Prettier ఎక్స్టెన్షన్లను ఇన్స్టాల్ చేసి నిరంతర ఫార్మాటింగ్ కోసం వాడండి
|
||||
- JavaScript డీబగ్గింగ్ కోసం బ్రౌజర్ DevTools ఉపయోగించండి
|
||||
- Vue ప్రాజెక్టులకు Vue DevTools బ్రౌజర్ ఎక్స్టెన్షన్ ఉపయోగించండి
|
||||
|
||||
### Performance Considerations
|
||||
|
||||
- అనువాద ఫైళ్ళ సంఖ్య ఎక్కువ (50+ భాషలు) కావున పూర్తి క్లోన్లు పెద్దవి
|
||||
- కంటెంట్ మీద మాత్రమే పని చేస్తే డెఫాల్ట్ క్లోన్ తొలగించి షాలో క్లోన్ వాడండి: `git clone --depth 1`
|
||||
- ఇంగ్లీష్ కంటెంట్ మీద పని చేసే సమయంలో అనువాదాలను సెర్చ్ నుండి తొలగించండి
|
||||
- మొదటి సారి npm install మరియు Vite build స్పష్టంగా నడవడానికి బిల్డ్ ప్రక్రియలు కొంచెం ఆలస్యంగా ఉండొచ్చు
|
||||
|
||||
## Security Considerations
|
||||
|
||||
### Environment Variables
|
||||
|
||||
- API కీలు రిపాజిటరీలో ఎప్పుడూ కమిట్ చెయ్యకూడదు
|
||||
- `.env` ఫైల్స్ వాడండి (ఇవి `.gitignore`లో ఉన్నాయి)
|
||||
- అవసరమయిన ఎన్విరాన్మెంట్ వేరియబుల్స్ ప్రాజెక్ట్ README లలో వర్ణించండి
|
||||
|
||||
### Python Projects
|
||||
|
||||
- వర్చువల్ ఎన్విరాన్మెంట్లు ఉపయోగించండి: `python -m venv venv`
|
||||
- డిపెండెన్సీలను తాజా గా ఉంచండి
|
||||
- GitHub టోకెన్లు తక్కువ అనుమతులు కలిగి ఉండాలి
|
||||
|
||||
### GitHub Models Access
|
||||
|
||||
- GitHub Models కు Personal Access Tokens (PAT) అవసరం
|
||||
- టోకెన్లు ఎన్విరాన్మెంట్ వేరియబుల్స్ గా భద్రపరచండి
|
||||
- టోకెన్లు లేదా క్రెడెన్షియల్స్ ఎప్పుడూ కమిట్ చేయవద్దు
|
||||
|
||||
## Additional Notes
|
||||
|
||||
### Target Audience
|
||||
|
||||
- వెబ్ అభివృద్ధిలో పూర్తి కొత్త వారు
|
||||
- విద్యార్థులు మరియు స్వీయాధ్యయనకర్తలు
|
||||
- తరగతి గదుల్లో పాఠ్యక్రమాన్ని ఉపయోగించే ఉపాధ్యాయులు
|
||||
- కంటెంట్ ఆక్సెసిబిలిటీ మరియు మాటిమీద నెమ్మదిగా నైపుణ్యాలు పెంపొందించేందుకు రూపొద్దు
|
||||
|
||||
### Educational Philosophy
|
||||
|
||||
- ప్రాజెక్ట్-ఆధారిత నేర్చుకునే విధానం
|
||||
- తరచుగా నాలెడ్జ్ చెక్స్ (క్విజ్లు)
|
||||
- అమలు చేయగలిగే కోడింగ్ వ్యాయామాలు
|
||||
- వాస్తవ ప్రపంచ అనువర్తన ఉదాహరణలు
|
||||
- ఫ్రేమ్వర్క్ల ముందు ప్రాథమికాంశాలపై దృష్టి
|
||||
|
||||
### Repository Maintenance
|
||||
|
||||
- సజీవ కమ్యూనిటీ విద్యార్థులు మరియు సహకారకులతో
|
||||
- ఆపరేషన్లు మరియు కంటెంట్ సాధారణంగా నవీకరణలు
|
||||
- నిర్వహకులు ఇష్యూలు మరియు చర్చలను పర్యవేక్షిస్తారు
|
||||
- అనువాద నవీకరణలు GitHub Actions ద్వారా స్వయంచాలకమే
|
||||
|
||||
### Related Resources
|
||||
|
||||
- [Microsoft Learn modules](https://docs.microsoft.com/learn/)
|
||||
- [Student Hub resources](https://docs.microsoft.com/learn/student-hub/)
|
||||
- [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot) నేర్చుకునే వారికి సిఫారసు
|
||||
- అదనపు కోర్సులు: జనరేటివ్ AI, డేటా సైన్స్, ML, IoT పాఠ్యక్రమాలు అందుబాటులో
|
||||
|
||||
### Working with Specific Projects
|
||||
|
||||
ప్రత్యేక ప్రాజెక్టుల వివరాలకు README ఫైళ్ళను చూడండి:
|
||||
- `quiz-app/README.md` - Vue 3 క్విజ్ అనువర్తనం
|
||||
- `7-bank-project/README.md` - బాంకింగ్ అనువర్తనం మరియు ధృవీకరణతో
|
||||
- `5-browser-extension/README.md` - బ్రౌజర్ ఎక్స్టెన్షన్ అభివృద్ధి
|
||||
- `6-space-game/README.md` - కేన్వాస్ ఆధారిత ఆట అభివృద్ధి
|
||||
- `9-chat-project/README.md` - AI చాట్ అసిస్టెంట్ ప్రాజెక్ట్
|
||||
|
||||
### Monorepo Structure
|
||||
|
||||
ఇది సంప్రదాయ మోనోరిపో కానప్పటికీ, ఈ సంకలనం అనేక స్వతంత్ర ప్రాజెక్టులను కలిగి ఉంది:
|
||||
- ప్రతి పాఠం స్వతంత్రంగా ఉంటుంది
|
||||
- ప్రాజెక్టులు ఒకరితో ఒకరు డిపెండెన్సీలు పంచుకోరువు
|
||||
- ఇతరులపై ప్రభావం లేకుండా వ్యక్తిగత ప్రాజెక్టులపై పని చేయండి
|
||||
- మొత్తం పాఠ్యక్రమ అనుభవం కోసం మొత్తం రిపాజిటరీ ని క్లోన్ చేయండి
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**గుర్తింపు**:
|
||||
ఈ పత్రం AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మనం ఖచ్చితత్వం కోసం ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు అని దయచేసి గమనించండి. మూల పత్రం దాని స్వదేశీ భాషలోనే అధికారిక మూలంగా పరిగణించాలి. కీలకమైన సమాచారానికి, వృత్తిపరమైన మానవ అనువాదాన్ని సిఫార్సు చేస్తాము. ఈ అనువాదం వలన సాధ్యమైన ఏవైనా అపార్థాలు లేదా తప్పుల బాధ్యత మేము వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,25 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "b0a9b4cccd918195f58224d5793da1a6",
|
||||
"translation_date": "2026-01-08T10:34:19+00:00",
|
||||
"source_file": "CODE_OF_CONDUCT.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# మైక్రోసాఫ్ట్ ఓపెన్ సోర్స్ ఆచరణ కోడ్
|
||||
|
||||
ఈ ప్రాజెక్టు [మైక్రోసాఫ్ట్ ఓపెన్ సోర్స్ ఆచరణ కోడ్](https://opensource.microsoft.com/codeofconduct/?WT.mc_id=academic-77807-sagibbon)ను స్వీకరించింది.
|
||||
|
||||
స్రోతాలు:
|
||||
|
||||
- [మైక్రోసాఫ్ట్ ఓపెన్ సోర్స్ ఆచరణ కోడ్](https://opensource.microsoft.com/codeofconduct/?WT.mc_id=academic-77807-sagibbon)
|
||||
- [మైక్రోసాఫ్ట్ ఆచరణ కోడ్ FAQ](https://opensource.microsoft.com/codeofconduct/faq/?WT.mc_id=academic-77807-sagibbon)
|
||||
- ప్రశ్నలు లేదా ఆందోళనలకు [opencode@microsoft.com](mailto:opencode@microsoft.com) ను సంప్రదించండి.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**అస్పష్టత**:
|
||||
ఈ డాక్యుమెంట్ [Co-op Translator](https://github.com/Azure/co-op-translator) అనే AI అనువాద సేవ ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, స్వయంచాలక అనువాదాలలో తప్పులు లేదా అసత్యతలు ఉండవచ్చు. అసలు డాక్యుమెంట్ లోని స్థానిక భాషలో ఉన్నది అధికారిక మూలం గా పరిగణించవలెను. కీలక సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదాన్ని సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వలన కలిగే ఏవైనా అపార్థాలు లేదా తప్పుగా అర్థం చేసుకోవడాల కోసం మేము బాధ్యులు కావు.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,28 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "777400e9f0336c7ee2f9a1200a88478f",
|
||||
"translation_date": "2026-01-08T10:14:14+00:00",
|
||||
"source_file": "CONTRIBUTING.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
# కానిక్షణ
|
||||
|
||||
ఈ ప్రాజెక్ట్ దానం మరియు సూచనలను స్వాగతిస్తుంది. అత్యధిక దానాలకు మీరు
|
||||
కాంట్రిబ్యూటర్ లైసెన్స్ అగ్రిమెంట్ (CLA)కు ఒక ఒప్పందం మీద అనుమతి ఇవ్వాలి, ఇది మీరు
|
||||
మీ దానాన్ని ఉపయోగించేందుకు హక్కు కలిగి ఉన్నారని మరియు ఆ హక్కును మాకు ఇచ్చినట్లు ప్రకటిస్తుంది. మరింత సమాచారం కోసం సందర్శించండి
|
||||
[https://cla.microsoft.com](https://cla.microsoft.com/?WT.mc_id=academic-77807-sagibbon).
|
||||
|
||||
మీరు ఒక పుల్ రిక్వెస్ట్ సమర్పించినప్పుడు, CLA-బాట్ స్వయంగా మీరు CLAని అందించాల్సిన అవసరం ఉన్నదో లేదో నిర్ణయిస్తుంది మరియు PRకి సరైన గుర్తింపును కల్పిస్తుంది (ఉదాహరణకి, లేబుల్, వ్యాఖ్య). బాట్ ఇచ్చిన సూచనలను పాటించండి. మా CLA ఉపయోగించే అన్ని రిపాజిటరీలను దాటి మీరు ఈ ప్రక్రియను ఒకసారి మాత్రమే చేయాలి. ఈ మార్పు ఎందుకు చేసినారో మాకు చెప్పడానికి కూడా ప్రయత్నించండి దాంతో మీ అభ్యర్థనను బాగా అర్థం చేసుకోగలుగుతాం.
|
||||
|
||||
ఈ ప్రాజెక్ట్ [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/?WT.mc_id=academic-77807-sagibbon) ను దత్తత పొందింది.
|
||||
ఇంకా సమాచారం కోసం, చూడండి [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/?WT.mc_id=academic-77807-sagibbon)
|
||||
లేదా [opencode@microsoft.com](mailto:opencode@microsoft.com) కు మరిన్ని ప్రశ్నలు లేదా వ్యాఖ్యలను పంపండి.
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**పర్యవసానం**:
|
||||
ఈ డాక్యుమెంట్ను AI అనువాద సేవ అయిన [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము సరిచేసేందుకు కృషి చేస్తున్నప్పటికీ, స్వయంచాలక అనువాదాలలో లోపాలు లేదా అసమర్థతలు ఉండే అవకాశం ఉందని దయచేసి గమనించండి. అసలు డాక్యుమెంట్ దాని స్థానిక భాషలోని అధికారిక మూలంగా పరిగణించబడాలి. ముఖ్య సమాచారం కోసం, ప్రొఫెషనల్ మానవ అనువాదం చేయించుకోవటం ఉత్తమం. ఈ అనువాదం వలన కలిగే ఏమైనా అపార్థాలు లేదా వ్యత్యాసాలకు మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
@ -0,0 +1,145 @@
|
||||
<!--
|
||||
CO_OP_TRANSLATOR_METADATA:
|
||||
{
|
||||
"original_hash": "5cf5e1ed51455fefed4895fcc4d6ba2a",
|
||||
"translation_date": "2026-01-08T10:46:50+00:00",
|
||||
"source_file": "Git-Basics/README.md",
|
||||
"language_code": "te"
|
||||
}
|
||||
-->
|
||||
## వెబ్-డెవ్ కొత్తవారికి GIT ప్రాథమికాలు👶
|
||||
|
||||
|
||||
## `Git` అంటే ఏమిటి?
|
||||
1. Git అనేది పంపిణీచేయబడిన వెర్షన్ కంట్రోల్ సిస్టమ్.
|
||||
2. ప్రతి డెవలపర్ యొక్క కంప్యూటర్లో మొత్తం కోడ్బేస్ మరియు చరిత్ర అందుబాటులో ఉంటుంది,
|
||||
ఇది సులభంగా బ్రాంచింగ్ మరియు విలీనం చేసుకోవడానికి అనుమతిస్తుంది.
|
||||
3. ఇది కంప్యూటర్ ఫైళ్లలో మార్పులను ట్రాక్ చేయడానికి వెర్షన్ కంట్రోల్ సిస్టమ్ (VCS)గా ఉపయోగిస్తారు.
|
||||
|
||||
* పంపిణీ వెర్షన్ కంట్రోల్
|
||||
* బహుళ డెవలపర్ల మధ్య పని సమన్వయం
|
||||
* ఎవరు ఏ మార్పులు చేసారు మరియు ఎప్పుడు చేసారు
|
||||
* ఏ సమయంలోనైనా తిరిగి పడగొట్టగలం
|
||||
* స్థానిక మరియు రిమోట్ రిపోజిటరీలు
|
||||
|
||||
## GIT యొక్క సూత్రాలు
|
||||
* కోడ్ చరిత్రను ట్రాక్ చేస్తుంది
|
||||
* మీ ఫైళ్ల "స్నాప్త్షాట్లు" తీసుకొంటుంది
|
||||
* "కమిట్" చేయడం ద్వారా మీరు ఎప్పుడు స్నాప్త్షాట్ తీసుకోవాలనుకుంటారో నిర్ణయించుకుంటారు
|
||||
* మీరు ఏ సమయంలోనైనా ఏ స్నాప్త్షాట్ ను సందర్శించవచ్చు
|
||||
* కమిట్ చేసేముందు ఫైళ్లను స్టేజ్ చేయవచ్చు
|
||||
|
||||
### Git & GitHub మధ్య తేడా
|
||||
|
||||
| Git | GitHub |
|
||||
| ------- | ----------- |
|
||||
| Git ఒక సాఫ్ట్వేర్ | GitHub ఒక క్లౌడ్ సేవ |
|
||||
| Git స్థానికంగా వ్యవస్థలో ఇన్స్టాల్ చేయబడుతుంది | GitHub వెబ్లో హోస్ట్ చేయబడింది |
|
||||
| ఇది కమాండ్లైన్ టూల్ | ఇది గ్రాఫికల్ యూజర్ ఇంటర్ఫేస్ |
|
||||
| Git ను Linux నిర్వాహిస్తాయి | GitHub ను Microsoft నిర్వహిస్తుంది |
|
||||
| ఇది వెర్షన్ కంట్రోల్ మరియు కోడ్ షేరింగ్ పై ఫోకస్ చేస్తుంది | ఇది కేంద్రీకృత మూల కోడ్ హోస్టింగ్ పై ఫోకస్ చేస్తుంది |
|
||||
| Git ఓపెన్-సోర్స్ లైసెన్స్ కలిగి ఉంది | GitHub లో ఉచిత, మరియు చెల్లింపు tiers ఉన్నాయి |
|
||||
| Git 2005 లో విడుదలైంది | GitHub 2008 లో విడుదలైంది |
|
||||
|
||||
|
||||
## GIT ఇన్స్టాలేషన్
|
||||
* Linux(Debian)
|
||||
`$sudo apt-get install git`
|
||||
* Linux(Fedora)
|
||||
`$sudo yum install git`
|
||||
* [Download](http://git-scm.com/download/mac) Mac కోసం
|
||||
* [Download](http://git-scm.com/download/win) Windows కోసం
|
||||
|
||||
|
||||
### ఇన్స్టాలేషన్ ప్రక్రియ దశలు:
|
||||
1. <img width="500" height="400" src="https://user-images.githubusercontent.com/61585443/190359823-e421b976-515a-4565-990d-2f2e4e62977a.png"/>
|
||||
2. <img width="500" height="400" src="https://user-images.githubusercontent.com/61585443/190360530-a7bfa681-47f4-4859-9b8a-4120e0cad348.png"/>
|
||||
3. <img width="500" height="400" src="https://user-images.githubusercontent.com/61585443/190360760-30db7768-19e0-4848-a99d-a6c955e041e2.png"/>
|
||||
4. <img width="500" height="400" src="https://user-images.githubusercontent.com/61585443/190360896-473e1e54-f083-4b5c-a5f0-539f70469142.png"/>
|
||||
5. <img width="500" height="400" src="https://user-images.githubusercontent.com/61585443/190361144-bc670a2b-b776-4867-9785-7b509d416fbb.png"/>
|
||||
6. అప్పుడు కొనసాగించండి Next > Next > Next > <b>Install</b>
|
||||
7. <img width="500" height="400" src="https://user-images.githubusercontent.com/61585443/190361548-4b700d85-c7d5-4d26-90e7-e5cc3ce24311.png"/>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### ఇన్స్టాలేషన్ తర్వాత git బాష్ ఉపయోగించి git ను కాన్ఫిగర్ చేయాలి
|
||||
1. `git config --global user.name 'YourName'`
|
||||
2. `git config --global user.email 'YourEmail'`
|
||||
___
|
||||
|
||||
|
||||
|
||||
## Git ఆదేశాలు
|
||||
___
|
||||
|
||||
### ప్రాజెక్టులను పొందడం & సృష్టించడం
|
||||
|
||||
| ఆజ్ఞ | వివరణ |
|
||||
| ------- | ----------- |
|
||||
| `git init` | స్థానిక Git రిపోజిటరీని ప్రారంభించండి |
|
||||
| `git clone ssh://git@github.com/[username]/[repository-name].git` | రిమోట్ రిపోజిటరీ యొక్క స్థానిక కాపీ సృష్టించండి |
|
||||
|
||||
### ప్రాథమిక స్నాప్త్షాటింగ్
|
||||
|
||||
| ఆజ్ఞ | వివరణ |
|
||||
| ------- | ----------- |
|
||||
| `git status` | స్థితిని తనిఖీ చేయండి |
|
||||
| `git add [file-name.txt]` | ఫైల్ను స్టేజింగ్ ప్రాంతానికి జోడించండి |
|
||||
| `git add -A` | అన్ని కొత్త మరియు మారిన ఫైళ్లు స్టేజింగ్కు జోడించండి |
|
||||
| `git commit -m "[commit message]"` | మార్పులను కమిట్ చేయండి |
|
||||
| `git rm -r [file-name.txt]` | ఫైల్ (లేదా ఫోల్డర్) తొలగించండి |
|
||||
| `git push` | రిమోట్ రిపోజిటరీకి ప్రెస్కించండి |
|
||||
| `git pull` | రిమోట్ రిపోజిటరీ నుండి తాజా మార్పులు తీసుకోండి |
|
||||
|
||||
### బ్రాంచింగ్ & విలీనం
|
||||
|
||||
| ఆజ్ఞ | వివరణ |
|
||||
| ------- | ----------- |
|
||||
| `git branch` | బ్రాంచ్లను జాబితా చేయు(ప్రస్తుత బ్రాంచ్ కి asterisk ఉంటుంది) |
|
||||
| `git branch -a` | అన్ని బ్రాంచ్ల జాబితా (స్థానిక మరియు రిమోట్) |
|
||||
| `git branch [branch name]` | కొత్త బ్రాంచ్ సృష్టించండి |
|
||||
| `git branch -D [branch name]` | ఒక బ్రాంచ్ తొలగించండి |
|
||||
| `git push origin --delete [branch name]` | రిమోట్ బ్రాంచ్ తొలగించండి |
|
||||
| `git checkout -b [branch name]` | కొత్త బ్రాంచ్ సృష్టించి దానికి మారండి |
|
||||
| `git checkout -b [branch name] origin/[branch name]` | రిమోట్ బ్రాంచ్ను క్లోన్ చేసి దానితో మారండి |
|
||||
| `git branch -m [old branch name] [new branch name]` | స్థానిక బ్రాంచ్ పేరు మార్చండి |
|
||||
| `git checkout [branch name]` | బ్రాంచ్కు మారండి |
|
||||
| `git checkout -` | గతంలో ఉన్న బ్రాంచ్కు మారండి |
|
||||
| `git checkout -- [file-name.txt]` | ఫైల్లో మార్పులు తిరస్కరించండి |
|
||||
| `git merge [branch name]` | బ్రాంచ్ను ప్రస్తుత బ్రాంచ్తో విలీనం చేయండి |
|
||||
| `git merge [source branch] [target branch]` | సోర్స్ బ్రాంచ్ను టార్గెట్ బ్రాంచ్తో విలీనం చేయండి |
|
||||
| `git stash` | పనిలో ఉన్న మార్పులను తాత్కాలికంగా నిల్వచేయండి |
|
||||
| `git stash clear` | అన్ని నిల్వచేయబడిన మార్పులను తొలగించండి |
|
||||
|
||||
### ప్రాజెక్టులను పంచుకోవడం & నవీకరించడం
|
||||
|
||||
| ఆజ్ఞ | వివరణ |
|
||||
| ------- | ----------- |
|
||||
| `git push origin [branch name]` | బ్రాంచ్ను రిమోట్ రిపోజిటరీకి ప్రెస్కించండి |
|
||||
| `git push -u origin [branch name]` | రిమోట్ రిపోజిటరీకి మార్పులను ప్రెస్కించండి (బ్రాంచ్ను స్మరించు) |
|
||||
| `git push` | రిమోట్ రిపోజిటరీకి మార్పులను ప్రెస్కించు (యాదృచ్ఛిక బ్రాంచ్) |
|
||||
| `git push origin --delete [branch name]` | రిమోట్ బ్రాంచ్ తొలగించండి |
|
||||
| `git pull` | స్థానిక రిపోజిటరీని తాజా కమిట్తో నవీకరించండి |
|
||||
| `git pull origin [branch name]` | రిమోట్ రిపోజిటరీ నుండి మార్పులు తీసుకోండి |
|
||||
| `git remote add origin ssh://git@github.com/[username]/[repository-name].git` | ఒక రిమోట్ రిపోజిటరీని జోడించండి |
|
||||
| `git remote set-url origin ssh://git@github.com/[username]/[repository-name].git` | రిపోజిటరీ యొక్క origin బ్రాంచ్ను SSH కు సెట్ చేయండి |
|
||||
|
||||
### తనిఖీ & తులన
|
||||
|
||||
| ఆజ్ఞ | వివరణ |
|
||||
| ------- | ----------- |
|
||||
| `git log` | మార్పులను వీక్షించండి |
|
||||
| `git log --summary` | మార్పులను (వివరంగా) వీక్షించండి |
|
||||
| `git log --oneline` | మార్పులను (సంక్షిప్తంగా) వీక్షించండి |
|
||||
| `git diff [source branch] [target branch]` | విలీనం చేసేముందు మార్పులను ముందస్తుగా చూడండి |
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**గమనిక**:
|
||||
ఈ డాక్యుమెంట్ను AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వం కోసం ప్రయత్నిస్తున్నప్పటికీ, స్వయంచాలక అనువాదాల్లో పొరపాట్లు లేదా అవిశ్వసనీయతలు ఉండవచ్చు అని గమనించగలరు. సహజ భాషలో ఉన్న అసలైన డాక్యుమెంట్ను అధికారిక మూలం గా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, నిపుణుల మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంవల్ల ఏర్పడే ఏదైనా అపార్థాలు లేదా తతంగ దోషాలకు మేము బాధ్యత వహించము.
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
Loading…
Reference in new issue