RE: Je to písmeno nebo není ...
To bude tím, že se v Javě 5 přecházelo na jinou verzi normy Unicode konkrétně z verze 2.1 z roku 1998 (ta ale oproti verzi 2.0, s níž Java začala, přidala jenom znak eura) na verzi 4.0 z roku 2003. Šestka podle mne implementuje verzi 5.0 z roku 2006. Ta udělala zase pár kotrmelců - možná že ta změna interpretace háčku je jedním z nich. Každopádně se v šestce třídy pro normalizaci znaků (převod háčko-čárkovaných písmen na dvojici znak - diakritika a zpět) přestěhovaly z balíčku sun.text do java.text a navíc se jejich metody i trochu změnily včetně požadovaných parametrů. Pozor - v roce 2010 se chystá Unicode verze 6.0, takže můžeme v příští Javě čekat v práci se znaky zase nějaké drobné změny. Rozpovídal jsem se jenom proto, abyste věděli, že i věc, o níž si člověk myslí, že už je dávno usazená, může pořád překvapovat - viz problém s diakritikou. Preji krasny den Have a nice day ° Rudolf P E C I N O V S K Y Senior EDU Expert, ICZ a.s. Associate Professor Department of information technologies University of Economics, Prague Tel: +420 244 101 764 GSM: +420 603 330 090 ICQ:158 156 600 Jabber: pecinov...@jabbim.cz rud...@pecinovsky.cz rudolf.pecinov...@i.cz ° > -Původní zpráva- > Od: konference-boun...@java.cz [mailto:konference-boun...@java.cz] za > uživatele Petr Franta > Odesláno: pátek 11. prosince 2009 09:59 > Komu: konference@java.cz > Předmět: Je to písmeno nebo není ... > > Začaly mi padat testy a po bádání jsem dospěl k tomuto: > Znak "háček" bez písmene - \u02C7 není v JDK 1.4 znak, ale v JDK 1.6 > už znakem je! Asi těch znaků bude více, ale pro mne je to překvapením > ... > > public class Test { > /** > * Test znaku. > */ > public static void main(String[] args) { >char ch = '\u02C7'; > >System.out.println("Znak: " + ch + " " + (int) ch + " " + > Character.isLetterOrDigit(ch)); > } > } > > C:\Program Files\Java\jdk14\bin>java -version > java version "1.4.2_06" > Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_06-b03) > Java HotSpot(TM) Client VM (build 1.4.2_06-b03, mixed mode) > > C:\Program Files\Java\jdk14\bin>java Test > Znak: ˇ 711 false > > c:\Program Files\Java\jdk16\bin>java -version > java version "1.6.0_14" > Java(TM) SE Runtime Environment (build 1.6.0_14-b08) > Java HotSpot(TM) Client VM (build 14.0-b16, mixed mode, sharing) > > c:\Program Files\Java\jdk16\bin>java Test > Znak: ˇ 711 true > > > __ Informace od ESET NOD32 Antivirus, verze databaze 4677 > (20091210) __ > > Tuto zpravu proveril ESET NOD32 Antivirus. > > http://www.eset.cz > __ Informace od ESET NOD32 Antivirus, verze databaze 4677 (20091210) __ Tuto zpravu proveril ESET NOD32 Antivirus. http://www.eset.cz
RE: jakou literaturu do zacatku?
> rad bych se zacal vice venovat programovani v Java. Do ted > (cca 8 let) > jsem programoval spise pro sve potreby nebo par veci pro > zakazniky, a to > prevazne v shellu, php a perlu, vse na Linuxu. Rad bych > pronikl vice do taju OOP a Javy. Prechodem na Javu prechazis nejenom na novou syntaxi, ale také na nove paradigma. Chces-li vytvaret programy, které budou opravdu objektove orientovane a nebudou to jenom nejake objektove se tvarici spatlaniny pouzivajici tridy, mel bys dostat pod kuzi trochu OOP mysleni. Naucit se syntaxi muzes za jedno odpoledne. Naucit se objektove premyslet, to vyzaduje myslenkovy kotrmelec, který beznym programoatorum trva vice nez rok. (Uvadi se, ze preskoloeni klasickeho programatora na objektove orientovaneho trva 12-18 mesicu - cim zkusenejsi, tim dele). Jedinou ceskou knihou, která te uci objektove programovat, je "Myslime objektove v jazyku Java" a na ni volne navazujici (byt jinym nakladatelem vydana) "Navrhove vzory" Z anglickych bych ti mohl doporucit "Head First Object-Oriented Analysis & Design" a "Head First Design Patterns". Knihu "Head First Java" bych nedoporucoval, protože se soustredi spise na syntaxi a objektve orientovanem mysleni ti moc nepovi.
RE: Eclipse a NetBeans
> mám dotaz jestli existuje nějaký plugin, který dokáže > exportovat Netbeans projekty do Eclipse project formátu. Ja si myslim, ze to vubedc není potrewba, protože to, co se zbytkem fimry sdilis, jsou zdrojove kody a ne format projektu. U nas ve firme pracuji programatori ve ctyrech ruznych IDE - každý ve svem oblibenem, a nikde s tim problemy nejsou. Ja sam prepinam podle momentali potreby tech ci onech funkci mezi BlueJ - NetBeans - Eclipse a nemam s tim zadny problem.
RE: hashset contains wtf
> Děkuji za objasnění, už rozumím (naprosto dokonale). > Jednoznačně je to chyba v javadoc. Možná se moje odpověď nebude někomu líbit, ale podle mne v javadoc chyba není. Toto chování vyplývá z vlastností hešových tabulek a měla by to proto vysvětlit učebnice (nebo lektor) jako obecnou vlastnost všech objektů využívajících hešových tabulek. Jestli k vám takováto informace ještě nepronikla, spílejte svým učitelům a autorům učebnic, z nichž jste se Javu učili. Rozlišujte javadoc a učebnici. Kdyby se měly dávat do javadoc i takovéto věci, tak tam za chvíli někdo bude chtít vysvětlit, jak funguje interface nebo jiný jazykový konstrukt. Pro javadoc by mělo stačit prohlášení, že daný kontejner je definován pomocí hešových tabulek, a to tam je. Tím nechci říst, že by javadoc nějakou drobnou zmínku na toto téma nesnesl, ale chápu, proč se Sunům nechce do něj dávat věci, které mají být primárně vysvětleny jinde. Já bych jim spíš vyčítal, že tuto informaci nedali do tutoriálu (leda bych ji tam ve své slepotě nenašel) - tam podle mne patří. Já bych tam zařadil kapitolku o hešových tabulkách, na kterou by se pak odvolávaly všechny kapitoly pojednávajících o kontejnerech, které jsou na hešových tabulkách založeny.
RE: swing literatura
> Nevite nekdo o slusne literature "java swing". Pokud mozno v cestine. > diky Tomas Pro začátečníka např. Horton: Java 5.0 Moc mne sice nenadchla, ale o jiné české pro začátečníka nevím. -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.5.432 / Virus Database: 268.16.8/621 - Release Date: 09.01.07 út 13:37
RE: Udalosti klavesnice
> Tento kód ma vypísať kód klávesy, ktorú stlačím. Keď stalačím hociaku > klavesu, tak mi vypise 0. Prvy krat pracujem s udalosťami klavesnice. > Takže tam bude nejaká chyba,ktorú neviem najisť. Zkus si upravit kód následovně (pak to začne chodit): public class Udalosti extends java.applet.Applet implements java.awt.event.KeyListener { //definujeme premenne int kp, kr, kt; public void init() { addKeyListener(this); } //teraz to vypiseme public void paint (Graphics auto) { auto.drawString("KP=" + kp + ", KR=" + kr + ", KT=" + kt , 10,10); } //zachyti stalacenie klavesy public void keyPressed(java.awt.event.KeyEvent ke) { //kod klavesy kp = ke.getKeyCode(); repaint(); } //zachyti uvolnenie klavesy public void keyReleased(java.awt.event.KeyEvent ke) { kr = ke.getKeyCode(); repaint(); } public void keyTyped(java.awt.event.KeyEvent ke) { kt = ke.getKeyChar(); repaint(); } } -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.409 / Virus Database: 268.13.22/512 - Release Date: 01.11.06 st
RE: lama dotaz: NullPointerException vs. IllegalArgumentException
> Zdravim konferenci, chtel bych se zeptat jestli existuje nejaky padny > duvod proc vyhazovat NullPointerException misto > IllegalArgumentException pokud metoda dostane argument, ktery nesmi > byt nulovy. Pokud je to jedno, pak by me zajimalo kterou z vyjimek > vyhazujete vy. Já v tomto případě dávám přednost výjimce IllegalArgumentException, protože se opravdu jedná o špatnou hodnotu parametru. NullPointerException ponechávám na systému, který ji vyhazuje v případech uvedených v dokukentaci. Řekl bych, že je to výjimka určená pro nevhodné přímé použití prázdného odkazu a ne pro jeho předání jako parametru. Jinými slovy: Výjimka NullPointerException bude vyhozena, když udělám chybu já, IllegalArgumentException když udělá chybu ten, kdo moje metody volá a předá jim na nevhodném místě prázdný odkaz (null). -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.407 / Virus Database: 268.12.9/457 - Release Date: 26.09.06 út
RE: Literatura
> Zrovna se Javu ucim a "Thinking in Java" od Eckela mne prijde pro > zacatecnika, ktery se chce Javu naucit, jako prvni knizka nejlepsi. Záleží na tom, o jakého začátečníka se jedná. Pro člověka, který se potřebuje naučit syntaxi Javy, je určitě dobrá (ostatně já jsem se z ní také učil). Pro člověka, který ještě neumí objektově programovat ale znám lepší. Její nevýhodou pro opravdové začátečníky je, že se omezuje opravdu jen na syntaxi a vůbec se nesnaží čtenáři ukázat, jak má v Javě přemýšlet, takže čtenář po jejím přečtení sice programuje v Javě, ale dál v ní patlá své strukturované programy. Kniha totiž ani vzdáleně nenaznačuje, že pracovat s objekty ještě neznamená objektově programovat. Vynechám-li tu svoji, tak knihy, které se snaží naučit opravdu objektově programovat, jsem zatím objevil jen tři: Head First Design Patterns Lepší z nich. Neomezuje se pouze na výklad návrhových vzorů, ale opravdu se snaží čtenáře naučit objektově přemýšlet. Mrzí mne na ní, že je místy trochu plytká a řídká a že je postavena pouze na AHA-příkladech, ale znám řadu lidí, kterým to nevadí. Kniha ale předpokládá základní znalost syntaxe Javy Object First with Java Ta je určena pro naprosté začátečníky a autor se snaží čtenáře naučit programovat opravdu objektově, nicméně to dělá jen polovičatě. Např. rozhrnaí vysvětluje až ke konci knihy a navíc je primárně zavádí jako náhražku násobné dědičnosti. Big Java To je takový hybrid mezi klasicky pojatou učebnicí probírající syntaxi a knihovny a učebnicí snažící se naučit objektově programovat. Autor již vysvětluje i mnohé ze zásad OOP, ale těžiště výkladu je přece jenom blíže té klasíce. > O logickych operatorech & a | se nezminuje, to me taky > prekvapilo, ale inicializace u anonymnich trid tam popsana je. Inicializaci anonymních tříd vysvětluje až ve třetím vydání (já jsem se učil z druhého), k lepšímu vysvětlení serializace se však nepropracoval ani tam. Čtvrté jsem prozatím v ruce neměl. > A pak mne jeste zaujala "Just Java". Ta mi, bohužel, zatím rukama neprošla -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.405 / Virus Database: 268.10.9/417 - Release Date: 11.08.06 pá
RE: Literatura
> Nejlepsi knizky co jdou trochu do hloubky jsou podle me > pripravne knizky k > certifikacim - at uz Head first edice nebo klasicke, napr. od Sybexu. Obavam se, ze tady se neshodneme. Ani "Head First", any sybexovske certifikace do hloubky nejdou. Ledaze byste v te dopovedi daval duraz na "trochu". Ony totiž jdou do hloubky opravdu jenom trosku (ono to nastesti pro ziskani certifikace staci). Knihy "Core Java", o nichž jsem se tu zminoval, jdou ale do rozumne, pro praktického programátora potřebné hloubky a jdou do ni doopravdy a systematicky. Ne tak jako Eckel, který si najde zajimavou malickost, kterou rozpitva do mrte, ale pak se zapomene na zakladni věci – napr. zminit se o logickych operatorech & a |, či vysvětlit, jak serializovat instance tříd s řízeným počtem instancí nebo jak definovat konstruktor anonymni tridy. -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.405 / Virus Database: 268.10.9/417 - Release Date: 11.08.06 pá
RE: Literatura
Pro člověka, který che znát věci trochu do hloubky a nemusí se učit základy porgramování je podle mne jednou z nejlepších dvojice knih Core Java: Vol I - Fundamentals - ISBN 0-13-148202-5 Vol II - Advanced Features - ISBN 0-13-111826-9 -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.394 / Virus Database: 268.10.4/402 - Release Date: 27.07.06 èt
RE: Add to array objects
> ... nevim jak tam pridat > komponentu, kdyz mam toto > jDesktopPane = new JDesktopPane[jDesktopPane.length+1]; > > tak se mi to proste vymaze, poradte mi jak to resite? To se nevymaže - prostě se vytvoří nový objekt a odkaz v proměnné jDesktopPane se nasměruje na něj. Pokud na ten původní už nikdo neukazuje, stane se kandidátem na odstranění. Potřebuješ-li přidávat složky do vektoru (=jednorozměrného pole) po jedné, použij např. ArrayList. -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.385 / Virus Database: 268.4.1/310 - Release Date: 12.04.06 st
RE: special Window keys
Souhlasím s tím, že je to prasárna. Nicméně je-li to někdy doopravdy potřeba, lze to udělat tak, že si dotyčný programátor nadefinuje vlastní ovladač klávesnice a ten vnutí systému místo toho původního. Ovladač nemusí být kompletní - stačí aby stisky kritických kláves konvertoval na nějaké jiné a zbytek práce pak nechal na původním ovladači. -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.375 / Virus Database: 268.2.1/278 - Release Date: 09.03.06 èt
RE: Numericke operace na typem Double
> Stojim za tim, ze se chyba na trinactem miste v 99% pripadu ignorovat > neda. Napr. pri formatovani pomoci sprintf jak je uvedeno vyse. Opak je pravdou > Konkretne cislo 39.9 / 10 se podle JAVA rovna 3.988 takze ve > vyslednem formatovani se zobrazi 3.99 (teda pokdu zaokrouhluje, > to jsem nezkousel jinak by to vyslo 3.98) > Kdyz ale provedete 39.9 * 0.1 tak podle JAVA dostanete 4.007 > takze ve vyslednem formatovani ziskate 4.00 Jak kde - mně vychází: 39.9 * 0.1 = 3.99 39.9 + 0.1 = 40.0 V programu: public static void test() { System.out.println("\f"); double a = 39.9; double b = 0.1; System.out.println( a + " * " + b + " = " + (a*b) ); System.out.println( a + " + " + b + " = " + (a+b) ); } Díval jste se opravdu dobře na to, co zadáváte? > Hle ona chyba se z trinacte pozice prenesla hned na treti. Jak jsem byl ukázal, chyba naopak nebyla vůbec žádná. Nicméně i kdyby byla taková, jak jste psal, tak se v žádnom případě nepřesunula na třetí pozici, ale byla na jedenácté, protože ten výsledek byl urrčitě výsledek nějakého sčítání a ne násobení. Leda byste měl nějaký nabouraný koprocesor. > Je vysoka pravdepodobnost ze se vyskytnou pripady kdy se > takova chyba prenese dokonce na pozici druhou. Když program napíšu blbě, tak opravdu ano. > Btw. nevim ktere jazyky pocitate za vetsinu. Delphi a C# > temito neduhy netrpi. Trpí jimi všechny programovací jazyky, protože všechny jazyky používají v počítači stejný koprocesor, který tyhle výpočty provádí. Jediný rozdíl je v tom, jakou používáte proceduru pro tisk - pokud používáte v jednom jazyku zaokrouhlovací proceduru a v druhém ne, nemůžete jejich výsledky porovnávat. Začněte v Dephi tisknout s přesností na 15 desetinných míst a budete dostávat stejné výsledky jako u prinln v Javě. Budete-li naopak používat formátovaný výstup v Javě, vůbec takovéte drobné odchylky nezaznamenáte. Používejte printf a porovnávejte hodnoty korektně a máte po starostech. -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.375 / Virus Database: 268.0.0/267 - Release Date: 22.02.06 st
RE: Numericke operace na typem Double
> At se to zda absurdi kupodivu v naprosto bezne praci > potrebuju presnost. > Kdyz mam delat testy musim mit jistotu ze 39.9 / 10 = 39.9 *0.1 = > 39.9/100. Kdyz mi kazda tato operace vrati jiny vysledek pak je neco > sakra spatne. Takze typ double pro mne vlastne efektvine skocil. Sakra špatně je program, který testuje dva double na rovnost. Všechny slušné kurzy programování jasné varují, že přímé porovnání dvou hodnot double je zakázaná operace. Lze-li předem odhadnout řádovou velikost provonávaných hodnot, musí se dvě hodnoty d1 a d2 typu double porovnávat buď abs(d2 - d1) < eps kde eps je nějaké předem zvolené číslo, které je výrazně menžší než požadovaná přensot (už to tu někdo psal). Není-li možno předem odhadnout řádovou velikost (tj. jestli to budou tisíce nebo tisíciny), je to obtížnější - pak se musí porovnávat např. abs(1 - d1/d2) < eps Při běžné práci opravdu není potřeba větší přesnost, než oněch doublem zaručených 15 cifer. S takovou přesností se totiž v běžné praxi nic neměří, takže není důvod na ní trvat. Taková zaručená přesnost je většinou potřeba pouze ve finančních výpočtech, kde potřebujete počítat miliardami a bilióny s přesností na halíře. Druhou oblastí jsou pak naumerická řešení všelijakých rozsáhlých rovnic popisujících tuhé systémy, protože tam je občas potřeba odečíst dvě skoro stejná čísla a nemám-li dostatečný počet platných cifer, jsem v ... Opravdu existují úlohy, kde je třeba místo double používat např. BigDecimal, ale není jich tak moc. I při výpočtech s pomocí BigDecimal vznikají zaokrouhlovací chyby a hlavně jsou tyto výpočty mnohem, ale opravdu mnohem pomalejší. Ne vždy jsme přitom za ono částečné zvýšení přesnosti ochotni touto pomalostí platit. -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.375 / Virus Database: 268.0.0/267 - Release Date: 22.02.06 st
RE: Numericke operace na typem Double
> Nemate tuseni proc se v JAVA napriklad 39.9 / 10 = 3.9898? > > Potrebuji cislo zaokrouhlit napr. na dve desetina mista. Puziji > jednocuchy vzorec Math.round(cislo * 100) / 100 bohuzel konkretne u > cisla zmineneho vise to nejak nevychazi. Nevite co s tim? Záleží na tom, k jakému účelu potřebuješ číslo zaokrouhlit. Je-li to jenom proto, aby se hezky vytisklo, je výhodnější se o zaokrouhlování nestarat a přenechat starost o vzhled čísla formátovacímu objektu. Použiješ-li místo System.out.println( 39.9 + " / " + 10 + " = " + 39.9/10 ); formátovaný výstup System.out.printf( "%.1f / %d = %.2f", 39.9, 10, 39.9/10 ); budeš mít po starostech - vytiskne se 39.9 / 10 = 3.99 Metoda printf ale funguje až od Javy 5.0 - u starších verzí musíš použít trošku komplikovanější metody formátování. Potřebuješ_li z nějakého důvodu s takto zaokrouhlaným číslem opravdu počítat, musíš si ujasnit, jestli ti opravdu ta chyba někde na 14. desetinném místě vadí - pak použij např. BigDecimal, nebo jestli tě to jenom obtěžuje při debugování - pak se na to vykašli. -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.375 / Virus Database: 268.0.0/267 - Release Date: 22.02.06 st
RE: Prevod kodovani znaku
> nehlede na to ze se pise Göethe :-) Tak teď jste mne dostal - vždyť ono by se to jinak muselo číst krátce! Takže tohle je zrovna protipříklad, že ö se někdy může převádět na o. Život není jednoduchý. -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.375 / Virus Database: 267.15.4/255 - Release Date: 09.02.06 čt
RE: Prevod kodovani znaku
> > Uvedená metoda má jednu nevýhodu: neumí převádět > přehlasovaná písmena, která > > se převádějí na dvojice znaků - např. Göthe -> Goethe apod. > Když převedete > > Göthe na Gothe, bode to vypadat dost blbě. > No ze to vypada blbe. Ale prece ceske slovo Kočka taky nechcete > prevadet na Koczka, to by pak byl prevod na ascii podle toho jak to > pismeno zni v mluvenej reci. Hovoříme každý o něčem jiném. Já hovořím o tom, jak se to má přivádět správně a vy dáváte protipříklad, že se to nemá převádět blbě. Pravidla pro převod do podoby bez diakritiky nikde nehovoří o tom, že by se kočka měla převádět na koczku - o něčem takovém opravdu nevím. Vy snad ano? Ale tato pravidla jasně hovoří o tom, že přehlasované ä, ö a ü se převádějí na ae (např. maedchen), ö na oe (např. Goethe) a ü na ue (např. Muenchen - Mnichov - viz www.muenchen.de). Když budete místo Goethe psát Gothe apod., tak se jenom ztrapníte. -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.375 / Virus Database: 267.15.4/255 - Release Date: 09.02.06 čt
RE: Prevod kodovani znaku
Uvedená metoda má jednu nevýhodu: neumí převádět přehlasovaná písmena, která se převádějí na dvojice znaků - např. Göthe -> Goethe apod. Když převedete Göthe na Gothe, bode to vypadat dost blbě. Na javacentrum.sk vo faq je jedna taka metoda, ale mne momentalne javacentrum nefici. Bolo to myslim toto: private static final String tab00c0= "AAAC"+ "DNO\u00d7\u00d8YI\u00df"+ "aaac"+ "\u00f0no\u00f7\u00f8y\u00fey"+ "AaAaAaCcCcCcCcDd"+ "DdEeEdEdEdEdGgGg"+ "GgGgHhHhIiIiIiIi"+ "IiJjJjKkkLlLlLlL"+ "lLlNnNnNnnNnOoOo"+ "OoOoRrRrRrSsSsSs"+ "SsTtTtTtUuUuUuUu"+ "UuUuWwYyYZzZzZzF"; public static String internationalToEnglish( String source ){ char[] vysl = new char[source.length()]; char one ; for( int i = 0 ; i (i); if( one>='\u00c0' & one <='\u017f' ) (int)one - '\u00c0' ); vysl[i]=one; } return new String(vysl); } On 2/10/06, Lukas Fiala <[EMAIL PROTECTED]> wrote: Zdravim,potreboval nejakou sikovnou tridu na "odhackovani" narodnich znaku zruznych znakovych sad do cisteho ascii. Tedy odsraneni ruznych hacku, carek, sprezek, ocasku a podobnych veci. Mel by jste nekdo tip? Lukas Fiala --No virus found in this incoming message.Checked by AVG Free Edition.Version: 7.1.375 / Virus Database: 267.15.4/255 - Release Date: 09.02.06 èt -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.375 / Virus Database: 267.15.4/255 - Release Date: 09.02.06 èt
RE: generic type array
Abys mohl vracet požadovaný typ, musel bys zadat do parametru pole s příslušným typem položek. Pole hodnot parametrizovaného typu však nelze vytvořit, taže se budeš muset s tou varovnou hláškou smířit, anebo si pořídit verzi Javy, jejíž překladač již bude akceptovat zákaz vydávání varování typu "unchecked". > > Chápu správně, že tohle: > > return list.toArray(new LinkedHashMap[list.size()]); > > Nejde v Jave 1.5 doplnit o generický typ > LinkedHashMap, tak aby to negenerovalo > 'unchecked' chybu? -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.375 / Virus Database: 267.14.23/242 - Release Date: 26.01.06 čt
RE: Inlining v javac 1.5
> No, mozna jsem uplne mimo misu, ale principialne v zadnem jazyce nemuze > prekladac udelat inlinovat protected a public metodu, kdezto u private to > udelat muze ;-) A staci na to trivialni preprocesor, ktery ma na inlining > treba Idea. Totez plati pro runtime. Pro runtime platí trochu jiná pravidla. Když překladač zjistí, že metodu nikdo nepřekrývá, může ji klidně "inlinovat" a když se podzději natáhne další třída, která danou metodu překryje, tak prostě přeloží danou část kódu znovu, tentokrát s klasickým voláním. -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.375 / Virus Database: 267.14.22/238 - Release Date: 23.01.06 po
RE: Konstruktory
> > Ted si jenom nekde nastudovat co je to "tovarni metoda" ;-) Jak se > > tomu rika anglicky? Mam k ruce jen knizku "Java in a > > nutshell", kde jsem zadnou zminku o "factory method" nenasel. Vzor, o kterém tu byla rec, se nejcasteji oznacuje jako "Jednoduchá tovární metoda" (Simple Factory Method), co je degenerovaná (ve smyslu zjednoduená) vere obecné tovární metody (Factory Method). Java in Nutshell je prírucka syntaxe a knihovny. Ty o návrhových vzorech vetinou nehovorí. Hledáte-li zmínku v ceské literature, zkuste moji "Myslíme objektove v jazyka Java 5.0". Není to sice ´kniha o návrhových vzorech, ale pouze zacátecnická prírucka programování, ale návrhové vzory vcetne zmínené jednoduché tovární metody (i kdy ji tam oznacuji pouze jako "tovární metoda") tam jsou rozebrány (a zrovna u tovární metody je podrobne zduvodneno kdy a jak ji pouít). Smíríte-li se s anglictinou, najdete skvelý výklad v knize "Head First Design Patterns", a ní tu nedávno beela rec Chcete-li neco zdarma, zkuste Java Design Patterns - napr. na http://www.patterndepot.com/put/8/JavaPatterns.htm Není sice tak dobrá jako Head First, ale je zadarmo. Navíc ukazuje príklady návrhových vzoru na trídách ze standardní knihovny. Zdarma se dá stáhnout také Eckelova "Thinking in Patterns" (www.bruceeckel.com), ale ta má tu nevýhodu, e autor predpokládá, e ctenár cetl "Design Patterns". Autor tam sice prezentuje radu zajímavých názoru, ale musím priznat, e po Head First mne ta kniha u moc nenadchla. Bude-li vám nekdo doporucovat knihu "Design Patterns v OOP", která je také zdarma ke staení (a navíc je cesky), tam tam bych vás varoval, e autor se zabývá pouze tou obecnejí verzí návrhového vzoru "Factory Method" a k takovým trivialitám, jako je jednoduchá tovární metoda, se nesniuje. Jako výchozí bod ke studiu návrhových vzoru je vak tato kniha (hlavne pro exaktneji zamerené ctenáre) velmi dobrá. -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.362 / Virus Database: 267.13.5/177 - Release Date: 21.11.05 po
RE: Konstruktory
Druhou moností oproti té, kterou navrhoval Láda, je pouít místo konstruktoru tovární metodu. V knize "Myslíme objektove v jazyku Java 5.0" jsem to trochu rozebíral - pust si to nekde v knihkupectví pres palec. -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.362 / Virus Database: 267.13.4/175 - Release Date: 18.11.05 pá
RE: Head First Design Patterns
> Chtěl bych se tu podělit o příjemný zážitek z jedné knihy. > > Jedná se o knihu "Head First Design Patterns", info viz > http://www.headfirstlabs.com/books/hfdp/index.html > Upozornil mě na ni Heinz Kabutz ve svém sqělém Java Newsletter, > http://www.javaspecialists.co.za/archive/print/Issue112.html > Hned jak jsem si ten newsletter přečetl, objednal jsem ji > a už si ji třetí den užívám :-) Jedovatě bych si dovolil poznamenat, že jsme se tu o této řadě knih bavili někdy na jaře a společně s Jirkou Hradilem jsme je docela chválili. Možná ne tak velkolepě jako zmiňovaný článek, ale zato mnohem dřív. -- No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.344 / Virus Database: 267.11.8/114 - Release Date: 28.09.05 st
RE: Sort String[][]
> Nevie mi niekto portadit, ako najefektivnejsie utriedit > String[][] podla zadaneho sltpca? Mam tabulku podobnu ako v > Exceli a snazim sa utriedit riadky podla daneho stlpca. V > systeme mam okolo 10.000 riadkov a asi 15 stlpcov. Já bych definoval Comparator, kterému bych v konstruktoru řekl, podle které položky dodaných vektorů řetězců se má rozhodnout o tom, který ze svých parametrů prohlásí jako větší. No a pak bych třídil za pomoci tohoto Comparator-u. -- No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.344 / Virus Database: 267.11.8/114 - Release Date: 28.09.05 st
Co znamena "umet programovat"
Umět programovat = optimálně využívat prostředky, které jsou k dispozici a umět programovat podle zásad, ke kterým programátorská kounita postupně dopěla. Tyto zásady však ve většině učebnic nenajdete, protože to jsou především učebnice syntaxe jazyka. Potkal jsem např. několik programátorů, kteří byli líní vymýšlet byť jednoduchá modifikační pravidla a místo cyklu používali příkaz copy-paste s tím, že v každém opakování změnili příšlušné parametry ručně. Potkal jsem řadu programátorů, kteří sice používali OOP jazyky, ale jejich programy byly sestaveny z několika málo obludných tříd (někdy také z jediné). Znám řadu (i vysokoškolských) učebnic, jejichž autoři tvrdí, že rozhraní v Javě je náhražkou násobné dědičnosti znáné např. z C++. Informace o tom, že současné programování dává implementaci rozhraní přednost před dědičnost, se k nim ještě nedonesla. Znám programátory, kteří mne přesvědčovali, že místo volání bezparametrické procedury je výhodnější skočit na příslušný kód a pak zase zpět, protože takovýto skok je o něco rychlejší. Znám programátory (mezi nimi i lektory a vysokoškolské učitele), kteří se stále domnívají, že dědičnost slouží především k využití již naprogramovaných funkcí bez ohledu na logiku aplikace. Jsou potom schopni definovat obdélník jako potomka bodu (příklady z učebnice programování a seriálu v SN), cyklistu, který potřebuje přeskákat potok po kamenech, jako potomka žáby (příklad z jednoho školení), letadlo jako potomka dvou křídel (příklad citovaný v jedné učebnici) atd., atd. Nedávno se mi jedna učitelka chlubila pracemi svých žáků, jejichž metody byly dlouhé přes několik obrazovek. Když jsem se jí snažil vysvětlit, že moderní programování je nepřítelem dlouhých metod, cítila se dotčena. Příkladů "jak ne" bych mohl jmenovat mraky. Setkáváme se s nimi především proto, že se v učebnicích jen opravdu zřídka vyskytuje rozumně obsáhlý výklad toho, "jak ano". Vyložit syntaxi dá totiž méně práce a autor si přitom nekoleduje o to, aby se do něj ostatní pustili za to, že "to, co on ano, tak oni ne". -- No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.323 / Virus Database: 267.9.2/53 - Release Date: 20.07.05 st
RE: Chyba v prekladu...
> Pokud jste viděli učebnici, o které byste v klidu řekli, že by > Vaši maminku/ženu/dceru programovat naučila, budu velice, ale > velice vděčen za info. Maminka už je ve věku, kdy se odmítá učit obsluhovat mobilní telefon. Nicméně ženu i dcery jsem už částečně zblbnul, protože dělaly redakci mých knih a jako vedlejší ofekt tu tam něco pochytily. Ale abych se vrátil k tomu, proč to píšu. Zkuste se někde podívat po knihách nakladatelství O'Reilly z edice Head First. Jejich učebnici Javy jsem sice v ruce neměl (a ta je právě pro začátečníky), ale viděl jsem jiné a např. u Design Patterns se mi zdálo, že by se z ní dokázal naučit lépe programovat i leckdo z těch, kteří běžným metodám výuky docela vzdorují. Nesoustředí se v ní jenom na popis vzorů, sle snaží se čtenáři vštípit i jejich ducha a spolu s tím se jej snaží naučit i další zásady, jak se má a nemá programovat. Je to jedna z mála knih, které doopravdy učí programovat. Rád bych napsal podobnou, jenom trochu méně ukecanou a trochu méně americkou. -- No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.323 / Virus Database: 267.9.0/43 - Release Date: 16.07.05 so
RE: Chyba v prekladu...
Odpovídám pozdě a ne na dotaz, ale přesto: Naprostým začátečníkům doporučuji používat nějaké jednoduché vývojové prostředí, které je odstíní od takových specialit, jako je třeba nastavování classpath. Připadá mi nemoudré, vysvětlovat zákonitosti tohoto nastavování někomu, kdo má plně kecky toho, aby se vůbec naučil základy jazyka. Myslím si, že na podobné věci je dost času poté, až dotyčný tyto základy zvládne a pochopí význam nastavování classpath v souvislostech. Jak jsem již mnohokrát naznačil, nevíc se mi na většině učebnic nelíbí, že začátečníky neučí programovat, ale jenom je seznámí se syntaxí jazyka v bláhové naději, že umění programovat přijde jako vedlejší efekt. Ale to je už jiná pohádka. -- No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.323 / Virus Database: 267.9.0/43 - Release Date: 16.07.05 so
RE: Náhrada mocniny (^) v C
Operátor ^ znamená bitové XOR v C stejně jako v Javě Céčkový operátor >> nad číslem bez znaménka se v Javě realizuje pomocí operátoru >>>. Tohle bys měl ale najít v kažeé základní učebnici jazyka. > -Původní zpráva- > Od: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] za uživatele [EMAIL PROTECTED] > Odesláno: pondělí 27. června 2005 10:09 > Komu: [EMAIL PROTECTED] > Předmět: Náhrada mocniny (^) v C > > > Potřebuji převést několik metod z DLL knihovny (psáno v C) do javy. > Nedokážu si ale poradit s tímto výrazem: > > long CRC32tab[256] = { > 0x, 0x77073096, 0xee0e612c, 0x990951ba, ... } > > long CRC32(unsigned char value, long crc) { > return CRC32tab[(unsigned > char)(crc^((long)(value)))]^(long)(((unsigned > long)crc >> 8) & 0x00ff); > } > > Největší problém vidím v té mocnině. Java má sice metodu > Math.pow(double a, double b) , ale ta není příliš použitelná > (přetéká). > Jinak přdpokládám, že crc >> 8 by se dalo nahradit crc / 256. > > Poradí někdo ? > > > > > -- > No virus found in this incoming message. > Checked by AVG Anti-Virus. > Version: 7.0.323 / Virus Database: 267.8.2/29 - Release Date: > 27.06.05 po > > -- No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.323 / Virus Database: 267.8.2/29 - Release Date: 27.06.05 po