Tuesday, March 27, 2007

Pobieranie stringów w MySQL++

Po wczytaniu się w dokumentację znalazłem sposób na wyciąganie ładnych stringów:
row = res.at(i);
pom.erase();
pom = row["gatunek"].get_string();
gdzie pom to zwykły string pom;

Narzędzia programisty.

Już dawno miałem dokończyć ten wpis - dziś może w końcu się uda. Podczas jednych z konsultacji z C++ usłyszałem o kilku ciekawych narzędziach, które mogą pomóc w znajdowaniu wycieków pamięci. Pierwszym z nich jest valgrind, program, który pozwala tworzyć narzędzia do badania działania programu w trakcie jego wykonywania. W najprostszej wersji może on posłużyć przykładowo do sprawdzania miejsc, w których nie zwolniliśmy pamięci w programie (malloc / free). Podobną funkcjonalność oferuje nam narzędzie electric fence (całkiem sympatyczny opis na wikipedii). GDB to chyba wszystkim znany debugger :) Możemy sobie o nim poczytać międzyinnymi:

http://www.google.pl/search?hl=pl&client=firefox-a&rls=com.ubuntu%3Apl-PL%3Aofficial&hs=i0d&q=GDB&btnG=Szukaj&lr=lang_pl
http://student.agh.edu.pl/~gkozlow/GDB/
http://pl.wikipedia.org/wiki/GNU_Debugger

Wednesday, March 14, 2007

SELECT w MySQL++

Rozwiązania z dokumentacji co do zapytania SELECT mi nie działały. Zamieszczam własne:
mysqlpp::Row row;
unsigned long int ile = res.num_rows();
unsigned long int i;

for (i = 0; i < ile; i++) {
   row = res.at(i);
   cout << row["nazwa_kolumny"];
}

Sunday, March 11, 2007

Gdzie jest dziubdziub ?

http://www.gdziejestdziubdziub.prv.pl/

Problem z NVIDIĄ rozwiązany

Dziś doszedłem dlaczego nie działały mi sterowniki NVIDII ;P Wstyd się przyznać. Nie czytałem komunikatów instalatora ;P No i dopiero dziś dopatrzyłem się, że moja karta jest obsługiwana przez sterowniki w wersji 1.0-7184 a nie 1.0-9755 :P

Super odtwarzacz muzyki MOC

Trafiłem dziś na kapitalny odtwarzacz muzyki przeglądając http://www.linuxsoft.cz/pl/. MOC [http://moc.daper.net/.] Co prawda wersja alpha u mnie nie zadziałała, ale stable ;) poszło pięknie. Po zwykłym:
./configure
make
su
make install
Musiałem jeszcze z katalogu źródeł przekopiować do katalogu ~/.moc
  • katalog thems/ z themami
  • plik keymap.example jako ~/.moc/keymap
  • plik config.example jako ~/.moc/config
W pliku config odkomentowałem sobie jeszcze:
Theme = example_theme
XTermTheme = transparent-background

Po prawej stronie dodaje się pliki poprzez guziczek [a], [TAB]-em przechodzi się na prawą i klika [ENTER] aby zacząć odtwarzać.

Plik manuala (ubogi, dokumentacja na stronie też biedna) można otworzyć np. man /usr/local/share/man/man1/mocp.1

"Wychodzi się" guziczkiem [q] ;)

Saturday, March 10, 2007

qingy - Nowy menadżer logowania

Postanowiłem sprawić sobie jakiś graficzny menadżer logowania. Kolega polecał qingy więc pomyślałem, że spróbuję. updateos -f qingy nic nie zwróciło więc poszukałem źródeł w internecie. Samo wpisanie qingy w pasku adresu Firefox-a zwróciło mi (o dziwo) właściwą stronę [http://qingy.sourceforge.net/] . Po ściągnięciu źródełek zacząłem jak zwykle kompilacje.
bunzip2 qingy-0.9.5.tar.bz2
tar -xf qingy-0.9.5.tar
cd qingy-0.9.5
vim INSTALL README -p
./configure (nie poszło - nie ma directfb :/)

updateos -f directfb coś znalazło, ale chyba nie o to chodziło. Na stronie jest oczywiście wyraźna informacja o potrzebie doinstalowania directfb [http://www.directfb.org/] więc zaczynamy ;)
tar -zxf DirectFB-1.0.0.tar.gz
cd DirectFB-1.0.0
vim INSTALL README -p
./configure (poszło ;))
mak
su
make install
Wracam do katalogu z qingy:
ldconfig
./configure (poszło ;) )
make
su
make install

Czasami pada pytanie czy da się tak zainstalowany program odinstalować. Jeżeli ma się katalog, w którym kompilowało się źródła, zostawiło się go na dysku - to wystarczy wejść do tego katalogu i wykonać polecenie make uninstall.

whereis qingy podało mi informacje gdzie mogę szukać mojego qinqy - ale trudno. Zgodnie ze wskazówkami z pliku INSTALL dopisałem do /etc/inittab co i jak trzeba. W moim przypadku vim INSTALL /etc/inittab -p. Po moich modyfikacjach fragment tego pliku wygląda mniej więcej tak:
# These are the standard console login getties in multiuser mode:
c1:12345:respawn:/usr/local/sbin/qingy tty1
c2:12345:respawn:
/usr/local/sbin/qingy tty2
c3:12345:respawn:
/usr/local/sbin/qingy tty3
c4:12345:respawn:
/usr/local/sbin/qingy tty4
c5:12345:respawn:
/usr/local/sbin/qingy tty5
c6:12345:respawn:/sbin/agetty 38400 tty6 linux

#c1:1235:respawn:/sbin/agetty 38400 tty1 linux
#c2:1235:respawn:/sbin/agetty 38400 tty2 linux
#c3:1235:respawn:/sbin/agetty 38400 tty3 linux
#c4:1235:respawn:/sbin/agetty 38400 tty4 linux
#c5:1235:respawn:/sbin/agetty 38400 tty5 linux
#c6:12345:respawn:/sbin/agetty 38400 tty6 linux

Nadeszła godzina zero. qingy działa nawet dl
id:4:initdefault. Zanim uruchomimy go po raz pierwszy warto zmodyfikować plik /usr/local/etc/qingy/settings i ustawić temp_files_dir = "/tmp/qingy" (u mnie temp_files_dir = "/tmp/qingy"). Program jednak sam sobie katalogu nie zrobi. Trzeba go więc utworzyć samemu. Ja dodatkowo na wszelki wypadek dałem na niego chmod 0777 /tmp/qingy.

Przed restartem komputera jako root utwórz jeszcze katalog /usr/local/etc/qingy/sessions. I tutaj pojawia się pewien zgrzyt :| otóż, aby odpalić w qingy X-y należy w pliku domowym utowrzyć sobie plik: .xsession. U mnie w Kasi jest on pusty. Po kilku minutach przyglądania się systemowi doszedłem do wniosku, że odpowiednie środowisko graficzne odpala /etc/X11/xinit/xinirc.[nazwa środowiska] Kiedy istnieje pliczek .xsession podczas logowania można wybrać sobie czy chcemy wejść do konsoli czy zalogować się do X-ów. Ponieważ nic mądrzejszego od twórców Kasi nie wymyślę posłużyłem się zbawiennym już dowiązaniem symbolicznym (u mnie xfce):
su
rm /home/johny/.xsession
ln -s /etc/X11/xinit/xinitrc.xfce /home/johny/.xsession
chown johny:users /home/johny/.xsession
I od tej pory mogłem cieszyć się logowanie qingy :) do X-ów.

Jeżeli wiemy z góry, że boimy się mrówek warto przed restartem komputera zajrzeć na [http://qingy.sourceforge.net/themes.php]. Może się wydawać, że wiele themów "nie działa". Można je zawsze znaleźć na http://themes.freshmeat.net/. Czasami jednak podanie w wyszukiwarce qingy to za mało i trzeba posiłkować się nazwą themu. Dodatkowo warto wspomnieć, że katalog, w którym umieszcza się themy (rozpakować theme to tego katalogu. np. powstaje wtedy katalog einstein) można znaleśc w pliku /usr/local/etc/qingy/settings:
themes_dir - katalog, w którym umieszczamy katalogi z themami (wystarczy zazwyczaj rozpakować tam theme)
theme - nazwa katalogu z themem w środku
W razie jakichkolwiek problemów czy wątpliwości zajrzyjcie na http://qingy.sourceforge.net/manual.php

Powodzenia i miłej zabawy !

Kompilacja z MySQL++

Namęczyłem się, żeby jakoś skompilować program z MySQL++. Więc podaje jeszcze nie rozbdudowany Makefile:
CC = g++
CFLAGS = -lmysqlpp -lmysqlclient
LFLAGS = -I/usr/include/mysql -I/usr/include/mysql++

ZOO: main.o klatka.o klatki.o
$(CC) main.o klatka.o klatki.o -o ZOO $(CFLAGS)

main.o: main.cpp
$(CC) -c main.cpp -o main.o $(LFLAGS)

klatka.o: klatka.cpp
$(CC) -c klatka.cpp -o klatka.o $(LFLAGS)

klatki.o: klatki.cpp
$(CC) -c klatki.cpp -o klatki.o $(LFLAGS)

clean:
rm -f *.o
Mam nadzieję, że to dużo wyjaśni - bo ja się z tym męczyłem dobrą dobę.

Friday, March 9, 2007

Błogosławieństwo dowiązań symbolicznych

Często jak kompiluje się jakieś biblioteki, grę wrzuca się je do /usr/local - potem chcemy odpalić nasz wymarzony program a tu wiadomośc, że brakuje biblioteki libgladeui-1.so.4.

Należy pamiętać, że po każdym zainstalowaniu programu warto wydać komendę ldconfig, która zrobi update bibliotek współdzielonych w systemie, to znaczy odświerzy informacje o nich. Generalnie podobne sytuacje zdarzają się w innych przypakach, mi na przykład program na sztywno szukał jakiś sterowników (do Neo) w jakims konkretnym wyimaginowanym katalogu (na szczęście mówił w jakim), ale go nie było. I to jest właśnie błogosławieństwo dowiązań symbolicznych. W moim przypadku gdy brakuje biblioteki to dowiązuje sobie ją do /usr/lib:

ln -s /usr/local/lib/libgladeui-1.so.4 /usr/lib/libgladeui-1.so.4
I mam z głowy tak samo zrobiłem z plikiem od Neo - nie raz taka sztuczka uratowała mi "niedziałający" program - może i Tobie się przyda.

Jak Vista.

Po przeczytaniu artykułu [KŚ Ekspert 3/07] o upodobnianiu Windows-a XP do Visty postanowiłem przestać teoretyzować, spróbować i wyrobić swoje własne zdanie. Kilka spostrzeżeń po instalacji Vista Transformation Pack 6.0:

1) Komputer z bajerkami zaczął ciut wolniej działać - ale czego można wymagać od Durona 1.0 i 600 MB RAMu - pewnie na innym kompie byłoby lepiej, jednak mam wrażenie, że wszystkie bajerki graficzne obciążają procesor a nie kartę graficzną, a szkoda.

2) W TaskSwitchXP niebieskie literki na ciemnym tle podczas przełączania okien są prawie niewidoczne. Domyślam się, że dodatek Power Toys o tej samej funkcjonalność, lepiej komponowałby się ze stylem Visty, na szczęście w zakładce Wygląd TSXP można zmienić styl wyglądu okna przełączania aplikacji i wszystko wygląda ładniej.

3) Nie wiem czy to wina łatek Windows, czy tego programiku, a może samego błędu w IE7 czy Windows Defender-a (bo instalowałem wszystko jednocześnie), ale straciłem dostęp do Opcji Internetowych - pomimo tego, że jestem administratorem nie mam do nich dostępu.

4) Musiałem poprzesuwać "guziczek" emulujący fragment START-u. Wygodnie robi się to najpierw przesuwając go gdzieś myszką potem operując strzałkami.

5) LClock czy coś takiego wyłączyłem, wole prostą cztelną informacji o godzinie, a kalendarz mam na SideBarze.

6) Sidebar wydaje mi się słabo konfigurowalny - lepiej moim zdaniem prezentuje się Desktop Sidebar, fajna jest opcja guziczków odtwarzacza, jest wsparcie dla wielu odtwrzaczy w tym Winamp-a niestety :/ foobar-a zabrakło :(. Posiada bardzo czytelny i fajny kalendarz, kontrolkę obciążenia kart sieciowej czy zegary procesor-a ;)

7) Brzydko kontrastuje biała plama najczęściej uruchamianych programów w STARCIE.

8) Zjadło mi pokazywanie popularnych zadań w folderach.

9) Po wpisanie adresy strony www w IE7 odpala mi się FireFox :/

10) Nie dział podwójne klikanie [CTRL]+[ALT]+[DEL] przy ekranie logowania.

To tyle w dużym skrócie.

Rzecz o moim Windowsie

Na komputerze obok mojej Kasi rezyduje na którejś partycji Windows XP z MSDNAA. Czasami profesorom, którzy programują pod Windowsem, coś nie działa, rzucają pomysł, żeby znaleźć błędy w ich kodzie i wypadałoby mieć kompilator, którego używają. Może pokrótce opisze programy, które mam zainstalowane pod Windowsem.

Odtwarzacz muzyki [Foobar 2000]: Moim zdaniem najlepszy odtwarzacz muzyki pod Windowsem. Nie jest bajerancki, ale prosty jak cep. Mam wrażenie, że zajmuje mniej miejsca w RAM-ie i na pewno na wolniejszych komputerach działa szybciej niż Winamp. Doinstalowałem sobie do niego dodatek Columns UI, który pozwolił mi w dużo wygodniejszy dla mnie sposób zarządzać playlistami. Myślę, że nawet jakość dźwięku jest lepsza więc polecam go wszystkim amatorom dobrej muzyki.

Komunikator do Gadu-Gadu [Gadu-Gadu]: Używam go przede wszystkim ze względu na opcję Gadu-Radia. Generalnie używam ekg2 na uczelnianym shell-u. Specjalnie dla słuchania Gadu-Radia zainstalowałem też Winamp-a w wersji Lite. Pod Kasią używam tylko ekg2.

Wysyłanie SMS-ów [eSkiMoS]: Super programik do wysyłania nie tylko SMS-ów. Ponieważ jestem harcerzem często przydałaby mi się opcja wysyłania SMS-ów masowo np do wszystkich członków jednego zastępu. Eskimos pozwala na to i jeszcze więcej. Możemy w nim tworzyć grupy, przypisywać kontakty do grup i wysyłać wiadomość wszystkich z grupy w kilku kliknięciach. Aplikacja jest napisana naprawdę dobrze i z głową ! Kapitalnie się z niej korzysta. Obsługuje chyba wszystkie dostępne bramki SMS-owe (przy okazji polecam bramkę http://sms.ikp.pl - wysyła na Erę i na Orange u osoby z wyłączonym odbieraniem SMS-ów z internetu), pozawala na wysyłanie wiadomości do użytkowników Gadu-Gadu i Tlen-a ma bardzo wiele ciekawych opcji, obsługuje bramki kilku innych krajów - no po prostu dla mnie miodzio !

Przeglądanie partycji ReiserFS [YAReG]: Oczywiście tylko do odczytu, ale moim zdaniem to i tak wiele. Jak mam jakieś dane na Linuchu i siędzę pod Windowsem to krytycznie skraca czas dostępu do tych informacji, bo nie muszę rebootować dwa razy komputera.

Obsługa zdalnego terminala SSH [PUTTY]: Nie wiem czy jest coś konkurencyjnego. Jak muszę zalogować się spod Windowsa na shell-a uczelnianego to używam po prostu putty.

VOIP [Skype]: Bo moi znajomi używają.

Przeglądarka [Firefox/Opera/IE 7]: Obecnie używam masowo Firefox-a, jednak tylko ze względu na funkcjonalność serwisów Google. Gdyby wszystko działało poprawnie w Operze, używałbym Opery - trudno takie życie. Mam też IE7. Niesamowicie podoba mi się w nim opcja miniaturek okien [CTRL]+[Q].

Czytnik PDF [Foxit reader]: Bo jest lekki i nie zasysa jak Adobe.

Odtwarzacze multimediów, kodeki itd... [Video LAN VLC]: Za każdym razem starałem się instalować moim znajomym kodeki (u mnie w domu siostra siedziała w Mandze i Anime, więc Ona w tym siedziała i wszystko instalowała) optymalnie - tak żeby wszystko działało. Zawsze próbowałem zasięgnąć rady w internecie żeby poznać najlepszą opcję ! No i każdy miał swoje zdanie ! KLite Codec Pack (MEGA KŚ Expert poleca - ja im wierzę), AllinOne (to zawsze instalowałem i mi działało), Nimo - nie wiem co tam jeszcze, a moja siostra na przykład instalowała wszystko po kolei osobno, (divx3, 5, 6 ... etc) podobno była jakaś magiczna kolejność instalowania setek tych pakietów, która sprawiała, że wszystko działało. No i czasami trzeba było doinstalować jeszcze Real Media Player, Quick Time... No po prostu masakra ! Do odtwarzania filmów w domu zawsze pod Windowsem był BestPlayer (jest lekki no i ma Best w nazwie), AllPlayer - bo jest moim zdaniem naprawdę dobry i mam go też na swoim windowsie, posiada opcję jakiś inteligentnych napisów, integrację z syntezatorem mowy, ale co najlepsze ma opcję autmatycznego ściągania brakujących kodeków, dlatego sprytna osoba dzięki tej opcji szybko rozwiąże problem niedziałającego filmu. Do QuickTime i RealMedia używałem Real Alternative i Quick Time Alternative - nie męczyły reklamami, jakimiś wyskakującymi okienkami i innym spywerowatymi opcjami, które były dla mnie stresogenne.
I chociaż na AllInOne się nigdy nie zawiodłem (bo nie znalazłem filmu, którego nie dało się na nim odtworzyć), to moi znajomi zawsze mówili, że jakiś ich znajomy polecał im jakiś codepack i jednak jakiś film im nie działa i żeby do nich wpaść. Ponieważ sam nie ufałem codekpackom, które sam instalowałem, wściekłem się i zacząłem instalować programy programy bez kodekowe. Pierwszym, którego używałem był Kliper, dziś mam doinstalowanego VideoLAN VLC i nie narzekam. Pierwszego polecam ze względu na oparcie się o stare sprawdzone rozwiązanie jakim jest mplayer. Myślę, że dobra opcja, jeżeli nie koduje się filmów, tylko je ogląda, szczególnie dla osoby-laik-a. Ja do codek-packów zaufania nie mam :/ No może Do jakiegoś Mega Codeck-Pack, który zajmuje tyle, że zawiera chyba wszystkie możliwe kodeki - ale czy warto zaśmiecać sobie system. Poza tym do nieinstalowania kodeków przyczyniła się jeszcze jedna historia. W którejś wersji Gadu-Gadu po zainstalowaniu FDDShow GG przestawało się odpalać generując jakiś błąd.
Do rozpoznawaniu kodeku używam GSpot-a.

[ALT]+[TAB] Task Switch XP: Programik podmieniający okienko spod [ALT]+[TAB] - całkiem przyjemny i użyteczny.

Powiadomienie o poczcie [Gmail Notifier]: Ten Googlowski.

Edytory, środowiska programistyczne:
EditPlus - bo się tak przyzwyczaiłem - poza tym jest lekki, posiada 100% funkcjonalności, jakiej potrzebuję, konfigurowalny, opcja otwierania zdalnie przez FTP, i bardzo mi się podoba jego kolorowanie składni (tylko vim przebija).

Dev C++: Bo piszą w tym profesorowie na PG.

Free Pascal: Właściwie sam się zastanawiam po co, ale się pałęta na dysku.

Code Block: Bo słyszałem, że dobre. W sumie nic poważnego w niej nie pisałem. Chyba aplikacja jak każda inna i wszystko zależy od gustu. Dla mnie po prostu szczytem jest vim (dla C/C++) i takie coś innego mi nie odpowiada. Nie mam jednak nic do zarzucenia tej aplikacji. Porządnie wykonana, możliwość tworzenia projektu QT, OpenGL, WxWidgets - moim zdaniem bardzo fajna bo otwarta na OpenSource i na pewno równie dobrze napisana. Jak ktoś szuka dobrego edytora do C/C++ to na pewno warto sprawdzić i ten.

Eclipse: Raczej używam PHPIDE, bo pisanie kodu w vim-ie w obecnym projekcie jest ciut męczące - generalnie przydaje się uzupełnianie, widok klas, wbudowana pomoc do funkcji - bardzo przyśpiesza i ułatwia mi pracę.

Pliki DJ-VU [DjVu Browser]: Działa jako dodatek do FF, ale czy jest coś innego - nie wiem.

Odśmiecanie Windows [Odkurzacz]: Moim zdaniem porządnie wykonana aplikacja. Bardzo mi się podoba opcja DOBRZE DZIAŁAJĄCEGO monitor-a instalacji, do którego mam zaufanie i wierzę, że naprawdę wyłapie wszystkie pliki jakie zagnieździły się w moim systemie, podczas instalacji oprogramowania.

Robienie galerii HTML [JAlbum]: Nie znalazłem nic lepszego-darmowego.

Antywirus [AVAST]: Bo jest darmowy i nie zawiodłem sie jeszcze na nim. Mam też gdzieś Windows Defender jako antyspamer.

Przeglądanie grafiki [IrfanView/Picasa]: IV bo zawsze było, Picasa fajnie kataloguje zdjęcia, lubię w niej robić kolaże dla znajomych i szybko pozwala mi wysłać zdjęcia gmail-em co jest dla mnie bardzo wygodną funkcją. Generalnie na codzień wystarcza mi funkcjonalność Windows XP.

Nagrywanie dźwięku [AudaCity]: Na moje potrzeby lepszego programu nie widziałem.

Kompresja 7-zip: Obsługuje sporo formatów jest darmowy i wygodny jako menadżer plików, przynajmniej w funkcjonalności jaka jest mi potrzebna.

Thursday, March 8, 2007

Moja powłoka - ZSH

W końcu mam okazję napisać coś o mojej powłoce. Z bash-a przerzuciłem się na ZSH i to tylko dlatego, że słyszałem, że ma fajne uzupełnianie ... bo rzeczywiście ma ;)

Do podstawowej konfiguracji ZSH można użyć łatwego kreatora (nie pamiętam jak się go wywołuje)

# Globalne ustawienia dla całego systemu #
. /etc/profile # Ładuje sobie ustawienia z . /etc/profile

# Obsługa dopełnień #
zstyle ':completion:*' completer _complete
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} # Koloruje dopełnienia

# Buduję listę znanych hostów #
local _myhosts;
_myhosts=( ${${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) /dev/null)"}%%[# ]*}//,/ }:#\!*}
${=${(f)"$(cat /etc/hosts(|)(N) <<(ypcat hosts 2>/dev/null))"}%%\#*} );
zstyle ':completion:*' hosts $_myhosts;

# Ładowanie obsługi dopełnień #
# Dużo by mówić o dopełnianiu. Samo się uczy i czyta parametry dostępne w opcji -h --help
# Trzeba zobaczyć żeby sprawdzić.
autoload -Uz compinit
compinit

# Korekcja poleceń #
# Powłoka wyłapie polecenie np: ekg1 i zapyta czy wykonać na ekg2
setopt correct # Korygowanie literówek w poleceniach
setopt correctall # To samo rozszerzone

# Kolorowy prompt w ZSH #
autoload -U promptinit
promptinit
export PS1="%{${fg_bold[red]}%}%n%{${fg_bold[green]}%}@%{${fg_bold[blue]}%}%m%{${fg_bold[yellow]}%}:%~%#%{${reset_color}%} "

# Przechodzenie po drzewie tylko przy użyciu nazw katalogów #
setopt autocd # Przechodzenie po katalogach bez użycia cd np zamiast "cd jasiu" piszemy "jasiu"

# Ustawienia dla historii #
setopt incappendhistory # Dopisuje do pliku historii "a+"
setopt histignoredups # Nie wpisuje do pliku dwóch identycznych poleceń
setopt extendedhistory # Zapis godziny wykonania polecenia
export HISTSIZE=2000 # Rozmiar historii
export SAVEHIST=2000 # Ile wpisów ma być zapisanych
export HISTFILE=~/.zsh_history # Plik z historią


# Własna konfiguracja #
export TERM='linux'

# Aliasy #
alias ls='ls --color=always' # Kolorowanie dopełnienia dla katalogów
Już nawet tak prosta konfiguracja pozwala na wygodną, szybką pracę.

Przydatne skróty:
[CTRL]+[r]: Po wciśnięciu, wszystko co będziemy wpisywać będzie wyszukiwane w historii poleceń
[CTRL]+[u]: Czyści obecną linijkę
[CTRL]+[c]: Anuluje obecną linijkę
[CTRL]+[a]: Przechodzi na początek linijki
[CTRL]+[e]: Przechodzi na koniec linijki



Kilka ciekawych linków:

Pliki konfiguracyjne - przykładowe:
http://www.gentoo.pl/~arsen/configs/.zshrc
http://wrzask.pl/files/zshrc

O ZSH:
http://jabba.pl/grzywacz/id/9394
http://docs.ramonat.fr/zshrc.html
http://grml.org/zsh/zsh-lovers.html
http://www.gentoo.ro/forum_viewtopic.php?20.8463
http://jabba.pl/leblee/id/9388
http://zsh.sunsite.dk/Intro/intro_toc.html
http://www.gentoo.org/doc/en/zsh.xml

Wiki:
http://zshwiki.org/home/

User Guide:
http://zsh.dotsrc.org/Guide/

Wednesday, March 7, 2007

Kodowanie przez FTP w vim-ie

Musiałem wyedytować pliczek na zdalnym serwerze. Bluefish-a mam skompilowanego, bez tego bajerku - zostawał tylko jakiś ftpfs.

Ale jest vim:

vim
:e ftp://user@serwer.pl/
my_password
I jestem :) Pliczki są kodowane na serwerze w UTF-8 a ja mam krzaczki :/
Mówię vimowi jak są kodowane pliki i terminal:
:set fileencoding=utf-8
:set termencoding=iso8859-2
Mówię co jakie chcę mieć kodowanie na widoku:
:set encoding=utf-8
I działa miodzio :) W dokumentacji wyczytałem, że vim używa tego do czego ja chciałem kompa zatrudnić po ściągnięciu w akcie rozpaczy plików z FTP: iconv -f UTF-8 -t ISO-8859-2 plik.xhtml

Zmagania z obrazami

Szukałem przed chwilką programu, który pomógłby mi skatalogować zdjęcia na moim dysku twardym. Bardzo przydatne okazują się strony z "bazami programów" linuksowych:
http://www.linuxsoft.cz/pl/
http://www.gnomefiles.org/
Na pewno jest ich więcej. Jednak te dwa znam. Ostatecznie z powodu ogromu programów jakie są dostępne dla Linuksa zdecydowałem się wybrać picasę. Sam się zdziwiłem (czując się bardzo mile zaskoczonym), że jest w ogóle dostępna na Linuksa. Ale jest. Przy okazji przypomniałem sobie o włączeniu ivman-a:
chmod +x /etc/rc.d/rc.ivman
/etc/rc.d/rc.ivman
, który zawsze był wyłączony ponieważ o wszystko zawsze dbał XFCE, z którego już nie korzystam.
Po zassaniu picasy:
chmod +x picasa-2.2.2820-5.i386.bin
./
picasa-2.2.2820-5.i386.bin
i poszło :)
Wybrałem sobie /opt/picasa, wszystko pozaznaczałem i idzie ;)
Dziwnie się zainstalowało, ale się zainstalowało. Teraz już tylko uruchom /opt/picasa/bin/picasa, wyłapię ikonki z picasy w moim kochanym Window Maker i wyskoczył niespodziewany komunikat:

/dev/nvidia0 or /dev/nvidiactl are not accessable. Picasa will crash
if these files are not accessable. To fix this, as root, please run:

chmod 666 /dev/nvidia0 /dev/nvidiactl
Na szczęście chmod 0666 /dev/nvidia* pomogło :) i poszło (może i stery nvidii zaczną działać ... hmmm trzeba zobaczyć ! koniecznie !)

Niestety bardzo się na Picasie zawiodłem :/, przynajmniej pod Linuksem. Próbowałem pozaznaczać, obrazki i jakoś je wyodrębnić aby już tylko na nich pracować - ani opcja export to ... ani move to folder... czy jakoś tak, nie dawały efektu. Owszem w programie pojawiał się nowy folder, pojawiał się nawet na dysku, ale niestety :( nic poza tym, był w nich tylko pliczek picasa.ini i nic poza tym. Poza tym program działał baaardzo topornie (ale to pewnie przez moje zepsute sterowniki NVIDII) ! Niewątpliwie, była to możliwość, obejrzenia wszystkich linuksowych grafik, jakie są dostępne w systemie i powiem szczerze, że jestem mile zaskoczony.

W końcu się zdenerwowałem się i użyłem thunara. Ma słabe powiększenie zdjęć ale po pobieżnym przeglądzie w gtksee mniej więcej wiedziałem co klikać.
Potem próbowałem się dowiedzieć, co ciekawego mam zainstlowanego do obróbki obrazów. Pierwszym pomysłem było:
cd /var/log/packages
cat * | grep : | grep image
cat * | grep : | grep obraz
Ale nic mądrego poza gtksee nie wyciągnąłem. Potem na zasadzie analogii do ~/Desktop zrobiłem:
cd /usr/share
find ./ -name '*.desktop' | grep xfce
Tak trafiłem na folder applications. Potem wystarczyło zauważyć, że plik gtksee.desktop ma Categories=;Graphics; i wykonać grep Graphics -H * (-H pozwala dostawać nazwy plików, w których są takie wyrażenia). Tak trafiłm na program gqview ;) i to co od razu mi się rzuciło w oczy, to fakt, że ma opcję "kopiuj", która działa dokładnie tak jak chciałem czyli jak "kopiuj do".

W trakcie przypomniało mi się, że widziałem gdzieś program, który w bardzo fajny sposób pomniejszał zdjęcia ;), masowo. Nazywał się jalbum [http://jalbum.net/]. W trakcie instalacji JAlbum pytał się o jakieś dowiązania. Chyba nie trzeba tworzyć żadnych poniważ mi utworzył tylko:
lrwxrwxrwx 1 root root 24 2007-03-07 20:54 JAlbum -> /usr/local/jalbum/JAlbum*
lrwxrwxrwx 1 root root 51 2007-03-07 20:54 Uninstall_JAlbum -> /usr/local/jalbum/Uninstall_JAlbum/Uninstall_JAlbum*

Uruchomienie po podaniu ścieżki dostępu poszło bez problemowo. Znakiem plusika dodałem wszystkie zdjęcia, które były mi potrzebne. W Settings ustawiłem jakies parametry i kliknąłem Generuj album. Dla zaoszczędzenia miejsca zmieniłem tylko obrazki na 400x400 i chyba takie ciupinki mi wystarczą. W ~/My Albums/.../album/slides mamy co prawda całą stronę internetową ale cp *.JPG *.jpg ~/zdjecia powinno wszystko załatwić.

Po raz kolejny thunar okazał się niezastąpiony w :) masowej zmianie nazw plików. [CTRL]+[A] i Zmień nazwę z opcjami thunara czyni życie prostszym ;)

Mam nadzieję, że moje dzisiejsze zmagania pomogą Tobie szybciej przygotowywać miniaturki obrazów do wrzucenia na stronę pod Linuksem.

Zrzuty ekranów w X-ach

Zawsze mam problem kiedy chcę zrobić zrzut ekranu.
Jak nie pamiętam polecenia to odpalam gimp-a i tam wybieram: Plik\import\zrzut ekranu.
Tam wybieram czy chcę zrobić screen okna czy całego ekranu i naciskam Pobierz.
obrazek[angielski]

Jest tylko jeden mankament. Gdzieś trzeba schować okienko gimp-a.

Istnieje druga opcja:
Wpisać w uruchom: import -window root screenshot.png
Dzięki czemu do pliku screenshot.png (mogą być też inne rozszerzenia, ale nigdzie nie mogę znaleść listy wszystkich dostępnych) zostanie zaimportowany screen z naszego ekranu. Polecenie import wchodzi w skład pakietu ImageMagic [http://www.imagemagick.org/].
Bardzo użyteczne przykłady użycia można znaleść na stronie: [http://www.imagemagick.org/Usage/]

Fajny terminal

Ostatnio szukałem odpowiadającego mi w wystarczającym stopniu emulator-a terminali pod X-y. Na IRC kolega doradził mi urxvt [http://software.schmorp.de/pkg/rxvt-unicode.html].
Brakuje mi w niej tego, co ma program Terminal, który umie wyłapywać linki i po kliknięciu włącza się przeglądarka z włączonym odnośnikiem jednak pasuje mi dlatego, że wszystkie używane przeze mnie klawisze w ekg2 działają tylko pod rxvt a teraz i pod urxvt.
W innych terminalach zawsze było tak, że jak działało chowanie listy kontaktów [F3] to nie działała edycja wielolinijkowa [ALT]+[ENTER] i na odwrót i to bez względu na cudowanie z TERM-em :/
Ściągnąłem szybciutko updateosem i rzeczywiście fajny terminal. Podaję plik konfiguracujny ~/.Xdefaults:
URxvt.background: black
URxvt.foreground: white
URxvt.font: -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso8859-2
URxvt.scrollBar: false
URxvt.tintColor: white
URxvt.shading: 20
URxvt.inheritPixmap: true
URxvt.saveLines: 777
URxvt.geometry: 110x40
Tak opisowo: Tło czarne, literki białe, czcionka taka jaka mi się podoba (działają też czcionki X-owe), żadnych pasków przewijania, tintColor musi być white do pseudo przezroczystości, rozjaśnienie przezroczystości 20, przezroczystość - tak, Do zachowania 777 linijek, wielkość 110x40 i już :)

Jest jeszcze jeden bajeracnki terminal, taki co się chowa i tak efekciarsko zjeżdża z góry na ekran. Nazywa się: yakuake [http://yakuake.uv.ro/]. Jak qmple przyjdą to bajerancko wygląda naprawdę. Sobie klikasz guziczek (początkowo [F12]) a tu ziut z góry terminal zjeżdża. Jest pod QT tak, jakby co, a odpowiednik pod GTK to Tilda [http://tilda.sourceforge.net/wiki/index.php/Main_Page]

Sprawdzanie pisowani w weechacie

Nigdy nie umiałem pisać bez błędów. Dlatego włączyłem sobie sprawdzanie pisowni w weechacie. Po wejściu na kanał, na którym sprawdzanie tej pisowni miało działać wpisałem:
/aspell enable pl
/save
No i jest sprawdzanie pisowni :) Ładnie na czerwono mi się podświetlają, źle napisane przeze mnie wyrazy :)

Tuesday, March 6, 2007

Jak utrudnić komuś życie ?

Ostatnio z kolegami wpadliśmy na głupi pomysł.
W trakcie laboratorium zawołać kogoś na chwilę, i dopisać mu do .bashrc:
alias ls="echo Nie podglądaj mnie zboczeńcu !"
alias dir="echo Nie podglądaj mnie zboczeńcu !"
alias cd="echo Łapy przy sobie !"
alias mkdir="echo Wolność Tomku w swoim domku !"
alias rm="echo Wolność Tomku w swoim domku !"
Wymyślać przykłady można byłoby długo ;) i wszystko zależy od pomysłowości twórcy.

Dziwny "błąd" w blogger.com

W poprzednim poście miało być:
server_nick3 = "<dziubdziub>"
ale jak spojrzałem w widok HTML to zobaczyłem gdzieś na końcu kodu </dziubdziub> ;P

Blogger potraktował to jak znacznik i go domknął :)
Teraz użyłem encji, więc nie ma tego efektu :)

Przygoda z IRC-em

Do tej pory zachwycony byłem kombajnem jakim okazało się ekg2. Gadu-Gadu, Jabber i IRC w jednym - dla mnie fenomen. Jednak na kanale #kateos-pl (chat.freenode.net) obowiązywało kodowanie UTF-8. Nie znalazłem nigdzie łatwej możliwości zmiany kodowania w ekg2, chyba będzie trzeba zajrzeć w źródła. Najpierw używałem przez chwilkę irssi. Podam może fragmenty mojego ~/.irssi/config:
# [początek]
servers = (
{
   address = "warszawa.ircnet.pl";
   chatnet = "IRCnet";
   port = "6667";
   use_ssl = "no";
   ssl_verify = "no";
   family = "inet";
   autoconnect = "no";
},
{
   address = "chat.freenode.net";
   chatnet = "Freenode";
   port = "6667";
   use_ssl = "no";
   ssl_verify = "no";
   family = "inet";
   autoconnect = "yes";
}
);

chatnets = {
IRCnet = {
   type = "IRC";
   max_kicks = "4";
   max_msgs = "5";
   max_whois = "4";
   max_query_chans = "5";
   autosendcmd = "/msg NickServ IDENT twoje_haselko;";
};
Freenode = {
   type = "IRC";
   max_kicks = "4";
   max_msgs = "5";
   max_whois = "4";
   max_query_chans = "5";
   autosendcmd = "/msg NickServ IDENTIFY kolejne_haselko";
};
SILC = { type = "SILC"; };
};

channels = (
{ name = "#kateos-pl"; chatnet = "Freenode"; autojoin = "Yes"; },
);

# [długo ... długo ... nic ... ciekawego]
settings = {
core = {
   real_name = "Jasiu";
   user_name = "dziudziub";
   nick = "dziubdziub";
};
};
# [koniec]

Dodam jeszcze tylko, że jak w haśle występował znak dolara to tutaj w pliku konfiguracyjnym, przynajmniej przy /msg NickServ IDENTIFY kolejne_haselko trzeba było w miejscu $ podać $$ i dopiero wtedy program czytał to jak $.
Drażnił mnie jednak strasznie brak listy osób na kanale, do którego byłem przyzwyczajony w ekg2. Na stronie http://www.irssi.org/scripts/ znalazłem skrypt nicklist.pl, który wgrałem do ~/.irssi/scripts/ . Chciałem jeszcze, żeby sam się uruchamiał więc utworzyłem katalog ~/.irssi/scripts/autorun i tam dorzuciłem dowiązanie symboliczne do nicklist.pl:
cd ~/.irssi/scripts/autorun/
ln -s ~/.irssi/scripts/nicklist.pl ./nicklist.pl
Jednak aby rozwiązanie działało trzeba było uruchomić sesję screen-a. Czyli uruchamiać irssi dokładnie tak:
screen
irssi
i nie wyglądało to wcale estetycznie. Wtedy kolega doradził mi weechat-a [ http://weechat.flashtux.org/ ]. Znalazłem go w community-unstable. Odkomentowałe w pliku /etc/updateservers linijkę:
http://mirror.umr.edu/pub/linux/kateos/packages/dist3-community-unstable/
a potem tylko updateos -i weechat i już po chwili miałem weechat-a. Pierwsza rzecz, która mnie wściekła to to, że program odpala się przez wydanie polecenia: weechat-curses, a dodatkowo u mnie w terminalu urxvt najlepiej działa ze zmienną TERM=xterm. Dlatego zaraz wyedytowałem linjkę z mojego .zshrc (u większość i pewnie będzie .bashrc) i dopisałem do niekończącej się listy aliasów:
alias weechat='env TERM=xterm weechat-curses'
Jeszcze tylko . .zshrc aby zmiana weszła w życie. W pliku konfiguracyjnym [~/.weechat/weechat.rc] podam tylko pewne fragmenty, które uległy zmianom:

[look]
# [...] <- takie coś oznacza, że tu coś jest ale nie ważne jest w tej chwili co
look_charset_decode_iso = "ISO-8859-2"
look_charset_decode_utf = "UTF-8"
look_charset_encode = "UTF-8"
# [...]

[keys]
# [...]
ctrl-L = "/clear" # Przyzwyczajenie z konsoli
# [...]

[server]
server_name = "freenode"
server_autoconnect = on
server_autoreconnect = on
server_autoreconnect_delay = 30
server_address = "chat.freenode.net"
server_port = 6667
server_ipv6 = off
server_ssl = off
server_password = "twoje_haselko"
server_nick1 = "dziubdziub~"
server_nick2 = "dziubbuizd"
server_nick3 = "dziubdziub777"
server_username = "dziubdziub"
server_realname = "Jasiu"
server_hostname = ""
server_command = "/msg nickserv IDENTIFY twoje_haslo"
server_command_delay = 0
server_autojoin = "#kateos-pl"
server_autorejoin = on
server_notify_levels = ""
server_charset_decode_iso = "ISO-8859-2"
server_charset_decode_utf = "UTF-8"
server_charset_encode = "UTF-8"
# [koniec]
Od tamtej pory wszystko już sobie działało ;)

O mnie i o tym blogu

Cześć !

Mam na imię Janek. Postanowiłem pisać tego bloga, chociaż generalnie blogów nie lubię, aby podzielić z wami informacjami, które moim zdaniem gdzieś giną. Wiele drobnych informacji w dzisiejszym świecie unika. Każdy siedząc w zaciszu swojego domu używa jakiś programów i w jakiś sposób je konfiguruje. To często mozolna, kilkugodzinna praca. Trzeba jednak najpierw zdobyć jakieś wiadomości.

Czytanie w takim przypadku dokumentacji jest żmudne, HOW TO i FAQ nie zawsze odpowiada na wszystkie pytania i często działy te są wydumane. Dlatego pisząc tego blog-a chcę stworzyć taką luźną bazę informacji o tym co robię na komputerze i jak daję sobie radę z różnymi problemami. Czasami będzie to pewnie krótka notka o nazwie jakiegoś fajnego programu, który mi się spodobał, innym razem fragment pliku konfiguracyjnego.

W każdym bądź razie piszę to wszystko z nadzieją, że komuś chociaż część tych informacji się przyda.