Lazygit byl vydán ve verzi 0.62.0. Jedná se o TUI (Text User Interface) nadstavbu nad gitem.
Jiří Eischmann se v příspěvku na svém blogu o rozepsal o tom, kam se vyhledávání v jeho očích posledních 10 let posunulo, jaké má zkušenosti s AI vyhledáváním, proč na něm nechce záviset a jaké vyhledávací služby ho v poslední době zaujaly.
Wayland kompozitor Labwc byl vydán ve verzi 0.20.0. Labwc je inspirován správcem oken Openbox. Postavený je na wlroots.
AlmaLinux OS byl vydán ve verzích 9.8 s kódovým jménem Olive Jaguar a 10.2 s kódovým jménem Lavender Lion. Podrobnosti v poznámkách k vydání (9.8 a 10.2). Opraveny byly zranitelnosti Copy Fail (CVE-2026-31431), Dirty FRAG, Fragnesia (CVE-2026-46300), nginx Rift (CVE-2026-42945) a SSH Keysign Pwn (CVE-2026-46333).
Seznam.cz vykázal za rok 2025 tržby v celkové hodnotě 6,454 miliardy korun. Oproti roku 2024 nárůst o 3,68 %. Zisk před zdaněním oproti předcházejícímu roku poklesl, a to o 11,21 % na 1,330 miliardy korun. Vlastní velké jazykové modely SeLLMa najdou dnes uživatelé téměř na všech seznamáckých službách. Na všechny obsahové služby byla zavedena technologie text-to-speech, díky níž si mohou uživatelé přehrát články v audio verzi namluvené
… více »Vláda představila strategické digitalizační projekty. Roadmapa zahrnuje celkem 55 projektů napříč státní správou, z toho 22 prioritních projektů vycházejících přímo z programového prohlášení vlády a 33 projektů založených na platné legislativě. Portfolio pokrývá oblasti financí, zdravotnictví, digitální identity, dat, registrů, dopravy, krizového řízení, sociálních agend i kybernetické bezpečnosti.
Vyjádřeni Software Freedom Conservancy (SFC) k porušování licence AGPLv3 společností Bambu Lab v jejich softwaru Bambu Studio pro 3D tisk. Bambu Studio vychází z PrusaSliceru. Ten zase z Slic3ru. Spuštěn byl projekt baltobu, který kombinuje několik strategií pro řešení problému. SFC zastřeší vývoj svobodné náhrady proprietární knihovny libbambu_networking pomocí reverzního inženýrství a reimplementace, forku OrcaSliceru pro Bambu Lab tiskárny od Paweła Jarczaka a forku celého Bambu Studia pod názvem Viscose.
Správce souborů GNOME Commander (Wikipedie) byl přepsán do Rustu a vydán v nové verzi 2.0.0.
Sway (Wikipedie), dlaždicový (tiling) správce oken pro Wayland kompatibilní s i3, byl vydán ve verzi 1.12. Do vývoje se zapojilo 50 vývojářů. Přehled novinek na GitHubu. Sway 1.12 závisí na wlroots 0.20.0.
Papež Lev XIV. ve své první encyklice Magnifica Humanitas (Skvělé lidství), která se věnuje umělé inteligenci (AI), varoval před dezinformacemi, které AI manipulací s obsahem vytváří. Moc mají podle něj sociální sítě ovládané hrstkou soukromníků. Upozornil také roli digitálních platforem v obchodování s lidmi, které podle něj musí být uznáno jako současná forma otroctví. Papež se také poprvé omluvil za roli, kterou Vatikán sehrál při legitimizaci otroctví, a za to, že jej po staletí neodsoudil.
PHP bylo vydáno ve verzích 8.0.1, 7.4.14 a 7.3.26. Řešena je bezpečnostní chyba CVE-2020-7071 (#77423) ve funkci parse_url().
Tiskni
Sdílej:
ve verzích 8.0.1, 7.4.14 a 7.3.26Kdo chce kam, pomozme mu tam. Když musí mít někdo všechno co nejnovější, takto pak takhle dopadá. My naštěstí jedeme na dobře vyzkoušeném a odladěném PHP 5.
null to sám považuje za “billion dollar mistake”.
Stejně tak je vinou jazyků, že null pointer exception vůbec umožňují.A jaké je tedy správné řešení toho, že ukazatel není nastaven?
Potom takové ty věci jako existuje/neexistuje nebo vypadl výsledek/vypadla chyba jsou pouze specielné případy jednoho přístupuJeště k tomu dodám, že to má mj. tu výhodu, že se mezi těmahle dvěma snadno mapuje. Tj. optional hodnotu snadno namapuju na 'chybovatelnou' hodnotu tím, že tomu prostě řeknu, jaká tam má být chyba v případě, že hodnota chybí. 'Chybovatelná' hodnota se zkonvertuje ještě snáz (jedna mapovací funkce, která vevnitř prostě nahradí chybu za 'Nothing'), což se hodí v případech, kdy chcem ignorovat chybu a reportovat ji jen jako chybějící hodnotu. Tj. není potřeba dělat nějaký rozskoky typu jestli chybí hodnota, tak vyhoď výjimku tu a tu, jinak udělej to a to anebo jestli nastala výjimka, tak vrať prázdnou hodnotu, jinak to a to ... apod., člověk to prostě jen zkonvertuje jedno na druhý...
Optional<něco>" má být jen "něco".
A není pak už jednodušší pro povinné hodnoty používat reference, zatímco ukazatele si nechat jen pro nepovinné (a u nich vždy počítat i s možností nullptr)?
Souhlasím, že nedefinované chování je horší než vyhozená výjimka. Nicméně stejně se na chybu přijde až v době běhu a rozdíl oproti -fsanitize=address mi nepřijde až tak výrazný.
#include <iostream>
#include <string>
#include <optional>
int main(int argc, char**argv) {
// tohle odhalí ASan:
std::string* r = nullptr;
std::cout << "r = " << *r << std::endl;
// tady vyletí výjimka:
std::optional<std::string> n = nullptr;
std::cout << "n = " << *n << std::endl;
}
Stále je to polovičaté řešení, protože to nezabrání programátorovi udělat chybu a ani ji to neodhalí v době kompilace. Viz #21 – to rozlišování „bezpečných“ a „nebezpečných“ částí kódu nebo lépe ty anotace mi přijdou užitečnější, protože tam je možnost odhalit chybu už při kompilaci (nebo dokonce při psaní kódu v IDE, které na to může upozorňovat).
Pozor, operator* v std::optional nehadze vynimku, ale ma nedefinovane chovanie. Vynimku hadze metoda value().
Mně to hází výjimku v obou případech:
terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_M_construct null not valid
Ale je pravda, že v dokumentaci se píše:
The behavior is undefined if *this does not contain a value.
This operator does not check whether the optional contains a value! You can do so manually by using has_value() or simply operator bool(). Alternatively, if checked access is needed, value() or value_or() may be used.
To je asi docela škoda, protože pak stačí, aby programátor na jednom místě napsal hvězdičku a celý přínos std::optional se vytrácí. Takže zase viz #21.
Akorát se na to nedá spoléhat...
Souhlasim s tim, že ten Optinal v jazycích jako C++ nebo Java ve výsledku není moc užitečný, ona celá pointa toho ML přístupu je ve vždy nenulových hondotách a Optional je jen doplněk (aby šly nějak udělat volitelné hodnoty)... Tj. zkopírovat jen ten doplněk jaksi k ničemu moc není...
. Jasně, i Rust musí dělat kontrolu mezí při přístupu přes index, ale tohle může překladač úplně vyoptimalizovat při použití iterátorů nebo range based for, takže prakticky to nevadí. Navíc v Rustu má překladač přesné informace o tom, kam který pointer ukazuje, takže může udělat optimalizace, které C/C++ v principu nikdy nedokáže, protože to memory model C/C++ neumožnuje. V C/C++ je strict aliasing, ale ten funguje jen pro proměnné různých typů. Rust takové optimalizace umí udělat i pro proměnné stejných typů, ale je to momentálně zakázané, kód v LLVM je rozbitý (žádný jazyk mímo Rustu to nedokáže využít, takže to není odladěné). Pokud se to podaří dotáhnout, má Rust potenciál generovat lépe optimalizovaný kód než C/C++: https://github.com/rust-lang/rust/issues/54878
Na druhu stranu, kazda kontrola je draha a ked si je programator uplne isty, ze index na ktory pristupuje aj existuje, moze pouzit [] a usetrit cas.Bounds-checking není drahá kontrola. Existujou situace, kdy to je drahé, ale jsou poměrně vzácné. IMO situace, kdy ušetřit bounds-checking je skutečně potřeba, reálně nastane řádově méně často, než situace, kdy programátor má iluzorní pocit, že "tenhle přístup přes operátor [] je zaručeně bezpečný". Navíc bounds-checking, resp. obecně kontrolu invariantů je typicky možné vytáhnout před výkonově kritickou část kódu, případně je schopen to udělat i sám kompilátor nebo mu můžu pomoct. Pokud se budem bavit o Rustu, tak ten poskytuje rychlý přístup taky, ale právě pod fíčurou
unsafe , aby bylo jasno, že "bacha, tady se děje něco nebezpečnýho" a aby ten bezpečný přístup byl default.
Nevím, proč do toho zase taháš Javu, přijde mi to u tebe až jako taková obsese…
A zrovna Java nabízí prostředky pro řešení nejen tohoto problému, ale obecně jakýchkoli kontrol a dodatečných metadat (anotace, anotační procesory…). Tzn. není v tom jazyce zadrátovaná ochrana konkrétně před NullPointerException, ale jsou tam obecné prostředky, framework, pro řešení podobných úloh.
Tohle je dobré téma na článek. Díky za tip :-)
Aha, takže obsese. Ve #21 nepadlo ani slovo o Javě.
Souhlasim s tim, že ten Optinal v jazycích jako C++ nebo Java (...)něčim jako
Souhlasim s tim, že ten Optinal v běžných statick typovaných jazycích, které nevyžadují nenulovatelné pointery/reference (...)C/C++ a Java jsou ty nejvýznamnější příklady, které mě napadly. Ještě by se dal asi přidat C#, ale ten jde dost mimo mě a má nějakou podporu pro non-nulovatelné reference, u které moc neznám vlastnosti a implikace. Dále asi přichází v úvahu Golang, ale ten zas zřejmě nemá žádné ambice poskytovat Optional typ (nemá ani generika). Dále neuvažuju dynamicky typované jazyky, protože se bavíme o fíčuře statické analýzy. No takže ono těch jiných příkladů vlastně až tak moc nezbývá, alespoň z běžných/mainstream jazyků... Každopádně, vyjadřoval v zásadě souhlas s tvým názorem, aspoň jsem si to myslel. Jsem zas jednou udělal tu chybu, že jsem napsal něco do xkucf subvlákna
Tak zrovna u jazyků pracujících se surovou pamětí a ukazateli je tahle diskuse celkem zbytečná – tam se tomuto problému nejde vyhnout a ukazatel je jen číslo, které může být klidně nula nebo ukazovat na nějakou nesmyslnou pozici v paměti. Maximálně se to dá (částečně) řešit rozlišováním nějakých režimů, kdy předem řeknu, zda se daná část kódu chová „bezpečně“ nebo „nebezpečně“.
Zajímavější je tahle diskuse u jazyků, které programátora od surové paměti odstiňují. Tam se nabízí použití Optional, ale pokud ho člověk nebude používat důsledně všude a nezakáže se používání proměnných, které by mohly být null/prázdné, tak to stejně nic neřeší. A balit všechno do Optional a všechny operace provádět, jen když hodnota nechybí, vede na ošklivý a nepřehledný kód. Alespoň co se týče běžných-imperativních jazyků. Hloupé na tom je i to, že s hodnotou, která nikdy nechybí a s hodnotou, která chybět může, se pracuje jinak a ten zápis je odlišný – přitom tahle vlastnost (povinný/nepovinný atribut) se v čase běžně mění, je to součást měnícího se zadání. To už mi přijde užitečnější si proměnné nějak anotovat (třeba jako @NotNull, @Nullable atd.) a mít pro povinné i nepovinné stejnou syntaxi, ale dát kompilátoru nebo dodatečnému analyzátoru kódu informaci, na základě které může ověřit správnost a upozornit nás, když neošetřujeme potenciálně chybějící hodnoty a chováme se, jako kdyby byly vždy přítomné. Tzn. dívat se na tu povinnost jako na metadata, na základě kterých se dají dělat kontroly, ale neměnit kvůli tomu syntaxi.
$a?->b() je zkrtka pro $a !== null ? $a->b() : null), což tu kontrolu schová, když víš, že s tím počítáš, nebo to nenastane. A když na začátek metody dáš podmínku, která ošetří null, tak pak z toho máš typ bez otaznčku a je to v pohodě také.
Aby tento přístup fungoval, je potřeba mít dostatečně schopný typový systém. Jazyky na úrovni C++ a Javy na to prostě nestačí.
null a null pointer exception.
null je často legitimní stav – ne nadarmo pro to mají databáze speciální hodnotu. Chyba je, pokud se nerozlišuje, zda proměnná může nebo nemůže být null (tohle mají relační databáze ošetřené už celé generace, takže se nelze vymlouvat, že to někoho nenapadlo) a že v případě, kdy může být null, není povinné ošetření tohoto stavu.
null nebo NULL vyjadřuje neznámou nebo neexistující hodnotu. Programovací jazyky by s tím samozřejmě také mohly zacházet inteligentněji – a mnohé to dělají.