Witaj na blogu prowadzonym przez Sebana. Spisuję tutaj swoje uwagi na różny temat. Przeważają tematy związane z Internetem, popieranymi przeze mnie rozwiązaniami dotyczącymi wykorzystania komputerów, oraz kilka innych. Przeczytasz tu również recenzje książek IT.

RoR tickets

09 stycznia 2008 | Klucze: linux, programowanie, rails, ruby, Techblog
5 komentarzy. trackback

Nie dalej jak dwie godziny temu natrafiłem na problem pisząc dodawanie kontaktów w serwisie opartym o Ruby on Rails. Samo zadanie wydawało mi się raczej proste. HABTM z odwołaniem do samego siebie. Napisałem.
Nie działa. Poszukałem w ,,Rails recipes'' Chada Fowlera, tak samo. Przepisałem na wszelki wypadek. Nie działa. Nadszedł czas by popatrzeć głębiej.

W konsoli irb wpisuję User.find(3).contacts << User.find(6) zaglądam w log/developmeng.log i jakież wielkie było moje zdziwienie, gdy zobaczyłem
Dzięki pomocy Comboya z kanału #rubyonrails.pl trafiłem na zgłoszenie błędu 9774: HABTM inserts empty rows. Problem polegał na tym, że do nazywania kolumn używałem symboli zamiast Stringów. Po zamianie działa bez problemu.

Jednak dało mi to trochę do myślenia. Zgłoszenie nastąpiło ponad 3 miesiące temu. W Railsowym tracu priorytet zgłoszenia został zmieniony z dużego na mały. W ciągu tych 3 miesięcy, pojawiły się trzy wydania linii 1.2.x i pojawiło się wydanie 2.0.2 Railsów. A błąd nadal występuje. Nie próbowałem nigdy wczytywać się w źródła ActiveRecorda, ale to chyba nie jest jakiś błąd super trudny do usunięcia? Po premierze dwójki dało się przeczytać opionie, że RoR 2.0 to nic wielkiego. Wielu spodziewało się więcej zmian w kwestii domyślnego railsowego ORM. Chyba jednak praca nad ORM jest odłożona gdzieś na boczne tory. Mam nadzieję, że to się zmieni i ticketów będzie mniej.

Programy, których używam

24 listopada 2007 | Klucze: linux
1 komentarz. trackback

Pagenoare pochwalił się jakich programów używa. To i ja się pochwalę.

A do pracy to jeszcze używam:

  • Eclipse w pracy, Netbeans w domu
  • do tego dochodzi: Mysql, Ruby, Rails, Apache w pracy, w domu Lighttpd

Open Source

19 listopada 2007 | Klucze: linux, Ogólne
1 komentarz. trackback

At present, most of the people in the world have been using systems to protect their copyrights but in the last few yeras we are the witnesses of the powerful movement based on completely different principles: sharing ideas, works, etc, without expecting anywithning back.

Grafika zatytułowana Open Source, podpis znaleziony pod tą grafiką

Gedit z dopalaczem

14 września 2007 | Klucze: linux, Techblog
14 komentarzy. trackback

Dzisiejszy wpis będzie bardziej z kręgów linuksowych. Oglądając Railscasty bardzo spodobała mi się sprawność z jaką Ryan Bates operował edytorem TextMate. Postanowiłem zrobić sobie coś podobnego na Linuksie używając domyślnego edytora tekstu w Gnome Gedita.

Czcionka

Mi najbardziej do gustu przypadła czcionka Monaco. Można ten krój łatwo pobrać z internetu szukając frazy ,,monaco font''. O czcionkach pisał kiedyś już - Czcionki dla programistów: aby kod był czytelniejszy.

Kolory

Kolory jakie są używane w TextMate bardzo mi przypadły do gustu. Biała czcionka na czarnym tle, spokojne kolory wykorzystywane do kolorowania skladni specyficznej dla pliku. Kolory zabrałem z któregoś z gotowych zestawów ustawień dla Gedita. Był to albo gedittextmate, albo gedit-mate. Można właściwie wykorzystać gotowce i nie czytać już dalej.

Gedit like TextMate

Wtyczki

Gedita na już całkiem spory wybór wtyczek, warto sobie coś z tego wybrać. Ja opiszę te, które sam używam.

Class browser. Wtyczka umożliwa przeglądanie klas w plikach źródłowych ich metod i pól w bocznym panelu. Przydatne dla programistów

Lista znaczników umożliwa wstawienie gotowego do uzupełnienia szkieletu znacznika. Do wyboru znaczniki używane w XSLT, HTML, XUL jak również LaTeX (o tym dalej). Wtyczka ta dostępna jest standardowo z Geditem

Gemini. Zaznacza pasujące do siebie nawiazy, cuszysłowy, aposrtofy. Czasem tylko uda się wpisać podwójny zamykający nawias, ale poza tym działa fajnie.

Narzędzia zewnętrzne. Pozwala używać zewnętrznym programów. Np. przetrawienie właśnie edytowanego pliku za pomocą pdflatex, pozwala na używanie make. Ogólnie przydatny bywa. Również ta wtyczka jest jakoby w standardzie.

Przeglądarka plików. Wtyczka sprawia, że w bocznym panelu pojawia się drzewko z katalogami i plikami, wśród których można wybrać ten do edycji. Ta wtyczka jest w zestawie, ale jeśli komuś z jakiś względów się nie podoba to można wybrać Eddt. Wtyczka, której używanie według mnie jest konieczne.

Quick Highlightmode. Za pomocą kombinacji klawiszy Ctrl-Shift-H możemy wybrać styl podświetlania składni dla edytowanego pliku. Dla mnie bardzo fajna sprawa. Piszę sobie wpis na bloga ustawiam mu podświetlanie składni na HTML i wszystko wygląda ładnie.

SnapOpen. To jest wtyczka kopijuąca takie małe okienko otwierania pliku, z którego pomocą w szybki sposób mogę wybrać plik do edycji wpisując część jego nazwy. Pliki do edycji szukane są albo w katalogu z którego uruchomiliśme edytor lub w katalogu otwarym w panelu przeglądania plików. Zdecydowania fajna rzecz.

Snippets, czyli wstawki kodu. Coś absolutnie wspaniałego. Rzecz bez której nie wyobrażam sobie pisania jakiegokolwiek kodu. Za pomocą odpowiedniego skrótu lub przycisku Tab można wstawić do edytowanego dokumentu odpowiedni kawałek kodu np. szkielet konstrukcji if. Dużą ilość wstawek pryznoszą z sobą gotowe zestawy ustawień o których pisałem wyżej.

Gedit-LaTeX. To wtyczka przydatna tylko użytkownikom LaTeXa. Jeszcze z jej pomocą nie składałem większego dokumentu, ale wydaje się mieć spore możliwości. Przy najbliższej okazji napewno będę z niej korzysał.

Bardzo przyjemną sprawą może też być Auto completion plugin, dzięki któremu słowa były uzupełnianie za pomocą klawisza Tab. Ja go przestałem używać bo wciskanie tabulatora kolidowało czasem z używanymi wstawkami.

Tak jak chciał Night zrobiłem jakieś video z tego jak wygląda mój Gedit. Video nie jest najlepszej jakości. Można je zobaczyć w serwisievideo.google.com lub Gedit.ogg w formacie Ogg Theora.

Seban poleca Conduit

07 września 2007 | Klucze: linux, Techblog
3 komentarze. trackback

Masz konto na flickr, a nie wiesz jak przesłać tam swoje zdjęćia z f-spot? Nie chcesz do tego używać linuksowej Picasy (która według mnie wcale taka fajna nie jest)? Masz notatki w Tomboy na swoim pececie, ale chcesz mieć je jednocześnie na laptopie? Albo jeszcze lepiej, chcesz je mieć online w swoim ,,plecaczku'' na Backpackit. Albo chcesz zwyczajnie zsynchronizować swoje ~/documents z pamięcią USB, albo z laptopem, czy może znowu wysłać je w sieć na Box.net. Na te wszystkie pytania jest jedna krótka odpowiedź! A brzmi ona: Conduit!

Conduit

Czymże Conduit jest? to program synchronizujący docelowo wszystko ze wszystkim. Brzmi cudownie, ale ciągle brakuje pewnych rzeczy. Dokładnie możemy zobaczyć co da się synchronizować na stronie statusów. Na oficjalnych obrazkach Conduit widziałem jednak synchronizację ustawień Gnome, bardzo ciekawe. Ja już go używam jakiś czas synchronizowałem z jego pomocą sporo zdjęć z wakacji z serwisem Picasaweb, nie było żadnych problemów.

Może Conduit jeszcze nie powala możliwościami synchronizacji, ale za jakiś czas może mieć potężne możliwości. To co jest planowane na kolejną wersję można sprawdzić na liście do zrobienia Conduit. Szczególnie pożądana przeze mnie jest synchronizacja w dwóch kierunkach wpisów z Backpack z moim Tomboyem GTD.
program Conduit
Możliwości i kombinacji jest ... bardzo dużo. Ja mam kilka (większość na przyszłe wersje)

  • Zsynchronizować muzykę na Ipodzie, Odtwarzaczu MP3, z playlistą z Rhythmboxa. Może jeszcze jakaś synchronizacja z Jamendo?
  • Zsynchronizowanie wpisow z Joggera z jakimś katalogiem, każdy wpis to jeden plik tekstowy
  • Wspomniane wyżej ustawienia Gnome z inną maszyną poprzez sieć lokalną
  • Synchronizacja dokumentów Openoffice
  • Synchronizacja kontaktów w telefonie komórkowym z programem pocztowym lub Gmailem (lub czymś jeszcze innym)
Mało? To jaki Ty masz pomysły?

W obronie wolności

17 lutego 2007 | Klucze: linux
6 komentarzy. trackback

Richard Mathew Stallman kim jest pewnie każdy linuksiarz wie. Od niego się właściwie wszystko zaczęło. Jednak niewielu ludzi zna prawdziwą historię jak to było, w jaki sposób zaczęła się kręcić ta cała machina zwana GNU. Jest okazja by poznać to wszystko. Książka ,,W obronie wolności", której autorem jest Sam Williams została wydana przez wydawnictwo Helion. Jest czymś w rodzaju biografii Stallmana. Poczynając od wieku dziecięcego, poprzez studia, MIT, do chwili obecnej niemalże. RMS jest jej głównym tematem, ale książka mówi nie tylko o tej jednej osobie. Książka przedstawia całe społeczeństwo. Społeczeństwo hakerów - programistów, tworzących oprogramowanie na licencjach GPL. Książka raczej ciekawa, czasem śmieszna. Mnie najbardziej rozśmieszyła w momencie opisu wykładu Stallmana gdy występuje jako Św. Ignucy:

Jestem święty Ignucy z Kościoła Emacs - powiedział, wznosząc prawą rękę w geście szyderczego błogosławieństwa. - Błogosławię twój komputer, moje dziecko [...] Emacs został napisany jako zwykły edytor tekstowy - mówił Stallman, tłumacząc swój strój. - Z czasem stał się sposobem na życie dla wielu i religią dla niektórych. Nazywamy tę religię Kościołem Emacs”.

Książkę może przeczytać każdy, jest w stanie każdego zainteresować. Jeśli ktoś, tak jak ja, interesuje się Linuksem, GNU to powinien ją przeczytać. Może zrozumie więcej dzięki niej.

Helion również potraktował tą sprawę serio. Książka ,,W obronie wolnośći" kosztuje 34.90 zł, ale jest dostępna za darmo w postaci plików HTML na stronach wydawnictwa.

GTD według mnie

02 stycznia 2007 | Klucze: linux
4 komentarze. trackback

Jakiś czas temu postanowiłem, że zacznę zmieniać swoje życie. Przemian jest wiele i cały czas mają miejsce, ale nie o wszystkich będę tu pisał. W połowie grudnia ubiegłego roku zauważyłem, że jestem mimo wszystko niekonsekwentny i cholernie źle zorganizowany. Dlaczego mimo wszystko? Zawsze uważałem, że jestem dobrze zorganizowany i radzę sobie z życiem. Nigdy się nie spóźniałem, nie zapominałem o ważnych wydarzeniach ... Jednak uświadomiłem sobie jak wiele czasu tracę podczas pracy, czy nawet w domu. Jak często musiałem wstawać odchodzić od komputera bo czegoś zapomniałem z pokoju obok. Uznałem, że tego za wiele!

Już wcześniej używałem kalendarza w formacie iCalendar. Zapisywałem w nim informacje kiedy mam z kim spotkanie, kiedy jestem w szkole. Wiedziałem kiedy będę zajęty, co będę robił, kiedy mam czas by iść z kumplem na piwo, ale brakowało tam szczegółowych informacji. Najpierw zacząłem próbować z ,,żółtymi karteczkami Gnome", jednak one wydały mi się niepraktyczne i szybko przestałem ich używać. Zaraz potem zainstalowałem Tomboy, program do tworzenia krótkich notatek z możliwością wyróżniania WikiSłów. Zapisywałem tam notatki, ale nie specjalnie przywiązywałem do tego rolę. W sieci czytałem opinię bodajże Bartłomieja Dymeckiego, że lepiej jest zapisywać w formie papierowej. Tego również spróbowałem, faktycznie uważam, że papier jest lepszy! Zainteresowałem się również GTD, sama idea mi się spodobała. Próbowałem wielu programów wspomagających GTD, mam różne opinie na ich temat. Mi szczególnie przypadł do gustu Tracks. Po wypróbowaniu kilku programów przypomniałem sobie o Tomboyu i dobrze się stało.

Tomboy GTD

Wstukałem w Google szybko odpowiednie hasełko i okazało się, że nie ja pierwszy wpadłem na ten pomysł. Uznałem, że u mnie nazwy kontekstów rozpoczynać się będą od słowa At np. AtKomputer (mało to po polsku), ale rozważam powrót do tytułów w stylu @Komputer. Każde zadanie to akcja np. posprzątaj pokój (ład i porządek wokół mnie to kolejna zmiana którą wprowadzam). Zadanie opisuje czasem w dłuższy sposób, ale zawsze staram się nazwać notatkę-zadanie jak najkrócej, w opisie używam trybu rozkazującego, czasem zamieszczam również informacje do którego kontekstu akcja należy. Zbiór akcji (zadań) to projekt. Projekty nazywam wielkimi literami np. SESJA. Notatką-centrum jest INBOX, zapisane w niej mam akcje, projekty i konteksty. Rozważam porzucenie pomysłu z notatką INBOX ponieważ Tomboy daje możliwość oglądania wszystkich zapisanych notatek. Używam już tego systemu od pewnego czasu i póki co się sprawdza i mi pomaga.

Papier ponad wszystko

Jednak co gdy nie jestem przy swoim komputerze? Papier i coś do pisania, to jedyne rozwiązanie jak dla mnie w tej chwili. Używam do tego małych kartek (podobnych to tych żółtych samoprzylepnych) sprzedawanych w grubych bloczkach. Zapisuję sobie na niej najważniejsze zadania na kolejny dzień. Wykonam zadanie - skreślam je.
Dziś zapiszę tam kilka zadań na jutro. Mam nadzieję, że wszystkie będą skreślone do wieczora ;-)

Uzupełnienie

Kilka adresów, które mi się przydały

Crontab i skrypty Perla

27 listopada 2006 | Klucze: linux, programowanie
Dodaj komentarz. trackback

Jakiś czas spędziłem na pisaniu pewnego skryptu w Perlu. Skrypt sam w sobie raczej prosty i nic ciekawego o nim napisać nie mogę. Sprawa skąplikowała się gdy musiałem ten skrypt uruchamiać co jakiś czas. Naturalnym było dla mnie umieszczenie wywołania skryptu w crontabie. Na początku było zdziwienie, potem zaciekawienie, na końcu frustracja, że pomimo poprawnych wpisów skrypt się nie wykonuje. Troche poszukiwań w sieci dało mi odpowiedź. Cron nie loguje się jako użytkownik a tylko działa jako on (z jego prawami). W takiej sytuacji skrypt nie ma do dyspozycji odpowiednich zmiennych środowiskowych np. nazwy użytkownika, zmiennej PATH. Zatem skrypt nie mógł korzystąc z zewnętrznych programów, nie było mowy o poprawnym działaniu.

Rozwiązałem to w dość prosty sposób wykorzystując tablicę ENV. W niej są przechowywane zmienne środowiskowe takie jak $ENV{'PATH'}. Zmodyfikowałem początek skryptu dopisując $ENV{'PATH'} = "/bin:/usr/bin";. Zadziałało.

Gedit LaTeX Snippets

07 listopada 2006 | Klucze: latex, linux
5 komentarzy. trackback

O snippetach pisał już Patrys na swoim blogu, nie jest to żadna nowość. W edytorze gedit dostępna od dłuższego czasu. jako iż czasem sobie dłubię w LaTeXu postanowiłem dopisać trochę do ,,menadżera fragmentów kodu" w Geditcie kilka skrótów latechowych. Poniżej zamieszczam ich listę.

SkrótDziałanie
pol,,polskie" pakiety
begendbegin - end
bitdbibitem
chpchapter
ftsfootnotesize
huhuge
xhuHuge
itditem
larlarge
LarLarge
xlarLARGE
nsnormalsize
paraparagraph
parpart
ssscriptsize
secsection
smsmall
subsubsection
ssubsubsubsection
toctableofcontents
titiny

Trochę tego jest, mam nadzieję, że z czasem będzie więcej. W tej chwili nie mam pomysłu co jeszcze do tego dołożyć.

Do pobrania

  • plik z ustawieniami uzupełniania kodu
  • filmik pokazujący jak to działa
Plik latex.xml trzeba skopiować do katalogu ~/.gnome2/gedit/snippets/. Filmik był kręcony przy użyciu programu do robienia screencastów, nie wiem za pomocą jakiego kodeka go odtwarzać. :-)
Możliwe, że w Sieci jest już coś takiego dostepne. Nie wiem, nie szukałem.

I-węzeł

26 sierpnia 2006 | Klucze: linux
5 komentarzy. trackback

Na początku tygodnia miałem problem z brakiem miejsca na jednej z moich partycji. Problem nie byłby może aż tak wielki gdyby nie fakty, że partycja ta jest montowana jako ,,/``. Za nic nie mogłem sobie z tym poradzić przez dwa dni.

inode

I-węzeł (inode) jest to struktura danych opisująca pliki zapisane na dysku. I-węzeł zawiera informacje o: typie pliku, właścicielu, grupie, długości pliku, adresie, liczbie dowiązań i kilka innych informacji. Długość pliku to nic innego jak jego wielkość, ilość zajmowanego miejsca na dysku. Adres to numer sektora w którym znajduje się plik. Adresem są sektory dysku, w których należy szukać segmentów pliku (zwykle te sektory mają wielkość 512 bajtów). Liczba dowiązań jest to ilość skojarzonych ,,kopii" pliku ze zbiorem danych. Trochę dziwaczne, ale pokażę o co chodzi.
Najpierw utworzę plik, skopiuję go, a potem utworzę do niego dowiązanie symboliczne i twarde. seban@syrius:~/inode% touch plik
seban@syrius:~/inode% cp plik plik_kopia
seban@syrius:~/inode% ln -s plik symboliczne
seban@syrius:~/inode% ln plik dowiazanie
Tworząc plik skojarzyłem z inodem zbiór danych na dysku, plik jest pusty więc mało w nim tych informacji. Kopia jest to odtworzenie tych samych danych w innym miejscu - innym i-węźle. Kopia została skojarzona z innym i-węzłem i plik_kopia ma inny adres niż plik. Dowiązanie symbolicze jest to jakby skrót do pliku do którego tworzy się dowiązanie. Wszystkie operacje, edycja, zmiany będą odbywały się na pliku do którego prowadzi dowiązanie symboliczne. Główną różnicą jest ilość zajmowanego miejsca (dowiązanie symboliczne zajmuje 4 bajty), oraz fakt iż dowiązanie symboliczne zajmuje oddzielny i-węzeł. Dowiązanie twarde jest to taka kopia pliku, który zajmuje ten sam i-węzeł co plik z którym skojarzone jest dowiązanie. Sprawdzić ilość dowiązań można dzięki poleceniu ls -l -rw-r--r-- 2 seban seban 0 2006-08-26 19:15 dowiazanie
-rw-r--r-- 2 seban seban 0 2006-08-26 19:15 plik
-rw-r--r-- 1 seban seban 0 2006-08-26 19:15 plik_kopia
lrwxrwxrwx 1 seban seban 4 2006-08-26 19:16 symboliczne -> plik
Ilość dowiązań to liczba przed właścicielem, druga kolumna od lewej strony. By potwierdzić moje słowa o i-węzłach tych plików można zajrzeć w polecenie ls -i seban@syrius:~/inode% ls -i
1180218 dowiazanie 1180218 plik 1180407 plik_kopia 1180497 symboliczne
Są cztery pliki, trzy numery inodów. dowiazanie i plik mają taki sam numer i-węzła, plik_kopia i symboliczne mają inne numery swoich i-węzłów.

Problem

Mój problem polegał na tym, że polecenie df -h pokazywało prawie 700 megabajtów wolnego miejsca na partycji, a system nie mógł tworzyć nowych plików. Długo nie mogłem poszukać rowiązania, ale po wklepaniu polecenia df -i doznałem szoku. /dev/sda2 1.3M 1.3M 0 100% / Wszystkie węzły niemalże milion trzysta tysięcy były zajęte. Pozostało tylko poszukać niepotrzebne pliki, które zajmują inody.

Rozwiązanie

Chwilę szukałem po systemie i znalazłem w katalogu /var/spool/exim4 przyczynę braku i-węzłów. W katalogach input i msglog było łącznie ponad milion plików! Szczerze mówiąc to prawie się nie zastanawiałem co to za pliki i do czego są tam potrzebne. Po usunięciu plików z tych katalogów pojawiło się więcej miejsca na dysku i dużo więcej wolnych i-węzłów.
Napisałem sobie skrypt, który wyszukuje katalogi z największą liczbą plików, oraz wyszukuje puste pliki i katalogi. Skrypt jest ogólnie dostępny i można go dowolnie używać.