<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" version="2.0">

<channel>
	<title>/home/Śpiechu-&gt;Blog</title>
	
	<link>http://spiechu.all.pl</link>
	<description>o wszystkim co się nawinie… a najczęściej o Linuksie</description>
	<pubDate>Tue, 27 Oct 2009 21:00:35 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.5/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-nc-sa/2.5/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/spiechu" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>O pehapowcu, który chciał zostać javowcem</title>
		<link>http://spiechu.all.pl/2009/10/27/o-pehapowcu-ktory-chcial-zostac-javowcem/</link>
		<comments>http://spiechu.all.pl/2009/10/27/o-pehapowcu-ktory-chcial-zostac-javowcem/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 19:09:28 +0000</pubDate>
		<dc:creator>Spiechu</dc:creator>
		
		<category><![CDATA[Inne]]></category>

		<guid isPermaLink="false">http://spiechu.all.pl/?p=402</guid>
		<description><![CDATA[Znowu zleciał prawie miesiąc od ostatniego wpisu&#8230; Nie ozanacza to oczywiście, że przez ten czas nic się nie działo. Wręcz przeciwnie, a to za sprawą próby &#8220;wgryzienia się&#8221; w Javę.
Na różnych mądrych forach wyczytałem, że PHP to właściwie zabawka, a prawdziwe programowanie zaczyna się dopiero od Javy. Szkoda tylko, że niektórzy nie zauważają, że &#8220;zabawki&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>Znowu zleciał prawie miesiąc od ostatniego wpisu&#8230; Nie ozanacza to oczywiście, że przez ten czas nic się nie działo. Wręcz przeciwnie, a to za sprawą próby &#8220;wgryzienia się&#8221; w Javę.</p>
<p>Na różnych mądrych forach wyczytałem, że PHP to właściwie zabawka, a prawdziwe programowanie zaczyna się dopiero od Javy. Szkoda tylko, że niektórzy nie zauważają, że &#8220;zabawki&#8221; typu Allegro napisane są w PHP. Dodatkowo zachęcony hasłem &#8220;write once, use everywhere&#8221; zainstalowałem sobie NetBeans na Ubuntu  i &#8220;ruszyłem z tym koksem&#8221;.</p>
<p>Co nowego zauważyłem w Javie z punktu widzenia znajomości wyłącznie PHP (nie liczę Logo, Basic a potem Turbo Pascal za dzieciaka):</p>
<ul>
<li>Nie ma w Javie zmiennych bez wcześniejszego zadeklarowania ich typu. Koniec ze zmienną będącą raz integerem, a innym razem stringiem.</li>
<li>Koniec z funkcjami zwracającymi wartości ładnie w PHPDoc nazwane <em>mixed</em>, czyli jak wszystko fajnie poszło, to <em>return true</em>, jak niefajnie to <em>false</em>, a jak trochę fajnie to stringa.</li>
<li>Przeciążanie metod to jest to czego mi brakuje w PHP. Wiele zadań programistycznych dałoby się łatwo i szybko rozwiązać gdyby można było przeciążać metody (np. różne warianty konstruktora).</li>
<li>Tablice mają z góry ustaloną liczbę elementów. Z drugiej strony mamy rozbudowane implementacje kolekcji typu <em>List</em>, <em>Set</em> i <em>Map</em> (w których słabo się jeszcze poruszam na dzień dzisiejszy).</li>
<li>Cała nowa grupa zagadnień (i angielskiego słownictwa) w ogóle nie występujących w PHP, czyli współbieżność (problem dostępu wielu wątków do tych samych danych, zakleszczenia, wzorzec producent-konsument itd.)</li>
<li>Ciekawe rozwiązanie &#8220;niuansików OSowych&#8221;, np. w windowsach ścieżki dostępu tworzy się znakiem \ , a w uniksach / . Wpisując <em>File.pathSeparatorChar</em> Java sama dobierze sobie odpowiedni znak.</li>
<li>Budowa interfejsu graficznego i jego oprogramowywanie (nieźle rozwiązane w NetBeans).</li>
<li>Wszystko jest obiektem i dziedziczy po <em>Object</em>!</li>
<li>Nie da się niechlujnie pisać kodu <img src='http://spiechu.all.pl/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> Towarzysz kompilator (to również nowość) od razu zgłosi, że mu się coś nie podoba.</li>
</ul>
<p>Z punktu widzenia czytelnika tego bloga zapewne wygląda to tak jakbym  zabierał się za wszystko tylko po łebkach. Może i trochę tak jest, że szybko się czymś nudzę, ale w tym przypadku chodzi o czystą ciekawość czy rzeczywiście &#8220;poważna Java&#8221; jest aż tak trudna do zrozumienia. Po miesiącu nauki stwierdzam, że nie jest to  takie trudne. Oczywiście mam tutaj na myśli same podstawy języka (bez tych tysięcy bibliotek). Samo czytanie dokumentacji to już wyzwanie <img src='http://spiechu.all.pl/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://spiechu.all.pl/2009/10/27/o-pehapowcu-ktory-chcial-zostac-javowcem/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Atak klonów w PHP</title>
		<link>http://spiechu.all.pl/2009/09/28/atak-klonow-w-php/</link>
		<comments>http://spiechu.all.pl/2009/09/28/atak-klonow-w-php/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 20:26:22 +0000</pubDate>
		<dc:creator>Spiechu</dc:creator>
		
		<category><![CDATA[Webmastering]]></category>

		<guid isPermaLink="false">http://spiechu.all.pl/?p=394</guid>
		<description><![CDATA[Dzisiaj wieczorkiem rozpracowywałem sobie klonowanie obiektów w PHP. Dokładnie zainteresowała mnie metoda __clone(). W manualu PHP za dużo nie napisali, więc naskrobałem sobie krótki kod do przeprowadzenia testów. Chodziło mi o to czy podczas wykonywania klonowania obiektu uruchamiany jest konstruktor oraz czy można jakoś numerować klony (a co za tym idzie - &#8220;na gorąco&#8221; przypisywać [...]]]></description>
			<content:encoded><![CDATA[<p>Dzisiaj wieczorkiem rozpracowywałem sobie klonowanie obiektów w PHP. Dokładnie zainteresowała mnie metoda <em>__clone()</em>. <a href="http://php.net.pl/manual/pl/language.oop5.cloning.php">W manualu PHP</a> za dużo nie napisali, więc naskrobałem sobie krótki kod do przeprowadzenia testów. Chodziło mi o to czy podczas wykonywania klonowania obiektu uruchamiany jest konstruktor oraz czy można jakoś numerować klony (a co za tym idzie - &#8220;na gorąco&#8221; przypisywać polom sklonowanego obiektu jakieś wartości). Poniżej podaję kod z komentarzem.</p>
<p><code>&lt;?php</code></p>
<p><code>class Klon {</code></p>
<p><code>// Ogolna liczba klonow<br />
private static $liczbaKlonow = 0;<br />
// Nr konkretnego klona<br />
private $klonNr;</code></p>
<p><code>public function __construct() {<br />
// Na etapie konstruktora przypisujemy polu klonNr wartość 0,<br />
// jako iż nie jest żadnym klonem<br />
$this-&gt;klonNr = 0;<br />
// Dodatkowo wywalamy na ekran komunikat upewniający nas, że uruchomiono konstruktor<br />
echo 'Uruchomiono konstruktor i stworzono obiekt Klon!&lt;br /&gt;';<br />
}</code></p>
<p><code>public function __clone() {<br />
// Zwiększamy licznik liczby wszystkich klonów<br />
self::$liczbaKlonow += 1;<br />
// Przypisujemy aktualną wartość licznika nowo utworzonemu klonowi<br />
$this-&gt;klonNr = self::$liczbaKlonow;<br />
}</code></p>
<p><code>// Proste sprawdzenie czy obiekt jest klonem, a jeżeli tak to którym<br />
public function getKlonNr() {<br />
if ($this-&gt;klonNr == 0) return 'nie jest klonem';<br />
return 'jest ' . $this-&gt;klonNr . ' klonem';<br />
}</code></p>
<p><code>// Zwrócenie liczby wszystkich klonów obiektu<br />
public function getLiczbaKlonow() {<br />
return self::$liczbaKlonow;<br />
}</code></p>
<p><code>}</code></p>
<p><code>$oryg = new Klon();<br />
// Klonujemy "oryginalny" obiekt<br />
$klon1 = clone $oryg;<br />
$klon2 = clone $oryg;<br />
// Klonujemy klon<br />
$klon3 = clone $klon2;</code></p>
<p><code>// Wypisujemy "kto jest kim"<br />
echo 'Zmienna $oryg ' . $oryg-&gt;getKlonNr() . '&lt;br /&gt;';<br />
echo 'Zmienna $klon1 ' . $klon1-&gt;getKlonNr() . '&lt;br /&gt;';<br />
echo 'Zmienna $klon2 ' . $klon2-&gt;getKlonNr() . '&lt;br /&gt;';<br />
echo 'Zmienna $klon3 ' . $klon3-&gt;getKlonNr() . '&lt;br /&gt;';</code></p>
<p><code>echo 'Wszystkich klonow: ' . $oryg-&gt;getLiczbaKlonow() . '&lt;br /&gt;';</code></p>
<p><code>?&gt;</code></p>
<p>Uruchomienie kodu wyświetli:<br />
<code>Uruchomiono konstruktor i stworzono obiekt Klon!<br />
Zmienna $oryg nie jest klonem<br />
Zmienna $klon1 jest 1 klonem<br />
Zmienna $klon2 jest 2 klonem<br />
Zmienna $klon3 jest 3 klonem<br />
Wszystkich klonow: 3</code></p>
<p>Wnioski:</p>
<ul>
<li>podczas klonowania nie jest uruchamiany konstruktor,</li>
<li>metoda <em>__clone()</em> wywoływana jest <strong>po</strong> sklonowaniu obiektu, a zmieniając coś poprzez  $this-&gt;cośTam operujemy już na klonie!</li>
<li>prywatne zmienne statyczne to fajna zabawa <img src='http://spiechu.all.pl/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spiechu.all.pl/2009/09/28/atak-klonow-w-php/feed/</wfw:commentRss>
		</item>
		<item>
		<title>O konsumpcji śledzia i szerzącej się głupocie</title>
		<link>http://spiechu.all.pl/2009/09/25/o-konsumpcji-sledzia-i-szerzacej-sie-glupocie/</link>
		<comments>http://spiechu.all.pl/2009/09/25/o-konsumpcji-sledzia-i-szerzacej-sie-glupocie/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 11:08:52 +0000</pubDate>
		<dc:creator>Spiechu</dc:creator>
		
		<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://spiechu.all.pl/?p=386</guid>
		<description><![CDATA[Na początku września nasz &#8220;ulubiony&#8221; serwis społecznościowy, czyli Nasza-Klasa.pl dodała nowy bajer: Śledzik. W skrócie jest to prostsza kopia takich serwisów microbloggingowych jak Twitter czy rodzimy Blip. Wg mnie może być bardzo przydatna, ale&#8230;
Od momentu wprowadzenia nowej funkcjonalności  dzieje się coś dziwnego. Wszyscy użytkownicy jednoczą się w celu &#8220;zatopienia śledzia&#8221;. To jednoczenie polega na [...]]]></description>
			<content:encoded><![CDATA[<p>Na początku września nasz &#8220;ulubiony&#8221; serwis społecznościowy, czyli Nasza-Klasa.pl dodała nowy bajer: Śledzik. W skrócie jest to prostsza kopia takich serwisów microbloggingowych jak Twitter czy rodzimy Blip. Wg mnie może być bardzo przydatna, ale&#8230;</p>
<p>Od momentu wprowadzenia nowej funkcjonalności  dzieje się coś dziwnego. Wszyscy użytkownicy jednoczą się w celu &#8220;zatopienia śledzia&#8221;. To jednoczenie polega na całkowicie bezmyślnym wklejaniu różnego rodzaju kodów wyłączających. Hiciorem wg mnie jest <strong>5P13RD4L4J-5L3D21U</strong> wklejane przez wykształconych znajomych. Jest to tak zabawne (i żenujące), że stało się <a href="http://www.joemonster.org/art/12467/Duchowna_ofiara_kodu_na_Sledzika_">pożywką dla JoeMonstera</a>. Okazuje się, że nie tylko moich znajomych opanowała jakaś dziwna fala &#8220;antyśledzikowa&#8221;, ale jest to działanie ogólnopolskie. Powstał nawet &#8220;<a href="http://anty-sledzik.blogspot.com/">blog antyśledziowy</a>&#8220;.</p>
<p>Skoro nie podoba się Śledzik, to po prostu nie używajcie. Spamując głupimi linkami uniemożliwiacie korzystanie z nowej funkcjonalności zainteresowanym. Praktycznie od początku istnieją co najmniej dwa sposoby wyłączenia &#8220;śledzia&#8221;:</p>
<ul>
<li>&#8220;legalna&#8221; - poprzez kliknięcie przycisku &#8220;nie śledź&#8221; przy każdym znajomym</li>
<li>&#8220;nielegalna&#8221; - poprzez skorzystanie z <a href="http://pokazywarka.pl/sledzikssie/">instrukcji zawartych np. tutaj</a> lub jeżeli macie Firefoksa i Adblock Plusa do reguł blokowania dodajecie <em>nasza-klasa.pl#DIV(id=sledzik_box)</em></li>
</ul>
<p>W ten co teraz sposób kompromitujecie się coraz bardziej. Wklejajcie dalej różne głupoty, a ich twórcy będą się nieźle bawić.</p>
<p><a rel="lightbox" href="http://spiechu.all.pl/wp-content/2009/10/demot.jpg"><img class="alignnone" src="http://spiechu.all.pl/wp-content/2009/10/demot_480.jpg" alt="" width="480" height="409" /></a></p>
<p>Źródło: <a href="http://demotywatory.pl/178761/Uwierzyli">demotywatory.pl</a></p>
<p><strong>Aktualizacja z 30.09.2009</strong>, pojawił się nowy kandydat na hicior śledzikowy:</p>
<blockquote><p>J3273M-D38113M &lt;&#8211; Wklej cala ta wiadomosc, razem z tym kodem na sledzika, a on zniknie NATYCHMIAST! Potwierdzone przez administratora portalu Nasza-Klasa.pl!</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://spiechu.all.pl/2009/09/25/o-konsumpcji-sledzia-i-szerzacej-sie-glupocie/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Nowa Opera 10 i blokowanie reklam</title>
		<link>http://spiechu.all.pl/2009/09/01/nowa-opera-10-i-blokowanie-reklam/</link>
		<comments>http://spiechu.all.pl/2009/09/01/nowa-opera-10-i-blokowanie-reklam/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 18:52:00 +0000</pubDate>
		<dc:creator>Spiechu</dc:creator>
		
		<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://spiechu.all.pl/?p=381</guid>
		<description><![CDATA[Dzisiaj ukazała się najnowsza stabilna wersja Opery, opatrzona numerkiem 10. Przyznam się, że ostatnio Operę używałem w czasie, gdy jeszcze miała u góry nieznośny banner reklamowy. Jak tylko pojawił się Firefox, ma się rozumieć bez żadnych reklam, po jakimś czasie w Operze zlikwidowano reklamy. Ja tymczasem już na stałe zadomowiłem &#8220;ognistego liska&#8221; u siebie na [...]]]></description>
			<content:encoded><![CDATA[<p>Dzisiaj ukazała się najnowsza stabilna wersja Opery, opatrzona numerkiem 10. Przyznam się, że ostatnio Operę używałem w czasie, gdy jeszcze miała u góry nieznośny banner reklamowy. Jak tylko pojawił się Firefox, ma się rozumieć bez żadnych reklam, po jakimś czasie w Operze zlikwidowano reklamy. Ja tymczasem już na stałe zadomowiłem &#8220;ognistego liska&#8221; u siebie na kompie i tak już zostało do dzisiaj. No ale nie o tym miała być dzisiaj mowa.</p>
<p>Na stronie <a href="http://www.opera.com">www.opera.com</a> mamy ładną paczkę deb przygotowaną specjalnie pod Ubuntu. Niestety wszystkie przeglądane strony wyglądają hmm&#8230; zbyt &#8220;ruchomo i kolorowo&#8221; (a to za sprawą wszechobecnych reklam, od których odwykłem). Spróbowałem tego ustrojstwa się pozbyć. Poniżej recepta:</p>
<p>Wyłączamy Operę.</p>
<p>W naszym katalogu domowym znajdujemy ukryty katalog <em>.opera</em> i tworzymy tam pusty plik o nazwie <em>urlfilter.ini</em></p>
<p>Do pustego pliku wklejamy ten tekst:</p>
<p><code>﻿Opera Preferences version 2.1<br />
; Do not edit this file while Opera is running<br />
; This file is stored in UTF-8 encoding</code></p>
<p><code>[prefs]<br />
prioritize excludelist=1</code></p>
<p><code>[include]<br />
*</code></p>
<p><code>[exclude]</code></p>
<p>Następnie ze strony <a href="http://niecko.pl/adblock/adblock.txt">http://niecko.pl/adblock/adblock.txt</a> wklejamy całą zawartość począwszy od <em>*ad2.*</em> aż do <em>whitelist</em>. Dodatkowo możemy wkleić adresy <a href="http://my.opera.com/Tamil/blog/ad-block">stąd</a>. Ostrzegają jednak, że im więcej wpisów tym wolniej uruchomi się Opera. Zapisujemy plik.</p>
<p>Odpalamy Operę i w razie napotkania reklam używamy prawego przycisku na wolnym polu i opcji <em>zablokuj zawartość&#8230;</em> w celu uzupełnienia filtrów (dodadzą się na koniec urlfilter.ini).</p>
]]></content:encoded>
			<wfw:commentRss>http://spiechu.all.pl/2009/09/01/nowa-opera-10-i-blokowanie-reklam/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Kadu i nowy system powiadomień w Ubuntu 9.04 - Jaunty Jackalope</title>
		<link>http://spiechu.all.pl/2009/08/04/kadu-i-nowy-system-powiadomien-w-ubuntu-904-jaunty-jackalope/</link>
		<comments>http://spiechu.all.pl/2009/08/04/kadu-i-nowy-system-powiadomien-w-ubuntu-904-jaunty-jackalope/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 21:15:42 +0000</pubDate>
		<dc:creator>Spiechu</dc:creator>
		
		<category><![CDATA[GG/Jabber]]></category>

		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://spiechu.all.pl/?p=370</guid>
		<description><![CDATA[Mark Shuttleworth z Canonical jakiś czas temu pisał na swoim blogu na temat zamiaru wprowadzenia w Ubuntu 9.04 ujednoliconych &#8220;dymków&#8221; aplikacji. Nowy system powiadomień nazywa się Notify-OSD (więcej można poczytać np. tu). Zasadniczą rewolucją jest to, że na powiadomieniach nie może być wykonywana żadna akcja typu rozpoczęcie rozmowy, uaktywnienie programu czy coś takiego. Można jedynie [...]]]></description>
			<content:encoded><![CDATA[<p>Mark Shuttleworth z Canonical jakiś czas temu <a href="http://www.markshuttleworth.com/archives/253">pisał na swoim blogu</a> na temat zamiaru wprowadzenia w Ubuntu 9.04 ujednoliconych &#8220;dymków&#8221; aplikacji. Nowy system powiadomień nazywa się Notify-OSD (więcej <a href="https://wiki.ubuntu.com/NotifyOSD">można poczytać np. tu</a>). Zasadniczą rewolucją jest to, że na powiadomieniach nie może być wykonywana żadna akcja typu rozpoczęcie rozmowy, uaktywnienie programu czy coś takiego. Można jedynie sobie popatrzeć. Toczyła (i zresztą toczy się nadal) dyskusja czy to dobry krok. Na pewno warte pochwalenia jest to, że następuje próba unifikacji powiadomień. Obecnie mamy tak, że każda aplikacja powiadamia po swojemu, w dowolnym miejscu ekranu i z dowolną szatą graficzną.</p>
<p>Jedną z takich &#8220;opornych aplikacji&#8221; jest używane chyba przez każdego Kadu. Ktoś na forum nawet wrzucił im temat, ale deweloperzy nie są zbytnio zainteresowani. Tłumaczyli to tym, że zapewne niebawem każda dystrybucja linuksowa będzie miała swój system powiadomień i trzeba będzie dostosowywać Kadu do wszystkiego. Postanowiłem trochę &#8220;powęszyć w temacie&#8221;, pokombinować i&#8230; udało się <img src='http://spiechu.all.pl/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Chcecie mieć tak u siebie?<br />
<img title="Kadu używające Notify-OSD" src="http://spiechu.all.pl/wp-content/2009/08/powiadomienie.jpg" alt="" width="423" height="306" /><br />
Jeżeli tak, to zarezerwujcie sobie 10 min czasu i czytajcie poniżej receptę.</p>
<ol>
<li>W terminalu wpisujemy <code>sudo apt-get install libnotify-bin</code></li>
<li>Uaktywniamy dwukrotnym kliknięciem moduł <strong>exec_notify</strong> w <em>Zarządcy modułów</em> w Kadu.</li>
<li>W <em>Konfiguracja Kadu -&gt; Powiadomienia</em> będziemy zaznaczać  <em>Wykonaj polecenie</em> i odhaczać <em>Dymki</em>.</li>
<li>W zakładce zdarzenie:
<ul>
<li><strong>Nowa rozmowa</strong> wpisujemy <code>notify-send -u low -c im -i /usr/share/kadu/themes/icons/default/kadu/big_message.png "%n" "rozpoczął nową rozmowę"</code></li>
<li><strong>Nowa wiadomość</strong> <code>notify-send -u low -c im -i /usr/share/kadu/themes/icons/default/kadu/big_message.png "%n" "przesyła nową wiadomość"</code></li>
<li><strong>Błąd połączenia</strong> <code>notify-send -u low -c im -i /usr/share/kadu/themes/icons/default/kadu/dialog-warning.png Kadu "błąd połączenia"</code></li>
<li><strong>Dostępny</strong> <code>notify-send -u low -c im -i /usr/share/kadu/themes/icons/default/kadu/big_online.png "%n" "zmienił status na dostępny"</code></li>
<li><strong>Zajęty</strong> <code>notify-send -u low -c im -i /usr/share/kadu/themes/icons/default/kadu/big_busy.png "%n" "zmienił status na zajęty"</code></li>
<li><strong>Ukryty</strong> <code>notify-send -u low -c im -i /usr/share/kadu/themes/icons/default/kadu/big_invisible.png "%n" "zmienił status na ukryty"</code></li>
<li><strong>Niedostępny</strong> <code>notify-send -u low -c im -i /usr/share/kadu/themes/icons/default/kadu/big_offline.png "%n" "zmienił status na niedostępny"</code></li>
<li><strong>Przychodzący transfer</strong> <code>notify-send -u low -c im -i /usr/share/kadu/themes/icons/default/kadu/kadu-transfer-receive.png "%n" "chce przesłać plik"</code></li>
<li><strong>Transfer zakończony</strong> <code>notify-send -u low -c im -i /usr/share/kadu/themes/icons/default/kadu/kadu-transfer-receive.png "%n" "zakończył przesyłać plik"</code></li>
</ul>
</li>
<li>Nie zapominamy zatwierdzić wszystkiego.</li>
</ol>
<p>Garść uwag:</p>
<ul>
<li>Ikony wykorzystujemy oryginalne z Kadu, u wszystkich powinny być w tym samym miejscu.</li>
<li>Od razu ostrzegam, że dwóch ostatnich poleceń nie testowałem.</li>
<li>Polecenia wpisywane są trochę na wyrost z uwzglednieniem priorytetu (low) i kategorii powiadomienia (im) - <a href="http://www.galago-project.org/specs/notification/0.9/x211.html">więcej tutaj</a>. Będzie również działało bez tych parametrów.</li>
<li>Jeżeli ktoś ma obiekcje, że powiadomienie wyświetla się za wolno lub za szybko - może eksperymentować z parametrem -t liczba_milisekund (zajrzeć do <code>man notify-send</code>).</li>
</ul>
<p>To tyle na dzisiaj. Być może twórcy Kadu zrobią nam kiedyś porządny osobny moduł. Na razie pozostaje nam tylko ten sposób.</p>
]]></content:encoded>
			<wfw:commentRss>http://spiechu.all.pl/2009/08/04/kadu-i-nowy-system-powiadomien-w-ubuntu-904-jaunty-jackalope/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Nowy dysk :-]</title>
		<link>http://spiechu.all.pl/2009/08/01/nowy-dysk/</link>
		<comments>http://spiechu.all.pl/2009/08/01/nowy-dysk/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 08:53:14 +0000</pubDate>
		<dc:creator>Spiechu</dc:creator>
		
		<category><![CDATA[Inne]]></category>

		<guid isPermaLink="false">http://spiechu.all.pl/?p=364</guid>
		<description><![CDATA[Zmęczony ciągłym poszukiwaniem miejsca na dysku twardym zdecydowałem się kupić sobie dysk zewnętrzny. Wybór padł na Western Digital My Book Essential Edition o pojemności 1TB.  Zadecydowała marka firmy + przystępna cena 399 zł. Od razu zaznaczam, że nie jestem związany z żadnym producentem sprzętu ani nikt mi nie płacił za recenzję. Sprzęt kupiłem za własne [...]]]></description>
			<content:encoded><![CDATA[<p>Zmęczony ciągłym poszukiwaniem miejsca na dysku twardym zdecydowałem się kupić sobie dysk zewnętrzny. Wybór padł na Western Digital My Book Essential Edition o pojemności 1TB.  Zadecydowała marka firmy + przystępna cena 399 zł. Od razu zaznaczam, że nie jestem związany z żadnym producentem sprzętu ani nikt mi nie płacił za recenzję. Sprzęt kupiłem za własne pieniądze i dlatego mogę swobodnie pisać co myślę.</p>
<p>W pudełku mamy zasilacz sieciowy 100~240V z wymiennymi wtyczkami, kabel USB (ok. 1 m długości) + dysk twardy 3,5 cala zamknięty w ładnej obudowie (fotki oglądać np. <a href="http://www.wdc.com/en/products/products.asp?driveid=353">u producenta</a>).</p>
<p>Po uruchomieniu w Windowsie naszym oczom ukazuje się menu wyboru instalacji oprogramowania. Wśród dostępnych opcji mamy wykonanie kopii zapasowej softu na dysku. Zrobiłem to&#8230; a następnie sformatowałem cały dysk, bo domyślny system plików FAT32 wg mnie należało zmienić na NTFS. Pozostałe z dostępnych do instalacji aplikacji to demówki do wykonywania kopii zapasowych systemu. Nie instalowałem tego (bo i po co skoro na Linuksie nie będą działały? <img src='http://spiechu.all.pl/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> )</p>
<p>W komentarzach dotyczących dysku znalazłem info, że pojemność tak naprawdę wynosi 935GB. Jest to prawda. Otwory wentylacyjne znajdują się u góry, z dołu i z tyłu. Na reklamach dysk stoi pionowo, ja wolałem jednak położyć go płasko. Dysk pracuje bardzo cicho. W porównaniu z moim wysłużonym dyskiem wewnętrznym to absolutna cisza <img src='http://spiechu.all.pl/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
<p>Ubuntu nie ma żadnych problemów z odczytem i zapisem. U mnie prędkość zapisu wynosi ok 2,5-3.2 MB/s (stary, wysłużony Celeron 2.8 GHz + płyta główna Asus P4PE-X + dysk Szajsung ATA cholera wie jakiej prędkości <img src='http://spiechu.all.pl/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> ).</p>
<p>Stosując zasadę ograniczonego zaufania przez ok. miesiąc będę trzymał tam mało ważne rzeczy.</p>
<p>Na produkt mamy 2 lata gwarancji.</p>
<p>Póki co, mogę śmiało powiedzieć, że Tajlandczycy zrobili kawał dobrego sprzętu <img src='http://spiechu.all.pl/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://spiechu.all.pl/2009/08/01/nowy-dysk/feed/</wfw:commentRss>
		</item>
		<item>
		<title>3 wzorce projektowe w ok. 100 liniach kodu PHP</title>
		<link>http://spiechu.all.pl/2009/07/05/3-wzorce-projektowe-w-ok-100-liniach-kodu-php/</link>
		<comments>http://spiechu.all.pl/2009/07/05/3-wzorce-projektowe-w-ok-100-liniach-kodu-php/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 12:36:50 +0000</pubDate>
		<dc:creator>Spiechu</dc:creator>
		
		<category><![CDATA[Webmastering]]></category>

		<guid isPermaLink="false">http://spiechu.all.pl/?p=352</guid>
		<description><![CDATA[Ostatnio sporo czytam na temat programowania obiektowego. W niemal każdej książce, która wpadła mi w łapki, przykłady wzorców projektowych podane są w języku Java. Wyjątkiem jest Programowanie obiektowe w PHP 5 Hasina Haydera.
Do napisania postu skłoniły mnie pojawiające się gdzieniegdzie narzekania programistów na PHP, że jakoby ten język to zabawka, że nie da się w [...]]]></description>
			<content:encoded><![CDATA[<p>Ostatnio sporo czytam na temat programowania obiektowego. W niemal każdej książce, która wpadła mi w łapki, przykłady wzorców projektowych podane są w języku Java. Wyjątkiem jest <em>Programowanie obiektowe w PHP 5</em> Hasina Haydera.</p>
<p>Do napisania postu skłoniły mnie pojawiające się gdzieniegdzie narzekania programistów na PHP, że jakoby ten język to zabawka, że nie da się w nim tworzyć w pełni obiektowego kodu itd. Dzisiaj zademonstruję działanie 3 wzorców projektowych na raz (Strategia, Obserwator, Łańcuch zobowiązań).</p>
<p>Chcemy zrobić coś takiego:</p>
<p><img class="alignnone" title="Wzorzec obserwator + łańcuch zobowiązań" src="http://spiechu.all.pl/wp-content/2009/07/observers.png" alt="" width="480" height="223" /></p>
<p>Mamy więc jeden obiekt, który zawiera w sobie dane na temat obiektów, które chce powiadamiać, że coś się u niego zmieniło. Tak działa typowy wzorzec obserwator. Ja to jednak zmodyfikowałem tak, że pierwszy obserwator w łańcuchu otrzymuje informację o zmianie stanu obiektu obserwowanego. Jeżeli umie sobie poradzić z przekazanym komunikatem - reaguje. Jeżeli ta informacja go zbytnio nie interesuje - przekazuje następnemu obiektowi w łańcuchu. Tak działa wzorzec łańcuch zobowiązań. Po co mi wzorzec strategia? Z czystego lenistwa <img src='http://spiechu.all.pl/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> Po co pisać kilka rodzajów obserwatorów do testu, które reagują w inny sposób na komunikaty, skoro można implementować interfejs reagujący na różne komunikaty. Jeżeli będę chciał testować inny rodzaj komunikatów to napiszę sobię nową implementację interfejsu reagującego i tyle <img src='http://spiechu.all.pl/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Bierzemy się więc do roboty. Najpierw tworzymy sobie 2 interfejsy. 1 dla wzorca obserwator, drugi dla łańcucha zobowiązań.</p>
<pre>interface Obserwujacy {
    public function powiadomienie($komunikat);
}

interface Lancuch {
    public function zareaguj($komunikat);
}</pre>
<p>Następnie tworzymy sobie jakiś obiekt obserwowany:</p>
<pre>class Obserwowany {

    private $obserwatorzy = array();
    private $komunikat;

    public function addObserwujacy(Obserwujacy $o) {
        $this-&gt;obserwatorzy[] = $o;
    }

    public function setKomunikat($k) {
        $this-&gt;komunikat = $k;
        $this-&gt;powiadamiaj();
    }

    private function powiadamiaj() {
        foreach ($this-&gt;obserwatorzy as $obserwator) {
            $obserwator-&gt;powiadomienie($this-&gt;komunikat);
        }
    }
}</pre>
<p>Obiekt ma zaledwie 3 metody. Pierwsza dodaje kolejnego obserwatora do listy, druga zmienia stan obiektu (wysyła komunikat wszystkim), trzecia dla każdego obserwatora wywołuje metodę powiadamiającą o zmianie stanu.</p>
<p>Następnie tworzymy klasę Obserwator, która reaguje na wszystkie komunikaty.</p>
<pre>class Obserwator implements Obserwujacy , Lancuch {

    protected $reagujNa; // implements ReagujNa
    protected $nazwa;
    protected $lancuch;

    public function __construct($nazwa, Lancuch $l) {
        $this-&gt;reagujNa = new ReagujNaWszystko();
        $this-&gt;nazwa = $nazwa;
        $this-&gt;lancuch = $l;
    }

    public function powiadomienie($komunikat) {
        $this-&gt;zareaguj($komunikat);
    }

    public function zareaguj($komunikat) {
        if ($this-&gt;reagujNa-&gt;reaguj($komunikat)) {
            echo '&lt;strong&gt;' . $this-&gt;nazwa . '&lt;/strong&gt; otrzymal komunikat ' . $komunikat . ' i zareagowal.&lt;br /&gt;';
        }
        else {
            $this-&gt;lancuch-&gt;zareaguj($komunikat);
        }
    }
}</pre>
<p>Zmienna $reagujNa implementuje interfejs ReagujNa, który stworzymy poniżej. Niestety w PHP nie da się wymusić określonego typu zmiennej - w tym lepsza jest Java. Jeżeli ktoś koniecznie chce, to może sobie sprawdzać czy dana zmienna rzeczywiście implementuje interfejs przed wywołaniem.</p>
<pre>interface ReagujNa {
    public function reaguj($komunikat);
}

class ReagujNaWszystko implements ReagujNa {
    public function reaguj($komunikat) {
            return true;
    }
}

class ReagujNaLiterki implements ReagujNa {
    public function reaguj($komunikat) {
        if (is_string($komunikat)) {
            return true;
        }
        else {
            return false;
        }
    }
}

class ReagujNaNumerki implements ReagujNa {
    public function reaguj($komunikat) {
        if (is_numeric($komunikat)) {
            return true;
        }
        else {
            return false;
        }
    }
}</pre>
<p>Mamy tutaj trzy klasy posiadające po jednej metodzie, które zwracają prawdę lub fałsz w zależności od podanego parametru. Dalej wypadałoby wykorzystać te klasy zmieniając zachowanie obiektu Obserwator.</p>
<pre>class ObserwatorLiterek extends Obserwator {
    public function __construct($nazwa, Lancuch $l) {
        parent::__construct($nazwa,$l);
        $this-&gt;reagujNa = new ReagujNaLiterki();
    }
}

class ObserwatorNumerkow extends Obserwator {
    public function __construct($nazwa, Lancuch $l) {
        parent::__construct($nazwa,$l);
        $this-&gt;reagujNa = new ReagujNaNumerki();
    }
}</pre>
<p>Na koniec potrzebne jest nam jeszcze ostatnie ogniwo łańcucha, nazwane przeze mnie Limiter. Cokolwiek limiter dostaje - wyrzuca na wyjściu i tyle.</p>
<pre>class Limiter implements Lancuch {
    private $nazwa;

    public function __construct ($nazwa) {
        $this-&gt;nazwa = $nazwa;
    }
    public function zareaguj($komunikat) {
        echo '&lt;strong&gt;Limiter ' . $this-&gt;nazwa . '&lt;/strong&gt; otrzymal komunikat ' . $komunikat . '&lt;br /&gt;';
    }
}</pre>
<p>Pora to wszystko przetestować. Tworzymy obiekt obserwowany,</p>
<pre>$obserwowany = new Obserwowany();</pre>
<p>a następnie 4 ciągi obserwatorów. Tworzymy go od końca. Coś jak <a href="http://pl.wikipedia.org/wiki/Matrioszka">Matrioszki</a>.</p>
<pre>// ciag 1
$limiter1 = new Limiter('ciagu 1');
$obserwatorWszystkiego = new Obserwator('Obserwator Wszystkiego ciagu 1',$limiter1);
$obserwowany-&gt;addObserwujacy($obserwatorWszystkiego);
// ciag 2
$limiter2 = new Limiter('ciagu 2');
$obserwatorLiterek = new ObserwatorLiterek('Obserwator Literek ciagu 2',$limiter2);
$obserwowany-&gt;addObserwujacy($obserwatorLiterek);
// ciag 3
$limiter3 = new Limiter('ciagu 3');
$obserwatorNumerkow = new ObserwatorNumerkow('Obserwator Numerkow ciagu 3',$limiter3);
$obserwowany-&gt;addObserwujacy($obserwatorNumerkow);
// ciag 4
$limiter4 = new Limiter('ciagu 4');
$obsAll = new Obserwator('Obserwator Wszystkiego ciagu 4',$limiter4);
$obsNum = new ObserwatorNumerkow('Obserwator Numerkow ciagu 4',$obsAll);
$obsLit = new ObserwatorLiterek('Obserwator Literek ciagu 4',$obsNum);
$obserwowany-&gt;addObserwujacy($obsLit);</pre>
<p>Ostatnim krokiem jest sprawdzenie jak to teraz działa.</p>
<pre>$obserwowany-&gt;setKomunikat('abc');
echo '----------------------------------';
$obserwowany-&gt;setKomunikat(123);</pre>
<p>Wynik:<br />
<strong>Obserwator Wszystkiego ciagu 1</strong> otrzymal komunikat abc i zareagowal.<br />
<strong>Obserwator Literek ciagu 2</strong> otrzymal komunikat abc i zareagowal.<br />
<strong>Limiter ciagu 3</strong> otrzymal komunikat abc<br />
<strong>Obserwator Literek ciagu 4</strong> otrzymal komunikat abc i zareagowal.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
<strong>Obserwator Wszystkiego ciagu 1</strong> otrzymal komunikat 123 i zareagowal.<br />
<strong>Limiter ciagu 2</strong> otrzymal komunikat 123<br />
<strong>Obserwator Numerkow ciagu 3</strong> otrzymal komunikat 123 i zareagowal.<br />
<strong>Obserwator Numerkow ciagu 4</strong> otrzymal komunikat 123 i zareagowal.</p>
<p>A teraz wyjaśnienie jak to wszystko działa:</p>
<p>Ciąg 1 zawiera w sobie tylko obserwatora wszystkiego i limiter. Obserwator każdy komunikat traktuje jako informację dla siebie i nie przekazuje dalej do limitera (przez co komunikat nigdy do niego nie dojdzie).</p>
<p>Ciąg 2 ma tylko obserwatora literek i limiter. Na pierwszy, słowny komunikat zareagował. Na komunikat zawierający liczbę nie zareagował i przekazał dalej do limitera.</p>
<p>Ciąg 3 ma w zamian obserwatora numerków i limiter. Zachował się dokładnie odwrotnie od poprzedniego.</p>
<p>Ciąg 4 ma kolejno obserwatorów literek, numerków, wszystkiego i limiter. Teraz dokładnie widać jak to działa. Jeżeli dany obserwator nie znalazł informacji przydatnej dla siebie - po prostu przekazał następnemu obserwatorowi w ciągu. Warto zauważyć, że obserwator wszystkiego i limiter w tym przypadku nigdy nie zareaguje, gdyż komunikat zostanie rozwiązany zanim do niego dojdzie.</p>
<p>Dla chętnych <a href="http://www.speedyshare.com/186392327.html">zamieszczam plik wzorce.php</a>. Zachęcam do eksperymentów i ewentualnej przebudowy obserwatorów tak, aby reagowały na konkretne słowa lub liczby.</p>
]]></content:encoded>
			<wfw:commentRss>http://spiechu.all.pl/2009/07/05/3-wzorce-projektowe-w-ok-100-liniach-kodu-php/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Jeszcze żyję, spokojnie :-)</title>
		<link>http://spiechu.all.pl/2009/05/27/jeszcze-zyje-spokojnie/</link>
		<comments>http://spiechu.all.pl/2009/05/27/jeszcze-zyje-spokojnie/#comments</comments>
		<pubDate>Wed, 27 May 2009 17:07:39 +0000</pubDate>
		<dc:creator>Spiechu</dc:creator>
		
		<category><![CDATA[Inne]]></category>

		<guid isPermaLink="false">http://spiechu.all.pl/?p=349</guid>
		<description><![CDATA[Ostatnio nie miałem w ogóle czasu pisać. Blogasek trochę zdążył się zakurzyć. Od ostatniego miesiąca sporo się wydarzyło. Zmieniłem sobie stan cywilny. Aktualnie jestem w trakcie przeprowadzki. Nie ma nawet kiedy porządnie siąść za klawiaturę kompa, a co dopiero coś sensownego napisać&#8230;
Zamiast pisać głupoty przejdę do konkretów. Nigdy nie przypuszczałem, że organizacja ślubu i wesela [...]]]></description>
			<content:encoded><![CDATA[<p>Ostatnio nie miałem w ogóle czasu pisać. Blogasek trochę zdążył się zakurzyć. Od ostatniego miesiąca sporo się wydarzyło. Zmieniłem sobie stan cywilny. Aktualnie jestem w trakcie przeprowadzki. Nie ma nawet kiedy porządnie siąść za klawiaturę kompa, a co dopiero coś sensownego napisać&#8230;</p>
<p>Zamiast pisać głupoty przejdę do konkretów. Nigdy nie przypuszczałem, że organizacja ślubu i wesela aż tak wysysa życie z człowieka. Na każdym kroku telefony, umawianie się, spisywanie umów, zadatków, terminów i innych takich bzdur. Do tego jeszcze dochodzą &#8220;random events&#8221;, czyli np. na 2 dni przed ślubem dzwoni do ciebie kierowca limuzyny i mówi, że maska limuzyny na skutek spotkania z drzewem skróciła się o 50 cm.</p>
<p>Następna kwestia to ceny, które ostatnio poszybowały w górę. Dobrze, że najważniejsze rzeczy związane z weselem były załatwiane na początku 2008 roku. Przed kryzysem, przed grypą i czym tam jeszcze mamy w 2009 roku. Ceny usług obowiązywały oczywiście stare.</p>
<p>Obiecałem laurkę szefowi restauracji, w której odbyła się impreza. Przyjęcie weselne odbyło się w <a href="http://www.club99.pl/index.html">Restauracji &#8220;Club 99&#8243;</a> w sali tzw. afrykańskiej na terenie Międzynarodowych Targów Katowickich. Jedzenie smaczne, urozmaicone (części nawet nie umiem nazwać <img src='http://spiechu.all.pl/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ). Szefostwo zna się na organizacji tego typu imprez. Podają rozpiskę przykładowego menu i rozkład tego menu w czasie. Wszystko jest tak zaplanowane, że mamy jeszcze miejsce na główne posiłki. Mogą zorganizować ciasto i tort. Jeżeli mamy swoje - proszę bardzo. Żadnych opłat ukrytych typu &#8220;korkowe, prądowe, wodowe, kablowe, godzinowe&#8221; i inne takie. Płacimy od łebka ustaloną kwotę. Zabawa trwa do ostatniego gościa bez limitu czasu. Są tak pewni jakości swoich usług, że po imprezie odbytej w sobotę płacimy dopiero w poniedziałek. Fajnie, co? (z czymś takim się jeszcze nie spotkałem). Szefostwo cały czas jest na miejscu jakby co. Żeby nie było samego lukru napiszę jeszcze, że obsługa od godz. 2 w nocy nieco przystopowała. Część pustych naczyń leżało sobie na stole. Z drugiej strony, to nie roboty obsługują. Ludzie mają prawo być nieco zmęczeni, nieprawdaż?</p>
<p>Z zadań na najbliższy czas wyznaczyłem sobie zainstalować najnowsze Ubuntu, zobaczyć w kinie Terminatora <img src='http://spiechu.all.pl/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> oraz jak zawsze pojawić się na <a href="http://spodek20.pl/news/53/spodek-20-8-edycja-9-czerwca">kolejnej edycji Spodka 2.0</a> 9 czerwca.</p>
]]></content:encoded>
			<wfw:commentRss>http://spiechu.all.pl/2009/05/27/jeszcze-zyje-spokojnie/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Reklamowe gówno pod płaszczykiem artykułu</title>
		<link>http://spiechu.all.pl/2009/04/23/reklamowe-gowno-pod-plaszczykiem-artykulu/</link>
		<comments>http://spiechu.all.pl/2009/04/23/reklamowe-gowno-pod-plaszczykiem-artykulu/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 21:49:14 +0000</pubDate>
		<dc:creator>Spiechu</dc:creator>
		
		<category><![CDATA[Dyrdymały]]></category>

		<guid isPermaLink="false">http://spiechu.all.pl/?p=341</guid>
		<description><![CDATA[Jest mocny tytuł, będzie mocna treść. Nie wiem dlaczego artykułu o Starbucks na Dziennik.pl nie oznaczono jako artykuł sponsorowany. Może zapłacono odpowiednio dużo pani Renacie i Oldze (oraz bliżej niezidentyfikowanym &#8220;ksk&#8221; i &#8220;kas&#8221; - zapewne od kasowania kasy).
Artykuł mamy pisany dokładnie w stylu &#8220;nocnych kolejek&#8221; przed salonami ze sprzedażą iPhone: &#8220;kup pan kawę/iPhone, będziesz należał [...]]]></description>
			<content:encoded><![CDATA[<p>Jest mocny tytuł, będzie mocna treść. Nie wiem dlaczego <a href="http://www.dziennik.pl/wydarzenia/spoleczenstwo/article365059/Z_kubkiem_od_Starbucksa_do_elity.html">artykułu o Starbucks</a> na Dziennik.pl nie oznaczono jako artykuł sponsorowany. Może zapłacono odpowiednio dużo pani Renacie i Oldze (oraz bliżej niezidentyfikowanym &#8220;ksk&#8221; i &#8220;kas&#8221; - zapewne od kasowania kasy).</p>
<p>Artykuł mamy pisany dokładnie w stylu &#8220;nocnych kolejek&#8221; przed salonami ze sprzedażą iPhone: &#8220;kup pan kawę/iPhone, będziesz należał do amerykańskiej elyty&#8221; (nażryj się w jeszcze w McDonaldzie i zostań bezmózgim otyłym konsumentem). Fakt, że coś jest reklamowane w amerykańskich serialach nie oznacza jeszcze, że jest to symbol luksusu.</p>
<p><span class="bbtext">15-letnia gimnazjalistka Karolina chce należeć do śmietanki towarzyskiej. Mam tylko nadzieję, że zamiast pisać testu gimnazjalnego wczoraj i dzisiaj nie przesiedziała na kawie. Poza tym, kto cię dziecko nauczył pić kawę? Jej kolega wstaje wcześniej by pochodzić po szkole z tekturowym kubkiem. Pozostawię bez komentarza.<br />
</span></p>
<p><span class="bbtext">20-letni student nie musi wyjeżdżać za granicę by napić się kawy. Mam nadzieję, że po chleb nie jeździ za daleko.</span></p>
<p><span class="bbtext">Przypadków w języku polskim jest tylko 7. Na potrzeby &#8220;lansu&#8221; to stanowczo za mało. Poza tym prawdziwi &#8220;lansjerzy&#8221; powinni posługiwać się językiem elyty - angielskim. Widzieliście jakiegoś Amerykanina gadającego po polsku?</span></p>
<p><span class="bbtext">Może postawią przy wejściu jakiegoś selekcjonującego &#8220;miśka&#8221; - będzie chociaż namiastka tego, czego nie mogą mieć wszyscy. Bo co to za elita, którą może zostać każdy?<br />
</span></p>
<p><span class="bbtext">Internauci moim zdaniem stanęli na wysokości zadania. Nie zostawili na artykule suchej nitki. To dobrze, że są jeszcze ludzie mający zdolność samodzielnego myślenia. Polecam również dyskusję na <a href="http://www.wykop.pl/link/172780/chcesz-sie-polansowac-to-koniecznie-odwiedz-starbucksa">Wykop.pl</a>.</span></p>
<p><span class="bbtext">Na nieszczęście artykuł osiągnął zamierzony cel - wywołał hałas.<br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://spiechu.all.pl/2009/04/23/reklamowe-gowno-pod-plaszczykiem-artykulu/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Powstaje wolny Last.fm!</title>
		<link>http://spiechu.all.pl/2009/04/23/powstaje-wolny-lastfm/</link>
		<comments>http://spiechu.all.pl/2009/04/23/powstaje-wolny-lastfm/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 20:45:55 +0000</pubDate>
		<dc:creator>Spiechu</dc:creator>
		
		<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://spiechu.all.pl/?p=334</guid>
		<description><![CDATA[Jak podaje Linux News, powstaje open source&#8217;owa wersja Last.fm nazwana Libre.fm. To dobra wiadomość dla miłośników wolnego oprogramowania (nie tych w znaczeniu powolności działania, hehe).
Póki co, mamy do czynienia z wczesną wersją alpha. Na dzień dzisiejszy Libre.fm liczy sobie nieco ponad 1500 użytkowników. Samo zmuszenie do współpracy programów scrobblujących (w Libre gobblujących) polega na chamskim [...]]]></description>
			<content:encoded><![CDATA[<p><img style="float:left;margin:0px 10px 10px 0px" title="Libre.fm logo" src="http://spiechu.all.pl/wp-content/2009/04/Basic_logo.png" alt="" width="150" height="50" />Jak podaje <a href="http://linuxnews.pl/startuje-librefm-czyli-wolne-lastfm/">Linux News</a>, powstaje open source&#8217;owa wersja Last.fm nazwana Libre.fm. To dobra wiadomość dla miłośników wolnego oprogramowania (nie tych w znaczeniu powolności działania, hehe).</p>
<p>Póki co, mamy do czynienia z wczesną wersją alpha. Na dzień dzisiejszy Libre.fm liczy sobie nieco ponad 1500 użytkowników. Samo zmuszenie do współpracy programów scrobblujących (w Libre gobblujących) polega na chamskim przekierowaniu w <em>/etc/hosts</em> adresu <em>post.audioscrobbler.com</em> na <em>89.16.177.55</em> (wtyczka Last.fm w odtwarzaczu Banshee daje się nabrać - sprawdzałem).</p>
<p>Aktualnie nie możemy za dużo zrobić w serwisie. Ot, przesyłać dane nt. przesłuchanych utworów. Warty wzmianki jest pomysł zmiany podejścia do określania ulubionych artystów. Miałoby to być liczone na podstawie czasu słuchania danego artysty a nie liczby przesłuchanych utworów.</p>
<p>Pozostają kwestie rozróżniania różnych artystów o tej samej nazwie oraz porządkowania &#8220;bajzlu&#8221; w nazewnictwie utworów. Wg mnie twórcy powinni również powrócić do rozważenia momentu zakwalifikowania utworu jako przesłuchanego. Kiedyś wyglądało to inaczej (<a href="http://spiechu.all.pl/2007/01/09/lastfm-co-to-jest-to-scrobblowanie-i-jak-to-dziala/">pisałem o tym</a>), a teraz musimy przesłuchać cały utwór.</p>
<p>Powstała nawet <a href="http://www.lastfm.pl/group/libre.fm">grupa zrzeszająca</a> entuzjastów Libre.fm na Last.fm (jeszcze nie zlikwidowana? <img src='http://spiechu.all.pl/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> )</p>
]]></content:encoded>
			<wfw:commentRss>http://spiechu.all.pl/2009/04/23/powstaje-wolny-lastfm/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
