<?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>Mój smietniczek</title>
	<atom:link href="http://blog.purevirtual.net/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.purevirtual.net</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Fri, 16 Apr 2010 10:22:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Kiedy ArrayList to nie ArrayList</title>
		<link>http://blog.purevirtual.net/post/198/2010-04-16/kiedy-arraylist-to-nie-arraylist</link>
		<comments>http://blog.purevirtual.net/post/198/2010-04-16/kiedy-arraylist-to-nie-arraylist#comments</comments>
		<pubDate>Fri, 16 Apr 2010 10:22:37 +0000</pubDate>
		<dc:creator>litestep</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.purevirtual.net/?p=198</guid>
		<description><![CDATA[Bawiąc się serializacją obiektów do XML trafiłem na XStream. W przeciwieństwie do standardowej pary XMLDecoder/XMLEncoder serializuje wszystkie pola a nie tylko te które posiadają gettery/settery. Generowany XML jest także zdecydowanie bardziej przejrzysty: &#60;?xml version="1.0" encoding="UTF-8"?&#62; &#60;java version="1.6.0_13"&#62; &#60;object class="TestClass"&#62; &#60;void property="text"&#62; &#60;string&#62;żółć&#60;/string&#62; &#60;/void&#62; &#60;void property="check1"&#62; &#60;boolean&#62;false&#60;/boolean&#62; &#60;/void&#62; &#60;void property="check2"&#62; &#60;boolean&#62;false&#60;/boolean&#62; &#60;/object&#62; &#60;/java&#62; vs &#60;TestClass&#62; &#60;text&#62;żółć&#60;/text&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>Bawiąc się serializacją obiektów do XML trafiłem na XStream. W przeciwieństwie do standardowej pary XMLDecoder/XMLEncoder serializuje wszystkie pola a nie tylko te które posiadają gettery/settery. Generowany XML jest także zdecydowanie bardziej przejrzysty:</p>
<p><code><br />
&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;java version="1.6.0_13"&gt;<br />
&lt;object class="TestClass"&gt;<br />
&lt;void property="text"&gt;<br />
&lt;string&gt;żółć&lt;/string&gt;<br />
&lt;/void&gt;<br />
 &lt;void property="check1"&gt;<br />
&lt;boolean&gt;false&lt;/boolean&gt;<br />
&lt;/void&gt;<br />
&lt;void property="check2"&gt;<br />
&lt;boolean&gt;false&lt;/boolean&gt;<br />
&lt;/object&gt;<br />
&lt;/java&gt;<br />
</code><br />
vs<br />
<code><br />
&lt;TestClass&gt;<br />
&lt;text&gt;żółć&lt;/text&gt;<br />
&lt;check1&gt;false&lt;/check1&gt;<br />
&lt;check2&gt;true&lt;/check2&gt;<br />
&lt;/TestClass&gt;<br />
</code><br />
Natrafiłem jednak na problem &#8211; XStream nie potrafił zapisać zwykłej listy, a przynajmniej ignorował zawartość:<br />
<code><br />
&lt;select class="java.util.Arrays$ArrayList"&gt;<br />
&lt;a/&gt;<br />
&lt;/select&gt;<br />
</code><br />
Na ten sam problem trafił już wcześniej Jim Barritt  i udało mu się znaleźć <a href="http://jimbarritt.com/non-random/2009/11/25/xstream-collections-when-is-an-arraylist-not-an-arraylist/">przyczynę</a> . Jak się okazało lista zwracana przez Arrays.asList() to nie zwykłe java.util.ArrayList ale zupełnie inna klasa o nazwie ArrayList będa inner class w java.util.Arrays. XStream do serializacji używa wielu rożnych konwerterów i niestety nie wie, że CollectionConverter powinien być użyty także dla tej klasy. Niestety dla mnie to oznacza dyskwalifikację XStreama -  nie mam czasu szukać przyczyny ewentualnej błędnej serializacji.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.purevirtual.net/post/198/2010-04-16/kiedy-arraylist-to-nie-arraylist/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Profesjonalne cięcie XHTML część 2</title>
		<link>http://blog.purevirtual.net/post/189/2010-03-03/profesjonalne-ciecie-xhtml-czesc-2</link>
		<comments>http://blog.purevirtual.net/post/189/2010-03-03/profesjonalne-ciecie-xhtml-czesc-2#comments</comments>
		<pubDate>Wed, 03 Mar 2010 16:47:50 +0000</pubDate>
		<dc:creator>litestep</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.purevirtual.net/?p=189</guid>
		<description><![CDATA[Jak się okazało klient postanowił dalej korzystać z super specjalistów opisanych tutaj Profesjonalne cięcie XHTML . Tym razem domagałem się, żeby dostarczone pliki HTML się walidowały. Najwyraźniej popełniłem błąd. Teraz zamiast wielokrotnie użytego tego samego id w dokumencie i takich reguł css: #center_box_advice_desc { width:180px; position:absolute; left:115px; top:30px; color:#5C5C5C; } otrzymałem kod gdzie wszystkie id [...]]]></description>
			<content:encoded><![CDATA[<p>Jak się okazało klient postanowił dalej korzystać z super specjalistów opisanych tutaj <a href="http://blog.purevirtual.net/post/145/2009-07-23/profesjonalne-ciecie-xhtml">Profesjonalne cięcie XHTML</a> . Tym razem domagałem się, żeby dostarczone pliki HTML się walidowały. Najwyraźniej popełniłem błąd. Teraz zamiast wielokrotnie użytego tego samego <em>id</em> w dokumencie i takich reguł css:</p>
<pre>#center_box_advice_desc {
 width:180px;
 position:absolute;
 left:115px;
 top:30px;
 color:#5C5C5C;
}</pre>
<p>otrzymałem kod gdzie wszystkie id są unikalne a reguły wyglądają tak:</p>
<pre>#center_box_advice_desc,
#center_box_advice_desc_1,
#center_box_advice_desc_2,
#center_box_advice_desc_3{
 width:180px;
 position:absolute;
 left:115px;
 top:30px;
 color:#5C5C5C;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.purevirtual.net/post/189/2010-03-03/profesjonalne-ciecie-xhtml-czesc-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Email w formacie HTML</title>
		<link>http://blog.purevirtual.net/post/181/2010-02-11/email-w-formacie-html</link>
		<comments>http://blog.purevirtual.net/post/181/2010-02-11/email-w-formacie-html#comments</comments>
		<pubDate>Thu, 11 Feb 2010 14:22:58 +0000</pubDate>
		<dc:creator>litestep</dc:creator>
				<category><![CDATA[Tips, Tricks & HowTos]]></category>

		<guid isPermaLink="false">http://blog.purevirtual.net/?p=181</guid>
		<description><![CDATA[Osobiście uważam pocztę w HTMLu zamiast jedynego słusznego czystego tekstu za wynaturzenie, podobne do odpowiadania nad cytowanym tekstem ale niestety czasem nie ma to żadnego znaczenia. Więc jeśli już ktoś was do tego zmusi kilka rad: tabelka twoim najlepszym przyjacielem &#8211; uwierz, tu naprawdę nie da się stworzyć layoutu w CSS, który by się gdzieś [...]]]></description>
			<content:encoded><![CDATA[<p>Osobiście uważam pocztę w HTMLu zamiast jedynego słusznego czystego tekstu za wynaturzenie, podobne do odpowiadania nad cytowanym tekstem ale niestety czasem nie ma to żadnego znaczenia. Więc jeśli już ktoś was do tego zmusi kilka rad:<span id="more-181"></span></p>
<ul>
<li>tabelka twoim najlepszym przyjacielem &#8211; uwierz, tu naprawdę nie da się stworzyć layoutu w CSS, który by się gdzieś nie rozjechał</li>
<li>a właśnie, o CSS możesz zapomnieć &#8211; oczywiście działają tylko reguły umieszczone bezpośrednio w <em>&lt;body&gt;</em>, nie np. GMaila który wycina wszystkie znaczniki <em>&lt;style&gt;</em>, pozostaje używanie wyłącznie atrybutu <em>style</em> a to jest katorga</li>
<li>żadnych ładowanych z zewnętrznych obrazków, praktycznie wszystkie klienty je blokują, dodatkowo nawet zagnieżdżone w emailu obrazki nie będą używane jako tła</li>
<li>portale używają obrazka/obrazków i map linków, po powyższych punktach widać dlaczego</li>
<li>GMail nie pozwala na float:clear</li>
<li>Hotmail ignoruje marginesy&#8230;</li>
<li>Eudora ignoruje zmiany rodzaju lub wielkości fonta</li>
</ul>
<p>Na szczęście te 2 ostatnie punkty nie mają dużego znaczenia w naszym kraju. I na koniec ciekawostka: im nowszy Outlook tym gorzej wyświetla maile w HTMLu, w starym Outlook Express działa wszystko . Konkretnie od Outlook2007 wyświetlaniem maili nie zajmuje się już silnik IE tylko&#8230; Worda dlatego nie działają formularze, animowane gify, <em>float</em>, <em>position</em> czy tag <em>alt</em> w obrazkach. Marketoidy były wściekłe na Microsoft po tej zmianie, najchętniej by pewnie maile z animacjami flashowymi wysyłali. Nawet jest akcja protestacyjna http://www.fixoutlook.org/ . Troche smutne, o poprawne wstawianie i wycinanie sygnaturek oznaczonych &#8220;&#8211; \n&#8221; nikt tak nie walczył :P</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.purevirtual.net/post/181/2010-02-11/email-w-formacie-html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Valgrind znajduje wycieki pamięci w programach uzywających GLib</title>
		<link>http://blog.purevirtual.net/post/171/2009-12-19/valgrind-znajduje-wycieki-pamieci-w-programach-uzywajacych-glib</link>
		<comments>http://blog.purevirtual.net/post/171/2009-12-19/valgrind-znajduje-wycieki-pamieci-w-programach-uzywajacych-glib#comments</comments>
		<pubDate>Sat, 19 Dec 2009 14:24:57 +0000</pubDate>
		<dc:creator>litestep</dc:creator>
				<category><![CDATA[Tips, Tricks & HowTos]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[glib]]></category>
		<category><![CDATA[valgrind]]></category>

		<guid isPermaLink="false">http://blog.purevirtual.net/?p=171</guid>
		<description><![CDATA[Chcemy sprawdzić swój program i widzimy coś takiego: #valgrind --leak-check=full ./a.out ==19197== 992 bytes in 2 blocks are possibly lost in loss record 9 of 10 ==19197== at 0x4C213A6: memalign (vg_replace_malloc.c:532) ==19197== by 0x4C21402: posix_memalign (vg_replace_malloc.c:660) ==19197== by 0x7ADFD80: ??? (in /lib/libglib-2.0.so.0.2200.3) ==19197== by 0x7AE1622: g_slice_alloc (in /lib/libglib-2.0.so.0.2200.3) ==19197== by 0x7A9E731: g_array_sized_new (in /lib/libglib-2.0.so.0.2200.3) ==19197== [...]]]></description>
			<content:encoded><![CDATA[<p>Chcemy sprawdzić swój program i widzimy coś takiego:</p>
<pre style="width:100%">
#valgrind --leak-check=full ./a.out
==19197== 992 bytes in 2 blocks are possibly lost in loss record 9 of 10
==19197==    at 0x4C213A6: memalign (vg_replace_malloc.c:532)
==19197==    by 0x4C21402: posix_memalign (vg_replace_malloc.c:660)
==19197==    by 0x7ADFD80: ??? (in /lib/libglib-2.0.so.0.2200.3)
==19197==    by 0x7AE1622: g_slice_alloc (in /lib/libglib-2.0.so.0.2200.3)
==19197==    by 0x7A9E731: g_array_sized_new (in /lib/libglib-2.0.so.0.2200.3)
==19197==    by 0x400B73: iowait_init (iowait.c:6)
==19197==    by 0x400DFF: main (main.c:7)
</pre>
<p><span id="more-171"></span><br />
Upewniamy się dwa razy &#8211; w programie zwalniamy poprawnie pamięć, więc co może być nie tak? Czy to błąd w Glib? Oczywiście nie &#8211; przyczyna jest bardzo prosta &#8211; GLib stara się optymalizować zarządzanie pamięcią i alokuje od razu większe bloki, które sam potem dzieli i przydziela, dzięki czemu nie jest potrzebnych tyle wywołań systemowych. Ale Valgrind się przy takich sztuczkach gubi. Na szczęście jest to znany problem a jego ominiecie jest bardzo proste &#8211; wystarczy zdefiniować dwie zmienne środowiskowe </p>
<pre style="width:100%">G_SLICE=always-malloc G_DEBUG=gc-friendly valgrind  --leak-check=full ./a.out</pre>
<p> a Glib przestanie się wtrącać w alokowanie i zwalnianie pamięci. Więcej informacji można znaleźć na <a href="http://live.gnome.org/Valgrind">http://live.gnome.org/Valgrind</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.purevirtual.net/post/171/2009-12-19/valgrind-znajduje-wycieki-pamieci-w-programach-uzywajacych-glib/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Poprawianie błędnej wartości sekwencji</title>
		<link>http://blog.purevirtual.net/post/167/2009-08-14/poprawianie-blednej-wartosci-sekwencji</link>
		<comments>http://blog.purevirtual.net/post/167/2009-08-14/poprawianie-blednej-wartosci-sekwencji#comments</comments>
		<pubDate>Fri, 14 Aug 2009 07:36:55 +0000</pubDate>
		<dc:creator>litestep</dc:creator>
				<category><![CDATA[Tips, Tricks & HowTos]]></category>
		<category><![CDATA[constraint]]></category>
		<category><![CDATA[duplicate]]></category>
		<category><![CDATA[insert]]></category>
		<category><![CDATA[postgres]]></category>
		<category><![CDATA[serial]]></category>

		<guid isPermaLink="false">http://blog.purevirtual.net/?p=167</guid>
		<description><![CDATA[Wczoraj, podczas refaktoryzacji starego kodu, przy wstawianiu wierszy do tabeli otrzymałem następujący błąd: ERROR: duplicate key violates unique constraint &#8220;mytable_pkey&#8221; Wydawało mi się to dziwne, w końcu struktura tabeli była następująca: mytable ( id SERIAL PRIMARY KEY [...] ) Po upewnieniu się, że nie podaje żadnego id podczas komendy insert zacząłem szukać potencjalnej przyczyny tego [...]]]></description>
			<content:encoded><![CDATA[<p>Wczoraj, podczas refaktoryzacji starego kodu, przy wstawianiu wierszy do tabeli otrzymałem następujący błąd:</p>
<blockquote><p>ERROR:  duplicate key violates unique constraint &#8220;mytable_pkey&#8221;</p></blockquote>
<p>Wydawało mi się to dziwne, w końcu struktura tabeli była następująca:<br />
<span id="more-167"></span><br />
<code><br />
mytable (<br />
    id SERIAL PRIMARY KEY<br />
[...]<br />
)<br />
</code><br />
Po upewnieniu się, że nie podaje żadnego id podczas komendy <em>insert</em> zacząłem szukać potencjalnej przyczyny tego błędu. Okazała się bardzo prosta lecz niespodziewana &#8211; wartość sekwencji używanej do pobierania kolejnych <em>id</em> była mniejsza niż maksymalna wartość <em>id</em> w istniejących wierszach.<br />
Na szczęście można to łatwo naprawić:<br />
<code><br />
select setval('mytable_id_seq', (select max(id) from mytable)) ;<br />
</code><br />
Przy okazji moich poszukiwań znalazłem patch do Postgresa 8.4 który daje bardziej czytelne komunikaty o takich błędach, więc można się spodziewać, że w 8.5 będzie już łatwiej :)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.purevirtual.net/post/167/2009-08-14/poprawianie-blednej-wartosci-sekwencji/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend_Form_Multi &#8211; dodawanie opcji</title>
		<link>http://blog.purevirtual.net/post/162/2009-08-11/zend_form_multi-dodawanie-opcji</link>
		<comments>http://blog.purevirtual.net/post/162/2009-08-11/zend_form_multi-dodawanie-opcji#comments</comments>
		<pubDate>Tue, 11 Aug 2009 15:41:07 +0000</pubDate>
		<dc:creator>litestep</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[select]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://blog.purevirtual.net/?p=162</guid>
		<description><![CDATA[Bawiąc się Zend_Form ze zdziwieniem zauważyłem, że wygenerowanie comboboxa z tysiącem elementów trwa aż 150 ms. Ze zdziwieniem okazało się że jest identycznie jak w przypadku QuickForma &#8211; wszystkie opcje są przetwarzane pojedynczo, pod kątem ewentualnych &#8230; tłumaczeń. Odpowiedzialny fragment: /** * Add an option * * @param string $option * @param string $value * [...]]]></description>
			<content:encoded><![CDATA[<p>Bawiąc się Zend_Form ze zdziwieniem zauważyłem, że wygenerowanie comboboxa z tysiącem elementów trwa aż 150 ms. Ze zdziwieniem okazało się że jest identycznie jak w przypadku QuickForma &#8211; wszystkie opcje są przetwarzane pojedynczo, pod kątem ewentualnych &#8230; tłumaczeń. Odpowiedzialny fragment:<span id="more-162"></span></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">    <span style="color: #009933; font-style: italic;">/**
     * Add an option
     *
     * @param  string $option
     * @param  string $value
     * @return Zend_Form_Element_Multi
     */</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> addMultiOption<span style="color: #009900;">&#40;</span><span style="color: #000088;">$option</span><span style="color: #339933;">,</span> <span style="color: #000088;">$value</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$option</span>  <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>string<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$option</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>_getMultiOptions<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>_translateOption<span style="color: #009900;">&#40;</span><span style="color: #000088;">$option</span><span style="color: #339933;">,</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>options<span style="color: #009900;">&#91;</span><span style="color: #000088;">$option</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$value</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #009933; font-style: italic;">/**
     * Add many options at once
     *
     * @param  array $options
     * @return Zend_Form_Element_Multi
     */</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> addMultiOptions<span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$option</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span>
                <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #990000;">array_key_exists</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'key'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span>
                <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #990000;">array_key_exists</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'value'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>addMultiOption<span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'key'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'value'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>addMultiOption<span style="color: #009900;">&#40;</span><span style="color: #000088;">$option</span><span style="color: #339933;">,</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span></pre></div></div>

<p>Zmiana</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$form</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setDisableTranslator</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Trochę pomaga, ale nadal pozostaje spore pole do popisu, zwłaszcza, że dokumentacja twierdz iż:</p>
<blockquote><p>By default, no internationalisation (I18n) is performed. </p></blockquote>
<p>Jak na coś czego nie ma to zjada całkiem sporo zasobów. A później ludzie twierdzą, że Frameworki są wolne&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.purevirtual.net/post/162/2009-08-11/zend_form_multi-dodawanie-opcji/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Integracja/Automatyzacja</title>
		<link>http://blog.purevirtual.net/post/154/2009-07-30/integracjaautomatyzacja</link>
		<comments>http://blog.purevirtual.net/post/154/2009-07-30/integracjaautomatyzacja#comments</comments>
		<pubDate>Thu, 30 Jul 2009 11:19:01 +0000</pubDate>
		<dc:creator>litestep</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[wtf]]></category>

		<guid isPermaLink="false">http://blog.purevirtual.net/?p=154</guid>
		<description><![CDATA[Komputery są po to by robić różne nudne rzeczy za nas. Przykładowo jeśli mają być przesyłane dane z jednego systemu do drugiego to powinno się to dziać automatycznie. Okazało się, że mimo istnienia cudownej prezentacji, która zapewnia jak przydatny jest zewnętrzny system nikt dotychczas nie integrował go ze swoim oprogramowaniem. Dlatego wybór technologi pozostawiono nam. [...]]]></description>
			<content:encoded><![CDATA[<p>Komputery są po to by robić różne nudne rzeczy za nas. Przykładowo jeśli mają być przesyłane dane z jednego systemu do drugiego to powinno się to dziać automatycznie. Okazało się, że mimo istnienia cudownej prezentacji, która zapewnia jak przydatny jest zewnętrzny system nikt dotychczas nie integrował go ze swoim oprogramowaniem. Dlatego wybór technologi pozostawiono nam. Przedstawiono także przykładowy plik XML z danymi. Uznałem, że nie ma sensu bawić się w jakieś XMLRPC czy jakieś inne kobyły, wystarczy, że pliki xml będą przesyłane jako załączniki na wybrany adres.<br />
No i są przesyłane. Nawet są prawidłowo przetwarzane przez nasz system. Więc w czym problem? Te maile są wysyłane  &#8230;  ręcznie. Na 3 maile &#8211; 3 różne godziny wysłania i 3 &#8230; różnych nadawców &#8230;</p>
<p>W sumie nie powinienem narzekać &#8211; przynajmniej po naszej stronie nikt nie musi już codziennie wgrywać tych plików xml za pomocą formularza. Wiwat automatyzacja.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.purevirtual.net/post/154/2009-07-30/integracjaautomatyzacja/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Profesjonalne cięcie XHTML</title>
		<link>http://blog.purevirtual.net/post/145/2009-07-23/profesjonalne-ciecie-xhtml</link>
		<comments>http://blog.purevirtual.net/post/145/2009-07-23/profesjonalne-ciecie-xhtml#comments</comments>
		<pubDate>Thu, 23 Jul 2009 11:45:28 +0000</pubDate>
		<dc:creator>litestep</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.purevirtual.net/?p=145</guid>
		<description><![CDATA[W sumie to nie mój problem, ja to tylko podpinam, ale: Nieustannie rozwijamy się i [..] wdrażamy nowinki technologiczne Widzę bardzo duże możliwości do rozwoju. Przeanalizujmy: Deklaracja XHTML 1.0 &#8211; jak politycy, oni też tak deklarują Atrybuty &#8211; nazwy w camelCase, brak cudzysłowów, lub użycie ” jako znaku cudzysłowu, alt nie dodany do żadnego &#60;img&#62;, [...]]]></description>
			<content:encoded><![CDATA[<p>W sumie to nie mój problem, ja to tylko podpinam, ale:</p>
<blockquote><p>Nieustannie rozwijamy się i [..] wdrażamy nowinki technologiczne</p></blockquote>
<p>Widzę bardzo duże możliwości do rozwoju. <span id="more-145"></span>Przeanalizujmy:</p>
<ul>
<li> Deklaracja XHTML 1.0 &#8211; jak politycy, oni też tak deklarują</li>
<li> Atrybuty &#8211; nazwy w camelCase, brak cudzysłowów, lub użycie ” jako znaku cudzysłowu, <em>alt</em> nie dodany do żadnego <em>&lt;img&gt;</em>, niezgodne ze XHTML 1 wartości atrybutów czy atrybuty których już nie ma</li>
<li> używanie id zamiast class &#8211; skoro działa to po co się przejmować, że element o danym id występuje 9 razy?</li>
<li> niepozamykane tagi, niepootwierane tagi (uprzedzając pytania -nie, nie pasują do siebie)</li>
</ul>
<p>Wiem czepiam się, przecież strony nie są dla walidatorów tylko dla przeglądarek, one już to jakoś wyświetlą ( o ile nie ustawimy content type na xhtml ).<br />
Ale już coś takiego robi wrażenie: 10%  pliku css to ciągła deklaracja jednej i tego samego fontu* -_-.<br />
Na szczęście ja to tylko ( a może aż) podpinam do istniejącego kodu.</p>
<p>*ktoś mnie kiedyś poprawił, że czcionki to były używane w czasach Gutemberga :P</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.purevirtual.net/post/145/2009-07-23/profesjonalne-ciecie-xhtml/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Oko Kaszub</title>
		<link>http://blog.purevirtual.net/post/139/2009-06-29/oko-kaszub</link>
		<comments>http://blog.purevirtual.net/post/139/2009-06-29/oko-kaszub#comments</comments>
		<pubDate>Sun, 28 Jun 2009 22:06:52 +0000</pubDate>
		<dc:creator>litestep</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.purevirtual.net/?p=139</guid>
		<description><![CDATA[Trasa jak zwykle tutaj . Jak widać zamiast pojechać bezpośrednio do celu szukałem trasy alternatywnej*. Sama wieża obserwacyjna jest jednak zdecydowanie za niska. Druty będące częścią konstrukcji także przeszkadzają w swobodnym podziwianiu panoramy. *tzn. zgubiłem się. Na swoje usprawiedliwienie mogę dodać że most w Bolszewie jest nieprzejezdny, przynajmniej teoretycznie, bo mieszkańcy rozcięli blokującą dostęp blachę.]]></description>
			<content:encoded><![CDATA[<p>Trasa jak zwykle <a href="http://www.gmap-pedometer.com/?r=2957300 ">tutaj </a>. Jak widać zamiast pojechać bezpośrednio do celu szukałem trasy alternatywnej*. Sama wieża obserwacyjna jest jednak zdecydowanie za niska. Druty będące częścią konstrukcji także przeszkadzają w swobodnym podziwianiu panoramy.</p>
<p>*tzn. zgubiłem się. Na swoje usprawiedliwienie mogę dodać że most w Bolszewie jest nieprzejezdny, przynajmniej teoretycznie, bo mieszkańcy rozcięli blokującą dostęp blachę.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.purevirtual.net/post/139/2009-06-29/oko-kaszub/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Czar dwóch kółek</title>
		<link>http://blog.purevirtual.net/post/129/2009-06-07/czar-dwoch-kolek</link>
		<comments>http://blog.purevirtual.net/post/129/2009-06-07/czar-dwoch-kolek#comments</comments>
		<pubDate>Sun, 07 Jun 2009 14:38:35 +0000</pubDate>
		<dc:creator>litestep</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.purevirtual.net/?p=129</guid>
		<description><![CDATA[To mój trzeci dłuższy wypad po praktycznie 6 letniej przerwie. Link do trasy. Według Googli &#8211; 48 km, według mojego licznika &#8211; 64 :P Licznik jest zapewne bliższy prawdy, ponieważ pomiędzy zajezdnią autobusową a Źródłem Marii, a następnie z stamtąd aż do Alei Niepodległości nie miałem większego pojęcia gdzie się znajduje, więc nie jestem tego [...]]]></description>
			<content:encoded><![CDATA[<p>To mój trzeci dłuższy wypad po praktycznie 6 letniej przerwie. <a href="http://www.gmap-pedometer.com/?r=2894608">Link do trasy</a>. Według Googli &#8211; 48 km, według mojego licznika &#8211; 64 :P Licznik jest zapewne bliższy prawdy, ponieważ pomiędzy zajezdnią autobusową a Źródłem Marii, a następnie z stamtąd aż do Alei Niepodległości nie miałem większego pojęcia gdzie się znajduje, więc nie jestem tego dokładnie zaznaczyć na mapie. Przestrzegam przed trzymaniem się blisko morza na odcinku Sopot-Gdynia &#8211; trasa jest po prostu ciężka a w niektórych miejscach po prostu znika bo ziemia się osunęła.<br />
Wielkopolska w Gdyni to naprawdę niezły kawał &#8230; górki, nie to co np. króciutka Łostowicka. Kawałeczek za leśniczówką Gołębiewo jest  ładny i długi asfaltowy zjazd. Moje dwa kółka osiągnęły całe 40km/h tylko pod wpływem grawitacji, gdyby nie zakręty może udało by się uzyskać więcej. Albo wręcz przeciwnie, miałbym kolizję z sarną akurat przebiegającą na końcu tego odcinka =). Kiedy w końcu dojechałem do Oliwy naprawdę cieszyłem się z widoku cywilizacji, a moją uwagę zwróciło niecodzienne rozwiązanie komunikacyjne. A biorąc pod uwagę, że licznik łącznie pokazuje całe 160 km widać, że jazda na rowerze nie wymaga absolutnie żadnej kondycji. Choć pewnie wiekszość ludzi przejechała by tą trasę szybciej niż w 4 godziny.</p>
<p>Wyprawa wspomagana przez &#8220;Helloween &#8211; As Long As I Fall&#8221; w cokolwiek <a href="http://www.animemusicvideos.org/members/members_videoinfo.php?vid_id=160182">dziwnej wersji<br />
</a> zgrabnie zmontowanej ze scenami z bliżej nieustalonego anime z gatunku &#8220;magical girls&#8221; (sic!)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.purevirtual.net/post/129/2009-06-07/czar-dwoch-kolek/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 1.278 seconds -->
