Digitální a informační agentura (DIA) na přelomu roku dokončila rozsáhlou modernizaci hardwarové infrastruktury základních registrů. Projekt za 236 milionů korun by měl zabránit výpadkům digitálních služeb státu, tak jako při loňských parlamentních volbách. Základní registry, tedy Registr práv a povinností (RPP), Informační systém základních registrů (ISZR) a Registr obyvatel (ROB), jsou jedním z pilířů veřejné správy. Denně
… více »Evropská komise (EK) zahájila nové vyšetřování americké internetové platformy 𝕏 miliardáře Elona Muska, a to podle unijního nařízení o digitálních službách (DSA). Vyšetřování souvisí se skandálem, kdy chatbot s umělou inteligencí (AI) Grok na žádost uživatelů na síti 𝕏 generoval sexualizované fotografie žen a dětí. Komise o tom dnes informovala ve svém sdělení. Americký podnik je podezřelý, že řádně neposoudil a nezmírnil rizika spojená se zavedením své umělé inteligence na on-line platformě.
Bratislava OpenCamp pokračuje vo svojej tradícii a fanúšikovia otvorených technológií sa môžu tešiť na 4. ročník, ktorý sa uskutoční 25. 4. 2026 na FIIT STU v Bratislave. V súčasnosti prebieha prihlasovanie prednášok a workshopov – ak máte nápad, projekt, myšlienku, o ktoré sa chcete podeliť s komunitou, OpenCamp je správne miesto pre vás.
Krádež není inovace (Stealing Isn't Innovation). Koalice umělců, spisovatelů a tvůrců protestuje proti používání autorsky chráněných děl velkými technologickými společnostmi pro trénování AI systémů bez povolení či kompenzace.
Stát, potažmo ministerstvo vnitra plánuje zřízení nového, neveřejného virtuálního operátora, který by byl primárně určený na zajištěni kritické infrastruktury státu. Cílem je zajistit udržitelné, bezpečné, mobilní, vysokorychlostní datové a hlasové služby umožňující přístup ke kritickým aplikacím IZS a krizového řízení.
Byla vydána nová verze 10.0 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Vypíchnout lze nové balíčky ownCloud Infinite Scale a Uptime-Kuma.
Byla vydána nová verze 3.0.8 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.
Microsoft poskytl FBI uživatelské šifrovací klíče svého nástroje BitLocker, nutné pro odemčení dat uložených na discích třech počítačů zabavených v rámci federálního vyšetřování. Tento krok je prvním známým případem, kdy Microsoft poskytl klíče BitLockeru orgánům činným v trestním řízení. BitLocker je nástroj pro šifrování celého disku, který je ve Windows defaultně zapnutý. Tato technologie by správně měla bránit komukoli kromě
… více »Spotify prostřednictvím svého FOSS fondu rozdělilo 70 000 eur mezi tři open source projekty: FFmpeg obdržel 30 000 eur, Mock Service Worker (MSW) obdržel 15 000 eur a Xiph.Org Foundation obdržela 25 000 eur.
/proc/sys/dev/cdrom/info, bohužel se mi nedaří. Soubor je otevřen POSIX funkcí open() s přístupem O_RDONLY. Soubor se otevře (tj. funkce nevrátí -1). Poté v cyklu načítám bajt po bajtu (v souboru nelze seekovat a zjistit tak jeho velikost):
while( read( fd, (void*)&bajt, 1 ) == 1 )
{
....
}
Problém je v tom, že se načte pouze první znak. Pro další pak funkce vrátí 0 (ne -1, což by znamenalo chybu). Zajímalo by mě, jak takový soubor načíst.
open a read s tím rozdílem, že tam byl buffer něco přes 8000. Poprvé bylo vrácen počet přečtených bajtů a v druhé 0 (tj. EOF). Tak mě napadá, jestli se celý soubor nemusí přečíst najednou????? Nějak se mi kvůli tomu nechce prasit můj kód, takže se radši ptám. Pokud nikdo vědět nebude, tak to asi vyzkouším. Následuje výstup strace -r, kde se načte jen první znak C ze souboru. Zajímavé je, cat vypíše soubor celý (že by dostatečný buffer?). Další zarážející věcí je, že funkce getline() si klidně čte po řádcích. Jak jsem ale řekl, chtěl bych použít funkci open() a read() - kvůli jiným možnostem otevírání, než mi nabízí funkce fopen().
0.000040 write(1, "Debug: Application constructor -"..., 40) = 40
0.000491 write(1, "Debug: Application contructor - "..., 37) = 37
0.000170 brk(0) = 0x804a000
0.000027 brk(0x806b000) = 0x806b000
0.000043 open("/proc/sys/dev/cdrom/info", O_RDONLY|O_LARGEFILE) = 3
0.000073 write(1, "File opened", 11) = 11
0.000069 write(1, "\n", 1) = 1
0.000081 read(3, "C", 1) = 1
0.000041 write(1, "Debug: something readed\n", 24) = 24
0.000088 read(3, "", 1) = 0
0.000028 write(1, "C", 1) = 1
0.000059 write(1, "\n", 1) = 1
0.000073 read(3, "", 1) = 0
0.000031 write(1, "Debug: Application::run() - begi"..., 35) = 35
0.000088 close(3) = 0
Zde je část kódu programu:
int main( ... )
{
...
File cdroms;
File stdOut;
stdOut.openStdOut();
if( cdroms.open("/proc/sys/dev/cdrom/info", fmReadOnly ) )
{
stdOut.writeLine("File opened");
String line;
while( cdroms.readLine(line) )
{
stdOut.writeLine(line);
}
cdroms.close();
}
...
}
bool File::open( const String& fileName, FileMode mode, Permission perms )
{
close();
m_pHandle = ::open( fileName.cStr(), mode | O_LARGEFILE, (mode_t)perms );
return opened();
}
Int64 File::read( Byte *data, Int64 size ) const
{
if( size <= 0 ) return 0;
if(!opened()) return -1;
Int64 totalReaded = 0;
Int64 readed = 0, toRead = 0;
do{
toRead = MIN(size-totalReaded,SSIZE_MAX);
readed = (Int64)::read( m_pHandle, (void*)data, (size_t)toRead );
if( readed == 0 ) break; //EOF
if( readed < 0 ) return readed; //error
totalReaded += readed;
data += readed;
} while(totalReaded < size);
return totalReaded;
}
bool File::readLine( String& str ) const
{
bool somethingReaded = false;
str.clear();
Char chr;
if( read( (Byte*)&chr, 1 ) == 1 )
{
somethingReaded = true;
do{
if( chr == 0 ) break;
else if( chr == '\r' ) {
prevR = true;
break;
} else if( chr == '\n' ) {
if(prevR) {
prevR = false;
continue;
} else break;
} else {
prevR = false;
str.append(chr);
}
} while( read( (Byte*)&chr, 1 ) == 1 );
}
return somethingReaded;
}
Tiskni
Sdílej: