<?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>IT blog</title>
	<atom:link href="http://szj.cz/feed/" rel="self" type="application/rss+xml" />
	<link>http://szj.cz</link>
	<description>internet, linux, novinky, programování</description>
	<lastBuildDate>Sat, 12 Sep 2015 11:14:32 +0000</lastBuildDate>
	<language>cs-CZ</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.2.2</generator>
	<item>
		<title>Acer Aspire Switch 10 : recenze a zkušenosti</title>
		<link>http://szj.cz/acer-aspire-switch-10-recenze-a-zkusenosti/</link>
		<comments>http://szj.cz/acer-aspire-switch-10-recenze-a-zkusenosti/#comments</comments>
		<pubDate>Sat, 12 Sep 2015 11:14:32 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Ostatní]]></category>
		<category><![CDATA[recenze]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=1011</guid>
		<description><![CDATA[Po dobu tří měsíců se mi do ruky dostal malý notebook Acer Aspire Switch 2 10. Ta dvojka v názvu značí evoluční řadu, desítka naopak úhlopříčku displeje. Jde o konvertibilní zařízení. Dotykový displej lze oddělit od klávesnice, čímž vzniká tablet. Připojením doku s klávesnicí získáte možnost pohodlného psaní a jeden plnohodnotný USB 2.0 konektor (víc jich [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Po dobu tří měsíců se mi do ruky dostal malý notebook <strong>Acer Aspire Switch 2 10</strong>. Ta <em>dvojka</em> v názvu značí evoluční řadu, <em>desítka</em> naopak úhlopříčku displeje. Jde o <strong>konvertibilní zařízení</strong>. Dotykový displej lze oddělit od klávesnice, čímž vzniká <strong>tablet</strong>. Připojením doku s klávesnicí získáte možnost pohodlného psaní a jeden plnohodnotný <strong>USB 2.0</strong> konektor (víc jich notebook nemá a <strong>postrádá RJ-45</strong>). Zařízení jsem používal denně a nyní se s vámi podělím o svoje zkušenosti. Nepůjde o klasickou recenzi, ale spíše o poznatky z praktického užívání.</p>
<div id="attachment_1017" style="width: 635px" class="wp-caption aligncenter"><a href="http://szj.cz/wp-content/uploads/2015/09/notebook.jpg"><img class="wp-image-1017 size-large" src="http://szj.cz/wp-content/uploads/2015/09/notebook-1024x768.jpg" alt="notebook" width="625" height="469" /></a><p class="wp-caption-text">Acer Aspire Switch 2 10</p></div>
<h2>Nesmíte jezdit vlakem</h2>
<p>Následující odstavec bude nejspíše znít vtipně, ale notebook nesmí do vlaku. Konkrétně jej v RegioJetu rozhodně nepokládejte na stoleček v Relax třídě. Stává se totiž, že zcela náhodně <strong>vypadne klávesnice</strong>. Lék je naštěstí jednoduchý, stačí obě části notebooku rozpojit a znovu zapojit, ale zkuste si to udělat pětkrát během půl hodiny, když tvoříte nějaký text. To si o inženýrech v Aceru nebudete myslet nic pěkného.</p>
<p>Teď vážněji. Notebooku nejspíše vadí <strong>otřesy</strong>, které jsou s cestou vlakem neodmyslitelně spojeny. Můj tip je ten, že konkrétně selhává spoj mezi dokem s klávesnicí a monitorem. Na třeba setinu vteřiny dojde k přerušení kontaktu a operační systém žije v domnění, že dok byl odpojen.</p>
<p>Uvedený problém jsem vyřešil tak, že notebook pokládám na nohy, ne na stoleček. Vaše tělo totiž řadu vibrací pohltí a pro notebook je to tedy menší zátěž, než v případě položení na rovnou plochu stolku.</p>
<p>Osobně mi konstrukce notebooku připadá lehce postavená na hlavu. Část s displejem je totiž mnohem těžší než dok s klávesnicí. Chápu, že bylo třeba někam vměstnat baterii a všechen hardware, díky tomu je ovšem spoj s dokem více namáhán (pořád na něj něco tlačí nebo s ním kývá těžší displej). Měl jsem strach používat notebook v nestandardních polohách, zdálo se mi, že se displej až moc tlačí k zemi, každou chvílí povolí spoj s klávesnicí a horní část se oddá gravitaci.</p>
<div id="attachment_1018" style="width: 635px" class="wp-caption aligncenter"><a href="http://szj.cz/wp-content/uploads/2015/09/notebook-spoj.jpg"><img class="size-large wp-image-1018" src="http://szj.cz/wp-content/uploads/2015/09/notebook-spoj-1024x768.jpg" alt="Detail spoje" width="625" height="469" /></a><p class="wp-caption-text">Detail spoje</p></div>
<div id="attachment_1019" style="width: 635px" class="wp-caption aligncenter"><a href="http://szj.cz/wp-content/uploads/2015/09/notebook-pant.jpg"><img class="size-large wp-image-1019" src="http://szj.cz/wp-content/uploads/2015/09/notebook-pant-1024x768.jpg" alt="Jeden ze dvou pantů" width="625" height="469" /></a><p class="wp-caption-text">Jeden ze dvou pantů</p></div>
<h2>Nejde nainstalovat alternativní OS</h2>
<p>Druhý den používání notebooku jsem došel k názoru, že dlaždice ve Windows 8 jsou sice pěkné, ale vrátím se ke svému oblíbenému Linuxu. Vytvořil jsem si tedy instalační USB flash disk s tím, že formou dual-bootu nainstaluji distribuci Ubuntu. Jenže to bych nejprve musel z flashky nabootovat &#8230;</p>
<p>Notebook nemá klasický BIOS. Namísto toho používá <strong>UEFI</strong>. Nic proti tomu, je to novější technologie, bývá však slušnost povolit přepnutí zařízení do <strong>legacy</strong> módu a BIOS emulovat. Díky tomu bych mohl nabootovat z flashky a Ubuntu nainstalovat. Firmware notebooku však nic podobného <strong>neumožňuje</strong>. Našel jsem sice různé pokoutné návody, jak vytvořit instalační médium kompatibilní s UEFI, ovšem jak jsem si přečetl, polovina věcí by mi pak v Linuxu stejně  nefungovala (např. Wi-Fi). Vzhledem k tomu, že jsem měl notebook zapůjčený jen na pár měsíců, tak jsem toto neřešil a používal Windows.</p>
<h2>Jednou vypadlo podsvícení</h2>
<p>Za dobu používání notebooku se mi jednou stalo, že vypadlo podsvícení. Šlo dle mého o softwarový problém, pomohl totiž restart. Notebook podle úrovně okolního jasu podsvícení sám reguluje, tady to zdá se, přeťal.</p>
<h2>Odezva systému</h2>
<p>Opravdu příjemně mě překvapila rychlost systému. S notebookem se skutečně příjemně pracuje, i když jsou na něm naistalované poměrně náročné Windows 8. Trik je podle internetu v tom, že jde o speciální edici &#8222;Windows 8.1 with Bing&#8220;, která patrně hospodárně pracuje se systémovými prostředky. Ale nemusíte se ničeho bát, jde o plnohodnotné Windows, každý program, který jsem nainstaloval, fungoval.</p>
<p>Dále jsem se hodně bál nedostatku RAM. Počítač ale těží z toho, že nemá žádný pevný disk a stránkovat tak může na rychlou paměť.</p>
<div id="attachment_1020" style="width: 635px" class="wp-caption aligncenter"><a href="http://szj.cz/wp-content/uploads/2015/09/notebook-rozpojeny.jpg"><img class="size-large wp-image-1020" src="http://szj.cz/wp-content/uploads/2015/09/notebook-rozpojeny-1024x768.jpg" alt="Notebook v rozpojeném stavu" width="625" height="469" /></a><p class="wp-caption-text">Notebook v rozpojeném stavu</p></div>
<h2>Dotykové rozhraní</h2>
<p>Někdy mám pocit, že Windows 8 trpí schizofrenií. Dvě metody používání zařízení (tablet nebo notebook) totiž programátoři v Microsoftu vyřešili po svém. Ty důležité aplikace jsou v počítači <strong>dvakrát</strong>. Jednou je program optimalizovaný pro tablet, jindy pro ovládání myší. Což o to, to by mě asi ani nevadilo, když jste ale v módu počítač, chcete kouknout na fotku a otevře se vám tabletový prohlížeč s dotykovým ovládáním, tak si klepete na čelo.</p>
<p>Zajímavé problémy vznikají i obráceně. S myší a klávesnicí jsem nainstaloval VLC media player a na tabletu chtěl kouknout na film. Jenže tento program není na takové ovládání uzpůsobený, takže se snažíte prstem trefit na titěrné ovládací prvky. Když to srovnám s MX playerem z Androidu, tak jde o rozdíl sto a jedna.</p>
<p>Jako uživateli vám proto nezbývá, než si některé programy nainstalovat dvakrát, jednou pro tablet, jednou pro klasický počítač.</p>
<h2>Zhodnocení</h2>
<p>Koupil bych si tento tablet? Na rovinu <strong>ne</strong>. Nemám pocit, že bych byl s nějakou vlastností vyloženě nespokojený, ale zařízení jako celek není pro mě. Podle mého jde spíše o tablet s klávesnicí, než o notebook. Nelze nainstalovat jiný operační systém, což patrně většině uživatelů vadit nebude. Výdrž notebooku je výborná, na běžnou práci vydrží kolem <strong>osmi hodin</strong>. Výdrž kloubu spojujícího displej s dokem je diskutabilní. Sice za dobu mého používání nedošlo k žádnému nalomení nebo ošoupání, nemám však důvěru v to, že by tomu tak bylo i po roce používání. Záruka to naštěstí jistí.</p>
<p>Pokud o zařízení uvažujete, zvažte, zda se výše uvedené výtky nedotknou i vás. Pokud hledáte domů počítač a tablet v jednom a nemáte v úmyslu pracovat v terénu, lze nad koupí přemítat. V opačném případě se raději poohlédněte po klasickém netbooku bez dotykového displeje.</p>
<h4>Příchozí dotazy:</h4><ul><li>wordpress</li></ul>]]></content:encoded>
			<wfw:commentRss>http://szj.cz/acer-aspire-switch-10-recenze-a-zkusenosti/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Jidáš Iškariotský zradil Krista i maturanty 2015: Česko má nové meme</title>
		<link>http://szj.cz/jidas-iskariotsky-zradil-krista-i-maturanty-2015-cesko-ma-nove-meme/</link>
		<comments>http://szj.cz/jidas-iskariotsky-zradil-krista-i-maturanty-2015-cesko-ma-nove-meme/#comments</comments>
		<pubDate>Tue, 05 May 2015 17:48:48 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Jidáš Iškariotský]]></category>
		<category><![CDATA[maturita 2015]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=996</guid>
		<description><![CDATA[Dnes 5. května 2015 se psal maturitní didaktický test z českého jazyka. Pokud na Facebooku nemáte v přátelích studenta ze střední školy, pravděpodobně vás minula vlna hněvu, která se momentálně valí na hlavu Jidáše. Ten patřil do nejbližšího kruhu Ježíše Krista, svého mistra ovšem zradil a usnadnil jeho zatčení výměnou za 30 stříbrných. Na znalost [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Dnes 5. května 2015 se psal maturitní didaktický test z českého jazyka. Pokud na Facebooku nemáte v přátelích studenta ze střední školy, pravděpodobně vás minula vlna hněvu, která se momentálně valí na hlavu <strong>Jidáše</strong>. Ten patřil do nejbližšího kruhu Ježíše Krista, svého mistra ovšem <strong>zradil</strong> a usnadnil jeho zatčení výměnou za <strong>30 stříbrných</strong>. Na znalost těchto faktů narážela i jedna z otázek zmíněného didaktického testu. Z výchozího krátkého textu bylo nutno postavu Jidáše odvodit z jeho příjmení (Iškariotský), motivu zrady a sumy třiceti stříbrných. Navíc tento rok byla aplikována maturitní novinka &#8212; <strong>otevřené otázky</strong>. Na ně nelze odpovědět výběrem jedné ze čtyř možností, ale na studenta se šklebí prázdné pole, které musí vyplnit. A jak již správně tušíte i otázka týkající se Jidáše byla otevřená. A odpověď znal opravdu málokdo, ostatně, který středoškolák dnes dobrovolně čte Bibli.</p>
<p>Nyní, když jsme si osvětlili situaci, pojďme se společně podívat na ty nejlepší vtipy, které se na účet Jidáše snesly.</p>
<p><a href="http://szj.cz/wp-content/uploads/2015/05/jidas-zradil.jpg"><img class="aligncenter size-full wp-image-999" src="http://szj.cz/wp-content/uploads/2015/05/jidas-zradil.jpg" alt="jidas-zradil" width="470" height="450" /></a></p>
<p><a href="http://szj.cz/wp-content/uploads/2015/05/jidas-body.jpg"><img class="aligncenter size-full wp-image-997" src="http://szj.cz/wp-content/uploads/2015/05/jidas-body.jpg" alt="jidas-body" width="800" height="535" /></a></p>
<p><a href="http://szj.cz/wp-content/uploads/2015/05/jidas-zari.jpg"><img class="aligncenter size-large wp-image-998" src="http://szj.cz/wp-content/uploads/2015/05/jidas-zari-1024x576.jpg" alt="jidas-zari" width="625" height="352" /></a></p>
<p>&nbsp;</p>
<div id="attachment_1001" style="width: 829px" class="wp-caption aligncenter"><a href="http://szj.cz/wp-content/uploads/2015/05/jidas-wiki.png"><img class="wp-image-1001 size-full" src="http://szj.cz/wp-content/uploads/2015/05/jidas-wiki.png" alt="jidas-wiki" width="819" height="208" /></a><p class="wp-caption-text">Autentický screenshot české Wikipedie</p></div>
<p><a href="http://szj.cz/wp-content/uploads/2015/05/jidas-walking-dead.jpg"><img class="aligncenter size-large wp-image-1004" src="http://szj.cz/wp-content/uploads/2015/05/jidas-walking-dead-456x1024.jpg" alt="jidas-walking-dead" width="456" height="1024" /></a></p>
<p>&nbsp;</p>
<p>Na YouTube se můžete podívat na <a href="https://www.youtube.com/watch?v=RDfD_S8RL_w">rozhovor se zaměstnancem Cermatu</a> k tomuto tématu.</p>
<p>Po dopsání didaktického testu se píše maturitní slohovka. Na výběr je vždy několik témat. Ještě než se je studenti dozvěděli, téměř jednohlasně se shodli, že je určitě čeká <em>charakteristika Jidáše</em>.</p>
<p>Chybí mi zde nějaké meme s tématikou Jidáše a maturity 2015? Podělte se prosím v komentářích.</p>
<h4>Příchozí dotazy:</h4><ul><li>jidas maturita</li><li>maturita jidas</li></ul>]]></content:encoded>
			<wfw:commentRss>http://szj.cz/jidas-iskariotsky-zradil-krista-i-maturanty-2015-cesko-ma-nove-meme/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Návod: jak vyčistit hacknutý WordPress</title>
		<link>http://szj.cz/navod-jak-vycistit-hacknuty-wordpress/</link>
		<comments>http://szj.cz/navod-jak-vycistit-hacknuty-wordpress/#comments</comments>
		<pubDate>Sat, 18 Apr 2015 05:20:12 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[hacker]]></category>
		<category><![CDATA[hacknutí WordPress]]></category>
		<category><![CDATA[vyčištění WordPress]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=970</guid>
		<description><![CDATA[Stala se mi taková hodně nemilá věc. Můj VPS server byl hacknut, do složky s weby se vtipálkům podařilo nahrát nejrůznější PHP soubory, které začaly rozesílat hromadu SPAMu. V tomto článku vám krok po kroku poradím, jak se z této nemilé situace dostat. Začnu však poněkud obšírněji a popíši, jak se u mě celý problém [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Stala se mi taková hodně nemilá věc. Můj VPS server byl <em>hacknut</em>, do složky s weby se vtipálkům podařilo nahrát nejrůznější PHP soubory, které začaly rozesílat hromadu SPAMu. V tomto článku vám krok po kroku poradím, jak se z této nemilé situace dostat. Začnu však poněkud obšírněji a popíši, jak se u mě celý problém projevil. Pokud hledáte samotný návod na vyčištění WordPressu, možná budete chtít úvodní povídání přeskočit a <a href="#tutorial">podívat se rovnou na něj</a>.</p>
<p><em>Poznámka: termín <strong>hacknutí</strong> zde používám ve stejném významu jako redaktoři jedné nejmenované oblíbené české televize.</em></p>
<h2>Přestalo fungovat CSS</h2>
<p>Vše začalo poněkud nenápadně, a to přímo na tomto webu. Z ničeho nic se místo úvodní stránky načítala šedá plocha. V HTML přitom vše vypadalo v pořádku. Okamžitě jsem z tohoto problému obvinil plugin <strong>W3 Total Cache</strong>. Zkoušel jsem pročistit cache, vypnout celý plugin i kompletní odinstalaci. Nic z toho nepomohlo. Řekl jsem si, že se nějak rozhodila šablona. Zkusil jsem aktivovat jinou. To naštěstí pomohlo a já problém dál neřešil.</p>
<h2>ZaBANování VPS</h2>
<p>Jednu neděli jsem úplně čirou náhodou zjistil, že mi už 22 hodin neběží VPS s většinou mých webů a projektů. Neděle už najednou tak hezká nebyla. Moje VPS se nachází v zahraničí, započala tedy komunikace s tamější podporou, aby mé VPS bylo opětovně nahozeno. Z logu jsem se dozvěděl, že důvod pro suspendování serveru bylo tisíc SMTP spojení a rozesílání SPAMU. Než můj VPS server zase běžel, trvalo to celý den. Opětovně po jeho spuštění jej totiž automatický skript poskytovatele ihned zablokoval, opět pro rozesílání SPAMu. Bylo třeba přidat výjimku, aby VPS šlo vůbec spustit.</p>
<h2>Open relay</h2>
<p>Nejprve jsem myslel, že jsem na serveru nezakázal <strong>open relay</strong> (to znamená, že by se kdokoliv mohl na server připojit a přes STMP posílat kamkoliv email). Jak však ukázal jeden z mnoha <a href="http://www.aupads.org/test-relay.html">online testů</a>, tímto to nebylo. Rozhodl jsem se tedy alespoň omezit počet souběžných SMTP připojení. Pro Postfix je nutno v souboru <strong>/etc/postfix/master.cf </strong>najít tento řádek:</p>
<pre class="brush: bash; title: ; notranslate">

smtp inet n – – – – smtpd

</pre>
<p>Poslední pomlčku lze nahradit za konkrétní číslo. To udává maximální počet souběžných procesů, které budou obsluhovat SMTP:</p>
<pre class="brush: bash; title: ; notranslate">

smtp inet n – – – 3 smtpd

</pre>
<p>Když už jsem byl v tom nastavování, rozhodl jsem se ztížit robotům pokusy o přihlášení. Do souboru <strong>/etc/postfix/main.cf</strong> (klidně např. na konec) stačí přidat následující 3 řádky:</p>
<pre class="brush: bash; title: ; notranslate">

smtpd_error_sleep_time = 1s

smtpd_soft_error_limit = 10

smtpd_hard_error_limit = 20

</pre>
<p>I když jsem však provedl všechna výše zmíněná opatření, ničemu to nepomohlo &#8212; v mailové frontě na serveru se stále objevoval nový SPAM. Začaly mi docházet nápady. <em>Neodesílá emaily náhodou nějaký skript na serveru?</em> Letmo jsem se podíval do adresářové struktury jednoho webu běžícího na WordPressu a skutečně &#8212; byly tu soubory, co zde na první pohled nemají co dělat.</p>
<h2 id="tutorial">Jak vyčistit hacknutý WordPress</h2>
<p>Než začnete cokoliv dělat, <strong><span style="color: #ff0000;">udělejte si zálohu</span></strong> všech souborů (ano, těch hacknutých) i databáze. Možná to zní zvláštně, ale vyplatí se to. Pravděpodobně totiž budete ve stresu a může se stát, že uděláte něco, čeho budete později litovat.</p>
<p>V mém případě složka s WordPressem obsahovala řadu podivných souborů. Namátkou uvedu některá jména:</p>
<ul>
<ul>
<li>wpconfig-new.php</li>
<li>options.php</li>
<li>defines.phps</li>
<li>gallery.php</li>
<li>view.php</li>
<li>exec__root.php &#8212; obzvláště tento soubor zní dost podivně</li>
</ul>
</ul>
<p>Takže, co je vlastně cílem? Smazat všechny soubory, co zde nemají co dělat. Důležité je, že se nesmí zapomenout ani na jeden. Stačí jeden infikovaný PHP soubor na serveru zanechat a útočník stále bude schopný se serverem provádět řadu věcí. K nalezení zmíněných souborů jsem použil plugin <a href="https://wordpress.org/plugins/sucuri-scanner/">Sucuri Security</a>, který mohu jen doporučit. Tato pomůcka proskenuje adresářovou strukturu a zobrazí změněné i nově přidané soubory. My přitom prahneme po těch nově přidaných. Vžijme se do role útočníka. Přece chceme, aby naše infekce přežila případnou přeinstalaci/aktualizaci WordPressu. Proto nemůžeme modifikovat stávající soubory, ale musíme škodlivý kód uchovávat v těch nově přidaných. Sucuri Security všechny soubory zobrazí v přehledém seznamu. Obzvláště podivné je PHP ve složkách <strong>wp-admin</strong>, <strong>wp-includes</strong>, přímo narušení bezpečnosti je poté PHP v <strong>wp-content/uploads</strong>.</p>
<div id="attachment_980" style="width: 635px" class="wp-caption aligncenter"><a href="http://szj.cz/wp-content/uploads/2015/04/sucuri-security.png"><img class="wp-image-980 size-large" src="http://szj.cz/wp-content/uploads/2015/04/sucuri-security-1024x496.png" alt="sucuri-security" width="625" height="303" /></a><p class="wp-caption-text">Výpis změněných souborů</p></div>
<p>Než nalezené soubory smažete, raději zkontrolujte jejich obsah, zda-li náhodou nemáte v úmyslu odstranit něco důležitého. Pokud soubor obsahuje jeden řádek s hashem (můj případ), okamžitě jej smažte, to zde nemá co dělat. Druhý trik co útočníci u mě použili, byl rádoby prázdný soubor. Respektive na jednom řádku bylo milión mezer a až poté škodlivý kód. Na první pohled to tedy vypadalo, že je soubor prázdný.</p>
<p>Jakmile smažete vše, co na vašem serveru nemá být, vůbec není vyhráno. Útočníci totiž přístup nějakým způsobem získali a je nutno tuto díru záplatovat. <strong>Určitě musíte aktualizovat WordPress, pluginy i šablony na nejnovější verzi</strong>. Já bohužel používal starou verzi WordPressu, a dopadlo to hackem&#8230;</p>
<p>Dále vám doporučím zavítat do nastavení pluginu Sucuri Security a v záložce <strong>Hardening</strong> povolit vše, co budete moci. Efektivně tím zakážete spouštění PHP souborů zvnějšku serveru. I kdyby se útočníkovi nějak podařilo nahrát na server zákeřný kód, relativně se nic neděje, protože jej nemá jak spustit.</p>
<div id="attachment_982" style="width: 635px" class="wp-caption aligncenter"><a href="http://szj.cz/wp-content/uploads/2015/04/hardening.png"><img class="wp-image-982 size-large" src="http://szj.cz/wp-content/uploads/2015/04/hardening-1024x575.png" alt="hardening" width="625" height="351" /></a><p class="wp-caption-text">Záložka &#8222;Hardening&#8220;</p></div>
<h2>Analýza hacku</h2>
<p>Jako programátorovi mi to samozřejmě nedalo a lehce jsem zákeřný kód prostudoval. Uvažoval jsem, že bych zde kódy zveřejnil, nerad bych ovšem, aby si Google myslel, že tento web obsahuje malware.</p>
<p>Infekce začíná spuštěním <strong>exec__root.php</strong>, což ostatně evokuje i samotný název souboru. Tento skript proskenuje celou adresářovou strukturu a hledá složky, které typicky budou přístupné z webu (např. <strong>css</strong>, <strong>js</strong> apod.). Dále bezpečně umí rozpoznat CMS WordPress i Joomla a vyhledává v nich opět přístupné složky. Do každého umístění je poté nakopírován jeden ze souborů s nenápadným názvem (např. wpconfig-new.php, options.php, defines.php apod.). Na konci skriptu je vtipná podmínka, která kontroluje, zda-li server dokáže přes cURL komunikovat s okolním světem. Za tímto účelem se netestuje žádný ze serverů útočníka, ale toto <a href="https://www.youtube.com/watch?v=kSdgHtNuslY">video na YouTube</a>. To je rusky, takže si podle toho možná můžeme udělat obrázek o původu oněch vtipálků. V krátkém pětivteřinovém videu pán říká: <em>&#8222;Vy jste kdo? Já vás nezval. Jděte pryč!&#8220;</em>. Jak trefné :-D.</p>
<p>Každý z nakopírovaných souborů v mém případě obsahoval kód prohnaný nějakým PHP obfuscatorem, nestudoval jsem jej tedy (ani jsem se nesnažil jej deobfuscatorovat (to je slovo <img src="http://szj.cz/wp-includes/images/smilies/simple-smile.png" alt=":-)" class="wp-smiley" style="height: 1em; max-height: 1em;" /> ). Při načtení z webu se zobrazí jednoduchý formulář, který chce jediné &#8212; zadat heslo. Po správném zadání se hádám útočníkům zobrazí nějaká administrace , která jim umožní provádět, co se jim zrovna zamane.</p>
<h2>Poučení pro příště</h2>
<p>Závěrem uvedu stručný výčet několika pravidel, u kterých mi vychází, že je webmaster musí mít na paměti, pokud používá WordPress a chce v noci v klidu spát:</p>
<ul>
<li>pokud používám WordPress, musím jej pravidelně aktualizovat včetně pluginů a šablon</li>
<li>uživatelé s vyššími právy musí používat delší/složitější heslo</li>
<li>je více než vhodné používat nějaký auditovací nástroj (třeba už zmíněný plugin Sucuri Security)</li>
<li>logy pak ovšem někdo musí prohlížet !</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://szj.cz/navod-jak-vycistit-hacknuty-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Protokol IP, adresa a maska, směrování, IP multicast</title>
		<link>http://szj.cz/protokol-ip-adresa-a-maska-smerovani-ip-multicast/</link>
		<comments>http://szj.cz/protokol-ip-adresa-a-maska-smerovani-ip-multicast/#comments</comments>
		<pubDate>Sun, 12 Apr 2015 11:40:45 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[adresa]]></category>
		<category><![CDATA[IP]]></category>
		<category><![CDATA[maska]]></category>
		<category><![CDATA[router]]></category>
		<category><![CDATA[switch]]></category>
		<category><![CDATA[TCP/IP]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=960</guid>
		<description><![CDATA[Následující článek vám vysvětlí, co je to vlastně ta IP adresa a proč, když si chcete zahrát csko po LANce, tak musíte vyplnit nějaké 255.255.255.0. Ale pěkně popořadě. IP adresa Jedná se jednoznačný identifikátor počítače v síti (ale té počítačové), pokud je používán protokol IP, což bude platit prakticky pro každého čtenáře tohoto článku. IP adresa [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Následující článek vám vysvětlí, co je to vlastně <em>ta IP adresa</em> a proč, když si chcete zahrát <em>csko po LANce, tak musíte vyplnit nějaké 255.255.255.0</em>. Ale pěkně popořadě.</p>
<h2>IP adresa</h2>
<p>Jedná se jednoznačný identifikátor počítače v síti (ale té <a href="http://www.lamer.cz/quote/5639">počítačové</a>), pokud je používán <strong>protokol IP</strong>, což bude platit prakticky pro každého čtenáře tohoto článku. <strong>IP adresa</strong> se skládá ze čtyř částí, které oddělují <strong>tečky</strong>. Každé této čtvrtině se říká <strong>oktet</strong>, IP adresa je tedy složena ze <strong>čtyř oktetů</strong>. Každý oktet může obsahovat číslo v rozmezí  <strong>0 až 255</strong>.<strong> </strong>Proč zrovna <strong>255</strong>? Protože na uložení čísla máme jen 8 bitů, tedy jeden bajt a pokud tento bajt vyplníme samými jedničkami, tak větší číslo než <strong>255</strong> nedostaneme (11111111<sub>2</sub> =&gt; 255<sub>10)</sub>. Takový běžný domácí počítač mívá IP adresu ve stylu 192.168.1.<strong>X</strong> nebo 10.0.0.<strong>X</strong>, kde <strong>X</strong> je typicky malé číslo (např. 1, 2 nebo 3) .</p>
<h3>Proč já mám 192.168.1.1, kamarád taky a internet nespadne?</h3>
<p>Protože kamarád bydlí jinde, a má u sebe jinou počítačovou síť, než je u vás doma. Koukněte znovu na první řádek předcházejícího odstavce, <strong>IP adresa musí být jedinečná v rámci sítě</strong>, kterých je ale na světě nepočítaně (Blaník, Jára Cimrman). Kamarád má síť, vy máte síť. Ale zkuste se oba sejít např. u vás doma (v rámci jedné počítačové sítě) a oba dva si nastavte stejnou IP adresu, to se teprve budou dít divy :-).</p>
<h2>Protokol IP</h2>
<p>Toto téma jsme už načali, troufale jsem tvrdil, že protokol IP používá prakticky každý. Umí totiž velice důležitou věc, propojit více sítí dohromady. Tohoto cíle dosahuje <strong>směrováním paketů</strong>. Až si budete na Facebooku psát se svým kamarádem, bude to právě protokol IP, který zaslanou zprávu přes různé počítačové sítě doručí na servery Facebooku a odtud až do počítače vašeho známého. Zmíněný paket se skládá jak se samotné zaslané zprávy na Facebooku (např. <em>jj, příjdu</em>), tak <strong>metadat</strong>, s jejíchž pomocí bude protokol IP vědět, <strong>kam</strong> paket doručit.</p>
<p>Zajímavé je, že protokol IP nezaručuje, že paket skutečně doručí, <strong>jen se o to pokusí</strong>. Což může být docela problém, že? Co kdybychom posílali přes datovou schránku daňové přiznání a ono nedorazilo? Proto se IP kombinuje s dalším protokolem <strong>TCP</strong>. Výsledné kombinaci se říká <strong>TCP/IP</strong> a zmíněné TCP v této dvojici <strong>zaručuje spolehlivé doručení zprávy ve správném pořadí</strong>. Ne vždy je to ale výhodné. Až bude Česko sledovat na internetu mistrovství světa v hokeji, počítačové sítě by měly co dělat, pokud by musely garantovat dodání každého pixelu v obraze, přičemž výpadek jednoho <em>čtverečku</em> běžně člověk ani není schopný zaregistrovat. Naštěstí zde máme protokol <strong>UDP</strong>, opět kombinovaný s IP do podoby <strong>UDP/IP</strong>. UDP na spolehlivost příliš nehledí, raději se zaměřuje na rychlost. Servery České televize pak nemusí přeposílat ztracený (a v tu dobu již starý) pixel, protože hokejové utkání již pokročilo o nějakou vteřinu a raději odešlou aktuální data.</p>
<h2>Maska</h2>
<p>Teď se můžeme vrátit k IP adrese a vysvětlit si pojem <strong>maska</strong>. Správně totiž nemá moc smysl uvádět jen samotnou IP adresu, protože maska s ní umí dělat úplné divy a tak je více než žádoucí ji znát. Každá IP adresa je rozdělena na 2 části. První část udává <strong>síť</strong>, druhá již identifikuje <strong>konkrétní zařízení v síti</strong>. Podívejme se například na populární kombinaci <strong>192.168.1.1</strong> a masku <strong>255.255.255.0</strong>. Masku si musíme převést do binární podoby a počet jedniček <strong>zleva</strong> nám říká, kde se IP adresa dělí na zmíněné dvě poloviny.</p>
<ul>
<li>Maska 255.255.255.0 je binárně <strong>11111111</strong>.<strong>11111111</strong>.<strong>11111111</strong>.0, máme zde tedy 24 jedniček.</li>
<li>IP adresa 192.168.1.1 je binárně 11000000.10101000.00000001.00000001, zleva si odpočítáme 24 pozic, protože naše maska má 24 jedniček.</li>
</ul>
<p>Po rozdělení máme <strong><span style="color: #ff0000;">11000000.10101000.00000001</span></strong>.<span style="color: #3366ff;"><strong>00000001</strong></span>. <span style="color: #ff0000;"><strong>Červená část</strong></span> udává <strong>síť</strong>, <strong><span style="color: #3366ff;">modrá</span></strong> <strong>prostor</strong>, který můžeme použít k identifikaci zařízení (např. počítačů) uvnitř této sítě.</p>
<p>V adresním prostoru automaticky vznikají dvě speciální adresy:</p>
<ul>
<li>11000000.10101000.00000001.<strong>00000000</strong> = 192.168.1.0 &#8212; tedy samé nuly v druhé části adresy. Takové IP adrese se říká <strong>adresa sítě</strong>.</li>
<li>11000000.10101000.00000001.<strong>11111111</strong> = 192.168.1.255 &#8212; tedy samé jedničky v druhé části adresy. Takové IP adrese se říká <strong>adresa broadcastu</strong>. Tuto adresu použijeme, pokud chceme zprávu poslat všem uzlům v síti.</li>
</ul>
<p>K čemu je tedy ta maska? Stručně řečeno, s její pomocí lze měnit rozsah jednotlivých sítí a vytvářet podsítě. U sebe doma si tak např. můžete vyrobit 2 sítě, které se vzájemně neuvidí a k jejich propojení použijete router. K příkladu z úvodu článku &#8212; masku při vytváření LAN uvádíme proto, aby počítače byly na stejné síti a vzájemně se viděly.</p>
<h2>Směrování</h2>
<p><strong>Router</strong> neboli směrovač je <em>krabička</em>, která přeposílá pakety. Umí adresovat (směrovat) mezi sousedními sítěmi. <strong>Switch</strong> dělá něco podobného ale pouze na úrovni lokální sítě. Krásně je to napsáno na Wikipedii:</p>
<p><em>Rozdílné funkce routerů a switchů si lze představit jako switche coby silnice spojující všechna města ve státě a routery coby hraniční přechody spojující různé země.</em></p>
<p>Ta krabička co máte pod stolem tedy automaticky <strong>není vždy router</strong>, i když jí tak možná říkáte. Také může jít o switch. Je jednoduchá metoda, jak poznat, co vám to tam vlastně bliká. Switch ke svému běhu <strong>nepotřebuje IP adresu</strong>. Koupíte jej v obchodě, donesete domů, strčíte do něj kabel a to je vše. Router je ve své podstatě <em>počítač</em>, který ale nedělá nic jiného, než že neustále přeposílá (směruje) pakety. Ke svému běhu musí mít nastavenou IP adresu, vlastně ideálně <strong>dvě</strong>, aby mohl mezi těmito dvěma sítěmi směrovat.</p>
<h2>IP multicast</h2>
<p>Někdy potřebujeme odeslat paket na více cílových stanic zároveň. Představme si například internetové rádio, pro které je zbytečné duplikovat provoz a odesílat ta samá data k mnoha počítačům separátně. Na místo toho je lepší vytvořit tzv. <strong>IP multicast</strong>. Cílové stanice v tomto případě sdružíme do skupin a paket odešleme právě do této skupiny. Zmíněnou funkcionalitu přináší protokol <strong>IGMP</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://szj.cz/protokol-ip-adresa-a-maska-smerovani-ip-multicast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Funkce a triggery v PostgreSQL</title>
		<link>http://szj.cz/funkce-a-triggery-v-postgresql/</link>
		<comments>http://szj.cz/funkce-a-triggery-v-postgresql/#comments</comments>
		<pubDate>Sun, 05 Apr 2015 12:40:25 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Programování]]></category>
		<category><![CDATA[funkce]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[trigger]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=950</guid>
		<description><![CDATA[Následující článek se bude hodit každému, kdo již má určité zkušenosti s SQL a rád by si vyzkoušel napsat vlastní funkci nebo trigger. Začneme velmi zvolna, nejprve si představíme, jak napsat jednoduchou funkci a následně se vrhneme na triggery. Vlastní funkce v PostgreSQL Funkce dělá přesně to, co její matematický protějšek. Pro vstupní hodnotu vrátí určitý [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://szj.cz/wp-content/uploads/2015/03/postgresql-trigger.png"><img class="alignleft size-full wp-image-954" alt="postgresql-trigger" src="http://szj.cz/wp-content/uploads/2015/03/postgresql-trigger.png" width="128" height="128" /></a>Následující článek se bude hodit každému, kdo již má určité zkušenosti s SQL a rád by si vyzkoušel napsat <strong>vlastní funkci</strong> nebo <strong>trigger</strong>. Začneme velmi zvolna, nejprve si představíme, jak napsat jednoduchou funkci a následně se vrhneme na triggery.<strong><br />
</strong></p>
<h2>Vlastní funkce v PostgreSQL</h2>
<p>Funkce dělá přesně to, co její matematický protějšek. Pro vstupní hodnotu vrátí určitý údaj. My si nyní vytvoříme funkci, co nebude vyžadovat argument a vždy vrátí číslo jedna &#8212; to jen pro zahřátí, taková funkce samozřejmě není moc užitečná, ale alespoň se podíváme, jak vlastně vypadá její syntaxe.</p>
<pre class="brush: sql; title: ; notranslate">

CREATE FUNCTION test() RETURNS integer AS $$

SELECT 1 AS result;

$$ LANGUAGE SQL;

SELECT test(); --vypíše 1

</pre>
<p>Nejprve s pomocí <strong>CREATE FUNCTION</strong> vymezíme, že začínáme psát funkci. Poté uvedeme její název (zde <strong>test</strong>) a prázdnou závorku, protože nepřebíráme žádné argumenty. Databázový server zajímá, jaký datový typ bude naše funkce vracet, proto jej uvedeme (<strong>integer</strong>). Za klíčovým slovem <strong>AS</strong> začíná vymezení samotného těla funkce, které z obou strany obklopuje symbol dvou dolarů (<strong>$$</strong>). Závěrem uvedeme použitý jazyk (<strong>LANGUAGE SQL</strong>) a nezapomeneme na středník, podobně jako v těle funkce, ve kterém jednoduše s pomocí příkazu <strong>SELECT</strong> získáme číselnou hodnotu 1.</p>
<p>Pojďme zkusit něco užitečnějšího, naučíme se používat argumenty:</p>
<pre class="brush: sql; title: ; notranslate">

CREATE FUNCTION plus(integer, integer) RETURNS integer AS $$
 SELECT $1 + $2 AS result;
$$ LANGUAGE SQL;

SELECT plus(10, 5); --vypíše 15

SELECT plus(5, 'a'); --Error in query: ERROR: invalid input syntax for integer: &quot;a&quot;

</pre>
<p>Tato funkce umí sečíst dvě čísla. U argumentů uvádíme jen datový typ a na hodnotu se odkazujeme s pomocí dolaru a indexu (první argument je dostupný s pomocí <strong>$1</strong>).</p>
<p>Než se vhrneme na náš první trigger, smažeme z databáze vytvořené funkce. Udělá se to následovně:</p>
<pre class="brush: sql; title: ; notranslate">

DROP FUNCTION test();

DROP FUNCTION plus(integer, integer);

</pre>
<h2>Jednoduchý trigger v PostgreSQL</h2>
<p>Na úvod si představme, že máme tabulku <strong>human </strong> obsahující údaje o lidech. Uchováváme jedinečné ID, jméno, příjmení a oslovení. Napíšeme si trigger, který nám bude zmíněné oslovení generovat automaticky. Nejprve vytvoříme samotnou funkci, kterou server následně automaticky zavolá. Daná funkce nebude dělat nic jiného, než že vezme jméno i příjmení a spojí oba údaje mezerou.</p>
<p><a href="http://szj.cz/wp-content/uploads/2015/03/tabulka_human.png"><img class="aligncenter size-full wp-image-955" alt="tabulka_human" src="http://szj.cz/wp-content/uploads/2015/03/tabulka_human.png" width="547" height="242" /></a></p>
<pre class="brush: sql; title: ; notranslate">

CREATE FUNCTION concatenate() returns trigger AS $$
BEGIN
UPDATE human SET salutation = (NEW.name || ' ' || NEW.surname) WHERE id = NEW.id;
RETURN NULL;
END;
$$ LANGUAGE plpgsql;

</pre>
<p>Oproti zápisu funkce je zde několik rozdílů. Trigger <strong>nikdy nemá argumenty</strong> a jako návratový typ uvádíme slovo <strong>trigger</strong>. Do těla se nám dostala část <strong>BEGIN</strong> a <strong>END;</strong> (pozor na středník). Uvnitř těla smíme používat proměnnou <strong>NEW</strong>, která odkazuje na nově vytvořený/upravený řádek. Příkazem <strong>RETURN</strong> vracíme výsledek funkce (zde je <strong>NULL</strong>, protože nic vracet nechceme). Klauzule <strong>LANGUAGE</strong> obsahuje <strong>plpgsql</strong>, protože píšeme trigger pro PostgreSQL.</p>
<p>Pojďme nyní naší tabulku donutit, ať trigger volá automaticky při každém vložení hodnoty:</p>
<pre class="brush: sql; title: ; notranslate">

CREATE TRIGGER human_trigger AFTER INSERT ON human
FOR EACH ROW EXECUTE PROCEDURE concatenate();

</pre>
<p>Zápis je hodně upovídaný a osobně se mi špatně pamatuje. Zase se naopak dobře čte :-). Uvádíme pojmenování našeho triggeru (<strong>human_trigger</strong>), název tabulky (<strong>human</strong>) a samotnou funkci, co bude volána (<strong>concatenate()</strong>);</p>
<p>A nyní pozor, stačí nám spustit následující příkaz a v tabulce objevíme automaticky vygenerované oslovení:</p>
<pre class="brush: sql; title: ; notranslate">

INSERT INTO human(name, surname, salutation) VALUES ('Jan', 'Novák', '?');

</pre>
<p>Sloupec <strong>salutation</strong> nedovoluje hodnoty <strong>NULL</strong>, proto musíme nějakou uvést, i když bude následně přepsána triggerem. To je nepříjmené, pojďme si náš trigger vylepšit! Funkci nebudeme volat <strong>po</strong> zápisu řádku, ale <strong>před</strong> zápisem (a v tuto chvíli si vygenerujeme oslovení).</p>
<pre class="brush: sql; title: ; notranslate">

CREATE FUNCTION concatenate() returns trigger AS $$
BEGIN
NEW.salutation := NEW.name || ' ' || NEW.surname;
return new;
END;
$$ LANGUAGE plpgsql;

</pre>
<p>S pomocí proměnné <strong>NEW</strong> přiřadíme oslovení. Hotovu funkci poté budeme volat před provedením <strong>INSERT</strong> nebo v případě <strong>UPDATE</strong>:</p>
<pre class="brush: sql; title: ; notranslate">

CREATE TRIGGER human_trigger BEFORE INSERT OR UPDATE ON human
 FOR EACH ROW EXECUTE PROCEDURE concatenate();

</pre>
]]></content:encoded>
			<wfw:commentRss>http://szj.cz/funkce-a-triggery-v-postgresql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vlastnosti typových systémů</title>
		<link>http://szj.cz/vlastnosti-typovych-systemu/</link>
		<comments>http://szj.cz/vlastnosti-typovych-systemu/#comments</comments>
		<pubDate>Sat, 28 Mar 2015 10:24:38 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Programování]]></category>
		<category><![CDATA[bezpečně a nebezpečně typované jazyky]]></category>
		<category><![CDATA[silně a slabě typované jazyky]]></category>
		<category><![CDATA[staticky a dynamicky typované jazyky]]></category>
		<category><![CDATA[vlastnosti typových systémů]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=941</guid>
		<description><![CDATA[K čemu v programování slouží typový systém? Jde o nástroj k porovnávání datových typů jednotlivých proměnných, které se provádí před operací v libovolném výrazu. Díky typovému systému zajistíme, že nedojde k chybě spočívající v kombinaci špatných datových typů (například když se pokusíme sečíst číslo a textový řetězec). Silně a slabě typované jazyky Typový systém může [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://szj.cz/wp-content/uploads/2015/03/vlastnosti-typovych-systemu.png"><img class="alignleft size-full wp-image-946" alt="vlastnosti-typovych-systemu" src="http://szj.cz/wp-content/uploads/2015/03/vlastnosti-typovych-systemu.png" width="128" height="128" /></a>K čemu v programování slouží <strong>typový systém</strong>? Jde o nástroj k porovnávání datových typů jednotlivých proměnných, které se provádí před operací v libovolném výrazu. Díky typovému systému zajistíme, že nedojde k chybě spočívající v kombinaci špatných datových typů (například když se pokusíme sečíst číslo a textový řetězec).</p>
<h2>Silně a slabě typované jazyky</h2>
<p>Typový systém může na problematiku nahlížet dvěma způsoby. <strong>Silně typované</strong> programovací jazyky striktně vyžadují pouze předem vymezené datové typy. Každá operace v takovém jazyce má proto určené jaké datové typy argumentů akceptuje. Do této kategorie patří např. Java nebo C.</p>
<p>Naopak tomu <strong>slabě typovaný jazyk</strong> se snaží operaci provést za každou cenu a proto přistupuje k <strong>přetypování</strong>. Vraťme se k příkladu z úvodu. Součet čísla a textového řetězce zdá se nedává smysl, ovšem co když v textu máme uložené opět číslo? Pak jazyku nic nebrání v tom, aby provedl přetypování textu na číslo a vypočítal výsledný součet. Ač se popsané chování může jevit jako jednoznačná výhoda, záleží na úhlu pohledu, někdy mohou díky této slabé kontrole datových typů vznikat hůře odhalitelné chyby. Popsaným způsobem se chová např. PHP nebo JavaScript.</p>
<h2>Staticky a dynamicky typované jazyky</h2>
<p>Programovací jazyk, který datové typy proměnných zjišťuje <strong>staticky</strong>, provádí vstupní analýzu kódu, během které je schopný odhalit datový typ každé proměnné. Napomáhá tomu mimo jiné to, že datový typ je zpravidla nutno <strong>deklarovat</strong>. Díky tomu pak překladač může lépe optimalizovat vytvářený kód (přesně totiž ví, s čím přichází do styku). Uvedené informace se vztahují k většině dnešních programovacích jazyků.</p>
<p>Existuje ovšem i jiný přístup. Co kdybychom datový typ zjistili až za běhu programu? Pak může jedna proměnná obsahovat několik naprosto rozdílných hodnot. Nemluvíme zde proto o <strong>typu proměnné</strong> (to platí pro staticky typované jazyky) ale o <strong>typu hodnoty</strong>. S uvedeným přístupem přichází např. jazyk Perl.</p>
<h2>Bezpečně a nebezpečně typované jazyky</h2>
<p>U <strong>bezpečně typovaných</strong> jazyků máme zajištěno, že pokud je operace proveditelná (tedy je splněna náležitost v podobě správných argumentů), tak vždy bude operace úspěšně dokončena. Nestane se zkrátka, že kvůli prováděné operaci aplikace spadne.</p>
<p>Naopak tomu jako už název prozrazuje <strong>nebezpečně typované</strong> jazyky dávají programátorovi šanci dostat výpočetní proces do nekonzistentního stavu. Díky existenci <strong>pointeru</strong> je poměrně jednoduché tohoto cíle dosáhnout v jazyce C nebo C++. Můžeme totiž různě přesouvat obsahy proměnných i obměňovat místa, kam v paměti ukazujeme.</p>
<pre class="brush: cpp; title: ; notranslate">
void main()
{
    int *x = 0; //nulový ukazatel (NULL pointer)
    *x = 42; //chyba, na toto nulové místo se snažíme uložit hodnotu
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://szj.cz/vlastnosti-typovych-systemu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lexikální a dynamický rozsah platnosti proměnné</title>
		<link>http://szj.cz/lexikalni-a-dynamicky-rozsah-platnosti-promenne/</link>
		<comments>http://szj.cz/lexikalni-a-dynamicky-rozsah-platnosti-promenne/#comments</comments>
		<pubDate>Sat, 21 Mar 2015 14:51:10 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Programování]]></category>
		<category><![CDATA[dynamický rozsah platnosti]]></category>
		<category><![CDATA[lexikální rozsah platnosti]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=934</guid>
		<description><![CDATA[Až budete příště pracovat ve svém oblíbeném programovacím jazyku, pozastavte se na chvíli nad tím, že principy, které tak již bezpečně dobře znáte, nemusí platit všude. Řeč bude na následujících řádcích o rozsahu platnosti proměnné. Uvažovat lze přitom dva modely &#8212; lexikální a dynamický rozsah. Lexikální rozsah platnosti proměnné Následujcí chování vám bude dobře známé. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Až budete příště pracovat ve svém oblíbeném programovacím jazyku, pozastavte se na chvíli nad tím, že principy, které tak již bezpečně dobře znáte, nemusí platit všude. Řeč bude na následujících řádcích o rozsahu platnosti proměnné. Uvažovat lze přitom dva modely &#8212; <strong>lexikální</strong> a <strong>dynamický</strong> rozsah.</p>
<h2>Lexikální rozsah platnosti proměnné</h2>
<p>Následujcí chování vám bude dobře známé. Používá jej totiž většina soudobých programovacích jazyků. Pokud se v nich rozhodnete aplikovat libovolnou proceduru obsahující ve svém těle proměnou neinicializovanou v lokálním prostředí této procedury, hledá se hodnota (vazba) proměnné v <em>prostředí vzniku procedury</em>. A co si představit pod pojmem <strong>prostředí vzniku procedury</strong>? Jde o prostředí nadřazené tomu lokálnímu. Důsledkem toho pokud v proceduře použijeme proměnnou, jejíž hodnota není v těle inicializována, je nutno vazbu hledat výše, kde s největší pravděpodobností narazíme na příslušnou globální proměnnou a z ní hodnotu vyčteme. Pokud by zde náhodou taková proměnná nebyla, nezbude než nahlásit chybu &#8212; proměnná totiž neexistuje.</p>
<p>Abychom to lépe pochopili, podívejme se nyní společně na komentovaný příklad:</p>
<pre class="brush: plain; title: ; notranslate">
(define test
  (lambda (y)
    (lambda (x)
      (+ y x))))

(define y 100);v globálním prostředí máme y = 100

(define f (test 20));vzniká procedura, nyní máme y = 20
(f 10);aplikace procedury, za x dosadíme 10 a spočítáme 20 + 10 = 30

;procedura ví, že má sečíst y a x
;hodnotu pro x zná (je to 10), tato hodnota byla předána v argumentu
;nyní je třeba zjistit hodnotu pro y, ta se totiž v lokálním prostředí nevyskytuje
;procedura tedy začíná hledat v &quot;prostředí vzniku procedury&quot;, to je to prostředí, které je nadřazené tomu aktuálnímu
;v tomto nadřazeném prostředí je nalezeno kýžené y (s hodnotou 20)
;procedura sečte 20 + 10 a vrátí 30
;hodnota y = 100 v globálním prostředí je v tomto případě směle ignorována
</pre>
<h2>Dynamický rozsah platnosti</h2>
<p>A teď si představme, že by se hodnoty proměnných hledaly úplně jinak, konkrétně v <strong>prostředí aplikace procedury</strong>. Nutno podotknout, že tuto metodu téměř nikdo nepoužívá, ale existují výjimky. Než se podíváme na příklad, řekněme si, jaká je hlavní potíž tohoto přístupu &#8212; hodnoty proměnných zjistíme až za běhu programu, čímž stoupá časová náročnost ladění a hledání chyb.</p>
<pre class="brush: plain; title: ; notranslate">
(define test
  (lambda (y)
    (lambda (x)
      (+ y x))))

(define y 100);v globálním prostředí máme y = 100

(define f (test 20));vzniká procedura, nyní máme y = 20
(f 10);aplikace procedury, za x dosadíme 10 a spočítáme 100 + 10 = 110

;procedura ví, že má sečíst y a x
;hodnotu pro x zná (je to 10), tato hodnota byla předána v argumentu
;nyní je třeba zjistit hodnotu pro y, ta se totiž v lokálním prostředí nevyskytuje
;procedura tedy začíná hledat v &quot;prostředí aplikace procedury&quot;
;v tomto aktuálním prostředí se y = 100
;procedura sečte 100 + 10 a vrátí 110
</pre>
]]></content:encoded>
			<wfw:commentRss>http://szj.cz/lexikalni-a-dynamicky-rozsah-platnosti-promenne/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jak na levný tisk? Srovnání renovace, originálního zboží a kompatibilních kazet</title>
		<link>http://szj.cz/jak-na-levny-tisk-srovnani-renovace-originalniho-zbozi-a-kompatibilnich-kazet/</link>
		<comments>http://szj.cz/jak-na-levny-tisk-srovnani-renovace-originalniho-zbozi-a-kompatibilnich-kazet/#comments</comments>
		<pubDate>Sun, 15 Dec 2013 07:43:41 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Reklama]]></category>
		<category><![CDATA[cartridge pro canon]]></category>
		<category><![CDATA[levný tisk]]></category>
		<category><![CDATA[tiskárna]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=921</guid>
		<description><![CDATA[Pořízení nové cartridge (zásobníku s inkoustem) může nezkušeného majitele tiskárny nepříjemně překvapit. Výrobci totiž za účelem maximálního snížení ceny přicházejí s velmi jednoduchým trikem. Prodávají sice plně funkční tiskárnu, ta však ve svých útrobách ukrývá méně inkoustu, než běžně prodávané originální tiskové kazety. Až budete příště v hypermarketu uvažovat nad tím, proč multifunkční inkoustová tiskárna [&#8230;]]]></description>
				<content:encoded><![CDATA[<div id="attachment_922" style="width: 410px" class="wp-caption alignleft"><a href="http://szj.cz/wp-content/uploads/2013/12/cartridge-pro-canon.jpg"><img class="size-full wp-image-922" alt="Cartridge pro Canon" src="http://szj.cz/wp-content/uploads/2013/12/cartridge-pro-canon.jpg" width="400" height="266" /></a><p class="wp-caption-text">pakorn / freedigitalphotos.net</p></div>
<p>Pořízení nové cartridge (zásobníku s inkoustem) může nezkušeného majitele tiskárny nepříjemně překvapit. Výrobci totiž za účelem maximálního snížení ceny přicházejí s velmi jednoduchým trikem. Prodávají sice plně funkční tiskárnu, ta však ve svých útrobách ukrývá méně inkoustu, než běžně prodávané originální tiskové kazety. Až budete příště v hypermarketu uvažovat nad tím, proč multifunkční inkoustová tiskárna stojí v poklidu méně než 1 000 Kč, už budete mít jasno. Firma zkrátka spoléhá na to, že se zahojí na dodatečném spotřebním materiálu. Až zařízení z důvodu nedostatku inkoustu odmítne dále pracovat a nebohý majitel se začne poohlížet po nové náplni, patrně ho nepříjemně zaskočí cena, která dokáže převýšit polovinu původních pořizovacích nákladů.</p>
<p>Rozhodně se proto vyplatí vědět, kde si obstarat levný toner či inkoust. Tato informace bude dozajista zajímat i vlastníky dražších tiskáren, které sice přicházejí s různorodými ekonomickými funkcemi pro úsporný provoz, i tak se však po čase výměna cartridge stává nevyhnutelnou akcí.</p>
<h2>Originální kazeta, renovace nebo naplnění na vlastní pěst?</h2>
<div id="attachment_925" style="width: 160px" class="wp-caption alignleft"><a href="http://szj.cz/wp-content/uploads/2013/12/cmyk.jpg"><img class="size-thumbnail wp-image-925" alt="CMYK" src="http://szj.cz/wp-content/uploads/2013/12/cmyk-150x150.jpg" width="150" height="150" /></a><p class="wp-caption-text">Danilo Rizzuti / freedigitalphotos.net</p></div>
<p>Podívejme se společně, jak tiskárnu přivést zpět k životu. Možností je v podstatě několik. Tu nejjednodušší symbolizuje návštěva libovolného nejbližšího specializovaného obchodu. Zde získáte originální příslušenství, za které však vydáte z peněženky odpovídající sumu. Není proto divu, že některé společnosti začaly zákazníkům nabízet renovaci. Původní kazeta je v rámci tohoto procesu opětovně naplněna a lze ji znovu vložit do tiskárny. Renovace je však dostupná jen pro určité modely, které daná firma zařadí do svého portfolia služeb. Pro opravdové fajnšmekry je zde další způsob spočívající v dopravení inkoustu na vlastní zodpovědnost, například s pomocí injekční stříkačky přiložené ve speciálním kitu. Nízké tiskové náklady však vyžadují nemalou dávku odvahy, zkušeností, mechanické zručnosti a odpovídající model tiskárny, který popsaný úkon podporuje. Pomyslný střed mezi všemi nastíněnými metodami symbolizuje alternativní (kompatibilní) kazeta. Ta sice nepochází přímo od výrobce vaší tiskárny, jednoduše ji však zasunete a po pár vytištěných stránkách už ani vlastně nevnímáte, kdo že za daným zbožím stojí. Osobně jsem příznivcem právě této metody ke snížení nákladů tisku. Alternativní cartridge se totiž typicky prodávají buď za nižší cenu, nebo obsahují více náplně, než originální produkt.</p>
<p>Nyní už víme, že kompatibilní spotřební materiál přináší kýženou finanční úsporu. Jak však vhodný produkt zakoupit? Vždyť už samotné pořízení originální kazety symbolizuje s ohledem na hromadu typů tiskáren a náplní nelehký úkon. Jako příznivce IT samozřejmě popsaný úkol nechávám vyřešit internet, konkrétně obchod <a href="http://www.tisknulevne.cz/">tisknulevne.cz</a>. I když doména ve mně zpočátku vzbuzovala smíšené pocity (nemám dobré zkušenosti s eshopy, jejichž název obsahuje slovo <em>levně</em>), pochyby zahnalo téměř <a href="http://obchody.heureka.cz/tisknulevne-cz/recenze/">11 tisíc pozitivních hodnocení</a> na portálu Heureka. To už o něčem svědčí, ostatně v době kdy píšu tento článek, se obchod honosil pěti hvězdičkami z pěti možných téměř ve všech kategoriích, pouze u kritéria <em>přehlednost obchodu</em> ztrácel půl hvězdičky. Osobně si však nedokáži představit proč, když toto je právě funkce, kterou web vyniká. Portál totiž správnou náplň najde za vás, ať už s pomocí sofistikovaného vyhledávání nebo přehledných kategorií. Pokud například hledáte <a href="http://www.tisknulevne.cz/naplne-do-tiskaren/canon/tiskarny/inkoustove/">cartridge pro canon</a>, přepnete se do této sekce a poté dohledáte vaši konkrétní tiskárnu. Zobrazení správných náplní je následně dílem okamžiku.</p>
<p>Zvolené zboží si můžete okamžitě objednat a nechat poslat poštou nebo vyzvednout v jedné z jedenácti kamenných poboček s bohatým zastoupením v Praze. Eshop se nebojí přijít s výhodnými akcemi, a proto skutečně dostává svému jménu a umožňuje tisknout levně. Ostatně, přesvědčte se – <a href="http://www.tisknulevne.cz/">tisknulevne.cz</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://szj.cz/jak-na-levny-tisk-srovnani-renovace-originalniho-zbozi-a-kompatibilnich-kazet/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Jak na anglické komiksy?</title>
		<link>http://szj.cz/jak-na-anglicke-komiksy/</link>
		<comments>http://szj.cz/jak-na-anglicke-komiksy/#comments</comments>
		<pubDate>Sat, 16 Nov 2013 14:02:10 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Ostatní]]></category>
		<category><![CDATA[komiks]]></category>
		<category><![CDATA[USA]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=914</guid>
		<description><![CDATA[Před nedávnem jsem v ČR navštívil obchůdek, který znám ze seriálu The Big Bang Theory. Jde o prodejnu, kde koupíte vše od komiksů až po repliky ze známých filmů a seriálů. Tedy nic pro normálního člověka, ale pravé království pro osobu milující sci-fi a fantasy. Osobně se řadím někde na pomezí obou zmíněných skupin zákazníků. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://szj.cz/wp-content/uploads/2013/11/comixology.jpg"><img class="alignleft size-full wp-image-916" alt="comiXology" src="http://szj.cz/wp-content/uploads/2013/11/comixology.jpg" width="320" height="240" /></a>Před nedávnem jsem v ČR navštívil obchůdek, který znám ze seriálu The Big Bang Theory. Jde o prodejnu, kde koupíte vše od komiksů až po repliky ze známých filmů a seriálů. Tedy nic pro <em>normálního člověka</em>, ale pravé království pro osobu milující sci-fi a fantasy. Osobně se řadím někde na pomezí obou zmíněných skupin zákazníků. Neláká mě tedy představa zaručeně pravé kouzelnické hůlky z Harryho Pottera, na druhou stranu komiksům se nebráním. Již dlouho jsem přitom chtěl vyzkoušet příběh v originále, a proto jsem ze zmíněného obchodu odcházel s anglickým komiksem, o 50 % dražším než v USA (což ale chápu a níže vysvětlím, proč zboží tolik stojí). Komiks jsem přečetl a začal toužit po dalším díle. A v tu chvíli jsem si položil otázku. Jak vlastně u nás <strong>sehnat za rozumnou cenu komiks z USA</strong>?</p>
<p>Možností je v podstatě několik. Tu nejjednodušší představuje opětovná návštěva dotyčné prodejny nebo internetového obchodu s patřičným zbožím. V tomto případě ovšem očekávejte odpovídající ceny.</p>
<p>Druhou dobrodružnější volbu symbolizuje koupě přímo v USA. Dokáži si živě představit jak na to. Stačilo by nalézt zahraniční obchod a z něj si zboží nechat poslat. Problém by však činilo poštovné, pravděpodobně neúměrné výši objednávky. Nezbývalo by proto než poskládat velkou zásilku nebo využít služeb firmy Shipito, která by produkty uchovávala ve vaší virtuální schránce v USA a jakmile by byla plná, tak by za jedno poštovné byly všechny komiksy přeposlány k nám do ČR.</p>
<p>Ještě však existuje třetí, výrazně jednoduší a levnější možnost – elektronická verze. Pokud se nyní ošíváte, nedivím se vám, na poprvé jsem měl stejné pocity. Přece jenom čtení papírového komiksu nelze srovnávat s <em>naskenovaným PDFkem</em>. Zahraniční vydavatelé to však dobře vědí, a proto přišli s lepším řešením. Využívají technologii platformy <a href="http://www.comixology.com/">comiXology</a>, která přináší originální způsob čtení digitálního komiksu. Ten se podle Wikipedie dokonce může dočkat <a href="http://en.wikipedia.org/wiki/ComiXology#Patent">patentu</a>.</p>
<p>Na webu comiXology.com si buď zakoupíte požadovaný komiks (ceny začínají na jednom dolaru) nebo sáhnete po bezplatné položce. Do tabletu nebo chytrého mobilního telefonu s Androidem nebo iOS si následně stáhnete speciální aplikaci. Ta komiks otevře a bude jej prezentovat po jednotlivých panelech a vaše oči se budou chovat stejně jako v případě papírové stránky. Doporučuji vyzkoušet, za bezplatný komiks nic nedáte a hned budete vědět, jestli vám toto řešení vyhovuje. Já jsem si comiXology oblíbil. Bohatá nabídka pokrývá různé žánry (od dětských až po ty <em>dospělejší</em> &#8211; např. pod hlavičkou Vertigo), ceny jsou nízké a aplikace pro čtení na vybraném zařízení skutečně funguje. Nevyžaduje navíc připojení k internetu, komiks se totiž celý stáhne a uloží.</p>
]]></content:encoded>
			<wfw:commentRss>http://szj.cz/jak-na-anglicke-komiksy/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>VPS se vzdálenou plochou za 120 Kč měsíčně</title>
		<link>http://szj.cz/vps-se-vzdalenou-plochou-za-120-kc-mesicne/</link>
		<comments>http://szj.cz/vps-se-vzdalenou-plochou-za-120-kc-mesicne/#comments</comments>
		<pubDate>Sat, 09 Nov 2013 08:45:54 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[levně]]></category>
		<category><![CDATA[VPS]]></category>
		<category><![CDATA[vzdálená plocha]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=904</guid>
		<description><![CDATA[Vždy mě lákalo provozovat na virtuálním privátním serveru vzdálenou plochu. V podstatě se nejedná o nesplnitelný cíl, protože řada firem nabízí VPS s nainstalovaným operačním systémem Windows. Jediný problém však představuje vyšší cena. Proto jsem se vždy pokoušel GUI nainstalovat na VPS s Linuxem. Vím totiž, jak sehnat VPS levně, zdarma nebo s platbou za [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Vždy mě lákalo provozovat na virtuálním privátním serveru vzdálenou plochu. V podstatě se nejedná o nesplnitelný cíl, protože řada firem nabízí VPS s nainstalovaným operačním systémem Windows. Jediný problém však představuje vyšší cena. Proto jsem se vždy pokoušel GUI nainstalovat na VPS s Linuxem. Vím totiž, jak sehnat VPS <a href="http://szj.cz/skutecne-nejlevnejsi-vps/">levně</a>, <a href="http://szj.cz/vps-s-ip-zdarma-bez-hacku-a-skrytych-podminek/">zdarma</a> nebo <a href="http://szj.cz/platte-vps-na-zaklade-realne-vyuziteho-vykonu/">s platbou za reálné využití</a>. Poslední zmíněná možnost se mi líbila až do doby, kdy jsem začal požadovat vyšší výkon, protože s tímto mým nárokem logicky stoupala i pravidelná denní platba.</p>
<p>Na webu <a href="http://lowendbox.com">lowendbox.com</a> jsem objevil velmi atraktivní nabídku. VPS s 2 GB RAM a 50 GB SSD diskem za 6 USD měsíčně. Dlouho jsem neváhal a server pořídil. Pokud o něj máte také zájem, můžete jej objednat <a href="http://lowendbox.com/blog/aim2game-6month-2gb-ram-50gb-ssd-disk-in-buffalo-ny-usa/">zde</a>. Nabídka údajně není nijak časově omezena. Doporučuji nejprve si přečíst komentáře a ověřit si tak, zda-li vám VPS po všech ohledech vyhovuje.</p>
<p>Tip: Pokud si mnou zmíněné VPS skutečně koupíte a budete platit přes PayPal, bude vás firma nutit k automatické měsíční platbě. Stačí však jednoduše první stránku žádající úhradu zavřít. Po přihlášení ke svému účtu si následně vyhledáte nezaplacenou objednávku. Tu můžete uhradit jen na jedno období (a každý měsíc si tedy musíte pamatovat, že je třeba opět VPS zaplatit) nebo zvolit automatické strhávání peněz z PayPalu. Osobně preferuji první možnost, i když se zdá o něco složitější, protože už z principu se mi automatické posílání i menší částky příliš nelíbí :-).</p>
<p>Nyní tedy máme VPS s dostatečným výkonem a operačním systémem Debian 6, vybraným při vytvoření objednávky. Kde je ale slíbená plocha? Tu stačí jednoduše doinstalovat. O úspěšné provedení tohoto kroku jsem se v minulosti již několikrát pokoušel, vždy neúspěšně. Zachránil mě až <a href="http://wiki.4smart.cz/doku.php/stranky_uzivatelu_4smart:vps_vzdalena_plocha">tento zapadlý, ale velmi užitečný návod</a>. Postupujte přesně podle něj a máte VPS se vzdálenou plochou za sympatickou měsíční cenu 6 USD.</p>
]]></content:encoded>
			<wfw:commentRss>http://szj.cz/vps-se-vzdalenou-plochou-za-120-kc-mesicne/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
