Desktopové prostředí Budgie bylo vydáno ve verzi 10.10. Dokončena byla migrace z X11 na Wayland. Budgie 10 vstupuje do režimu údržby. Vývoj se přesouvá k Budgie 11. Dlouho se řešilo, v čem bude nové Budgie napsáno. Budgie 10 je postaveno nad GTK 3. Přemýšlelo se také nad přepsáním z GTK do EFL. Budgie 11 bude nakonec postaveno nad Qt 6.
OpenChaos.dev je 'samovolně se vyvíjející open source projekt' s nedefinovaným cílem. Každý týden mohou lidé hlasovat o návrzích (pull requestech), přičemž vítězný návrh se integruje do kódu projektu (repozitář na GitHubu). Hlasováním je možné změnit téměř vše, včetně tohoto pravidla. Hlasování končí vždy v neděli v 9:00 UTC.
Byl vydán Debian 13.3, tj. třetí opravná verze Debianu 13 s kódovým názvem Trixie a Debian 12.13, tj. třináctá opravná verze Debianu 12 s kódovým názvem Bookworm. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 a Debianu 12 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.
Na stránkách Evropské komise, na portálu Podělte se o svůj názor, se lze do 3. února podělit o názor k iniciativě Evropské otevřené digitální ekosystémy řešící přístup EU k otevřenému softwaru.
Společnost Kagi stojící za stejnojmenným placeným vyhledávačem vydala (𝕏) alfa verzi linuxové verze (flatpak) svého proprietárního webového prohlížeče Orion.
Firma Bose se po tlaku uživatelů rozhodla, že otevře API svých chytrých reproduktorů SoundTouch, což umožní pokračovat v jejich používání i po plánovaném ukončení podpory v letošním roce. Pro ovládání také bude stále možné využívat oficiální aplikaci, ale už pouze lokálně bez cloudových služeb. Dokumentace API dostupná zde (soubor PDF).
Jiří Eischmann se v příspěvku na svém blogu rozepsal o open source AdGuard Home jako domácí ochraně nejen před reklamou. Adguard Home není plnohodnotným DNS resolverem, funguje jako DNS forwarder s možností filtrování. To znamená, že když přijme DNS dotaz, sám na něj neodpoví, ale přepošle ho na vybraný DNS server a odpovědi zpracovává a filtruje dle nastavených pravidel a následně posílá zpět klientům. Dá se tedy používat k blokování reklamy a škodlivých stránek a k rodičovské kontrole na úrovni DNS.
AI Claude Code od Anthropicu lépe rozumí frameworku Nette, tj. open source frameworku pro tvorbu webových aplikací v PHP. David Grudl napsal plugin Nette pro Claude Code.
Byla vydána prosincová aktualizace aneb nová verze 1.108 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.108 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Na lasvegaském veletrhu elektroniky CES byl předveden prototyp notebooku chlazeného pomocí plazmových aktuátorů (DBD). Ačkoliv se nejedná o první nápad svého druhu, nepochybně to je první ukázka praktického použití tohoto způsobu chlazení v běžné elektronice. Co činí plazmové chladící akční členy technologickou výzvou je především vysoká produkce jedovatého ozonu, tu se prý podařilo firmě YPlasma zredukovat dielektrickou
… více »
Diskuse byla administrátory uzamčena.
Valu bych nepouzival na nic jinyho nez aplikace nad gobject.Tak nad GObject se dá postavit cokoli a spousta věcí je na tom reálně postaveno. Má to spoustu (většinu?) vlastností, které jinak nabízí objektové modely jazyků typu Python, je to podstatně rychlejší (pokud se využívá možností, prasit se dá všude), je to dobře ovladatelné i z C, ale i z těch dynamických jazyků jako Python a Javascript. Já tím, že dělám na NetworkManageru, tak tam píšem všechno nad GObjectem v C. Dá se to, nevidím v tom problém, ale fakt je, že mnohým by pomohlo psát (a hlavně číst!) tyhle věci v jazyce, který má syntaktický cukr na OOP.
public int age { get; set; }
Toto je inspirovano z delphi, ze ?
property age:integer read get write set
já bych sázel spíš na JavuAFAIK Java nemá speciální syntaktickou podporu pro vlastnosti.
person.set_age(person.get_age() + 1);
což předpokládám měl být kód v Javě.
+1 Tohle by chtělo v článku opravit, protože takhle se v Javě opravdu nepíše (podtržítkový fujtajbl).Uznávám, solidní programátor by to v Javě napsal jinak, ale mám pocit, že pro ukázku možností *Valy* tohle opravdu není kritické.
Děkuji moc za článek.Není zač, já děkuji za nějaká ta pozitivní slova.
Co se GTK+ týče, kdo zkoušel C++ binding (gtkmm), nebo Python binding, tak Vala mě přijde naprosto snadná, lehká a velmi dobře použitelná.Teď budu možná trochu sám proti sobě, ale s Gtk3, a tím pádem GObject introspekcí, je použití Gtk z Pythonu v podstatě totožné s psaním programu ve Vale. Plus s jednou velkou výhodou -- TAB TAB doplňováním v ipythonu.
--profile=posixAvsak za cenu ztraty nektere funkcionality (casto te podstatne
).
OT: Byla by moznost zahrnout do serialu i porovnani s jazykem NULLC? Chapu, ze by zde mohl mit kazdy takove prani pro kazdy existujici jazyk, ale NULLC povazuji za jeden z nejpovedenejsich vyssich jazyku dneska a snad i budoucnosti (je dost novy a neznamy, ale to se doufam zmeni
).
.
OT: Byla by moznost zahrnout do serialu i porovnani s jazykem NULLC? Chapu, ze by zde mohl mit kazdy takove prani pro kazdy existujici jazyk, ale NULLC povazuji za jeden z nejpovedenejsich vyssich jazyku dneska a snad i budoucnosti (je dost novy a neznamy, ale to se doufam zmeniBohužel už teď můžu s klidným svědomím odhadnout, že na tohle nebudu mít čas. Samozřejmě ale budu rád, pokud někdo článek na tohle téma napíše.).
Map<String, List<Integer>> var = new HashMap();
kompilátor bude sice prskat, ale bez problému to projde.
Zase nechci tvrdit, že někdy není java zbytečne ukecaná nebo používá návrhy jen pro návrhy ne pro použití.
Deklarovaná proměnná var, ale přináší problémy při automatickém přetypování a přetěžování operátorů, které není schopen potom odhalit kompilátor/preprocesor. Co když tu inicializaci někdo přepíse, třeba s čísla na řetězec, to potom bude radost tu chybu hledat.
Jediný příklad, krerý je k něčemu, je že logický výraz musí mít oba operandy typu bool a if, for a while musí obshovat podmínku typu bool. Potom je jednoduché odhalit chyby typu if(i=1) a je to schopný zjistit už kompilátor/preprocesor.
Samozřejmě tohle je můj prvotní pocit a realita může být jiná. Ty příklady mi ale příjdou jako příklady k ruby on rails (nebo komponent k .NETu), kde vytvoří blog za půl hodiny a pak se plácají po zádech jak jeto super. Bohužel ale už nezmíní, že pokud je třeba uďekat trochu něco jiného tak to jde stuha nebo vůbec.
nevíhody, ďelá, sožiťejšíhojsem už dál nečetl. Odkdy je čeština složitější než Java? Ale jo, četl. Příklad z hash mapou je podle mě špatně. V Javě sice nedělám, ale předpokládám že něco jako
typedef má. Jinak souhlasím se shodnocením blogu. Ukazuje pár detailů a prohlašuje to za "úvod". Já jsem se o tom jazyku nedozvěděl vůbec nic.
Jinak kdybych v kódu, který mám udržovat, našel
if (/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.match(email))
{
....
tak si autora najdu a uškrtím ho ve spánku. Co ten kód dělá? Validuje mail? Vybírá maily s číslem na začátku? Já netuším, ale hlavně že ušetřil jeden řádek kódu:
bool valid_email_rfc822 = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.match(email);
if (valid_email_rfc822)
{
....
Není toto o dost čitelnější?
interface MyMap extends Map<String, List<Integer>> {
}
Je to ale celkem zbytečné, protože podle definice proměnné je potom IDE schopno doplnit generiky do inicializace proměnné. A taky je otázka, jestli to nezhorší čitelnost. Po takové definici potom musí člověk dohledávat co tím myslel a pro to Map rozhraní potom musí dohledat jednotlivé implementace s java knihovny.
Ja toto riesim v Jave tak, ze mam v kode nieco ako
a potom volam len
public class Maps {
public static <K, V> HashMap <K, V> newHashMap () {
return new HashMap <K, V> ();
}
// atd pre ostatne mapy
}
Podobne mam aj triedy Sets a Lists.
Map<String, String> map = Maps.newHashMap();
Tyjo, no teď budu za strašného nacistu, ale po perlách typuPevně věřím, že alespoň někdo se dozvěděl, jaké zajímavé vlastnosti a syntaktické zkratky Vala přináší. Tento článek je určen jen jako motivační ukázka možností Valy. Nebudeme se snad přít o tom, že programovací jazyky jsou o něčem jiném než o syntaktických zkratkách. Pokud vím, tak vyjadřovací sílu mají všechny stejnou, od (turingovsky úplných) konfiguráků sendmailu až po Javu.nevíhody, ďelá, sožiťejšíhojsem už dál nečetl. Odkdy je čeština složitější než Java? Ale jo, četl. Příklad z hash mapou je podle mě špatně. V Javě sice nedělám, ale předpokládám že něco jakotypedefmá. Jinak souhlasím se shodnocením blogu. Ukazuje pár detailů a prohlašuje to za "úvod". Já jsem se o tom jazyku nedozvěděl vůbec nic.
Jinak kdybych v kódu, který mám udržovat, našelMyslím, že přidání komentáře by bylo naprosto dostačující. Nicméně tento článek není o psaní "pěkného, čitelného a dobře udržovatelného" kódu a pevně věřím, že pro ukázku jednoduchosti používání regulárních výrazů není třeba zbytečných řádků navíc.tak si autora najdu a uškrtím ho ve spánku.if (/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.match(email)) { ....
Co ten kód dělá? Validuje mail? Vybírá maily s číslem na začátku? Já netuším, ale hlavně že ušetřil jeden řádek kódu:Vzhledem k části, ve které se tato ukázka nachází, bych rád podotknul, že z této podoby by možná vstávaly vlasy na hlavě některým "Perlistům". A ať si taky trochu rýpnu -- uvádět v názvu proměnné číslo RFC mi připadá trochu overkill; když už, tak možná uložit reg. výraz jako konstantu.Není toto o dost čitelnější?bool valid_email_rfc822 = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.match(email); if (valid_email_rfc822) { ....
Nebudeme se snad přít o tom, že programovací jazyky jsou o něčem jiném než o syntaktických zkratkách.A snad se nebudeme přít ani o tom, že že syntaktické zkratky mají pomoct čitelnosti a udržovatelnosti kódu. Pravda je že coby člověku odchovaném na c++ mi takové
open(FILE, "file.txt") || die ("Cannot open file file.txt, exitting.");
mimo Bash nahání husí kůži, zatímco pro programátora v Perlu se jedná o používaný idiom. "Co je pro jednoho idiom..."
když už, tak možná uložit reg. výraz jako konstantu.Pravda.
A ať si taky trochu rýpnuNerýpu, kritizuju.
Samozrejme, že ten regex je zlý, ale ten druhý zápis nie je o nič lepší. Veľa ľudí totiž nemá tušenia aké to je komplikované.
Jediný správny regex podľa RFC je:
http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html
a tuším ani ten nie je 100% korektný :)
Map<String, List<Integer>> var = new HashMap(); kompilátor bude sice prskat, ale bez problému to projde. Zase nechci tvrdit, že někdy není java zbytečne ukecaná nebo používá návrhy jen pro návrhy ne pro použití.V Javě (7) můžeš napsat:
List<String> list = new LinkedList<>();U toho
var = … mi přijde jako hlavní nevýhoda, že se používá příliš konkrétní typ. Např. vím, že někde chci mít obecnou mapu (Map) a v aktuální verzi použiji HashMapu – kvůli var bych pak ve zbytku kódu pracoval s konkrétní implementací místo s obecným rozhraním, což komplikuje budoucí změny (např. budu chtít použít jinou mapu).
Ale jinak nic proti této funkci – on to člověk používat nemusí a deklarovat si typy přesně, jak chce.
var je asi vzato ze C#, objevilo se to tam společně (a kvůli) LINQ ve verzi 3.0
Tiskni
Sdílej: