Ze systému Slavia pojišťovny uniklo přibližně 150 gigabajtů citlivých dat. Jedná se například o pojistné dokumenty, lékařské záznamy nebo přímou komunikaci s klienty. Za únik může chyba dodavatelské společnosti.
Sněmovna propustila do dalšího kola projednávání vládní návrh zákona o digitální ekonomice, který má přinést bezpečnější on-line prostředí. Reaguje na evropské nařízení DSA o digitálních službách a upravuje třeba pravidla pro on-line tržiště nebo sociální sítě a má i víc chránit děti.
Meta převezme sociální síť pro umělou inteligenci (AI) Moltbook. Tvůrci Moltbooku – Matt Schlicht a Ben Parr – se díky dohodě stanou součástí Meta Superintelligence Labs (MSL). Meta MSL založila s cílem sjednotit své aktivity na poli AI a vyvinout takovou umělou inteligenci, která překoná lidské schopnosti v mnoha oblastech. Fungovat by měla ne jako centralizovaný nástroj, ale jako osobní asistent pro každého uživatele.
Byla vydána betaverze Fedora Linuxu 44 (ChangeSet), tj. poslední zastávka před vydáním finální verze, která je naplánována na úterý 14. dubna.
Open source router Turris Omnia NG Wired je v prodeji. Jedná se o Turris Omnia NG bez Wi-Fi. Je připraven pro zamontování do racku.
Sníh roztál a roztávají i bastlíři. Žene se na nás celá řada konferencí a seminářů technického rázu. Zajímá vás, jaké? Pak se připojte k 60. Virtuální Bastlírně, tedy k veřejné diskuzi bastlířů, techniků, učitelů i vědců. Jako vždy přijde na přetřes spousta novinek ze světa hardwaru, softwaru i bizáru. Na začátek lze očekávat hardwarová témata, tedy například nový KiCAD 10, nové akcelerátory LLM s nízkou spotřebou, nejvíce fosforeskující
… více »IuRe (Iuridicum Remedium) v rámci programu Digitální svobody zveřejnila analýzu dopadů a efektivity systémů ověřování věku v digitálním prostoru, která srovnává implementace ověřování věku v Austrálii, Velké Británii a Evropské unii.
Multiplatformní emulátor terminálu Ghostty byl vydán ve verzi 1.3 (𝕏, Mastodon). Přehled novinek a vylepšení v poznámkách k vydání.
Byla vydána nová verze 14.4 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.
Databáze DuckDB (Wikipedie) byla vydána ve verzi 1.5.0. S kódovým názvem Variegata (husice rajská). Přináší řadu vylepšení, včetně nového ergonomičtějšího CLI klienta nebo podporu pro typ VARIANT a vestavěný typ GEOMETRY.
Lze v C++ pomocí nějakého proudu provést to, co lze takto jednoduše implementovat v C:
int main (int argc, char *argv[]) {
FILE *fp
if (argc == 1)
fp = stdin;
else
fp = fopen(argv[1], "r");
/* tady uz pracuji s fp nezavisle na tom
odkud beru data */
c = fgetc(fp)
...
Tzn. jak pomocí jednoho proudu neformátovaně číst data, ať už je vstupem standartní vstup nebo nějaký soubor?
#include <iostream>
#include <fstream>
int main(int argc, char **argv) {
std::istream *_fp;
if(argc == 1)
_fp = &std::cin;
else
_fp = new std::ifstream(argv[1]);
std::istream &fp = *_fp;
/* tady pracuju s fp jako s objektem istream */
int i;
fp >> i;
...
Neměl byste pak ale zapomínat ten stream po sobě zlikvidovat, takže by to chtělo nějaký příznak, zda se to má udělat. Nebo by šlo použít něco jako
#include <iostream>
#include <fstream>
#include <stdexcept>
void process_stream(std::istream& fs)
{
std::cout << fs.rdbuf();
}
int main(int argc, char* argv[])
{
int ret = 0;
if (argc < 2) {
process_stream(std::cin);
} else {
for (int i=1; i<argc; i++) {
std::ifstream fs(argv[i]);
if (!fs) {
std::cerr << "error: cannot open file " << argv[i] << std::endl;
ret = 1;
continue;
}
process_stream(fs);
}
}
return ret;
}
dup2() :-)
Díky všem za náměty, nakonec to nebude koukám tak složitý. Nicméně systém streamů v C++ musel navrhovat chovanec Guatemalského ústavu pro choromyslné...
V porovnání s céčkovským FILE * mi systém streamů v C++ přijde zbytečně složitý. Nicméně netvrdím, že pokud člověk do tohoto systému pronikne, nemůže být mocným nástrojem...
Ono je to složité hlavně na pohled. Když se to ale naučíte používat, udělá to strašně moc práce za vás. Viz třeba můj oblíbený
#include <iostream>
#include <locale>
int main(int argc, char* argv[])
{
if (argc != 3) return 1;
std::ios_base::sync_with_stdio(false);
std::wcin.imbue(std::locale(argv[1]));
std::wcout.imbue(std::locale(argv[2]));
std::wcout << std::wcin.rdbuf();
return 0;
}
(error handling si udělá laskavý čtenář za cvičení)
Tiskni
Sdílej: