<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8224851759030925240</id><updated>2011-11-28T01:35:12.651+01:00</updated><category term='Freerunner'/><category term='OpenMoko'/><category term='KDE'/><category term='czarnobyl'/><category term='android'/><category term='muzyka'/><category term='Qt Extended'/><category term='ocalić od zapomnienia'/><category term='macgyveryzm'/><category term='python'/><category term='sieci'/><category term='unix'/><category term='enterprise'/><category term='Linux'/><category term='perl'/><category term='książki'/><category term='T43'/><category term='kino'/><category term='seriale'/><category term='BSD'/><category term='Qtopia'/><category term='Google'/><category term='humor'/><title type='text'>zh</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>66</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-3502402551349490067</id><published>2009-01-06T22:59:00.002+01:00</published><updated>2009-01-06T23:17:00.685+01:00</updated><title type='text'>Własne miasto</title><content type='html'>Skoro jeszcze nie zdążyłem zamknąć tego bloga to się pochwalę, gdyż chyba warto - w końcu nie każdy ma miasto nazwane na jego cześć. Miasto nazywa się oczywiście &lt;a href="http://en.wikipedia.org/wiki/Danao_City"&gt;Danao&lt;/a&gt;. Założyciele miasta dokonali prostego wybiegu zapisując właściwą nazwę... na układzie klawiatury &lt;a href="http://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard"&gt;Dvoraka&lt;/a&gt;, traktując go jak klawiaturę qwerty.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-3502402551349490067?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/3502402551349490067/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=3502402551349490067' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/3502402551349490067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/3502402551349490067'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2009/01/wasne-miasto.html' title='Własne miasto'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-3677334305764678258</id><published>2009-01-02T02:22:00.003+01:00</published><updated>2009-01-02T02:34:18.073+01:00</updated><title type='text'>shutdown -h +43000</title><content type='html'>&lt;pre&gt;The blog is going down for halt in 43000 minutes!&lt;/pre&gt;&lt;br /&gt;Postanowiłem z końcem miesiąca zamknąć tego bloga. Jeśli nie zmienię zdania, blog zostanie zamknięty na dłuższy czas lub na zawsze.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-3677334305764678258?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/3677334305764678258/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=3677334305764678258' title='Komentarze (6)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/3677334305764678258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/3677334305764678258'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2009/01/shutdown-h-43000.html' title='shutdown -h +43000'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-8099420894718938862</id><published>2008-12-28T21:38:00.003+01:00</published><updated>2008-12-28T22:30:06.139+01:00</updated><title type='text'>ABC, chowaj się!,</title><content type='html'>Jest dość ładny grudniowy poranek, zapowiada się spokojny dzień, w słuchawkach &lt;a href="http://en.wikipedia.org/wiki/Ozzy_Osbourne"&gt;Ozzy&lt;/a&gt; śpiewa:&lt;br /&gt;&lt;blockquote&gt;Reflex in the sky warn you you're gonna die&lt;br /&gt;Storm coming, you'd better hide from the atomic tide...&lt;/blockquote&gt;&lt;br /&gt;Nagle w środku piosenki muzyka milknie. To z pewnością &lt;a href="http://en.wikipedia.org/wiki/Electromagnetic_pulse"&gt;EMP&lt;/a&gt; - myślę. Nie było jednak błysku towarzyszącego zwykle wybuchowi nuklearnemu, a ja nie stałem się jedynie cieniem na asfalcie, jest zatem jeszcze nadzieja. Rozglądam się więc za miejscem gdzie mógłbym przetrzymać dalszą fazę ataku (kto wie jaki rodzaj broni zafunduje nam teraz przeciwnik), a żeby przygotować się do nowego porządku na świecie przypominam sobie stripy &lt;a href="http://www.blastwavecomic.com/"&gt;Gone with the Blastwave&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;W międzyczasie postanawiam też sprawdzić jaki dokładnie wpływ miał impuls elektromagnetyczny na mojego iPoda Nano, i co się okazuje? Okazuje się, że iPod nie jest całkowicie zniszczony, a tylko zawieszony i po resecie ponownie zaczyna działać. W głowie kiełkuje mi myśl: "może to jednak nie impuls elektromagnetyczny, a problem programowy lub sprzętowy po stronie &lt;a href="http://www.apple.com/"&gt;Apple&lt;/a&gt;". Natychmiast zwalczam tę myśl - oni przecież &lt;span style="font-weight: bold;"&gt;nie robią&lt;/span&gt; błędów.&lt;br /&gt;&lt;br /&gt;Wycofuję się do upatrzonej wcześniej kryjówki i czekam na dalszy rozwój wydarzeń. Zaczynam też regularną kontrolę swojego stanu, zwracając szczególną uwagę na objawy choroby popromiennej. W ukryciu czekam dłuższy czas, jednak dalsza faza ataku nie następuje. Po dłuższym namyśle postanawiam opuścić kryjówkę i rozpocząć normalne życie, tak właściwie to zupełnie &lt;span style="font-weight: bold;"&gt;nowe życie&lt;/span&gt; - przetrwanie ataku nuklearnego, to przecież szansa od losu której nie można zmarnować.&lt;br /&gt;&lt;br /&gt;Do tej pory mam wątpliwości co się właściwie stało i dlaczego nie doszło do kolejnej fazy ataku, wiem tylko jedno - to &lt;span style="font-weight: bold;"&gt;z pewnością&lt;/span&gt; nie był problem samego iPoda.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-8099420894718938862?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/8099420894718938862/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=8099420894718938862' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/8099420894718938862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/8099420894718938862'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/12/abc-chowaj-si.html' title='ABC, chowaj się!,'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-8373011454770141806</id><published>2008-12-23T19:46:00.003+01:00</published><updated>2008-12-23T20:27:38.172+01:00</updated><title type='text'>Pomnik trwalszy niż z chrustu i gliny</title><content type='html'>&lt;a href="http://pl.wikipedia.org/wiki/Horacy_%28poeta%29"&gt;Ktoś&lt;/a&gt; kiedyś budował sobie "pomnik trwalszy niż ze &lt;a href="http://pl.wikipedia.org/wiki/Spi%C5%BC"&gt;spiżu&lt;/a&gt;". W związku z tym, że nie jestem takim karierowiczem jak wspomniany wcześniej osobnik, jak również walory ekologiczne proponowanego przeze mnie rozwiązania (wykorzystanie zasobów odnawialnych, brak metali ciężkich i biodegradowalność), postanowiłem wybudować sobie pomnik trwalszy niż z chrustu i gliny. Budowa mojego pomnika będzie polegać na tworzeniu i promowaniu nowych słów. Dziś fundament pomnika: &lt;span style="font-weight: bold;"&gt;feedownica&lt;/span&gt;. &lt;span style="font-weight: bold;"&gt;Feedownica&lt;/span&gt; zwana jest przez niektórych czytnikiem &lt;a href="http://pl.wikipedia.org/wiki/RSS"&gt;RSS&lt;/a&gt;. Nazwa "czytnik RSS" ma jednak bardzo dużo wad:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;jest dość długa: czyt-inik er-es-es - dwa wyrazy, pięć sylab&lt;/li&gt;&lt;li&gt;wprowadza niepotrzebne zamieszanie - jej pierwszy człon (czytnik), ma bardzo wiele znaczeń, dlatego konieczny jest drugi człon&lt;/li&gt;&lt;li&gt;RSS brzmi bardzo sucho, poza tym jest skrótem, a wiele osób nie lubi skrótów, zwłaszcza obcych&lt;br /&gt;&lt;/li&gt;&lt;li&gt;brak jej elegancji&lt;/li&gt;&lt;/ol&gt;Stąd też potrzeba wprowadzenia nowej nazwy - &lt;span style="font-weight: bold;"&gt;feedownica&lt;/span&gt;. Nazwa ta łączy w sobie elegancję i prostotę, kosmopolityzm z tradycją narodową. Nie ma co się oszukiwać, jest ona bezbłędna.&lt;br /&gt;&lt;br /&gt;Postępy budowy pomnika można na bieżąco obserwować &lt;a href="http://www.google.pl/search?hl=pl&amp;amp;q=feedownica+-site%3Ageekowo.blogspot.com"&gt;tu&lt;/a&gt;, w chwili tworzenia tego wpisu zapytanie zwraca zero trafień.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-8373011454770141806?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/8373011454770141806/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=8373011454770141806' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/8373011454770141806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/8373011454770141806'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/12/pomnik-trwalszy-ni-z-chrustu-i-gliny.html' title='Pomnik trwalszy niż z chrustu i gliny'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-2746109542264682707</id><published>2008-12-18T20:54:00.003+01:00</published><updated>2008-12-18T21:17:22.309+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><title type='text'>Join the Navy, they said</title><content type='html'>W związku z programem &lt;a href="http://tech.slashdot.org/article.pl?sid=08/12/18/006226"&gt;wdrożenia rozwiązania opartego o Windows&lt;/a&gt; na okrętach podwodnych Brytyjskiej Marynarki Wojennej przenoszących pociski z głowicami jądrowymi przypomniała mi się jedna animacja flashowa. Jeśli ktoś nie widział, polecam:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://geekowo.googlepages.com/antimult011-smokekills.swf"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://geekowo.googlepages.com/antimult011-smokekills.swf" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-2746109542264682707?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/2746109542264682707/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=2746109542264682707' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/2746109542264682707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/2746109542264682707'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/12/join-navy-they-said.html' title='Join the Navy, they said'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-4414382393816895998</id><published>2008-12-14T23:37:00.005+01:00</published><updated>2008-12-14T23:53:13.797+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><title type='text'>Zsh mi nie działa</title><content type='html'>Na początku stworzyłem plik i jego zgzipowaną wersję:&lt;br /&gt;&lt;pre style="color:white;background-color:black"&gt;&lt;br /&gt;[zh@hersis blog]$ vim test.sh&lt;br /&gt;[zh@hersis blog]$ gzip -c test.sh &gt;test.sh.gz&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Wyświetlam zawartość pliku przy użyciu cata i zcata:&lt;br /&gt;&lt;pre style="color:white;background-color:black"&gt;&lt;br /&gt;[zh@hersis blog]$ cat test.sh&lt;br /&gt;#!/bin/sh&lt;br /&gt;echo "to jest test"&lt;br /&gt;[zh@hersis blog]$ zcat test.sh.gz&lt;br /&gt;#!/bin/sh&lt;br /&gt;echo "to jest test"&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Grep i zgrep również zachowują się zgodnie z oczekiwaniami:&lt;br /&gt;&lt;pre style="color:white;background-color:black"&gt;&lt;br /&gt;[zh@hersis blog]$ grep bin test.sh&lt;br /&gt;#!/bin/sh&lt;br /&gt;[zh@hersis blog]$ zgrep bin test.sh.gz&lt;br /&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;A teraz sh i zsh:&lt;br /&gt;&lt;pre  style="color:white;background-color:black"&gt;&lt;br /&gt;[zh@hersis blog]$ sh test.sh&lt;br /&gt;to jest test&lt;br /&gt;[zh@hersis blog]$ zsh test.sh.gz&lt;br /&gt;test.sh.gz:2: bad pattern: ^_\M-^K^H^H\M-/\M-\tEI^@^Ctest.sh^@SV\M-TO\M-J\M-L\M-S/\M-N\M-`JM\M-N\M-HWP*\M-IW\M-HJ-.Q(^A^RJ^@\M-c\M-N\nu^^^@^@^@&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Czy ktoś jest mi w stanie wytłumaczyć dlaczego sh działa, a zsh nie? Czy powinienem zgłosić błąd?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-4414382393816895998?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/4414382393816895998/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=4414382393816895998' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/4414382393816895998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/4414382393816895998'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/12/zsh-mi-nie-dziaa.html' title='Zsh mi nie działa'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-7679533605433013561</id><published>2008-12-06T13:45:00.003+01:00</published><updated>2008-12-06T23:34:22.184+01:00</updated><title type='text'>Konwencje</title><content type='html'>Właśnie się wybieram... no mniejsza o to gdzie i po co. W każdym razie, jak zywkle w takich okolicznościach, naszła mnie myśl, że ilość konwencji dotyczących ubioru jest przerażająca. Typy ubiorów, techninki kształtowania pewnych elementów tychże (choćby krawaty) i masa temu podobnych rzeczy, heh...&lt;br /&gt;&lt;br /&gt;Update:&lt;br /&gt;Znowu w jeansach i spranej koszulce moro. Kocham ten strój.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-7679533605433013561?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/7679533605433013561/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=7679533605433013561' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/7679533605433013561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/7679533605433013561'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/12/konwencje.html' title='Konwencje'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-7205921403438217377</id><published>2008-12-04T20:09:00.003+01:00</published><updated>2008-12-04T20:23:01.700+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenMoko'/><title type='text'>Dowcipy o Openmoko</title><content type='html'>Na wiki Openmoko pojawiła się ostatnio &lt;a href="http://wiki.openmoko.org/wiki/Jokes"&gt;strona z dowcipami&lt;/a&gt;. Są dość niszowe, ironiczne, część z nich jest głupia, ale niektóre są nawet śmieszne, na przykład:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Knock, Knock&lt;br /&gt;Who's There?&lt;br /&gt;A Neo User&lt;br /&gt;A Neo User&lt;span style="color: rgb(204, 204, 204);"&gt;(*)&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;albo&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Q: What is the difference between a professional photographer and OM user?&lt;br /&gt;A: The OM user has to flash more often&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Polecam wizytę jeśli kogoś bawią Moko-Techno-Dowcipy.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(192, 192, 192);"&gt;(*) - Chodzi o dość silne echo, którego doświadczyło wiele osób dzwoniących do mnie&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-7205921403438217377?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/7205921403438217377/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=7205921403438217377' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/7205921403438217377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/7205921403438217377'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/12/dowcipy-o-openmoko.html' title='Dowcipy o Openmoko'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-1890849496043210800</id><published>2008-12-04T00:16:00.004+01:00</published><updated>2008-12-04T00:21:01.683+01:00</updated><title type='text'>Podświadome pozycjonowanie?</title><content type='html'>Zastanawiałem się czy przypadkiem nie powinienem spozycjonować swojego bloga na hasło "Jebać BSD", ale jak się okazuje mój blog już ma optymalną (pierwszą) pozycję na takie hasło:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_uUPqmLJl9XM/STcUJjN3hQI/AAAAAAAAAC4/aR8KZzqFisY/s1600-h/jebac_bsd.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 92px;" src="http://3.bp.blogspot.com/_uUPqmLJl9XM/STcUJjN3hQI/AAAAAAAAAC4/aR8KZzqFisY/s400/jebac_bsd.jpg" alt="" id="BLOGGER_PHOTO_ID_5275707642792609026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Czyżby podświadome pozycjonowanie?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-1890849496043210800?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/1890849496043210800/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=1890849496043210800' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/1890849496043210800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/1890849496043210800'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/12/podwiadome-pozycjonowanie.html' title='Podświadome pozycjonowanie?'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_uUPqmLJl9XM/STcUJjN3hQI/AAAAAAAAAC4/aR8KZzqFisY/s72-c/jebac_bsd.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-1760024698238918507</id><published>2008-12-01T02:02:00.004+01:00</published><updated>2008-12-01T02:14:07.586+01:00</updated><title type='text'>Praca źródłem radości</title><content type='html'>Czy praca może być powodem prawdziwej radości? I wcale nie chodzi tu o żadne ambitne projekty ani ciekawe zadania, ci którzy mówią, że ich to bawi na 90% ściemniają. A więc może, czy nie może? Okazuje się, że może... jako źródło folii bąbelkowej.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-1760024698238918507?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/1760024698238918507/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=1760024698238918507' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/1760024698238918507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/1760024698238918507'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/12/praca-rdem-radoci.html' title='Praca źródłem radości'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-8182748185329390811</id><published>2008-11-30T22:28:00.002+01:00</published><updated>2008-11-30T22:36:41.251+01:00</updated><title type='text'>Atheros HAL na licencji Open Source</title><content type='html'>Gdyby ktoś przypadkiem przeoczył, wczoraj kod źródłowy Hardware Abstraction Layer dla chipsetu Atheros &lt;a href="http://madwifi-project.org/wiki/news/20081129/sam-leffler-releases-hal-source"&gt;został opublikowany na licencji Open Source&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-8182748185329390811?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/8182748185329390811/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=8182748185329390811' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/8182748185329390811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/8182748185329390811'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/11/atheros-hal-na-licencji-open-source.html' title='Atheros HAL na licencji Open Source'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-3051285255831890882</id><published>2008-11-24T02:37:00.004+01:00</published><updated>2008-11-24T02:58:59.487+01:00</updated><title type='text'>U źródeł mądrości</title><content type='html'>Chciałem napisać dziś coś ciekawego, niestety nie mam zupełnie natchnienia. Postanowiłem zatem sięgnąć do źródła mądrości wszelakiej, czyli do &lt;a href="http://paweljablonski.bblog.pl/"&gt;bloga Goriona&lt;/a&gt;. Żeby jednak nie powtarzać jego postów, poddałem tekst z jego bloga obróbce automatycznej programem, który stworzyłem specjalnie do tego celu. Być może spodziewacie się, że wartość informacyjna tekstu znacząco spadła z tego powodu. Nic podobnego! Wartość merytoryczna nie uległa zmniejszeniu, sądzę, że jest nawet wyższa. Możecie to sprawdzić sami porównując poniższy tekst z &lt;a href="http://paweljablonski.bblog.pl/"&gt;blogiem Goriona&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;Czas budowy telefonu komókowego GSM. AuC dokonuje weryfikacji ważności kart SIM i kluczem Ki. Klucz abonenta ruchomego IMSI oraz serwisów internetowych należących do szybkiej ich zaliczania, lecz przyznam szczerze, że mój plan na telefonach komórkowych a ze strony (pobierany z przetwornikacyfrowo-analogowego (C/A). Tryb nadawszy UKDM kompensuje cyfrowy sygnał o częstotliwości pośredniej (IF), czyli np. standardu PSTN). Przesył cyfrowy, modulacjaGMSK, wielodostęp TDMA, przeskoki częstotliwościowe znacznie rzadziej niż początkowo planowałem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-3051285255831890882?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/3051285255831890882/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=3051285255831890882' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/3051285255831890882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/3051285255831890882'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/11/u-rde-mdroci.html' title='U źródeł mądrości'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-5921134990977484612</id><published>2008-11-16T20:58:00.005+01:00</published><updated>2008-11-16T21:55:19.518+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Qt Extended'/><category scheme='http://www.blogger.com/atom/ns#' term='Freerunner'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Krótko o Freerunnerze</title><content type='html'>Dawno nic nie pisałem, a wypdałoby, niestety nie chce mi się, dlatego będzie bardzo zwięźle i w punktach(*):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;żyję,&lt;br /&gt;&lt;/li&gt;&lt;li&gt;w końcu zmigrowałem się na Qt Extended 4.4.2,&lt;/li&gt;&lt;li&gt;gdyby ktoś nie wiedział od pewnego czasu dostępny jest &lt;a href="http://onlinedev.blogspot.com/2008/11/porting-android-phase-4-done.html"&gt;port Androida&lt;/a&gt; na Freerunnera, oczywiście z powodu braku klawiatury ekranowej niezbyt używalny,&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://laforge.gnumonks.org/weblog/2008/11/11/#20081111-glofiish_m800"&gt;tu&lt;/a&gt; wpis do poczytania,&lt;/li&gt;&lt;li&gt;kończę.&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(192, 192, 192);font-size:85%;" &gt;(*) - i tak jak  przykazał mój promotor (którego ciągle nie lubię mimo że upłynęło już sporo czasu od obrony) z przecinkami rozdzielającymi kolejne punkty i z kropką na końcu.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-5921134990977484612?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/5921134990977484612/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=5921134990977484612' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/5921134990977484612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/5921134990977484612'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/11/krtko-o-freerunnerze.html' title='Krótko o Freerunnerze'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-7740165384285027620</id><published>2008-11-08T01:40:00.005+01:00</published><updated>2008-11-08T02:35:50.829+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='enterprise'/><title type='text'>Enterprise</title><content type='html'>Dziś będę pastwił się nad tzw. rozwiązaniami klasy enterprise na przykładzie skryptu startowego odpowiedzialnego za start pewnej usługi, będącej ważnym składnikiem pewnego drogiego rozwiązania mającego zaledwie kilka wdrożeń w Polsce. Będzie bez konkretnych nazw, ale pewnie niektórzy się domyślą o co chodzi.&lt;br /&gt;Pierwszy fragment:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;killproc() {            # kill the named process(es)&lt;br /&gt;        pid=`ps -e |&lt;br /&gt;             grep $1 |&lt;br /&gt;             sed -e 's/^  *//' -e 's/ .*//'`&lt;br /&gt;        [ "$pid" != "" ] &amp;&amp; kill $pid&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I użycie (rzeczywistą nazwę programu zmieniłem na progname):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;'stop')&lt;br /&gt;        #&lt;br /&gt;        # Stop the progname and the monitor&lt;br /&gt;        #&lt;br /&gt;        killproc ' progname'&lt;br /&gt;        exit 0&lt;br /&gt;        ;;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Tak, zabijmy je wszystkie!&lt;br /&gt;A poniżej uruchamianie demonów w wersji enterprise. Najpierw kulturalnie definiujemy zmienne:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;NOHUP_CMD="nohup"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;A teraz odpalamy demona metodą enterprise (tu również rzeczywista nazwa programu została zmieniona na progname):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;'start')&lt;br /&gt;        #&lt;br /&gt;        # Start the monitor&lt;br /&gt;        #&lt;br /&gt;        ${ULIMIT_CMD}&lt;br /&gt;        # cd into ${ACTIVE_HOME}&lt;br /&gt;        cd ${ACTIVE_HOME}&lt;br /&gt;        ${NOHUP_CMD} ${ACTIVE_HOME}/bin/progname &gt; /dev/null 2&gt;&amp;1 &amp;&lt;br /&gt;        ;;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Taki np. &lt;a href="http://www.linuxmanpages.com/man3/daemon.3.php"&gt;daemon(3)&lt;/a&gt; to przecież zupełny przeżytek.&lt;br /&gt;&lt;br /&gt;Ale właściwie dlaczego się czepiam? Przecież działa i zapewne obsługuje np. transakcje finansowe o niewyobrażalnie dużych wartościach z relatywnie dużą wydajnością. Poza tym praktycznie w każdym projekcie znajdą się takie kwiatki. Więc dlaczego o tym piszę? Bo mogę.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-7740165384285027620?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/7740165384285027620/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=7740165384285027620' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/7740165384285027620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/7740165384285027620'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/11/enterprise.html' title='Enterprise'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-7114839847706329627</id><published>2008-11-05T23:33:00.002+01:00</published><updated>2008-11-05T23:42:41.329+01:00</updated><title type='text'>Skróty</title><content type='html'>Jeden znajomy zarzuca mi nadużywanie skrótów. Do tej pory wydawało mi się, że tego nie robię, ale właśnie zacząłem się zastanawiać gdy odpowiadając na posta na grupie napisałem jedno krótkie zdanie (oczywiście bez odsyłaczy które zamieszczam poniżej):&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://www.acronymfinder.com/In-My-Humble-Opinion-(IMHO).html"&gt;IMHO&lt;/a&gt; niektóre to perełki, ale &lt;a href="http://www.acronymfinder.com/De-Gustibus-Costam_Costam-(DGCC).html"&gt;DGCC&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;Czy to już jest przegięcie?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-7114839847706329627?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/7114839847706329627/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=7114839847706329627' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/7114839847706329627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/7114839847706329627'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/11/skrty.html' title='Skróty'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-3294476988847039980</id><published>2008-11-02T22:42:00.005+01:00</published><updated>2008-11-02T22:56:32.392+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Google App Engine i domeny wildcardowe</title><content type='html'>Chciałem sobie zrobić we własnej domenie prostą aplikacyjkę podobną do &lt;a href="http://tinyurl.com"&gt;Tiny URL&lt;/a&gt; do skracania/zaciemniania adresów. Nie chce mi się jednak stawiać serwera HTTP wyłącznie na potrzeby jednej małej aplikacji, więc postanowiłem hostować ją na Google App Engine. Chciałem żeby skrócony adres miał postać http://nazwa.domena, niestety &lt;a href="http://code.google.com/p/googleappengine/issues/detail?id=113"&gt;App Engine nie obsługuje domen wildcardowych&lt;/a&gt; i musiałem się zadowolić adresami postaci http://domena/nazwa. Niby nic, jednak klient (czyli ja) jest niezadowolony. Trochę szkoda, że brakuje takiej funkcjonalności.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-3294476988847039980?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/3294476988847039980/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=3294476988847039980' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/3294476988847039980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/3294476988847039980'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/11/google-app-engine-i-domeny-wildcardowe.html' title='Google App Engine i domeny wildcardowe'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-7688373319059377013</id><published>2008-11-02T16:37:00.016+01:00</published><updated>2008-11-26T00:15:59.868+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='książki'/><title type='text'>Chłyt marketingowy</title><content type='html'>Reklamy często kłamią, niby oczywiste, ja jednak ostatnio dałem się nabrać. Kto by się jednak spodziewał, że zostanę okłamany co do gatunku opowiadań zawartych w książce. Niby po co (aż chce się użyć bardziej dosadnego określenia) oszukiwać przyszłego czytelnika w tym względzie?&lt;br /&gt;Ale od początku. Bardzo lubię &lt;a href="http://en.wikipedia.org/wiki/Science_fiction"&gt;SF&lt;/a&gt;, dlatego też w piątek po pracy wybrałem się do Empiku żeby kupić sobie książkę tego właśnie gatunku. Ponieważ dobrych książek SF na rynku jest relatywnie mało, moje kryteria oceny są dość łagodne: patrzę na obrazek z przodu okładki, czytam opis na ostatniej stronie okładki i przeglądam kilka losowo wybranych kartek. W piątek miałem spory problem ze znalezieniem czegoś rozsądnego, ale w pewnym momencie w oko wpadła mi okładka polskiego zbioru SF (wtedy jeszcze tak myślałem), a ponieważ miałem ochotę kupić sobie nową książkę, pomyślałem, że w najgorszym razie nie będzie rewelacyjna, ale przynajmniej gatunkowo jest to czysty SF. Tekst na okładce zapewniał:&lt;br /&gt;&lt;blockquote&gt;Nie liczcie na krasnoludy i smoki. Przed wami mur czystej SF z domieszką horroru&lt;/blockquote&gt;&lt;br /&gt;Dalej było jeszcze coś o "hard SF", zrezygnowałem więc z kartkowania i kupiłem tę książkę.&lt;br /&gt;Zacząłem czytać pierwsze opowiadanie i tu zaczęły się schody. Faktycznie nie było o krasnoludach i smokach, za to było to opowiadanie zdecydowanie z gatunku fantasy, zabarwione dodatkowo okultyzmem, żeby nie być gołosłownym, wrzucę losowy fragment:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Dlatego staram się pieczętować srebrem wszystkie drzwi do skażonych Wymiarów. To najskuteczniej powstrzymuje ekspansję demonów&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Żeby jeszcze to opowiadanie, mimo że fantasy, było chociaż dobre, albo przynajmniej nieprzeciętne, ale niestety jest co najwyżej średnie. Jest tam faktycznie jeden niezły pomysł i nieoczekiwane zakończenie, ale cała fabuła i realia są bardzo naciągane na potrzeby tego pomysłu i dlatego (choć nie tylko dlatego) opowiadanie jest jakie jest...&lt;br /&gt;Jestem ciekawy czy ten tekst na okładce jest przejawem braku kompetencji osoby która go pisała, braku wiedzy o treści zbioru o którym się pisze, czy też może jeszcze czymś innym, niemniej jednak stanowi żółtą kartkę dla wydawnictwa.&lt;br /&gt;No i na koniec najważniejsze. Zbiór nosi tytuł "Ostatni zjazd przed Litwą", autorem jest Robert J. Szmidt, natomiast wydawcą Fabryka Słów. Przeczytałem dopiero jedno opowiedanie i może się okazać, że inne są rewelacyjnym, czystym SF, jednak póki co gorąco nie polecam.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-7688373319059377013?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/7688373319059377013/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=7688373319059377013' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/7688373319059377013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/7688373319059377013'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/11/chyt-marketingowy.html' title='Chłyt marketingowy'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-909451272970582723</id><published>2008-10-27T22:51:00.003+01:00</published><updated>2008-10-27T23:29:13.769+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Zakochaj się w time_t</title><content type='html'>Właśnie uświadomiłem sobie, że niedługo &lt;a href="http://en.wikipedia.org/wiki/Unix_time"&gt;liczba sekund od początku 1970 roku&lt;/a&gt; osiągnie ładną wartość 1234567890, co więcej osiągnie ją w walentynki przyszłego roku:&lt;pre&gt;&lt;br /&gt;[zh@hersis ~]$ date -d "2009-02-14 0:31:30" +%s&lt;br /&gt;1234567890&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-909451272970582723?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/909451272970582723/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=909451272970582723' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/909451272970582723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/909451272970582723'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/10/zakochaj-si-w-timet.html' title='Zakochaj się w time_t'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-2127214299513006008</id><published>2008-10-21T21:18:00.005+02:00</published><updated>2008-10-21T21:40:53.159+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenMoko'/><category scheme='http://www.blogger.com/atom/ns#' term='Freerunner'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android wreszcie Open Source</title><content type='html'>Dziś Google otworzyło wreszcie w pełni swoją platformę dla urządzeń mobilnych o wdzięcznej nazwie Android. Informacja ta została opublikowana na &lt;a href="http://google-opensource.blogspot.com/2008/10/android-open-source-cell-phone.html"&gt;oficjalnym blogu Google&lt;/a&gt;, natomiast same źródła można pobrać &lt;a href="http://source.android.com/"&gt;tutaj&lt;/a&gt;. Ciekawe kiedy pojawi się port na Freerunnera. Ciekawe też jak uwolnienie Androida wpłynie na projekt Openmoko. To jednak kwestia przyszłości, teraz pora na przejrzenie źródeł :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-2127214299513006008?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/2127214299513006008/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=2127214299513006008' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/2127214299513006008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/2127214299513006008'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/10/android-wreszcie-open-source.html' title='Android wreszcie Open Source'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-2354411629205303474</id><published>2008-10-14T19:29:00.008+02:00</published><updated>2008-10-14T20:25:39.099+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='muzyka'/><title type='text'>Krypteria</title><content type='html'>Odkryłem kilka dni temu z niewielką pomocą &lt;a href="http://last.fm"&gt;Last.fm&lt;/a&gt; zespół &lt;a href="http://www.krypteria.de"&gt;Krypteria&lt;/a&gt;. Jest to niemiecka grupa grająca gothic metal, z bardzo ładnym wokalem Ji-In Cho. Ich ostatni album nosi tytuł "Bloodangel's Cry", można tam znaleźć między innymi piosenkę "All systems go":&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/PhLgUv6sTFI&amp;hl=pl&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/PhLgUv6sTFI&amp;hl=pl&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;W utworze tym znajduje się wiele nawiązań do pracy administratora, nie jest to łatwe, ale wprawne oko bez problemu je dostrzeże. Choćby tutaj:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Ten nine eight seven six five four three two one and&lt;br /&gt; All systems go, shield your soul, it's 4th and goal from the 21&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;21 to oczywiście numer portu na którym pracuje FTP, dłużą chwilę zastanawiałem się natomiast czym jest cztery, ale po jakimś czasie doznałem olśnienia - z pewnością chodzi o RFC! No i rzeczywiście nie pomyliłem się - &lt;a href="http://tools.ietf.org/html/rfc4"&gt;RFC 4&lt;/a&gt; to przecież "Network Timetable", jak mogłem od razu na to nie wpaść?&lt;br /&gt;Bardzo charakterystyczne jest też ostatnie zdanie piosenki:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;You might receive what you want and still end up with nothing&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Z zaakcentowaniem słowa 'nothing' - to z kolei jest wyraźne nawiązanie do &lt;a href="http://en.wikipedia.org/wiki/Xyzzy"&gt;"Nothing happens"&lt;/a&gt; z &lt;a href="http://en.wikipedia.org/wiki/Colossal_Cave_Adventure"&gt;Colossal Cave Adventure&lt;/a&gt;.&lt;br /&gt;Analizę reszty odwołań pozostawia się jako ćwiczenie dla czytelnika.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-2354411629205303474?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/2354411629205303474/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=2354411629205303474' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/2354411629205303474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/2354411629205303474'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/10/krypteria.html' title='Krypteria'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-2113665849198213468</id><published>2008-10-12T18:21:00.005+02:00</published><updated>2008-10-26T11:52:48.761+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ocalić od zapomnienia'/><title type='text'>Jebać SGH</title><content type='html'>Dostałem ostatnio informację, że mojo konto uczelniane zostanie wkrótce skasowane (w sumie najwyższa pora, obroniłem się już ponad 1/2 roku temu), w związku z tym mam zamiar tu opublikować co ciekawsze rzeczy z katalogu ~/public_html, aby ocalić je od zapomnienia.&lt;br /&gt;Dziś dzieło plenerowe nieznanego artysty o wdzięcznym tytule "Jebać SGH". Z góry zaznaczam, że nie mam żadnego związku z powstaniem tego dzieła, nie podzielam również pragnień seksualnych twórcy, a zdjęcie zamieszczam wyłącznie jako ciekawostkę.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_uUPqmLJl9XM/SPIkkvO-obI/AAAAAAAAACg/4k62hJf9BxA/s1600-h/jebac_sgh.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_uUPqmLJl9XM/SPIkkvO-obI/AAAAAAAAACg/4k62hJf9BxA/s400/jebac_sgh.jpg" alt="Jebać SGH na Rondzie Jazdy Polskiej" id="BLOGGER_PHOTO_ID_5256303928667972018" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-2113665849198213468?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/2113665849198213468/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=2113665849198213468' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/2113665849198213468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/2113665849198213468'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/10/jeba-sgh.html' title='Jebać SGH'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_uUPqmLJl9XM/SPIkkvO-obI/AAAAAAAAACg/4k62hJf9BxA/s72-c/jebac_sgh.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-7312064207120333914</id><published>2008-10-12T01:06:00.015+02:00</published><updated>2008-10-12T18:39:58.802+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='T43'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>ThinkPad T43 - Wykrywanie podłączenia słuchawek</title><content type='html'>Wymśliłem sobie dzisiaj, że fajnie byłoby mieć na pracowym laptopie (ThinkPad T43) możliwość definiowania akcji związanych z podłączeniem i odłączeniem słuchawek. Jest to tym bardziej przydatne, że w KDE 4 &lt;a href="http://bugs.kde.org/show_bug.cgi?id=160892"&gt;popsuli mi khotkeys&lt;/a&gt; i nie mogę sobie definiować własnych skrótów klawiszowych. Poza tym temat wydał mi się interesujący i warty zgłębienia. Na sieci nie znalazłem żadnych materiałów, jednak okazało się (tak jak się spodziewałem), że relatywnie łatwo można sprawdzić czy słuchawki są podłączone poprzez sprawdzenie jednego z bitów rejestru karty dźwiękowej, a konkretnie 4 (licząc od 1) bitu rejestru numer 0x72 - nie wiem co to za rejestr, nie chciało mi się szukać, jeśli kiedyś to sprawdzę, napiszę uaktualnienie. Znalazłem go diffując stan rejestrów z podłączonymi i odłączonymi słuchawkami.&lt;br /&gt;Czyli w skrócie (jest to pewne uproszczenie, bo nie jest sprawdzany jeden bit, tylko cały rejestr):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;grep "0:72 = 0000" /proc/asound/ICH6/codec97#0/ac97#0-0+regs &gt;/dev/null &amp;&amp;\&lt;br /&gt; echo glosniki || echo sluchawki&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ktoś mi kiedyś zarzucał, że piszę wyłącznie brzydkie jednolinijkowe skrypty - nie jest to prawda, tworzę rozwiązania które maksymalizują pewną funkcję celu, a że często ważnym czynnikiem jest czas i zasoby, a jeszcze częściej niechęć polerowania rozwiązania które i tak dość dobrze realizuje swoje zadanie. Tym razem postanowiłem jednak napisać &lt;a href="http://geekowo.googlepages.com/phones.html"&gt;skrypcik w pythonie&lt;/a&gt; z porządną obsługą argumentów i innymi detalami.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-7312064207120333914?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/7312064207120333914/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=7312064207120333914' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/7312064207120333914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/7312064207120333914'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/10/thinkpad-t43-wykrywanie-podczenia.html' title='ThinkPad T43 - Wykrywanie podłączenia słuchawek'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-4944604127249440078</id><published>2008-10-06T23:54:00.004+02:00</published><updated>2008-10-07T00:17:46.087+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Qtopia'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenMoko'/><category scheme='http://www.blogger.com/atom/ns#' term='Qt Extended'/><category scheme='http://www.blogger.com/atom/ns#' term='Freerunner'/><title type='text'>Freerunner bedzie bardziej przewidywalny?</title><content type='html'>No proszę, ktoś wreszcie rozwiązał (no może nie rozwiązał, ale napisał brutalne objejście, ale to już coś) najbardziej denerwującey mnie problem Freerunnera. Chodzi o to, że w pewnych warunkach telefon cyklicznie wyrejestrowuje się z sieci i po chwili rejestruje ponownie. Z tego powodu to czy uda się do mnie dodzwonić jest bardzo niedeterministyczne - jakieś 25% prób dodzwonienia się do mnie kończy się fiaskiem. Problem powodowany jest (tak jak należało się tego spodziewać) przez firmware modemu GSM i dotyczy stanu głębokiego uśpienia. Więcej szczegółów &lt;a href="http://moko.mwester.net/brc.html"&gt;tutaj&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-4944604127249440078?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/4944604127249440078/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=4944604127249440078' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/4944604127249440078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/4944604127249440078'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/10/freerunner-bedzie-bardziej.html' title='Freerunner bedzie bardziej przewidywalny?'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-8835056329832119424</id><published>2008-10-06T20:19:00.005+02:00</published><updated>2008-10-12T02:33:03.548+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><title type='text'>Ghost in the Shell</title><content type='html'>Dziś na specjalne życzenie jednego z moich czytelników (pozdrawiam!) Ghost in the Shell.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_uUPqmLJl9XM/SOpW6By2WeI/AAAAAAAAACY/c-Njg0c-eRo/s1600-h/ghost_in_the_shell.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_uUPqmLJl9XM/SOpW6By2WeI/AAAAAAAAACY/c-Njg0c-eRo/s400/ghost_in_the_shell.png" alt="" id="BLOGGER_PHOTO_ID_5254107470195218914" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-8835056329832119424?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/8835056329832119424/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=8835056329832119424' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/8835056329832119424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/8835056329832119424'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/10/ghost-in-shell.html' title='Ghost in the Shell'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_uUPqmLJl9XM/SOpW6By2WeI/AAAAAAAAACY/c-Njg0c-eRo/s72-c/ghost_in_the_shell.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-2121494345537656347</id><published>2008-10-05T00:41:00.004+02:00</published><updated>2008-10-05T01:00:46.871+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Qtopia'/><category scheme='http://www.blogger.com/atom/ns#' term='Qt Extended'/><category scheme='http://www.blogger.com/atom/ns#' term='Freerunner'/><title type='text'>Qt Extended</title><content type='html'>Przed kilkoma dniami pojawiła się wersja 4.4.1 &lt;a href="http://qtextended.org/"&gt;Qt Extended&lt;/a&gt; (dawniej Qtopia) dla Freerunnera. Co prawda wygląda na to, że jest trochę zabugowana (takie jest moje pierwsze wrażenie - nie bawiłem się zbyt wiele), ale ma za to przeglądarkę opartą na WebKicie, zmianę orientacji ekranu, api do GPSa i kilka innych rzeczy. Poza tym dostaje się program gdzie można sobie piórkiem samolocik narysować. O!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_uUPqmLJl9XM/SOfxcXI7TEI/AAAAAAAAACQ/X2vaZJgOW1s/s1600-h/samolocik.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_uUPqmLJl9XM/SOfxcXI7TEI/AAAAAAAAACQ/X2vaZJgOW1s/s400/samolocik.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5253432959901060162" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-2121494345537656347?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/2121494345537656347/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=2121494345537656347' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/2121494345537656347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/2121494345537656347'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/10/qt-extended.html' title='Qt Extended'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_uUPqmLJl9XM/SOfxcXI7TEI/AAAAAAAAACQ/X2vaZJgOW1s/s72-c/samolocik.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-6509102234309074979</id><published>2008-10-01T13:17:00.002+02:00</published><updated>2008-10-01T13:35:48.327+02:00</updated><title type='text'>Orange jak Chuck Norris?</title><content type='html'>Przechodząc obok salonu Orange zauważyłem hasło reklamowe iPhona 3G: "Telefon, iPod i Internet w jednym". Do tej pory myślałem, że tylko Chuck Norris posiadł zdolność przechowywania Internetu na dyskietce (do użytku offlinowego). Okazuje się jednak, że Orange dorównał boskiemu Chuckowi.&lt;br /&gt;A gdyby ktoś przypadkiem zapomniał kim jest Chuck, poniżej krótki filmik przybliżający jego postać:&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/wzvnH3oWwQw&amp;hl=pl&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/wzvnH3oWwQw&amp;hl=pl&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-6509102234309074979?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/6509102234309074979/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=6509102234309074979' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/6509102234309074979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/6509102234309074979'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/10/orange-jak-chuck-norris.html' title='Orange jak Chuck Norris?'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-6383955553533548151</id><published>2008-09-25T20:41:00.004+02:00</published><updated>2008-09-25T21:29:14.132+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='seriale'/><title type='text'>Stare dobre KDE</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_uUPqmLJl9XM/SNvb77op26I/AAAAAAAAACI/N11wCO9_ujg/s1600-h/jag_kde.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_uUPqmLJl9XM/SNvb77op26I/AAAAAAAAACI/N11wCO9_ujg/s400/jag_kde.png" alt="" id="BLOGGER_PHOTO_ID_5250031613297417122" border="0" /&gt;&lt;/a&gt; Obejrzałem sobie właśnie 15 odcinek 9 serii serialu &lt;a href="http://www.imdb.com/title/tt0112022/"&gt;JAG&lt;/a&gt;. Napiszę jeszcze kiedyś dlaczego ten serial jest taki wyjątkowy i warto go oglądać, ale nie dzisiaj. Dziś będzie o marginalnym ale ciekawym jego aspekcie: ponieważ był on kręcony w latach 1995 - 2005, czyli w okresie dość dynamicznego rozwoju IT, można tam zaobserwować wiele ciekawych rzeczy, jak choćby fascynację Internetem, rozwój laptopów, pierwsze PDA... a w tym odcinku wypatrzyłem KDE w wersji około 3.0 (załączam zrzut).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-6383955553533548151?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/6383955553533548151/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=6383955553533548151' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/6383955553533548151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/6383955553533548151'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/09/stare-dobre-kde.html' title='Stare dobre KDE'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_uUPqmLJl9XM/SNvb77op26I/AAAAAAAAACI/N11wCO9_ujg/s72-c/jag_kde.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-6078219378952015134</id><published>2008-09-19T16:04:00.013+02:00</published><updated>2008-09-19T23:51:30.339+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><title type='text'>Polubiłem KDE 4</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_uUPqmLJl9XM/SNPS82FAKMI/AAAAAAAAACA/n6mQiLqRgv8/s1600-h/kde4_1.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_uUPqmLJl9XM/SNPS82FAKMI/AAAAAAAAACA/n6mQiLqRgv8/s320/kde4_1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5247769933567240386" /&gt;&lt;/a&gt;&lt;br /&gt;Od kilku dni używam KDE 4 - postawiłem sobie na pracowym laptopie (tak, znowu pracuję) Fedorę 9 a wraz z nią KDE 4.1.0 i uważam, że KDE 4.1 jest już wygodniejsze i ładniejsze od KDE 3.5. Rozwój KDE 4 śledzę od &lt;a href="http://geekowo.blogspot.com/search/label/KDE"&gt;dawna&lt;/a&gt;, jednak do tej pory KDE 4 traktowałem bardziej jako plac budowy, produkt eksperymentalny, a nie dojrzałe, gotowe do użycia rozwiązanie. W końcu jednak uznałem, że KDE jest już gotowe do użytku "produkcyjnego" i nie zawiodłem się. Wszystkie problemy i niedociągnięcia które przeszkadzały mi do tej pory zostały naprawione. W szczególności Plasma jest już bardzo stabilna (nie przewróciła się do tej pory ani razu), można wygodnie dodawać usuwać i pozycjonować elementy na panelu, poprawione zostały problemy ze zmianą rozmiaru niektórych elementów, jak również różne inne błędy które powstrzymywały mnie przed migracją na KDE 4. KDE stwarza teraz wrażenie solidnego, wygodnego i ładnego środowiska graficznego, ma przy tym nowoczesny i ładny wygląd. Jedyna funkcjonalność z której rzeczywiście korzystałem i zauważyłem jej brak w najnowszym KDE to możliwość przeniesienia okna na inny pulpit przez przeciągnięcie przycisku z paska zadań na aplet pagera. Mała strata, ale jakie duże możliwości w zamian. Choćby nowe menu "K" którego wreszcie zaczynam używać - w KDE 3.5 nie chciało mi się przeklikiwać przez menu i wolałem sobie zamiast tego wcisnąć Alt+F2 i wpisać nazwę programu który chciałem uruchomić. Nowe menu KDE jest podzielone na zakładki. Zakładka która otwiera się jako pierwsza po rozwinięciu menu to Ulubione - można sobie do niej dodać najczęściej używane programy i mieć do nich dostęp bez potrzeby klikania przez wiele poziomów menu. Kolejną wygodną rzeczą jest pole wyszukiwania u góry nowego menu - kolejny sposób na uruchomienie aplikacji bez potrzeby wielokrotnego klikania. Nie można przy jego pomocy uruchomić dowolnej aplikacji (tak jak przy użyciu Alt+F2), a tylko programy obecne w menu, ale nie do tego ono jest. A jeśli już mowa o Alt+F2 to również okienko uruchamiania programów zostało upiększone i podrasowane. Jest dużo wygodniejsze w użyciu, obsługuje również rozszerzenia pozwalające jeszcze bardziej zwiększać jego funkcjonalność. Na starcie dostajemy całkiem sporo gotowych rozszerzeń, jak choćby kalkulator lub konwerter jednostek. Kalkulator jest całkiem zaawansowany - na tyle zaawansowany, że do podręcznych obliczeń wystarczy mi Alt+F2, nie będę już musiał sięgać po bc -l czy ipythona (przykład działania na zrzucie).&lt;br /&gt;Mógłbym jeszcze sporo napisać o fajnych rzeczach w nowym KDE, ale i tak rozpisałem się ponad normę, kończę więc i polecam spróbować samemu.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-6078219378952015134?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/6078219378952015134/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=6078219378952015134' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/6078219378952015134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/6078219378952015134'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/09/polubiem-kde-4.html' title='Polubiłem KDE 4'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_uUPqmLJl9XM/SNPS82FAKMI/AAAAAAAAACA/n6mQiLqRgv8/s72-c/kde4_1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-4364921710055535043</id><published>2008-09-18T09:57:00.004+02:00</published><updated>2008-09-19T00:22:24.490+02:00</updated><title type='text'>Praga Północ - pierwsze poważne rozczarowanie</title><content type='html'>Mieszkam sobie od pewnego czasu na Pradze Północ. Miejsce to charakteryzuje się tym, że wszędzie mam daleko i (podobno, jeszcze nie testowałem) można łatwo dorobić się obitej facjaty, ale nic to - można z tym żyć. Trudno jest natomiast żyć w miejscu gdzie &lt;span style="font-weight: bold;"&gt;jedyny&lt;/span&gt; kebab który powinien być czynny 24h jest zamknięty około godziny pierwszej! Karygodne! A w domu oczywiście zgodnie ze zwyczajem wyniesionym z czasów studenckich czeka pusta lodówka... Może już pora zacząć zbierać pieniądze na kawalerkę w Centrum, w końu to tylko jakieś 300kPLN...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-4364921710055535043?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/4364921710055535043/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=4364921710055535043' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/4364921710055535043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/4364921710055535043'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/09/praga-pnoc-pierwsze-powane.html' title='Praga Północ - pierwsze poważne rozczarowanie'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-3623286291314919520</id><published>2008-09-08T00:29:00.002+02:00</published><updated>2008-09-08T00:51:44.844+02:00</updated><title type='text'>Może pora się ochajtać?</title><content type='html'>Dowiedziałem się właśnie, że moi dobrzy znajomi chajtają się(*) za jakiś czas, co więcej zostałem nawet świadkiem. Właściwie to spora część ludzi z mojego otoczenia ochajtała się już, lub chajta się w najbliższym czasie. Może i na mnie pora? Pojawia się jednak drobny problem techniczny - brak potencjalnej kandydatki. Kandydatka taka powina charakteryzować się znajomością Linuksa. Zgłoszenia zawierające numer certyfikatu &lt;a href="http://www.redhat.com/certification/rhce/"&gt;RHCE&lt;/a&gt; (być może honorowane będą również inne certyfikaty, w szczególności &lt;a href="http://www.redhat.com/certification/rhct/"&gt;RHCT&lt;/a&gt;), proszę kierować na adres podany w profilu. Dodatkowe punkty za znajomość technik wyszukiwania informacji lub/i metod socjotechnicznych można uzyskać kierując zgłoszenie na mój główny adres mailowy.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);font-size:85%;" &gt;(*) - Czasem spotykana jest również pisownia 'hajtać' - również w słownikach, jednak ze względu na to, że w &lt;a href="http://sjp.pwn.pl/"&gt;słowniku PWN&lt;/a&gt; występuje wyłącznie forma 'chajtać' używam właśnie tej formy.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-3623286291314919520?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/3623286291314919520/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=3623286291314919520' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/3623286291314919520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/3623286291314919520'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/09/moe-pora-si-ochajta.html' title='Może pora się ochajtać?'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-8532526813053074882</id><published>2008-09-06T19:04:00.002+02:00</published><updated>2008-09-06T19:44:20.873+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='czarnobyl'/><title type='text'>Wyjazd do Czarnobyla w Październiku</title><content type='html'>Ponieważ wiele osób szuka tutaj informacji na temat wyjazdu do Czarnobyla, informuję, że w październiku odbędzie się kolejna wycieczka do Strefy. Termin wyjazdu to  7.10-13.10, można będzie między innymi zobaczyć z bliska sarkofag nad zniszczonym blokiem czwartym reaktora jak również zwiedzić opuszczone miasto Prypeć (Припять), w którym mieszkali kiedyś pracownicy elektrowni. Organizatorzy przewidzieli też niespodziankę, jest ona rzeczywiście bardzo atrakcyjna. Więcej szczegółów odnośnie wyjazdu można znaleźć na stronie &lt;a href="http://strefazero.org/"&gt;StrefaZero.org&lt;/a&gt;. Zapraszam wszystkich których nie przeraża duża liczba mitów o katastrofie w Czarnobylu i chcieliby na własne oczy zobaczyć jak Strefa wygląda w rzeczywistości!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://geekowo.blogspot.com/search/label/czarnobyl"&gt;Więcej wpisów o wycieczkach do Czarnobyla&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-8532526813053074882?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/8532526813053074882/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=8532526813053074882' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/8532526813053074882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/8532526813053074882'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/09/wyjazd-do-czarnobyla-w-padzierniku.html' title='Wyjazd do Czarnobyla w Październiku'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-6399421276680071083</id><published>2008-09-03T00:08:00.005+02:00</published><updated>2008-09-03T10:43:25.239+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Qtopia'/><category scheme='http://www.blogger.com/atom/ns#' term='Freerunner'/><title type='text'>Pieprzone Moko + akcent pozytywny</title><content type='html'>Spodziewałem się, że ten dzień kiedyś nastąpi (choć w rzeczywistości w głębi duszy miałem nadzieję, że jednak nie nastąpi), ale nie spodziewałem się, że aż tak szybko...&lt;br /&gt;Wkurzyłem się dziś mocno na moje Moko. Chodzi o to, że dopiero dziś przeczytałem SMSa wysłanego kilka dni temu, a był to SMS z zaproszeniem na pożegnalne piwo od kolegi z (byłej) pracy. Nie wiem czy ten SMS był na liście odebranych SMSów już wcześniej, wydaje mi się że nie, a jeśli nawet był nie dostałem wtedy z jakiegoś powodu notyfikacji o jego nadejściu, grrrr....&lt;br /&gt;Nie jest to pierwszy przypadek gdy moje Moko nie do końca działa, nie dotarł do mnie kiedyś SMS wysłany z sieci norweskiej, jak również nie można się było do mnie dodzwonić, mimo że miałem włączony telefon...&lt;br /&gt;Chyba rzeczywiście pora sprawić sobie normalny aparat.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;No i żeby zakończyć pozytywnie (zupełnie nie związany z tematem) filmik - "Paragliding, Man &amp;amp; Bird":&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/4skjj19Mkdw&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/4skjj19Mkdw&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-6399421276680071083?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/6399421276680071083/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=6399421276680071083' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/6399421276680071083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/6399421276680071083'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/09/pieprzone-moko-akcent-pozytywny.html' title='Pieprzone Moko + akcent pozytywny'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-715055196603488601</id><published>2008-09-02T17:12:00.007+02:00</published><updated>2008-10-14T20:26:50.201+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Czy Google zrobi mi dobrze?</title><content type='html'>Google stworzy własną przeglądarkę o nazwie &lt;a href="http://tech.slashdot.org/tech/08/09/01/162224.shtml"&gt;Chrome&lt;/a&gt;. Od pewnego czasu miałem nadzieję, że tak się stanie - Google jako potentat w dziedzinie aplikacji webowych potrzebuje dla nich stabilnej platformy, o co w czasach przeglądarek o jednowątkowym UI, wątpliwej stabilności, szybkości i responsywności nie jest prosto.&lt;br /&gt;Ja od swojej przeglądarki oczekuję kilku rzeczy:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;poprawnego wyświetlania stron&lt;br /&gt;&lt;/li&gt;&lt;li&gt;stabilności&lt;/li&gt;&lt;li&gt;responsywności&lt;/li&gt;&lt;li&gt;szybkości&lt;/li&gt;&lt;li&gt;opensourcowości&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Niestety żadna istniejąca przeglądarka nie jest mi w stanie tego zapewnić. Firefox jest wolny, mulasty, a co najgorsze mało responsywny, przełączanie tabów potrafi zająć bardzo dużo czasu i jest z mojego punktu widzenia nieakceptowalne. Nie grzeszy on również stabilnością, a jego sposób implementacji pluginów sprawia, że źle napisany plugin (czytaj Flash) potrafi przewrócić całą przeglądarkę.&lt;br /&gt;W związku z tym, że Firefox jest popsuty, staram się używać Konquerora. Staram się, gdyż nie zawsze jest to możliwe - Konqueror jako przeglądarka niszowa nie jest brana pod uwagę przez twórców stron, w związku z czym często trafiam na strony których nie da się używać w tej przeglądarce. Kojenym problemem Konquerora jest to, że nie zawsze poprawnie działa w nim Flash i część stron jest nieużywalna z tego powodu. Ma on jednak dużo zalet: jest dużo bardziej responsywny od Firefoxa i dużo od niego stabilniejszy, jest też mniej zasobożerny i ma sporo krótszy czas uruchamiania. Te wszystkie cechy sprawiają, że używam Konquerora jako podstawowej przeglądarki, a Firefoxa jako "fallbacku" gdy coś zawiedzie.&lt;br /&gt;Niestety, mimo że Konqueror jest lepszy pod pewnymi względami, zawsze będzie w tyle ze Firefoxem ze względu na znacznie mniejszą społeczność skupioną wokół jego rozwoju...&lt;br /&gt;Patologiczną systucję na rynku przeglądarek może rozwiązać duży gracz taki jak Google i mam nadzieję, że  Chrome wprowadzi nową jakość na rynek przeglądarek.&lt;br /&gt;Na koniec &lt;a href="http://www.google.com/googlebooks/chrome/index.html"&gt;komiks&lt;/a&gt; prezentujące cechy Chrome. Warto poczytać, gdyż projekt zapowiada się ciekawie: każdy tab reprezentowany przez osobny proces, nowy silnik JavaScript, WebKit jako mechanizm renderowania...&lt;br /&gt;Mam tylko nadzieję, że nowa przeglądarka Googla nie okaże się równie wielkim rozczarowaniem jak Android...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-715055196603488601?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/715055196603488601/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=715055196603488601' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/715055196603488601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/715055196603488601'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/09/czy-google-zrobi-mi-dobrze.html' title='Czy Google zrobi mi dobrze?'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-7466498458227090603</id><published>2008-08-29T12:35:00.006+02:00</published><updated>2008-10-14T20:26:30.897+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='muzyka'/><title type='text'>Wybaczam Deathstars</title><content type='html'>Dziś &lt;a href="http://last.fm/"&gt;Last.fm&lt;/a&gt; polecił mi wykonawcę &lt;a href="http://www.lastfm.pl/music/Deathstars"&gt;Deathstars&lt;/a&gt;. Z Deathstars miałem już do czynienia wcześniej - grali jako support przed &lt;a href="http://www.lastfm.pl/music/Korn"&gt;KoЯnem&lt;/a&gt;. Wypadli wtedy bardzo słabo, obraziłem się na nich i postanowiłem ich nie słuchać. Przeglądając dzisiaj rekomendacje Last.fm postanowiłem jednak odsłuchać ich (moim zdaniem) najlepszy kawałek - Cyanide:&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Ly-jMFFjIbM&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/Ly-jMFFjIbM&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Kawałek jest po prostu bezbłędny, mimo że byłem rozczarowany, gdy zagrali go przed KoЯnem.  Muszę jednak przyznać, że supporty wypadają z reguły dość słabo - jedyny naprawdę powalający support jaki słyszałem w historii mojego chodzenia na koncerty to &lt;a href="http://www.lastfm.pl/music/Pain"&gt;Pain&lt;/a&gt;, którego zacząłem słuchać od tamtego momentu. Wybaczam zatem Deathstars i dołączam ich na stałe do mojej playlisty :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-7466498458227090603?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/7466498458227090603/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=7466498458227090603' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/7466498458227090603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/7466498458227090603'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/08/wybaczam-deathstars.html' title='Wybaczam Deathstars'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-4490253798629927092</id><published>2008-08-27T21:01:00.015+02:00</published><updated>2008-08-27T22:23:12.222+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Qtopia'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenMoko'/><category scheme='http://www.blogger.com/atom/ns#' term='Freerunner'/><title type='text'>Internet z Freerunnera</title><content type='html'>Jest taki niezbyt ładny kawał:&lt;br /&gt;&lt;blockquote&gt;Wy [...] to macie fajnie, a my [...] musimy kombinować.&lt;/blockquote&gt;&lt;br /&gt;Kto zna, ten wie o co chodzi, a ten kto nie zna może:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;zrezygnować z szukania - bo jak już pisałem kawał jest brzydki&lt;/li&gt;&lt;li&gt;potraktować to jako przeżycie &lt;a href="http://www.thechurchofgoogle.org/"&gt;religijne&lt;/a&gt;&lt;/li&gt;&lt;li&gt;potraktować to jako ćwiczenie z &lt;a href="http://www.google.pl/"&gt;googlania&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Z nami - użytkownikami otwartych telefonów jest podobnie. W &lt;a href="http://geekowo.blogspot.com/2008/08/kurs-paralotniowy.html"&gt;poprzednim wpisie&lt;/a&gt; wspominałem o tym, że podczas kursu paralotniowego używałem mojego Freerunnera jako Źródła Internetu. Nie było to jednak zupełnie trywialne, żeby nawiązać połączenie GPRS używałem ręcznie wydzierganej konfiguracji pppd i chat-scriptów, coś &lt;a href="http://wiki.openmoko.org/wiki/Manually_using_GPRS"&gt;w tym stylu&lt;/a&gt;. Oczywiście po wcześniejszym ubiciu qpe (a właściwie nawet całej Qtopii), bo multiplexowania oczywiście domyślnie nie ma. Ale dostęp do Internetu na telefonie to dopiero połowa sukcesu, właściwym celem był dostęp do Internetu na laptopie, a tu sprawa nie była aż taka prosta. W obrazie który mam zainstalowany na moim Freerunnerze nie było iptables (nie sprawdzałem też, czy NAT jest wkompilowany w jądro), zatem nie mogłem zrobić maskarady. Ponieważ potrzebowałem wyłącznie &lt;a href="http://psi-im.org/"&gt;komunikatora&lt;/a&gt; i przeglądarki, zdecydowałem się skorzystać z tego co oferuje SOCSKS. Zrobiłem zatem:&lt;br /&gt;&lt;pre&gt;ssh -D 5555 root@motoko&lt;/pre&gt;&lt;br /&gt;(kochane ssh :-) i miałem już miałem Internet. Przy okazji pręgierz dla Firefoxa, który domyślnie próbował rozwiązywać nazwy przy użyciu lokalnego serwera DNS, co więcej w GUI nie było możliwości przełączenia i musiałem tej opcji szukać w about:config.&lt;br /&gt;&lt;br /&gt;Ciekawe kiedy mi się znudzi ta cała zabawa z Freerunnerem i wezmę jakiś normalny telefon z oferty Playa (albo nie-Playa - vide niesławne &lt;a href="http://en.wikipedia.org/wiki/Mobile_number_portability"&gt;MNP&lt;/a&gt;), a póki co może zechce mi się uruchomić multpilexowanie i jakąś rozsądniejszą formę udostępniania połączenia - NAT lub nawiązywanie połączenia GPRS po stronie laptopa, ale do tego trzeba chęci...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-4490253798629927092?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/4490253798629927092/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=4490253798629927092' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/4490253798629927092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/4490253798629927092'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/08/internet-z-freerunnera.html' title='Internet z Freerunnera'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-8489239532599667081</id><published>2008-08-26T13:57:00.010+02:00</published><updated>2008-08-26T15:31:02.446+02:00</updated><title type='text'>Kurs paralotniowy</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_uUPqmLJl9XM/SLP9ET-Pk9I/AAAAAAAAABw/UFh-IHWXep0/s1600-h/zh_czekajac_na_warunki.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_uUPqmLJl9XM/SLP9ET-Pk9I/AAAAAAAAABw/UFh-IHWXep0/s200/zh_czekajac_na_warunki.jpg" alt="" id="BLOGGER_PHOTO_ID_5238809042084664274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;W poprzednim tygodniu byłem na pierwszym etapie kursu paralotniowego w Międzybrodziu Żywieckim, dlatego też miałem ograniczony dostęp do sieci (wyłącznie przez GPRS na Freerunnerze - co też chyba kiedyś opiszę), a co za tym idzie również (o zgrozo!) do bloga. Kurs robiłem w szkole paralotniowej &lt;a href="http://www.alti-paralotnie.pl/"&gt;Alti&lt;/a&gt; prowadzonej przez Wojtka i Tamarę Dudek. Instruktorzy są bardzo sympatyczni, szkolenie przebiegało w miłej atmosferze, choć oczywiście nie obyło się bez strofowania uczniów którzy z różnych względów latali niezgodnie z regułami sztuki.  Wszystkim chcącym się nauczyć latać na paralotni gorąco polecam tę szkołę.&lt;br /&gt;Kolejną dużą zaletą szkolenia się tam są piękne okolice góry &lt;a href="http://pl.wikipedia.org/wiki/%C5%BBar_%28szczyt%29"&gt;Żar&lt;/a&gt;, a jedyna wada (jak dla mnie), to fakt, że jest trochę daleko od &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_uUPqmLJl9XM/SLP9WTICgqI/AAAAAAAAAB4/NZyw9sqkPOc/s1600-h/zh_w_locie.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_uUPqmLJl9XM/SLP9WTICgqI/AAAAAAAAAB4/NZyw9sqkPOc/s200/zh_w_locie.jpg" alt="" id="BLOGGER_PHOTO_ID_5238809351094960802" border="0" /&gt;&lt;/a&gt;Warszawy. Jeśli jednak ma się wolny urlop (lub jest się &lt;a href="http://geekowo.blogspot.com/2008/08/bezrobotny-ii.html"&gt;bezrobotnym&lt;/a&gt;), jest to świetny sposób na spędzenie wolnego czasu.&lt;br /&gt;Podczas pobytu w Międzybrodziu mieszkałem &lt;a href="http://www.turystyka.beskidy.pl/domek_tim/"&gt;tu&lt;/a&gt;. Warunki były bardzo dobre, za dość niewielką cenę, choć niestety (na szczęście?) nie było sieci i było trochę daleko do szkoły paralotniowej.&lt;br /&gt;&lt;br /&gt;Obok dwie fotki zrobione przez Piotrka (pozdrawiam!). Pierwsza przedstawia oczekiwanie na odpowiednie warunki, natomiast druga (jak widać) została zrobiona w locie, więcej można znaleźć w &lt;a href="http://picasaweb.google.pl/harpik2"&gt;picassowej galerii Piotrka&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Po zakończeniu kursu otrzymałem Książkę Lotów i świadectwo ukończenia szkolenia o następującej treści:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Niniejszym oświadcza się, że&lt;br /&gt;Zbigniew Hałas&lt;br /&gt;[...]&lt;br /&gt;Odbył szkolenie w certyfikowanej Szkole paralotniowej "ALTI"&lt;br /&gt;w zakresie szkolenia podstawowego (Etap I)&lt;br /&gt;z wynikiem POZYTYWNYM&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Będę musiał pomyśleć kiedyś o drugim etapie...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-8489239532599667081?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/8489239532599667081/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=8489239532599667081' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/8489239532599667081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/8489239532599667081'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/08/kurs-paralotniowy.html' title='Kurs paralotniowy'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_uUPqmLJl9XM/SLP9ET-Pk9I/AAAAAAAAABw/UFh-IHWXep0/s72-c/zh_czekajac_na_warunki.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-7457237427733014408</id><published>2008-08-16T00:16:00.011+02:00</published><updated>2008-08-27T22:25:17.205+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenMoko'/><category scheme='http://www.blogger.com/atom/ns#' term='Freerunner'/><title type='text'>Leniwe życie bezrobotnego</title><content type='html'>&lt;span style="font-weight:bold;"&gt;...czyli zupełnie bezsensowny post&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Dzisiaj będzie o wszystkim i o niczym, czyli o tym co robię (a ściślej czego nie robię) ostatnimi czasy. Jako &lt;a href="http://geekowo.blogspot.com/2008/08/bezrobotny-ii.html"&gt;bezrobotny&lt;/a&gt; zajmuję się głównie jazdą na rolkach, oglądaniem serialu, czytaniem książek, no i oczywiście &lt;a href="http://www.youtube.com/watch?v=-xEzGIuY7kw"&gt;standardową geekową działalnością&lt;/a&gt; (nie koniecznie w tej kolejności). Ciekawsze rzeczy które robiłem ostanio to:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;postawiłem prywatny serwer jabbera (ejabberd + jggtrans)&lt;/li&gt;&lt;li&gt;przeczytałem książkę Wiktora Pielewina &lt;a href="http://www.wab.com.pl/index.php?id=7&amp;amp;bid=621"&gt;"Empire V"&lt;/a&gt;&lt;/li&gt;&lt;li&gt;przetestowałem &lt;a href="http://wiki.openmoko.org/wiki/Om_2008.8"&gt;Om 2008.8&lt;/a&gt;&lt;/li&gt;&lt;li&gt;byłem na defiladzie&lt;/li&gt;&lt;/ul&gt;Podsumowując krótko: serwer działa, książka dobra, choć mogłaby być jeszcze lepsza,&lt;br /&gt;Elvis nadal nie żyje^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H &lt;a href="http://wiki.openmoko.org/wiki/Distributions#Om_2008.8_.28ASU.2C_April.2FAugust_Software_Update.29"&gt;ASU&lt;/a&gt; nadal nie jest dostatecznie używalne, defilada była całkiem fajna, choć niestety zabrakło części lotniczej (na szczęście widziałem trening).&lt;br /&gt;Jak więc widać moje życie toczy się leniwie, a czas przecieka mi między palcami, jednak jest to dość przyjemne - traktuję to jako długi urlop, wkrótce &lt;span style="font-weight: bold;"&gt;z całą pewnością&lt;/span&gt; zajmę się rzeczami ważnymi.  Zastanawiam się tylko czy jako pierwszy cel wybrać podbijanie świata, czy może coś bardziej doniosłego.&lt;br /&gt;&lt;br /&gt;PS&lt;br /&gt;Podczas tworzenia tego posta nie została skrzywdzona żadna owca.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-7457237427733014408?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/7457237427733014408/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=7457237427733014408' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/7457237427733014408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/7457237427733014408'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/08/leniwe-ycie-bezrobotnego.html' title='Leniwe życie bezrobotnego'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-693360311703554753</id><published>2008-08-08T22:23:00.002+02:00</published><updated>2008-08-08T22:36:18.696+02:00</updated><title type='text'>Opowiadanko</title><content type='html'>Właśnie przeczytałem krótkie, ale bardzo ciekawe opowiadanie Teda Chianga "Co z nami będzie" opublikowane w antologii &lt;a href="http://solarisnet.pl/oferta/kroki_w_nieznane_2006"&gt;"Kroki w nieznane" z roku 2006&lt;/a&gt;. Opowiadanie w wersji oryginalnej nosi tytuł "What's Expected of Us" i jest dostępne do pobrania &lt;a href="http://www.concatenation.org/futures/whatsexpected.pdf"&gt;tutaj&lt;/a&gt;. Gorąco polecam!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-693360311703554753?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/693360311703554753/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=693360311703554753' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/693360311703554753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/693360311703554753'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/08/opowiadanko.html' title='Opowiadanko'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-5233898649356535001</id><published>2008-08-05T13:20:00.003+02:00</published><updated>2008-08-25T20:58:45.944+02:00</updated><title type='text'>Warszawo drżyj!</title><content type='html'>Na mieszkańców Warszawy padł blady strach, a przynajmniej na tych, którzy wiedzą, że &lt;a href="http://paweljablonski.bblog.pl/wpis,stolica;wita,13437.html"&gt;Gorion grasuje w Warszawie&lt;/a&gt;. Co gorsza możliwość spotkania go na ulicy nie jest jedynym możliwym zagrożeniem, nawet ci którzy dowiedzieli się wcześniej o jego przybyciu i od tego momentu żyją za czterometrowym murem mogą się spotkać z destruktywnymi skutkami jego działalności - jak sugeruje poniższy fragment wpisu, Gorion pracuje dla jednego z dostawców Grupy TP w obszarze &lt;a href="http://en.wikipedia.org/wiki/Enterprise_application_integration"&gt;EAI&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;Obecnie pracuję przy JUnitowych testach jednostkowych w Javie, męcząc głównie WebMethods. W przerwach obiadowych konsultuję projekty związane z kryptografią i bezpieczeństwem IT. Firma do której trafiłem to pierwsza liga, nie podkupiono by mnie z niej nawet za 40k na miesiąc :)&lt;/blockquote&gt;&lt;br /&gt;Bardzo dobrze, że nie mam już telefonu w Orange, a swoją drogą jestem ciekawy jaka firma zatrudniła tego człowieka, choć właściwie nie powinienem w to wnikać, bo stracę do niej cały szacunek...&lt;br /&gt;&lt;br /&gt;Update:&lt;br /&gt;Dowiedziałem się, że Gorion pracuje w &lt;a href="http://www.infovide.pl/"&gt;Infovide-Matrix&lt;/a&gt;. Firmie gratuluję i życzę równie udanych decyzji HRowych w przyszłości.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-5233898649356535001?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/5233898649356535001/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=5233898649356535001' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/5233898649356535001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/5233898649356535001'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/08/warszawo-dryj.html' title='Warszawo drżyj!'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-5692341973577273854</id><published>2008-08-03T23:08:00.006+02:00</published><updated>2008-12-10T00:42:36.548+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Qtopia'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenMoko'/><category scheme='http://www.blogger.com/atom/ns#' term='Freerunner'/><title type='text'>Zaczynam używać Freerunnera</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;...czyli jak łoś pod górę(*)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Było piękne sobotnie popołudnie, a ja ze strachem w oczach zabierałem się do migracji listy kontaktów ze służbówki, którą muszę oddać w poniedziałek (patrz post niżej), na mój nowy nabytek, czyli &lt;a href="http://wiki.openmoko.org/"&gt;Freerunnera&lt;/a&gt;. Mimo że jest to telefon eksperymentalny, postanowiłem zacząć używać go na co dzień. Jako docelową platformę programową wybrałem &lt;a href="http://qtopia.net/"&gt;Qtopię&lt;/a&gt;, gdyż uważam, że &lt;a href="http://wiki.openmoko.org/wiki/Openmoko2007.2"&gt;Openmoko 2007.2&lt;/a&gt; jest oprogramowaniem zbyt mało funkcjonalnym, natomiast ASU, czyli port Qtopii na X11 jest jeszcze zbyt mało dojrzały.&lt;br /&gt;Teraz chyba pora wyjaśnić przyczynę owego strachu w oczach. Chodzi o to, że z takimi migracjami zawsze są problemy, zwłaszcza jeśli się to robi pod Linuksem i nie posiada oprogramowania producenta telefonu. Poprzednim razem migrując kontakty z jednego telefonu na inny musiałem uciec się do najprymitywniejszej ze znanych mi metod, to znaczy zrzucenia listy kontaktów na kartę SIM w telefonie źródłowym i przywrócenie ich w docelowym. Na moje szczęście telefon źródłowy był obsługiwany przez gnokii, dzięki czemu mogłem bezproblemowo zgrać zdjęcia.&lt;br /&gt;Tym razem nie musiałem zgrywać zdjęć, więc odpadała przynajmniej jedna potencjalnie skomplikowana czynność. Jako pierwszą próbę przegrania listy kontaktów wybrałem Bluetooth gdyż, tak wydawało się być najprościej i rzeczywiście było, bez problemu przegrałem testowo pierwszy kontakt na Freerunnera... niestety tylko do czasu. Gdy zaznaczyłem wszystkie kontakty z listy (a mam ich sporo) i spróbowałem wysłać do mojego Neo na ekranie pojawiło się bardzo dużo okienek z pytaniem o potwierdzenie dodania kontaktu, a cała aplikacja zarządzania kontaktami się przymuliła, nawet po odczekaniu dłuższej chwili i kliknięciu potwierdzenia, aplikacja wywalała się. Sięgnąłem wtedy do źródeł Qtopii. Okazało się, że w momencie importowania listy kontaktów do aplikacji zarządzającej kontaktami przekazywany jest plik z kontaktami w formacie vCard. Przyczyną problemu było to, że kontakty nie były przekazane jako jedna paczka, tylko jako zestaw niepogrupowanych plików vCard, co w efekcie doprowadziło do wywałki aplikacji zarządzania kontatktami. Aby obejść problem skleiłem pliki z &lt;pre&gt;/tmp/qtopia-0/obex/in/&lt;/pre&gt; i aplikację zarządzającą kontaktami wywołałem z wynikowym plikiem. Tym razem import przebiegł bez problemu i tym samym pierwszy krok w kierunku używanie mojego Neo "na poważnie" został wykonany.&lt;br /&gt;&lt;br /&gt;Czego spodziewam się po moim Moko? Przede wszystkim zabawy, gdyż nie jest to jeszcze raczej zbyt dojrzały produkt (przynajmniej od strony programowej, choć czasem wychodzą również problemy &lt;a href="http://wiki.openmoko.org/wiki/GPS_Problems"&gt;sprzętowe&lt;/a&gt;), sądzę, że z tego powodu będę miał czasem problemy z dzwonienieniem, odbieraniem telefonu lub SMSami(**), jednak czego się nie robi, żeby:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;móc zasshować się na swój telefon&lt;/li&gt;&lt;li&gt;mieć na nim tapetę z Motoko(***) w sporej rozdzielczości :)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_uUPqmLJl9XM/SJYgaczdtTI/AAAAAAAAABg/PJ1Yf59memI/s1600-h/freerunner_qtopia_motoko.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_uUPqmLJl9XM/SJYgaczdtTI/AAAAAAAAABg/PJ1Yf59memI/s320/freerunner_qtopia_motoko.png" alt="" id="BLOGGER_PHOTO_ID_5230403656018146610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);font-size:85%;" &gt;(*) - Nie jest to rzecz dobrze zbadana ze względu na małe wykorzystanie łosi w charakterze pociągowym, jednak zachodzi uzasadnione podejrzenie, że łosie takie kombinują w stopniu nie mniejszym niż konie&lt;br /&gt;(**) - Problemy te mogę oczywiście zwalać na mojego nowego operatora, którym wbrew temu co sugeruje screenshot jest Play ;)&lt;br /&gt;(***) - Czy można sobie wyobrazić lepszą nazwę dla mojego Moko niż Motoko?&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-5692341973577273854?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/5692341973577273854/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=5692341973577273854' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/5692341973577273854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/5692341973577273854'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/08/zaczynam-uywa-freerunnera.html' title='Zaczynam używać Freerunnera'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_uUPqmLJl9XM/SJYgaczdtTI/AAAAAAAAABg/PJ1Yf59memI/s72-c/freerunner_qtopia_motoko.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-2184697298596518175</id><published>2008-08-02T00:41:00.002+02:00</published><updated>2008-08-02T01:01:10.119+02:00</updated><title type='text'>Straszny piątek</title><content type='html'>W tym poście miałem pojechać po filmie "Robale" (&lt;a href="http://www.imdb.com/title/tt0439815/"&gt;"Slither"&lt;/a&gt;), wyświetlanym wczoraj w Ogrodzie Saskim w ramach cyklu &lt;a href="http://filmowastolica.pl/page6.htm"&gt;Strrraszne piątki&lt;/a&gt;, ale stwierdziłem, że szkoda na to mojego czasu. Napiszę tylko, że film nawet nie jest pukaniem w dno od spodu, bo od spodu dna dzieli go kilkaset metrów mułu. Jest on gorszy nawet od niesławnej "Martwicy mózgu" (&lt;a href="http://www.imdb.com/title/tt0103873/"&gt;"Braindead"&lt;/a&gt;), o której sądziłem, że nie może mnie spotkać już nic gorszego. &lt;br /&gt;A na koniec informacja dla jednego-z-czytelników-tego-bloga-który-wie-że-o-niego-chodzi: mój drogi, już nigdy nie wybierasz filmu na który mamy iść.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-2184697298596518175?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/2184697298596518175/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=2184697298596518175' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/2184697298596518175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/2184697298596518175'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/08/straszny-pitek.html' title='Straszny piątek'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-4846946387951346603</id><published>2008-08-01T09:48:00.002+02:00</published><updated>2008-08-01T10:25:34.814+02:00</updated><title type='text'>Bezrobotny II</title><content type='html'>Z kronikarskiego obowiązku odnotowuję, że zakończyłem współpracę z moim pracodawcą i znowu jestem niezatrudniony. Oczywiście moje odejście zostało sfinalizowane stosowną imprezą :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-4846946387951346603?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/4846946387951346603/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=4846946387951346603' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/4846946387951346603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/4846946387951346603'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/08/bezrobotny-ii.html' title='Bezrobotny II'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-5514059252941973315</id><published>2008-07-28T21:29:00.002+02:00</published><updated>2008-07-28T22:03:04.758+02:00</updated><title type='text'>Dupy w informatyce</title><content type='html'>Dziś będzie o roli dupy w informatyce. Zainspirowała mnie do tego historia prawdziwa, która wydarzyła się dziś u mnie w pracy (duża firma telekomunikacyjna związana z jeszcze większą firmą telekomunikacyjną do której wielu ludzi odczuwa głęboką niechęć). Wszyscy wiemy jak ważna jest dupa w informatyce. Czy &lt;span style="font-weight: bold;"&gt;rasowy&lt;/span&gt; użytkownik komputera jest w stanie zalogować się gdziekolwiek nie wpisując '&lt;span style="font-weight: bold;"&gt;dupa.8&lt;/span&gt;'? A czy &lt;span style="font-weight: bold;"&gt;prawdziwy&lt;/span&gt; programista jest w stanie stworzyć działający kod nie korzystając z dupa-printów? Odpowiedź brzmi oczywiście nie! Niektórzy z nieznanych mi przyczyn próbują zastępować dupa-printy test-printami, ale jest to oczywiście działalność z góry skazana na niepowodzenie. A dla niedowiarków dzisiejsza historia. Kolega pisał narzędziowy skrypt w Perlu łączący się do bazy danych i generujący na jej podstawie plik tekstowy. W pewnym momencie ze zdziwieniem stwierdził, że program zawiesza się przy próbie zamknięcia połączenia do bazy. Stwierdziłem, że zapewne się pomylił i program wiesza się w zupełnie innym miejscu. Aby zweryfikować tę hipotezę poprosiłem go o dodanie&lt;br /&gt;&lt;pre&gt;print "dupa\n";&lt;/pre&gt;&lt;br /&gt;między operacją zamknięcia połączenia a wyjściem z programu. Dzięki dodaniu tej magicznej operacji program zaczął działać poprawnie! Po raz kolejny okazuje się, że dupa w informatyce jest niezastąpiona(&lt;span style="color: rgb(204, 204, 204);"&gt;*&lt;/span&gt;)!&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;(*) - Wywrotowcy mogą oczywiście twierdzić, że można było tam wpisać dowolne słowo i również wszystko byłoby Ok, ponadto należało dokładnie zdebugować problem, gdyż pewnie jest to błąd w bibliotece DBI do bazy którą kolega się posługiwał, ale nie słuchajcie ich bo oni nie wiedzą co mówią...&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-5514059252941973315?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/5514059252941973315/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=5514059252941973315' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/5514059252941973315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/5514059252941973315'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/07/dupy-w-informatyce.html' title='Dupy w informatyce'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-1154240255568840371</id><published>2008-07-28T21:23:00.005+02:00</published><updated>2008-08-25T20:59:20.832+02:00</updated><title type='text'>Blog - reaktywacja</title><content type='html'>Zaniedbywałem mojego blogaska ostatnio, oj zaniedbywałem... Miałem zamiar porzucić go na zawsze, jednak po głębszym zastanowieniu postanowiłem go reaktywować - szkoda żeby umarło bezpowrotnie takie źródło nonsensu. No i oczywiście żeby powrócić efektownie pierwszy temat musi być chwytliwy, dlatego na pierwszy front wybrałem &lt;span style="font-weight: bold;"&gt;dupy&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-1154240255568840371?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/1154240255568840371/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=1154240255568840371' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/1154240255568840371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/1154240255568840371'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/07/blog-reaktywacja.html' title='Blog - reaktywacja'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-8577554828647066727</id><published>2008-06-25T23:18:00.005+02:00</published><updated>2008-08-29T13:17:38.335+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='czarnobyl'/><title type='text'>Nowy wyjazd do Czarnobyla</title><content type='html'>W zasadzie nie prowadzę już tego bloga, ale wiele osób ciągle szuka tu informacji o możlwości wyjazdu do Czarnobyla. Informuję zatem, że kolejny wyjazd będzie w połowie lipca, więc jest jeszcze szansa żeby się zapisać. Więcej informacji: &lt;a href="http://strefazero.org"&gt;http://strefazero.org&lt;/a&gt;. Jeśli trafiłeś na tę stronę później, mimo wszystko zerknij pod wskazany adres. Wycieczka o której piszę jest już trzecią z kolei i wiele wskazuje na to, że nie ostatnią.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-8577554828647066727?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/8577554828647066727/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=8577554828647066727' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/8577554828647066727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/8577554828647066727'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2008/06/nowy-wyjazd-do-czarnobyla.html' title='Nowy wyjazd do Czarnobyla'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-8052878544173240348</id><published>2007-11-15T02:05:00.000+01:00</published><updated>2007-11-15T02:25:26.803+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='macgyveryzm'/><title type='text'>Otwieranie wina bez korkociągu</title><content type='html'>Dziś będzie notka o otwieraniu wina bez użycia korkociągu, być może komuś się przyda. Znaleźliśmy się w trudnej sytuacji - zaszła potrzeba otworzenia wina, jednak korkociąg nie był dostępny, a pożyczenie od sąsiadów nie wchodziło raczej w grę ze względu na późną porę. W zasadzie możnaby wepchnąć korek do środka, ale uznałem to za ostateczność. Rozglądając się za potencjalnie przydatnymi narzędziami znalazłem wkręty do drewna. Okazuje się, że używając kombinerek i wkrętów można z pewną dozą wysiłku otworzyć wino. Oczywiście nie jest to tak łatwe jak przy użyciu korkociągu (zarówno ze względu na gwint, jak i gorszy chwyt), jednak jest wykonalne. Zdrowie!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-8052878544173240348?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/8052878544173240348/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=8052878544173240348' title='Komentarze (4)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/8052878544173240348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/8052878544173240348'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2007/11/otwieranie-wina-bez-korkocigu.html' title='Otwieranie wina bez korkociągu'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-2088027076217788760</id><published>2007-11-09T01:19:00.000+01:00</published><updated>2007-11-09T01:29:40.827+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><title type='text'>Tańczące parabole</title><content type='html'>Dostałem właśnie linka do maksymalnie abstrakcyjnej i absurdalnej animacji. Animacja ta ma siłę niszczącą większą niż słynna &lt;a href="http://dojo.fi/%7Erancid/loituma__.swf"&gt;Dziewczynka z Porem&lt;/a&gt;, dozować ostrożnie:&lt;br /&gt;&lt;a href="http://j-klimek.ovh.org/"&gt;http://j-klimek.ovh.org/&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Uwaga&lt;/span&gt;: wymaga specyficznego poczucia humoru!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-2088027076217788760?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/2088027076217788760/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=2088027076217788760' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/2088027076217788760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/2088027076217788760'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2007/11/taczce-parabole.html' title='Tańczące parabole'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-8144891694344667827</id><published>2007-11-05T23:36:00.000+01:00</published><updated>2008-12-10T00:42:36.777+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><title type='text'>KDE 4 Beta 4</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_uUPqmLJl9XM/Ry-fckDZEtI/AAAAAAAAABI/eS--z1mZemI/s1600-h/kde_4_beta_4_s2.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_uUPqmLJl9XM/Ry-fckDZEtI/AAAAAAAAABI/eS--z1mZemI/s320/kde_4_beta_4_s2.png" alt="" id="BLOGGER_PHOTO_ID_5129493813661340370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;W związku z wydaniem KDE 4 Beta (Live CD dostępne jest &lt;a href="http://home.kde.org/%7Ebinner/kde-four-live/"&gt;tutaj&lt;/a&gt;) zostałem poproszony o jego recenzję.&lt;br /&gt;Uważam, że wszystko jest na dobrej drodze. W porównaniu z poprzednimi wydaniami środowisko uległo znaczącej stabilizacji, aplikacje ulegają awariom znacznie rzadziej, sama Plasma i jej aplety zostały również dopracowane. Większość celów została już osiągnięta, to co musi jeszcze zostać zrobione opisuje dokument &lt;a href="http://techbase.kde.org/Schedules/KDE4/4.0_Release_Beta_Goals"&gt;http://techbase.kde.org/Schedules/KDE4/4.0_Release_Beta_Goals&lt;/a&gt;.   W zupełności zgadzam się z tym dokumentem, jak dla mnie najbardziej przeszkadzającą rzeczą jest mało konfigurowalny panel (pierwsza pozycja na liście rzeczy do zrobienia). Jedyna kwestia która trochę martwi, to fakt, że tak ważna technologia jak Plasma, jeden z koni pociągowych KDE 4, nie przybrała jeszcze ostatatecznego kształtu na tym etapie projektu.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-8144891694344667827?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/8144891694344667827/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=8144891694344667827' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/8144891694344667827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/8144891694344667827'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2007/11/kde-4-beta-4.html' title='KDE 4 Beta 4'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_uUPqmLJl9XM/Ry-fckDZEtI/AAAAAAAAABI/eS--z1mZemI/s72-c/kde_4_beta_4_s2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-5093383589214178511</id><published>2007-11-05T20:52:00.000+01:00</published><updated>2007-11-06T14:27:56.598+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenMoko'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>GPhone</title><content type='html'>Google rozwiało spekulacje na temat telefonu nad którym rzekomo miało pracować &lt;a href="http://googleblog.blogspot.com/2007/11/wheres-my-gphone.html"&gt;wpisem&lt;/a&gt; na swoim blogu. Jak się okazuje nie będzie telefonu, tylko &lt;a href="http://www.openhandsetalliance.com/press_110507.html"&gt;otwarta platforma dla urządzeń mobilnych&lt;/a&gt; o nazwie Android. Poniżej krótki filmik prezentujący nową platformę:&lt;br /&gt;&lt;br /&gt;&lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/6rYozIZOgDk&amp;amp;rel=1"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/6rYozIZOgDk&amp;amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ciekawy jestem jak pojawienie się Androida wpłynie na &lt;a href="http://openmoko.org/"&gt;OpenMoko&lt;/a&gt;, inny projekt mający w pewnym stopniu podobne założenia, którego rozwój od dłuższego czasu śledzę.&lt;br /&gt;&lt;br /&gt;Czy zdradzę OpenMoko? Jeszcze nie wiem, w projekcie pociągała mnie głównie otwartość technologiczna, hakowalność, no i oczywiście możliwość używania Linuksa na swoim telefonie. Wydaje się, że im więcej alternatyw tym lepiej, choć może z punktu widzenia Open Source model otwartości OpenMoko jest lepszy i nie chodzi mi tu o model rozwoju, tylko pełną otwartość sprzętową.&lt;br /&gt;&lt;br /&gt;Ciekawe mogą być wyniki połączenia obu tych projektów: sprzętu stworzonego na potrzeby projetku OpenMoko - &lt;a href="http://wiki.openmoko.org/wiki/Neo1973"&gt;Neo1973&lt;/a&gt; i Androida, ale to tylko moje spekulacje - w chwili obecnej niewiele jeszcze wiadomo o samym Androidzie - &lt;a href="http://www.openhandsetalliance.com/developers.html"&gt;SDK&lt;/a&gt; będzie dostępne dopiero za jakiś czas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-5093383589214178511?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/5093383589214178511/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=5093383589214178511' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/5093383589214178511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/5093383589214178511'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2007/11/gphone.html' title='GPhone'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-3826868284182723090</id><published>2007-10-31T01:34:00.000+01:00</published><updated>2007-10-31T01:58:20.991+01:00</updated><title type='text'>Kabel sieciowy dobry na wszystko</title><content type='html'>Potrzebowałem dzisiaj rurki do odessania pewnej ilości wody ze zbiornika  - mniejsza o to co to za zbiornik, nie ma to znaczenia dla meritum sprawy, czyli wyższości technologii sieciowych wykorzystujących jako medium transmisyjne skrętkę od technologii używających innego nośnika.&lt;br /&gt;&lt;br /&gt;W poszukiwaniu rurki przeglądałem moje zasoby rupieci wszelakich i nie znalazłem tam niczego stosownego, były tylko rurki termokurczliwe, ale nie dość, że były krótkie i tak prawdopodobnie nie nadawałyby się ze względu na podatność na załamania.&lt;br /&gt;&lt;br /&gt;Już miałem się poddać, gdy zauważyłem leżący w kącie kawałek kabla sieciowego. Przyciąłem ten kabel na odpowiednią długość, wyjąłem medium transmisyjne odpowiednie dla Ethernetu (czyli wszystkie pary skrętki) zostawiając medium transmisyjne odpowiednie dla wody (czyli "pustość") i rurka gotowa!&lt;br /&gt;&lt;br /&gt;Tak więc po raz kolejny kabel sieciowy uratował świat! No, może nie uratował i nawet nie cały świat, ale okazał się niezywkle pomocny.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-3826868284182723090?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/3826868284182723090/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=3826868284182723090' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/3826868284182723090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/3826868284182723090'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2007/10/kabel-sieciowy-dobry-na-wszystko.html' title='Kabel sieciowy dobry na wszystko'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-6230931496385545295</id><published>2007-10-24T21:15:00.000+02:00</published><updated>2007-10-24T22:33:51.751+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='BSD'/><title type='text'>meetBSD 2007</title><content type='html'>Postanowiliśmy dzisiaj wraz z kumplem zbezcześcić sabat BSDowców odbywający się 17 i 18 listopada bieżącego roku w Warszawie. Więcej szczegółów na &lt;a href="http://meetbsd.org/"&gt;http://meetbsd.org&lt;/a&gt;. Zbezczeszczenia dokonamy w sposób skrytobójczy - przez swoją obecność(*). Drżyjcie BSDowcy :-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(*) - Jesteśmy linuksiarzami&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-6230931496385545295?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/6230931496385545295/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=6230931496385545295' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/6230931496385545295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/6230931496385545295'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2007/10/meetbsd-2007.html' title='meetBSD 2007'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-8480469577914192938</id><published>2007-10-23T19:30:00.000+02:00</published><updated>2008-12-10T00:42:36.923+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><title type='text'>KDE 4 Beta 3+</title><content type='html'>Zabrałem się właśnie za testowanie nowej Bety KDE 4. Właściwie jest to trochę więcej niż Beta 3 - obraz który testowałem: &lt;a href="http://home.kde.org/%7Ebinner/kde-four-live/"&gt;http://home.kde.org/~binner/kde-four-live/&lt;/a&gt;  oparty jest głównie o snapshot 3.94.1. Muszę przyznać, że jest dużo lepiej w porównaniu z &lt;a href="http://geekowo.blogspot.com/2007/09/kde-4-beta-2-wraenia.html"&gt;Beta 2&lt;/a&gt;, jednak wciąż nie jest doskonale.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_uUPqmLJl9XM/Rx41MBgyRvI/AAAAAAAAAAg/5nYpk_RocnY/s1600-h/kde-4-beta-3-plus-s3.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_uUPqmLJl9XM/Rx41MBgyRvI/AAAAAAAAAAg/5nYpk_RocnY/s320/kde-4-beta-3-plus-s3.png" alt="" id="BLOGGER_PHOTO_ID_5124591906674853618" border="0" /&gt;&lt;/a&gt; Większość denerwujących mnie błędów została usunięta, niestety ciągle pojawiają się problemy ze stabilnością - kilka razy natknąłem się na błędy w Konquerorze, wystąpiły też problemy w samej Plasmie. Mimo tych drobnych wpadek uważam, że można to wydanie uznać za &lt;span style="font-weight: bold;"&gt;używalne&lt;/span&gt;.&lt;br /&gt;Tu miałem sobie trochę pomarudzić: że zastąpienie Kickera panelem opartym na Plasmie jest złym pomysłem, że nowe KDE stwarza wrażenia przesłodzonego, że...&lt;br /&gt;Nie będę jednak marudził, należy pamiętać, że nie jest to jeszcze gotowy produkt, choć szczerze powiedziawszy nowe KDE prezentuje się całkiem dobrze. Sądzę, że ma szansę stać się przyjemnym i użytecznym środowiskiem graficznym. Inna filozofia działania pewnych elementów pewnie jeszcze nieraz  sprawi, że zatęsknię za starym KDE, jednak jeśli nie będzie jakiś większych problemów nie będę marudził. Wiadomo przecież, że tak duże zmiany nie mogą się odbyć bez regresji w pewnych obszarach...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-8480469577914192938?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/8480469577914192938/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=8480469577914192938' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/8480469577914192938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/8480469577914192938'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2007/10/kde-4-beta-3.html' title='KDE 4 Beta 3+'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_uUPqmLJl9XM/Rx41MBgyRvI/AAAAAAAAAAg/5nYpk_RocnY/s72-c/kde-4-beta-3-plus-s3.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-4694831232592654063</id><published>2007-10-10T18:46:00.000+02:00</published><updated>2007-10-10T18:57:06.622+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='czarnobyl'/><title type='text'>Zdjęcia z wycieczki do Czarnobyla</title><content type='html'>&lt;a href="http://grzegorz.net"&gt;Grzesiek Niemirowski&lt;/a&gt; opublikował właśnie na Piscassie zdjęcia z wycieczki do Czarnobyla. Galeria znajduje się &lt;a href="http://picasaweb.google.pl/g.niemirowski/Czarnobyl/"&gt;tutaj&lt;/a&gt;. Zapraszam do oglądania!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-4694831232592654063?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/4694831232592654063/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=4694831232592654063' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/4694831232592654063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/4694831232592654063'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2007/10/zdjcia-z-wycieczki-do-czarnobyla.html' title='Zdjęcia z wycieczki do Czarnobyla'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-648109730433531205</id><published>2007-10-05T19:02:00.000+02:00</published><updated>2007-10-05T19:25:21.895+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Perlgolf</title><content type='html'>Dziś ruszyła nowa edycja perlgolfa. Dla niezorientowanych: konkurs polega na tym, żeby napisać możliwie najkrótszy program w Perlu realizujący jakieś zadanie. W tej edycji tematem przewodnim jest kółko i krzyżyk. Program dostaje na wejście pewien stan gry, na przykład:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; |O|X&lt;br /&gt;-+-+-&lt;br /&gt; | |&lt;br /&gt;-+-+-&lt;br /&gt;X| |&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;jego zadaniem jest zablokowanie wygranej przeciwnika w kolejnym ruchu, czyli w tym przypadku wykonanie następującego ruchu:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; |O|X&lt;br /&gt;-+-+-&lt;br /&gt; |O|&lt;br /&gt;-+-+-&lt;br /&gt;X| |&lt;br /&gt;&lt;/pre&gt;Więcej szczegółów &lt;a href="http://mmisiak.internet.v.pl/perlgolf/kik/rules.html"&gt;tu&lt;/a&gt;. Rywalizację można na bieżąco obserwować na grupie pl.comp.lang.perl. Zapraszam do zabawy!&lt;br /&gt;Póki co nie jestem ostatni i mam nadzieję, że tak zostanie, co wcale nie będzie proste biorąc pod uwagę fakt, że w golfie biorą udział głównie perlowi wymiatacze.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-648109730433531205?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/648109730433531205/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=648109730433531205' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/648109730433531205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/648109730433531205'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2007/10/perlgolf.html' title='Perlgolf'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-260982299652807486</id><published>2007-10-02T15:20:00.000+02:00</published><updated>2007-10-02T15:32:41.995+02:00</updated><title type='text'>Zakup pościeli</title><content type='html'>Wczoraj spotkała mnie (wątpliwa) przyjemność kupowania kołdry, poduszki oraz całego zestawu pościeli. O ile same poszewki nie różnią się zbytnio od siebie, wystarczy zatem  wybrać taką która "nie daje po oczach", o tyle w przypadku kołdry i poduszki jest dużo trudniej. Nie dysponując lepszym kryterium wyboru kupiłem kołdrę i poduszkę o nazwie "Linus" :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-260982299652807486?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/260982299652807486/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=260982299652807486' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/260982299652807486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/260982299652807486'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2007/10/zakup-pocieli.html' title='Zakup pościeli'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-1234371451747060276</id><published>2007-10-01T00:28:00.001+02:00</published><updated>2008-12-10T00:42:37.339+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='czarnobyl'/><title type='text'>Wycieczka do Czarnobyla</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_uUPqmLJl9XM/RwAnLRgyRtI/AAAAAAAAAAU/V0POorQxIIU/s1600-h/czarnobyl_zh_na_tle_sarkofagu.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_uUPqmLJl9XM/RwAnLRgyRtI/AAAAAAAAAAU/V0POorQxIIU/s320/czarnobyl_zh_na_tle_sarkofagu.jpg" alt="" id="BLOGGER_PHOTO_ID_5116132251325843154" border="0" /&gt;&lt;/a&gt;Wczoraj wróciłem z czterodniowej wycieczki do Czarnobyla. Była ona organizowana przez stowarzyszenie &lt;a href="http://chelenger.pl/"&gt;Chelenger&lt;/a&gt; oraz Polskie Towarzystwo Nukleoniczne.&lt;br /&gt;Wycieczka wywarła na mnie niesamowite wrażenie. Nie sądziłem, że będzie można zbliżyć się do "punktu zero" na taką niewielką odległość(*), spore wrażenie robi również wielkość, wręcz monumentalność elektrowni oraz całej infrastruktury która wspomagała jej działalność.&lt;br /&gt;Zwiedzaliśmy też opuszczone miasto Prypeć (Припять) w którym mieszkali kiedyś pracownicy elektrowni oraz wiele innych ciekawych miejsc na terenie Strefy.&lt;br /&gt;Dodatkową atrakcją była możliwość zwiedzenia Kijowa (my zdecydowaliśmy się między innymi na muzeum lotnictwa), oraz sama Ukraina, która też potrafi czasami dostarczyć niesamowitych przeżyć. Nie wszystkie z nich były pozytywne, w sumie cieszę się, że mieszkam w Polsce a nie tam...&lt;br /&gt;&lt;br /&gt;Na koniec zdanie wyjaśnienia dla osób troszczących się o moje zdrowie i życie w związku z wycieczką: mam wrażenie, że najbardziej toksyczna rzecz z którą się zetknąłem podczas całej wycieczki było salami kupione w supermarkecie w Kijowie :-)&lt;br /&gt;&lt;br /&gt;Na Google Maps:&lt;br /&gt;&lt;a href="http://maps.google.com/maps?ie=UTF8&amp;amp;t=k&amp;amp;om=1&amp;amp;ll=51.408141,30.055804&amp;amp;spn=0.004544,0.009967&amp;amp;z=17"&gt;Miasto Prypeć&lt;/a&gt; - wyraźnie widać diabelski młyn w wesołym miasteczku&lt;br /&gt;&lt;a href="http://maps.google.com/maps?ie=UTF8&amp;amp;t=k&amp;amp;om=1&amp;amp;ll=51.389626,30.10079&amp;amp;spn=0.004546,0.009967&amp;amp;z=17"&gt;Sarkofag z góry&lt;/a&gt; - na znajdującym się powyżej zdjęciu sarkofagu można zauważyć fragment kwadratowego budynku widocznego również w lewym górnym rogu mapy, jak widać byliśmy naprawdę blisko&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(*) - Patrz zdjęcie - widać tam mnie na tle sarkofagu okrywającego zniszczony blok elektrowni.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;UPDATE:&lt;br /&gt;Wiele osób szuka tu informacji na temat możliwości wyjazdu. Warto przejrzeć &lt;a href="http://geekowo.blogspot.com/search/label/czarnobyl"&gt;listę wpisów o wycieczkach do Czarnobyla&lt;/a&gt;, być może w najbliższym czasie odbędzie się jakiś wyjazd? Warto też zerknąć na stronę &lt;a href="http://strefazero.org/"&gt;StrefaZero.org&lt;/a&gt; gdybym przypadkiem nie napisał na blogu o planowanym wyjeździe.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-1234371451747060276?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/1234371451747060276/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=1234371451747060276' title='Komentarze (11)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/1234371451747060276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/1234371451747060276'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2007/10/wycieczka-do-czarnobyla.html' title='Wycieczka do Czarnobyla'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_uUPqmLJl9XM/RwAnLRgyRtI/AAAAAAAAAAU/V0POorQxIIU/s72-c/czarnobyl_zh_na_tle_sarkofagu.jpg' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-1012281549257317277</id><published>2007-09-19T18:27:00.000+02:00</published><updated>2007-09-19T20:17:58.760+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Wszyscy kochamy swoje komputery...</title><content type='html'>Wielu z nas z komputerami łączy jakiś stosunek emocjonalny. Co gorsza relacje te są raczej jednostronne. Dziś program mający zwiększyć symetrię takich relacji. Celem jego umożliwienie głaskania laptopa... Jest to z założenia żart, jednak aż boję się myśleć co mógłby powiedzieć psycholog o moich ukrytych pragnieniach :-)&lt;br /&gt;&lt;br /&gt;Program wykorzystuje &lt;a href="http://geekowo.blogspot.com/2007/08/python-synaptics-pami-wspdzielona.html"&gt;opisywany już kiedyś&lt;/a&gt; przeze mnie interfejs pozwalający odczytać parametry touchpada, został on nieznacznie poprawiony: okazuje się, że sprawdzenie w ctypes czy wskaźnik przyjmuje wartość -1 nie jest aż takie trudne:&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ctypes.cast&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;shmptr,c_void_p&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.value &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; c_void_p&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.value&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Program korzysta z modułu &lt;a href="http://python.net/crew/theller/ctypes/"&gt;ctypes&lt;/a&gt; (dostępny w standardowej instalacji Pythona od wersji 2.5), wymaga włączenia opcji konfiguracyjnej &lt;span style="font-family: monospace;"&gt;SHMConfig&lt;/span&gt; w pliku konfiguracyjnym Xów, dobrze jest też posiadać bibliotekę XOSD, jednak nie jest to wymogiem, gdyż w przypadku jej braku do wyświetlania komunikatów użyjte zostanie standardowe wyjście.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;#!/usr/bin/python&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;# http://geekowo.blogspot.com/2007/09/wszyscy-kochamy-swoje-komputery.html&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;import&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ctypes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;import&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ctypes.util&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;from&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ctypes &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;import&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; c_int,pointer,POINTER,c_void_p&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;import&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; time&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;import&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; math&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;import&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; random&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SHM_SYNAPTICS&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;23947&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MAX_SPEED&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;10000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MIN_SPEED&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;1000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MIN_TIME&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;7&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MAX_PRESSURE&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;100&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;STROKE_WAIT_TIME&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;10&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;STROKE_MAX_MEASURE_TIME&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;12&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;XOSD_FONT&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"-adobe-helvetica-bold-r-normal-*-*-240-*-*-p-*-*-*"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;XOSD_TIME&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;class&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; NoXosdException&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Exception&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;pass&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;class&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; XosdInitException&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Exception&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;pass&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;class&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; xosd&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;def&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; __init__&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        xosd_name&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ctypes.util.find_library&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"xosd"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;not&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; xosd_name&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;raise&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; NoXosdException&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosdlib&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ctypes.CDLL&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;xosd_name&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.font&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;None&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosdlib.xosd_create.restype&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ctypes.c_void_p&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosd&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosdlib.xosd_create&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;not&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosd&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;raise&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; XosdInitException&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosdlib.xosd_set_colour &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosd, &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"green"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosdlib.xosd_set_outline_offset&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosd, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;2&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosdlib.xosd_set_outline_colour&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosd, &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"black"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;def&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; show&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,text&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.font&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosdlib.xosd_set_font&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosd,&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.font&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosdlib.xosd_display&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosd,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,text&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosdlib.xosd_show&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosd&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;def&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; hide&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosdlib.xosd_hide&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosd&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;def&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; __del&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosd&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosdlib.xosd_destroy&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosd&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;class&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SHMStruct&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ctypes.Structure&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    _fields_ &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"_version"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,c_int&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"x"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, c_int&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"y"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, c_int&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"z"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, c_int&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"fingers"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,c_int&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;def&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; get_synaptics&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;():&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    libcname&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ctypes.util.find_library&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"c"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    libc&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ctypes.CDLL&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;libcname&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    desc&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;libc.shmget&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SHM_SYNAPTICS,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; desc&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;==-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;raise&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Exception&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"shmget"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    libc.shmat.restype&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;POINTER&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SHMStruct&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    shmptr&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;libc.shmat&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;desc,&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;None&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ctypes.cast&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;shmptr,c_void_p&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.value &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; c_void_p&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.value&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;# (void *)-1 check&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;raise&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Exception&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"shmat"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; shmptr.contents&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;def&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; wait_for_stroke&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;syn,timeout&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    starttime&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;time.time&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;while&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; syn.fingers&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; time.time&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;()-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;starttime&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;timeout&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;False&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        time.sleep&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;0.1&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;True&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;def&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; get_stroke_parameters&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;syn,stroke_wait_time&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;10&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,stroke_max_time&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;15&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,stroke_max_pause&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    dist&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    max_fingers&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    max_pressure&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    stroke_active_time&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    stroke_time_delta&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;0.1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    finished&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;True&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;not&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; wait_for_stroke&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;syn,stroke_wait_time&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;None&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    stroke_start_time&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;time.time&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;while&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; time.time&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;()-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;stroke_start_time&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;stroke_max_time&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        max_fingers&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;max&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;max_fingers,syn.fingers&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        max_pressure&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;max&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;max_pressure,syn.z&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        x1&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;syn.x&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        y1&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;syn.y&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        time.sleep&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;stroke_time_delta&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        stroke_active_time&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;+=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;stroke_time_delta&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        x2&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;syn.x&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        y2&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;syn.y&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        dist&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;+=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;math.sqrt&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;((&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;x1&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;x2&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)**&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;2&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;y1&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;y2&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)**&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;2&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;not&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; wait_for_stroke&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;syn,stroke_max_pause&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;break&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        finished&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;False&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;{&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"time"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;time.time&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;()-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;stroke_start_time,&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"speed"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;dist&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;stroke_active_time,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;           &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"max_fingers"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;max_fingers,&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"max_pressure"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;max_pressure,&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"finished"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;finished&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;def&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; eval_stroke&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;validator_list,parameters&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;for&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; level &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;in&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; validator_list&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        l&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;level&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;[:]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        l.sort&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;lambda&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; x,y&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; random.randint&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;for&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; validator &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;in&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; l&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            ret&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;validator&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;parameters&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;not&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ret&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;continue&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;val,text&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ret&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; val&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; text&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;""&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;def&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; speed_validator&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;h&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; h&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"speed"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;]&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MAX_SPEED&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;True&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Zbyt szybko!"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; h&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"speed"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;]&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MIN_SPEED&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;True&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Zbyt wolno!"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;def&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; time_validator&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;h&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; h&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"time"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;]&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MIN_TIME&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;True&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Zbyt krotko!"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;def&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; fingers_validator&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;h&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; h&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"max_fingers"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;]&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;True&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Zrob to jednym palcem!"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;def&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; pressure_validator&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;h&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; h&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"max_pressure"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;]&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MAX_PRESSURE&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;True&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Zrob to delikatniej!"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;def&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; true_validator&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;h&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;True&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Idealnie!"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;validator_list&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=[[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;speed_validator,time_validator,fingers_validator,pressure_validator&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;true_validator&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;]]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;class&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; xosd_output&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;def&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; __init__&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,font,showtime&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosd&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;xosd&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosd.font&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;font&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._showtime&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;showtime&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;def&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; mprint&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,text&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosd.show&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;text&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        time.sleep&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._showtime&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;._xosd.hide&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;class&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; stdout_output&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;def&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; mprint&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,text&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;print&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; text&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; __name__&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"__main__"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    emphasis&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;False&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    syna&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;get_synaptics&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    prev_finished&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;finished&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;True&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;try&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        output_object&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;xosd_output&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;XOSD_FONT,XOSD_TIME&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;except&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;NoXosdException,XosdInitException&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;print&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Problem z XOSD, uzywam stdout"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        output_object&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;stdout_output&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;while&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;True&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        params&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;get_stroke_parameters&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;syna,STROKE_WAIT_TIME,STROKE_MAX_MEASURE_TIME&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; params &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;None&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;not&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; emphasis&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                output_object.mprint&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Poglaszcz!"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                output_object.mprint&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"No poglaszcz!"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            emphasis&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;not&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; emphasis&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;continue&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        prev_finished&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;finished&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        finished&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;params&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"finished"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;not&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; prev_finished&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;and&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; finished&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;continue&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        output_object.mprint&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;eval_stroke&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;validator_list,params&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-1012281549257317277?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/1012281549257317277/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=1012281549257317277' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/1012281549257317277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/1012281549257317277'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2007/09/wszyscy-kochamy-swoje-komputery.html' title='Wszyscy kochamy swoje komputery...'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-3074068034077527326</id><published>2007-09-18T07:34:00.000+02:00</published><updated>2007-09-18T08:42:06.802+02:00</updated><title type='text'>Bezrobotny</title><content type='html'>Właśnie zostałem bezrobotnym, no może nie bezrobotnym w sensie ustawowym, w każdym razie wczoraj byłem po raz ostatni w pracy. Później wybraliśmy się wraz z kolegą z (byłej już) pracy na koncert Pro-Pain połączony ze spożyciem niezerowych ilości piwa.&lt;br /&gt;&lt;br /&gt;Czego mi będzie najbardziej brakować? Przede wszystkim ludzi i specyficznego klimatu, jednak decyzje zostały podjęte i trzeba iść do przodu... tylko gdzie ten przód?&lt;br /&gt;&lt;br /&gt;A na koniec cytat z polskiego &lt;a href="http://fdb.pl/f4039,Haker,%282002%29.html"&gt;"Hakera"&lt;/a&gt; który mi się właśnie przypomniał:&lt;br /&gt;"Jak nie możesz przodem, próbuj tyłem do przodu."&lt;br /&gt;Tak, jest to cytat z tego samego kultowego filmu z którego pochodzi słynne &lt;a href="http://www.youtube.com/watch?v=qL4kwZkOG_I"&gt;"Emacsem przez Sendmail"&lt;/a&gt;.&lt;br /&gt;&lt;span style="font-size:-1;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-3074068034077527326?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/3074068034077527326/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=3074068034077527326' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/3074068034077527326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/3074068034077527326'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2007/09/bezrobotny.html' title='Bezrobotny'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-4326627424412088944</id><published>2007-09-09T13:35:00.000+02:00</published><updated>2008-12-10T00:42:37.490+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><title type='text'>KDE 4 Beta 2 - Wrażenia</title><content type='html'>Odpaliłem sobie właśnie live cd z KDE 4 Beta 2 (z obrazu udostępnionego na &lt;a href="http://home.kde.org/%7Ebinner/kde-four-live/"&gt;http://home.kde.org/~binner/kde-four-live/&lt;/a&gt;), niestety wygląda na to, że jest jeszcze dużo do poprawienia zanim  KDE 4 trafi pod strzechy.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_uUPqmLJl9XM/RuP4g04vHLI/AAAAAAAAAAM/6kLrS6YHAJI/s1600-h/screen2.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_uUPqmLJl9XM/RuP4g04vHLI/AAAAAAAAAAM/6kLrS6YHAJI/s320/screen2.png" alt="" id="BLOGGER_PHOTO_ID_5108199645204389042" border="0" /&gt;&lt;/a&gt;Po uruchomieniu KDE przywitał mnie ładny komunikat, mówiący że kmixctrl uległ awarii. Klipper uruchomił się jako małe okienko, gdyż tacka systemowa nie była dostępna. Na panelu (tym nowym, opartym na Plasmie, zastępującym kickera) brakowało nie tylko tacki systemowej, ale również tak ważnych elementów jak manu "K" i pasek zadań, właściwie to dolny panel był pusty, straszyło na nim tylko smutne coś z etykietką "This object could not be created". Uruchamianie aplikacji i przełączanie między nimi nie było zbyt proste: programy trzeba było uruchamiać z konsoli, ponadto po zminimalizowana aplikacje "znikały" z powodu niedziałąjącego paska zadań. Nie działała też duża część apletów Plasmy. KDE 4 nie grzeszy też stablinością, wiele uruchomionych przeze mnie programów kończyło swój żywot komunikatem o awarii.&lt;br /&gt;Miałem też pewne trudności z odnalezieniem się w nowym KDE, brakowało mi pewnych mechanizmów i programów które "od zawsze" byływ w KDE, choćby odpowiednika kdcopa.&lt;br /&gt;Na koniec muszę zaznaczyć, że wcale nie uważam tej bety za jakąś sczególną porażkę, opisałem tylko problemy z tym wydaniem z punktu widzenia zwykłego użytkownika. Czas pokaże co dalej z KDE 4...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-4326627424412088944?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/4326627424412088944/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=4326627424412088944' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/4326627424412088944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/4326627424412088944'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2007/09/kde-4-beta-2-wraenia.html' title='KDE 4 Beta 2 - Wrażenia'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_uUPqmLJl9XM/RuP4g04vHLI/AAAAAAAAAAM/6kLrS6YHAJI/s72-c/screen2.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-1724942926451194292</id><published>2007-09-02T21:15:00.000+02:00</published><updated>2007-09-02T21:58:01.093+02:00</updated><title type='text'>Air Show 2007</title><content type='html'>Jadąc na Air Show myślałem, że będę miał okazję napisać o wszystkich tych F-1[568], Grippenach, MiGach - niestety nie napiszę. Wyżej wymieniony sprzęt nawet latał, ale co z tego?&lt;br /&gt;Podczas podczas pokazów miał miejsce tragiczny wypadek w wyniku którego na moich oczach zginęło dwóch pilotów mojej ulubionej grupy akrobacyjnej Żelazny: Lech Marchelewski i Piotr Banachowicz. Przyczynę katastrofy bada Państwowa Komisja Badania Wypadków Lotniczych a ja ciągle mam przed oczyma obraz zderzających się samolotów...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-1724942926451194292?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/1724942926451194292/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=1724942926451194292' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/1724942926451194292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/1724942926451194292'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2007/09/air-show-2007.html' title='&lt;span style=&quot;color:white;background-color:black&quot;&gt;Air Show 2007&lt;/span&gt;'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-5127972812493534326</id><published>2007-08-26T19:28:00.000+02:00</published><updated>2007-08-26T20:55:50.902+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='sieci'/><title type='text'>Internet z wykorzystaniem gołębi</title><content type='html'>Nowy wpis &lt;a href="http://chakier.bblog.pl/wpis,wsi;spokojna;wsi;wesola,6251.html"&gt;Wsi spokojna, wsi wesoła&lt;/a&gt; w blogu Charyzjusza Chakiera zainspirował mnie do wcielenia opisanego tam genialnego chakierskiego pomysłu w życie. Charyzjusz użył tam do przekazywania pakietów karteczek przenoszonych przez jego szwagra. Postanowiłem, że nie będę gorszy, w tym celu napisałem poniższy program:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/usr/bin/python&lt;br /&gt;import os&lt;br /&gt;import sys&lt;br /&gt;from fcntl import ioctl&lt;br /&gt;from select import select&lt;br /&gt;import struct&lt;br /&gt;from base64 import b64encode,b64decode&lt;br /&gt;&lt;br /&gt;TUNSETIFF = 0x400454ca&lt;br /&gt;IF_TAP = 0x0002&lt;br /&gt;&lt;br /&gt;def alloc_tun():&lt;br /&gt;   fd=os.open("/dev/net/tun",os.O_RDWR)&lt;br /&gt;   ifs=ioctl(fd,TUNSETIFF,struct.pack("16sH", "tun%d", IF_TAP))&lt;br /&gt;   ifname=ifs[:16].strip("\x00")&lt;br /&gt;   return (fd,ifname)&lt;br /&gt;&lt;br /&gt;if __name__=="__main__":&lt;br /&gt;   (tun_fd,tun_ifname)=alloc_tun()&lt;br /&gt;   pcount=0&lt;br /&gt;   print "Zalokowano %s" % tun_ifname&lt;br /&gt;   while True:&lt;br /&gt;       fds=select([sys.stdin,tun_fd],[],[])&lt;br /&gt;       for fd in fds[0]:&lt;br /&gt;           if fd==sys.stdin:&lt;br /&gt;               os.write(tun_fd,b64decode(sys.stdin.readline()))&lt;br /&gt;           else:&lt;br /&gt;               print "Pakiet %d" % pcount&lt;br /&gt;               print b64encode(os.read(tun_fd,1500))&lt;br /&gt;               pcount+=1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Przy jego pisaniu posiłkowałem się &lt;a href="http://www.secdev.org/projects/tuntap_udp/"&gt;http://www.secdev.org/projects/tuntap_udp/&lt;/a&gt;, gdzie podpatrzyłem jak utworzyć interfejs TAP z poziomu Pythona.&lt;br /&gt;Gdy oprogramowanie było już gotowe przystąpiłem do najważniejsczej części - zacząłem korzystać z sieci. W tym celu odpaliłem program na dwóch komputerach. Jego uruchomienie spowodowało powstanie nowych interfejsów tun0. Na pierwszym komputerze skonfigurowałem adres tun0 na 192.168.0.1, na drugim na 192.168.0.2. Następnie odpaliłem pinga na pierwszym komputerze i zająłem się przekazywaniem pakietów (dla wygody pakiety są kodowane base64). W tym miejscu muszę przyznać się do małego oszustwa: zamiast pieczołowicie przepisywać pakiety na karteczkę, tak jak rzeczony wcześniej &lt;a href="http://chakier.bblog.pl/wpis,wsi;spokojna;wsi;wesola,6251.html"&gt;szwagier Charyzjusza&lt;/a&gt;, wspomagałem się Jabberem.&lt;br /&gt;&lt;br /&gt;Efekt był następujący:&lt;br /&gt;&lt;pre&gt;$ ping -W 60 -i 10 192.168.0.2&lt;br /&gt;PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.&lt;br /&gt;From 192.168.0.1 icmp_seq=1 Destination Host Unreachable&lt;br /&gt;From 192.168.0.1 icmp_seq=2 Destination Host Unreachable&lt;br /&gt;From 192.168.0.1 icmp_seq=3 Destination Host Unreachable&lt;br /&gt;From 192.168.0.1 icmp_seq=4 Destination Host Unreachable&lt;br /&gt;64 bytes from 192.168.0.2: icmp_seq=5 ttl=64 time=41892 ms&lt;br /&gt;From 192.168.0.1 icmp_seq=9 Destination Host Unreachable&lt;br /&gt;From 192.168.0.1 icmp_seq=10 Destination Host Unreachable&lt;br /&gt;From 192.168.0.1 icmp_seq=11 Destination Host Unreachable&lt;br /&gt;&lt;/pre&gt;Czemu aż 42 sekundy? Użyłem interfejsu typu TAP, zatem należy wliczyć potrzebę wymiany pakietów ARP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-5127972812493534326?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/5127972812493534326/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=5127972812493534326' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/5127972812493534326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/5127972812493534326'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2007/08/internet-z-wykorzystaniem-gobi.html' title='Internet z wykorzystaniem gołębi'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-2568184299931411788</id><published>2007-08-26T16:08:00.000+02:00</published><updated>2007-08-26T16:58:34.448+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='seriale'/><title type='text'>The IT Crowd Season 2</title><content type='html'>Zrobiło się ostatnio filmowo i serialowo na moim blogu, ale o tak doniosłym wydarzeniu jak początek nowego sezonu &lt;a href="http://www.channel4.com/entertainment/tv/microsites/I/itcrowd/"&gt;"The IT Crowd"&lt;/a&gt; nie mogłem nie napisać. Premiera pierwszego odcinka drugiego sezonu miała miejsce przedwczoraj. Co prawda odcinek był mało geekowy i nie było znanych z pierwszego sezonu tekstów w stylu:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;"You see the driver hooks a function by patching the system call table, so it’s not safe to unload it, unless another thread’s about to jump in there and do its stuff, and you don’t want to end up in the middle of invalid memory…"&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;a to dlatego, że większa część akcji dzieje się w... dość specyficznym teatrze. Nie będę pisał nic więcej, zapraszam do oglądania!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-2568184299931411788?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/2568184299931411788/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=2568184299931411788' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/2568184299931411788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/2568184299931411788'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2007/08/it-crowd-season-2.html' title='The IT Crowd Season 2'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-8561859214838373456</id><published>2007-08-25T22:23:00.000+02:00</published><updated>2007-08-26T11:36:25.089+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kino'/><title type='text'>Transformers</title><content type='html'>Wróciłem właśnie z kina z filmu "Transformers", swojsko przez niektórych spolszczanego jako "Transformatory". "Transformers" to typowe kino rozrywkowe, więc jeśli ktoś nie ma do tego typu kina odpowiedniego podejścia to z całą pewnością nie powinien się na ten film wymbierać.&lt;br /&gt;Moim zdaniem film stanowił dobre połączenie efekciarstwa z elementami komediowymi, jedyna rzecz która mi przeszkadzała to "amerykańskość" przejawiająca się w kilku bohatersko-patriotyczno-bełkotliwych tekstach i zachowaniach.&lt;br /&gt;&lt;br /&gt;Poniżej kilka spostrzeżeń dotyczących filmu (&lt;span style="font-weight: bold;"&gt;Uwaga: Spoilery!&lt;/span&gt;):&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Walka toczy się o wielką czarną kostkę, na szczęście na czas podróży można sobie tę kostkę złożyć. Po złożeniu wielka czarna kostka staje się małą czarną kostką o długości krawędzi około 30 razy mniejszej niż przed złożeniem, czyli objętościowo jakieś 27000 razy. Muszę przyznać, że obcy uzyskali zacny współczynnik kompresji...&lt;/li&gt;&lt;li&gt;Złe roboty mają czerwone oczy, dobre niebieskie, choć jest od tego drobne odstępstwo - najmniejszy ze złych robotów ma niebieskie oczy, ale to pewnie dlatego, że jest dość sympatyczny. Ta zależność dała mi wiele do myślenia: w zasadzie mam oczy koloru szaro-niebieskiego, ale ostatnio na zdjęciu zauważyłem, że były (o zgrozo!) czerwone. Czyżby dopiero zdjęcia odsłaniały całą prawdę o mojej naturze...&lt;/li&gt;&lt;li&gt;W filmie zastosowano klasyczną zasadę "czarny ginie pierwszy", jednak tym razem w bardziej nowoczesnej formie, gdyż tutaj odnosi się ona do robota...&lt;/li&gt;&lt;li&gt;Twórcy "Transformers" chyba nie mają pojęcia o &lt;a href="http://chakier.bblog.pl/"&gt;chakierowaniu&lt;/a&gt;. Po zdaniu: "There is only one hacker in the world who can break this code" spodziewałe się zobaczyć na ekrania Michała Bućko, a w najgorszym razie Goriona, niestety zawiodłem się srodze. Czyżby twórcom wysokobudżetowego filmu  szkoda było 200 000PLN na honorarium dla Michała? Wstyd panowie! Wstyd!&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-8561859214838373456?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/8561859214838373456/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=8561859214838373456' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/8561859214838373456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/8561859214838373456'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2007/08/transformers.html' title='Transformers'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-6256105298170808201</id><published>2007-08-23T01:08:00.000+02:00</published><updated>2007-09-02T21:06:35.615+02:00</updated><title type='text'>Co piszę ja, co piszą inni?</title><content type='html'>Ponieważ zarzuca mi się, że wpisy na blogu pojawiają w zbyt dużych odstępach czasowych (a ściślej zarzuca mi to jedyny na chwilę obecną regularny czytelnik tego bloga - pozdrawiam!) postanowiłem odebrać fragment dzisiejszej nocy Morfeuszowi, a skutkiem tego również fragment dnia mojemu pracodawcy i poświęcić go na dodanie nowego wpisu.&lt;br /&gt;&lt;br /&gt;Postanowiłem dziś zrobić krótkie statystyki słów pojawiających się w moich rozmowach przez Jabbera.&lt;br /&gt;W tym celu napisałem krótkie skrypty:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;grep "|to|" ~/.psi/profiles/default/history/* |cut -f6- -d\| |\&lt;br /&gt;sed -e 's/[.?,!]\|\\\\n/\n/g'|sed -e "s/ \|\\\\n/\n/g"|\&lt;br /&gt;tr ’[:upper:]’ ’[:lower:]’|sort|uniq -c|sort|less&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;grep "|from|" ~/.psi/profiles/default/history/* |cut -f6- -d\| |\&lt;br /&gt;sed -e 's/[.?,!]\|\\\\n/\n/g'|sed -e "s/ \|\\\\n/\n/g"|\&lt;br /&gt;tr ’[:upper:]’ ’[:lower:]’|sort|uniq -c|sort|less&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;A wracając do tytułowego pytania:&lt;br /&gt;&lt;br /&gt;ja piszę:&lt;br /&gt;&lt;br /&gt;   1084 :)&lt;br /&gt;   1085 ;)&lt;br /&gt;   1145 ja&lt;br /&gt;   1233 co&lt;br /&gt;   1257 że&lt;br /&gt;   1460 do&lt;br /&gt;   1541 tak&lt;br /&gt;   1896 z&lt;br /&gt;   2089 ale&lt;br /&gt;   2108 jest&lt;br /&gt;   2178 a&lt;br /&gt;   2349 na&lt;br /&gt;   2624 i&lt;br /&gt;   2626 w&lt;br /&gt;   2811 się&lt;br /&gt;   4779 to&lt;br /&gt;   5374 nie&lt;br /&gt;&lt;br /&gt;do mnie piszą:&lt;br /&gt;&lt;br /&gt;   1360 the&lt;br /&gt;   1486 tak&lt;br /&gt;   1516 sie&lt;br /&gt;   1548 o&lt;br /&gt;   1574 co&lt;br /&gt;   1586 no&lt;br /&gt;   1711 jak&lt;br /&gt;   1719 -&lt;br /&gt;   1811 ale&lt;br /&gt;   2038 jest&lt;br /&gt;   2117 do&lt;br /&gt;   2282 :)&lt;br /&gt;   2366 się&lt;br /&gt;   2880 z&lt;br /&gt;   2967 a&lt;br /&gt;   3867 na&lt;br /&gt;   3869 i&lt;br /&gt;   4269 w&lt;br /&gt;   4748 nie&lt;br /&gt;   5900 to&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-6256105298170808201?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/6256105298170808201/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=6256105298170808201' title='Komentarze (1)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/6256105298170808201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/6256105298170808201'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2007/08/co-pisz-ja-co-pisz-inni.html' title='Co piszę ja, co piszą inni?'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-4865147094712794881</id><published>2007-08-18T14:14:00.000+02:00</published><updated>2007-08-18T15:41:13.962+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Python, Synaptics, pamięć współdzielona</title><content type='html'>Naszła mnie potrzeba skorzystania z możliwości touchpada Synaptics w moim własnym programie, chodziło o możlwość monitorowania na bieżąco pozycji, siły nacisku i ilości palców na touchpadzie. Dodatkowo chciałem to zrobić w Pythonie.&lt;br /&gt;Sterownik Synaptics do XOrg/XFree umożliwia  dostęp do tych wartości, jak również pewnych parametrów konfiguracyjnych przy użyciu pamięci współdzielonej. Tylko jak to zrobić z poziomu Pythona z użyciem łatwo dostępnych modułów? Gotowych modułów niestety (a może na szczęście, gdyż mogłem nauczyć się czegoś nowego) nie znalazałem, sięgnąłem więc po moduł &lt;a href="http://python.net/crew/theller/ctypes/"&gt;ctypes&lt;/a&gt;, umożliwiający wywoływanie funkcji z bibliotek współdzielonych, oraz tworzenie  typów danych C bezpośrednio z poziomu Pythona. Co najważniejsze moduł ten jest dostępny w standardowej dystrybucji Pythona 2.5.&lt;br /&gt;Kod odpowiedzialny za obsługę Synapticsa wygląda następująco:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;import ctypes&lt;br /&gt;import ctypes.util&lt;br /&gt;from ctypes import c_int,POINTER&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SHM_SYNAPTICS=23947&lt;br /&gt;&lt;br /&gt;class SHMStruct(ctypes.Structure):&lt;br /&gt;      _fields_ = [ ("_version",c_int), ("x", c_int), ("y", c_int), ("z", c_int), ("fingers",c_int)]&lt;br /&gt;&lt;br /&gt;def get_synaptics():&lt;br /&gt;      libcname=ctypes.util.find_library("c")&lt;br /&gt;      libc=ctypes.CDLL(libcname)&lt;br /&gt;      desc=libc.shmget(SHM_SYNAPTICS,0,0)&lt;br /&gt;      if desc==-1:&lt;br /&gt;              raise Exception("shmget")&lt;br /&gt;      libc.shmat.restype=POINTER(SHMStruct)&lt;br /&gt;      return libc.shmat(desc,None,0).contents&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Funkcja &lt;span style="font-style: italic;"&gt;get_synaptics&lt;/span&gt; zwraca obiekt z którego można na bieżąco odczytywać wartości położenia, nacisku (z), oraz liczby palaców znajdujących się na touchpadzie.&lt;br /&gt;&lt;br /&gt;Powyższy kod jest raczej oczywisty, wyjaśnienia może wymagać co najwyżej linijka: &lt;pre&gt;libc.shmat.restype=POINTER(SHMStruct)&lt;/pre&gt;Ustawia ona typ wartości zwracanej przez funkcję shmget na wskaźnik na strukturę SHMStruct - zadeklarowany wcześniej typ, reprezentujący strukturę typu C. Zawartość tej struktury, jak również klucz identyfikujący obszar pamięci współdzielonej zaczerpnięte są z nagłówka wykorzystywanego przez programy z pakietu &lt;span style="font-style: italic;"&gt;synaptics&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Jeśli ktoś dokładnie przejrzy kod, być może zauważy brak sprawdzania poprawności wykonania funkcji &lt;span style="font-style: italic;"&gt;shmat.&lt;/span&gt; Wynika to z tego, że funkcja ta zwraca  &lt;span style="font-style: italic;"&gt;(void *)  -1&lt;/span&gt;  w przypadku błędu, co nie jest łatwe do sprawdzenia w ctypes i wymagałoby znacznie większego skomplikowania kodu.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-4865147094712794881?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/4865147094712794881/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=4865147094712794881' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/4865147094712794881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/4865147094712794881'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2007/08/python-synaptics-pami-wspdzielona.html' title='Python, Synaptics, pamięć współdzielona'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8224851759030925240.post-6671983615348266563</id><published>2007-08-15T12:57:00.000+02:00</published><updated>2007-08-15T22:03:27.246+02:00</updated><title type='text'>Start bloga</title><content type='html'>Postanowiłem założyć własnego bloga. Nie będę tego motywował, założyłem i już. Na początku myślałem o jakimś polskim serwisie w stylu &lt;a href="http://bblog.pl"&gt;bblog.pl&lt;/a&gt;, jednak pewne rzeczy mi nie odpowiadały, dlatego też ostatecznie zdecydowałem się na &lt;a href="http://blogspot.com"&gt;blogspot.com&lt;/a&gt;. Jest to o tyle dobre, że nie muszę zakładać nowego konta - mogę korzystać z mojego obecnego konta Google i o tyle złe, że Google monopolizuje kolejną część mojego życia...&lt;br /&gt;&lt;br /&gt;W blogu będę zajmował się głównie sprawami technicznymi, okołolinuksowymi - jestem geekiem i nie ucieknę od tego, choć czasami trafią się również wstawki nietechniczne. Mam zamiar poruszać problemy które mnie w danym momencie interesują i nie są na tyle specyficzne, że mogą  zainteresować również kogoś innego. Nie oznacza to oczywiście, że nie będę pisał o rzeczach niszowych - będę pisał &lt;span style="font-weight: bold;"&gt;głównie &lt;/span&gt;o takich rzeczach. Tyle planów, czas pokaże jak wypadnie w rzeczywistości.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8224851759030925240-6671983615348266563?l=geekowo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekowo.blogspot.com/feeds/6671983615348266563/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8224851759030925240&amp;postID=6671983615348266563' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/6671983615348266563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8224851759030925240/posts/default/6671983615348266563'/><link rel='alternate' type='text/html' href='http://geekowo.blogspot.com/2007/08/start-bloga.html' title='Start bloga'/><author><name>zh</name><uri>http://www.blogger.com/profile/10465434676176298557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
