<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.3" -->
<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>Ááá</title>
	<link>http://xn--1caaa.info</link>
	<description>Další web používající WordPress</description>
	<pubDate>Sat, 03 Jan 2009 16:50:45 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>cs</language>
			<item>
		<title>Rok 2008</title>
		<link>http://xn--1caaa.info/rok-2008/</link>
		<comments>http://xn--1caaa.info/rok-2008/#comments</comments>
		<pubDate>Sat, 03 Jan 2009 16:50:45 +0000</pubDate>
		<dc:creator>LLook</dc:creator>
		
		<category><![CDATA[Nezařazené]]></category>

		<guid isPermaLink="false">http://xn--1caaa.info/rok-2008/</guid>
		<description><![CDATA[
<p>Rozhodl jsem se shrnout svůj vývoj na poli programování. Vzhledem
k tomu, že si na to najdu čas sotva pár hodin týdně a někdy ani to ne,
tak je toho docela dost.</p>

<p>Začátkem roku jsem si začal psát vlastní PHP framework, vycházející
ze vzoru Page Controller.</p>

<p>Pak jsem si napsal i vlastní testovací nástroj. Na Simpletestu i PHPUnit
mi z několika důvodů vadilo, že se testy […]</p>

<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[
<p>Rozhodl jsem se shrnout svůj vývoj na poli programování. Vzhledem
k tomu, že si na to najdu čas sotva pár hodin týdně a někdy ani to ne,
tak je toho docela dost.</p>

<p>Začátkem roku jsem si začal psát vlastní PHP framework, vycházející
ze vzoru Page Controller.</p>

<p>Pak jsem si napsal i vlastní testovací nástroj. Na Simpletestu i PHPUnit
mi z několika důvodů vadilo, že se testy spouští postupně v jednom
vlákně. Tak jsem si ubastlil takový ošklivý skript, který ajaxem posílal
kupu požadavků na provedení jednotlivých testů.</p>

<p>Bylo to o něco rychlejší, testy byly lépe izolované a navíc jsem tím
měl i trochu ošetřenou thread safety: Kdyby nějaký kód nebyl thread safe,
tak by se to pravděpodobně projevilo ještě při testech.</p>

<p>Na jaře jsem se zasekl, protože se mi začaly hromadit duplicity mezi
Modelem a View a nevěděl jsem, co s tím. Pořád nevím…</p>

<p>Do toho jsem začátkem srpna přešel od PHP k Javě. Tím jsem veškeré
dosavadní výtvory zahodil (tak moc toho zas nebylo <img
src="http://xn--1caaa.info/wp-includes/images/smilies/icon_smile.gif" alt=":-)"
class="smiley" width="15" height="15" /> ).</p>

<p>Koncem srpna jsem přešel od Javy k .NET, protože na malé webové projekty
se Java nehodí.</p>

<p>Od té doby se tak trochu plácám. ASP.NET se dá do vysoké míry
přizpůsobit, ale ne vždy je snadné přijít na to, jak.</p>

<p>Hodně času jsem třeba strávil tím, že jsem chtěl testovat instance
stránek. Představoval jsem si testy, které by probíhaly
přibližně takto:</p>

<ul>
	<li>Vytvořit instanci stránky <code>"~/default.aspx"</code>.</li>

	<li>Provést request.</li>

	<li>Ověřit, jestli vlastnosti určitých controlů nabývají správných
	hodnot.</li>
</ul>

<p>To se mi do jisté míry podařilo, ale byl to porod a pořád ještě
nevím, jak nasimulovat třeba POST request. Navíc po proběhnutí testu občas
vylétá jakási výjimka. (<a
href="http://forums.asp.net/p/1349785/2753300.aspx">Viz ASP.NET fórum.</a>)</p>

<p>A takhle je to se vším. Jakmile se rozhodnu dělat něco jenom trošku
jinak než je obvyklé, tak narazím…</p>

<!-- by Texy2! -->]]></content:encoded>
			<wfw:commentRss>http://xn--1caaa.info/rok-2008/feed/</wfw:commentRss>
		</item>
		<item>
		<title>NUnit versus ostatní</title>
		<link>http://xn--1caaa.info/nunit-versus-ostatni/</link>
		<comments>http://xn--1caaa.info/nunit-versus-ostatni/#comments</comments>
		<pubDate>Sat, 08 Nov 2008 12:59:57 +0000</pubDate>
		<dc:creator>LLook</dc:creator>
		
		<category><![CDATA[Nezařazené]]></category>

		<guid isPermaLink="false">http://xn--1caaa.info/nunit-versus-ostatni/</guid>
		<description><![CDATA[
<p>NUnit je v současnosti nejpíš nejrozšířenější .NET framework pro
testování jednotek. Nebo přinejmenším nejvyhledávanější, v Google
Trends ostatní bezpečně válcuje.</p>

<p>Čím dál častěji různě narážím na zmínky buďto o xUnit.org, nebo
o testech zabudovaných v týmové edici Visual Studia (MSTest). Na
stránkách k xUnit.org jsem našel přehlednou srovnávací tabulku, kterou
lze shrnout asi takhle:</p>

<p>NUnit, MbUnit, MSTest: Třikrát to samé, pouze drobné<br />
rozdíly v zápisu ([Test] vs. [TestMethod]<br />
apod.).</p>

<p>xUnit.net: Některé věci […]</p>

<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[
<p>NUnit je v současnosti nejpíš nejrozšířenější .NET framework pro
testování jednotek. Nebo přinejmenším nejvyhledávanější, <a
href="http://www.google.com/trends?q=nunit%2C+xunit.net%2C+mbunit%2C+mstest">v Google
Trends ostatní bezpečně válcuje</a>.</p>

<p>Čím dál častěji různě narážím na zmínky buďto o xUnit.org, nebo
o testech zabudovaných v týmové edici Visual Studia (MSTest). Na
stránkách k xUnit.org jsem našel <a
href="http://www.codeplex.com/xunit/Wiki/View.aspx?title=Comparisons">přehlednou
srovnávací tabulku</a>, kterou lze shrnout asi takhle:</p>

<ul>
	<li><strong>NUnit, MbUnit, MSTest</strong>: Třikrát to samé, pouze drobné
	rozdíly v zápisu (<code>[Test]</code> vs. <code>[TestMethod]</code>
	apod.).</li>

	<li><strong>xUnit.net</strong>: Některé věci dělá jinak, než je obvyklé.
	Především:
		<ul>
			<li>Pro každý test se vytváří nová instance testovací třídy. Z toho
			vyplývá:
				<ul>
					<li>Testy jsou lépe izolované.</li>

					<li>Žádné SetUp/TearDown metody. Testy lze inicializovat v konstruktoru a
					uklidit případně v <code>IDisposable.Dispose</code>.</li>
				</ul>
			</li>

			<li>Testovací metodě se říká „fact“.</li>

			<li>Testovací třída nemusí být nijak označená. Stačí, že jsou
			označené testovací metody.</li>
		</ul>
	</li>
</ul>

<p><a href="http://www.codeplex.com/xunit/">xUnit.net</a> je dost zajímavý
kousek softwaru. Co mu podle mě hodně schází, je <code>Assert.That</code>.
Tedy možnost například místo staromódního zápisu:</p>

<pre class="cs"><code>Assert.AreEqual(expected, actual);</code></pre>

<p>Používat jiný zápis:</p>

<pre class="cs"><code>Assert.That(actual, Is.EqualTo(expected));</code></pre>

<p>Tento zápis se víc blíží přirozenému jazyku (Věta <em>„assert that
actual is equal to expected“</em> docela dává smysl, ne?) a je docela
návykový. Podle mě je otázkou času, kdy ho adoptuje i xUnit.net.</p>

<p>Související: <a
href="http://rarous.net/weblog/228-novy-unit-test-framework-pro-dotnet.aspx">Raroušův
článek o xUnit.net</a></p>

<!-- by Texy2! -->]]></content:encoded>
			<wfw:commentRss>http://xn--1caaa.info/nunit-versus-ostatni/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Jak se zbavit postback formuláře</title>
		<link>http://xn--1caaa.info/jak-se-zbavit-postback-formulare/</link>
		<comments>http://xn--1caaa.info/jak-se-zbavit-postback-formulare/#comments</comments>
		<pubDate>Fri, 24 Oct 2008 16:35:37 +0000</pubDate>
		<dc:creator>LLook</dc:creator>
		
		<category><![CDATA[Nezařazené]]></category>

		<guid isPermaLink="false">http://xn--1caaa.info/jak-se-zbavit-postback-formulare/</guid>
		<description><![CDATA[
<p>Předpokládám, že zhruba chápete, jak to v ASP.NET obvykle funguje:
Stránka je obalená formulářem, v něm je skryté pole obsahující
informace o stavu aplikace (tzv. ViewState) a veškeré akce na stránce se
provádí odesláním tohoto formuláře (tzv. Postback). Viz Jak pracuje
ASP.NET.</p>

<p>Také předpokládám, že chápete, že to je špatný přístup.
Alternativně je možné ViewState ukládat do session, což je
ještě horší…</p>

<p>Pro mě jediným přijatelným řešením […]</p>

<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[
<p>Předpokládám, že zhruba chápete, jak to v ASP.NET obvykle funguje:
Stránka je obalená formulářem, v něm je skryté pole obsahující
informace o stavu aplikace (tzv. ViewState) a veškeré akce na stránce se
provádí odesláním tohoto formuláře (tzv. Postback). Viz <a
href="http://latrine.dgx.cz/jsem-zdesen-z-asp-net#toc-jak-pracuje-asp-net">Jak
pracuje ASP.NET</a>.</p>

<p>Také předpokládám, že chápete, že to je špatný přístup.
Alternativně je možné ViewState ukládat do session, což je
ještě horší…</p>

<p><strong>Pro mě jediným přijatelným řešením je vůbec nepoužívat
ViewState.</strong></p>

<p>Především nepoužívat controly, které na ViewState závisí. To se
týká dost controlů, které jsou součástí .NET, ale taky ne všech.
Například datové zdroje (SqlDataSource, EntityDataSource apod.) se bez
ViewState obejdou.</p>

<h3>Jak se zbavit toho formuláře</h3>

<p>Jednoduše smáznutím tagu <code>&lt;form
runat="server"&gt;&lt;/form&gt;</code> ze zdrojáku stránky. ASP.NET jako
takové na něm netrvá.</p>

<p>Vestavěné formulářové controly (TextBox, Button apod.) si jeho
přítomnost vynucují, ale ty jsem stejnak už zavrhl kvůli jejich závislosti
na ViewState.</p>

<h3>Design View</h3>

<p>Velkou nepřímou výhodou ASP.NET je design view ve Visual Studiu. Že
stránku můžete upravovat ve WYSIWYG editoru, controly si tam přetahovat
z toolboxu a hned máte představu, jak to bude vypadat.</p>

<p>Zatímco s PHP nebo ASP.NET MVC upravujete zdroják a dokud to nespustíte
v prohlížeči, tak si jen v hlavě představujete, jak to asi bude vypadat a
jestli to bude přehledné (design view nic jako <code>&lt;%=
Html.TextBox("username") %&gt;</code> nezobrazí).</p>

<p>Bohužel s přetahováním z toolboxu je jistá potíž: Pokud ve stránce
není žádný formulář, Visual Studio ho pro vás laskavě vytvoří kdykoli,
kdy přetáhnete nějaký server control v design view. S tím nic nezmůžu
(<a href="http://forums.asp.net/p/1336158/2692769.aspx">ani nikdo na fóru</a>).
Je zajímavé, že když control přetahuju do source view, tak to tuhle
nasrávku nedělá.</p>

<p>Z toho plyne, že pokud se chci opravdu zbavit formuláře, mám tyto
možnosti:</p>

<ol>
	<li>Nepoužívat design view.</li>

	<li>Pokaždé to ručně mazat.</li>

	<li>Použít nějaký preprocessing.</li>

	<li>Využít adaptivní rendering, vytvořit si control adapter pro HtmlForm a
	tvářit se, že tam žádný server form není.</li>
</ol>

<p>Kompromisem by mohl být split view, že bych sice psal kód, ale zároveň
viděl výsledek. Něco podobného jsem viděl už v několika HTML editorech a
nikdy mi to nesedlo. Pochybuju, že si na to zvyknu teď.</p>

<p>Control adapter by vyřešil ten největší problém, kterým je zbytečný
formulář v HTML výstupu. Ale nějak se mi to nelíbí, přijde mi to jako
hodně ošklivý workaround.</p>

<!-- by Texy2! -->]]></content:encoded>
			<wfw:commentRss>http://xn--1caaa.info/jak-se-zbavit-postback-formulare/feed/</wfw:commentRss>
		</item>
		<item>
		<title>První dojmy z ASP.NET</title>
		<link>http://xn--1caaa.info/prvni-dojmy-z-aspnet/</link>
		<comments>http://xn--1caaa.info/prvni-dojmy-z-aspnet/#comments</comments>
		<pubDate>Sun, 12 Oct 2008 01:10:44 +0000</pubDate>
		<dc:creator>LLook</dc:creator>
		
		<category><![CDATA[Nezařazené]]></category>

		<guid isPermaLink="false">http://xn--1caaa.info/prvni-dojmy-z-aspnet/</guid>
		<description><![CDATA[
<p>Jak jsem psal, rozhodl jsem se dát šanci ASP.NET. Je toho hodně. Učím se
nový jazyk, nová API, nové IDE, ale snad se už začínám trochu
orientovat.</p>

<p>Zatím nejsem zděšen.</p>

<p>C# a Visual Basic</p>

<p>Úplně ze začátku jsem se jazyk neučil vůbec, vystačil jsem si
v podstatě se znalostmi Javy. Postupně mi došlo, že rozdíly nejsou jenom
v syntaxi a vyhledal jsem nejdřív […]</p>

<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[
<p>Jak jsem psal, rozhodl jsem se dát šanci ASP.NET. Je toho hodně. Učím se
nový jazyk, nová API, nové IDE, ale snad se už začínám trochu
orientovat.</p>

<p>Zatím nejsem zděšen. <img
src="http://xn--1caaa.info/wp-includes/images/smilies/icon_wink.gif" alt=";-)"
class="smiley" width="15" height="15" /></p>

<h3>C# a Visual Basic</h3>

<p>Úplně ze začátku jsem se jazyk neučil vůbec, vystačil jsem si
v podstatě se znalostmi Javy. Postupně mi došlo, že rozdíly nejsou jenom
v syntaxi a vyhledal jsem nejdřív <a
href="http://msdn.microsoft.com/cs-cz/library/ms228358(en-us).aspx">C# for Java
Developers</a> a potom <a
href="http://msdn.microsoft.com/cs-cz/library/67ef8sbd(en-us).aspx">C#
Programming Guide</a>.</p>

<p>Mohl jsem si vybrat i jiný .NET jazyk, včetně takových úletů jako je
PHP nebo Fortran, ale za rozumnou volbu pro začátečníka lze považovat pouze
C# nebo VB.</p>

<p>Visual Basic mi připadá jako C# s méně přehlednou syntaxí a se
spoustou zbytečností navíc (<a
href="http://blog.vyvojar.cz/michalowo/archive/2007/10/03/xml-literals-aneb-pro-je-vb9-lep-ne-c-3-0.aspx">například
XML Literals</a>), díky kterým připomíná <a
href="http://www.youtube.com/watch?v=4o6I77tmAjs">eintopf pejka a
kočičky</a>…</p>

<h3>Nástroje</h3>

<p>Zatím mi stačí <a href="http://www.microsoft.com/express/vwd/">Visual Web
Developer</a>, jedna z bezplatných verzí Visual Studia. Bez něj by
to nešlo.</p>

<p>Kdysi jsem ze zvědavosti pokukoval po <a
href="http://www.pradosoft.com/">PRADO frameworku</a> pro PHP. Dost mě
odrazoval zápis, spousta XML, spousta souborů, spousta konfigurace. PRADO to
všechno odkoukalo právě od ASP.NET, jenže tady se to používá strašně
pohodlně, díky skvělému IDE…</p>

<p>Kromě VWD už používám jenom <a href="http://www.nunit.org/">NUnit</a> na
testy jednotek, jiné nástroje jsem zatím nepotřeboval. Až budu mít co
dokumentovat a verzovat, tak přibude ještě <a
href="http://www.codeplex.com/Sandcastle">Sandcastle</a> a <a
href="http://subversion.tigris.org/">Subversion</a>. Víc mě nenapadá.</p>

<h3>ASP.NET MVC</h3>

<p>Jak mi bylo poraděno, podíval jsem se na <a
href="http://www.asp.net/mvc/">ASP.NET MVC</a>. Některé věci mě vysloveně
nadchly, ale <a
href="http://webtrh.cz/showpost.php?p=122418&amp;postcount=42">nebudu se
opakovat</a>. Zkrátka je to hodně povedený framework.</p>

<p>Jednu věc ale stále nechápu: Proč se v šablonách místo controlů
používají hloupé helpery. To nikdo nepoužívá design mód? Kdybych se pro
ASP.NET MVC rozhodl, tak bych určitě začal vytvořením nějaké sady
controlů.</p>

<p>Nicméně, ač se mi ASP.NET MVC hodně líbí provedením, nelíbí se mi
koncepcí. Zkrátka mi nesedí ten RoR přístup k MVC.</p>

<h3>ASP.NET built-in page controller</h3>

<p>Mnohem víc mi sedí to, čemu se prý říká Page Controller. To je
přístup, při kterém si programátor může webové UI představit jako
soustavu stránek.</p>

<p>To nabízí ASP.NET v základní výbavě. V současné verzi je dokonce
možné i pro tento přístup <a
href="http://rarous.net/weblog/296-url-routing-v-asp-net-cast-prvni.aspx">použít
routing</a>, tedy přizpůsobitelné mapování URL na stránku.</p>

<p>Bohužel některé věci v ASP.NET nejsou uspokojivě vyřešeny. Hlavní
problémy vidím zatím tři:</p>

<ul>
	<li>Předávání stavu aplikace.</li>

	<li>Generování ClientID.</li>

	<li>Automatické testování.</li>
</ul>

<p>Trochu to rozvedu.</p>

<h3>Předávání stavu aplikace</h3>

<p>Stránku si lze představit jako strom komponent, z nichž některé můžou
měnit svůj stav na základě uživatelských akcí. Problém je, jak tento
stav předávat mezi jednotlivými HTTP požadavky.</p>

<p>ASP.NET pro to nabízí ViewState. To je taková kolekce, do které si
každá komponenta může uložit data, která jí při příštím požadavku
pomůžou obnovit svůj stav. ASP.NET nabízí dva způsoby, jak tuto kolekci
přenášet mezi požadavky:</p>

<ol>
	<li><strong>Skryté pole.</strong> Stránka se obalí formulářem, do něj se
	dá skryté pole a do něj serializovaný ViewState. Požadavky je pak nutné
	provádět odesláním tohoto formuláře – tlačítkem nebo
	javascriptem.</li>

	<li><strong>Session.</strong> Viewstate se uloží do session, na klienta se
	přenáší pouze session ID.</li>
</ol>

<p>Hlavní nevýhody obou možností jsou zřejmé:</p>

<ul>
	<li>Nelze používat bookmarky, nelze odkazovat.</li>

	<li>Neprojdou roboty vyhledávačů.</li>

	<li>Ve druhém případě navíc hrozí expirace session.</li>
</ul>

<p>Výhodou je, že do ViewState lze uložit jakýkoli serializovatelný objekt,
ale ty nevýhody to stejně nevyváží.</p>

<p>Jak jinak lze předávat stav uživatelského rozhranní? Přece v URL, jako
každá slušná webová aplikace. Bohužel, pro toto paradigma ASP.NET žádné
usnadnění nenabízí. Tady si budu muset ASP.NET trochu přiohnout.</p>

<h3>Generování ClientID</h3>

<p>Pokud se server control vykresluje do HTML a má mít nějaké ID, je
potřeba zajistit, aby bylo v rámci HTML stránky jedinečné. ASP.NET pro to
má řešení, ale takové hloupé.</p>

<p>Zatím mě to moc nepálí, ale přemýšlím, že u svých vlastních
controlů umožním klientské ID nastavit napevno:</p>

<pre class="cpp"><code><span
class="cpp-keywords1">private</span> string _clientID;

<span
class="cpp-keywords1">public</span> override string ClientID
{
    get
    {
        <span
class="cpp-keywords1">if</span> (_clientID == null)
        {
            _clientID = base.ClientID;
        }
        <span
class="cpp-keywords1">return</span> _clientID;
    }
}

<span
class="cpp-keywords1">public</span> string CustomClientID
{
    set
    {
        _clientID = value;
    }
}</code></pre>

<h3>Automatické testování</h3>

<p>Podle toho, co jsem četl, je prý obtížné vytvořit instanci stránky
jinak, než requestem na server. Velký problém v tom nevidím – na
samotných stránkách by k white-box testování beztak nic moc být nemělo.
Ale ještě se na to podívám.</p>

<!-- by Texy2! -->]]></content:encoded>
			<wfw:commentRss>http://xn--1caaa.info/prvni-dojmy-z-aspnet/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Software: GimPhoto a hlavně GimPad</title>
		<link>http://xn--1caaa.info/software-gimphoto-a-hlavne-gimpad/</link>
		<comments>http://xn--1caaa.info/software-gimphoto-a-hlavne-gimpad/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 18:58:38 +0000</pubDate>
		<dc:creator>LLook</dc:creator>
		
		<category><![CDATA[Nezařazené]]></category>

		<guid isPermaLink="false">http://xn--1caaa.info/software-gimphoto-a-hlavne-gimpad/</guid>
		<description><![CDATA[
<p>Programy GimPhoto a GimPad tvoří dohromady jakousi alternativu
k Photoshopu pro nenáročné zdarma. Oba jsou pouze pro Windows.</p>

<p>GimPhoto</p>

<p>GimPhoto je vpodstatě úplně normální Gimp, akorát má trochu jinak
členěná menu a má oproti holému Gimpu navíc pár plug-inů, štětců
apod. Autor této úpravy se snaží všechny funkce dát pokud možno tam, kde
jsou k nalezení ve Photoshopu.</p>

<p>To je samo o sobě užitečné, ale pořád […]</p>

<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[
<p>Programy <a href="http://www.gimphoto.com/">GimPhoto a GimPad</a> tvoří
dohromady jakousi alternativu k Photoshopu pro nenáročné zdarma. Oba jsou
pouze pro Windows.</p>

<h3>GimPhoto</h3>

<p>GimPhoto je vpodstatě úplně normální Gimp, akorát má trochu jinak
členěná menu a má oproti holému Gimpu navíc pár plug-inů, štětců
apod. Autor této úpravy se snaží všechny funkce dát pokud možno tam, kde
jsou k nalezení ve Photoshopu.</p>

<p>To je samo o sobě užitečné, ale pořád je to na první pohled Gimp:
Pořád plýtvá hlavními okny a šíleně tím znepřehledňuje taskbar.</p>

<h3>GimPad</h3>

<p>Tohle je bomba! Je to jakási obálka pro GimPhoto, aby používal pouze
jedno hlavní okno (jako Photoshop pro Windows). Pokud má toto hlavní okno
focus, tak jsou Gimpovské panely vždy navrchu (překrývají okna
obrázků):</p>

<div><a
href="http://xn--1caaa.info/wp-content/uploads/2008/09/gimpad-screenshot.png"><img
src="http://xn--1caaa.info/wp-content/uploads/2008/09/gimpad-screenshot.thumbnail.png"
alt="gimpad-screenshot.png" /></a></div>

<p>Tím to ale nekončí. Panely lze přetáhnout pryč z okna (třeba na jiný
monitor) a i potom zůstávají navrchu, dokud má GimPad focus. Přepnete na
jinou aplikaci a panely zmizí, přepnete zpět na GimPad, panely se
objeví.</p>

<p>Na druhém monitoru mi obvykle běží přehrávač hudby a nemám rád,
když mi ho zbytečně něco překrývá. Nástroje Gimpu mi ho díky GimPadu
překrývají jenom po dobu, kdy v něm něco dělám, to je ideální.</p>

<h3>Autor obou programů</h3>

<p>Jmenuje se Ek kian a je to vysokoškolský učitel z Indonésie. V práci
si zvykl na Photoshop, ale na doma si ho nemohl dovolit. A tak si svůj
vytoužený program prostě vyrobil. Má můj obdiv.</p>

<!-- by Texy2! -->]]></content:encoded>
			<wfw:commentRss>http://xn--1caaa.info/software-gimphoto-a-hlavne-gimpad/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dokumentační komentáře v C#</title>
		<link>http://xn--1caaa.info/dokumentacni-komentare-v-c/</link>
		<comments>http://xn--1caaa.info/dokumentacni-komentare-v-c/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 19:38:03 +0000</pubDate>
		<dc:creator>LLook</dc:creator>
		
		<category><![CDATA[Nezařazené]]></category>

		<guid isPermaLink="false">http://xn--1caaa.info/dokumentacni-komentare-v-c/</guid>
		<description><![CDATA[
<p>Podrobně je to na MSDN, tohle je takový můj stručný výtah.</p>

<p>Dokumentační blok</p>

<p>Docbloky se v C# dělají trochu odlišně od Javy nebo PHP. Skládají se
z řádkových komentářů, které mají o lomítko víc a jednotlivé
části se uzavírají do jakoby-XML značek:</p>

<p>/// &lt;summary&gt; /// Stručný popis třídy Foo. /// &lt;/summary&gt;
public class Foo {<br />
/// &lt;summary&gt;<br />
/// Popis metody Bar.<br />
[…]</p>
]]></description>
			<content:encoded><![CDATA[
<p><a
href="http://msdn.microsoft.com/cs-cz/library/b2s063f7(en-us).aspx">Podrobně je
to na MSDN</a>, tohle je takový můj stručný výtah.</p>

<h3>Dokumentační blok</h3>

<p>Docbloky se v C# dělají trochu odlišně od Javy nebo PHP. Skládají se
z řádkových komentářů, které mají o lomítko víc a jednotlivé
části se uzavírají do jakoby-XML značek:</p>

<pre class="cpp"><code><span
class="cpp-comment">/// &lt;summary&gt;
/// Stručný popis třídy Foo.
/// &lt;/summary&gt;
</span><span
class="cpp-keywords1">public</span> <span
class="cpp-keywords1">class</span> Foo
{
    <span
class="cpp-comment">/// &lt;summary&gt;
</span>    <span
class="cpp-comment">/// Popis metody Bar.
</span>    <span
class="cpp-comment">/// &lt;/summary&gt;
</span>    <span
class="cpp-comment">/// &lt;param name=&quot;abc&quot;&gt;Popis parametru abc.&lt;/param&gt;
</span>    <span
class="cpp-comment">/// &lt;returns&gt;Metoda vrátí 123.&lt;/returns&gt;
</span>    <span
class="cpp-keywords1">public</span> <span
class="cpp-keywords1">int</span> Bar(string abc)
    {
        <span
class="cpp-keywords1">return</span> <span
class="cpp-num">123</span>;
    }
}</code></pre>

<p>(Takhle to vypadá dost nepřehledně, protože zvýrazňovač syntaxe FSHL
neumí C#, v IDE to vypadá o něco lépe.)</p>

<p>Je možné používat i <code>/** */</code> zápis, ale není to
obvyklé.</p>

<h3>Doporučované značky</h3>

<table>
	<tbody>
		<tr>
			<th>Značka</th>

			<th>Popis</th>
		</tr>

		<tr>
			<td><code>&lt;c&gt;</code></td>

			<td>Kus kódu v textu.</td>
		</tr>

		<tr>
			<td><code>&lt;code&gt;</code></td>

			<td>Víceřádkový blok kódu.</td>
		</tr>

		<tr>
			<td><code>&lt;example&gt;</code></td>

			<td>Popis příkladu použití.</td>
		</tr>

		<tr>
			<td><code>&lt;exception cref="..."&gt;</code></td>

			<td>Popis možné výjimky, například: <code>&lt;exception
			cref="SampleException"&gt;Thrown when...&lt;/exception&gt;</code>.</td>
		</tr>

		<tr>
			<td><code>&lt;include filename="..." tagpath="..." name="..." id="..."
			/&gt;</code></td>

			<td>Podle mě zbytečná pitomina. Možnost místo dokumentačního komentáře
			uvést odkaz do jiného souboru…</td>
		</tr>

		<tr>
			<td><code>&lt;list type="..."&gt;</code></td>

			<td>Seznam nebo tabulka. Docela neohrabaný zápis, to asi moc často využívat
			nebudu, <a
			href="http://msdn.microsoft.com/cs-cz/library/y3ww3c7e(en-us).aspx">viz
			MSDN</a>.</td>
		</tr>

		<tr>
			<td><code>&lt;para&gt;</code></td>

			<td>Odstavec. Pokud je třeba <code>&lt;remarks&gt;</code> sekce moc dlouhá,
			může přijít vhod rozčlenit do odstavců.</td>
		</tr>

		<tr>
			<td><code>&lt;param name="..."&gt;</code></td>

			<td>Popis parametru metody, viz příklad výše.</td>
		</tr>

		<tr>
			<td><code>&lt;paramref name="..." /&gt;</code></td>

			<td>
				<p>Odkaz na parametr. Například v popisu metody:</p>

				<p>/// &lt;summary&gt;<br />
				/// Parametr &lt;paramref name=„foo“/&gt; znamená kdovíco.<br />
				/// &lt;/summary&gt;</p>
			</td>
		</tr>

		<tr>
			<td><code>&lt;permission cref="..."&gt;</code></td>

			<td>Tuším, že to souvisí s CAS, ale k tomu jsem se ještě blíže
			nedostal, takže tomu nerozumím…</td>
		</tr>

		<tr>
			<td><code>&lt;remarks&gt;</code></td>

			<td>Doplňující informace, ukecanější pokračování stručného
			<code>&lt;summary&gt;</code>.</td>
		</tr>

		<tr>
			<td><code>&lt;returns&gt;</code></td>

			<td>Popis návratové hodnoty. Viz příklad výše.</td>
		</tr>

		<tr>
			<td><code>&lt;see cref="..." /&gt;</code></td>

			<td>Odkaz z textu na nějaký kód, například: <code>/// Tato metoda k
			něčemu používá &lt;see cref="SampleSpace.SampleClass"/&gt;</code>.</td>
		</tr>

		<tr>
			<td><code>&lt;seealso cref="..." /&gt;</code></td>

			<td>Odkaz na kód, který v dokumentaci patří do sekce „See Also“.</td>
		</tr>

		<tr>
			<td><code>&lt;summary&gt;</code></td>

			<td>Stručný popis popisovaného prvku (třídy, metody apod.).</td>
		</tr>

		<tr>
			<td><code>&lt;typeparam name="..."&gt;</code></td>

			<td>Popis typového parametru. Například u třídy
			<code>SampleClass&lt;T,U&gt;</code> jsou typové parametry <code>T</code> a
			<code>U</code>, ty lze tedy dokumentovat touto značkou.</td>
		</tr>

		<tr>
			<td><code>&lt;typeparamref name="..." /&gt;</code></td>

			<td>Podobné jako <code>&lt;paramref name="..."/&gt;</code>, akorát tady se
			odkazujeme na typový parametr.</td>
		</tr>

		<tr>
			<td><code>&lt;value&gt;</code></td>

			<td>Popis hodnoty property.</td>
		</tr>
	</tbody>
</table>

<h3>Využití</h3>

<p>Především tuhle dokumentaci využívá IntelliSense.</p>

<p>Krom toho je možné z toho vygenerovat API dokumentaci nástrojem
Sandcastle, postup ale není úplně přímočarý, viz:</p>

<ul>
	<li><a
	href="http://trupik.aspweb.cz/programovani/csharp-aspnet/sandcastle-generovani-dokumentace-z-xml-komentaru-nastupce-ndoc.aspx">Trupíkův
	weBlog: Sandcastle – generování dokumentace z XML komentářů
	(nástupce NDoc)</a></li>

	<li><a
	href="http://blog.teuzz.net/91-sandcastle-reseni-nekterych-problemu/">Jirka
	Helmich: Sandcastle – řešení některých problémů</a></li>
</ul>

<!-- by Texy2! -->]]></content:encoded>
			<wfw:commentRss>http://xn--1caaa.info/dokumentacni-komentare-v-c/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Texy: Složitější buňky v tabulce</title>
		<link>http://xn--1caaa.info/texy-slozitejsi-bunky-v-tabulce/</link>
		<comments>http://xn--1caaa.info/texy-slozitejsi-bunky-v-tabulce/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 17:22:18 +0000</pubDate>
		<dc:creator>LLook</dc:creator>
		
		<category><![CDATA[Nezařazené]]></category>

		<guid isPermaLink="false">http://xn--1caaa.info/texy-slozitejsi-bunky-v-tabulce/</guid>
		<description><![CDATA[
<p>Jenom takový malý tip, jak v Texy docílit tohoto:</p>

<p>Nadpis</p>

<p>Nadpis</p>

<p>text</p>

<p>Jednořádková buňka.</p>

<p>text</p>

<p>První odstavec.</p>

<p>Druhý odstavec.</p>

<p>text</p>

<p>První položka.</p>

<p>Druhá položka.</p>

<p>Tabulky se v Texy dělají intuitivně, dokud v nich jsou jednořádková
data. Pro víceřádková jsem musel trochu zaexperimentovat, ale přišel
jsem na to:</p>

<p>|--------------------------- | Nadpis | Nadpis |--------------------------- |
text | Jednořádková buňka. | text | První odstavec. | ^| ^ | […]</p>

<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[
<p>Jenom takový malý tip, jak v Texy docílit tohoto:</p>

<table>
	<thead>
		<tr>
			<th>Nadpis</th>

			<th>Nadpis</th>
		</tr>
	</thead>

	<tbody>
		<tr>
			<td>text</td>

			<td>Jednořádková buňka.</td>
		</tr>

		<tr>
			<td>text</td>

			<td>
				<p>První odstavec.</p>

				<p>Druhý odstavec.</p>
			</td>
		</tr>

		<tr>
			<td>text</td>

			<td>
				<ul>
					<li>První položka.</li>

					<li>Druhá položka.</li>
				</ul>
			</td>
		</tr>
	</tbody>
</table>

<p>Tabulky se v Texy dělají intuitivně, dokud v nich jsou jednořádková
data. Pro víceřádková jsem musel trochu zaexperimentovat, ale <a
href="http://texy.info/cs/try/4o7jf">přišel jsem na to</a>:</p>

<pre
class="texy"><code>|---------------------------
| Nadpis | Nadpis
|---------------------------
| text   | Jednořádková buňka.
| text   | První odstavec.
|       ^| ^
|       ^| Druhý odstavec. ^
| text   | - První položka.
|       ^| - Druhá položka. ^</code></pre>

<!-- by Texy2! -->]]></content:encoded>
			<wfw:commentRss>http://xn--1caaa.info/texy-slozitejsi-bunky-v-tabulce/feed/</wfw:commentRss>
		</item>
		<item>
		<title>MPC ve Vistách</title>
		<link>http://xn--1caaa.info/mpc-ve-vistach/</link>
		<comments>http://xn--1caaa.info/mpc-ve-vistach/#comments</comments>
		<pubDate>Sun, 07 Sep 2008 09:31:36 +0000</pubDate>
		<dc:creator>LLook</dc:creator>
		
		<category><![CDATA[Nezařazené]]></category>

		<guid isPermaLink="false">http://xn--1caaa.info/mpc-ve-vistach/</guid>
		<description><![CDATA[
<p>Media Player Classic není za určitého nastavení kompatibilní s novými
eye-candies Windows Vista. Po spuštění se barevné schéma přepne na
Vista Basic:</p>

<p>Správné nastavení (Zobrazit → Možnosti → Výstup):</p>

<p>Stačilo pouze výstup DirectShow videa nastavit na „výchozí“.</p>

<p>Nevím, proč „výchozí“ nebylo ve výchozím nastavení… MPC jsem
nainstaloval spolu s nějakým codec packem, tak možná proto.</p>

<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[
<p><a href="http://sourceforge.net/projects/guliverkli/">Media Player
Classic</a> není za určitého nastavení kompatibilní s novými eye-candies
Windows Vista. Po spuštění se barevné schéma přepne na Vista Basic:</p>

<div><a
href="http://xn--1caaa.info/wp-content/uploads/2008/09/mpc-barevne-schema.png"><img
src="http://xn--1caaa.info/wp-content/uploads/2008/09/mpc-barevne-schema.thumbnail.png"
alt="mpc-barevne-schema.png" /></a></div>

<p>Správné nastavení (<em>Zobrazit → Možnosti → Výstup</em>):</p>

<div><a
href="http://xn--1caaa.info/wp-content/uploads/2008/09/mpc-vista-nastaveni.png"><img
src="http://xn--1caaa.info/wp-content/uploads/2008/09/mpc-vista-nastaveni.thumbnail.png"
alt="mpc-vista-nastaveni.png" /></a></div>

<p>Stačilo pouze výstup DirectShow videa nastavit na „výchozí“.</p>

<p>Nevím, proč „výchozí“ nebylo ve výchozím nastavení… MPC jsem
nainstaloval spolu s nějakým codec packem, tak možná proto.</p>

<!-- by Texy2! -->]]></content:encoded>
			<wfw:commentRss>http://xn--1caaa.info/mpc-ve-vistach/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Javou PHP nenahradíš</title>
		<link>http://xn--1caaa.info/javou-php-nenahradis/</link>
		<comments>http://xn--1caaa.info/javou-php-nenahradis/#comments</comments>
		<pubDate>Sun, 31 Aug 2008 13:49:01 +0000</pubDate>
		<dc:creator>LLook</dc:creator>
		
		<category><![CDATA[Nezařazené]]></category>

		<guid isPermaLink="false">http://xn--1caaa.info/javou-php-nenahradis/</guid>
		<description><![CDATA[
<p>Tak jsem dal šanci Javě a nejdřív se mi to hodně líbilo. Nadchlo mě
i IDE NetBeans, to se s ničím pro PHP nedá srovnat…</p>

<p>Současná Java 6 je jenom taková vylepšená pětka. Java 5 byla
přelomová verze, která přinesla generiky a anotace. Díky anotacím už
není nutné ke každému projektu udržovat miliony XML souborů a generiky
zase odstranily mnoho problémů statického typování.</p>

<p>Taky jsem […]</p>
]]></description>
			<content:encoded><![CDATA[
<p>Tak jsem dal šanci Javě a nejdřív se mi to hodně líbilo. Nadchlo mě
i IDE NetBeans, to se s ničím pro PHP nedá srovnat…</p>

<p>Současná Java 6 je jenom taková vylepšená pětka. Java 5 byla
přelomová verze, která přinesla generiky a anotace. Díky anotacím už
není nutné ke každému projektu udržovat miliony XML souborů a generiky
zase odstranily mnoho problémů statického typování.</p>

<p>Taky jsem si trochu ujasnil termíny jako „aplikační server“ nebo
„J2EE aplikační server“, resp. „Java EE aplikační server“. Dost mi
pomohl článek od Dagiho: <a
href="http://www.sweb.cz/pichlik/archive/2004_11_07_archive.html#110012817926264151">Třívrstvá
architektura v kostce I.</a></p>

<p>Zatímco za <strong>aplikační server</strong> lze považovat klidně
i LAMP, tak <strong>Java EE aplikační server</strong> je takový aplikační
server, který splňuje komplet některou Java EE specifikaci. Pro většinu
projektů je to čirá zbytečnost, ale velké firmy na to slyší. Když už
mají investovat miliony do nějaké technologie, tak pochopitelně raději
volí software IBM s certifikací od Sunu, než software od jakési Apache
Foundation s licencí „AS-IS, NO WARRANTY“.</p>

<p>Já bych využil jenom několik málo komponent Javy EE, jako základ bych
měl Tomcat + pár dalších open source knihoven. Java je ohromná stavebnice,
to se mi líbí.</p>

<h3>Jenže…</h3>

<p>Už jsem rozečetl i jeden tutoriál pro Javu EE, ale poslední tři týdny
se skoro nedokážu přimět k tomu sednout. Proč? <a
href="http://xn--1caaa.info/mizerie-java-hostingu/">To o těch hostinzích</a>
mě připravilo o iluze a já si pomalu uvědomuju, že hostovat na sdíleném
Tomcatu nechci a platit si VPS zatím taky ne.</p>

<p>Zkrátka že Java nemůže konkurovat PHP na poli nízkonákladových
webových projektů. Nic pro nás hobbíky.</p>

<p>O návratu k PHP jsem uvažoval jenom krátkou chvíli. Nepouští mě
strach z toho, že budu všechno pracně upravovat, až vyjde další minor
verze (PHP 5.3) a celé psát odznova, až vyjde další major verze (PHP 6).
Vím jenom o dvou aplikacích, které od PHP3 po PHP5 přežily bez
kompletního přepsání. Jinak se všechno v PHP píše pořád odznova…</p>

<p>Kontumačně se dostávám k ASP.NET. Moc nadšený z toho zatím nejsem,
ale horší než PHP to snad být nemůže. <img
src="http://xn--1caaa.info/wp-includes/images/smilies/icon_wink.gif" alt=";-)"
class="smiley" width="15" height="15" /></p>

<!-- by Texy2! -->]]></content:encoded>
			<wfw:commentRss>http://xn--1caaa.info/javou-php-nenahradis/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Olympipakárna 2008</title>
		<link>http://xn--1caaa.info/olympipakarna-2008/</link>
		<comments>http://xn--1caaa.info/olympipakarna-2008/#comments</comments>
		<pubDate>Sun, 17 Aug 2008 18:20:23 +0000</pubDate>
		<dc:creator>LLook</dc:creator>
		
		<category><![CDATA[Nezařazené]]></category>

		<guid isPermaLink="false">http://xn--1caaa.info/olympipakarna-2008/</guid>
		<description><![CDATA[
<p>(Tohle bude na této adrese první článek o světě tam venku, za
internetem.)</p>

<p>Tak nám zase probíhá jedna hra na sport… Dřív jsem měl dost
vyhraněný postoj k olympiádě, vadilo mi to pokrytectví: Jak se
předstírá, že jde o něco víc, než továrnu na prachy a pěknou show.
Kecy o sportu, o oslavě síly těla a ducha apod. Přitom co je
nejdůležitější a také nejsledovanější disciplínou? […]</p>

<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[
<p>(Tohle bude na této adrese první článek o světě tam venku, za
internetem.)</p>

<p>Tak nám zase probíhá jedna hra na sport… Dřív jsem měl dost
vyhraněný postoj k olympiádě, vadilo mi to pokrytectví: Jak se
předstírá, že jde o něco víc, než továrnu na prachy a pěknou show.
Kecy o sportu, <strong>o oslavě síly těla a ducha</strong> apod. Přitom co
je nejdůležitější a také nejsledovanější disciplínou? Jednoznačně
slavnostní zahájení s ohňostrojem – <strong>oslava síly zábavního
průmyslu</strong>.</p>

<p>Myslím, že se to olympiádě stalo tehdy v roce 1936, do té doby to byla
spíše hobbícká akce. Německo ukázalo světu, jaký potenciál se v OH
skrývá: Že je to další příležitost pro dokazování, že právě lidé
z určité země jsou ostatním nadřazení.</p>

<p>Se studenou válkou se to pak pořádně rozjelo na všech stranách severní
polokoule: Provázela to propaganda, tu provázel zájem diváků i sportovců
(propaganda funguje), to přilákalo „sponzory“, ti přilákali
spotřebitele a to zase další „sponzory“, kolo se roztočilo…
<strong>Sport už není cílem, ale prostředkem.</strong></p>

<p>Ale… Spousta věcí kolem OH mi sice stále vadí (například náš <a
href="http://www.blisty.cz/2008/6/4/art41009.html">zákon 60/2000</a> mi bude
pít krev, dokud bude v platnosti), ale už na ni nenahlížím tak
černobíle:</p>

<ol>
	<li>Pro zúčastněné sportovce to je splnění snu, které jim přeju.</li>

	<li>Někteří diváci si tím budují vztah ke svému původu, jiné to
	inspiruje k vlastní sportovní aktivitě (v lepším případě rekreační,
	ale i vrcholový sport je lepší než žádný), další se třeba „jenom“
	pobaví a všichni se shodnou, že show je to velkolepá.</li>

	<li>Poskytuje témata k diskuzi. Letos například tráva a sport – ano či
	ne, nebo velká mezinárodní akce v totalitní zemi – ano či ne.</li>

	<li>Nechá vydělat spoustě lidí – údržbáři sportovišť počínaje,
	lobbisty jednotlivých měst konče.</li>
</ol>

<p>Kdyby to byla čistě soukromá akce a kdyby se tolik neschovávala za
polomrtvé ideály, mohla by mi být docela sympatická. Jako různá
mistrovství ve fotbale, hokeji, golfu, pokeru a podobně.</p>

<p>Tak tohle je zhruba můj současný postoj k olympijským hrám.</p>

<hr />

<p>To je zatím vše, příští článek snad bude zase o Javě.</p>

<!-- by Texy2! -->]]></content:encoded>
			<wfw:commentRss>http://xn--1caaa.info/olympipakarna-2008/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
