Výzkumníci ukazují, jak mohou otevřené tunely a IPv6 Extension Headers synchronizovat pakety do krátkých provozních špiček. V kontrolovaném experimentu naměřili přes 180násobnou koncentraci paketového toku vůči průměrné rychlosti odesílání — nikoli 180násobné zvětšení objemu dat. Článek obsahuje metodiku, limity měření i mitigace pro GRE, IPIP a další tunely.
Po velkém úspěchu prvního MobileLinux Hackdaye se vracíme do Českých Budějovic s druhým ročníkem. V pátek 30. října 2026 od 10:00 se v prostorách Jihočeské univerzity uskuteční Embedded & MobileLinux Hackday #2. Těšit se můžete na témata jako Immutable Linux na telefonech (BengalOS), U-Boot a upstream vývoj, AI optimalizace pro embedded systémy nebo otevřený hardware. Nebude chybět praktické hackování, sdílení zkušeností a možnost … více »
Dne 21. října 2026 vydal projekt Node.js bezpečnostní aktualizace opravující deset zranitelností, včetně jedné umožňující potenciální vzdálené spuštění kódu (RCE). Nejzajímavější je CVE-2026-111497, chyba dekodéru Brotli, kterou objevili výzkumníci využívající OpenAI Codex Security. Chyba je v nativním dekodéru Brotli, nikoli v samotném JavaScriptu. Speciálně vytvořený komprimovaný vstup způsobí, že dekodér zamění
… více »Francouzský výrobce kabelů Nexans upozornil na napjaté dodávky elektrických kabelů. Výstavba nové výrobní linky pro některé typy kabelů může trvat přibližně tři roky. Datacentra potřebují rozsáhlé nízkonapěťové a středněnapěťové rozvody. Poptávka roste současně s modernizací elektrických sítí. Někteří odběratelé proto uzavírají výrazně delší dodavatelské smlouvy [Reuters].
Představena byla (𝕏) virtuální platforma FLYBENCH FPV, která nováčky provede zapojením a konstrukcí dronů.
Google Chrome 156 byl prohlášen za stabilní. Přehled novinek v poznámkách k vydání. Opraveno bylo 353 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Indická společnost eMudhra po bezpečnostním incidentu, tj. kompromitaci soukromých klíčů osmi mezilehlých certifikátů své certifikační autority, opouští globální byznys s SSL/TLS certifikáty.
Dle Phoronixu zveřejnila společnost Trend Micro prostřednictvím programu Zero Day Initiative (ZDI) několik hlášení bezpečnostních zranitelností přímo na veřejném mailing listu LKML, přestože některé chyby dosud nemají opravu začleněnou do hlavní větve jádra. Mezi hlášenými problémy jsou dvě zranitelnosti s hodnocením CVSS 9.0, týkající se SMB Direct a KSMBD, které mohou umožnit vzdálené spuštění kódu. Další hlášení se týkají … více »
Správce hesel KeePassXC byl vydán ve verzi 2.8.0. Přechází na Qt 6, podporuje vkládání hesel s Waylandem, rychlé odemykání pomocí Polkitu nebo možnost nastavení klávesových zkratek (seznam změn).
Databáze DuckDB (Wikipedie) byla vydána ve verzi 2.0.0 LTS. S kódovým názvem Cinnamon Teal (čírka skořicová). S vyladěným protokolem Quack.
haveData(QString), ten vyvolam ve chvili, kdy mam pro potomka nejaka data. V potomkovi mam pak slot který má daný signál zachytit a zpracovat.
connect(parent, SIGNAL(haveData(QString)), this, SLOT(insertInput(QString)));
Jenže ten na signál nereaguje. V konstruktoru dítěte mám na předka odkaz:
explicit mcmd(QMainWindow *parent);
Nenapadá mne už co dělám špatně
, nicméně je divné, že QTCreator všechny signály při zápisu předbízí/doplňujě, ale v tomto případě ne.
Zběžně to vypadá, že parent je QMainWindow, který nezná signál haveData(QString) - QMainWindow nahradit třídou, která obsahuje ten signál (a dědí z QMainWindow)
Signál je vyslán, ale cmd jej nezachytí...
zkusím uvést příklad...
//*********************
(MainWindow.cpp)
//*********************
...
//Konstruktor
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
mycommandline(0)
{
ui->setupUi(this);
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(startCommandline()));
connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(executeCommand()));
}
...
void MainWindow::startCommandline()
{
myiface = new minterface();
mycommandline = new mcmd(myiface);
mycommandline->start(); // spustíme vlákno
}
void MainWindow::executeCommand()
{
myiface->emitSignal("ping 192.168.1.1"); //nefunguje - vola funkci emit v myiface
emit myiface->haveData("ping 192.168.1.1"); //taky ne
}
//*********************
(mcmd.cpp)
//*********************
...
mcmd::mcmd(minterface *parent)
{
commandline = new QProcess();
connect(parent, SIGNAL(haveData(QString)), this, SLOT(insertInput(QString)));
}
...
void mcmd::run()
{
commandline->start("cmd");
commandline->waitForReadyRead();
}
void mcmd::insertInput(QString m_input) //sem signal nikdy nedorazi
{
input = m_input.toLatin1();
commandline->write(input);
commandline->write("\n");
commandline->waitForReadyRead();
}
void mcmd::getOutput() //odeslani odtud do predka funguje bez problemu...
{
result = commandline->readAll();
emit sendingData(QString(result));
}
insertInput(QString m_input) jsem zapoměl definovat jako slot
. Už to něco dělá
. Akorát mi teď zamrzává GUI, což znamená, že ještě něco dělám špatně. Ale s tím už se snad nějak porvu...
Pokud je aplikace jednovláknová, tak pravděpodobně GUI čeká na zbytek aplikace. Sloty/signály samy nezaručí to, že když se vyšlou, tak program běží paralelně na dvou místech. Pokud je vyhozen signál, tak aplikace hledá kde se má přijmout - spustí se kód slotu a až po jeho doběhnutí se zase vrátí na místo odkud byl signál vyslán.
.
.
Pokud by jste k tomu měli ještě nějaké rady či nápady určitě za ně budu rád. Ty odkazy ještě určitě nastuduju.
Zmatené není v podstatě nic, jen dokumentace na několika místech.Souhlas
Prakticky NIKDY se QThread nemusí dědit...Souhlas
...a nemá děditPověra
worker řešení se naopak má použít skoro vždyPověra Abych nebyl tak úsečný - worker-like řešení s děděním QThread může fungovat stejně dobře a mít některé jiné výhody, například to, že inicializace a start vlákna se přesune z hlavního vlákna, kde "zavazí", někam jinam, kde lépe ctí princip zapouzdřenosti objektu. Shrnul bych to spíš do jiné věty: Přetěžovat QThread::run() je hloupost.
qDebug() << QThread::currentThread(); . To může vést k hodně velikému zmatení. Řešením je posílat signál přes frontu zpráv, například:
connect(this, SIGNAL(sig1()), vlakno, SLOT(slot1()), Qt::QueuedConnection);
Vede to občas k trochu pracnějšímu zápisu: z GUI volám slot ve vlákně a až tam vyvolám signál přes frontu propojený s jiným slotem ve vlákně. Pokud to takhle nefunguje, budu muset svůj přístup přehodnotit a přepsat nějaké aplikace
S vlákny v Qt není moc problémů při vytváření a používání. Ovšem na hotové peklo můžete narazit, až budete chtít vlákno ukončit. Potíž může být i v tom, že u spousty Qt objektů ani netušíte, že si startují vlastní vlákna (QNetworkAccessManager).
Tiskni
Sdílej: