<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.2" -->
<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/"
	>

<channel>
	<title>Vlastův blog</title>
	<link>http://vavru.cz</link>
	<description>blog o programování a jiných příjemných věcech</description>
	<pubDate>Sun, 24 Jan 2010 07:01:41 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.2</generator>
	<language>en</language>
			<item>
		<title>Co teď dělám</title>
		<link>http://vavru.cz/ostatni/co-ted-delam/</link>
		<comments>http://vavru.cz/ostatni/co-ted-delam/#komentare</comments>
		<pubDate>Mon, 18 Jan 2010 10:22:33 +0000</pubDate>
		<dc:creator>Vlasta</dc:creator>
		
	<category>Ostatní</category>
		<guid isPermaLink="false">http://vavru.cz/ostatni/co-ted-delam/</guid>
		<description><![CDATA[
<!-- generated by Texy! -->]]></description>
			<content:encoded><![CDATA[
<p>V&#160;tomto postu bych chtěl sdělit pár aktualit o&#160;mně. Vysvětlit,
proč zde nic nepřibývá atd.</p>

<p>Tento blog je hlavně o&#160;programování a k&#160;tomuto tématu už
nemám dlouho co nového napsat. Poslední 2&#160;roky věnuju většinu svého
volného času svým firmám Maternia a ItPlace. Už se nepovažuju za
programátora, ale současně nenalézám dost přesný výraz pro to, co
právě dělám.</p>

<p>Kde mě můžete sledovat:</p>

<ul>
	<li><a href="http://twitter.com/vavru">twitter.com/vavru</a></li>

	<li><a href="http://www.maternia.cz">www.maternia.cz</a> &#8211; firemní blog
	Maternia</li>

	<li><a href="http://twitter.com/maternia">twitter.com/ma&#173;ternia</a> &#8211;
	Maternia na Twitteru</li>

	<li><a href="http://www.facebook.com/pages/Maternia/245485232180">Maternia na
	Facebooku</a></li>

	<li><a href="http://www.itplace.cz">www.itplace.cz</a> &#8211; firemní stránky
	ItPlace</li>

	<li><a href="http://blog.itplace.cz">blog.itplace.cz</a> &#8211; firemní blog
	ItPlace</li>

	<li><a href="http://twitter.com/itplace">twitter.com/it&#173;place</a> &#8211;
	ItPlace na Twitteru</li>
</ul>

<!-- generated by Texy! -->]]></content:encoded>
			<wfw:commentRSS>http://vavru.cz/ostatni/co-ted-delam/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Čočkovník.cz - nový eshop na barevné kontaktní čočky</title>
		<link>http://vavru.cz/ostatni/cockovnikcz-novy-eshop-na-barevne-kontaktni-cocky/</link>
		<comments>http://vavru.cz/ostatni/cockovnikcz-novy-eshop-na-barevne-kontaktni-cocky/#komentare</comments>
		<pubDate>Wed, 12 Aug 2009 23:09:19 +0000</pubDate>
		<dc:creator>Vlasta</dc:creator>
		
	<category>Ostatní</category>
		<guid isPermaLink="false">http://vavru.cz/www-stranky-obecne/cockovnikcz-novy-eshop-na-barevne-kontaktni-cocky/</guid>
		<description><![CDATA[
<!-- generated by Texy! -->]]></description>
			<content:encoded><![CDATA[
<p>V&#160;únoru 2008&#160;jsem psal o&#160;tom <a
href="http://vavru.cz/ostatni/jak-jsme-rozjeli-vase-kontaktni-cockycz/">jak jsme
rozjeli VašeČočky.cz</a>. Rok nato jsme spustili internetový obchod
i&#160;na <a href="http://www.vasesosovky.sk">Slovensku</a>.</p>

<p>Dnes jsme spustili nový eshop <a
href="http://www.cockovnik.cz">Čočkovník.cz</a>. První internetový obchod
věnovaný výhradně prodeji barevných kontaktních čoček.</p>

<p style="text-align:center"><img id="image104"
src="http://vavru.cz/wp-content/uploads/2009/08/cockovnik-cz.jpg"
alt="Čočkovník.cz" /></p>

<p>Chtěli jsme zvolit zcela <strong>netradiční způsob prodeje barevných
čoček</strong>. Podřídili jsme strukturu katalogu barevným čočkám.
Zobrazujeme na jedné stránce produkty ze stejné &#8222;rodiny&#8220;.
Například <a href="http://www.cockovnik.cz/soflens-natural-colors">Soflens
natural colors</a>, které se na tradičních eshopech nalézají na
4&#160;různých stránkách pro 4&#160;existující varianty produktu.</p>

<h3>Problém při nákupu barevných čoček přes internet</h3>

<p>Je to podobné jako s&#160;parfémy. Nemůžete si k&#160;nim přes internet
přivonět. U&#160;barevných kontaktních čoček zase <strong>výsledný efekt
závisí velmi na původní barvě oka</strong>. Tento problém se snažíme
eliminovat. Čočkovník.cz obsahuje <a
href="http://www.cockovnik.cz/fotky">katalog fotek</a>, které jsou nahrané
samotnými nositeli barevných čoček, a obsahují <strong>jedno oko
s&#160;nasazenou čočkou a druhé bez čočky</strong>.</p>

<p>Fotky lze prohledávat. Můžete zadat <strong>požadovanou barvu
oka</strong> a nepovinně přirozenou barvu oka. Chcete změnit barvu oka
například hnědé na modrou? Zadejte požadovanou modrou barvu a přirozenou
hnědou barvu do oka a dostanete <a
href="http://www.cockovnik.cz/fotky?requiredColor=2&amp;currentColor=1&amp;x=21&amp;y=12">výsledky</a>.</p>
Co říkáte na tuto proměnu?
<p style="text-align:center"><a
href="http://www.cockovnik.cz/fotky/50-freshlook-colors-sapphire-blue"><img
src="http://www.cockovnik.cz/upload/photos/customized/photo-50-290.jpg" /></a>
<br />Na obrázku vidíte čočku <a
href="http://www.cockovnik.cz/freshlook-colors/sapphire-blue&lt;/p&gt;">FreshLook
Colors / Sapphire blue</a></p>

<p>Hodnotu galerie fotku bude do budoucna tvořit množství a kvalita
obsažených fotografií. Nahrávání fotek se snažíme motivovat slevou,
kterou nahrávající dostane na přístí nákup a také propojením
s&#160;Facebookem. Umožňujeme se pomocí něj přihlásit, a tak odpadá
potřeba pamatovat si nové přihlašovací údaje.</p>

<p>Další integrace s&#160;Facebookem má formu automatického exportu
schválených fotek do <a
href="http://www.facebook.com/pages/Nova-Bystrice-Czech-Republic/okovnikcz/220970240084">galerie</a>.
Podobně automaticky funguje export na <a
href="http://www.flickr.com/photos/cockovnik/">Flickr</a>.</p>

<p>Za realizací <a href="http://www.cockovnik.cz">Čočkovník.cz</a> stojí
moje firma <a href="http://www.itplace.cz">ITPlace</a>, pro kterou to byla jedna
z&#160;prvních zakázek pro českého zákazníka. Velký dík patří mému
společníku Janu Šmukovi, který svými znalostmi API Facebooku a Flickru
velmi přispěl k&#160;rychlému dokončení projektu a bezvadné
funkčnosti.</p>

<h4>Závěr</h4>

<p>Až čas ukáže, zda bude <a
href="http://www.cockovnik.cz">Čočkovník.cz</a> úspěšný. Byl to nápad,
který jsme nosili v&#160;hlavě skoro rok a celý náš tým je velmi rád, že
jsme jej dotáhli do konce.</p>

<!-- generated by Texy! -->]]></content:encoded>
			<wfw:commentRSS>http://vavru.cz/ostatni/cockovnikcz-novy-eshop-na-barevne-kontaktni-cocky/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Co se mi nelíbí na zbožových vyhledavačích</title>
		<link>http://vavru.cz/ostatni/co-se-mi-nelibi-na-zbozovych-vyhledavacich/</link>
		<comments>http://vavru.cz/ostatni/co-se-mi-nelibi-na-zbozovych-vyhledavacich/#komentare</comments>
		<pubDate>Sun, 02 Aug 2009 18:31:33 +0000</pubDate>
		<dc:creator>Vlasta</dc:creator>
		
	<category>Ostatní</category>
		<guid isPermaLink="false">http://vavru.cz/ostatni/co-se-mi-nelibi-na-zbozovych-vyhledavacich/</guid>
		<description><![CDATA[
<!-- generated by Texy! -->]]></description>
			<content:encoded><![CDATA[
<blockquote>
	<p>Význam zbožových vyhledavačů narůstá. Pro některé eshopy znamenají
	až 30% návštěv.</p>
</blockquote>

<p>Tak tuhle větu jsem nedávno četl v&#160;<a
href="http://www.lupa.cz/tiskove-zpravy/centralway-holding-vstupuje-do-hledejceny-cz/">tiskové
zprávě</a> vydané u&#160;příležitosti vstupu investiční společnosti
Centralway do zbožového vyhledavače HledejCeny.cz.</p>

<p>Prohlášení nevěřím. Uvedených 30% může mít eshop, pro který je
registrace feedu na HledejCeny.cz jedinou marketingovou aktivitou.</p>

<p>Já se jako majitel <a href="http://www.vasecocky.cz">eshopu</a>
o&#160;zbožové vyhledavače aktivně zajímám více než rok a půl. Hodně
času jsme např. věnovali optimalizaci feedu pro některé z&#160;nich.</p>

<p>V&#160;tomto článku bych chtěl napsat, co se mi na zbožových
vyhledavačích nelíbí. A&#160;HledejCeny.cz jsou jejich krásným
příkladem:</p>

<ul>
	<li>všechny stránky včetně titulní obsahují obrovské množství reklamy
	(strip v&#160;hlavičče, hlavní menu &#8211; letenky affil, celý pravý
	sloupec je jedna velká reklama)</li>

	<li>nesrozumitelné výrazy (dokáže někdo vysvětlit větu:
	&#8222;V&#160;katalogu je zařazených 110&#160;654 produktů v&#160;1&#160;305
	kategoriích. Celkem prohledáváme 4&#160;452&#160;319 výrobků.&#8220;)</li>

	<li>v&#160;URL, nadpisech, titulcích, v&#160;textu stránky kralují slova
	&#8222;levně&#8220;, &#8222;nejlevnější&#8220;. Čím víc, tím líp.</li>

	<li>řazení eshopů ve vyhledávání je zásadně podle ceny &#8211;
	nejlevnější nahoře. Nebo si lze přední pozice koupit. Lepším příkladem
	je Heureka.cz &#8211; dává obchody zapojené do služby <a
	href="http://overeno.heureka.cz">Ověřeno zákazníky</a> na přední pozice.
	Ovšem už nezáleží na tom, jakých výsledků obchod dosahuje. Takže
	i&#160;obchod, který 80% výrobků nedodá do 10&#160;dnů, bude ve
	výsledcích vyhledávání před obchodem, který do služby zapojen není, ale
	je mnohem kvalitnější</li>

	<li>nepřehledné výsledky vyhledávání (zkuste si na HledejCeny.cz vyhledat
	<a
	href="http://vyhledavani-zbozi.hledejceny.cz/?search=nokia+6500&amp;submit.x=0&amp;submit.y=0&amp;submit=hledej">Nokia
	6500</a></li>

	<li>mohl bych pokračovat ještě dlouho</li>
</ul>

<p>Abych to shrnul &#8211; zdá se mi, že tyhle zbožové vyhledavače je jeden
velký stroj na generování příjmů z&#160;reklamy. Nevidím tady skoro
žádnou přidanou hodnotu pro zákazníka. Princip fungování je
triviální:</p>

<ul>
	<li>zpracuje se XML export zboží (aby se to nepletlo, tak každý zbožový
	vyhledavač má svůj unikátní formát)</li>

	<li>spáruje se zboží z&#160;jednotlivých eshopů (aby se mohla porovnávat
	ceny)</li>

	<li>zboží se zařadí do kategorie</li>
</ul>

<h3>Proč se mi nelíbí řazení podle ceny?</h3>

<ul>
	<li>opravdu znamená levnější = lepší? Dnes má spousta internetových
	&#8222;obchodníků&#8220; jedinou strategii &#8211; být za každou cenu
	levnější než konkurence. Velmi často má takové podnikání krátké
	trvání. Je zřejmé, že jedinou konkurenční výhodou cena být
	nemůže.</li>

	<li>mají tyto nejlevnější eshopy zboží skladem?</li>

	<li>komunikuje se zákazníkem někdo? (nebo se jedná o&#160;garážovou
	firmičku)</li>

	<li>jak je to při vyřizování reklamací?</li>

	<li>často je detektivka zjistit provozovatele těchto eshopů. Pokud už se na
	webu nachází stránka &#8222;Kontakt&#8220;, obsahuje pouze formulář.</li>

	<li>opět bych mohl pokračovat&#8230;</li>
</ul>

<h3>Co se mi líbí?</h3>

<p><a href="http://www.zbozi.cz">Zboží.cz</a> je největší zbožový
vyhledavač v&#160;ČR. Líbí se mi, že je to web opravdu jednoduchý.
Žádné kategorie, stránka eshopu propojena s&#160;Firmy.cz. Řazení podle
relevance. A&#160;nikoliv defaultně podle ceny.</p>

<p><a href="http://www.heureka.cz">Heureka.cz</a> má velmi přehledné
stránky. Služba &#8222;Ověřeno zákazníky&#8220; může být pro eshopy
velmi užitečná &#8211; využívá názory skutečných zákazníků.
Přidanou hodnotou jsou též články, které radí návštěvníkům podle
čeho vybírat. V&#160;tomto se Heureka liší od Zboží.cz, kam chodí lidé,
kteří již přesně vědí, jaký výrobek chtějí koupit. Heureka pomáhá
lidem i&#160;ve výběru zboží.</p>

<h3>Řazení eshopů podle kvality</h3>

<p>Jako zákazníkovi (i&#160;jako majiteli eshopu) by se mi líbilo, kdyby
existoval zbožový vyhledavač, který by <strong>řadil eshopy podle
kvality</strong>. No jo&#8230;ale jak objektivně hodnotit kvalitu eshopu?
Záleží přece na všem:</p>

<ul>
	<li>cena</li>

	<li>přehlednost stránek</li>

	<li>informace o&#160;zboží</li>

	<li>služby (možnosti platby, kamenná výdejní místa, zelená linka,
	kvalifikovaný poradce, skladovost zboží&#8230;)</li>
</ul>

<p>Dlouho jsem nad tím přemýšlel a došel jsem k&#160;názoru, že
<strong>skvělým parametrem, který vypovídá o&#160;kvalitě eshopu, je jeho
konverzní poměr</strong>. Mluvím o&#160;konverzním poměru návštěvníků,
kteří přišli přes daný zbožový vyhlevač. Tím by nebyly zvýhodněny
již zavedené eshopy. Také bychom krásně smetli pod koberec tu zatracenou
cenu :). Protože když je eshop kvalitní, zákazníkovi nevadí si připlatit
(za jistotu, za služby&#8230;).</p>

<p>Technicky je toto řešení celkem snadné. Postačí, když si eshop vloží
do zdrojového kódu stránek javascriptový kód na měření návštěv a
konverzí pro zbožový vyhledavač. Takto funguje oblíbený Google
Analytics.</p>

<h4>Závěr</h4>

<p>Moc by mě zajímalo, co si o&#160;mém názoru myslíte. Zajímá mě názor
jak provozovatelů eshopů, tak ostatních jako nakupujících. Vyjádřete se
v&#160;diskusi pod článkem.</p>

<!-- generated by Texy! -->]]></content:encoded>
			<wfw:commentRSS>http://vavru.cz/ostatni/co-se-mi-nelibi-na-zbozovych-vyhledavacich/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Jaká byla diskuse o MVC?</title>
		<link>http://vavru.cz/ostatni/jaka-byla-diskuse-o-mvc/</link>
		<comments>http://vavru.cz/ostatni/jaka-byla-diskuse-o-mvc/#komentare</comments>
		<pubDate>Thu, 04 Jun 2009 23:35:31 +0000</pubDate>
		<dc:creator>Vlasta</dc:creator>
		
	<category>Ostatní</category>
		<guid isPermaLink="false">http://vavru.cz/ostatni/jaka-byla-diskuse-o-mvc/</guid>
		<description><![CDATA[
<!-- generated by Texy! -->]]></description>
			<content:encoded><![CDATA[
<p>Ve středu 3. června 2009&#160;jsem se zúčastnil akce s&#160;názvem <a
href="http://jirava.net/blog/Archive/asp-net-mvc-best-practices-pozvanka.aspx">asp.net
MVC Best practices</a>. Akce se konala na půdě Microsoftu v&#160;BB centru a
bylo na ní pozváno dost známých jmen z&#160;oboru. To slibovalo kvalitní
diskusi.</p>

<p>Několik účastníků už napsalo svoje shrnutí na blog:</p>

<ul>
	<li><a href="http://www.borber.com/blog/z-diskuse-o-mvc">Borek Bernard</a></li>

	<li><a
	href="http://vbnet.cz/blog-clanek--264-diskuse_o_mvc_a_muj_nazor_na_nej.aspx">Tomáš
	Herceg</a></li>

	<li><a
	href="http://jirava.net/blog/Archive/asp-net-mvc-best-practices-shrnuti.aspx">Jarda
	Jirava</a></li>
</ul>

<p>Trošku obdivuju jakou mají paměť. Moje shrnutí bude o&#160;hodně
stručnější.</p>

<p>Na začátku organizátor Jarda Jirava promluvil o&#160;důvodech pro
konání setkání a vytvořil hello world aplikaci v&#160;asp.Net MVC.
Následovalo představení reallife aplikace od <a
href="http://www.rarous.net/">Aleše Roubíčka</a>.</p>

<p>Dá se říct, že mě na asp.Net MVC nic nepřekvapilo. Použité standardy
v&#160;názvosloví například jsou téměř totožné se Zend Frameworkem a
dalšími rozšířenými MVC frameworky. Pěkná je podpora asp.Net MVC ve
Visual Studiu.</p>

<p>Pak následovala diskuse, kde jsme se pokusili vysvětlit pojem MVC jeho
chápání. Mluvilo se o&#160;odpovědnostech jednotlivých částí MVC
architektury. Padla řeč na <a href="https://www.hibernate.org/43.html">Open
Session In View Pattern</a>.</p>

<p>Zajímavé bylo porovnání nejrůznějších programátorských světů
&#8211; pokud si dobře pamatuju bylo zastoupeno asp.Net, PHP, Java, Ruby a
Django.</p>

<p>O&#160;Djangu mluvil <a href="http://djangopeople.net/king/">Honza Král</a>.
Mluvil o&#160;MVT patternu frameworku a jeho výhodách. Bavil se konkrétním
CMS postaveným nad Djangem a jeho použití. Prozradil, že mají
1&#160;jádro, na kterém běží 9&#160;různých webů. Liší se pouze
konfigurace. Tady podle mého Honza trochu zaměnil téma diskuse. Nelze
porovnávat obecný MVC pattern s&#160;určitým CMS postaveným na djangu.</p>

<p>Cenné komentáře měl &#8222;Karel Minařík&#8220;. Mluvil o&#160;MVC
patternu v&#160;Ruby on Rails. Zejména o&#160;častých chybách
začátečníků, kdy dávají byznys logiku do controlleru.</p>

<p><a href="http://nettephp.com/cs/">David Grudl</a> poznamenal, že v&#160;MVC
frameworku má to C (controller) spíše roli presenteru &#8211; objektu, který
předává data view. Další pěkná myšlenka od něj &#8211; <em>Kód je
pěkný, když je toho na všech vrstvách tak akorát. Nic nejde vyhodit.
A&#160;když další refaktoring už nevede k&#160;zlepšení čitelnosti
kódu</em>.</p>

<p>Já bych dodal, že žádný MVC framework si vlastně s&#160;pouhým MVC
patternem nevystačí. Když se nějaký framework ohání zkratkou MVC znamená
to vlastně jenom ten fakt, že je tento návrhových vzor, jako jeden
z&#160;mnoha, při návrhu použit. Když vezmeme takový Zend Framework, tak
tam se to návrhovými vzory hemží na každém kroku. Velmi stručně &#8211;
při vyřizování requestu zafunguje Front controller design pattern, který
vybere správný action controller (v&#160;Davidově terminologii presenter)
&#8211; a tam najdeme onen MVC pattern. Na lifecycle requestu máme navázány
další akce, na které je možno přidat vlastní listenery (další desing
pattern) &#8211; jedná se o&#160;routing a dispatching. Ve view vrstvě jsou to
pak View Helpery.</p>

<p>Omlouvám se za sklouznutí jinam &#8211; jenom jsem chtěl ukázat, že
osamocený MVC není v&#160;reálném světě jediný bojovník v&#160;poli a
vždy součástí celé rodiny použitých patternů.</p>

<p>Líbily se mi obchodnické dotazy <a
href="http://blog.vyvojar.cz/michal/default.aspx">Michala Bláhy</a>.
Například položil dotaz &#8211; <em>Mám firmu s&#160;10ti špičkovými .Net
Forms programátory. Proč bych měl migrovat na asp.Net</em>. Moje odpověď
byla &#8211; nemigrovat. Pokud mám práci pro mých 10&#160;zaběhutých
programátorů nic neměnit.</p>

<p>Také padla otázka <em>Typ webových projektů, pro které se MVC hodí a
pro které nikoliv</em>. Moje odpověď byla, že se MVC frameworky hodí pro
implementaci naprosto každého typu webové aplikace. Z&#160;mého pohledu
neexistují důvody pro to proč nedělat např. v&#160;MVC frameworku
sociální sít a naopak firemní stránky ano.</p>

<p>Hodně se také mluvilo o&#160;testování (domluvilo se, že se někdy
v&#160;budoucnu uskuteční setkání, jehož předmětem bude testování).</p>

<h3>Závěr</h3>

<p>Pro mě bylo setkání určitě přínosné. A&#160;neváhal bych jít na
podobné setkání znovu.</p>

<!-- generated by Texy! -->]]></content:encoded>
			<wfw:commentRSS>http://vavru.cz/ostatni/jaka-byla-diskuse-o-mvc/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Jaká byla Konference Web 2.0?</title>
		<link>http://vavru.cz/ostatni/jaka-byla-konference-web-20/</link>
		<comments>http://vavru.cz/ostatni/jaka-byla-konference-web-20/#komentare</comments>
		<pubDate>Mon, 25 May 2009 10:04:24 +0000</pubDate>
		<dc:creator>Vlasta</dc:creator>
		
	<category>Ostatní</category>
		<guid isPermaLink="false">http://vavru.cz/ostatni/jaka-byla-konference-web-20/</guid>
		<description><![CDATA[
<!-- generated by Texy! -->]]></description>
			<content:encoded><![CDATA[
<p>Ve čtvrtek 21. května 2009&#160;jsem se zúčastnil Konference Web 2.0.
V&#160;tomto články bych chtěl zhodnotit svoje dojmy.</p>

<p>Je několik typů odborných akcí, kterých se účastním. Setkáním <a
href="http://java.cz/detail.do?articleId=2252">CZJUG</a> počínaje a <a
href="http://www.h1.cz/open-monday">Open monday H1</a> konče. Poslední rok se
snad více než programováním zabývám věcmi okolo e-commerce,
internetového marketingu &#8211; všech oblastí, které s&#160;vedením <a
href="http://www.vasecocky.cz/">internetového obchodu</a> souvisí. Proto jsem
po přečtení programu konference ihned využil nabídky <a
href="http://www.abako.cz/blog/">Jiřího Kodery</a> na VIP vstupenku na tuto
akci.</p>

<p>Tolik k&#160;úvodu a nyní bych chtěl popsat dojem z&#160;jednotlivých
přednášek, při kterých jsem si dělal poznámky.</p>

<h3>Dojem z&#160;přednášek</h3>

<h4>Adama Zbiejczuk &#8211; Web 2.0 &#8211; Evoluce nebo chiméra</h4>

<p>Úvod vlažný (také díky problémům s&#160;projektorem), ale pak se to
rozjelo. Přednáška byla skvěle připravená. Nabitá argumenty. Skvěle
zpracovanými modely&#8230;souvis&#173;lostmi. Přednášející mluvil
o&#160;webu, procesech, které se tam odehrávají v&#160;souvislostech, které
mě do té chvíle nenapadly. Asi to bude tím, že v&#160;této oblasti nejsem
žádný profesionál. Zde je několik bodů, které jsem si z&#160;přednášky
odnesl:</p>

<ul>
	<li>Web 2.0&#160;je buzzword, ale současně i&#160;odraz skutečných změn na
	webu</li>

	<li>Web 2.0&#160;lze srovnat s&#160;neuchopitelností tagcloudu, kde jsou
	myšlenky, vlastnosti, produkty atd.</li>

	<li>Procento připojených domácností v&#160;ČR bylo v&#160;roce 2001 6 % a
	v&#160;roce 2008 42 % (v&#160;tom není započten internet na pracovišti)</li>

	<li>Web 2.0&#160;potřebuje ke svému provozu kritickou masu uživatelů,
	rychlé připojení</li>

	<li>celosvětově má internet více jak 1&#160;miliardu uživatelů</li>

	<li>změna komunikačních modelů (komunikace mezi uživateli, service
	providerem a uživatelem oběma směry)</li>

	<li>setření hranice mezi producentem a konzumentem obsahu (samo surfování po
	internetu vlastně tvoří internet)</li>

	<li>individualizace (každý má svůj internet upravený na míru,
	zanecháváme digitální stopu)</li>

	<li>lidé rádi sdílejí, bojovat proti sdílení je jako rozbíjet stroje
	v&#160;18. století</li>

	<li>long tail (např. prodej indických filmů v&#160;USA, nové možnosti
	inzerce)</li>

	<li>reputační systémy (kombinace individualizace a crowssourcingu)</li>

	<li>mash up/remix (kdo zpřístupní mase snadné nástroje na další úpravy
	produktu, pro toho bude masa zadarmo pracovat, pokud to neuděláme, bude to
	masa dělat stejně, akorát z&#160;toho nic mít nebudeme)</li>

	<li>internet jako platforma (software bude spíš SaaS, poplatky budou reálně
	reflektovat míru používání &#8211; např podle času)</li>

	<li>proces automatizace zdrojů (synergie zdrojů a vyhodnocování) je centrem
	moci budoucnosti</li>
</ul>

<h4>Michal Berg, eSports.cz &#8211; Business modely na webu 2.0</h4>

<p>Dobrá přednáška. Bavila mě. Opět tam byly uvedeny některé
skutečnosti pěkně v&#160;kontextu. Přednášející látce rozuměl. Opět
několik bodů:</p>

<ul>
	<li>většina e-commerce řešení modelů na internetu jenom kopíruje modely
	z&#160;reálného světa</li>

	<li>budoucnost e-commerce je pokrývání potřeb z&#160;nižších pater
	Maslowovy pyramidy</li>

	<li>obsah spodních pater Maslowovy pyramidy se mění (např. mobilní telefon
	je nyní ve spodních patrech)</li>

	<li>vydělávat lze na internetu pomocí:
		<ul>
			<li>eshop</li>

			<li>reklamní systémy</li>

			<li>transakce a zprostředkování (aukce, inzeráty, platby)</li>

			<li>prodej digitálního obsahu</li>

			<li>prodej digitálních služeb</li>

			<li>byznys model webových služeb</li>
		</ul>
	</li>

	<li>mobilní služby budoucnosti:
		<ul>
			<li>jott.com &#8211; převod hlasu na text</li>

			<li>ubisafe.com &#8211; virtuální vodítko hlídající pohyb osob, webové
			rozhraní</li>

			<li>serviceguy.org &#8211; kontakt na lokálního řemeslníka (propojení
			virtuálního a reálného světa)</li>

			<li>zocdoc.com &#8211; smluvená návštěvy zubaře, lékaře (lékař platí
			za umístění)</li>
		</ul>
	</li>
</ul>

<h4>Tomáš Vávra, IBM &#8211; Využijte trendů „Web 2.0“ ve prospěch
vašeho businessu!</h4>

<p>Tato přednáška mě nebavila. Pan Vávra je spíše obchodník. Mluvil
obchodní řečí. Ač jsem hodně chtěl, nebyl jsem schopen najít cokoliv, co
by mě zaujalo. Nemám z&#160;této přednášky žádné výpisky. Uvedu tedy
jenom oficiální popis k&#160;přednášce:</p>

<blockquote>
	<p>Dostat stávající aplikace na web a vše jednoduše propojit je nový
	trend, který se souhrnně zjednodušeně označujeme jako „Web 2.0“.
	Ukážeme Vám, jak pomocí stávajících aplikací získáte jednoduše novou
	přidanou hodnotu pro Váš business a jak získat nové zákazníky!</p>
</blockquote>

<h4>Jiří Karpeta, Microsoft &#8211; Web 2.0&#160;realita a budoucnost</h4>

<p>Stejně jako v&#160;případě IBM mě i&#160;přednáška dalšího sponzora
akce Microsoftu příliš nebavila. Zde se ale nedá upřít přednášejícímu
živější a zajímavější prezentaci než v&#160;předchozím případě.
Pár poznámek:</p>

<ul>
	<li>v&#160;případě Web 2.0&#160;není technologie zcela hybatelem (příklad
	&#8211; Outlook Web Access nebyla bomba)</li>

	<li>Web 2.0&#160;funguje protože:
		<ul>
			<li>rychlé připojení</li>

			<li>multimediální obsah</li>

			<li>našel se byznys model</li>

			<li>integrace (Yahoo pipes, MS Popfly)</li>

			<li>jednoduchost (FB, Windows Live, YouTube)</li>

			<li>komunikace (ICQ, Messenger)</li>
		</ul>
	</li>

	<li>používání technologií ve firmě je věcí její kultury</li>
</ul>

<h4>Daniel Kostan, Czech &amp; Slovak Professional Community &#8211; Business
&amp; Social Networking v&#160;regione Ceskej a Slovenskej Republiky</h4>

<p>Slovensky vedená přednáška, která měla obsah, který mě nějak
nedokázal zaujmout. Možná to bylo zaviněno mojí nedostatečnou odborností.
Vypsal jsem si jenom adreasu Czech &amp; Slovak Professional Community &#8211;
<a href="http://www.cspc.cz">www.cspc.cz</a>.</p>

<p>Oficiální popis k&#160;přednášce:</p>

<blockquote>
	<p>Existujuce business a socialne siete u&#160;nas Pozicia LinkedIn a Xing a ich
	vyuzivanie komunitou profesionalov CZ/SK regionu Paralelne aktivity a sprievodne
	programy = vitalita a rast komunity Nahlad do buducnosti.</p>
</blockquote>

<h4>Tomáš Horák, Cisco &#8211; Cisco in Cisco</h4>

<p>Opět přednáška, ze které jsem si mnoho neodnesl. Byly představovány
produkty firmy Cisco. Bohužel na stránkách konference nebyl k&#160;dispozici
ani oficiální popis přednášky.</p>

<h4>Jiří Kodera, Abakowiki &#8211; Správa znalostí ve firmě pomocí webu
2.0</h4>

<p>Velmi dobře připravená přednáška. Autor dobře rozumí dané
problematice. Zde je oficiální popis přednášky:</p>

<blockquote>
	<ul>
		<li>rozlišení &#8222;webu 1.0&#8220; a webu 2.0&#160;z&#160;pohledu firmy</li>

		<li>způsob práce lidí s&#160;informacemi v&#160;době 2.0</li>

		<li>působení long-tailu ve firmě při práci se znalostmi</li>

		<li>působení filtrů při práci se znalostmi</li>

		<li>vliv změny paradigmatu od on-premise k&#160;on-demand řešení</li>

		<li>business přínosy webu 2.0&#160;ve firmách</li>

		<li>dozrávání web 2.0&#160;firemních aplikací a jejich budoucnost</li>
	</ul>
</blockquote>

<h4>Jan Horna, HorMart &#8211; Sociální sítě aneb jak je využít pro vaši
značku</h4>

<p>Krásná přednáška. Pan Horna mluvil jasnou řečí. Mluvil
o&#160;sociálních sítích &#8211; způsoby používání, příklady
z&#160;praxe. V&#160;prezentaci bylo spousta příkladů, grafů. Celé krásně
srozumitelné.</p>

<h4>Jan Kubr, Livispace &#8211; Hlasové aplikace jako nástroj spolutvorby</h4>

<p>Přednáška pana Kubra se mi líbila z&#160;několika důvodů. Jednak
hodně dobře věděl, o&#160;čem mluví. Bylo na něm přímo znát, že dané
problematice rozumí. Dále se mi líbilo, že mluvil o&#160;vlastním produktu
&#8211; hlasových službách, které nabízí pod značkou <a
href="http://www.telfa.cz/">TELFA</a>. S&#160;panem Kubrem jsem mluvil
i&#160;během jedné přestávky a bylo vidět jeho zapálení pro věc a
znalosti. Myslím, že o&#160;jeho firmě zanedloho ještě hodně
uslyšíme.</p>

<p>Zde je oficiální popis přednášky:</p>

<blockquote>
	<p>Záznamy hlasu jsou osobnější než pouhý text a snadněji zaznamenatelné
	než video. Cílem přednášky je ukázat, jak lze využít hlasových
	aplikací pro crowdsourcing obsahu pro komunitní weby, především pak
	politicky zaměřené democracy 2.0&#160;projekty.</p>
</blockquote>

<h4>Petr Ocasek, BENETA.cz &#8211; Využití online videa a jeho přínosy pro
firmy</h4>

<p>Velmi pěkná přednáška doplněná příklady ze života a pěknou
komunikací s&#160;publikem. Beneta se zabývá online videem. Pan Ocásek
např. zmínil, že přišlo několik firem z&#160;ČR a chtělo udělat
&#8222;stejný portál jako YouTube&#8220;. Všem se jim to prý podařilo
rozmluvit :). Líbilo se mi, že pan Ocásek nemluvil o&#160;online videu jako
o&#160;samospáse, ale jako o&#160;médiu, které se nehodí pro všechny a je
vždy velmi důležité posoudit jeho přínos pro naše podnikání.</p>

<p>Zde je oficiální popis přednášky:</p>

<blockquote>
	<ul>
		<li>OV jako prostředek virální kampaně</li>

		<li>OV jako nástroj pro vzdělávání zaměstnanců</li>

		<li>OV jako nástroj pro zvyšování konverzního poměru na eshopu</li>

		<li>OV jako prostředek zvyšování návštěvnosti webu (SEO)</li>

		<li>OV jako nástroj pro snížení marketingových nákladů</li>

		<li>OV a jak na něm vydělat</li>
	</ul>

	<ul>
		<li>příklady a případové studie</li>
	</ul>
</blockquote>

<h3>Co mě nejvíc zaujalo</h3>

<p>Byly to 2&#160;přednášky. První hned ta úvodní od Adama Zbiejczuka
&#8211; Web 2.0 &#8211; Evoluce nebo chiméra. Druhá od Jana Kubra &#8211;
Hlasové aplikace jako nástroj spolutvorby.</p>

<h4>Závěr</h4>

<p>Akce měla hladký průběh. Mně osobně vůbec nevadilo cca 20ti minutové
zpoždění promotéra. Potkal jsem tam několik známých &#8211; Václava
Stoupu, Michaelu Vorlovou z&#160;H1. Organizačně výborně připraveno (sál,
technika, občerstvení, oběd). Ocenil bych jedinou změnu &#8211; více
odborně na úkor obchodně zaměřených přednášek, které mě osobně
vůbec nebavily. Mluvím o&#160;přednáškách sponzorů&#8230;bez kterých to
asi nejde.</p>

<!-- generated by Texy! -->]]></content:encoded>
			<wfw:commentRSS>http://vavru.cz/ostatni/jaka-byla-konference-web-20/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>ITPlace - specialista na java outsourcing - startuje</title>
		<link>http://vavru.cz/ostatni/itplace-specialista-na-java-outsourcing-startuje/</link>
		<comments>http://vavru.cz/ostatni/itplace-specialista-na-java-outsourcing-startuje/#komentare</comments>
		<pubDate>Mon, 27 Apr 2009 20:21:30 +0000</pubDate>
		<dc:creator>Vlasta</dc:creator>
		
	<category>Ostatní</category>
		<guid isPermaLink="false">http://vavru.cz/ostatni/itplace-specialista-na-java-outsourcing-startuje/</guid>
		<description><![CDATA[
<!-- generated by Texy! -->]]></description>
			<content:encoded><![CDATA[
<p>Připadá mi, že se svět kolem mě mění poslední dobou hrozně rychle.
Rok a půl po založení <a href="http://www.maternia.cz/">Maternie</a>
(mimochodem, hledáme obchodního ředitele &#8211; více informací <a
href="mailto:vlastimil@vavru.cz">u&#160;mě</a> na vyžádání) zakládám
další firmu &#8211; <a href="http://www.itplace.cz">ITPlace</a>.</p>

<h3>Proč vznikl ITPlace?</h3>

<p>Na začátku roku 2008&#160;jsem nastoupil do <a
href="http://vavru.cz/ostatni/moving-to-avedya/">Avedye</a>. Pracoval jsem
opravdu na moc zajímavých projektech. Potkal jsem tam dost šikovných lidí.
Ale, jak jistě tušíte, každá pohádka má svůj konec. Avedya se dostala
(také přičiněním finanční krize) do problémů a nastalo propouštění
v&#160;několika vlnách. Skončí to pravděpodobně úplným zrušením celé
firmy v&#160;několika měsících. Česká pobočka končí za dva
měsíce.</p>

<p>V&#160;IT oboru došlo k&#160;propouštění ve spoustě pražských firem.
V&#160;tuto chvíli se na trhu dobré místo hledá hůře. Ale od kolegů,
kteří z&#160;Avedye odešli před několika měsíci, vím, že se nové
místo shání prostě hůř. Naproti tomu pozic pro kontraktory je stále dost
(možná dokonce víc).</p>

<p>Všechny tyto okolnosti vyústily v&#160;nápad založit si vlastní firmu
&#8211; ITPlace. A&#160;poskytovat <strong>java outsourcing</strong>. Firmu jsem
založil společně s&#160;<a href="http://www.linkedin.com/in/hsmuk">Honzou
Šmukem</a>. Honza je vynikající odborník na JEE, zkušený architekt a
scrummaster.</p>

<h3>Proč by mohl ITPlace uspět?</h3>

<ul>
	<li>s&#160;vývojem JEE aplikací máme velké zkušenosti a dokážeme zvolit
	přiměřeně komplexní řešení, které není zbytečně složité (a
	časově náročné) a zároveň vyhovuje požadavkům</li>

	<li>kromě serverside Javy máme letité zkušenosti i&#160;s vývojem view
	vrstvy (HTML, CSS)</li>

	<li>dokážeme klientovi poradit i&#160;s business stránkou věci &#8211;
	poznáme usecasy s&#160;největší přidanou hodnotou</li>

	<li>máme zkušenosti s&#160;provozem vlastní firmy, která se pohybuje na poli
	e-commerce</li>
</ul>

<h4>Závěr</h4>

<p>ITPlace v&#160;současnosti intenzivně hledá klienty. Já věřím tomu,
že teď je ta nejlepší doba pro rozjetí vlastního podnikání v&#160;IT.
Hodně velkých (neefektivně fungujících) molochů krachuje nebo omezuje
svoji činnost. Malá firma s&#160;malými režijními náklady by mohlo být to
pravé.</p>

<p>Od této chvíle budu na tomto blogu zvěřejňovat jenom osobní články
(jako je tento) a odborné na našem firemním blogu &#8211; <a
href="http://blog.itplace.cz">Blog ITPlace</a>.</p>

<!-- generated by Texy! -->]]></content:encoded>
			<wfw:commentRSS>http://vavru.cz/ostatni/itplace-specialista-na-java-outsourcing-startuje/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Eshop startup - Úvod</title>
		<link>http://vavru.cz/eshop-startup/eshop-startup-uvod/</link>
		<comments>http://vavru.cz/eshop-startup/eshop-startup-uvod/#komentare</comments>
		<pubDate>Fri, 20 Mar 2009 00:33:01 +0000</pubDate>
		<dc:creator>Vlasta</dc:creator>
		
	<category>Eshop startup</category>
		<guid isPermaLink="false">http://vavru.cz/eshop-startup/eshop-startup-uvod/</guid>
		<description><![CDATA[
<!-- generated by Texy! -->]]></description>
			<content:encoded><![CDATA[
<p><strong>Update</strong> &#8211; Michal změnil názor a nepřeje si, aby
o&#160;jeho startupu vycházely další články.</p>

<p>Dívám se na poslední článek blogu a vidím datum 21. října 2008.
Brrr&#8230;je to strasně dlouho. Přiznám se, že jsem kolem Vánoc rozepsal
článek &#8222;Jaký byl rok 2008&#8220;. V&#160;prvé řadě se mi narodila <a
href="http://vavru.cz/ostatni/narodila-se-nam-lucy/">krásná dcera</a>. Dál by
se nechalo říct, že celý rok probíhal ve znamení <a
href="http://www.vasecocky.cz">našeho eshopu</a>. Kdo to sám neokusil neví,
kolik je práce rozjíždět od nuly lokomotivu (rozuměj novou firmu). Byla pro
mě velká škola okusit co to znamená konkurenční boj. Některé praktiky
jsou tvrdé, ale nevadí mi. Jiní konkurenti zase předvádějí věci, které
jsou doslova na zvracení.</p>

<h3>Co se Maternii povedlo?</h3>

<ul>
	<li>vyrostly jsme z&#160;nuly mezi největší internetové obchody
	s&#160;kontaktními čočkami</li>

	<li>máme skvělý tým, který se neustále rozrůstá (například pouze na
	klientském servisu jsou 3&#160;dívky)</li>

	<li>vybudovat kvalitní servis (výdejní místa, zelená linka, poradna)</li>

	<li>vyexpandovali jsme na <a
	href="http://www.vasesosovky.sk/">Slovensko</a></li>
</ul>

<p>To všechno díky tvrdé práci celého <a
href="http://www.vasecocky.cz/o-nas.html">našeho týmu</a>.</p>

<h3>Michalův startup</h3>

<p>Ve firmě, pro kterou pracuju jako kontraktor, došlo k&#160;velké mele.
Propustili skoro všechny programátory (zůstali jsme 4). Jeden z&#160;mých
(dnes už bývalých) kolegů se rozhodl, že si chce rozjet vlastní eshop.
Když mi tohle řekl, velmi jsem zbystřil. On se teď bude nacházet ve stejné
situaci jako já před rokem.</p>

<p>Ono víc kluků, kteří odešli z&#160;firmy chtějí mít něco vlastního.
I&#160;já s&#160;jedním kolegou něco plánuju :).</p>

<p>Takže Michal je rozhodnut rozjet eshop. Ještě nemá nic rozhodnuté:</p>

<ul>
	<li>co vlastně bude prodávat</li>

	<li>zda použije hotový eshop nebo si naprogramuje vlastní</li>
</ul>

<p>Napadlo mě (a Michal souhlasil), že bych vývoj mapoval v&#160;seriálu.
Myslím, že by mohlo být zajímavé sledovat jeho eshop od prvního
nápadu&#8230;až po první protočený milion.</p>

<h3>Závěr</h3>

<p>Toto je nultý článek našeho seriálu. Další články budou následovat
ve 14ti denních intervalech.</p>

<!-- generated by Texy! -->]]></content:encoded>
			<wfw:commentRSS>http://vavru.cz/eshop-startup/eshop-startup-uvod/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Unit testy s knihovnou EasyMock</title>
		<link>http://vavru.cz/testovani-aplikaci/unit-testy-s-knihovnou-easymock/</link>
		<comments>http://vavru.cz/testovani-aplikaci/unit-testy-s-knihovnou-easymock/#komentare</comments>
		<pubDate>Tue, 21 Oct 2008 21:45:03 +0000</pubDate>
		<dc:creator>Vlasta</dc:creator>
		
	<category>Testování aplikací</category>
		<guid isPermaLink="false">http://vavru.cz/testovani-aplikaci/unit-testy-s-knihovnou-easymock/</guid>
		<description><![CDATA[
<!-- generated by Texy! -->]]></description>
			<content:encoded><![CDATA[
<p>Možná jsem někde zaspal, ale knihovnu <a
href="http://www.easymock.org">EasyMock</a> jsem začal používat teprve
nedávno u&#160;nás ve firmě. Jeho schopnosti a snadnost použití jsou tak
výrazné, že rozhodně stojí za představení.</p>

<h3>K&#160;čemu je to vlastně dobré</h3>

<p>EasyMock je pomocník pro psaní unit testů. Unit testy slouží
k&#160;otestování jedné třídy. Nezajímají nás objekty, se kterými
testovaná třída spolupracuje. Buď věříme tomu, že fungují
správně&#8230;a nebo tyto závislosti <strong>namockujeme</strong>.</p>

<p>Namocková je nahrazení skutečných spolupracujících tříd tzv mocky.
Mock je proxy implementující určitý interface. U&#160;této proxy máme
možnost nadefinovat její chování programově pomocí API.</p>

<h3>Jak to funguje</h3>

<ol>
	<li>Vytvoříte mock objekt (1. řádek kódu)</li>

	<li>Nadefinujete jeho chování (včetně návratových typů a výjímek)</li>

	<li>Nadefinujete požadované volání metod (EasyMock kontroluje i&#160;jejich
	pořadí)</li>

	<li>Přepnete se do přehrávací fáze</li>

	<li>Spustíte vlastní unit test</li>

	<li>EasyMock za vás ověří, že byly splněny všechny podmínky
	nadefinované v&#160;bodě 2&#160;a 3</li>
</ol>

<p>EasyMock se velmi hodí tam, kde používáte návrhový vzor IoC a
potřebujete otestovat beanu, která potřebuje mít nasetované reference na
ostatní beany. Ideálně, když referencované beany jsou interfacy (EasyMock
umí mockovat pomocí rozšížení i&#160;classy). Pomocí EasyMocku si tedy
vytvoříte přislušné mocky, nahrajete jejich chování. Zavoláte testovanou
metodu a Easymock zkontroluje, zda všechno proběhlo podle vašich
požadavků.</p>

<p>Malá ukázka testu z&#160;příkladu (<a
href="/clanky/easymockdemo/EasyMockDemo.zip">EasyMockDemo&#173;.zip</a>, ZIP
260&#160;KB): .</p>

<pre class="java"><code><span class="java-keywords1">public</span> <span class="java-keywords1">class</span> TestServiceImplTest <span class="java-keywords1">extends</span> TestCase {
        <span class="java-keywords1">private</span> TestServiceImpl testServiceImpl;
        <span class="java-keywords1">private</span> TestDao testDao;

        <span class="java-keywords1">public</span> <span class="java-keywords1">void</span> test_getBeanById_ok() <span class="java-keywords1">throws</span> Exception {
                Bean bean1 = <span class="java-keywords1">new</span> Bean();
                bean1.setId(<span class="java-num">1</span>);

                EasyMock.expect(testDao.getBeanById(<span class="java-num">1</span>)).andReturn(bean1);

                replay();

                Bean bean = testServiceImpl.getBeanById(<span class="java-num">1</span>);
                assertEquals(<span class="java-num">1</span>, bean.getId());

                verify();
        }

        <span class="java-keywords1">public</span> <span class="java-keywords1">void</span> test_getBeanById_null_returned() <span class="java-keywords1">throws</span> Exception {
                EasyMock.expect(testDao.getBeanById(<span class="java-num">1</span>)).andReturn(null);

                replay();

                Bean bean = testServiceImpl.getBeanById(<span class="java-num">1</span>);
                assertNull(bean);

                verify();
        }

        <span class="java-keywords1">public</span> <span class="java-keywords1">void</span> test_getBeanById_exception_thrown() <span class="java-keywords1">throws</span> Exception {
                Bean bean1 = <span class="java-keywords1">new</span> Bean();
                bean1.setId(<span class="java-num">1</span>);

                EasyMock.expect(testDao.getBeanById(<span class="java-num">1</span>)).andThrow(<span class="java-keywords1">new</span> DaoException(<span class="java-quote">&quot;Some DAO exception&quot;</span>));

                replay();

                <span class="java-keywords1">try</span> {
                        testServiceImpl.getBeanById(<span class="java-num">1</span>);
                        fail();
                } <span class="java-keywords1">catch</span> (ServiceException e) {

                }

                verify();
        }

        <span class="java-keywords1">protected</span> <span class="java-keywords1">void</span> replay() {
                EasyMock.replay(testDao);
        }

        <span class="java-keywords1">protected</span> <span class="java-keywords1">void</span> verify() {
                EasyMock.verify(testDao);
        }

        @Override
        <span class="java-keywords1">protected</span> <span class="java-keywords1">void</span> setUp() <span class="java-keywords1">throws</span> Exception {
                <span class="java-keywords1">super</span>.setUp();
                testServiceImpl = <span class="java-keywords1">new</span> TestServiceImpl();
                testDao = EasyMock.createMock(TestDao.<span class="java-keywords1">class</span>);
                testServiceImpl.setTestDao(testDao);
        }

        @Override
        <span class="java-keywords1">protected</span> <span class="java-keywords1">void</span> tearDown() <span class="java-keywords1">throws</span> Exception {
                <span class="java-keywords1">super</span>.tearDown();
                testServiceImpl = null;
                testDao = null;
        }
}</code></pre>

<h3>Závěr</h3>

<p>Bez mock testů si dnes unit testy už nedovedu představit.</p>

<h4>Odkazy</h4>

<ul>
	<li><a href="http://www.easymock.org/">EasyMock Home</a></li>

	<li><a
	href="http://www.michaelminella.com/testing/unit-testing-with-junit-and-easymock.html">Unit
	testing with JUnit and EasyMock</a></li>

	<li><a
	href="http://blog.novoj.net/2007/01/19/mock-testing-potemkinovy-vesnice/">Mock
	testing &#8211; Potěmkinovy vesnice</a></li>
</ul>

<!-- generated by Texy! -->]]></content:encoded>
			<wfw:commentRSS>http://vavru.cz/testovani-aplikaci/unit-testy-s-knihovnou-easymock/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Google Chrome</title>
		<link>http://vavru.cz/php/google-chrome/</link>
		<comments>http://vavru.cz/php/google-chrome/#komentare</comments>
		<pubDate>Tue, 09 Sep 2008 21:26:20 +0000</pubDate>
		<dc:creator>Vlasta</dc:creator>
		
	<category>PHP</category>
		<guid isPermaLink="false">http://vavru.cz/php/google-chrome/</guid>
		<description><![CDATA[
<!-- generated by Texy! -->]]></description>
			<content:encoded><![CDATA[
<p>&#8222;Ten blog Ti ňák chcípá&#8220;, řekl minulý týden kamarád <a
href="http://www.leryx.cz">Abe</a>.</p>

<p>Tak&#8230;veselý začátek by byl a teď ke <a
href="http://www.google.com/chrome">Google Chrome</a> :)</p>

<p>Google mě zase překvapil. Vypustil do světa skvělý prohlížeč. Bez
chyb samozřejmě není, ale výčet kladů a věcí, které mě příjemně
překvapily přebývá. Google Chrome používám necelý týden od středy 3.
září 2008&#160;kdy byl uvolněn. Zde je seznam věcí, kterých jsem si
všiml (klady, zápory, poznámky):</p>

<ul>
	<li>Začnu záporem &#8211; chtěl jsem v&#160;Chrome napsat tento článek, ale
	měl jsem smůlu. Používám Wordpress (verze 2.0.2) a
	v&#160;administrátorské části pro psaní příspěvku jsem měl
	v&#160;pravé části všechny boxy zavřené. Nešla tak vybrat například
	rubrika a další věci.</li>

	<li>Na druhou stranu &#8211; V&#160;jedné diskusi o&#160;Chrome jsem četl, že
	v&#160;něm nefungují Mapy.cz. Hned jsem to zkusil a fungovalo to. Vývojáři
	z&#160;Googlu zřejmě dostaly nahlášený bug a během několika hodin ho
	fixli. Takže myslím, že můj problém s&#160;Wordpressem bude během
	několika hodiny také vyřešen (bug jsem zareportoval).</li>

	<li>Jako primárná prohlížeč jsem používal Operu. Chrome si od ní hodně
	vypůjčil &#8211; klávesové zkratky, náhledy
	s&#160;nejnavštěvo&#173;vanějšími stránkami, chytrá adresová
	řádka.</li>

	<li>Je to pekelně rychlý. Před několika týdny jsem si s&#160;fanfárou
	stáhnul Firefox 3. Ten je ve srovnání s&#160;Chrome kulhající dědeček.
	Rozdíl v&#160;rychlosti je asi dvojnásobný. Ne jenom v&#160;načítání
	stránek, ale mám pocit, ze i&#160;flash má mnohem rychlejší odezvu na pohyb
	myší například.</li>

	<li>Přechod na Chrome je bezbolestný. Nevím jak to přesně popsat. Ale
	člověk v&#160;něm nic nemusí hledat všechno funguje. Stánky jako by se
	zobrazoly už po naťukání prvních písmen do adresního řádku. Jediné co
	mi trošilinku chybí jsou mouse gestures, na které jsem zvyklý
	z&#160;Opery.</li>

	<li>Chrome není paměťžrout jako Firefox. Nebudete mi věřit &#8211; kolega
	z&#160;práce, který má počítač puštěný v&#160;kuse 3&#160;týdny (nerad
	restartuje) má spotřebu paměti Firefoxem cca 800&#160;MB (čtete správně).
	Po upgradu a používání v&#160;tom samém stylu práce spotřeba
	&#8222;klesla&#8220; na 500&#160;MB. A&#160;to má otevřeno pár záložek (max
	10). Chrome běží sice ve více procesech, ale hospodaření s&#160;pamětí
	je efektivnější. Zavřená záložka = ukončení procesu a komplentí
	uvolnění paměti.</li>

	<li>Ovládací prvká zabírají (stejně jako u&#160;Opery) minimální místo.
	Nahore najdete pruh záložek a pod ním pruh s&#160;adresovým řádkem. To je
	vše. Žádná menu nebo lišta bookmarků.</li>

	<li>Chytnete záložku, vytáhnete kousek stranou a máte ji v&#160;samostatném
	okně.</li>

	<li>Zavřené záložky jdou znovu zobrazit (stejně jako v&#160;Opeře)
	klávesovou zkratkou CRTL+SHIFT+T.</li>
</ul>

<div class="image"><img src="/clanky/google-chrome/google-chrome-1.jpg" alt=""
/>
	<p>Vytahnutí záložky</p>
</div>

<div class="image"><img src="/clanky/google-chrome/google-chrome-2.jpg" alt=""
/>
	<p>A&#160;nové okno z&#160;vytažené záložky</p>
</div>

<h3>Závěr</h3>

<p>Určitě se podívete na <a
href="http://www.google.com/googlebooks/chrome/">komiks</a>.</p>

<h4>Odkazy</h4>

<ul>
	<li><a href="http://kryl.info/clanek/612-5-tipu-pro-uzivatele-google-chrome">5
	tipů pro uživatele Google Chrome</a></li>

	<li><a href="http://kryl.info/clanek/611-google-chrome-prvni-pohled">Google
	Chrome &#8211; první pohled</a></li>
</ul>

<!-- generated by Texy! -->]]></content:encoded>
			<wfw:commentRSS>http://vavru.cz/php/google-chrome/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Reverse Ajax s DWR, Spring, iBatis</title>
		<link>http://vavru.cz/java/reverse-ajax-s-dwr-spring-ibatis/</link>
		<comments>http://vavru.cz/java/reverse-ajax-s-dwr-spring-ibatis/#komentare</comments>
		<pubDate>Sun, 06 Jul 2008 19:06:46 +0000</pubDate>
		<dc:creator>Vlasta</dc:creator>
		
	<category>Java</category>
		<guid isPermaLink="false">http://vavru.cz/java/reverse-ajax-s-dwr-spring-ibatis/</guid>
		<description><![CDATA[
<!-- generated by Texy! -->]]></description>
			<content:encoded><![CDATA[
<p>Před nějakým časem se v&#160;Avedyi rozjížděl nový projekt. Jednalo
se o&#160;klasický webový chat. Vytvořil jsem tehdy jednoduchý prototyp.
Použil jsem DWR a technologii reverse ajax.</p>

<p>Pro tento článek jsem původní prototyp trochu rozšířil a zapojil jsem
Spring Framework a jako DAO vrstvu jsem vybral iBatis.</p>

<h3>Krátce o&#160;iBatisu</h3>

<p>I&#160;když iBatis není plnotučné ORM s&#160;klidem bych ho nasadil na
většinu projektů, na které jsem v&#160;minulosti použil Hibernate.
Stručný přehled vlastností a featur iBatisu:</p>

<ul>
	<li>Konfigurace v&#160;XML podobně jako Hibernate.</li>

	<li>Veškeré SQL příkazy (insert, update, select) jsou nadefinovány přímo
	v&#160;XML konfigurácích. V&#160;nich definujete placeholdery, které jsou
	při vykonávání nahrazeny skutečnými hodnotami.</li>

	<li>Umí relace (1:1, 1:n, m:n)</li>

	<li>má vlastní kešování (kongurace opět v&#160;xml)</li>
</ul>

<p>iBatis mě nadchnul a původně jsem o&#160;něm chtěl napsat krátký
článek. Ale když jsem viděl kolik zdrojů na (i&#160;českém) internetu je
rozmyslel jsem si to. Seznam zdrojů o&#160;iBatisu uvádím na konci
článku.</p>

<h3>Krátce o&#160;DWR</h3>

<p>O&#160;DWR jsem z&#160;na blogu již <a
href="http://vavru.cz/java/dwr-ajax-knihovna-pro-remotovani-java-objektu/">psal</a>.
V&#160;tomto článku bych se blížeji podíval pouze na typy reverse ajaxu,
které nabízí.</p>

<h4>Full Streaming Mode</h4>

<p>Nejrychlejší způsob reverse ajaxu. Spojení zůstává otevřeno po dobu
60&#160;sekund. Poté je vytvořeno nové (což se nemusí podařit pokud
browser již není otevřený např). Má dvě nevýhody:</p>

<ul>
	<li>velká zátěž serveru (při velkém počtu klientů)</li>

	<li>proxy, antivirové program a různé moduly webserveru mohou držet data do
	doby než se spojení ukončí (k&#160;zobrazování dat by pak docházelo pouze
	jednou za 60&#160;sekund)</li>
</ul>

<h4>Early Closing Mode (Long Polling)</h4>

<p>Funguje tak, že server zavře spojení s&#160;klientem a vyžádá si
spojení nové v&#160;případě, že klientovi posíláme nějaká data.
Jestliže data neposíláme je chování stejné jako u&#160;Full Streaming
modu. Spojení s&#160;klientem není uzavřeno ihned, ale lze jej konfigurovat
pomocí parametru <code>maxWaitAfterWri&#173;te</code>. Typicky napstaveno na
500&#160;ms. Server v&#160;tomto případě pošle klientovi zprávu, počtu
500&#160;ms a poté ukončí a znovu otevře spojení s&#160;klientem.</p>

<p>Výhodou je odolnost vůči držení dat na straně proxy atd. Nevýhodou je
opět velká zátěž serveru.</p>

<h4>Polling Mode</h4>

<p>Polling Mode bych pravým reverse ajaxem ani nenazýval. Spočívá
v&#160;periodickém dotazování serveru klientem. Směr volání je klient
&#8594; server, což je opakem předchozích dvou možností.</p>

<p><strong>Full Streaming Mode</strong> je představitelem technologie
<strong>Comet</strong> &#8211; tzv. spojení mezi serverem a klientem
s&#160;dlouhou délkou života.</p>

<h3>Příklad</h3>

<p>Příkladem je jednochuchý chat. Základní usecasy jsou:</p>

<ul>
	<li>nalogování uživatele</li>

	<li>zjištění aktuálního uživatele ze session</li>

	<li>odlogování</li>

	<li>poslání nového vzkazu (buď všem v&#160;chatu nebo jednomu
	adresátovi)</li>
</ul>

<h4>Klient</h4>

<p>Klientem je statická html stránka (index.html), která dělá dotazy na
server pomocí js souboru. V&#160;něm je volán DWR servlet. Pro komfort při
práci se stránou je použita i&#160;knihovna jQuery.</p>

<h4>Server</h4>

<p>Serverovou částí je javovská webové aplikace běžící
v&#160;libovolném servlet kontajneru. Jediným endpointem je DWR servlet. Jako
IOC kontajner je použit Spring Framework. Obsahuje jednu remotnutou servisní
beanu &#8211; <strong>chatService</strong>. Jsou zde dva doménové objekty
&#8211; <code>User</code> a <code>Message</code>.</p>

<p>Soubor <code>dwr.xml</code> obsahující konfiguraci remotnuté servisy a
bean convertor pro doménové objekty:</p>

<pre class="xml"><code>&lt;dwr&gt;
  &lt;allow&gt;
    &lt;!-- configure service --&gt;
    &lt;create creator="spring" javascript="ChatService" scope="application"&gt;
      &lt;param name="beanName" value="chatService"/&gt;
    &lt;/create&gt;

    &lt;!-- configuje bean converter --&gt;
    &lt;convert converter="bean" match="cz.vavru.test.dwr.domain.*"/&gt;
  &lt;/allow&gt;
&lt;/dwr&gt;</code></pre>

<p>Soubor <code>Message.xml</code> s&#160;iBatis mapováním:</p>

<pre class="xml"><code>&lt;sqlMap namespace="Message"&gt;
  &lt;typeAlias alias="message" type="cz.vavru.test.dwr.domain.Message"/&gt;

  &lt;resultMap id="result" class="message"&gt;
    &lt;result property="messageId" column="messageId"/&gt;
    &lt;result property="date" column="date" /&gt;
    &lt;result property="message" column="message"/&gt;
    &lt;result property="sender.userId" column="senderId"/&gt;
    &lt;result property="sender.nick" column="senderNick"/&gt;
    &lt;result property="recipient.userId" column="recipientId"/&gt;
    &lt;result property="recipient.nick" column="recipientNick"/&gt;
  &lt;/resultMap&gt;

  &lt;select id="getMessages" resultMap="result"&gt;
    select * from Message where recipientId is null or senderId = #userId# or recipientId = #userId#
  &lt;/select&gt;

  &lt;insert id="insertMessage"&gt;
    insert into Message set date = #date#, senderId = #sender.userId#, senderNick = #sender.nick#, recipientId = #recipient.userId#, recipientNick = #recipient.nick#, message = #message#
        &lt;selectKey resultClass="int" keyProperty="messageId"&gt;
      select last_insert_id() as messageId
    &lt;/selectKey&gt;
  &lt;/insert&gt;
&lt;/sqlMap&gt;</code></pre>

<p>Metoda <code>getScriptSessi&#173;onsToNotifyAbou&#173;tNewMessage</code>
z&#160;třídy
<code>cz.vavru.test&#173;.dwr.util.DwrWeb&#173;ContextUtil</code>. Úkolem
metody je vrátit kolekci objektů <code>ScriptSession</code>, které mají být
notifikovány o&#160;nově příchozí zprávě. Jak je z&#160;kódu vidět
v&#160;případě, že je vybraný adresář je notifikace poslána jenom
odesílateli nebo adresátovi. Proměnná <code>webCtx</code> je interface
<code>org.directwebre&#173;moting.WebCon&#173;text</code> obsahují např odkaz
na aktuální <code>ScriptSession</code> (obdoba HttpSession). Na rozdíl od
<code>HttpSession</code> vzniká nová <code>ScriptSession</code>
s&#160;každým obnovením stránky (F5 v&#160;prohlížeči). Ohromnou výhodou
tohoto objektu je možnost uložit si do něj libovolný atribut. Já do něj
při zalogování ukládám informace o&#160;uživateli. A&#160;tak později
přesně vím, které scriptsešný mám zavolat:</p>

<pre class="java"><code>@SuppressWarnings(<span class="java-quote">&quot;unchecked&quot;</span>)
<span class="java-keywords1">public</span> Collection&lt;ScriptSession&gt; getScriptSessionsToNotifyAboutNewMessage(Message message) {
        Collection&lt;ScriptSession&gt; pageScriptSessions = (Collection&lt;ScriptSession&gt;) webCtx
                        .getScriptSessionsByPage(currentPage);

        Collection&lt;ScriptSession&gt; scriptSessions = <span class="java-keywords1">new</span> ArrayList&lt;ScriptSession&gt;();

        <span class="java-keywords1">if</span> (message.getRecipient() != null) {
                <span class="java-keywords1">for</span> (Iterator&lt;ScriptSession&gt; it = pageScriptSessions.iterator(); it.hasNext();) {
                        ScriptSession scriptSession = it.next();
                        User user = (User) scriptSession.getAttribute(ChatServiceImpl.SCRIPT_CHAT_USER_SES_ATTR);
                        <span class="java-keywords1">if</span>(user == null) <span class="java-keywords1">continue</span>;

                        <span class="java-keywords1">if</span> (message.getSender().getUserId() == user.getUserId()
                                        || message.getRecipient().getUserId() == user.getUserId()) {
                                scriptSessions.add(scriptSession);
                        }
                }
        } <span class="java-keywords1">else</span> {
                scriptSessions = pageScriptSessions;
        }

        <span class="java-keywords1">return</span> scriptSessions;
}</code></pre>

<p>Posledním fragmentem kódu je metoda <code>addMessage</code> z&#160;třídy
<code>cz.vavru.test&#173;.dwr.service.Chat&#173;ServiceImpl</code>.</p>

<pre class="java"><code>@Transactional
<span class="java-keywords1">public</span> <span class="java-keywords1">void</span> addMessage(Message message) <span class="java-keywords1">throws</span> ChatServiceException {
        WebContext webCtx = WebContextFactory.get();
        <span class="java-comment">// zjisteni aktualniho usera ze session
</span>        User currentUser = (User) webCtx.getHttpServletRequest().getSession(true).getAttribute(
                        CHAT_USER_SES_ATTR);

        <span class="java-comment">// nastaveni odesilatele a data
</span>        message.setSender(currentUser);
        message.setDate(<span class="java-keywords1">new</span> Date());

        <span class="java-comment">// vlozeni message do databaze
</span>        messageDao.insertMessage(message);

        DwrWebContextUtil dwrUtil = <span class="java-keywords1">new</span> DwrWebContextUtil(WebContextFactory.get());
        <span class="java-comment">// zjisteni vsech scriptsession, ktere mame notifikovat o nove zprave
</span>        Collection&lt;ScriptSession&gt; scriptSessions = dwrUtil
                        .getScriptSessionsToNotifyAboutNewMessage(message);

        logger.info(<span class="java-quote">&quot;Sending info about new message to &quot;</span> + scriptSessions.size() + <span class="java-quote">&quot; users&quot;</span>);

        Util util = <span class="java-keywords1">new</span> Util(scriptSessions);
        <span class="java-comment">// timto zpusobem se vola primo kod na strane klienta
</span>        <span class="java-comment">// nasledujici radek tedy zavola javascriptovou funkci addMessage (viz soubor js/chat.js) s parametrem message
</span>        <span class="java-comment">// objekt message, ze samozrejme preveden do javascriptoveho sveta
</span>        util.addFunctionCall(<span class="java-quote">&quot;addMessage&quot;</span>, message);
}</code></pre>

<p>Celý příklad lze stáhnout zde &#8211; <a
href="/clanky/dwr-ajax/dwr-ajax.zip">dwr-ajax.zip</a> (zip, 9.9&#160;MB). Archiv
obsahuje:</p>

<ul>
	<li>zdrojové soubory (celý Eclipse projekt)</li>

	<li>dwr-ajax.sql s&#160;DDL</li>

	<li>war archiv</li>
</ul>

<h3>Závěr</h3>

<p>Věřím, že se mi povedlo ukázat jak je spojení všech použitých
knihoven naprosto bezbolestné a jednoduché. Při testech na mém notebooku,
kdy jsem si v&#160;každém prohlížeči (IE, Opera, Mozilla) otevřel chat a
vstoupil pod jiným uživatelem, byl celý chat pekelně rychlý. Zpráva byla
zobrazena takřka okamžitě.</p>

<h4>Odkazy</h4>

<ul>
	<li><a
	href="http://blog.novoj.net/2007/05/08/ibatis-sqlmaps-tak-trochu-opomijeny-orm/">iBatis
	SqlMaps &#8211; tak trochu opomíjený ORM</a></li>

	<li><a href="http://sweb.cz/pichlik/ibatis/presentation.pdf">iBatis prezentace
	od Dagiho</a></li>

	<li><a
	href="http://ibatis.apache.org/docs/java/pdf/iBATIS-SqlMaps-2-Tutorial_en.pdf">Oficiální
	iBatis SqlMaps tutoriál</a></li>

	<li><a
	href="http://ibatis.apache.org/docs/java/pdf/iBATIS-SqlMaps-2_en.pdf">Oficiální
	iBatis SqlMaps dokumentace</a></li>

	<li><a href="http://www.ociweb.com/mark/programming/iBATIS.html">iBatis
	overview</a></li>

	<li><a href="http://gmod.org/wiki/index.php/IBatis_Presentation">IBatis
	Presentation</a></li>

	<li><a href="http://cometdaily.com/2008/02/05/buzzword-overload/">Buzzword
	Overload</a></li>

	<li><a href="http://cometdaily.com/2007/12/05/easing-into-comet/">Easing into
	Comet</a></li>
</ul>

<!-- generated by Texy! -->]]></content:encoded>
			<wfw:commentRSS>http://vavru.cz/java/reverse-ajax-s-dwr-spring-ibatis/feed/</wfw:commentRSS>
		</item>
	</channel>
</rss>
