Ostateczne rozwiązanie dla muzyki pod Linuksem.

W niedawnym wpisie szukałem czegoś, co potrafiłoby scrobble’ować do libre.fm i umiało odtwarzać radio internetowe i Jamendo. Jak to napisałem:

Ideałem byłoby coś, co potrafi scrobble’ować i radia internetowe, i dobrze obsługującego zwykłe albumy z dysku, i Jamendo. W sumie kolejność Jamendo -> radia -> albumy z dysku, bo jakoś nie jestem fanem trzymania wybranej kolekcji (co innego odtwarzacz).

Okazuje się, że się da (generalnie), co więcej, jest to bardzo proste, eleganckie i wydajne. Wykorzystać trzeba MPD (odtwarzanie), GMPC (sterowanie) oraz mpdscribble (scrobble’owanie; wspiera libre.fm, jamendo i last.fm jednocześnie). W Debianie (testing AKA Squeeze) wystarczy:

wajig install gmpc mpd gmpc-plugins mpdscribble

I zmiany w plikach konfiguracyjnych. Nieco bardziej użytkownikocentryczne i wymagające więcej pracy podejście jest opisane w tym wpisie, bardzo ładnie opisującym konfigurację mpd i mpdscribble, na który na szczęście szybko (w sumie od razu) trafiłem. Ja robiłem bardziej po debianowemu, z wykorzystaniem istniejących plików konfiguracyjnych, a nie per użytkownik. Zaleta taka, że prościej, mpd i mpdscribble wstają przy starcie systemu, od kopa, a z komputera i tak tylko ja korzystam.

Nie działa mi tylko – póki co – obsługa Jamendo (znaczy samej playlisty, scrobblera nie sprawdzałem, ale pewnie działa, bo to inny pakiet). Wygląda na jakiś błąd w pluginie do GMPC – zamiast utworów w playliście lądują fragmenty URLi. Ale wiem, że się da (tzn. pod Ubuntu działa).

Z dużych zalet – wygląda, że poprawnie scrobble’uje radio (przynajmniej opisane kiedyś Radio Baobab). No i jest leciutkie (jakieś 10% procesora dla radia), zwłaszcza w porównaniu z playerami webowymi libre.fm czy Jamendo. Jak dla mnie – miodzio. 🙂

CC czyli czarny czwartek.

Dzień, w którym wstajesz sobie spokojnie rano, zaparzasz kawkę i siadasz do kompa podziwiając piękne słoneczko nie musi wcale być taki fajny. Rzut oka na telefon, a tam jakieś nieodebrane. O siódmej rano. Z dyżurnego telefonu adminów! W liczbie 7!!!

No dobrze. Oddzwońmy. Okazuje się, że wywaliło serwer, na którym są wirtualki. Bywa. W zasadzie – kiedyś musiało się wydarzyć. Praktycznie wszystko jest dublowane, więc tak naprawdę nie działają tylko 2 usługi – jedna niekrytyczna a nawet nieistotna i jedna wewnętrzna (i nie do końca w naszej gestii).

A potem okazuje się, że to dzień, w którym to, co miało ratować – niszczy, B udaje, że nie stało się nic, są tacy, którym jest lepiej i tacy, którym jest gorzej, A załatwia niemożliwe (i w dobrej cenie!), zakupy można zrobić szybko w miejscach mało oczywistych, wydzielone dla poszczególnych usług klasy adresowe, które można wyroutować szybko gdzie indziej to Dobra Rzecz i wcale nie chodzi o jedną maszynę.

Na koniec dnia okazuje się, że to wszystko jednak potrwa, bo RAID to nie cudowne rozwiązanie wszystkich problemów z dyskami i czasem więcej z nim problemów, niż można by przypuszczać, a wszystko przedłuża się na piątek.

Myśl dnia: nic tak nie przygotowuje do usuwania awarii jak usuwanie awarii.

Dziwny problem z Javą i siecią w Debianie.

Z programów napisanych w Javie korzystam raczej rzadko (wyjątkiem jest bloxer2, którym od dłuższego czasu wrzucam tu wpisy), więc nie zauważyłem tego wcześniej. Debian w wersji Squeeze, Java z repozytorium (wersja 6.20-dlj-1).

Jedna ze stron nie mogła załadować appletu i rzucała:

load: class VncViewer.class not found
[różności] 
Caused by: java.net.ConnectException: Network is unreachable

Ta sama aplikacja nie działała wcześniej na samodzielnie robionej Javie od Sun, z kolei działała (i nadal działa) na różnych wersjach Javy w Debianie Lenny. Na szczęście coś mi świtało, że ogólnie jest problem z IPv6 w Javie, szybkie gógiel potwierdził, więc pozostało znalezienie, co trzeba zmienić. Dobrzy ludzie z IRCa pomogli (!java ipv6), więc przybliżę rozwiązanie.

Winne jest zmienione domyślne ustawienie dla IPv6 w Debianie Squeeze. Okazuje się, że błąd jest zgłoszony, a działanie sieci pod Javą przywraca (tzn. w części aplikacji, niektóre działają bez problemu) ustawienie w pliku /etc/sysctl.d/bindv6only.conf:

net.ipv6.bindv6only = 0