Byla vydána první veřejná preview verze PrusaSliceru 3.0. Přesně 15 let po zveřejnění první verze Slic3ru, které připadlo na 1. září 2011. Jedná se o dosud největší upgrade PrusaSliceru: "Řídili jsme se tím, co skutečně potřebujete, a tak jsme například zcela zahodili stávající uživatelské rozhraní a vytvořili ho znovu od nuly. Přinášíme také nový systém projektů, kompletně přepracované profily navržené pro moderní tiskárny s větším
… více »Byl vydán Mozilla Firefox 155.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Vypíchnout lze Smart Window, zatím ale dostupné pouze pro uživatele v USA, Kanadě a Francii. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 155 bude brzy k dispozici také na Flathubu a Snapcraftu.
Tima Cooka na pozici generálního ředitele společnosti Apple dnešním dnem nahradil John Ternus, který byl dosud odpovědný za hardware. Tim Cook vedl Apple od roku 2011, kdy funkci převzal od později zesnulého spoluzakladatele společnosti Stevea Jobse. Za 15 let v čele Applu více než zdvojnásobil tržní hodnotu firmy.
Organizátoři konference LinuxDays ukončil veřejné přihlašování přednášek. Teď je na vás, abyste vybrali nejlepší témata pro letošní ročník. Hlasovat můžete do pondělí 7. září, poté bude podle výsledků hlasování sestaven program pro letošní ročník.
Servo, engine webového prohlížeče napsaný v Rustu, byl vydán ve verzi 0.5.0. Novinky shrnuje přehled projektu za červenec. Došlo k dalšímu pokroku ve vykreslování webových stránek. Současným cílem projektu je vytvořit komponentu webového prohlížeče jako WebView pro použití v jiných aplikacích.
IKEA a XBOX představují kolekci YXSTABY (pdf). Ta přináší designová a praktická řešení, díky nimž se prostor pro hraní během sekundy promění v útulný a harmonický domov.
Jonathan Thomas oznámil vydání verze 4.0 nelineární střižny OpenShot. Nově podporuje nahrávání obrazu a zvuku, vylepšuje uživatelské rozhraní, mj. color grading, přidává další efekty a mnoho dalšího (seznam změn).
Proběhlo hlasování o používání LLM při vývoji Debianu. Vývojáři Debianu si odhlasovali zodpovědné využívání generativní umělé inteligence.
Sovereign Tech Agency (Wikipedie) prostřednictvím svého fondu Sovereign Tech Fund podpoří vývoj Flatpaku částkou 508 640 eur.
Byla vydána první veřejná verze v7.0-mk2 projektu Multikernel (mklinux), který umožňuje spouštět více nezávislých linuxových jader současně na jednom stroji bez hypervizoru.
Na javapolis.com byly zveřejněny návrhy komunity pro novou generaci jazyka Java. Rovněž můžete navštívit výsledky hlasování, které jsou tematicky rozdělené na uzávěry (closures), různé změny v jazyce, používané aplikační servery a (nejen javovské) webové frameworky
Tiskni
Sdílej:
enumů, takže požadují switch na String, ale hlavně že požadují closures, se kterými nebudou umět pracovat už vůbec…
To je jako módní mezi javisty, že zesměšňují každého, kdo požaduje užitečné featury?
Proč by nebyl užitečný switch na string? Třeba pro konverzi řetězce ze vstupu na enum?Myslíte jako vždy ručně znovu implementovat metodu
Enum.valueOf(String)? K čemu by to bylo dobré?
To je jako módní mezi javisty, že zesměšňují každého, kdo požaduje užitečné featury?Nevidím nic užitečného na „featuře“, která s větším množstvím kódu umožňuje něco, co umožňuje už jiná stávající vlastnost (enumy), které jsou navíc kontrolovatelné už v době kompilace.
Umožnění switch na string umožňuje více, než ten váš enum. To, že nemáte dostatek fantazie beru. Sice nepřehledně se to dá emulovat - vytvořit třeba naprosto zbytečný enum s hodnotami všech stringů co potřebuji ve switchi, zkonvertovat string na enum, a pak šup s enum hodnotami do switche, ale považuji to za zbytečnou buzeraci - a přehlednost výsledného kódu bude podstatně nižší, než když v tom switchi budou stringy rovnou.Ty Stringy stejně musím někde vyjmenovat, ať ve switchi, nebo v enumu. Jenom ten enum dává programátorovi i překladači jasně najevo, že je to nějaká omezená množina řetězců, a kompilátor to pak také může kontrolovat (např. kontrolovat, že jste ve switchi ošetřil všechny možné hodnoty). Takže jediný případ, kdy by použití switche místo enumu mělo smysl, je potenciálně nekonečný počet možných vstupních řetězců. Jenomže nekonečný switch taky nejde udělat. Navíc pokud ten program bude mít alespoň nějakou kulturu, nebudete mít řetězce přímo v kódu, ale budete je mít jako konstanty – takže kód bude vypadat skoro stejně, jako s použitím enumu, ale nebude tam ta kontrola v době překladu. Jinak v kódu je rozdíl mezi enumem a switchem volání jediné metody, což těžko výrazně sníží přehlednost kódu.
A kompilátor ve switchi nemůže zkontrolovat to všechno co tu píšete? Kompilátor nemůže zkontrolovat, že jste ve switchi ošetřil všechny možné hodnoty? To jsou mi novinky. Znovu opakuji, že to, že Vaše fantazie je omezená na to, kde se dá použít string ve switch - není problém stringu ve switchi.Pokud kompilátoru předem nedám seznam všech přípustných hodnot, nemůže zkontrolovat, že jsem pro každou přípustnou hodnotu napsal odpovídající větev
case. Pokud by switch pro Stringy přinášel i tu možnost určit všechny přípustné hodnoty, dostanete enum. Tak proč ho vymýšlet podruhé?
Pokud kód bude mít kulturu, tak bude psán tak, aby byl co nejpřehlednější, nejudržovatelnější a nejčitelnější - což nutně neevokuje mít všechny literály jako konstanty - to tu zase tvrdíte něco co není pravda.Hodnoty ve
switchi nejsou jen tak nějaké hodnoty spadlé z nebe, ale je to několik hodnot z omezené množiny. Místo takových hodnot se typicky používají konstanty, protože je většinou používáte na více místech. Jenomže pro omezenou množinu hodnot už má Java vlastní datový typ – enum. A jsme zase zpátky na začátku.
Rozdíl mezi enumem a switchem není volání jedné metody.Najděte víc jak jeden rozdíl:
private static final String ONE = "ONE";
private static final String TWO = "TWO";
private static final String THREE = "THREE";
switch (str) {
case ONE: doOne(); break;
case TWO: doTwo(); break;
case THREE: doThree(); break;
}
private enum Numbers { ONE, TWO, THREE};
switch (Numbers.valueOf(str)) {
case ONE: doOne(); break;
case TWO: doTwo(); break;
case THREE: doThree(); break;
}
Já v tom z hlediska kódu vidím jediný rozdíl, volání metody Numbers.valueOf(String). Z hlediska významu tam vidím minimálně další dvě věci, obě ku prospechu enumů:
private enum Numbers { ONE, TWO, THREE};
switch (Numbers.valueOf(str)) {
case ONE: doOne(); break;
case TWO: doTwo(); break;
}
Kompilátor může dát varování, že je switch neúplný, a:
private enum Numbers { ONE, TWO, THREE};
switch (Numbers.valueOf(str)) {
case ONE: doOne(); break;
case TWO: doTwo(); break;
case THREE: doThree(); break;
case WINTER: doWinter(); break;
}
Tohle vám kompilátor s enumem ani nepřeloží. Se Stringem to v obou případech projde, a divit se budete až za běhu programu.
Znovu opakuji, že to, že Vaše fantazie je omezená na to, kde se dá použít string ve switch - není problém stringu ve switchi.Mohl byste napsat nějaký konkrétní příklad? Podle mne 99,99 % užití Stringu ve switchi je případ, kdy mám předem známou množinu řetězců, které očekávám někde na vstupu, a potřebuju zjistit, která konkrétní hodnota na tom vstupu je. Přesně k tomuhle ale má Java enum, a není důvod zavádět další konstrukci (Java není Perl). Ta zbývající desetina promile jsou případy, kdy by se autor kódu měl přeci jen zamyslet, zda to nemá být enum… Napadá mne vlastně jediný případ, kdy nejde enum použít přímočaře, a to je nemožnost dědění enumů. A i v takovém případě je implementace s využitím enumu lepší, než switch se Stringy, které se vám náhle z ničeho nic zjeví v kódu.