Během akce Arduino Days 2026 byl publikován Arduino Open Source Report 2025 (pdf) a oznámeno 7 nových produktů kompatibilních s deskou UNO Q (Arduino USB-C Power Supply, USB-C Cable, USB-C Hub, UNO Media Carrier, UNO Breakout Carrier, Bug Hopper, Modulino LED Matrix).
Google v pátek spustil v Česku Vyhledávání Live. Tato novinka umožňuje lidem vést plynulou konverzaci s vyhledávačem v češtině. A to prostřednictvím hlasu, nebo prostřednictvím toho, na co ukážou svým fotoaparátem či kamerou v mobilu. Rozšíření této multimodální funkce je možné díky nasazení Gemini 3.1 Flash Live, nového hlasového a audio modelu, který je od základu vícejazyčný, takže umožňuje lidem po celém světě mluvit na vyhledávač přirozeně a v jazyce, který je jim nejbližší.
Jsongrep je open-source nástroj, který efektivně prohledává JSON dokumenty (editovat je neumí). Kompiluje regulérní jazyk dotazu do podoby deterministického konečného automatu (DFA), díky čemuž prochází strom JSON dokumentu pouze jednou a je v tom tedy rychlejší než jiné nástroje jako jsou například jq, JMESPath nebo jql. Jsongrep je napsaný v programovacím jazyce Rust, zdrojový kód je dostupný na GitHubu.
O víkendu probíhá v Praze na Karlově náměstí 13 konference Installfest 2026. Na programu je celá řada zajímavých přednášek a workshopů. Vstup na konferenci je zcela zdarma, bez nutnosti registrace. Přednášky lze sledovat i online na YouTube.
Mozilla a společnost Mila oznámily strategické partnerství za účelem rozvoje open source a suverénní AI. Cílem je ukázat, že open source AI může konkurovat uzavřeným systémům. Obě organizace chtějí posílit technologickou suverenitu a snížit závislost na hrstce velkých technologických firem.
Adam Rice předvedl, že pomocí DNS lze distribuovat a spustit kompletní hru DOOM. Rozdělil WAD soubory a binárky do téměř 2000 DNS záznamů v Cloudflare zóně (jeden TXT záznam v DNS může nést okolo 2000 znaků textu). Ty pak stáhl PowerShellem, dekomprimoval a spustil přímo v paměti počítače bez nutnosti zápisu na disk, což prakticky dokazuje, že DNS může sloužit jako distribuované úložiště dat a možný kanál pro načítání kódu. Repozitář projektu je na GitHubu.
Dnes a zítra probíhají Arduino Days 2026. Na programu je řada zajímavých přednášek. Sledovat je lze od 17:00 na YouTube. Zúčastnit se lze i lokálních akcí. Dnes v Poličce v městské knihovně a zítra v Praze na Matfyzu.
Byla vydána beta verze Ubuntu 26.04 LTS s kódovým názvem Resolute Raccoon. Přehled novinek v poznámkách k vydání. Dle plánu by Ubuntu 26.04 LTS mělo vyjít 23. dubna 2026.
Byla vydána aktualizována Příručka pro začínající wikipedisty a wikipedistky (pdf).
Ubuntu plánuje v budoucích verzích nahradit tradiční nástroje pro synchronizaci času (chrony, linuxptp a gpsd) novým, v Rustu napsaným ntpd-rs, který nabídne vyšší bezpečnost a stabilitu.
select lang2 as preklad from translations where text='vyraz_ktery_chci_prelozit'
Vyleze mi sloupec preklad s překladem ze sloupce lang2
Samozřejmě očekává se, že mám jinou tabuli, která definuje který sloupec je která jazyková verze.
Jazykové verze mám tedy jakoby horizontálně ve sloupcích.
----
Pak existuje druhý způsob a to jakoby vertikálně.
Mějme tabuli translations s cca 20000 záznamy krát počet jazykových verzí a v ní sloupce
text, langid, translation, vše dejme tomu varchar(200), langid je int(11). Index je na sloupci text & langid i samostatně na text, langid.
Představme si, že udělam
select translation as preklad from translations where text='vyraz_ktery_chci_prelozit' and langid=2
Vyleze mi sloupec preklad s překladem textu v jazykové verzi daného textu kde je langid 2.
Samozřejme očekává se, že mám jinou tabuli, která jazykové verze definuje a její id == translations.langid, je mezi nimi tedy vazba.
---
U toho horizontálního mám omezený počet jazykových verzí daný počtem rezervovaných sloupců, nicméně 7 je pro konkrétní účely naprosto dostatečné se značnou rezervou. Přidat sloupec je trivialní záležitost. U horizontálního také oproti vertikálnímu musím držet i nepřeložené prázdné překlady. Nicméně předpokládá se, že vše bude přeloženo a nic nebude vynecháno, jinak je to považováno za chybový stav a překlady je nutno doplnit.
Jak se komu který způsob jeví? Jaká mohou být úskalí a kde vidíte hlavní problémy toho nebo onoho přístupu?
Předem díky za diskuzi na tohle téma.
Řešení dotazu:
JOIN odpadne? SELECTy jsou jednodušší v případě sloupce udávajícího jazyk – podmínka na jazyk se píše normálně do WHERE, jak je každý zvyklý, a ne do SELECT. Doporučovat začátečníkovi ukázkový příklad, jak se to dělat nemá, není dobrý nápad. Porušovat pravidla je rozumné jedině tehdy, když to má nějaký přínos, a hlavně když dotyčný přesně ví, proč ta pravidla porušuje. Což by v tomto případě znamenalo alespoň to, že si umí změřit rozdíl v zátěži databáze, a že mu ten rozdíl něco přinese.
můžeš každému nastavit svoje řazeníCož má ale význam jedině tehdy, pokud podle té hodnoty opravdu chce řadit.
S vertikálním přístupem to neudělášMySQL neumí částečné indexy nebo funkční indexy?
Ať to uděláš jakkoliv, určitě to udělej tak, aby se SQL dotazy daly dobře generovatJeště podstatně lepší je udělat to tak, aby se žádné dotazy generovat nemusely. Pak nehrozí, že to generování dotazů bude postižené SQL injection, a databáze může prováděcí plány dotazů kešovat.
Což je docela časté, neboť do databáze se necpou stringy aplikace, ale data.můžeš každému nastavit svoje řazeníCož má ale význam jedině tehdy, pokud podle té hodnoty opravdu chce řadit.
MySQL neumí částečné indexy nebo funkční indexy?Pokud vím, tak ne.
a databáze může prováděcí plány dotazů kešovat.Kešovat může ve všech případech, jen to občas zabere trochu více místa. Typicky těch jazyků není mnoho, aby to nějak vadilo.
Což je docela časté, neboť do databáze se necpou stringy aplikace, ale data.To, že jsou to data, není podstatné. Řazení podle textu často znamená chybný návrh aplikace. Dává smysl řadit třeba podle data (chronologicky) nebo podle ceny. Řazení podle textu může mít význam, když se dělá nějaký výstup pro tisk (třeba seznam osob), ve kterém se bude hledat offline. Ale řazení podle textu velice často znamená, že aplikace nechává něco hledat člověka očima, místo aby mu nabídla možnost zadat hledaný text. A zrovna u těch jazyků a navíc 20 000 záznamů je velice pravděpodobné, že to nikdo nebude chtít řadit.
----- horizontal -----
Space usage: Data 1.5 MiB, Index 144 KiB, Total 1.7 MiB.
$sql="select ".$column." as xtext from horiz_table where text_index='".addslashes($textindex)."'";
----- vertical -----
Space usage: Data 1.5 MiB, Index 896 KiB, Total 2.4 MiB.
$sql="select text as xtext from vert_table where text_index='".addslashes($textindex)."' and langid='".$langid."'";
horizontal vertical
test 1 409832 380722
test 2 417419 384763
test 3 410420 387814
Ty pocty jsou pocty radku, ktere se povedlo vybrat do presnych 30s. Cas meren pomoci microtime(true) a odecitano od casu startu ziskaneho stejne tak pomoci microtime, aby nam neutekly nejake ty zlomky sekund. Dokud rozdil je <30, tak makame.
jsou escapovány znaky, kterými se dá uniknout ze syntaxeTo je jen zbožné přání. Parser SQL příkazů používá nějaké kódování znaků, nějakou konfiguraci, může se lišit verzi od verze databázového stroje. Jste si jist, že vaše funkce pro escapování tohle všechno zohledňuje? Escapování znaků není ošetření SQL injection, je to jen hack, který možná zachrání ty nejkřiklavější případy.
Ze všeho nejhorší je že všechny defaultně považujete za blbce. Kdybych tu měl vypsat výčet všeho na co mě skutečně nemusíte upozorňovat, protože jsem si toho ze své více než 15ti leté programátorské praxe vědom aby jste měl jistotu, že mě mimo téma dotazu není třeba na další okolnosti upozorňovat, tak by původní dotaz úplně zapadnul pod tímto výčtem, jen aby jste pochopil, že se nebavíte s blbcem, ale skoro kolegouNe, nepovažuji všechny za blbce. O SQL injection jsem vám nenapsal ani čárku do té doby, než jste vy sám nenapsal kód, který je na SQL injection náchylný. Upozorňovat vás na SQL injection zjevně je potřeba, když pořád trváte na tom, že budete používat hacky, které možná proti SQL injection trochu pomáhají ale spíš ne. Máte aspoň nějaký důvod, proč používáte nebezpečné skládání SQL dotazů místo parametrických dotazů?
Ukládat statické texty pro gui do databáze není většinou štastné rozhodnutí. Databáze je primárně na živá (nestatická) data. Stejně jako kód který je statický, neukládáte do databáze, tak i statické texty nedává smysl ukládat do DB.
U statických textů, vás nezajímá transakčnost změn a podobné vlastnosti, které vám poskytují databáze. Zato pravděpodobně budete chtít verzování těchto textů (kdo kdy změnil jaký text) a jednoduchou úpravu v textovém souboru. Pokud při nasazení nové verze vaší aplikace nebudete potřebovat dělat zásah do databáze, tak zredukujete rizika při nasazení (data v databázi nemají příkaz "nainstaluj předchozí verzi před pokaženým nasazením" zatímco u verzovaného aplikačního kódu je to většinou triviální).
Tady máte příklad jak se řeší statické texty.
Nevyjádřil jsem se přesně. Coby databáze jsem myslel splňující ACID, což je drtivá většina SQL databází. A na SQL řešení se tazatel ptal.
Gnu gettext je úplně jiný typ úložiště dat a mnohem lépe by IMHO vyhovoval požadavkům tazatele.
Tiskni
Sdílej: