Telewizja N (nc+) i python

Aby się przeklikać przez program na http://n.pl/ i jeszcze znaleźć interesujący program, to jest ponad moje siły.

Napisałem więc na szybko narzędzie działające w shellu, które pozwala przeglądać oraz przeszukiwać program ze strony n.pl https://github.com/onjin/ntv/.

vim + vundle plugin manager + programming

Kilku znajomych chciało zacząć używać vim'a. Ale konfigurowanie go na starcie, dobieranie pluginów, instalowanie ich, gdy się jeszcze nic nie wie tylko chce się spróbować zazwyczaj powodowało przełożenie tej próby na 'kiedy indziej'.

Niedawno poznałem i zacząłem używać plugin manager'a https://github.com/gmarik/vundle i sam potrzebowałem szybko przenieść konfigurację na drugi komputer i na laptopa. Zazwyczaj używałem dropbox'a i podlinkowanego pliku .vimrc oraz całego katalogu .vim ze wszystkimi pluginami.

Jednak używając plugin managera, którego konfiguracja znajduje się w .vimrc pozwala teraz posługiwać się jedynie plikiem .vimrc. Zgodnie z programistyczną zasadą 'jak masz coś zrobić więcej niż 2 razy, napisz program' powstał mały skrypt + podstawowy .vimrc pozwalający szybko uruchomić vim'a skonfigurowanego pod programowanie w ciągu kilku minut.

  • https://github.com/onjin/vim-startup

Jak na razie przydało się mi i kilku innym osobom :) . Plik .vimrc jest oczywiście przykładowy i jak już sobie poużywasz vim'a i zdecydujesz się go poznać lepiej wtedy po kolei skonfigurujesz go pod siebie.

Grooveshark currentSong.txt + gajim status

Przy okazji szukania API do grooveshark'a odkryłem plik currentSong.txt, który jest tworzony przez Grooveshark Desktop.

Kilka minut z vim'em i mamy skrypt napisany w python'ie, który odczytuje w/w plik i wrzuca informację o aktualnie odtwarzanym utworze jako status wybranego konta w gajim'a.

Skrypt umożliwia także uruchomienie go w trybie monitorowania w/w pliku (wymana pyinotify). Wtedy nasz status będzie zmieniany w chwili (chwilę potem :) ) zmiany utworu w Grooveshark Desktop.

Całość można dowolnie używać/modyfikować, a pobrać można z serwisu github.com:

Do działania wystarczy nam plik grov2gajim.py. Umieszczamy go gdzieś na dysku i możemy używać.

vim snippetsemu i liquibase

W ostatnim wpisie pisałem o snippetsEmu dla vim'a, a dziś załączam xml_snippets.vim, których używam przy pracy z liquibase.

Liquibase to całkiem miłe narzędzie napisane w Javie do śledzenia, zarządzania i wprowadzania zmian w bazach danych. Zmiany opisuje się w pliku (plikach) xml i wpisywanie oraz pamiętanie tej składni można sobie uprościć przy pomocy vim'a i snippetów.

Snippet umieszczamy razem z pozostałymi, najczęściej w .vim/after/ftplugin/.

Najprościej zacząć otwierając np. migration.xml, wpisując lhelp i wcisnąć TAB. Otrzymamy małą pomoc i możemy zaczynać wpisywać kolejną migrację :)

best vim plugins

Dziś robiłem porządki w ~/.vim/ . Aktualizacje do nowych wersji pluginów, wyrzucanie nieużywanych, porządki w ~/.vimrc. W trakcie tej pracy powstała lista pluginów, dzięki którym miło mi się pracuje

vimball

Plugin zajmujący się pluginami dostarczanymi w paczkach .vba i pozwalający też takie paczki tworzyć, w praktyce potrzeby mi by instalować paczki .vba

snippetsEmu

Emuluje zachowanie snippetów z TextMate. Na przykład w pliku sometest.py wpisujesz 'for<tab>', uzupełniasz brakujące miejsca poruszając się klawiszem <tab> i otrzymujesz pełną pętle. Inne użyteczne snippety dla pythona to:

  • prop - property
  • get - def get_..
  • set - def set_..
  • def - def ..
  • cm - classmethod
  • cl - class
  • ifn, ifmain, sb, sbu, sbl1, trye, tryf, tryef, unittest

Domyślnie dostarczone są 32 zestawy snippetów dla wielu języków programowania, opisu oraz frameworków (django, rails, symfony)

neocomplcache

System tzw 'dopełniania' (podpowiadania) i to właśnie robi. Dopełnia nazwy metod, funkcji, atrybuty html, nazwy plików, itp. Trzeba po prostu zobaczyć i używać.

project

Bardzo prosty i skuteczny system pozwalający w bocznym oknie przeglądać wybrane lub wszystkie pliki z jednego lub wielu projektów. Każdy projekt ma zdefiniowany katalog, dzięki czemu otwarcie pliku z projektu (wciskamy 'enter' bedąc 'nad' plikiem) nastąpi równocześnie z przejściem do katalogu projektu. W ten sposób pliki projektu jak np 'tags' (ctags) zostaną poprawnie wczytane.

simple pairs

Proste dopełnianie dla ", ', {, (, [ . Wpisanie znaku otwierającego powoduje automatyczne dopisanie znaku zamykającego. W przypadku {, (, [ gdy sami wpiszemy znak zamykający, nie zostanie on zdublowany. Kursor po prostu przesunie się dalej. Dla ", ' zostanie jednak stworzona kolejna para. Krótkie i skuteczne.

vcscommand

Plugin pozwalający wykonywać komendy dla CVS, SVN, SVK, git, bzr, and hg przy pomocy vim'a. Jeden zestaw komend bez względy na system kontroli wersji.

Niewiele tego, ale te pluginy, git (post/pre hooki), bash + zestaw skryptów wystarcza mi do pracy :)

git php syntax check pre-commit

Załączam używany przeze mnie i sprawdzający się pre-commit dla git'a sprawdzający commitowane pliki .php.

Przy wykonaniu commit w repozytorium skrypt dla każdego commitowanego pliku '.php' wykonuje 'php -l' w pętli, aż otrzyma odpowiedź, że składnia jest ok lub nie ok. Przypadku wystąpienia błędy przerywa commit. Sam skrypt napisany jest w python'ie

Dlaczego w pętli? Dlatego, że 'php -l' losowo się urywa zwracając SIGFAULT i należy wtedy powtórzyć próbę z '-l'

Plik do pobrania:

devhelp + django 1.1

Ostatnio biegałem z lapkiem po centrum handlowym i łapałem wifi, żeby spojrzeć do dokumentacji django. I tylko się nabiegałem :).

Aby drugi raz pracować nie biegać w domu szybko podłączyłem dokumentację django do devhelp i tak na szybko procedura:

apt-get install devhelp

mkdir -p ~/bin; cd ~/bin
wget http://htmlhelp.googlecode.com/svn/trunk/misc/devhelp-install
chmod +x devhelp-install

cd ~/; wget http://onjin.net/files/django1.1-doc.tgz 
/bin/devhelp-install ./django1.1-doc.tgz

Teraz wystarczy uruchomić devhelp'a i cieszyć się offline :)

django1.1-doc jest ściągnięte z .chm i potraktowana hhconvert.py do formatu devhelp'a)