Společnost Meta na dvoudenní konferenci Meta Connect 2026 představuje své novinky. Vypíchnout lze lehké brýle s funkci VR Meta VR Glasses. Do prodeje půjdou na jaře 2027 za cenu 1299,99 dolarů.
Google Chrome 154 byl prohlášen za stabilní. Nejnovější stabilní verze 154.0.8037.57 přináší řadu novinek. Podrobný přehled v poznámkách k vydání. Opraveno bylo 108 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Vláda sníží v příštím roce výdaje na IT služby státu o 1,4 miliardy korun. Úspory má umožnit lepší koordinace nákupu služeb napříč resorty prostřednictvím nového zmocněnce. Celkové roční výdaje státu na informační technologie a digitalizaci se podle údajů ministerstva průmyslu a obchodu pohybují okolo 20 až 25 miliard korun ročně, pro letošek bylo na 320 projektů vyčleněno 21 miliard.
Irská komise pro ochranu dat (DPC) uložila americké technologické společnosti Google ze skupiny Alphabet pokutu 403 milionů eur (9,8 miliardy Kč) za neoprávněné nakládání s údaji o poloze uživatelů. Firma podle komise porušila evropské nařízení o ochraně osobních údajů (GDPR). DPC uvedla, že při šetření zjistila, že si lidé nemuseli být vědomi skutečnosti, že jejich poloha byla využívána například k ovlivňování prostřednictvím reklam nebo k odvozování jejich zájmů, a mohli tak ztratit kontrolu nad svými osobními údaji.
Byla oznámena beta verze nového video kodeku Pyrowave pro streamování her v Steam Remote Play. S vysokou propustností a nízkou latencí. S podporou HDR a YUV 4:4:4.
Byl vydán Sublime Text 4 Build 4213. Sublime Text (Wikipedie) je proprietární multiplatformní editor textových souborů a zdrojových kódů. Ke stažení a k vyzkoušení je zdarma. Pro další používání je nutná licence v ceně 99 dolarů. Spolu se Sublime Merge je cena 168 dolarů.
Firma Anthropic, tvůrce AI modelu Claude, začala v oblasti Sanfranciského zálivu v tichosti provozovat vlastní biotechnologickou laboratoř. Anthropic prý chce pomocí AI urychlit hledání léků na nemoci, jimž farmaceutický průmysl dle názoru firmy věnuje příliš málo pozornosti. Firma tvrdí, že laboratoř se zatím soustředí především na základní biologii, nikoli přímo na vývoj léčiv. Farmaceutický výzkum je pro generálního ředitele Daria Amodeie velice osobní téma, jeho otec zemřel na hepatitidu C několik málo let před objevením účinné léčby.
Vědci z Googlu dokončili mapu všech neuronových spojení v mozku (tzv. konektom) samečka mušky octomilky obecné (drosophila melanogaster), hlavním cílem je komparativní analýza s již zmapovaným mozkem samičky. S tímto veřejně dostupným modelem, čítajícím přibližně 160 000 neuronů, se začali bavit nadšenci. Mozek mouchy pohání experimentálního kryptoburzovního bota Stonkfly, případně si zahrál počítačové hry Beat Saber, Mario64 a samozřejmě DOOM (gameplay videa). Ani mozek samičky nezůstal stranou, vyzkoušel si Minecraft.
Alibaba Cloud je dalším sponzorem nadace Omacom Foundation stojící za linuxovou distribucí Omarchy. Přislíbená částka je 3 miliony dolarů, tj. 1 milion dolarů ročně po dobu tří let. Stejná částka jako u DigitalOcean.
Byla vydána nová verze 262 správce systému a služeb systemd (Wikipedie, GitHub).
if ($url == 'foo'){
$a = 10;
return;
}
Řešení dotazu:
return slouží pro návrat z funkce, nikoliv pro ukončení cyklu. Pokud je ten kód součástí funkce, return tam použít můžeš.
if(x>0) printf("Cislo je vetsi nez nula.\n");
else printf("Cislo neni vetsi nez nula.\n");
printf("A pokračujem společným kodem.\n")
if(x>0) printf("Cislo je vetsi nez nula.\n");
else printf("Cislo neni vetsi nez nula.\n");
return;
Podle mě je to takto přehlednější, ale samozřejmě každý má jiné zvyky.
Spíš jde o tohle:
void napi_consume_skb(struct sk_buff *skb, int budget)
{
if (unlikely(!skb))
return;
/* dalších 20 řádků vlastního kódu funkce */
}
Samozřejmě můžete celý ten zbytek těla funkce, tj. celou její podstatu, odsadit a dát do else větve (nebo spíš rovnou otočit tu podmínku), ale čitelnosti to rozhodně neprospěje.
return je návrat z procedury/funkce. Dokonce se taková struktura poměrně často i používá. V testu if se posoudí, jestli parametry funkce, nebo jiná data, jsou chybně. Pokud jsou, tak nemá smysl ve funkci dále pokračovat, ošetří se chybový návratový stav a returnem se vrací.
ifů…
returnů sekat goto na něj. :-)
IF proměnná negativ,zero,positivese třemi labely. kdy kód za žádné podmínky nemusel pokračovat za IF.
s oblibou jsem s tím na VŠ provokoval.
Dokonalý chaos ovšem přinášejí interpretované jazyky. Např. "oblíbené"
ON <expr> GOTO <num> [, <num>... ]
v řadě dialektů BASICu a v některých dokonce
GOTO <expr>
Z toho se teoretikům programovacích stylů ježily chlupy i tam, kde netušili, že nějaké mají. :-)
Snad jsem Vám odpověděl.
Mám-li být upřímný, za sebe musím říct, že moc ne. Co se týká review kódu, osobně mnohem radši na začátku funkce uvidím
mp = kzalloc(sizeof(u32) * RTAX_MAX, GFP_KERNEL);
if (unlikely(!mp))
return -ENOMEM;
než aby tam bylo formální "goto out" a já se musel ještě podívat dolů, jestli se v tom případě nedělá něco dalšího. To má naopak dobrý smysl, pokud na konci bude něco jako
err:
kfree(mp);
return -EINVAL;
}
a bude se tam skákat z víc různých míst. Nebo třeba u kaskád jako tady
void copy(source, target) {
if (!file_exists(source)) {
throw "Zdrojový soubor neexistuje.";
}
if (!is_dir(source)) {
throw "Zdroj nemůže být adresář.";
}
if (!is_readable(source)) {
throw "Zdrojový soubor nelze číst.";
}
if (!is_dir(target)) {
throw "Cíl nemůže být adresář.";
}
parent = parent_dir(target);
if (!file_exists(parent)) {
throw "Neexistuje adresář pro cílový soubor.";
}
if (exists(target)) {
throw "Cílový soubor již existuje.";
}
if (!is_writable(parent)) {
throw "Do cílového adresáře nelze zapisovat.";
}
if (get_free_space(parent) < get_file_size(source)) {
throw "V cílovém adresáři není dost volného místa.";
}
buffer, offset;
do {
buffer = read(source, offset, size(buffer));
write(target, offset, buffer);
offset += size(buffer);
} while(size(buffer) > 0);
}
Když to přepíšu na jediný výstupní bod, dostanu:
void copy(source, target) {
error = null;
if (file_exists(source)) {
if (is_dir(source)) {
if (is_readable(source)) {
parent = parent_dir(target);
if (file_exists(parent)) {
if (is_dir(target)) {
if (is_writable(parent)) {
if (!exists(target)) {
if (get_free_space(parent) >= get_file_size(source)) {
buffer, offset;
do {
buffer = read(source, offset, size(buffer));
write(target, offset, buffer);
offset += size(buffer);
} while(size(buffer) > 0);
} else {
error = "V cílovém adresáři není dost volného místa.";
}
} else {
error = "Cílový soubor již existuje.";
}
} else {
error = "Do cílového adresáře nelze zapisovat.";
}
} else {
error = "Cíl nemůže být adresář.";
}
} else {
error = "Neexistuje adresář pro cílový soubor.";
}
} else {
error = "Zdrojový soubor nelze číst.";
}
} else {
error = "Zdroj nemůže být adresář.";
}
} else {
error = "Zdrojový soubor neexistuje.";
}
throw error;
}
Pro mne je tedy ten druhý kód daleko nepřehlednější, a porušuje například jednu velmi dobrou zásadu omezující počet vnoření bloků. Nebo jak byste ten kód přepsal na jediný výstupní bod bez těch vnořených ifů? Počet vnoření by se samozřejmě dal zredukovat sloučením několika testů do jednoho a vytknutím do samostatné funkce, ale to neřeší princip problému.
Možná je rozdíl v programování triviálních funkcí přímo nad procesorem, kde máte jasně definované podmínky běhu, a pokud se náhodou dostanete mimo ně, zastavíte procesor a nějaký watchdog rozsvítí červenou kontrolku, že je všechno špatně (a mimochodem reset procesoru podle mne je výstupní bod, je to obdoba vyhození výjimky ve vyšších programovacích jazycích a způsob, jakým se ukončí provádění dané funkce). A v programování pro počítače, tablety, mobily, televize apod., kde uživatel pracuje přímo s programem, podmínky jsou velmi různorodé a každý očekává, že se z nečekaných situací dokáže program zotavit.
Tiskni
Sdílej: