Blog (107)
Komentarze (2.3k)
Recenzje (0)
@webnullcz.1 | Programowanie w Linuksie

cz.1 | Programowanie w Linuksie

Witam was wszystkich. Ostatnio przez dłuższy czas nie miałem ani minyty czasu aby cokolwiek napisać na blogu ale jako, że coś się zmieniło i mam teraz troszkę więcej czasu to zacznę znowu pisać. W tej serii opiszę swoje doświadczenia w programowaniu pod Linuksem.

jakiś tam wstęp

Wciąż pracuję nad swoim Subgetem i szczerze mówiąc sporo się uczę przy jego tworzeniu. Dalej i dalej siedzę w Pythonie bo jest przewygodny - to prawda.

Ostatnio pomyślałem aby zamiast wadliwej obsługi COM'u zaimplementować w Subgecie obsługę socketów pod Windowsem ponieważ COM i Python się zwyczajnie nie lubią. API COM'u w Pythonie jest felerne, to znaczy nie wiem czy tylko w Pythonie ale w samym Pythonie jest do bani, to jest pewne. Chyba nie będę tego opisywać bo to długa historia. No chyba, że będziecie chcieli to w następnej części albo w osobnym wpisie opiszę moją przygodę z COM'em i Pythonem.

Python zapewnia interfejs socketów kompatybilny zarówno z WinSocks oraz z Unix Sockets dlatego kod programu dla obu platform byłby mniej więcej taki sam. Dobra, koniec tego gadania takiego tam... : )

Do rzeczy, teraz trochę o środowisku Uniksowym...

Ostatnio stworzyłem małą aplikację w shellu "subget-translator " ma ona za zadanie monitorować zmiany w pliku z źródłowym tłumaczeniem językowym programu i w razie jakiejkolwiek zmiany (jak zapiszemy plik w edytorze tekstowym) to aplikacja sama skompiluje tłumaczenie do postaci binarnej GNU Gettext oraz uruchomi program do testów.

Fajną sprawą w Linuksie jest środowisko ze zmiennymi łatwo dostępne z poziomu aplikacji i shella, możemy w nim ustawić praktycznie wszystko do testowania aplikacji. W translatorze Subgeta użyłem właśnie zmiennych środowiskowych do ustawienia języka aplikacji na chwilę jednego uruchomienia.

env jest dostępnym narzędziem w każdym systemie, pokazuje ono listę zmiennych środowiskowych którymi kierują się aplikacje w integracji z systemem operacyjnym. Aby ustawić inny język w dowolnej aplikacji w uniwersalny sposób po prostu ustawiamy zmienną LANG w shellu, dla Basha to będzie:

export LANG="pl_PL.UTF-8" # dla języka Polskiego
export LANG="en_US.UTF-8" # dla języka Angielskiego (stany zjednoczone)
export LANG="da_DK.ISO-8859-1" # dla języka Duńskiego

W /etc/locale.gen możecie znaleźć więcej języków do sprawdzenia.

428833

W ten magiczny sposób DOWOLNA aplikacja uruchomiona w tej samej konsoli po wpisaniu tego polecenia stosuje się do nowych zasad, czyli ustawionego języka, motywu oraz przeróżnych ustawień programów. W Pythonie aby ustawić ustawić zmienną środowiskową należy zaimportować bibliotkę os oraz wykonać:

os.putenv("LANG", "en_US.UTF-8")

A następnie można uruchomić dowolną aplikację poprzez os.system():

os.system("/usr/bin/subget")

Aplikacja będzie się stosować do nowo ustalonych zmiennych środowiskowych i powinna uruchomić się w języku angielskim. Przy pomocy env i grep możemy odnaleźć interesujące nas zmienne.

env|grep GTK
GTK2_RC_FILES=/etc/gtk-2.0/gtkrc:/home/webnull/.gtkrc-2.0:/home/webnull/.kde4/share/config/gtkrc-2.0
GTK_RC_FILES=/etc/gtk/gtkrc:/home/webnull/.gtkrc:/home/webnull/.kde4/share/config/gtkrc
428840

Wystarczy właściwie stworzyć własny plik z motywem gtkrc oraz wstawić jego adres do GTK2_RC_FILES a następnie uruchomić aplikację - pozostałe programy będą wyglądać normalnie a nasza aplikacja będzie z całkowicie innym motywem systemu. W katalogu find /usr/share/themes -name '*gtkrc*' znajdziecie więcej motywów do testowania : )

No to nowi programiści Linuksowi, wiecie już jak testować Waszą aplikację w różnych konfiguracjach systemowych, proste, prawda? Systemy Uniksowe to prostota.

Wybrane dla Ciebie
Komentarze (25)