Recording sound on server with no sound card
Ever tried to record sound on server machine without sound card? Easy! I’ve tested it on Ubuntu 9.10 Server – let’s say this is virtual sound card:
Install dummy sound card module and alsa:
modprobe snd_dummy apt-get install alsa
Create file /etc/asound.conf:
pcm.!default {
type plug
slave {
pcm file
}
}
pcm.card0 {
type hw
card 0
}
pcm.file {
type file
slave {
pcm card0
}
file "/tmp/file.wav"
format "wav"
}
Reload alsa: /etc/init.d/alsa-utils restart
Now everything you play on your linux box will be stored in /tmp/file.wav. You can also play with pipes to convert it on the fly etc.
Some useful links:
- http://www.alsa-project.org/main/index.php/Matrix:Module-dummy
- http://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html#pcm_plugins_file
- http://alsa.opensrc.org/.asoundrc
Squid proxy for CouchDB
I’m playing a bit with CouchDB, document-oriented, no-sql database with HTTP REST api. I had to test how to scale it and load-balance high web traffic to n CouchDB nodes.
CouchDB is very cool itself, but when you ask for documentation.. Let’s say that sometimes it’s hard to find right page on wiki. For example, replication page lacks information about really cool feature – continuous replication! So don’t forget to look at other sources, like the book CouchDB: The Definitive Guide, in this case replication chapter.
Generowanie PDF z Grails PDF Plugin + polskie znaki
Wczoraj rozwijałem mój projekt na programowanie w środowisku sieciowym. Projekt tworzę w świetnym frameworku - Grails, w dynamicznym języku programowania na JVM – Groovy. Jednym z zadań projektu jest tworzenie list osób w formacie PDF, czyli tego samego co wyświetlamy na ekranie.
W pierwszej chwili pomyślałem o użyciu JasperReports, ale wpisanie w google frazy “grails pdf” skierowało mnie na stronę pluginu PDF do grailsów. Genialne! Po co robić coś jeszcze raz, lepiej wykorzystać strony GSP i na ich podstawie wyrenderować dokument, dostosowując go tylko w CSS – odpowiednie style można przecież stworzyć dla wskazując w CSS, że mamy wykorzystać ten styl przy wydruku: media=”print” zamiast media=”screen”.
Po wpisaniu w konsoli grails install-plugin pdf i usiadłem i myślałem, że wszystko pójdzie dobrze. Pojawił się błąd – nie mogło skopiować plików. Wszystko przez to, że skrypt instalacyjny jest źle napisany – w pliku KATALOG_DOMOWY/.grails/1.1.1/plugins/grails-pdf-0.4 musiałem zmnienić /script/_Install.groovy tak, żeby kopiowanie plików odbywało się ze ścieżki “${pluginBasedir}/grails-app/views/pdf” (dodałem te pdf na końcu).
Jeszcze chwila czekania i miałem już wszystko zainstalowane, dodałem na stronie odpowiedni link <g:pdfLink url=”/members/list” /> i.. nic nie działało
. Po pierwsze okazało się że miałem jeden tag niedomknięty, przez co nie generowałem poprawnego XHTML’a i po prostu dokument nie mógł być przetworzony. Co jednak ciekawsze, sam pdfLink generował mi znak “&” zamiast odpowiedniej encji i to też sprawiało problemy, przez co użyłem linka poprzez zwyczajny “href” (na stronie demo plugina jest to dopisane dokładniej). Nieco zirytowany obejrzałem pierwszy dokument i.. nie posiadał on polskich znaków
.
Najciekawsze jest to, że w tej sytuacji prostego rozwiązania nie ma, a przynajmniej ja go nie znalazłem. Rozwiązanie trudniejsze to modyfikacja pluginu tak, żeby dodać do niego polskie fonty
.
Po pierwsze potrzebujemy odpowiednich fontów. Ja użyłem paczki od Microsoftu, i wybrałem z niej “arial.ttf”. Potem zmodyfikowałem plugin. Plugin po instalacji w projekcie siedzi sobie w folderze KATALOG_DOMOWY/.grails/1.1.1/projects/NAZWA_PROJEKTU/plugins. W pliku grails-app/services/PdfService.groovy jest to, co nas interesuje – użycie xhtmlrenderera. Zgodnie z instrukcją trzeba dodać odpowiednie fonty zaraz po stworzeniu renderea – zróbmy to:
ITextRenderer renderer = new ITextRenderer();
def fonts = ConfigurationHolder.config.pdfplugin.addFonts
fonts.each {
renderer.getFontResolver().addFont (it,
BaseFont.IDENTITY_H,
BaseFont.NOT_EMBEDDED);
}
Potrzebujemy jeszcze dodać dwa importy:
import com.lowagie.text.pdf.BaseFont
import org.codehaus.groovy.grails.commons.ConfigurationHolder
Teraz w konfiguracji trzeba dodać ścieżkę do pliku z fontem, lub plikami. Tak więc w Config.groovy dodajemy:
pdfplugin.addFonts=["/sciezka/do/plkiu/arial.ttf"]
I po restarcie aplikacji możemy cieszyć się działającymi plikami pdf z polskimi literkami
. Uważajcie tylko, żeby w CSS dla generowania strony wybrać odpowiednią rodzinę fontów, np. “Arial Unicode”,Arial,sans-serif. Proste, nie?
PS Chciałem zgłosić issue na githubie, na stronie projektu – ale github zastrajkował dlatego napisałem to na wiki.
Prezentacja oferty Polsko-Amerykańskiej Komisji Fulbrighta
Byłem dziś na spotkaniu Polsko-Amerykańskiej Komisji Fulbrighta, która pomaga i częściowo finansuje studia podyplomowe i doktoranckie w USA. Pan dr Bołdak ma nieco materiałów, które zostawiła pani Aleksandra Augustyniak, a które mogą zainteresować osoby chcące tam kontynuować studia. Mogę też przekazać to, co zapamiętałem z prezentacji – kontakt ze mną na stronie About.
Prezentacja funkcje haszujące
Umieszczam prezentacje, która dziś pomogła mi przy wygłoszeniu krótkiego referatu na przedmiocie Ochrona Baz Danych
.
Format ppt (najgorszy, bo coś się layout psuje
)
Systemy samouczące
Umieściłem pierwsze wykłady z Systemów samouczących od prof. dr hab. Leona Bobrowskiego, można je sciągnąć z podstrony. Będę się starać uzupełniać je systematycznie
.
8 lat (czyli przynudzam wspominając)
Rozmowa z moim bratem przypomniała mi dziś, że Quake 3 ma już 9 lat.
Pamiętam że dzieliliśmy wtedy komputer – mocny jak na tamte czasy, Pentium III 500MHz, 64 MB RAM (bo pamięć podrożała po trzęsieniu ziemi na Tajwanie), dysk twardy Western Digital 8GB, grafika 3dfx Voodoo 3 3000 z 16MB pamięci i kartą Sound Blaster Live! Value – wszystko na płycie głównej ABIT BE6. Prehistoria? Niekoniecznie, komputer ciągle pracuje, z nieco większą ilością pamięci i drugim dyskiem twardym, na płycie zaś wystarczyło przelutować kondensatory.
Dlaczego to jest ważne? Bo komputer miał na płycie głównej kontroler dysków twardych ATA66 HighPoint Technologies 366, i przez niego podłączony dysk twardy. Przez to nasze pierwsze podejście do instalacji Linuksa, a dokładniej egzotycznej do dziś dystrybucji TurboLinux nie powiodło się – kto mógł wiedzieć, że wystarczy przepiąć taśmę od dysku do złącza obok?
Na szczęście niedługo wyszła wersja 7.1 Madrake Linux (dziś Mandriva), wspierająca HPT366 – system się zainstalował. I tak 8 lat temu zostałem linuksiarzem*. Cholernie dawno temu, jak sobie teraz myślę… A szczególnie gdy spojrzę na wersję jądra w tym wydaniu – 2.2.15
A potem przyszedł kernel 2.4, w głowie utkwiło mi że miał przynieść rewolucję w dziedzinie multimediów – jakoś się potoczyło aż do dziś.
* – linuksiarzem mogłem zostać nieświadomie nieco wcześniej, bo jeszcze gdy o możliwości założenia internetu w domu nie marzyłem miałem skrzynkę pocztową na free.net.pl, przez co i shella przez telnet. Ale to chyba było jakieś BSD….
Ubuntu Customization Kit
Umieszczam (zaległą
) prezentację z krótkich zajęć dodytczących Ubuntu Customization Kit, na zajęciach Białostockiej Grupy Użytkowników Linuksa. Sam materiał nie jest za bardzo trudny, tak więc zapraszam każdego do obejrzenia
Prezentację można pobrać stąd w formacie .odp.