Mezinárodní federace hudebního průmyslu (International Federation of the Phonographic Industry) navrhla Evropské komisi zařazení populárního open-source nástroje yt-dlp na evropský seznam 'padělků a pirátství' (EU Counterfeit and Piracy Watch List) pro rok 2027 (plné znění žádosti IFPI). IFPI ve svém podání označuje tento aktivně vyvíjený a o rozličné funkce bohatší fork youtube-dl za 'závažný problém' pro hudební průmysl, v
… více »Byla vydána nová verze 7.4 linuxové distribuce Parrot OS (Wikipedie). Jedná se o linuxovou distribuci založenou na Debianu a zaměřenou na penetrační testování, digitální forenzní analýzu, reverzní inženýrství, hacking, anonymitu nebo kryptografii. Přehled novinek v příspěvku na blogu.
Dnes startuje desátý ročník oblíbené kyberbezpečnostní soutěže The Catch organizované Forenzní laboratoří CESNETu. Letos zavede soutěžící do světa národních výzkumných a vzdělávacích sítí (NREN). Čekají na vás tematické úlohy založené na principu Capture the Flag (CTF), hledání ukrytých flagů i zajímavé ceny. Otestujte své schopnosti a vyrazte na lov flagů.
Byly zpracovány a na YouTube zveřejněny videozáznamy z konference LinuxDays 2026.
Německý startup Aleph Alpha k příležitosti výročí sjednocení Německa zveřejnil open-weight jazykový model Kolibri, vyvíjený s ohledem na unijní pojetí autorského práva, ochranu osobních údajů GDPR a nařízení EU o umělé inteligenci, jehož 'Kodexu správné praxe' je Aleph Alpha signatářem. Výsledkem tohoto přístupu je transparentnější technologie, kterou například budou moci využívat evropské veřejné instituce, ovšem za cenu
… více »Nvidia zveřejnila návrh nové bezpečnostní platformy pro nasazování AI agentů. Jedná se o nasazení AI za použití OpenShell a Sentry, dvou oddělených bezpečnostních vrstev, v nichž může Sentry monitorovat a vyhodnocovat chování AI v OpenShellu tak, že ho v krajním případě až vypne. Mělo by to zabránit dalším únikům AI ze sandboxu.
Přímý přenos (YouTube) z konference LinuxDays 2026, jež probíhá tento víkend v Praze v prostorách FIT ČVUT. Na programu je spousta zajímavých přednášek.
Byla vydána nová verze 0.17.0 programovacího jazyka Zig (Codeberg, Wikipedie). Přispělo 206 vývojářů. Přehled novinek v poznámkách k vydání.
Open-source projekt OpenDLSS-NR je 'bitově přesná reimplementace' neuronové rendrovací sítě DLSS 5 od společnosti NVIDIA, jenže pro grafické API Vulkan (DLSS slouží k vylepšování klasickým způsobem vyrendrovaných snímků pomocí lokálních modelů umělé inteligence, a to v reálném čase). Projekt není nijak spojen se společností NVIDIA, je pouze pro OS Windows a natrénované váhy modelu si uživatelé musí obstarat sami. Zdrojový kód je k dispozici na GitHubu, pod licencí MIT s výjimkou pro komponenty třetích stran.
Společnost Cloudflare představila Clef a Clef-Flash, open-source rozhodovací modely určené pro rychlou a konzistentní klasifikaci vstupů. Na rozdíl od klasických LLM vracejí tyto modely deterministické striktně typované strukturované odpovědi s exaktními pravděpodobnostmi, tedy odpovědi ve stylu přelomového modelu Jev.
… více »Ahoj,
v souvislosti s diskuzi Metody pristupu na seriovy port v C jsem se rozhodl resit to pres vlakna. Chtel jsem to udelat tak, ze by kazda instance tridy vytvorila dve vlakna - jedno pro RX, druhe pro TX.
Bohuzel jsem narazil na problem nevim jak vytvorit vlakno, ktere se vytvori s "main" funkci, ktera je metodou dane tridy:
Udelal jsem jednoduchy example:
#ifndef _TRIDA_H_
#define _TRIDA_H_
#include <iostream>
#include <pthread.h>
using namespace std;
class my_class
{
public:
my_class(void);
private:
void* my_thread_main(void*);
pthread_t my_thread_tid;
};
#endif // _TRIDA_H_
trida.cpp
#include "trida.h"
my_class::my_class (void)
{
cout << "Hello from my_class!";
pthread_create(&(this->my_thread_tid),
NULL,
&(this->my_thread_main),
NULL);
return;
}
my_class::~my_class (void)
{
/* pthread_join() */
return;
}
void * my_class::my_thread_main (void *) {
cout << "Hello from my_thread_main!";
return(0);
}
#include <iostream>
#include "trida.h"
using namespace std;
int main (int argc, char **argv)
{
my_class example;
cout << "Hello from main!\n";
return (0);
}
Pri prekladu dostanu toto:
g++ -c trida.cpp -o trida.o
trida.cpp: In constructor ‘my_class::my_class()’:
trida.cpp:9: error: ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say ‘&my_class::my_thread_main’
trida.cpp:10: error: cannot convert ‘void* (my_class::*)(void*)’ to ‘void* (*)(void*)’ for argument ‘3’ to ‘int pthread_create(pthread_t*, const pthread_attr_t*, void* (*)(void*), void*)’
trida.cpp: At global scope:
trida.cpp:15: error: definition of implicitly-declared ‘my_class::~my_class()’
make: *** [trida.o] Error 1
Dekuji vsem za pomoc! Tomas
V prvé řadě: IMHO není vůbec dobrý nápad dělat komunikaci přes port tak, že jedno vlákno posílá a druhé přijímá. Možná se mýlím, ale myslím, že to bude strašný bordel.
Metodu třídy my_main() máš deklarovanou jako metodu třídy my_class. Volání pthread_create() očekává ukazatel na funkci, ale ty se snažíš mu předat metodu třídy - to nemůžeš udělat, protože metoda třídy očekává navíc ukazatel na "this", který jí nemáš jak předat.
Fungovalo by to, kdyby byla metoda my_main() deklarována jako statická, a ukazatel na příslušný objekt my_class bys jí předával explicitně; potom můžeš tento ukazatel předat jako "uživatelská data" skrz volání pthread_create() a vymalováno.
Jo: zkus se inspirovat nějakou už hotovou C++ knihovnou.
Jako příklad se mrkni třeba na to, jak je udělaná třída QThread z Qt. Není to nijak těžké, jen je třeba udělat ten taneček okolo předávání pointeru na objekt.
No ale jak lze tedy efektivne resit pristup k portu? Kdyz select nelze pouzit protoze chci behem prijimani a odesilani delat neco jineho a ne cekat na data od portu.
Potrebuji totiz soubezne zpracovani dat na seriovem portu a provadeni jineho kodu.
Pokud by ale byla metoda staticka, tak to by znamenalo, ze by vsechny instance tridy meli tuto metodu spolecnou.
Ale ja bych chtel aby kazdy seriovy port mel sve dve vlakna.
Napis co vlastne potrebujes udelat (co ma ta aplikace delat kdyz se zrovna nepristupuje k seriaku), a myslim ze by bylo dobre zamyslet se nad tim jestli by to neslo resit jen s jednim vlaknem a neblokujicim ctenim, ve vetsine pripadu to jde a je to lepsi reseni nez s pomoci vlaken.
... btw, nechce ovládání krtka někdo naportovat do tuxánků nebo zatacky? Mohlo by pak u jednoho počítače hrát několik dalších hráčů -- používali by jeden mikrofon a tůůůů, hůůůů, tůůůůůůů, pííííísk.
Pripojuji se v tom smyslu, že dělat vlákna přes pthreads je v c++ zbytečná dřina. Osobně bych doporučil www.boost.org/doc/html/thread.html .
Pokud bude delat jen jeden programek v C++ tak je to overkill, pokud se tim bude dlouhodobe zabejvat, tak boost je jasna volba.
Přibere tím závislost navíc, ale co se týče čitelnosti kódu (a přenositelnosti, ale to je v tomto případě asi jedno), tak tím myslím získá.
#ifndef _TRIDA_H_
#define _TRIDA_H_
#include <iostream>
#include <pthread.h>
using namespace std;
class my_class
{
public:
my_class(void);
private:
static void* _entry(void*);
void* main();
pthread_t _id;
};
#endif // _TRIDA_H_
my_class::my_class (void)
{
cout << "Hello from my_class!";
pthread_create(&(this->_id), NULL, &_entry, NULL);
return;
}
my_class::~my_class (void)
{
/* pthread_join() */
return;
}
void* my_class::_entry (void* data)
{
my_class* thread = (my_class*)data;
return thread->main();
}
void *my_class::main()
{
cout << "Hello from my_thread_main!";
return(0);
}
Tiskni
Sdílej: