niedziela, 29 marca 2009

Slumdog. Milioner z ulicy / Slumdog Millionaire (2008)


Reżyseria: Danny Boyle,
Scenariusz: Simon Beaufoy,
Zdjęcia: Anthony Dod Mantle ,
Muzyka: A.R. Rahman,
Osada: Dev Patel/Mały Jamal/Starszy Jamal - Jamal, Madhur Mittal/Azharuddin Mohammed Ismail/Ashutosh Lobo Gajiwala - Salim, Freida Pinto/Rubiana Ali/Tanvi Ganesh Lonkar - Latika.

Fajny, kurde film. Raz mocny i drastyczny, a raz śmieszny i wzruszający. Na szczególną uwagę zasługuje scenariusz. Historia Jamala przedstawiana jest wraz z kolejnymi pytaniami w teleturnieju Milionerzy (swoją drogą poległbym już na pierwszych dwóch pytaniach :P). Wątki tak fajnie się ze sobą przeplatają i spinają w jedną całość, że do teraz jestem pod wrażeniem. Dodatkowo świetna muzyka i zdjęcia. Jest w tym filmie trochę banału i słabszych elementów, pomimo tego polecam obejrzeć.

ps. jeśli właśnie obejrzałeś ten film i jesteś facetem to już nie musisz szukać, wystarczy, że klinkniesz tutaj ;)

Michał level up

W piątek wieczorem odbyła się część artystyczna uroczystości związanych z awansem Michała na kolejny 'level' - czyli urodzinowy bilard i piwo.

'Event' rozpoczął się klasycznie w Zakręconej Bili w ustalonym, informatycznym towarzystwie. Standardowo spóźniliśmy z mtomsonem jakąś godzinę - pomimo zachęcających MMS'ów Michała. Poza tym, że zagrałem tylko raz i dostałem baty to wieczór przebiegał również klasycznie. Rozmowy o projektach, laptopach, ...wielkościach EAR'a w projekcie i o tym dlaczego nas zewsząd uciskają. Około godzinny 22'giej podjęto demokratyczną decyzję o zmianie lokalu. Skierowaliśmy się do miejsca, gdzie absolutnie nic nikogo nie dziwi, gdzie przychodzą jednostki wybitne, ale też kolesie, którzy próbują poderwać laski odgrywając scenki rodzajowe lub wyginając arkusz pleksi - tak, tak chodzi o Dragona. Niestety, a może na szczęście w Dragonie nie było miejsca, więc usiedliśmy w Brogansie. Odśpiewaliśmy sto lat Michałowi - było widać, że się chłopina wzruszył:).

Tego wieczoru dowiedziałem się sporo o Holandii, kulturze tajskiej i o owocach, których nazw nie jestem w stanie powtórzyć (ale podobno smakują podobnie do liczi) - normalne pubowe tematy :)

Dużo ciekawsze wydarzenia miały miejsce na etapie, kiedy wypowiadanie trudniejszych słów stawało się dla mnie problemem :P. Tomek poleciał zamówić Boba Marleya, ale już nie wrócił do stolika tylko pląsał wokół. Po niecałych dziesięciu minutach pląsaliśmy wszyscy :). Jak teraz o tym myślę to trochę mi głupio, ale cóż ...urodziny :)

Fajnie było.

Bezpieczeństwo oparte o kontener

Czas posmęcić o informatyce...

Kontenery referencyjnego serwera aplikacji Java EE udostępniają trzy mechanizmy bezpieczeństwa dla komponentów aplikacji odpowiedzialnych za uwierzytelnianie użytkowników i autoryzację dostępu do zasobów i funkcjonalności.

- mechanizm deklaratywny - kluczowym elementem mechanizmu jest deskryptor wdrożenia, w którym w sposób deklaratywny zapisane są wymagania dotyczące prawidłowego wdrożenia i wykorzystania mechanizmu bezpieczeństwa. Deskryptor pełni tu rolę kontraktu. Wyróżniamy dwa poziomy, na których może być wykorzystany deklaratywny mechanizm bezpieczeństwa:

· Poziom aplikacji (ang. Application Level Security) – na poziomie aplikacji, role wykorzystywane w aplikacji muszą być zdefiniowane za pomocą adnotacji DeclareRoles, RolesAllowed lub w elementach w pliku deskryptora wdrożenia aplikacji. Mapowanie roli na zarządców definiuje się w elemencie , dla wszystkich ról wykorzystywanych w systemie. Zdefiniowane role dotyczą wszystkich komponentów aplikacji. Pozwala to na pewnego rodzaju generalizację ról w aplikacji. Jeśli w deskryptorze wdrożenia konkretnego komponentu aplikacji zdefiniowano role, to komponent ten poza tymi rolami, może również korzystać z ról zdefiniowanych na poziomie aplikacji.

· Poziom komponentu (ang. Component Level Security) – Dotyczy konkretnego komponentu aplikacji. W przypadku komponentów webowych może to być na przykład serwelet. Wówczas nazwy ról powinny być zdefiniowanie w deskryptorze wdrożenia serwletu – web.xml.

- Mechanizm programowalny – programowalny mechanizm bezpieczeństwa, wykorzystywany jest, gdy deklaratywny mechanizm jest niewystarczający do spełnienia wymagania modelu aplikacji. Mechanizm ten dotyczy komponentów EJB oraz serwletów i opiera na wykorzystaniu metod interfejsu EJBContext dla komponentów EJB oraz interfejsu HttpServletRequest dla serwletu. Metody te zostały wymienione poniżej:

· isCallerInRole (EJBContext),
· getCallerPrincipal (EJBContext),
· isUserInRole (HttpServletRequest),
· getUserPrincipal (HttpServletRequest),
· getUserRemote (HttpServletRequest).

Metoda getUserInRole pozwala na uzyskanie informacji o roli, jaką posiada użytkownik, metoda getUserPrincipal zwraca obiekty klasy Principal z pakietu java.security.Principal, natomiast metoda getUserRemote zwraca nazwę użytkownika, który ma zostać uwierzytelniony. Wymieniony zestaw metod pozwala na podejmowanie biznesowych decyzji w oparciu o logiczną rolę użytkownika.

Przykładem wykorzystania mechanizmu programowalnego może być sytuacja w której aplikacja dokonuje autoryzacji w oparciu o parametry środowiskowe lub parametry wywołania komponentu webowego. Na listingu przedstawiony został szkielet kodu serwletu wykorzystujący metody getUserPrincipal i getName.

public void doGet(HttpServletRequest request, HttpServletResponse response) {

String userName;

... //inny kod

//Uzyskanie obiektu obiektu nadzorcy z żądania HTTP
Principal principal = request.getUserPrincipal();

if (principal != null) {
//Uzuskanie nazwy nadzorcy
userName = principal.getName();
}
... //inny kod
}
Listing: Szkielet kodu wykorzystanie metody getUserPrincipal i getName w serwlecie.

Jeżeli serwlet jest tylko jednym z komponentów aplikacji i dla niego zostały zdefiniowanie role to mogą one posłużyć do określenia pozwoleń dla ról w innych komponentach aplikacji. Sytuacja taka może wystąpić, jeśli cześć funkcjonalności serwletu wykorzystuje kod innych komponentów aplikacji. Za pomocą deskryptora wdrożenia można obsłużyć taka ewentualność i przekazać pozwolenia roli określonej w serwlecie do roli zdefiniowanej w całej aplikacji. Rozwiązanie takie jest możliwe poprzez wykorzystanie elementu, będącego podelementem <>.

<security-role-ref>
<role-name>role_A</role-name>
<role-link>role_B</role-link>
</security-role-ref>
Listing: Konfiguracja w deskryptorze wdrożenia.
public void doGet(HttpServletRequest request, HttpServletResponse response) {

... //inny kod

//Uzyskanie obiektu obiektu nadzorcy z żądania
if (request.isUserInRole("role_A")) {
//przekierowanie do strony roli "role_B"
} else {
//przekierowanie do strony błędu autoryzacji
}

... //inny kod

}
Listing: Szkielet kodu serwletu ilustrujący sytuację, gdzie konieczne jest przekazanie pozwoleń przyznanej roli zdefiniowanej w jednym komponencie, do roli zdefiniowanej w innym komponencie.

