FK~

Moje odkazy

Ostatní odkazy

Close Windows
Nenajdete mě na Facebooku ani Twitteru
Rozpad EU
Jsem členem FSF
There Is No Cloud …just other people's computers.
Sane software manifesto / Manifest příčetného softwaru

Pioneer DJ DJM-V10 driver for Linux

vydáno: 31. 5. 2025 20:08, aktualizováno: 1. 6. 2025 13:37

It is almost five years since I added the kernel driver for DJM-250MK2. Now I have here a new mixer: Pioneer DJ DJM-V10 and it deserves a kernel driver too.

Pioneer DJ DJM-V10

This beast makes the DJM-250MK2 look like a child's toy. V10 is a flagship mixer that includes USB audio interface with 12 input channels and 12 output channels (6 stereo in each direction). This plethora of channels and two headphone outputs make it ideal for playing in pairs, where one can play while the other prepares the next track on the same mixer. Now also with GNU/Linux.

číst dál

Blok finally při odchytávání výjimek: C++ vs. Java

vydáno: 29. 10. 2024 22:20

Programovací jazyky C++ i Java implementují výjimky (exceptions) pro ošetřování chyb resp. řízení toku programu při chybových stavech. V bloku try provádíme operace, které mohou selhat a vyhodit výjimku. V bloku catch tuto případnou výjimku zachytíme a nějak na ni reagujeme. V blogu finally pak máme kód, který se má provést vždy, bez ohledu na to, zda výjimka vyletěla nebo ne – typicky jde o kód, který zavírá zdroje, uvolňuje paměť nebo dělá jiný úklid.

C++ a Java: blok finally (ilustrace)

Na rozdíl od Javy jazyk C++ blok finally nemá. Není to zvláštní, když v C++ je jinak prakticky vše, co lze vymyslet? V dnešním článku si ukážeme, jak v C++ vytvořit obdobu bloku finally a následně i lepší řešení, která jsou pro C++ přirozenější.

číst dál

Hybridní diskové pole: RAID 1 s HDD a NVMe SSD

vydáno: 13. 8. 2023 12:18, aktualizováno: 25. 8. 2023 00:00

Na chvíli jsem se teď na hlavní pracovní stanici po letech se SSD vrátil k čistě rotačním diskům (HDD), protože jsem si potřeboval udělat pořádek v datech a soubory se přeci jen rychleji přesouvají v rámci jednoho souborového systému (i když je na pomalém HDD) než mezi více oddíly nebo fyzickými disky. A dostatečnou kapacitu jsem měl jen na HDD. Původní plán byl, že soubory roztřídím podle toho, jak a jak často s nimi pracuji a umístím na různě rychlé disky (v počítači jsem měl kombinaci asi šesti různých SSD a HDD disků). Úklid sice celkem úspěšný byl, ale navrhnout rozdělení souborů na různě rychlá úložiště bylo složitější. Buď bych to musel řídit ručně a mít data na více souborových systémech (původní stav jen s lépe rozmístěnými soubory) nebo si softwarově vytvořit hybridní disk (ty se prodávaly v dobách, kdy flash paměti byly drahé na to, aby se z nich poskládal celý disk – šlo o HDD+SSD v jednom SATA disku, kde SSD sloužilo jako rychlá cache pro HDD). To se dá postavit nad bcache, dm-cache, Flashcache atd. Ale protože to pracuje na úrovni blokového zařízení, nejde říct, kde mají které soubory být a funguje to automaticky. Problém je v tom, že systém neví, které soubory potřebuji číst rychle (byť třeba jednou za dlouho) a u kterých je mi to jedno (i když je můžu číst relativně často).

HDD + NVMe SSD pro RAID 1 pole

Nakonec jsem usoudil, že 4 TB M.2 NVMe disky už nejsou tak drahé a nejlepší a zároveň nejjednodušší bude mít všechna data na rychlém SSD/NVMe zařízení. Zároveň se ale nechci vzdát bezpečí zrcadleného pole (RAID 1). V tomto článku si tedy ukážeme, jak složit diskové pole z více různě rychlých zařízení a jak mu říct, že má číst přednostně z těch rychlých.

číst dál

Git a kopírování souborů

vydáno: 16. 6. 2022 23:46, aktualizováno: 16. 6. 2022 23:46

Git a Mercurial jsou stejná generace verzovacích systémů: distribuované VCS. Vznikly v roce 2005 jen pár měsíců po sobě. Jednou z nevýhod Gitu oproti Mercurialu je to, že nepodporuje kopírování souborů. Zatímco v Mercurialu máme hg mvhg cp, v Gitu máme jen git mv. Soubor – myšleno včetně jeho historie – můžeme v Gitu jen přesunout, ale ne zkopírovat. Tedy alespoň ne jednoduše… V dnešním článku si ukážeme trik, jak i v Gitu soubory kopírovat včetně jejich historie nebo přesouvat jejich části jinam, což se hodí obecně, i např. v Mercurialu nebo jiných VCS.

loga verzovacích systémů: Subversion, Git, Mercurial, Bazaar, Fossil, Monotone, Pijul, BitKeeper, GNU Arch, Darcs

číst dál

Tlaková petrolejová lampa (petrolejka) Optimus 300

vydáno: 23. 10. 2021 22:24, aktualizováno: 7. 3. 2023 23:44

Petrolejky, které běžně potkáváme na půdách a v kůlnách, jsou většinou buď vojenské Feuerhand (a jejich následovníci jako Meva), případně pokojové lampy jako z písničky Dáme si do bytu (1958). Tyhle lampy mají knot, hoří žlutým plamenem a kromě světla a tepla produkují občas nějaké ty saze. Vedle těchto jednoduchých petrolejek existují ale i technicky vyspělejší tlakové lampy, které svítí jasnějším světlem. Na jednu takovou se dnes podíváme.

petrolejová lampa Optimus 300 – rozsvícená v zahradě za denního světla

číst dál

Předpověď počasí v terminálu & Relační roury

vydáno: 14. 8. 2021 02:14, aktualizováno: 18. 8. 2021 19:58

Když nepočítám televizi a rozhlas, pro předpovědi počasí si většinou chodíme na nějakou webovou stránku, kterou si zobrazujeme v prohlížeči. Dnes si ukážeme, jak si stáhnout předpověď počasí ve formátu XML přes API poskytovatele a zobrazit si ji v textovém terminálu díky jednoduchému skriptu, který si napíšeme.

předpověď počasí v terminálu (Relační roury)

číst dál

Jména a jmenné prostory, URI, RDF, OID, UUID či Tor

vydáno: 4. 8. 2020 16:32, aktualizováno: 27. 2. 2024 19:29

Když se řekne „jmenný prostor“, hodně lidí si představí xmlns v XML nebo balíčky v Javě odvozené od internetových domén. Jmenné prostory jsou ale obecný koncept, se kterým se setkáme prakticky všude a odvozovat je můžeme i jinak. Dobře definovaná jména (názvy) jsou pak nutným předpokladem prakticky veškerého uvažování a komunikace.

jmenné prostory, hierarchie

V tomto článku se podíváme na různé příklady jmenných prostorů a souvislosti mezi nimi. Ukážeme si, jak vytvořit jmenný prostor i bez placení a internetové domény – a dokonce i anonymně a bez závislosti na nějaké centrální autoritě. Nahlédneme do zajímavého světa RDF a ukážeme si, jak vytvářet URI, která budou globálně unikátní jednou provždy.

číst dál

Pioneer DJ DJM-250MK2 driver for Linux

vydáno: 3. 8. 2020 23:59, aktualizováno: 1. 6. 2025 16:06

I am the author of the patch that adds partial support for the Pioneer DJ DJM-250MK2 in the Linux kernel. The MIDI and PCM output (from computer to the sound card) work.

Pioneer DJ DJM-250MK2 – rear connector panel

číst dál

Tisk v přesném měřítku (PDF, PPD, CUPS)

vydáno: 29. 6. 2020 01:15, aktualizováno: 14. 4. 2023 20:06

Problém s tiskárnami je, že… Nechci dnes mluvit o hardwarových závadách (jako že vám třeba zaschne náplň v inkoustové tiskárně), ale o těch softwarových. V dobách, kdy jsme běžně k počítačům připojovali jehličkové tiskárny pomocí paralelního portu, byla situace v lecčems jednodušší – s tiskárnou jsme komunikovali více napřímo a ta poslušně plnila naše příkazy (takže jsme si třeba potiskli místo papíru válec, když jsme zadali špatné rozměry). S tím, jak roste komplexita softwaru, přibývají v systému další mezičlánky – a ty občas kompenzují chyby uživatele a jindy mu přidělávají starosti. Potištěných válců ubylo, ale zmuchlaných papírů v koši je pořád dost.

tisk v přesném měřítku, tisknutelná oblast a okraje

číst dál

Komplexita softwaru: Řešení a prevence

vydáno: 18. 5. 2020 02:30, aktualizováno: 19. 4. 2025 12:31

Třetím dílem dnes zakončíme sérii věnovanou komplexitě softwaru (co to je, jak vzniká). Podíváme se na možná řešení tohoto problému a zejména na prevenci, protože úspěšný boj s komplexitou zpravidla začíná už v době návrhu.

komplexita (ilustrační obrázek)

číst dál

Archiv: starší články