Open source router Turris Omnia NG Wired je v prodeji. Jedná se o Turris Omnia NG bez Wi-Fi. Je připraven pro zamontování do racku.
Sníh roztál a roztávají i bastlíři. Žene se na nás celá řada konferencí a seminářů technického rázu. Zajímá vás, jaké? Pak se připojte k 60. Virtuální Bastlírně, tedy k veřejné diskuzi bastlířů, techniků, učitelů i vědců. Jako vždy přijde na přetřes spousta novinek ze světa hardwaru, softwaru i bizáru. Na začátek lze očekávat hardwarová témata, tedy například nový KiCAD 10, nové akcelerátory LLM s nízkou spotřebou, nejvíce fosforeskující
… více »IuRe (Iuridicum Remedium) v rámci programu Digitální svobody zveřejnila analýzu dopadů a efektivity systémů ověřování věku v digitálním prostoru, která srovnává implementace ověřování věku v Austrálii, Velké Británii a Evropské unii.
Multiplatformní emulátor terminálu Ghostty byl vydán ve verzi 1.3 (𝕏, Mastodon). Přehled novinek a vylepšení v poznámkách k vydání.
Byla vydána nová verze 14.4 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.
Databáze DuckDB (Wikipedie) byla vydána ve verzi 1.5.0. S kódovým názvem Variegata (husice rajská). Přináší řadu vylepšení, včetně nového ergonomičtějšího CLI klienta nebo podporu pro typ VARIANT a vestavěný typ GEOMETRY.
V pátek 6. a sobotu 7. března proběhl v pražském sídle Nejvyššího kontrolního úřadu (NKÚ) Hackathon veřejné správy 7.1. Publikovány byly vytvořené aplikace. V kategorii projektů rozvíjených z krajského kola zvítězil tým „Mackokládi“. Čtyři středoškoláci ze Dvora Králové uspěli s aplikací KompaZ. Jde o digitálního průvodce, který pomůže s rychlou a srozumitelnou orientací v životních i krizových situacích „krok za krokem“. Aplikace
… více »QGIS, svobodný desktopový GIS, byl vydán v nové hlavní verzi 4.0. Změny zahrnují několik nových analytických a editačních funkcí, rozšíření podpory 3D, více možností úprav uživatelského rozhraní či mnoho dalších zlepšení použitelnosti. Řada 3.44 má aktualizace plánovány do září.
Dan Blanchard vydal knihovnu pro Python chardet v nové verzi 7.0.0. S novou verzí byla knihovna přelicencována z LGPL na MIT. Souhlasili s tím všichni přispěvatelé? Dan Blanchard souhlasy vůbec neřešil. Zaúkoloval umělou inteligenci (Claude), aby knihovnu zcela přepsala a výslovně jí nařídil, aby nepoužila žádný LGPL kód. Dan Blanchard tvrdí, že se jedná o clean room design. Protistrana argumentuje, že umělá inteligence byla trénována
… více »Andy Nguyen si na svou herní konzoli PlayStation 5 (PS5) pomocí exploitu Byepervisor nainstaloval Linux (Ubuntu). V Linuxu si spustil Steam a PS5 tak proměnil v Steam Machine. Na PS5 může hrát hry, které jsou vydané pouze pro PC a jsou na Steamu [Tom's Hardware].
typedef void* ndata_t;
struct node {
struct node *left; /* left child */
struct node *right; /* right child */
struct node *parent; /* parent */
uint64_t ID;
ndata_t data; /* data */
};
typedef int (*f_stn_deldata)(ndata_t ndata); /* splaytree node delete data*/
static f_stn_deldata stn_deldata;
kde stn_deldata je pointer na userom zadefinovanu funkciu na zmazanie dat - ak by tieto data boli vytvorene dynamicky. pri mazani stromu volam funkciu, ktora prechadza rekurzivne nody a nasledne ich maze .. a tu sa zacina moja uvaha .. pseudokod pri mazani:
destroy(struct node* n) {
..
..
if (n->left) destroy(n->left);
if (n->right) destroy(n->right);
/* tu prichadza na rad moja uvaha */
if ( stn_deldata ) stn_deldata (n->data);
..
zmaz nodu
..
}
jedna sa mi o to, ze ten if sa bude vykonavat pri kazdom jednom mazani .. pri par polozkach je to jedno, pri 10mil, pripadne 1 mild. to uz aj stoji za uvahu ..
riesenie by bolo jednoduche - vytvorit dalsiu fciu destroy_nodata a tu volat rekurzivne .. logika, kt. fciu volat by bola v hlavnej st_destroy fcii
teoreticka otazka - ma zmysel sa zaoberat takouto optimalizaciou ? je to best practice ci ..?
compare(n1,n2), a mam nasledovny kod:
..
if ( (compare(n1,n2)) <0 ) {
/* do something */
}
else if ( (compare(n1,n2))== 0) {
/* do something else */
}
..
ci sa bude compare volat zadazkym, alebo si to vie zoptimalizovat a bude sa volat len raz a potom sa uz bude odkazovat na vysledok .. gcc a gcc -O3 na trivialnom priklade:
int main()
{
int x = 0;
if ( x ) return 1;
return 0;
}
raz skompilovane gcc -c test.c, druhy krat gcc -O3 -c test.c
spatne som sa pozrel cez objdump -d test.o - jasne bolo vidno, ze podmienku uz ani nekontroluje a rovno vrati 0 v druhom pripade:
test.o: file format elf64-x86-64
Disassembly of section .text:
0000000000000000 <main>:
0: 31 c0 xor %eax,%eax
2: c3 retq
k tej mojej otazke - neda sa povedat pri kompilacii, ci je alebo nie je def. - to sa zisti az pri linkovani .. resp., striktne asi vzato, stn_deldata je zadef. ako neinicializovana premenna pri kompilovani (az st_init ju nastavi bud na NULL alebo na adresu user fcie)
st_destroy sa vola vzdy, ta potom "spusti" hlavnu destroy fciu, ktoru som spominal hore .. user teda v kode pouzije:
/* init s user def. compare/dump/destroy fciami */
struct splaytree *st = st_init(mycompare, mydump, mydestroy);
..
..
/* konecny destroy */
st_destroy(st);
kde st_destroy(struct splaytree *st) vola st_destroy_nodes(struct node* n), ktora sa vola rekurzivne (to je prave to telo fcie, ktore som v mojom prispevku nazval len destroytakze v hlavnej st_destroy by som sa rozhodol, ci sa bude volat rekurznivne "s data delete", alebo len "node delete" ..
ano, mozno je to moc spekulativne, zaujima ma vsak nazor, priapdne skusenosti druhych
Tiskni
Sdílej: