Pobieranie typu klucza z pustej EnumMap

Klasa java.util.EnumMap jest bardzo wydajną implementacją java.util.Map dla wyliczeń. Jest wydajna dlatego, że hasze dla kluczy są wartościami porządkowymi instancji danego wyliczenia. Dokładniej jej implementacja przechowuje wartości w tablicy obiektów a indeksy to wartości porządkowe wyliczeń. W metodzie get możemy znaleźć taki kod:

vals[((Enum)key).ordinal()]

służący do pobierania wartości z tablicy vals dla klucza key. Żeby miało to sens (aby uniknąć powtarzania się kluczy) jeden obiekt typu EnumMap musi mieć klucze będące obiektami tego samego wyliczenia. Mechanizm typów generycznych nie wystarczy do zapamiętania typu klucza bo informacje o typach generycznych są wymazywane podczas kompilacji. Read more

Historia obejścia zabezpieczeń HD-DVD (AACS)

Wraz z wprowadzeniem standardów HD-DVD i Blu-Ray został wprowadzony nowy sposób zabezpieczania zawartości na krążkach. Wielkie koncerny wydały miliony dolarów na jego wdrożenie a prace nad nim trwały wiele miesięcy. Mowa o AACS (Advanced Access Content System) należący do grupy systemów DRM (Digital Rights Management).
Zgodnie z jego specyfikacją odtwarzanie danych z płyt korzystających z AACS miało być możliwe tylko przy pomocy sprzętu i oprogramowania wyprodukowanego przez producenta, który podpisał umowę licencyjna z twórcami standardu. Standard przewiduje uniemożliwienie odtwarzania nowych płyt przez urządzenia, które zostałyby skompromitowane. Daje również producentom płyty możliwość zablokowania jej odtwarzania w przypadku, gdyby była masowo klonowana. Read more

Scena wyłączania elektrowni przez Trinity w Matrix

Pod koniec listopada zeszłego roku w PC World Computer (oraz także w gazeta.pl) ukazał się artykuł o największych komputerowych nonsensach w filmach. Artykuł był na raczej niskim poziomie. Pomijając dziwne stwierdzania nim zawarte zbulwersowała mnie jedna rzecz. Autor próbował napiętnować scenę hackowania elektrowni przez Trinity w Matrix Reloaded. Mało ważne jest to, że autor nie bardzo rozumie co się działo w tej scenie pisząc między innym, że

W “Matrix: Reaktywacja” Trinity włamuje się do komputera elektrowni za pomocą podobnie prostego ciągu “Z1ON0101″

myśląc, że zgadła hasło.

Moim zdaniem wspomniana scena jest jedną z nielicznych scen w filmach opisującą realny i dosyć spójny scenariusz włamania. Read more

JPA w NetBeans – tutorial

Java Persistence API (JPA) jako część technologii EJB 3.0 upraszcza zapis danych obiektowych w relacyjnym modelu danych. Trwały zapis modelu aplikacji jest łatwiejszy niż przy pomocy entity beans w EJB 2.1. Używanie entity beans nie było zbyt wygodne i programiści bardzo często w zamian stosowali frameworki takie jak Hibernate, Oracle TopLink, i Java Data Objects (JDO). JPA bazuje na pomysłach grup pracujących nad tymi frameworkami.

Ten post umieściłem w kategorii Java EE. JPA jest częścią specyfikacji Enterprise JavaBeans 3.0 ale nie znaczy to, że nie można go użyć w zwykłej aplikacji SE. Opiszę tutaj właśnie taki przykład. Użyję do tego NetBeans IDE 6 wraz z biblioteką TopLink Essentials, która jest implementacją JPA wykonaną przez Oracle. Read more

JAX-WS vs SOAP:HEADER

Do uwierzytelniania w webserwisach często stosowało się HTTP Authentication (RFC 2617). Jest to sposób przesyłania danych uzytkownika uzależniony od protokołu (w nagłówko HTTP). We współczesnych aplikacjach wykorzystujących usługi sieciowe jest to niedopuszczalne. Wiadomość SOAP może na przykład iść od konsumenta usługi poprzez firewall XML do ESB i wtedy do kolejki komunikatów, z niej do kolejnego ESB aby być wkońcu skierowana do serwera dostawcy usług. W takiej sytuacji przesyłanie danych uwierzytelniających w nagłówku zupełnie się nie sprawdza nie mówiąc już o niższych warstwach jak SSL (RFC 2246). Stostuje się do tego przesyłanie danych związanych z bezpieczeństwem w nagłówku SOAP. Istnieje standard to normalizujący (WS-Security) ale jest stosunkowo nowy (1.0 marzec 2004, 1.1 luty 2006) i wiele usług korzysta z własnych rozwiązań. Read more

« Previous Page