Hackeři ve Francii ukradli data více než půl milionu daňových poplatníků. Je to jeden z největších hackerských útoků v dějinách země. O útoku z konce června informovala až teď daňová správa. Teprve od pondělí dotčeným občanům zasílá e-maily s instrukcemi, jak postupovat dál. Hackeři se sice nedostanou k penězům dotyčných, hrozí ale věrohodné podvody. Hackeři získali třeba celá jména, údaje o rodinných příslušnících nebo také údaje o
… více »Společnost Framework představila nový Framework Laptop 12 s Intel Core Series 3, Thunderbolt 4, Wi-Fi 7, volitelnou čtečkou otisků prstů a podsvícenou klávesnicí s open-source firmwarem ZMK. Objednat lze s předinstalovanou Fedorou 44 KDE Plasma.
Byl vydán Mozilla Firefox 154.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 154 bude brzy k dispozici také na Flathubu a Snapcraftu.
Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 168 (pdf).
Open-source citační manažer Zotero (Wikipedie, GitHub) byl vydán v nové major verzi 10. Přehled novinek v příspěvku na blogu.
Interaktivní editor binárních dat GNU poke byl vydán ve verzi 5.0 (seznam změn).
Byla vydána verze 0.85 telnet a ssh klienta PuTTY (Wikipedie). Řešeno je 5 zranitelností.
Byly publikovány novinky z vývoje GIMPu. Pracuje se na novém formátu souborů. Stávající binární XCF bude nahrazen "zazipovaným XML". XCF zůstane plně podporován pouze pro načítání starých souborů.
Workshop o umělé inteligenci v Dartmouthu proběhl před 70 lety, od 18. června do 17. srpna 1956. Dvouměsíční soustředění 6–11 informatiků, iniciované Johnem McCarthym, položilo základy oboru umělé inteligence.
Po 9 týdnech vývoje od vydání Linuxu 7.1 oznámil Linus Torvalds vydání Linuxu 7.2. Podrobný přehled novinek a vylepšení na Linux Kernel Newbies nebo LWN.net: první a druhá polovina začleňovacího okna.
Kdysi dávno jsem byl v konferencích cecko@pandora.cz a os@pandora.cz. Už nevím, do které z nich kdosi poslal kus kódu v céčku, který řadu přítomných udivil. Jednalo se o Duff's device, které by se ale mělo jmenovat spíš Hell device. Po letech jsem na tuto konstrukci znovu narazil, tak se s vámi chci podělit
O co jde? Je to kus kódu, kde je konstrukce switch promíchána s jinou konstrukcí - v tomto případě do/while. A je to validní céčkový zdroják.
switch (count % 8) /* count > 0 assumed */
{
case 0: do { *to++ = *from++;
case 7: *to++ = *from++;
case 6: *to++ = *from++;
case 5: *to++ = *from++;
case 4: *to++ = *from++;
case 3: *to++ = *from++;
case 2: *to++ = *from++;
case 1: *to++ = *from++;
} while ((count -= 8) > 0);
}
K čemu je to dobré? Dnes k ničemu. Ale v 80. letech se dělaly optimalizace na zmenšení počtu větvení programu, takže výše uvedený kód byl rychlejší než:
do { /* count > 0 assumed */
*to++ = *from++;
} while (--count > 0);
Dneska už jsou procesory někde jinde, zrychlení to nepřinese. A programátoři takhle už optimalizovat neumí - za vše mluví, že když jsem si psal na tohle benchmark, vyrobil jsem Segmentation Fault. Jdu zase Pythonit.
Tiskni
Sdílej:
1. Pokud by taková optimalizace skutečně pomohla, měl by ji dělat překladač, ne programátor. Takhle zprasit a znečitelnit zdroják kvůli drobnému zrychlení, to nejsem při nejlepší vůli ochoten považovat za chvályhodné.
2. Současné verze GCC (a nejspíš i jiných překladačů) mají funkce typu memcpy() implementované jako builtin, který už je optimalizován pro danou platformu.
3. Až někdy nebudu mít do čeho dloubnout, docela rád se podívám, jestli je to syntakticky opravdu v pořádku nebo jestli je to jen nepozornost překladače.
A to zrychlení v danou chvíli asi nebylo "drobné", myslím, že bylo dvojnásobné nebo tak nějak. Teoreticky bych ho (na modernějším VAXu) mohl zkusit změřit, luštit latenci VAXích instrukcí ze specifikace se mi nechce, je příliš tlustá a jednoduchá tabulka v ní není.
2) Tohle ale nebyl memcpy().
Nebo aspoň ne původně: Alblaho měl vložit původní verzi, jejíž smysl je poněkud čitelnější (viz Wikipedia).
do { /* count > 0 assumed */
*to = *from++; /* Note that the to pointer is NOT incremented */
} while (--count > 0);
Tedy neinkrementuje pointer to. Čuměl jsem na to jak puk, a myslel jsem, že ostatní čtenáři by čuměli taky. Pak jsem si přečetl, že na adrese to je namapován I/O port a rozsvítilo se mi. Takže původní verze sice nelze smést ze stolu tvrzením "použij memcpy", ale zato je dnes zcela dokonale pasé. I když jednou jsem v nějaké embedded krabičce na port takhle přistupoval...
Kdysi dávno jsem byl v konferencích cecko@pandora.cz a os@pandora.cz.A proč už nečteš OS? Nedávno jsme tam probírali, jestli by náhodou kluci od Flexu nechtěli to svoje dítko opensourcovat
Tedy ve skutečnosti o tom padly dvě věty a zas to šlo hodně rychle do kytek. Ale co, Aleš Procháska byl celkem pro
Tento hustý kousek kódu mě zaujal natolik, že jsem udělal malý benchmark. 