Michał Moroz

Abecadło smoczątka, dziennik niecodzienny

Linki w ekg2

Korzystanie z linków przesyłanych do ekg2, szczególnie, jeśli komunikator uruchomiliśmy na serwerze i łączymy się z nim poprzez ssh, jest dość niewygodnym zadaniem. O ile korzystając z iksowego terminala możemy zaznaczyć i przekopiować linka (bądź skorzystać z natywnej obsługi w gnome-terminal, czy modyfikacji rxvt), to przy używaniu komunikatora poprzez framebuffer console (czy ma to określenie jakąś polską nazwę?) musielibyśmy przepisywać linki ręcznie, a nie o to nam chodzi.

Z pomocą przyjdzie nam jak zwykle Python, w którym napiszemy prosty wykrywacz przesyłanych nam linków, oraz program urlview napisany przez Michaela Elkinsa, który pozwoli wyświetlić je w banalnie prostym interfejsie opartym na ncurses i uruchomić je za pomocą dowolnej przeglądarki.

Skrypcik znajdzie się tutaj - wszystko co robi, to sprawdzanie za pomocą prostego wyrażenia regularnego, czy w danej wiadomości znajduje się link; jeśli tak, zapisuje go do ~/.ekg2/links.

Następnie edytujemy plik ~/.urlview i wpisujemy tam sposób uruchamiania naszej najlepszej przeglądarki:

Opera (na workstacji):
COMMAND opera -newpage %s
Elinks (na serwerze):
COMMAND elinks %s

Ustawienia te są przykładowe - dla elinksa możnaby postarać się o uruchamianie przeglądarki w nowym oknie screena, o ile nie jest już uruchomiona, w przeciwnym przypadku otwierać tylko nową kartę.

urlview ma jedną, bardzo wielką zaletę - żaden wyświetlony w nim link się nie powtarza - więc gdy dostaniesz dziesięć powiadomień na Joggera, w programie zobaczysz nadal tylko jeden link.

Teraz już wystarczy uruchomić odpowiednie polecenia:

Aby uruchomić urlview na workstacji:
$ ssh serwer cat ~/.ekg2/links | urlview
Aby uruchomić urlview na serwerze:
$ urlview ~/.ekg2/links

Wypadało by także co pewnien czas, na przykład co tydzień lub co miesiąc czyścić plik ~/.ekg2/links.

Zobacz komentarze Trackback dodajdo.com Zobacz pełne metadane

Python a JavaScript

Widząc Pythona o raz za dużo, można się rozleniwić i zacząć żądać wszędzie upraszczających pisanie struktur, funkcjonalności i filozofii. Cóż, każdy dobrze się czuje, gdy podsuwają mu talerz z ciepłym jedzeniem pod nos, potem przykrywają kołdrą i nucą kołysankę. ;)

Inna rzecz, że potrafi być zdradziecki, jak to wąż, a na pięćdziesiąt linijek kodu czterdzieści osiem zajmuje sprawdzanie możliwych błędów. Dwie pozostałe wystarczą, aby wyprasować, pościelić i zawiązać krawat. W wypadku, gdy nie chce nam się pisać tych czterdziestu ośmiu linijek i gdy przypadkiem zawieruszy się gdzieś nasz krawacik - program z godnością wystrzeli w kosmos. Nie dziwmy się więc, że na księżycu dużo dziur.

Przechodząc do spraw bardziej przyziemnych: po raz kolejny poprawiając skrypcik odpowiadający za robienie skrótu komentarzy doszedłem do momentu, gdzie przydałaby się możliwość wywoływania funkcji z domyślnymi argumentami. Metoda prób i błędów wykluczyła najbardziej logiczną i naturalną składnię. Albo twórcy chcieli być koniecznie odrębni, albo w JavaScripcie nie ma takich możliwości. Tak, czy siak, marudzę. Ale po Pythonie - nawet w takiej mikrej ilości jak moja - jest to normalne.

Zobacz komentarze Trackback dodajdo.com Zobacz pełne metadane

Zsamplować /dev/urandom

Chyba każdy, kto zajmował się Linuksem przez pewien okres czasu zna jedno z nietypowych sposobów wykorzystania generatora pseudolosowego /dev/urandom do wytwarzania białego szumu.

Dla przypomnienia - kod najczęściej wygląda tak:
cat /dev/urandom > /dev/dsp

W moim przypadku wynikła jednak nieco inna potrzeba - potrzebowałem plik wave z zapisem tego szumu, miast słuchania go w wolnej chwili.

Jakoś nie widziało mi się bawienie się w czytanie specyfikacji formatu wave i ręczne wpisywanie nagłówków do pliku. Nie, jeśli chodzi tylko o chwilę rozrywki. Tak więc potrzebowałem prostego sposobu, który nie będzie sprawiać dużo kłopotu.

Z pomocą przyszło Google i Python. Okazuje się, że w pliku README biblioteki pyao opisano krok po kroku, jak to zrobić.

Wystarczy urpmi pyao (w innych dystrybucjach, niż Mandriva możliwe, że konieczna będzie ręczna instalacja pakietu - jednak w wypadku Pythona proces ten jest jeszcze łatwiejszy, niż w paczkach stworzonych przy pomocy autotools) i już możemy zgrywać szum do pliku.

Uruchamiamy shell Pythona i wpisujemy:
>>> import ao
>>> dev = ao.AudioDevice('wav', filename = 'myoutput.wav')
>>> f = open('/dev/urandom', 'r')
>>> data = f.read(1024*1024*8)
>>> dev.play(data)
Zamykamy shella.

8MiB to około 48 sekund szumu. Można się domyśleć, że i rozmiar pliku będzie niewiele większy.

Zobacz komentarze Trackback dodajdo.com Zobacz pełne metadane

Skype - otwórz się!

Po ofensywie Google z GoogleTalk, Skype nie czekało długo na odpowiedź. Skype opens its platform to the web. Ciekawe, co na to konkurencja?

Ładnie to wygląda, dokumentacja, specyfikacja. Jest nawet klient w Pytonie pokazujący sposób korzystania z ich API (pod Linuksa oczywiście). Miło, będzie na czym zawiesić oko. :)

Zobacz komentarze Trackback dodajdo.com Zobacz pełne metadane

Python

To jednak fajny język, skoro można go podstawowo opanować prawie bez czytania manuali. ;]

Zobacz komentarze Trackback dodajdo.com Zobacz pełne metadane
Na górę
Reklamy Google