Stanislav Fort, vedoucí vědecký pracovník z Vlčkovy 'kyberbezpečnostní' firmy AISLE, zkoumal dopady Anthropic Mythos (nový AI model od Anthropicu zaměřený na hledání chyb, který před nedávnem vyplašil celý svět) a předvedl, že schopnosti umělé inteligence nejsou lineárně závislé na velikosti nebo ceně modelu a dokázal, že i některé otevřené modely zvládly v řadě testů odhalit ve zdrojových kódech stejné chyby jako Mythos (například FreeBSD CVE-2026-4747) a to s výrazně nižšími provozními náklady.
Federální návrh zákona H.R.8250 'Parents Decide Act', 13. dubna předložený demokratem Joshem Gottheimerem a podpořený republikánkou Elise Stefanik coby spolupředkladatelkou (cosponsor), by v případě svého schválení nařizoval všem výrobcům operačních systémů při nastavování zařízení ověřovat věk uživatelů a při používání poskytovat tento věkový údaj aplikacím třetích stran. Hlavní rozdíl oproti kalifornskému zákonu AB 1043 a kolorádskému SB26-051 je ten, že federální návrh by platil rovnou pro celé USA.
Qwen (čínská firma Alibaba Cloud) představila novou verzi svého modelu, Qwen3.6‑35B‑A3B. Jedná se o multimodální MoE model s 35 miliardami parametrů (3B aktivních), nativní kontextovou délkou až 262 144 tokenů, 'silným multimodálním vnímáním a schopností uvažování' a 'výjimečnou schopností agentického kódování, která se může měřit s mnohem rozsáhlejšími modely'. Model a dokumentace jsou volně dostupné na Hugging Face, případně na čínském Modelscope. Návod na spuštění je už i na Unsloth.
Sniffnet, tj. multiplatformní (Windows, macOS a Linux) open source grafická aplikace pro sledování internetového provozu, byl vydán ve verzi 1.5. V přehledu novinek je vypíchnuta identifikace aplikací komunikujících po síti.
V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Forgejo byla vydána ve verzi 15.0 (Mastodon). Forgejo je fork Gitei.
Současně se SUSECON 2026 proběhne příští čtvrtek v Praze také komunitní Open Developer Summit (ODS) zaměřený na open source a openSUSE. Akce se koná ve čtvrtek 23. 4. (poslední den SUSECONu) v Hilton Prague (místnost Berlin 3) a je zcela zdarma, bez nutnosti registrace na SUSECON. Na programu jsou témata jako automatizace (AutoYaST), DevOps, AI v terminálu, bezpečnost, RISC-V nebo image-based systémy. Všichni jste srdečně zváni.
Český úřad zeměměřický a katastrální zavedl u anonymního nahlížení do katastru nemovitostí novou CAPTCHA ve formě mapové puzzle: nepřihlášení uživatelé musí nově správně otočit devět dlaždic v 3x3 poli tak, aby dohromady daly souvislý obrázek výseče reálné mapy, přičemž na to mají pouze jeden časově omezený pokus. Test je podle uživatelů i odborníků příliš obtížný a na sociálních sítích pochopitelně schytává zaslouženou kritiku a
… více »Byla vydána verze 1.95.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
Mozilla prostřednictvím své dceřiné společnosti MZLA Technologies Corporation představila open-source AI klienta Thunderbolt. Primárně je určený pro firemní nasazení.
Firma Cal.com oznámila, že přesouvá svůj produkční kód z otevřeného do uzavřeného repozitáře z důvodu bezpečnostního rizika umělé inteligence, která prý dokáže vyhledávat a zneužívat zranitelnosti rychleji, než by je jejich vývojářský tým stíhal opravovat. Zároveň zveřejnila samostatnou, open-source verzi Cal.diy pod licencí MIT, ovšem bez řady původních funkcí. O tom, zda je toto opatření rozumné, existují pochyby. … více »
Zdravim, mam problem s jednim kodem. Po urcite dobe behu mi padne na hubu.Nevim uz jak tuto chybu osetrit. Nejsem uplne C guru... Prikladam zdrojak fce ve ktere to asi pada:
float DejTeplotu(char* OW)
{
unsigned err;
char * buf;
size_t s ;
char* cesta;
char* prac;
if (OW == NULL) {cout << "Nulovy OW!!!"; return 0; }
else
{
//if (OW == NULL) {cout << "Nulovy OW!!!"; return 0; break; }
//cout << "Delka:" << strlen(OW);
cesta = (char *) malloc(strlen("//10.99A689020800/temperaturenase"));
prac = (char *) malloc(strlen(OW));
if ((cesta != NULL) && (prac !=NULL))
{
cesta[0] = 0;
prac = strcpy(prac,OW);
cesta = strcpy(cesta,"/");
// cout << cesta;
unsigned i;
for (i = 0; i < strlen(prac); i++)
{
// cout << prac[i] << endl;
cesta[i+1] = prac[i];
}
cesta[i+1] = 0;
strcat(cesta,"/temperature");
// cout << endl << "Vysledek:" << cesta << endl;
err = OW_init("/dev/i2c-1");
if (err >= 0)
{
OW_set_error_print("2");
OW_set_error_level("6");
OW_get(cesta,&buf,&s) ;
// OW_get("/10.99A689020800/temperature",&buf,&s) ;
return stof(buf);
free(buf);
free(prac);
free(cesta);
OW_finish() ;
}
else
{
cout << "Vyskytla se chyba v inicializaci-asi malo pameti" << endl;
return 0;
}
}
else
{
free(cesta);
free(prac);
cout << "Vyskytla se chyba v inicializaci" << endl;
return 0;
}
}
}
A jeste vypis z gdb:
Program received signal SIGSEGV, Segmentation fault. 0xb6a7e834 in strlen () from /lib/arm-linux-gnueabihf/libc.so.6 (gdb) bt #0 0xb6a7e834 in strlen () from /lib/arm-linux-gnueabihf/libc.so.6 #1 0xb6c77934 in std::basic_string:char, std::char_traits"char", std::allocator"char" >::basic_string(char const*, std::allocator"char" const&) () from /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 #2 0x00009550 in DejTeplotu (OW=0x32419 "1099A68902080000") at ./main.cpp:75 #3 0x00009fd0 in main () at ./main.cpp:298 (gdb)
Jsem v koncich...Kdyby nekdo mohl probehnout tento kod a nakopl mne... Dekuji
Řešení dotazu:
gdb toho moc nevidím. Že by chybějící volba -g při kompilaci?
Na první pohled mi přijde, že počítáš s tím, že strlen() vrací velikost řetězce v paměti. Ve skutečnosti ale vrací délku řetězce. V paměti céčkovský řetězec ještě přidává znak 0x00, potřebuje tedy jeden bajt navíc.
Navíc je to taková sprasená ukázka kódu, že nevím, co si jen zkoušíš a co má nějaký reálný význam. Občas je dobré pro účely porady minimalizovat zdroják na co nejmenší kus, kde se problém ještě projevuje.
cpp a jsou použity stream-y, tak není důvod proč nepoužít std::string a je (s tímto) pokoj.
Řádek 75 je
return stof(buf);
přičemž stof() na argument volá konstruktor std::stringstream, který nejdřív implicitně zavolá konstruktor std::string. Můj tip je, že OW_get() vrátila NULL nebo nějaký nesmyslný pointer. Protože nevím, co ta funkce dělá, nemůžu si být jistý, jestli smí vrátit NULL a jestli jste to měl ošetřit (spíš ano).
// tady bys mel mit
prac = (char *) malloc(strlen(OW) + 1);
// misto
prac = (char *) malloc(strlen(OW));
if ((cesta != NULL) && (prac !=NULL))
{
cesta[0] = 0;
// jinak je tohle blbost, jak pise kolega vyse v poznamce!!!
// protoze neni kam ulozit ukoncovaci 0x0
prac = strcpy(prac,OW);
return okamžitě vyskočí z prováděné funkce, takže příkazy za returnem se již neprovedou. Tvůj způsob použití return dává tušit, že máš úplně jinou představu o jeho fungování. Funkce malloc vrátí NULL, pokud nemůže tvůj požadavek na alokaci paměti uspokojit a patrně právě na tom potom ten proces upadne, když se snažíš do NULL pointeru zkopírovat jiný řetězec.
OW_get(), jak jsem vám radil?
float DejTeplotu(string OW)
{
float vystup;
vystup = 0;
//cout << "OW:"<< OW << "delka:" << OW.length() << endl;
if (OW.length() == 16)
{
char * buf;
size_t s ;
string cesta = "/";
cesta += OW;
cesta += "/temperature";
if (OW_init("/dev/i2c-1") >= 0)
{
OW_set_error_print("2");
OW_set_error_level("6");
// OW_get("/10.99A689020800/temperature",&buf,&s) ;
if (OW_get(cesta.c_str(),&buf,&s) >=0)
{
vystup = stof(buf);
free(buf);
OW_finish() ;
} else
{
cout << "Chyba pri ziskavani teploty z cidla: " << OW << endl;
}
}else
{
cout << "Chyba pri inicializaci sbernice!" << endl;
}
}else
{
cout << "Neplatny nazev cidla!" << endl;
}
return vystup;
}
Pominu-li coding style, který se mi moc nelíbí a navíc ani není konzistentní, měl bych výhrady hlavně ke zpracování chyb. Dojde-li k chybě, měla by funkce buď vyhodit výjimku (když už používáte C++, proč nevyužít jeho výhod?) nebo chybu signalizovat volajícímu (typicky návratovou hodnotou). Varianta, kdy funkce natvrdo vypíše chybu na chybový výstup a pak vrátí jakousi nahodilou hodnotu, kterou by dost možná mohla vrátit i pokud je všechno v pořádku, je velmi nešťastný. Jak má volající poznat, jestli dostal smysluplnou hodnotu nebo jestli došlo k chybě?
Výjimky. Je to přehledné, pohodlné a můžete si snadno zvolit, kde se bude na chybu reagovat a jaké informace je tam potřeba předat. Samozřejmě za to platíte určitým overheadem, který ale u tohoto typu aplikace nebude nijak tragický.
Jinak samozřejmě můžete použít léty prověřenou klasiku: teplota se bude ukládat do bufferu, na který dostanete pointer (v C++ můžete použít referenci) a funkce bude vracet jako návratovou hodnotu kód chyby (nebo aspoň bool OK/chyba).
for (i = 0; i < strlen(prac); i++)
{
//cout << prac[i] << endl;
cesta[i+1] = prac[i];
}
cesta[i+1] = 0;
Tiskni
Sdílej: