Author Archives: cyryl

Uruchamianie czujki na płytach głównych MSI

Jeśli używasz płyty głównej MSI może się zdziwić dość uboga liczba czujników – w porywach aż jeden. Jeśli dodatkowo w logach widzisz komunikaty

Jan 28 17:11:52 localhost klogd: ACPI: resource f71882fg [io  0x0600-0x0607] conflicts with ACPI region HMOR [??? 0x00000605-0x00000606 flags 0x52]
Jan 28 17:11:52 localhost klogd: ACPI: This conflict may cause random problems and system instability
Jan 28 17:11:52 localhost klogd: ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver

to właśnie poczułeś na własnej dupie jak MSI olewa użytkowników Linuksa.

Na szczęście jednak ten problem da się łatwo rozwiązać. Do linii startowych gruba (lub lilo) wystarczy dopisać acpi_enforce_resources=lax, tak, aby cały wpis wyglądał mniej więcej tak:

title linux
kernel (hd0,0)/boot/vmlinuz BOOT_IMAGE=linux root=UUID=147570a8-f671-4592-8f2c-98808b8dfd14 resume=UUID=b0b40a29-4265-4f7c-bcf9-08dc58490923 splash=silent vga=788 acpi_enforce_resources=lax
initrd (hd0,0)/boot/initrd.img

Po restarcie systemu czujnik zostanie od razu wykryty, jednak nie zaszkodzi uruchomić jeszcze raz sensors-detect.

Firefox Qt

Można powiedzieć, iż jestem zdecydowanie większym fanem Qt aniżeli GTK. Dlatego aplikacje napisane w GTK staram się stopniowo eliminować z życia. Jedną z ostatnich, które zostały na moim dysku jest Firefox. Było już kiedyś parę prób przepisania go na Qt, jednak wszystkie projekty upadały.

Dlatego tym chętniej przetestowałem kolejny port Firefoksa pod Qt, gdy dowiedziałem się, że jest rozwijany przez samą Mozillę. Szybko ściągnąłem najnowszy nightbuild z serwerów mozilli.

I strasznie się zawiodłem. Łatwiej jest wymienić co działa, niż co nie działa. A działa: renderowanie stron. Cała reszta, czyli: okna dialogowe, menu, paski przewijania, instalacja dodatków – nie. Cóż, autorów tego projektu czeka jeszcze sporo pracy nim ten projekt będzie użyteczny. Ale mimo wszystko, będę miał go na oku 😉

Dynamiczne wstawianie formuł matematycznych na stronę

Czasami może najść nas potrzeba wstawienia formuły matematycznej na stronie. Proste przypadki można załatwić bezproblemowo z klawiatury, jak na przykład y = 3x^2 + 3/4. Jednak co zrobić, jak najdzie nas ochota zaprezentowania podwójnej całki z pierwiastkiem?

Z pomocą przychodzi nam prosta biblioteka MathTex napisana w C. Jej kompilacja jest bardzo prosta i sprowadza się do uruchomienia (uwaga na \” – to jest prawidłowy zapis!)

cc mathtex.c -DLATEX="\"`which latex`\"" -DDVIPNG="\"`which dvipng`\"" -o mathtex.cgi

Wynikowy plik mathtex.cgi wystarczy wrzucić na serwer i jeśli trzeba – ustawić uprawnienia.
Całość można odpalić z przeglądarki podając w GET formułę: http://blog.cyryl.net/cgi/mathtex/mathtex.cgi?x^2
lub umieścić na stronie jako obrazek:

<img src="/cgi/mathtex/mathtex.cgi?f(x)=\int_{-\infty}^xe^{-t^2}dt" alt="" border=0 align="middle"/>

W rezultacie otrzymamy naszą formułę prawidłowo opływającą tekst.

Sama istota jest prosta w działaniu – tworzony jest plik źródłowy z formula, a następnie jest uruchamiany latex do jej skompilowania. Po czym wynikowy plik gif jest zapisywany w cache i przy kolejnym wywołaniu jest już bezpośrednio zwracany.

Święta w kalendarzu KDE

Zawsze myślałem, iż domyślny wygląd kalendarza w KDE jest jakiś taki mało informacyjny. Wszystko szare, jednokolorowe, nawet weekendy wyglądające, tak jak dni robocze.

Dziś całkowicie przypadkiem znalazłem opcję do zaznaczenia w nim wszystkich świąt. I to po tylu latach użytkowania. Dzięki temu w jedną chwilę można otrzymać taki wynik i wiedzieć kiedy jest wolne 🙂

Aby to zmienić wystarczy kliknąć prawym przyciskiem myszy na dacie, wybrać “Ustawienia: Zegar cyfrowy” i na zakładce “Kalendarz” wybrać Polskę. I gotowe – mamy święta.

Mała rzecz, a cieszy 🙂

Porównanie wydajności systemów tłumaczeń w PHP

Na blogu Zyxa natrafiłem na post o nowym systemie do tłumaczeń w PHP, klasie MessageFormatter. I przyznaję, że nie zrobiło to na mnie wrażenia. Format zapisu tekstu jest tak skomplikowany, że w ostatnim przykładzie do teraz nie mogę się doliczyć nawiasów 😉 A wygląda on tak niewinnie:

$msg = new MessageFormatter('pl_PL', '{0,plural,one{Masz jedną nową wiadomość}few{Masz {0,number} nowe wiadomości}other{Masz {0,number} nowych wiadomości}}.');
echo $msg->format(array(0 => 103));

I tak zacząłem myśleć co takiego ma MessageFormatter, czego nie ma GetText.
To mnie nakłoniło do przeprowadzenia szybkiego testu wydajności. Do zawodów stanęły:

  • MessageFormatter
  • GetText
  • prosty system napisany w PHP mojego autorstwa

Continue reading

Jak łatwo wyczyścić dysk twardy

Jest sobie legendarne wręcz polecenie rm -rf /. Mnie się udało uruchomić jego młodszego brata rm -rf *. W katalogu domowym.

Oczywiście nie zrobiłem przez zwykłe wpisanie komendy. Byłem znacznie bardziej wyrafinowany. Chciałem wykasować konfigurację KDevelopa. W tym celu wpisałem:

find . -name '.kdev*' | xargs rm -rf *

Taka tyci literówka.

A z tej lekcji nauczyłem się:

  • pliki są kasowane nieodwracalnie, zgodnie z założeniami systemu plików ext3/4
  • pliki, które uda się przywrócić, to zawsze będą te mało ważne, jak na przykład cache przeglądarki
  • backup
  • backup
  • backup.

Twoja stara czyta pocztę przez FTP

I nie tylko ona. Scenarzyści NCIS również :). Do listy informatycznych wpadek, takich jak obowiązkowy na każdym biurku przynajmniej jeden monitor CRT oraz irytujących “komputerowych” dźwięków przy każdym kliknięciu doszła nowa pozycja. Czytanie poczty przez FTP.

Piwo dla tego, który zgadnie co to za program FTP 😉

Sklepy Internetowe część 1: Magento

Zostałem poproszony o zrobienie sklepu Internetowego. Pomyślałem, że może być to dobry pretekst do przyjrzenia się, co aktualnie oferuje open source w tej kategorii. Krótki research i na pierwszy ogień poszedł Magento najczęściej polecany. Najnowsza wersja podczas pisania recenzji to 1.4.1.0, jednak testy były wykonywane na starszej wersji 1.4.0.1. Lista zmian nie jest jakaś imponująca, więc nie powinna mieć znaczenia na ocenę końcową.

Strona Internetowa sklepu wygląda profesjonalnie, a sam projekt jest dynamicznie rozwijany. Statystyki jak 1,5 miliona pobrań oraz ponad 2000 dodatków robią wrażenie.

Instalacja

Skopiowałem pliki na serwer i bez zbędnych ceregieli wpisałem adres domenę sklepu. Zgodnie z przewidywaniami uruchomił się instalator.

Szybko zaakceptowałem licencję i przeszedłem dalej, do okna wyboru opcji lokalizacyjnych.

I tu się pojawił pierwszy problem. Zmiana języka lokalizacji na polski powoduje automatyczne przeładowanie strony i powrót do języka angielskiego. Trudno, angielski znam, jakoś przeżyję. Wybieram strefę czasową “Europe/Warsaw”, walutę “Polish Zloty” i przechodzę dalej.

W końcu coś ciekawego. Uzupełniam dane do połączenia z bazą klikam dalej. Instalator tworzy teraz zapewne wszystkie tabelki w bazie wymagane, jednak brak o tym żadnej informacji. Przez około 7 minut nic się nie dzieje. Jest to zdecydowanie za długo, aby pozostawić zwykłemu użytkownikowi wczytującą się stronę z ciągle dostępnym przyciskiem “Continue”. Bardzo prawdopodobne, iż nieniecierpliwiony kliknąłby go ponownie, wysyłając kolejne żądanie do serwera, z niewiadomo jakim rezultatem.

W końcu pojawił mi się kolejny krok, ze zdefiniowaniem domyślnego użytkownika i podobnych opcji.

Szybkie uzupełnienie informacji i już można cieszyć oko informacją o pomyślnej instalacji.

Niestety, ale tak gładko instalacja przeszła dopiero za drugim razem, po przeczytaniu instrukcji instalacji. Przy pierwszej próbie instalator na jednym z kroków nie chciał przejść dalej, jednak nie informując czemu. Dopiero po spojrzeniu w instrukcję doczytałem, iż chodzi o uprawnienia do katalogów. Dlatego, za brak informacji o błędach – duży minus.

Continue reading

Facebook? Nie dziękuję.

Ostatnio Facebook robi istny nalot na Polskę. Każda strona internetowa musi mieć własną grupę na Facebooku, i oczywiście musi się tych chwalić. A chwalić się można poprzez widgety. Im większy widget tym lepiej.

Mówiąc szczerze, jakoś niespecjalnie mnie interesuje, że strona X ma 639 fanów, a Rysiek z Warszawy lubi Y.

Ostatecznie postawiłem wywalić te ramki. Idealnie się do tego nadał AdBlock. Wystarczy dodać do filtra dwa adresy:

|http://static.ak.connect.facebook.com/*

|http://www.facebook.com/extern/login_status.php?*

i życie staje się piękniejsze.

Dodatkowym bonusem jest znaczny wzrost prędkości ładowania stron. Przykładowo, pda.pl z Facebookiem wczytywał się 7-11 sekund. Po zastosowaniu filtru czas zmalał do stabilnych 5-5,5 sekundy.