Byla vydána nová verze 1.13.0 dynamického programovacího jazyka Julia (Wikipedie) určeného zejména pro vědecké výpočty. Přehled novinek v příspěvku na blogu a v poznámkách k vydání. Aktualizována byla také dokumentace.
Organizátoři konference LinuxDays zveřejnili program letošního ročníku a spustili registraci návštěvníků. LinuxDays 2026 se uskuteční 3. a 4. října v areálu ČVUT v pražských Dejvicích, na Fakultě informačních technologií. Těšit se můžete na 70 přednášek a workshopů od 66 přednášejících. Konference bude rozdělena do pěti sálů s různou kapacitou. Vstup na LinuxDays je jako obvykle zdarma, stačí včas vyplnit registrační formulář. Opět je možné si na akci zakoupit oběd, ale je třeba to udělat předem, na místě už to nebude možné.
Google Chrome 153 byl prohlášen za stabilní. Nejnovější stabilní verze 153.0.8010.36 přináší řadu novinek. Podrobný přehled v poznámkách k vydání. Opraveno bylo 230 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Open-source hra Shattered Pixel Dungeon (Wikipedie) byla vydána ve verzi 4.0.0. Přehled novinek v příspěvku na blogu.
Apple dnes představil (YouTube) iPhone Duo, iPhone 18 Pro, Watch Series 12, Watch Ultra 4 a AirPods 5.
Společnost System76 představila pracovní stanici Thelio Mira AI s předinstalovaným Pop!_OS s prostředím COSMIC nebo Ubuntu. Nakonfigurovat lze až s 16jádrovým CPU AMD Ryzen 9 9950X, 192 GB DDR5 RAM, dvěma GPU NVIDIA RTX Pro 6000 a 192 GB GPU pamětí.
DigitalOcean je 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.
Na stránkách PostgreSQL bylo představeno LibreDB Studio. Jedná se o open-source self-hostované SQL IDE pro (nejenom) PostgreSQL v prohlížeči. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
Byla vydána nová verze 12.0 media serveru Jellyfin (Wikipedie). Přehled novinek v poznámkách k vydání. Pro vyzkoušení je k dispozici Demo Server. Jellyfin je fork media serveru Emby, původně Media Browser.
V MikroTik RouterOS bylo nalezeno šest zranitelností společně pojmenovaných MikroTrick umožňujících útočníkovi, pokud má přístup k SSH, získat plnou kontrolu nad zařízením bez nutnosti autentizace. Ve verzích RouterOS 7.25beta3, 7.24.2, 7.23.4 a 6.49.21 je již opraveno.
BTW hardlinkovat adresáře šlo krásně ve FAT. Tam se to někdy i povedlo nechtěně
.
Goto v jádře je celkem normálka, v každým modulu jich je několik. Ono když se v sekvenci kontroluje třeba 10 věcí (neNULLový ukazatel na strukturu, návratová hodnota několika registračních funkcí...), tak v případě něčeho jako if, by odsazení v místě po všech kontrolách bylo extrémně vpravo
. Nebo by se musely použít funkce, co by to obalily a to by tam bylo zase 10 zbytečných funkcí.
P.S. Grep v MC na .[cSh] a "goto" mě našel zatím 80000 hitů a stále roste
.
.
V kernelu se goto používá jako escape continuation, v podstatě ekvivalent vyhození výjimky. To je ve skutečnosti (IMO) nejlepší způsob, jak výjimečné situace řešit; při množství věcí, které se mohou zku*vit, by skutečně muselo být skoro každé volání funkce obklopené několika úrovněmi if-ů a nevyznalo by se v tom ani to prase.
longjmp. Nebo snad v klibc longjmp nemají?
goto, to jo...
goto použít pouze v rámci funkce.
při množství věcí, které se mohou zku*vit, by skutečně muselo být skoro každé volání funkce obklopené několika úrovněmi if-ů a nevyznalo by se v tom ani to prase.
Zvlášť při dodržení coding style, který předepisuje odsazování osmiznakovým tabulátorem a limit 80 znaků na řádek. Skalním odpůrcům goto doporučuji si nějakou funkci cvičně zkusit přepsat. Pokud by ani to nepomohlo, tak počkat půl roku a zkusit se v ní zorientovat.
pokus o alokaci prostředku 1; pokud selže goto 1; pokus o alokaci prostředku 2; pokud selže goto 2; pokus o alokaci prostředku 3; pokud selže goto 3; samotná akce; návěstí 3: uvolnění prostředku 3; návěstí 2: uvolnění prostředku 2; návěstí 1: uvolnění prostředku 1;
Jinjak ty goto v jádře typicky vypadají taktoPřesněji takto:
pokus o alokaci prostředku 1;
pokud selže goto konec;
pokus o alokaci prostředku 2;
pokud selže goto uvolni1;
pokus o alokaci prostředku 3;
pokud selže goto uvolni2;
...
uvolni2:
uvolnění prostředku 2;
uvolni1:
uvolnění prostředku 1;
konec:
return;
Je to mnohem čistší a hlavně přehlednější řešení, než kdyby se to dělalo bez goto pomocí vnořených ifů nebo pomocí opakování téhož kódu u každého selhání.
if (find ("goto", kod))
body -= 2;
nikdy nepochopil a vždy jsem to bojkotoval. Já bohužel pamatuju ještě doby BASICu a pamatuju, že ani s GOTO a GOSUB to nebylo tak strašné když to nepsalo prase, které se v tom samo nezamotalo. Tendenci vnucovat programátorovi jak má psát a snažit se ho vyučovat jsem též nikdy nepochopil. Aneb nač dělat věci jednoduše, když si to můžeme zasvinit konstruktorama, destrukotama, excepšnama a bůh ví čím ještě. Vždyť GOTO se velice snadno dá přeložit na jmp instrukci, jednu z nejpřirozenějších instrukcí procesoru.
No, ono když vidíte v kódu něco na způsob
if (problém)
goto label2;
...
label1:
úklid
return 0;
label2:
něco
goto label1;
}
tak na vás přímo dýchne tak doba BASICu na osmibitech…
Tohle není kód vanilla jádra, tenhle obrat jsem viděl v jednom modulu, který ve vanilla jádře není. Prohodit pořadí nejde, protože to, co je za label2, se nemá vykonat, pokud k němu dojdete přirozenou cestou nebo na něj skočíte odjinud. Správně by to mohlo být třeba takto:
if (problém) {
něco
goto label1;
}
...
label1:
úklid
return 0;
}
Ale i v upstreamových projektech se občas najdou strašidelné věci. Máte-li dobrý žaludek, můžete zkusit prozkoumat třeba funkci send_dg() v implementaci resolveru v glibc.
A mezitím budu přemýšlet, k čemu je to vlastně dobré... :)Jako hracka vazne dobre :) Ale realne pokud potrebujes hardlink na adresar, resilo by se to pomoci bind mount:
mount --bind /kdesi/cosi /nekde/jinde/cosi.
/
[/bind je prázdné]
/home
/var
rbind / do /bind:
/
/bind
[/bind/bind je prázdné]
/bind/home
/bind/var
/home
/var
..", která má odkazovat na rodiče. Jenže tady by těch rodičů bylo víc, takže byste si musel některého vybrat, což zase bude dělat problémy, když zrovna tu adresářovou položku, jejíž to byl rodič, smažete.
Např. by pak byl problém s položkou "..", která má odkazovat na rodiče. Jenže tady by těch rodičů bylo víc, takže byste si musel některého vybratIMHO, vzhledem k tomu, že nic jako ".." ve FS ani není je to irelevantní - systém to vygeneruje na základě cesty, takže tenhle problém odpadá.
což zase bude dělat problémy, když zrovna tu adresářovou položku, jejíž to byl rodič, smažete.No, zatím jsem nepřišel na to, jak odstranit hardlink na adresář bez smazání obsahu :)
IMHO, vzhledem k tomu, že nic jako ".." ve FS ani není je to irelevantní - systém to vygeneruje na základě cesty, takže tenhle problém odpadá.
Co prosím? Neusuzujte, prosím, jen na základě toho, jak se (defaultně) chová příkaz cd v bashi.
zatím jsem nepřišel na to, jak odstranit hardlink na adresář bez smazání obsahu
To není až tak překvapivé, vzhledem k tomu, že se s jejich existencí nepočítá. Musel byste si opatchovat syscall rmdir() nebo unlinkat() a když se zamyslíte jak, zjistíte, že není úplně triviální udělat to tak, aby to fungovalo.
ln -s vim emacs
Nieže by sa mi nechcelo hrať sa s jadrom, ale nechcem riskovať pád systému. Som rád, že mám Linux stabilný (veď za to ho už 3 roky používam) a nechcem riskovať nejakým blbým preklepom jeho pád.
Tiskni
Sdílej: