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

<channel>
	<title>Martin Hassman: nejen o prohlížečích &#187; Software</title>
	<atom:link href="http://met.blog.root.cz/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://met.blog.root.cz</link>
	<description></description>
	<lastBuildDate>Fri, 25 Nov 2011 08:48:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Máme tu návody k Foursquare a Gowalle pod Creative Commons</title>
		<link>http://met.blog.root.cz/2011/05/03/mame-tu-navody-k-foursquare-a-gowalle-pod-creative-commons/</link>
		<comments>http://met.blog.root.cz/2011/05/03/mame-tu-navody-k-foursquare-a-gowalle-pod-creative-commons/#comments</comments>
		<pubDate>Tue, 03 May 2011 21:18:58 +0000</pubDate>
		<dc:creator>Martin Hassman</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[foursquare]]></category>
		<category><![CDATA[geolokace]]></category>
		<category><![CDATA[gowalla]]></category>

		<guid isPermaLink="false">http://met.blog.root.cz/?p=3237</guid>
		<description><![CDATA[O Foursquare i Gowalle toho bylo už napsáno dost, ale zatím stále chyběly návody pro začínající uživatele. A těch přibývá (hlavně u Foursquare).
Dobrá zpráva je, že konečně návody máme. A dokonce pod Creative Commons licencemi.

Marek Lutonský napsal návod Proč a jak používat geolokační hru Foursquare.
Alena Říhová napsala Návod na použití Gowally.
Pokud k nim máte nějaké [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-3238" src="http://met.blog.root.cz/files/2011/05/foursquare-logo.png" alt="" width="170" height="47" />O <a href="https://foursquare.com/">Foursquare</a> i <a href="http://gowalla.com/">Gowalle</a> toho bylo už napsáno dost, ale zatím stále chyběly návody pro začínající uživatele. A těch přibývá (hlavně u Foursquare).</p>
<p>Dobrá zpráva je, že konečně návody máme. A dokonce pod Creative Commons licencemi.</p>
<p><img class="size-full wp-image-3240 alignright" src="http://met.blog.root.cz/files/2011/05/button.png" alt="" width="80" height="80" /></p>
<p>Marek Lutonský napsal návod <a href="http://knol.google.com/k/marek-lutonský/foursquare/v00m5wzh3qgr/1">Proč a jak používat geolokační hru Foursquare</a>.</p>
<p>Alena Říhová napsala <a href="http://knol.google.com/k/alena-říhová/gowalla/8m9xc41zds1p/1">Návod na použití Gowally</a>.</p>
<p>Pokud k nim máte nějaké připomínky, pište.  Hlavně ten druhý na Gowallu ještě trochu dolaďujeme.</p>
<p><strong>Čekovací muzení noc v Brně</strong></p>
<p>Pokud jste z Brna a okolí, můžete si Foursquare nebo Gowallu vyzkoušet na <a href="http://www.facebook.com/brnoc">Čekovací muzejní noci</a>, která probíhá pod záštitou <a href="Moravská galerie v Brně">Moravské galerie v Brně</a>.</p>
<p>Čekovací noc organizuji společně s <a href="http://twitter.com/marekl">Markem Lutonským</a>. Pokud se chcete připojit, <a href="http://www.facebook.com/event.php?eid=128263480582636">zapište se na Facebooku</a> nebo na <a href="http://srazy.info/brnenska-cekovaci-muzejni-noc/1085">Srazy.info</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://met.blog.root.cz/2011/05/03/mame-tu-navody-k-foursquare-a-gowalle-pod-creative-commons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>#SongsInCode #CZ &#8211; přidáte se?</title>
		<link>http://met.blog.root.cz/2009/08/21/songsincode-cz-pridate-se/</link>
		<comments>http://met.blog.root.cz/2009/08/21/songsincode-cz-pridate-se/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 06:03:39 +0000</pubDate>
		<dc:creator>Martin Hassman</dc:creator>
				<category><![CDATA[Humor]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://met.blog.root.cz/?p=751</guid>
		<description><![CDATA[Borek včera zahájil českou variantu programátorské řetězovky #songsincode (popis). A během noci se celkem ujala. Twitter archiv bohužel po nějaké době mizí. Dnes je tak již jednou pro vždy ztracena řada podobných akcí (včetně plného záznamu nezapomenutelné akce Mr. Retweeta). Vytvořil jsem proto malý archiv alespoň zde.
#SongsInCode #CZ
borekb: if (kosilecka.maBytUsita &#38;&#38; jahle==false &#38;&#38; nite==false) then [...]]]></description>
			<content:encoded><![CDATA[<p>Borek <a href="http://twitter.com/borekb/status/3432683411">včera zahájil</a> českou variantu programátorské řetězovky <a href="http://search.twitter.com/search?q=songsincode">#songsincode</a> (<a href="http://www.sitepoint.com/blogs/2009/08/21/geeks-just-wanna-have-fun-songsincode/">popis</a>). A během noci se <a href="http://search.twitter.com/search?q=%23songsincode+%23cz">celkem ujala</a>. Twitter archiv bohužel po nějaké době mizí. Dnes je tak již jednou pro vždy ztracena řada podobných akcí (včetně plného záznamu <a href="http://www.jantichy.cz/blog/retvitovani">nezapomenutelné akce Mr. Retweeta</a>). Vytvořil jsem proto malý archiv alespoň zde.</p>
<h3>#SongsInCode #CZ</h3>
<p><a href="http://twitter.com/borekb" target="_blank">borekb</a>: <span class="msgtxt sv">if (kosilecka.maBytUsita &amp;&amp; jahle==false &amp;&amp; nite==false) then {var vyska=Integer.MAX_VALUE; createZebrik(vyska);}</span></p>
<p><a href="http://twitter.com/hassmanm" target="_blank">hassmanm</a>: <span class="msgtxt it">cunik1.go(); cunik2.go(); cunik3.go();</span></p>
<p><a href="http://twitter.com/hassmanm" target="_blank">hassmanm</a>: <span class="msgtxt da">[skafandr, helma, palivo, kyslík, raketoplán, trysky].every(function(i) { alert("Máš " + i + "?"); return 1 })</span></p>
<p><a href="http://twitter.com/adamsnobl" target="_blank">adamsnobl</a>: <span class="msgtxt es">oci = "cerne"; goto sleep_;</span></p>
<p><a href="http://twitter.com/Mingan" target="_blank">Mingan</a>: <span class="msgtxt en">Klára.status(20.30, 8.00); Klára.checkCompatibility(Me);</span></p>
<p><a href="http://twitter.com/hercegtomas" target="_blank">hercegtomas</a>: <span class="msgtxt it">Cinnosti.Where(o =&gt; (o.Povolani == Povolani.Hasic) &amp;&amp; Math.Abs(o.Cas - pivovar.CasPozaru) &lt; 3600)</span></p>
<p><a href="http://twitter.com/hassmanm" target="_blank">hassmanm</a>: <span class="msgtxt es">a = (Tečka == šílenec); // !a == true</span></p>
<p><a href="http://twitter.com/adamsnobl" target="_blank">adamsnobl</a>: <span class="msgtxt no">pes.skok(oves); pes.skok(louka["zelena"]); myslivec.goAfter(pes); myslivec.klobouk.setPero(true);</span></p>
<p><a href="http://twitter.com/timycz" target="_blank">timycz</a>: <span class="msgtxt en">bool Ishome = (Synek.Location == Locations.Home); Father.Question(() =&gt; Plowed(Synek));</span></p>
<p><a href="http://twitter.com/timycz" target="_blank">timycz</a>: <span class="msgtxt en">fox = new Fox(); fox.Run(Camp).Take(new Sack('ginger'));</span></p>
<p><a href="http://twitter.com/adamsnobl" target="_blank">adamsnobl</a>: <span class="msgtxt en">select * from DOMY where DUM = 'holubi' and DIVKA = 'chodiSpat'; </span></p>
<p><a href="http://twitter.com/hassmanm" target="_blank">hassmanm</a>: <span class="msgtxt en">SELECT latitude,longitude FROM places WHERE CONTAINS(flowers); SELECT latitude,longitude FROM places WHERE CONTAINS(girls)</span></p>
<p><a href="http://twitter.com/Freemanix" target="_blank">Freemanix</a>: <span class="msgtxt da">for(i = 0; i &lt; 2; ++i) { if(val == 5) return false; }</span></p>
<p><a href="http://twitter.com/krystof_k" target="_blank">krystof_k</a>: <span class="msgtxt it">SET dari = 'dobre' WHERE pivo = vari;  SET zije = dobre WHERE pivo = pije;</span></p>
<p><a href="http://twitter.com/adent" target="_blank">adent</a>: <span class="msgtxt en">if ($needs.fulfilled() &gt; now()) $work-&gt;goTo(WORK_MODE_ENTHUSIASTICALLY);</span></p>
<p><a href="http://twitter.com/arcao" target="_blank">arcao</a>: <span class="msgtxt nl">zed.contains(trezor); // false</span></p>
<p><a href="http://twitter.com/MartinSadovy" target="_blank">MartinSadovy</a>: <span class="msgtxt es">$kocka-&gt;leze('dira');$pes-&gt;leze('okno'); $pocasi-&gt;zmokne($pes,$kocka);do;while($pocasi-&gt;prsi); $pocasi-&gt;uschne($kocka,$pes)</span></p>
<p><a href="http://twitter.com/hassmanm" target="_blank">hassmanm</a>: <span class="msgtxt no">$killall -9 man_from_kolocava</span></p>
<p><a href="http://twitter.com/Mingan" target="_blank">Mingan</a>: <span class="msgtxt es">Domov = array(voda.hučet(lučiny), bory.šumět(skaliny), sad.květ[jarní] = true); echo pohled(Domov); //vypíše "ráj"</span></p>
<p><a href="http://twitter.com/medhi_" target="_blank">medhi_</a>: <span class="msgtxt eo">$rybnik-&gt;name = 'Talinsky'; $rybnik.-&gt;load(); $vodenka.position = $rybnik-&gt;margin;</span></p>
<p><a href="http://twitter.com/timycz" target="_blank">timycz</a>: <span class="msgtxt en">Coffee.Sugar++;</span></p>
<p><a href="http://twitter.com/renestein" target="_blank">renestein</a>: <span class="msgtxt en">var nanynka=create(zeli);var t=new Thread(nanynka.trhatLupeni(sharedKosicek));pepicek.ZtlumitAmok(sharedKosicek); berserk();<br />
</span></p>
<p><a href="http://twitter.com/bver" target="_blank">bver</a>: <span class="msgtxt en">! self.jet_do(:les) and ! self.jit_do(:les) ; hajny.remove( :sekera ) if hajny.prijit_na(self)</span></p>
<p><a href="http://twitter.com/mikiqex" target="_blank">mikiqex</a>: <span class="msgtxt en">CerneOci-&gt;GoTo(postel); while (true) { if (rano &amp;&amp; Slunicko.Vyjde() &gt; now) { CerneOci-&gt;Vstat(); break; } //2 sloky naraz :)</span></p>
<p><a href="http://twitter.com/arcao" target="_blank">arcao</a>: <span class="msgtxt en">$les-&gt;setMaster($hajny); $zver-&gt;love($hajny); $les-&gt;setKing($hajny); $pytlak-&gt;fear($hajny)</span></p>
<p><a href="http://twitter.com/mikiqex" target="_blank">mikiqex</a>: <span class="msgtxt en">k=this;k.hrajem=now();k.author="Jara Cimrman";k.type=KType.Zabavne; k.end=true;k.fee=2;k.schedule={now(),Date.SO,Date.NE}</span></p>
<p><a href="http://twitter.com/mikiqex" target="_blank">mikiqex</a>: <span class="msgtxt en">pec=null; pec = new Pec(call Dedecek())</span></p>
<p><a href="http://twitter.com/adamsnobl" target="_blank">adamsnobl</a>: <span class="msgtxt en">declare CJOZIN cursor for select JOZIN from MORAVA.BAZINY; open CJOZIN; fetch CJOZIN into PRASEK; close CJOZIN;</span></p>
<p><a href="http://twitter.com/renestein" target="_blank">renestein</a>: <span class="msgtxt en">while(untilLeninCome) {   MoveForward();   MoveForward();   Assert(Orientation == LeftOnly);   Ensure(noStepBackward); }</span></p>
<p><a href="http://twitter.com/CZMilka" target="_blank">CZMilka</a>: <span class="msgtxt en">if (self+ty) {den='krasny';}</span></p>
<p><a href="http://twitter.com/mikiqex" target="_blank">mikiqex</a>: <span class="msgtxt en">if(this-&gt;doma) this-&gt;bit(); $mama-&gt;hudle($this-&gt;snedl("nudle"));</span></p>
<p><a href="http://twitter.com/Simon_Podlipsky" target="_blank">Simon_Podlipsky</a>: <span class="msgtxt eo">pastviny.onEnterFrame = function() { if (kun+kun == love) { laska.swapDepths(tun); } };</span></p>
<p><a href="http://twitter.com/CZMilka" target="_blank">CZMilka</a>: <span class="msgtxt es">if (promovaníInženýři) {zpívat='sNámi';}</span></p>
<p><a href="http://twitter.com/mikiqex" target="_blank">mikiqex</a>: <span class="msgtxt eo">kolo.typ=Mlynsky;kolo.cena=4;kolo.Dispose();throw new MlynException(); </span></p>
<p><a href="http://twitter.com/adamsnobl" target="_blank">adamsnobl</a>: <span class="msgtxt en">vB=new Vino("bile");vR=new Vino("rude"); vB.setFrom(mila);while(alive) pit(vB); vR.setFrom(milenka);while(alive) pit(vR);</span></p>
<p><a href="http://twitter.com/mikiqex" target="_blank">mikiqex</a>: <span class="msgtxt eo">Babka.Jablek = 4; Dědoušek.Jablek = 2; Dědoušek.getJablka(Babka, 1); Dědoušek.Jablek = Babka.Jablek;</span></p>
<p><a href="http://twitter.com/CZMilka" target="_blank">CZMilka</a>: <span class="msgtxt eo">$senzacniHolky=new Array ('Majdalenka','Apolenka+Veronika', 'Věrka', 'Zdeňka', 'Majka', 'Lenka+Monika', 'Klára', 'Ančí',);</span></p>
<p><a href="http://twitter.com/mikiqex" target="_blank">mikiqex</a>: <span class="msgtxt eo">reward=array("",kuře,husa,tele,kráva,boty,+);for(leto=1;leto&lt;reward.cnt;leto++){earned[]=reward[leto];loop(earned.action);}</span></p>
<p><a href="http://twitter.com/arcao" target="_blank">arcao</a>: <span class="msgtxt en">singer.Known.Add(woman); woman.Residence = new City("Praha", "Dejvice"); woman.BreastSize = Breast.AbnormalSize;</span></p>
<p><a href="http://twitter.com/TomikVitek" target="_blank">TomikVitek</a>: <span class="msgtxt es">to exit; or not to exit;</span></p>
<p><a href="http://twitter.com/mikiqex" target="_blank">mikiqex</a>: <span class="msgtxt en">SELECT hnizdo, skrýš, zázemí FROM area WHERE subject = "Ptáček"; </span></p>
<p><a href="http://twitter.com/mikiqex" target="_blank">mikiqex</a>: <span class="msgtxt eo">mov kytky,divky; mov divky,muzi; mov muzi,vojaci; mov vojaci,hroby; mov hroby,kytky;</span></p>
<p><a href="http://twitter.com/wendig0" target="_blank">wendig0</a>: <span class="msgtxt da">uzdravit($cukr); // false</span></p>
<p><a href="http://twitter.com/CZMilka" target="_blank">CZMilka</a>: <span class="msgtxt eo">if (papoušekKakadu=naparuje) {milá-&gt;otočit(Dozadu);}</span></p>
<p><a href="http://twitter.com/mikiqex" target="_blank">mikiqex</a>: <span class="msgtxt eo">string krize[3];kriz[1]="hrich";kriz[2]="pod zemí";kriz[3]="vztek"; </span></p>
<p><a href="http://twitter.com/mikiqex" target="_blank">mikiqex</a>: <span class="msgtxt en">if (andělé-&gt;call(this)) this-&gt;pohřeb[šumaři] = null;</span></p>
<p><a href="http://twitter.com/borekb" target="_blank">borekb</a>: <span class="msgtxt eo">fixa--;</span></p>
<p><a href="http://twitter.com/VrtakCZ" target="_blank">VrtakCZ</a>: <span class="msgtxt en">$song = new SongInCode("Vrtak-CZ"); if ($song-&gt;prší === TRUE &amp;&amp; $song-&gt;krásně === TRUE) $song-&gt;azBych = "skládal básně";</span></p>
<p><a href="http://twitter.com/adamsnobl" target="_blank">adamsnobl</a>: <span class="msgtxt en">sekera.price=2; topůrko.price=1; všecko.add(sekera).add(topůrko); if(hajný.isComing) hajný.take(všecko);</span></p>
<p><a href="http://twitter.com/keff85" target="_blank">keff85</a>: <span class="msgtxt en">new Future(_ =&gt; { BlackholeDecorator.Decorate(new Sun()).Come().WashAway(Weather.Rain); });</span></p>
<p><a href="http://twitter.com/stepiiik" target="_blank">stepiiik</a>: <span class="msgtxt en">function hlavneVer() {$('skejt:first').addClass('moje-prace');} </span></p>
<p><a href="http://twitter.com/stepiiik" target="_blank">stepiiik</a>: <span class="msgtxt en">foreach ($girls as $girl) { if ($girl-&gt;jmeno != 'Tereza' { $girl-&gt;prominuti() } }</span></p>
<p><a href="http://twitter.com/adent" target="_blank">adent</a>: <span class="msgtxt en">person.me.lunch.today.setListener(you)</span></p>
<p><a href="http://twitter.com/adent" target="_blank">adent</a>: <span class="msgtxt en">WITH US GO TO BETLEM; DO(DLAY); DO(DLAY); DO (DLAYDA) </span></p>
<p><a href="http://twitter.com/starenka" target="_blank">starenka</a>: <span class="msgtxt da">for l in range(0,10): print '%s dyjadyjada'%"".join(random.sample(string.letters,15))</span></p>
<p><a href="http://twitter.com/kolman" target="_blank">kolman</a>: <span class="msgtxt en">shoppingCart.Add(francovka); Assert.AreEqual(30, francovka.Price); if(francovka&gt;rum) Console.WriteLine("OK");</span></p>
<p><a href="http://twitter.com/adent" target="_blank">adent</a>: <span class="msgtxt en">SELECT * FROM vykaz_cinnosti WHERE akter = 'hasici'</span></p>
<p><a href="http://twitter.com/Koblich" target="_blank">Koblich</a>: <span class="msgtxt en">select water, forests from homes where owner = 'me'</span></p>
<p><a href="http://twitter.com/adent" target="_blank">adent</a>: <span class="msgtxt en">$niagara=new Vodopad();$niagara-&gt;doHuceni(H_TESKNE | HT_NOC); if($who-&gt;srdce-&gt;contains(VASEN_HARAJICI)) $who-&gt;help-&gt;none();</span></p>
<p><a href="http://twitter.com/krwelll" target="_blank">krwelll</a>: <span class="msgtxt en">KoloMlynsky extends Kolo {function __construct() {$this-&gt;setPrice(4)} function crash() {$this-&gt;setPrice(0)-&gt;setHeight(0)}}</span></p>
<p><a href="http://twitter.com/kober" target="_blank">kober</a>: <span class="msgtxt es">10 PRINT $pesjitrnickusezral 20 GO TO 10</span></p>
<p><a href="http://twitter.com/borekb" target="_blank">borekb</a>: <span class="msgtxt es">jitDomu() &amp;&amp; bit</span></p>
<p><a href="http://twitter.com/kober" target="_blank">kober</a>: <span class="msgtxt en">var trava.color=<a href="http://search.twitter.com/search?q=%2300FF00">#00FF00</a>;fotbal.substance='hra';mic[kulaty].vec='zaludna';begin hoch.neparej; hoch.tvrderany.rozdavej; end</span></p>
<p><a href="http://twitter.com/kacer" target="_blank">kacer</a>: <span class="msgtxt en">while(singing) { dead = FALSE; }</span></p>
<p><a href="http://twitter.com/kacer" target="_blank">kacer</a>: <span class="msgtxt en">drink(new Water(), TRUE); drink(new Water(WATER_DRINKABLE), TRUE); drink(new Rum(), FALSE);</span></p>
<p><a href="http://twitter.com/martin_javorek" target="_blank">martin_javorek</a>: <span class="msgtxt en">int i=1;i++;h=new Honza();h.jdi();h.nes(new Pytel(new Mouka()));vdolky=new ArrayList&lt;Vdolek&gt;();new Mama().raduj(vdolky);</span></p>
<p><a href="http://twitter.com/pixycz" target="_blank">pixycz</a>: <span class="msgtxt es">while ($tma &amp;&amp; push($losos)==$perej-&gt;bila) { $ukulele-&gt;lkej($pisne-&gt;teskliva)  }</span></p>
<p><a href="http://twitter.com/adent" target="_blank">adent</a>: <span class="msgtxt en">$vinecko = new Bile(); $vinecko-&gt;setSource = $me-&gt;mila(); while ($me-&gt;isAlive()) {$vinecko-&gt;drink();}</span></p>
<p><a href="http://twitter.com/Dmagician" target="_blank">Dmagician</a>: <span class="msgtxt en">$zbran[1]='nůž'; $zbran[2]='sekyra'; if (count ($chlapi)&gt;2 &amp;&amp; $location='v krčmě') { $pranice=$zbran[rand(1,2)]; }</span></p>
<p><a href="http://twitter.com/dusoft" target="_blank">dusoft</a>: <span class="msgtxt eo">$svet="hodinový hotel"; mujpokoj[0]="studený"; mujpokoj[1]="prázdný"; wear("sako"); go("bar");</span></p>
<p><a href="http://twitter.com/olliebollie" target="_blank">olliebollie</a>: <span class="msgtxt en">ruce = [3, 4]; 5.times { puts 'Mám jednu ruku dlouhou' if ruce[0] != ruce [1] }</span></p>
<p><a href="http://twitter.com/krwelll" target="_blank">krwelll</a>: <span class="msgtxt en">$kaca = new Girl('Káča'); $kaca-&gt;setSpeed(FAST); $kocour = new Cat(Cat::MALE, Cat::WILD); $kocour-&gt;setTarget($kaca);</span></p>
<p><a href="http://twitter.com/monarcha" target="_blank">monarcha</a>: <span class="msgtxt en">SELECT latitude,longitude FROM places WHERE place_id=(SELECT home_place_id FROM users WHERE usr_name=SYSTEM_USER)</span></p>
<p><a href="http://twitter.com/bver" target="_blank">bver</a>: <span class="msgtxt en">(sheepherds.find_if {|s| s.isRectangular}).map {|s| s.delete!(our.obili) if our.obili.type.include? [:vicka, :cocovicka ]}</span></p>
<p><a href="http://twitter.com/pixycz" target="_blank">pixycz</a>: <span class="msgtxt eo">?- vitr(Buchlov,HERE). ?- ma(Kaczenka,pantle). ?- bere(A,B) :- je(A,HERE), ma(A,B). ?- bere(Kaczenka,pantle).    yes.</span></p>
<p><a href="http://twitter.com/yedpodtrzitko" target="_blank">yedpodtrzitko</a>: <span class="msgtxt en">jalovec.height='tall'; self.height=jalovec.height; my_girl.jump(jalovec); raise DoNotWantException;</span></p>
<p><a href="http://twitter.com/tokugawa" target="_blank">tokugawa</a>: <span class="msgtxt eo">$skolka = array ("Majdalenka", "Apolenka", "Veronika");</span></p>
<p><a href="http://twitter.com/bver" target="_blank">bver</a>: <span class="msgtxt en">is_like( lez &gt;= Vez);  assert(obili.type != :vicka);  assert(obili.type != :cocovicka);  assert_equal(obili.type, :oves);</span></p>
<p><a href="http://twitter.com/bretik" target="_blank">bretik</a>: <span class="msgtxt eo">if(kapsy.Stav &gt; 0 || (new Random()).Next(1000) &lt; 3) devka.Dej(); </span></p>
<p><a href="http://twitter.com/littlemaple" target="_blank">littlemaple</a>: <span class="msgtxt en">ja=new Šohajek();ja.v=178;s=new Jalovec();s.v=ja;mila=new Holka(ja);try{mila.skok(s,ROVNE_NOHY);}catch(e){mila.tocit();}</span></p>
<p><a href="http://twitter.com/tomasfejfar" target="_blank">tomasfejfar</a>: <span class="msgtxt en">if($year == 2006) &amp;&amp; ($population-&gt;move($bigCitiesList))...return $children-&gt;playground !== null</span></p>
<p><a href="http://twitter.com/SlavekRydval" target="_blank">SlavekRydval</a>: <span class="msgtxt en"><a href="http://search.twitter.com/search?q=%23songsincode"><strong></strong></a>while (Abeceda++ &lt;= D) {Kocka.}</span></p>
<p><a href="http://twitter.com/SlavekRydval" target="_blank">SlavekRydval</a>: <span class="msgtxt en"><a href="http://search.twitter.com/search?q=%23songsincode"><strong></strong></a>while (Alphabet++ &lt;= 'D')    do parallel:     thread(1): Cat.Purr;      thread(2): Dog.Count (UpTo: 10)</span></p>
<p><a href="http://twitter.com/tomasfejfar" target="_blank">tomasfejfar</a>: <span class="msgtxt en">if(self::$_todo == array()){ self::go();self::go();self::go(); }try(self::$_dochvilny = true) catch(Exception $e){}</span></p>
<p><a href="http://twitter.com/oold" target="_blank">oold</a>: <span class="msgtxt no"><a href="http://search.twitter.com/search?q=%23define">#define</a> T for(i=0;i&lt;2;i++) T{for(j=0;j&lt;2;j++)predstavte_si(OBED);}cout&lt;&lt;obed.name()&lt;&lt;obed.priloha();T cout&lt;&lt;"\nkoukate co";</span></p>
<p><a href="http://twitter.com/TZ71" target="_blank">TZ71</a>: <span class="msgtxt en">const x: array of String=('René', 'já', 'Rudolf'); x.Join.Go(Golf); </span></p>
<p><a href="http://twitter.com/PetrGasparik" target="_blank">PetrGasparik</a>: <span class="msgtxt en">SELECT MAX(toho) FROM jedny WHERE misto="Dejvice" </span></p>
<p><a href="http://twitter.com/hassmanm" target="_blank">hassmanm</a>: <span class="msgtxt es">puts "Ahoj Lucie"</span></p>
<p><a href="http://twitter.com/oold" target="_blank">oold</a>: <span class="msgtxt en">for (;;) { try { byt_stale_mlad(); } catch (Exception e) { System.err.println("kalendar me zase nasral:-)"); } }</span></p>
<p><a href="http://twitter.com/tomasfejfar" target="_blank">tomasfejfar</a>: <span class="msgtxt en">if(in_array($shot,$head)){$you-&gt;time=time()-3600;if($you-&gt;setLoveName()){$res=$you-&gt;getLoveName()==$rightLoveName//false)}} </span></p>
<p><a href="http://twitter.com/Freemanix" target="_blank">Freemanix</a>: <span class="msgtxt no">if(bavorov == "Vodňany") { for(i = SIDE_LEFT; i &lt;= SIDE_RIGHT; ++i) kiss(get_side(i)); } else kiss(NULL);</span></p>
<p><a href="http://twitter.com/kober" target="_blank">kober</a>: <span class="msgtxt en">if (morava.size&gt;=slezsko.size) then begin kiss(synecek);sound('plesk.wav'); end; else osidit(synecek); end if;</span></p>
<p><a href="http://twitter.com/yedpodtrzitko" target="_blank">yedpodtrzitko</a>: <span class="msgtxt en">from banana import bag; class Lada(CrowsNavigaion):pass; Lada.head.size=bag.size; while(laugh): Lada.money.temp='warm'</span></p>
<p><a href="http://twitter.com/oold" target="_blank">oold</a>: <span class="msgtxt eo">ja.jeduTakhleTaborit(SKODA100,"Orava"); ja.specham(); ja.riskuju(); ja.projizdim(MORAVA);</span></p>
<p><a href="http://twitter.com/littlemaple" target="_blank">littlemaple</a>: <span class="msgtxt en">ja=new Šohajek();ja.v=178;s=new Jalovec();s.v=ja.v;mila=new Holka(ja);try{mila.skok(s,ROVNE_NOHY);}catch(e){mila.tocit();}</span></p>
<p><a href="http://twitter.com/adent" target="_blank">adent</a>: <span class="msgtxt en">.rodny-ranc komin {visible:true} .rodny-ranc staj {visible:true} rychlik {color:orange; honk: audible} prazce {drncani:1}</span></p>
<p><a href="http://twitter.com/rarous" target="_blank">rarous</a>: <span class="msgtxt en">trains.Where(t =&gt; t.ArrivalStation == GetStations("Paris")).Last(); </span></p>
<p><a href="http://twitter.com/ondrakub" target="_blank">ondrakub</a>: <span class="msgtxt en">$train = new Train;$train-&gt;wagon-&gt;scroop(); $train-&gt;track-&gt;howl(); $train-&gt;station = false;</span></p>
<p><a href="http://twitter.com/yettycz" target="_blank">yettycz</a>: <span class="msgtxt en">$today = new California(); California::pray(ALL, 'for us'); if($today-&gt;tool===TRUE) $today-&gt;amenities=FALSE;</span></p>
<p><a href="http://twitter.com/EDDYcek" target="_blank">EDDYcek</a>: <span class="msgtxt en">if ($this-&gt;view-&gt;fuckingWorld) { print $this-&gt;world; }</span></p>
<p><a href="http://twitter.com/webnode" target="_blank">webnode</a>: <span class="msgtxt es">.hasici {} .pivovar, .hospoda {stav: popel;} .voda {pije: zaba;} .pivo {pije: stara-baba;} .mazak {pije: rum}</span></p>
<p><a href="http://twitter.com/PetrGasparik" target="_blank">PetrGasparik</a>: <span class="msgtxt en">foreach($šaty as $kusOděvu) {$kusOděvu.mokrý = this-&gt;prší();}; while(this-&gt;prší();); $šaty.sušit($_SLUNCE)</span></p>
<p><a href="http://twitter.com/olliebollie" target="_blank">olliebollie</a>: <span class="msgtxt eo">kolo = KoloKoloMlynsky.new; kolo.polamat if kolo.cena == 4; # =&gt; "Bác." </span></p>
<p><a href="http://twitter.com/martin_javorek" target="_blank">martin_javorek</a>: <span class="msgtxt en">if (this.pasu(husy)) { this.tres(true); } else { this.tres(false) } -- optimalizace: this.tres(this.pasu(husy));</span></p>
<p><a href="http://twitter.com/tomaash" target="_blank">tomaash</a>: <span class="msgtxt eo">traktor="Zetor"; traktor.go(); Brambor.orat(traktor) if location=="Hory" </span></p>
<p><a href="http://twitter.com/horcicaa" target="_blank">horcicaa</a>: <span class="msgtxt en">if(today == SLAVNY_DEN){ $.extend(ourCity, ElectricCurrent.AC); } </span></p>
<p><a href="http://twitter.com/adamsnobl" target="_blank">adamsnobl</a>: <span class="msgtxt it">function pesJitrnickuSezral() {   nahrobek.write(pesJitrnickuSezral());   return "docela malickou"; }</span></p>
<p><a href="http://twitter.com/oold" target="_blank">oold</a>: <span class="msgtxt fr">char song[] = {0X6D,0X61,0X6D,0X61,0X20,0X6C,0X65,0X6F,0X20,0X6C,0X61,0X20,0X6D, 0X75,0X6D,0X75,0X6C,0X61,0X6E,0X64}; </span></p>
<p><a href="http://twitter.com/nikdo" target="_blank">nikdo</a>: <span class="msgtxt es">++++++++++[&gt;++++++&gt;+++++++&gt;+++&lt;&lt;&lt;-]&gt;+++++&gt;++&gt;+++[&lt;&lt;.............&gt;.&lt;.&gt;.&lt;.&gt;&gt;.]</span></p>
<p><a href="http://twitter.com/Lokutus" target="_blank">Lokutus</a>: <span class="msgtxt es">if (hasDiru(vedro, dno)) {zacpi(new Dira(vedro), slama)}</span></p>
<p><a href="http://twitter.com/kober" target="_blank">kober</a>: <span class="msgtxt en">Jedna pro instrumentalisty: loop note:=readnote(i); if note playnote(note) else playnote(F#); i++; end loop;</span></p>
<p><a href="http://twitter.com/horcicaa" target="_blank">horcicaa</a>: <span class="msgtxt en">$("<a href="http://search.twitter.com/search?q=%23%C5%A1nek">#šnek</a>").leknout(function(){ $(this) .find("<a href="http://search.twitter.com/search?q=%23plyn">#plyn</a>").append("&lt;cihla&gt;").end() .run().speed(0.5); });</span></p>
<p><a href="http://twitter.com/Lokutus" target="_blank">Lokutus</a>: <span class="msgtxt es">posledniBitva.init(PRIORITY_FIRE); pochod.init();new Internacionala(Delnici, rolnici, bratri).setRod(zitrek)</span></p>
<p><a href="http://twitter.com/Lokutus" target="_blank">Lokutus</a>: <span class="msgtxt no">$ grep "Země Česká" /etc/passwd</span></p>
<p><a href="http://twitter.com/hassmanm" target="_blank">hassmanm</a>: <span class="msgtxt es">Ivane.goHome();</span></p>
<p><a href="http://twitter.com/Filda" target="_blank">Filda</a>: <span class="msgtxt en">s = new Statistic(Nudaj); s.setValuable(true); s.setMindFall(false); s.evaluate();</span></p>
<p><a href="http://twitter.com/Filda" target="_blank">Filda</a>: <span class="msgtxt en">SELECT*FROMcountryWHEREhome="my";SETforeign_key_check=0;INSERT INTOcountry(bory,sady,type)VALUES("šumí","skví","beautiful");</span></p>
<p><a href="http://twitter.com/codeas" target="_blank">codeas</a>: <span class="msgtxt en">Akat a = new Akat(); Akat b = new Akat(); if(dest.getStav() == PADA) { a.sumi(); b.sumi(); } while(true){ vlasy.splest()};</span></p>
<p><a href="http://twitter.com/codeas" target="_blank">codeas</a>: <span class="msgtxt da">Array sad = {kvet.skvet()}  raj.render();  for (var i=0; i &lt; 2;i++) { zemeCeska = muj Domov(); }</span></p>
<p><a href="http://twitter.com/codeas" target="_blank">codeas</a>: <span class="msgtxt pl">for (var i=0; i &lt; 2;i++) { gps[i] = prompt("Kde domov muj?")}  voda.setHuci("po lucinach"); bory.setSumi("po skalinach");</span></p>
<p><a href="http://twitter.com/KaldaP" target="_blank">KaldaP</a>: <span class="msgtxt en">Town t = new Town("Rehradice"); t.Landscape = L_NICE | L_FLAT; t.Content.Add(new Water(DIR_DOWN_TOWN, W_NICE | W_CLEAR)); </span></p>
<p><a href="http://twitter.com/kiminari" target="_blank">kiminari</a>: <span class="msgtxt en">for(IBaseEntity* e=Scene-&gt;FirstEntity; e; e=e-&gt;Next) if(e-&gt;Flags &amp; E_DIGGING_HOLE &amp;&amp; e-&gt;Target!=e) e-&gt;FallToNearestHole();</span></p>
<p><a href="http://twitter.com/tomas_macik" target="_blank">tomas_macik</a>: <span class="msgtxt en">if(me-&gt;getBornYear()==System-&gt;getActualYear()+100&amp;&amp;me-&gt;getBornAge()!=System-&gt;getActualAge())</span></p>
<p><a href="http://twitter.com/PetrOdut" target="_blank">PetrOdut</a>: <span class="msgtxt en">$year = new Year(1982); $year-&gt;addPopart('lednacek', 'kofola'); </span></p>
<p><a href="http://twitter.com/mjinoch" target="_blank">mjinoch</a>: <span class="msgtxt it">find / -name "hlupaku"</span></p>
<p><a href="http://twitter.com/matitoP" target="_blank">matitoP</a>: <span class="msgtxt en">I = InnKeeper(Female,fleshy);foreach (m in pub) m.Volume=100,m.Spd=100,m.SingAndDance(); I.Jump(table); I.RemoveClothes(); </span></p>
<p><a href="http://twitter.com/yanovo" target="_blank">yanovo</a>: <span class="msgtxt en">wish $(set USER="jan"; useradd -G divky-a-damy $USER)</span></p>
<p><a href="http://twitter.com/dz3jar" target="_blank">dz3jar</a>: <span class="msgtxt no">x = Me; Math.Floor(x)</span></p>
<p><a href="http://twitter.com/tarmaq" target="_blank">tarmaq</a>: <span class="msgtxt en">function nowadays(item) { return item == 'gun'; }</span></p>
<p><a href="http://twitter.com/gorline" target="_blank">gorline</a>: <span class="msgtxt eo">if(kolo.IsBroken) kolo.Bac();</span></p>
<p><a href="http://twitter.com/dz3jar" target="_blank">dz3jar</a>: <span class="msgtxt en"># touch Ifeel.txt</span></p>
<p>Další si musíte <a href="http://search.twitter.com/search?q=%23songsincode+%23cz">napsat sami</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://met.blog.root.cz/2009/08/21/songsincode-cz-pridate-se/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Joel Spolsky: User Interface Design for Programmers</title>
		<link>http://met.blog.root.cz/2008/05/29/joel-spolsky-user-interface-design-for-programmers/</link>
		<comments>http://met.blog.root.cz/2008/05/29/joel-spolsky-user-interface-design-for-programmers/#comments</comments>
		<pubDate>Thu, 29 May 2008 21:39:48 +0000</pubDate>
		<dc:creator>Martin Hassman</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[pouzitelnost]]></category>
		<category><![CDATA[recenze]]></category>

		<guid isPermaLink="false">http://met.blog.root.cz/2008/05/29/joel-spolsky-user-interface-design-for-programmers/</guid>
		<description><![CDATA[Kniha známého autora Joela Spolskyho vypráví o tom, jak mají programátoři vytvářet aplikace tak, aby byly nejen dobře použitelné, ale zároveň aby jejich uživatelé byli šťastnější.
"Použitelnost je v zásadě otázka lidských práv ve světě interakcí mezi počítačem a člověkem. ... Když se soustředíte na použitelnost, respektujete tím pocit štěstí u lidí, kteří váš kód budou [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.joelonsoftware.com/uibook/chapters/fog0000000057.html" title="User Interface Design for Programmers"><img src="http://met.blog.root.cz/files/2008/05/joel.png" alt="User Interface Design for Programmers" align="left" vspace="5" hspace="5" /></a>Kniha známého autora Joela Spolskyho vypráví o tom, jak mají programátoři vytvářet aplikace tak, aby byly nejen dobře použitelné, ale zároveň aby jejich uživatelé byli šťastnější.</p>
<p><em>"Použitelnost je v zásadě otázka lidských práv ve světě interakcí mezi počítačem a člověkem. ... Když se soustředíte na použitelnost, respektujete tím pocit štěstí u lidí, kteří váš kód budou spouštět."</em> Joel Spolsky</p>
<p><a href="http://en.wikipedia.org/wiki/Joel_Spolsky">Joel Spolsky</a> je ve světě programátorů známou osobností. Nejen svou prací u Microsoftu (byl managerem vývoje Excelu), ale hlavně svými knihami a blogem <a href="http://www.joelonsoftware.com/">Joel on Software</a>.</p>
<h2>Komu je kniha určena? Programátorům přece</h2>
<p>Ve své knize User Interface Design for Programmers (zatím pouze v angličtině, český překlad neexistuje) Joel učí programátory, jak vytvářet použitelné uživatelské rozhraní aplikací. Zejména tedy grafické uživatelské rozhraní, ale v zásadě jakékoliv rozhraní, které může používat člověk.</p>
<p>Jedná se skutečně o knihu pro programátory, nikoliv pro grafiky, designéry, či specializované návrháře uživatelského rozhraní, nýbrž pro programátory, které baví programovat a nikoliv učit se složitá pravidla designu a použitelnosti. Joel nabízí několik pravidel, které programátor může rychle vstřebat a vytvářet použitelnější aplikace, aniž by problematiku dlouze studoval.</p>
<h2>Pravidly se řiď a použitelnější budeš</h2>
<p>Celá kniha je skutečně jen o několika málo pravidlech.  Ovšem Joel je vypravěč, a tak nám prostě nepředloží jen stručné desatero pravidel. On je postupně všechny odvypráví. Vrátí se přitom ke svým dřívějším projektům nebo do svého dětství a na historkách reálného (nepočítačového) světa ukazuje základní pravidla použitelnosti, která pak převádí do světa počítačů.</p>
<p>Ale nebojte se, že by vás kniha snad nudila, Joel je dobrý vypravěč, a text knihy je zábavný a rychle ubíhá. Já knihu četl téměř jako beletrii. To je kouzlo dobrého pedagoga: umět zaujmout a jakoby mimochodem i něco naučit. Málokdo má takový dar.</p>
<h2>Obsah knihy</h2>
<p>Kniha kupodivu nezačne vysvětlením proč má mít program menu nebo zda mají být tlačítka stínovaná, ale zcela obecným vysvětlením, proč jsou lidé šťastnější, když mají pod kontrolou své okolní prostředí. Že to nesouvisí s aplikacemi? No to byste se divili!</p>
<p>Následují kapitoly o tom, jak se uživatelé při používání počítačů chovají, co od aplikací očekávají, jak docílit toho, aby naši aplikaci dokázali používat správně hned napoprvé, jak použitelnost testovat nebo jak se vyvarovat základních chyb.</p>
<p>Kniha se soustředí hlavně na desktopové aplikace. Ačkoliv zmiňovaná pravidla platí téměř bezezbytku i na webu (web přeci používají úplně stejní uživatelé), tak webu samotnému se kniha příliš nevěnuje. Obsahuje o něm jen jednu kapitolu.</p>
<h2>Přínos pro programátory, uživatele i pro firmu</h2>
<p>Joel zdůrazňuje důležitost testů použitelnosti i pro programátory samotné. I kdyby se výsledky testu nakonec zahodili, programátoři při sledování testů vykouknou ze své ulity a na okamžik zahlídnou, jak vypadá svět tam venku, tam, kde žijí uživatelé. A to má velký přínost pro ně samotné i pro práci, kterou dělají.</p>
<p>Joel zdůrazňuje, jak takový software může činit lidi opravdu nešťastnými. (Kdo z programátorů by chtěl činit lidi nešťastné?) A krásně dodává, že dobrý program, se kterým lidé denně pracují, jim pomáhá a může je učinit šťastnější. Což by měl být ostatně i cíl každého opravdového programátora.</p>
<p>Tenhle Joelův přístup se mi velmi líbí a skrývá se za ním hodně moudrosti. Nejen moudrosti programátora, ale i obchodníka, který to, co vyrábí, umí prodat v té nejlepší kvalitě.</p>
<h2>Vytýkáme, kritizujeme, haníme</h2>
<p>Kniha má i několik mínusů, byť vzhledem ke kvalitě jejího obsahu ne příliš podstatných.</p>
<p>Tak především je kniha krátká.  Ano, je určená pro programátory, kteří nechtějí použitelnost dlouze studovat, a tak je krátká (pro ty je to možná plus). Ovšem ačkoliv mi kniha mnohé dala, rozhodně nemám pocit, že bych teď psal jen samé superpoužitelné aplikace. To ani náhodou! Kniha zvládne člověku dát jen opravdu minimální základ, jen otevřít oči a ukázat správnou cestu. Další kroky už jsou na vás (mezi nimi může být i koupě další literatury doporučené v závěru knihy).</p>
<p>Kniha je navíc relativně stará. Byla napsána již v roce 2000. Tomu odpovídají jak screenshoty, tak některé problémy popisované v knize. Na vykládaná pravidla použitelnosti to nemá vliv, ovšem mladší generace nemusí pochopit některé příklady týkající se např. dnes již historických Widows 98.</p>
<p>Stáří knihy je nejvíc znát v kapitole o webu, kde Joel kritizuje např. problematickou tvorbu rozvíracích menu na webových stránkách, což tenkrát byl skutečně problém palčivý, ovšem dnes je to rutina.</p>
<h2>Závěr</h2>
<p>Knih o použitelnosti aplikací tolik není a v češtině bohužel zatím ani jedna. Pokud se o problematiku chcete začít zajímat, Joel je skvělou volbou. Pokud o problematice něco víte a chcete se jí věnovat hlouběji, pak ještě uvažte, zda si nevybrat raději knihu podrobnější. V případě, že vás zajímá čistě použitelnost webových stránek, zapřemýšlejte o nějaké specializované knize, např. <a href="http://interval.cz/clanky/web-design-nenutte-uzivatele-premyslet/">Web design - nenuťte uživatele přemýšlet</a>, která vyšla i v češtině.</p>
<p>Mě kniha byla přínosem, obsahuje řadu mouder programátorských i životních a budu se k ní určitě vracet. A krom toho Joel se prostě dobře čte, ať už píše o čemkoliv, což je také důvodem, proč mi na stole leží připravená i jedna z jeho dalších knih.</p>
<h2>Údaje o knize</h2>
<p>Autor: Joel Spolsky<br />
Název: User Interface Design for Programmers<br />
Jazyk: angličtina<br />
ISBN: 978-1-893115-94-1<br />
Rozsah: 144 stran<br />
Rok vydání: 2001<br />
Cena:  750,- u <a href="http://www.shakes.cz/book/220883">Shakes.cz</a> nebo £21.49 + poštovné u <a href="http://www.amazon.co.uk/User-Interface-Design-Programmers-Spolsky/dp/1893115941">Amazonu</a>.</p>
<h2>Kniha online</h2>
<p>Pokud s koupí knihy váháte nebo vám kniha připadá na svůj rozsah drahá, můžete se začíst do webové podoby knihy. Ač to nebývá zvykem, celá první polovina knihy je dostupná na webu. Začtěte se do ní a posuďte sami, zda se vám kniha vyplatí nebo ne. A můžete začít hned první kapitolou <a href="http://www.joelonsoftware.com/uibook/chapters/fog0000000057.html">Controlling Your Environment Makes You Happy</a>.</p>
<h2>Související</h2>
<ul>
<li><a href="http://blog.softeu.cz/user-interface-design-for-programmers/">Recenze od Pavla Cvrčka</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://met.blog.root.cz/2008/05/29/joel-spolsky-user-interface-design-for-programmers/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Google mapy v mobilu i s mojí polohou</title>
		<link>http://met.blog.root.cz/2008/02/17/google-mapy-v-mobilu-i-s-moji-polohou/</link>
		<comments>http://met.blog.root.cz/2008/02/17/google-mapy-v-mobilu-i-s-moji-polohou/#comments</comments>
		<pubDate>Sun, 17 Feb 2008 18:18:13 +0000</pubDate>
		<dc:creator>Martin Hassman</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Dostal jsem na krátkou dobu zapůjčen telefon se Symbianem, a když už mám v ruce přístroj, který není zcela obstarožní, pustil jsem se do testování, proto se teď v blogu objeví i pár mobilních příspěvků.
Mapy v mobilu
Nedávno jsem si stěžoval, že v Opeře Mini nezobrazím rozumné mapy. To stále platí, a ačkoliv se někteří (např. [...]]]></description>
			<content:encoded><![CDATA[<p>Dostal jsem na krátkou dobu zapůjčen telefon se Symbianem, a když už mám v ruce přístroj, který není zcela obstarožní, pustil jsem se do testování, proto se teď v blogu objeví i pár mobilních příspěvků.</p>
<h2>Mapy v mobilu</h2>
<p>Nedávno jsem si stěžoval, že v <a href="http://met.blog.root.cz/0712/opera-mini-a-tipy-pro-webdesignery">Opeře Mini nezobrazím rozumné mapy</a>. To stále platí, a ačkoliv se někteří (např. <a href="http://wap.mapy.cz/">wap.mapy.cz</a>) snaží, aby tomu bylo jinak, stav je zatím stále zoufalý.</p>
<p>Naštěstí jsem objevil <a href="http://www.google.com/gmm">Google Maps do mobilu</a>. Nikoliv webovou aplikaci (ta nás na mobilu nepotěší ani od Googlu), ale klasickou telefonní. Je dostupná na adrese <a href="http://www.google.com/gmm">www.google.com/gmm</a> a funguje v řadě přístrojů. Mapu můžeme plynule posouvat, zvětšovat, přepínat mezi klasickou mapou a ortofotomapou. Pokud má váš telefon pouze GPRS/EDGE, tak si při načítání vždy chvilku počkáte, ale není to tak zlé.</p>
<p>Já od středy na Google Maps koukám pomocí <strong>Nokia 6120 classic</strong> s 3G připojením a to je teprve fofr. Mapy se vám načítají před očima, žádné čekání - prostě krása. (Opravdu moc nerad budu příští týden ten přístroj vracet.)</p>
<h2>Řekni Google, kdepak to jsem</h2>
<p>Neocenitelnou funkcí mobilních Google Maps je <a href="http://gigaom.com/2007/11/28/google-my-location/">My Location</a>. Zabloudili jste? Nevíte kde jste? Nebojte, zapnete si My Location a Google Mapy vám ukážkou, kde právě stojíte. Že nemáte GPS? Nevadí, stejně si vás najdou. Možná ne tak přesně, ale najdou.</p>
<p>Pokud jsem dobře pochopil, tak to funguje na principu známých poloh <a href="http://en.wikipedia.org/wiki/Base_Transceiver_Station">BTS</a>. Google Mapy si zjistí, na jakou jste právě připojeni BTSku, najde si její pozici (nejsem si jist, zda tu o sobě hlásí přímo BTSka nebo se mapy na základě názvu BTS dotáží databáze BTS-poloh přímo v Googlu) a už zná vaši pozici. Sice s odchylkou až několika stovek metrů, ale zná.</p>
<p>Je příjemné zapnout mapy a nemuset pracně zadávat, kde právě jsem. Zapnu My Location a už se vidím.</p>
<h2>Pár postřehů</h2>
<ul>
<li>Když Google Maps zapnu, My Location hned nefungují. Musím trochu popojít, než se mi pozice ukáže (vzdálenost záleží na místě, někde je to 20, jinde možná i 100 metrů). Že by čekaly na zachycení signálu od více BTS?</li>
<li>Nepřesnost určení polohy hodně závisí na hustotě BTS v okolí. Když jsem scházel Václavské náměstí od Muzea k Jindřišské ulici, tečka blikala poměrně přesně (odchylka možná tak 50 metrů), jen čas od času se náhle přesunula do Riegrových sadů, aby se po ujití pár metrů opět vrátila na Václavské náměstí. Jakoby zde o signál bojovala jedna BTS se špatně určenou polohou s těmi správnými. Naopak při mé <a href="http://blog.softeu.cz/prednaska-o-novinkach-pripravovaneho-html-50/">páteční návštěvě Plzně</a> ukazovala tečka pořád někam jinam, sice v rozmezí několika set metrů, ale už to nebylo tam, kde jsem přesně stál.</li>
<li>Pokud jedete neznámou trasu (např. já autobusem z Prahy do Plzně), je příjemně mít v kapse zapnuté mapy a čas od času se kouknout, kde právě jste.</li>
<li>Zvláštní je, že My Location nefunguje na řadě starších Nokií (moje služební Nokia 3109 classic ji třeba nezvládne), a zajímalo by mne proč. Google Maps normálně běží, ale My Location nikoliv. Že by tyhle přístroje nedokázaly správně přečíst název nebo polohu právě připojené BTSky? Nějaké chybějící API? Netuší někdo?</li>
</ul>
<p align="center">  <object type="application/x-shockwave-flash" data="http://www.youtube.com/v/v6gqipmbcok" width="425" height="355" wmode="transparent"><param name="movie" value="http://www.youtube.com/v/v6gqipmbcok" /></object></p>
<p>A teď hurá na srovnání <a href="http://met.blog.root.cz/0712/opera-mini-a-tipy-pro-webdesignery">Opery Mini</a> a S60. Konečně zajímavá implementace JavaScriptu přímo na mobilu, no to bude hukot!</p>
<h2>Související</h2>
<ul>
<li><a href="http://blog.renestein.net/V%C3%ADte+U+Kolika+%C4%8Cesk%C3%BDch+BTS+U%C5%BE+Zn%C3%A1+Google+Jejich+P%C5%99ibli%C5%BEnou+Polohu+Aneb+Google+Maps+Mobile.aspx">Víte, u kolika českých BTS už zná Google jejich přibližnou polohu?</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://met.blog.root.cz/2008/02/17/google-mapy-v-mobilu-i-s-moji-polohou/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Generátor citací</title>
		<link>http://met.blog.root.cz/2007/10/18/generator-citaci/</link>
		<comments>http://met.blog.root.cz/2007/10/18/generator-citaci/#comments</comments>
		<pubDate>Thu, 18 Oct 2007 21:34:01 +0000</pubDate>
		<dc:creator>Martin Hassman</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[vscht]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Před časem se ke mě dostal webový generátor citací, jehož autorem je vydavatelství VŠCHT Praha. Nástroj, který se dnes může hodit snad každému vysokoškolákovi. V době, kdy jsem já psal diplomovou práci takové nástroje sice existovaly, ale jednalo se veskrze o komerční aplikace, navíc desktopové. Vždy jsem si říkal, proč taková užitečná věc není volně [...]]]></description>
			<content:encoded><![CDATA[<p>Před časem se ke mě dostal webový <a href="http://vydavatelstvi.vscht.cz/apps/uid_ea-002/">generátor citací</a>, jehož autorem je <a href="http://vydavatelstvi.vscht.cz/">vydavatelství VŠCHT Praha</a>. Nástroj, který se dnes může hodit snad každému vysokoškolákovi. V době, kdy jsem já psal diplomovou práci takové nástroje sice existovaly, ale jednalo se veskrze o komerční aplikace, navíc desktopové. Vždy jsem si říkal, proč taková užitečná věc není volně k dispozici. Webová verze generátoru mne proto zaujala a zkoumal jsem ji podrobněji.</p>
<p>Citace jsem už nějaký ten pátek psát nepotřeboval a je pravděpodobné, že se mezitím objevilo podobných generátorů víc a třeba i lepších. V tom případě budu rád, pokud je odkážete z komentářů.</p>
<p>Generátor je na první pohled komplexnější, než jsem čekal. Do diplomky jsem potřeboval jen citace článků a knih, ale našel jsem zde i <a href="http://vydavatelstvi.vscht.cz/apps/uid_ea-002/">citace sborníků, norem nebo patentů</a> (až použiju něčí softwarový patent, určitě vyzkouším 8-). Sice nevím, kolik lidí bude ještě dnes potřebovat výstup do TeXovské syntaxe, ale i ta je kromě textového a HTML výstupu k dispozici.</p>
<p>Mě hlavně potěšilo, že se jedná čistě o JavaScriptovou aplikaci a vše se odehrává na straně klienta. Už v průběhu zapisování údajů vidím výsledek a to já rád. A jelikož JavaScript se nachází navzdory všem názorovým trendům někde na horních příčkách žebříčku mých oblíbených programovacích jazyků, prošel jsem si s radostí i zdrojáky. Nojo, ten DOM je strašně ukecaný - první věc, která vás u toho musí napadnout.</p>
<h2>A co se mi ještě úplně nelíbí?</h2>
<p>Já bych takovou aplikaci předně určitě umístil na lepší adresu, přeci jen <a href="http://vydavatelstvi.vscht.cz/apps/uid_ea-002/">http://vydavatelstvi.vscht.cz/apps/uid_ea-002/</a> je prostě nezapamatovatelná (neudržel jsem ji ani 5 minut), a user i SEO unfriendly. Na funkčnost to nemá vliv, ale mne spíše motivuje k tomu si aplikaci stáhnout lokálně, než ji stále hledat (navíc, když se mi na ni z titulní stránky <a href="http://vydavatelstvi.vscht.cz/">vydavatelství</a> nepodařilo najít odkaz).</p>
<p>Předpokládám, že většina uživatelů aplikace nebude barvoslepých, a tak by se hodilo barevně odlišit pole, která je nutné vyplnit, resp. pole, která ještě musím vyplnit, aby byla vygenerovaná citace smysluplná. V současné verzi jste na to upozorněni textem, např.: "<em>Z údajů, které se běžně uvádějí, jsou-li k dispozici, dosud chybí: umístění citované části, hlavní autor citované části (příjmení), název celé publikace</em>" Já jakožto příslušník té nebarvoslepé skupiny uživatelů bych uvítal přidat i podbarvení oněch chybějící položek.</p>
<p>Čistě JavaScriptové řešení má nevýhodu, že data z formuláře nejsou uložena někde na serveru. Občas bych si je rád uložil a pak jedním tlačítkem vyvolal zpět. Minimálně možnost uložit aktuální stav formuláře do cookie prohlížeče (ve Firefoxu už lze použít i <a href="http://www.lupa.cz/clanky/sql-si-razi-cestu-do-html5/">global storage</a> z připravovaného <a href="http://html456.blogspot.com/">HTML5</a>).</p>
<p>Ať tak či tak, jsem rád, že taková aplikace existuje. Obzvláště když vzpomínám, jak jsme to tenkrát do diplomek celé formátovali ručně a i po desáté kontrole nacházeli další a další chyby.</p>
<p>Mimochodem tvůrce aplikace <em>Jiří Znamenáček</em> je pokud vím jediný Čech, kterého najdete v onom dlouhém seznamu lidí, který se vám zobrazí, pokud v Mozille, Firefoxu nebo Seamonkey zadáte do adresního řádku <em>about:credits</em>.</p>
<p>Nakonec se vracím k původní prosbě. Pokud používáte nějaký generátor citací a myslíte si, že je dobrý, nechte tu prosím odkaz, ať mám s čím srovnávat.</p>
<p>BTW Generátor citací <a href="http://www.facebook.com/pages/Generator-citaci/51370648086">na Facebooku</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://met.blog.root.cz/2007/10/18/generator-citaci/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Kampaň za blokování Firefoxu</title>
		<link>http://met.blog.root.cz/2007/08/17/kampan-za-blokovani-firefoxu/</link>
		<comments>http://met.blog.root.cz/2007/08/17/kampan-za-blokovani-firefoxu/#comments</comments>
		<pubDate>Fri, 17 Aug 2007 09:58:16 +0000</pubDate>
		<dc:creator>Martin Hassman</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Čas od času se objeví názory, že uživatelé, kteří si blokují zobrazování reklamy na webu (podle někoho neplatiči nebo dokonce zloději), by neměli mít na daný webový server přístup.
Nedávno jsem narazil na kampaň Why Firefox is Blocked, která v tomto duchu blokuje uživatele Firefoxu. Weby, které se do kampaně zapojí, místo zobrazení obsahu přesměrují uživatele [...]]]></description>
			<content:encoded><![CDATA[<p>Čas od času se objeví názory, že uživatelé, kteří si blokují zobrazování reklamy na webu (podle někoho neplatiči nebo dokonce zloději), by neměli mít na daný webový server přístup.</p>
<p>Nedávno jsem <a href="http://simonwillison.net/2007/Aug/16/firefox/">narazil</a> na kampaň <a href="http://whyfirefoxisblocked.com/">Why Firefox is Blocked</a>, která v tomto duchu blokuje uživatele Firefoxu. Weby, které se do kampaně zapojí, místo zobrazení obsahu přesměrují uživatele Firefoxu na <a href="http://whyfirefoxisblocked.com/">stránku kampaně</a>.</p>
<p>Zajímavé je <a href="http://whyfirefoxisblocked.com/">vysvětlení důvodů</a> celé kampaně:</p>
<p><em>The Mozilla Foundation and its Commercial arm, the Mozilla Corporation, has allowed and endorsed Ad Block Plus, a plug-in that blocks advertisement on web sites and also prevents site owners from blocking people using it. Software that blocks all advertisement is an infringement of the rights of web site owners and developers...</em></p>
<p><em>If you are offended by the Mozilla Corporation's endorsement of dishonesty please contact the Mozilla Foundation and ask them to stop empowering internet theft.</em></p>
<p>Ačkoliv sama myšlenka bránit se proti neplatičům není zcela nesmyslná (byť je těžko realizovatelná), nevěřím, že se v této podobě prosadí, protože místo toho, aby postihovala skutečné neplatiče, zaměřuje se na všechny uživatele Firefoxu.</p>
<p>Předpokládám, že jen menší část z nich si reklamy skutečně blokuje (čísla k tomu nemám a zjevně je nemají ani organizátoři této kampaně), a tak ve výsledku kampaň spíše naštve řadu neprávem postižených uživatelů Firefoxu, než aby postihla tu správnou cílovku.</p>
<h2>Bude kampaň masivní?</h2>
<p>Tenhle problém si pravděpodobně řada provozovatelů uvědomí a ke kampani, která by je spíše poškodila, než něčemu pomohla, se nepřidá.</p>
<p>Každopádně kampaň by mohla rozšířit pověst Firefoxu, co by "zlého prohlížeče, který napomáhá krádežím". Díky Adwords a dalším jednoduchým systémům dnes na internetu inzeruje kdekdo a věřím, že nemálo z inzerentů o možnosti blokovat reklamy vůbec neví.</p>
<p>Jaké pak může být jejich zděšení, když si přečtou, že ten "zlý prohlížeč" je vlastně okrádá. Načež, když by si problému všimli novnáři. Dovedete si představit ty titulky? (Například takový <em>Odborník z Wallstreetu odhaduje, že za poslední rok Firefox poškodil inzerenty nejméně o čtvrt miliónu dolarů</em>)</p>
<h2>Kdo za tím stojí?</h2>
<p>O kampani se pomalu začíná <a href="http://www.google.com/search?q=whyfirefoxisblocked.com">všude psát</a>. Podle všeho za ní stojí jistý <a href="http://dannycarlton.com/AD_Tools/">Danny Carlton</a>, který se nějaký čas obranou proti blokování reklamy zabývá.</p>
<p>Nabízí se i možnost, že za kampaní stojí někdo úplně jiný a jejím hlavním cílem je poškodit jméno Firefoxu (to, že se s tím sveze i osvěta boje proti blokování reklamy, je jen vedlejší produkt). Ale to je pouze spekulace.</p>
<p>Nepodařilo se mi najít kdy skutečně došlo ke spuštění kampaně. Na jejím webu žádné datum není a články, které odkazuje jsou relativně staré. Každopádně o kampani se začalo hovořit teprve před několika málo dny.</p>
<p>A co vy? Narazil jste již někdo na web zapojený do kampaně? Já zatím jen na jeden - <a href="http://jacklewis.net/weblog/archives/2007/08/firefox_is_now.php">JackLewis.net</a>.</p>
<p>Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.</p>
]]></content:encoded>
			<wfw:commentRss>http://met.blog.root.cz/2007/08/17/kampan-za-blokovani-firefoxu/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Spi Firefoxe, spi</title>
		<link>http://met.blog.root.cz/2007/08/14/spi-firefoxe-spi/</link>
		<comments>http://met.blog.root.cz/2007/08/14/spi-firefoxe-spi/#comments</comments>
		<pubDate>Tue, 14 Aug 2007 12:00:00 +0000</pubDate>
		<dc:creator>Martin Hassman</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Prohlížečí ukolébavka
Spi Firefoxe, spi,
zavři okna svý,
uživatelé spí taky,
máš jich kupu, máš jich mraky,
spi Firefoxe, spi.
Spi Firefoxe, spi,
skonči thready svý,
až se spustíš za svítání,
googlovat tě bude paní,
spi Firefoxe, spi.
Spi Firefoxe, spi,
ulož okna svý,
panda v ZOO už spí taky,
bambusu má všude mraky,
spi Firefoxe, spi.
]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;"><em>Prohlížečí ukolébavka</em><br/><br/><br />
Spi Firefoxe, spi,<br/><br />
zavři okna svý,<br/><br />
uživatelé spí taky,<br/><br />
máš jich kupu, máš jich mraky,<br/><br />
spi Firefoxe, spi.<br/><br/><br />
Spi Firefoxe, spi,<br/><br />
skonči thready svý,<br/><br />
až se spustíš za svítání,<br/><br />
googlovat tě bude paní,<br/><br />
spi Firefoxe, spi.<br/><br/><br />
Spi Firefoxe, spi,<br/><br />
ulož okna svý,<br/><br />
panda v ZOO už spí taky,<br/><br />
bambusu má všude mraky,<br/><br />
spi Firefoxe, spi.<br/></div>
]]></content:encoded>
			<wfw:commentRss>http://met.blog.root.cz/2007/08/14/spi-firefoxe-spi/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Haló, nemohu otevřít dokument</title>
		<link>http://met.blog.root.cz/2007/04/16/halo-nemohu-otevrit-dokument/</link>
		<comments>http://met.blog.root.cz/2007/04/16/halo-nemohu-otevrit-dokument/#comments</comments>
		<pubDate>Mon, 16 Apr 2007 09:12:14 +0000</pubDate>
		<dc:creator>Martin Hassman</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA["Haló, nemohu otevřít dokument v e-mailu, mohu vám ho poslat?" i takové telefonáty občas na naší vysoké škole máme.
Požádám tedy zoufalou volající paní o přeposlání e-mailu a jsem zvědav, co na mě čeká. A podívejme se! Jedná se o e-mail s přílohou exkurze.odt.
Otevřu tedy dokument v OpenOffice.org, zkopíruji jeho obsah přímo do e-mailu a snažím [...]]]></description>
			<content:encoded><![CDATA[<p>"Haló, nemohu otevřít dokument v e-mailu, mohu vám ho poslat?" i takové telefonáty občas na naší vysoké škole máme.</p>
<p>Požádám tedy zoufalou volající paní o přeposlání e-mailu a jsem zvědav, co na mě čeká.<br/><br/> A podívejme se! Jedná se o e-mail s přílohou <em>exkurze.odt</em>.</p>
<p>Otevřu tedy dokument v <a href="http://www.openoffice.cz/">OpenOffice.org</a>, zkopíruji jeho obsah přímo do e-mailu a snažím se z touhy po osvětě (aby paní byla příště chytřejší) přiložit odkaz na nějakou stránku prezentující OpenOffice.org v češtině.</p>
<p>Protože žádnou takovou nenajdu (rozuměj takovou, která by byla pěkná a pro šedesátiletou paní srozumitelná), ze zoufalství vkládám alespoň <a href="http://www.openoffice.cz/popis">http://www.openoffice.cz/popis</a>, byť paní k ničemu nebude.</p>
<p>Za pět minut zvoní opět telefon: "Mockrát děkuji za otevření, víte že co jsem zjišťovala, tak stejný problém s tím e-mailem měli zřejmě pedagogové všech zdravotnických škol u nás? Ale vy jste ho vyřešil, děkujeme."</p>
<p>Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.</p>
]]></content:encoded>
			<wfw:commentRss>http://met.blog.root.cz/2007/04/16/halo-nemohu-otevrit-dokument/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Gnuplot is back</title>
		<link>http://met.blog.root.cz/2007/03/07/gnuplot-is-back/</link>
		<comments>http://met.blog.root.cz/2007/03/07/gnuplot-is-back/#comments</comments>
		<pubDate>Wed, 07 Mar 2007 22:28:21 +0000</pubDate>
		<dc:creator>Martin Hassman</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Gnuplot, jeden z mých starých oblíbených početních programů, řadu let zdánlivě mrtvý, nyní nabírá nový dech s vycházející verzí 4.2.

Gnuplot je program pro jednoduché i složitější výpočty a tvorbu grafů. Mezi jeho zvláštnosti (pro někoho přednosti) je ovládání z příkazové řádky. Gnuplot proto nemusíme používat jen interaktivně, ale můžeme jej snadno volat z našich programů [...]]]></description>
			<content:encoded><![CDATA[<p>Gnuplot, jeden z mých starých oblíbených početních programů, řadu let zdánlivě mrtvý, nyní nabírá nový dech s vycházející verzí 4.2.</p>
<p><span id="more-13"></span>
<p><a href="http://www.gnuplot.info/">Gnuplot</a> je program pro jednoduché i složitější výpočty a tvorbu grafů. Mezi jeho zvláštnosti (pro někoho přednosti) je ovládání z příkazové řádky. Gnuplot proto nemusíme používat jen interaktivně, ale můžeme jej snadno volat z našich programů a skriptů pro rychlé generování 2D a 3D grafů.</p>
<p>Další výhodou Gnuplotu je dostupnost na pro mě nepředstavitelném množství operačních systémů. Kromě těch nejběžnějších, méně běžných a ještě méně běžných podporuje třeba i takovou Amigu.</p>
<p>Základní funkce Gnuplotu najdete v <a href="http://www.root.cz/serialy/gnuplot/">tutoriálu na Rootu</a>. Mě se tento program před lety zalíbil natolik, že jsem se ho pro jeho didaktičnost pokusil nasadit v našich <a href="http://www.met.cz/gnuplot/">laboratořích z biochemie</a>.</p>
<p>A teď smutná zpráva: <strong>Gnuplot před lety umřel</strong>.</p>
<p>Poslední verze vyšla někdy roku 2004 a pak bylo ticho po pěšině. Možná právě vzhledem ke své <a href="http://gnuplot.cvs.sourceforge.net/gnuplot/gnuplot/Copyright?view=markup">licenci</a> nebyl program převzat jiným týmem. Ač má v názvu Gnu- a je zadarmo i se zdrojovými kódy, jeho historie sahá ještě do roku 1986 (tehdy ještě žádná <a href="http://www.root.cz/slovnicek/gpl/">GPL</a> neexistovala), vydávání modifikovaných verzí je <a href="http://www.gnuplot.info/faq/faq.html#SECTION00037000000000000000">komplikovanější</a>.</p>
<p>A pro změnu veselá zpráva: <strong>Gnuplot číslo 4 žije</strong>.</p>
<p>Po dlouhé odmlce před několika dny vyšlo <a href="http://www.gnuplot.info/announce.4.2.0">oznámení o vydání</a> nové stabilní verze 4.2. Nejedná se jen o nějaké oprášení, ale o regulérní novou verzi s novými funkcemi - <a href="http://gnuplot.sourceforge.net/demo_4.2/">ukázky výstupů nové verze</a>. A již se pracuje na <a href="http://www.gnuplot.info/development/">verzi 4.3</a>.</p>
<p><strong>Good job, boys!</strong></p>
<p>Jediným nedostatkem, který shledávám, k dispozici nejsou ke stažení binárky, ale jen tarball se zdrojovými kódy. Oops! Takhle si návrat starého mistra úplně nepředstavuji. Snad to brzy hoši spraví, mě zatím nezbylo než si stáhnout <a href="http://www.gnuplot.info/development/binaries/">vývojovou verzi</a>.</p>
<p>Pokud byste někdo věděl, jakým zázrakem se dal vývojový tým zase dohromady, dejte vědět, docela mě to zajímá. Takové callbacky po třech letech se často nevidí (u českého vývojáře <a href="http://www.sci.muni.cz/%7Emikulik/gnuplot.html">Petra Mikulíka</a> jsem žádné čerstvé informace nenalezl).</p>
]]></content:encoded>
			<wfw:commentRss>http://met.blog.root.cz/2007/03/07/gnuplot-is-back/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Virtual PC 2007 s Linuxem</title>
		<link>http://met.blog.root.cz/2007/02/24/virtual-pc-2007-s-linuxem/</link>
		<comments>http://met.blog.root.cz/2007/02/24/virtual-pc-2007-s-linuxem/#comments</comments>
		<pubDate>Sat, 24 Feb 2007 09:25:15 +0000</pubDate>
		<dc:creator>Martin Hassman</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Začátkem tohoto týdne vyšel MS Virtual PC 2007. Dá se použít pro virtuální Linux?

Virtualizace je novinka již pár let stará. Prvně jsem se o ní dozvěděl před 7 lety z Linuxových novin. Mít v počítači rychlý virtuální počítač je šikovná věc ať už pro vývojáře (snadné testování programů v různých verzích a konfiguracích OS), webdesignéry [...]]]></description>
			<content:encoded><![CDATA[<p>Začátkem tohoto týdne vyšel MS Virtual PC 2007. Dá se použít pro virtuální Linux?</p>
<p><span id="more-9"></span>
<p><a href="http://www.virtualization.info/2006/04/what-is-virtualization.html">Virtualizace</a> je novinka již pár let stará. Prvně jsem se o ní dozvěděl před 7 lety z <a href="http://docs.linux.cz/misc/ln/2000-01/clanek02.html">Linuxových novin</a>. Mít v počítači rychlý virtuální počítač je šikovná věc ať už pro vývojáře (snadné testování programů v různých verzích a konfiguracích OS), webdesignéry (sada webových prohlížečů po ruce), windowso-linuxové schizofreniky (pryč s dualbootem, sem s virtualem) nebo kutily a experimentátory (raději si přece rozbiju virtual než vlastní systém).</p>
<p>Sám patřím mezi všechny zmiňované případy, a bylo načase se s <a href="http://cs.wikipedia.org/wiki/Virtualizace">virtualizací</a> skamarádit. Nebudu předstírat, že vím, jak přesně funguje (rozuměj nemám šajn), chci psát o tom, co jsem zatím jako virtualizační začátečník vyzkoušel. A když mě někdo opraví nebo doplní, budu jen rád.</p>
<p>Za těch pár let ušla virtualizace nějakou cestu. Už tu není jen <a href="http://www.vmware.com/">VMware</a>, ale řada <a href="http://en.wikipedia.org/wiki/Comparison_of_virtual_machines">dalších řešení</a>. Do hry se zapojil i Microsoft se svým <a href="http://www.microsoft.com/virtualserver">Virtual Serverem</a> a <a href="http://www.microsoft.com/virtualpc">Virtual PC</a> (o tom bude řeč) a loni uvolnil oba produkty zadarmo. Nejedná se zdaleka o jediné <a href="http://www.abclinuxu.cz/software/alternativy/Microsoft%20VirtualPC">virtualizační programy zadarmo</a>, najdeme i Open Source.</p>
<p>Jednotliví hráči používají pro své mašiny různé formáty, ale není úplně zle, specifikace jsou k nahlédnutí (<a href="http://www.microsoft.com/windowsserversystem/virtualserver/techinfo/vhdspec.mspx">VHD</a> - MS formát virtuálního disku, <a href="http://www.vmware.com/interfaces/vmdk.html">VMDK</a> - VMware formát; obě vyžadují registraci). Můžeme konvertovat <a href="http://vmtoolkit.com/files/folders/converters/entry8.aspx">VMDK na VHD</a> a nazpátek (VMware umí importovat VHD přímo). A dokonce konvertovat <a href="http://www.vmware.com/products/converter/">realný počítač na virtuální</a>. Pokud nám virtuální mašina zkolabuje a nejde nastartovat, můžeme si přimountovat virtuální disk a zachraňovat data (<a href="http://blogs.virtualserver.tv/blogs/virtualmachine/archive/2006/09/16/Can_I_download_just_the_VHDMount.aspx">VHD mount</a>). Nemluvě o možnosti tzv. undo disků (základní disk se nastaví read-only, změny necháte ukládat bokem a teprve, až si jste jisti, dáte změny uložit a disky zmergovat nebo naopak zapomenout).</p>
<p>VMware nabízí <a href="http://www.vmware.com/vmtn/appliances/directory/">vybrané image</a> ke stažení (najdete zde řadu nakonfigurovaných Linuxů, Unixů, ale třeba i 30-denní zkušební verze Windows Serveru). Podobně Microsoft začíná nabízet některé zkušební verze svých produktů ve formě předinstalovaných virtualů, např. připravované <a href="http://www.microsoft.com/downloads/details.aspx?familyid=1FF0B35D-0C4A-40B4-915A-5331E11C39E6&amp;displaylang=en">Visual Studio "Orcas"</a>.</p>
<p>Když jsem se rozhodoval, po jakém virtualizačním nástroji sáhnout, vybíral jsem mezi VMware a Virtual PC. Bohužel VMware nabízí zadarmo jen serverové řešení (pro mě zajímavá <a href="http://www.vmware.com/products/ws/">VMware Workstation</a> je stále placená) a jelikož už mám doma vestavěný redmondský okenní systém, vyhrálo čerstvě vyšlé <a href="http://www.microsoft.com/virtualpc">Virtual PC 2007</a>.</p>
<p>I začal jsem úspěšně vytvářet Windowsí virtualy (naše školská instituce potěšila licencemi, které mi umožňují je mít legálně, jinak je to samozřejmě další kopie požadující další licenci). Ale o tom není tenhle článek. Ostatně, koho by překvapilo, že Microsoftí produkt podporuje produkty od Microsoftu, že? S trochou obav jsem začal zkoušet virtualy Linuxové.</p>
<p>Kolegové zkoušeli Linux už dříve na Virtual PC 2004 a s rozpačitými výsledky. Po ruce jsem měl CentOS 4.4, přidělil mu paměť 256MB, 15GB disk (virtuální disk zabírá jen skutečně obsazené místo, velikost disku ohraničuje jeho maximum) a začal instalovat. Během instalace šlo všechno v pořádku, bylo znát zpomalení, ale nikoliv zoufalé. A já se radoval. Po prvním naběhnutí systému radost opadla. Textový režim běžel v pořádku (rychlost mě potěšila, ale nezkoušel jsem zatím žádné kompilace, to se teprve uvidí, kdo je tu jak rychlý), nicméně grafický mód ukazoval cokoliv, jen ne očekávanou pěknou obrazovku.</p>
<p>Ó Google vševědoucí, vzývám tě poprvé, sešli radu poutníkovi nebohému. I radu mi seslal v podobě návodů, viz <a href="http://articles.techrepublic.com.com/5100-6345-5193451.html">Creating a Linux/Windows cross-platform desktop with Virtual PC</a> nebo <a href="http://articles.techrepublic.com.com/5100-6349-5034605.html">Create an entire test lab on one system using Virtual PC</a> nebo <a href="http://zahradil.info/2006/11/02/linux-ve-virtual-pc.html">Chyba zobrazení při běhu Linuxu ve Virtual PC</a>. Virtuální grafická karta, kterou Virtual PC obsahuje, nepodporuje zobrazovací mód s 24-bit hloubkou, nicméně instalátor (nejen mě, ale podle velkého Googla prakticky všem smrtelníkům instalujícím Linux do Virtual PC) nastavil shodou okolností právě tuto hloubku jako výchozí. Editace <em>/etc/X11/xorg.conf</em> a nastavení <em>defaultDepth</em> na <em>16</em> problém vyřeší a grafika jede. Pokud máte malé rozlišení, nastavte si monitor v konfiguraci X-kek na <em>Generic LCD display</em> s požadovaným rozlišením dle libosti.</p>
<p>V grafickém módu bylo již zpomalení znát, ale systém byl stále použitelný (celý den bych s ním asi pracovat nemohl, ale na testování a základní operace mě postačí). Kdo chce, může si přiinstalovat <a href="http://www.microsoft.com/windowsserversystem/virtualserver/evaluation/linuxguestsupport/default.mspx">Virtual Machine Additions for Linux</a> (jsou sice pro Virt. Server, ale běhají i pro Virt. PC), které umožní např. aby kurzor myši mohl plynule přebíhat mezi vnitřním a vnějším systémem (a nebylo třeba přepínání pravým Altem), synchronizaci času mezi systémy, možnost vnějšího systému virtuální Linux regulérně ukončit apod. Vyzkoušel jsem pouze na zmiňovaném CentOS (oficiální podpora je pro RedHat a SuSe).</p>
<p>Po tomto úspěchu jsem začal stahovat další distribuce. Konečně můžu mít vedle sebe Debian, Suse, Fedoru, porovnat si jejich výhody a netrápit se s dělením disků nebo přemýšlet, proč mi nejde po jejich instalaci nabootovat do Windows. Seznam systémů, které se lidem ve Virtual PC podařilo zprovoznit, je <a href="http://vpc.visualwin.com/">docela rozsáhlý</a>. A protože instalace je věc zdlouhavá a Virtual PC může bootovat i z virtuálního CD, zkoušel jsem napřed <a href="http://proc.linux.cz/chci-vyzkouset.html">live distribuce</a> (viz též na <a href="http://www.linuxsoft.cz/en/distro_list.php?id_kategory=4">Linuxsoftu</a>).</p>
<p>Moc jsem toho ale nevyzkoušel. Většinou jsem totiž skončil na známém problému. Grafika detekována, nepodporovaná barevná hloubka 24 bitů zvolena, obraz nečitelný. Pátral jsem, pátral, jak při bootu barevnou hloubku X-kek nastavit lze, ale nedařilo se. Ani vygooglovaný <em>xdepth=16</em> mi nepomohl. Takze s <a href="http://www.danix.cz/">Danixem</a> a <a href="http://www.mandriva.com/en/community/mandrivaone">Mandrivou One</a> jsem se do grafiky nedostal (rady uvítám).</p>
<p>Nakonec jsem spustil jen <a href="http://www.suseportal.cz/suse_linux_live_dvd">Suse Live</a>, které naběhlo v 800x600x16, ale bez funkční sítě. Dále <a href="http://www.slax.cz/">Slax</a> a <a href="http://www.linuxsoft.cz/en/distribuce_detail.php?id_distribuce=38">Damn small linux</a>, oba naběhli v 1024x768 (Slax v 32-bit, Dsl v16-bit hloubce), oba plně funkční. Jen připomínám, že problém se týká pouze Live distribucí. Pokud bych je skutečně instaloval a <em>xorg.conf</em> si sám upravil, vše by mělo být v pořádku.</p>
<p>Trochu rozmrzelý jsem pátral po problému dál (když to trápí každého, musí to být známý problém a nějaké řešení na obzoru) a na <a href="http://blogs.msdn.com/virtual_pc_guy/">blogu člena Virtual PC týmu</a> jsem zjistil, že v Microsoftu už od roku 2005 <a href="http://blogs.msdn.com/virtual_pc_guy/archive/2005/05/09/415814.aspx">o zmíněném problému vědí</a>. Nejsem si jist, na čí straně je chyba, nechť posoudí odborníci po přečtení onoho blogu, zda na straně X serveru, který mylně předpokládá podporu 24-bit, nebo na straně Virtual PC, které emuluje virtuální grafickou kartu <em>S3 Trio 64</em> bez 24-bit módu, byť originální (fyzická) karta tento mód obsahuje. Je to pěkně zmatené, jeden by si skoro chvíli myslel, že to ani není náhoda, ale těžko soudit.</p>
<p>A co na závěr? Doporučit Virtual PC nebo nedoporučit Virtual PC? Při troše snahy pod Virtual PC Linux určitě provozovat lze, ale pokud se vám primárně jedná o linuxové virtualy (a nikoliv o mix windosích a linuxových virtualů jako mě), stálo by za to zvážit i <a href="http://www.vmware.com/products/server/">VMware server</a> řešení (neporovnával jsem, soudím z doslechu, že i výkonově by měl být pro Linux o něco lepší). Na poli virtualizace zuří těžký boj o první místo, které je v této chvíli neobsazené. I proto velcí hráči v poslední době uvolňují své produkty zdarma. Dokud bude konkurenční boj pokračovat, možná se dočkáme i dalších příjemných překvapení.</p>
]]></content:encoded>
			<wfw:commentRss>http://met.blog.root.cz/2007/02/24/virtual-pc-2007-s-linuxem/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
	</channel>
</rss>

