Samsung T260HD 26″

Mar 18

Samsung T260HD 26″

Na moim biurku programisty pojawił się Samsung T260HD, przekątna 25,5 cala z tunerem TV. Zaraz po rozpakowaniu aż się przeraziłem, jakie to wielkie. Po kilkach godzinach używania, mogę z pełną odpowiedzialnością powiedzieć, że praca na rozdzielczoś›ci 1920¤1200 pikseli jest naprawdę wygodna. Od razu zabrałem się za testy PC i tunera TV. Zaprogramowałem kilka kanałów i skonfigurowałem kontrast dla obu trybów: używania monitora na pececie i jako telewizor.

W poście postaram się wymienić wszystkie plusy i minusy produktu i podzielę się screenami, jak wygląda praca i przeglądanie Internetu na rozdzielczości 1920 pikseli wszerz.

Parametry techniczne.

Przekątna ekranu 25,5″
Wymiary plamki 0,258mm
Maks. rozdzielczość obrazu 1920×1200
Dopuszczalne rozdzielczości pracy 1920×1200
Maksymalna częstotliwość odchylania poziomego 30 ~ 81 kHz
Maksymalna częstotliwość odchylania pionowego 56 ~ 75 Hz
Kąt widzenia pionowy 160 stopni
Kąt widzenia poziomy 170 stopni
Jasność 300 cd/m2
Współczynnik kontrastu 10000:1
Czas reakcji matrycy 5 ms
Wbudowane głośniki Tak
Moc głośników 2 x 3W
Kolor obudowy czarno-bordowy
Pobór mocy tryb normalny/czuwanie/wyłączony 70W / 2W / -
Rodzaj złącza wideo 2 x HDMI, Component, D-Sub, DVI-D, Scart
Tuner TV Tak
Certyfikaty ISO 13406-2, ISO 9241-3,7,8, Vista Premium
Wymiary (szer. x wys. x głeb.) 610.0 x 435.0 x 86.5 mm
Waga [kg] 8,6 kg

T260HD jako monitor PC.

Wszystkie tryby, które oferują domyślne ustawienia monitora nie pozwalają na pracę z monitorem. Aby rozpocząć pracę z tym sprzętem, konieczne jest przejście w tryb custom i dobranie sobie odpowiedniego kontrastu i jasności. Doskonały do oglądania filmów z peceta w rozdzielczości HD. Przeglądając Internet wielu użytkowników może odczuć niepotrzebnie zmarnowanie miejsce na stronach, które mają ustaloną szerokość przystosowaną do 1024 (paski po bokach), natomiast przy stronach, które są rozciągnięte na całą szerokość i podzielone na tabele o sztywno określonych szerokościach kolumn, mogą pojawić się denerwujące pustki (np na forach dyskusyjnych). Matryca TN jest idealna do pracy programisty, który chce poczuć przestrzeń. W sieci spotkałem się z opiniami, że monitora nie monża objąc wzrokiem, czemu muszę zdecydowanie zaprzeczyć. Siedzę od niego na odległość wyciągniętej ręki – jest idealny.

Samsung jako TV.

26 cali to stosunkowo niewiele jeżeli chodzi o standardy telewizora, jednak mi w zupełności wystarcza. Dużym minusem jest to, że sprzęt nie jest wyposażony w pivot, jednakże do niezmienianej w pionie pozycji się w zupełności nadaje. Osobiście, aby korzystać z monitora jako TV, muszę obrócić go o 20 stopni w stronę łóżka i naturalnie oddalić się na przynajmniej trzykrotną odległość, niż pracuję na PC. Manewr ten nie jest denerwujący. Monitor oferuję pełną gamę opcji, jak zwykły TV: teletekst, programowanie kilkuset kanałów. 3W głośniki pozostawiają wiele do życzenia, ale Samsung jest wyposażony w 5 outputów audio, do oglądania telewizji korzystam z moich głośników Logitech X-530.

Outputy i obudowa.

Monitor posiada 2 outputy HDMI, standardowo D-Sub i DVI-D (złącze cyfrowe), Component i Scart (eurozłącze). Jeżeli chodzi o audio, wyposażony jest w 5 outputów standardowo dla konfiguracji 5.1. Obudowa prezentuje wysoką klasę wykonania i estetykę. Błyszcząca, czarno-bordowa (wiśniowa) to ostatnio modny design linii produkcyjnej Samsunga. Bardzo wygodnie ulokowane przyciski na monitorze (niewidoczne, na prawej krawędzi). Wygląd pilota – standardowy, posiada poprzeczne podpórki, co czyni go stabilnym.

Ogólne wrażenie.

Duży :) ale nie za, więc pozytywnie. Na koniec mała galeria screenshootów, jak prezentuje się praca na monitorze:

Read More

MVC – Model

Mar 09

MVC – Model

Powstało masę artykułów na temat MVC, temat staje się naprawdę oklepany. Postanowiłem zebrać wszystkie informacje w jedno miejsce i streścić je w jednym artykule uzupełniając go o informacje, które nabyłem z własnego doświadczenia oraz zwracając uwagę na najistotniejsze informacje.

Czym jest model

Model to jedna z warstw wzorca projektowego MVC, który odpowiada logikę biznesową, czyli pozyskiwanie oraz modelowanie danych pozyskanych ze źródła danych. Na samym wstępie brzmi to bardzo abstrakcyjnie. W myśl architektury MVC, dostęp do modelu powinien mieć tylko kontroler, a w żadnym wypadku widok. Dodatkowo model musi pobrać i modelować dane w taki sposób, aby można było go ewentualnie wymienić bez jakiejkolwiek ingerencji w kontroler, a co za tym idzie – widok. Niezależnie od tego, z jakiego źródła informacji korzysta (pliki tekstowe, bazy danych, pliki XML)  kontroler powinien otrzymać maksymalnie zbliżone dane podczas wymiany źródła informacji.

mvc-model

Model != baza danych

Często spotykam się z definicją modelu jako źródłem połączenia i wykonywania zapytań do serwera bazy danych. Otóż nie jest to prawdą. Według ideologii MVC model powinien być jedynie pośrednikiem między warstwą aplikacji przeznaczoną do połączenia do bazy danych, wykonywania zapytań itp., a kontrolerem. Dodatkowo powinien pomóc kontrolerowi w zbudowaniu zapytania do źródła informacji (pobranie danych na podstawie kryteriów), zmodelować je i zwrócić. Dlaczego model nie jest połączeniem do bazy danych? Jeżeli model potraktujemy jako pośrednika między kontrolerem a źródłem danych, ma on prawo wybrać dowolny sposób uzyskania żądanych informacji. Wcale nie oznacza to, że model musi używać baz danych, ale może użyć plików XML lub API udostępniane przez konkretny serwis (np. YouTube)

Wymienialność modeli i modelowanie danych

Modelowanie informacji jest to dostosowanie ich do użytku przez kontroler. Zazwyczaj jest to przekazywanie informacji w postaci tablic, wartości logicznych, liczb i ciągów znaków. Przykładem może być pobieranie informacji z bazy danych. Kontroler de facto nie wie skąd są pobierane dane, wie to tylko model, otrzymuje suche informacje. Jak rozumieć modelowanie danych przy projektowaniu aplikacji? Wyobraźmy sobie sytuację, że zmieniamy źródło informacji z bazy danych na pliki XML. W tym przypadku kontroler powinien otrzymać rekordy danych jako tablica o tych samych kluczach i tych samych typach danych, jak miało to miejsce przy używaniu bazy danych. Wymiana modelu odbywa się bez ingerowania w kontroler.

Przykłady modeli

Najpopularniejszym sposobem pozyskania informacji jest połączenie do bazy danych i pobieranie (reprezentowanie) ich na różnoraki sposób. Doskonale wyjaśnia to tekst znajdujący się w wikipedii:

Frameworki MVC do operacji na bazach danych używają modeli i mapowania relacyjno-obiektowego, ORM (ang. object-relationship mapping) – w Railsach jest to ActiveRecord, w Catalyscie np. DBIx::Class, a framework Spring w Javie używa Hibernate. Zwykle jest też możliwe użycie baz danych przez bezpośrednie zapytania SQL. Użycie modeli upraszcza typowe operacje – wyświetlanie ze stronicowaniem, edycję danych, a także uniezależnia od konkretnego typu bazy danych.

Posiadam przykład od siebie. Źródłem danych jest API serwisu Last.fm:

Read More

Kubek programatora PHP.pl

Mar 06

Kubek programatora PHP.pl

Dziś otwarty został sklep.php.pl, którego mały engine miałem okazję pisać. Póki co można w nim nabyć kubek-termos programatora o szczelnym, plastikowym zamknięciu zapobiegającym rozlewaniu się zawartości:

  • Pojemność 400 ml.
  • Nadaje się do spożywania napojów zimnych i gorących.
  • Utrzymuje temperaturę wiele godzin.
  • Dostosowany dla osób prawo i lewo ręcznych.

Cena z przesyłką wynosi 40zł. Mam nadzieję, że z biegiem czasu asortyment znacznie się powiększy. Warto wspomnieć, że z każdym złożonym zamówieniem zasilasz pulę pieniężną przeznaczoną na nagrody w konkursach o 5 zł.

Read More

jQuery form post ajax request

Feb 22

jQuery form post ajax request

Już kiedyś interesowałem się jQuery, ale w związku z podjęciem się nowego, dużego projektu postanowiłem pogłębić swoją wiedzę i pobawić się tą biblioteką.

Jako, że klient ma bzika na punkcie przeładowań ajax postanowiłem zaimplementować automatyczne przesyłanie formularzy w tle i wklejanie w <body> response żądania. Od strony PHP sprawa wygląda bardzo prosto – jeżeli request został wysłany przez jQuery, wyświetlamy tylko to, co jest pomiędzy <body> i </body>. Po wysłaniu requesta, jQuery powinno wkleić wynik do body na naszej stronie.

Przykładu nie będę tłumaczył, bo wydaje mi się trywialny.

Dodatkowe ficzery:

  • disable submita do momentu, aż ajax nie otrzyma odpowiedzi (aby użytkownik nie mógł kliknąć drugi raz),
  • automatyczne wykrywanie adresu URL, do którego odnosi się formularz (jeżeli nie sprecyzowano atrybutu action, wówczas wysyłamy żądanie do window.location).

Aby nasz formularz zaczął przesyłać dane w tle wystarczy dołączyć plik jquery.autoload, a w kodzie napisać:

$(document).ready(function() {  InitAjaxPost(' ... SUBMIT_ID ... '); });

Ten sposób nie rozwiązuje przesyłania pól typu file.

Read More

Automatyczny restart Apache

Feb 19

Automatyczny restart Apache

Wiele razy zdarzało mi się, że mój serwer padł całkowicie lub przerywał żądania. Wówczas był niedostępny, a zarobki generowane z serwisów diametralnie spadały. Co więcej… użytkownicy poczuli niestabilność maszyny. Dziś po odpowiedniej optymalizacji kodów aplikacji pady są rzadkością, ale wolę się ubezpieczyć przed niespodziewanym downem serwera.

Problem można rozwiązać w prosty sposób: cyklicznie uruchamiany program bash‘a przez crona będzie odpowiadał za poprawne działanie usługi apache. Listing, który zaprezentuję łączy się z adresem url odwołującym się do naszego serwera za pomocą wget, a następnie wynik działania (response body) zapisze do pliku tymczasowego. Jeżeli plik istnieje oraz ma rozmiar niezerowy, oznacza to, że serwer działa poprawnie. Jeżeli plik nie istnieje, bądź jego wielkość jest równa zero z, oznacza to, że trzeba zrestartować usługę apache, bo nie odpowiada. Zaraz przed zakończeniem programu, plik tymczasowy powinien zostać usunięty. Pozwoliłem sobie opublikować mały program służący do automatycznego restartu usługi apache.

Aby nasz program poprawnie działał, trzeba zastanowić się nad trzema istotnymi rzeczami:

  1. Ile prób połączenia ma wykonać wget oraz jakie mogę być timeouty.
  2. Czy adres url, do którego się odwołujemy będzie zawsze dostępny w przypadku poprawnego działania usługi apache.
  3. Jaki powinien być interwał uruchamiania napisanego programu.

Na moim serwerze program uruchamia się co minutę, próbuje połączyć się ze stroną dwa razy, a maksymalny czas oczekiwania na odpowiedź przy każdej z prób wynosi 10 sekund.

Program zapisany jest pod /root/check_apache.sh, a regułka uruchamiania w cronie wygląda następująco:

* * * * *       bash /root/check_apache.sh

Przedstawiony problem można rozwiązać na wiele sposobów, przedstawiłem ten najbardziej oczywisty.

Read More

Asus Eee PC 1000H – recenzja

Feb 14

Asus Eee PC 1000H – recenzja

Od dwóch dni jestem posiadaczem netbooka Asus Eee PC 1000H. Intensywnie sprawdzałem jego możliwości i powiem szczerze, że jestem mile zaskoczony. Pomimo tego, że niektórzy jego minimalizm przedstawiają jako minus – ja jestem zadowolony. Z łatwością mieści się do wewnętrznej kieszeni kurtki zimowej, posiada eleganckie etui. Podstawowym minusem jest brak napędu optycznego, ale problem rozwiązuję udostępnieniem DVD z komputera PC jako zasób sieciowy. Rzadko potrzebuję cokolwiek zainstalować, w moim przypadku do transferu najczęściej używam standardowych złącz USB (włącznie z dyskiem twardym peceta) oraz standardowo Internetu, najczęściej ftp.

Design i obudowa.

Cały komputer wygląda przyzwoicie, pomimo tego zdecydowałem się kupić oklejkę na klapę, aby odkleić ją po jakimś czasie i mieć niezarysowaną powierzchnię obudowy. Klapa jest wykonana w “modnym” stylu serii HP, czyli krótko mówiąc – błyszcząca. Minusem są pozostawione odciski palców. Jest zima… palce mniej się pocą, strach pomyśleć, jak będzie wyglądała w lato. Pozostała część obudowy jest matowa, co dla mnie jest wielkim plusem – nie pozostawiamy odcisków palców, na takiej powierzchni mniej widoczne są zarysowania. Autorzy dobrze wkomponowali zawiasy obudowy, tworząc walec zakończony metalowymi kołami z zębatą krawędzią, co mnie się podoba. Denerwująca dla oka jest metalowa obudowa na touchpad, bowiem widoczne są podłużne pasy frezarki. Nie wiem, czy jest to zamierzony efekt – mnie nie przypadł do gustu. Na marginesie: Eee PC ma brzydkie logo :P

Kontrowersyjny touchpad…

… a raczej pushpad. Na początku miałem wrażenie, że trzeba go naciskać, nie dotykać, ale po 2 dniach używania już się przyzwyczaiłem. W moim poprzednim laptopie fizyka działania tego elementu była nieco inna. Często wymienianym minusem w recenzjach są przyciski w touchpadzie… mocno trzeba je wciskać. Nie, wciska się je łatwo i są bardzo wygodne, pod warunkiem, że przyciskamy je pod kątem 45 stopni w stosunku do klawiatury. Na początku wydawać się, że jest to nietypowe ułożenie ręki, musiałem się przyzwyczaić, ale teraz ciężko mi działać na jakimkolwiek innym touchpadzie – bardzo wygodna pozycja dłoni.

Klawiatura… bardzo mały odskok, nieznacznie mniejsze klawisze niż w standardowym notebooku, duży plus. Dodatkowo znalazło się miejsce na hotkeye (kombinacje w Fn) takie jak: sleep, włącz/wyłącz bluetooth oraz manager zadań. Standardowo brighnes, volume, mute i przełączenie monitora na zewnętrzne złącze karty graficznej (np rzutnik lub zewnętrzny monitor).  I minusy się znajdą, brak osobnych przycisków PgUp/Down oraz Home/End. Zamiast tego ulokowane są na strzałkach, używamy ich z wciśniętym Fn – niewygodne. Klawisz Fn ustawiony jest obok Ctrl po jego prawej stronie – plus. W Fujitsu-Siemens który miałem poprzednio było odwrotnie, często się myliłem.

Praca i entertejment.

Nie można wymagać wiele od procesora 1,6 GHz, 1GB RAM DDR2, ale daje radę. Produkt jest przedstawiony jako notatnik, ale świetnie radzi sobie z jednocześnie odpalonym softem takim jak Office 2007, Photoshop CS3, Google Chrome. Moje ulubione gry (NFS Underground, Diablo 2, GTA 2) działają bez zarzutów, więc pretensji nie mam. W tle działa Windows Blinds oraz Yomd3d.

10 cali, nie za mało?

Do programowania i photoshopa – tak, do przeglądania Internetu, pisania notatek etc. w zupełności wystarczy. Jednak nawet przy najprostszych czynnościach warto minimalistycznie podchodzić do zagospodarowania przestrzeni na ekranie. W tym celu właśnie zainstalowany jest Windows Blinds – skin imitujący Mac OS posiada bardzo niskie belki. Z pomocą przychodzi nam również Google Chrome, który minimalnie wykorzystuje ekran, w przeciwieństwie do FireFox’a. Zaletą Chroma jest to, że posiada ukryty pasek narzędzi oraz zakładki na pasku tytułu.

Bateria.

6600 mAh Li-ion. Przy włączonym trybie Asus Safe Energy i wyłączonym bluetooth bateria faktycznie trzyma 5 godzin. Przy odpaleniu ciężkiego softu, wifi oraz wyłączonym trybie oszczędzania energii bateria utrzymuje netbooka przy życiu przez 3h i 40 min. Bardzo dobry wynik, jeżeli chodzi w ogóle o netbooki. Standardowo na netbooku pracuję 4h i 20 min.

Ważnym jest to, aby dobrze używać baterii, tj. wyjąć ją, gdy netbook podłączony jest do prądu, a stan baterii jest równy 100%. Warto wcześniej  kilka razy (wolno) rozładować do zera i ponownie naładować na max. Obecnie wykonuje taki zabieg włączając stan czuwania na noc podładowując baterię już na następny wieczór. Cykl będę powtarzał tydzień.

Podsumowanie.

Moje zadowolenie to 95%, czyli netbook spełnił moje oczekiwania prawie celująco. Kupiłem go przez Allegro, miałem fart, niska cena, aukcja wystawiona przed diametralnym spadkiem PLN.

  • Wygląd: 4/5
  • Cena: 5/5
  • Wydajność: 4/5
Read More

Zintegrowane logowanie cms z forum

Feb 06

Zintegrowane logowanie cms z forum

Projektowałem wiele serwisów, które miały zintegrowane z forum komponenty takie jak:

  • rejestracja,
  • przypomnienie hasła,
  • zmiana hasła, nicku lub adresu email,
  • usunięcie konta.

Wówczas nie było żadnego problemu – wystarczyło wszystkie te akcje z forum przekierować na URL’e obsługiwane przez CMS, który zajmował się zmianami  tabelach forum. Dlaczego przekierować? Jeżeli ktoś rejestruje się w serwisie, jest zarejestrowany na forum, natomiast, gdy rejestruje się na forum, nie jest rejestrowany w serwisie. To CMS integrujemy z forum, a nie forum z CMS’em (chyba, że zamierzamy inaczej, wtedy na odwrót).

Ostatnio klient zażyczył sobie, żeby zintegrowane było również logowanie. Nie najlepiej widzi mi się implementacja systemu autoryzacji z forum w CMS’ie, więc poszedłem “na łatwiznę”, bowiem miałem do czynienia z phpBB. Do osiągnięcia celu postanowiłem wykonać dwa kroki:

  1. wysłać żądanie POST do forum na adres logowania z wypełnionymi polami POST z formularza logowania w CMS’ie,
  2. przechwycić wysłane przez forum ciasteczka i przekazać je użytkownikowi.

Do połączenia się z forum via http użyłem HttpRequest. Wyszło z tego parę linijek kodu.

Read More