abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:55 | Nová verze

    OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.

    Ladislav Hagara | Komentářů: 0
    dnes 04:22 | Nová verze

    Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.

    Ladislav Hagara | Komentářů: 0
    dnes 04:11 | Nová verze

    R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.

    Ladislav Hagara | Komentářů: 0
    včera 22:44 | IT novinky

    IBM kupuje společnost HashiCorp (Terraform, Packer, Vault, Boundary, Consul, Nomad, Waypoint, Vagrant, …) za 6,4 miliardy dolarů, tj. 35 dolarů za akcii.

    Ladislav Hagara | Komentářů: 5
    včera 15:55 | Nová verze

    Byl vydán TrueNAS SCALE 24.04 “Dragonfish”. Přehled novinek této open source storage platformy postavené na Debianu v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 13:44 | IT novinky

    Oznámeny byly nové Raspberry Pi Compute Module 4S. Vedle původní 1 GB varianty jsou nově k dispozici také varianty s 2 GB, 4 GB a 8 GB paměti. Compute Modules 4S mají na rozdíl od Compute Module 4 tvar a velikost Compute Module 3+ a předchozích. Lze tak provést snadný upgrade.

    Ladislav Hagara | Komentářů: 0
    včera 04:44 | Nová verze

    Po roce vývoje od vydání verze 1.24.0 byla vydána nová stabilní verze 1.26.0 webového serveru a reverzní proxy nginx (Wikipedie). Nová verze přináší řadu novinek. Podrobný přehled v souboru CHANGES-1.26.

    Ladislav Hagara | Komentářů: 0
    včera 04:33 | Nová verze

    Byla vydána nová verze 6.2 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl povýšen na verzi 13.0.14.

    Ladislav Hagara | Komentářů: 0
    včera 04:22 | Nová verze

    Byla vydána nová verze 30.0.0 frameworku pro vývoj multiplatformních desktopových aplikací pomocí JavaScriptu, HTML a CSS Electron (Wikipedie, GitHub). Chromium bylo aktualizováno na verzi 124.0.6367.49, V8 na verzi 12.4 a Node.js na verzi 20.11.1. Electron byl původně vyvíjen pro editor Atom pod názvem Atom Shell. Dnes je na Electronu postavena celá řada dalších aplikací.

    Ladislav Hagara | Komentářů: 2
    včera 04:11 | Nová verze

    Byla vydána nová verze 9.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 220 vývojářů. Provedeno bylo více než 2 700 commitů. Přehled úprav a nových vlastností v seznamu změn.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (72%)
     (9%)
     (2%)
     (17%)
    Celkem 735 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník


    Vložit další komentář
    21.4.2007 13:54 tommy
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    na TheDailyWTF som videl riesene tak ze sa nacitany string zahasoval a potom sa ten hash pouzil vo switchi
    21.4.2007 18:12 manasekp | skóre: 29 | blog: manasekp | Brno
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    mozna se ptam na blbost, ale prece zahashovanim stringu dostanes akorat jiny string ne? tim se neresi problem ze switch neumi switchovat podle stringu...
    BIOKOMP | Cas od casu se pokousim nekoho srazit k zemi abych se tam nevalel sam.
    21.4.2007 18:15 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Object.hashCode() vrací v Javě int.
    22.4.2007 12:04 fakenickname | skóre: 42 | blog: fakeblog
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Ale jestli se nepletu tak hash může vrátit pro dva různé řetězce stejnou hodnotu. Je to sice zanedbatelná pravděpodobnost, ale je reálná. Vůbec jako využívání hashe jsem v javě ještě nepřišel na chuť.
    22.4.2007 12:23 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    To sice může, ale to už máte pravděpodobnější, že vsadit v loterii, vyhrajete hlavní výhru a do konce života už se nějakou Javou nebudete muset zabývat :-) Já bych tu metodu s hashem nepoužil ještě z jednoho důvodu – podle mne je součástí kontraktu metody hashCode() to, že v rámci běhu jedné aplikace vrací pro stejné objekty stejný hash kód. Ale při znovuspuštění aplikace už ten hash kód může být pro stejný řetězec úplně jiný. Pro String je sice metoda výpočtu hash kódu popsaná v JavaDoc, ale nejsem si jist, jak moc je závazná, a zda se třeba s novou verzí JRE nemůže změnit.
    21.4.2007 13:58 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Haroval gádžo na Javě, spravil sa mu šíber na hlave.

    http://www.xefer.com/2006/12/switchonstring
    21.4.2007 14:34 Radek Podgorny | skóre: 16
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Java fakt nema switch na string? To cumim! To si zase smslnu az nekdo bude nadavat na C# :-)
    21.4.2007 16:51 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Nemá, protože neumožňuje definovat operátory, což obecně Javisti vytahují jako její velkou výhodu (a nevýhodu C++). No a switch porovnává jednoduše pomocí ==, kdežto řetězce v Javě se porovnávají pomocí metody equals a nejde to jakýmkoliv způsobem změnit (mimo zásahu do překladače, ovšem :-)). Mě se toto chování hrubě nelíbí a považuji to za úplně nesmyslné omezení jazyka.
    When your hammer is C++, everything begins to look like a thumb.
    21.4.2007 17:01 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html#intern()

    Takže řetězce by taky měly jít porovnávat (přesněji zjisťovat rovnost) pomocí ==.
    21.4.2007 17:19 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Pokud ovšem zajistíte, aby na každý řetězec, ke kterému máte nějakou referenci, byl výsledkem zavolání metody intern(). Což se bude zajišťovat dost těžko (jinak než na úrovni kompilátoru a předefinováním významu některých operací – např. konstrukce objektu – speciálně pro String). Takže obecně řetězce porovnávat přes == v Javě nelze. Třeba následující kód vám vždy vypíše false:
    String text = "text";
    System.out.println(new String(text) == new String(text));
    
    21.4.2007 17:21 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Jasně, nemyslel jsem to obecně. Ale jde třeba nejakyVstup.intern() == "quit", což je případ tohohle blogu.
    21.4.2007 17:26 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Zajímavé, o tom jsem nevěděl (respektive mě porovnávání referencí z poolu nikdy nenapadlo) ...
    When your hammer is C++, everything begins to look like a thumb.
    21.4.2007 14:36 nhy | skóre: 14
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Nastuduj si nieco o Design patterns a OOP. Zacal by som knihou Head First Design Patterns.
    21.4.2007 14:44 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    dej to na edisk.cz, jestli můžeš :-)
    21.4.2007 15:00 Martin Tůma | skóre: 39 | blog: RTFM | Praha
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code

    Pojídači koláčků a piči Javy útočí! S OOP na věčné časy a nikdy jinak!...

    Já bych spíš doporučoval nastudovat něco o lexikální/syntaktické analýze, ale chápu, nezní to tak cool jako "Design patterns" a OOP...

    Každý má právo na můj názor!
    21.4.2007 15:28 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Myslím, že slovo "pijáci" je společensky konformnější. :-D Ale napadlo mě přesně totéž. ;-)
    22.4.2007 14:08 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Já bych spíš doporučoval nastudovat něco o lexikální/syntaktické analýze, ale chápu, nezní to tak cool jako "Design patterns" a OOP...
    To je těžké, když oni se s těmi patterny nacpou skutečně všude :-)
    When your hammer is C++, everything begins to look like a thumb.
    21.4.2007 15:36 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    switch na String je pěkný nesmysl, proto to taky Java neumí (a doufám, že umět nebude). switch je totiž výběr z několika málo možností. Stringů přitom může být nekonečně mnoho různých. switch pro int je taková berlička, protože když neexistovaly enumy, používaly se místo nich konstanty typu int. To už teď není potřeba, takže jestli máte někde switch nad něčím jiným, než enum, je docela dobré se nad tím pořádně zamyslet, zda tam náhodou není něco špatně.

    Záleží na tom, co vše si od toho promptu slibujete. Pokud má být relativně složitý, asi by se dalo uvažovat o nějakém parseru. A pokud to má být jenom pár příkazů, řešil bych to přes enum, třeba takhle:
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.HashMap;
    import java.util.Map;
    
    public class Test2 {
    
    	private static enum Prikazy {
    		PRIKAZ1("prikaz1") {
    			@Override
    			public void akce() {
    				// TODO
    				System.out.println("prikaz1");
    			}
    		},
    		PRIKAZ2("prikaz2") {
    			@Override
    			public void akce() {
    				// TODO
    				System.out.println("prikaz2");
    			}
    		},
    		QUIT("quit") {
    			@Override
    			public void akce() {
    				System.out.println("Bye.");
    				System.exit(0);
    			}
    		},
    		;
    
    		private final String prikaz;
    		private static Map<String, Prikazy> mapa;
    
    		private Prikazy(String prikaz) {
    			Prikazy.init();
    			this.prikaz = prikaz;
    			Prikazy.mapa.put(prikaz, this);
    		}
    
    		private static void init() {
    			if (Prikazy.mapa == null) {
    				Prikazy.mapa = new HashMap<String, Prikazy>();
    			}
    		}
    
    		public static Prikazy getPrikazByName(String prikaz) {
    			return Prikazy.mapa.get(prikaz);
    		}
    
    		public abstract void akce();
    	}
    
    	public static void main(String[] args) throws IOException {
    		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    		do {
    			System.out.print(">> ");
    			String answer = reader.readLine();
    
    			Prikazy prikaz = Prikazy.getPrikazByName(answer);
    			if (prikaz == null) {
    				System.out.println("Tenhle příkaz neznám…");
    			} else {
    				prikaz.akce();
    			}
    		} while (true);
    	}
    }
    
    21.4.2007 15:40 Radek Podgorny | skóre: 16
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    A odkud berete to, ze switch ma byt na nekolik malo moznosti? Je to prece jen syntakticky "sugar" pro hodne if-else if...
    21.4.2007 15:53 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Je to prece jen syntakticky "sugar" pro hodne if-else if...
    A to máte odkud? V Javě to tak není, v C/C++ pokud vím také ne…
    21.4.2007 15:57 Radek Podgorny | skóre: 16
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Odnikud, to si proste myslim. Ale rad si necham vysvetlit, v cem se to lisi funkcne i ve zpusobu implementace.
    21.4.2007 16:13 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    if zjišťuje, zda je hodnota nějakého výrazu true – pokud ano, vykoná příslušný kód. switch porovná hodnotu výrazu s předem určeným seznamem konstant a skočí na příslušnou část kódu. Ony leccos napovídají už anglické názvy těch příkazů :-) Implementace může být různé, switch by se dal implementovat i tak, že pro malé hodnoty souvislé řady konstant se prostě o onu konstantu zvýší ukazatel právě vykonávané instrukce, takže ani není nutné provádět test, stačí sčítání a skok. Některé programovací jazyky mají dokonce vícenásobný if i switch – switch stále porovnává hodnotu s konstantami, vícenásobný if je zkratka pro if … else if. Výrazy u ifů se pak samozřejmě vyhodnocují pokaždé znova.
    21.4.2007 16:21 Radek Podgorny | skóre: 16
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Podle mne je tohle zcela ekvivalentni:

    if (a == 1) { } else if (a == 2) { } else if (a == 3) { }

    switch (a) { case 1: break; case 2: break; case 3: break; }

    jen si se switchem usetrim opruz s opakovanim "a". Je to podle mne stejne jak funkcne tak dokonce i implementacne (trikrat se udela porovnani v nejhorsim pripade). Nedokazu si predstavit kompilator, ktery by delal "saskarny" se scitanim apod. (mozna by se usetrila komparace, ale pokud by konstanta byla 1000, nacpalo by se tam kilo nopu?) :-(
    21.4.2007 16:22 Radek Podgorny | skóre: 16
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    oops, zapomnel jsem na "pre" :-(
    21.4.2007 16:34 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    21.4.2007 20:02 Tom.š Ze.le.in | skóre: 21 | blog: tz
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Takže nazvat switch-em něco co je implementováno jako

    - najdi hodnotu pro klíč třeba v hash tabulce

    - pokud jsi našel, je to funkce a zavolej ji

    je terminologicky špatně?
    21.4.2007 20:09 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Pokud jsou těla těch funkcí zapsaná jako bloky v alternativách, tak určitě ne. :-) Tohle jsou IMHO implementační detaily, podstratné je, že to navenek je řídicí konstrukce. Hmm, koukám, že mi z odkazu zmizel hash s IDčkem uzlu. Že bych ho tam zapomněl napsat? Asi jo. :-)
    21.4.2007 16:41 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Ekvivalentní to není, dosaďte si místo a volání getA(), a hned máte buď jedno volání metody, nebo 3. break taky není povinnou součástí switche :-) Vzhledem k tomu, že u enum máte zaručeno, že se začne na 0 a hlavně má souvislou řadu, může JIT takovéhle „šaškárny“ docela klidně dělat. A hlavně každý z těch dvou příkazů má jiné použití – if použiju, potřebuji-li rozhodnout o nějaké podmínce, switch použiju, pokud potřebuju vybrat jednu z více možností. Myslím, že je účelnější (alespoň v Javě) takhle k těm dvěma příkazů přistupovat a takhle je rozlišovat – vede to pak ke srozumitelnějšímu kódu.
    21.4.2007 16:43 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Ale nikdo netvrdil, že je to ekvivalentní... Bez switche se lze úplně krásně obejít a přesto to nebude mít žádný vliv na výkon (v situacích, kdy by se jinak použil switch, prostě se to přeloží jako switch). Je to syntaktický cukr.
    21.4.2007 17:00 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    V tom případě je ale syntaktický cukr vše, co není test, aritmetická operace a goto. Tedy cykly, podprogramy atd. Můžete to tak brát, že všechny vyšší programovací jazyky jsou vpodstatě syntaktický cukr přidaný k assembleru. Ale nevidím žádný rozumný důvod se na vyšší programovací jazyky dívat zrovna takhle. Pokud se na to ale budete dívat na úrovni Javy, pak to není syntaktický cukr, protože jednak pro programátora by if a switch mělo znamenat pokaždé trochu něco jiného, jednak to může usnadnit práci optimalizátoru v JIT. Že se switch dá přepsat jako série ifů a if jako switch na tom nic nemění. Taky máte 4 různé druhy cyklů, a z 12 možností, jak jeden druh cyklu nahradit jiným, jich je 8 obecně proveditelných. To ale ještě neznamená, že je budu vzájemně volně zaměňovat – prostě každý druhy cyklu má pro programátora svůj význam, možná jejich rozlišení v něčem může usnadnit práci i JIT.
    21.4.2007 17:10 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    "Můžete to tak brát, že všechny vyšší programovací jazyky jsou vpodstatě syntaktický cukr přidaný k assembleru. "
    Nesouhlasím. Nižší programovací jazyky jsou syntaktický cukr přidaný k assembleru. Vyšší programovací jazyky jsou syntaktický cukr přidaný k lambda kalkulu. ;-)
    21.4.2007 16:44 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Ekvivalentní to není, dosaďte si místo a volání getA(), a hned máte buď jedno volání metody, nebo 3.
    Ale no tak, zachovat sémantiku při syntaktické transformaci snad není problém. Kdyby byl, neexistovaly by kompilátory, že?
    22.4.2007 10:13 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    jen si se switchem usetrim opruz s opakovanim "a". Je to podle mne stejne jak funkcne tak dokonce i implementacne (trikrat se udela porovnani v nejhorsim pripade). Nedokazu si predstavit kompilator, ktery by delal "saskarny" se scitanim apod. (mozna by se usetrila komparace, ale pokud by konstanta byla 1000, nacpalo by se tam kilo nopu?) :-(
    Jo jo. Není důležité něco vědět, důležité je mít názor.

    To platí i pro experty na lambda kalkul, kteří ovládají lexikální analýzu, syntaktickou analýzu a mnoho dalších latinských slov.
    21.4.2007 16:22 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Není? No, kromě naleštěných assemblerů existují i inteligentnější jazyky. ;-) Není třeba chodit na vrabce s kanónem.
    21.4.2007 16:55 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Nějak tomu nerozumím, znamená to tedy, že switch byl v Javě 15 let prakticky k ničemu, než přišla verze 5?
    When your hammer is C++, everything begins to look like a thumb.
    21.4.2007 17:13 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Switch svou podstatou pracuje nad výčtovým typem (podobně jako if pracuje nad typem boolean). Java dříve neměla typově bezpečný výčtový typ, a nahrazovalo se to typem int – proto i switch pracoval nad typem int. Dneska už Java výčtový typ má, tak je rozumné přestat používat jeho náhražku. Switch tedy nebyl k ničemu, jenom svou nedokonalostí odpovídal nedokonalosti (resp. neexistenci) výčtových typů.

    Právě proto, že by bylo zbytečné mít switch jako syntaktický cukr pro vícenásobný if (navíc s divnou syntaxí a s délkou zápisu ± odpovídající délce zápisu else if), vidím jako rozumnější používat switch tam, kde vybírám z omezeného počtu možností (a tedy budu mít ve zdrojáku pro každou myslitelnou možnost odpovídající sekci case). Jedině takové použití má (v Javě) smysl.
    22.4.2007 12:05 fakenickname | skóre: 42 | blog: fakeblog
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Díky za zajímavý příklad..
    21.4.2007 18:24 thingie
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Java je ztracená. Angličtina asi taky. Chá. Teď už zbývá jen s úsměvem na rtech padnout.
    21.4.2007 20:29 tomm | skóre: 7 | blog: tomm's software | Sokolov
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    A cim bych tu Javu jako mel nahradit? Snad ne .NETem nebo snad Mono? Nezkousejte mi cpat Python, Lisp nebo Adu ... potrebujete taky mit lidi, kteri se budou na dane platforme orinetovat a budou k sehnani.
    GUI existuje jen proto, aby se veslo vice terminalu na jednu obrazovku ...
    21.4.2007 21:02 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Před dvaceti lety bys totéž tvrdil o COBOLu. :-) Že jsou lidi líní se učit, to je jejich problém, ne problém Lispu a Pythonu.
    22.4.2007 12:39 tomm | skóre: 7 | blog: tomm's software | Sokolov
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Urcite to neni problem tech jazyku, ale lidi, to se nehadam. Jenze ti lide jsou ti, kteri pracuji ... jazyky sami o sobe nic neudelaji :-(
    GUI existuje jen proto, aby se veslo vice terminalu na jednu obrazovku ...
    21.4.2007 21:23 thingie
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    No, tak čím chceš, když teda cítíš potřebu ji nahrazovat :-)
    22.4.2007 12:40 tomm | skóre: 7 | blog: tomm's software | Sokolov
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Ja ani ne ... to ti lide odchazeji a prichazeji - takovy normalni zivot ;-)
    GUI existuje jen proto, aby se veslo vice terminalu na jednu obrazovku ...
    22.4.2007 09:52 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Myslím, že dobrých programátorů v Javě je úplně stejně, jako dobrých programátorů obecně ;-) Navíc pochybuji, že může být dobrým programátorem ten, kdo zná jen jeden jazyk, nebo jen jeden přístup. Produktivnějším (a to krátkodobě) možná, protože důvěrně zná knihovny a prostředí, ale lepším asi ne.

    Jak psal Kyosuke, Java je prostě moderní COBOL, jazyk pro mainstream, pro rozsáhlé aplikace tvořené ve velkých firmách hromadou programátorů a i když se do této role dostala omylem, můžeme jí to místo na slunci z celého přát :-) Ovšem nemyslím, že alespoň průměrný programátor v Javě nebude schopný se naučit dělat v Pythonu, vždyť ten jazyk je daleko jednodušší (alespoň, pokud nepřijde na pokročilé konstrukce), než Java ;-)
    When your hammer is C++, everything begins to look like a thumb.
    21.4.2007 20:26 tomm | skóre: 7 | blog: tomm's software | Sokolov
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Jestlize to ma byt skutecny prompt, ktery ma ledacos umet, tak bych to resil parsovanim do (obecne stromove) struktury, kterou bych pak "spustil" (v pripade stromu rekurzivne). Ale taky je to mozna zbytecny kanon na vrabce ;-)
    GUI existuje jen proto, aby se veslo vice terminalu na jednu obrazovku ...
    Josef Kufner avatar 21.4.2007 22:46 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    A když nahradíš strom stavovým automatem, tak nepotřebuješ ani tu rekurzi.
    Hello world ! Segmentation fault (core dumped)
    22.4.2007 13:01 tomm | skóre: 7 | blog: tomm's software | Sokolov
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    To je pravda, ale nejsem si jisty, jestli by stavovy automat zvladl i vnorene konstrukce. Nejak si to neumim predstavit - uz jsem postizeny tim stromem ;-)
    GUI existuje jen proto, aby se veslo vice terminalu na jednu obrazovku ...
    Josef Kufner avatar 22.4.2007 23:38 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Jasně, pokud uděláš něco, co by v bashi vypadalo takle:
    cat $( head -1 ./abc )
    tak to samozřejmě pustíš jednou na celek a rekurzivně zpracuješ $(). Myslel jsem to, že je zbytečné rekurzivně procházet stromem při dekódování jednotlivých tokenů. K tomu totiž nepotřebuješ znát cestu, ale jen konec, případně si cestu uložíš do řetězce (názvy proměnných, konstanty).
    Hello world ! Segmentation fault (core dumped)
    wake avatar 21.4.2007 23:55 wake | skóre: 30 | blog: wake | Praha
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    poslys, a to na to java nema nejakou knohovnu? neco jako je tohle?
    Tento příspěvek má hlavičku i patičku!
    22.4.2007 12:06 fakenickname | skóre: 42 | blog: fakeblog
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Možná jo. Zeptáme se pana Kůkla.
    22.4.2007 10:54 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Toto není správné místo na ptaní - akorát se strhne flamewar.

    K samotnému problému - máš spoustu možností. Můžeš použít nějakou hotovou knihovnu (to ale spíš závisí na tom co chceš). Můžes to dělat if/else kolonou, ale to je humpolácké řešení (a na rozdíl od C# ho nelze zapsat jednoduše jako switch, jen jako if/else kolonu). Můžeš to dělat přes enumy. Můžeš to dělat "funkcionálním" stylem.

    Já osobně mám nejraději poslední variantu. Načrtnu zjednodušeně jak na to:
    Command cmd = commands.get(answer);
    if (cmd==null) {
        System.out.println("unknown command: "+answer);
    } else {
        cmd.run();
    }
    
    Toto řešení se dá navíc do budoucna rozšiřovat: například přidat metodu getDescription() a pak automaticky generovat help, přidat metodu checkValidNow() která otestuje zda je příkaz použitelný v aktuálním stavu aplikace, atd.

    Samozřejmě je ještě nutné mapu příkazů naplnit, to lze také dělat pěkně či ošklivě, ale nebudu se zde rozepisovat...
    22.4.2007 12:01 fakenickname | skóre: 42 | blog: fakeblog
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    To je přesně to co sem chtěl vědět :-) Díky
    22.4.2007 12:27 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
    Rozbalit Rozbalit vše Re: Help the looser, save Java Code
    Pro tebe už nikdy opravdu nehnu prstem :-(

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.