Komunita kolem Linuxu From Scratch (LFS) vydala nové verze knih s návody na instalaci vlastního linuxového systému ze zdrojových kódů Linux From Scratch 13.0 a Beyond Linux From Scratch 13.0. Pouze se systemd.
Byla vydána nová stabilní major verze 25.12 linuxové distribuce primárně určené pro routery a vestavěné systémy OpenWrt (Wikipedie). Jedná se o nástupce předchozí major verze 24.10. Přehled novinek v poznámkách k vydání. Podporováno je více než 2200 zařízení.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za únor (YouTube). Odstraněn byl veškerý kód napsaný ve Swiftu. JavaScriptový engine LibJS byl reimplementován v Rustu.
Byla vydána verze 1.94.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example. Zveřejněny byly výsledky průzkumu mezi vývojáři v programovacím jazyce Rust: 2025 State of Rust Survey Results.
Google zveřejnil seznam 185 organizací přijatých do letošního Google Summer of Code (GSoC). Dle plánu se zájemci přihlašují od 16. do 31. března. Vydělat si mohou od 750 do 6600 dolarů. V Česku a na Slovensku je to 900 dolarů za malý, 1800 dolarů za střední a 3600 dolarů za velký projekt. Další informace v často kladených otázkách (FAQ). K dispozici jsou také statistiky z minulých let.
Byla vydána únorová aktualizace aneb nová verze 1.110 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.110 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Apple představil 13palcový MacBook Neo s čipem A18 Pro. V základní konfiguraci za 16 990 Kč.
Kalifornský zákon AB 1043 platný od 1. ledna 2027 vyžaduje, aby operační systémy požadovaly po uživatelích věk nebo datum narození a skrze API poskytovaly aplikacím informaci, zda je uživatel mladší 13 let, má 13 až 16 let, má 16 až 18 let nebo má alespoň 18 let. Vývojáři linuxových distribucí řeší, co s tím (Ubuntu, Fedora, …).
Konference LinuxDays 2026 proběhne o víkendu 3. a 4. října v Praze v areálu ČVUT v Dejvicích na FIT. Čekají vás desítky přednášek, workshopy, stánky a setkání se spoustou chytrých lidí.
Nové verze webových prohlížečů Chrome a Firefox jsou vydávány každé 4 týdny. Aktuální verze Chrome je 145. Aktuální verze Firefoxu je 148. Od září přejde Chrome na dvoutýdenní cyklus vydávání. V kterém týdnu bude mít Chrome větší číslo verze než Firefox? 😀
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: