Déjà Vu (2006)

Hitchcock radził zacząć od eksplozji, a potem zwiększać napięcie. Film rozpoczyna się od eksplozji. Na środku rzeki wybucha prom, po kilku scenach płonących i tonących ludzi, pojawia się główny bohater, detektyw. Ponieważ szybko dowodzi swoich umiejętności, zostaje wciągnięty do specjalnej grupy śledczej, korzystającej z pewnych nowatorskich rozwiązań.

Bohater owy, Doug Carlin, grany przez Denzela Washingtona, trochę dziwak (bo jeździ tramwajami i dotyka zwłok bez rękawiczek), ma szukać śladów, poszlak i podejrzanych na generowanym w czasie rzeczywistym obrazie sprzed przeszło czterech dni, ekstrapolowanym na podstawie danych z czterech satelitów. Ponieważ danych jest za dużo, nie można ich zapisać, więc trzeba wiedzieć wcześniej gdzie i na co patrzeć. Ale za to patrzeć można wszędzie (w obrębie pewnej strefy), w tym np. na nieświadomą obserwacji kąpiącą się kobietę. Tak przynajmniej system został zaprezentowany Dougowi, ale nie przypadkiem znalazł się w tej ekipie.

Déjà Vu jest czymś na rodzaj kryminału Sci-Fi, z nawet ciekawym wątkiem romantycznym. Rozgrywa się w Nowym Orleanie (jest też jego mieszkańcom zadedykowany) i jest to pierwszy film był tam kręcony po przejściu huraganu Katrina, o której zresztą na obrazie się wspomina (np. napis “Katrina uczyniła nas tylko silniejszymi”).

Oceniam go jednak średnio, a głównie za niepotrzebne mieszanie Boga do fizyki. Rozumiem, że to wiara głównego bohatera pomogła mu przezwyciężyć twarde prawa fizyki, ale tak na prawdę, w życiu to się nigdy nie zdarza. Bóg jakoś konsekwentnie trzyma się swoich ustaleń i dobrze było sobie to uświadomić. Tych boskich motywów nie jest aż tak wiele, za to jest jeszcze kilka nielogiczności – raczej za geniusz scenarzystów (Bill Marsilii, Terry Rossio) nie należy uznać małego eksperymentu jakiego użył główny bohater do weryfikacji swoich podejrzeń odnośnie systemu.

Czyli, film z odrobiną akcji, romansu, fantastyki naukowej, kryminału oraz lekcji religii. Plusem, są np. pozostawione dla widza poszlaki, które nie są ostentacyjnie wytknięte i po których wykryciu i skojarzeniu, można poczuć się niczym prawdziwy detektyw. Spokojnie można obejrzeć, tylko najlepiej “na czysto”, nie spodziewać się za wiele i wiele też nie wiedzieć, a będzie można spędzić całkiem miło dwie godziny.

O JPanel w stałym rozmiarze na JFrame

Jakiś czas temu poszukiwałem sposobu, aby zmodyfikowany przeze mnie JPanel zachowywał swój rozmiar niezależnie od wielkości okienka (obiekt JFrame), na którym bezpośrednio leżał. Kosztowało mnie to nieco nerwów. Nie wystarczyły metody setSize, setPreferredSize, setMaximumSize, setMinimumSize, użyte jak w poniższym przykładzie:

setSize(width, height);
setMaximumSize(getSize());
setMinimumSize(getSize());
setPreferredSize(getSize());

Niezależnie od moim starań potomek JPanel rozlewał się na całą powierzchnię obiektu JFrame. Winnym jest tutaj domyślny LayoutMenager obiektów JFrameBorderLayout (wniosek: warto zaglądać do dokumentacji). Osobiście uważam to za drażniące zachowanie rozszerzać na siłę element, łamiąc jego maksymalny ustawiony rozmiar, ale jak się nie ma co się lubi, to się lubi co się ma.

Rozwiązania widzę dwa: pierwsze to zmienić JFrame menadżera rozmieszczania elementów na np. FlowLayout. Drugim rozwiązaniem jest wstawienie naszego obiektu, nazwijmy go MyJPanel, w nowo utworzony obiekt JPanel i dopiero ten wstawić do JFrame. Zilustruje to małym przykładem:

JFrame frame = new JFrame("Test");
JPanel p = new JPanel();
p.add(new MyJPanel());
frame.getContentPane().add(p);

Teraz ten nowy, opakowujący JPanel jest rozszerzany przez obiekt okienka programu, a nasz – właściwy – pozostaje nietknięty. W sumie ta druga metoda to zastosowanie tej pierwszej w nieco inny sposób, ale może się przydać, jeśli z jakiegoś powodu nie mamy pełnego dostępu do obiektu JFrame.

Linki

Wychowanie do abstynencji a proza życia

Opisałem swego czasu, kolejny genialny pomysł, zapożyczony z niemniej genialnego kraju, aby nauczać młodych o wydumanej szkodliwości seksu przedmałżeńskiego. Odział gazety.pl z Łodzi, tam akcja owa się zaczęła, opisał aktualny stan rzeczy. No i jakby to powiedzieć: coś nie wyszło. Niemniej jednak program zapewne będzie kontynuowany, pomimo braku sensu. I pomyśleć, że podatnicy jeszcze do tego dopłacają…

Na podstawie: Seks przed ślubem jest zły? Nie obrzydzili go uczniom.

Słowo na niedzielę

Oto fragment starego artykułu:

Mówi, że robi to dla dobra swoich dzieci, bo nie chce, żeby spotkała je jakaś przykrość. 2 kwietnia zaprowadził je na mszę z okazji rocznicy śmierci papieża Polaka. Wychowawczyni sprawdzała obecność.

Czemu mnie to tak uderzyło? Ano, bo skojarzyło mi się z sytuacją, jaką znam z historii – śmiercią Stalina. Wtedy również były apele z tej okazji, czuwanie i dam głowę, też sprawdzano obecność. Do przemyślenia.

Pierwsze chwile z Firefoksem 3.6

Nosz… nie działa połowa zainstalowanych u mnie rozszerzeń, w tym i gesty (All-in-One Gestures). Skórka programu wróciła do pierwotnego wyglądu (nie używałem motywów, ale z nich też połowa jest za stara). Na plus to niewątpliwie szybsze działanie przeglądarki oraz mniejsze zużycie pamięci (choć z tym przyznam, to bardziej na oko oceniam).

Werdykt: przez zmianą warto zajrzeć, czy przydatne nam rozszerzenia będą działać. Jeśli nie, trzeba albo przez jakiś czas ich nie używać, albo poczekać z update’em. Zapewne za parę dni jakoś wszystko się ułoży.

Jak niektórzy piszą tutoriale

Coś mnie tknęło, aby zgłębić nieco ASP .NET. Technologię tą, spłodził Microsoft, który wiąże z nią duże nadzieje. Naukę rozpocząłem od wyszukania jakiegoś tutorialu, który nauczyłby mnie stawiać pierwsze kroki w wymienionej. Trafiłem tak na drugi link w wynikach wyszukiwarki – stronę: http://www.dotnetspider.com.

Opisywany tutorial podzielony jest na jakieś 71 części – spokojnie, większość z nich to w zasadzie pół ekranu tekstu, do których dołączono zdjęcia. Tutorial rozpoczyna wstęp, gdzie między innymi można wyczytać:

The targetted audience for this tutorials are:

  • Engineering and Computer Science Students
  • Beginner level programmers who want to develop their career in ASP.NET based web development.
  • Senior programmers who like to switch over to ASP.NET web programming.

Potem następuje etap wyjaśnia czym jest np. przeglądarka (ang. browser). Niejako rozumiem, że facet (Tony John) wyjaśnia podstawowe pojęcia, ale bez przesady, nie kierował tego kursu do absolutnych początkujących. Już przy tej przeglądarce ujawniają się skłonności do reklamy firmy Microsoft, od niewinnego zdania: Netscape was the most popular web browser till 4-5 years back, but currently more than 90% of the internet users use “Internet Explorer” to browse the websites. (kurs jest nieco stary).

Dalej pod tym względem jest jeszcze piękniej:

It is very hard to divide applications into any strict categories. There is no clear definition exists to categorize computer applications. However, here is a small list of different types I can think of:

  1. Embedded Systems
  2. Windows applications (also called ‘Desktop applications’)
  3. Web Applications

Czyli: nie ma innego systemu oprócz Windowsa!

Takich kwiatków jest oczywiście jeszcze więcej, ale wystarczy tego. Zupełnie nie rozumiem, czemu inżynier, programista z doświadczeniem, podejmujący się napisania tutorialu musi wykazywać jakieś skłonności tzw. “fanboja”. To nie jest miejsce na reklamę, jak ktoś czyta jego dzieło, to najwyraźniej zamierza korzystać z technologii oferowanej przez wspomnianego monopolistę.

Już lepiej by popracowali nad HTMLem i stylami swojej strony (w ASP .NET notabene) bo aktualnie jest to po prostu okropne. W dodatku niektóre ze stylów (głównie fragmenty kodu) rozwalają się, nawet pod ich ukochaną przeglądarką (specjalnie sprawdziłem).

Podsumujmy więc, opisany tutorial:

  • jest nieco przestarzały
  • … nie wydaje mi się, żeby jakoś bardzo wpłynęło to na opisywane zagadnienia
  • zawiera niepotrzebne wstawki “marketingowe”
  • wyjaśnia wszystko od podstaw …
  • … więc cześć materiału raczej ominiemy
  • przydałoby się, aby autorzy nieco nad nim (i całą stroną) przysiedli, bo tu i ówdzie jest kilka literówek

PS. Jakby ktoś znał jakieś dobre strony z kursami ASP .NET, może podać, przyda mi się pewnie.

Linki

To nie tak jak myślisz, kotku (2008)

Doktor Morawski myślał, że przewidział wszystko. Żonie powiedział, że pojechał do Warszawy na zjazd, a wziął młodą pielęgniarkę ze sobą do Sopotu. Z grzesznych zamiarów niewiele zostało, kiedy to los postanawia zakpić sobie z niego. A właściwie reżyser.

Tak zaczyna się polski film “To nie tak jak myślisz, kotku”. Oczywiście z czasem fabuła zagęszcza się od postaci i ról oraz nazwisk jakie przybierają, a zmieniają je potem, że idzie się pogubić, kto jest kim i dla kogo. Słowem, jest to komedia pomyłek.

I oglądając to miałem wrażenie, że jest to przeróbka, czy też ekranizacja jakiejś sztuki teatralnej, mamy prawie stały zestaw bohaterów, jedno praktycznie miejsce akcji. Nie znalazłem potwierdzenia mojej tezy. W każdym razie ktoś tu się na pewno teatrem inspirował.

Oceniam ten film jako średni, dobrze się bawiłem, ale z drugiej strony, całość humoru opiera się na niedomówieniach, zbiegach okoliczności i nieporozumieniach, które mogą dotknąć i samego widza. Niektórzy pewnie liczą jako plus obecność Jacka Borusińskiego, znanego z występów w kabarecie Mumio, ale nie ja, inna sprawa, że radzi on sobie całkiem nieźle. Raczej “ambitniejsze” wypełnienie wieczoru, kiedy to ma się ochotę nieco odpocząć, ale też nie całkiem wyłączyć.

W imię boże

Na amerykańskiej broni używanej przez wojsko, podobno są cytaty z Biblii. Tak na prawdę oczywiście są to jedynie symbole cytatów – literki i cyferki składające się na skrót cytatu, a nie same wytłoczone wersy. No ale przecież tytuł “Inskrypcje na lufach amerykańskich żołnierzy: cytaty z Biblii”, brzmi nośniej niż “Odwołania do Biblii małym druczkiem ukryte pośród innych literek, na które i tak nikt nie zwraca uwagi”. I jeszcze na koniec artykułu takie zdziwienie, że armia nic o tym nie wiedziała. Tych “cytatów” ciężko się dopatrzeć nawet na zdjęciu w powiększeniu.

Ja chciałem nie o artykule, ale o sam pomyśle. W końcu chrześcijaństwo to religia pokoju. Jego symbolem jest krzyż oraz Biblia. I słusznie wyznawcy pchają te symbole wszędzie gdzie popadnie, w końcu każdy chce pokoju, co nie? No, ale tym razem nieco przesadzili, choć trzeba pamiętać, że Amerykanie dość specyficznie pojmują religię oraz broń (np. msze z bronią). Inna sprawa, że nie jest to nic nowego: w imię Chrystusa zabija się od bardzo wielu lat. Ciekawe co na to sam wymieniony?

Na podstawie: Inskrypcje na lufach (…) oraz Zdjęcia nieszczęsnych karabinów.

Parsowanie spisu imienin #2

