Poslední dny jsem hodně věnoval tomu, abych si vybral to nejlepší pro vývoj aplikací v node.js. Zde je seznam technologií, balíčků, nástrojů, které aktuálně používám.
- Před pár dny jsem přešel na linux. Je to především proto, abych měl stejné prostředí, na kterém nám běží aplikace. Mám rád Ubuntu především díky Wubi. To je instalátor pro Windows. Tímto způsobem lze Ubuntu velmi snadno nainstalovat a používat spolu s Windows.
- Jako hosting pro vývoj aplikací používáme Virtual Master. Jedním kliknutím si nainstalujete libovolnou linuxovou distribuci a nastavíte si prostředí podle toho, co chcete používat. U Virtual Masteru jsme asi 4 měsíce a jsme s nimi velmi spokojení.
- Pro hostování aplikací nad node.js velmi doporučuji Heroku. Deployment probíhá přes git a je extrémně jednoduchý. Moc se mi líbí možnost vybrat si přesnou verzi node.js, kterou chci používat + přesné verze balíčků. Vzpomeňte na problémy, které jsou kolem verzí v PHP, kdy na webhostingu upgradnou na novou verzi a vám něco přestane fungovat. Tady se vám to nestane. Když budete chtít novou verzi node, jen v balíčku package.json změníte jeden řádek. Heroku ale doporučuji používat s nosql databázemi, pokud byste chtěli klasickou SQL databázi, tak můžete použít jen PostgreSQL, která je ale velmi drahá. Zajmavý cloud hosting je i DotCloud, kde můžete kromě node.js hostovat i svoje aplikace třeba v PHP.
- Pro správu našich projektů zkoušíme github.com s tarifem pro využití privátních repozitářů. Pracuje se mi s ním zatím dobře. Líbí se mi workflow, které github nabízí.
- Pro plánování a informování ostatních kolegů o novinkách používám nejraději Google dokumenty. Zde si píšu specifikace a různé poznámky. Pokud nyní vyvíjím nějakou aplikaci, vytvořím si dokument projekt changelog a vždy zde v rychlosti napíšu, co se za ten den změnilo. Řešíme tím to, aby ostatní věděli přesně, co nového se na projektu událo, protože z logu to občas vyčíst nejde. Poznámky zvýrazňuji třemi barvami podle důležitosti.
- V případě aplikací pro klienty používáme ActiveCollab. Ze začátku jsem měl k němu velkou averzi, ale dnes už jsem si na něj zvykl. Přesto je tam hodně nepěkných věcí, třeba to, že v podstatě nejde používat hledání.
- Pro správu verzí začínáme pomalu přecházet na Git. Dlouho jsme používali SVN, ale posledních 6 měsíců už nové projekty vyvíjíme pod Gitem. S Gitem jsem velmi spokojený, určitě doporučuji vyzkoušet.
- Jako vývojové prostředí používám NetBeans s pluginem pro podporu CoffeeScriptu. Zkoušel jsem nedávno WebStorm, ale v tomto jsem asi příliš konzervativní a NetBeans se mi líbí více.
- Jako hlavní jazyk pro vývoj jsem začal používat CoffeeScript. CoffeeScript miluji. Nikdy mě žádný jazyk takto nezaujal. Líbí se mi, jak řeší časté programátorské problémy (třeba cykly, viz dokumentace), neřešíte kontexty, líbí se mi klasická dědičnost atd. O CoffeeScriptu bych rád natočil trochu delší screencast.
- Pro jednotkové testování používáme Mochu. Má podporu pro testování skriptů v CoffeeScriptu. Jako rozhraní pro testy používáme BDD přes knihovnu should.js. Velmi důležité je, že Mocha umí exportovat výsledky testů do formátu XML, takže ji lze snadno používat pro continuous integration. O CI napsal v češtině skvělou bakalářskou práci Martin Hujer, najdete zde mnoho užitečných informací. Práci si můžete přečíst zde: http://blog.martinhujer.cz/bp/. Práce se primárně zabývá CI pro PHP, ale na jeho blogu najdete i informace o CI pro JavaScript. Doporučuji.
- Pokud náhodou testy nepíšete, tak rozhodně doporučuji s jednotkovým testováním začít. Líbí se mi způsob práce, kdy třeba několik dní nemusím vůbec js kód spouštět v prohlížeči a spouštím pouze testy. Donutí vás to psát mnohem hezčí kód.
- Pro kontrolu syntaxe CoffeeScriptu lze použít knihovnu CoffeeLint. Jako coding standards používáme pravidla uvedená zde: https://github.com/polarmobile/coffeescript-style-guide.
- Jako framework používám RailwayJS. Mám s ním ty nejlepší zkušenosti. Není sice kdoví jak dobře dokumentovaný, ale přiznám se, že mám mnohem raději přehledné skripty, takže když něco potřebuji vědět, tak se podívám do zdrojáků. Podobný je i Tower.js. Frameworky jsou momentálně velmi diskutované téma v node.js komunitě, za poslední měsíc dva vzniklo velké množství nových frameworků. Líbí se mi, že konečně přestávají kopírovat svět Ruby a jdou vlastní cestou. To je případ např. frameworku Meteor nebo DerbyJS. Nové aplikace na nich ale ještě stavět nechci a raději počkám, jak se budou dále vyvíjet. Další používané balíčky jsem popisoval v minulém článku.
- Pro klientský JavaScript zkouším AngularJS. Velmi se mi líbí řešení DI a jeho dokumentace. Nikdy jsem neviděl tak přehledný JavaScriptový kód. Také ve mně budí důvěru fakt, že je framework od Google.
- Vedle AngularJS dále používáme jQuery, se kterým se AngularJS dá dobře kombinovat. O jQuery není potřeba moc psát, znají ho všichni, tisíce pluginů pro všechny úkony.
- JavaScript obsahuje minimum funkcí, a tak je potřeba používat ještě něco, co nabízí užitečné funkce. Zatím se mi nejvíce líbí underscore.js.
- Jako databázi teď používám MongoDB. Velmi přehledná dokumentace, líbí se mi Online Shell, přes který se rychle naučíte MongoDB používat. Přesto občas narázím na problémy, které jsem u SQL databází neměl, např. jednoduchá věc jako výběr náhodného záznamu z kolekce je docela problém: http://cookbook.mongodb.org/patterns/random-attribute/.
- Pro vyhledávání používám ElasticSearch. Líbí se mi moc přístup přes HTTP. Nevýhoda je, že pro ní neexistuje žádné administrační rozhraní (alespoň jsem nic ve stylu phpMyAdmin nenašel, pokud o něčem víte, napište mi prosím e-mail na jakub.mrozek@gmail.com). Taky by se mi líbilo více příkladů.
- Pro ukládání cache, sessions a pro podobné věci se mi líbí Redis. Je to jednoduchá nosql databáze, která jde trochu za hranici klasické key-value storage a umožňuje pracovat i s různými strukturami.
- Pro monitoring serverů plánujeme používat ServerDensity, zatím s nimi ale žádné zkušenosti nemám. Pokud ale řešíte problém metrik, pak doporučuji tento podcast: http://devops.cz/blog/epizoda-3.