Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JavaScript & Node.js

JavaScript & Node.js

For 3rd Programming Days in Karabuk University on 27 Feb, 2016

Avatar for Gokmen Goksel

Gokmen Goksel

February 27, 2016
Tweet

More Decks by Gokmen Goksel

Other Decks in Programming

Transcript

  1. JavaScript Node.js JavaScript - Node.js G¨ okmen G¨ oksel, @gokmen

    Yazılım M¨ uhendisi Koding III. Programlama G¨ unleri, 2016 Karab¨ uk ¨ Universitesi G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  2. JavaScript Node.js Hikaye Dil Yapısı Hikaye Netscape tarayıcısı i¸ cinde

    basit programlama ihtiya¸ clarını kar¸ sılamak ¨ uzere 1995 yılında Brendan Eich tarafından tasarlandı. G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  3. JavaScript Node.js Hikaye Dil Yapısı Hikaye Netscape tarayıcısı i¸ cinde

    basit programlama ihtiya¸ clarını kar¸ sılamak ¨ uzere 1995 yılında Brendan Eich tarafından tasarlandı. Mocha → LiveScript → JavaScript G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  4. JavaScript Node.js Hikaye Dil Yapısı Hikaye Netscape tarayıcısı i¸ cinde

    basit programlama ihtiya¸ clarını kar¸ sılamak ¨ uzere 1995 yılında Brendan Eich tarafından tasarlandı. Mocha → LiveScript → JavaScript Java ile do˘ grudan bir ilgisi yok, ismin sebebi o d¨ onemlerde Java’nın yaygınla¸ smaya ba¸ slaması, tamamen duygusal. G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  5. JavaScript Node.js Hikaye Dil Yapısı Hikaye Netscape tarayıcısı i¸ cinde

    basit programlama ihtiya¸ clarını kar¸ sılamak ¨ uzere 1995 yılında Brendan Eich tarafından tasarlandı. Mocha → LiveScript → JavaScript Java ile do˘ grudan bir ilgisi yok, ismin sebebi o d¨ onemlerde Java’nın yaygınla¸ smaya ba¸ slaması, tamamen duygusal. 1997 yılında Avrupa Bilgisayar ¨ Ureticileri Birli˘ gi (ECMA) standartla¸ stırma s¨ urecine aldı ECMAScript ECMA-262 G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  6. JavaScript Node.js Hikaye Dil Yapısı S ¸imdilerde Ba¸ slangı¸ cta

    basit i¸ slevler yerine getirmesi bekleniyordu G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  7. JavaScript Node.js Hikaye Dil Yapısı S ¸imdilerde Ba¸ slangı¸ cta

    basit i¸ slevler yerine getirmesi bekleniyordu ˙ Ilk s¨ ur¨ um sadece 10 g¨ unde geli¸ stirilmi¸ sti G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  8. JavaScript Node.js Hikaye Dil Yapısı S ¸imdilerde Ba¸ slangı¸ cta

    basit i¸ slevler yerine getirmesi bekleniyordu ˙ Ilk s¨ ur¨ um sadece 10 g¨ unde geli¸ stirilmi¸ sti S ¸imdi daha yetenekli... G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  9. JavaScript Node.js Hikaye Dil Yapısı S ¸imdilerde Ba¸ slangı¸ cta

    basit i¸ slevler yerine getirmesi bekleniyordu ˙ Ilk s¨ ur¨ um sadece 10 g¨ unde geli¸ stirilmi¸ sti S ¸imdi daha yetenekli... Sunucu tarafında ¸ calı¸ sabiliyor, web socket a¸ cabiliyor, donanımdan bilgi alabiliyor... G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  10. JavaScript Node.js Hikaye Dil Yapısı S ¸imdilerde Ba¸ slangı¸ cta

    basit i¸ slevler yerine getirmesi bekleniyordu ˙ Ilk s¨ ur¨ um sadece 10 g¨ unde geli¸ stirilmi¸ sti S ¸imdi daha yetenekli... Sunucu tarafında ¸ calı¸ sabiliyor, web socket a¸ cabiliyor, donanımdan bilgi alabiliyor... Artık bir standart, t¨ um tarayıcılar tarafından destekleniyor. G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  11. JavaScript Node.js Hikaye Dil Yapısı S ¸imdilerde Ba¸ slangı¸ cta

    basit i¸ slevler yerine getirmesi bekleniyordu ˙ Ilk s¨ ur¨ um sadece 10 g¨ unde geli¸ stirilmi¸ sti S ¸imdi daha yetenekli... Sunucu tarafında ¸ calı¸ sabiliyor, web socket a¸ cabiliyor, donanımdan bilgi alabiliyor... Artık bir standart, t¨ um tarayıcılar tarafından destekleniyor. Ta¸ sınabilir cihazlarda, ta¸ sınamayan cihazlarda (buzdolabı gibi) G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  12. JavaScript Node.js Hikaye Dil Yapısı Chrome’da Nasıl? Kullanıcı Arabirimi G¨

    or¨ unt¨ u Altyapısı Tarayıcı WebKit V8 JavaScript Motoru libXML Eklentiler A˘ g Altyapısı G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  13. JavaScript Node.js Hikaye Dil Yapısı Chrome’da Nasıl? Kullanıcı Arabirimi G¨

    or¨ unt¨ u Altyapısı Tarayıcı WebKit V8 JavaScript Motoru libXML Eklentiler A˘ g Altyapısı Di˘ gerleri: Carakan - Opera, SpiderMonkey - Firefox, Chakra - Edge G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  14. JavaScript Node.js Hikaye Dil Yapısı Genel G¨ or¨ un¨ um

    1 var degisken = ’javascript’; 2 function test(degisken) { 3 for (var i = 0; i < 5; i++) { 4 console.log(degisken + i); 5 }; 6 }; 7 test(degisken); 8 var nesne = { 9 sayi : 5, 10 metod : function () { 11 return this.sayi + 5 12 }, 13 dizi : [1, "pi", 3.14] 14 }; 15 console.log(nesne.sayi); 16 console.log(nesne.metod()); 17 console.log(nesne.dizi[1] + " sayisi: ", nesne.dizi[2]); 18 console.log(nesne.olmayan_eleman); Sonu¸ c javascript0 javascript1 javascript2 javascript3 javascript4 5 10 pi sayisi: 3.14 undefined G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  15. JavaScript Node.js Hikaye Dil Yapısı undefined, null ve NaN 1

    birdegisken 2 var birdegisken = null; birdegisken 3 typeof null 4 typeof undefined 5 null === undefined 6 null == undefined 7 NaN === NaN 8 Number.NaN === NaN 9 isNaN(NaN) 10 isNaN(Number.NaN) "ReferenceError: birdegisken is not defined" null object // ECMAScript tanım hatası, do˘ grusu null undefined false true false false true true G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  16. JavaScript Node.js Hikaye Dil Yapısı Veri Tipleri/Operat¨ orler 1 //

    Sayılar (Numbers) 2 2.998e8 3 100 + 4 * 11 4 (100 + 4) * 11 5 6 // Karakter Dizisi (Strings) 7 "Merhaba D¨ unya" 8 "Merhaba\nD¨ unya" 9 10 "Merhaba" + "D¨ u" + "nya" 11 12 // Mantıksal (Boolean) 13 3 > 1 14 5 != 5 15 "a" == "b" 16 17 // Nesneler (Objects) Her¸ sey 18 a = { b: 5, c: 4 } 19 a.b + a.c 20 21 // Diziler (Arrays) 22 a = [1, "test", 3, function(){ return "hello"; }, 5] 23 a[3]() // 2.998 x 108 = 299,800,000 299800000 144 1144 Merhaba D¨ unya Merhaba D¨ unya Merhaba D¨ unya true false true Object {b: 5, c: 4} 9 [1, "test", 3, function a(), 5] "hello" G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  17. JavaScript Node.js Hikaye Dil Yapısı S ¸artlı C ¸alı¸ stırma/D¨

    ong¨ uler 1 // If 2 var sayi = 50; 3 if (sayi < 10) 4 console.log("K¨ uc¨ uk"); 5 else if (sayi < 100) 6 console.log("Orta"); 7 else 8 console.log("Buyuk"); 9 10 // While 11 var sayi = 0; 12 while (sayi <= 4) { 13 console.log(sayi); 14 sayi = sayi + 2; 15 }; 16 17 // For 18 for (var sayi = 0; sayi <= 4; sayi++) 19 console.log(sayi); // If Orta // While 0 2 4 6 // For 0 1 2 3 4 G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  18. JavaScript Node.js Hikaye Dil Yapısı Fonksiyonlar/Prototipler 1 // Asal sayı

    kontrol¨ u 2 function asalmi(sayi) { 3 for(var i = 2; i < sayi; i++) { 4 if(sayi % i === 0) { 5 return false; 6 } 7 } 8 return sayi > 1; 9 } 10 console.log(asalmi(7)); 11 console.log(asalmi(12)); 12 console.log(asalmi(15487457)); 13 14 // Prototipler 15 var a = 7; 16 console.log(typeof a); 17 18 Number.prototype.asalmi = function(){ 19 return asalmi(this); 20 } 21 22 console.log(a.asalmi()); true //<-- asalmi(7) false //<-- asalmi(12) true //<-- asalmi(15487457) number //<-- typeof a true //<-- a.asalmi() G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  19. JavaScript Node.js Hikaye Dil Yapısı Kapsam (Scope) var neden ¨

    onemli? 1 var x = "disarisi"; 2 3 var f1 = function() { 4 var x = "f1in icinde"; 5 }; 6 f1(); 7 console.log(x); 8 9 var f2 = function() { 10 x = "f2nin icinde"; 11 }; 12 f2(); 13 console.log(x); disarisi f2nin icinde G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  20. JavaScript Node.js Hikaye Dil Yapısı Kapsam (Scope) var neden ¨

    onemli? 1 var x = "disarisi"; 2 3 var f1 = function() { 4 var x = "f1in icinde"; 5 }; 6 f1(); 7 console.log(x); 8 9 var f2 = function() { 10 x = "f2nin icinde"; 11 }; 12 f2(); 13 console.log(x); disarisi f2nin icinde var x = ”disarisi” global function f2 x = ”f2nin icinde” function f1 var x = ”f1in icinde” G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  21. JavaScript Node.js Hikaye Peki Nasıl? Hikaye JavaScript’i Tarayıcıdan C ¸ıkartalım

    Sunucu tarafında web uygulamaları i¸ cin geli¸ stirilmi¸ s bir ¸ calı¸ stırma ortamı. A¸ cık Kaynak kodlu ve hali hazırda bir¸ cok platform tarafından destekleniyor (Linux, Mac OS X, Windows, Unix, BSD* etc.) G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  22. JavaScript Node.js Hikaye Peki Nasıl? Hikaye JavaScript’i Tarayıcıdan C ¸ıkartalım

    Sunucu tarafında web uygulamaları i¸ cin geli¸ stirilmi¸ s bir ¸ calı¸ stırma ortamı. A¸ cık Kaynak kodlu ve hali hazırda bir¸ cok platform tarafından destekleniyor (Linux, Mac OS X, Windows, Unix, BSD* etc.) Ryan Dahl tarafından 2009 yılında geli¸ stirilmeye ba¸ slandı. S ¸u anda Node.js vakfı tarafından finanse ediliyor ve Linux Vakfı’nın da ¨ uye kurulu¸ sları arasında. G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  23. JavaScript Node.js Hikaye Peki Nasıl? Hikaye JavaScript’i Tarayıcıdan C ¸ıkartalım

    Sunucu tarafında web uygulamaları i¸ cin geli¸ stirilmi¸ s bir ¸ calı¸ stırma ortamı. A¸ cık Kaynak kodlu ve hali hazırda bir¸ cok platform tarafından destekleniyor (Linux, Mac OS X, Windows, Unix, BSD* etc.) Ryan Dahl tarafından 2009 yılında geli¸ stirilmeye ba¸ slandı. S ¸u anda Node.js vakfı tarafından finanse ediliyor ve Linux Vakfı’nın da ¨ uye kurulu¸ sları arasında. JS yorumlamak i¸ cin Google’ın Chrome ile birlikte geli¸ stirdi˘ gi V8 JavaScript motorunu kullanıyor. G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  24. JavaScript Node.js Hikaye Peki Nasıl? Hikaye JavaScript’i Tarayıcıdan C ¸ıkartalım

    Sunucu tarafında web uygulamaları i¸ cin geli¸ stirilmi¸ s bir ¸ calı¸ stırma ortamı. A¸ cık Kaynak kodlu ve hali hazırda bir¸ cok platform tarafından destekleniyor (Linux, Mac OS X, Windows, Unix, BSD* etc.) Ryan Dahl tarafından 2009 yılında geli¸ stirilmeye ba¸ slandı. S ¸u anda Node.js vakfı tarafından finanse ediliyor ve Linux Vakfı’nın da ¨ uye kurulu¸ sları arasında. JS yorumlamak i¸ cin Google’ın Chrome ile birlikte geli¸ stirdi˘ gi V8 JavaScript motorunu kullanıyor. C, C++ ve JavaScript ile geli¸ stiriliyor, kendi paket y¨ onetim sistemi NPM (Node Package Manager) ’de 250.000’e yakın paket bulunmakta. NPM G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  25. JavaScript Node.js Hikaye Peki Nasıl? Peki Nasıl? Node.js tekil i¸

    s par¸ cacıkları (threads) ¨ uzerinde ¸ calı¸ sabiliyor fakat e¸ ssamansız girdi/¸ cıktı hareketlerine olanak sa˘ glayan bir altyapıya dayanır. G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  26. JavaScript Node.js Hikaye Peki Nasıl? Peki Nasıl? Node.js tekil i¸

    s par¸ cacıkları (threads) ¨ uzerinde ¸ calı¸ sabiliyor fakat e¸ ssamansız girdi/¸ cıktı hareketlerine olanak sa˘ glayan bir altyapıya dayanır. Temeldeki en ¨ onemli bile¸ sen t¨ um platformlara destek veren libuv kitaplı˘ gı. libuv ile i¸ sletim sisteminin ve dosya sisteminin olanaklarını kullanarak e¸ szamansız bir akı¸ s d¨ ong¨ us¨ u (event loop) yaratılır. G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  27. JavaScript Node.js Hikaye Peki Nasıl? Peki Nasıl? Node.js tekil i¸

    s par¸ cacıkları (threads) ¨ uzerinde ¸ calı¸ sabiliyor fakat e¸ ssamansız girdi/¸ cıktı hareketlerine olanak sa˘ glayan bir altyapıya dayanır. Temeldeki en ¨ onemli bile¸ sen t¨ um platformlara destek veren libuv kitaplı˘ gı. libuv ile i¸ sletim sisteminin ve dosya sisteminin olanaklarını kullanarak e¸ szamansız bir akı¸ s d¨ ong¨ us¨ u (event loop) yaratılır. Tekil bir akı¸ s d¨ ong¨ us¨ u i¸ s listesinde bir¸ seyler oldu˘ gu s¨ urece ¸ calı¸ smaya devam eder. G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  28. JavaScript Node.js Hikaye Peki Nasıl? Peki Nasıl? Node.js tekil i¸

    s par¸ cacıkları (threads) ¨ uzerinde ¸ calı¸ sabiliyor fakat e¸ ssamansız girdi/¸ cıktı hareketlerine olanak sa˘ glayan bir altyapıya dayanır. Temeldeki en ¨ onemli bile¸ sen t¨ um platformlara destek veren libuv kitaplı˘ gı. libuv ile i¸ sletim sisteminin ve dosya sisteminin olanaklarını kullanarak e¸ szamansız bir akı¸ s d¨ ong¨ us¨ u (event loop) yaratılır. Tekil bir akı¸ s d¨ ong¨ us¨ u i¸ s listesinde bir¸ seyler oldu˘ gu s¨ urece ¸ calı¸ smaya devam eder. G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  29. JavaScript Node.js Hikaye Peki Nasıl? Akı¸ s D¨ ong¨ us¨

    u G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  30. JavaScript Node.js Hikaye Peki Nasıl? Dosya Sistemi 1 var fs

    = require(’fs’); 2 var sayi = undefined; 3 4 // birArttir fonksiyonu her ¸ calı¸ stırıldı˘ gında 5 // sayi.txt’nin i¸ ceri˘ gindeki sayının bir fazlasını verecektir. 6 7 function birArttir() { 8 fs.readFile(’sayi.txt’, function (err, dosyaIcerigi) { 9 sayi = parseInt(dosyaIcerigi); 10 sayi++; 11 }) 12 }; 13 14 // ¸ calı¸ stırıldı˘ gında ekrana ‘undefined‘ basmasını bekleriz 15 // ¸ c¨ unk¨ u okuma i¸ slemi e¸ szamansız bir i¸ slem ve o i¸ slem bitip 16 // ona parametre olarak verdi˘ gimiz fonksiyonu 17 // ¸ ca˘ gırana kadar sayi ‘undefined‘ olmaya devam edecek. 18 19 birArttir(); 20 21 console.log(sayi); G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  31. JavaScript Node.js Hikaye Peki Nasıl? Basit bir Node.js Sunucusu G¨

    okmen G¨ oksel, @gokmen JavaScript - Node.js
  32. JavaScript Node.js Hikaye Peki Nasıl? Kimler kullanıyor? Koding PayPal Uber

    Netflix LinkedIn Microsoft ve di˘ gerleri... G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js
  33. JavaScript Node.js Hikaye Peki Nasıl? Sorular - Te¸ sekk¨ urler

    G¨ okmen G¨ oksel - gokmen@goksel.me gokmen.goksel.me github.com/gokmen twitter.com/gokmen speakerdeck.com/gokmen G¨ okmen G¨ oksel, @gokmen JavaScript - Node.js