Swego czasu ‘popełniłem’ jeden mały skrypt na użytek własny, który miał mi przerobić listę imienin ściągniętą z Wikipedii (strona: Imieniny) na zbiór zapytań SQL, które potrzebne mi były do jednego projektu. Patrząc z perspektywy czasu napisałem mały koszmarek.

Mimo to, w końcu to nieświadomie, miałem kilka wejść ludzi którzy poszukiwali następujących fraz:

  • skrypt imienin
  • sql z imieninami
  • linux imieniny
  • imiona.txt
  • szablon daty imienin
  • imieniny daty
  • imieniny.sql
  • spis imienin
  • itp…

To właśnie zapotrzebowanie czytelników, choć być może i jednorazowych, skłoniło mnie, w ramach ćwiczeń z Pythonem, do ucywilizowania mojego dzieła. Z marnych 40 linii kodu powstało ich jakieś 200 (ściślej, wliczając komentarze i puste linie 250). Ale mimo to uważam go za lepszy. Przede wszystkim wiem więcej o wyrażeniach regularnych, a kod jest obiektowy, przez co łatwo jest – mam nadzieję – dostosować go do indywidualnych potrzeb użytkownika.

Przykłady uruchomienia

Zamieszczam przykładowe wyniki działania mojego najnowszego dziecka:

Ogólna zasada działania

Ponieważ nie wiem, jaką kto założył sobie bazę danych, jakie ma w niej tablice i relacje między nimi, nie napisałem klasy generującej SQL, ale zakładam, że na podstawie opisów oraz przykładów i przy odrobinie smykałki do Pythona łatwo będzie uzyskać to co tam się komu wymarzy.

Nie mniej jednak oto i krótki kurs: klasą która dostaje i formatuje dane na koniec, jest jakiś potomek klasy AbstractLineParser. Ważne jej metody, które należy przeciążyć to: _setNames oraz _setDates. Należy pamiętać, iż obie dostają jako parametry listy (bo jedno imię zwykle ma wiele dat, a imię też może występować w odmianach). Zawsze też dostaje się najpierw imiona, a potem daty do nich. Resztę można wywnioskować samemu, albo przebrnąć przez komentarze.

Kod skryptu można zobaczyć, lub pobrać z tego oto linka

Słowo końcowe

Cóż, moje testowanie błędów nie wykazało, jednak przestrzegam, przed imieniem: “Apollo(n)” (to chyba jedyny taki przypadek). Ignorowane też są imiona, z których czytelnik został odesłany – np. Adelgunda, zob. Adalgunda. Nie zabraniam modyfikacji, nawet zachęcam, nie biorę odpowiedzialności za wszelakie zło wyrządzone przez ten skrypt (no bez przesady, to tylko trochę kodu w Pythonie).

Na końcu chciałem podziękować (w kolejności chronologicznej): tym którzy komentowali mój poprzedni post, bo ich rady jakoś tam się przydały, następnie mojej Pani, która bez wątpienia zna się na Pythonie lepiej niż ja – bez złośliwości, wiem że to nie jest trudne – za pomoc.

Post testowy

Jak przysłowiowa sójka wybiera się za morze, tak ja zbieram się do wymiany szablonu mojego zacnego bloga. Postanowiłem nieco przybliżyć się chociaż do plaży i opracowałem sobie testowy post na bloga. Testowy, czyli “Lorem ipsum” z różnorakimi tagami HTML, które w takim tekście mogą się pojawić. Publikuję go tutaj, gdyż albo może się komuś przydać, albo mogę to zwyczajnie zgubić, albo aby ktoś inny wytłumaczy mi, co znowu robię robię źle…

Jest to treść posta (tego co wklepuje się w “Dodaj wpis”), więc nie zawiera tagów takich jak html, body etc. Po drugie daję go w dwóch wersjach, bo stwierdziłem, że za długie mi te paragrafy wyszły. Po trzecie, nie zawiera on tagów związanych z formatowaniem (np. span, już o np. font nie wspominając). Tagi z rzadka mają atrybuty, ale kilka ma. Dodałem też EXCERPT choć nie wiem po co. W ostatnim paragrafie nawstawiałem najróżniejszych dziwnych tagów, ale być może kiedyś okażą się użytecznymi.

Notka na przyszłość: przydałby się obiekt YouTube… A i jeszcze jedno, tabelka została zapożyczona ze strony Helionu.