Byla vydána nová verze 1.12.0 dynamického programovacího jazyka Julia (Wikipedie) určeného zejména pro vědecké výpočty. Přehled novinek v příspěvku na blogu a v poznámkách k vydání. Aktualizována byla také dokumentace.
V Redisu byla nalezena a v upstreamu již opravena kritická zranitelnost CVE-2025-49844 s CVSS 10.0 (RCE, vzdálené spouštění kódu).
Ministr a vicepremiér pro digitalizaci Marian Jurečka dnes oznámil, že přijme rezignaci ředitele Digitální a informační agentury Martina Mesršmída, a to k 23. říjnu 2025. Mesršmíd nabídl svou funkci během minulého víkendu, kdy se DIA potýkala s problémy eDokladů, které některým občanům znepříjemnily využití možnosti prokázat se digitální občankou u volebních komisí při volbách do Poslanecké sněmovny.
Společnost Meta představila OpenZL. Jedná se o open source framework pro kompresi dat s ohledem na jejich formát. Zdrojové kódy jsou k dispozici na GitHubu.
Google postupně zpřístupňuje českým uživatelům Režim AI (AI Mode), tj. nový režim vyhledávání založený na umělé inteligenci. Režim AI nabízí pokročilé uvažování, multimodalitu a možnost prozkoumat jakékoliv téma do hloubky pomocí dodatečných dotazů a užitečných odkazů na weby.
Programovací jazyk Python byl vydán v nové major verzi 3.14.0. Podrobný přehled novinek v aktualizované dokumentaci.
Bylo oznámeno, že Qualcomm kupuje Arduino. Současně byla představena nová deska Arduino UNO Q se dvěma čipy: MPU Qualcomm Dragonwing QRB2210, na kterém může běžet Linux, a MCU STM32U585 a vývojové prostředí Arduino App Lab.
Multiplatformní open source voxelový herní engine Luanti byl vydán ve verzi 5.14.0. Podrobný přehled novinek v changelogu. Původně se jedná o Minecraftem inspirovaný Minetest v říjnu loňského roku přejmenovaný na Luanti.
Byla vydána nová stabilní verze 6.10 (YouTube) multiplatformního frameworku a GUI toolkitu Qt. Podrobný přehled novinek v poznámkách k vydání.
Pomalu se propracováváme k využívání souborů v Octave - buď jako úložiště dat nebo programů. Proto nesmí chybět seznámení, jak lze souborový systém v Octave správně uchopit. Začněme příkazy známými z shellu: pwd (Path to Working Directory) a cd (Change Directory):
% Ve Windows >> pwd /octave_files >> cd c:\matlab >> pwd /cygdrive/c/matlab % V Linuxu >> pwd /home/user >> cd /tmp >> pwd /tmp
V Linuxu bývá po spuštění aktuální složkou ta, ve které jsme Octave spustili, a s přístupem do jiných složek není žádný problém. V prostředí Windows běží Octave s pomocí Cygwin, jako kořenový adresář se nastavuje složka, ve které je Octave nainstalováno - přístup do jiných složek nicméně možný je, jednotky diskových oddílů se mapují do virtuálního adresáře cygdrive. Ve Windows je možno jako oddělovač složek použít obou lomítek - těch rozdílů mezi linuxovou a windowsovou verzí Octave lze při práci se soubory zaznamenat více.
Pro výpis souborů v aktuální složce slouží příkazy ls a dir:
>> ls data funkce.m skript.m >> dir ('/data/matlab') data funkce.m skript.m
Seznam souborů ze zadané složky lze uložit do matice pomocí funkce readdir:
>> files=readdir('.') files = . .. data funkce.m skript.m
Znak tečka zde označuje aktuální složku.
Octave samozřejmě umí vytvářet a mazat adresáře, přejmenovávat soubory apod. Názvy souborů a adresářů se zadávají jako textové parametry funkcí, které - pokud operace dopadla úspěšně - vrací hodnotu 0:
>> ls data funkce.m skript.m >> mkdir('slozka') % Vytvoř novou složku slozka ans = 0 >> ls data funkce.m skript.m slozka >> rmdir('slozka') % Smaž složku slozka ans = 0 >> ls data funkce.m skript.m
Funkce mkdir vytvořila složku pojmenovanou slozka, kterou následně smazala funkce rmdir. Soubor se maže funkcí unlink a přejmenovává pomocí rename:
>> ls data funkce.m skript.m >> unlink('data') % Smaž soubor data ans = 0 >> rename('skript.m','program.m') % Přejmenuj skript na program ans = 0 >> ls funkce.m program.m
Pro pečlivky - uvedené funkce mohou vracet dvouprvkový vektor
[navratova_hodnota, text_chybove_zpravy]
, tj. pokud je
návratová hodnota nenulová, z textu chybové zprávy můžeme vypátrat, v čem
tkví problém. Případné zájemce o další podrobnosti a „systémové
utility“ opět odkáži na dokumentaci. Zde uvedeme již jen užitečný
příkaz diary - s jeho pomocí lze veškerý výstup v terminálu
kopírovat do zvoleného souboru:
>> diary lekce3.txt >> A=34; B=A/7; >> diary off
Předchozí příkazy zařídí vytvoření souboru lekce3.txt, jehož obsahem budou řádky uvedené dál až po příkaz diary off, který toto logování vypíná. Opětovně lze zapnout s parametrem on.
Již dříve jsme uvedli, že matici je možno naplnit výčtem jejích jednotlivých prvků nebo funkcí, jako jsou například zeros, eye, rand apod. Další možností, jak tohoto dosáhnout, je nahrání dat ze souboru. Mějme například textový soubor mereni.txt s následujícím obsahem:
--[soubor mereni.txt]-- 12 3 5.4 76 1 2 4.3 89 -1 +5 9.999 100 --[konec souboru]--
Vidíme, že se jedná o matici správně zapsaných čísel, a tudíž obsah tohoto souboru můžeme nahrát do proměnné v Octave pomocí příkazu load:
>> load mereni.txt >> whos prot type rows cols name ==== ==== ==== ==== ==== rwd matrix 3 4 mereni >> mereni mereni = 1.0e+02 * 0.12000 0.03000 0.05400 0.76000 0.01000 0.02000 0.04300 0.89000 -0.01000 0.05000 0.09999 1.00000
Z výpisu příkazu whos vidíme, že nám vznikla nová proměnná mereni čítající tři řádky a čtyři sloupce - Octave proměnnou automaticky pojmenovává podle názvu souboru bez přípony. Z výpisu obsahu proměnné mereni pak vidíme, že skutečně obsahuje ta čísla, která jsou uložena v souboru mereni.txt. Tímto způsobem můžeme relativně snadno do Octave dostat kvanta čísel „získaná někde jinde“, například z nějakého tabulkového kalkulátoru, a dále zpracovávat.
Pokud by již existovala proměnná pojmenovaná stejně jako nahrávaný
soubor (což nastane typicky tehdy, když se pokoušíme nahrát jeden soubor
opakovaně), Octave vypíše varování a soubor nenahraje. Přepsání lze donutit
přepínačem -force
uvedeným bezprostředně za příkazem
load:
>> load mereni.txt warning: load: local variable name `mereni' exists warning: use `load -force' to overwrite >> load -force mereni.txt
Pro ukládání obsahů proměnných do souborů existuje příkaz save:
>> save mereni
Uvedený příkaz zapříčiní vytvoření souboru mereni v aktuální složce, který ovšem po otevření v nějakém textovém editoru nebude uživatelsky moc čitelný. Octave totiž obsahy proměnných ve výchozím nastavení ukládá do binárních souborů, které oproti čistému textu nabízí následující výhody:
Naproti tomu je čistý text snadno čitelný uživatelem a dá se importovat do jiných programů; volba vhodného formátu se tedy odvíjí od toho, co uživatel s uloženými daty zamýšlí:
-ascii
- uloží data jako čistý text-binary
- binární formát Octave, hodí se pro zálohu
dat-mat-binary
- binární formát Matlabu od verze 5, lze tedy
použít pro přenos dat z a do Matlabu-hdf5
- volně využitelný univerzální binární formát
používaný některými vědeckými aplikacemiVolbu formátu zajistíme prvním parametrem příkazu save, druhý parametr vymezuje jméno souboru a následující pak názvy proměnných, které se mají uložit. Neuvedeme-li žádnou proměnnou, uloží se všechny z aktuálního paměťového prostoru (tj. ty, které vypíše příkaz who). Následující příkaz tedy uloží matici mereni v čistém textu do souboru mereni-cisty_text.txt:
>> save -ascii mereni-cisty_text.txt mereni
Výchozí formát, ve kterém se mají proměnné do souborů ukládat, lze nastavit v zabudované proměnné default_save_format. Podobně proměnná save_precision upřesňuje, kolik desetinných míst se má ukládat, pokud je jako formát zvolen čistý text.
Dodejme ještě, že příkaz load automaticky detekuje formát souboru, z kterého nahrává - nicméně stejnými parametry jako u příkazu save jej můžeme donutit, aby předpokládal zadaný formát u nahrávaného souboru. Podobně lze za název souboru uvést seznam proměnných, které se ze souboru mají nahrát (v případě binárních formátů), bez uvedení se nahrají všechny proměnné.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
>> plot(t,y) >> Timeout: gnuplot is not ready Signal 127 warning: connection to external plotter (pid = 509527) lost -- warning: please try your plot command(s) again
Týká se ukládání a načítání dat ze souboru. Dá se octave nějak donutit, aby uložila jenom samotná data, bez těch prvních asi pěti řádků s popisem, jako to dělá při parametru -text/-ascii příkazu save?
Pak když je chci znova načíst v dalším skriptu, obvykle zapomenu, jak se ta proměnná jmenovala, a načte se mi to trošku podivně. Zkuste sekvenci následujících tří příkazů:
A = rand(4,3)
save -text 'A.txt' A
B = load -text 'A.txt'
Postupně jsem přišel na to, že když z uloženého souboru A.txt umažu těch pár popisných řádků, vše funguje, jak má, ale je to takové divné řešení. Nevíte, jak na to?
load 'promenne.txt'obnoví všechny proměnné z uvedeného souboru a
B = load 'promenne.txt'obnoví všechny proměnné organizované v datové struktuře se jménem B, takže k jednotlivým proměnným lze přistupovat jako B.<název proměnné>, v popisovaném případě tedy jako B.A.
Ta volba -text je poměrně nová. V Octave 2.1.71 už je. Měla by být stejná jako volba -ascii. Tu jsem používal dříve, ale prý se má používat -text:
octave:2> save -ascii 'A.txt' A
warning: the meaning of this option will change in a future
warning: version of Octave to be compatible with Matlab.
warning: To keep the meaning of your code the same across
warning: this change, use the -text option instead.
octave:3> version
ans = 2.1.71
Problém bude asi spíše ve mně, měl bych zkusit používat rozumné názvy proměnných a důsledně podle nich pojmenovávat soubory, do kterých je ukládám. Nebo se naučit používat nějaké ty nízkoúrovnové operace se soubory.
Jinak te seriál je skvělý.