Blíží se prázdniny a než se rozutečete k moři, je na čase se opět sejít na Virtuální Bastlírně - pravidelném setkání elektroniků, ajťáků, bastlířů a obecně nadšenců do techniky. Co si pro vás strahovští bastlíři připravili tentokrát? Určitě proberou blížící se Linux Days i další události. U softwaru se chvíli zdrží a poví si kupříkladu o tom, jak se zbavit Bambu Cloudu, ale nepřijít o možnost ovládat tiskárnu na dálku. Řeč dojde i na AI,
… více »Vývojáři postmarketOS vydali verzi 26.06 tohoto operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME, KDE Plasma Mobile, Phosh a Sxmo.
Byla vydána nová verze 2.55.0 distribuovaného systému správy verzí Git. Přispělo 100 vývojářů, z toho 33 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.
Craig Loewen na blogu Microsoftu oznámil veřejnou preview verzi WSL kontejnerů, tj. linuxových kontejnerů ve Windows Subsystem for Linux (WSL). Spouští se příkazem wslc.exe.
Byla vydána (𝕏, Bluesky) nová verze 2026.2 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem 9 nových nástrojů v oficiálním oznámení na blogu.
Grafická aplikace Krokiet/Czkawka pro vyhledávání a odstraňovaní nepotřebných souborů (duplicitní soubory, prázdné složky, podobné obrázky, podobná videa, poškozené soubory a další) byla vydána ve verzi 12.0.0. Podrobný přehled novinek v příspěvku na Medium. Jedná se o poslední verzi frontendu Czkawka GTK nad Czkawka Core. Uživatelům se doporučuje migrovat na frontend Krokiet postavený nad frameworkem Slint. Představena byla aplikace Cedinia pro Android využívající Czkawka Core. Dostupná je jako APK pro ruční instalaci.
Po téměř třech letech od vydání verze 9 byla vydána nová verze 10 linuxové distribuce Mageia (Wikipedie). Přehled novinek v poznámkách k vydání.
Nourish (GitHub) je nový správce oken pro Linux. Tradiční plochy nahrazuje nekonečným plátnem a posouváním a přibližováním. Využívá vlastní kompozitor pro Wayland s názvem y5. Videoukázka.
Po 20 letech a 17 otevřených (open source) krátkých filmech Blender Studio oznámilo plán na svůj první celovečerní film. Cílem samozřejmě není jenom nový otevřený film, ale především vývoj a vylepšení otevřených nástrojů pro spolupráci napříč celým procesem a vytvoření otevřené příručky (playbook) pro filmovou produkci ve velkém měřítku s informacemi, které jsou obvykle dostupné pouze uvnitř komerčních studií, a pomoci tak nezávislým tvůrcům překonat technické a organizační bariéry.
Byla vydána nová verze 26.6.25 svobodného multiplatformního video editoru Shotcut (Wikipedie) postaveného nad multimediálním frameworkem MLT. Shotcut je vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.
Objavil som zaujímavý skriptovací jazyk zo sveta HPC: Julia . Syntax je podobná jazyku LUA (kto programoval v MATLABe, alebo Pythone, tiež sa v ňom nestratí), ale inak je to jazyk z úplne iného súdka: dynamický, strong typed - orientovaný na rýchlosť a efektivitu – používa JIT compiler. V určitých typoch výpočtových úloh dokáže Julia dosiahnuť vyšší výkon než C/C++, pričom je často porovnateľná s Fortranom a Chapelom – najmä pri numerických operáciách a prácou vektormi a maticami, ktoré si vie compiler dobre zoptimalizovať).
No a čím je tento jazyk výnimočný? Je to jeden z mála jazykov obsahujúci skutočný implicitný paralelizmus (podobne ako iný statický HPC jazyk Chapel ktorý sme si spomínali v minulosti), podporuje vykonávanie kódu na CPU aj GPU (GPGPU). Okrem toho podporuje SIMD (počas jednej inštrukcie sa spracováva viacero hodnôt) a distribúciu výpočtov medzi viac počítačov (Grid computing – keď jeden počítač nestačí).
Taktiež má vlastnosti ako broadcasting (v jazyku Chapel sa tomu hovorí „propagácia“), čo znamená, že pracujeme pomocou operátora bodka "." s celým poľom či inou kolekciou (napr. range) ako by to bola jedna hodnota:
arr = [1:5...] # [1, 2, 3, 4, 5] arr1 = arr .^ 2 # Operátor "^" je mocnina – keď použijeme operátor ".^", bude to druhá mocnina všetkých položiek poľa. # Namiesto: `map(a -> a ^ 2, arr)` – platí aj pre iné operátory. println(arr1) # [1, 4, 9, 16, 25]
Samozrejme, dajú sa použiť aj knižničné funkcie ako map, filter, fold atď., ale broadcasting je rýchlejší, lebo si to JIT kompilátor zoptimalizuje tak, že sa spracováva viac hodnôt naraz (SIMD). Má to aj makrá, takže jazyk sa dá „ohýbať“. Tiež sú tam rôzne druhy cyklov, ktoré sa dajú optimalizovať na rýchlosť.
Julia obsahuje viacrozmerné polia (väčšina moderných jazykov vychádzajúcich z C obsahuje len pole polí, ale nie skutočné viacrozmerné polia. Pokiaľ ste ale niekedy programovali v Basicu, Pascale či Fortrane istotne si viacrozmerné polia pamätáte.
arr = [
1 2 3
4 5 6
]
println(arr[2, 1]) # vypíše 4, keďže polia sa indexujú od 1
Jazyk má pár zvláštností, napríklad že polia sa indexujú od 1 a najprv začínajú riadkami (Y), až potom stĺpcami (X) (podobne ako v matematike, naopak ako v mainstreamových jazykoch). Faktom ale je, že práca s jednotkou je prirodzenejšia a hlavne nám to skracuje kód.
Všadeprítomný je multiple dispatch. OOP to nemá – má to len štruktúry, nad ktorými voláme funkcie. Zapúzdrenie sa robí cez moduly, ale tie moc nezapúzdrujú (moduly sa mi v Julii vôbec nepáčia).
Pokiaľ chceme v Julii napísať rýchly backend a k tomu spraviť GUI, môžeme komunikovať napríklad cez HTTP, sockety, gRPC, ale ja som použil ZeroMQ (package ZMQ), ktoré je rýchle ako sockety, ale pritom jednoduché na použitie ako HTTP.
Tiskni
Sdílej:
using JuMP using HiGHS M = [0 8 2; 1 0 5; 1 4 0;;; 0 4 3; 9 0 4; 3 7 0;;; 0 1 2; 5 0 8; 2 2 0] model = Model( HiGHS.Optimizer) x= @variable(model, x[1:3,1:3,1:3] ≥ 0) @constraint(model, diagonal[i=1:3], sum(x[i,i,1:3]) == 0) from_c = @constraint(model, sum(x,dims=1) .== sum(M,dims=1)) to_c = @constraint(model, sum(x,dims=2) .== sum(M,dims=2)) time = @constraint(model, sum(x,dims=3) .== sum(M,dims=3)) @objective(model, Min, sum(x .^2 )) optimize!(model) @show solution_summary(model)
Faktom ale je, že práca s jednotkou je prirodzenejšia a hlavne nám to skracuje kód.Jestli je indexování pole od jedničky přirozenější je asi subjektivní, ale o tom, že to zkracuje kód bych dost pochyboval. Implementoval jsem relativně dost algoritmů pro práci s vícerozměrnými poli paralelně v Matlabu a Pythonu a v Matlabu furt někde honím jedničku.
Já bych neřekl, že nové jazyky jsou variací na Céčko.Ale jsou. Bud je to assembler s trochou syntaktickeho cukru (proc asi je "unsafe" v Rustu), nebo n-ta varianta LISPu. Ostatni inovativni pristupy se moc neuchytily, nebo je odval cas (treba Algol, nebo "pictures" v COBOLu a PL/1)...
Chapel ale umožňuje explicitně zvolit jakoukoli dolní mez pole.To umí i Fortran, ale nijak extrémně užitečné mi to nepřijde. Napadá mě třeba symetrický index kolem nuly (nějaké FFT třeba) nebo snaha sladit zápis matematiky (např. při použití nějakých konkrétních polynomů). Ale spíš je v tom pak akorát bordel. Zas si ale člověk může změnit výchozí spodní mez z jedničky na nulu, takže je to vlastně fajn...
array[18..120]Uzasny. Takze ti to rozbijou lidi soudem uznani za zletile, podobne az se nejaka baba dozije 120 (coz s rostouci delkou doziti muze klidne nastat, rekord je neco okolo 115).
Takový kód je přehlednější.To je asi otázka názoru. Hlavně bude záležet na tom kdo a jak ten kód píše. A protože znám své kolegy, mám raději jazyky, které neumožňují být příliš kreativní... Tu motivaci ale pochopitelně chápu, ale jak píšete víše:
...Je to mapování n-tice hodnot na výslednou hodnotu. Funkce to dělá algoritmem, pole to dělá tabulkou hodnot - jinak je to to samé...Pro mě je indexování pole jakási low-level operace, pokud potřebuji nestandardní index, volím raději funkci. Ono u možnosti měnit spodní mez nemusíte chtít skončit. Třeba byste rád index, který se neinkrementuje o jedničku, či není lineární, motivace by se asi našla. Ale nemám pochopitelně nic proti tomu, aby to jazyk podporoval, zejména pokud to jeho uživatelé využívají.
V tom, že je potřeba špatným programátorům přistřihnout křídla, máte samozřejmě pravdu. Je třeba se přizpůsobit té které situaci.To se bohužel snadněji řekne, než udělá... Se zbytkem pochopitelně souhlasím snad jen s poznámkou, že řídká pole sice obsahují hromady nul, ale obsahují je, tzn. není to ekvivalentní poli, které ten index nemá vůbec (viz ten příklad sudých indexů). Sice netuším, jak jsou interně implementována, ale nějaký overhead tam bude muset být. Pokud jde o ta asociativní pole, tak přesně ta jsou podle mého názoru vhodná pro zobrazení/mapování netriviálních indexů. Pole jako taková mají podle mě uplatnění především tam, kde provádíte nějaké náročné operace na větším množství dat, kde – přesně, jak píšete – využijete s výhodou možnosti paralelizace. Alespoň tak to mám já. Pole je hromada dat, kterou je třeba zpracovat a index je více méně podružný, pro data, kde má index nějaký význam používám asociativní datové typy.
Chapel ale umožňuje explicitně zvolit jakoukoli dolní mez pole.Pascal také, ale lidé se do něj moc nehrnou. To je škoda, odnaučili by se dělat spoustu blbostí
A co se C týče:
int array[201]={0}, *teplota=&array[100];