Byla vydána nová stabilní verze 24.05 linuxové distribuce NixOS (Wikipedie). Její kódové označení je Uakari. Podrobný přehled novinek v poznámkách k vydání. O balíčky se v NixOS stará správce balíčků Nix.
Byla vydána nová verze 1.48.0 sady nástrojů pro správu síťových připojení NetworkManager. Novinkám se v příspěvku na blogu NetworkManageru věnuje Fernando F. Mancera. Mimo jiné se v nastavení místo mac-address-blacklist nově používá mac-address-denylist.
Před 25 lety, 31. května 1999, započal vývoj grafického editoru Krita (Wikipedie). Tenkrát ještě pod názvem KImageShop a později pod názvem Krayon.
Farid Abdelnour se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 24.05.0 editoru videa Kdenlive (Wikipedie). Ke stažení brzy také na Flathubu.
David Revoy, autor mj. komiksu Pepper&Carrot, se rozepsal o své aktuální grafické pracovní stanici: Debian 12 Bookworm, okenní systém X11, KDE Plasma 5.27, …
Wayland (Wikipedie) byl vydán ve verzi 1.23.0. Z novinek lze vypíchnout podporu OpenBSD.
Craig Loewen na blogu Microsoftu představil novinky ve Windows Subsystému pro Linux (WSL). Vypíchnout lze GUI aplikaci pro nastavování WSL nebo správu WSL z Dev Home.
V sobotu 1. června lze navštívit Maker Faire Ostrava, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.
Webový server Caddy (Wikipedie) s celou řadou zajímavých vlastností byl vydán ve verzi 2.8 (𝕏). Přehled novinek na GitHubu.
Byla vydána verze 3.0 (@, 𝕏) svobodného softwaru HAProxy (The Reliable, High Performance TCP/HTTP Load Balancer; Wikipedie) řešícího vysokou dostupnost, vyvažování zátěže a reverzní proxy. Detailní přehled novinek v příspěvku na blogu společnosti HAProxy Technologies.
Jsem zakladatelem tohoto portálu. Linux jsem používal spousty let, nějaký čas jsem se aktivně podílel na jeho propagaci v Česku (CZLUG, časopisy ComputerWorld, Network Magazine atd). Se současným Abíčkem už nemám nic společného.
Aspoň mám ten pocit. Chci napsat dcerce na tablet aplikaci na procvičování matematiky. Udělal jsem si poměrně jasnou představu o designu i funkčnosti a začal jsem ji realizovat. Před večeří jsem dopsal komplexní datový model, co vše se dá parametrizovat pro generování rovnic. Zadavatel bude mít obrovské možnosti. Problém nastal, když jsem začal psát generátor.
Sepsání myšlenek mi možná pomůže odrazit se dál, pokud ne, třeba mi někdo ze čtenářů konstruktivně poradí.
Pro oba operandy rovnice i výsledek je možné nadefinovat buď minimální nebo maximální či obě hodnoty, případně rozsah hodnot (v tom případě jsou min a max zakázány). Pro jednoduchost zapomeňme na možné omezení vzdálenosti operandů. Triviální příklad se všemi možnostmi zadání je na prvním řádku, jedno řešení je na druhém řádku
min: 1, max: 10 | + | min: 10 | = | výčet: 12, 13, 14, 18 |
2 | + | 11 | = | 13 |
Problém je, jak napsat obecný generátor? Nejspíše bych měl začít od výčtu hodnot, ze kterého si náhodně vyberu jedno číslo. A pak náhodně vybrat druhé číslo a dopočítat zbývající číslo. Například u uvedeného příkladu si k náhodnému výsledku (13) náhodně vygeneruju první operand (2) a vypočtu druhý (11). Bohužel je ale až příliš snadné zvolit číslo, se kterým rovnice nikdy nebude sedět; ke kterému nenajdu vhodné operandy. Můžu si pomoci chytristikou pro konkrétní situace. Zde u odečítání je lepší si vybrat vyšší číslo, takže začnu druhým operandem (11) a odečtem získám první (2). Ale stejně mi hodnota nemusí vyjít v rozsahu povolených hodnot. Takže pak musí následovat hledání správné kombinace brutální silou s pojistkou proti uváznutí (když zadání nemá řešení nebo mám smůlu na blbě vylosovaná čísla).
Během psaní jsem nic nového nevymyslel. Napadá něco vás?
Tiskni Sdílej:
Pamatuju na přednášku na UPOL od Drdy...Toto je stezi uveritelna historka, ... protoze Dr.Dla na prednasky zasadne nechodil.
Reálné výsledky na Nexus 4: během jedné milisekundy zvládne 5 cyklů nalezení jedné rovnice (obsahující 2x generování náhodného čísla, dvě matematické operace, pár porovnání a hlavně několik volání funkcí).
Parametry:
FormulaDefinition{unknowns=[RESULT], operators=[+], result=Values{minValue=null, maxValue=null, listing=[10, 11, 12]}, operandDifference=null, rightOperand=Values{minValue=3, maxValue=60, listing=null}, leftOperand=Values{minValue=0, maxValue=90, listing=null}}Moje optimalizovaná verze najde v 10 případech řešení do 3 pokusů 6x, do 5 pokusů 1x, do 9 pokusů 2x a jednou potřebovala 35 pokusů (což zabralo 7 ms). To je docela slušné
Například u uvedeného příkladu si k náhodnému výsledku (13) náhodně vygeneruju první operand (2) a vypočtu druhý (11).Já jsem na to šel opačně, vždy jsem vygeneroval operandy, z nich jsem vypočítal výsledek. Pokud byly příklady sčítání a násobení, vypsaly se operandy, pokud byly odčítání a dělení, vypsal se výsledek a první operand, bez ohledu na to jestli je větší nebo menší. Tak jsem se vždycky vešel do zadaného limitu. Nedělaly se před třiceti lety takovéhle věci v BASICu na dvacet řádků?
I. a >= 2 II. a <= 9 III. b >= 11 IV. c >= 12 ---> a + b >= 12 V. c <= 14 ---> a + b <= 14 ------------------------------------ b <= 12 V. - I. a <= 3 V. - III. ------------------------------------ 2 <= a <= 3 11 <= b <= 12Nyni postupuji tak, ze si postupne volim promenne z intervalu a dopocitam ostatni. Pro a = 2 a dosazeni do zbytku mi zadna omezujici podminka nepribude, takze mam reseni [2; 11], [2; 12]. Pro a 3 mi pribude b <= 11 (z V.), takze tam je jedno reseni [3; 11]. Pote dopocitam c a opakuji pro c = 18. Dalsi moznost je resit to graficky a reseni generovat nahodnym vzorkovanim pres obdelnikovou obalku vysledneho utvaru.