Anonymní profil Petr – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Petr – Programujte.comAnonymní profil Petr – Programujte.com

 

Příspěvky odeslané z IP adresy 83.240.112.–

Petr
Java › ApplicationContext.xml not f…
26. 4. 2016   #210214

Nejde ani tak o cestu jako o to build samotny, kdyz nastroji, ktery provadi build nereknes aby ti nejaky zdroj nakopiroval kam potrebujes tak to tam nebude. Zkus pouzit maven, pouzivat integrovany build v nejakem vyvojovem prostredi neni moc dobre.

Petr
Java › Genericka metóda
7. 3. 2016   #209147

Kdyz na to ted znovu koukam tak ty vlastne nevracis nic krome booleanu, takze ta konstrukce je tam v tomto pripade nadbytecna, dedicnost jako takova ti uz veskerou funkcionalitu zajisti. Pokud bys vracel misto booleanu E tak by to nejaky smysl melo.

Petr
Java › Genericka metóda
7. 3. 2016   #209146

#5 java
- vyuziti samozrejme takova konstrukce ma, napr. pokud budou existovat tridy trojuhelnik a obdelnik, ktere budou dedit z tridy GeometricObject  pak tato metoda bude fungovat i pro ne

- takovato metoda nedava moc smysl ve statickem kontextu, ocekaval bych ji spise primo na tride GeometricObject, s tim ze by pak mela jeden parametr (referenci na jiny GeometricObject) a porovnaval by jsi to s objektem nad kterym to zavolas, v takovem pripade by ta genericka cast byla i zbytecna, protoze veskere tridy, ktere pak z GeometricObject podedi budou tuto metodu mit

- equals jak ti napsal Kit neprepisuj, z toho kodu co jsi napsal to vypada ze porovnavas obsahy nejakych geometrickych objektu, kdezto metoda equals by mela zjistit jestli jsou objekty stejne, jinymi slovy muzes mit trojuhelnik a obdelnik se stejnym obsahem ale objekty jako takove stejne rozhodne nejsou (lisi se v jinych atributech)

- return obj1.getArea() == obj2.getArea(); - nevim jaky datovy typ vraci getArea(), ale pokud je to cokoliv jineho nez primitivni datovy typ (tedy int, char apod.), tak to nebude fungovat spatne, protoze operator == nad objekty neporovnava obsah objektu ale reference na objekt, tedy zjistuje jestli je to ten samy objekt v pameti, coz nejspise neni to co chces v tomto pripade. Pokud getArea() vraci objekt, pouzij metodu equals.

Petr
Java › Java - závorky - zjištění pá…
24. 2. 2016   #208854

#2 sleepy
to je špatný přístup, protože takto jen zkontroluješ počet závorek, nikoli jejich pořadí, takže výraz [(x + 1] * 2) by jsi vyhodnotil jako validní, ikdyž je špatně.

Petr
Java › Java - závorky - zjištění pá…
24. 2. 2016   #208853

Psát to za tebe nebudu ale tento typ úlohy se standardně řeší pomocí tzv. zásobníkových automatů. Pro tvou úlohu ti stačí, když použiješ jeden zásobník (java.util.Stack). Algoritmus bude vypadat nějak takto:

1. budeš řetězec procházet po znacích
2. když narazíš na levou závorku (jedno jakou), tak ji uložíš na zásobník, když narazíš na pravou závorku tak ověříš, že je odpovídající levá závorka na vrcholu zásobníku, pokud ano levou závorku z vrcholu zásobníku odstraníš, pokud ne jedná se o chybu a vrátíš 0

3. pokud na konci procházení řetězce není zásobník prázdný, jedná se o chybu a vrátíš 0 jinak vrátíš 1

Petr
Java › problém s sc.nextLine() / if()
27. 11. 2015   #206785

#3 EdaBeginner
- cannot find symbol = syntakticka chyba, zpusobena napriklad preklepem v nazvu promenne, funkce atd. Proste prekladac nemuze najit definici neceho a mas tam napsane co nemuze najit a zpravidla i radek na kterem to je. Staci si to precist

- cannot return a value from method whose result type is void = opet si to staci precist, snazis se vracet pomoci return hodnotu z metody, ktera ma navratovy typ void (tedy nema vracet nic), bud definuj navratovy typ a nebo odstran ten return z metody

- jak uz bylo zmineno operator porovnani == nelze pouzit k porovnani obsahu objektu, tento operator pokud je pouzit nad objekty neporovnava obsah ale reference na ne. Tedy jinymi slovy zjistuje jestli se jedna o ten samy objekt v pameti. Ve tvem pripade mas dva ruzne objekty, jeden za tebe vytvori prekladac ze stringoveho literalu "t", druhy vznikne v dobe behu programu. Na dva ruzne objekty je nutne pouzit equals metodu, pripadne jinou metodu, ktera je urcena k porovnani techto dvou objektu.

- pokud si chces hrat se stringy tak doporucuji nastudovat co za metody ma trida String viz http://docs.oracle.com/javase/7/docs/api/java/lang/String.html pro to o co se pokousis by se ti mohly hodit metody jako startsWith, endsWith, indexOf, trim, length a pripadne dalsi. Pro nejake komplikovanejsi operace pak existuji knihovny napr. apache commons StringUtils https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html a mnoho dalsich, ale myslim, ze si vystacis s tim co poskytuje trida String.

Petr
Java › Předávání porměnných mezi ob…
21. 8. 2015   #204474

#14 Kit
To je ten nejlepsi pripad, ale muze se stat, ze ti ten test nespadne nikdy a presto to bude nahodne padat v produkcnim prostredi, protoze tam je jina zatez, jine prostredi atd.

Petr
Java › Předávání porměnných mezi ob…
21. 8. 2015   #204472

#9 Kit
ne, s inkrementaci neni problem, protoze tu dela jen jeden thread a nedochazi k ni pokud probiha dekrementace, jedina synchronizace probiha pri dekrementaci a vypada to nejak takto:

int instancesActive = consumersAlive;
                if (instancesActive > 1) {
                    synchronized (MQTranscodingConsumer.class) {
                        instancesActive = consumersAlive;
                        if (instancesActive > 1) { //double check is here to prevent unnecessary locking
                            consumersAlive--;
                            break;
                        }
                    }
                }

kde consumersAlive je static volatile a je to uvnitr cyklu (proto ten break a double check)

Kdyby jsi ve svem prikladu pouzil misto int AtomicInteger tak ti to tech 20 000 da vzdy a nebo to dat do synchronized bloku nebo metody. To co jsem myslel tim, ze to je netestovatelne je to, ze jednou ten test projde a podruhe nemusi, podle toho jak ty vlakna pobezi. Takze vysledek takoveho testu je neprukazny.

Petr
Java › Předávání porměnných mezi ob…
21. 8. 2015   #204466

#7 Viracochi
Ano tak nějak to může být, jen pozor na new char[partOf.v_registrySize], prostá pole jsou sice trochu rychlejší než kolekce ale nejsou tak blbuvzdorná.

#6 Kit
statické proměnné se běžně používají a to i ve velkých projektech, já osobně jsem například nedávno potřeboval counter aktivních JMS consumer instancí konkrétní třídy, tak jsem na to použil static volatile proměnnou. Řešit to pomocí DI by se to dalo, ale bylo by s tím mnohem více práce a byl by to celkem slušný overkill na to co jsem potřeboval. A kdyby jsi chtěl náhodou namítat, že to je netestovatelné tak ano je, ale proto, že to běží ve více threadech a takový kód se už v základu dost dobře testovat nedá (minimálně ne v unit testu).
Bakalářku mu to neshodí, pokud to dokáže obhájit a i kdyby shodilo tak bych se kvůli tomu moc netrápil, protože pánové na univerzitách jsou dost často trochu mimo realitu (bez urážky), namítají jak to neodpovídá OOP konvencím a když se jich člověk zeptá jak by to rychle a efektivně vyřešili tak nad jednoduchou věcí spekulují dva týdny a pak vypotí něco neefektiního a nepoužitelného (takové jsou mé praktické zkušenosti s lidmi, kteří nikdy nedělali projekt v praxi, kde jsou nějaké termíny a limity).

Petr
Java › Předávání porměnných mezi ob…
21. 8. 2015   #204462

#3 Viracochi
statické proměnné a metody se normálně používají v celé řadě případů, nemusíš z nich mít strach, technicky když ti class loader zavede třídu do paměti tak vytvoří speciální objekt, který je singleton (existuje jen jeden v rámci class loaderu) a v tomto objektu drží veškeré informace o třídě včetně těch statických věcí, takže ono to není až zas tak statické jak by se mohlo zdát :)

Problém se statickými proměnnými a metodami je trochu jiný a sice v rozšiřitelnosti kódu a v nemožnosti použití dalších výhod OOP (rozhraní, polymorfismus atd.).

"Můžete předat objekt do metody a poté volat jeho metody."

To je technicky to co jsem měl na mysli komentářem

// pokud by existovalo vice svetu pak bych predal referenci na Svet jako parametr tohoto konstruktoru 
// ulozil ji do privatni promenne a pak ke svetu pristupoval pomoci teto reference

můžeš jakékoli metodě tedy i konstruktoru předat referenci na instanci objektu a pak tímto způsobem přistupovat k této instanci a jejím public metodám (přes gettery i k jejím interním proměnným).

Petr
Java › Předávání porměnných mezi ob…
21. 8. 2015   #204460

Ahoj,

prvně bych si na tvém místě položil otázku jestli může existovat více než jeden svět, tedy jestli lze předpokládat že v budoucnu bude existovat více než jedna instance třídy svět pokud ano, pokud odpověď zní ne, pak bych si dovolil napsat to celé staticky, pokud tu existuje určitá pochybnost, že bude více světů v budoucnu tak bych to napsal jako normální třídu ale použil bych singleton pattern. Já osobně jsem za druhou variantu, protože nikdy nevíš co bude, přijde nějaký trouba s tím, že chce víc než jeden Svet a budeš to celé přepisovat.

import java.util.ArrayList;
import java.util.List;

public final class Svet {
    //staticke promenne, existuji pouze jednou v ramci tridy Svet
    private static Svet singleton;

    //nasledujici promenne budou existovat pro kazdou instanci Sveta
    private List<Process> procesy; //tady si budes uchovavat list procesu vytvorenych ve svete

    /**
     * Konstruktor
     * zde lze provest nejakou inicializaci
     * protoze je konstruktor private nemuze nikdo jiny vytvorit instanci Sveta
     */
    private Svet() {
        procesy = new ArrayList<>();
    }

    /**
     * Staticka metoda ktera se nevola na instanci ale na tride samotne
     */
    public static Svet getInstance() {
        /* tohle by tu teoreticky nemuselo byt a mohlo by se to inicializovat primo v te promenne (private static Svet singleton = new Svet();),
           nicmene tento zpusob inicializace dava vetsi volnost v tom jak Svet vytvoris
           dalsi vyhodou "lazy" inicializace je to, ze obcas nektere class loadery (cast JVM ktera natahuje tridy a inicializuje jejoch staticke casti)
           se mohou chovat nestandardne a ve chvili kdy si myslis ze uz to je nainicializovane to ve skutecnosti nainicializovane neni
           
           pokud by existovalo vice instanci pak by asi bylo vhodne presunout spravu instanci tridy Svet do nejake jine tridy (pouzit factory pattern)
        */
        if (singleton == null) {
            singleton = new Svet();
        }

        return singleton;
    }

    /**
     * Tato metoda se vola na instanci tridy Svet (tedy na samotnem objektu)
     */
    public void metoda() {
        System.out.println("Metoda sveta");
    }

    /**
     * Vytvori novy proces ve svete, ulozi si referenci do interniho listu a vrati tuto referenci
     */
    public Process vytvorProces(/*tady by mohly byt nejake parametry*/) { //mohlo by to vracet i void zalezi na tom co s tim procesem chces delat
        Process newProcess = new Process();
        procesy.add(newProcess);
        return newProcess;
    }

    /**
     * Vrati seznam procesu v tomto svete
     */
    public List<Process> getProcessList() {
        return procesy;
    }
}


public class Process {
    public Process() {
        // pokud by existovalo vice svetu pak bych predal referenci na Svet jako parametr tohoto konstruktoru
        // ulozil ji do privatni promenne a pak ke svetu pristupoval pomoci teto reference
    }

    public void test() {
        Svet.getInstance().metoda(); //pokud existuje jen jeden svet muzes na to jit takto, stejnym zpusobem muzes volat nejaky getter na objektu typu Svet
    }
}
Petr
Java › Priradenie premennej odkazuj…
12. 8. 2015   #204280

#27 NotBeginner
Nezlob se na mě, ale bez ohledu na to, že souhlasím s tvým pohledem na věc (mám na mysli javu, nikoli osobní rovinu), ti musím říct, že osobními útoky vůči komukoli v diskuzi dosáhneš jediného, budeš sám za vola. 
Můžeš sice tvrdit, že ti nezáleží na tom co si ostatní myslí a říkají, ale kdyby to byla pravda, tak by jsi neměl důvod sem opakovaně reagovat.
Dále si myslím, že shazovat něčí názor argumenty typu jsi NIKDO, protože tu máš málo příspěvků je velice hloupé, působí to dojmem, že sám nemáš argumenty k tomu aby jsi oponoval názoru jiného účastníka diskuze.
Pokud už nemáš další argumenty a řekl jsi všechno co se dalo, tak je přece velice jednoduché nereagovat. Opravdu si myslíš, že pokud budeš mít poslední slovo v diskuzi tak to znamená, že jsi vyhrál? Pokud někdo argumentuje hloupými argumenty, které nedávají smysl v kontextu tvých předchozích argumentů, tak to není potřeba komentovat, protože každý inteligentní člověk, který si přečte diskuzi od začátku to uvidí.

Petr
Java › Priradenie premennej odkazuj…
12. 8. 2015   #204279

#28 Kit
A teď si představ, že se ti něco nevleze na konec papíru a napíšeš to na bok, pak druhý bok, měly by být tyto nové položky považovány za začátek nebo konec seznamu, nebo někde uprostřed? :) Pokud řekneš číslovaný seznam, abecední seznam pak ano to jsou konkrétní příklady seznamů, kde říkáš že ti záleží na pořadí ale když mi někdo řekne slovo seznam tak neočekávám, že pořadí má význam. Tedy dokud se nezačneme bavit o konkrétním typu seznamu. Abych se dostal zpět do kontextu této diskuze, je podstatné jak to chápe nováček v programování, který neví nic o kolekcích nebo polích. Celkem by mě zajímal průzkum na toto téma :)

Petr
Java › Priradenie premennej odkazuj…
12. 8. 2015   #204274

#24 Flowy
No právě, když si sebou vemu do obchodu seznam věcí, které mám koupit, tak mi moc nezáleží na tom v jakém pořadí jsou napsané, problém je v tom, že List se z angličtiny opravdu překládá jako seznam, ale Čeština (nebo Slovenština) to chápe špíše jako výčet dat, u kterých nezáleží na pořadí.

Některé věci by se neměly z angličtiny překládat, já jsem třeba nikdy nepoužil slovo seznam pro List nebo jeho implementace, protože pod seznamem opravdu chápu něco jiné.

Petr
Java › Priradenie premennej odkazuj…
10. 8. 2015   #204152

#15 Kit
Ano titulek článku napsal začátečník, problém vidím v tom, že ty jsi dříve v jiném vláknu označil za dynamické pole následující konstrukci:

Dynamické pole vzniká v Javě takto: 

int[] pole = new int[size];

podle hodnoty size se dynamicky vytvoří pole.

http://programujte.com/forum/vlakno/29701-metoda-na-prevod-poli/

Nezlob se na mě, ale pokud by mi přišel někdo na pohovor s tím, že umí javu a označil toto za dynamické pole tak ho velice rychle přesvědčím, že toto dynamické pole opravdu není. A pravděpodobně bych ho bral jako nevyhovujícího, pokud by si seděl na káblu.


Pokud bychom se bavili o dynamických polích a on(a) by mi tvrdil(a), že ArrayList není dynamické pole, pak bych si to nechal vysvětlit, aby bylo jasné, že tomu rozumí a chápe jak to uvnitř funguje.

Myslím, že není nutné slovíčkařit ohledně těchto věcí, podstatné je, aby si lidi rozuměli pokud se o něčem baví a mám problém s tím jak podáváš tuto problematiku lidem, kteří jsou v javě noví. Myslím, že jim vnášíš chaos do hlav tím, že dogmaticky označuješ něco jako dynamické pole a něco jako statické pole a oni pak uslyší z druhé strany něco úplně jiného.

Petr
Java › Priradenie premennej odkazuj…
31. 7. 2015   #203921

#2 Kit
V Java komunite pokud se bavime o statickem poli a dynamickem poli, tak pod tim chapeme neco jine nez v jazyce C. V C se pod slovy staticky a dynamicky chape jestli je pole staticky nebo dynamicky alokovane, tzn. jestli jsi dany objekt vytvoril staticky nebo volanim malloc / new, ktere vrati ukazatel na kus pameti / novy objekt.

V Jave mame dynamicky alokovane prakticky vsechno. Takze pokud se bavime o statickem / dynamickem poli / strukture tak pod tim chapeme, jestli se je mozne do takoveto struktury neomezene pridavat prvky aniz by tuto strukturu bylo nutne vytvorit znovu.
Pokud se na to budeme divat takto, pak vsechna "pole" v jave jsou staticka, protoze jakmile jim jednou definujes velikost a chces ji prekrocit tak musis puvodni pole zahodit a vytvorit nove.

Nyni k rozdilu mezi polem a kolekci, kolekce jsou dynamicke datove struktury, nekolik implementaci kolekci simuluje chovani poli a interne jsou implementovany pomoci prostych poli. Kdyz se podivas napriklad na implementaci metody add() u ArrayListu tak v jave 7 / oracle JVM to vypada takto:

public boolean add(E e) {
        ensureCapacityInternal(size + 1);  // Increments modCount!!
        elementData[size++] = e;
        return true;
    }

Jak je patrne interne ArrayList pracuje s polem, metoda ensureCapacityInternal ve vysledku zpusobi ze pokud kapacita pole nestaci tak se zavola ve vysledky toto:
 

elementData = Arrays.copyOf(elementData, newCapacity);

Coz prevedeno do terminologie jazyka C by pravdepodobne znamenalo volani malloc s newCapacity, nasledne memcpy a pote free na stary ukazatel, pripadne myslim ze v C byl nejaky realloc, ktery tohle udela za tebe.

Mohl by jsi namitnout, ze ArrayList vlastne vytvari novou instanci pole, takze nesplnuje definici dynamickeho pole, ovsem je potreba si uvedomit, ze jedine co nove vznika a zanika je ta interni reprezentace tohoto pole, nikoli cely objekt ArrayList, ktery obsahuje spoustu dalsich dat, ktera zustavaji zachovana (v jave to proste lepe udelat nejde).

@Michal:

K tematu, pokud chces neco seriozne psat v jave tak se vyhni pouziti prostych poli, pokud to tedy nevyzaduje zadani nebo se nesnazis optimalizovat pro rychlost. Snaz se pouzit kolekce, protoze jsou dostatecne flexibilni pro vetsinu uloh.

Pokud opravdu potrebujes dvourozmerne pole tak bych bud zkusil vyuzit mapu, a nebo pokud opravdu nejde jinak tak List<List<Integer>> twoDArray = new ArrayList<>(); Coz je vlastne List ktery bude obsahovat Listy Integeru.

Pokud vytvoris objekt nekde ve svem programu a potrebujes s nim pracovat jinde, pak ho do jineho objektu proste predej jako parametr metody nebo konstruktoru.

Petr
Java › Přečtení generického typu.
29. 7. 2015   #203873

Ahoj, neni mi moc jasne o co se presne snazis ale prijde mi, ze pouzivas genericke typy na neco k cemu nejsou urcene.

Pro objasneni: kdyz pises neco genericky, tak je to vetsinou proto, ze ocekavas, ze dana implementace by se opakovala pro ruzne typy, takze to napises genericky, mas to v kodu jednou a pak to pouzivas na ruznych mistech a finalni typ se misto generickeho dosadi pri prekladu.

Prijde mi ponekud podivne zjistovat jakeho konrektniho typu je genericky typ, pokud opravdu neco takoveho potrebujes tak muzes pomoci instanceof zjistit jaky typ se tam aktualne pouziva ale tim zadratujes svou implementaci s konkretnim typem (typy) a uz to neni tak uplne genericke.

Myslim, ze by bylo mnohem lepsi kdyby jsi ve vsech "adapterech" podedil stejnou abstraktni tridu a presunul spolecny kod do teto tridy, pripadne pokud takovy kod neexistuje tak jen implementoval jeden interface (ani nemusi obsahovat zadne metody). Pak namisto generika tam budes pracovat s interfacem nebo abstraktni tridou a mas jistotu, ze tam budou jen hrusky/jabka, ktere implementuji ten interface a ne nejaka brambora.

