Společnost OpenAI, která stojí za chatovacím robotem s umělou inteligencí (AI) ChatGPT, získala od investorů 122 miliard USD (2,6 bilionu Kč). Hodnota společnosti tak dosáhla 852 miliard dolarů (více než 18 bilionů Kč). Nejnovější kolo investování se stalo největší, jaké zatím firma uskutečnila, a peníze mají posílit ambiciózní plány rozšíření výpočetní kapacity, datových center a nábor talentů.
Nástroj k identifikaci občanů v on-line komunikaci s úřady byl dnes dopoledne zhruba dvě hodiny částečně nedostupný. Problém se objevil kolem 09:00 a podařilo se ho vyřešit kolem 11:00. Částečně nedostupná byla služba Národní identitní autority (NIA), problémy podle DIA (Digitální a informační agentura) ovlivňovaly přihlašování například i přes bankovní identitu. „Dostupnost NIA byla plně obnovena, přihlášení k digitálním službám
… více »Eben Upton oznámil další zdražení počítačů Raspberry Pi kvůli růstu cen pamětí a představil Raspberry Pi 4 s 3 GB RAM za 83,75 dolarů.
Anthropic patrně omylem zveřejnil celý zdrojový kód svého CLI nástroje Claude Code prostřednictvím přiloženého sourcemap souboru v npm balíčku. Únik odhalil doposud nijak nezveřejněné funkce jako je například režim v utajení, autonomní agent 'KAIROS', orchestrace multi‑agentů, režim snění nebo dokonce virtuální mazlíček Buddy. Zajímavostí je detekce naštvání uživatele pomocí obyčejného regexpu. Anthropic rychle odstranil sourcemap a vydal opravu, nicméně kopie kódu se již stihly na GitHubu rozšířit mezi prostým lidem.
Copilot automaticky vkládal do pull requestů 'propagační tipy', reklamní text se na GitHubu objevil ve více než jedenácti tisících pull requestech. Po vlně kritiky byla tato funkce zablokována a produktový manažer Tim Rogers připustil, že umožnit Copilotovi upravovat cizí pull requesty bez vědomí autorů byla chyba.
Je 31. března a tedy Světový den zálohování (World Backup Day). Co by se stalo, kdyby Vám právě teď odešel počítač, tablet nebo telefon, který používáte?
Digitální a informační agentura (DIA) přistupuje ke změně formátu důvěryhodného seznamu České republiky z verze TLv5 na verzi TLv6, která nastane 29. dubna 2026 v 00:00 (CET). Ke změně formátu důvěryhodných seznamů členských států (tzv. Trusted Lists) dochází na základě změn příslušné unijní legislativy. Důvěryhodné seznamy se používají v rámci informačních systémů a aplikací zejména pro účely ověřování platnosti elektronických
… více »Rspamd (Wikipedie), tj. open source systému pro filtrování nevyžádané pošty, byl vydán v nové major verzi 4.0.0. Přehled novinek v Changelogu.
SolveSpace (Wikipedie), tj. multiplatformní open source parametrický 2D/3D CAD, byl vydán v nové verzi 3.2. Přehled novinek v Changelogu na GitHubu. Vyzkoušet lze novou oficiální webovou verzi.
Organizátoři Dne IPv6, tradiční akce věnované tématům spojeným s tímto protokolem, vyhlásili Call for Abstracts. Na webu konference mohou zájemci přihlašovat příspěvky o délce 20 nebo 40 minut či 10minutové lighting talky a to až do 30. dubna. Tvůrci programu uvítají návrhy přednášek z akademického i komerčního sektoru, které mohou být technického i netechnického zaměření. Den IPv6 se letos uskuteční 4. června a místem konání bude i
… více »
Řešení dotazu:
java.lang.Comparable a java.util.Comparator. Pro programování v Javě je vůbec vhodné přečíst si JavaDoc k často používaným balíkům (java.lang, java.util, java.io, java.text) a alespoň anotaci všech tříd v těchto balíkách, abyste měl přehled aspoň o tom základním, co vám runtime knihovna Javy poskytuje.
a radim ho... vse je OK a funguje(pokud radim podle veku),
jen se mi nejak nedari to seradit podle jmena -
nevim, jak mam ziskat tu clenskou promenmou jmeno.....??
diky za rady
trida Clovek: http://pastebin.com/m317ab129
trida Test: http://pastebin.com/m6e4cc751
(a ani to neni nikde v osnovach)..... takze bych uprednostnil nejake(jednodussi) reseni (vrchol toho co jsme delali byl spojovy seznam, ArrayList,.......) takze by po me asi nemeli chtit nejake "komparatoty"
.....napada Vas nake jednodussi reseni??
ja kdyz sem delal neco podobneho(semestralni praci - jednoduchou databazi), tak sem si kazdy Objekt me tridy "prevedl" do Stringu (kde byli vsechny jeho clenske promenne) a ten jsem pak radil....jenze to bylo urcite dost hloupe resene....
diky za rady
java.lang.Comparable, najdete tam, že implementace této třídy je právě ono „přirozené řazení“ – a o tom se píše v zadání.
Jinak jak uz nekdo psal, jednodussi reseni nez komparator asi neni. Prevest objekt na string a ten pak tridit neni snad primo hloupe, ale dobre reseni to rozhodne neni.
......
to zda to uci dobre nebo spatne nemohu dost dobre posoudit, protoze programovani moc nerozumim.....muzu jen rict, ze cviceni me bavi: s ucitelem byla sranda, rad na cokoli odpovi,...a myslim, ze sem se toho za tech par tydnu celkem dost naucil.....
Jinak o vyuku techto predmetu(spojenych s programovanim) se stara katedra informatiky, ne?
a radim ho... vse je OK a funguje(pokud radim podle veku), jen se mi nejak nedari to seradit podle jmena - nevim, jak mam ziskat tu clenskou promenmou jmeno.....??
diky za rady
trida Clovek: http://pastebin.com/m317ab129 trida Test: http://pastebin.com/m6e4cc751
return jmeno.compareToIgnoreCase(jmeno2).
Propiska. Lepší je použít generika, pak to za vás pohlídá kompilátor, pak ale stejně potřebujete udělat test na null.
Za čtvrté, stav by měl být zřejmě výčtový typ (enum).
Za páté, soustava tolika do sebe vnořených ifů by ve vás vždy měla vyvolat podezření, že je na tom kód něco špatně. Zkusil bych třeba tohle:
if (other == null) {
return -1;
}
assert this.nazevFirmy != null;
int result = this.nazevFirmy.compareTo(other.nazevFirmy);
if (result != 0) {
return result;
}
assert this.barva != null;
result = this.barva.compareTo(other.barva);
if (result != 0) {
return result;
}
assert this.barvaPisma != null;
result = this.barvaPisma.compareTo(other.barvaPisma);
if (result != 0) {
return result;
}
assert this.stav != null;
result = this.stav.compareTo(other.stav);
return result;
int result = 0;
if (this.nazevFirmy != null) {
result = this.nazevFirmy.compareTo(other.nazevFirmy);
} else if (other.nazevFirmy != null) {
result = 1;
}
if (result != 0) {
return result;
}
...
nebo kompaktněji
int result = (this.nazevFirmy != null) ? this.nazevFirmy.compareTo(other.nazevFirmy)
: (other.nazevFirmy != null) ? 1
: 0;
asserty jsou přesně podle původního kódu (který nepředpokládal nullové hodnoty), jenom v tom původním kódu chyběly. Pokud tam prázdné hodnoty mohou být, pak je samozřejmě nutné s nimi počítat.
assertem (a příslušně zdokumentován v JavaDocu).
assertů je kontrakt metody takový, že nemá žádné požadavky na vstupní parametry, a v té metodě je chyba – neošetřený případ, kdy některá z hodnot bude prázdná. Pokud někdo tuto metodu zavolá na objekt s prázdnou hodnotou, dojde k výjimce, a je to chyba programátora této metody.
Pokud se použijí asserty (a zdokumentuje se to v JavaDocu, kompilátor zatím s asserty pracovat neumí), je součástí kontraktu metody to, že hodnoty nejsou prázdné. Pokud někdo zavolá metodu na objekt s prázdnými hodnotami, je to chyba volajícího. Některé budoucí verze kompilátorů snad budou umět na takové chyby upozornit už v době překladu.
@Null a @NotNull). Ale je potřeba si uvědomit, kdy se asserty do Javy přidaly.
assert jenom syntaktický cukr místo
if (Boolean.getBoolean("assertion.enabled") && !(expr)) {
throw new AssertionError(…);
}
? K čemu by bylo dobré něco takového do jazyka zavádět?
v té metodě je chyba – neošetřený případ, kdy některá z hodnot bude prázdnáJenže ve Vašem případě je ten případ stejně špatně/dobře ošetřen. Buď null je platná hodnota, a pak se to může řešit extra porovnáním tak, jak jsem navrhoval. A nebo null platná hodnota není. A v případě vstupu neplatné hodnoty se vyhazuje výjimka. A je už jen na úzusu jestli vyhodíte NPE nebo jinou, akorát že kvůli NPE nemusíte psát další řádky kódu, čímžto má marginální výhodu. Pokud chcete něco dokumentovat, můžete napsat do dokumentace jednu větu: žádné z polí nesmí být null. Slabé povahy takový guard ještě můžou chtít vynutit v konstruktoru/setteru jak jsem řekl.
int budete cpát String, taky dostanete za běhu výjimku – ale je snaha to odchytit dřív, konkrétně tohle už v době kompilace. assert má stejný význam, akorát současné kompilátory asserty nijak nekontrolují. Na produkčním prostředí můžete mít assert vypnutý a kód může normálně projít (ne tento konkrétně, ale jiný kód chráněný assertem).
A v případě vstupu neplatné hodnoty se vyhazuje výjimka.Jenže je podstatné, jestli programátor tu neplatnou hodnotu kontroluje, nebo jestli si dá jako podmínku, že na vstupu neplatná hodnota nesmí být, a pak už ji nekontroluje. Test s
ifem a vyhozením výjimky je první případ, assert nebo třeba deklarace typů parametrů metody je druhý případ – programátor hodnoty na vstupu nekontroluje a předpokládá že jsou správně. A deklarovaný typ nebo assert jsou jen nápověda pro nástroje, které tuhle kontrolu udělají za programátora, který danou metodu využívá – přičemž u deklarace typu parametru tu kontrolu umí udělat už kompilátor, u assertů to udělat (zatím) neumí a je to ponecháno až na JVM.
Potíž je ale v tom, co říkáte, totiž že toto vlastnost jazyka není.Není to vlastnost současných kompilátorů, vlastnost jazyka to je od verze 1.4. Problém assertů v Javě je ten, že jsou tak obecné, že kompilátor nemůže umět vyhodnotit všechny možné případy. Ale nenulovost by umět vyhodnocovat mohl. A možná to už i nějaké nástroje na statickou kontrolu kódu dělají. Ani kompilátor od Sunu ve všem neodpovídá plně specifikaci Javy (tj. že by využíval všechny možnosti dané jazykem) – třeba takovou anotaci
@SuppressWarnings jednapětkový kompilátor od Sunu ignoroval, přestože byla součástí runtime knihovny (a u Javy se rozdíl mezi jazykem a runtime knihovnou stírá).
Tudíž je momentálně uvedený assert ekvivalentem testu s NPE a je momentálně zbytečné ho používat.Funkčně ano, ale sémanticky to ekvivalentní není. Souhlasím s vámi, že dnes není prakticky rozdíl*) v chování aplikace když použiju
assert nebo klasický if a vyhození výjimky. Ale význam toho kódu je odlišný a je podle mne škoda se toho významového rozdílu zbavovat.
*) samozřejmě až na to, že s vypnutými assertions je instrukce assert ekvivalentní prázdné instrukci, takže se ušetří provedení pár instrukcí.
Čistě syntakticky by ale bylo lepší aby guardy parametrů byly u jejich deklarace a ne někde v těle funkce.Ano, to jsem psal a zmiňoval jsem anotace, které ovšem v Javě 1.4, kde byly zavedeny asserty, nebyly.
Problém assertů v Javě je ten, že jsou tak obecné, že kompilátor nemůže umět vyhodnotit všechny možné případy.No, ano. A tudíž je to z hlediska detekce při kompilaci k ničemu. Kdyby raději vzali ten jeden případ a dotáhli ho do dokonalosti. Java má vůbec zajímavou historii pokusů a omylů.
Ano, to jsem psal a zmiňoval jsem anotace, které ovšem v Javě 1.4, kde byly zavedeny asserty, nebyly.Anotace mi přijdou jako takový úlet kde se kompenzují všechny problémy, které by se měly řešit jinde. Druhý úlet podobného rázu je pak "programování v snippetech", jak to dovolují "moderní IDE".
Ne opravdu to neni vlastnost jazyka od verze 1.4. Je presne definovano, co aserce jsouDoporučuju přečíst si ten dokument, který jste odkazoval.
rozhodne nejsou urcene ke kontrole nejakych invariantu behem prekladu.To jsem taky nikde nepsal, já jsem psal o vývoji.
Sam asercim fandim, ale napriklad vyse uvadene umisteni aserce tesne pred radek, na kterem pri poruseni aserce ihned dojde k NPE, postrada smysl. … Aserce si precte pouze programator a ten by mel tak jako tak videt, ze na pristim radku dojde k NPEPředpoklady je nutné do kódu napsat hned, když se píše – až ten jednoduchý kód na dva řádky natáhnete na deset řádků, už nikoho nenapadne
assert tam doplňovat. Stejně tak to nikoho nenapadne v okamžiku, kdy přístup přes členskou proměnnou nahradí voláním metody a možnost vyhození NPE přestane být tak zjevná.
assert v kódu zároveň znamená něco jako komentář „vím o tom, že tahle podmínka musí být splněna“. Takže když budu číst výše uvedený kód bez assertů, budu muset začít hledat, jestli ty hodnoty opravdu nemohou být prázdné, nebo jestli je v tom příslušném kódu chyba, nebo jestli je záměr vyhazovat NPE (a chybí to třeba v dokumentaci). Když je tam assert napsaný, vím, že neřešení prázdných hodnot byl autorův záměr.
Takže když budu čísta
strojové zpracováníjsou dvě různé věci. A já pro lidi píšu lidsky a už jsme si ujasnili, že asserty jsou strojově momentálně na prd. A když už mluvíme o strojovém zpracování tak si dovolím ještě dvě poznámky. Za prvé proboha proč musím do JavaDocu opisovat jména parametrů (případně jejich typy), když to v zápětí píšu do deklarace. Vemte si příklad z perlovského Getopt::Euclid. Za druhé divil byste se co všechno lze relativně spolehlivě stojove zpracovat. Bylo by stokrát příjemnější kdybych mohl psát "jméno nesmí být null" do komentáře a dostal z toho varování překladače, pokud tam někde budu cpát null, než abych strkal na dvacet míst kódu nějaké kryptogramy a počítač mi je překládal do češtiny.
už jsme si ujasnili, že asserty jsou strojově momentálně na prdPokud váš kód nikdy nespouštíte. Pokud jej spouštíte například v testech, můžete spoustu porušení kontraktu odhalit už během testů. A i když se na chybu přijde až během normálního testování, pořád assert pomůže najít skutečné místo vzniku chyby (zatímco když necháte program běžet dál, může někdy spadnout až za dost dlouho, a původní příčinu pak budete dlouho hledat).
assert pre mna okrem ineho aj indikator kvality kodu. Zatial co uplnu nepritomnost assertov nehodnotim nijako -- niektori ho proste pausalne nepuzivaju -- zriedkave pouztie assertov v zriedkavych koplikovanych castiach kodu hodnotim ako pozitivnu snahu programatora zaviest prisnejsiu kontrolu seba sameho. Ak je vsak kod prepchaty assertami, vidim to ako varovny signal, ze autor nebol schopny urobit natolko robustny dizajn, aby mu vobec sam doveroval.
.....copak ste to nedelali na cvicenich(nebo prednaskach???)na jakem si programu??
na druhou stranu take nevim co od toho mam ocekavat
.....
ucil sem se z materialu co jsou na eduwebu(je to celkem pekne zpracovane), dale primo od zdroje napr: http://java.sun.com/docs/books/tutorial/ , pak ucebnice Pavla Herouta,.....
na netu je mraky informaci, zdrojaku,,.....
Tiskni
Sdílej: