Skip to content

Commit c92c341

Browse files
committed
merging all conflicts
2 parents 1e2a27e + 1edb0a3 commit c92c341

23 files changed

Lines changed: 177 additions & 43 deletions

File tree

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

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,17 +33,27 @@
3333

3434
Τα engines είναι περίπλοκοι. Αλλά τα βασικά είναι εύκολα.
3535

36+
<<<<<<< HEAD
3637
1. Το engine (ενσωματωμένος αν είναι πρόγραμμα περιήγησης) διαβάζει ("αναλύει") τα script.
3738
2. Στη συνέχεια μετατρέπει ("μεταγλώττιση") το script στη γλώσσα του μηχανήματος.
3839
3. Ύστερα ο κώδικας του μηχανήματος τρέχει, αρκετά γρήγορα.
3940
Το engine εφαρμόζει βελτιστοποιήσει σε κάθε βήμα της διαδικασίας. Παρακολουθεί ακόμη και το μεταγλωττισμένο script καθώς εκτελείται, αναλύει τα δεδομένα που ρέουν μέσα από αυτό και εφαρμόζει βελτιστοποιήσεις στον κώδικα του μηχανήματος βάσει αυτής της γνώσης. Όταν ολοκληρωθεί, τα script εκτελούνται αρκετά γρήγορα.
4041
'''
42+
=======
43+
1. The engine (embedded if it's a browser) reads ("parses") the script.
44+
2. Then it converts ("compiles") the script to machine code.
45+
3. And then the machine code runs, pretty fast.
46+
>>>>>>> 1edb0a38330b54d2e1916f5193fc043e6fbbea78
4147
4248
## Τι μπορεί να κάνει η JavaScript στο πρόγραμμα περιήγησης?
4349

4450
Η σύγχρονη JavaScript είναι μια "ασφαλής" γλώσσα προγραμματισμού. Δεν παρέχει low-level πρόσβαση στη μνήμη ή στη CPU, επειδή δημιουργήθηκε αρχικά για προγράμματα περιήγησης που δεν το χρειάζονται.
4551

52+
<<<<<<< HEAD
4653
Οι δυνατότητες της JavaScript εξαρτώνται σε μεγάλο βαθμό από το περιβάλλον στο οποίο εκτελείται. Για παράδειγμα, το [Node.js] (https://wikipedia.org/wiki/Node.js) υποστηρίζει λειτουργίες που επιτρέπουν στην JavaScript να διαβάζει/γράφει αυθαίρετα αρχεία, να εκτελεί αιτήματα δικτύου, και τα λοιπά.
54+
=======
55+
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.
56+
>>>>>>> 1edb0a38330b54d2e1916f5193fc043e6fbbea78
4757
4858
Η JavaScript στο πρόγραμμα περιήγησης μπορεί να κάνει ό, τι σχετίζεται με τη διαχείριση ιστοσελίδων, την αλληλεπίδραση με τον χρήστη και τον διακομιστή ιστού.
4959

@@ -59,7 +69,11 @@
5969

6070
Οι δυνατότητες τις JavaScript στο πρόγραμμα περιήγησης είναι περιορισμένες για λόγους ασφάλειας του χρήστη. Ο στόχος είναι να αποτραπεί η πρόσβαση μιας κακόβουλης ιστοσελίδας σε ιδιωτικές πληροφορίες ή να βλάψει τα δεδομένα του χρήστη.
6171

72+
<<<<<<< HEAD
6273
Παραδείγματα τέτοιων περιορισμών περιλαμβάνουν:
74+
=======
75+
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.
76+
>>>>>>> 1edb0a38330b54d2e1916f5193fc043e6fbbea78
6377
6478
- Η JavaScript σε μια ιστοσελίδα ενδέχεται να μην διαβάζει / γράφει αυθαίρετα αρχεία στον σκληρό δίσκο, να τα αντιγράφει ή να εκτελεί προγράμματα. Δεν έχει άμεση πρόσβαση στις λειτουργίες του λειτουργικού συστήματος.
6579

@@ -68,6 +82,7 @@
6882
Υπάρχουν τρόποι αλληλεπίδρασης με κάμερα / μικρόφωνο και άλλες συσκευές, αλλά απαιτούν τη ρητή άδεια του χρήστη. Επομένως, μια σελίδα με δυνατότητα JavaScript ενδέχεται να μην ενεργοποιεί κρυφά μια κάμερα web, να παρατηρεί το περιβάλλον και να στέλνει τις πληροφορίες στο [NSA] (https://en.wikipedia.org/wiki/National_Security_Agency)
6983
- Διαφορετικές tabs/windows γενικά δεν αναγνωρίζουν ο ένας τον άλλον. Μερικές φορές το κάνουν, για παράδειγμα όταν ένα παράθυρο χρησιμοποιεί JavaScript για να ανοίξει το άλλο. Αλλά ακόμη και σε αυτήν την περίπτωση, η JavaScript από μία σελίδα ενδέχεται να μην έχει πρόσβαση στην άλλη, εάν προέρχεται από διαφορετικούς ιστότοπους (από διαφορετικό τομέα, πρωτόκολλο ή θύρα).
7084

85+
<<<<<<< HEAD
7186
Αυτό ονομάζεται "Same Origin Policy". Για να επιλυθεί αυτό, *οι δυο σελιδες* πρέπει να συμφωνήσουν για την ανταλλαγή δεδομένων και να περιέχουν έναν ειδικό κώδικα JavaScript που το χειρίζεται. Θα το καλύψουμε έπειτα στο σεμινάριο.
7287

7388
Αυτός ο περιορισμός υπάρχει για την ασφάλεια του χρήστη. Μια σελίδα από το 'http://anysite.com' που έχει ανοίξει ένας χρήστης δεν πρέπει να έχει πρόσβαση σε άλλη καρτέλα του προγράμματος περιήγησης με τη διεύθυνση URL 'http://gmail.com' και να κλέβει πληροφορίες από εκεί.
@@ -76,6 +91,19 @@
7691
![](limitations.svg)
7792

7893
Τέτοια όρια δεν υπάρχουν εάν η JavaScript χρησιμοποιείται εκτός του προγράμματος περιήγησης, για παράδειγμα σε διακομιστή. Τα σύγχρονα προγράμματα περιήγησης επιτρέπουν επίσης plugin/extensions που ενδέχεται να ζητούν εκτεταμένα δικαιώματα.
94+
=======
95+
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).
96+
- 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).
97+
98+
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.
99+
100+
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.
101+
- 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.
102+
103+
![](limitations.svg)
104+
105+
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.
106+
>>>>>>> 1edb0a38330b54d2e1916f5193fc043e6fbbea78
79107
80108
## Τι κάνει την JavaScript μοναδική?
81109

@@ -89,20 +117,29 @@
89117

90118
Αυτό κάνει την JavaScript μοναδική. Γι 'αυτό είναι το πιο διαδεδομένο εργαλείο για τη δημιουργία διεπαφών προγράμματος περιήγησης.
91119

120+
<<<<<<< HEAD
92121
Ενώ σχεδιάζετε να μάθετε μια νέα τεχνολογία, είναι ωφέλιμο να ελέγξετε τις προοπτικές της. Ας προχωρήσουμε λοιπόν στις σύγχρονες τάσεις που το επηρεάζουν, συμπεριλαμβανομένων των νέων γλωσσών και των δυνατοτήτων του προγράμματος περιήγησης.
122+
=======
123+
That said, JavaScript can be used to create servers, mobile applications, etc.
124+
>>>>>>> 1edb0a38330b54d2e1916f5193fc043e6fbbea78
93125
94126
## Γλώσσες "πάνω απο" την JavaScript
95127

96128
Η σύνταξη της JavaScript δεν ταιριάζει στις ανάγκες όλων. Διαφορετικοί άνθρωποι θέλουν διαφορετικά χαρακτηριστικά.
97129

98130
Αυτό είναι αναμενόμενο, επειδή τα έργα και οι απαιτήσεις είναι διαφορετικά για όλους.
99131

132+
<<<<<<< HEAD
100133
Έτσι πρόσφατα εμφανίστηκε μια πληθώρα νέων γλωσσών, οι οποίες *μεταφράστηκαν* (μετατράπηκαν) σε JavaScript πριν εκτελεστούν στο πρόγραμμα περιήγησης.
134+
=======
135+
So, recently a plethora of new languages appeared, which are *transpiled* (converted) to JavaScript before they run in the browser.
136+
>>>>>>> 1edb0a38330b54d2e1916f5193fc043e6fbbea78
101137
102138
Τα σύγχρονα εργαλεία καθιστούν τη μετάδοση πολύ γρήγορα και διαφανα, επιτρέποντας στην πραγματικότητα στους προγραμματιστές να κωδικοποιούν σε άλλη γλώσσα και να το μετατρέπουν αυτόματα σε "under the hood".
103139

104140
Παραδείγματα τέτοιων γλωσσών:
105141

142+
<<<<<<< HEAD
106143
<<<<<<< HEAD
107144
- [CoffeeScript](http://coffeescript.org/) είναι "syntactic sugar" για την JavaScript. Εισάγει συντομότερη σύνταξη, επιτρέποντάς μας να γράψουμε σαφέστερο και ακριβέστερο κώδικα.
108145
Συνήθως, στούς Ruby devs αρέσει.
@@ -112,14 +149,21 @@
112149
- [Brython](https://brython.info/) είναι ένας Python transpiler σε JavaScript που επιτρέπει την εγγραφή εφαρμογής σε πλήρη Python χωρίς JavaScript.
113150
=======
114151
- [CoffeeScript](https://coffeescript.org/) is a "syntactic sugar" for JavaScript. It introduces shorter syntax, allowing us to write clearer and more precise code. Usually, Ruby devs like it.
152+
=======
153+
- [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.
154+
>>>>>>> 1edb0a38330b54d2e1916f5193fc043e6fbbea78
115155
- [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.
116156
- [Flow](https://flow.org/) also adds data typing, but in a different way. Developed by Facebook.
117157
- [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.
118158
- [Brython](https://brython.info/) is a Python transpiler to JavaScript that enables the writing of applications in pure Python without JavaScript.
119159
- [Kotlin](https://kotlinlang.org/docs/reference/js-overview.html) is a modern, concise and safe programming language that can target the browser or Node.
120160
>>>>>>> 30a5d5e2a7c3504c9afd5028f83f4a696e60aede
121161
162+
<<<<<<< HEAD
122163
Υπάρχουν περισσότερα. Φυσικά, ακόμη και αν χρησιμοποιούμε μία από τις μεταγλωττισμένες γλώσσες, πρέπει επίσης να γνωρίζουμε τη JavaScript για να κατανοήσουμε πραγματικά τι κάνουμε.
164+
=======
165+
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.
166+
>>>>>>> 1edb0a38330b54d2e1916f5193fc043e6fbbea78
123167
124168
## Περίληψη
125169

1-js/02-first-steps/07-type-conversions/article.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,21 @@ alert(age); // NaN, η μετατροπή απέτυχε
6666

6767
Κανόνες αριθμητικών μετατροπών:
6868

69+
<<<<<<< HEAD
6970
| Τιμή | Γίνεται... |
7071
| ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
7172
| `undefined` | `NaN` |
7273
| `null` | `0` |
7374
| <code>true&nbsp;και&nbsp;false</code> | `1` και `0` |
7475
| `string` | Οι κενοί χαρακτήρες από την αρχή και το τέλος αφαιρούνται. Εάν το υπολοιπόμενο περιεχόμενο της συμβολοσειράς είναι άδειο, τότε το αποτέλεσμα είναι `0`. Διαφορετικά, ο αριθμός "διαβάζεται" από τη συμβολοσειρά. Ένα σφάλμα δίνει `NaN`. |
76+
=======
77+
| Value | Becomes... |
78+
|-------|-------------|
79+
|`undefined`|`NaN`|
80+
|`null`|`0`|
81+
|<code>true&nbsp;and&nbsp;false</code> | `1` and `0` |
82+
| `string` | Whitespaces (includes spaces, tabs `\t`, newlines `\n` etc.) from the start and end are removed. If the remaining string is empty, the result is `0`. Otherwise, the number is "read" from the string. An error gives `NaN`. |
83+
>>>>>>> 1edb0a38330b54d2e1916f5193fc043e6fbbea78
7584
7685
Παραδείγματα:
7786

@@ -134,8 +143,12 @@ alert(Boolean("")); // false
134143
|`undefined`|`NaN`|
135144
|`null`|`0`|
136145
|<code>true&nbsp;/&nbsp;false</code> | `1 / 0` |
146+
<<<<<<< HEAD
137147
| `string` | Η συμβολοσειρά διαβάζεται "όπως είναι", τα κενά και από τις δύο πλευρές αγνοούνται. Μια άδεια συμβολοσειρά γίνεται `0`. Ένα σφάλμα δίνει `NaN`. |
138148
149+
=======
150+
| `string` | The string is read "as is", whitespaces (includes spaces, tabs `\t`, newlines `\n` etc.) from both sides are ignored. An empty string becomes `0`. An error gives `NaN`. |
151+
>>>>>>> 1edb0a38330b54d2e1916f5193fc043e6fbbea78
139152
140153
**`Boolean μετατροπή`** -- Γίνεται σε λογικές πράξεις. Μπορεί να εφαρμοστεί με τη `Boolean(value)`.
141154

1-js/02-first-steps/08-operators/article.md

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -187,18 +187,22 @@ alert( +apples + +oranges ); // 5
187187
| Precedence | Name | Sign |
188188
|------------|------|------|
189189
| ... | ... | ... |
190-
| 15 | unary plus | `+` |
191-
| 15 | unary negation | `-` |
192-
| 14 | exponentiation | `**` |
193-
| 13 | multiplication | `*` |
194-
| 13 | division | `/` |
195-
| 12 | addition | `+` |
196-
| 12 | subtraction | `-` |
190+
| 14 | unary plus | `+` |
191+
| 14 | unary negation | `-` |
192+
| 13 | exponentiation | `**` |
193+
| 12 | multiplication | `*` |
194+
| 12 | division | `/` |
195+
| 11 | addition | `+` |
196+
| 11 | subtraction | `-` |
197197
| ... | ... | ... |
198198
| 2 | assignment | `=` |
199199
| ... | ... | ... |
200200

201+
<<<<<<< HEAD
201202
Όπως μπορούμε να δούμε, το "unary plus" έχει προτεραιότητα `17` που είναι υψηλότερη από το `13` της "προσθήκης" (δυαδικό συν). Γι 'αυτό, στην έκφραση `"+apples + +oranges"`, τα unary plus λειτουργούν πριν από την πρόσθεση.
203+
=======
204+
As we can see, the "unary plus" has a priority of `14` which is higher than the `11` of "addition" (binary plus). That's why, in the expression `"+apples + +oranges"`, unary pluses work before the addition.
205+
>>>>>>> 1edb0a38330b54d2e1916f5193fc043e6fbbea78
202206

203207
## Ανάθεση
204208

@@ -297,9 +301,13 @@ alert( n ); // 14
297301
```js run
298302
let n = 2;
299303
300-
n *= 3 + 5;
304+
n *= 3 + 5; // right part evaluated first, same as n *= 8
301305
306+
<<<<<<< HEAD
302307
alert( n ); // 16 (το σωστό μέρος αξιολογήθηκε πρώτα, το ίδια και για το n *= 8)
308+
=======
309+
alert( n ); // 16
310+
>>>>>>> 1edb0a38330b54d2e1916f5193fc043e6fbbea78
303311
```
304312
305313
## Αύξηση/μείωση

1-js/02-first-steps/12-nullish-coalescing-operator/article.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,12 @@ alert(height ?? 100); // 0
9696
9797
## Προτεραιότητα
9898
99+
<<<<<<< HEAD
99100
Η προτεραιότητα του τελεστή `??` είναι μάλλον χαμηλή: `5` στο
100101
[πίνακα MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table).
102+
=======
103+
The precedence of the `??` operator is the same as `||`. They both equal `3` in the [MDN table](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table).
104+
>>>>>>> 1edb0a38330b54d2e1916f5193fc043e6fbbea78
101105
102106
Για αυτό το `??` αξιολογείται μετά τις υπόλοιπες λειτουργίες, αλλά πριν από το `=` και το `?`.
103107

1-js/02-first-steps/15-function-basics/article.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ function showMessage() {
2424

2525
```js
2626
function name(parameter1, parameter2, ... parameterN) {
27-
...body...
27+
// body
2828
}
2929
```
3030

@@ -191,7 +191,17 @@ function showMessage(from, *!*text = "no text given"*/!*) {
191191
showMessage("Ann"); // Ann: δεν έχει δοθεί κείμενο
192192
```
193193
194+
<<<<<<< HEAD
194195
Τώρα, εάν η παράμετρος `text` δεν δοθεί, θα λάβει την τιμή `"no text given"`.
196+
=======
197+
Now if the `text` parameter is not passed, it will get the value `"no text given"`.
198+
199+
The default value also jumps in if the parameter exists, but strictly equals `undefined`, like this:
200+
201+
```js
202+
showMessage("Ann", undefined); // Ann: no text given
203+
```
204+
>>>>>>> 1edb0a38330b54d2e1916f5193fc043e6fbbea78
195205
196206
Εδώ `"no text given"` είναι μια συμβολοσειρά, αλλά μπορεί να είναι μια πιο περίπλοκη έκφραση, η οποία αξιολογείται και αναθέτετε μόνο εάν λείπει η παράμετρος. Αυτό είναι επίσης δυνατό:
197207

1-js/03-code-quality/05-testing-mocha/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ So, the development is *iterative*. We write the spec, implement it, make sure t
7979

8080
Let's see this development flow in our practical case.
8181

82-
The first step is already complete: we have an initial spec for `pow`. Now, before making the implementation, let's use few JavaScript libraries to run the tests, just to see that they are working (they will all fail).
82+
The first step is already complete: we have an initial spec for `pow`. Now, before making the implementation, let's use a few JavaScript libraries to run the tests, just to see that they are working (they will all fail).
8383

8484
## The spec in action
8585

0 commit comments

Comments
 (0)