Katılıyorum. Hatta bazı paketlerde ekstra modüller oluyor o paketi kullanmak için. Modülün içindeki paketleri sen daha once projene dahil ettiğin zaman versiyonlar çakışıyor ve hatalara sebep oluyor. NodeJs de terminalde oluşan hataların sebepleri çok ama çok yetersiz debug modu vs. Bunlar çzülürse bence muhteşem bir teknoloji. Angular falan da efsane :) Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

Peki nodejs klasründe toplam kaç tane dosya var? Bir de 60 mb az diyorsun ama yüklü paketlerin ne olduğuna bakmak lazım? Paketlerin kendi dependency'leri de işin içine giriyor dependency tree çorba oluyor. 20 satır kodluk iş için bile paketlere dadanılıyor. Ufak tefek her projede grunt var, iki dk makefile yazmaya üşeniyor millet. Ondan sonra içe içe 100 dependency'den birisi cortlayınca binlerce proje zincirleme cortluyor saatlerce debug kasıyorlar sonra. Herkesin fikri kendine ama node. js'nin bu paket olayı bence bir tasarım problemi. Hiç bu açıdan düşünmemiştim hocam. Haklısın düşünce :) Burada cazip olan kısmı her paketi detayına kadar açıp düzenleyebilmen. Ytdl kullanıyorsun misal. Bundaki codece mudahale edebiliyorsun. Ytdlyi alt paket olarak kullanıp kendi paketini de oluşturabiliyorsun. Fakat dediğin gibi ytdlnin kullandığı alt paketler başka bir pakette tekrar yükleniyor. Hatta o paketlerin alt paketleri de aynı şekilde. Çzümünü bilmiyorum fakat servera hükmedebilmek c/c++ ı etkin olarak kullanabilmek çok cazip geliyor. Bu yüzden tüm dediğin olay gzümde eriyip gidiyor. Diğer açıdan express ile basit bir hello world web uygulaması yapacak olsan onlarca paket geliyor dediğin gibi :) İleride gelişeceğini umut ediyorum. Node. jse alışınca php vs çok ama çok hantal geliyor. Bunu hissettiriyor emin ol iyibu! yeniden..

O zaman size güzel bir ğrenme kaynağıda ben atayım http://nodeschool.io/tr/npm yi yüklediyseniz eğer burada ki paketleri kurarak terminal üzerinden nodejs veya nodejs express ğrenebilirsiniz. Eğer daha efektif bir kurs isterseniz node. codeschool.com un ilk dersi ücretsiz yine yararlı bi site

Abi node. js'de bu olayı sevmiyorum. İki tane paket yukluyorsun 2000 tane dosya oluyor klasrde. Bir de her şey için paket yukleyince binlerce dosya oluyor. Şuan kullandığım bir sistemde 26 paket var toplam boyutu 63mb felan. Çok mühim değil dosyaların çokluğu Eğer olmasın dersen -g etiketi ile global hale getirebilirsin. Paketlerin tekrar tekrar kullanmamasını istediğin çekirdek paketleri global olarak tanımlayıp dosyaların sayısını azaltırsın. Sevimsiz değil okadar da abü :) iyibu! yeniden..

Hem up olsun hemde devamı geleydi iyidi ya :) Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

geoip-lite yaklaşık konum mu veriyor yoksa direkt olarak noktasal konumu mu veriyor? Sürekli güncellenebilir mi? rneğin Sensr mahiyetinde kullanılabilir mi? sensr olarak kullanamazsın. ülke şehir gibi değişkenleri kullanmak istersen bu paketi kullanabilirsin Who is detCode?

Abi node. js'de bu olayı sevmiyorum. İki tane paket yukluyorsun 2000 tane dosya oluyor klasrde. Bir de her şey için paket yukleyince binlerce dosya oluyor. while (1<2)

MhmdAlmz bunu yazdı geoip-lite yaklaşık konum mu veriyor yoksa direkt olarak noktasal konumu mu veriyor? Sürekli güncellenebilir mi? rneğin Sensr mahiyetinde kullanılabilir mi? sensr olarak kullanamazsın. ülke şehir gibi değişkenleri kullanmak istersen bu paketi kullanabilirsin Bulunsun o zaman Ip kontrol lokasyon vs alınca olabilir güzel data toplanır Thank you :) Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

Peki nodejs klasründe toplam kaç tane dosya var? Bir de 60 mb az diyorsun ama yüklü paketlerin ne olduğuna bakmak lazım? Paketlerin kendi dependency'leri de işin içine giriyor dependency tree çorba oluyor. 20 satır kodluk iş için bile paketlere dadanılıyor. Ufak tefek her projede grunt var, iki dk makefile yazmaya üşeniyor millet. Ondan sonra içe içe 100 dependency'den birisi cortlayınca binlerce proje zincirleme cortluyor saatlerce debug kasıyorlar sonra. Herkesin fikri kendine ama node. js'nin bu paket olayı bence bir tasarım problemi. while (1<2)

Esen olsun. Node. js ile ilgili ufak tefek bilgilerimi fazla uzatmadan ne uzmanlar için ne amatrler için paylaşma kararı aldım. Bu sebeple etiketine sahip tüm konularımı takip edebilirsiniz, ancak tanım açısından ne nedir ne değildir şeklinde bilgilerden ziyade neye benzer, nasıl olmalı bilgileri bulacaksınız. Uzmanlar zaten yazılarımdaki biçok yazıya nceden hakimdir, yeni başlayanlarsa okuduklarından sıkıntı çekebilirler. Not: Bilgisayarımın işletim sistemi windowstur. Diğer işletim sisteminde bağlantılar, kurulumlar değişiklik gsterebilir.. İlk konu: Web İçin Çalışma Ortamı Oluşturmak - http://www.tahribat.com/forum/nodejs-web-icin-calisma-ortami-olusturmak-221402 Başlayalım.. Npm nedir ne değildir çok fazla bahsetmeyeceğim, tanım yapmayacağım. Ancak kısaca node. js ile beraber gelen paket ynetim aracıdır diyebiliriz. Kullanımında detaylara girmeden kısaca bahsedersek, 3 ana komutu sık sık kullanırız 1-) npm install komutu: Bu komut package. json'da kayıtlı paketleri yükleyebilmek için kullanılır. 2-) npm update komutu: Npm install'den aslında bir farkı yok denilebilir. Yüklemek yerine güncelleme komutudur. Ufacık farkı ise package. json'u detaylı anlattığımızda anlaşılacaktır. 3-) npm start komutu: Aslına bakarsanız gerçek bir sitede kullanmayacağımız ancak localde, geliştirme aşamasında, debug ve tekrar başlatma durumlarında sık sık kullancağımız bir komuttur. Npm start aslında basit anlamda package. json'da belirtilmiş olan ana js dosyamızı cmd'de "node ana_js_dosyasi. js" yazarak çalıştırmakla aynı komuttur. Tabi bu package. json'da node kısmı dahi değiştirilebilir durumda. Binevi kısayol tuşumuz olmuş oluyor. Express-generator'de default olarak "node./bin/www" komutudur. Yani express-generator ile oluşturduğumuz "başlangıç kitimiz"de port debug error handling gibi kısımlar için www dosyasını, paketleri include etme vs diğer ana js komutları için de app. js dosyasını kullanacağız. Package. json'da paketler nasıl tanımlanılır kısaca bahsedecek olursak: { "name": "tahribat-nodejs", "version": "0.0.1", "private": true, "scripts": , "dependencies": } Şeklinde içeriğe sahip anadizinde bulunması gereken bir dosyamız var ve bu dosyada dependencies blümü içerisinde paketlerimiz, diğer blümlerde çeşitli değişkenlerimiz ve ayarlarımız bulunmakta. https://docs.npmjs.com/files/package. json <-- Detaylı bilgi edinebilmek için bu siteyi incelemenizde fayda var ancak ben yine tanımlardan kaçınıp yalnızca işimize yarayacak kısımları anlatacağım. Scripts->starts alanı içerisindeki kısımı npm update içerisinde bahsetmiştim. Biliyorsunuz javascript v8 moturunu kullanan tek hede node. js değil.io. js gibi commonjs gibi hedelerimiz de var. Yahut pm2 gibi server/node. js proje ynetici hedelerini de çalıştırabiliriz. Paketlerimizi tanımladığımız dependencies kısmında dikkat etmemiz gereken en nemli husus kesinlikle doğru paket ismini yazdıktan sonra doğru versiyonu yazabilmektir. Unutmayın daha sonra da projemizi geliştireceksek, geliştirmeye karar verdiğimiz dnemde o paket çağın tesinde veya gerisinde kalmış olabilir. Versiyonu belirtmeden tekrardan yüklediğimiz paket bizim projemizdeki kodları artık desteklemiyor olabilir. Bu sebeple 1- paket ismine çok dikkat edin, 2- paket versiyonunu mutlaka kontrol edin, 3- kesinlikle yeni bir paket yükleyecekken npm install paket-ismi komutunu kullanmayın. Yoksa node_modules klasrünü yük olmasın diye almadığınız durumlarda hangi paketlerin tekrar yüklenilmesi gerektiğini bulabilmek için bin dereden su getirmek zorunda kalabilirsiniz. Peki versiyon alelade mi yazılıyor? Tabiki hayır. Şu adreste abiler güzelce sistemi açıklayıp kaynak kodlarını yayınlamışlar -> https://github.com/npm/node-semver detaylı bilgi için linki incelemenizi tavsiye ederim. Bizim işimize yarayacak bir kaç durum var. Tam versiyon: "v1.3.0", "=v1.3.0" o versiyon ve üstü: ">=1.3.0" herhangi bir versiyon: " " son haneye kadar eşit: " 1.3.0" (başka deyişle 1.3. x, 1 yazsa idik 1. x, 1.3.2 yazsa idik 1.3.2. x) <- genel olarak tavsiyem budur Tabi detayına bakarsanız şu versiyonların üstü olurken bu olmasın ama şunlar varken şunun altı olsun gibi ekzantirik şeyler de yazabilirsiniz verdiğim linki kurcalayabilirsiniz. Şimdi sıra sıra projelerimizde varsayılan olarak kullanmamız olmazsa olmaz paketlerimize geçelim: Kırmızı ile belirttiğim yerin dışında kalanlar varsayılan olarak gelen express paketleri. Diğerleri ise benim kendi kullandığım, çok faydalı bulduğum paketler. Bu paketleri varsayılan olarak her web projenizde bulundurmanızı şiddetle tavsiye ediyorum :) Şimdi teker teker paketlere geçelim. Not: Express'in kendi paketlerini anlatma gereği duymuyorum, araştırıp bulabilirsiniz, zaten biz onları require olarak tanımlamak dışında çok da kullanmayacağız.. Ddos: Maalesef zamanla eski aktifliğini yitiren, warning hatası verse de hala işe yarayan paketimiz isminden de anlaşılacağı üzere ddos engellemek amacıyla üretilmiş. Tabi ki byle bir paketle tüm ddos güvenliğini alabileceğinizi sanıyorsanız yanılıyorsunuz :) Fakat cookie ve session ynetimi ile en azından sıradan kullanıcıların bilerek veya bilmeyerek arka arkaya işlem yapmasını engelliyor. Warning verdiğinden dolayı da kullanımını size bırakıyorum aslında. Başka bir paket yayınlayacağım ddos için Compression: Toplu halde css, js dosyalarını sıkıştırıp optimize etmeyi otomatikleştirmek için aktif olarak kullandığım paket. Express-Minify: Html çıktılarını mümkün olduğunca sıkıştıran, kendiniz için yazdığınız "comment"ları temizleyen güzel bir paket. Phpjs: Php bilginiz var ve bunu node. js'te de server tarafında kullanmak istiyorsanız mükemmel bir paket. Php'de pek çok kullanışlı ve popüler fonksiyonları javascript kütüphanesine çevirmişler. Bunu da tabi node. js'e montelemişler. Hatta c, python, go gibi diğer dilleri de çevirmeye el atmışlar. Linki inceleyebilirsiniz: http://locutus.io/ Async: Tanımladığımız paketleri asenkron olarak çalıştırmak için harika bir paket. Zaten tüm tanımlamalarımız aslında bu paket içerisinden olacak. Bu şekilde gelsin google page speed artıları, seo avantajları :) Server tepki süresini en optimum seviyeye indirir. Node-force-domain: Yahu byle birşey için bile paket mi olurmuş diyeceğiniz güzide paket. Sitenizin www olmayan halini www olan adresine ynlendirir :) Varken kullanayım demiştim, gayet hızlı ve güzel. Üstelik düşünmemeniz gereken 302 gibi ynlendirme kodlarını vs herşeyini düşünmüşler. express-dot-engine: Aslına bakarsanız yalnızca doT ismine sahip template engine'in express için biraz daha geliştirilmiş versiyonu. Ben normalde yalnız doT'u kullanıyordum. Fakat dün gece makaleyi yazarken farkettim, yleyse kullanalım dedim. Benim 2 paket + 1 paket editi olarak yaptığım işi tek pakette birleştirmişler güzel olmuş. Yoksa ben yayınlayacaktım. Bu dot engine için ayrı bir yazı yazmayı bile düşünüyorum. Çünkü piyasadaki tema motorlarının en hızlısı ve bana gre en kullanışlısı. Jade hoş gelebilir fakat okadar hantal ki, benim gibi hız ve seo tutkunuysanız size kesinlikle yaramaz. Ayrıca jade gibi motorları kendiniz geliştirmek istediğinizde işin içinden çıkmak hayli zor, fakat doT. js tamamen açık okunaklı ufacık bir paket. Tabi express-dot-engine biraz daha çetrefilli bu da express gibi hazır bir web yneticisini kullanıyor olmamızın sıkıntısı. Nasıl kullanırız? Package. json dosyamızın versiyonlarıyla beraber güzelce yazılmış olduğuna emin olduktan sonra vscode editrümüzden CTRL + " komutuyla komut istemini açıyoruz. Npm update komutu ile paketlerimizi güncelliyoruz Eğer ddos ekliyse 1 adet uyarı alacaksanız herhangi bir sıkıntınız olmayacak. Eğer ddos ekli değilse bu uyarıyı da almazsınız. Eğer kontrol etmek isterseniz npm ls komutu ile paketleri listeleyebilirsiniz. Daha sonra app. js dosyamızı açıp tüm paketlerimizi tanımlamamız lazım. Express-generator app. js'de require ile gerekli komutları en tepede tanımlamış. Hemen o satırların altına var engine = require ; var compress = require ; var minify = require ; var async = require ; var forcedomain = require ; Satırlarını da ekledim ben (php'yi gerekli grdüğümüz sayfalarda model kısmında kullanacağımız için tanımlamaya gerek yok. boşuna yük etmeyelim) Hemen ardından doT temlate engine'i aptal jade yerine tanımlayalım. // view engine setup app. set('views', path. join ; app. set Kısmını // view engine setup app. engine ; app. set('views', path. join ; app. set ; Şeklinde değiştirirsek dot tanımlamamız bitmiş oluyor. Fazla farklı birşey yapmadık aslında express'in tanıdığı default motorlardan biri olmadığı için doT'u app. engine ile tanıttık. Bunu engine. express yardımıyla yaptık. Sonra app'teki view engine değişkenini dot yaptık işlemimiz bitti. https://www.npmjs.com/package/express-dot-engine Buradan kullanımını kurcalayabilirsiniz. zel ayarlar ile ] for evaluation ] for interpolation ] for interpolation with encoding ] for compile-time evaluation/includes and partials ] for compile-time defines ] for conditionals ] for array iteration Şeklinde kullanım yerine classic asp veya php veya kendi uydurduğunuz bir syntax şekliyle düzenleyebilirsiniz. Ben web yazılımına classic asp ile başladığım için yle değiştirdim ve yukardaki kodların üzerine şu kodları yaptıştırdım. engine. settings. dot = \}| \s \:\s \s (?:\:\s ?\s \%\>)/g, varname: 'layout, partial, locals, model', strip: true, append: true, selfcontained: false, doNotSkipEncoded: false }; varname: 'layout, partial, locals, model' bu kısım en nemli yeri. Fazla detaya girmeyeceğim doT kullanımı ile ilgili çünkü yeni bir makale yazmam gerekir içine girersek :) Ama değişken olarak routerden gelen değişkenler için model, iskelet içeri aktardığımız zaman layout tagini kullanacağız. <%=model. title%> gibi... E artık asenkron parallel uygulama hedemizi de tanımlayıp diğer fonksiyonlarımızı çalıştıralım. Yeni bir fonksiyon oluşturuyoruz ve bir dngü ile gelecek olan programları teker teker asenkron çalıştırmaya yolluyoruz. Fonksiyonumuz tam olarak şyle: function parallel { return function { async. each(middlewares, function , next); }; } Daha sonra app. use ile tanımlamamız gereken fonksiyonları tek tek bu parallel fonksiyonundan geçiriyoruz. Dizi şeklinde tanıttığımızda da zaten fonksiyonumuz işlev grecektir. app. use(parallel( )); Compress, minify kullanımı grdüğünüz gibi fonksiyonu app. use içinde çalıştırmakla bitiyor. Bodyparser, cookieparser, express. static ise express-generatorun kendisiyle gelen komutlar. ForceDomain komutundaysa grdüğünüz gibi hostname tanımlıyoruz ve type'ı permanent yapıyoruz tüm işlemlerimiz bitmiş oluyor. Minify'de default ayarlar ve ayarları değiştirmek için : https://www.npmjs.com/package/express-minify Compression'da hardcore ayarlar için: https://www.npmjs.com/package/compression Buarada neden 2 adet sıkıştırma paketi derseniz. Compression aynı zamanda gzip compression'u da açıyor. Bu sebeple arama motorlarında 1 artı puanımız daha oluyor. Son olarak views kısmındaki jade dosyalarınız. dot olarak düzenleyip sitenizi debug edebilirsiniz. Artık en iyi şekilde optimize edilmiş, hızlı ve performanslı web sitemizi düzenleme blümüne geçebiliriz. Bir sonraki yazımda yeni bir web sitesi yapmaya başlayacağız ve doT template engine derinlerine inip daha çok jquery ve css'i aktif olarak kullanacağız. Sonraki yazılarda da expressin lanet problemlerine çzümler getireceğiz. Takipte kalın :) konu ile ilgili her türlü sorularınızı elimden geldiğimce cevaplarım, konu dağılmadığı sürece ek bilgiler de ekleyebilirim. 1511 kelimelik bu makale umarım sıkıcı olmamıştır, iyi kodlamalar :) by_Tet tarafından 24/Ağu/16 18:32 tarihinde düzenlenmiştir iyibu! yeniden..