- Mechanizm oparty o adnotacje (ang. annotations) – Adnotacje są metadanymi, pozwalającymi na podanie pewnych parametrów konfiguracyjnych dla kodu w języku Java. Wykorzystywane są do deklarowania zależności wykonania kodu od kontekstu i konfiguracji, w jakiej ma zostać wykonany. Zgodnie ze specyfikacją Java EE, adnotacje dla komponentów webowych zostały dołączone do specyfikacji serwletów. Dla komponentów webowych dostępne są adnotacje:

· @DeclareRole,
· @RunAs.

Adnotacja @DeclareRole jest alternatywą dla elementu w deskryptorze wdrożenia aplikacji webowej. Jej wartość specyfikuje rolę, jaką muszą posiadać użytkownicy, aby mieć dostęp do funkcjonalności oferowanej przez obiekt klasy. Przykładowo, zadeklarowanie, że klasa dostępna jest dla użytkowników posiadających rolę administratora byłaby następująca:
@DeclareRole("Admin")
public class nazwa_klasy {
...
}
Adnotacja @RunAs pozwala na definiowanie ról w komponencie aplikacji, które mają swoje odpowiedniki na poziomie serwera. Odpowiednikiem adnotacji @RunAs jest element <> w deskryptorze wdrożenia aplikacji.

To tyle tytułem wprowadzenia do pojęcia bezpieczeństwa w standardzie Java EE. Następny post w tym temacie będzie o uwierzytelnianiu klientów webowych.

czwartek, 26 marca 2009

Kabaret "Pod Egidą" - Student Awas

Pamiętam ten skecz z czasów gdy jeszcze boso za tramwajami biegałem. Genialni Piotr Fronczewski i Wojciech Pszoniak.

"...on myślał że go pyta, a on myślał, że mu odpowiada"

Absolutny klasyk, Enjoy :)

środa, 25 marca 2009

Otwarcie Galerii Malta w Poznaniu

Dnia 25 marca 2009 otworzono kolejną galerię handlową w Poznaniu. Galeria Mata jest duża, ładna, świeci, w nocy i ma podobno największą spośród największych szybę w galeriach handlowych. Nawet robi wrażenie jak na szybę. Problem polega na tym, że Galeria Malta wytyczyła nowy ciąg komunikacyjny na trasie Piątkowo - Galeria Mata. Ciąg ten pokrywa się niestety z moją drogą do pracy. Dzień w którym otwierano Galerię Malta rozpoczął się dla mnie standardowo, czyli od wielokrotnego, panicznego chowania budzika pod poduszkę. Po uświadomieniu sobie, że dzisiaj nie jest jednak sobota lub niedziela wyszedłem zniesmaczony z mieszkania zabierając worek ze śmieciami. Problematyczny dzień zapowiedział już ów worek ze śmieciami. Nie wiem, dlaczego mam taki brak wyczucia co do momentu wyrzucenia śmieciowego worka do śmietnika. Przez tą niedoskonałość okresowo paraduje po sklepach z workiem ze śmieciami. Tym razem dotarłem z workiem do przystanku autobusowego. Po chwili przyjechał autobus i dopiero przy wsiadaniu zwróciłem uwagę na szeleszczący balast w mojej dłoni. No cóż, poszedłem do śmietnika wyrzucić worek. Następny autobus przyjechał po ok 15'stu minutach - pełny gimnazjalistów jadących do Galerii Malta. W połowie drogi autobus się zepsuł, kierowca walczył z drzwiami, ktoś ustawicznie napieprzał mnie plecakiem, a jeden z gimnazjalistów zastanawiał się głośno jaka to rzeka płynie za oknem - "Może to Warta, nie, nie to nie może być Warta" - osobisty dramat. W końcu zagadałem - "Może Odra? Jesteśmy praktycznie poza Poznaniem". Gimnazjalista zastanowił się dłużej po czym stwierdził coś w stylu - "Nie, nie to niemożliwe, Odra jest przecież na wschodzie!". Co tu dużo mówić, gdzieś w edukacji tego młodego człowieka popełniono błąd. Przy tej okazji, przypomniała mi się sytuacja z lekcji geografii w podstawówce. Na lekcjach geografii byliśmy pytani z tzn 'mapy'. Czyli pani rzucała hasło, a my mieliśmy pokazać to wskaźnikiem na mapie. Odpowiadała Maja i miała pokazać GOP (Górnośląski Okręg Przemysłowy), ale coś nie bardzo była w temacie. Podpowiadam jej z ławki - "Dużo czerwonego, dużo czerwonego!" - no bo tam jest dużo miast. Maja krążył wskaźnikiem, aż w końcu znalazła kawałek, gdzie było dużo czerwonego. Przetarłem oczy i myślałem, że śnie. Maja dumnie wskazywała - Berlin :). Anyway. Gdy kierowca autobusu wygrał z niezamykającymi się drzwiami, dojechałem, trącany plecakiem do mojego docelowego przystanku. Czekała mnie przesiadka w tramwaj. Udało mi się wsiąść dopiero za drugim razem. Wysiadłem przy Politechnice i wkroczyłem w tłum zombi zmierzających do Media Expert po iluzorycznie przecenione czajniki, telewizory, okapy, maszynki do mięsa itp. Po niecałych 20'stu minutach byłem mniej więcej na wysokości wejścia do Galerii Malta, przebijając się dalej w kierunku miejsca pracy. Nadeszła oczekiwana przez wszystkich godzina 10:00, czyli moment otwarcia Galerii Malta. Wtedy dopiero zaczęła się rzeź w czystym tego słowa znaczeniu. Krzyki, przepychanie, piski. Balcerek z serialu Alternatywy 44 skomentowałby to pewnie podobnie jak reprodukcję Bitwy pod Grunwaldem wiszącą u towarzysza Winnickiego - "u nas na Targówku też jest taka bitwa, jak rzucą balerony do rzeźnika, tyle że bab jest więcej..."

Czas dotarcia do pracy godzina i 30 minut.

Z pracy wróciłem ok 20:30, prosto do siłowni, gdzie jakiś koks z własnej woli przyglądał się moim ćwiczeniom i radził "bardziej wyciskać na wydechu" I co takiemu powiedzieć - "Spieprzaj dziadu!"?

wtorek, 24 marca 2009

Zapaśnik / Wrestler (2008)


Reżyseria: Darren Aronofsky,
Scenariusz: Robert D. Siegel,
Zdjęcia: Maryse Alberti,
Muzyka: Clint Masell,
Osada: Mickey Rourke - Randy "The Ram" Robinson Evan Rachel Wood - Stephanie Marisa Tomei - Cassidy.

Randy "The Ram" Robinson to legenda wrestlingu z lat 80'siątych. Był idolem nastolatków i ich tatusiów, cyklicznie przesiadujących w restauracjach sieci McDonald's. Zasłynął dzięki widowiskowym walkom i nokautującemu ciosowi nazwanego 'Ram Jam'. Bohatera filmu poznajemy 20 lat po jego spektakularnych sukcesach. Zniszczonego trybem życia, sterydami, tłuczącego się na krzesła i zszywacze do papieru za marne pieniądze z miejscowymi leszczami. Mieszka w przyczepie kempingowej, a wieczorami dorabia w makiecie. Specjalnie nie narzeka, jakby zawieszony w świecie, gdzie dalej jest gwiazdą. Otrzymuje szansę ponownej walki z Ajatollahem, która kiedyś przyniosła mu niesamowitą sławę i pieniądze. Zaczyna trenować i brać sterydy. Spotyka go jednak dramat, który niweczy jego starania. Musi zmienić swoje życie. Pomaga mu w tym striptizerka Cassidy. Okazuje się jednak, że pomimo pewnych sukcesów, każda kolejna porażka powoduje, że nie ma możliwości rozbicia bariery, która rozdziela Randy'go "The Ram" Robinson'a od zwykłego Robina Ramzinski'ego.

Najciekawszy w tym filmie jest obraz człowieka upadłego, który nie potrafi dokonać drastycznej zmiany w swoim życiu. Wiedząc o tym, że jego lista powodów do życia stała się niebezpiecznie krótka. Jakby z definicji musiał ponieść klęskę, nie mogąc odciąć się od dotychczasowego stylu życia, człowieka z nałogiem tak silnym, że przejął całkowitą władzę na nim. To nie jest film, gdzie widz spodziewa się szczęśliwego zakończenia, chyba od początku ma się tą świadomość, że zakończenie może być tylko jedno. Otwarte zakończenie i ta kilkusekundowa cisza - straszna. Jakby specjalnie przygotowana na to, aby widz zadał sobie kilka trudniejszych pytań o samego siebie.

sobota, 21 marca 2009