Petr
Java › Java a atribúty (prečo súkro…
10. 7. 2015   #203513

Jak jiz ostatni zminili, jedna se o zapouzdreni. Vyznam tohoto principu neni zjevny u malych programu, protoze trid a objektu, ktere mezi sebou komunikuji je minimum.

Zkusim uvest priklad:

Objekt A ma public atributy, prijde objekt B a zacne vyuzivat funkcionalitu A, pak prijde objekt C a zatimco B vyuziva A tak C zmeni atributy A protoze k nim ma public pristup. Pak treba jeste prijde D, E, F (+ zbytek cinske abecedy) a zacnou stourat do A stejnym zpusobem. B z toho bude mit hlavu jak balon, protoze chovani A bude pokazde jine.

Kazdy objekt by mel mit jasne definovane rozhrani a ucel. Co neni nutne vystavovat navenek to se skryva. Pak kdyz nekdo prijde a chce takovy objekt vyuzit, tak nemusi dlouze premyslet nad vsemi vedlejsimi efekty a situacemi, ktere mohou nastat.

Petr
Java › java.lang.NoClassDefFoundError
16. 6. 2015   #202961

Asi bych začal třeba tady: https://maven.apache.org/guides/getting-started/

Petr
Java › java.lang.NoClassDefFoundError
15. 6. 2015   #202926

#10 Lenka
Promazávat adresáře samozřejmě pokaždé nemusíš. Git funguje tak, že pokud pokud něco není v .gitignore a jedná se o nový soubor, který není v git repozitáři, případně o změněný soubor, který už v repozitáři je, pak ti to git zahlásí a budeš se muset rozhodnout co s tím souborem uděláš (přidat do commitu, ignorovat, stashnout ...).

Tady se ale jedná o to, že v této chvíli je tvůj projekt nefunkční, protože jeho kompilace a spuštění jsou závislé na tvém netbeans.

V praxi u větších projektů se to dělá tak, že na vcs (version control system = git, svn, perforce, ...) je napojený build server (jenkins, team city ...), který vezme každý commit a provede build, případně spustí testy, statickou analýzu kódu, maven release a další operace, podle toho jak se to nastaví.

Tobě stačí (pokud víš, že poslední verze fungovala) u menších změn v kódu prostě provést kompilaci v netbeans a ověřit, že to jede a u větších změn, například přidávání nových knihoven a závislostí, provést kompilaci a spuštění bez netbeans.

Petr
Java › java.lang.NoClassDefFoundError
15. 6. 2015   #202921

#8 Lenka
To je jiný problém, který s tvým původním problémem nesouvisí.

Ano měla by jsi pomocí .gitignore vyloučit všechny soubory, které nejsou nutné ke kompilaci a běhu programu, tzn. projektové soubory z vývojových prostředí jako Netbeans, Eclipse, IntelliJ, dále by měly být vyloučeny produkty kompilace (*.jar, *.class atd.), prostě by jsi do gitu měla nahrát jen to, co je nutné ke kompilaci a běhu (zdrojáky, pomka, properties soubory, ikony atd.), pokud program závisí na nějaké knihovně, jejíž zdrojový kód není součástí tvého projektu, pak použiješ maven k vytvoření závislosti na dané knihovně a maven ji stáhne z repozitáře a použije ke kompilaci.

Když se podíváš na tu závislost, kterou jsem zmínil, tak je tam ve jméně repozitáře následující text:
"A temporary repository created by NetBeans for libraries and jars it could not identify. Please replace the dependencies in this repository with correct ones and delete this repository."

Z toho je patrné, že netbeans za tebe z části spravují závislosti a na lokálním disku ti vytvořily "repozitář", který se pak pužívá jako zdroj pro některé knihovny. Je logické, že pokud někdo jiný použije tvůj zdrojový kód, tak se asi těžko připojí k tomuto dočasnému repozitáři na tvém lokálním disku.

Proto jak říkám ideální by bylo zkusit to kompilovat v "čistém prostředí" bez netbeans z konzole, protože to ti spíše naznačí, co mu skutečně chybí.

Petr
Java › java.lang.NoClassDefFoundError
15. 6. 2015   #202918

   

    <repositories>
        <repository>
            <id>unknown-jars-temp-repo</id>
            <name>A temporary repository created by NetBeans for libraries and jars it could not identify. Please replace the dependencies in this repository with correct ones and delete this repository.</name>
            <url>file:${project.basedir}/lib</url>
        </repository>
    </repositories>

Minimalne tohle zavani problemem, ale muze tam byt neco dalsiho. Idealni by bylo vykaslat se na netbeans, vykopirovat zdrojaky + pom do noveho adresare a pustit maven build z konzole.

Petr
Java › java.lang.NoClassDefFoundError
12. 6. 2015   #202879

Netbeans jsem nepouzil uz dlouho, takze te odkazu na google, napr. prvni link: http://stackoverflow.com/questions/7598623/how-to-setup-classpath-in-netbeans

Soubor .gitignore v adresari projektu pouze rika, ktere soubory ma git kompletne ignorovat

Jakym zpusobem resis zavislosti? Pouzivas maven? Muzes sem dat pom.xml?

Myslim, ze pricina tvych problemu muze byt v tom, ze se spolehas na netbeans, ze za tebe vyresi zavislosti, kompilaci atd. Pak kdyz to preneses jinam tak to dela tohle.

Mas v gitu kompletne vsechno? Vcetne projektu v netbeans? Nebo jen zdrojaky?

Petr
Java › java.lang.NoClassDefFoundError
11. 6. 2015   #202860

Ahoj,

z tohoto stacktrace opravdu nelze urcit o jaky problem se jedna, protoze NoClassDefFoundError muze mit celou radu pricin.

- zkontroluj jestli se ta trida nachazi na classpath (ikdyz tam asi bude, jinak by z toho vypadla ClassNotFoundException)
- podivej se do logu na dalsi vyjimky, ktere predchazeji teto, dost casto se tato chyba objevuje pokud dojde k vyjimce ve statickem bloku v tride, kterou se class loader snazi nacist

Blackboard
Inzerce › Hľadáme Windows Phone Develo…
29. 5. 2015   #202553

Blackboard (www.blackboard.com) hľadá Windows 8 / Windows Phone / Windows Surface Developera

Sme osvedčený líder na trhu vývoja e-learningových systémov. Vyvinuli sme niekoľko priekopníckych aplikácií, ktoré zmenili spôsob, akým študenti a učitelia pristupujú k vzdelávaniu 

Tešíme sa na niekoho, kto nám pomôže pokračovať v tejto tradícii.

Budete:

• spolupracovať na vývoji viacerých aplikácií používaných miliónmi študentov a učiteľov z celého sveta
• pracovať v tíme plnom talentovaných a nadšených ľudí, ktorí milujú vytváranie a využívanie skvelých aplikácií
• mať možnosť ovplyniť vzdelávanie tak ako ho poznáme teraz - určite si pamätáte, čo Vám ako študentom chýbalo a teraz máte príležitosť to zmeniť.

Čo ovládate:
• skúsenosť s prácou/projektami ako Windows 8 / Windows Phone / Surface developer.
•  C # a .NET. Skúsenosti s WPF / Silverlight / XAML a povedomie o Metro UI.
• dobrú znalosť angličtiny

Čo ponúkame:

• hlavný pracovný pomer
• voľnú pracovnú dobu
• 5 týždňov dovolenky
• príspevok na penzijné pripoistenie  (2500 kč/mesiac)
• nápoje a občerstvenie na pracovisku zdarma
• kurzy angličtiny a ďalšie školenia podľa záujmu a potreby
• príjemné pracovné prostredie - žiaden open space
• a ďalšie

V prípade zájmu mi napíšte na alexandra.zmuskova@blackboard.com

Petr
Java › Class path contains multiple…
11. 5. 2015   #202089

Ahoj,

nedavno jsem resil podobny problem kdy mi jedna knihovna dotahla starsi verzi jine. Myslim ze jsem to vyresil pres <scope>provided</scope> u te zavislosti, nicmene nevim jestli to tady pomuze, jeste bych zkusil stackoverflow:

http://stackoverflow.com/questions/14024756/slf4j-class-path-contains-multiple-slf4j-bindings
http://stackoverflow.com/…s-that-requi

Petr
Java › Kalkulačka nepresnosť
7. 5. 2015   #202002

Ahoj,

bez toho aniz tady alespon das tvuj java kod ti asi tezko nekdo rekne kde je presne problem.

Nicmene u vypoctu hodnot techto funkci mohou vysledek ovlivnit 2 dulezite faktory:
- numericka metoda pouzita k vypoctu hodnoty dane funkce.
- presnost (pocet bajtu / delka mantisy) promennych, ktere se pouzivaji k vypoctu (vcetne vysledku) a s tim spojena zaokrouhlovaci chyba

Trochu se to pokusim vysvetlit:

K vypoctu hodnot ruznych matematickych rad, funkci apod. se pouzivaji numericke metody. Pro jednu funkci muze existovat vice ruznych metod, ktere se lisi v rychlosti, presnosti, pripadne definicnim oboru (kdyz je to mimo tak algoritmus ztraci presnost, nebo zcela nefunguje atd.). Z toho tedy plyne ze pokud dva programy pouziji jinou metodu pro vypocet stejne funkce tak se muze vysledek mirne lisit.

Dale tam hraje roli presnost cisel. Vetsina numerickych metod zahrnuje desitky nebo klidne i tisice aritmetickych operaci jako napr. nasobeni a deleni. Cisla v pocitaci jsou ulozena s konecnou presnosti, ktera je dana velikosti pameti, ktera je pro cislo vyhrazena. Napriklad pokud budu delit 1 / 6 tak vysledkem je 0,16666666... ale kdyz to zadas do kalkulacky, tak ti vypadne 0,166666667, protoze vysledek ma omezenou presnost a dojde k zaokrouhleni. Cim vetsi ma vysledek presnost, tim dale bude 7 ve vysledku, ale vzdy tam bude (pokud tedy algoritmus neni schopen pracovat se zlomky, coz by u numerickych metod bylo ponekud komplikovane). 
Pokud se takto zaokrouhleny vysledek pouzije jako vstup jine aritmeticke operace , ktera opet skonci nejakym zaokrouhlenim, tak se ti tam zacne skladat zaokrouhlovaci chyba. Velikost chyby bude zalezet na poctu operaci, typu operaci a presnosti cisel, ktere byly pouzity.

Petr
MS SQL › porovnání dvou tabulek
29. 4. 2015   #201812

Popis neni prilis konkretni, nejsem si jisty jak mas tabulky propojene jestli pomoci ciziho klice nebo jen tak, kazdopadne mi to zni jako ze chces udelat join dvou tabulek a pak vypocitat aritmeticky prumer a pak ho pripadne porovnat s nejakou hodnoutou. Pro vypocet aritmetickeho prumeru v SQL lze pouzit funkci AVG. Join a porovnani jsou asi jasne.

http://www.w3schools.com/sql/sql_func_avg.asp

Petr
Java › Výmena prvkov
24. 4. 2015   #201697

Java 1.8+ ma na rozhrani List metodu sort, ktera je implementovana i linked listem.
Java 1.7- ma Collections.sort.

Petr
Java › Potrebujem radu
21. 4. 2015   #201609

Tohle nema nic spolecneho s jazykem java, jsi ve spatne sekci. Jedna se o javascript. Muzes na onclick eventu na kazde miniature obrazku povesit funkci, ktera zajisti zmenu obrazku v kontejneru pod nim. Pouzij google a nebo se podivej primo do zdrojaku stranky, kterou jsi uvedl jako priklad.

Petr
Java › Vyčtení anotací z neznámého…
15. 4. 2015   #201397

#4 Bicek

Pomoci reflexe muzes pristupovat pouze ke classam, ktere mas loadnute ClassLoaderem, jinymi slovy muzes pristupovat jen k tomu co mas na classpath.

Existuji zpusoby jak loadnout jar za behu. Napr. http://stackoverflow.com/…y-at-runtime

Pak ale asi stejne budes muset znat jmena trid, tzn. budes muset rozbalit ten jar (je to archiv, takze zipUtils nebo neco takoveho), proskenovat ho, najit *.class a loadnout vsechny ty classy no a pak by k tomu melo jit pristoupit pomoci reflexe, vytahnout si anotace a ty informace o ktere ti jde.

Nevim jestli vsechno tady to vynalozene usili bude stat za to :)

Petr
Java › potrebujem poradit...
10. 4. 2015   #201226

#18 SVKSuli

Pokud si myslis, ze to vsechno znas tak se mrkni treba na github, tam je spousta projektu a knihoven v jave. Treba tohle vypadlo z googlu jako jeden z prvnich odkazu: https://github.com/iluwatar/java-design-patterns

Vetsina projektu bude mit nejaky adresar se zdrojaky a pak adresar s testy, bude to nejak logicky rozdelene, podle toho co ktera cast dela. Pokud se pouziva maven, tak tam bude pom.xml atd.

V dnesni dobe pokud aplikace nejakym zpusobem zobrazuje vysledky uzivateli, tak se pouziva MVC design pattern (model view controller), model jsou data, controller obsahuje logiku, ktera to ridi a view to zobrazuje uzivateli, v kodu pak najdes casti, ktere toto nejakym zpusobem implementuji.

Dost casto se dnes taky pouziva vrstvena architektura, tzn kod je rozdelen na ruzne vrstvy, ktere mezi sebou komunikuji, na nejnizsi vrstve mas DAO objekty (data access object), ktere maji na starost samotny pristup k datum, napr spusteni dotazu nad databazi, zapis do souboru.

Nad DAO muze (a nemusi) byt nejaka service, ktera obsahuje logiku, ktera s temi daty neco dela, nad tim muze byt facade vrstva (ale vetsinou neni), ktera ridi volani service. Pokud je kod rozdelen na vetsi kusy (moduly) tak se tam muze vyskytovat vrstva adapteru, ktera umoznuje modul odebrat a nahradit ho jinym no a pak tam muzou byt vrstvy, ktere se staraji o gui.

U vrstvene architektury se na zacatku stanovi pravidla, ktera rikaji kdo s kym muze komunikovat a to se pak striktne dodrzuje, napr. kdyz se nekdo pokusi z gui komponenty zavolat DAO tak by to but nemelo jit a nebo tam bude nekdo kdo mu da pres prsty.

U amaterskych programu se vetsinou o architekture neda moc mluvit, aby architektura vubec mohla vzniknout tak nejprve musim vedet co chci delat, pak jak to budu delat a z jakych casti se to bude skladat a z toho uz mi automaticky vyplynou nektere veci jako jake dao objekty tam budou, jake rozhrani budu muset navrhnout (protoze neco bude komunikovat s necim) atd.

Kdyz treba reknes, ze chces udelat kalkulacku s gui, tak bych ti rekl, aby jsi to rozdelil na tridu s main metodou, pak tridu co bude obsluhovat ksicht a tridu, ktera bude delat samotne pocitani. Pokud budes chtit vetsi funkcionalitu, treba menu, dialog s nastavenim, tak si takovy kod vyextrahujes do nove tridy / souboru a budes to volat z techto puvodnich trid. Obecne by jsi se mel vyhnout tomu, ze jedna trida dela prilis mnoho veci, idealne by mela delat jen jednu vec a z nazvu tridy by melo patrne co dela.


Napriklad kdyz pojmenuju AddressDAO a budou v ni metody, save, load a delete, tak je jasne co to asi bude delat - save mi ulozi objekt typu Address, load ho nacte, delete ho smaze. Rozhodne by takova trida nemela ukladat jine typy objektu, nedejboze treba hrabat do nejakeho GUI atd.

Prijde mi ale celkem zvlastni ze tvrdis, ze toho spoustu znas a neslysel jsi o collections a ztracis se v par tridach. Problem muze byt v tom, ze prectenim nejakeho jednoducheho prikladu clovek casto nabude iluzi, ze vi jak to funguje a pritom to vubec neni pravda. Takze bych si ty zaklady prosel znovu ale poradne na nejakych komplexnich prikladech

Petr
Java › potrebujem poradit...
10. 4. 2015   #201224

#1 SVKSuli

Ahoj,

pokud se chces posunout nekam dale v jave tak bude nutne trochu nastudovat jak to funguje tzn:

1. nastudovat OOP (object oriented programming)

- co je to trida, co je to instance tridy, fields, getter a setter
- co je dedicnost, jak podedit tridu, co se stane kdyz podedim tridu, modifikatory public, private a protected, override metody
- konstruktory, konstruktory vs. dedicnost
- interface co to je jak se pouziva, co se chape pod implementaci interface, abstraktni trida, rozdil mezi interface a abstraktni tridou
- staticky kontext, klicove slovo static, co je to class loader + souvislost se statickym kontextem

2. podivat se na java Collections
- java.util.List
- java.util.Map
- java.util.Set
- java.util.Queue
- iteratory nad kolekcemi

3. genericke programovani (pokud jsi nekdy prisel do kontaktu s C++ tak se to da prirovnat k templates)

4. vyjimky (exception), zpracovani vyjimek - try catch finally, rozdily mezi checked a unchecked exception

5. rozdily mezi primitivnimi datovymi typy a tridami, pole vs. List

6. streamy - co to je, jak se s nimi pracuje (souvisi se soubory, siti, vstupne vystupni operace)

7. design patterns (navrhove vzory) - pochopit alespon ty zakladni tzn. singleton, vyse zmineny iterator, factory

8. nejake slozitejsi veci jako reflection, thready, veci z java EE bych nechal az nakonec

To co tu psali jak ma vypadat kod, jak se ma formatovat, naming conventions to je vsechno sice pekne ale pokud nevis co to dela tak se v tom vzdy ztratis.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý