Marcin Ciszewski – Upał

upal

Przyznam szczerze, że gdy dowiedziałem się o nowej książce Marcina Ciszewskiego to nie wiedziałem, co tak naprawdę mam zarobić. Z jednej strony, po lekturze poprzednich jego książek miałem jakieś dziwne przeczucie, że zapewni mi ona sporo rozrywki i nie będzie to czas zmarnowany. Pojawił się jednak pewien nietypowy problem, a właściwie pytanie – a co, jeżeli to znowu będzie coś, co doprowadzi człowieka do stanu, w którym zamyka książkę, ma zupełną pustką w głowę i po prostu patrzy się w ścianę nie mogąc nic z siebie wydobyć? Już raz coś takiego mi się wydarzyło i odpowiadał za to właśnie Marcin Ciszewski. Czy doprowadzenie się do takiego stanu naprawdę ponownie byłoby bezpieczne? Hm… czytanie co niektórych książek może zacząć przypominać granie w rosyjską ruletkę… Postanowiłem jednak zaryzykować i dosyć szybko w moje łapska trafiła książka o bardzo niewiele mówiącym tytule „Upał”.

W tym wypadku naprawdę warto przyjrzeć się okładce, bo mówi ona wiele o fabule. Co na niej widzimy? Niezbyt przyjaźnie nastawionego mężczyznę w brudnym, zakurzonym garniturze, ciemnymi okularami i z pistoletem w ręku. Dosłownie emanuje z niego pewność siebie, determinacja… chęć osiągnięcia jakiegoś nieznanego nam jeszcze… celu? W tle natomiast coś, co zapewne niejednokrotnie pojawia się w koszmarach organizatorów i służ porządkowych dbających o tegoroczne Euro – Stadion Narodowy w Warszawie spowity dymem i kurzem. Od razu widać, że coś jest nie tak, że dzieje się coś, co na pewno stać się nie powinno i los kibiców oraz zawodników znajdujących się w jego wnętrzu jest nam nieznany.
Akcja rozpoczyna się w dzień po zwycięstwie polskiej reprezentacji z jednym z przeciwników, a zarazem niedługo przed historycznym meczem ćwierćfinałowym – Polska-Niemcy. Społeczeństwo żyje ostatnimi wydarzeniami, szaleje z radości i jest gotowe na oczekiwane od lat zwycięstwo nad zachodnimi sąsiadami. Wszystko to przy niesamowitych, rekordowych upałach, który wysysają z ludzi możliwości, które oślepiają i są coraz bardziej męczące. Coś jednak wisi w powietrzu…

Wie o tym między innymi podinspektor Jakub Tyszkiewicz, który podobnie jak wielu innych policjantów ma multum spraw na głowie, a przecież nie można ani wydłużyć doby do 48 godzin, ani też zupełnie zignorować potrzeby własnej rodziny. Nieoczekiwanie dochodzi do próby zamachu – policjanci zatrzymują mężczyznę arabskiego pochodzenia, który chciał wysadzić siebie, najprawdopodobniej z autobusem pełnym zagranicznych turystów w centrum Warszawy… bomba jednak nie wybucha. Dlaczego? Czy to była świadoma zmiana zdania zdeterminowanego terrorysty, czy chodziło o coś więcej? Czy to będzie tylko pojedynczy incydent? Coś zwiastuje, że to dopiero początek ogromnych problemów, z jakimi przyjdzie się zetknąć nie tylko polskiej policji, ale i wielu innym organom państwowym.
Szczerze mówiąc, chciałbym zdradzić wiele, ale nie mogę tego zrobić… książka stopniowo odkrywa przed nami pewne tajemnice, ale aby puzzle ułożyły się w logiczną całość, będziemy musieli poczekać, aż nasi bohaterowie, w których szybko się wcielimy, odkryją o co w tym wszystkim chodzi. Czy polecam? Oczywiście, że tak. Marcin Ciszewski przedstawił niesamowitą wizję zamachu przeprowadzonego podczas zbliżającej się wielkimi krokami imprezy sportowej mającej miejsce w naszym kraju. Nie jestem kibicem, ale po jej lekturze mam szczerą nadzieję, że żaden podobny scenariusz nie będzie miał miejsca… nie chciałby bym w jego wypadku w skórze kibiców.

Google uczy złych nawyków?

Z usług Google korzystam od dłuższego czasu. Do tej pory pamiętam, jakim „szpanem” było posiadanie konta Gmail cudem zdobytego z jakiegoś zaproszenia. Wcześniej korzystałem z usług jednego z polskich dostawców poczty, ale po odkryciu Gmaila szybko się na niego przestawiłem. Wtedy zresztą posiadałem bardzo niewielką ilość jakichkolwiek konta w różnych serwisów, „przesiadka” była więc po prostu formalnością. Korzystałem tak sobie z poczty od Google przez kilka lat, z czasem dołączyły do niego i inne usługi, takie jak Picassa, Dokumenty, Youtube, Analytics, czytnik RSS, czy też narzędzia dla webmasterów. Z czasem poznawałem ich coraz więcej, podobnie jak pojawiające się nowe opcje, które czasami były dla mnie strzałem w dziesiątkę, a czasami czymś zupełnie zbędnym.
Dzisiaj nie mam jednak zamiaru pławić się w zaletach usług giganta i wymieniać ich liczne zalety. Mam natomiast zamiar stwierdzić, że moim zdaniem usługi te są mocno ograniczone, lub też po prostu uczą „złych nawyków”. Doszedłem do takiego wniosku już jakiś czas temu, przyglądać się innym usługodawcom, wielu aplikacjom i faktycznemu użytkowaniu, tak w domu jak i w zakładach pracy. Przedstawiam więc kilka zarzutów na kilka dosyć często użytkowanych usług. Od razu zaznacza, że wcale nie zrezygnowałem z Google, nie przekreśliłem go zupełnie i nie mam zamiaru palić kartek zadrukowanych jego logo… Nadal wielu usług używam, bo są wygodne, a czasami i bezkonkurencyjne.

Gmail rewolucyjny

Na pierwszy ogień poślę Gmaila, któremu zarzucić można chyba najwięcej – świetna poczta, wygodny webmail, niesamowity antyspam… no i zerowe wykorzystanie bez połączenia z internetem. Google obudowało go masą przeróżnych funkcji, jedną z nich uważam za majstersztyk, a mianowicie, wysyłanie poczty z innych kont. Gdy dorzucimy do tego przekierowania z innych skrzynek, to tak naprawdę możemy z poziomu tylko jednej, operować kilkoma kontami, niekoniecznie pochodzącymi z Google. Problem pojawia się wtedy, gdy chcemy to wszystko jakoś zorganizować, lub gdy zamierzamy tego użyć na komputerze czy telefonie. Niestety, żaden klient poczty nie pozwoli nam na wysłanie poczty z innego konta przy pomocy takiego mechanizmu. Nie pozwoli na to nawet Google Offline, dodatek do Chrome, dodający „klienta poczty” – no ale czy każdy koniecznie musi chcieć używać przeglądarki Chrome, czy każdy nazwie klientem poczty tak mocno ograniczoną aplikację? Wątpię. Skoro już jestem przy klientach poczty, warto zastanowić się chwilę nad sensownością etykiet w Gmailu. Tak, są wygodne, tak, pozwalają na niesamowitą organizację… nie, nie są do wykorzystania gdzieś poza webmailem, od bólu na urządzeniach z Androidem (czy każdy musi używać Androida?).
Gdy skonfrontujemy to z tradycyjnym klientem poczty okazuje się, że pomysł nie ma sensu. Tworzyć możemy przecież foldery, ale etykiety przewidują możliwość oznaczenia jednej wiadomości wieloma z nich. Tymczasem nie ma to odzwierciedlenia w folderach, bo plik albo jest w jednym, albo w drugim, nigdy zaś w obu jednocześnie (chyba, że skopiujemy wprowadzając zamęt). Oczywiście nie mam zamiaru negować filtrów, bo te działają po stronie serwera i można je uznać, za coś „globalnego”, zaś w klientach pocztowych tworzyć sobie mniejsze filtry, skupiające jakieś detale.

Kontakty, społeczność

Skoro mówimy o poczcie, to zaraz obok mamy dostęp do kontaktów, kalendarza, zadań. Naprawdę dobra rzecz, po raz kolejny pozwalająca nam na lepszą organizację. Głowę rozbijamy o mur gdy okazuje się, że nie wszystko da się dobrze zsynchronizować. Gdy posiadałem Nokię E52 z Symbianem, dało się, chociaż nie bez oporów, ustawić synchronizację kontaktów (które z kolei w systemie samochodowym już się „wyłożyły”), ale nie działało to zbyt sprawnie. Na Androidzie oczywiście problemów nie ma, ale szokiem był dla mnie fakt, że działa to bardzo sprawnie również na Windows Phone. Oczywiście zapomnieć można o synchronizacji zadań, bo to Google robi na swój sposób i inni chyba nie chcą aż tak się w to pakować. Same kontakty mogą zawierać wystarczającą ilość informacji, ale ich umieszczenie czy synchronizowanie z klientami pocztowymi to już katorga. Powiązania z innymi zewnętrznymi usługami? A no pewnie że są, powiązałem sobie konto z Facebooka, ale oprócz tego, że informacja o powiązaniu istniała w ustawieniach konta, tak totalnie nic z tego nie wynikało – nie pojawiły się kontakty, nie ma żadnych informacji, nic a nic… Czyżby pan G obraził się na pana FB?
Trudno byłoby nie wspomnieć również o Google+. Zapowiadany jako rewolucja, ale chyba okazał się niewypałem. Przyznam szczerze, że początkowo mi się spodobał, ale raz, że „nikogo tam nie ma”, a dwa, że pomimo kilkukrotnej zmiany ustawień, Google jakoś lubi wciskać mi informacje o tym, kogo mogę znać. Nijak ma się to jednak do efektywności ich wyszukiwarki, bo propozycje ani razu nie trafiły, wszystkie osoby okazały mi się zupełnie obce… a przecież przez tyle lat mieli dostęp do mojej poczty, kontaktów, wyników wyszukiwania… Po zmianach jest lepiej, ale jakoś mam wrażenie, że jest to obecnie klon Facebooka. Tymczasem świat „już wybrał” sieć społecznościową, więc czy coś przemawia za tym, aby używać kolejnej… i kolejnej… i kolejnej?

Gdzie są foldery?!

Spójrzmy w stronę Picassy. Program jest naprawdę dobry, oferuje możliwość bardzo szybkiej korekcji czy lekkiego retuszu zdjęć (jak dla mnie, amatora, to wystarcza aż nadto) nieźle radzi sobie z synchronizacją, chociaż narzuca nam pewien układ katalogów na dysku. Gorzej jest, gdy przejdziemy do samej aplikacji webowej. Nadaje się ona tylko dla osób, które mają zdjęcia z jednej określonej kategorii, mają niewiele zdjęć, lub są po prostu bałaganiarzami. Dlaczego tak uważam? Bo nie można tworzyć folderów (galerii) wewnątrz innych. Jedyny istniejący poziom zagnieżdżenia to albumy -> zdjęcia. Gdyby dało się utworzyć samodzielnie chociaż jeden poziom więcej, byłoby nieźle, no ale nie można. Problem pojawił się u mnie wtedy, gdy zaczęło przybywać zdjęć, a wiele z nich było z jakiejś „dziedziny”, a jednak na tyle innych, że chciałem je rozdzielić. Wtedy okazało się, że jedyne co mogę zrobić, to lawinowo tworzyć nowe i nowe albumy, co czyniło cała galerię strasznie nieczytelną. Uznałem, że to usługa mnie ogranicza, bo konkurencja pozwalała na niemal dowolny poziom zagnieżdżenia, no i Picassę porzuciłem. Niemniej przyczepię się do jeszcze jednej rzeczy. Gdy w koncie Google ustawimy sobie awatar, zostanie on zapisany właśnie do Picassy, do nowego, publicznego albumu. Kolejny niepotrzebny bałagan – a co, jeżeli nie chcę, aby w udostępnianej przeze mnie galerii wisiał album z awatarkiem, który szczerze mówiąc, pasuje tak jak brud na szybie? No tak, jest rozwiązanie, zrobić ten album prywatnym! Zmieniamy i… nie mamy awataru. Niestety klops.

Dysk dokumentowy

Dokumenty Google wykorzystuję głównie jako miejsce na zapisanie jakichś informacji, do których czasami muszę mieć nagły, niezapowiedziany dostęp, ot jakieś numerki, cyferki, takie tak. Wszystko było świetne, w szczególności gdy używałem Androida. Jest sobie aplikacja, no i o ile mamy dostęp do internetu, można w każdej chwili sprawdzać. Jak to jednak robić na innym urządzeniu? Nie da się? Oczywiście, że się da, wystarczy przecież tylko wejść przez przeglądarkę. No ale nawyk wyrobiony przez Google zaowocuje wtedy tylko niezbyt atrakcyjną wiązanką słów. Teraz i tak sytuacja nieco się poprawiła, bo możemy użyć Google Drive, dzięki któremu będziemy mieli te pliki przy sobie z możliwością ich edycji w ulubionym oprogramowaniu (w szczególności na komputerze). Samo Google Drive pozostawia jednak wiele do życzenia, ale nie będę o tym pisał w tym wpisie. O samym edytorze nie można zbyt wiele powiedzieć, bo każdy ma swój gust i wybiera to co dla niego najlepsze. Bez bicia przyznam, że ten z Google uważam za kiepski, podobnie jak wolne pakiety biurowe głównie za sprawą… interfejsu. Tak, od lat używam MS Office i raczej nie chcę się przesiadać na coś innego, pomimo, że jest to podobna sytuacja, którą opisuje ten wpis…

Chmury są, ale gdzie podłoże?

Do czego ogólnie zmierzam? Mój wniosek końcowy jest taki, że Google stworzyło naprawdę wygodny i dający duże możliwości ekosystem, ale jest on dosyć zamknięty w sobie. Co więcej, przewiduje on używanie tych usług głównie w połączeniu z innymi usługami od Google, no i na urządzeniach, które Google promuje – tak te z Androidem, jak i rasowe Chromebooki. Całość okazuje się klapą, gdy nagle stracimy połączenie z siecią. Co prawda w głównej mierze nie są to usługi przeznaczone do pracy offline, ale spoglądając na konkurencję można stwierdzić, że dałoby się to lepiej rozwiązać – najpierw stworzyć odpowiednią podstawę jako tradycyjne aplikacje, a dopiero później popłynąć z chmurami. Może nie oferować aż tyle opcji, które są nie do wykorzystania na innych platformach?
A może to wszystko to po prostu kolejne pasy, które sami nieświadomie zapinamy, powodując że coraz „pewniej” siedzimy w wózku z wielkim napisem Google? Problem polega na tym, że po przekroczeniu pewnej granicy możemy mieć trudności z ich odpięciem gdyby nagle okazało się, że wózek leci w przepaść, lub że ten konkurencyjny jest dla nas tak naprawdę lepszy.

Jak w phpBB policzyć nieprzeczytane posty?

Kiedyś, dawno dawno temu informowałem na blogu o phpBB 3.0.6, który przynosił ze sobą funkcję wyszukiwania nieprzeczytanych postów. Znana jest mi ona od czasu pierwszego użycia phpBB by Przemo i szczerze mówiąc, od tegoż też czasu wręcz ubóstwiana. Pozwala ona być na bieżąco na małych i średnich forach z większością tematów, co prawdę się ceni. Poza tym, nie jest ona obarczona „wadą” znaną z wyszukiwarki nowych postów tj. zachowuje odpowiednie wyniki nawet po wielu odwiedzinach i logowaniach. Jak już napisałem, opcja taka jest dostępna od pewnego czasu w phpBB 3 i spisuje się bardzo dobrze. Ma jednak pewną niewielką wadę, albo raczej nie posiada pewnej opcjonalnej, czasami przydatnej funkcjonalności – licznika, który pozwalałby nam stwierdzić, ile istnieje tych nieprzeczytanych postów dla nas, jako jednego z wielu użytkowników. Szukałem rozwiązania gdy migrowałem z phpBB by Przemo na phpBB na forum Jagged Alliance Center i długo nic znaleźć nie mogłem.

Po naprawdę żmudnych poszukiwaniach okazało się, że istnieje mod, który coś takiego zapewnia (jako zupełnie opcjonalną funkcjonalność) i zwie się View or mark unread posts. Szczerze to jeszcze przed dodaniem do phpBB wyszukiwarki nieczytanych postów pozwalał on na ich wyszukiwanie, robiąc to, co później trafiło natywnie do silnika. Na pytania wielu osób autor zdecydował się opublikować kod dodający licznik, ale zastrzegł, że może on poważnie odbić się na wydajności forum, nawet gdy nie jest ono specjalnie duże. Ostatnimi czasy postanowiłem dodać taki licznik na forum SafeGroup i jak można trafnie przypuszczać, dało się odczuć narzut tego moda. Słowem, ogromny narzut. Licznik był tylko na stronie głównej no i tylko tam czas czasami wzrastał z około 0.07s do około 0.90s. Ponad dziesięciokrotna różnica, która po przyjrzeniu się danym z debugowania mówiła jasno – tak, to wina tego jednego zapytania, które zlicza posty. Dlaczego działo się to czasami? Ano dlatego, że baza również ma swoje cache i zapytanie i tak przyśpieszy, niemniej co chwila któryś z użytkowników wraca na stronę główną forum i staje się to piętą achillesową.

Jako że taki licznik to naprawdę „fajny bajer”, postanowiłem spróbować coś z tym zrobić. Dane z debuga były bezlitosne – pomimo istnienia indeksów, główna tabela tj. zawierająca posty i tak była sprawdzana w całości. Heh, bagatela – przejrzeć tylko ponad sto tysięcy postów… Nie ma się co dziwić, że to mogło tyle trwać. Oryginalny kod zawierający zapytanie wyciągające potrzebne dane wygląda następująco:

Selec All Code:
1
2
3
4
5
6
7
8
9
10
11
$sql = 'SELECT COUNT(p.post_id) as count
        FROM ' . POSTS_TABLE . ' p
        LEFT JOIN ' . FORUMS_TRACK_TABLE . ' ft ON (p.forum_id = ft.forum_id AND ft.user_id = ' . $user->data['user_id'] . ')
        LEFT JOIN ' . TOPICS_TRACK_TABLE . ' tt ON (p.topic_id = tt.topic_id AND tt.user_id = ' . $user->data['user_id'] . ')
        WHERE
        (
            p.post_time > tt.mark_time
            OR (tt.mark_time IS NULL AND p.post_time > ft.mark_time)
            OR (ft.mark_time IS NULL AND p.post_time > ' . $user->data['user_lastmark'] . ')
        )
        AND ' . $db->sql_in_set('p.forum_id', $forum_ids);

Celowo ominąłem początek, ale trzeba pamiętać, że zmienna $forum_ids to tablica zawierająca id forów, które możemy przeglądać i przed zapytaniem trzeba ją przygotować – w wypadku tego moda dochodziło więc kolejne zapytanie, a potem pętla sprawdzająca zezwolenie widoczności. W porównaniu do samego szukania to oczywiście operacja-pryszcz, ale zwracam na to uwagę. Samo zapytanie jak widać łączy nam tabele odpowiadające za posty, informacje o czytaniu działów, oraz informacje o czytaniu tematów. Jest to w zupełności wystarczające do policzenia nieprzeczytanych postów. Niemniej, na dużym forum z wieloma działami spisuje się jak opisałem – kiepsko, bo baza nie korzysta z żadnego indeksu.

Po zastanowieniu postanowiłem rozbić to na dwa podobne zapytania, z których jednakże każde powinno okazać się dużo lżejsze niż powyższe – najpierw pobrać informacje o tematach, w których istnieją nieprzeczytane posty, a następnie przy ich pomocy wyciągnąć informacje o samych postach. Przy okazji okazało się, że pierwsza operacja załatwia inną z dodatkowych funkcji, jaką zaprezentował autor View or mark unread posts – licznik tematów z nieprzeczytanymi postami. W przeciwieństwie do samego licznika postów, w tym wypadku nie miał zastrzeżeń, bo nawet w przypadku sporych forów powinno to być relatywnie szybkie. No więc po zmianach kod wygląda następująco:

Selec All Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// Select unread topics
$unread_topics = array();
$sql = 'SELECT t.topic_id
        FROM ' . TOPICS_TABLE . ' t
        LEFT JOIN ' . TOPICS_TRACK_TABLE . ' tt ON (tt.user_id = ' . $user->data['user_id'] . ' AND t.topic_id = tt.topic_id)
        LEFT JOIN ' . FORUMS_TRACK_TABLE . ' ft ON (ft.user_id = ' . $user->data['user_id'] . ' AND t.forum_id = ft.forum_id)
        WHERE t.topic_last_post_time > ' . $user->data['user_lastmark'] . ' AND
        ' . $db->sql_in_set('t.forum_id', $allow_forum_ids) . ' AND
        (
            (tt.mark_time IS NOT NULL AND t.topic_last_post_time > tt.mark_time) OR
            (tt.mark_time IS NULL AND ft.mark_time IS NOT NULL AND t.topic_last_post_time > ft.mark_time) OR
            (tt.mark_time IS NULL AND ft.mark_time IS NULL)
        )
        LIMIT 1001';
$result = $db->sql_query($sql);
 
while ($row = $db->sql_fetchrow($result))
{
    $unread_topics[] = $row['topic_id'];
}
 
if (empty($unread_topics))
{
    return 0;
}
 
// Count unread posts
$sql = 'SELECT COUNT(p.post_id) as count
        FROM ' . POSTS_TABLE . ' p
        LEFT JOIN ' . FORUMS_TRACK_TABLE . ' ft ON (p.forum_id = ft.forum_id AND ft.user_id = ' . $user->data['user_id'] . ')
        LEFT JOIN ' . TOPICS_TRACK_TABLE . ' tt ON (p.topic_id = tt.topic_id AND tt.user_id = ' . $user->data['user_id'] . ')
        WHERE ' . $db->sql_in_set('p.topic_id', $unread_topics) . '
        AND
        (
            p.post_time > tt.mark_time
            OR (tt.mark_time IS NULL AND p.post_time > ft.mark_time)
            OR (ft.mark_time IS NULL AND p.post_time > ' . $user->data['user_lastmark'] . ')
        )';

No i widać tutaj to, o czym pisałem kawałeczek wyżej – najpierw szukamy tematów, a dopiero później postów. Dlaczego w środku występuje return? Bo jest to wycinek z funkcji. Dodatkowo w drugim zapytaniu warunek wybierający tylko posty z określonych tematów jest pierwszy, aby już na dzień dobry wykluczyć jak największą ilość krotek. Efekt całości? Jest szybciej, dużo szybciej. Dane z debuga występują teraz następująco:

Jak widać, oba zapytania używają indeksów i łącznie sprawdzają nieco ponad 6000 wierszy zamiast ponad 100 000. Oczywiście i w tym wypadku zapytania są buforowane, więc czasy czasami są większe, ale nawet w najgorszych wypadkach zajmuje to około 50 razy mniej czasu niż w pierwszym rozwiązaniu. Czy cel został osiągnięty? Wydaje mi się, że tak, licznik może zostać, przechodzenie na stronę główną forum znacznie przyśpieszyło, baza ma mniej do przegrzebania. Oczywiście to rozwiązanie sprawdza się tak a nie inaczej na wspomnianym wcześniej forum i nie jestem w stanie stwierdzić, czy wszędzie zmiana będzie tak odczuwalna. Jeżeli ktoś chciałby to przetestować, śmiało zapraszam do podzielenia się wynikami.

Michał Cholewa – Gambit

Michał Cholewa - Gambit

Jeżeli mam być szczery, to jestem raczej twardo stąpającym po ziemi realistą. Z czytanych przeze mnie książek czytam więc głównie takie, które są realistyczne. Jest jednak pewna kategoria, którą niemal ubóstwiam – fabuły postapokaliptyczne. W zasadzie sam nie wiem dlaczego. Może to zasługa spotkania z serią Fallout lata temu, może z faktu, że świat w nich przedstawiany jest podobny do naszego, a jednak zupełnie inny. Wyjątkiem są też powieści typu science-fiction, ponieważ w przeciwieństwie do fantasy pokazują one coś, z czym być może zetkniemy się za kilka, kilkadziesiąt lat. Czy trzeba daleko szukać? Wystarczyć spojrzeć, o czym pisano na początku czy nawet do połowy XX wieku. Teraz często technologie tam wymieniane jako futurystyczne otaczają nas dookoła. Z ciekawością więc czytałem książkę Gambit Michała Cholewy z serii Warbook, ufundowaną mi przez wydawnictwo Ender, za co serdecznie mu dziękuję.

Książa jest pisana w dosyć nietypowy dla mnie sposób. Zostajemy rzuceni w rok 2211, pełen zupełnych nowinek technologicznych i bardziej przypominający nam świat z Gwiezdnych Wojen, aniżeli ten nas otaczający. Autor nie zaznajamia nas za bardzo z historią, czy nawet niedawnymi wydarzeniami. Nie wiemy również jak do końca wygląda „organizacja” tego świata. Po lekturze całej książki mogę jednak zdradzić nieco szczegółów. Wiem o istnieniu trzech frakcji – Unii Europejskiej, Stanów Zjednoczonych, oraz Imperium (najprawdopodobniej Chiny), które toczą ze sobą wojny i surowce zlokalizowane na różnych planetach, a nawet całe układy gwiezdne. Postęp techniki był niesamowity, człowiekowi z czasem udało się stworzyć także „kolejny etap ewolucji”, czyli sztuczną inteligencję. Oczywiście szybko wykorzystano jej ogromny potencjał w zastosowaniu bojowym czy logistycznym, dzięki czemu możliwe stało się szybkie przemieszczanie pomiędzy układami poprzez tzw. skoki, wcześniej wymagające długich i żmudnych obliczeń. Niestety, historia bywa wredna. O ile człowiek sam w sobie ma od początków istnienia zaprogramowane eliminowanie osobników własnego gatunku, o tyle sztuczna inteligencja nie posiadała takiej skazy… do czasu pojawienia się wirusa. Nie wiadomo co dokładnie stało się w Dniu, jednak to właśnie wtedy na Ziemię spadły ładunki termojądrowe, to właśnie wtedy niektóre ze statków otworzyły do siebie ogień, a niektóre zamieniły się w dryfujące cmentarze po zniszczeniu systemów napędowych, podtrzymywania życia, czy rozhermetyzowania. Rozwijający się wszechświat nagle zgasł, zamienił się w czarną pustynię, zaś resztki ludzkości w wędrowców, którzy ją przemierzają w poszukiwaniu pozostałości sprzed dnia apokalipsy.Kontakt z wieloma systemami zostaje zerwany, utracone bezpowrotnie informacje nie pozwalają na odnalezienie starych baz, kolonii czy magazynów, które przecież mogły przetrwać.

Pojawia się jednak pewna nadzieja. Najpierw w postaci wraku z bardzo tajemniczą zawartością, który jest eksplorowany przez oddziały specjalne wojsk Unii Europejskiej, a następnie odnaleziony wrak frachtowca należącego przed Dniem do wywiadu. Niestety złośliwość historii daje się znowu we znaki – leży on gdzieś na powierzchni planety znajdującej się pod kontrolą Stanów Zjednoczonych, nie obejdzie się więc bez inwazji… W tym momencie zapoznajemy się z bohaterami, których losy będziemy obserwować przez większość książki, w tym Polaka, szeregowego Wierzbowskiego, którego drużyna ma „przyjemność” uczestniczyć w inwazji. Opis planety spowitej bagnem i tajemniczą mgłą, tylko miejscami zepchniętej przez cywilizację niejednokrotnie podnosi nam włosy do góry, nawet jeżeli nie dochodzi do ani jednego wystrzału. Więcej zdradzać nie mogę. Powiem tylko, że z początku strasznie zagmatwana historia zaczynam nam się coraz bardziej układać w całość, a do tego coraz bardziej nas wciągać. Już teraz wiadomo, że to najprawdopodobniej dopiero pierwsza część naprawdę świetnie zapowiadającej się serii. Styl autora, Michała Cholewy, jest lekki i nie wymaga od nas specjalistycznej wiedzy. Znalazł on złoty środek między luzem i nieco profesjonalnym podejściem do tematu. Pikanterii dodaje fakt, że to właśnie on powolutku zapoznaje nas z zupełnie innym światem, pełnym niesamowitej elektroniki czy futurystycznej medycyny, tak w cywilnych jak i wojskowych zastosowaniach.

Po raz kolejny mogę powiedzieć, że książka z serii Warbook budzi we mnie ogromne zainteresowanie i nie pozwala na odciągnięcie się i powrót do codzienności, do naszego zwykłego świata. Nie spodziewałem się, że idące dosyć mocno do przodu science-fiction będzie w stanie tak mnie zaangażować, przez co jeszcze bardziej dziękuję wydawnictwu za możliwość zrecenzowania tej książki. Polecam ją każdemu kto jest spragniony wrażeń – znajdziecie tu przygodę, horror, a także ludzkie dramaty. Pomimo późnej pory zapowiadam, że jutro czeka Was miła niespodzianka, związana właśnie z książką Gambit Michala Cholewy. Śledźcie blog na bieżąco :) Ja tymczasem niecierpliwie czekam na kontynuację, to może być dużo lepsze niż Gwiezdne Wojny, naprawdę.

 

Nextgen Reader – kombajn RSS dla WP

Pomimo, że możliwości kanałów RSS znałem od dawna, to jakoś nigdy specjalnie się nimi nie interesowałem. Podejście zmieniłem dopiero niedawno, bo zauważyłem, że często ręcznie i co chwila odwiedzam te same witryny aby sprawdzić, czy nie ma nic nowego… Normalnie jak jakieś uzależnienie, trzeba było z tym jakoś walczyć. Postawiłem więc na subskrypcję kanałów RSS i notyfikację, a więc nie musiałem już sam niczego ręcznie przeglądać.
Po zakupie smartfona z Windows Phone zachciało mi się wygodnie i w nim przeglądać te wszystkie kanały. Pojawił się jednak pewien drobny problem – jak to zrobić? Standardowo w systemie możliwe jest dodanie konta Facebook lub Twitter, więc mógłbym na tych serwisach obserwować to co mnie interesuje ale… raz, że nie wszystko ma swoje strony na społecznościówkach, a dwa, że jakoś nie umywa się to za bardzo do faktycznych kanałów RSS, które często zawierają o wiele więcej treści, a także grafiki.

Poszperałem więc w Marketplace i szybko znalazłem aplikację, która mnie zainteresowała o nazwie Nextgen Reader. Jest ona płatna, kosztuje 6,99zł, ale podobnie jak w wielu innych wypadkach, możemy przez kilka dni używać jej za darmo aby wypróbować możliwości i podjąć decyzję. Ogólnie rzecz biorąc, jest to klient czytnika Google, a więc bez konta w tymże serwisie raczej się nie obędziemy. Jako że takowe konto posiadam i właśnie w nim miałem zapisane wszystkie subskrypcje, nie był to żaden problem.
Swoje podstawowe zadanie tj. synchronizację z czytnikiem spełnia on bezbłędnie. Nie ma żadnych problemów z pobieraniem danych, oznaczaniem ich gwiazdkami czy jako przeczytane. Wszystko jest czytelne, nie ma problemów ani z obrazkami, ani z polskimi znakami. Każdy wpis możemy natomiast szybko opublikować na portalach społecznościowych, czy też wysłać przy pomocy poczty email. W wypadku serwisów, które na swoich podstawowych kanałach prezentują tylko częściowe informacje (np. Dobreprogramy), można szybkość przejść do ich pełnej wersji. Tutaj mamy kilka opcji – standardowo jest to bardzo estetyczne i szybkie dopasowywanie do urządzeń mobilnych, możemy również przełączyć się na „mobilizery” instapaper, gogle, czy też otwierać to w przeglądarce Internet Explorer. Wszystko zależy od naszych upodobań.

Aplikacja zasługuje na uwagę również ze względu na kilka ciekawych opcji. W jej bazie znajdziemy popularne kanały RSS podzielone na różne kategorie i będziemy mogli szybko dodać je do subskrybowanych. Jeżeli nie chcemy szukać ręcznie, w każdej chwili możemy również użyć wyszukiwarki. Jest tam między innymi cała masa serwisów dotyczących Windows Phone, więc jeżeli ktoś chce być na bieżąco z rozwijającą się platformą, ma do tego świetną okazję. We wszystkich tych serwisach nie ma niestety ani jednego po polsku. No cóż, może wystarczyłoby autorowi zasugerować, aby coś takiego pojawiło się w nowej wersji, kto wie.

Co prawda nie jest to jakoś specjalnie potrzebne, ale naprawdę warto przejść do opcji, bo tam dowiadujemy się o potędze Nextgena. Zarządzać możemy bardzo wieloma aspektami np. tym, czy chcemy synchronizować wszystko, czy tylko nowe informacje. Nie brakuje buforowania obrazków z możliwością ich pobiera tylko wtedy, gdy łączymy się przez wifi.

Możliwości ustawienia lokalnego cache również cieszą – program może przechowywać aż 1000 wpisów! Zmienić możemy również schemat kolorów w obrębie tej jednej aplikacji (wtedy ignorowane są ustawienia systemu), ustawić wielkość czcionki tekstu, zablokować orientację (zbawienne dla osób, które nie mogą odblokować telefonu aby wrzucić aplikację spoza Marketplace). Reader obsługuje również inne konta niż Google, chociaż szczerze to nie wiem jak to dokładnie działa, bo po dodaniu konta Windows Live oraz Facebooka żadnych nowych kanałów informacyjnych nie miałem.

Ostatnia opcja to możliwość włączenia live title tj. zmian na kafelku wyświetlanym na głównym ekranie. Opcja ta pozwala na automatyczne jego aktualizowanie co wybrany czas i wyświetlanie ilości nowych informacji, tytułów, a nawet obrazków w nich zawartych. Przyznam jednak, że to kolejna opcja działająca w nieco dziwny sposób, bo po włączeniu synchronizacji dane są aktualizowane, ale tylko w obrębie kafelka. Gdy wejdziemy do aplikacji, to i tak musimy ręcznie wykonać synchronizację (lub mieć włączoną auto-synchronizację przy uruchamianiu). Nieco to dziwne, bo kafelek pracujący w tle co jakiś czas i tak pobiera przecież dane. Może autorzy w celu zminimalizowania transferu postanowili pobierać tylko informacje o ilości nieprzeczytanych informacji? W zasadzie zgadza się to również z samą ideą używania RSS i oszczędzania na transferze.

W zasadzie nie opisałem tu wszystkich funkcji jakie posiada Nextgen Reader, ale chyba sami przyznacie, że to co wymieniłem to już naprawdę sporo, na jak mogłoby się wydawać, prostą i niewielką aplikację. W zasadzie jest to cały kombajn do obsługi RSS, bardzo wygodny i pozwalający nam na solidne oszczędzanie transferu gdy nie mamy go zbyt wiele w pakiecie a i żadnej sieci wifi nie ma pod ręką. Bardzo cieszy jak do tej pory intensywny rozwój aplikacji. Z wersji na wersję pojawiają się nowe opcje, a całość nadal śmiga szalenie szybko. Cóż mogę powiedzieć, polecam wydanie tych kilku złotych.