Multiplatformní open source aplikace scrcpy (Wikipedie) pro zrcadlení připojeného zařízení se systémem Android na desktopu a umožňující ovládání tohoto zařízení z desktopu, byla vydána v nové verzi 4.0.
Chybí vám někdo, s kým byste si popovídali o bastlení, technice, počítačích a vědě? Nechcete riskovat debatu o sportu u piva v hospodě? Pak doražte na virtuální pokec u virtuálního piva v rámci Virtuální Bastlírny organizované strahovským MacGyverem již tento čtvrtek. Možná se ptáte, co se tak může probírat? Dají se probrat slavná výročí - kromě 55 let obvodu 555 (což je mimochodem prý andělské číslo) a vzpomínky na firmu Signetics -
… více »GTK2-NG je komunitní fork GTK 2.24 (aktuální verze je 4.22). Oznámení a diskuse v diskusním fóru Devuanu, forku Debianu bez systemd. Není to jediný fork GTK 2. Ardour je například postaven na vlastním forku GTK 2 s názvem YTK.
V neděli 17. května 2026 proběhne v Českých Budějovicích první MobileLinux Hackday zaměřený na Linux v mobilech, embedded platformy a open source hardware. Po sedmi úspěšných měsíčních setkáních v Praze se akce přesouvá také do jižních Čech, aby se komunita mobilního Linuxu mohla potkat i mimo hlavní město. Akce se uskuteční v konferenčním sále Vajgar v Clarion Congress Hotelu (Pražská tř. 2306/14) se zahájením mezi 14:00 až 15:00 a … více »
Vývojáři Debianu zhruba v polovině vývojového cyklu Debianu 14 s kódovým názvem Forky rozhodli, že Debian musí dodávat reprodukovatelné balíčky, tj. kdokoli si může nezávisle ověřit, že daný binární balíček vznikl překladem a sestavením z konkrétních zdrojových kódů. Aktuálně je reprodukovatelných 98,29 % balíčků.
Německý e-shop Škoda Auto byl hacknut. Útočníci získali přístup k uživatelským údajům (jméno, adresa, e-mail, heslo, telefon, …).
Na webu konference Den IPv6 2026, která se uskuteční 4. června v Národní technické knihovně v pražských Dejvicích, je nyní k dispozici kompletní program této tradiční akce věnované tématům spojeným s protokolem IPv6. Na celodenní pásmo přednášek je třeba se přihlásit a zaplatit účastnický poplatek 242 korun. Registrační formulář najdou zájemci opět na webu akce. Konferenci Den IPv6 2026 organizují i letos společně sdružení CESNET, CZ.NIC a NIX.CZ.
Byl představen emulátor terminálu Ratty (GitHub) s podporu 3D grafiky přímo v terminálu. Inspirací byl operační systém TempleOS od Terryho Davise. Ratty je napsán v jazyce Rust. Využívá knihovnu Ratatui pro tvorbu rozhraní a herní engine Bevy pro 3D vykreslování.
Evropské instituce i některé americké státy dál zpřísňují pravidla pro ověřování věku na internetu. Cílem je zabránit dětem v přístupu k obsahu pro dospělé. Úřady ale narážejí na zásadní problém – stále více lidí používá VPN, tedy služby umožňující skrýt identitu i skutečnou polohu na internetu. Právě VPN nyní Evropská parlamentní výzkumná služba (EPRS) označila za „mezeru v legislativě, kterou je potřeba uzavřít“ [Novinky.cz].
Multiplatformní open source aplikace pro psaní poznámek Joplin (Wikipedie) byla vydána v nové verzi 3.6. Nově lze mít v poznámkách embedovaný externí obsah, např. YouTube videa.
Víte že můžete odebírat mé blogy pomocí RSS? (Co je to RSS?)
Od určité doby jsou všechny texty které zde publikuji verzované na Githubu.
Jestliže najdete chybu, nepište mi do diskuze a rovnou jí opravte. Github má online editor, není to skoro žádná práce a podstatně mi tím usnadníte život. Taky vás čeká věčná sláva v commit logu :)
Narazil jsem na velmi zajímavě vypadající knihu o umělé inteligenci, plným názvem Artificial Intelligence - foundations of computational agents. Kniha je na webu dostupná pod Creative commons licencí, ale jen jako HTML. Na webu se sice s trochou snahy dá najít i jako .pdf, ale to mi moc nepasuje do čtečky, proto jsem se jí rozhodl převést na epub.
Na začátku jsem o epubu nevěděl skoro nic, kromě toho že to jsou XML v ZIPu. Postupně jsem zjistil, že epub je docela fajn formát, i když má pár svých podivností. Stránka na anglické wikipedii se v tomhle ohledu ukázala jako víc než užitečná, v podstatě se dá použít jako návod.
Co se mi na něm líbí je struktura, kde jednotlivé kapitoly v podstatě odpovídají HTML stránkám, tak jak jsou na webu. To celé se obalí dvěma XML, přidá se trocha omáčky v podobě dvou zbytečných souborů, které tam vůbec být nemusely, zabalí do zipu a je z toho skoro epub.
mimetype META-INF/ container.xml OEBPS/ content.opf toc.ncx ...
První tři řádky obsahují soubory, které jsou jasně dané a není na nich co řešit. mimetype je jen textový soubor obsahující string "application/epub+zip".
container.xml je základní informační soubor, který musí být ve složce META-INF a skoro nic neobsahuje:
<?xml version="1.0"?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
<rootfiles>
<rootfile full-path="OEBPS/content.opf" media-type="application/oebps-package+xml"/>
</rootfiles>
</container>
Podstatný je jen full-path argument tagu <rootfile>, který obsahuje cestu k souboru kde jsou v podstatě všechna ostatní metadata. Z nějakého divného důvodu je ve většině souborů do kterých jsem koukal konvence používat složku pojmenovanou OEBPS/, ale našel jsem i takové, které jí neobsahují a všechno ostatní je rovnou v rootu e-knihy.
Ve složce OEBPS/ už není nijak definovaná struktura a tak jsem jí použil jako hlavní úložiště na všechny .xhtml soubory z webu. V případě Artificial inteligence jich je přes 350. Kniha používá docela velkou granularitu a tak v podstatě co pár stránek je nová podkapitolka ve vlastním souboru.
Do složky OEBPS/images jsem pak nacpal všechny obrázky, na které se HTML soubory odkazují.
Původně jsem psal jednoduché stahovátko, které mělo poukládat všechny odkazy z indexu, poměrně záhy jsem ale zjistil, že index obsahuje jen dvě úrovně nadpisů. Stránky, kde kapitoly začínají třetí úrovní nebyly staženy a než jsem přišel na to co se vlastně děje, celé se to zkomplikovalo víc, než bylo nezbytně nutné.
Zpětně docela lituji, že jsem tu stahovací část psal v pythonu, protože je do velké míry zbytečně složitá a na stejnou věc by bohatě stačil wget. Takhle mi pod rukou vykvasily čtyři třídy, které se rekurzivně volají a celá ta architektura je dost divná. Zpětně nemám tušení, proč jsem to takhle napsal, prostě mi to nějak organicky vyrostlo pod rukama, ani nevím jak. Moc dobře jsem se nevyspal a tohle byl prostě jeden z těch dní, kdy je jednodušší upravovat zdroják a nabalovat další věci, než se zastavit, rozmyslet si co vlastně dělám a pak to udělat pořádně.
Script v podstatě rekurzivně prochází web, vyřezává ze stránek patřičný <div> s odkazem, aby tam nebyly různé blbosti kolem jako menu a tak a ukládá si je do paměti jako objekty. Když narazí na obrázek, tak ho stáhne do paměti, zkonvertuje cesty na lokální složku images/ a upraví odkazy v HTML, aby ukazovaly správně.
Původně jsem si říkal, že by bylo dobré soubory průběžně ukládat na disk, ale pak mi došlo, že u těhle objemů je to stejně jedno. Co jsem tak koukal, vezme si to něco okolo ~40MB paměti a tak je to stejně buřta. Nemá smysl předčasně optimalizovat.
Speciálním souborem je XML soubor s titulním obrázkem. To je to co většina čteček zobrazuje jako ikonu a v metadatech to má své speciální místo.
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Cover</title> <meta content="urn:uuid:c02e8919-1dc2-4489-a5ce-979dc262dd1e" name="Adept.expected.resource"/> </head> <body> <a id="cover"/> <img alt="cover" src="images/182_9780521519007.jpg" style="height: 100%;"/> </body> </html>
Osobně moc nechápu, proč je soubor s obrázkem XML, kde je obrázek vložený stejně jako do HTML stránky. Asi je fajn mít možnost tam přidat nějaké texty, ale naprostá většina ebooků stejně použije rastrový obrázek, když už pro nic jiného, tak aspoň jako pozadí. Optimalizovat se s tím, aby se přes CSS všechny HTML nadpisy a jména autorů zobrazila správně na všech čtečkách a ještě i jako miniatury, to může asi jen masochista.
Edit: Při závěrečných kontrolách článku jsem si všiml <meta> značky. Ta tam být pravděpodobně nemusí, vzal jsem to někde z nějakého příkladu a teď jsem moc líný to všude odstraňovat.
Nyní se konečně dostávám k tomu, co mi na celém procesu zabralo nejvíc času. Vytvoření validních metadat se ukázalo jako poměrně složité, protože mi stačilo na tom všem zabít celé odpoledne a nechtělo se mi trávit další čas studiem kompletní specifikace.
Tenhle soubor je jedna z prvních zbytečností. Měl by to být obsah knihy, celé to má ale dva problémy - jednak je to samé v podstatě znova duplikováno v content.opf a druhak skoro každá kniha, na kterou jsem koukal používá separátní HTML soubor, kde je obsah nastylovaný tak jak ho tam chtějí autoři.
XML je docela jednoduché:
<?xml version="1.0"?> <!DOCTYPE ncx PUBLIC "-//NISO//DTD ncx 2005-1//EN" "http://www.daisy.org/z3986/2005/ncx-2005-1.dtd"> <ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1"> <head> <meta name="Artificial Intelligence - foundations of computational agents" content=""/> </head> <docTitle> <text>Artificial Intelligence - foundations of computational agents</text> </docTitle> <navMap> <navPoint id="navpoint-0" playOrder="0"> <navLabel> <text>Cover</text> </navLabel> <content src="book_cover.xhtml"/> </navPoint> </navMap> </ncx>
V <meta> tagu a v <text> je název knihy. V kontejneru <navMap> se potom pro každou kapitolu opakuje tag <navPoint>.
V <navPoint> jsou atributy id a playOrder, které prostě inkrementuju výš a výš, s každým dalším <navPoint> tagem. Podelement <navLabel> obsahuje tag <text> s názvem kapitoly, na kterou se odkazuje. Tag <content> pak má v atributu src odkaz na soubor s kapitolou.
Hlavním souborem se všemi podstatnými metadaty je content.opf. Pojmenovaný a umístěný může být v podstatě jakkoliv, kde ho najít ukazuje META-INF/container.xml, o kterém jsem už psal.
V souboru jsou v kontejneru <manifest> uloženy odkazy na všechny ostatní soubory kromě sebe sama, zmiňovaného container.xml a mimetype.
<?xml version="1.0"?> <package version="2.0" xmlns="http://www.idpf.org/2007/opf" unique-identifier="BookId"> <metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf"> <dc:title>Artificial Intelligence</dc:title> <dc:title>foundations of computational agents</dc:title> <dc:creator opf:role="aut">David Poole</dc:creator> <dc:creator opf:role="aut">Alan Mackworth</dc:creator> <dc:format/> <dc:date>2010-06-07</dc:date> <dc:subject/> <dc:description/> <dc:rights/> <dc:language>en</dc:language> <dc:identifier id="BookId" opf:scheme="ISBN">9780521519007</dc:identifier> <meta content="cover" name="cover"/> </metadata> <manifest> <item href="toc.ncx" id="ncx" media-type="application/x-dtbncx+xml"/> <item href="images/ch04_GradientDescent.png" id="ch04_GradientDescent_png" media-type="image/png"/> ... </manifest> <spine toc="ncx"> <itemref idref="book_cover_xhtml" linear="yes"/> <itemref idref="ArtInt_html" linear="yes"/> ... </spine> <guide> <reference href="book_cover.xhtml" title="Cover" type="cover"/> <reference href="ArtInt.html" title="Table of Contents" type="toc"/> </guide> </package>
Kontejner <spine> je potom jeden z důvodů, proč se mi zdá předchozí soubor toc.ncx jako blbost, protože obsahuje v podstatě to samé - všechny kapitoly tak jak mají jít za sebou, s tím že se na ně odkazuje přes parametr id tak, jak byl definovaný v kontejneru <manifest>. Na pořadí zde záleží.
Na konci je pak kontejner <guide> obsahující <reference> tagy na věci jako je vlastní HTML index knihy a stránka obsahující obálku.
Výsledkem celého uvedeného souboru je skoro epub. Tváří se to jako epub, calibre to otevře jako epub, plugin do firefoxu to otevře jako epub, ale moje čtečka si z toho pšíkne, zakoulí očima a vysvětlí, že to teda ne.
Jak udělat ze skoro epubu epub jak se patří? Zkonvertovat ho z epubu do epubu přece!
Použít se k tomu dá program ebook-convert, který je součástí balíku calibre:
ebook-convert skoro.epub uplny.epub
Chvíli si povídá pro sebe, vypisuje co všechno vyházel, opravil a udělal správně a pak vyplivne krásný, více/méně validní epub, se kterým nemělo problémy žádné zařízení, kde jsem to zkoušel.
Pokud by měl někdo o knihu zájem, stačí si naklonovat příslušný repozitář a spustit script create_book.sh:
To by bylo na téma "jak jsem zabil středeční odpoledne a večer" za mě. Co vy?
Za tip ohledně knihy děkuji FEE1DE4Dovi.
Tiskni
Sdílej:
Kiež by som ten svoj niekedy stihol prečítať :D Už je tak dlhý, že tie najstaršie kúsky pamätajú ešte distribúciu softvéru na disketách 
40 minut v metruTo jako fakt?
Mercy Lynchová pracuje ve vojenské nemocnici. Po smrti manžela v zajateckém táboře ji už ve Virginii nic nedrží, a proto se vydává najít svého zraněného otce, který se s ní touží setkat. Cesta napříč kontinentem se mění v dobrodružné putování. Mercy postupně vystřídá vzducholoď, vlak i říční parník. Když dorazí do St. Louis, zjišťuje, že jediný vlak, který pokračuje dál, potáhne děsivá unionistická parní lokomotiva jménem Bitevník . Původně rychlá a klidná cesta se mění v boj o život poté, co je vlak přepaden hordou lupičů a později jižanskými vojáky. Mercy by ráda viděla svého otce dřív, než zemře. Pokud však chce z vlaku vystoupit živá, musí překonat intriky Unie a útoky Konfederace.




Nic tak neodhaluje charakter lidí jako to, čemu se vysmívají.-- Johann Wolfgang Goethe
Prostě si registruj účet, založ blog a tam to můžeš posílat pořád dokola a možná se i někdo chytí do diskuze.to je lež, kdyby si založil blog, zase bys mu spílal, že se sem nehodí, ale že se někdo chytí, to je pravda - bystroushaak převlečený za zlatohřbítka
Ja kvuli tomuto tematu poradne nespim.
Nedostatek spánku vede k poškození mozku. Tím by se vysvětlovala ta zeď textu nad citovaným úryvkem.