Farid Abdelnour se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 26.08.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
Byla vydána nová stabilní verze 8.2 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 152. Přehled novinek i s náhledy v příspěvku na blogu.
Byla vydána nová stabilní verze 4.0 svobodného multiplatformního softwaru pro editování a nahrávání zvukových souborů Audacity (Wikipedie). S rozhraním přepsaným do Qt. Přehled novinek také na YouTube. Ke stažení je oficiální AppImage. Zatím starší verze Audacity lze instalovat také z Flathubu a Snapcraftu.
NVIDIA kupuje Hugging Face za 12,93 miliardy dolarů.
Předobjednat si lze nový jednodeskový počítač Arduino VENTUNO Q s předinstalovaným Ubuntu. S 16 GB LPDDR5 a 64 GB eMMC. Pro lokální LLM, agentní AI, počítačové vidění, robotiku…
Hexpair není nejlepší HEX editor na světě a ani se o to nesnaží. Zato je k dispozici kdykoliv a kdekoliv – všude tam, kde máte svůj Vim. Vznikl jako hobby projekt před pár měsíci a dospěl do stavu, kdy by mohl být užitečný širší komunitě. Přepnout do HEX režimu se dá i uprostřed rozdělané práce: Soubor, který už máte otevřený běžným vim file.md, jedním příkazem přepnete do HEX editoru a dalším příkazem ho můžete vrátit zpět do textu. Kurzor přitom
CERN dlouhodobě používal vlastní sestavení RHEL, ze kterého přešel na CentOS Stream. Federico Vaga a Nikos Tsipinakis ale nyní v přednášce na MiniDebConf Winterthur 2026 popisují plán probíhajícího přechodu na Debian pro řízení akcelerátorů. Důvodem k opuštění CentOS Stream jsou zachování zpětné kompatibility se starším hardwarem, kterou Red Hat narušuje, když tlačí sestavení balíčků pro novější verze architektury (x86-64), a nedostatečné nástroje pro sestavování vlastních balíčků a repozitářů.
UZDoom (Wikipedie), tj. fork GZDoom, byl vydán ve verzi 5.0.0. Videopředstavení na YouTube. Podrobný přehled novinek v Changelogu.
Příručka Linux From Scratch pro sestavení základního linuxového systému byla aktualizována v pravidelném půlročním termínu. Vydání 13.1 shrnuje přes 40 nových verzí balíčků a několik patchů. Navazující příručka Beyond Linux From Scratch s recepty pro sestavení dalších knihoven a aplikací zatím vydána nebyla, ačkoliv vývojová verze stále dostává aktualizace. Lze je číst online nebo stáhnout v HTML či PDF.
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: