<?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>Red-Pill Blog &#187; Programování</title>
	<atom:link href="http://blog.red-pill.cz/category/programovani/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.red-pill.cz</link>
	<description>Blog o internetu, programování a jiných věcech…</description>
	<lastBuildDate>Thu, 29 Apr 2010 13:20:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ip2long() na 32bit systémech</title>
		<link>http://blog.red-pill.cz/2010/02/08/ip2long-na-32bit-systemech/</link>
		<comments>http://blog.red-pill.cz/2010/02/08/ip2long-na-32bit-systemech/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 14:22:31 +0000</pubDate>
		<dc:creator>petr.kratina</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programování]]></category>

		<guid isPermaLink="false">http://blog.red-pill.cz/?p=325</guid>
		<description><![CDATA[
<p>Funkce na převod IP adresy do číselného tvaru (ideální na ukládání a
práci s rozsahy IP v DB) se nechová korektně na 32bit systémech. Ačkoli
název napovídá, že vrací longint, na 32bitech vrací obyčejný int32,
takze přeteče a začne vracet zápornou hodnotu, postupy jak to vyřešit
jsou dva:</p>

<p>$ip = ip2long(‚194.108­.129.194‘);</p>

<p>if ($ip &lt; 0) {     $ip += 4294967296; }</p>

<p>nebo</p>

<p>$prt = explode(‚.‘, ‚194.108.129.194‘);</p>

<p>$ip = 16777216*$prt[0] […]</p>

<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[
<p>Funkce na převod IP adresy do číselného tvaru (ideální na ukládání a
práci s rozsahy IP v DB) se nechová korektně na 32bit systémech. Ačkoli
název napovídá, že vrací longint, na 32bitech vrací obyčejný int32,
takze přeteče a začne vracet zápornou hodnotu, postupy jak to vyřešit jsou
dva:<br />
<br />
<code>$ip = ip2long(‚194.108­.129.194‘);<br />
<br />
if ($ip &lt; 0) {<br />
    $ip += 4294967296;<br />
}</code></p>

<p>nebo</p>

<p><code>$prt = explode(‚.‘, ‚194.108.129.194‘);<br />
<br />
$ip = 16777216*$prt[0] + 65536*$prt[1] + 256*$prt[2] + $prt[3];</code></p>

<!-- by Texy2! -->]]></content:encoded>
			<wfw:commentRss>http://blog.red-pill.cz/2010/02/08/ip2long-na-32bit-systemech/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Screencast &#8211; Zend Tool</title>
		<link>http://blog.red-pill.cz/2009/11/17/zend-screencast-zend-tool/</link>
		<comments>http://blog.red-pill.cz/2009/11/17/zend-screencast-zend-tool/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 22:04:58 +0000</pubDate>
		<dc:creator>tomas.fejfar</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programování]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[screencast]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://blog.red-pill.cz/?p=315</guid>
		<description><![CDATA[
<p>S Martinem Hujerem jsme natočili netradiční screencast o Zend_Tool.
Najdete ho na webu českého Zend Framework fóra. Budu rád, když se
podělíte o náměty a připomínky v komentářích.</p>

<p>O tom, že zvuk je dost potichu víme a pracujem na tom. Ale kvuli kvalitě
se v tomhle screencastu nedá dát o moc víc nahlas. Takže příště.</p>

<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[
<p>S <a href="http://www.hujer.org">Martinem Hujerem</a> jsme natočili
netradiční screencast o Zend_Tool. Najdete ho na <a
href="http://www.zendframework.cz/navody/zend_tool-instalace-a-pouziti-screencast/">webu
českého Zend Framework fóra</a>. Budu rád, když se podělíte o náměty a
připomínky v komentářích.</p>

<p>O tom, že zvuk je dost potichu víme a pracujem na tom. Ale kvuli kvalitě
se v tomhle screencastu nedá dát o moc víc nahlas. Takže příště.</p>

<!-- by Texy2! -->]]></content:encoded>
			<wfw:commentRss>http://blog.red-pill.cz/2009/11/17/zend-screencast-zend-tool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upload velkých souborů v IIS7 a PHP</title>
		<link>http://blog.red-pill.cz/2009/09/17/upload-velkych-souboru-v-iis7-a-php/</link>
		<comments>http://blog.red-pill.cz/2009/09/17/upload-velkych-souboru-v-iis7-a-php/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 11:28:09 +0000</pubDate>
		<dc:creator>petr.kratina</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programování]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.red-pill.cz/?p=294</guid>
		<description><![CDATA[
<p>Pokud potřebujete v PHP povolit upload velkých souborů, jistě víte, že
stačí v php.ini přenastavit hodnoty post_max_si­ze a upload_max_filesize
(nevím jak pro apache, pro IIS7 jsou nutné obě hodnoty, stejně tak je třeba
do formuláře, který data odesílá vložit alespoň jeden standardní post
element – třeba hidden, jinak php nedostane ani uploadovaný soubor). Toto
řešení vám bude bez problémů fungovat lokálně, ale ne, jakmile
přesunete web […]</p>

<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[
<p>Pokud potřebujete v PHP povolit upload velkých souborů, jistě víte, že
stačí v <strong>php.ini</strong> přenastavit
hodnoty <strong>post_max_si­ze</strong> a
<strong>upload_max_fi­lesize</strong> (nevím jak pro apache, pro IIS7 jsou
nutné obě hodnoty, stejně tak je třeba do formuláře, který data odesílá
vložit alespoň jeden standardní post element – třeba hidden, jinak php
nedostane ani uploadovaný soubor). Toto řešení vám bude bez problémů
fungovat lokálně, ale ne, jakmile přesunete web na reálný server, tam na
vás při uploadu většího souboru vyskočí anonymní chybová hláška:</p>

<p><code>Unspecified error (<em>0×80004005</em>)</code></p>

<p>žádná větší konkretizace, než že se jedná o chybu při spouštění
fast-cgi modulu php vás už nečeká. Dlouho jsem hledal v čem vůbec
problém vězí a jaké je jeho řešení, nakonec jsem příčinu našel a to
ve standardních limitech FastCGI.</p>
<span id="more-294"></span>
<p>IIS7 obsahuje jeden drobný, nepěkná věc – totiž modulům hlídá
maximální čas vykonávání, ale hlídá ho i ve chvíli, kdy teprve
přicházejí request data. A protože většina uživatelů není schopná
odesílat soubory rychlostí páteřní linky, překročí časový limit a php
je násilně ukončeno ještě dříve, než se spustí vykonávání vašeho
skriptu.</p>

<p>Řešením je úprava konfigurace IIS a nastavení časových limitů
ručně – to bohužel nelze provést přes grafické rozhraní, ale
modifikací konfiguračního XML souboru:</p>

<p><code>c:\windows\sys­tem32\inetsrv\con­fig\applicati­onHost.config</code></p>

<p>(budete potřebovat administrátorská práva, takže ve Windows Vista /
2008 je třeba editor spustit jako správce)</p>

<p>tam naleznete řádek:</p>

<p><code>&lt;application fullPath=„C:\PHP5\p­hp-cgi.exe“ /&gt;</code></p>

<p>nebo jemu velmi podobný a upravíte jej na následující:</p>

<p><code>&lt;application fullPath=„C:\PHP5\p­hp-cgi.exe“
requestTimeou­t=„3600“ /&gt;</code></p>

<p>tím nastavíte limit na zpracování požadavku na jednu hodinu. Teď už
stačí jen restartovat IIS, aby se nová nastavení načetla.</p>

<p>Pokud potřebujete nastavit i čas běhu skriptu, případně zvýšit
frontu požadavků na jednu instanci php, je tu přo vás rozšířené
nastavení:</p>

<p><code>&lt;application fullPath=„C:\PHP5\p­hp-cgi.exe“
activityTimeou­t=„3600“ requestTimeou­t=„3600“
instanceMaxRe­quests=„10000“&gt;                
&lt;environmentVa­riables&gt;                    
&lt;environmentVa­riable name=„PHP_FCGI­_MAX_REQUESTS“ value=„10000“
/&gt;                 &lt;/environmentVa­riables&gt;
            &lt;/application&gt;</code> jen je třeba nezapomenout
maximální počet požadavků sdělit i PHP pomocí oné environment
variable.</p>

<!-- by Texy2! -->]]></content:encoded>
			<wfw:commentRss>http://blog.red-pill.cz/2009/09/17/upload-velkych-souboru-v-iis7-a-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Memcache, Zend Framework a Windows &#8230;</title>
		<link>http://blog.red-pill.cz/2009/06/26/memcache-zend-framework-a-windows/</link>
		<comments>http://blog.red-pill.cz/2009/06/26/memcache-zend-framework-a-windows/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 14:37:52 +0000</pubDate>
		<dc:creator>petr.kratina</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programování]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.red-pill.cz/?p=266</guid>
		<description><![CDATA[
<p>Možná jste při vývoji cachované aplikace v Zend Frameworku narazili
na chybu:</p>

<p>Fatal error: Call to undefined method Memcache::addSer­ver()</p>

<p>Pokud je odpověď ano, mám pro vás jednoduchý postup po nápravu.</p>

<p>Chyba je v tom, že nový ZF je závislý na nejnovějším buildu
php_memcache.dll, ten ale není přiložen v distribuci Zend Serveru pro
Windows. Stačí si tedy stáhnou non-thread safe verzi pecl knihoven pro
Windows ze stánek php:</p>

<p><a
href="http://museum.php.net/">http://museum.php.net/</a>…ts-Win32.zip</p>

<p>A přepsat DLL […]</p>

<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[
<p>Možná jste při vývoji cachované aplikace v Zend Frameworku narazili
na chybu:</p>

<p><code>Fatal error: Call to undefined method
Memcache::addSer­ver()</code></p>

<p>Pokud je odpověď ano, mám pro vás jednoduchý postup po nápravu.</p>

<p>Chyba je v tom, že nový ZF je závislý na nejnovějším buildu
php_memcache.dll, ten ale není přiložen v distribuci Zend Serveru pro
Windows. Stačí si tedy stáhnou non-thread safe verzi pecl knihoven pro
Windows ze stánek php:</p>

<p><a
href="http://museum.php.net/php5/pecl-5.2.6-nts-Win32.zip">http://museum.php.net/…ts-Win32.zip</a></p>

<p>A přepsat DLL knihovnu v adresáři:</p>

<p><code>c:\Program Files\Zend\Zen­dServer\lib\phpex­t\</code></p>

<p>Voila! Aplikace běží!</p>

<!-- by Texy2! -->]]></content:encoded>
			<wfw:commentRss>http://blog.red-pill.cz/2009/06/26/memcache-zend-framework-a-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nefunkční partials v ZF po upgradu na 1.7.5</title>
		<link>http://blog.red-pill.cz/2009/02/20/nefunkcni-partials-v-zf-po-upgradu-na-175/</link>
		<comments>http://blog.red-pill.cz/2009/02/20/nefunkcni-partials-v-zf-po-upgradu-na-175/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 13:51:29 +0000</pubDate>
		<dc:creator>tomas.fejfar</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://blog.red-pill.cz/?p=132</guid>
		<description><![CDATA[<p>&#8220;Requested scripts may not include parent directory traversal (&#8221;../&#8221;, &#8220;..\&#8221; notation)&#8221;<br />
Tahle práva mě dnes překvapila při ladění shopu. Používal jsem na jednom serveru spoustu věcí na ZENDu, tak jsem si nechal dát ZF do include_path, abych nemusel pokaždé tahat FTPčkem těch10MB (nemam shell access). A ejhle, oni mi upgradovali na 1.7.5 a co se nestalo [...]</p>
]]></description>
			<content:encoded><![CDATA[<blockquote><p>&#8220;Requested scripts may not include parent directory traversal (&#8221;../&#8221;, &#8220;..\&#8221; notation)&#8221;</p></blockquote>
<p>Tahle práva mě dnes překvapila při ladění shopu. Používal jsem na jednom serveru spoustu věcí na ZENDu, tak jsem si nechal dát ZF do include_path, abych nemusel pokaždé tahat FTPčkem těch10MB (nemam shell access). A ejhle, oni mi upgradovali na 1.7.5 a co se nestalo <img src='http://blog.red-pill.cz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Tahle chyba nastává, když vkládáte view s cestou např.: &#8220;../partials/muj-partial.phtml&#8221; <img src='http://blog.red-pill.cz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Řešení naštěstí existuje</p>
<blockquote><p><span style="color: #0000ff;">$view</span>-&gt;<span style="color: #006600;">setLfiProtection</span><span style="color: #66cc66;">(</span><span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">)</span>;</p></blockquote>
<p>Po chvíli zlobení a nadávání jsem vygooglil tento článek:<br />
<a href="http://weierophinney.net/matthew/archives/206-Zend-Framework-1.7.5-Released-Important-Note-Regarding-Zend_View.html">Zend Framework 1.7.5 Released &#8211; Important Note Regarding Zend_View</a><br />
<a href="http://framework.zend.com/manual/en/zend.view.migration.html">53.6.1. Migrating from versions prior to 1.7.5</a> v manuálu Zend Frameworku</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.red-pill.cz/2009/02/20/nefunkcni-partials-v-zf-po-upgradu-na-175/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Upload souborů v PHP na IIS7</title>
		<link>http://blog.red-pill.cz/2009/01/27/upload-souboru-v-php-na-iis7/</link>
		<comments>http://blog.red-pill.cz/2009/01/27/upload-souboru-v-php-na-iis7/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 15:46:20 +0000</pubDate>
		<dc:creator>petr.kratina</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.red-pill.cz/2009/01/27/upload-souboru-v-php-na-iis7/</guid>
		<description><![CDATA[
<p>Pokud používáte PHP na IIS7 (ať už na vývoj pod Windows Vista nebo na
server pod Windows Server 2008) možná jste se setkali s problémem se kterým
jsem se do nedávna potýkal i já. Při uploadu souboru pomocí HTTP
formuláře jste měli problém při jeho používání. Pokud použijete
například move_uploaded_file, výsledný soubor bude sice čitelný pomocí
PHP, ale běžný uživatel ba ani webserver […]</p>

<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[
<p style="text-align: justify;">Pokud používáte PHP na IIS7 (ať už na
vývoj pod Windows Vista nebo na server pod Windows Server 2008) možná jste se
setkali s problémem se kterým jsem se do nedávna potýkal i já. Při
uploadu souboru pomocí HTTP formuláře jste měli problém při jeho
používání. Pokud použijete například <b>move_uploaded_fi­le</b>,
výsledný soubor bude sice čitelný pomocí PHP, ale běžný uživatel ba ani
webserver na něj nebude mít práva. Pokud se na dočasný soubor dotážete
pomocí funkce <b>is_readable</b>, vrátí vždy <b>false</b>.</p>

<h3>Včem je problém?</h3>

<p style="text-align: justify;">V PHP, jako obvykle :o) PHP totiž standardně
použije pro upload adresář c:\windows\temp, který má ale v nových Windows
podstatně zesílené nastavení zabezpečení a díky špatně napsaným
funkcím v PHP se tato bezpečnostní nastavení přenášejí dál.</p>

<h3>Co s tím?</h3>

<p style="text-align: justify;">Řešení je více než jednoduché, osobně za
nejlepší považuji vytvoření nového adresáře s přístupovými právy
pro NETWORK SERVICE (např. c:\temp\uploads) a jeho nastavení v php.ini a
restartování IIS.</p>

<p style="text-align: justify;">Na problémy php aplikací pod windows si pomalu
ale jistě začínám zvykat, ale doufám že s tím jak se bude IIS7 a FastCGI
PHP rozšiřovat, bude i větší tlak na vývojáře PHP a ti budou nuceni
začít pracovat s filesystémem Windows korektně, tam je totiž největší
slabina PHP na Windows.</p>

<!-- by Texy2! -->]]></content:encoded>
			<wfw:commentRss>http://blog.red-pill.cz/2009/01/27/upload-souboru-v-php-na-iis7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rozšiřování funkčnosti rodičovské třídy pomocí hooks</title>
		<link>http://blog.red-pill.cz/2009/01/18/rozsirovani-funkcnosti-rodicovske-tridy/</link>
		<comments>http://blog.red-pill.cz/2009/01/18/rozsirovani-funkcnosti-rodicovske-tridy/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 14:34:17 +0000</pubDate>
		<dc:creator>tomas.fejfar</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Nezařazené]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programování]]></category>
		<category><![CDATA[Třídy]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://blog.red-pill.cz/2009/01/18/rozsirovani-funkcnosti-rodicovske-tridy/</guid>
		<description><![CDATA[
<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[
<p>K napsání tohoto příspěvku mě inspirovala práce na jednom projektu
v Zend Frameworku, který je opravdu dobře napsaný z hlediska dědičnosti
atp. Někdo bude mít možná pocit, že tu znovuobjevuji kolo, ale někomu to
třeba pomůže. Pokud vás zajímá co jsou to <strong>hooks</strong>, tak
čtěte dále.</p>
<span id="more-103"></span>
<h2>Problém</h2>

<p>Rodičovský controller má v sobě většinu funkcionality. Takže třeba
pro update stačí načíst data, do proměnné controlleru dát form a zavolat
<em>parent::update()</em>. Všechno šlape jako hodinky do chvíle, než je
potřeba nějak rozšířit funkcionalitu nad možnosti parent controlleru.
Např. přidat nějakou složitou validaci dat, přidat nějaký ruhý form,
atp. V tu chvíli se na první pohled zdá, že jediná šance je zkopírovat
kód parent controlleru a udělat v něm potřebné úpravy. A docela dlouho
sem to takhle (prasecky) dělal.</p>

<h2>Řešení</h2>

<p>Do chvíle, než mě <a href="http://www.martinhujer.cz/">Martin Hujer</a>
upozornil na to, že se na tohle dají hezky použít <strong>hooks</strong>! :)
Ne že bych je neznal už dřív. V ZendFrameworku je používám dnes a denně
např. ve FrontController pluginech (dispatchLoop­Shutdown, preDispatch, …).
Ale vůbec mi nedošlo, že bych je mohl použít.</p>

<h2>Coto, toto?</h2>

<p>Cože to ty hooks jsou? Pro neznalé: Hooks jsou procedury, které nalepíte
někam doprostřed kódu a ve zděděné třídě do nich pak napíšete co
potřebujete, aniž byste museli měnit rodičovskou třídu. Pochopitelné? Moc
ne, že.</p>

<p>Příklad pomůže.</p>

<p><strong>Původní zdrojový kód</strong></p>

<pre class="php"><code><span
class="php-comment">// ParentController
</span><span
class="php-keyword1">function</span> updateAction()
{
  <span
class="php-comment">//nějaký kód co nastavuje třeba form, title, oescapování, atp.
</span>  <span
class="php-var">$this</span>-&gt;view-&gt;headTitle(<span
class="php-quote">'test'</span>);
  <span
class="php-comment">//semhle bych chtěl vložit nějaký svůj kód
</span>  <span
class="php-var">$this</span>-&gt;_model-&gt;update(<span
class="php-var">$this</span>-&gt;_data);
  <span
class="php-comment">//nějaký další kód
</span>}</code></pre>

<p><strong>Zdrojový kód s hooks</strong></p>

<pre class="php"><code><span
class="php-comment">// ParentController
</span><span
class="php-keyword1">function</span> updateAction()
{
  <span
class="php-comment">//nějaký kód co nastavuje třeba form, title, oescapování, atp.
</span>  <span
class="php-var">$this</span>-&gt;view-&gt;headTitle(<span
class="php-quote">'test'</span>);
  <span
class="php-var">$this</span>-&gt;_beforeUpdate();
  <span
class="php-var">$this</span>-&gt;_model-&gt;update(<span
class="php-var">$this</span>-&gt;_data);
  <span
class="php-var">$this</span>-&gt;_afterUpdate();
  <span
class="php-comment">//nějaký další kód
</span>}

<span
class="php-keyword1">protected</span> <span
class="php-keyword1">function</span> _beforeUpdate(){}
<span
class="php-keyword1">protected</span> <span
class="php-keyword1">function</span> _afterUpdate(){}

<span
class="php-comment">//IndexController extends ParentController
</span><span
class="php-keyword1">protected</span> <span
class="php-keyword1">function</span> _beforeUpdate(){
  <span
class="php-comment">//tady si můžu zavolat co potřebuji a provede se to
</span>  <span
class="php-comment">//před updatem DB
</span>  <span
class="php-comment">//např.:
</span>  <span
class="php-var">$this</span>-&gt;_data[<span
class="php-quote">'date'</span>] = <span
class="php-quote">'2009-01-01'</span>;
}</code></pre>

<!-- by Texy2! -->]]></content:encoded>
			<wfw:commentRss>http://blog.red-pill.cz/2009/01/18/rozsirovani-funkcnosti-rodicovske-tridy/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Eclipse: Otevírání Workspace z kontextového menu</title>
		<link>http://blog.red-pill.cz/2009/01/07/eclipse-otevirani-workspace-z-kontextoveho-menu/</link>
		<comments>http://blog.red-pill.cz/2009/01/07/eclipse-otevirani-workspace-z-kontextoveho-menu/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 22:05:45 +0000</pubDate>
		<dc:creator>tomas.fejfar</dc:creator>
				<category><![CDATA[Nezařazené]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programování]]></category>
		<category><![CDATA[Registry]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Zájimavosti]]></category>

		<guid isPermaLink="false">http://blog.red-pill.cz/2009/01/07/eclipse-otevirani-workspace-z-kontextoveho-menu/</guid>
		<description><![CDATA[
<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[<p>Poslední dobou jsem nějak rozpolcen mezi projekty od různých zadavatelů, své projekty a vůbec se začínám ztrácet. Abych od sebe měl oddělené tyhle věci při práci, používám Workspaces v Eclipse PDT. Jenže přepínání Workspaces je vopruz ! <img src='http://blog.red-pill.cz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Navíc klasicky před začátkem práce potřebuji Updatnout přes TortoiseSVN working copy, takže musím do té které složky.</p>
<p>A tak by mi spoustu času ulehčilo, kdybych měl v kontextovém menu něco jako &#8220;Start Eclipse Workspace here&#8221;. A posléze jsem na to přišel a taky se o to podělím.</p>
<p><span id="more-102"></span></p>
<p>Eclipse se spuští s určeným workspacem pomocí parametru <em>data</em>. Takže si nejdříve připravíme cestu, kterou budeme Eclipse spouštět. U mě je to &#8220;c:\Program Files (x86)\eclipse\eclipse.exe&#8221;, nakonec připojíme parametr data a %1, které se nahrdí cestou &#8211; tedy &#8220;c:\Program Files (x86)\eclipse\eclipse.exe -data %1&#8243;. A nyní ta zajímavá část.</p>
<p>Kontextové menu složky najdeme v registrech. Takže si spustíme regedit (ve Vistách musíme mít admin privledges). Najdeme si větev &#8220;HKEY_CLASSES_ROOT\Directory\shell\&#8221;. V ní jsou jednotlivé položky. Do větve přidáme větev &#8220;Eclipse.OpenWorkspaceHere&#8221;. Poklepáním na &#8220;Výchozí&#8221; v pravé části nastavíme výchozí hodnotu &#8211; to bude text, který se objeví v menu. Pak do vytvořené větve vložíme větev &#8220;command&#8221; a do její hodnoty &#8220;Výchozí&#8221; vložíme připravenou cestu k eclipse. Tada ! Hotovo <img src='http://blog.red-pill.cz/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Případně, pokud chcete komfortnější variantu, tak si vytvořte soubor Eclipse.reg a do něj vložte:</p>
<pre>Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\Eclipse.OpenWorkspace]
@="Open Eclipse Workspace here"

[HKEY_CLASSES_ROOT\Directory\shell\Eclipse.OpenWorkspace\command]
@="c:\\Program Files (x86)\\eclipse\\eclipse.exe -data %1"</pre>
<p>Samozřejmně upravený &#8211; se správnou cestou. A pozor na zpětná lomítka</p>
<p>UPDATE: Můžete si stahnout hotový .reg soubor.</p>
<p><a rel="attachment wp-att-136" href="http://blog.red-pill.cz/2009/01/07/eclipse-otevirani-workspace-z-kontextoveho-menu/eclipseopenworkspace/">eclipseopenworkspace.reg</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.red-pill.cz/2009/01/07/eclipse-otevirani-workspace-z-kontextoveho-menu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skinování Gmailu &#8211; konec přehlednosti?</title>
		<link>http://blog.red-pill.cz/2008/11/20/skinovani-gmailu-konec-prehlednosti/</link>
		<comments>http://blog.red-pill.cz/2008/11/20/skinovani-gmailu-konec-prehlednosti/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 13:48:52 +0000</pubDate>
		<dc:creator>tomas.fejfar</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Přístupnost]]></category>
		<category><![CDATA[Zájimavosti]]></category>

		<guid isPermaLink="false">http://blog.red-pill.cz/2008/11/20/skinovani-gmailu-konec-prehlednosti/</guid>
		<description><![CDATA[
<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[
<p>Před pár dny se mi na gmailu objevila zpráva, že od nynějška je možné
skinovat rozhraní. Podobně již dříve povolil skinování iGoogle.</p>
Gmail jsem měl vždycky rád, protože měl
<ol>
	<li>dostatek prostoru</li>

	<li>přehledné rozhraní</li>

	<li>obstojný antispam</li>
</ol>
 Jsem velmi rád, že zachovali i ten původní design. Proč? Dnes jsem si dal
tu práci a proklikal jsem si všechny jednotlivé skiny. Můžu o nich říct
jediné – <strong>jsou buď nekontrastní, nebo naopak příliš
kontrastní</strong> a pokud už jsou tak akorát, tak jsou vybaveny úžasnými
rušivými prvky (např. Ninja). Zajímavou vlastností některých skinů je,
že se mění podle denní doby. Nastavíte si kde jste a ráno máte schránku
svěže zelenou, večer naopak tlumeně modrošedou. Hezké.
<p>Zde je malá ukázka pro ty, kteří ještě službu nemají aktivní:<br />
 <a class="imagelink"
href="http://red-pill.darkyork.com/wp-content/uploads/2008/11/gmail_themes.jpg"
title="Nastavení témat v gmailu"><img id="image92"
src="http://red-pill.darkyork.com/wp-content/uploads/2008/11/gmail_themes-150x150.jpg"
alt="Nastavení témat v gmailu" /></a></p>

<p>Osobně nehodnotím přidání skinů jako krok správným směrem (resp.
jako něco extra přínosného). Pubertální slečny (které by jistě využily
skin Candy) si stejně budou svoje bložííínkové maily zakládat na seznamu.
Mnohem raději bych viděl nějak <strong>rozumně zpracovanou možnost
excludovat nějakou doménu ze spamfiltru</strong> (konkrétně seznam.cz –
maily z něj mi pravidleně končí ve spamu).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.red-pill.cz/2008/11/20/skinovani-gmailu-konec-prehlednosti/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Díl 1: Přihlašování uživatelů</title>
		<link>http://blog.red-pill.cz/2008/10/31/dil-1-prihlasovani-uzivatelu/</link>
		<comments>http://blog.red-pill.cz/2008/10/31/dil-1-prihlasovani-uzivatelu/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 15:35:05 +0000</pubDate>
		<dc:creator>tomas.fejfar</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programování]]></category>
		<category><![CDATA[Třídy]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://blog.red-pill.cz/2008/10/31/dil-1-prihlasovani-uzivatelu/</guid>
		<description><![CDATA[
<!-- by Texy2! -->]]></description>
			<content:encoded><![CDATA[
<p>Již delší dobu jsem se chystal na nějaký větší projekt a dnes jsem se
k tomu konečně dostal a začal. A výsledkem je první díl seriálu
screencastů o Zend Frameworku – tentokrát na téma <strong>Jednoduché
přihlašování uživatelů</strong>.</p>
<object height="354" width="450">
<param name="movie"
value="http://www.stream.cz/object/170557-dil-1-prihlasovani-uzivatelu" />
<param name="allowfullscreen" value="true" />
<param name="wmode" value="transparent" />
<embed src="http://www.stream.cz/object/170557-dil-1-prihlasovani-uzivatelu"
type="application/x-shockwave-flash" wmode="transparent" allowfullscreen="true"
height="354" width="450" /></object>
<p>Kvalita záznamu je poněkud slabší a zvuk je malinko out-of-sync
(zvlášť ke konci), ale to se do příštího dílu změní. Případné
náměty na další témata pište do komentářů.</p>

<p>Potom, co jsem screencast dokončil a překomprimoval jsem si všimnul, že
sem zapoměl zmínit to hlídání init() metody. Takže to zmíním tady:</p>

<pre class="php"><code><span
class="php-keyword1">class</span> IndexController extend My_Controller_Restricted{
    <span
class="php-keyword1">public</span> <span
class="php-keyword1">function</span> init(){
        <span
class="php-var">$foo</span> = <span
class="php-quote">'bar'</span>;
        <span
class="php-comment">/* Tady chceme nějaký náš kód, jenže tím jsme přepsali
         * metodu init() v původním controlleru, takže je třeba jí
         * ještě zavolat.
         * Pokud by se měl init vykonat pouze po přihlášení, tak musí být
         * parent::init() na začátku !
         */</span>
        parent::init();
    }
}</code></pre>
Pro někoho se znalostmi OOP to není nic překvapujícího, ale pro OOP
začátečníky je tohle několik bezesných nocí. okud by si někdo chtěl
doplnit vzdělání, tak doporučuji:
<ul>
	<li>PHP: <a
	href="http://php.interval.cz/objektove-orientovane-programovani-oop-v-php/">http://php.interval.cz/…i-oop-v-php/</a></li>

	<li>Pascal: <a
	href="http://www.sweb.cz/david.padrta/pascal/7oop.html">http://www.sweb.cz/…al/7oop.html</a></li>

	<li>Teoreticky: <a
	href="http://www.smt.pilsedu.cz/~jojo/Vyt/OOP.htm">http://www.smt.pilsedu.cz/…/Vyt/OOP.htm</a></li>
</ul>

<p>Zdrojové kódy ke screencastu budou k dispozici během
příštího týdne.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.red-pill.cz/2008/10/31/dil-1-prihlasovani-uzivatelu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
