NameLess, the Jedi Odbite echo myśli Wed, 27 May 2015 12:28:32 +0000 pl-PL hourly 1 https://wordpress.org/?v=6.2.4 Z głową w chmurach /bezimiennym-okiem/z-glowa-w-chmurach/ /bezimiennym-okiem/z-glowa-w-chmurach/#respond Sun, 25 Nov 2012 23:17:48 +0000 /?p=202 Archives

Z kina wyszedłem jakieś trzy godziny temu. Ledwo co obejrzany film osiada teraz we mnie. Zauroczył mnie kompletnie. Wciągnął i trzyma. I to mocno. Nie często mi się to zdarza. Szczerze mówiąc nie pamiętam, kiedy ostatni raz tak zachwycił mnie film. Tak jak nie pamiętam kiedy ostatni raz już w trakcie oglądania wiedziałem, że muszę obejrzeć go jeszcze raz. Nie miałbym nic przeciwko temu, by obejrzeć go jeszcze raz już teraz.
Niecałe trzy godziny. Tyle trwa najnowsze dzieło braci Wachowskich i Toma Tykwera. „Atlas chmur”. Kilka z pozoru oderwanych od siebie w każdy możliwy sposób historii. Rozrzuconych w czasie i przestrzeni. Wymieszanych na ekranie w nieprzewidywalny sposób. Można tu znaleźć i kino sensacyjne z lat 70-tych, współczesną angielską komedię, twarde science-fiction, melodramat, fantasy i kino podróżnicze. Twórcy miotają widzem między technokratycznym i styranizowanym przez korporacje światem przyszłości, hawajską wyspą niedobitków Apokalipsy, współczesną Anglią, żaglowcem płynącym po XIX-wiecznym Pacyfiku, ulicami San Francisco z lat 70-tych i Szkocją z lat 30-tych. Proste, czasem ocierające się o banał, opowieści. Każdą z nich z łatwością daje się opowiedzieć a jednak nie da się opowiedzieć tego filmu. Trzeba go zobaczyć. Trzeba zobaczyć jak można spleść i połączyć ze sobą losy prawnika, nizebyt udolnego wydawcy, dziennikarki czy kompozytora. Trzeba zobaczyć jak każde z tych opowiadań pokazuje jak nasze wybory, decyzje wpływają nie tylko na świat tu i teraz ale także na pokolenia, które dopiero nadejdą. Pokolenia, które nawet nie będą świadome naszego istnienia a co dopiero podjętych przez nas decyzji. Może i jesteśmy tylko kropelkami wody, wszak ocean składa się z milardów takich kropli. To zdanie z filmu. Bardzo mądre. I jedno z wielu przekazów tego filmu. Do mnie najbardziej trafił nieco inny przekaz tego filmu. Czasem potrzebna jest zmiana. Zmiana nas, zmiana reguł. Czasem trzeba wyrwać się z ram narzuconych przez otoczenie. Może nam się wydawać, że zmieniamy tylko siebie. Z rzadka mamy świadomość, że zmiana jest globalna nawet jeśli tylko drobna z pozoru.

Film urzeka nie tylko przesłaniem. Urzeka także realizacją. Bez wątpienia pierwsze skrzypce grają Hale Berry i Tom Hanks. Muszę przyznać, że o ile Hanks jest perfekcyjnie wiarygodny w każdym wcieleniu, to Hale Berry niestety troszeczke odstaje. Naprawdę minimalnie ale jednak. Być może, że to uboczny efekt perfekcjonizmu Toma Hanksa. Wbrew temu co pokazują zwiastuny, nie są to jedyni aktorzy w tym filmie. Doskonałe kreacje stworzył Hugo Weaving. W roli starego Georgie jest po prostu genialny. W pamięć wryła mi się taka scena: na pierwszym planie Tom Hanks – wyraźna, ostra twarz wypełniająca prawą część ekranu; resztę ekranu wypełnia rozmyta twarz starego Georgie. I to właśnie na nim skupia się uwaga widza. Na nim i jego głosie. Hanks staje się tłem. Znakomite kreacje stworzył również Jim Broadbent. Świetnie sobie radzi i jako upierdliwy kompozytor i wydawca – nieudacznik. Na uwagę zasługuje znakomita rola Doony Bae. Błyszczy, co prawda, tylko w jednej z historii ale jak! Podobnie błyszczy Ben Whishaw odtwarzając autora symfonii „Atlas chmur” – Roberta Frobishera. Swoje pięć minut ma i Hugh Grant. James D’Arcy może nie rzuca się jakoś w oczy jednak to co zrobili z nim charakteryzatorzy zasługuje na pełne uznanie. Właśnie! Charakteryzacja. Niesamowite jest uczucie gdy patrzymy na jedną z postaci i nagle dociera do nas kto ją gra. Wredna pielęgniarka z domu opieki odgrywana jest przez mężczyznę. Nie zdradzę przez kogo ale dość dobrze to widać. Wspomniany wyżej James D’Arcy już nie musi się zastanawiać jak będzie wyglądał w wieku lat 60+. Wystarczy, że obejrzy „Atlas chmur”. A jego przemiana w Archiwistę jest po prostu majstersztykiem.
Co jeszcze? Hmm… Język. Sposób mówienia. Różne epoki wymuszają różny język. Oczywiste, prawda? W filmach dość często się o tym zapomina. Zwłaszcza w filmach sf. Tu nie zapomniano o tym. Zachary, mieszkaniec wioski powstałej gdy cała cywilizacja legła w gruzach i zdążyła już porosnąć mchem, mówi superprostym angielskim, momentami przypominającym język dziecka. Spróbujcie posłuchać jego rozmowy z Meronym. Aż szkoda, że tłumaczenie tego nijak nie oddało.

Pewnie jest jeszcze milion rzeczy, które dałoby się powiedzieć o tym filmie. I z czasem pewnie je wszystkie ogarnę. Z czasem i z każdym kolejnym seansem. A może zawsze zostanie dla mnie jakąś zagadką? Jestem pewien, że za każdym razem odnajdę swoją głowę w zupełnie nowej chmurze

]]>
/bezimiennym-okiem/z-glowa-w-chmurach/feed/ 0
Dezynsekcja w praktyce /nlj/dezynsekcja-w-praktyce/ /nlj/dezynsekcja-w-praktyce/#comments Wed, 06 Apr 2011 15:01:55 +0000 /?p=194 Archives

Od dobrych paru tygodni mam jakiś wstręt do androidowych wnętrzności. Po części to efekt presji rzeczywistości, po części – jakaś głupia blokada. Waham się czy przejść już na kolejną wersję Androida (Gingerbread czyli 2.3) czy pozostać z FroYo. Jednak odłóżmy rozterki 'młodego’ wyrobnika na bok i zajmijmy się tępieniem robali czyli dezynsekcją właśnie.

Chyba przedostatnia wersja Androidowego ROMu Laszlo opublikowana na forum XDA miała dość ciekawy błąd mianowicie nie widziała aplikacji zainstalowanych na partycji Ext.

Dorabiając z Fireratem natywną obsługę SdExt prawie w ogóle nie zwracaliśmy uwagi na to czy stosowna partycja karty w ogóle istnieje (o podmontowaniu jej we właściwym miejscu nawet nie wspomnę). Ubocznym efektem (i, do pewnego stopnia, powodem moich programistycznych wypocin) był fakt, że telefon potrafił wpadać w bootloop (czyli w kółko się restartował).

Pierwszym krokiem było zmodyfikowanie Volda (VOLume Daemon – usługa systemowa zarządzająca 'dyskami’), tak by montował odpowiednią partycję pod /sd-ext i sprzedał informację o sukcesie (lub porażce) reszcie systemu. Jak już umiał przekazać informację to trzeba było sprawić by framework wiedział co z tą informacją zrobić i tak powstała funkcja o nazwie getSdExtState(). Tak prosta, że nie sposób popełnić w niej błędu. Od razu też wykorzystałem ją do sprawdzania dostępności /sd-ext przed próbą skanowania zainstalowanych tam aplikacji przy starcie systemu. Kawałek kodu tak trywialny, że nawet nie przyszło mi do głowy jakieś większe testowanie.

if (Environment.getSdExtState().equals(Environment.MEDIA_MOUNTED)) {
   scanDirLI(mSdExtInstallDir, PackageParser.PARSE_ON_SDEXT, scanMode);
}

Jak podmontowane to skanuj, jak nie – to nie. Prawda, że proste? W samym frameworku jest parę newralgicznych miejsc (związanych z instalacją aplikacji) w których użyłem identycznego testu. Świat stał się lepszym miejscem :-) a ja mogłem się zająć dorabianiem informacji o SdExt w Ustawieniach czy czymś takim. Mniej więcej w tym momencie Laszlo zapewne zsynchronizował swoje źródła z moimi i wypuścił na świat kolejną wersję swojego ROMu. Chyba w sobotę Firerat dał mi znać na Twitterze, że ludzie mają kłopoty z Apps2SdExt na najnowszym FbL. Zerknąłem na forum i, na podstawie zamieszczonych tam postów, doszedłem do wniosku, że dochodzi do tzw race condition. Vold działa asynchronicznie względem reszty systemu i w czasie gdy jeszcze zajmuje się sprawdzaniem systemów plikowych uruchamiane są pozostałe komponenty systemu takie jak usługa PackageManagera. To ona właśnie przeprowadza początkowy skan katalogów z aplikacjami. Skoro nie widać aplikacji zainstalowanych na SdExt to (patrząc na powyższy kawałek kodu) getSdExtState zwraca coś innego niż MEDIA_MOUNTED i system nawet nie próbuje zajrzeć do /sd-ext/app. Wniosek z tego jest taki, że Vold jeszcze nie zdążył pozałatwiać swoich spraw z /sd-ext. Problem znany zatem teraz wystarczy znaleźć rozwiązanie. Na szybko Firerat przekompilował framework.jar z wywalonym sprawdzaniem getSdExtState(), wrzucił na XDA i 'rozwiązał’ problem (to był akurat weekend i, zdaje się, byłem po jakimś większym maratonie Singstara w towarzystwie sąsiadów i paru butelek Dark Whisky :-)).

To, co zrobił Firerat było jednak tylko obejściem problemu a nie jego rozwiązaniem. Poczytałem jeszcze raz posty na forum, popsioczyłem, że nikt z pomstujących nie zdobył się na złapanie logów ze startu systemu i doszedłem do identycznego wniosku jak wcześniej: Race condition. Na swoim telefonie nie miałem problemu z brakiem aplikacji z SdExt ale też miałem wtedy zainstalowaną wersję bardzo rozwojową (czyt: powiązaną sznureczkiem i podpartą patyczkiem z każdej strony). Złapałem logi z restartu swojego telefonu i patrzyłem w nie jak sroka w gnat. No nijak nie było szans na race condition. Zgodnie z tym co widziałem w logach /sd-ext było już dawno podmontowane. Przecież nie da się zrobić błędu w 6 linijkach kodu z jakich składa się getSdExt():

    /**
     * Gets the current state of SD-Ext
     * Note: this call should be deprecated as it doesn't support
     * multiple volumes.
     */
   public static String getSdExtState() {
       try {
           if (mMntSvc == null) {
               mMntSvc = IMountService.Stub.asInterface(ServiceManager.getService("mount"));
           }
           return mMntSvc.getVolumeState(getSdExtDirectory().toString());
       } catch (Exception rex) {
           return Environment.MEDIA_REMOVED;
       }
   }

Poza tym w innych miejscach kodu funkcja ta działa perfekcyjnie. Tak się zafiksowałem na tym race condition, że dobre dwa dni nad tym spędziłem. Albo raczej zmarnowałem. Zmarnowałem bo z całego logu (około 150+ KB tekstu) skoncentrowałem się wyłącznie na części związanej ze PackageManagerem i skanowaniem /sd-ext/app. W końcu mój umysł zaczął rejestrować inne linijki logu i wyłapał coś takiego:

I/sysproc (  147): System server: starting Android runtime.
I/sysproc (  147): System server: starting Android services.
I/SystemServer(  147): Entered the Android system server!
I/sysproc (  147): System server: entering thread pool.
I/SystemServer(  147): Entropy Service
I/SystemServer(  147): Power Manager
I/SystemServer(  147): Activity Manager
I/ActivityManager(  147): Memory class: 16
D/dalvikvm(  147): GC_FOR_MALLOC freed 641 objects / 80848 bytes in 138ms
D/dalvikvm(  147): GC_FOR_MALLOC freed 2131 objects / 317920 bytes in 159ms
I/SystemServer(  147): Telephony Registry
I/SystemServer(  147): Package Manager
D/dalvikvm(  147): GC_FOR_MALLOC freed 5971 objects / 222640 bytes in 181ms
I/dalvikvm(  147): DexOpt: source file mod time mismatch (3e4c9ef4 vs 3e618cf4)
D/installd(  101): DexInv: --- BEGIN '/system/framework/android.test.runner.jar' ---
D/dalvikvm(  163): DexOpt: load 111ms, verify 722ms, opt 13ms

Kilkanaście linijek niżej pojawia się:

I/PackageManager(  147): Pruning dalvik file: sd-ext@app@com.twitter.android-2.apk@classes.dex
I/PackageManager(  147): Pruning dalvik file: sd-ext@app@com.keramidas.TitaniumBackup-1.apk@classes.dex
D/PackageManager(  147): Scanning app dir /system/framework
D/PackageManager(  147): Scanning app dir /system/app
D/dalvikvm(  147): GC_FOR_MALLOC freed 4987 objects / 280408 bytes in 193ms
W/PackageParser(  147): No actions in intent filter at /system/app/Bluetooth.apk Binary XML file line #124
I/PackageManager(  147): /system/app/CMParts.apk changed; collecting certs

I jeszcze kilkadziesiąt linijek niżej:

D/dalvikvm(  147): GC_EXPLICIT freed 7597 objects / 563168 bytes in 221ms
I/SystemServer(  147): Account Manager
I/SystemServer(  147): Content Manager
I/SystemServer(  147): System Content Providers
I/SystemServer(  147): Battery Service
I/SystemServer(  147): Lights Service
I/SystemServer(  147): Vibrator Service
I/SystemServer(  147): Alarm Manager
D/AlarmManagerService(  147): Kernel timezone updated to -60 minutes west of GMT
I/SystemServer(  147): Init Watchdog
I/SystemServer(  147): Sensor Service
I/SystemServer(  147): Window Manager
I/SystemServer(  147): Bluetooth Service
I/SystemServer(  147): Device Policy
I/bluedroid(  147): Starting hciattach daemon
I/SystemServer(  147): Status Bar
I/SystemServer(  147): Clipboard Service
I/SystemServer(  147): Input Method Service
I/SystemServer(  147): NetStat Service
I/SystemServer(  147): NetworkManagement Service
I/SystemServer(  147): Connectivity Service
V/ConnectivityService(  147): ConnectivityService starting up
D/ConnectivityService(  147): getMobileDataEnabled returning true
V/ConnectivityService(  147): Starting Wifi Service.
I/WifiService(  147): WifiService starting up with Wi-Fi disabled
D/Tethering(  147): Tethering starting
D/NetworkManagmentService(  147): Registering observer
I/bluedroid(  147): Starting bluetoothd deamon
I/SystemServer(  147): Throttle Service
I/SystemServer(  147): Accessibility Manager
I/SystemServer(  147): Mount Service
I/SystemServer(  147): Notification Manager

Widać?
Nie widać?? Hmmm… A teraz?

I/SystemServer(  147): Entropy Service
I/SystemServer(  147): Power Manager
I/SystemServer(  147): Activity Manager
I/SystemServer(  147): Telephony Registry
I/SystemServer(  147): Package Manager
I/SystemServer(  147): Account Manager
I/SystemServer(  147): Content Manager
I/SystemServer(  147): System Content Providers
I/SystemServer(  147): Battery Service
I/SystemServer(  147): Lights Service
I/SystemServer(  147): Vibrator Service
I/SystemServer(  147): Alarm Manager
I/SystemServer(  147): Init Watchdog
I/SystemServer(  147): Sensor Service
I/SystemServer(  147): Window Manager
I/SystemServer(  147): Bluetooth Service
I/SystemServer(  147): Device Policy
I/SystemServer(  147): Status Bar
I/SystemServer(  147): Clipboard Service
I/SystemServer(  147): Input Method Service
I/SystemServer(  147): NetStat Service
I/SystemServer(  147): NetworkManagement Service
I/SystemServer(  147): Connectivity Service
I/SystemServer(  147): Throttle Service
I/SystemServer(  147): Accessibility Manager
I/SystemServer(  147): Mount Service

Jeszcze nie widać? No, dobra. Widzisz kiedy jest startowany Mount Service? A teraz zobacz gdzie jest Package Manager. Między jednym a drugim wpisem mija dobrych kilkanaście – kilkadziesiąt sekund.  W tym czasie skanowane są aplikacje systemowe (/system/app) i użytkownika (/data/app i ewentualnie /sd-ext/app). Poprawność działania getSdExtState() jest uzależniona od działania Mount Service a w chwili próby skanowania /sd-ext/app ta usługa jeszcze nie działa. I to właśnie było źródło problemu :-)

W systemie Android część usług została zaliczona do usług krytycznych (w powyższym wyciągu z logów od Entropy Service do Bluetooth Service). Na moje nieszczęście Mount Service nie trafił do tej kategorii. Z punktu widzenia twórców Androida nie było takiej potrzeby. Usługa ta jest potrzebna tylko do dostępu do kart pamięci. Zmiana kategorii tej usługi nie jest za bardzo możliwa bez potężnej ingerencji w nią samą i szereg innych komponentów a to oznacza więcej potencjalnych bugów. Najprostszym rozwiązaniem było porozmawianie (prawie) bezpośrednio z Voldem. Ubocznym skutkiem jest potencjalne wydłużenie startu systemu o maksymalnie 20 sekund. W skrajnej sytuacji może się okazać, że i tak aplikacje zainstalowane na SdExt się nie pokażą (w przypadku kłopotów z filesystemem). Wygląda to mniej więcej tak. Zdaję sobie sprawę z braków tego rozwiązania. Właściwie jest to tylko nieco hakerskie obejście. Prawidłowym rozwiązaniem jest skanowanie aplikacji z SdExt już po starcie systemu, tak jak to jest robione z aplikacjami zainstalowanymi na partycji FAT karty. Mam już nawet mgliste pojęcie jak to zrobić :-) Jako bonus dostaniecie wtedy możliwość odmontowania i wyjęcia karty pamięci bez wyłączania telefonu :-) Cieszycie się?

 

]]>
/nlj/dezynsekcja-w-praktyce/feed/ 3
Learning Java using Google /nlj/learning-java-using-google/ /nlj/learning-java-using-google/#comments Fri, 21 Jan 2011 14:05:24 +0000 /?p=180 Archives

Tytuł wpisu wyjaśni się pewnie gdzieś niżej (bo jak zwykle zaczynam pisanie bez konkretnego planu, zaledwie z mglistym zarysem tego co ma się pojawić). Ogólnie rzecz ujmując będzie o Androidzie. Taki śmieszny system operacyjny stworzony przez Google dla urządzeń mobilnych. Chyba od samego początku Android kusił mnie swoją otwartością. Jakoś tak w połowie 2009 roku stałem się właścicielem aparatu Era G1 – znanego bardziej jako HTC Dream. Z Androidem 1.5.

Zdaje się, że z niezmodyfikowanym systemem wytrzymałem jakieś 2-3 miesiące. Proces rootowania/odblokowania Dreama był wówczas nieco skomplikowany i wymagał przygotowania specjalnej karty. Bodaj w sierpniu pokazała się malutka aplikacja, dzięki której można było jednym kliknięciem odblokować Dream. No i się zaczęło.

Zainstalowałem wtedy jakiegoś CyanogenMod-a 4-coś. Przez jakiś czas wystarczało mi instalowanie kolejnych aktualizacji CM4, potem  CM5 i wreszcie CM6. Jakoś w wakacje zwróciłem uwagę na inne ROMy pojawiające się na forum XDA-Developers. Początkowo traktowałem je identycznie jak CMy czyli wipe i flash.  Zainwestowałem nawet w Titanium Backup, żeby nie tracić danych. Raz mnie jednak podkusiło, że zajrzeć do środka zipa. Wydaje mi się, że to był jakiś SpeedTeam Froyo. Numerka nie pamiętam, za to głównym hmmm… „developerem” był (sympatyczny skąd inąd) Jacob Chu-Hing bardziej znany jako XxKOLOHExX.

Developement w wykonaniu SpeedTeam polegał na podmianie paru grafik i xml-i (tzw theming) i dorzuceniu (nieco na oślep) paru cudownych skryptów do /system/etc/init.d. Dodatki typu „apps2sdext-out-of-the-box!” robione były poprzez wywoływanie (przy każdym starcie telefonu) bardzo popularnego (i przy okazji bardzo dobrze napisanego) skryptu Firerata o nazwie All in One Patch. Ten właśnie fakt sprawił, że zacząłem się bawić w modyfikowanie ROMów. Pierwsze kroki robiłem w znanym sobie terenie skryptów shellowych i ogólnie w tej części Androida, która leży na samiusieńkim spodzie i jest po prostu, przyciętym na miarę, Linuxem.

Parę tygodni później miałem na dysku komplet źródeł CyanogenModa a na telefonie samodzielnie skompilowany ROM. Znowu parę tygodni minęło i delikatnie zacząłem gmerać w kodzie. Pierwszym zupełnie samodzielnym dziełkiem było dołożenie możliwości kontrolowania swapu do CyanogenMod Settings. Trywialna modyfikacja javowego kodu i jeden czy dwa skrypty w shellu. Nic skomplikowanego. Dołożenie obsługi CPUFreq było trochę bardziej pracochłonne (i nie obyło się bez pomocy Joëla Bourquarda – autora Titanium Backup) ale się udało :)

W międzyczasie SpeedTeam zawiesił działalność a XxKOLOHExX przeszedł do Biff Squad. Wersja 2.0 BiffModa była w całości oparta o moją kompilację i pewnie byłaby sukcesem ale RoyalKnight zdecydował się na inny kernel i trochę niefortunnie wkleił go w przygotowaną przeze mnie paczkę. Zdarza się a ja się czegoś nowego nauczyłem :) Potem był BiffMod 2.1 przygotowany przez Ezterry’ego, z jego kernelem i moimi dodatkami. Mogłem spocząć na laurach i grzecznie czekać na Gingerbreada.

I pewnie bym spoczął gdyby nie twitterowa rozmowa najpierw z Cyanogenem a potem Fireratem. Jakoś tak wyszło, że razem z Fireratem zajęliśmy się tzw natywnym apps2sdext. Do tej pory możliwość instalacji aplikacji na partycji Ext2/3/4 karty była realizowana przy pomocy skryptów shellowych i polegała na oszukiwaniu systemu co do faktycznej lokalizacji plików apk. Gdybym miał chociaż blade pojęcie jak skomplikowany to projekt pewnie bym sie nigdy nie odważył za to zabrać. Prace nad wbudowanym w system apps2sdext trwały dobrze ponad 2 miesiące. Choć rozwiązań kolejnych problemów poszukiwaliśmy wspólnie, to jednak gross rozwiązań znajdował Firerat. Wiele razy zdarzało się, że dłubaliśmy nad jakimś kawałkiem kodu i już miałem rozwiązanie problemu na końcu języka gdy Firerat zaćwierkał „Ok, I made it”. Nigdy go nie spytałem czy kiedyś przydarzyła mu się podobna sytuacja ale ze mną w roli głównej. Mam nadzieję, że tak :D jest w tym wszystkim ładnych parę linijek mojego autorstwa.

No dobra ale co to ma wspólnego z tytułem wpisu? Ermm… zdradzę pewną tajemnicę… Nie znam Javy. Serio! Nie znam Javy. Nigdy wcześniej nie używałem tego języka (jestem przecież adminem a nie programistą!). Tymczasem całe to apps2sdext wymagało grzebania w jednym z kluczowych komponentów (framework.jar) napisanym w całości w Javie. Dziesiątki razy oglądałem kawałek kodu, dopisywałem kawałek kodu i bez przerwy odpytywałem Google na okoliczność składni tego czy innego polecenia Javy. Sprawdzałem dostępne funkcje, metody i temu podobne sprawy. O, właśnie! Metody! Dodatkowym smaczkiem jest to, że nigdy wcześniej nie pisałem niczego w jakimkolwiek obiektowo zorientowanym języku programowania :) Największym zaskoczeniem dla mnie jest to, że #LearningJavaUsingGoogle działa! :P Nie wierzysz? To zerknij na

Miłego haczenia Androida!!

NameLess
the Jedi

]]>
/nlj/learning-java-using-google/feed/ 2
Miałem siedzieć cicho /bezimiennym-okiem/mialem-siedziec-cicho/ /bezimiennym-okiem/mialem-siedziec-cicho/#respond Fri, 16 Apr 2010 13:07:22 +0000 http://nlj.plukwa.net/?p=172 Archives

Na prawdę chciałem siedzieć w kącie i pozwolić opaść wszelkim emocjom. Wpis o tragedii w Smoleńsku próbuję napisać od soboty ale mam zbyt duży mętlik w głowie by napisać więcej niż jedno zdanie, które ma jakiś sens. Jedyne na co było mnie stać, to zmiana szablonu na czarny.Tekstów, mniej lub bardziej nawiązujących do tego wydarzenia, czytam jednak sporo. Część z nich szarpie mną zdrowo budząc albo niesmak albo zdziwienie, wiele budzi we mnie żal po ludziach, którzy odeszli.
Sam nie wiem czemu akurat tekst Azraela sprowokował mnie do napisania komentarza. Najpierw zacząłem pisać bezpośrednio na jego blogu ale zaczęło mi wychodzić długawe więc:

Mimo, że cenię sobie Twoje pisanie uważam mam do Ciebie pewien żal. Uważam, że powinno się uszanować żałobę narodową, żal rodzin, samych zmarłych i powagę ich urzędów. Na prawdę mogłeś się powstrzymać od pisania choć przez tych parę dni.
Nie potrzeba nam dodatkowego jątrzenia. Nie potrzeba dorzucania drewna do polskiego piekiełka. Nawet przez chwilę nie miałem wątpliwości, że polskie życie polityczne zmieni się o jotę po 10 kwietnia. Miałem nadzieję, że przynajmniej czas żałoby spędzimy wszyscy razem, ponad politycznymi podziałami. Bałem się zgrzytów w postaci mniej lub bardziej raptownych ruchów stricte politycznych pełniącego obowiązki Prezydenta RP.
W zamian ktoś zafundował nam aferę z Wawelem. Nie jestem z niej jakoś specjalnie dumny, wydaje mi się, że lepiej by było śp Prezydentowi Lechowi Kaczyńskiemu w Warszawie. Szanuję jednak wolę rodziny i nie biegam z transparentami. Szanuję tą decyzję nawet jeśli zarodek tej myśli pojawił się w głowach polityków. Ostatecznie zdecydowała jednak rodzina (mam taką nadzieję w każdym bądź razie). Mniej lub bardziej ostentacyjne demonstracje, tak przeciw pochówkowi na Wawelu jak i za, są wybitnie nie na miejscu. Choć na parę dni powstrzymajmy się od politykowania i politykierstwa. MY. Ja. Ty. Nawet jeśli ONI chcą się teraz bawić w politykę, to nie znaczy, że MY też musimy. Że odpowiedź musi być tu i teraz. Na wskazywanie palcami, tych co chcą zbić kapitał na tej katastrofie lotniczej będzie jeszcze mnóstwo czasu. Cała kampania prezydencka a i później pewnie też.

Nie kłóćmy się nad trumną. Żadną z tych 96.

Popatrzmy przez chwilę na Jarosława Kaczyńskiego. Jak to jest stracić bliźniaka? Jak to jest stracić swoje drugie ja, żywe odbicie.

Jak to jest stracić męża, żonę, ojca, matkę, córkę i syna. Choć do pogrzebu zobaczmy ludzi, w tych co umarli i tych co zostali przez nich osieroceni.

]]>
/bezimiennym-okiem/mialem-siedziec-cicho/feed/ 0
Ech… /nlj/ech-2/ /nlj/ech-2/#respond Fri, 19 Feb 2010 09:52:57 +0000 http://nlj.plukwa.net/?p=162 Archives

