<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>NodeBlog</title>
	<atom:link href="http://weblog.ronnieweb.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://weblog.ronnieweb.net</link>
	<description>Node.js, ExpressJS, nosql, MongoDB, HTML5</description>
	<lastBuildDate>Tue, 01 May 2012 11:04:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Co používám pro vývoj aplikací v node.js</title>
		<link>http://weblog.ronnieweb.net/2012/04/co-pouzivam-pro-vyvoj-aplikaci-v-node-js/</link>
		<comments>http://weblog.ronnieweb.net/2012/04/co-pouzivam-pro-vyvoj-aplikaci-v-node-js/#comments</comments>
		<pubDate>Mon, 30 Apr 2012 20:14:10 +0000</pubDate>
		<dc:creator>Ronnie</dc:creator>
				<category><![CDATA[Node.js]]></category>

		<guid isPermaLink="false">http://weblog.ronnieweb.net/?p=151</guid>
		<description><![CDATA[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í, &#8230; <a href="http://weblog.ronnieweb.net/2012/04/co-pouzivam-pro-vyvoj-aplikaci-v-node-js/">Celý příspěvek <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>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>
<ul>
<li>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 <a href="http://www.ubuntu.cz/ziskejte/stahnout">Wubi</a>. To je instalátor pro Windows. Tímto způsobem lze Ubuntu velmi snadno nainstalovat a používat spolu s Windows.</li>
<li>Jako hosting pro vývoj aplikací používáme <a href="http://www.virtualmaster.cz/cs/">Virtual Master</a>. 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í.</li>
<li>Pro hostování aplikací nad node.js velmi doporučuji <a href="http://www.heroku.com/">Heroku</a>. 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 <a href="http://www.dotcloud.com/">DotCloud,</a> kde můžete kromě node.js hostovat i svoje aplikace třeba v PHP.</li>
<li>Pro správu našich projektů zkoušíme <a href="http://github.com/">github.com</a> 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í.</li>
<li>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.</li>
<li>V případě aplikací pro klienty používáme <a href="http://www.activecollab.com/">ActiveCollab</a>. 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í.</li>
<li>Pro správu verzí začínáme pomalu přecházet na <a href="http://git-scm.com/">Git</a>. 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.</li>
<li>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.</li>
<li>Jako hlavní jazyk pro vývoj jsem začal používat <a href="http://coffeescript.org/">CoffeeScript</a>. 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.</li>
<li>Pro jednotkové testování používáme <a href="http://visionmedia.github.com/mocha/">Mochu</a>. 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: <a href="http://blog.martinhujer.cz/bp/">http://blog.martinhujer.cz/bp/</a>. Práce se primárně zabývá CI pro PHP, ale na jeho blogu najdete i informace o CI pro JavaScript. Doporučuji.</li>
<li>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.</li>
<li>Pro kontrolu syntaxe CoffeeScriptu lze použít knihovnu <a href="http://www.coffeelint.org/">CoffeeLint</a>. Jako coding standards používáme pravidla uvedená zde: <a href="https://github.com/polarmobile/coffeescript-style-guide">https://github.com/polarmobile/coffeescript-style-guide</a>.</li>
<li>Jako framework používám <a href="http://railwayjs.com/">RailwayJS</a>. 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 <a href="http://www.meteor.com/">Meteor</a> nebo <a href="http://www.derbyjs.com/">DerbyJS</a>. 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.</li>
<li>Pro klientský JavaScript zkouším <a href="http://angularjs.org/">AngularJS</a>. 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.</li>
<li>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.</li>
<li>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í  <a href="http://documentcloud.github.com/underscore/">underscore.js</a>.</li>
<li>Jako databázi teď používám <a href="http://www.mongodb.org/">MongoDB</a>. 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: <a href="http://cookbook.mongodb.org/patterns/random-attribute/">http://cookbook.mongodb.org/patterns/random-attribute/</a>.</li>
<li>Pro vyhledávání používám <a href="http://www.elasticsearch.org/">ElasticSearch</a>. 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 <a href="mailto:jakub.mrozek@gmail.com">jakub.mrozek@gmail.com</a>). Taky by se mi líbilo více příkladů.</li>
<li>Pro ukládání cache, sessions a pro podobné věci se mi líbí <a href="http://redis.io/">Redis</a>. 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.</li>
<li>Pro monitoring serverů plánujeme používat <a href="http://www.serverdensity.com/">ServerDensity</a>, zatím s nimi ale žádné zkušenosti nemám. Pokud ale řešíte problém metrik, pak doporučuji tento podcast: <a href="http://devops.cz/blog/epizoda-3">http://devops.cz/blog/epizoda-3</a>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://weblog.ronnieweb.net/2012/04/co-pouzivam-pro-vyvoj-aplikaci-v-node-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Node.js: balíčky, které se vám mohou hodit</title>
		<link>http://weblog.ronnieweb.net/2012/04/node-js-balicky-ktere-se-vam-mohou-hodit/</link>
		<comments>http://weblog.ronnieweb.net/2012/04/node-js-balicky-ktere-se-vam-mohou-hodit/#comments</comments>
		<pubDate>Thu, 05 Apr 2012 21:40:31 +0000</pubDate>
		<dc:creator>Ronnie</dc:creator>
				<category><![CDATA[Node.js]]></category>

		<guid isPermaLink="false">http://weblog.ronnieweb.net/?p=142</guid>
		<description><![CDATA[V následujícím textu uvádím některé zajímavé moduly, které se vám mohou hodit při práci s Node.js. Aktuálně je dostupných něco málo přes 8500 balíčků, zde je můj výběr. Express Pravěpodobně nejpoužívanější framework pro Node.js. Je inspirován Ruby frameworkem Sinatra. Jednoduchá &#8230; <a href="http://weblog.ronnieweb.net/2012/04/node-js-balicky-ktere-se-vam-mohou-hodit/">Celý příspěvek <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>V následujícím textu uvádím některé zajímavé moduly, které se vám mohou hodit při práci s Node.js. Aktuálně je dostupných něco málo přes 8500 balíčků, zde je můj výběr.</p>
<p><a href="http://expressjs.com/">Express</a><br />
Pravěpodobně nejpoužívanější framework pro Node.js. Je inspirován Ruby frameworkem Sinatra. Jednoduchá dokumentace, kterou prostudujete za hodinku.</p>
<p><a href="http://railwayjs.com">RailwayJS</a><br />
MVC framework, který je postaven nad frameworkem Express. I on je inspirován Ruby světem, jedná se o jeden z klonů Ruby on Rails pro Node.js. Charakteristický velmi dynamickým vývojem, témeř při každé návštěvě stránek najdu upozornění na novou vlastnost. Velmi se mi líbí jeho scaffolding, má mnoho užitečných vlastností již v základu, např. Twitter bootstrap, přidávání hashů k souborům pro klientský js (aby se necachovaly) nebo automatickou ochranu proti CSFR. Má mnoho pěkných vlastností, líbí se mi práce s modely, velmi se mi líbí způsob, jakým se pracuje s controllery, také předdefinované prostředí pro testování je výborné. Podpora pro několik databází vč. MySQL. Nevýhodou je málo podrobná dokumentace, budete muset občas nahlédnout do zdrojáků.</p>
<p><a href="http://documentcloud.github.com/underscore/">Underscore</a><br />
Desítky užitečných funkcí pro každodenní práci s JavaScriptem.</p>
<p><a href="http://embeddedjs.com/">EJS</a><br />
Jednoduchý šablonovací systém pro Node.js. Obvykle se spíše preferuje Jade, mně osobně se Jade vůbec nelíbí.</p>
<p><a href="https://github.com/bnoguchi/everyauth">Everyauth</a><br />
Skvělá knihovna pro autentizaci a autorizaci. Poskytuje stejné rozhraní pro přihlášení k desítkám služeb, např. Facebooku, Twitteru, Google, ale umožňuje i klasické přihlášení přes username/password.</p>
<p><a href="https://github.com/caolan/async">Async</a><br />
Velmi zpřehledňuje práci s asynchronními funkcemi v JavaScriptu. Často se stává, že potřebujete zanořit několik příkazů do sebe, přes callbacky to ovšem nevypadá moc hezky. Podobně můžete chtít spustit několik příkazů najednou a vykonat další, jakmile doběhne poslední funkce, nevíte ovšem, která to bude. Tady se vám tento balíček bude velmi hodit.</p>
<p><a href="http://momentjs.com">Moment</a><br />
Výborná knihovna pro práci s časem.</p>
<p><a href="https://github.com/mranney/node_redis">node_redis</a><br />
Pro práci se stejnojmennou databází. Databáze Redis se v Node.js používá velmi často pro cachování a pro session management. Je dostupná snad na všech hostinzích, které nabízejí i Node.js. Vyznačuje se extrémní rychlostí, protože uchovává data v paměti.</p>
<p><a href="http://hiddentao.github.com/squel/">Squel</a><br />
SQL builder. Něco jako Zend_Db_Select, ale pro Node.js.</p>
<p><a href="https://github.com/mikeal/request">Request</a><br />
Práce s HTTP požadavky.</p>
<p><a href="http://socket.io/">Socket.io</a><br />
Práce s HTML5 WebSockets. Umožňuje oboustrannou komunikaci mezi klientem a serverem. Představte si, že děláte chat a potřebujete vědět, zda někdo někomu neposlal nějakou zprávu. Museli byste se neustále dotazovat na server (posílat neustále požadavky), díky socket.io umožňuje server kontaktovat klienta s tím, že přišla nová zpráva.</p>
<p><a href="https://github.com/dannycoates/node-inspector">Node inspector</a><br />
S tím už jste se určitě setkali, killer feature Node.js. Umožňuje používat debugger pro serverový javascript v Google Chrome.</p>
<p><a href="http://visionmedia.github.com/mocha/">Mocha</a>, <a href="http://visionmedia.github.com/expresso/">Expresso</a><br />
Frameworky pro testování.</p>
<p><a href="https://github.com/Marak/node_mailer">node_mailer</a><br />
Jednoduchý balíček pro odesílání mailů.</p>
<p><a href="https://github.com/Ajnasz/GoogleClientLogin">Google ClientLogin</a><br />
Přihlášení k mnoha Google službám.</p>
<p><a href="https://github.com/bevry/docpad">DocPad</a><br />
Výborný nástroj pro vytváření dokumentace projektu.</p>
<p><a href="https://github.com/flatiron/winston">Winston</a><br />
Balíček pro logování.</p>
<p><a href="https://github.com/nodejitsu/forever">Forever</a><br />
Zajišťuje kontinuální běh aplikace na serveru.</p>
<p><a href="https://github.com/remy/nodemon">Nodemon</a><br />
Užitečný nástroj pro vývoj, sleduje změny souborů a pokud někde k změně došlo, restartuje server. Podobných nástrojů je pro Node.js hodně.</p>
<p><a href="https://github.com/lorenwest/node-monitor">node-monitor</a><br />
Monitoring běžící aplikace.</p>
<p><a href="https://github.com/balupton/buildr.npm">Buildr</a><br />
Nástroj pro automatickou kompresi, minifikaci, sloučení a kontrolu JavaScriptu.</p>
<p><a href="https://github.com/isaacs/node-jake">Jake</a>, <a href="https://github.com/cowboy/grunt">Grunt</a><br />
Build nástroje podobné MAKE.</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.ronnieweb.net/2012/04/node-js-balicky-ktere-se-vam-mohou-hodit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Screencast: Node Package Manager</title>
		<link>http://weblog.ronnieweb.net/2012/01/screencast-node-package-manager/</link>
		<comments>http://weblog.ronnieweb.net/2012/01/screencast-node-package-manager/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 13:16:29 +0000</pubDate>
		<dc:creator>Ronnie</dc:creator>
				<category><![CDATA[Nezařazené]]></category>

		<guid isPermaLink="false">http://weblog.ronnieweb.net/?p=107</guid>
		<description><![CDATA[Další screencast se věnuje nástroji NPM, který umožňuje snadno instalovat moduly přes příkazový řádek. Chcete udělat nějakou krásnou aplikaci, která by uměla pracovat třeba s API od GitHub. Jak to uděláte? Pokud váš oblíbený framework zrovna tohle API nepodporuje, vygooglite &#8230; <a href="http://weblog.ronnieweb.net/2012/01/screencast-node-package-manager/">Celý příspěvek <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Další screencast se věnuje nástroji NPM, který umožňuje snadno instalovat moduly přes příkazový řádek.</p>
<p>Chcete udělat nějakou krásnou aplikaci, která by uměla pracovat třeba s API od GitHub. Jak to uděláte? Pokud váš oblíbený framework zrovna tohle API nepodporuje, vygooglite &#8222;github api {váš jazyk}&#8220;, vyberete si některý z výsledků. Projdete si zdrojáky, usoudíte, že tohle by mohlo být to, co hledáte. Super. Zkusíte najít odkaz pro stažení, stáhnete to, zipku rozbalíte, otevřete složku s vaším projektem, překopírujete skripty do vašeho projektu mezi ostatní knihovny. Teď je procházíte a snažíte se přijít na to, jak je zahrnout do vlastního projektu. Narazíte na nějakou konstantu,  přidáte do ní cestu k vlastnímu projektu, spustíte a &#8230; nefunguje. Fatal Error! Chvíli tu hlášku zkoumáte, pak se podíváte do zdrojáků, snažíte se přijít, jak to rozjet &#8230; nakonec usoudíte, že to nemá cenu a podíváte se po dalších knihovnách. Pokud budete mít štěstí, najdete něco, co funguje. Nebo ztratíte nervy a začnete to psát sami.</p>
<p>OK a co tohle? V příkazovém řádku: </p>
<ol>
<li>zadáte npm search xyz API a vyberete si, kterou knihovnu budete chtít,</li>
<li>zadáte npm install {vybraná knihovna},</li>
<li>v projektu v libovoném místě napíšete require({vybraná knihovna}).</li>
</ol>
<p>Tak o tomhle bude dnešní screencast.</p>
<p>Nechcete-li sledovat video, pod screencastem najdete přepis. Pokud by vám nefungovaly příkazy node a npm, na konci článku najdete návod, jak je pro Windows zprovoznit.</p>
<p>    <iframe src="http://player.vimeo.com/video/34893483" width="640" height="480" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></p>
<div>
<div>
<ul>
<li>NPM je správce modulů, přes který si můžete instalovat nové balíčky do aplikace.</li>
<li>Seznam všech dostupných modulů je možné nalézt na <a href="http://search.npmjs.org./">search.npmjs.org.</a> Alternativně je možné použít <a href="http://eirikb.github.com/nipster/">Nipster</a>!, kde lze řadit moduly třeba podle toho, jak jsou moduly sledovány uživateli na Github.com.</li>
<li>Zkusme najít nějaký generátor náhodných čísel, zadáme tedy frázi “rand” a získáte několik knihoven, které umožňují náhodná čísla generovat.</li>
<li>Velmi důležité je verzování, především první číslo. Pokud má balíček jako první číslo 0, znamená to, že ještě není doporučen k produkčnímu nasazení a jeho použití je na vlastní riziko.</li>
<li>Balíčky lze instalovat přes příkazový řádek zadáním příkazu “npm install {jméno balíčku}”, např. “npm install mersenne” nainstaluje generátor náhodných čísel.</li>
<li>Do projektu se pak přidá balíček přes require({jméno balíčku}).</li>
</ul>
<pre><code>
var http = require('http');
var mersenne = require('mersenne');
http.createServer(function (req, res) {
    res.end(mersenne.rand(6).toString());
}).listen(8000);
</code></pre>
<ul>
<li>Zbývá spustit skript přes node hello.js a otevřít v prohlížeči adresu <a href="http://localhost:8000">http://localhost:8000</a>.</li>
</ul>
<ul>
<li>Chcete-li vyhledat nějaký balíček, můžete to udělat přímo přes příkazový řádek přes frázi &#8222;npm search {fráze}&#8220;, např. přes “npm search mvc” najdete všechny MVC frameworky.</li>
<li>Podrobnější informace o balíčku lze získat přes příkaz &#8222;npm info {jméno balíčku}&#8220;, např. &#8222;npm info ejs&#8220; zobrazí podrobné informace o šablonovacím systému EJS, dozvíte se jeho podrobnější popis, poslední verzi, kdo je autorem, balíčky, na kterých závisí vývoj (mocha je testovací framework) atd.</li>
<li>Pokud chcete zobrazit dokumentaci k vybranému balíčku, zadáte příkaz &#8222;npm docs {jméno balíčku}&#8220;, např. &#8222;npm docs mersenne&#8220;. Předtím je ale potřeba nastavit výchozí prohlížeč, příkazem &#8222;npm config set browser firefox&#8220; nastavíte výchozí prohlížeč Firefox. Ten se pak spouští přes příkaz “firefox URL”, takže je potřeba nastavit promměnou prostředí PATH pro daný prohlížeč.</li>
<li>Přes příkaz &#8222;npm list&#8220; je možné zobrazit seznam všech balíčků vč. jejich závislostí na jiných balíčcích.</li>
<li>Pokud chcete zjistit, zda nevyšla již nová verze balíčku, zadáte příkaz &#8222;npm outdated&#8220;, jako volitelný třetí parametr je možné přidat název balíčku, který nás zajímá. Zkusme třeba zjistit, zda mám aktuální framework express: &#8222;npm outdated express&#8220;.</li>
<li>Mnoho dalších užitečných příkazů pro práci s NPM najdete v dokumentaci, pokud jste instalovali node podle předchozího návodu, najdete dokumentaci v C:/Program Files/nodejs/node_modules/npm/html/doc/index.html.</li>
</ul>
</div>
</div>
<p><em>Pokud by se náhodou stalo, že vám příkaz npm nebo node nefunguje, nastavte si v příkazovém řádku proměnnou PATH takto:</em></p>
<pre><code>Pro node: SET PATH=C:\Program Files\Nodejs;%PATH%</code></pre>
<pre><code>Pro npm: SET PATH=C:\Program Files\Nodejs\node_modules\npm\;%PATH% </code></pre>
]]></content:encoded>
			<wfw:commentRss>http://weblog.ronnieweb.net/2012/01/screencast-node-package-manager/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Screencast: První Hello World! s Node.js</title>
		<link>http://weblog.ronnieweb.net/2012/01/screencast-prvni-hello-world-s-node-js/</link>
		<comments>http://weblog.ronnieweb.net/2012/01/screencast-prvni-hello-world-s-node-js/#comments</comments>
		<pubDate>Sun, 08 Jan 2012 15:18:45 +0000</pubDate>
		<dc:creator>Ronnie</dc:creator>
				<category><![CDATA[Nezařazené]]></category>

		<guid isPermaLink="false">http://weblog.ronnieweb.net/?p=87</guid>
		<description><![CDATA[První screencast ukazuje krok po kroku instalaci a vytvoření prvního skriptu Hello World! ve Windows. Je určen těm, kteří s Node.js nikdy nepracovali. Video je dlouhé přibližně 3 a půl minuty. Poznámka: Tutoriál předpokládá znalost JavaScriptu, pokud jste náhodou nikdy &#8230; <a href="http://weblog.ronnieweb.net/2012/01/screencast-prvni-hello-world-s-node-js/">Celý příspěvek <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>První screencast ukazuje krok po kroku instalaci a vytvoření prvního skriptu Hello World! ve Windows. Je určen těm, kteří s Node.js nikdy nepracovali. Video je dlouhé přibližně 3 a půl minuty.</p>
<p><em>Poznámka: Tutoriál předpokládá znalost JavaScriptu, pokud jste náhodou nikdy s JavaScriptem nepracovali, základní informace můžete získat třeba  na webu <a href="http://www.jakpsatweb.cz/javascript/">JakPsátWeb.cz</a>, pokud už s programováním nějaké zkušenosti máte, pak doporučuji výborný <a href="http://www.augi.cz/programovani/javascript-ocima-programatora-v2/">Augiho článek</a>.</em></p>
<p>Pokud zrovna nemůžete sledovat video, pod videem najdete přepis.</p>
<p><iframe src="http://player.vimeo.com/video/34737033" width="640" height="480" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></p>
<p>&nbsp;</p>
<div>
<ul>
<li>Aktuální verzi node.js stáhnete na stránkách nodejs.org. V dřívějších verzích bylo nutné používat Cygwin, nyní je už dostupný klasický instalátor pro Windows.</li>
<li>Node.js se instaluje do složky C:\Program Files\nodejs. Kromě node.js automaticky získáte i Node Package Manager, tedy správce balíčku inspirovaný gem v Ruby.</li>
<li>Pro první projekt si vytvořte adresář C:\www. Do něj pak vytvořte soubor hello.js, který si otevřete třeba v PSPadu.</li>
</ul>
<pre><code>var http = require('http');
http.createServer(function (req, res) {
res.end('Hello World!');
}).listen(8000);
</code></pre>
<ul>
<li>Nejprve je potřeba načíst modul “http” přes příkaz require a aby s ním bylo možné dále pracovat, přiřadíme ho do proměnné http.</li>
<li>V druhé části vytvořím objekt, který reprezentuje server a zavolám na něm metodu listen(), která serveru říká, na jakém portu má server poslouchat.</li>
<li>Dále je potřeba vytvořit anonymní funkci, která přebírá dva parametry req a res. První parametr req je objekt, který reprezentuje požadavek uživatele, tedy to, co uživatel zadal do prohlížeče. Druhý parametr je objekt reprezentující odpověď uživateli, tedy to, co bude odesláno do prohlížeče.</li>
<li>Posledním příkazem pak zavoláme na objektu odpovědi metodu end(), která odešle nějaký text do prohlížeče.</li>
<li>Dále bude potřeba skript spustit. Otevřete si příkazový řádek a přejděte do složky projektu zadáním příkazu “cd C:\www” a program spusťte příkazem node hello.js.</li>
<li>Pak už stačí spustit prohlížeč a zadat adresu <a href="http://localhost:8000/">http://localhost:8000</a> (localhost + port, který byl zadán metodě listen()).</li>
<li>Pokud nechcete zadávat port do URL, můžete do metody listen() nastavit port 80. Pro spuštění je potřeba nejprve server zastavit příkazem CTRL + C a znova spustit. Když teď zadám adresu bez portu, bude vše fungovat. Pokud programujete v PHP, pozor na spuštěný Apache, který pracuje s portem 80, nejprve ho bude potřeba vypnout.</li>
</ul>
<p>Další screencast by měl být o zprovoznění aplikace na Heroku.com a představení frameworku ExpressJS.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://weblog.ronnieweb.net/2012/01/screencast-prvni-hello-world-s-node-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Proč se zajímat o Node.js</title>
		<link>http://weblog.ronnieweb.net/2012/01/proc-nodejs/</link>
		<comments>http://weblog.ronnieweb.net/2012/01/proc-nodejs/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 21:24:16 +0000</pubDate>
		<dc:creator>Ronnie</dc:creator>
				<category><![CDATA[Nezařazené]]></category>
		<category><![CDATA[Node.js]]></category>

		<guid isPermaLink="false">http://weblog.ronnieweb.net/?p=66</guid>
		<description><![CDATA[Node.js je platforma postavená na JavaScript enginu V8, který je používán v Google Chrome. Díky Node.js je možné JavaScript používat i na serveru a stavět aplikace podobně jako třeba v PHP či v Javě. V Česku je pojem Node.js téměř &#8230; <a href="http://weblog.ronnieweb.net/2012/01/proc-nodejs/">Celý příspěvek <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a title="Node.js" href="http://nodejs.org/">Node.js</a> je platforma postavená na JavaScript enginu V8, který je používán v Google Chrome. Díky Node.js je možné JavaScript používat i na serveru a stavět aplikace podobně jako třeba v PHP či v Javě.</p>
<p>V Česku je pojem Node.js téměř neznámý, ve světě se ale jedná o jedno z nejdiskutovanějších témat poslední doby. Na Node.js staví některé aplikace Yahoo, je v něm vytvořena kompletní mobilní verze LinkedIn, část webu GitHub.com je v Node.js, podporován je ze strany Microsoftu v cloud platformě Windows Azure. Přestože je Node.js velmi mladý (před 2 roky ještě neexistoval, aktuální verze je 0.6.6), jsou na něm vystavěny aplikace, které <a href="https://twitter.com/#!/mranney/status/145778414165569536">obsluhují</a> miliony návštěvníků denně.</p>
<p><strong>Proč mě Node.js zaujal?</strong></p>
<ol>
<li>Můžete používat své oblíbené JavaScriptové knihovny i na serveru. Pracuje se vám špatně ve vašem jazyce s XML či HTML? Chcete používat JQuery i na serveru? Žádný problém.</li>
<li>S Node.js se nemusíte učit nový programovací jazyk, používáte pouze JavaScript jak pro tvorbu skriptů na straně klienta, tak na straně serveru. Pokud používáte nosql databázi, např. MongoDb, používáte JavaScript i v příkazech databázi. S daty se v nosql pracuje navíc ve formátu JSON (= JavaScript object notation), JavaScript tedy stačí úplně na všechno.</li>
<li>S JavaScriptem se setkal každý, kdo pracoval někdy s webem. Na webu lze nalézt tisíce kvalitních JavaScriptových knihoven, které nyní můžete používat i na serveru.</li>
<li>V Node.js se JavaScript kompiluje do C++, je tedy velmi rychlý (i když funguje pouze v jednom vláknu).</li>
<li>Node.js podporuje asynchronní architekturu, umožňuje spouštět více operací najednou. Pokud např. v PHP chcete zpracovat tři příkazy v jednom skriptu a každý z nich zabere 2 vteřiny, celý skript nedoběhne dříve než za 6 vteřin. V Node.js lze spustit všechny 3 příkazy najednou.</li>
<li>Node.js lze velmi snadno nainstalovat i ve Windows. Dříve bylo nutné používat Cygwin, nyní je už dostupný klasický Windows instalátor. Jedním kliknutím nainstalujete vše, co potřebujete.</li>
<li>V Node.js je NPM (Node Package Manager), což je balíčkovací systém podobný gems v Ruby. Když chcete přidat novou knihovnu, děláte to podobně jako v Linuxu. Stačí zadat např. npm install express a nainstaluje se vám ExpressJS framework vč. všech závislostí. Uvnitř skriptu pak  stačí knihovnu načíst přes příkaz require(&#8222;express&#8220;), nic víc. NPM sám stáhne všechny další knihovny, které třeba zmíněný ExpressJS potřebuje. Všechny knihovny jsou dostupné zde: <a href="http://search.npmjs.org/">http://search.npmjs.org/</a>.</li>
<li>Kolem Node.js vzniká velká komunita. Před rokem bylo k dispozici 2 tis. knihoven, v listopadu jich bylo již 5 tisíc, dnes je jich více než 6 tis. Najdete mnoho frameworků, ORM, cokoliv potřebujete si stáhnete přes NPM. Existují různé stránky, kde lze najít knihovny podle kvality (kolik lidí je sleduje/používá).</li>
<li>Pro psaní knihovny existují jednotné konvence. Všechny je najdete na GitHub.com, mají jednotnou strukturu, všechny jsou otestované (vydat veřejně nějakou knihovnu bez testů je ostuda).</li>
<li>Knihovny v jádru Node.js mají jasné konvence pro pojmenování i pořadí parametrů. Nestane se vám, že jedna metoda používá podtržítka a jiná cammelcase. Node.js má už v jádru knihovny pro jednotkové testování či debugování.</li>
<li>Téměř všechny knihovny Node.js jsou napsány v JavaScriptu, v C++ jsou napsány pouze skripty, které umožňují pracovat s OS asynchronním způsobem. Chcete-li tedy vědět, jak něco funguje, podíváte se přímo do zdrojáků Node.js na Github.com a stačí vám znalost JavaScriptu.</li>
</ol>
<p>Máte-li nějaké připomínky, piště prosím na jakub.mrozek@gmail.com.</p>
<p>Připravuji první screencast, klasickou Hello World aplikaci. Stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.ronnieweb.net/2012/01/proc-nodejs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

