Webárna - RSS odběr <p>Zápisník o věcech webových zapisuje <a href="http://langi.cz">Peter Láng</a></p> <!-- by Texy2! --> http://www.langi.cz/webarna/ Git od úplného začátku - důležité zdroje Mon, 12 Dec 2011 23:00:00 GMT http://www.langi.cz/webarna/git-od-uplneho-zacatku-dulezite-zdroje <p><a href="http://git-scm.com/">Git</a> – distribuovaný systém pro správu verzí – rozhodně není žádnou novinkou. Přesto potkávám poměrně dost lidí, kteří o něm téměř nic nevědí a zatím neměli příležitost nebo důvod o něm uvažovat, nebo rovnou nasadit do praxe. Pár z nich se rozhodlo Git zkusit a (také) pro ně jsem se pokusil sestavit seznam důležitých odkazů.</p> <h3><a href="http://www.slideshare.net/karmi/verzovani-kodu-s-gitem-karel-minarik">http://www.slideshare.net/…arel-minarik</a></h3> <p>Slajdy od Karla Minaříka. Ideální pro úvodní seznámení, bohaté na (i poměrně hloubkové) informace, rozhodně doporučuji.</p> <h3><a href="http://www.spheredev.org/wiki/Git_for_the_lazy">http://www.spheredev.org/…for_the_lazy</a></h3> <p>Git wiki pro lenochy, cílová skupina široká. Stručný a přehledný souhrn toho, co potřebujete od prvního impulsu k prvnímu projektu verzovanému gitem.</p> <p>S tímto zdrojem se mírně rozcházím v instalaci gitu na windows, zatímco odkazovaný na to jde přes konzoli, mě připadá jednodušší na windows nainstalovat Git-1.7.8-preview20111206.exe z <a href="http://code.google.com/p/msysgit/downloads/list?can=3">http://code.google.com/…wnloads/list?…</a>.</p> <h3><a href="http://git.or.cz/course/svn.html">http://git.or.cz/course/svn.html</a></h3> <p>Pro ty, kteří přecházejí z SVN, nebo třeba jen chtějí vidět rychlé srovnání příkazů.</p> <h3><a href="http://gitref.org/">http://gitref.org/</a></h3> <p>Pěkná a stručná příručka.</p> <h3><a href="http://progit.org/book/">http://progit.org/book/</a></h3> <p>Kniha zdarma pro zájemce o hlubší a širší porozumění. Chcete-li aspirovat na titul git-ninja.</p> <hr /> <p>Uvedené zdroje myslím pro začátečníka úplně stačí, mojí snahou bylo vybrat zdroje, které učedníka nezahltí balastem a dají mu určitý přehled a možnost hned experimentovat.</p> <p>Pokud jsem na něco zapomněl, do komentářů s tím.</p> http://www.langi.cz/webarna/git-od-uplneho-zacatku-dulezite-zdroje Readme Driven Development Wed, 14 Sep 2011 12:22:13 GMT http://www.langi.cz/webarna/readme-driven-development <p><a href="http://tom.preston-werner.com/2010/08/23/readme-driven-development.html">Readme Driven Development</a> v podstatě říká, že první věc, kterou byste na začátku jakéhokoliv projektu měli udělat, je sepsat si k němu README. Dřív než cokoliv jiného, než první příkaz v kódu, nebo testu, prostě úplně nejdřív. Tenhle postup může mít hodně výhod, doporučuju přečíst <a href="http://tom.preston-werner.com/2010/08/23/readme-driven-development.html">celý článek</a>.</p> <p>Stává se totiž, že vývojáře přepadne prostá myšlenka „udělám bookmarkovací službu“ a už přemýšlí nad kódem, jaké knihovny použije a tak dále. Kdyby si předtím napsal kvalitní README, donutilo by ho to přemýšlet například nad tím, jestli a jak bude zrovna ta jeho bookmarkovací služba jiná než stovky dalších.</p> <p>Když si napíšu (třeba) do README co aplikace má dělat a jak to má dělat, mám hned na začátku něco, nad čím můžu dumat, nezapomenu to, můžu to s někým konzultovat, můžu dokonce představu upravovat, aniž bych musel draze přeprogramovávat. Mám <em>todo list</em> podle kterého můžu postupovat – a to s lepší šancí, že se mi funkce aplikace nekontrolovaně nerozlezou někam mimo hlavní záměr aplikace.</p> <p>Readme Driven Development vidím jako nezbytný doplněk ostatních <em>Driven Developmentů</em> a to hlavně proto, že na rozdíl od nich ukazuje <strong>co</strong> je potřeba vyvíjet a ne to <strong>jak</strong> se bude vyvíjet.</p> http://www.langi.cz/webarna/readme-driven-development S čím si hraju - Fórum s CouchDB Thu, 08 Sep 2011 19:56:42 GMT http://www.langi.cz/webarna/s-cim-si-hraju-forum-s-couchdb <p>Open source a placených fór je strašná spousta a všechny jsou na jedno brdo. Myslím, že je na nich hodně co napravovat. Namátkou ovládání, použitelnost, funkčnost, koncept. Když jsem naposled viděl administraci phpBB, nestačil jsem se divit. Kdokoliv udělá <strong>nové fórum s kvalitním UI</strong>, bude podle mě mít „úspěch“ a „zásluhy“. Bude to ten, kdo z kabiny raketoplánu dokáže udělat joystick (nebo spíš iPhone?).</p> <p>Takže jsem se do toho taky z hecu pustil. Měl jsem, a stále mám, tři hlavní cíle – pocvičit se s <a href="http://couchdb.apache.org/">CouchDB</a>, udělat ovládání kterému porozumí BBU (Běžná Babička Uživatelka) a zajistit vysokou rychlost, která s přibývajícími záznamy v databázi nebude klesat. Mám na mysli dvěstě třista tisíc záznámů a dál.</p> <p>Mám úplně první nástřel a zatím jsem si na tom vyzkoušel dvě věci – CouchDB hosting <a href="https://cloudant.com/">Cloudant</a> (ten je super) a css „framework“ <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap</a> (ten není až tak super).</p> <p>Výsledek je prozatím ten, že <strong>rychlé to fórum tedy není</strong>, protože se připojuje ke vzdálené databázi a to něco stojí. PHP server je v ČR, db server nejspíš v USA – nic dobrého.</p> <p>S tím souvisí další „problém“ – výběr databáze. CouchDB je pořád ve srovnání s MySQL trochu exotika vzhledem k hostování. Pokud bych chtěl, aby to moje fórum někdo používal, připojování ke vzdálené databázi asi nebude to pravé, i když tím na druhou stranu provozovateli fóra odpadají starosti s db serverem.</p> <p>Pořád tedy zvažuji možnost použít klasické MySQL a rychlost zajistit třeba s pomocí <a href="http://www.notorm.com/">NotORM</a>.</p> <p><em>… pokračování příště …</em></p> http://www.langi.cz/webarna/s-cim-si-hraju-forum-s-couchdb Makra v Sublime Text editoru Wed, 07 Sep 2011 22:00:00 GMT http://www.langi.cz/webarna/makra-v-sublime-text-editoru <p>Psát pořád dokola ty stejné příkazy je jednoduše opruz a proto existují makra. Do makra si uložíte nějakou sekvenci a klávesovou zkratkou potom takovou sekvenci vyvoláte bez nutnosti ji psát.</p> <p>Příklad – v nette dost často používám třeba <code>NDebug::dump();</code> a psát to pořád dokola je na hlavu. V novém nette je myslím ten příkaz ještě delší. Takže si v Sublime Text editoru uděláme makro.</p> <p>Nahrávání krátkodobého makra, co nepřežije zavření editoru, se spustí klávesami <code>ctrl+q</code> → normálně píšete svůj příkaz → a zastavíte <code>ctrl+q</code>. Vkládáte potom makro pomocí <code>ctrl+shift+q</code>. To my ale nechceme, my chceme trvalé makro.</p> <p>Takže – vytvořte a otevřete si (na linuxu) soubor</p> <pre>/home/you/.con­fig/sublime-text-2/Packages/User/nde­bugdump.subli­me-macro</pre> <p>a vložte do něj toto</p> <pre>[ { „args“: { „characters“: „ndebug::dump“ }, „command“: „insert“ }, { „args“: { „contents“: „($0)“ }, „command“: „insert_snippet“ }, { „args“: { „by“: „characters“, „forward“: true }, „command“: „move“ }, { „args“: { „characters“: „;“ }, „command“: „insert“ } ]</pre> <p>Posléze otevřete soubor</p> <pre>/home/you/.con­fig/sublime-text-2/Packages/User/De­fault (Linux).sublime-keymap</pre> <p>a vložte do něj toto</p> <pre>[ { „keys“: [„alt+d“], „command“: „run_macro_file“, „args“: {„file“: „Packages/User/nde­bugdump.subli­me-macro“} } ]</pre> <p>Hotovo. alt+d krásně píše NDebug::dump() za nás a my jsme zase o kousek spokojenější, že.</p> <p><strong>Update</strong> o deset minut později: pohodlně prohlížet obsah mé Packages složky, kde se dějí tyhle úpravy můžete <a href="https://github.com/czlang/sublime-text">na githubu</a>.</p> http://www.langi.cz/webarna/makra-v-sublime-text-editoru Zvolte si uživatelské jméno a heslo Tue, 06 Sep 2011 13:15:38 GMT http://www.langi.cz/webarna/zvolte-si-uzivatelske-jmeno-a-heslo <p>Jedním z nejotravnějších <strong>problémů</strong> internetových stránek a aplikací, je <strong>velmi častá nutnost registrace</strong> pod jménem a heslem. Příliš mnoho účtů na příliš mnoha místech snižuje <strong>pohodlnost užívání</strong> pro uživatele a zvyšuje <strong>bezpečnostní riziko</strong> – člověk si pravděpodobněji vymyslí jedno slabé heslo, které použije kde se dá.</p> <p>K heslům a jejich složitosti jsem poměrně nedávno narazil na zajímavý matematický rozbor, který ale nemůžu najít, tak alespoň jeho komiksový výcuc <a href="http://xkcd.com/936/">http://xkcd.com/936/</a>. Zjednodušeně řečeno: heslo „kytara s intarziemi“ je <strong>obtížnější na prolomení a daleko lépe zapamatovatelné</strong>, než třeba „XjžzH54a“. Zdá se, že tento přístup k tvorbě hesel by mohl částečně „vyřešit“ problém mnoha účtů na internetu, ale samozřejmě lze jít dál.</p> <h2>Registrace bez vyplňování emailu a hesla</h2> <p><a href="http://www.codinghorror.com/blog/2011/09/cutting-the-gordian-knot-of-web-identity.html">Jeff Atwood</a> (spoluautor <a href="http://stackoverflow.com/">http://stackoverflow.com/</a>) například sní o systému, který by uživatele odstínil od neustálého zadávání jména a hesla. Jak?</p> <ul> <li>stránka vyžadující registraci by obsahovala speciální <code>meta</code> tagy, které by označovaly, že stránka podporuje automatický login</li> <li>váš prohlížeč by podle tohoto tagu rozpoznal, že se má pokusit automaticky vyplnit registrační/přih­lašovací údaje, které by získal z nějakého bezpečného „cloud“ úložiště skrze zabezpečené https. Prohlížeč také vymyslí heslo.</li> <li>uživatel by nejspíš musel vyplnit nějaký druh captcha kontroly</li> </ul> <p>Doporučuji si přečíst <a href="http://www.codinghorror.com/blog/2011/09/cutting-the-gordian-knot-of-web-identity.html">celý článek</a>, ačkoliv si myslím, že Jeff Atwood celý nápad nazývá „svým snem“ celkem oprávněně.</p> http://www.langi.cz/webarna/zvolte-si-uzivatelske-jmeno-a-heslo Problémy s git-flow Sun, 04 Sep 2011 10:39:48 GMT http://www.langi.cz/webarna/problemy-s-git-flow <p><a href="http://scottchacon.com/">Scott Chacon</a> (git evangelista, pracuje v GitHubu) sepsal velmi zajímavý článek o tom, <a href="http://scottchacon.com/2011/08/31/github-flow.html">jakým způsobem v GitHubu pracují s gitem</a>, jaké mají pracovní flow. Protože git umožňuje celou plejádu způsobů jak řídit verzování, vzniká mnoho takzvaných flow a jeden z těch známých, propracovaných a používaných je <a href="http://nvie.com/posts/a-successful-git-branching-model/">git-flow</a></p> <p>V githubu to ale dělají trochu jinak, protože <strong>hodně</strong> často dělají deploy na ostrou aplikaci. Hlavní body tohoto GitHub flow jsou</p> <ul> <li>všechno v master větvi je vždy připraveno na deploy</li> <li>když chcete pracovat na něčem novém, vytvořte si novou větev s popisným názvem vedle master větve</li> <li>komitujte lokálně a a pushujte svou práci do vaší větve na serveru</li> <li>když potřebujete zpětnou vazbu, nebo radu, nebo když si myslíte, že větev je připravena k mergi, otevřete nový pull request</li> <li>potom co někdo jiný zkontroloval a podepsal novou funkčnost, můžete ji včlenit do master větve</li> <li>jakmile je včleněno a pushnuto do master větve, můžete a <em>měli byste</em> udělat okamžitě deploy</li> </ul> <p>GitHub má zhruba 15–20 vývojářů pracujících na jednom projektu a toto flow jim zdá se svědčí.</p> <ul> <li><a href="http://scottchacon.com/2011/08/31/github-flow.html">Issues with git-flow</a></li> <li><a href="http://scottchacon.com/">scottchacon.com</a></li> </ul> http://www.langi.cz/webarna/problemy-s-git-flow Appstorm.net - o webových aplikacích Tue, 30 Aug 2011 21:10:25 GMT http://www.langi.cz/webarna/appstorm-net-o-webovych-aplikacich <p>Mám trochu úchylku na webové aplikace. Nebo je to profesionální deformace, jak chcete. Když na nějakou webovou aplikaci náhodou (!) narazím a líbí se mi, pěkně si uložím odkaz s popiskem a je moje. Koukám jak jsou udělané, přemýšlím co se mi na nich líbí a proč. Co by se z nich dalo využít a kde.</p> <p>Tak mě přirozeně napadlo přetavit tuhle úch…eh zálibu v něco konkrétního. Napadaly mě takové ty klasické nesmysly typu „katalog“ webových aplikací, nebo blog o webových aplikacích a tak podobně. Už jsem ve svém věku přece jen o něco moudřejší než v patnácti a tak nic takového z mé ruky (zatím) nevyšlo.</p> <p>No a dneska jsem objevil <a href="http://web.appstorm.net/">http://web.appstorm.net/</a> což je vlastně blog o webových aplikacích, ha!</p> <p>Hlavní důvod, proč o tom všem píšu, je ale způsob provedení toho blogu. On má takovou vlastnost, která se mi zdá zajímavá a nejspíš by mě nenapadla.</p> <p>O co jde: mají tam rubriku Quick Look, do které si za <strong>poplatek</strong> může kdokoliv poslat svoji webovou aplikaci, kluci a holky z appstorm o ní napíší krátkou představovačku a dají <strong>hlasovat</strong> zda je v publiku zájem o její recenzi.</p> <p>No nezlobte se na mě, ale mě to prostě připadá geniální.</p> <ol> <li>nové webové aplikace se objevují dnes a denně</li> <li>každý chce tu svoji zviditelnit</li> <li>redakce ušetří nějakou tu práci s hledáním aplikací</li> <li>dostanou zaplaceno</li> <li>čtenáři si sami řeknou co je zajímá a co ne</li> </ol> <p>Prostě nápad jsme měli stejný, ale (představu) provedení odlišné.</p> http://www.langi.cz/webarna/appstorm-net-o-webovych-aplikacich Přednastavení syntax highlight v Sublime Text editoru Wed, 17 Aug 2011 11:03:08 GMT http://www.langi.cz/webarna/prednastaveni-syntax-highlight-v-sublime-text-editoru Jak změnit přednastavení zvýraznění syntaxe podle koncovky souborů v Sublime Text editoru. <p>Když třeba používáte <a href="http://lesscss.org/">LESS</a> při psaní stylů, tak soubor ve kterém pracujete má koncovku .less, čili vám ho editor neobarví. Aby <a href="http://www.sublimetext.com/">Sublime</a> obarvoval co chcete, nastavte v:</p> <pre><code>Preferences → Browse Packages… → CSS (složka) → CSS.tmLanguage (soubor)</code></pre> <pre class="xml"><code>&lt;dict&gt; &lt;key&gt;comment&lt;/key&gt; &lt;string&gt;&lt;/string&gt; &lt;key&gt;fileTypes&lt;/ke­y&gt; &lt;array&gt; &lt;string&gt;css&lt;/strin­g&gt; &lt;string&gt;css.er­b&lt;/string&gt; &lt;string&gt;less&lt;/strin­g&gt; &lt;!-- tohle je ta změna → &lt;/array&gt;</code></pre> http://www.langi.cz/webarna/prednastaveni-syntax-highlight-v-sublime-text-editoru Historky z natáčení - CouchDB 3. - PHP knihovny Sun, 14 Aug 2011 16:30:29 GMT http://www.langi.cz/webarna/historky-z-nataceni-couchdb-3-php-knihovny Neladem a neskladem naházené knihovny a třídy pro zpříjemnění práce s CouchDB z PHP. Je-li tedy někdy názoru, že je to třeba. <p>Na <a href="http://wiki.apache.org/couchdb/Getting_started_with_PHP">wiki CouchDB</a> se pro příklad používá jednoduchá sada tříd z rodinky <code>CouchSimple</code> – pro začátek rozhodně postačí.</p> <p>Může to pak vypadat třeba nějak takhle (v Nette)</p> <pre class="php"><code>$options = NEnvironment::get­Config(‚couchdb‘); $resp = $this-&gt;couchdb()-&gt;send(‚GET‘, ‚/‘ . $this-&gt;couchdb()-&gt;db . ‚/_design/foo/_vi­ew/bar?include_doc­s=true&amp;descen­ding=true‘); $doc = json_decode($res­p);$rows = array(); foreach ($doc-&gt;rows as $row){ $rows[] = $row-&gt;doc; }</code></pre> <p>Nějakou dobu jsem takhle vydržel, při připojování k databázi na <a href="https://cloudant.com/">cloudant.com</a> mě to ale zlobilo, takže jsem zkoušel dál a celkem se zadařilo s <a href="https://github.com/jakubkulhan/couchdb-php">českou knihovnou</a> <a href="http://kulhan.info/">Jakuba Kulhana</a>. Potom to může vypadat zase třeba takhle:</p> <pre class="php"><code>$couchdb = CouchDB::open(‚fsoc­k://account.clou­dant.com‘); $db = $couchdb-&gt;db(‚some_data­base‘); $params = array( ‚include_docs‘ =&gt;‚true‘ ); $items = $db-&gt;view(‚some_de­sign‘, ‚some_view‘, $params); if(isset($items-&gt;rows)){ foreach (items-&gt;rows as $item) { echo $item-&gt;doc-&gt;some; } }</code></pre> <p>Komu by stačilo si zjednodušit práci s HTTP, v článku na <a href="http://www.couchbase.com/case-studies/relational-to-couchdb">Couchbase.com</a> se doporučuje <a href="http://pear.php.net/package/HTTP_Request2/docs/2.0.0RC1/HTTP_Request2/HTTP_Request2.html">HTTP_Request2</a> a <a href="http://framework.zend.com/manual/en/zend.http.html">Zend_Http</a>. Současně tam, jistě zkušený, autor podotýká, že zatím nenarazil na PHP knihovnu, kterou by mohl doporučit pro všechny případy a k tomu se přidávám.</p> http://www.langi.cz/webarna/historky-z-nataceni-couchdb-3-php-knihovny Historky z natáčení - CouchDB 2. Fri, 12 Aug 2011 09:07:53 GMT http://www.langi.cz/webarna/historky-z-nataceni-couchdb-2 Může být nevědomost zdrojem dobrých nápadů? Myslím, že určitě, jen nevím jestli je to tenhle případ. <p>Mějme blog s CouchDb databází (například). Chtějme na hlavní stránce blogu zobrazovat počet komentářů u každého článku s tím, že články a komentáře máme v oddělených dokumentech.</p> <p>Jsme u toho, že potřebujeme dělat něco jako JOIN, že? V MySQL denní chléb, v NoSQL trochu špunt v hlavě. Tenhle <a href="http://www.cmlenz.net/archives/2007/10/couchdb-joins">článek</a> perfektně osvětluje, jak třeba udělat „JOIN“ v případě zobrazení článku s komentáři. Ok. Jenže to je případ kdy „taháme“ a zobrazujeme jak článek tak komentáře. Naproti tomu v případě ze začátku článku nechceme „tahat“ ani zobrazovat komentáře. Chceme jen jejich počet.</p> <p>Zkrátím to – nevím jak to udělat. Nevědomost. Ale musím to nějak udělat. A mozek běží…</p> <p>Co takhle udělat další typ dokumentu – meta dokument? Meta dokument, který by uchovával data o článku. Počet zobrazení, počet komentářů atd. Dost pravděpodobně je to nápad blbý a po pravdě řečeno se mi moc nelíbí, ale na druhou stranu, výpočetní výkon je dražší, než úložiště, čili počítat počet komentářů je dražší než ho ukládat.</p> <p>Jenže zase ty vazby a určitá hrozba nekonzistencí a náchylnost k chybám…</p> http://www.langi.cz/webarna/historky-z-nataceni-couchdb-2