Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 7.0.0. Pro sandboxing se na Linuxu nově používá Landlock místo Bubblewrap. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Správce fotografií Shotwell byl vydán ve verzi 33.0 (GitLab). Hlavní novinkou v tomto vydání po dvou letech je přechod na GTK4.
Na YouTube byly publikovány videozáznamy přednášek a na Flickru fotografie z konference EuroPython 2026.
Byl vydán Debian 13.7, tj. sedmá opravná verze Debianu 13 s kódovým názvem Trixie. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.
Jiří Eischmann se v příspěvku Fiasko jménem W Social na svém blogu věnuje evropské sociální síti W: "W Social je příkladem toho, že se problémy sociální sítí nedají řešit od exekutivního stolu. Když na začátku tohoto roku v Davosu oznámili vznik nové sociální sítě W Social, politici se mohli přetrhnout ve chvalozpěvech. Konečně evropská sociální síť a ještě s ověřením identity. … Jak se ukázalo, když v Davosu W Social oznamovali, neměli kromě
… více »Výrobce hardwarových kryptoměnových peněženek Trezor upozorňuje na bezpečnostní incident u společnosti Brevo, kterou využívá k odesílání newsletterů. Útočník na e-mailové adresy odeslal phishingový e-mail.
Clement "Clem" Lefebvre publikoval souhrn dění v Linux Mintu za srpen 2026. Aplikace XApp mají vlastní webovou stránku xapp-project.org. Představena byl čtečka EPUB s názvem Xepub a kalendář Clockenstein.
Byla vydána nová verze 3.2.6 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání a v souboru NEWS na GitLabu. Nový GIMP je již k dispozici také na Flathubu.
Bylo vydáno Ubuntu 24.04.5 LTS, tj. páté opravné vydání Ubuntu 24.04 LTS s kódovým názvem Noble Numbat. Přehled novinek a oprav na poznámkách k vydání.
Švýcarsko testuje přechod z Microsoft 365 na FOSS, konkrétně balík openDesk (Wikipedie) od německé státní společnosti ZenDiS (Wikipedie), s cílem posílit digitální suverenitu.
gcc test.cpp -o test -Wall -pedantic -pthread
a haze mi to chybu:
test.cpp: In function ‘void* PrintHello(void*)’:
test.cpp:8: error: cast from ‘void*’ to ‘int’ loses precision
a zdrojak je tento:
void *PrintHello(void *threadid)
{
int tid=(int)threadid;
printf("Hello World! It's me, thread #%d!\n", tid);
pthread_exit(NULL);
}
int main (int argc, char *argv[])
{
pthread_t threads[5];
int rc, t;
for(t=0; t<5; t++)
{
printf("In main: creating thread %d\n", t);
rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t);
if(rc)
{
printf("ERROR; return code from pthread_create() is %d\n", rc);
return -1;
}
}
pthread_exit(NULL);
}
omlouvam se ze na vas vyrukuji asi s trivialnim dotazem, ale opravdu netusim co s tim.....
int tid=(int)(long)threadid;by mělo jít.
Trochu mi vrtá hlavou, co vede člověka k použití '-pedantic' při překladu zdrojáku, kde se přetypovává void* na int… :-)
Buď to překládejte s méně striktními parametry nebo to předání proveďte čistším způsobem.
int (64-bitová platforma?), pak tam prostě ke ztrátě informace dochází. Překladač nemůže vědět, že to nevadí, protože to stejně vždycky voláte s pointerem, který sám vznikl přetypováním z int.
Na x86 je šířka intu stejná nebo menší než šířka pointeru, ale jinde to tak být nemusí.
Já osobně bych to ale řešil tak, že bych předávat pointer na int (nebo rovnou na nějakou strukturu, pokud bude potřeba více dat). Ale pozor aby ses nespálil (nepřepsal si něco pod rukama dříve, než to to vlákno přečte), taky bys měl dbát na uvolňování paměti.
unsigned long long tid=(unsigned long long)threadid;
printf("Hello World! It's me, thread #%llu!\n", tid);
i když by se jistě našlo něco lepšího či přenositelnějšího.
P.S. A je docela možné, že ten zdroják v c++ budete muset kompilovat třeba g++, ne jen gcc.
Stálo by za to označit, která z řádek programu je řádka 8, na které to tu chybu hlásí
Jinak, potenciální problémy tam vidím tyto:
PrintHello() nemá stanovenou výchozí hodnotu, přestože je deklarovaná jako vracející void *; vím, že ve skutečnosti se ta funkce nikdy nevrátí, ale překladač to IMHO neví a může ho to mást. Doplnil bych fiktivní return NULL. To samé platí pro main().PrintHello(), by měla pouze napsat pozdrav; rozhodně ne vypsat pozdrav a pak ukončit thread! Buď přejmenovat na PrintHelloAndExit, nebo dát ukončení threadu někam jinam. Kdyby se taková funkce vyskytovala ve skutečné aplikaci, bude to ošklivá nášlapná mina na každého, kdo bude ten program udržovat nebo upravovat.pthread_exit() jsou v daném kódu úplně zbytečná; hlavní funkce threadu může svůj výstupní ukazatel prostě vrátit (proto je deklarována jako vracející void *; hlavní funkce programu taktéž.tid, je matoucí, protože skutečný TID (ten, který se získá voláním funkce gettid()) je něco úplně jiného. Opět ošklivá nášlapná mina, zvlášť proto, že skutečný TID je také celé číslo.Funkce PrintHello() nemá stanovenou výchozí hodnotu, přestože je deklarovaná jako vracející void *; vím, že ve skutečnosti se ta funkce nikdy nevrátí, ale překladač to IMHO neví a může ho to mást. Doplnil bych fiktivní return NULL. To samé platí pro main().Překladač to ví.
Štábní kultura: funkce, která se jmenuje PrintHello(), by měla pouze napsat pozdrav; rozhodně ne vypsat pozdrav a pak ukončit thread! Buď přejmenovat na PrintHelloAndExit, nebo dát ukončení threadu někam jinam. Kdyby se taková funkce vyskytovala ve skutečné aplikaci, bude to ošklivá nášlapná mina na každého, kdo bude ten program udržovat nebo upravovat.To by pak mělo na konci jména mít AndExit nějakých 90 % funkcí pro vlákna, co se v programech kdy vyskytují
A pthread_exit v main() se mi nelíbí ani trochu.
PrintHello nelze vyčíst, že je to hlavní funkce vlákna. Kdyby se jmenovala, dejme tomu, HelloThreadMain, bylo by hned jasno.
Kdyby to byla knihovní funkce, která dejme tomu vykreslí nějaké logo, tak se může klidně stát, že ji někdo vyvolá ze singlethreadového programu, a žuch.
A pthread_exit v main() se mi nelíbí ani trochu.Niekedy to volanie môže myť zmysel. Ak tam je, tak sa počká, kým sa všetky vlákna ukončia (a až potom sa ukončí aj hlavné vlákno). Práve v tom príklade to zmysel má, kedže tam nie je žiadne čakanie na to, až urobia tie vytvorené vlákna to, čo urobiť majú.
unsigned long long tid=(unsigned long long)threadid;
printf("Hello World! It's me, thread #%llu!\n", tid
tak:
int tid=(int)(long)threadid;
nutno kompilovat s g++
dekuji vsem kteri prispeli k vyreseni meho problemu, dekuji i tem kteri me poucili o štábní kultuře, v budoucnu az ziskam urcite zkusenosti se ji budu urcite ridit....
Tiskni
Sdílej: