Jakiś czas temu, pisałem o ficzerach w świecie otwartego oprogramowania, na które bardzo czekam. Chyba czas odświeżyć tę listę.

Na początek, omówienie, co działo się z uprzednio wymienionymi ficzerami:

  • BTRFS - jest, śmiga już całkiem nieźle w porównaniu do innych systemów plików, pozostało czekać na online fsck którego jeszcze brakuje
  • glitch-free w PulseAudio - jest, działa
  • obsługa RGBA (przezroczystość) w Gnome - jeszcze czekam
  • X Input 2 w X - jeszcze czekam, ale jest już tuż tuż.
  • Kernel Based Modesetting - zasadniczo jest, ale w serownikach Nvidii się raczej nie doczekam :(
  • OpenGL 3.0 w Nvidii - jest
  • Następny OpenGL - (4.0) jest i spełnia oczekiwania :)
  • Google Chrome pod Linuksa

Myślę, że jak na projekty Open Source, jest to całkiem niezły wynik. Może część rozwija się dosyć wolno (najbardziej chyba X Input 2), ale postępy są całkiem zadowalające.

No i oczywiście doszły nowe ficzery na które czekam:

  • Gnome 3 - początkowo nie byłem specjalnie zachwycony, ale po obejrzeniu filmiku prezentującego Gnome Shell, myślę że może to być wynalazek na miarę krojonego chleba :).
  • Wayland - czyli coś co może (ale nie musi) zastąpić w przyszłości Xy. Nie czekam jakoś z wywieszonym jęzorem, ale ciekawe może być w co ten projekt się rozwinie i co z niego wyniknie.

Tyle na razie. Będzie ciekawie :)

3 komentarze

Przyznam że nieco mnie to zaskoczyło:

Przeklęte kłamstwa o gnome

Dodaj komentarz

Zacznę może od tego, że Linuksa używam na co dzień, na desktopie i mój komputer nie ma zainstalowanego innego systemu operacyjnego. To, po to, aby mnie opacznie nie zrozumiano.

W wszelkich dyskusjach na temat bezpieczeństwa Linuksa, przewija się fakt, niewielkiej penetracji rynku, a przez to, w porównaniu z najpopularniejszym dziś systemem, ilości użytkowników.

Wielu 'fanboyów' Linuksa, obrusza się w tym momencie, że to nie ma znaczenia, że Linuks z definicji jest bezpieczniejszy i że to właśnie jest najważniejsze

Jest to pogląd z gruntu błędny. Owszem - Linuks jest 'z definicji' oraz 'z implementacji' bezpieczniejszy od Windows, lecz bezpieczeństwo systemu to nie tylko same mechanizmy - lecz też zachowanie użytkowników. To że jądro systemu jest super-hiper-duper bezpieczne, nic nie da, jeśli użytkownik siedzący przed ekranem nie odróżnia worda od excela od trojana. Owszem, może trojan/wirus nie będzie miał uprawnień administratora, ale powiedzmy szczerze: po co, w dzisiejszych czasach, jakiemukolwiek złośliwemu oprogramowaniu uprawnienia administratora? Wystarczy odpowiednio dołączyć się do środowiska użytkownika i już można rozsyłać spam, ddosować, czy szukać innych ofiar.

Dlatego powiedz mi - ty - zaawansowany użytkowniku Linuksa, ile razy:

  • sprawdzałeś ostatnio swój bashrc (lub inny skrypt ważny dla twej powłoki)?
  • sprawdzałeś listę usług startowanych przez gdm/kdm/xdm?
  • skompilowałeś i zainstalowałeś jakiś program ze źródeł bez sprawdzania zawartości?
I teraz odpowiedz sobie na pytanie: czy uważasz że twój system jest bezpieczny tylko dlatego że nie używasz Windowsa?

21 komentarzy

Leonard Pottering, nie dość że zepsuł dźwięk pod linuksem, to teraz bierze się za zepsucie procesu startowania systemu (i wielu innych rzeczy), w formie nowej usługi zarządzającej startem systemu: systemd.

Celem projektu, jest stworzenie usługi która pozwoli jeszcze bardziej przyśpieszyć start systemu. Bierze kilka idei z Upstarta (którego jednak Leonard określa, jako z gruntu źle zaprojektowanego), dodaje kilka innych, wziętych między innymi a launchd (usługi startowej w MacOS X) i jeszcze parę innych pomysłów.

Co jest takiego ciekawego w systemd? Odpowiedź krótka: poza opisanymi wyżej cechami, systemd, podczas uruchamiania systemu (oraz później) działa podobnie jak inetd, lecz sposób działania inetd, rozciąga na startowanie usług systemowych.

Odpowiedź dłuższa: największą bolączką startu systemu (i czasu jaki to zajmuje) jest fakt że startowanie jednych usług czeka na inne. Wszystko (prawie) czeka na syslogd, jedni czekają na avachi, inni na cups, itd. Oczekiwanie jest to realizowane poprzez sprawdzania istnienia konretnych socketów (np.: /var/run/cups/cups.sock). To co robi systemd to tworzenie tych socketów przed wystartowaniem usług, a później, w momencie próby pierwszego skorzystania z nich - wystartowanie odpowiedniej usługi i przekazanie jej zadania (to samo można zrobić przez DBus, i na to systemd jest także przygotowany).

Co to daje? Po pierwsze: nie musimy opisywać zależności pomiędzy usługami (co jest bolączką innych usług startowych np. Upstarta). Zależności niejako 'wykluwają' nam się w trakcie. Po drugie: podczas startu systemu możemy uruchamiać wszystko 'równocześnie' - dzięki czemu zmniejszymy wzajemne oczekiwanie na siebie różnych usług a przez to lepiej wysycimy IO.

Oprócz tego, systemd robi wszystko to, co potrafi Upstart, oraz tradycyjny sysvinit. Dodatkowo w planach jest też zarządzani sesją (czyli coś co robi dziś gnome-session lub kde-session.

Wszystkim zainteresowanym, chcącym skrytykować, polecam przeczytanie oryginalnego artykułu, jest długi, lecz bardzo treściwy.

48 komentarzy

Kompilatorów C jest dookoła pod dostatkiem, C++ nieco mniej, ale też sporo. Co czyni jeden lepszy od innego?

Prędkość wygenerowanego kodu? Prędkość generowania kodu?

Nie, w dzisiejszych czasach, są to sprawy raczej pomijalne (poza oczywistymi wyjątkami). Są jednak inne, równie ważne cech które należy wziąć pod uwagę przy wyborze kompilatora.

Od kiedy używam gcc - zawsze nieco irytowały mnie komunikaty błędów kompilatora (wynikające z popełnionych przeze mnie błędów składni). Oto jednak nadszedł Clang, który sprawą zajął się na poważnie: niedowiarkom polecam przeczytanie http://blog.llvm.org/2010/04/amazing-feats-of-clang-error-recovery.html. Jak dla mnie bomba, i nie wiem jak wy, ale ja się przesiadam i rozpoczynam cichy lobbing dookoła :)

6 komentarzy

Zakupiłem (tanio bo w promocji) urządzenie wielofunkcyjne HP. Drukarki jeszcze pod Linuksem nie zażyło mnie się używać, tak więc trochę się obawiałem jak to będzie działać.

Jak się okazało, moje obawy były zupełnie bezpodstawne - drukarka zadziałała, nie musiałem instalować nawet pół sterownika. Trochę problemu miałem ze skanerem - ale z własnej winy - nie przeprowadziłem wstępnej kalibracji drukarki (który to proces zawiera skanowanie wydrukowanej strony testowej), i skaner nie chciał zadziałać dopóki tego nie zrobiłem. No bo po co czytać instrukcję obsługi :)

Ogólnie: wrażenia superpozytywne :)

Dodaj komentarz

Ponieważ do mojego monitora (Samsung Syncmaster 971P) producent nie zapewnia profilu ICC, przy pomocy pożyczonego (dzięki Konrad) kalibratora stworzyłem sobie takowy.

I tu mam zagwozdkę: czy można zmusić Xy do jego używania? W poszczególnych programach (Gimp, Inkscape) można, ale czy globalnie, w Xach można? Pobieżne szukanie Googli nic mi nie dało, więc prośba - jeśli ktoś coś wie - poproszę o informację.

P.S. Rzecz jasna, jeśli uda mi się to uzyskać - umieszczę tu opis.

5 komentarzy

W kontekście komentarzy do tego niusa. Normalnie ręce z klawiatury mi opadły i wiszą bezwładnie bo nie wiem co napisać o ynteligencji niektórych komentujących... :/

4 komentarze

Robiąc zakupy, zauważyłem że w Kolekcji Klasyki (tak nawiasem mówiąc - świetna seria, mam już z niej siedem tytułów) dostępny jest Prey w cenie 19.90 PLN. Ponieważ od pewnego czasu dostępna jest wersja pod Linuksa, grzechem byłoby przejść obojętnie i nie dokonać zakupu :)

Nie ma jednak róży bez kolców - linuksowy instalator nie za bardzo chce współpracować z wersją z Kolekcji Klasyki. Nie ma jednak takiego problemu którego nie dałoby się rozwiązać.

Na początek: wszystko musimy zrobić przy użyciu terminala. Niestety nie da się tego wyklikać myszką. Jeśli jest to dla Ciebie problem, zwróć się do sprzedawcy ;)

Pierwszy problem leży po stronie instalatora. Jeżeli mamy ustawione polskie ustawienia językowe, nie będzie on działał poprawnie.

Musimy więc, tymczasowo, zmienić te ustawienia. Robimy to następującą komendą:

$ export LANG=C

Teraz teoretycznie powinniśmy (z tego samego terminala) uruchomić instalator. Nie tak szybko! Wersja z Kolekcji Klasyki różni się od ogólnie dostępnej, i instalator jej nie rozpozna. Aby to obejść, musimy zastosować następującą sztuczkę: najpierw zainstalować grę w Windows/WINE, a potem użyć tej zainstalowanej wersji jako źródła dla instalatora linuksowego.

Po zainstalowaniu gry pod WINE (nota bene moglibyśmu już grać, bo Prey pod WINE sprawuje się idealnie. Nie po to jednak Icculus męczył się nad linuksową wersją żebyśmy teraz dali za wygraną), musimy użyć linuksowego instalatora z następującymi parametrami:

$ ./prey-installer-12072008.bin --from-install --media 'sciezka_do_zainstalowanej_gry/base'

U mnie wyglądało to tak:

$ ./prey-installer-12072008.bin --from-install --media '/home/adamk/.wine/drive_c/Program Files/Kolekcja Klasyki/Prey/base'

Po zainstalowaniu gry linuksowym instalatorem, możemy bezpiecznie usunąć wersję pod Windows, nie będzie już potrzebna. Następnie możemy oddać się zabijaniu kosmitów :)

7 komentarzy

Szerokim echem, po internecie, rozchodzi się wypowiedź Linusa Torvaldsa o tym że przesiadł się z KDE na Gnome. Na forach i blogach trwają dyskusje na temat wyższości jednego środowiska nad drugim (stronnicy KDE wydają się być bardziej agresywni) oraz implikacji wyboru Linusa. Mnie się zaś kołacze po głowie pytanie: 'I co z tego?'

Zacznę od tego, że ustawię siebie względem linii demarkacyjnych. Na co dzień używam Gnome. Nie stronię jednak od aplikacji KDE - używam między innymi K3B, Amaroka oraz SMPlayera. Gnome jako środowiska używam bo bardziej mi odpowiada, zaś konkretnych aplikacji - z dokładnie tego samego powodu.

Co z tego?

No zasadniczo chyba nic. Jako świadomy użytkownik, dokonałem świadomego wyboru. Linus, osoba tak ze 100000^e razy inteligentniejsza ode mnie, też dokonał świadomego wyboru. Czy oznacza to jednak że któreś z tych środowisk jest lepsze lub gorsze? Jakimi kryteriami powinniśmy się posłużyć przy dokonywaniu oceny?

Możemy wymyślić setki metryk, kryteriów i sposobów oceny. Najważniejsze jest jednak to, jak dane środowisko odbiera użytkownik. To, zaś jest bardzo trudne do jednoznacznego zmierzenia. Moglibyśmy określić sobie 'grupę docelową' (tak jak to się robi w 'profesjonalnym' marketingu) i przeprowadzić test na reprezentantach tej grupy. Z produktami darmowymi, problem polega na tym że nie definiuje się takiej grupy, grupa ta definiuje się sama z osób które dokonują takich a nie innych wyborów.

No i tak, nieco bokiem doszedłem do meritum mego wywodu: z tego że pan Linus T. używa KDE czy Gnome nie wynika nic, bo użytkownicy tych środowisk dzielą się na dwie grupy:

  • tych co dokonali świadomego wyboru
  • niedzielnych użytkowników, za których wyboru dokonał ktoś inny - a oni i tak nie są w stanie go zmienić

Tak więc, obywatela Torvaldsa prosimy o nie sianie niezdrowej sensacji, a resztę obywateli o rozejście się ;)

P.S. A Gnome i tak jest lepsze od KDE :D

