September 26, 2007

4 Comments

eJabberd: migrating from Mnesia to MySQL native driver

Zabrałem się wczoraj za migrację mojego ejabberda do bazy mysql bo to takie na czasie teraz nie trzymać niczego w plikach tylko w bazie. Poza tym stwarza to nowe możliwości typu: zarządzanie swoim kontem jabberowym via wuwuwu, rejestracje publiczne itp. itd. Ojj, ile się naużerałem z tym to wiem tylko ja i mój biedny ejabberd, który przeszedł najróżniejsze gwałty na jego konfiguracji, przekleństwa, debugowania, tracowania i inne mało przyjemne czynności, które robimy by dowiedzieć się “dlaczego to pieruństwo nie działa, skoro przecież wszystko jest dobrze skonfigurowane?”.

W mojej bezgranicznej dobroci podzielę się swoją wiedzą oraz doświadczeniem z Tobą – drogi czytelniku – byś nie musiał przechodzić przez piekło, które ja znam już na pamięć. Gotowi do startu? Browar do łapki! Start.

Instalacja odpowiednich komponentów:

W PLD obsługę ODBC w ejabberdzie mamy standardowo wkompilowaną, więc nie musimy się babrać w rekompilację servera. Jeśli mamy skonfigurowany ejabberd wg mojego poprzedniego opisu to przejście na bazę będzie bułeczką z masłem.

# poldek -i ejabberd-mysql

Jeśli czytasz to od razu po publikacji artykułu paczka ejabberd-mysql prawdopodobnie jeszcze nie wylądowała na FTP. Jesteś zmuszony zbudować ją samemu (hint: ejabberd-mysql.spec). Oczywiście potrzebny jest również server MySQL ale to nie jest tematem mojego arta, stąd nic więcej poza tym, że musi obsługiwać InnoDB (w PLD jest to standardowo wkompilowane) nie powiem.

Tworzenie bazy:

Łączymy się z naszym serverem MySQL:

# mysql -u mysql -p

i tworzymy odpowiednią bazę:

mysql>create database ejabberd;
mysql>grant all on ejabberd.* to 'ejabberd'@'localhost' identified by 'hasło';

Stworzyliśmy pustą bazę, do której teraz trzeba utworzyć odpowiednią strukturę tabel:

# cp /usr/share/doc/ejabberd-1.1.4/mysql.sql.gz .
# gunzip mysql.sql.gz
# mysql -u mysql -D ejabberd -p < mysql.sql

Baza i cała jej struktura jest zatem gotowa. Teraz jedna z najważniejszych rzeczy.

Migracja użytkowników, ich rosterów itd.:

Do migracji wykorzystamy wbudowany moduł ejd2odbc który cała brudną robotę zrobi za nas. Do tego musimy wyłączyć ejabberda, zmusić do pracy w foregroundzie i wyeksportować wszystkie dane do plików:

# service ejabberd stop
# vim /usr/sbin/ejabberd

i hashujemy opcję -detach. Następnie uruchamiamy ejabberda ręcznie i dokonujemy eksportacji:

# ejabberd
(ejabberd@localhost)2> ejd2odbc:export_roster(jabber.domena, "/tmp/roster.txt").
{atomic,ok}
(ejabberd@localhost)3> ejd2odbc:export_roster("jabber.domena", "/tmp/roster.txt").
{atomic,ok}
(ejabberd@localhost)4> ejd2odbc:export_last("jabber.domena", "/tmp/last.txt").
{atomic,ok}
(ejabberd@localhost)5> ejd2odbc:export_offline("jabber.domena", "/tmp/offline.txt").
{atomic,ok}
(ejabberd@localhost)6> ejd2odbc:export_passwd("jabber.domena", "/tmp/passwd.txt").  
{atomic,ok}
(ejabberd@localhost)7> ejd2odbc:export_private_storage("jabber.domena", "/tmp/private_storage.txt").
{atomic,ok}
(ejabberd@localhost)8> ejd2odbc:export_vcard("jabber.domena", "/tmp/vcard.txt").
{atomic,ok}
(ejabberd@localhost)9> ejd2odbc:export_vcard_search("jabber.domena", "/tmp/vcard_search.txt").
{atomic,ok}
(ejabberd@localhost)10> q().
ok
(ejabberd@localhost)11>
#

Cofamy dokonane zmiany w /usr/sbin/ejabberd i przenosimy nasze dane do bazy:

# for i in `ls -1 /tmp/*.txt`; do mysql -u mysql -D ejabberd -p < $i; done

(Re)Konfiguracja:

Ulubionym edytorem edytujemy /etc/jabber/ejabberd.cfg i zamieniamy:

{auth_method, internal}.

na

{auth_method, odbc}.
{odbc_server, {mysql, "localhost", "ejabberd", "ejabberd", "hasło"}}.

oraz moduły:

{mod_roster,     []},
{mod_vcard,      []},
{mod_offline,    []},
{mod_last,       []},

na

{mod_roster_odbc,     []},
{mod_vcard_odbc,      []},
{mod_offline_odbc,    []},
{mod_last_odbc,       []},

Szybki start ejabberda
# service ejabberd start
i wszystko działa aż miło. W razie pytań jak zwykle jestem do dyspozycji.
Bijcie!

August 9, 2007

3 Comments

Nałogowy vimowiec

Właśnie przeczytałem króciutki wpis Patryka Zawadzkiego (patrys) na planecie i postanowiłem, że też sobie zbadam jakie to ja najczęściej komendy do konsoli wpisuje. Oto rezultat tego krótkiego scryptu:

$ history | awk '{print $2}' | awk 'BEGIN {FS="|"} {print $1}' | sort | uniq -c | sort -rn | head -10
    293 vim
    103 cd
     98 cvs
     96 ls
     77 rpmbuild
     72 ./builder
     37 libtool
     35 make
     25 logout
     20 sudo

Tia, czego to się człowiek o sobie nie dowie ;-).

August 9, 2007

No Comments

[HowTo] eJabberd on PLD + MSN + IRC + GG Transports

Własny serwer jabbera – jak to poważnie brzmi. Postaram się w maksymalnym skrócie opisać (krok po kroku) jak zainstalować i skonfigurować eJabberda na PLD i dodać do niego parę transportów. Zaczynamy.

1. Najważniejsza rzecz to oczywiście zainstalować serwer jabbera.


# poldek -ivh ejabberd

2. Konfiguracja (od razu weźmiemy pod uwagę, że chcemy mieć trzy transporty GG, IRC i MSN).

Edytujemy naszym ulubionym edytorem plik /etc/jabber/ejabberd.cfg

{acl, admin, {user, "admin"}}.
% user z prawami administratora, dowolny login
{acl, local, {user_regexp, ""}}.
{access, pubsub_createnode, [{allow, all}]}.
{access, configure, [{allow, admin}]}.
{access, register, [{deny, all}]}.
{welcome_message,
 {"Welcome!",
  "Welcome to Jabber.",
  "For information about Jabber visit http://jabber.org"}}.
{registration_watchers, ["user@localhost"]}.
% user, który będzie powiadamiany o rejestracjach do serwera jabbera
{access, announce, [{allow, admin}]}.
{access, c2s, [{deny, blocked},
               {allow, all}]}.
{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.
{access, c2s_shaper, [{none, admin},
                      {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, local, [{allow, local}]}.
{auth_method, internal}.
{hosts, ["localhost", "jabber.nasza_domena.pl"]}.
% nasze hosty, które będziemy używać (zewnętrzne domeny muszą istnieć)
{max_user_sessions, 10}.
{language, "en"}.
{listen,
[{5222, ejabberd_c2s, [{access, c2s}, {shaper, c2s_shaper}, {max_stanza_size, 65536}, starttls, {certfile, "/etc/jabber/jabber.pem"} ]}, {5223, ejabberd_c2s, [{access, c2s}, {max_stanza_size, 65536}, tls, {certfile, "/etc/jabber/jabber.pem"}]}, {5269, ejabberd_s2s_in, [{shaper, s2s_shaper}, {max_stanza_size, 131072} ]}, {5348, ejabberd_service, [{access, all}, {host, "msn.jabber.nasza_domena.pl", [{password, "hasło z /etc/jabber/secret"}]}]}, {5349, ejabberd_service, [{access, all}, {host, "gg.jabber.nasza_domena.pl", [{password, "hasło z /etc/jabber/secret"}]}]}, {5347, ejabberd_service, [{access, all}, {hosts, ["ircnet.jabber.nasza_domena.pl", "freenode.jabber.nasza_domena.pl"], [{password, "hasło z /etc/jabber/secret"}]}]}, {5280, ejabberd_http, [http_poll, web_admin]} ]}. {s2s_use_starttls, true}. {s2s_certfile, "/etc/jabber/jabber.pem"}. {domain_certfile, "jabber.nasza_domena.pl", "/etc/jabber/jabber.pem"}. {outgoing_s2s_port, 5269}. {modules, [ {mod_register, [{access, register}]}, {mod_roster, []}, {mod_privacy, []}, {mod_adhoc, []}, {mod_configure2, []}, {mod_disco, []}, {mod_stats, []}, {mod_vcard, []}, {mod_offline, []}, {mod_echo, [{host, "echo.nasza_domena.pl"}]}, {mod_private, []}, {mod_irc, []}, {mod_muc, [{access, muc}, {access_create, muc}, {access_admin, muc_admin}]}, {mod_pubsub, [{access_createnode, pubsub_createnode}]}, {mod_time, []}, {mod_last, []}, {mod_version, []} ]}.

3. Wygenerowanie certyfikatów dla połączeń SSL/TLS

# openssl genrsa -out /etc/jabber/jabber.key 1024
# openssl req -new -x509 -days 365 -key /etc/jabber/jabber.key -out /etc/jabber/jabber.crt
# cat /etc/jabber/jabber.crt >> /etc/jabber/jabber.key
# mv /etc/jabber/jabber.key /etc/jabber/jabber.pem
# rm -f /etc/jabber/jabber.crt

4. Transport Gadu-Gadu


# poldek -ivh jggtrans

Ustawiamy najważniejsze opcje w /etc/jabber/jggtrans.xml

<service jid="gg.jabber.nasza_domena.pl"/>
<connect id="gglinker">
    <ip>127.0.0.1</ip>
    <port>5349</port>
    <secret>hasło z /etc/jabber/secret</secret>
</connect>
<spool>/var/spool/jabber/gg.jabber.atwa.us/</spool>
<admin>admin@jabber.nasz_domena.pl</admin>
<acl>
        <allow who="admin@jabber.nasza_domena.pl" what="iq/query?xmlns=http://jabber.org/protocol/stats"/>
        <deny who="*" what="iq/query?xmlns=http://jabber.org/protocol/stats"/>
        <allow who="*"/>
        <deny what="iq/query?xmlns=jabber:x:register"/>
        <allow what="presence"/>
        <deny/>
 </acl>

Następnie tworzymy katalog, w którym będą trzymane dane userów używających transportu

# mkdir -p /var/spool/jabber/gg.jabber.nasza_domena.pl
# chown -R root:jabber /var/spool/jabber/
# chmod -R g+w /var/spool/jabber/

5. Transport MSN

Instalujemy najważniejsze rzeczy:


# poldek -ivh python-Twisted python-Twisted-ssl python-TwistedWords python-TwistedWeb python-TwistedXish python-Imaging python-pyOpenSSL

Teraz trzeba już ręcznie ściągnąć transport stąd. Wypakowujemy go i ustawiamy config.
W src/config.py:

jid = "msn.jabber.nasza_domena.pl"
host = "127.0.0.1"
compjid = ""
spooldir = "/var/lib/ejabberd/"
discoName = "MSN Transport"

mainServer = "127.0.0.1"
website = ""
port = "5348"
secret = "hasło z /etc/jabber/secret"

Natomiast w config.xml (jeśli nie ma to tworzymy z templatu) ustawiamy te same opcje tylko w formacie XMLowym.
Musimy niestety utworzyć jeszcze 2 symlinki bo PyMSNt źle szuka naszych zainstalowanych rozszerzeń pythona:

# ln -s /usr/share/python2.4/site-packages/twisted/words /usr/lib[64]/python2.4/site-packages/twisted/words
#  ln -s /usr/share/python2.4/site-packages/twisted/xish /usr/lib[64]/python2.4/site-packages/twisted/xish

Odpalamy PyMSNt:


# ./PyMSNt &

6. Uruchamiamy eJabberda i tworzymy konto administratora

# service ejabberd start
# ejabberdctl ejabberd@localhost register admin jabber.nasza_domena.pl hasło_do_konta_admina
# service jggtrans start

I to praktycznie cała filozofia. Pod adresem http://server:5280/admin/ zastaniemy ładnego web admina dzięki któremu możemy trochę monitorować nasz serwer, dodawać i usuwać userów, zmieniać im hasła itd. Sam user ma oczywiście możliwość zmiany hasła przez swojego klienta jabbera. Czy ja czasem nie zapomniałem o transporcie ircowym? Nie, eJabberd ma wbudowany transport IRCa i stąd wystarczyło tylko odblokować odpowiedni port i usługę w ejabberd.cfg i transport od razu działa.
Jakbym o czymś zapomniał albo coś jednak nie działało to “bijcie!” i piszcie do mnie albo tutaj w komentarzach. Bijcie!

May 13, 2007

No Comments

STBR scripts published

Opublikowałem skrypty odpowiedzialne za komendę !stbr na IRC. Dostępne są na http://svn.pld-linux.org/cgi-bin/viewsvn/toys/stbr/. Dodatkowo bot ircowy obsługujący te skrypty połączył się również z siecią freenode – także teraz można korzystać z tego zarówno na IRCNecie jak i Freenodzie.

February 13, 2007

2 Comments

Taką już mam

February 6, 2007

11 Comments

PLD – pomysł na meta-paczki

Pomysł ten na pewno nie jest świeży i innowacyjny. Ba, z pewnością nie jest to nawet mój pomysł, ale jako że ostatnio nie czytuję czyichś wypocin i nie śledzę trendu w PLD, postanowiłem przyjrzeć się bliżej takiemu rozwiązaniu, szczególnie że jest wg mnie bardzo ciekawe.

Czym są meta-packages (meta-paczki) ?
Wyobraźmy sobie, że wyjechaliśmy do innego kraju, nie znamy języka, jesteśmy w bardzo dużym mieście, nie mamy pojęcia o gotowaniu i jakie składniki są nam do tego potrzebne, a chcielibyśmy pójść na zakupy. Przydałby się nam asystent, który znałby język i przynajmniej wiedział co kupić by zrobić np. schabowego z ziemniaczkami i surówką z kapusty pekińskiej i majonezem.
Takim jakby asystentem są meta-paczki. A może lepiej asystentem nazwać ‘poldka’ a meta-paczka to taki spis pakietów potrzebnych by otrzymać smacznego schabowego.
Innymi słowy, są to pakiety, które same w sobie nie zawierają nic innego jak suche informacje jakie ‘zwykłe’ paczki dociągnąć by mieć zainstalowane to co opisuje dana meta-paczka. Clear ?

Praktyczne zastosowanie meta-paczek
Nie znam zupełnie stanu naszego instalatora i płytek .iso. Wiem natomiast, że bardzo wielu nowych użytkowników PLD właśnie w taki sposób chce instalować tą dystrybucje. Przeraża ich instalacja ręczna przy pomocy chroot’a i rescue-cd – mnie to nie dziwi. Wiem również, że na dzień dzisiejszy pakiety opisane w instalatorze jako wchodzące w skład tzw. instalacji -base, -basic, -games czy -serwer są wpisane na stałe w źródła instalatora, co jest złym pomysłem. Sam pomysł “podziału systemu” na takie kategorie już zły nie jest – występuje jednak jedynie przy instalacji prowadzonej przez instalator.
Załóżmy teraz, że istnieją już meta-paczki które właśnie tak podzieliły system – tylko teoretycznie, bo faktycznie istnienie takich meta-paczek niczego nie dzieli, a dodaje tylko funkcjonalność. W ten sposób można odciążyć instalator by po prostu tylko daną meta-paczkę instalował, a jej zależności załatwią resztę sprawy.

Jakie korzyści płyną z meta-paczek przy już zainstalowanym systemie ?
To proste. Załóżmy, że zainstalowaliśmy system w wersji base. Są tam naprawde podstawowe programy, brak X-Window, brak nakładek etc. Poldkowi mówimy, że chcielibyśmy zainstalować KDE. W PLD KDE jest podzielone na dziesiątki paczek i tak naprawdę ciężko laikowi połapać się w tym co naprawdę potrzebuje, a co jest opcjonalne. Instalacja meta-paczki dla KDE:

poldek:/all-avail> install metapackage-kde

dociągnęła by wszystkie niezbędne do uruchomienia KDE paczki, w tym pld-basic, pld-xwindow etc. Pomysł o tyle fajny, że zaawansowanemu użytkownikowi w ogóle nie przeszkadza – w końcu nie musi on korzystać z meta-paczek, a struktura paczek w PLD przez to się nie zmienia.

Konkluzja
Zastanowić należałoby się nad tym, jak wiele paczek miałaby w zależnościach meta-paczka od np. KDE. Czy powinna istnieć jedna meta-paczka zawierająca całe KDE, czy powinno być to znowu podzielone na np. kde-base, kde-biuro, kde-gry etc. Przy coraz to większym zróżnicowaniu i rozdrobnieniu meta-paczek cały pomysł traciłby jednak sens, bo tak naprawdę niczego by nie zmieniał i początkujący użytkownik znowu miałby problem co instalować i jak to się w ogóle nazywa…
Meta-paczki to mocne narzędzie i jeżeli zaczynamy w PLD myśleć o ludziach zaczynających dopiero zabawę z Linuksem to na pewno nie ominie nas głębokie przemyślenie tematu meta. Samo PLD w ten sposób jednak niczego nie traci i dla bardziej obytych w ogóle się nie zmieni – co na pewno jest wielkim plusem.

November 8, 2006

No Comments

Digital Tv @Mac

Wow. Od dawna do oglądania Tv używam komputera. Nie dlatego, że nie stać mnie na jakiś w miarę dobry telewizor, ale po prostu nie mam na niego miejsca, a oglądanie wiadomości w okienku na pulpicie sprawia, że można równocześnie odpisać na maila czy skompilować program. Wygodne to. Jednakże miało to swoje minusy – jakość często potworna (śnieżenie spowodowane kiepskim połączeniem do anteny) i w dodatku analogowa. Dodatkowo mogłem oglądać Tv tylko na jajku 2.6.14 i niższych, bo mutex w nowszych jest po prostu skopany. Miało to minusy, ale już nie ma. Oto prezentuję cudo pod Mac’a zwane Elgato EyeTv Hybrid.

Instalacja banalna, podłączenie intuicyjne. EyeTv Hybrid, jak sama nazwa wskazuje, jest hybrydą telewizyjną tzn. potrafi odtwarzać telewizję zarówno analogową jak i cyfrową w standardzie DVB-T (jeśli oczywiście taka jest dostępna). Na moje szczęście Berlin całkowicie pokryty jest siecia DVB i za darmo można z niej korzystać. Po prostu podłączasz, dostarczoną wraz z tunerem USB, antenę i plugujesz do Maca. Soft automatycznie wykryje rodzaj tunera i po kilku kliknięciach mamy zeskanowane wszystkie dostępne kanały gotowe do oglądania. Dodatkowo dodam, że w pakiecie jest również roczny abonament w serwisie TvTv, dzięki któremu dostępny jest program telewizyjny oraz możliwość oglądania filmów w czasie póżniejszym niż oficjalny w gazecie.
pic1

W czasie rozmowy na IRCu, można oglądać serial.
Jakie cuda toto oferuje? Krystalicznie czysty obraz w kazdej rozdzielczości. Aspect Ratio można dowolnie zmieniać lub ustawić na autmatic by EyeTv 2 automatycznie wykrywał czy program leci w 16:9, 4:3 a może w jeszcze innym (dodatkowo dostępne są 14:9 oraz tryb Wide) formacie.

pic2

Oprócz tego rozmiar okna jest (prawie) dowolnie konfigurowalny od mini po fullscreen:
pic3

Sterowanie może odbywać się w trojaki sposób: myszką, poprzez klawiaturę albo via apple remote (pilota). Można zmieniać program, intensywność dźwięku, tryb nagrywania lub live, opóźnienie itd.
pic4

Ładne menu przy zmianie programu pokazuje co aktualnie leci, co będzie w najbliższym czasie lecieć nazwę programu i numer kanału.
pic5

Dostępne jest również coś w rodzaju telegazety. Via TvTv pokazywany jest program dla wszystkich kanałów
pic6

oraz istnieje możliwość opóźnienia oglądania danego programu (o czym wspominałem wyżej) i nagrywanie go na dysk twardy/DVD/CD lub inny nośnik.
pic7

Biorąc pod uwagę wszystkie te opcje i w końcu bezstresowe oglądanie Tv (praktycznie) on_demand powodują, że EyeTv Hybrid to świetny produkt i stosunkowo niedrogi. Miłego oglądania !

April 10, 2006

5 Comments

It’s smoooooth !

Xgl na intelu w końcu jest płynny. Tak jak znamy to z kart nvidii/ati. No może nie dokońca tak płynny ale bez problemu można już pracować na swoim środowisku (w moim przypadku jest to kde-3.5.2) i nie narzekać, że Xgl jest za wolny. Szczegóły:

xorg-xserver-xgl-0.0.20060409-2
xorg-xserver-xgl-libGL-0.0.20060409-2
compiz-gnome-decorator-0.0.9-1.20060409.1
compiz-gnome-settings-0.0.9-1.20060409.1
compiz-0.0.9-1.20060409.1
xorg-driver-video-i810-1.5.1.0-0.2
Mesa-utils-6.5-1
Mesa-dri-driver-intel-i915-6.5-1
Mesa-libGLU-6.5-1
Mesa-libGLw-6.5-1
Mesa-libGL-6.5-1
kernel-2.6.16

Dla ciekawskich oczu

March 22, 2006

8 Comments

PLD Ac, Xorg-7.0, Xgl, compiz, i810 i czy to w ogóle działa

Xgl jest ciągle tematem numer jeden u “efekciarzy” i “hobbystów nowinek” linuksowych. Do takich sam się zaliczam i niniejszym prezentuje krótki opis do Xgla w PLD-Linux Ac. Przy okazji zaznaczam, że opis nie powstałby pewnie bez pomocy Bartosza ‘wolf’ Taudula, który naprowadził mnie jak to cudo w ogóle uruchomić.

W PLD Ac standardowo nie ma modularnych xów, nie mówiąc już o Xgl czy innych compizach. Dlatego pierwszym krokiem jaki należy zrobić to dopisać do /etc/poldek/pld-source.conf moje prywatne repozytorium.

[source]
type  = %{_ac_idxtype}
name  = shadzik
path  = http://teksty.org/~shadzik/RPMS/
noauto  = yes

Następnie za pomocą poldka instalujemy nowe iksy, compiz, compiz-gnome-decorator, compiz-gnome-settings, xorg-xserver-xgl i jego libGL, mesę, gconftool2 (Ac), gconf-editor (Ac), kdelibs (z patchem dla Xgl) oraz glitz (opcjonalnie można gnome-panel z repo Ac). Dokładną listę paczek, które mam zainstalowane znajdziecie tutaj.

Po udanej instalacji najpierw należy sprawdzić czy nowe iksy się poprawnie uruchamiają i czy mamy włączone DRI.

[bartek@tosia ~]$ glxinfo |grep rendering
direct rendering: Yes

Xgl nie obsługuje na dzień dzisiejszy DRI, dlatego skorzystamy z Accel Indirect Rendering (jest wkompilowane w paczki Xgl z mojego repo, więc nie musicie zaprzątać sobie tym głowy). Następnie edytujemy (jeśli nie istnieje to go tworzymy) plik ~/.xinitrc i wstawiamy do niego

Xgl :1 -ac -br -accel xv -accel glx:pbuffer -fullscreen &
until DISPLAY=:1 xset q > /dev/null 2>&1 ; do done
LD_LIBRARY_PATH=/usr/lib/xgl DISPLAY=:1 compiz gconf place move decoration resize minimize wobbly fade cube rotate zoom scale switcher &
LD_LIBRARY_PATH=/usr/lib/xgl DISPLAY=:1 gnome-window-decorator &
#LD_LIBRARY_PATH=/usr/lib/xgl DISPLAY=:1 gnome-panel &
DISPLAY=:1 setxkbmap -model toshiba_s3000 -layout pl &
LD_LIBRARY_PATH=/usr/lib/xgl DISPLAY=:1 startkde

Teraz spokojnie możemy odpalić z usera startx i delektować się galarotowatymi oknami. Opcjonalnie można w ~/.xinitrc odhashować wpis dotyczący gnome-panela. Mimo, że kdelibs zostało spaczowane do obsługi xgla to i tak nie widać zminimalizowanych okienek w kickerze – w tym pomaga gnome-panel, ale jak dla mnie wygląda to tandetnie i jest widoczna znaczna obniżka wydajności.

W razie problemów odsyłam do http://gentoo-wiki.com/HOWTO_XGL. Jest tam opisany praktycznie każdy problem jaki może występować z iks-gie-elem.

P.S.
W repozytorium jest nowszy sterownik do i810 w wersji 1.5.1.0 ale odradzam jego używania – nie ma DRI w iksach i Xgl nie chce wystartować. Problem jest w Mesie i da się go rozwiązać, ale to już innym razem.

December 13, 2005

No Comments

Christmas joke ;)

Ci z was, którzy studiują matematykę albo mają coś wspólnego z matematyką wiedzą, że potrafi być nudna jak flaki z olejem. To fakt i biorę pełną odpowiedzialność za te słowa ;). Czas takiego wykładu matematycznego można przecież lepiej spożytkować i w napływie ogromnej nudy naszły mnie głupie myśli by napisać program, który gdzieś kiedyś już widziałem, a idea jego strasznie mi się spodobała. Po ~1h intensywnego grzebania w Java API światło dzienne ujrzała pierwsza i ostatnia wersja tego dość dziwnego dowcipu. Mam nadzieję, że wam się spodoba :) Polecam uruchomić gdzieś w pracy na jakimś stanowisku. Testowałem na dwóch systemach: Linuks i Windows, ale myśle, że i na Macu nie powinno być z nim problemów.
Oto screeny:
Pod Linuksem
Tak prezentuje się to pod Linuksem.
Pod Windowsem
A tak pod Windowsem.
Pod linuksem uruchamiamy program wpisując:

java -jar arbeit.jar

A pod Windowsem wystarczy kliknąć dwa razy myszką (przynajmniej tak mi się wydaje).

Program jest do ściągnięcia stąd.