Monthly Archives: January 2011

Kolorowa linia poleceń w Bashu

Po tym jak ostatnio musiałem naprawiać linię poleceń pewnej wielce poważanej serwerowej dystrybucji postawiłem opisać, jak się to robi prawidłowo. Bo z przerażeniem odkryłem, że większość dostępnych opisów zawiera błędy.

Ale zacznijmy od początku. Linia poleceń o której mówię, zwykle wygląda tak:

Wiele osób mówi, jak można zdefiniować kolory. Jednak w większości przypadków taka zabawa kończy się mniej więcej tak:

Jak więc prawidłowo zdefiniować linię poleceń?

W pliku ~/.bashrc definiujemy zmienną

export PS1='tutaj nasza definicja'

Styl definiujemy pomiędzy \[\033[ a m\].

Kody kolorów czcionki (dla koloru tła dodaj 10 do tej liczby):

  • 30 – czarny
  • 31 – czerwony
  • 32 – zielony
  • 33 – brązowy
  • 34 – niebieski
  • 35 – fioletowy
  • 36 – jasnoniebieski
  • 37 – biały
  • 0 – usuń wszelkie formatowanie

Efekty czcionki:

  • 0 – czcionka normalna
  • 1 – pogrubienie
  • 4 – podkreślenie
  • 5 – mruganie
  • 7 – zamień kolory czcionki i tła

Jeśli chcemy połączyć razem kilka efektów, to rozdzielamy poszczególne kody średnikami. Na przykład pogrubiona fioletowa czcionka na białym tle to 1;35;47. Jeśli chcemy wyczyścić całe formatowanie, to wystarczy wpisać 0 (czyli zero).

Większość opisów w sieci zawiera zwykle takie błędy:

  • brak domknięcia definicji \]
  • \e to nie jest idealnie to samo co \[\033

W praktyce ja stosuję takie definicje:

# user
export PS1='\[\033[32m\]\u\[\033[33m\]@\[\033[1;36m\]\h\[\033[0;33m\]:\[\033[31m\]\w \[\033[1;32m\]\$\[\033[0m\] '

# root
export PS1='\[\033[41;1;32m\]\u\[\033[0;33m\]@\[\033[1;36m\]\h\[\033[0;33m\]:\[\033[31m\]\w \[\033[1;31m\]\$\[\033[0m\] '

Pogrubiony host przydaje się zwłaszcza gdy loguję się na wiele serwerów. Łatwo wtedy napsuć wpisując komendę nie w tym oknie, w którym się chce. A gdy jestem rootem dodatkowo podkreślam kolorem, by było to widać z daleka.

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 🙂