Ci, co zaglądają tu częściej niż raz na rok, być może zauważyli, że nagle zniknęło parę wpisów (dosłownie parę!) z zeszłego roku. Powód jest prosty: admin z 15-letnim stażem zignorował kwestię backupów =o( „Zignorował” to może ciut za mocne słowo ale efekt jest właściwie identyczny. Backupy się robiły a i owszem. Nawet automat je robił, żebym głowy sobie nie zaprzątał… Ba! Automat nawet przerzucał je na serwerek do domu! Tyle, że akurat ta część automatu się wzięła i popsuła. Miałem ją naprawić. Proszę zwróćcie uwagę na „miałem„. Miałem na to z pół roku ale jakoś się nie zdarzyło naprawić. Backupy więc były tylko lokalnie. Leżały sobie grzecznie w /var/backups i czekały na koniec świata. No i koniec świata nadszedł nieco wcześniej niż się spodziewałem (tzn jakoś tak w styczniu 2010 czy coś a miał być w 2012 i jak tu wierzyć Majom, hę?). Jeden z dysków (fakt, że wysłużony co nieco) sypnął błędami a następnie odszedł do Krainy Wiecznego Przepływu Informacji. Zabrał ze sobą cały /var.

Przyznam się, że jak już postawiłem mój flagowy serwerek na nogi (z nowym dyskiem!!) poważnie rozważałem nie reaktywowanie tego bloga. Nie chciało mi się zaczynać od zera. Znowu. Życie jednak trochę zdecydowało za mnie. Blog, oprócz rzadkich okazji do wywnętrzania, stanowił również mój serwer autoryzacyjny OpenID. Przypomniał mi o tym Filmaster. Ciasteczko autoryzacyjne zakończyło żywot i nie mogłem się już zalogować. Odtworzyłem co mogłem (czyli stan z czerwca 2009) i dalej nie mogłem się zalogować… Ech.. Dobrze, że Michuk pomógł. Blog jednak już powstał z martwych więc pewnie sobie zostanie.

No to do poczytania! =o)

]]>
/nlj/ech-2/feed/ 0
Bliskość Bluetootha /nlj/geek/bliskosc-bluetootha/ /nlj/geek/bliskosc-bluetootha/#respond Thu, 04 Jun 2009 14:49:26 +0000 http://nlj.plukwa.net/?p=158 Archives

W moim własnym mniemaniu jestem geekiem czy też nerdem. Jedną z cech idących w parze z geekowatością jest gadżetomania. Uwielbiam gadżety. Najbardziej te realne ale czasem trafia się taki bardziej wirtualny. Pierwszy raz zwrócił moją uwagę w postaci maila na liście debian-mentors albo debian-devel. W pierwszej chwili pomyślałem, że to trochę głupie. Pierwsze wrażenie jednak mnie zwiodło.Gadżet zwie się blueproximity. Idea jego działania zasadza się na sprawdzaniu dystansu między dwoma urządzeniami  BT. Jednym z nich jest komputer, drugim – na przykład telefon komórkowy. Po co to? Na przykład można automatycznie zablokować sesję w komputerze, w chwili gdy telefon komórkowy oddali się od komputera. Dla kogoś patrzącego na to z boku wygląda jakby komputer wykrywał (nie)obecność właściciela. Sprytne, nie?

Od razu podkreślę jedną rzecz. Bezpieczeństwo komputera może na tym ucierpieć. W domyślnej konfiguracji blueproximity nie tylko blokuje ekran, gdy się oddalisz, ale również odblokowuje sesję bez pytania o hasło, gdy się pojawisz w pobliżu.  Podobnie jak przy innych technikach sieciowych, tak i tu, można się, w miarę łatwo, podszyć pod telefon. Dobrze jest więc wyłączyć widoczność urządzenia w menu telefonu.

Sam programik jest banalny tak w obsłudze jak i w konfiguracji. Nie podam swoich ustawień, bo dla każdego zestawu nadajnik – odbiornik będą inne. Dojście do nich zajęło mi nie więcej jak 20 minut i trochę kręcenia się po pokoju =o)  Domyślnie blueproximity kontroluje gnome-screensaver, nic nie stoi na przeszkodzie by uruchomić dowolny inny programik czy skrypt. Parę przykładów można znaleźć pod koniec tego postu.

]]>
/nlj/geek/bliskosc-bluetootha/feed/ 0
Nadchodzi taki dzień /nlj/nadchodzi-taki-dzien/ /nlj/nadchodzi-taki-dzien/#comments Fri, 08 May 2009 22:06:09 +0000 http://nlj.plukwa.net/?p=149 Archives

Nadchodzi taki dzień, gdy trzeba powiedzieć sobie jasno: To koniec! Nie ma już wspólnej przyszłości.Trzeba się rozstać. Z żalem, bólem serca ale trzeba. Zaczyna się od drobiazgów. Nic szczególnego ale najpierw uwiera, potem drażni aż w końcu wkurza niemiłosiernie. Oczywiście wspólna przeszłość jest bardzo ważna, nie można jej odrzucić. Nie można jednak łudzić się, że znów będzie tak jak kiedyś. Nie będzie. Jak juz się to zaakceptuje, kolejny krok jest prosty i logiczny. Jedyny możliwy. Chyba lepiej rozstać się spokojnie niż trzasnąć drzwiami i pójść.

Nie twierdzę, że to łatwe.

Nie chcę się tłumaczyć.

Po prostu nadszedł taki dzień.

Dzień pożegnania ze starą przyjaciółką.

Auta

Toyota Carina II (wyżej) była ze mną przez ostatnie 10 lat. W zeszłym roku stała sie pełnoletnia, w tym roku licznik pokazał 300 tys km. Niby autko swoje już przeszło ale było całkiem dziarskie. Z rozrzewnieniem patrzę na powyższe zdjęcie. Lubię tą Toyotę. To nie pierwsze moje auto ale pierwsze, które darzę taką sympatią. Taka przytulanka dla dorosłego faceta :) Najgorsze w tym, że z przytulanek się wyrasta a ja z Toyoty nie wyrosłem tylko musiałem się z nią rozstać. Zastąpić ją. Miała być następna Toyota. Myślałem też o FreeLanderze. Koniec końców zwyciężyła pewność źródła pochodzenia samochodu a nie marka czy model (oczywisty współczynnik ceny pomijam). Srebrne auto ma teraz dokładnie tyle samo lat co Toyota, gdy ją kupowałem. Czy znajomość z Passatem też potrwa 10 lat? Czas pokaże… Na razie cieszę się klimą, przestrzenią i lekkością działania z domieszką niemieckiej toporności. Do zobaczenia na drodze (i do poczytania za czas jakiś ;)

]]>
/nlj/nadchodzi-taki-dzien/feed/ 3
Yes! The Gold is mine! /d-jak-dom/yes-the-gold-is-mine/ /d-jak-dom/yes-the-gold-is-mine/#comments Thu, 30 Apr 2009 11:26:35 +0000 http://nlj.plukwa.net/?p=143 Archives

Jak mawiał Pawlak (albo Kargul ale raczej ten pierwszy) „nadejszła wiekopomna chwila…”. Dla nas nadejszła, nieco znienacka, wczoraj w okolicach godziny 13.O tej porze właśnie podpisaliśmy akt notarialny sprzedaży mieszkania. Mieszkaliśmy tam 8 lat. Trochę żal się rozstawać ale nikt z nas nie chciałby tam wrócić. Ot, jest tam teraz za głośno, za tłoczno i za ciasno. Do dobrego szybko się człowiek przyzwyczaja. Nasze mieszkanko przysłuży się teraz w nieco inny sposób. Zrobimy drugą łazienkę, elewację i pewnie część drobiazgów typu żyrandole, karnisz, firanki, szklanki… A nie szklanki już mamy ;)

PS.

Tytuł wpisu to okrzyk kończący wygraną rozgrywkę w mojej (nadal) ulubionej strzelance sieciowej BattleField: Bad Company. Yes! The Gold is mine! Margeritas and Malibus boys! :)

Attackers Won!

]]>
/d-jak-dom/yes-the-gold-is-mine/feed/ 2
Gold Crate 1 taken! /d-jak-dom/gold-crate-1-taken/ /d-jak-dom/gold-crate-1-taken/#respond Mon, 23 Mar 2009 21:00:48 +0000 http://nlj.plukwa.net/?p=140 Archives

Tytuł tego wpisu wymyśliłem dobrych parę miesięcy temu. Tylko okazji nie było. Jak wymyślałem tytuł, to byłem pewny, że będę miał świetny humor i generalnie będę prawie w siódmym niebie.O co chodzi? W gruncie rzeczy o nic wielkiego. Od ponad pół roku próbujemy sprzedać mieszkanie. Parę razy byliśmy blisko podpisania umowy przedwstępnej ale… Właśnie. Byliśmy blisko. Tylko blisko. Raz gość się wystraszył, że nie wyrobi się z załatwieniem kredytu, raz się starsze małżeństwo pokłóciło (sic!). Ot, wymówki. Jedne bardziej wiarygodne, inne mniej. Tym razem jednak mam już w ręku podpisaną umowę przedwstępną, zaliczkę mam na koncie i widzę determinację kupujących. Nic tylko się cieszyć. I pewnie by tak było, gdyby cieniem nie kładły się wcześniejsze „przygody” ze sprzedażą. Umowa przedwstępna nie gwarantuje zakupu. Na zadatek (choć nie mały) zawsze można machnąć ręką. Ten głupi lęk, nie pozwala się cieszyć. A szkoda. Jedyną ekstrawagancją z okazji umowy była wizyta w komisie, po drodze do domu. Ech… I tak muszę poczekać.

Jeszcze tylko wyjaśnienie tytułu. Ostanimi czasy namiętnie (co nie znaczy, że często ;o) ) grywam w Battlefield: Bad Company na Xbox Live. Sieciowa strzelanka w realiach współczesnego pola walki. Super rzecz. Gorąco polecam. Jednym z trybów rozgrywki jest „Gold Crates”. Dwie drużyny walczą ze sobą o skrzynie ze złotem. Jedna z nich atakuje i próbuje zdobyć skrzynie, druga – broni tychże skrzyń. Każda mapka składa się z 3 -4 etapów, a każdy etap to zdobycie dwóch skrzyń. Po zdobyciu jednej z takich skrzyń, w „radiu” słychać zadowolony głos obwieszczający „Gold Crate One taken!”. Połowa etapu. Ani łatwiejsza, ani trudniejsza. Po prostu: połowa.

]]>
/d-jak-dom/gold-crate-1-taken/feed/ 0
Trwałość /bezimiennym-okiem/trwalosc/ /bezimiennym-okiem/trwalosc/#respond Tue, 17 Feb 2009 11:31:40 +0000 http://nlj.plukwa.net/?p=136 Archives

TrwaloscI to wszystko bez żadnych konserwantów!

]]>
/bezimiennym-okiem/trwalosc/feed/ 0