Byl odhalen supply chain attack na Notepad++: útočníci kompromitovali hosting Notepad++ a vybrané dotazy na aktualizace přesměrovávali na servery pod jejich kontrolou. Doporučuje se stáhnout instalátor a přeinstalovat.
Francouzská veřejná správa má v rámci vládní iniciativy LaSuite Numérique ('Digitální sada') v plánu od roku 2027 přestat používat Microsoft Teams a Zoom a přejít na videokonferenční platformu Visio, hostovanou na vlastním hardwaru. Konkrétně se jedná o instance iniciativou vyvíjeného open-source nástroje LaSuite Meet, jehož centrální komponentou je LiveKit. Visio nebude dostupné pro veřejnost, nicméně LaSuite Meet je k dispozici pod licencí MIT.
Eben Upton oznámil další zdražení počítačů Raspberry Pi: 2GB verze o 10 dolarů, 4GB verze o 15 dolarů, 8GB verze o 30 dolarů a 16GB verze o 60 dolarů. Kvůli růstu cen pamětí. Po dvou měsících od předchozího zdražení.
Shellbeats je terminálový hudební přehrávač pro Linux a macOS, který umožňuje vyhledávat a streamovat hudbu z YouTube, stahovat odtud skladby a spravovat lokální playlisty. Pro stahování dat z YouTube využívá yt-dlp, pro práci s audiostreamy mpv. Je napsán v jazyce C a distribuován pod licencí GPL-3.0, rezpozitář projektu je na GitHubu.
Byla vydána nová verze 26.1.30 svobodného multiplatformního video editoru Shotcut (Wikipedie) postaveného nad multimediálním frameworkem MLT. S podporou hardwarového dekódování videa. Shotcut je vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.
LibrePCB, tj. svobodný multiplatformní softwarový nástroj pro návrh desek plošných spojů (PCB), byl po deseti měsících od vydání verze 1.3 vydán ve verzi 2.0.0. Přehled novinek v příspěvku na blogu a v aktualizované dokumentaci. Zdrojové kódy LibrePCB jsou k dispozici na GitHubu pod licencí GPLv3.
Guido van Rossum, tvůrce programovacího jazyka Python, oslavil 70. narozeniny. Narodil se 31. ledna 1956 v nizozemském Haarlemu.
OpenClaw je open-source AI asistent pro vykonávaní různých úkolů, ovládaný uživatelem prostřednictvím běžných chatovacích aplikací jako jsou například WhatsApp, Telegram nebo Discord. Asistent podporuje jak různé cloudové modely, tak i lokální, nicméně doporučován je pouze proprietární model Claude Opus 4.5 od firmy Anthropic v placené variantě. GitHubová stránka projektu OpenClaw.
Projekt VideoLAN a multimediální přehrávač VLC (Wikipedie) dnes slaví 25 let. Vlastní, tenkrát ještě studentský projekt, začal již v roce 1996 na vysoké škole École Centrale Paris. V první únorový den roku 2001 ale škola oficiálně povolila přelicencování zdrojových kódů na GPL a tím pádem umožnila používání VLC mimo akademickou půdu.
Moltbook je sociální síť podobná Redditu, ovšem pouze pro agenty umělé inteligence - lidé se mohou účastnit pouze jako pozorovatelé. Agenti tam například rozebírají podivné chování lidí, hledají chyby své vlastní sociální sítě, případně spolu filozofují o existenciálních otázkách 🤖.
unsigned int inaddr;
struct hostent *ph;
struct sockaddr_in my_addr;
if ((inaddr = inet_addr(addr))!=INADDR_NONE)
ph=gethostbyaddr((char *)&inaddr, sizeof(unsigned int), AF_INET);
else ph=gethostbyname(addr);
if (ph) {
cout << "Connecting to " << ph->h_name << endl;
}
else {
cerr << "Unable to connect " << ph->h_name << ", not in name list." << endl;
return false;
}
if ((m_iSocket = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP))<0) {
cerr << "Can not open socket." << endl;
return false;
}
bzero((char *) &my_addr, sizeof(my_addr));
my_addr.sin_family = AF_INET;
my_addr.sin_addr.s_addr = INADDR_ANY;
my_addr.sin_port = htons(4000);
if (connect(m_iSocket, (struct sockaddr *) &my_addr, sizeof(my_addr)) < 0) {
cerr << "Can\'t connect." << endl;
close(m_iSocket);
return false;
}
Potom server nějak (nevím jak, mám jen binárku) odesílá data a já je v klientovi přijímám takto:
...
struct Message {
long id;
unsigned short seq;
unsigned short ack;
char flag;
char data[256];
};
...
Message buf;
for (int i = 0; i < 256; i++) {
buf.data[i] = m_mRecMsg.data[i] = 0;
}
int ret = read(m_iSocket, (void *)&buf, sizeof(buf));
cout << "Pocet prijatych bajtu: " << dec << ret << " z " << sizeof(buf) << endl;
if (ret < 0) {
cerr << "Error reading from socket." << errno << endl;
return false;
}
m_iLastRecvDataLength = ret - sizeof(long) - 2*sizeof(short) - 1;
if (m_iLastRecvDataLength > 0) {
strncpy(m_mRecMsg.data, buf.data, m_iLastRecvDataLength);
}
m_mRecMsg.ack = ntohs(buf.ack);
m_mRecMsg.flag = buf.flag;
m_mRecMsg.id = ntohl(buf.id);
m_mRecMsg.seq = ntohs(buf.seq);
printMsg(m_mRecMsg);
return true;
Je to výňatek z programu, ale pro ilustraci by to mělo snad stačit.
Problém je v tom, že server odešle 256B dat + 9B hlavičku, klient by je měl tedy přijmout. návratová hodnota z read dokonce potvrzuje, že přijala 265B dat. Ale přesto jsou data neúplná. V poli data je někdy jen určitý počet (asi tak 100-150) platných bajtů a zbytek jsou nuly.
Vypadá to například takhle:
server:
F1EA0006 SEND 127.0.0.1:41229 seq=18176 ack=0 flags=00 data(256): 5b 7b 15 f6 8d 00 41 80 ... 6f 73 a6 73 60 60 77 7a
klient:
Pocet prijatych bajtu: 265 z 268
Prijata: f1ea0006 0 18176 0 data(256):5b 7b 15 f6 8d ... 0 0 0 0 0 0 0 0 0 0
Může za to read? Nebo mám něco principiálně špatně? Vím, že u TCP se muselo číst po bajtech, ale UDP se snad nesmí ne?
Budu moc vděčný za každou radu, už se s tím morduju 2 dny.
sendto a recvfrom se používají, jenom pokud nepoužijete connect, jinak můžete klidně používat send a recv, resp. jejich ekvivalenty write a read.
Chyba bude v použití strncpy, to totiž skončí na prvním null bajtu. Použijte memcpy. Případně raději použijte nějaký postup z C++.
Tiskni
Sdílej: