niedziela, 26 sierpnia 2012

MATE dla stęsknionych za Gnome 2

W końcu zdecydowałem się na upgrade mojej starej (i porzuconej jeśli chodzi o wsparcie) Fedory 14. W wersji 15 twórcy tej zacnej dystrybucji po raz pierwszy wprowadzili środowisko Gnome 3 (Shell), które zastąpiło dobrze wszystkim znaną "dwójkę". Była to decyzja dość kontrowersyjna. Ja bym się może nawet przekonał do nowego wyglądu, gdyby nie problemy z wyświetlaniem niektórych elementów interfejsu na moim (też już starszym i wysłużonym) sprzęcie. Mam na myśli przede wszystkim znikające narożniki okien, problemy z wyświetlaniem i cieniowaniem tekstu. Generalnie praca z systemem stała się uciążliwa.

Niestety w wersji Gnome 3.4, która wchodzi w skład Fedory 17 nic się pod tym kątem nie zmieniło. Zacząłem więc szukać alternatywy. Sprawdziłem Cinammon, ale to tylko nakładka na Shella, więc niewiele pomógł. Problem musi leżeć w samym GTK3. Sprawdziłem LXDE i XFCE, które chyba najbardziej przypomina starego Gnome'a. Wtedy nieoczekiwanie natknąłem się środowisko MATE. Jak się okazało MATE jest forkiem Gnome 2.32 i został powołany do życia przez grupę developerów niezadowolonych z kierunku w jakim poszedł nowy Gnome. To było to.
Generalnie MATE dopiero raczkuje i jeszcze nie wszystkie pakiety z Gnome 2 zostały sforkowane, ale środowisko jak najbardziej nadaje się do codziennego użytku. MATE posiada własne odpowiedniki większości aplikacji znanych z Gnome 2, ale tak naprawdę różnią się one od siebie tylko nazwami. I tak Nautilus to tutaj Caja, Gedit to Pluma, Evince to Atril, File-roller to Engrampa, itd.

Dobrze jest przeprowadzić czystą instalację systemu, aby uniknąć naleciałości z Gnome 3. Niestety MATE jeszcze nie trafił do repozytoriów Fedory, więc trzeba zainstalować "goły" system bez środowiska graficznego i potem ręcznie dodać i skonfigurować MATE. Na szczęście nie jest to takie trudne jak mogłoby się wydawać.

W czasie instalacji systemu przechodzimy do ręcznego wyboru pakietów do zainstalowania i rezygnujemy z Gnome oraz charakterystycznych dla niego aplikacji. Kiedy instalacja dobiegnie końca system wystartuje i przywita nas czarnym ekranem konsoli. Logujemy się jako root i przystępujemy do instalacji MATE.

Najpierw musimy zainstalować repozytorium środkowiska:
$ yum install https://dl.dropbox.com/u/49862637/Mate-desktop/fedora_17/mate-desktop-fedora-updates/noarch/mate-desktop-release-17-2.fc17.noarch.rpm
$ yum groupinstall MATE-Desktop
Powyższe dotyczy Fedory 17. Zawsze aktualne informacje dotyczące instalacji można znaleźć na oficjalnej stronie MATE. Instalujemy też MATE'owy odpowiednik GDM'a - MDM.
$ yum install mdm
Trzeba jeszcze ustawić MATE jako domyślnie uruchamiane środowisko graficzne. Edytujemy plik /etc/sysconfig/desktop i dodajemy w nim linię:
DISPLAYMANAGER=MATE
Edytujemy plik /etc/X11/prefdm, odszukujemy linie
if [ "$DISPLAYMANAGER" = GNOME ]; then
preferred=/usr/sbin/gdm
i dopisujemy pod nimi fragment:
elif [ "$DISPLAYMANAGER" = MATE ]; then
preferred=/usr/sbin/mdm
splash_quit_command="plymouth quit"
Włączamy graficzny ekran logowania poleceniem:
$ systemctl enable graphical.target
Dodajemy nowego użytkownika i ustawiamy dla niego hasło:
$ useradd sdr -c "Dawid Pająk"
$ passwd sdr
Na koniec pozostaje tylko zrestartować system poleceniem reboot i naszym oczom powinien ukazać się dobrze znany ekran logowania do systemu. Wcześniej możemy być jeszcze zmuszeni do przejścia procedury pierwszego uruchomienia systemu, ale to już klasyka. W zasadzie tylko przeskakujemy kolejne ekrany.

Źródła: ZDNet, forum MATE.

piątek, 28 października 2011

ImageMagick vs WAMP vs LAMP vs me

Wczoraj i dziś miałem tę wątpliwą przyjemność walczyć z integracją PHP oraz ImageMagick zarówno na Linuksie jak i pod Windows. O ile pingwin nie stwarza większych problemów, o tyle na okienkach już tak łatwo nie jest. Wszystkiemu winne wydają się być kompilatory użyte do przygotowania binarek poszczególnych elementów całej tej układanki.

Jak wspomniałem, najprościej jest pod Linuksem, więc od niego zacznę. W moim przypadku pomogła sekwencja poleceń znaleziona na tym blogu.

$ yum install ImageMagick ImageMagick-devel
$ pecl install imagick
$ echo "extension=imagick.so" > /etc/php.d/imagick.ini
$ service httpd restart

Kolejno instalujemy ImageMagick z dodatkowymi narzędziami, następnie rozszerzenie z repozytorium PECL i włączamy je w pliku konfiguracyjnym PHP. Ostatnia komenda restartuje oczywiście Apache'a. Potem zostaje już tylko sprawdzić np. w phpinfo(); czy Imagick faktycznie działa. To tyle.

Jeśli chodzi o Windowsa to naszukałem się trochę więcej. A nawet jak już coś się znajdzie to szanse, że i u nas zadziała wynoszą 50%. Loteria. Dlatego też podaję od razu komplet linków do elementów układanki, które ze sobą współgrają:


ImageMagick instalujemy najlepiej do C:\ImageMagick. Podczas instalacji trzeba się upewnić, że zaznaczona jest opcja "Add to system path" - bez tego nie da rady. Oczywiście do ścieżki systemowej można IM dodać również po instalacji, ale to wykracza już poza temat posta.

WampServer instaluje się bez jakiejś specjalnej filozofii. Kiedy instalator zakończy pracę, kopiujemy bibliotekę php_imagick_ts.dll do folderu C:\wamp\bin\php\php5.3.8\ext i zmieniamy jej nazwę na php_imagick.dll. Teraz trzeba dopisać jeszcze rozszerzenie do php.ini. WampServer ma dwa pliki konfiguracyjne dla PHP (nie wiem który ważniejszy, więc dopisałem do obu).

  • C:\wamp\bin\php\php5.3.8\php.ini
  • C:\wamp\bin\apache\Apache2.2.21\bin\php.ini

W obu odszukujemy dość długą listę rozszerzeń kończącą się mniej więcej tak:

;extension=php_xmlrpc.dll
;extension=php_xsl.dll
;extension=php_zip.dll

i dopisujemy do niej extension=php_imagick.dll (bez średnika na początku linii). Zapisujemy pliki.

Na koniec pozostaje uruchomić ponownie system. Tak, system. Nie tylko serwer :)

Wszystko to instalowałem pod Windows XP.

sobota, 3 września 2011

Wprowadzony kod nie został zweryfikowany - problemy z weryfikacją dwuetapową Google

Czas na kolejnego posta wyjaśniającego zawiłości technologii, która zaskakuje nas każdego dnia prostymi rzeczami. Od jakiegoś czasu korzystam z weryfikacji dwuetapowej dla swojego konta Google. Prosta rzecz, a daje pewność, że nawet jeśli ktoś pozna moje hasło to i tak nie będzie mógł się zalogować. Fajnie? Fajnie było, ale tylko do czasu.

Cała patent opiera się na tym, że podczas logowania do swojego konta z nowej maszyny lub przeglądarki jesteśmy proszeni już nie tylko o swoje standardowe hasło, ale również o dodatkowy 6-cyfrowy kod. Kod ten może być generowany np. przez specjalną aplikację zainstalowaną w telefonie. Wpisujemy więc szybko kod, który ważny jest tylko jakieś 30 sekund i po pomyślnej weryfikacji wreszcie otrzymujemy dostęp do konta. Super. Tylko co, gdy kod wygenerowany przez aplikację nagle okazuje się nieprawidłowy?

No dobra, zdarza się. Próbujemy jeszcze raz. Hmm, znowu? To już chyba coś nie tak. I jeszcze ten komunikat:

Wprowadzony kod nie został zweryfikowany
(The code you entered didn't verify)

To jak? Nie mogli go zweryfikować (np. awaria systemu), czy po prostu jest nieprawidłowy?! Mniejsza z tym. Oczywiście chodzi o to, że kod jest nieprawidłowy. Ale dlaczego? Przecież taki mi się wyświetla. Postanowiłem skorzystać z kodów zapasowych trzymanych w bezpiecznym miejscu. Zalogowałem się, wyłączyłem kłopotliwy mechanizm i postanowiłem skonfigurować od nowa aplikację na telefonie. A nuż pomoże. Czytam znowu te wszystkie informacje o tym jak działa weryfikacja dwuetapowa, czytam sobie i... nagle mnie oświeca.

Kody generowane przez aplikację są zależne od czasu. Są więc generowane w jakiś sposób na podstawie zegara, bieżącej godziny. Rzut okiem na czas systemowy - 21:03, rzut okiem na czas w telefonie - 21:08. WTF? Albo coś się zrąbało w komputerze albo w telefonie. Aaaa... przecież już nie raz łapałem się na tym, że zegar mi na Androidzie śpieszy. Nie pomagała synchronizacja z operatorem, nie pomagały ręczne poprawki. I tak po jakimś czasie znowu szedł te kilka minut do przodu.

Ok. W takim razie kończę ponowną konfigurację mechanizmu weryfikacji na swoim koncie, cofam zegar w telefonie, odpalam aplikację, wpisuję kod na stronie... Voila! Jestem.

PS. Ostatecznie nie wiem z jakim zegarem powinienem mieć zsynchronizowany czas w telefonie żeby kody były generowane poprawnie, ale przypuszczam, że można się sugerować godziną podawaną przez serwery typu time.nist.gov, time.windows.com, etc. Póki co tak jest dobrze.