Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 4cc285b

Browse files
committedOct 31, 2022
merging all conflicts
2 parents f4b8afb + 5dff42b commit 4cc285b

File tree

170 files changed

+2026
-453
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

170 files changed

+2026
-453
lines changed
 

‎1-js/01-getting-started/1-intro/article.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,26 @@ The terms above are good to remember because they are used in developer articles
4242
4343
Двигателите са сложни, но основното им е лесно.
4444
45+
<<<<<<< HEAD
4546
1. Двигателят (вграден ако е браузър) чете ("анализира") скрипт-а.
4647
2. Тогава го конвертира ("компилира") скрипт-а в машинен език.
4748
3. И след тогава машинния код се изпълнява.
49+
=======
50+
1. The engine (embedded if it's a browser) reads ("parses") the script.
51+
2. Then it converts ("compiles") the script to machine code.
52+
3. And then the machine code runs, pretty fast.
53+
>>>>>>> 5dff42ba283bce883428c383c080fa9392b71df8
4854
4955
Вдигателят прилага оптимизации във всяка стъпка от процеса. Даже гледа компилирания скрипт, което се изпълнява, анализира данните, които протичат през него и прилага оптимазиции на машинния код на база тези данни. Когато всичко е готово скрипт-ът се изпълнява доста бързо.
5056
```
5157

5258
## Какво може JavaScript в браузъра ?
5359

60+
<<<<<<< HEAD
5461
Модерният JavaScript е "безопасен" програмен език. То не предоставя ниско ниво на достъп на паметта и процесора, защото първоначално е създаден за браузърите, които не изискват подобно нещо.
62+
=======
63+
Modern JavaScript is a "safe" programming language. It does not provide low-level access to memory or the CPU, because it was initially created for browsers which do not require it.
64+
>>>>>>> 5dff42ba283bce883428c383c080fa9392b71df8
5565
5666
Способностите на JavaScript-a силно зависят от средата, която се изпълнява. Например [Node.js](https://wikipedia.org/wiki/Node.js) поддържа функции, които позволяват на JavaScript-а да чете/пише случайни файлове, да изпълнява мрежови заявки и т.н.
5767

@@ -71,11 +81,15 @@ JavaScript-a в браузъра може да направи всичко от
7181

7282
## Какво не може JavaScript-а в браузъра?
7383

84+
<<<<<<< HEAD
7485
<<<<<<< HEAD
7586
Възможностите на JavaScript-a в браузъра са ограничени заради безопасността на потребителя. Целта е да се предотврати на зловредните страници достъпът на личната информация на потребителите или навреждането на данните на потребителите.
7687
=======
7788
JavaScript's abilities in the browser are limited for the sake of a user's safety. The aim is to prevent an evil webpage from accessing private information or harming the user's data.
7889
>>>>>>> c5358c59494b53efb832c81a5338e0a23b22c269
90+
=======
91+
JavaScript's abilities in the browser are limited to protect the user's safety. The aim is to prevent an evil webpage from accessing private information or harming the user's data.
92+
>>>>>>> 5dff42ba283bce883428c383c080fa9392b71df8
7993
8094
Примерите на такива ограничения вкючват:
8195
Examples of such restrictions include:
@@ -86,6 +100,7 @@ Examples of such restrictions include:
86100

87101
Има начини то да взаимодейства с камера/микрофон и други устройства, но те изискват разрешение от потребителя. И така, страниците с активиран JavaScript не могат подло да активират камерата, да наблюдават околноста и да праща тези данни на [Агенцията за Национална Сигурност](https://bg.wikipedia.org/wiki/%D0%90%D0%B3%D0%B5%D0%BD%D1%86%D0%B8%D1%8F_%D0%B7%D0%B0_%D0%BD%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D0%BD%D0%B0_%D1%81%D0%B8%D0%B3%D1%83%D1%80%D0%BD%D0%BE%D1%81%D1%82).
88102

103+
<<<<<<< HEAD
89104
- Различните табове/прозорци в общи линии не знаят за един друг. Понякога да, например когато един прозорец използва JavaScript за да отвори друг. Но дори тогава, JavaScript-а от едната страница може и да няма достъп до другия ако са от различни страници (от различни домейни,протоколи или порти)
90105

91106
Това е наречено "Same Origin Policy" или Същинска Политика за Произход. За да проработи това, *и двете страници* трябва да се съгласят за обмен на данни и да съдържат специален JavaScript код, който се справя с това. Ще разгледаме това по-късно в ръководството.
@@ -97,6 +112,19 @@ Examples of such restrictions include:
97112
![](limitations.svg)
98113

99114
Такива ограничения не съществуват ако JavaScript-a е използван извън браузъра, например в сървърите. Също, модерните браузъри имат плъгин-и/разширения, които биха питали за допълнителни разрешения.
115+
=======
116+
There are ways to interact with the camera/microphone and other devices, but they require a user's explicit permission. So a JavaScript-enabled page may not sneakily enable a web-camera, observe the surroundings and send the information to the [NSA](https://en.wikipedia.org/wiki/National_Security_Agency).
117+
- Different tabs/windows generally do not know about each other. Sometimes they do, for example when one window uses JavaScript to open the other one. But even in this case, JavaScript from one page may not access the other page if they come from different sites (from a different domain, protocol or port).
118+
119+
This is called the "Same Origin Policy". To work around that, *both pages* must agree for data exchange and must contain special JavaScript code that handles it. We'll cover that in the tutorial.
120+
121+
This limitation is, again, for the user's safety. A page from `http://anysite.com` which a user has opened must not be able to access another browser tab with the URL `http://gmail.com`, for example, and steal information from there.
122+
- JavaScript can easily communicate over the net to the server where the current page came from. But its ability to receive data from other sites/domains is crippled. Though possible, it requires explicit agreement (expressed in HTTP headers) from the remote side. Once again, that's a safety limitation.
123+
124+
![](limitations.svg)
125+
126+
Such limitations do not exist if JavaScript is used outside of the browser, for example on a server. Modern browsers also allow plugins/extensions which may ask for extended permissions.
127+
>>>>>>> 5dff42ba283bce883428c383c080fa9392b71df8
100128
101129
## Какво прави JavaScript-a уникален?
102130

@@ -118,20 +146,29 @@ JavaScript е единствената браузърна технология,
118146

119147
Това е което прави JavaScript-а толкова уникален. Затова е толкова широк разпространен инструмент за създаване на браузърни интерфейси.
120148

149+
<<<<<<< HEAD
121150
Също така, JavaScript ни позволява за създаването на сървъри, мобилни приложения и други.
151+
=======
152+
That said, JavaScript can be used to create servers, mobile applications, etc.
153+
>>>>>>> 5dff42ba283bce883428c383c080fa9392b71df8
122154
123155
## Езици "над" JavaScript
124156

125157
Синтаксисът на JavaScript-a не отговаря на нуждите на всеки. Различните хора искат различни качества.
126158

127159
Това е очаквано, защото проектите и изискванията са различни за всеки.
128160

161+
<<<<<<< HEAD
129162
Така наскоро се появи множество нови езици, които са *transpiled* (преобразувани) в JavaScript, преди да стартират в браузъра.
163+
=======
164+
So, recently a plethora of new languages appeared, which are *transpiled* (converted) to JavaScript before they run in the browser.
165+
>>>>>>> 5dff42ba283bce883428c383c080fa9392b71df8
130166
131167
Съвременните инструменти правят транспилацията много бърза и прозрачна, като всъщност позволяват на разработчиците да кодират на друг езици и автоматично да го конвертират "под капака'.
132168

133169
Примери на такива езици са:
134170

171+
<<<<<<< HEAD
135172
- [CoffeeScript](http://coffeescript.org/) е "синтактичната захар" за JavaScript. То въвежда по-къс синтаксис като ни позволява да пишем по-четим и прецизен код. Обикновенно Ruby разработчиците го харесват.
136173
- [TypeScript](http://www.typescriptlang.org/) e език съсредоточен да добави "писане на стрикни типове данни" за да опрости разработване и поддръжката на сложни системи. Разработва се от Microsoft.
137174
- [Flow](http://flow.org/) също добавя типизирани данни, но по по-различен начин. Разработва се от Facebook.
@@ -140,6 +177,16 @@ JavaScript е единствената браузърна технология,
140177
- [Kotlin](https://kotlinlang.org/docs/reference/js-overview.html) е модерен, сбит и безопасен език за програмиране, която цел може да е Браузър или Node.
141178

142179
Има и други. Разбира се, дори да използваме един от транспилираните езици, ние също трябва да знаем JavaScript, за да разберем наистина какво правим.
180+
=======
181+
- [CoffeeScript](https://coffeescript.org/) is "syntactic sugar" for JavaScript. It introduces shorter syntax, allowing us to write clearer and more precise code. Usually, Ruby devs like it.
182+
- [TypeScript](https://www.typescriptlang.org/) is concentrated on adding "strict data typing" to simplify the development and support of complex systems. It is developed by Microsoft.
183+
- [Flow](https://flow.org/) also adds data typing, but in a different way. Developed by Facebook.
184+
- [Dart](https://www.dartlang.org/) is a standalone language that has its own engine that runs in non-browser environments (like mobile apps), but also can be transpiled to JavaScript. Developed by Google.
185+
- [Brython](https://brython.info/) is a Python transpiler to JavaScript that enables the writing of applications in pure Python without JavaScript.
186+
- [Kotlin](https://kotlinlang.org/docs/reference/js-overview.html) is a modern, concise and safe programming language that can target the browser or Node.
187+
188+
There are more. Of course, even if we use one of these transpiled languages, we should also know JavaScript to really understand what we're doing.
189+
>>>>>>> 5dff42ba283bce883428c383c080fa9392b71df8
143190
144191
## Обобщение
145192

‎1-js/01-getting-started/2-manuals-specifications/article.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,23 @@
11

22
# Ръководства и спецификации
33

4+
<<<<<<< HEAD
45
Тази книга е "ръководство". То цели да ви помогне постепенно да научите езика. Но когато научите основите ще ви са необходими и други ресурси.
6+
=======
7+
This book is a *tutorial*. It aims to help you gradually learn the language. But once you're familiar with the basics, you'll need other resources.
8+
>>>>>>> 5dff42ba283bce883428c383c080fa9392b71df8
59
610
## Спецификации
711

812
[Спецификаците на ECMA-262](https://www.ecma-international.org/publications/standards/Ecma-262.htm) съдържа най-задълбочените, изчерпателни и оформени информации относно езика JavaScript. То определя езика.
913

1014
Но толкова оформенна документация е трудна за разбиране. Ако ви е нужна най-сигурния ресурс на информация относно детайлите на езика, спецификациите са на важа помощ. Но не са за ежедневна употреба.
1115

16+
<<<<<<< HEAD
1217
Нови спецификации са публикувани всяка година. Между тях, последния публикуван е <https://tc39.es/ecma262/>
18+
=======
19+
A new specification version is released every year. Between these releases, the latest specification draft is at <https://tc39.es/ecma262/>.
20+
>>>>>>> 5dff42ba283bce883428c383c080fa9392b71df8
1321
1422
За да прочетете за новите функции, включително тези, които са "почти стандартни" (т. Нар. "Етап 3"), посетете <https://github.com/tc39/proposals>.
1523

@@ -19,19 +27,32 @@
1927

2028
- **MDN (Mozilla) JavaScript Reference** е ръководство с примери и информация. Чудесен е за да навлизате по-задълбочено в собствените функции на езика.
2129

30+
<<<<<<< HEAD
2231
Можете да ги намерите в следния линк <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference>.
2332

2433
Макар че, много често, най-добрия начин е да се използва търсачката в интернет. Просто напишете "MDN [термина]" когато попълвате търсачката, например ето така "MDN parseInt" за да търсите функцията `parseInt` в MDN.
34+
=======
35+
You can find it at <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference>.
36+
37+
Although, it's often best to use an internet search instead. Just use "MDN [term]" in the query, e.g. <https://google.com/search?q=MDN+parseInt> to search for the `parseInt` function.
38+
>>>>>>> 5dff42ba283bce883428c383c080fa9392b71df8
2539
2640
## Таблици за съвместимост
2741

2842
JavaScript e развиващ език, редовно се добавят нови функции и подобрения.
2943

3044
За да видите поддръжката на браузърите и двигателите, вижте:
3145

46+
<<<<<<< HEAD
3247
- <http://caniuse.com> - таблици за поддръжката на функциите, или за да видите кои двигатели поддържат модерните криптографски функции: <http://caniuse.com/#feat=cryptography>.
3348
- <https://kangax.github.io/compat-table> - таблица с функциите на езика и двигателите, които ги поддържат или не ги поддържат.
3449

3550
Всички тези ресурси за полезни в среда на разработка, като те съдържат ценна информация относно езика и т.н.
51+
=======
52+
- <https://caniuse.com> - per-feature tables of support, e.g. to see which engines support modern cryptography functions: <https://caniuse.com/#feat=cryptography>.
53+
- <https://kangax.github.io/compat-table> - a table with language features and engines that support those or don't support.
54+
55+
All these resources are useful in real-life development, as they contain valuable information about language details, their support, etc.
56+
>>>>>>> 5dff42ba283bce883428c383c080fa9392b71df8
3657
3758
Запомнете тези страници (или тази страница) в случай че може и да ви потрябва информация за определени особености.

0 commit comments

Comments
 (0)
Please sign in to comment.