<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.7.2" -->
<rss version="2.0">
    <channel>
        <title>Strona GDR!a</title>
        <description><![CDATA[GDR! prezentuje...]]></description>
        <link>http://gdr.geekhood.net/</link>
        <lastBuildDate>Fri, 13 Apr 2012 14:09:36 +0100</lastBuildDate>
        <generator>FeedCreator 1.7.2</generator>
        <item>
            <title>Share to Google Talk</title>
            <link>http://gdr.geekhood.net/gdrwpl/12-04-13_share_to_google_talk.html</link>
            <description> Całkiem niedawno napisałem aplikację na Androida, bo nie było żadnej która umożliwiałaby współdzielenie (Share/Send to) linków czy innej treści z kontaktami komunikatora Google Talk. Postanowiłem nie wypuszczać jej od razu za darmo tylko poczekać aż Google dopuści polskich developerów do sprzedaży aplikacji w Play. Minęły dwa miesiące i doczekałem się: Share to Talk w Play/Markecie. Dostępny jest kod źródłowy (GPLv3), na zasadzie &quot;zbuduj sobie sam albo płać jeśli nie umiesz&quot;. Od czasu napisania aplikacji używam ją regularnie i wszystkie problemy które były, poprawiałem na bieżąco.</description>
            <pubDate>Fri, 13 Apr 2012 12:09:36 +0100</pubDate>
            <guid>http://gdr.geekhood.net/gdrwpl/12-04-13_share_to_google_talk.html</guid>
        </item>
        <item>
            <title>Psi, Ubuntu, Off-the-record chat</title>
            <link>http://gdr.geekhood.net/gdrwpl/12-02-04_psi__ubuntu__off_the_record_chat.html</link>
            <description> OTR to protokół kryptograficzny który ma właściwości powodujące, że nadaje się doskonale do rozmów przez komunikatory w czasach kiedy władza raz po raz debatuje nad obowiązkowym nagrywaniem ruchu w internecie przez dostawców. Wiele popularnych programów (Pidgin, Adium, Miranda i inne) ma obsługę OTR. Ja używam Psi, istnieje do niego wtyczka, ale konia z rzędem temu kto skompiluje ją z jakąś współczesną wersją komunikatora. Oszczędzę wam szczegółów i przejdę do rozwiązania.sudo apt-add-repository ppa:psi-plus/ppasudo apt-get install psi-plus Okazało się, że developerzy psi-plus przejęli rozwój wtyczki i w swoim oficjalnym PPA publikują pakiet psi-plus ze zbudowanym libotrplugin.so. Wersja psi-plus z repozytoriów Ubuntu nie dostarcza tego pakietu, podobnie jak większość innych repozytoriów w których szukałem. Najciemniej jest pod latarnią.</description>
            <pubDate>Sat, 04 Feb 2012 14:38:15 +0100</pubDate>
            <guid>http://gdr.geekhood.net/gdrwpl/12-02-04_psi__ubuntu__off_the_record_chat.html</guid>
        </item>
        <item>
            <title>Name Alert</title>
            <link>http://gdr.geekhood.net/gdrwpl/12-01-21_name_alert.html</link>
            <description> Istnieje alternatywny system DNS o nazwie Namecoin, w którym nie ma centralnych serwerów DNS, a każdy z klientów posiada kopię wszystkich rekordów. Wszystko działa w oparciu o P2P i silną kryptografię, żeby sfałszować wyniki należałoby przejąć 51% sieci, więc rząd USA chcąc zdjąć domenę musiałby działać nieco aktywniej niż tylko ustawami. Domeny mają rozszerzenie .bit - na przykład gdr.bit czy massivescale.bit. Oczywiście używa tego nie więcej niż kilkaset - kilka tysięcy no-life'ów, więc inwestowanie w tę technologię czasu jest całkowicie zbędne, bo i tak się nie przyjmie. Dlatego właśnie w ramach projektu-hobby stworzyłem program który usuwa małą wadę - ponieważ nie ma registarów, nie ma kto poinformować cię że twoja domena niedługo wygaśnie. Program obserwuje domeny i wysyła maile jeśli wykryje że jedna z twoich domen wkrótce wygasa. 15 użytkowników takiego serwisu byłoby już dużym sukcesem ;) No, ale miałem wymówkę żeby w praktyce napisać coś używając bazy Redis. Panie i panowie, poznajcie Name Alert, najmniej użyteczny kawałek softu mojego autorstwa od czasu monopole.prv.pl</description>
            <pubDate>Sat, 21 Jan 2012 11:33:03 +0100</pubDate>
            <guid>http://gdr.geekhood.net/gdrwpl/12-01-21_name_alert.html</guid>
        </item>
        <item>
            <title>IPv6 w OVH</title>
            <link>http://gdr.geekhood.net/gdrwpl/12-01-13_ipv6_w_ovh.html</link>
            <description> Namęczyłem się co niemiara żeby ustawić IPv6 na serwerze według śmieciowej instrukcji OVH, ich support też nie wie, więc może zachowam dla potomności trzy polecenia które zadziałały (a w zasadzie, nie tyle o polecenia chodzi co o adresy).ifconfig vmbr0 inet6 add 2001:4120:1:aa12::1/64ip -6 route add 2001:4120:1:AA00::/56 dev vmbr0route -A inet6 add default gw 2001:4120:1:AAFF:FF:FF:FF:FF</description>
            <pubDate>Fri, 13 Jan 2012 17:18:35 +0100</pubDate>
            <guid>http://gdr.geekhood.net/gdrwpl/12-01-13_ipv6_w_ovh.html</guid>
        </item>
        <item>
            <title>Testowanie FSM</title>
            <link>http://gdr.geekhood.net/gdrwpl/12-01-13_testowanie_fsm.html</link>
            <description> W kodowaniu bardzo lubię redukować różne problemy do skończonej maszyny stanów. Trzymam stan w zmiennej, bazie danych bądź czymkolwiek co pasuje w danym projekcie, i w zależności od stanu poprzedniego ustalam stan następny. Najczęściej interesujący jest nie tyle stan, co moment zmiany stanów i reakcja na niego. Najprostszym rozwiązaniem jest wywołanie funkcji A_B() przy zmianie stanu A na stan B. Działa dobrze dopóki maszyna ma kilka stanów i ograniczoną liczbę przejść, ale już przy kilkunastu stanach łatwo się pomylić i można spędzić długie godziny tropiąc błąd w FSM. Piszę aktualnie prosty projekt z użyciem Django, i rzecz jasna używam FSM. Chciałem mieć łatwy w testowaniu kod, bo FSM rozrósł mi się już na tyle, że zaczęły się w nim pojawiać błędy. Użyłem mechanizmu sygnałów w Django. Sygnały są niczym innym jak implementacją wzorca Obserwator - jest obiekt reprezentujący wydarzenie w systemie. Obiekt ten udostępnia mechanizm rejestracji callbacków - funkcji, które będą wywoływane jeśli wydarzenie się zdarzy - oraz metodę &quot;odpalającą&quot; wydarzenie, która powoduje wywołanie wszystkich zarejestrowanych callbacków - obserwatorów. W przypadku FSM stworzyłem obiekty odpowiadające przejściom między różnymi stanami, które mnie interesują, i przy zmianie stanu &quot;odpalam&quot; odpowiednie sygnały. Jakie są zalety takiego podejścia? W moim przypadku, zmiana stanów odbywa się w cronjobie i powoduje wysyłanie różnych typów e-maili bądź wiadomości XMPP. Jeśli uruchamia się cronjob, podpinam zatem pod sygnały funkcje wysyłające odpowiednie maile i mam działające powiadomienia. Jeśli natomiast odpalam testy, podpinam funkcje zliczające ile razy dany sygnał został uruchomiony, a w testach ustawiam asercje nie tylko na stany, ale i na liczniki. Powstał w ten sposób prosty, elegancki kod, w którym mogę w prosty sposób przetestować dowolny scenariusz bez obaw, że zaspamuję sobie bądź komuś skrzynkę.</description>
            <pubDate>Fri, 13 Jan 2012 15:42:14 +0100</pubDate>
            <guid>http://gdr.geekhood.net/gdrwpl/12-01-13_testowanie_fsm.html</guid>
        </item>
        <item>
            <title>Tunel DNS na Androidzie</title>
            <link>http://gdr.geekhood.net/gdrwpl/11-12-29_tunel_dns_na_androidzie.html</link>
            <description> Opublikowałem notatki z ustawiania tunelowania ruchu po DNS na Androidzie. Enjoy!</description>
            <pubDate>Thu, 29 Dec 2011 14:53:27 +0100</pubDate>
            <guid>http://gdr.geekhood.net/gdrwpl/11-12-29_tunel_dns_na_androidzie.html</guid>
        </item>
        <item>
            <title>Akademicka apatia i gorzkie żale</title>
            <link>http://gdr.geekhood.net/gdrwpl/11-12-14_akademicka_apatia_i_gorzkie_zale.html</link>
            <description> Chciałbym się wytłumaczyć z tego, że dawno nie napisałem nic większego. Zaczęło się podczas pracy w CA. Przyszedłem tam jako programista zatrudniony na szybkie zadanie. Przyszedłem, napisałem, chcieli, żebym został. Zostałem. Kodując praktycznie samemu zrobiłem im system zarządzania serwerami. Dodajmy, że nie znałem się na serwerach więc więcej czasu poświęcałem na poznanie narzędzi niż na programowanie. Czas leciał, system w fazie testów przechodził kolejną inkarnację z architekturą będącą kompromisem między wybujałymi wizjami szefa a rzeczywistością (nadal tylko jeden programista rzucany dodatkowo do losowych innych zadań oraz zero administratorów), aż w dość liberalnie wybranym momencie nastąpiła decyzja że system idzie live. Poszedł. Mój soft nieźle spełniał swoje zadania, klaster z nieprzebadaną architekturą - niekoniecznie. Zajmowałem się głównie czuwaniem w nocy, resetowaniem padających serwerów metadanych i składaniu specyfikacji na sprzęt, który wytrzyma obciążenie. Kiedy przyjechał nowy sprzęt, dopasowany do architektury systemu, szef stwierdził że architektura się nie sprawdziła i zarządził migrację na nową. W ciągu miesiąca. Większą część miesiąca czekałem aż uda mu się popodłączać wtyczki w centrum danych, siedząc z nim na telefonie i wciskając &quot;Next&quot;, restartując stare serwery, szkoląc nowego admina (pozdrawiam, Maciej!) oraz czasem przygotowując soft do tego żeby chociaż w teorii mógł działać. Na właściwe testy i pisanie oprogramowania miałem jakiś tydzień przerywany awariami. Wiadomo jak pisze się soft w takich ramach czasowych: składa się byle co, aby działało, i obiecuje że potem zrobi się z tym porządek. Porządku nie zrobiłem, bo szef rozpalony wizjami nowych &quot;usprawnień&quot; rzucał mi kolejne projekty. Część z nich zrobiłem, część nie, ale normą było składanie klocków. Na przykład: pewna funkcjonalność byłaby najprostsza do zaimplementowania jako modyfikacja kodu Apache, ale oznaczałoby to dorzucenie sobie do listy obowiązków robienia RPM-ów do zainstalowania na serwerze ilekroć wyjdzie nowa wersja. Nie dałbym rady z kolejnym czasochłonnym obowiązkiem, więc preferowanym rozwiązaniem było użycie gotowych klocków i poskładanie ich skryptami. Problem był oczywiście rozwiązany w sposób nieoptymalny, ale nie wynajdowałem koła od nowa i mogłem zamknąć kolejny projekt po zaledwie 10 godzinach pracy. Po trochę ogłupiło mnie to do poziomu na którym byłem jedynie składaczem klocków, specjalistą od kopiowania plików i restartowania demonów. Jeśli coś wymagało dopisania modułu do demona, w tickecie odpisywałem że to duży projekt (ponad 30 godzin), a ticket zostawał zamykany i zapominany. Bo jak to, będzie siedział i kodował przez cały tydzień, jak mamy tu serwery do restartowania i rozmowy z klientami do wykonania. Jeśli ticket wracał dostatecznie dużą ilość razy, wynajdywałem prawie działające rozwiązanie złożone z gotowych klocków. Pozytywny skutek uboczny jest taki, że poznałem naprawdę wiele opensourcowych rozwiązań które można poskładać uzyskując szybko pożądany efekt. Niestety, jest też negatywny - wszystko wydaje się już wynalezione, napisane, przetestowane i niewarte zawracania sobie głowy. Kolejny szczególny przypadek dawno zgeneralizowany do klasy problemów i rozwiązany. W takim aspekcie myślenie open source'owca przypomina trochę myślenie akademika. Użytkownik open source nie widzi sensu w pisaniu swojego, lepszego komunikatora skoro dowolnie można skonfigurować Psi, i jeszcze przy okazji podrzucić dwie łatki do upstreamu. Akademik nie widzi sensu badania praktycznego pomysłu, skoro dziedzina jest już dawno opisana a wyniki dostępne za jedyne 5 dolarów od PDF-a. W skrócie - korpomielarka przemieliła mi mózg i wszystkie pomysły wyrzucam do śmieci już przed odpaleniem edytora.</description>
            <pubDate>Wed, 14 Dec 2011 14:46:26 +0100</pubDate>
            <guid>http://gdr.geekhood.net/gdrwpl/11-12-14_akademicka_apatia_i_gorzkie_zale.html</guid>
        </item>
        <item>
            <title>Celery</title>
            <link>http://gdr.geekhood.net/gdrwpl/11-12-04_celery.html</link>
            <description> Jakiś czas temu zacząłem pisać na tę stronę artykuł na temat kolejki zadań Celery, w międzyczasie powstał w mojej głowie pomysł zrobienia na ten temat wykładu i artykuł zostawiłem w połowie napisany, z zamiarem dokończenia po wykładzie. Od tej pory minęło półtora miesiąca, więc żeby nie zmarnować materiału dopisałem skromne zakończenie i opublikowałem na stronie. Panie i panowie, zapraszam do zapoznania się z prezentacją oraz artykułem o rozproszonej kolejce zadań Celery. PS. Wszystko to powstało z okazji napisania Celery-PHP.</description>
            <pubDate>Sun, 04 Dec 2011 21:31:38 +0100</pubDate>
            <guid>http://gdr.geekhood.net/gdrwpl/11-12-04_celery.html</guid>
        </item>
        <item>
            <title>Przestał działać Google Talk?</title>
            <link>http://gdr.geekhood.net/gdrwpl/11-11-27_przestal_dzialac_google_talk.html</link>
            <description> Od jakichś dwóch tygodni przestały mi działać konat Google Talk w moim kliencie Jabbera. Prawdopodobnie jest to powiązane z dodaniem przez Google rekordu AAAA (adresu IPv6) dla talk.google.com. Prawdopodobnie mógłbym spędzić kilka godzin rozwiązując swój problem z siecią i wyłączając v6, dowiadując się przy tym wiele ciekawych rzeczy o Linuxie albo o moim routerze, ale nie mam czasu. Szybkie rozwiązanie: w ustawieniach konta tam, gdzie trzeba było wpisać &quot;talk.google.com&quot; wpisz &quot;74.125.39.125&quot; i połącz się ponownie. Działa.</description>
            <pubDate>Sun, 27 Nov 2011 13:52:49 +0100</pubDate>
            <guid>http://gdr.geekhood.net/gdrwpl/11-11-27_przestal_dzialac_google_talk.html</guid>
        </item>
        <item>
            <title>GTD + Google Tasks</title>
            <link>http://gdr.geekhood.net/gdrwpl/11-06-01_gtd__google_tasks.html</link>
            <description> Z okazji nawału zajęć postanowiłem spróbować używać czegoś w stylu metodologii GTD do jako-takiego organizowania zadań do wykonania i pomysłów. Moje wymagania były proste - program na telefon i coś na komputer. Okazało się, że to bardzo dużo ;) Na początek spróbowałem osławionego Remember the Milk. Jest tak nieintuicyjne w obsłudze i niepotrzebnie skomplikowane, że po kilku minutach dałem sobie spokój. Logicznym następnym krokiem wydawało się Google (GMail) Tasks. Proste, umożliwia obsługę wielu list i niewiele ponad to. Na dodatek, wydawałoby się, że będzie doskonale zintegrowane z Androidem. Zacząłem od prób używania Astrid - wydawało się dość rozsądne, poza tym większość ludzi zdaje się używać właśnie tego softu. Bardzo podobała mi się ergonomiczna obsługa i nienarzucanie się z niepotrzebnymi feature'ami, pomimo ich mnogości. Do tego oczywiście integracja z GTasks. Jest tylko jeden problem - nie można przemieszczać taska między listami, co w zasadzie dyskwalifikuje program do takich zastosowań. Zacząłem więc szukać innych programów obsługujących GTasks. Większość z nich to tragedia, połowa z UI zerżniętym z iPhone albo narysowanym przez programistę w Photoshopie, druga połowa bez podstawowych feature'ów albo w ogóle niedziałająca (i tak, próbowałem również tych płatnych). Na placu boju pozostało wyglądające jak kupa i nieergonomiczne w obsłudze Check It Off i wynalazek o dziwnie brzmiącej nazwie iRT GTasks Outliner. Wynalazek wygrał - okazał się całkiem sensowny w obsłudze, nie wygląda jak krzyżówka strony WWW z iPhone, można w nim odznaczać taski jako zrobione i przenosić je między listami. Jeśli chodzi o część komputerową, szybko znalazłem applet Plasmy, zainstalował się i działa bez problemu. Teraz jeszcze tylko realizować cele z list i gotowe ;)</description>
            <pubDate>Wed, 01 Jun 2011 12:21:27 +0100</pubDate>
            <guid>http://gdr.geekhood.net/gdrwpl/11-06-01_gtd__google_tasks.html</guid>
        </item>
        <item>
            <title>PTI - update</title>
            <link>http://gdr.geekhood.net/gdrwpl/11-03-27_pti___update.html</link>
            <description> W czwartek przyszło potwierdzenie odbioru pisma nadanego do Polskiego Towarzystwa Informatycznego. Z innej beczki - nie działają komentarze, nie chce mi się naprawiać, przepraszam za wszelkie niedodane. Dostałem je na maila więc przy odrobinie wolnego czasu pododaję ręcznie.</description>
            <pubDate>Sun, 27 Mar 2011 19:27:45 +0100</pubDate>
            <guid>http://gdr.geekhood.net/gdrwpl/11-03-27_pti___update.html</guid>
        </item>
        <item>
            <title>Komputerowe prawo jazdy</title>
            <link>http://gdr.geekhood.net/gdrwpl/11-03-14_komputerowe_prawo_jazdy.html</link>
            <description> Wczoraj mama poprosiła mnie o pomoc w wypełnieniu przykładowych testów ECDL. To, co zobaczyłem, było straszne. Pokaz niekompetencji. Nie zdarzyło mi się wcześniej coś takiego, ale zmobilizowałem się do napisania normalnego (papierowego) pisma do Polskiego Towarzystwa Informatycznego, które pod całą farsą się podpisuje. Zapraszam do poczytania. EDIT: Link do testu prowadzi do serwera ECDL, jesli nie dziala - nie moja wina.</description>
            <pubDate>Mon, 14 Mar 2011 08:26:58 +0100</pubDate>
            <guid>http://gdr.geekhood.net/gdrwpl/11-03-14_komputerowe_prawo_jazdy.html</guid>
        </item>
        <item>
            <title>Opera 11</title>
            <link>http://gdr.geekhood.net/gdrwpl/10-12-17_opera_11.html</link>
            <description> Wydaje mi się, że zauważyłem trend w rozwoju Opery: nieparzyste wydania to jakieś porażki, skupiające się na kopiowaniu najsłabszych rozwiązań z innych przeglądarek, parzyste - to dobre wydania z nowymi pomysłami. Sprawdźmy: Opera 8 była stabilna, Opera 9 - do 9.50 była nieużywalna z powodu ciągłych zwisów, wyglądała brzydko, a na domiar złego w 9.20 wprowadzono nieergonomiczne skróty klawiaturowe rodem z Firefoxa (seriously, ktoś uważa że prosty do wciśnięcia skrót ctrl-B bardziej należy się zakładkom których używa się raz na ruski rok niż Paste'n'go, który schowali pod ctrl-shift-V?). Opera 10 przyniosła bardziej znośny wygląd, nowy silnik i genialne Unite. Wczoraj wyszła wersja 11 która od poprzedniej wersji różni się głównie zepsutym paskiem adresu ukradniętym od Chrome i rozszerzeniami pożyczonymi z Firefoxa - nie wiem czemu bookmarklety na toolbarach nagle przestały wystarczać. Pozostaje przeczekać do kolejnej wersji parzystej :)</description>
            <pubDate>Fri, 17 Dec 2010 08:42:38 +0100</pubDate>
            <guid>http://gdr.geekhood.net/gdrwpl/10-12-17_opera_11.html</guid>
        </item>
        <item>
            <title>Github!</title>
            <link>http://gdr.geekhood.net/gdrwpl/10-11-06_github.html</link>
            <description> Bardzo ostatnio polubiliśmy się z Githubem. Zaczęło się od tłumaczenia książki Invent with Python, które idzie mi tak powoli że zanim skończę prawdopodobnie wyjdzie Python 4. Najfajniejsze oczywiście jest to, że dają nielimitowane darmowe repozytoria dla projektów open source. Poza tym, sam git dobrze nadawał się do workflowu który jest dla mnie wygodny - mogę odpalić na telefonie Debiana, ściągnąć najnowsze zmiany, wyłączyć radio i mimo to commitować kiedy zechcę. Takie narzędzia aż zachęcają do dzielenia się ze światem drobnymi nic nie wartymi hackami, więc znalazło się tam miejsce na integrację KDE z Operą Unite, plasmoida wyświetlającego najbliższe wydarzenia w kalendarzach Google, raczej żałosną próbę przeportowania mplayera na Androida i fork Apacza który później zamienił się w patcha i ostatecznie został włączony do trunka ale nie jestem pewien czy ukaże się w Apaczu 2.2.18 czy 2.3.0. Nie zapominajmy też o rozszerzeniu do Joomli które w epicki sposób przeczy temu że 1) nie zajmuję się webdeveloperką, 2) pracując w joomlowym hostingu staram się nie dotykać Joomli, 3) czego jak czego, ale Javascriptu to nie mam zamiaru używać. Ach, pieniądze. PS. Kochaj mnie na Twitterze!</description>
            <pubDate>Sat, 06 Nov 2010 16:05:42 +0100</pubDate>
            <guid>http://gdr.geekhood.net/gdrwpl/10-11-06_github.html</guid>
        </item>
        <item>
            <title>Lambdy w C++0x</title>
            <link>http://gdr.geekhood.net/gdrwpl/10-09-08_lambdy_w_c0x.html</link>
            <description> Czytam sobie artykuł opisujący w skrócie lambdy w nowym C++, mruczę sobie pod nosem z zadowolenia jak to fajnie będzie, i jeb, docieram do sekcji opisującej modyfikator &quot;mutable&quot;. Seriously, efekty uboczne w lambdzie? Czy to ja o czymś nie wiem i bez tego nie dałoby się żyć?</description>
            <pubDate>Wed, 08 Sep 2010 07:50:52 +0100</pubDate>
            <guid>http://gdr.geekhood.net/gdrwpl/10-09-08_lambdy_w_c0x.html</guid>
        </item>
    </channel>
</rss>