7 komentarzy

Przeglądając podprojekty Gnome, wpadłem na BillRemindera. Wejdźcie tam, kliknijcie w Download i.... fajne nie? Ciekawe tylko jak z dostępnością takiego rozwiązania dla czytników dla niewidomych. Ale ogólnie, mnie się spodobał taki patent.

11 komentarzy

Nie wiem specjalnie czemu, ale świat oprogramowania FOSS to, przynajmniej dla mnie, oczekiwanie na ficzery. Rozwijając: co jakiś czas pojawiają się zapowiedzi nowych programów, ich możliwości i tym podobnych. Tak było np. z rozszerzeniem composite w Xach, tickless linux kernel i wielu innych których niepotrafię w tej chwili wymienić, bo po prostu przeszły już do porządku dziennego.

Oto lista rzeczy na które obecnie są dla mnie takimi killer ficzerami na które wytrwale czekam:

  • BRTFS - system plików sponsorowany przez Oracle. Szczególnie czekam na szybkie fsck i online fsck.
  • glitch-free w PulseAudio (a konkretnie kiedy się pojawi w Ubuntu)
  • obsługa RGBA (przezroczystość) w Gnome
  • X Input 2 w X (bo pozwoli to na rozwiązanie pewnych problemów z myszą w WINE). Bujają się z tym już długo, a właśnie dowiedziałem się że nie wejdzie do wydania 1.6 :(
  • Kernel Based Modesetting - a szczególnie w binarnych sterownikach Nvidii
  • OpenGL 3.0 w Nvidii
  • Następny OpenGL - i żeby było w nim to co miało być w 3.0 ale się w nim nie znalazło
  • Google Chrome pod Linuksa

To taka krótka moja prywatna, zrobiona na szybko lista.

3 komentarze

Patrząc dziś na w miarę zwykłego, Linuksowego desktopa, widać spore zatrzęsienie maszyn wirtualnych. Jest Perl, Python, Java, Mono, Flash, Ruby, PHP... jeśli coś pominąłem to nawet dobrze.

Zaletą Open Source jest różnorodność, ale nie przesadzajmy. Wymieniłem kilka maszyn wirtualnych. Normalny użytkownik w jednym momencie ma w użyciu powiedzmy dwie, trzy. Mnie się zdarza mieć wszystkie (wymienione). Oznacza to, że potrzebuję mieć w pamięci biblioteki, dynamiczne rekompilatory i inne takie dziwne narzędzia od sześciu różnych maszyn wirtualnych przez co okazuje się że 2GB pamięci to wcale nie jest dużo.

To czego potrzeba, to Uniwersalna Maszyna Wirtualna, zdolna do uruchomienia wszystkiego co nam się zamarzy. Robi się kroki w tym kierunku: pod JVM mamy JPythona, pod CLR mamy całkiem sporo języków (ale zasadniczo muszą być 'koncesjonowane'), Parrot (VM dla Perla 6) obsługuje już naprawdę wiele języków. To czego brakuje, to złożenia tego wszystkiego do kupy, najlepiej w formie eksperymentalnej dystrybucji Linuksa. To napewno nie będzie działać od razu idealnie, ale myślę że potencjalne zyski są tego warte, bo jak widzę że zjada mi kolejne 100MB pamięci na jakąś pierdółkę to krew mnie powoli zalewa. Zapewne nie będzie to proste, stworzyć VM idealnie nadającą się do wszystkiego. Nic nie szkodzi jednak spróbować.

Nie jestem specjalistą od VM, ale wielkie nadzieje pokładam w Parrocie. Projekt ciekawy, zobaczymy co z tego wyniknie.

25 komentarzy

Deweloperzy Debiana dołożyli do dystrybuowanej przez siebie wersji OpenSSL dziurę która powodowała że klucze kryptograficzne tworzone przez ich oprogramowanie są łatwe do odgadnięcia.

Co najlepsze, deweloperzy ci myśleli że poprawiają błąd w oryginalnych bibliotekach.

Gromy się na nich za to posypały.

Mnie się wydaje że wina leży jednak po stronie deweloperów OpenSSL a nie Debiana. Dlaczego?

Dziura o której mowa, opiera się o nieinicjowanie fragmentu pamięci. Oryginalne OpenSSL wykorzystuje to że jej zawartość jest pseudolosowa. Debianowcy poprawili to, inicjując ten fragment pamięci. Zrobili to, ponieważ używanie niezaincjalizowanej pamięci jest źródłem wielu błędów i w 99.999999% przypadków błędem popełnionym przez programistę. Ba, niektóre języki nie pozwalają używać niezaicjalizowanych zmiennych (C#) właśnie dlatego że to częsty (i zazwyczaj trudny do znalezienia) błąd. Istnieją specjalne programy analizujące kody źródłowe w celu wyłapania właśnie takich błędów.

Dlatego deweloperzy OpenSSLa bezwzględnie powinni dodać w kodzie odpowiednie komentarze krzyczące głośno: TO NIE BŁĄD, MY TO ROBIMY SPECJALNIE. To że tego nie zrobili to ciężki grzech, zaniedbanie i normalnie brak słów.

Oczywiście deweloperzy Debiana też zawinili. Taka poprawka powinna zostać popchnięta do deweloperów OpenSSL, aby ci mogli ją włączyć do własnego kodu, lub (w tym przypadku) odrzucić i wytłumaczyć co i jak. Tym niemniej jest to przewinienie znacznie mniejszego kalibru od tego co zrobili deweloperzy OpenSSL.

Parafrazując pewnego znanego łysola: KOMENTARZE, KOMENTARZE, KOMENTARZE!!!

5 komentarzy

Miałem dziś możliwość przetestowania PulseAudio w dwóch, dość nietypowych aspektach: poprzez sieć oraz pod Windows XP. Wniosek: to działa :)

Uruchomiłem kilka aplikacji pod Linuksem, a dźwięk wydobywał się ze stojącej obok maszyny Windowsowej (powód był prosty - do maszyny windowsowej były podłączone znacznie lepsze głośniki, a ich przełączenie to by była niezła zabawa). Wszystko działało w miarę bez zarzutu, jedynym problemem było przerywanie dźwięku kiedy maszyna Windowsowa dostawała obciążenie, ale dało się to załatwić zwiększając priorytet procesu PulseAudio na tej maszynie.

Ogólne wrażenie: bardzo pozytywne.

8 komentarzy

Gdzie DD to 'Domowy Deweloper'. Wiele osób pisze sobie różne rzeczy w domu. Mniejsze większe, nieistotne. Chyba każdy chociaż trochę doświadczony deweloper zna zalety systemów kontroli wersji. Problem w tym, że są one nieco kłopotliwe w użyciu - trzeba konfigurować serwer, dbać żeby działał, był dostępny, itp. Dla osoby niezorientowanej, konfiguracja CVSa czy SVNa może być cokolwiek problematyczna (tak, przyznaję się nie chciało mnie się czytać dokumentacji :P).

Takim właśnie deweloperom, chciałbym polecić ni mniej ni więcej tylko GITa, stworzonego przez Linusa Torvaldsa (znanego nieco szerzej z Linuksa, słyszeliście pewnie ;)), a obecnie rozwijanego przez zespół pod dowództwem Junio C Hamano

Główą zaletą GITa z punktu widzenia DD, jest fakt że nie potrzebuje serwera. Całość infrastruktura kontroli wersji jest utrzymywana bezpośrednio w miejscu gdzie stworzymy nasze repozytorium poleceniem git init.

Jak już utworzyliśmy nasze repozytorium, trzeba dodać do niego pliki. Zrobi to dla nas komenda git add .. Kiedy nasze pliki osiągną zadowalający nasz stan - możemy je 'pchnąć' używając komendy git commit

I to jest zasadniczo wszystko. Jak widać nie musieliśmy nic konfigurować. Po prostu tworzymy repozytorium i z niego korzystamy. Oczywiście to nie wszystko co potrafi GIT. Potrafi on o wiele więcej. Szczególnie polecany jest dla pracy grupowej, wieloosobowej z używaniem wielu gałęzi, łączeniem ich, itp. W końcu, GIT został stworzony na potrzeby jednego z największych projektów open source - jądra Linuxa. Więc jeśli w pracy męczą cię CVSem czy SVNem - zaprzyjaźnij się z GITem. Potem spróbuj przekonać szefa, przedstawiając mu potencjalne korzyści. Jakie? Może lepiej opowiedzą o tym twórcy GITa: tu i tu.

P.S. Taki mały side note: przy okazji poznawania GITa doszedłem do wniosku że dopiero przy tym projekcie objawił się w pełni geniusz inżynierski Linusa. Linux jako taki nie jest aż takim (w kontekście roli którą pełni w nim Linus) wyzwaniem. Po GITcie widać że Linus ma naprawdę bardzo dużo materii szarej :)

12 komentarzy

Kiedy tylko pojawiają się informacje na temat PulseAudio, od razu podnoszą się głosy "Ale po co", "Ale jest przecież OSS", "Ale jest przecież ALSA", "Ale jest przecież Gstreamer", itd. itp. Osoby które tak mówią, nie rozumieją niestety jak powinno przebiegać (i czasami przebiega) przetwarzanie dźwięku w nowoczesnych systemach operacyjnych.

Ponieważ jeden obraz mówi więcej niż tysiąc słów, a ja jestem leniwy, zacznijmy od prostego schematu:

Obrazek

Obrazek ten przedstawia chyba najlepszy sposób przepływu informacji. To czego w nim brakuje, to sprzętu po stronie lewej i użytkownika po stronie prawej. Jeśli zrozumiemy o co w nim chodzi, to już (mam nadzieję) nie będzie w przyszłości głupich (nielogicznych) pytań. No to lecimy. Od prawej.

Nasz Zwykły Użytkownik (ZU) klika sobie w swojej ulubionej aplikacji na przycisk PLAY, aby odtworzyć swoją ulubioną, w pełni legalną, empetrójkę. Aplikacja, komunikuje się biblioteką multimedialną, i w największym uproszczeniu mówi: odtwórz TĄ empetrójkę.

Warstwa multimedialna bierze empetrójkę i dekoduje ją, tzn, przetwarza skompresowaną postać na postać nieskompresowaną. Postać nieskompresowana jest następnie przesyłana o serwera dźwięku.

Serwer dźwięku bierze to co dostał, i robi z tym kilka rzeczy. Jeżeli sprzęt nie obsługuje formatu dźwięku w którym został on dostarczony, przekształca go na format obsługiwany przez sprzęt. Dodatkowo, jeżeli sprzęt nie potrafi samodzielnie miksować kilku źródeł, robi to właśnie serwer dźwięku. Do tego, serwer dźwięku może dodać jakieś efekty specjalne takie jak zmianę głośności, echo, pogłosy, cokolwiek się użytkownikowi spodoba. Następnie przekazuje to do warstwy sterowników.

Warstwa sterowników bierze to co dostała i po prostu przesyła to do sprzętu. Jej jedynym zadaniem powinno być przedstawienie możliwości sprzętu w sposób jednoznaczny dla serwera dźwięku.

Oczywiście, to jest uproszczony schemat. Wiele aplikacji (np. gry) może opuścić warstwę multimedialną, bo czasami jej wykorzystanie nie ma sensu.

Dlaczego tak?

Bo tak :). Ale poważniej. Taka architektura daje nam wiele korzyści i może być naprawdę szybka. Nie jest to jedyna tego typu architektura, w sieciach jest podobnie. Faktyczny model TCP/IP to bodaj pięć warstw (albo cztery, nie pamiętam dokładnie), a idealny model teoretyczny ISO-OSI zakłada do siedmiu. I to działa, do tego całkiem szybko.

W wypadku dźwięku, główną zaletą jest separacja. Programista aplikacji czy bibliotek, nie musi się martwić o możliwości sprzętu. Przez co nie musi zapewniać u siebie dla przykładu konwersji pomiędzy różnymi formatami dźwięku (a mogą być różne częstotliwości, zapis ze znakiem i bez znaku, skala logarytmiczna lub liniowa...) którą bardzo łatwo zrobić... ŹLE. Przykładem jak tego nie robić jest alsowy dmix :).

W tym modelu, prawie cały ciężar zrobienia łatwych (no, niekoniecznie ;)) rzeczy dobrze spada na serwer dźwięku. Jedno miejsce. Cała ta separacja daje też dodatkowe korzyści. PulseAudio w założeniu jest wielosystemowe, tak więc programista używając go zapewnia swojemu programowi przenośność pomiędzy systemami/platformami za darmo.

Jak widać mamy sporo potencjalnych korzyści. Oczywiście, są też zagrożenia. Podstawowym zagrożeniem jest fakt, że jeżeli serwer dźwięku będzie kiepsko napisany, to całość zacznie się sypać. Tak jest dla przykładu z Esound, który może był dobry kiedyś, ale na dzień dzisiejszy nie nadaje się już prawie do niczego. Patrząc jednak na developerów PulseAudio, widać że znają się na rzeczy i co najważniejsze: potrafią przyznać się do błędu.

Tak więc, proszę już nie pytać "ale OSS, ALSA, (whatever)". Tak ma być, a wymyślili to ludzie którzy naprawdę wiedzą co robią.

48 komentarzy

Popełniłem program o nieskromnej nazwie HOI2 Save Saviour. Służy on do naprawiania/poprawiania sejwów gry Hearts of Iron 2. Wszystkich zainteresowanych, zapraszam.

Dodaj komentarz

Z dźwiękiem w Linuksie nie jest specjalnie dobrze. Nie chodzi mi o obsługę sprzętu - to co możemy dostać w sklepie jest zazwyczaj obsługiwane (schody zaczynają się przy niektórych bardziej profesjonalnych rozwiązaniach). Burdel panuje niestety od strony oprogramowania.

Od strony jądra mamy dwa podsystemy: ALSA i OSS. OSS jest rozwiązaniem w miarę uniwersalnym (w świecie Unixowym), lecz Linuksie jest przestarzały. ALSA zaś jest rozwiązaniem czysto Linuksowym. Oprócz tego mamy różne soundservery: Esd, aRts, Jack, NAS. Jakby tego było mało mamy kilka różnych bibliotek programistycznych do tego wszystkiego. Wszystkie systemy są ze sobą w różny sposób powiązane. Mamy kilka niezależnych frameworków multimedialnych (Gstreamer, Xine, Mplayer, Phonon). Żadne z tych rozwiązań nie nadaje się do wszystkich zastosowań, żadne nie daje użytkownikom dokładnie tego co chcą, mają różne funkcjonalności. No ale, przede wszystkim: o co w tym wszystkim chodzi?

Najniższą warstwą tego bałaganu jest podsystem jądra. Zapewnia on podstawowy dostęp do urządzeń dźwiękowych podłączonych do naszego komputera.

Następnie mamy serwer dźwięku. Serwer dźwięku pośredniczy pomiędzy aplikacjami a warstwą jądra. Zapewnia on różnorodną funkcjonalność (o tym dalej), a najważniejszą z nich jest miksowanie kanałów: jeśli nasz sprzęt (tzn. chipset muzyczny) nie umożliwia równoczesnego odtwarzania dźwięków z kilku źródeł, to właśnie zadanie spada na serwer dźwięku.

Nad tym mamy wspólna warstwę bibliotek, frameworków i aplikacji. Wspólną z punktu widzenia tej notki, dlatego nie będę się nią więcej zajmował.

O wadach podsystemów jądra (ALSA i OSS) już pisałem. Teraz coś o serwerach dźwięku.

ESD (Enlightened Sound Daemon) to chyba najstarsza część, obecnie, jak sugeruje nazwa ;) jest rozwijany przez projekt Gnome. Rozwijany to może za duże słowo. ESD jako taki ma palmę pierwszeństwa, a główną jego zasługą jest pokazanie jak serwer dźwięku pracować nie powinien. Głównym powodem powstania ESD było odgrywanie dźwięków interfejsu użytkownika. To zadanie wykonuje nawet nieźle, lecz zupełnie nie nadaje się i nie radzi sobie z dźwiękiem który ma być odtwarzany w czasie rzeczywistym, z niskimi opóźnieniami. Multimedia jeszcze sobie dają z nim radę, lecz gry czy VoIP już nie. Tak więc ESD raczej zwija się, niż rozwija.

aRts to serwer stworzony na potrzeby projektu KDE. Od lat nie rozwijany, porzucony i zarzucony. Wymieniłem go tylko z obowiązku wbicia szpili miłośnikom KDE: tak im też się niektóre rzeczy nie udają ;)

Jack to całkiem dobry serwer. Niestety jest przeznaczony głównie dla profesjonalistów (tzn. nie informatyków profesjonalistów, ale osoby zajmujące się dźwiękiem profesjonalnie). W związku z tym czasami zachowuje się on "dziwnie" z punktu widzenia zwykłych użytkowników, a jego konfiguracją można straszyć już nawet wyrośniętych przyszczersów ;) Tym nie mniej jest to dobry produkt - ale nie na desktop.

NAS to serwer sieciowy. Tzn, uruchamiamy odtwarzacz na jednej maszynie, słuchamy na drugiej. Tą funkcję wypełnia całkiem dobrze, ale niewiele ponadto.

Dla obowiązku wspomnę tu jeszcze o ALSA, która posiada pewne elementy serwera dźwięku - lecz jest przeznaczona tylko dla Linuksa, co ją niestety dyskwalifikuje w roli uniwersalnego rozwiązania.

Zakładam że inteligentni czytelnicy domyślają się, że mam zamiar omówić to coś nowego, co ma być remedium na te problemy. I owszem :)

PulseAudio to nowy, dynamicznie rozwijający się serwer dźwięku, który trafi do następnego wydania Ubuntu (tak Livio, wiem że w Fedorze już jest ;)). Twórcy Pulse, wyciągnęli wnioski z błędów popełnionych przez starsze projekty, i postanowili rozwiązać problem raz a dobrze.

Na początek zaznaczę tylko że Pulse jest ciągle we wczesnej fazie. Większość rzeczy już działa, niektóre jeszcze nie, no i to tu to tam znajdzie się jakiś błąd.

Najważniejsza w PulseAudio jest szybkość. Ludzkie odbieranie dźwięku ma to do siebie, że (np. w przeciwieństwie do video) nie toleruje opóźnień czy przerw. Dlatego wszędzie gdzie można, Pulse stara się minimalizować opóźnienie (latency) dźwięku, czyli czas od kiedy aplikacja wydaje komendę 'graj' do momentu kiedy słyszymy dźwięk w głośnikach.

Drugą najważniejszą rzeczą jest konfiguracja, a raczej jej brak. Pulse ma po prostu działać, mimo naprawdę potężnych możliwości. W bardzo prosty sposób, od razu możemy użyć głośników na USB które przed momentem podłączyliśmy. Bezproblemowo możemy połączyć dwie karty muzyczne w jedną. Możemy przesłać nasz dźwięk przez sieć do głośników innego komputera. Wszystko kilkoma kliknięciami myszki. O takich rzeczach jak automatycznie ściszanie odtwarzaczy muzycznych w chwili gdy dzwoni VoIP, zapamiętywania ustawień każdej aplikacji, regulacji głośności per aplikację czy też wsparcia dla blutootcha już nawet nie wspomnę ;)

Trzecią cechą jest kompatybilność. Pulse za założenia ma działać na wszystkim, a wszystko ma działać na Pulse. Tak więc nie ważne czy Windows, czy FreeBSD czy Linux czy Solaris, Pulse ma na tym zadziałać. Nieważne czy aplikacja ma obsługę ALSA, OSS czy Jacka, czy NAS, czy ESD, czy też natywnie PulseAudio, ma działać.

Wszystko to ładnie brzmi prawda? Fakty jednak świadczą na korzyść PulseAudio. Jak już napisałem - rozwija się bardzo dynamicznie i na dzień dzisiejszy developerzy Pulse deklarują że 95% istniejącego, Unixowego oprogramowania zadziała ich serwerem. Myślę że są nazbyt skromni ;). Ze swojego doświadczenia mogę powiedzieć że z PulseAudio działa praktycznie wszystko, a problemy sprawiają tylko naprawdę bardzo egzotyczne, jednostkowe wypadki. Zaś co do odwiecznego problemu latency mogę powiedzieć że dokonano tu naprawdę dobrej roboty :)

No, a jak ktoś się zapyta: po co to wszystko? To ja odpowiem: głupie pytanie ;) Proponuję wypróbować, bo PulseAudio niewątpliwie pojawi się niedługo w dystrybucji której używasz. Może nawet już jest :)

25 komentarzy

Nie wiem skąd mnie się to bierze, ale mam wielki gier do strzelanek typu: samolocik lecący z dołu do góry, w nieskończoność, niszczący coraz to silniejszych wrogów. Dawno temu na automatach zagrywałem się w 1941, 1942, 1943, 1944. Było Tiger Heli, a od jakiegoś czasu fenomenalna seria Raiden (II moja ulubiona część, niebieski 'naprowadzany' laser) :)

Jest gra, która nie dość że jest darmowa, to jeszcze idealnie oddaje klimat tego typu gier. Gunroar. Płyniemy w nie łódką, rozwalamy inne łódki, w takt skocznej muzyczki. I tak naprawdę bez końca, bo teren i kolejni przeciwnicy są mniej lub bardziej generowani losowo, z tym że coraz silniejsi. Bonusów nie ma, można za to strzelać w dwóch trybach: 'skupionym' albo 'szerokim'. I to zasadniczo wszystko. Idealna do odstresowania na koniec dnia :)

5 komentarzy

Creative Commons License Powered by Jogger.PL and Tarski · Ported by alberht (ze zmianami)