geoip-lite yaklaşık konum mu veriyor yoksa direkt olarak noktasal konumu mu veriyor? Sürekli güncellenebilir mi? rneğin Sensr mahiyetinde kullanılabilir mi? Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

https://www.codementor.io/nodejs/tutorial/list-of-useful-nodejs-modules A to Z List of Useful Node. js Modules

formidable -> file upload yapıyorsanız kullanabileceğiniz bir paket. https://github.com/felixge/node-formidable geoip-lite -> ip den lokasyon bilgisi alabileceğiniz bir paket. başka bir apiden http request ile sorgulamıyor maxmind free db sini kullanıyor bildiğim kadarıyla. https://github.com/bluesmoon/node-geoip i18n -> bildiğiniz localization paketi. https://github.com/mashpie/i18n-node moment -> tarihler ile uğraşıyorsanız kullanabileceğiniz bir paket. Dil desteği filan var 2 saat nce vs. yazdırabiliyorsunuz verdiğiniz tarihe gre. http://momentjs.com/ string -> ekstra string fonksiyonları olan kullanışlı bir paket. http://stringjs.com/ detCode tarafından 16/Eyl/16 15:20 tarihinde düzenlenmiştir Who is detCode?

dokuman için sağol. express'den bağımsız olarak npm ve package. json kullanımını da anlatman iyi olmuş.

Up olsun iyibu! yeniden..

@by_Tet hocam bi sonraki yazından azıcık visual Code yi anlatır mısın indirdim de beyin yakıcı şu debug olaylarını yakalama vs gibi? Mümkün müdür :) Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!