Windows 8 – ewolucja czy rewolucja?

Zastanawiałem się jak zatytułować ten wpis. Pierwsze wrażenia to na pewno by nie były, bo Windows 8 pierwszy raz spróbowałem zaraz po wydaniu wersji Developer Preview. W zasadzie dziwne byłoby, gdyby ktoś, kogo hobby jest szeroko pojęte IT nie wiedział nic o tym systemie – mówi się o nim wiele, szykuje się pewnego rodzaju rewolucja, a przez to opinie są bardzo skrajne. Sam zacząłem przygodę z nim jak już wspomniałem jeszcze w tamtym roku. Nie wyszło, test trwał bardzo krótko. Kolejne podejście było w lutym, po premierze Consumer Preview. Tutaj moje wrażenia były już znacznie lepsze, ale kilka detali nadal nie dawało spokoju.
Continue reading “Windows 8 – ewolucja czy rewolucja?”

Samsung Galaxy Nexus – recenzja

Jakiś czas temu pisałem o pewnym smartfonie. Była to recenzja Samsunga Nexusa S, którego postanowiłem spróbować, aby przekonać się, czy czysty Android może spełnić mojego oczekiwania. Dla tych, którzy wpisu nie czytali skrótowiec: okazało się, że niestety warunek nie został spełniony. Telefon jako taki urzekł mnie wieloma walorami, poczynając od wyglądu, poprzez wykonanie, brzmienie, aż po wyświetlacz (a to była wersja z SLCD!). Postanowiłem więc zostawić przy sobie LG z Windows Phone. Coś jednak we mnie pękło. Ten Nexus wywarł na tyle duże wrażenie, że nawet niektóre idiotyzmy z Androida, czy jego wolne działanie, nie pozwoliły na całkowite zapomnienie o tym, co prezentuje. Jeżeli ktoś powie, że jestem niezdecydowany to będzie miał rację. Po prostu często, aby podjąć jakąś ostateczną decyzję, muszę po prostu czegoś spróbować.
Continue reading “Samsung Galaxy Nexus – recenzja”

Samsung Nexus S – recenzja

Jak wiecie (albo i nie) z mojego poprzedniego wpisu, albo nawet i jeszcze jednego które napisałem w styczniu i lutym, korzystam z telefonu działającego pod kontrolą Windows Phone. Bardzo długo nie mogłem się zdecydować co do wyboru, bo Android chociaż ciekawy, działał wolno. Niemniej dłużej używałem go tylko na LG P500, a coś, co ma procesor ledwie 600 MHz nie jest na pewno dobrym wyborem dla zielonego robota tj. oczywiście działa na nim, ale trudno tu mówić o płynności. W międzyczasie zaczęły mnie nieco denerwować niektóre braki w WP, a pod niektórymi względami nawet całe konto Windows Live. Ostatnio zacząłem się nawet zastanawiać nad zmianą na coś innego… tylko co?
Continue reading “Samsung Nexus S – recenzja”

Recenzja HP ProBook 6540b

W połowie lutego ubiegłego roku miałem nieprzyjemność zetknąć się z problemem uszkodzonego systemu chłodzenia w komputerze. Nieprzyjemność, ponieważ awaria dotyczyła mojego osobistego notebooka. Po wielu rozterkach co robić ostatecznie zdecydowałem się kupić nowy sprzęt, a zepsuty wysłać na serwis, zaś po naprawie po prostu go sprzedać. Zdecydowałem się na taki krok, ponieważ po roku użytkowania komputera przenośnego dobrze wiedziałem, co tak naprawdę jest mi potrzebne, a co nie. W wypadku Paviliona dv5 mogłem co prawda mieć niemal wszystko, jeżeli zaszła taka potrzeba, ale piękny wygląd oraz wydajna karta graficzna powodowały, że sprzęt nieco się grzał no i oczywiście bardzo szybko brudził – od tej pory wiem, że bardzo ciężko pogodzić ze sobą stylistykę oraz niezawodność. Nowy laptop miał służyć głównie zastosowaniom biurowym, ale zapewniać wysoką wydajność, oraz sprzętowe wsparcie dla technik wirtualizacji, z których coraz częściej korzystam. Przez kilka dni niemal non-stop przeglądałem najróżniejsze modele, odwiedziłem również kilka sklepów, aby przekonać się na własne oczy i ręce, jak wyglądają i spisują się oferowane komputery.
Continue reading “Recenzja HP ProBook 6540b”

Suma kontrolna pliku w PHP na przykładzie md5

W ostatnim czasie tworzyłem skrypt, który musiał badać sumy kontrolne plików i porównywać je z gotową listą – po prostu weryfikacja, czy pliki są oby na pewno w porządku, z użyciem hashy md5. Wszystko byłoby bardzo proste, gdyby nie fakt, że pliki bywały dosyć spore (nawet ponad 250 MB), a nie miałem żadnego wpływu na ustawienia z php.ini. Dlaczego o tym wspominam? Ano dlatego, że pierwsze co przyszło na myśl to użycie funkcji md5_file. W sieci można znaleźć również inne specyficzne rozwiązanie tj. wczytanie zawartości pliku, a następnie obliczenie przy pomocy funkcji md5() hasha dla tych danych:

$checksum = md5(file_get_contents($filename));

Niestety przy sporych plikach momentalnie przekraczamy limit zajętej pamięci, bo przecież ich zawartość leci właśnie tam. Takie rozwiązanie odpada. Lepszym wydawało się użycie wspomnianej funkcji md5_file, która pamięci nam tak nie zawala:

$checksum = md5_file($filename);

To niestety również nie było satysfakcjonującym wynikiem, bo o ile skrypt nie przekraczał limitu pamięci, o tyle często nie był w stanie wyrobić się z obliczeniem sumy w czasie jaki miał do dyspozycji (np. 60 sekund). Po prostu obliczenie sumy md5 za pośrednictwem PHP było za wolne. Kolejne rozwiązanie – sięgnięcie do shella:

$result = explode('= ',exec("openssl md5 $filename"));
$checksum = $result[1];

W tym wypadku obliczanie sumy kontrolnej trwało… ponad 3-4 razy krócej! Było to już więc całkiem niezłe rozwiązanie, oczywiście do pewnego rozmiaru. Okazało się jednak, że istnieje jeszcze szybsza metoda, skracająca ten czas jeszcze dwukrotnie, czasami nawet więcej. Zamiast używać openssl md5, można od razu użyć md5sum, dodatkowo z parametrem “b” tj. czytanie w trybie binarnym. Na koniec przedstawiam więc metodę, która w moim wypadku okazała się najszybsza, dodatkowo jest ona “skompletowana” poprzez przefiltrowanie zmiennej która idzie do funkcji shell_exec:

$result = explode(' ', exec('md5sum -b ' . escapeshellarg($filename)));
$checksum = $result[0];

Warto zwrócić uwagę na różnicę w pierwszym argumencie dla explode oraz sam dostęp do elementu tablicy z sumą kontrolną – oba polecenia zwracają dane w nieco inny sposób (oraz kolejności). To by by było na tyle. Dlaczego nie SHA albo CRC? Pierwszy z nich okazał się sporo wolniejszy, drugi nie odbiegał od md5 ale zwracał sumy w formacie dwuczłonowym, a mi zależało na jak najszybszym i najkrótszym otrzymaniu sum kontrolnych. Jeżeli znacie metody lepsze / szybsze, lub też gdzieś popełniłem błąd, poprawcie mnie.