Skip to content

Commit 99b71a1

Browse files
committed
merging all conflicts
2 parents 6b58399 + 540d753 commit 99b71a1

File tree

205 files changed

+3499
-1053
lines changed

Some content is hidden

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

205 files changed

+3499
-1053
lines changed

.github/FUNDING.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
github: iliakan

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

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,26 @@ Yllä luetellut termit on hyvä muistaa, koska niitä käytetään internetin so
3434
3535
Moottorit ovat monimutkaisia, mutta perusteet ovat helpot.
3636
37+
<<<<<<< HEAD
3738
1. Moottori (upotettu, jos kyseessä on selain) lukee ("jäsentää") skriptin.
3839
2. Sitten se muuttaa ("kääntää") skriptin konekielelle.
3940
3. Ja sitten konekieli suoritetaan, melko nopeasti.
41+
=======
42+
1. The engine (embedded if it's a browser) reads ("parses") the script.
43+
2. Then it converts ("compiles") the script to machine code.
44+
3. And then the machine code runs, pretty fast.
45+
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
4046
4147
Moottori käyttää optimointeja prosessin jokaisessa vaiheessa. Se jopa katsoo käännettyä skriptiä sen suorituksen aikana, analysoi sen läpi kulkevaa dataa ja edelleen optimoi sen perusteella konekieltä lisää.
4248
```
4349

4450
## Mitä JavaScript voi tehdä selaimessa?
4551

52+
<<<<<<< HEAD
4653
Nykyaikainen JavaScript on "turvallinen" ohjelmointikieli. Se ei salli matalan tason pääsyä muistiin tai suorittimeen, koska se alunperin suunniteltiin selaimiin, jotka eivät vaadi sitä.
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+
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
4757
4858
JavaScriptin kyvyt riippuvat suuresti ympäristöstä, jossa sitä ajetaan. Esimerkiksi [Node.js](https://wikipedia.org/wiki/Node.js) tukee funktioita, joiden avulla JavaScript voi lukea/kirjoittaa mielivaltaisia tiedostoja, suorittaa verkkopyyntöjä, jne.
4959

@@ -59,14 +69,19 @@ Selaimessa JavaScript voi esimerkiksi:
5969

6070
## Mitä JavaScript EI VOI tehdä selaimessa?
6171

72+
<<<<<<< HEAD
6273
JavaScriptin kykyjä selaimessa on rajoitettu käyttäjän turvallisuuden vuoksi. Tavoitteena on estää pahaa nettisivua pääsemästä käsiksi yksityisiin tietoihin tai vahingoittamasta käyttäjän tietoja.
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+
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
6377
6478
Esimerkkejä tällaisista rajoituksista ovat:
6579

6680
- Nettisivun JavaScript ei voi lukea, kirjoittaa tai kopioida mielivaltaisia tiedostoja kovalevyllä tai suorittaa ohjelmia. Sillä ei ole suoraa pääsyä käyttöjärjestelmän funktioihin.
6781

6882
Modernit selaimet voivat sallia sen olla tekemisissä tiedostojen kanssa, mutta pääsy on rajoitettu ja sallittu vain, jos käyttäjä toimii tietyllä tavalla, kuten "pudottaa" tiedoston selaimeen tai valitsee sen `<input>` tunnisteen kautta.
6983

84+
<<<<<<< HEAD
7085
Kameran tai mikrofonin ja muiden laitteiden kanssa voi olla vuorovaikutuksessa, mutta ne edellyttävät käyttäjän nimenomaista lupaa. Eli sivusto, jossa JavaScript on käytössä, ei voi salaa käyttää webkameraa, tarkkailla ympäristöä ja lähettää tietoja [SUPO](https://fi.wikipedia.org/wiki/Suojelupoliisi):lle.
7186
- Välilehdet tai ikkunat eivät lähtökohtaisesti tiedä toisistaan. Joskus ne tietävät, esimerkiksi yhden ikkunan käyttäessä JavaScriptiä toisen ikkunan avaamiseen, mutta tässäkään tapauksessa yhden sivun JavaScript ei pääse käsiksi toiseen sivuun, jos ne ovat peräisin eri sivustoilta (eri verkkotunnus, protokolla tai portti).
7287

@@ -78,6 +93,19 @@ Esimerkkejä tällaisista rajoituksista ovat:
7893
![](limitations.svg)
7994

8095
Samat rajoitukset eivät koske JavaScriptiä selaimen ulkopuolella, esimerkiksi palvelimella. Nykyaikaisiin selaimiin on myös saatavilla lisäosia tai laajennuksia, joilla on laajemmat käyttöoikeudet.
96+
=======
97+
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).
98+
- 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).
99+
100+
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.
101+
102+
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.
103+
- 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.
104+
105+
![](limitations.svg)
106+
107+
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.
108+
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
81109
82110
## Mikä tekee JavaScriptistä uniikin?
83111

@@ -92,20 +120,29 @@ JavaScript on ainoa selainten teknologia, johon kaikki kolme kohtaa pätevät.
92120

93121
Tämä tekee JavaScriptistä uniikin. Tämän takia se on laajimmalle levinnyt selainten käyttöliittymien luontityökalu.
94122

123+
<<<<<<< HEAD
95124
Tämän ohella JavaScriptillä voidaan tehdä myös palvelimia, mobiilisovelluksia, jne.
125+
=======
126+
That said, JavaScript can be used to create servers, mobile applications, etc.
127+
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
96128
97129
## JavaScriptin päälle luotuja kieliä
98130

99131
JavaScriptin syntaksi ei sovi kaikkien tarpeisiin. Eri ihmiset haluavat eri toimintoja.
100132

101133
Tämä on oletettavaa, koska kaikki projektit ja niiden vaatimukset ovat erilaisia.
102134

135+
<<<<<<< HEAD
103136
Näin ollen viime aikoina on ilmestynyt monia kieliä, jotka muunnetaan JavaScriptiksi ennen niiden suorittamista selaimessa.
137+
=======
138+
So, recently a plethora of new languages appeared, which are *transpiled* (converted) to JavaScript before they run in the browser.
139+
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
104140
105141
Nykyaikaisten työkalujen avulla muuntaminen on todella nopeaa ja läpinäkyvää ja niiden avulla sovelluskehittäjät voivat kirjoittaa koodia toisella kielellä, joka muunnetaan "kulissien takana" automaattisesti.
106142

107143
Esimerkkejä tällaisista kielistä:
108144

145+
<<<<<<< HEAD
109146
- [CoffeeScript](http://coffeescript.org/) on niin sanottua syntaksisokeria JavaScriptille. Se mahdollistaa lyhyemmän syntaksin, jonka avulla voidaan kirjoittaa selkeämpää ja tarkempaa koodia. Ruby-devaajat yleensä pitävät siitä.
110147
- [TypeScript](http://www.typescriptlang.org/) keskittyy "vahvaan tyypitykseen" yksinkertaistaakseen sovelluskehitystä ja tukeakseen monimutkaisia systeemejä. Sen on kehittänyt Microsoft.
111148
- [Flow](http://flow.org/) tuo mukanaan vahvan tyypityksen, mutta eri tavalla. Sen on kehittänyt Facebook.
@@ -114,6 +151,16 @@ Esimerkkejä tällaisista kielistä:
114151
- [Kotlin](https://kotlinlang.org/docs/reference/js-overview.html) on moderni, tiivis ja turvallinen ohjelmointikieli, joka toimii selaimessa tai Nodessa.
115152

116153
Lisääkin esimerkkejä löytyy. Silti, vaikka käytämme jotain muunnettavaa kieltä, meidän on tunnettava JavaScriptiä ymmärtääksemme, mitä todella olemme tekemässä.
154+
=======
155+
- [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.
156+
- [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.
157+
- [Flow](https://flow.org/) also adds data typing, but in a different way. Developed by Facebook.
158+
- [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.
159+
- [Brython](https://brython.info/) is a Python transpiler to JavaScript that enables the writing of applications in pure Python without JavaScript.
160+
- [Kotlin](https://kotlinlang.org/docs/reference/js-overview.html) is a modern, concise and safe programming language that can target the browser or Node.
161+
162+
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.
163+
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
117164
118165
## Yhteenveto
119166

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
# Oppaat ja määrittelyt
33

4+
<<<<<<< HEAD
45
Tämä kirja on *tutoriaali*. Sen tavoitteena on auttaa sinua oppimaan kielen asteittain. Kun tunnet perusteet, tarvitset kuitenkin muita lähteitä.
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+
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
59
610
## Määrittely
711

812
[ECMA-262 määrittely](https://www.ecma-international.org/publications/standards/Ecma-262.htm) sisältää kaikkein tarkinta, yksityiskohtaisinta ja virallisinta tietoa JavaScriptistä. Se määrittelee kielen.
913

1014
Koska tieto on niin virallista, se on aluksi vaikeaa ymmärtää. Jos siis tarvitset kaikkein luotettavinta tietoa kielen yksityiskohdista, määrittely on sille oikea paikka. Se ei kuitenkaan ole jokapäiväiseen käyttöön.
1115

16+
<<<<<<< HEAD
1217
Uusi määrittely julkaistaan joka vuosi. Julkaisujen välillä uusimman määrittelyn luonnos löytyy osoitteesta <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+
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
1321
1422
Lukeaksesi kaikkein uusimmista toiminnoista, mukaan lukien niistä, jotka ovat "melkein standardisoitu" (niin sanottu "taso 3"), katso "proposals" (suom. ehdotukset) osoitteessa <https://github.com/tc39/proposals>.
1523

@@ -19,19 +27,32 @@ Jos kehität selainsovelluksia, tämän tutoriaalin [toisessa osassa](info:brows
1927

2028
- **MDN (Mozilla) JavaScript Reference** on tärkein opas, joka sisältää esimerkkejä ja muuta tietoa. Se on hyvä tarkemman tiedon lähde yksittäisille funktioille, metodeille, jne.
2129

30+
<<<<<<< HEAD
2231
Opas löytyy osoitteesta <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference>.
2332

2433
Toisaalta usein on parasta käyttää internethakuja. Käytä vain muotoa "MDN [termi]" hakusanassa, esim. <https://google.fi/search?q=MDN+parseInt> etsiessäsi tietoa `parseInt` funktiosta.
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+
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
2539
2640
## Yhteensopivuustaulukot
2741

2842
JavaScript on kehittyvä kieli ja uusia toimintoja lisätään säännöllisesti.
2943

3044
Nähdäksesi niiden yhteensopivuuden eri selainpohjaisissa ja muissa moottoreissa, katso:
3145

46+
<<<<<<< HEAD
3247
- <http://caniuse.com> - toimintokohtaiset yhteensopivuustaulukot, esim. nähdäksesi, mitkä moottorit ovat yhteensopivia nykyaikaisten salausfunktioiden kanssa: <http://caniuse.com/#feat=cryptography>.
3348
- <https://kangax.github.io/compat-table> - kielen toimintoja ja niiden kanssa yhteensopivia moottoreita sisältävä taulukko
3449

3550
Kaikki nämä tietolähteet ovat hyödyllisiä todellisen elämän sovelluskehityksessä, koska ne sisältävät arvokasta tietoa kielen yksityiskohdista, niiden yhteensopivuudesta, jne.
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+
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
3657
3758
Ne (tai tämä sivu) kannattaa muistaa, kun tarvitset tarkempaa tietoa tietystä toiminnosta.

1-js/01-getting-started/3-code-editors/article.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,13 @@ IDE lataa projektin (joka voi sisältää monia tiedostoja), mahdollistaa navigo
1212

1313
Jos et ole vielä valinnut IDE:tä, harkitse seuraavia:
1414

15+
<<<<<<< HEAD
1516
- [Visual Studio Code](https://code.visualstudio.com/) (järjestelmäriippumaton, ilmainen).
1617
- [WebStorm](http://www.jetbrains.com/webstorm/) (järjestelmäriippumaton, maksullinen).
18+
=======
19+
- [Visual Studio Code](https://code.visualstudio.com/) (cross-platform, free).
20+
- [WebStorm](https://www.jetbrains.com/webstorm/) (cross-platform, paid).
21+
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
1722
1823
Windowsille on saatavilla myös "Visual Studio", joka ei ole sama kuin "Visual Studio Code". "Visual Studio" on maksullinen ja mahdikas editori pelkästään Windowsille ja sopii loistavasti .NET-alustalle. Se on hyvä myös JavaScriptille. Saatavilla on myös ilmaisversio [Visual Studio Community](https://www.visualstudio.com/vs/community/).
1924

@@ -29,6 +34,7 @@ Olennaisin ero "kevyen editorin" ja "IDE:n" välillä on, että IDE toimii proje
2934

3035
Käytännössä kevyihin editoreihin voi olla saatavilla monia lisäosia mukaan lukien sellaisia, jotka tekevät kansiotason syntaksin analysointia tai tarjoavat kirjoitetun tekstin automaattista täydennystä, joten editorityyppien välillä ei ole selkeää rajausta.
3136

37+
<<<<<<< HEAD
3238
Seuraavat vaihtoehdot ansaitsevat huomiosi:
3339

3440
<<<<<<< HEAD
@@ -43,11 +49,27 @@ Seuraavat vaihtoehdot ansaitsevat huomiosi:
4349
- [Notepad++](https://notepad-plus-plus.org/) (Windows, free).
4450
- [Vim](http://www.vim.org/) and [Emacs](https://www.gnu.org/software/emacs/) are also cool if you know how to use them.
4551
>>>>>>> 291b5c05b99452cf8a0d32bd32426926dbcc0ce0
52+
=======
53+
There are many options, for instance:
54+
55+
- [Sublime Text](https://www.sublimetext.com/) (cross-platform, shareware).
56+
- [Notepad++](https://notepad-plus-plus.org/) (Windows, free).
57+
- [Vim](https://www.vim.org/) and [Emacs](https://www.gnu.org/software/emacs/) are also cool if you know how to use them.
58+
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
4659
4760
## Ei riidellä
4861

4962
Ylle listatut editorit ovat sellaisia, joita minä tai hyvinä ohjelmoijina pitämäni ystäväni olemme käyttäneet pitkään ja joihin olemme olleet tyytyväisiä.
5063

5164
Suuressa maailmassamme on muitakin hyviä editoreja. Valitse se, josta pidät eniten.
5265

66+
<<<<<<< HEAD
5367
Editorin, aivan kuten muidenkin työkalujen, valinta on yksilöllinen päätös ja riippuu omista projekteistasi, tavoistasi ja henkilökohtaisista mieltymyksistäsi.
68+
=======
69+
The choice of an editor, like any other tool, is individual and depends on your projects, habits, and personal preferences.
70+
71+
The author's personal opinion:
72+
73+
- I'd use [Visual Studio Code](https://code.visualstudio.com/) if I develop mostly frontend.
74+
- Otherwise, if it's mostly another language/platform and partially frontend, then consider other editors, such as XCode (Mac), Visual Studio (Windows) or Jetbrains family (Webstorm, PHPStorm, RubyMine etc, depending on the language).
75+
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b

1-js/01-getting-started/4-devtools/article.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Kehitystyökalut avautuvat oletuksena konsoliin (Console).
2222

2323
Sen pitäisi näyttää suurin piirtein tältä:
2424

25-
![chrome](chrome.png)
25+
![chrome](chrome.webp)
2626

2727
Työkalujen tarkka ulkoasu riippuu Chromen versiosta. Tarkka ulkoasu muuttuu silloin tällöin, mutta sen pitäisi näyttää samankaltaiselta.
2828

@@ -49,7 +49,11 @@ Niiden ulkoasu ja tuntuma on melko samanlainen. Kun opit käyttämään yhden se
4949

5050
Safari (Macin selain, jota Windows/Linux eivät tue) on vähän erityinen. Meidän täytyy ensin ottaa "Develop menu" (suom. "kehitysvalikko") käyttöön.
5151

52+
<<<<<<< HEAD
5253
Avaa "Preferences" (suom. "Asetukset") ja mene kohtaan "Advanced" (suom. "Lisäasetukset"). Alaosasta löytyy valinta:
54+
=======
55+
Open Settings and go to the "Advanced" pane. There's a checkbox at the bottom:
56+
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
5357
5458
![safari](safari.png)
5559

-41.1 KB
Binary file not shown.
22.2 KB
Binary file not shown.
Binary file not shown.
Binary file not shown.
83 KB
Loading
Loading

1-js/02-first-steps/04-variables/3-uppercast-constant/task.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,24 @@ const birthday = '18.04.1982';
1212
const age = someCode(birthday);
1313
```
1414

15+
<<<<<<< HEAD
1516
Meillä on vakiomuuttuja `birthday` päivämäärä ja `age` lasketaan muuttujan `birthday` avulla jonkin koodin avulla (sitä ei ole tässä näkyvillä, koska yksityiskohdilla ei ole tässä kohtaa merkitystä).
17+
=======
18+
Here we have a constant `birthday` for the date, and also the `age` constant.
19+
20+
The `age` is calculated from `birthday` using `someCode()`, which means a function call that we didn't explain yet (we will soon!), but the details don't matter here, the point is that `age` is calculated somehow based on the `birthday`.
21+
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
1622
1723
Käyttäisitkö isoja kirjaimia muuttujalle `birthday`? Entä `age`? Tai jopa molemmissa?
1824

1925
```js
26+
<<<<<<< HEAD
2027
const BIRTHDAY = '18.04.1982'; // käytä isoja kirjaimia?
2128

2229
const AGE = someCode(BIRTHDAY); // käytä isoja kirjaimia?
23-
```
30+
=======
31+
const BIRTHDAY = '18.04.1982'; // make birthday uppercase?
2432

33+
const AGE = someCode(BIRTHDAY); // make age uppercase?
34+
>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b
35+
```

0 commit comments

Comments
 (0)