- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: Asszociációs játék. :)
- Archttila: SMART tesztelés automatizálva: smartctl poller script Zsh-ban, RPi-re
- gban: Ingyen kellene, de tegnapra
- btz: Internet fejlesztés országosan!
- sziku69: Fűzzük össze a szavakat :)
- Parci: Milyen mosógépet vegyek?
- bacsis: Gyere el a 11. BRSZK-ra!
- Luck Dragon: Alza kuponok – aktuális kedvezmények, tippek és tapasztalatok (külön igényre)
- MasterDeeJay: Low budget (50.000 forint) light gémer gép összerakása
-
Fórumok
LOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
Új hozzászólás Aktív témák
-
modder
aktív tag
És ez így is van.
class Termek{
private String nev;
private double ar;
private double menny;
public Zoldseg(String nev, double ar) {
this.nev = nev;
this.ar = ar;
menny = 0.0;
}
public String getNev() {
return nev;
}
public double getAr() {
return ar;
}
public double getMenny() {
return menny;
}
public void setMenny(double menny) {
menny += menny;
}
}
public class Raktar {
Vector<String> aru = new Vector<String>();
public void felvitel() {
String nev = Console.readLine("Kérem adja meg az áru nevét: ");
Termek aru = new Temek(nev, 0.0);
if (zoldsegek.contains(aru)) {
System.out.println("Az áru már létezik!");
return;
}
double ar = Console.readDouble("Adja meg az áruárát: ");
double menny = Console.readDouble("Adja meg az áru mennyiségét (kg): ");
aru.add(new Termek(nev, ar));
}A Termek osztály még nincs kész és valszeg nem is jó.
Te minket itt át akarsz verni ezzel a kóddal!
-
modder
aktív tag
Köszönöm a tanácsokat.
Igen, érdekel komolyabban a programozás. Amúgy a tanárnőnk is mindig mondja, hogy a tervezés egy nagyon fontos szempont, én is így gondolom, csak adatbázisokhoz még nem sok közöm volt, pont azért is próbáltam ki a vizsgaprogramban. Nem gondoltam, hogy ennyire szerteágazó az adatbázisok világa, de legalább ez a kis fejlesztés erre is ráébresztett. 
Az adatbázisok nagyon kemény állatok. Külön tudomány.
-
modder
aktív tag
Egyébként szerintem is tendencia, hogy Eclipse-et többen is használják, mint platformot. Előbb találok plugint egy technológiához eclipse-re, mint netbeansre. Példának okáért Activiti.org BPMN designer, vagy mondjuk Android SDK
-
modder
aktív tag
Mi az az elv amiért nem használsz netbeanst? Én eclipse-es vagyok, de van hogy IDE flame warba kerülök a netbeanses haverommal, és egyikünk se tud értelmes érveket felhozni.
Azt észrevettem, hogy a tapasztalt java fejlesztők kerülik a netbeanst, helyette intellij ideát, vagy eclipset használnak, de a miértre nem tudom a választ.mert a netbeans egy sz*r

-
modder
aktív tag
Egy kis érdekességként beteszed ide egy "fejtörőt". A lényeg az lenne, hogy mindenki fordító és netes keresgélés nélkül oldja meg a saját tudásából és írja be, hogy mit írna ki a program. Mindenkinek a saját lelkiismeretére bízom, hogy betartja e a játékszabályokat. Pár nap után beírom a helyes eredményt, de ha nagyon triviális és mindenki tudni fogja, akkor elnézést.
(Kattintásra nagyobb lesz)
1704
6709 -
modder
aktív tag
Egy kis érdekességként beteszed ide egy "fejtörőt". A lényeg az lenne, hogy mindenki fordító és netes keresgélés nélkül oldja meg a saját tudásából és írja be, hogy mit írna ki a program. Mindenkinek a saját lelkiismeretére bízom, hogy betartja e a játékszabályokat. Pár nap után beírom a helyes eredményt, de ha nagyon triviális és mindenki tudni fogja, akkor elnézést.
(Kattintásra nagyobb lesz)
Én első blikkre azt mondanám, hogy a tranziens adattagot nem fogja egyedül kiírni a fájlba. A static mellett és ellen is szólna érv, most azt, hogy azt kiírja a fájlba, mert miért ne, aztán vissza is olvassa

szerk: tévedtem, a statikus tagot nem írja ki
-
modder
aktív tag
Szerintem, nem.
Gyárilag csak olyanok vannak ott, amiket valóban kerülnénk programunk futásakor. Ezek a kivételek szinte bármelyik programsornál előfordulhatnak, míg a többi csak jól behatárolható helyeken (pl. IOException) De persze megint tudom a kivételt is, hisz sokszor tudatosan használjuk őket. Pl. egy többszöri if (x == null) vizsgálat helyett hagyjuk, hogy beszaladjon a NullpointerException-be, ami majd egy alkalmas helyen elkapunk és kezelünk.
És azt se feledjük, ezek a magyarázatok csak próbálják leírni az egész kivételkezelést!mindneki olyan checked exceptionökkel rakja tele a kódját, amilyenekkel akarja. Csak ne nekem kelljen rajta dolgoznom

-
modder
aktív tag
Hasznossága vitatott, általában nem használják jól
Hát öööö, Javában kötelező kiírni a dobott kivételt a függvény szignatúrába, mást nem nagyon tehetsz, ha nem akarod a függvényen belül lekezelni.
Na floatr megelőzött, és teljesen igaza van.
Nem voltam elég világos. A checked exception-ök hasznosságára gondoltam. És ugye throws-t csak a checked exception-ökre kötelező kiírni. Ezeket ugye aztán nyilván vagy lekezeled, vagy tovább dobod (akkor megint kell egy throws)
Aki nem hiszi, hogy vitatott kérdés a checked exception-ök használata, az járjon utána

Azért mondtam, hogy sokan nem használják jól, mert rohadt sokszor van egy api vagy lib, és tele vannak a metódusok checked pl. IOException-nel. Na hát annak aztán nagyon sok értelme van.
-
modder
aktív tag
-
modder
aktív tag
-
modder
aktív tag
a throws kulcsszót (E/3-ban) metódus szignatúrába írjuk az argumentumlista után.
void doSuchThing(int arg0) throws BusinessException {
...
}Javában az Exception osztályból származtatott kivételek checked exceptionök. Ez azt jelenti, hogy ha egy metódus ilyen exceptiont dob, akkor meg kell jeleníteni a metódus szignatúrában a fenti módon, különben fordítási hiba lép fel. Ez elvileg arra jó, hogy a programozó felkészülhet arra, hogy milyen kivételeket generálhat egy metódus, illetve köteles is azt lekezelni, mert ha nem kapod el, vagy dobod tovább, akkor szintén fordítási hiba.
Hasznossága vitatott, általában nem használják jól
[ Módosította: Qru ] -
modder
aktív tag
félreértetted. A konstruktorban csak értéket adsz:
this.cim = cim;
this.eloado = eloado;
this.hossz = hossz;A ciklusos részeket ugyanúgy a feladat függvényében csináld meg, ahogy eddig.
A parse(line) metódus meg annyit csinál, hogy kiveszi a sorból ezt a 3 értéket, és visszaad egy Szamot
-
modder
aktív tag
Nekem szimpatikusabb az, ha beolvassa először a memóriába és azon kezd el dolgozni.
Mindegy szerintem, mert ígyis-úgyis lineáris keresést kell alkalmazni, akár be is olvashatja. Azt szerettem volna demonstrálni, hogy nem feltétlenül kell beolvasni, ami akár hasznos is lehet, ha később az életben ugyanezt a feladatot kapja egy akkora fájllal, amit már nem illik beolvasni a memóriába.
-
modder
aktív tag
Sziasztok.
Kezdő programozó vagyok.
Szeretném segítségeteket kérni ebben a feladatban.
Összeállítottunk egy zenelejátszási listát, amelyben N zeneszám van. A listában a lejátszás sorrendjében szerepelnek az előadók neve (egy szó), a dal címe (egy szó) és a hosszúsága másodpercekben. (Ugyanaz az előadó, ugyanazzal a dallal csak egyszer szerepel.)
a) Szerepel-e egy adott E előadó a listán?
b) Igaz-e, hogy a lejátszási listán egyre rövidebb számok kerülnek előadásra?
c) Ha a lejátszási listát végtelenítjük, melyik dalt halljuk kezdéshez képest K másodperc múlva?
d) Az azonos című dalok közül melyik a leghosszabb?Az A-t sikerült megoldanom. (Van már saját Listám ami következő oszlopokat tartalmazza:
Másodperc | Előadó | Dal) Az első feladatot sikerült tömb nélkül megoldanom. De a többihez kelleni fog, és nem tanultuk hogyan kell több adatsorból álló tömböt tölteni fájlból.Előre is bocsánat ha ez nem ide tartozik, de egyedül nem hiszem, hogy megtudnám őket oldani.
egyszerűbbé teheted az életed, ha csinálsz egy típust a számoknak
class Szam {
String eloado;
String cim;
int hossz; //masodperc
public Szam(String eloado, String cim, int hossz) {
// ertekadas a tagvaltozoknak
}
}Felteszem, hogy sikerült beolvasnod a sorokat. Biztonság kedvéért http://stackoverflow.com/questions/5868369/how-to-read-a-large-text-file-line-by-line-using-java Ha el akarod őket menteni a memóriában, akkor pl. (pszeudokód)
List<Szam> szamok = new ArrayList<Szam>();
while ((line = br.readLine()) != null) {
Szam aktualisSzam = parse(sor);
szamok.add(aktualisSzam);
}De elárulom neked, hogy ez egyik feladathoz sem kell.
B)
Szam elozoSzam = br.readLine(); // elso sor
while ((line = br.readLine()) != null) { // tobbi sor
Szam aktualisSzam = parse(sor);
if ( elozoSzam.hossz < aktualisSzam.hossz ) {
// nem igaz
}
elozoSzam = aktualisSzam;
}C) hasonlóan, de egy int-ben összegzed a számok hosszát (ha a sorok végére értél, elölről kezded, tehát két ciklust kell egymásba ágyaznod). A ciklusból kilépési feltétel az, a osszHossz >= K. Akkor az abban a ciklusban beolvasott szám lesz a keresett.
D) Itt már kell egy Map
Map<String,Szam> perCim = new HashMap<String,Szam>();Végigmész a sorokon, és megnézed, hogy az aktuális szám címével van-e szám a mapban. perCim.get(cim) != null. Ha nincs, beteszed.
Ha van, akkor megnézed, hogy az aktuális hosszabb-e, mint a bentlévő, és a feltételnek megfelelően cseréled.Ja, és köszönet, nagyobb nyelvtani hibák nélkül, tagolással, és az írásjelek megfelelő használatával tetted fel a kérdést. Ritkaságszámban megy az ilyen

-
modder
aktív tag
Mondjuk elsőnek ezen rágd végig magad: [link]
Vagy az Ansgter Erszébet féle objektumorientált javás könyv (valaki itt pár napja leírta a pontos címét is)Azt, hogy miképp teszed magadévá a tudást, miképp szerzel némi gyakorlatot az nem szigorúan java kérdés. Általában egy gyakorlati tudásról elmondható, hogy úgy teszel szert rá, hogy csinálod, csinálod és csinálod. Persze jó, ha az elején van ami/aki vezeti a kezedet.
Jómagam, amikor a jelenlegi melóhelyemre kerültem nem javáztam semmit sem. Itt egy Java SE tanfolyamot végigültem, miközben már feladatokkal bombáztak. Azóta meg meg ebből élek úgy, hogy közben sok-sok új technikával, technológiával meg kellett ismerkednem. De ezek már mind specifikusan az adott feladathoz kapcsolódóan jöttek elő. Tehát itt már nincsenek konkrétumok. Mindent úgyse fogsz tudni magadévá tenni. De újra mondom, amit az SE tartalmaz abból szinte minden kell, akármerre mész is.Annyit hagy kössek bele a félreértések elkerülése végett, hogy nem minden kell, amit a Java SE tartalmaz.
Ezen a [link]-en a General purpose packages az, amit tényleg tudni kell használni, de Special purpose packages már feladatspecifikus, pedig az is a Java SE része.Egy egyszerű példával élve, ha webfejlesztéssel akar valaki foglalkozni, fölösleges magába erőltetnie a Java Swing tudást.
-
modder
aktív tag
Akkor kérdezem itt:
Suliban fél éve tanulunk Java-ban programozni (előző szemeszterekben c,c++ volt már), és ez végre tetszik is, de még nagyon kezdő szinten vagyok.
Lehet hülyén fog hangzani, de mi mindent kell tudni, mennyit kell gyakorolni, mennyire tapasztaltnak kell lennie ahhoz, hogy egy jobb java-programozói állást találj? Vagy mikor mondhatja az ember magáról azt, hogy "na én java programozó vagyok"? (jöhet saját tapasztalat is akár, tipp, minden...akár pm-ben, akár ide)
Jelenleg csak a jéghegy csúcsát látom az egész programozásból, nem vagyok még benne eléggé, de el tudnám magamat képzelni az 5. év után, hogy akár programozó legyek, ezért lenne szükségem pár ilyen helyrerázó infóra, pofra, hogy hogy is néz ki ez valójában.
Ha esetleg tudtok pár jó oldalt vagy akár könyvet ajánlani, jöhet minden
Remélem érthető volt a mondandóm,
A válaszokat köszi előre is,szeretem ezeket a kérdéseket, mert lehet rájuk olyan szép ezoterikus válaszokat adni

-
modder
aktív tag
Sziasztok!
Befotózott, gépelt jegyzet pixeleinek javításához kerestem programot, de semmi értelmeset nem találtam, úgyhogy megírom magamnak. Annyi lenne az egész, hogy ha sötét árnyalatú pixelt talál, azt frissíti feketére, ha világosabbat, azt fehérre (a későbbi nyomtatáshoz...). Színes képek vannak, infranview-val próbáltam fekete-fehérre alakítani, de botrányosan xar minőségben csinálta, volt, hogy a fél oldalt kiöntötte feketével, volt, hogy egész szavakat tüntetett el.
Java-ban milyen osztályt lehet ilyen pixel manipulációra használni? (még nem döntöttem miben írom, de ha nem muszáj nem csinálom assembly-ben
)
Előre is köszi a segítséget.hát ez elég naivan hangzik. GIMP vagy fotoshop, vagy imagemagick
-
modder
aktív tag
Eclipse Ketler, JAVA EE alkalmazásokhoz szánt verzió, új projektnél a Runtime meghatározásánál meg kell adni egy alkalmazásszervert, ami nálam egy Glassfish, letöltöttem a glassfish 4.0-ás verzióját, kéri is a helyét az Eclipse, meg is találja benne a szervert, de itt írja azt a wizard, hogy csak JRE-t talált, egy 1.6-ost ami alapból fent van a gépen, és én adtam hozzá egy 1.7-et de az is csak JRE, így nem enged továbbmenni, mert írja, hogy JDK kell neki.
printscreen: [link]
JDK - Java Development Kit - Java programok fordításához szükséges környezet
Szerintem ebben a JRE is benne van
http://www.oracle.com/technetwork/java/javase/downloads/index.htmlJRE - Java Runtime Environment - Java programok futtatásához szükséges környezet
http://www.oracle.com/technetwork/java/javase/downloads/index.htmlJava EE SDK - JDK és/vagy Glassfish
Itt látod, hogy a négy csomagban mi van benne: lehet JDK-val vagy anélküllel
Ugye glassfish nélkül nem lehet, mert maga a Glassfish adja a Java EE (Java SE fölötti) runtime-ot.
http://www.oracle.com/technetwork/java/javaee/downloads/index.htmlJava Glassfish Server - Glassfish + JRE
Egész biztos vagyok benne, hogy ebben nem lesz JDK, csak JRE
https://glassfish.java.net/download.htmlNeked melyik kell?
Ha Java SE programokat akarsz fejleszteni, akkor elég egy JDK. Ha Java EE platformot akarsz fejleszteni, akkor Java SDK (JDK-val vagy anélkül, ha ki akarod tudni cserélni a JDK-t, mert olyan igényeid vannak) -
modder
aktív tag
Sziasztok.
Kérnék tőletek egy kis segítséget. Szakdolgozatot kell írnom, igazából csak téma választásban vagyok tanácstalan, nincs semmilyen ötletem hogy mégis milyen programot írhatnék. Órákon keresztül böngésztem mindenhol és gondolkoztam ezen a dolgon, de nem jutottam semmire..
Nagyon örülnék ha valakinek esetleg lenne ötlete milyen programot valósíthatnék meg. Bármilyen területen mondhattok ötleteket, annyi a lényeg még, hogy legyen egy adatbázis a program mögött.Remélem tudtok segíteni.

http://groovy.codehaus.org/Compile-time+Metaprogramming+-+AST+Transformations
bár ez nem az a tipikus sakkprogram dolog, viszont menő.
-
modder
aktív tag
Megpróbálom akkor még egyszer.

Van három osztály:
A osztály
B osztály
C osztályA B osztály a háttérben fut, ha kap Blueotoothon keresztül egy XML fájlt akkor C osztályból létrehoz egy új példányt, ami az XML-t parseolja. A C osztály az eredményt egy interfészen keresztül adja át az A osztálynak.
Ha A osztályból példányosítanám a C osztályt, akkor tudom hogy kellene megoldani(pl a C osztály konstruktorában átvenni az A osztály által implementált interfészt, majd azon keresztül visszaüzenni).
De mivel itt B osztályból példányosítok ezért nem tudom, hogy hogyan kellene.Remélem így világosabb
.Igen, itt a kérdés, hogy A osztályt ki példányosítja. Ha B, vagy már egyébként létre van hozva, és B ismeri, akkor:
public interface A {
public void processObject(Object o);
}
public interface C {
/**
* processXml(String xml, A a) feldolgozza az xml-t, és az eredményt átadja
* a-nak A#processObject(Object o)-n keresztül
*/
public void processXml(String xml, A a);
}
class B {
A a;
public void newXml( String xml ) {
new C().processXml(xml,a);
}
}
public class CImpl {
public void processXml(String xml, A a) {
Object o = parseXml(xml);
a.processObject(o);
}
}Ha C-ben még szükséged van A-ra, akkor a C konstruktorában is átadhatod, de ez így tisztább, jobban látni a függőséget. Az eredeti kérdés interfészekre vonatkozott. Azt nem tudod meghatározni interfészekkel, hogy a C#processXml() implementációja mi legyen, ezért JavaDoc-ban szokták definiálni, hogy miylen további felelőssége van egy metódusnak.
-
modder
aktív tag
Java Glassfish SSL konfigurálásban tud valaki segíteni?
A cél az hogy egy Servlet SSL-en fogadni tudjon HTTPS üzeneteket illetve indítani is(egyenlőre kliens hitelesítés nélkül).
Sima Servletet már csináltam, és Java kliens felől is használtam már Two-way SSL-t.
Ezen leírás alapján próbálok kicsiholni valamit, de nem sok sikerrel.
Igazából nem is értem, hogy működik, mert a keystorenak meg kell adni a jelszót, hogy betudja olvasni ha kliensből akarok titkosítani.
Na mármost, ha a Glassfishben akarok hozzáadni egy keystore-t akkor ott sehol nem kell megadni a keystore jelszavát.lehet, hogy webes adminból nincsen rá lehetőség, de emlékeim szerint a domains.xml-ben ott van a default jelszó 'changeit' a keystore definíciójánál
-
modder
aktív tag
Sziasztok
aknakeresőt próbálok csinálni, de elakadtam ott,hogy amikor egy üres mezőre kattintunk akkor a körülötte lévők is benyomódjanak.buttonfield[i][j].setActionCommand("0");
ActionListener al = new MyActionListener(buttonfield[i][j]);
buttonfield[i][j].addActionListener(al);ez történik ha egy darab olyanra kattintunk ami alatt "0" szerepel, azaz nincs körülötte akna, a MyActionListenerben meg így ez történik : if (ae.getActionCommand().equals("0")) {
t.setText("");
t.setBackground(Color.lightGray);
t.setEnabled(false);
}tudom, hogy rekurzívan kéne, csak egyszerűen nem jövök rá, hogy hogyan tudom az első gomb hatására benyomni a többit.
if (y>0 &&field[y-1][x]==0) tobbitfelfordit(field, y-1, x);
if (y<width && field[y+1][x]==0) tobbitfelfordit(field, y+1, x);
if (x>0 && field[y][x-1]!==0)tobbitfelfordit(field, y, x-1);
if (x<lenght && field[y][x+1]==0) tobbitfelfordit(field, y, x+1);
}
és még tovább kéne futnia mivel még az üres mezők utáni mezőnek is fel kéne fordulnia, illetve nemtudom, hogyan kéne leírni h forduljanak ezek fel.felfordit(field) {
// ha nem nulla, vissza is ter, a
// szomszedokhoz korbeer a rekurziv hivas
// masik iranybol
x = field x pozicioja a tombben;
y = field y pozicioja a tombben;
if (field.getActionCommand().equals("0")) {
t.setText("");
t.setBackground(Color.lightGray);
t.setEnabled(false);
// szomszedok felforditasa
if (y>0)
felfordit(buttonField[x][y-1]);
if (y<height-1)
felfordit(buttonField[x][y+1]);
if (x>0)
felfordit(buttonField[x+1][y]);
if (x<width-1)
felfordit(buttonField[x-1][y]);
}
} -
modder
aktív tag
-
modder
aktív tag
Néhány nap leforgása alatt egy nagyobbacska vállalatirányítási rendszer különbözői moduiljaiból és ezek különböző verzióiból >5-tel kell általában valamilyen módon foglalkoznom, fejlesztenem, kódot analizálnom. Ritka az, amikor pár napig egy dologgal tudok foglalkozni. Ezek az alkalmazások általában egyenként is elég nagyok és inhomogének technológiailag, szeretem őket strukturálni. Ha mindent egy workspace-be beletennék, egy (véletlen/kényszerű) teljes rebuild, vagy az eclipse újraindulás, típus újraindexelés, lookup, keresés, fájdalmasabb művelet volna.
ja, értem.
-
modder
aktív tag
Az eclipse nem egy notepad azért, 10 mp kifejezetten jó szerintem. Ha napi 50-szer megnyitod az eclipse-et, ami nem hiszem, hogy jellemző, akkor egy gyorsabb indulással megspórolnál napi néhány percet..
Nekem van hogy hetekig megy egy workspace-em, nyitva van 5-10 workspace egyidőben.. 10 mp indulás legyen a legnagyobb bajod.
Túrtam egy linket azért [link], ha gondolod, próbáld ki.miért használtok 5-10 workspace-t? főleg egyidőben
-
modder
aktív tag
Tudtommal jó eséllyel, ha nem használsz semmit az újabb Servlet API-ból. Azért volt egy-két konfigurációs változás is...
A legegyszerűbb ha letöltesz egy hatost és megpróbálod, nem sokból tart.
Más:
Nekem is lenne egy kérdésem a közösbe.
Adott egy webalkalmazás WAR csomagban, ami egy properties fájlból konfigurálható (DB elérés, SMTP, útvonalak, stb.). Ezt jelenleg a classpathon tárolom (fájlszinten a WEB-INF/classes alá kerül a Maven által).
A kérdés egyszerű: hova és hogyan kellett volna tennem ahhoz, hogy ha új verziót adok ki a cuccból, a WAR-ban lévő propfájl ne vágja felül az ügyfél adatait? Nem én üzemeltetem és nyilvánvaló okokból nem kapom meg az ő konfigjukat, amiket a deployolt alkalmazásban módosítottak.
Gyors megoldásként gondoltam arra, hogy a fájlt kiveszem a WAR-ból, így a Tokcat redeploy nem fog a kinn lévőhöz nyúlni. De mi lett volna a helyes megoldás?
általános megoldás, hogy kiveszed a WAR-ból, és az alkalmazásodban egy system propertyben definiált útvonalról töltöd be. pl. 'tealkalmazasod.properties=/var/opt/tealkalmazasod/alkalmazas.properties'
A system property-t beállítod a tomcat konfigurációjában.
-
modder
aktív tag
Sziasztok!
Google Code-ról checkout-oltam egy projektet.(minesweeper-gdx) Hogyan tudom Eclipse-be importálni a projektet?
Csináltam egy új workspace-t, rámentem a file->import->general->import existing projects into workspace. Kiválasztottam a mappát ahová lementettem, de semmi sem jelenik meg

Ötlet?
új projekt from source. existing csak akkor működik, ha már van .project fájl a könyvtárban
-
modder
aktív tag
http://en.wikipedia.org/wiki/Public-key_infrastructure
Mi az a cacerts file:
http://docs.acl.com/ax/300/index.jsp?topic=/com.acl.ax.admin.help/system_administration/t_importing_certificates_into_the_java_cacerts_file.htmlHa a java SSL kilensed a default cacerts truststore-t használja, és olyan szerverrel kommunikálsz, ami self-signed certificate-et vagy olyan használ, aminek az aláírója nincsen benne a cacerts fileban, akkor nem tudja hitelesíteni a szervert.
-
modder
aktív tag
-
modder
aktív tag
(#4241) Superhun : sb.replace(0,sb.length,"x"); Tudom nem szép....
(#4243) modder : Nyilván mindenre azt lehet mondani, hogy "attól függ..."
Én alapvetően erre a helyzetre akartam reagálni.:
String s = "egy";
...
s = "ketto"; // innentől kezdve ott ül a memóriában elérhetetlenül, hogy "egy" ami majd egyszer ki lesz takarítva.
Amíg ez egyszer van addig oké nem nagy érvágás...de alkalmazás szinten már halmozódhat a dolog. Nem törvényszerű nyilván...A példa amit írtál az kicsit erőltetett...egy szóval nem mondtam, hogy String helyett általánosan StringBuilder-t kell használni...pláne nem olyan helyzetben amit vázoltál. Ha tudom, hogy lesz egy szövegem ami nem fog megváltozni akkor persze String, de ha valamivel "műveleteket" szeretnék végezni akkor StringBuilder.
és hogyan olvasod ki az értékét? toString() -gel...
-
modder
aktív tag
(#4235) Karma : Ezt jó tudni. Kösz.
(#4236) Superhun : Oké, de amíg a másik String referencia nélkül ott kallódik memóriában valahol addig egy másik területen újabb memória kerül lefoglalásra az új String esetében. A StringBuilder-nél pedig marad ahol van. Ha szükséges bővíti, ha nem akkor marad amennyi volt. Ez valahogy takarékosabbnak tűnik nekem...Rosszul gondolom?
Esküszöm, nem értem, mit akarsz mondani Superhun válaszára.
De pár tény:
1) A JVM k*rva okos és tele van optimalizációval. Memória allokációnak alig van költsége, persze sok kis objektum lassíthatja a GC-t. Megoldás: arra az objektumra ne veszítsük el a referenciát, amit újra fogunk használni. Ennek megkönnyítésére szoktak memory poolokat implementálni Javában úgy, ahogy C++-ban is. De ezeket elég speckó esetekben szokták használni, amikor a sebesség van mindenek felett.
2) literálokra referencia mindig ugyanarra a memóriaterületre mutat. for() { String s = "nyorr"; } nem fog új objektumot létrehozni minden egyes iterációban
3) Olyan mikro-optimalizációról beszélünk, aminél egy adatbázis lekérdezés nagyságrendekkel lassabb: semmi értelme gondolkodni rajtaCiklusban String összefűzést StringBuilderrel, mert azt a compiler tudtommal nem ismeri fel, ellenben a "egy" + "ketto" + $valami.toString; kóddal, amit StringBuilderre cserél (vagy StringBuffer, most hirtelen nem emlékszem, melyik a thread-safe)
Nem látom értelmét String helyett StringBufferben tárolni a stringet.
Szerk.:
Közben rájöttem, mit akartál mondani, de elég veszélyes. Ha Stringbuilderben tárolod a stringeket, akkor a StringBuilder mutable, és olyan helyen is megváltoztathatod a String értékét, ahol nem akarod. pl.:StringBuilder strTime = getTimeInString();
page1.setLastVisited(strTime);majd később:
StringBuilder strTime = getTimeInString();
page2.setLastVisited(strTime);no shit, lastVisited szintén frissült page1-re, mert ugyanaz az objektum. Nem hiába találták ki, hogy a String immutable.
-
modder
aktív tag
Nekünk pedig 4 éven keresztül azt tanították suliban, hogy ahhoz, hogy valaki jó programozó legyen, előbb algoritmust kell tudni írni, (ami MINDENKÉPP folyamatábra [struktogram]) nyelvfüggetlenül, és, hogy program írás előtt írjuk azt meg, utána kezdünk csak bele a tényleges kódolásba.
Keresgéltem, találtam is párat, arra voltam kíváncsi, hogy tud-e valaki azokon kívül valami jót

előbb algoritmust kell tudni írni, (ami MINDENKÉPP folyamatábra [struktogram])
Volt, amikor én is csináltam folyamatábrát olyan problémára, aminek nehezemre esett a megértése, de egyébként az esetek 90%-ában, kigondolsz egy algoritmust, amit egyből le is kódolsz, aztán finomítod, hogy a végén az elvárásoknak megfelelően működjön. Egyből le is tudod tesztelni, hogy működik-e.
Szóval a gyakorlatban minden problémát folyamatábrával kezdeni fasság.
Amúgy meg az aknakereső pont olyan egyszerű, mint a faék. Legalábbis generálni:
Random leteszel aknákat, majd sorba mész az aknamezőn, és minden mezőhöz (ami nem akna), rendelsz egy számot, ami azt jelzi, hogy a közvetlen szomszédai közül hány mezőn van akna. Rettentő nehéz.Ami kihívást okozhat, az az aknák eloszlása, hogy szépen csoportosan legyenek.
-
modder
aktív tag
nincs olyan operátor, hogy =>
(http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html)
mondjuk a hibaüzenet lehetne jobb is -
modder
aktív tag
Aha, most megnéztem a forrást, a Files.copy() metódus ugyanezt csinálja, 8KB bufferrel.
Valszeg igazatok lehet, viszont akkor nagyon sok kérés érkezhet az OS-hez, ha feltorlódik.
én azt figyeltem meg régebben, ha total commanderben sok apró fájlt másolok, nagyon visszaesik a teljesítmény pár megabyte-ra.
-
modder
aktív tag
az csak egy referencia, semmit nem számít, hol deklarálod. Akkor lenne értelme, ha az egész streamet újra fel lehetne használni.
n00n:
meg kellene nézni, rendesen bezáródnak-e a filehandlerek.
a close()-okat pedig mindig finally blokkba.pl a bytebuffer tömböd tényleg ki lehetne szedni a cikluson kívülre, az lehet, sokat segítene.
-
modder
aktív tag
te most éppen miről beszélsz? Nem azt írtam be hogy nem működik, hanem azt hogy nem működik, és mivel van probléma és hogyan...
infora állított thresholddal nem küld semmit az info-ról, sem warn-ról csak errorról és fatalról.
Ugyan olyan threshold beállítással fájlba minden kiír, mailba viszont nem.Ne csak kötekedj, olvasd el miről van szó.
Jó, nem fogok leállni veled vitázni, csak legközelebb légyszi ne csak azt írd, hogy nem megy, hanem a körülményeket is, főleg ha segítséget vársz
-
modder
aktív tag
http://www.tutorialspoint.com/log4j/log4j_logging_levels.htm
For the standard levels, we have ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF
Ha a thresholdot INFO-ra teszed, akkor a DEBUG-ot nem engedi tovább.
Amúgy meg RTFM és azon nem javítasz a helyzeteden, hogy sértődötten beírod, hogy "nem működik", csak a 3. rákérdezésre adsz valami infót, amiből az ember leszűrhet valamit.
-
modder
aktív tag
Sziasztok.
Tudtok javasolni akár online, akár könyv formában olyan Java leírást ami a konkurenciáról szól részletesen? Érdekelne, hogy bizonyos feladatokat, hogy lehetne megoldani multi-threadelve.
A Java Concurrency In Practice már felkeltette a figyelmemet, de nem tudom mennyire lehet friss anyag.
Előre is köszönet.
Helló, Java 6-ban jött be nagyon sok minden, ami megkönnyíti a több szálú programok fejlesztését, és a Java Concurrency in Practice ezt taglalja. Nagyon jó alap. jó tömény könyv. Persze Java 7-ben biztosan volt pár feljesztés a több szálú programozás terén, de közel nem annyi, mint amit a hatos verzóba nyomtak bele. Én csak ajánlani tudom. De amúgy kétszer el kell olvasni, hogy megragadjon, plusz nem árt, ha ki is próbálod amiket ír, mert nagyon sok tudásanyag van benne, amit könnyű elfelejteni.
-
modder
aktív tag
A következőt nem értem a Java alapú webalkalmazások szűrőjénél, hogy miért kapja meg a legutolsóként alkalmazott szűrő az előállított választ és megy végig fordított sorrendben a szűrőkön? Lehet alap dolog, de nem tiszta :/
"A kérés mindig először a webkonténerhez érkezik, amely előfel-
dolgozást végezhet a kérésen. Ezután a webkonténer ellenőrzi a kérés
URL alapján, hogy kell-e szűrőt alkalmaznia a kérésre. Az URL mintára
illeszkedő szűrőket a webkonténer egymás után alkalmazza a kérésre.
Ha mindez hibamentes volt, akkor a szűrők után átkerül a kérés a cél
webkomponenshez, a mi esetünkben ez most egy szervlet. A szervlet
az előállított választ a legutolsóként alkalmazott szűrőhöz továbbítja,
majd végigmegy fordított sorrendben a szűrőkön, és végül visszakerül a
webkonténerhez." [forrás]http://viralpatel.net/blogs/tutorial-java-servlet-filter-example-using-eclipse-apache-tomcat/
A filter kódjában chain.doFilter(req, res); a következő filtert hívja meg, legvégül a szervletet. Buta megfogalmazás. Nem végig megy fordított sorrendben a szűrőkön, egyszerűen visszatér mindegyik szűrő chain.doFilter(req, res); metódusával, így tehát amit ez után a sor után írsz, az mindig a sorban következő szűrő (legvégül a szervlet) meghívása UTÁN történik.
Így lehet az előállított választ módosítani. -
modder
aktív tag
Idézek a saját hozzászólásomból:
Nyilvánvalóan nem hiba az ArrayList<?> deklaráció, de a statikus típus interfészként deklarálása good practice. Az implementáció egyszerű változtathatósága miatt. Nem is az osztályváltozókban van komolyabb jelentősége, hanem a getter/setter metódusoknál.
És még valami. Amíg magadnak vagy egy kvázi zárt csapatban dolgozol, addig nincs ezzel gond. Amint pl. API-t kezdesz írni, akkor csak interface. És a doksiban kell leírni a runtime típust.
Oké, de a vitatott kódban az ArrayList pont csak az objektum belső használatára van.
-
modder
aktív tag
Ezt a témát pár száz hsz-sal korábban már végigjártuk, és én még mindig tartom magam ahhoz, hogy osztályon belül nyugodtan lehet konkrét implementációt deklarálni pl.: ArrayList<T>. Azért van ennyiféle implementáció, mert mindegyik másra jó. Semmi haszna nem lenne, ha az ember nem tudná kihasználni a lehetőségeit.
Ugyanakkor a burkoló osztálynak nem szabad visszaadnia konkrét List<T> implementációt. ahhoz nagyon jó ok kell.
-
modder
aktív tag
Ja valami kód is:
package com.corejsf;
public class User {
private String name;
private String password;
public User(String name, String password){
this.name = name;
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}package com.corejsf;
import java.io.Serializable;
import java.util.*;
import javax.faces.bean.*;
@ManagedBean(name="userbean")
@SessionScoped
public class UserBean implements Serializable{
private String name;
private String password;
private String userListToString;
private static List userList = new ArrayList();
private User user;
public String addUser(){
user = new User(name, password);
userList.add(user);
userListToString = userList.toString();
if (userList.contains(user)){
return "thankYou";
}
else {
return "loginFail";
}
}
public String loginUser(){
user = new User(name, password);
userListToString = userList.toString();
if(userList.contains(user)){
return "thankYou";
}
else{
return "loginFail";
}
}
public String getUserListToString() {
return userListToString;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}Illetve a private static List userList = new ArrayList();-t tedd inkább egy @ApplicationScoped bean-be nem static-ként, mert semmi garancia nincs rá, hogy egy konkurens felhasználó, akit másik http worker szál szolgál ki szerver oldalon, ugyanazt fogja látni a userList-ből.
-
modder
aktív tag
Amúgy bennem felmerült a kérdés, hogy az URL-nek a domain után következő elérési út szegmenseinek
/ize/bigyo/mappa/kiskutya.html
tehát az ize, bigyo, mappa, kiskutya.html-nek is url encode-oltnak kell-e vajon lennie külön-külön? -
modder
aktív tag
-
modder
aktív tag
javaslom, hogy olvasd el, mire jó az URLEncoder osztály http://docs.oracle.com/javase/1.5.0/docs/api/java/net/URLEncoder.html
" for converting a String to the application/x-www-form-urlencoded MIME format"
-
modder
aktív tag
akkor próbáld meg így:
byte[] md5StringToByte = new byte[md5String.size()/2];
for( int i = 2; i < md5String.size(); i+=2 ){
String stringByte = md5String.substring(i-2,i);
md5StringToByte[i/2 - 1] = Byte.parseByte(stringByte, 16);
}összehasonlítod az md5StringToByte tömböt az eredetivel. Nem vagyok benne biztos, hogy a stringben a helyiértékek ugyanabban a sorrendben követik egymást, mint a byte tömbben, mert most nem tudom végiggondolni

szerk.: ez eléggé pseudo kód, valszeg nem is a leggyorsabb, de kiindulási alapnak szerintem jó
ja, meg persze ez arra vonatkozik, ha minden byteot egy két karakter hosszú 16-os számrendszerbeli számként ábrázolsz. Ha Base64 kódolásban van, akkor elég csak valami apache-commons-szal dekódolni Base64-ből
-
modder
aktív tag
akkor próbáld meg így:
byte[] md5StringToByte = new byte[md5String.size()/2];
for( int i = 2; i < md5String.size(); i+=2 ){
String stringByte = md5String.substring(i-2,i);
md5StringToByte[i/2 - 1] = Byte.parseByte(stringByte, 16);
}összehasonlítod az md5StringToByte tömböt az eredetivel. Nem vagyok benne biztos, hogy a stringben a helyiértékek ugyanabban a sorrendben követik egymást, mint a byte tömbben, mert most nem tudom végiggondolni

szerk.: ez eléggé pseudo kód, valszeg nem is a leggyorsabb, de kiindulási alapnak szerintem jó
-
modder
aktív tag
konkrétan milyen formátumban van az MD5 hash stringben?
AB:AB:AB:AB formátumban, ami kvázi standardnak számít? -
modder
aktív tag
Nekem is tetszik, bár nem kedvelem az ötletet, hogy a GUI-t programkódban állítsuk elő, a deklaratív, JSF-es megoldás nekem jobban tetszik ebből a szempontból.
Van deklaratív lehetőség is a GWT-ben
UIBinder.Egyeébként ha GWT, akkor csak a sztenderd GWT...minden keretrendszer drámaian rontja a teljesítményt, ráadásul mindegyik bevezeti a saját kis megoldásait, amitől már teljes az inkompatibilitás.
Jól hangzik. Mekkora kereslet van GWT programozókra?
-
modder
aktív tag
Egyetértek.
Ezért hanyagolom én speciel a JSF-et többek között. DOM fa nagyság és third party library-k

Richfacessel voltak nagyon rossz tapasztalatok...aztán lett GWT és JSP..ahogy éppen az adott feladat megkívánja.Persze, a GWT-ről lehetne komoly vitát nyitni, de okosan kell használni és akkor nincs gond

GWT-ről azt hallottam, hogy nem annyira intuitív a használata, amin a Vaadin sokat segít. Nekem is tetszik, bár nem kedvelem az ötletet, hogy a GUI-t programkódban állítsuk elő, a deklaratív, JSF-es megoldás nekem jobban tetszik ebből a szempontból. Viszont Vaadinban nekem is tetszik, hogy már-már desktop szerű guit lehet létrehozni.
-
modder
aktív tag
A nagy DOM sajnos a kódgenerálás hátulütője, de szerintem nem akkora probléma. Egy üzleti alkalmazásnál sokkal fontosabb a funkcionalitás és a konzisztens "look-and-feel". Pixeltologatás kevésbé. Mennyit lehetne nyerni vele, ha kézzel állítaná össze valaki a html kódot, az eredeti DOM 30%-a lenne elhagyható? A böngészők gyorsak, a szerverek gyorsak, a hálózati forgalom GZip tömörítéssel megy, a renderelésben pár ms-et nyer vele az ember.
A probéma akkor van, amikor generált layoutba bele kell nyúlni saját CSS-sel, ahogy mondtad. Pl. icefaces minden köré <span> taget generál, így sokszor az xhtml-be tett style vagy styleClass elem nem azt a DOM elemet fogja változtatni, amire számítok, szóval ja, ebben igazat adok. Csak azt mondom, hogy ez nem a legfőbb probléma. -- bár annak, aki csak ezt csinálja lehet, hogy az

Egyébként pedig szerintem, ha egy egyedi megjelenésű oldalt kell készíteni, akkor csak az alap <h:> tagek és sima xhtml kód jöhet szóba a faceletben. Ennek egyébként megvan az az előnye is, hogy nem kell fogni a fejünket, amikor fejlesztés közepén derül ki, hogy bugos egy 3rd party komponens library egyik eleme

-
modder
aktív tag
Én arra gondoltam, hogy a fájlok fent vannak a szervern zipekben (minden fájl külön zipben), emellett van egy text fájl ami az összes zipben lévő fájl hashét tartalmazza.
A program elindul, a júzer rányom a letöltésre, behasheli az összes fájlt a célmappában, és összehasonlítja a szerveren lévő hashlistával. És csak azt a zipet tölti le és csomagolja ki amelyikben lévő fájl nem egyezik a júzerével.Csak hát ezt még meg kéne írni, és gondoltam hátha már valakinek szüksége volt ilyenre, és van rá lib.
ezt a hashelést a szerveren egy egyszerű shell script is megoldja, azon kell gondolkodni, hogy mi van az almappákkal, azt hogyan kezeled le. meg azon, hogy ha jól értem ez egy egyszerű FTP szerver lenne? vagy mi szolgálná ki a klienst a szerver oldalon? ..szóval azon, hogy hogyan triggereled szerver oldalon, hogy ok, akkor most csináld meg a file-ok hashét. Bár ez akár lehet egy állandóan futó program is, ami változtatás esetén újra generálja a zip fájlt, amiben a többi fájl hashét tárolod. De amúgy egyszerű elgondolás, fapados, de biztos működne, én azonban ha egy mód van rá, mindenképpen legalább egy szervletet futtatnék szerver oldalon, mert jóval szofisztikáltabb megoldást és későbbi kiterjeszthetőséget biztosít.
-
modder
aktív tag
Kb mindegyik jo, amit fentebb ajanlottak. En speciel JSF-et szeretem, mert ha ranezel egy [richfaces] vagy [primefaces] showcase-re, akkor latod, hogy nagyon bonyolult ajaxos komponenseket is berakhatsz az oldaladba 5-10 sor koddal. Hatranya viszont, hogy altalaban oriasi DOM fakat general, igy lassu lehet.
Meg a hátránya, hogy ha valami olyan dolgot akarsz megcsinálni, amit nem támogat közvetlenül a component library, akkor kicsit a mélyére kell ásni a dolgoknak, hogyan tudsz megvalósítani JSF-ben egy javascriptes, ajaxos feature-t annak ellenére is, hogy séróból lekódolod a javascript részét, és egy egyszerű servlettel támogatott backendet.
Plusz a JSF tanulási görbéje eléggé lapos, ha egy kicsit is bonyolultabb dolgot kell megcsinálni, például 3 input mezőből kettőt egyszerre kell validálni, és annak függvényében automatikusan kitölteni a 3. input mezőt, az már nem triviális feladat, és aki gyakorlatlan, egy napot is elszenvedhet ilyennel.
Szóval a JSF hátránya nem a nagy DOM fa, hanem az, hogy rohadtul érteni kell hozzá, és egyáltalán nem egyszerű. Mivel az egyszerűség kitétel volt, ezért nem ajánlom.
Én speciel szeretem hogy komponens alapú, és szépen különválasztja a megjelenítési logikát a controller logikától, plusz nem kell foglalkoznom a form változók kinyerésével szerver oldalon, a 3rd party komponens library-k pedig eléggé eye-candy dolgokat tudnak. (viszont ha valamelyik komponens bugos, akkor vagy az eredeti forráskódja alapján csinálsz egy saját komponenst a bugfix-szel, vagy lefejleszted magadnak. Illetve például az Icefaces táblázatai és fája nagyon jól néz ki, de ha több száz elemet akarsz megjeleníteni, akkor baszhatod, mert memóriazabáló a szerver oldalon, és lassú, mint a dög)
-
modder
aktív tag
Oks, köszi.

Egy másik kérdés, mindenkinek:
Melyik webes frameworkot ajánlanátok kisebb weboldalak létrehozására? Eredetileg ezért választottam a Grails-t, és esetleg gyors tanulási lehetőséggel bír, vagy sokan használják
.
Spring-et ide túlnagynak érzem. (Pl.: egyszerű blog oldal) Vagy inkább sima JavaEE-t használjon az ember?Hali, szerintem simán el lehet érni jó eredményeket szimplán servlet + stringtemplate ( http://www.stringtemplate.org/ ) kombinációval. Én még nem próbáltam, de kollégám szerint nagyon jó. A frankó az, hogy nem erőlteti rá a framework a saját technológiáit, hanem azt használsz amit szeretnél. Servlet a Controller szerepben, Stringtemplate a view szerepben, Model szerepben pedig vagy saját DAO-kat írsz JDBC-vel, vagy akármit gyakorlatilag használhatsz backendnek.
Egyébként pedig a Play frameworköt nagyon dícsérik, csak az a bökkenő, hogy ahhoz Scalát érdemes használni, amit nem egy-két nap megtanulni, szerintem.
-
modder
aktív tag
ismer valaki valami libet verziókövetésre java-ban? Valami olyan kéne hogy egy tárhelyen legyenek fájlok, titkosítva, és a javas kliens a felhasználónál letölti ezeket, de csak akkor ha az adott fájl változott, vagy nincs még letöltve, és persze ezt úgy hogy a tárhely csak tárhely, sima fájlszerver http-n.
vagy nem specifikáltad eléggé nekünk, vagy ez egyáltalán nem egy bonyolult feladat. Sőt, ezt nem is nevezném a klasszikus értelemben vett verziókövetésnek.
Ha csak ennyi kell, ezt egy szimpla szervlettel megoldhatod. Amikor a felhasználó kér egy fájlt, get-ben elküldi az általa ismert utolsó módosítási időt vagy a fájl hashét. A szervlet megnézi, hogy a szerveren lévő fájlnak a módosítási ideje későbbi-e, mint a requestben található, vagy nem egyezik-e a hash. Ha a fájl módosult, akkor visszaküldi a response-ban.
Pont ugyanígy működnek a cache mechanizmusok is http-ben. Erről a két megoldásról tudok. Kicsit utána kell nézi, lehet, hogy Jetty is tudja ezt alapból (lévén, hogy ő egy HTTP server) csak a HTTP headerekben van az info, mert egy decens szerver már csak tudja.
Persze ehhez egyenként kell lekérdezgetni a fájlokat.
Azt sem mondtad, hogy mennyi fájlról lenne szó, és hogy a kliens tudja-e alapból a fájl elérési útját. El kell-e tárolni a korábbi verziókat? -
modder
aktív tag
Lehet, hogy igazad van. Arra viszont jól emlékszem, hogy a Spring developerek, akikkel eddig találkoztam, mind melegek voltak. EGYTŐL-EGYIG!

-
modder
aktív tag
Struts2 vs Spring? Nem összehasonlíthatóak

Szerintem a Spring lassan platform lesz
Ez a lényeges mondat. Annyi módosítással, hogy szerintem már az!

Miért Spring? Azért, mert nem kell hozzá applikációs szerver. Egy sima Tomcat/Jetty-vel is simán elszalad, ami egy EE alkalmazásról nem mondható el. Sőt, egy jól megírt Spring alkalmazás fut servlet konténerben és applikációs szerverben is. Mindamellett ugyanazt a funkcionalitást nyújtja, mint egy EE konténer (jó, dinamikus kontext nincs, de embert nem láttam még, aki használta volna)
Nem akarok flame-t nyitni!!
Pedig kihúzod a gyufát!

Az a baj, hogy nem tudom megítélni, hogy helyes-e az alábbi diagram, ami azt mutatja, hogy a Java EE-re a kereslet nagyobb mértékben nőtt, mint Springre, vagyis fejlesztőre.
http://www.indeed.com/jobtrends?q=%22Spring+framework%22%2C+%22Java+EE%22&l=&relative=1
(De igazából nem tudom eldönteni, hogy mennyire hiteles ez a diagram)
DE. A Spring egy jó framework, máskülönben nem használnák, és szerintem innovatívabb is, mint a Java EE, gyorsabban mozog az új technológiák felé. Mindkét keretrendszert nagyon sok helyen használják. De az eredeti kérdéshez visszatérve, ha konkrétan tudja valaki, hogy Springgel kell/akar foglalkozni, akkor azt tanulja előbb, és ne a Java EE-t
-
modder
aktív tag
Sziasztok !
Ha ezen végigmegyek : http://docs.oracle.com/javaee/6/tutorial/doc/docinfo.html és utána spring-et szeretnék használni akkor a felhasználása mennyiben tér el? Úgy gondolom, hogy a tutorialok sora Java SE -> Java EE (a fent emlitett) -> Spring-es tutorial ... jól gondolom?
Helló,
Nem.
A spring Java EE-től független technológia. Ugyanarra találták ki, mint ami ma a Java EE, még az előtt, hogy a Java EE igazán használható lett volna. Helyettesítő technológiák.Ugyanakkor, ha készítesz egy Springes alkalmazást, megvan a lehetőséged, hogy Java EE technológiákat használj benne. Például a JPA egy Java EE specifikáció, de mára annyira kiforrott (és persze mert java standard), Springes alkalmazásokban is használják ORM rétegnek.
Ha elsősorban Springet akarsz használni, akkor spring tutoriallal kezdd. Csak akkor olvass Java EE tutorialt, ha olyan technológiába ütközöl.
-
modder
aktív tag
Hali,
http://en.wikipedia.org/wiki/Java_API_for_XML_Processing Ez egy jó összefoglalónak tűnik, hogy melyik API mire való. az XMLEventReader azt hiszem StAX specifikus dolog.
A DOM ugye fogja az egész dokumentumot és beparsolja egy DOM fába.
A SAX az egy push parser: ahogy parsolja a dokumentumokat, új tag-eket, és attribútumokat talál, callback metódusokat hívogat, amiket az alkalmazásod implementál, és el tudod dönteni, hogy mit akarsz csinálni az éppen aktuális információval.
A StAX parser hasonló, csak ott az alkalmazás kívülről irányítja a parsolást: lépteti a parsert előre.Nyilván egy szálban tökre mindegy, hogy push vagy pull, szerintem akkor lehet érdekes ez, amikor van egy parsoló szál és egy feldolgozó szál.
A legegyszerűbb a DOM, mert miután a parser készített belőle egy objektum modellt, a tag-ek objektumok hierarchiájaként fog megjelenni, és szépen a saját metódusain keresztül kereshetsz/iterálhatsz benne, meg is változtathatod. Továbbá, ami nagyon hasznos lehet számodra, hogy XPath lekérdezésekkel le tudod kérni csak azokat a node-okat, amikre szükséged van: http://www.ibm.com/developerworks/library/x-domjava/#3
Az, hogy melyiket válaszd eléggé függ attól, hogy mit akarsz elérni:
Ha nem fontos a sebesség: Ha egy asztali alkalmazást csinálsz, semmit nem fogsz profitálni a StAX parserrel a DOM-hoz képest, nem lesz akkora a különbség. Hatalmas RSS-nél mondjuk (hasraütés) pár száz ms-t veszítesz. (DOM)Ha fontos a sebesség: Egy google readerszerű alkalmazást akarsz, ami éjjel nappal olvassa az RSS-t, és mondjuk párhuzamosan amennyit tud. Akkor nem mindegy, hogy a végső reprezentáció és az eredeti XML között fel akarsz-e építeni és tárolni ideiglenesen a memóriában egy DOM fát.
Esetleg fontos a gyors válasz: te real-time akarod beparszolni az RSS-t, és minél gyorsabban pl. betolni adatbázisba a tartalmát vagy más reprezentációban tárolni. (SAX)Streaming: Ez kapcsolódik az előzőhöz: az RSS-t egyből más reprezentációban akarod elmenteni gyorsan, vagy továbbküldeni a hálózaton. (StAX)
Kell-e minden adat: elképzelhető, hogy nem kell az RSS-ből minden adat, csak a link neve például, akkor a többi adat teljesen fölösleges, fölösleges is tárolni őket, a parsolás folyamán csak azokat az adatokat tárolod le, amik szükségesek. (StAX)
Én azt mondom, amíg nem hatalmas mennyiségű RSS feedről, rettentő reszponzív alkalmazásról, streamingről, vagy nagyon kevés memóriáról van szó, addig használj DOM-ot.
-
modder
aktív tag
Igen, volt már erről vita, és arra jutottunk, hogy a steepet rosszul használják. Az emberek legtöbbször úgy értik, hogy aminek meredek a tanulási görbéje, azt nehéz megtanulni (gondolom azért, mert ami meredek, arra nehéz felmászni
). A wikipedia is ezt írja http://en.wikipedia.org/wiki/Learning_curve#In_culture
De azt is írja, hogy a félreértés elkerülése végett érdemes inkább 'long' és 'short' learning curve-t írni -
modder
aktív tag
Sziasztok, ismét írtam egy blogpostot arról, hogyan érdemes használható EJB-ket gyártani, ha gondoljátok olvassátok el, és mondjátok el a véleményeteket, ha hülyeséget írtam

http://palkonyves.blogspot.hu/2013/03/how-to-design-clean-business-tier-with.html
-
modder
aktív tag
-
modder
aktív tag
Ez egy fontos tervezési elv kicsiben. Amikor a változót később használod, nem függ így a kódod attól, hogy a változó konkrétan egy HashMapet takar, csak hogy megfelel a Map interfésznek - más szóval kulcs-érték párokat tudsz tárolni benne.
Így a későbbi kód módosítása nélkül kicserélheted például TreeMapre (ami hashtábla helyett piros-fekete fában tárolja az értékeket), ha a helyzet úgy kívánja. Vagy akár egy tömbre, amiben lineáris kereséssel túrod ki a megfelelő értéket. A lényeg az, hogy milyen szolgáltatást nyújt, nem az, hogy konkrétan hogyan oldja meg.
Azért mondom, hogy kicsiben, mert egy függvényen belül ennek nincs nagy jelentősége, maximum szoktatod magad csak az interfészek deklarálásához. Nagyobb programban viszont, ahol komponensek kapcsolódnak egymáshoz, ez már kritikussá válik. És jönnek olyan finomságok, mint Dependency Inversion.
Karma írta: "A lényeg az, hogy milyen szolgáltatást nyújt, nem az, hogy konkrétan hogyan oldja meg."
Igazából ez a legfontosabb dolog. Amit még hozzá tennék, hogy kontextusfüggő vagy scope függő, hogy a statikus típusa a változónak Map vagy TreeMap legyen-e.
Amikor az osztályod (osztályaid) külső interfészét tervezed meg, akkor a hívó kliens kódnak nem kell tudnia hogy milyen konkrét implementációt (TreeMap vagy HashTable) ad vissza az osztályod egy függvénye, csak azt, hogy a visszaadot érték Map tulajdonságú.
De az osztályon belül fontos lehet, hogy konkrét típust deklarálj. Például egy JSON feldolgozó osztályt csinálsz, és szeretnéd, ha a hívó kliens egyszerűen egy OutputStreambe tudja írni a feldolgozandó JSON stringet. Neked azonban kell egy módszer a JSON feldolgozó osztályban, amivel ki tudod nyerni az OutputStreambe írt adatot. Az OutputStream interfészben nincsen deklarálva semmilyen metódus, amivel adatot ki tudnál nyerni (nem is arra való). De a ByteArrayOutputStreamben vissza tudod kérni a beírt adatot byte[] tömbként.
Konkrét példa:
public class MyJsonParser {
private ByteArrayOutputStream jsonByteStream = new ByteArrayOutputStream();
public OutputStream getOutputStream() {
return (OutputStream) jsonByteStream;
}
public JsonObject parse() {
// fontos tudni hogy ez egy ByteArrayOutputStream hogy használhassuk a toByteArray() metódusát
byte[] jsonBytes = jsonByteStream.toByteArray();
JsonObject jObject = new JsonObject();
// parszoljuk a json stringet
return jObject;
}
}
public class Application {
public static void main(String[] argv) {
MyJsonParser parser = new MyJsonParser();
// kit érdekel a konkrét implementációja az OutputStreamnek én csak írni akarok bele?
OutputStream parserOutputStream = parser.getOutputStream();
parserOutputStream.write( argv[0].getBytes() );
JsonObject jObject = parser.parse();
}
}Ezt csak azért írtam le, mert nem örök igazság, hogy csak interfész típust deklarálunk.

-
modder
aktív tag
Nem vagyok egy nagy XML vadállat, csak mostanában kellett. Attól függ, hogy akarod használni.
ha entitást akarsz generálni az xml-ből oda-vissza, akkor JAXB (Metro, de inkább Eclipse Moxy implementációt használd, mert kevésbé bugos).
Ezt nagyon egyszerű használni.Ha több kontroll kell, akkor pl StAX API.
Én most a kettőt együtt használtam, mert alá kellett írni az eredeti xml üzenetet, ami sokféle típusú lehet. szóval fogtam, jaxb-vel legenerelátam az üzenet xml-t, szintén jaxb-vel legeneráltam a signature objektumból az xml-t, majd StAX-szal a kettőből összeheggesztettem egy nagyon egyszerű xml-t, ami a kettőt tartalmazza.
-
modder
aktív tag
Sziasztok,
Problémám akadt glassfish környezetben.
JSP + Servlet technikát alkalmazok.
JSP:
<select name="car_makes" multiple>
<option value="1">egyik</option>
<option value="2">masik</option>
<option value="3">harmadik</option>
</select>Servlet:
System.out.println("Gyártók: "+request.getParameter("car_makes");
Csak az első bejelölt opciót adja vissza mint azt a getParameter() metódusnév sugallja is.
Hogy lehet ezt a jellegű multiple select problémát feloldani?cső
egyébként multiple="multiple" legyen az (x)html kódban, mert az a szabvány nem támogatja az érték nélküli attirbútumokat, szóval nem köteles minden böngészőben működni ...ásszem

-
modder
aktív tag
-
modder
aktív tag
az a gondom, hogy eddig javaban csak ablakban / konsolon futó programokat írtam (azt is kb 3-4 éve) és most kell gyorsan átnyargalnom grassfish-es webes mókára

a dokumentációs linket köszönöm ... bár ezen lesz idő mire átrágom magam
, de neki látokplusz abszolút hülye (talán a hét hülye kérdése) kérdés még. nagyon leegyszerűsítve ugye a javanal fordított kódot futtatunk (.jar és .class fájlok) na most ha van egy glashfises projektem amihez nincsennek meg a java források akkor ha jól gondolom szívtam mert ahhoz hogy a kódba bele nyúljak ahhoz nekem a forráshoz is szükségem van. amiből majd én új (jar,class) fájlokat fordítok és a glassfish-be ezeket a fordított kódokat pakolom ki (majd gondolom glassfish újraindítással már az új kód fog futni)...
tehát ahhoz, hogy a meglévő kódon módosítani tudjak ahhoz nekem szükségem van a forrásfájlokra is ha jól gondolom ... Mert akkor azzal nem rendelkezek

http://docs.oracle.com/javaee/6/firstcup/doc/gcrlo.html
És hát itt a biblia:
http://docs.oracle.com/javaee/6/tutorial/doc/Az, hogy Glassfishben kell fejlesztened gondolom azt jelenti, hogy Java EE alkalmazásokat kell fejlesztened. Itt még felmerül kérdésként, hogy milyen technológiákat használ az általad átvett projekt. Réginek számít a JSP, Servlet, közvetlen JDBC, esetleg Hibernate. Újnak számít (persze már ezek is 3-4+ éves technológiák, de mára váltak igazán kiforrottá) a JSF, EJB, CDI, JPA.
Én azt javaslom, hogy először szedd össze, hogy melyik technológiákat használja a projekt. (Remélhetőleg a kolléga nem egyedül dolgozott rajta, így valaki tud segíteni), szerezz ezekről valami fogalmat, hogy mi mire jó, párosítsd össze a technológiákat a projekt kódjával, hogy lásd élőben is, mikor és hogyan volt használva.
A fönti linkelt bibliában le van írva részletesen, hogy melyik technológiát mikor használjuk.Ez tényleg hosszú folyamat, mert nagyon összetett a Java EE felépítése. Elmélet-gyakorlat oda-vissza, míg az ember teljesen megvilágosodik.
A forráskódot vissza lehet fejteni minden gond nélkül java decompilerrel, ha minden kötél szakad, de az eredeti formázást és kommenteket el fogja veszíteni. Bár nem tudom elképzelni, hogy "a kolléga elment, nekem kell átvenni a helyét, de nincs meg a forráskód", annak valahol meg kell lennie, a kolléga sem bytekódot írt séróból.
Ha már leírtam, pár hozzászólással korábban van egy hosszú kommentem néhány Java EE technológiából, mert valaki kérdezte, ennek most te is veheted kis hasznát

-
modder
aktív tag
Kíváncsiságból megnéztem, és igazad van
http://www.docjar.com/html/api/java/lang/String.java.html 2312. sorától látszik, hogy indexOf()-val splittel, ha(1)one-char String and this character is not one of the
RegEx's meta characters ".$|()[{^?*+\\", or
(2)two-char String and the first char is the backslash and
the second is not the ascii digit or ascii letter. -
modder
aktív tag
Ilyen egyszerű esetekben, illetve ha fontos a sebesség, érdemes inkább megkeresni a ";" helyét String.indexOf vagy String.lastIndexOf függvénnyel, aztán a két adatot a String.substring függvénnyel kiszedni az eredetiből.
Fapadosabb megoldás, de gyorsabb.
10 sornál nem lesz érezhető különbség, de több száz sornál már igen. -
modder
aktív tag
Servlet
Egy HttpServlet-ből származtatott osztály, amit te készítesz az alkalmazásodban, ebből akármennyi lehet.
Egy alkalmazásszervernek specifikáció szerint tartalmaznia kell servlet containert. Az alkalmazásod web.xml fájljában kell megadnod a <servlet> és <servlet-mapping> direktívákkal. Ezekkel mondod meg a servlet containernek, hogy melyik osztályaid a szervletek, és melyik szervlet hívódjon meg adott url request esetén. pl.<servlet>
<servlet-name>proba</servlet-name>
<servlet-class>hu.whatnot.ProbaSzervlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>proba</servlet-name>
<url-pattern>/proba/*</url-pattern>
</servlet-mapping>A fenti linken látod, hogyan működik a servlet. Például a doGet metódusa HTTP GET kérésnél hívódik meg.
JSP
JavaServer Pages. Ez XML-szerűen, deklaratívan megírt fájl. Ez azt jelenti, hogy a JSP olyan kódot tartalmaz leginkább, ami HTML kódot állít elő. Tudsz benne HTML tageket használni, de van egy csomó, akár mások által feljesztett tag library ami megkönnyítni a HTML kód generálását: például végigiterálás listán, minden egyes elemnél kiírni valamilyen html kódot.
Ezen kívül lehet bennük írni szkriptleteket, amik <% %> közé tett java kód. Ez arra jó, hogy például a megjelenítéshez szükséges formára szabd a megjelenítendő adatot.
példa: http://140.109.18.7/examples/jsp/num/numguess.txt
A JSP Servletté fordul első meghívásnál, itt látod, hogyan http://www.informit.com/articles/article.aspx?p=130980&seqNum=5JSF
Ez már bonyolultabb dolog. JavaServer Faces egy MVCszerű keretrendszer, aminek az volt a célja, hogy úgy tudjunk szerver oldali GUI-t programozni, mint vastagkliens alkalmazást. A JSP kiváltására szolgál. A JSF-nek egyetlen szervlete van, ami az alkalmazásod base url-jére mappel, azon belül ő intézi a dolgokat, hogy mikor mit hívjon meg.
http://courses.coreservlets.com/Course-Materials/pdf/jsf/jsf2/JSF2-Programming-Basics.pdfEJB
Ez szintén bonyolult dolog
Enterprise Java Beanekbe üzleti logikát szoktak tenni. Általában az EJB osztályok azok, amik összekötik a megjelenítési réteget az adatbázissal/ perzisztencia réteggel. Ezek egyszerű Java osztályok (POJO-k). Az esetek 90%-ában állapotmentesek, tehát nincsen belső változóhoz kötött állapotuk, csak metódusaik. Belső változók általában más állapotmentes erőforrásokra hivatkoznak, mint pl. másik EJB.
egy EJB metódus például azt csinálhatja, hogy létrehoz egy új felhasználót, és elmenti az adatbázisban. (nyilván, ezt az alkalmazásfejlesztőnek kell megírnia).
Hogy mitől különb egy EJB egy POJO-nál?
Az osztályra tett @EJB annotációval az osztály az alkalmazásszerver által menedzseltté válik:
Te nem példányosítasz EJB-t, csakis az alkalmazásszerver teszi.
Minden egyes EJB-n kívülről érkező EJB metódushívás új adatbázis tranzakciót indít. (persze ez széjjelkonfigurálható)Itt látható, hogyan kapcsolódnak a technológiák egymáshoz:
http://www.cs.utsa.edu/~cs4413/lectures/topic7.html Főleg az első kép a lényeges. Ott a JSP mellé még tedd be a JSF-et gondolatban. -
modder
aktív tag
Még csak nemrég kezdtem el tanulgatni a Java nyelvet, de a tankönyv, amit olvasok már többször említette az "interfész" szót, és ezt is: "az osztály által implementált interfészek".
Később persze ezt is tárgyalja majd a könyv, de már nagyon kíváncsi vagyok rá, beleolvasni meg inkább nem akarok előre.
Csak egy rövid összefoglalóként mégis, mik ezek az interfészek, mire jók, és mit jelent az hogy egy osztály implementál egy interfészt?Ha már a könyvben szó esett arról, hogy "az osztály implementálja az x interfészt", akkor gyanítom, hogy egy valós példa is szerepel az interfész alkalmazására.
Többek között azért jó egy interfész, mert elrejti az osztály konkrét implementációját (fordítási időben).
Egy egyszerű példa a Swing ActionListener interfész amit arra használhatsz, hogy gui eseményekre (pl. gomb megnyomása) valamit reagáljon a programod.
A GUI komponens .addActionListener( ActionListener listener ) metódusának egy olyan objektumra van szüksége, aminek van actionPerformed( ActionEvent e ) metódusa. Tehát létrehoztak neki egy interfészt, amiben deklarálták ezt a metódust, ez lett az ActionListener interfész. Ezzel kényszerítik ki, hogy csak olyan objektumot adjál át ennek a metódusnak, aminek megvan a megfelelő actionPerformed( ActionEvent e ) metódusa.Vissza a fordítási időhöz: Látható, hogy a Swing készítőket nem érdekli, hogy miután lefordították a Swing library-t milyen ActionListener objektumokat fog létrehozni a fejlesztő, lehet azoknak az objektumoknak hatszáz másik metódusa is, és mindegy, hogy mit csinál. Ami a fontos, hogy a fejlesztő által létrehozott listener objektumoknak meglesz az elvárható tulajdonsága: lesz neki actionPerformed( ActionEvent e ) metódusa.
-
modder
aktív tag
Hali,
Mivel még nem vagyok világhírű a blog postjaimmal, ezért teszek egy önző kísérletet a saját népszerűsítésemre

Ha valakit érdekel a JSF, csináltam egy postot arról, hogyan szenvedtem végig egy problémát rossz megközelítéssel, és mi lett volna a helyes.
http://palkonyves.blogspot.hu/2012/12/ive-been-using-postconstruct-wrong-way.html
A feedbackek welcomeok!
-
modder
aktív tag
Nem is a JSF a lényeges. Arraylist-ből datatable dolog lenne lényeges.
Ebből a példából indultam ki.
Csak itt az adatok bele vannak "égetve" a kódba ezen a helyen:
private static final Order[] orderList = new Order[] {
new Order("A0001", "Intel CPU",
new BigDecimal("700.00"), 1),
new Order("A0002", "Harddisk 10TB",
new BigDecimal("500.00"), 2),
new Order("A0003", "Dell Laptop",
new BigDecimal("11600.00"), 8),
new Order("A0004", "Samsung LCD",
new BigDecimal("5200.00"), 3),
new Order("A0005", "A4Tech Mouse",
new BigDecimal("100.00"), 10)
};Ezt szeretem volna egy for ciklussal megvalósítani. De még nagyon-nagyon kezdő vagyok.
Akkor gondolom a hiba az egy fordítási hiba annál a kódrésznél egy szép hibaüzenettel. Nem árt, ha legközelebb azt is beírod, nem csak hiba. A vízvezeték szerelőnek sem mondod, hogy rossz a zuhanyzó, mert kicserléi az egész zuhanyfülkét, közben pedig csak a csap csöpög benne..
Na de a lényeg, hogy az ott egyáltalán nem jó. azt a for ciklust tedd a konstruktorba olyan helyre, hogy a benne használt változók már inicializálva legyenek.
mert az ott nem egy függvényhívás, hanem tömb definíció, és tömböt többek között úgy tudunk definiálni, hogy: tipus[] tomb = new tipus[]{ elem1, elem2, elem3 }
Plusz nem árt, ha az alapokkal tisztában vagy, mert lehet kérdezni, de senki nem fogja helyetted megtanulni
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html -
modder
aktív tag
Sziasztok!
Arraylist tartalmát szeretném datable segítségével megjeleníteni JSF-ben. De nem tudom mi lenne a jó megoldás. Én ezzel próbálkoztam eredménytelenül:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package beans;
import database.Database;
import java.util.ArrayList;
/**
*
* @author Zoli
*/
public class AllWordBean {
//private int index;
ArrayList <Integer> idList;
ArrayList <String> hunList;
ArrayList <String> engList;
database.Database database = new Database();
int index;
public AllWordBean(){
database.setQuery("", true, false);
database.execQuery();
this.idList = database.getIdList();
this.hunList = database.getHunList();
this.engList = database.getEngList();
this.index = idList.size();
}
private allWordTable[] wordTable = new allWordTable[]{
for(int i = 0; i<index; i++){
new allWordTable(idList.get(index), hunList.get(index), engList.get(index));
}
};
public allWordTable[] getallWordTable(){
return wordTable;
}
public class allWordTable{
int id;
String hunw;
String engw;
public allWordTable(int id, String hunw, String engw){
this.id = id;
this.hunw = hunw;
this.engw = engw;
}
public String getEngw() {
return engw;
}
public String getHunw() {
return hunw;
}
public int getId() {
return id;
}
public int getIndex(){
return index;
}
}
}Lényegében ezzel e résszel van a bibi:
private allWordTable[] wordTable = new allWordTable[]{
for(int i = 0; i<index; i++){
new allWordTable(idList.get(index), hunList.get(index), engList.get(index));
}
};de nem tudom hogyan lehetne az arraylistet megjeleníteni jól.
És mi a bibi vele?
Amúgy az valid java kód, amit kiemeltél, mert még nem láttam olyat?
Hol a JSF? -
modder
aktív tag
Plusz, arra van valami example a neten / tudnál javasolni vagy kereső szót, hogy amit ajánlottál a statikus html oldalak, vagy amit generálok, hogy azt hogyan lehet megvalósítani a singleton-nal?
Fúú, ez nagyon érdekel.Köszi a részletes választ
.
.
Mert majd webszervert akarok bérelni, és hogy ha jön napi szinten a requestek, akkor hogyan hat rá a terhelésre, és ennek utána olvasva ellentétes infókat kaptam... (bár néha a net tele van szútyokkal).
És elbizonytalanodtam...Nem tudom pontosan hogy akarod megoldani a megjelenítést. Régen volt JSP. ebből ugye servlet generálódott, ahol a JSP statikus részei final stringek voltak, tehát szépen benne maradt a memóriában, nem hozta őket létre újból minden requestnél. Én JSF-et használok, de egyszerű weboldalakra kiváló és nagyon kiforrott a String template.
Én arra gondoltam, hogy ha magát a template-et, mint Stringet egy Singleton osztályba beolvasod egyszer pl. fájlból, amikor szükség van rá, és utána onnan éred el, akkor a Singletonod alkalmazáson belül de, requestek között megmarad, így a beolvasott string template is megmarad a memóriában. Sőt, requestenként ugyanazt a singleton-t fogod elérni. Persze fontos, hogy ezt az osztályt tényleg csak stringek tárolására használd, és ne legyen benne semmi állapot a template stringeken kívül. Plusz a fájlból beolvasás metódusát és a getInstance metódusát nem árt egy mutex-szel védeni, elkerülendő, hogy két thread (két szimultán request) egyszerre inicializálja.
Ez amúgy csak most jutott eszembe a kérdéseddel kapcsolatban, lehet hogy valahol hibádzik a gondolatmenetem, de tekintve, hogy egy JVM-en és egy classloader hierachián belül ugyanazt az osztálypéldányt használja az alkalmazásod requestektől függetlenül, gondolom működik.
-
modder
aktív tag
Hali,
Fontos kérdés, ha van valakinek tapasztalata kérem szóljon
.
Magamnak akarok elsőkörben egy java webszervert, szeretnék pár webprojektet futatni rajta.
Jetty lenne a webszerver + PostgreSQL (esetleg mongodb is). Szerintetek egy ilyen webszervernek mennyi memória kell?
Most az jutott a tudomásomra, hogy minden egyes lekérésnél elindítódik külön-külön a JVM (ami egymagában 30-40 mega), ezen picit meglepődtem.
Mert én úgy tudtam, hogy nagyon terhelt webalkalmazásoknál a Java jobb választás, mert gyorsabban kitudja szolgálni mint a többi azonos hardveren (stackoverflow-on olvastam talán). De így picit el vagyok bizonytalanodva.
Eleinte tényleg tanulás céljából és hobbi projekteket üzemeltetnék (4-6 db).A kisebb projekteknél, amik max olyan "közepes" lesznek, azokra a Grails-t használnám (Groovy in Rails régebbi nevén) 2db-ra pedig talán a Spring MVC (1-kre biztosan)
Nektek mi a tapasztalatotok, javaslatok? 2GB elég lehet? (talán napi max 200 lekérés).
Idézlek másik fórumról:
Én laptopon futatom a linux + java webszervert (Jetty - baromi jó, gyors és keveset eszik ajánlom mindenkinek) + mongot + (jelenleg mysql), de összeségében még nem láttam őket együtt 1GB ram felé menni
De akkor mi a francért kérdezel ilyeneket?
-
modder
aktív tag
Hali,
Fontos kérdés, ha van valakinek tapasztalata kérem szóljon
.
Magamnak akarok elsőkörben egy java webszervert, szeretnék pár webprojektet futatni rajta.
Jetty lenne a webszerver + PostgreSQL (esetleg mongodb is). Szerintetek egy ilyen webszervernek mennyi memória kell?
Most az jutott a tudomásomra, hogy minden egyes lekérésnél elindítódik külön-külön a JVM (ami egymagában 30-40 mega), ezen picit meglepődtem.
Mert én úgy tudtam, hogy nagyon terhelt webalkalmazásoknál a Java jobb választás, mert gyorsabban kitudja szolgálni mint a többi azonos hardveren (stackoverflow-on olvastam talán). De így picit el vagyok bizonytalanodva.
Eleinte tényleg tanulás céljából és hobbi projekteket üzemeltetnék (4-6 db).A kisebb projekteknél, amik max olyan "közepes" lesznek, azokra a Grails-t használnám (Groovy in Rails régebbi nevén) 2db-ra pedig talán a Spring MVC (1-kre biztosan)
Nektek mi a tapasztalatotok, javaslatok? 2GB elég lehet? (talán napi max 200 lekérés).
Most az jutott a tudomásomra, hogy minden egyes lekérésnél elindítódik külön-külön a JVM (ami egymagában 30-40 mega), ezen picit meglepődtem.
Ezt hol olvastad meglepődnék ha így lenne. Totál elveszítené a webszerver az értelmét, és gyakorlatilag CGI-ként futtatnád így az alkalmazásodat.Tessék, itt van egy összehasonlítás arról, hogy melyik webszerver mennyi memóriát használ idle állapotban http://www.jvmhost.com/articles/memory-usage-comparison-of-java-application-servers-and-applications -- 1 jetty instance átlag 50 megabyte.
Erre jön még az alkalmazásod memóriaigénye, ami nagyban függ az alkalmazásod felépítésétől, az output nagyságától. Pl. ha csak az outputot nézzük (a belső struktúrát nem), akkor átlagosan 16 bites karakter hosszal számolva 20 megabyte memóriába 1 250 000 karakter fér bele. ami átlagos karakter per oldal alapján ~ 43 wikipedia oldalnak felel meg.
Erre jöjjön rá még az alkalmazásod belső struktúrája. Azért látni, hogy ez egy eléggé elnagyolt példa, egy kis weboldal nem fog 20 megabyteot elhasználni oldallekéréseknél, max pár megabyte. Nem beszélve arról, hogy statikus adatokat (pl. html template-eket amibe csak beszúrod a generált tartalmat) megosztasz a lekérdezések között, mert bent marad a memóriában. Pl. ha egy singletonban tárolod ezeket, és nem próbálod meg beolvasni a fájlból minden egyes oldallekéérésnél.
Szóval egy relative kis weboldal max pár megabyte memóriát fog lefoglalni requestenként.Plusz korlátozhatod a memóriát JVM beállításokkal (pl. max heap size) meg hasonlók, így ha kezd kifogyi a memóriából a webszerver, a GC majd elintézi a régi objektumokat. Szerintem elég neki kb 500 megabyte memóriát adni.
Szerintem ami a legfontosabb, ha kevés memóriát szeretnél használni, hogy ahol dinamikus string összefűzés van, ott használj StringBuildert vagy StringBuffert (nem emlékszem melyik a nem threadsafe de azt). Pl. A stringet több objektum, függvény állítja elő, vagy cikluson belül generálod. Különben a String + operátor új stringet hoz létre mindig. Kiemeltem, hogy dinamikusan, mert ha csak kényelmi szempontból egy ilyen változót deklarálsz, hogy
String fejlec = "Üdvözöllek \n" + "a\n" + "weboldalamon!"; akkor a fordító automatikusan egybefűzi ezeket a stringeket, úgyhogy no para.Szó ami szó, napi 200 lekérdezésre simán elég a 2GB, de ha spórolni akarsz adj rá 500 megabyte-ot, az is bőven elég lesz.
-
modder
aktív tag
szívesen, érdemes a kapcsolatok mindkét oldalát rendben tartani.
Meg rászánni az időt, utána olvasni a konfigurálásnak, hogy úgy működjön, ahogy elvárható -
modder
aktív tag
Sziasztok!
Adott egy Hibernate-et és MySQL-t használó NetBeans alatt készített alkalmazás GUI-val.
Két táblázat van benne, amiket feltöltök a perzisztens objektumokkal. A második táblázat az első detail táblája, azaz az egyik adattagja (ami Set típusú) tételeit tartalmazza.
A lényeg az hogy ha törlök valamit a detail táblából akkor látom az SQL parancsot (delete) az output ablakban. Az SQL adatbázist megnézve látszik hogy törlődött a rekord, viszont a vizuális komponensben (jTable) nem látszik a frissítés. Természetesen újra feltöltöm a táblát, de nem frissül. Olyan mintha valahol (cache?) ott maradna az adat. Új session-t indítok minden egyes lekérdezésre, flush() és evicat() meg minden van a törlő művelet után, de nem frissül. Az output ablakban látszik hogy a select nem fut le újra, pedig ott van a lekérdezés és debugolva is ellenőriztem végrehajtja a sort, de nincs adatbázis kérés mögötte.
Ha kilépek és újraindítom a progit akkor már minden rendben látszik.Hogy lehet rábírni hogy frissüljön rendben minden? Mi a francért nem frissül?
Hogyan törölsz?
Ha simán törlöd a detail entitást, de nem nem frissíted a parent entitás (a másik táblából) Set-jét és nem mergeled (sorry nem vágom pontosan a hibernate-es terminológiát) őt, akkor a hibernate cache úgy érzékelheti, hogy az objektumon nem történt semmi változás (a kapcsolatot csak az egyik oldalról törölted, a parent felől nem), ezért nincs oka újra lekérdezni olyan result setet mégegyszer.Próbáld meg, hogy a parent entitás Set-jéből törlöd a detailt, majd mergeled a parent entitást.
Remélem ez menni fog.
-
modder
aktív tag
Definiáld felül a háromszög osztályban az Object ősosztály equals metódusát, és akkor adjon vissza igazat, ha a két háromszög területe megegyezik. Így amikor hozzáadogatod a háromszögeket a HashSet-hez, azok nem kerülnek bele a halmazba, amelyeknek a területe már szerepel.
Kódban ez vhogy így néz ki (nálam most a háromszög osztályt Triangle-nek hívják):
@Override
public boolean equals(Object o) {
if (o instanceof Triangle) {
Triangle t = (Triangle) o;
if (t.getArea() == getArea()) {
return true;
}
}
return false;
}
// A hashCode metódust is illik felüldefiniálni,
// ha az equals-t felüldefiniálod. Az a lényeg,
// hogy egyezzen meg annak a két objektumnak a hashkódja,
// amelyekre az equals igazat ad vissza.
@Override
public int hashCode() {
return (int) getArea(); // ezt lehet máshogy is, de a célnak megfelel
}Én nem keverném ezt bele, mert az equals()-nak és a hashCode()-nak az egyedet kell tudnia azonosítania, és nem egyetlen tulajdonságát. Végtelenféle háromszöget lehet ugyanazzal a területtel. Szóval ez ellent mond a Java equals()-ra és hashCode()-ra vonatkozó contractjának.
Nem is adna jó eredményt, mert a terület nagy valószínűséggel Float lesz, amit nem tudsz még javában sem alapból úgy összehasonlítani, hogy mindig jó eredményt kapj, pláne nem az == operátorral:
http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Float.html#equals(java.lang.Object)Nem tudom mire kell itt a HashSet, de én úgy oldanám meg a dolgot memóriahatékonyan, hogy:
1) csinálok egy ArrayList<Haromszog> haromszogek listát
2) csinálok egy másik ArrayList<Float> teruletek listát
3) ahogy generálom a háromszögeket a ciklusban, egy belső ciklusban minden legenerált háromszögre végigmegyek a 'területek' összes elemén és megnézem, hogy benne van-e az új háromszög területe, így:
if(Math.abs( aktualisTerulet - ujHaromszogTerulet) < 0.001f)
benne van
else
nincs benne, hozzáadom a háromszögekhez a háromszöget, és hozzáadom a az ujHaromszogTeruletet a teruletekhezHa pontosabb float egyenlőség vizsgálat kell, ezt találtam neten http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
esetleg gyorsabban futó megoldást is találhatsz, ha valamilyen orderes listet használsz pl http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html#binarySearch(java.util.List, java.lang.Object, java.util.Comparator) -vel keresel a területek között
-
modder
aktív tag
Hali,
Glassfish egy teljeskörű java EE implementáció (bár van web profile-ja is, ami kicsit kevesebbet tud).
Springhez nem kell Java EE alapesetben, csak egy szervlet konténer, tehát a Tomcat teljesen megfelel. Elvileg egyébként egy teljesen alap Jetty is megfelel neki: -
modder
aktív tag
Az annotációk elég sok mindenre használatosak.
Nem tudom konkrétan melyik annotációra gondolsz, és azt sem tudom hirtelen, hogy a Java 2 EE mennyire használja őket. Volt egy névváltás javában, nagyon sokan még mindig J2EE-ként hivatkoznak rá, de Java 1.4-től fölfelé Java EE 5 és Java EE 6-nak nevezik őket, amik sokkal inkább használják a különféle annotációkat.
http://en.wikipedia.org/wiki/Java_EE_version_history
Az annotációk az egyfajta "convention over configuration" paradigma. Amit korábbi java verziókban konfigurációs fájlokban kellett megadni, most a forráskódba írható a definíció helyén. Persze a régi konfigurációs fájlban lévő beállítások precedencia előnyt élveznek az annotációkkal szemben. A haszon az egészben az, hogy sokkal kisebb erőfeszítésbe telik a fejlesztő számára, ha csak a forráskódot kell böngésznie, mint ha a forráskódot és mellé a konfigurációs fájlt is figyelemmel kell kísérni.
Például ott vannak az EJB-k. Régen a beans.xml-ben kellett definiálni minden osztályra, hogy az EJB-e vagy sem, definiálni kellett hozzá a remote és local interfészt, a bean nevét, egyebet. Ha van 10 EJB-d, és változik a neve az egyiknek, nem túl kényelmes külön a konfigurációs fájlban is böngészni utána, pláne, lehet, hogy egy kezdő programozónak eszébe sem jut.
A java EE-nek csomó olyan szolgáltatása van, amiket csak konfigurációs fájlokkal vagy annotációkkal lehet csak elérni. Pl EJB-k létrehozása, JPA Entity beanek, ManagedBean-ek, Servletek, Servlet filterek. egy nagy program esetén ez hatalmas konfigurációs fájlokat eredményezhet, amiket aztán külön kell karbantartani, hogy a kóddal konzisztens maradjon. Az annotációkkal azonban a kóddal együtt lehet kezelni.
Kb ennyi
-
modder
aktív tag
Heló,
nem
![;]](//cdn.rios.hu/dl/s/v1.gif)
A "nested class-od" adattagjainak láthatósága alapértelmezetten package.
remélem tudod, hogy a static class csak belső osztályként jöhet létre (nested class), és nem azt jelenti, hogy ez egy singleton.
statikus nem a láthatóságra vonatkozik, hanem hogy az adott tag (metódus vagy mező) nem objektum példányhoz, hanem osztály példányhoz tartozik.
Kicsit több tudást igénylő példa, de ugyanazon nevű osztályból (package nevet is beleértve) szélsőséges esetben több példány is létezhet egy jvm-en belül (egy futtatás alatt), ha azok különböző classloaderekkel lettek betölve. (most nem objektum példányról beszélek, az egyértelmű, hogy egy osztálynak több példánya is lehet) -- A java classloaderek kicsit hasonlítanak a PHP-s auto-load classloaderekhez.
az osztálytagok (metódus vagy mező) alapértelmezett láthatósága a package. Így ebben az esetben is. Mivel azonban a nested classod privát, ezért kívülről egyébként sem férhetsz hozzá az osztályhoz, így az adattagokhoz sem, csak és kizárólag a tartalmazó osztályból.
Tehát az Elem osztályod tagjaihoz csak a tartalmazó osztályból férhetsz hozzá, tulajdonképpen magához az osztályhoz is.
Lehet egy nested class nem statikus is
Ha a belső osztályod nem static, akkor egyértelműen hozzá van kötve az őt tartalmazó osztály egy példányához. Példányosítani kicsit furcsa szintaxissal kell:
KulsoOsztaly.BelsoOsztaly belsoPeldany =
kulsoOsztalyPeldany.new KulsoOsztaly.BelsoOsztaly();belső osztályból a tartalmazó külső osztálypéldányra hivatkozni pedig:
KulsoOsztaly tartalmazoOsztalyPeldany = KulsoOsztaly.this;http://docs.oracle.com/javase/tutorial/java/javaOO/innerclasses.html nézd meg a példakódot
A lényeget kihagytam: static nested class az egy teljesen hagyományos osztály. Akkor használják, ha bizonyos adattagok, feladatok egy osztályon belül is logikailag jól körülhatárolhatóak és csoportosíthatóak.
Vagy, mint a te esetedben is, egy osztály cask egyetlen másik osztály számára hasznos.Davs
Az csak útvonalat jelöl, mint a package név, de elképzelhető, hogy nem működik úgy, ahogy én írtam, nem teszteltemAthlon64+
jó, nem tudom, nem értek hozzá
-
modder
aktív tag
Ha valami nincs ellátva static kulcsszóval, akkor az instance-hoz kötődik, és még most szólok, Java-ban egyáltalán nincs static ctor. Ennek az osztálynak minden eleme "package" hozzáférésű, csak rájuk van húzva a private a class miatt, ami pontosan annyira redukálja a hozzáférhetőségét, amennyire mutatja magát (ami a class-t használhatja, az használ mindent, itt semmi se látja ezt az osztályt).
Javaban van static konstruktor

-
modder
aktív tag
Na visszatértem a Java valláshoz

Lenne egy következő kód:
Ez egy statikus tagosztály.
private static class Elem {
Object adat;
Elem elozo, kovetkezo;
Elem (Object adat, Elem elozo, Elem kovetkezo) {
this.adat = adat;
this.elozo = elozo;
this.kovetkezo = kovetkezo;
}Konstruktoros kérdésem lenne elsősorban: Elem nevű konstruktornak milyen a láthatósága? Privát, Public? (Statikus nem hinném, azt másra használjuk).
Illetve az idetartozó mezők/adattagoknak is mi a láthatósága?Én valamiért mégis a statikusra tippelnék. Ha egy osztály statikus akkor annak az összes adattagnak és tagfüggvényének is statikusnak kell lennie.
Heló,
nem
![;]](//cdn.rios.hu/dl/s/v1.gif)
A "nested class-od" adattagjainak láthatósága alapértelmezetten package.
remélem tudod, hogy a static class csak belső osztályként jöhet létre (nested class), és nem azt jelenti, hogy ez egy singleton.
statikus nem a láthatóságra vonatkozik, hanem hogy az adott tag (metódus vagy mező) nem objektum példányhoz, hanem osztály példányhoz tartozik.
Kicsit több tudást igénylő példa, de ugyanazon nevű osztályból (package nevet is beleértve) szélsőséges esetben több példány is létezhet egy jvm-en belül (egy futtatás alatt), ha azok különböző classloaderekkel lettek betölve. (most nem objektum példányról beszélek, az egyértelmű, hogy egy osztálynak több példánya is lehet) -- A java classloaderek kicsit hasonlítanak a PHP-s auto-load classloaderekhez.
az osztálytagok (metódus vagy mező) alapértelmezett láthatósága a package. Így ebben az esetben is. Mivel azonban a nested classod privát, ezért kívülről egyébként sem férhetsz hozzá az osztályhoz, így az adattagokhoz sem, csak és kizárólag a tartalmazó osztályból.
Tehát az Elem osztályod tagjaihoz csak a tartalmazó osztályból férhetsz hozzá, tulajdonképpen magához az osztályhoz is.
Lehet egy nested class nem statikus is
Ha a belső osztályod nem static, akkor egyértelműen hozzá van kötve az őt tartalmazó osztály egy példányához. Példányosítani kicsit furcsa szintaxissal kell:
KulsoOsztaly.BelsoOsztaly belsoPeldany =
kulsoOsztalyPeldany.new KulsoOsztaly.BelsoOsztaly();belső osztályból a tartalmazó külső osztálypéldányra hivatkozni pedig:
KulsoOsztaly tartalmazoOsztalyPeldany = KulsoOsztaly.this;http://docs.oracle.com/javase/tutorial/java/javaOO/innerclasses.html nézd meg a példakódot
-
modder
aktív tag
az appengine-el az a problémám, hogy egyrészt semmi sem szabványos rajta. Másrészt semmitmondó hibaüzeneteket írogat deploykor az ismeretlen komponenseire.
Az egyetlen dolog amit sikerült futtatni rajta, az a sample project, amiben egy rakás érthetetlen, sehol sem látott dolog van.
A servletem egyébként pöccre megy jettyvel, meg tomcattel is.
Ezekkel az a gond, hogy nincs most elérhető szerver, csak a saját gépem, ami nem mehet egész nap, másrészt a jetty állandóan nem utf-8 üzenetes problémákkal száll el ha az üzenetben amit a servlet kap van egy speciális karakter.
tomcat jó(-nak néz ki), azt leszámítva hogy ahogy látom nem lehet a servletnek tetszőleges elérési utat beállítani, akármit állítok a web.xml-ben, csak http://cím/Servletneve url-el lehet elérni, de a másik félnél meg be van betonozva (mert egy hulladék) hogy http://cím -re küldi az üzeneteket.Az appenginere csak annyit, hogy sajnos ez az informatika ilyen, hogy néha meg kell tanulni új dolgokat.
Az utf8-ra nem tudok hirtelen mit mondani, szerintem annak container szinten nem kéne problémát okoznia, vagy be lehet állítani. (az alábbi linken van egy példa karakter kódolás megváltoztatására)
Az utolsó bekezdésre viszont állíts be egy szervletet, mint index.html, tehát a defaultra. van külön ilyen beállítás, és onnan indíthatsz belső requestet más szervletekre is valamilyen input paraméter alapján. Lehet, hogy filterrel is meg tudod oldani: http://www.oracle.com/technetwork/java/filters-137243.html -
modder
aktív tag
nem éppen vagyok inkompetens, csak régen szenvedtem ilyen marhaságokkal (szerencsére nem volt szükség rá, mert a lightos minden egyben programokat szeretem, nem az ilyen bugos bloatwareket de most sajnos most nem én csinálom az egész kócerájt, alkalmazkodni kell a servlettel), a servletes kérdés is igazából úgy szólt volna jól hogy "nincs az alkalmazás szervereken kívül valami lightosabb megoldás servlet futtatásra?" és van, a jetty

De már lényegtelen a guglis téma nem fogom megtanulgatni az n+1. "szabványos, kompatibilis"(és mégsem az sem az) implementációt, inkább összerakok egy kis fogyasztású gépet szervernek azt arra meg azt rakok amit akarok).
Csak azt nem értem hogy miért olyan ritka a free javas alkalmazásszerver hosting, az undorító php-ból meg annyi van mint a szemét, pedig scriptnyelvként tuti hogy a php zabálja jobban a szervereket.Nem tudom mi volt a problémád google appengine-en a servlettel, elvileg azt defaultból tudnia kell, kvázi szabványos szervlet konténert deployolsz föl az appoddal, de van néhány kisebb megszorítás hogy ne lehessen kihasználni végtelen mennyiségű erőforrást, illetve biztonsági megfontolásokból.
A Java EE alkalmazásokra szerintem egyébként sem pont az egyszerű konfiguráció jellemző. vannak dolgok, amik működnek out of the box kevés konfigurációval, de a komplexebb megoldásoknál elég sok deklaratív beállítás van, amiről nem árt, ha az ember tud.
-- ellenben a PHP-val, ami elméletileg csak abból áll, hogy feltöltöd a webszerverre és megy. gyakorlatban meg ahány szolgáltató, annyiféle korlátozás lehetséges --Amúgy nekem már sikerüt (vannak leírások a neten) deployolni JSF-et (Mojarra) és CDI-t is (Weld) is appengine-re. Persze nem fél óra volt, de aztán működött rendesen...
Ha nem tetszik a google appengine, próbáld ki a Heroku-t, de nem biztos, hogy azzal kevesebb utána járás lesz.
Hogy miért nincsenek ingyenes Java hostingok? Hirtelen belegondolva azért, mert kevesebben ismerik olyan szinten, hogy képesek legyenek egy normális weboldalt összehozni velük, így nincs rá akkora igény. Mikor hallani, hogy valaki a sarki suszter weboldalát Java EE alapokon akarja összedobni PHP helyett.
Akik viszont Java-t használnak webes környezetben, azok inkább cégek, és ők szerintem kifejezetten kerülik az ingyenes alternatívákat, mert nem bíznak benne, hogy az tényleg menni fog minden helyzetben. -
modder
aktív tag
igazából én is csak hallottam, hogy classpathos problémák lehetnek, ha csak default package van. amúgy nem tudom mi lehet a probléma, nekem jónak tűnik, ha classpath meg van adva javac argumentumként is...
-
modder
aktív tag
Hali!
Windowson az Environment Variables-en belul van (user es system-en belul is) egy CLASSPATH valtozom, aminek a tartalme: .;D:\workspace\Java
D:\workspace\Java legyen ezentul <path><path>\com\davsx\util\Print.java tartalma:
package com.davsx.util ;
import java.io.* ;
public class Print{
public static void print(Object o) {
System.out.println(o) ;
}
public static void print() {
System.out.println() ;
}
public static void printnb(Object o) {
System.out.print(o) ;
}
}Ezt <path> alol a javac com\davsx\util\Print.java paranccsal leforditottam .class-ra (amit ott is hagytam)
<path>\PrintTest\PrintTest.java tartalma:
import static com.davsx.util.* ;
public class PrintTest
{
public static void main(String[] ars){
print("Hello") ;
}
}Es amikor probalnam a <path> alol parancssorbol futtatni a javac PrintTest\PrintTest.java parancsot (vagy akar a javac -cp . PrintTest\PrintTest.java -t) a package com.davsx not found hibauzenetet kapom. Mit csinalok rosszul?
próbáld meg, hogy a PrintTest.java osztályod fejlécében is deklaráold a package-et, ami a könyvtárstruktúrának megfelelően legyen
package PrintTest;
Az előttem szólónak ellentmondva javaban mindig használj valamilyen package-et minden osztályhoz.
-
modder
aktív tag
"Ezek a servletek hogy is működnek? mármint kell hozzá alkalmazásszerver?
Van egy egyszerű servletem és azt szeretném működtetni."A korábbi hozzászólásaiddal már bebizonyítottad hogy teljesen inkompetens vagy a témában, ennek ellenére olyan felháborodottan írsz a futtatási környezetekről, -- amit nem mellesleg sokan elégedetten használnak -- mintha meglenne az előképzettséged ahhoz, hogy jogosan lefikkantsd olyan emberek munkáját, akik értettek is ahhoz, amit csinálnak.
Amúgy ha valami problémád van pl. az appengine-nel, mindenki sokkal többre menne, ha részletes információkat adnál a hibáról vagy pl. egy stacktrace-t. De lehet, hogy a megoldásban már az is sokat segítene, ha elolvasnád az appengine wiki-t, mert tényleg nem olyan egyszerű, de az biztos, hogy használható.
-
modder
aktív tag
A Java EE specifikáció elég régóta application server specifikáció. ha egy-egy dolog kell, nem kell hozzá letöltened egy egész application szervert, elég csak megtalálnod azt a projektet, ami tartalmazza a megfelelő package-ket. és ebből több implementáció is van.
Ha kell neked egy darab szervlet container -- isten tudja miért --, akkor pl. letöltöd a Jetty-t, és elindítod egy sima kliens alkalmazásban.
-
modder
aktív tag
Sziasztok!
Gyakornoknak szeretnék jelentkezni egy céghez, ahova a jelentkezéshez a beugró egy alap könyvtári nyilvántartó program(bármilyen nyelven meg lehet írni).Na mármost a java.awt.* és swing osztályokat ismerem, tehát a grafikus felületet megtudom csinálni, de azt nem tudom, hogy hogyan kellene egy adatbázis kezelővel egybegyúrni a programot, mivel azt sajna nem tanultuk még.
Esetleg azt tudnám megírni, hogy a felvett adatokat kiírja egy szöveges fájlba, és azt olvassa vissza a program megnyitásakor, de ez elég fapados lenne.
Tudnátok ajánlani valami oldalt, vagy könyvet ami kitér erre a témára, mert ha nem sok idő, akkor talán így a vizsgaidőszakban is lenne rá annyi időm, hogy belejöjjek a témába.Köszi

U.i:
Következő félévben lesz csak Adatbázis kezelésem, szóval biztos hogy hátrányból indulok.
JavaDB ( másik nevén Apache Derby ). Ezt tartalmazza a Java SE, így mindenhol elérhető adatbázismotor. Asztali alkalmazásokhoz kiváló, bár van pár dolog, amit nem tud, pl. nincsen benne full text search.
Ha egyáltalán nem használtál még semmilyen adatbázist, akkor a tanulás 60%-a inkább az SQL-re fog rámenni, 30% arra, hogyan használd a JDBC-t, maradék 10% meg arra, hogyan lődd be a Derby-t.
Kiindulásnak http://docs.oracle.com/javadb/ -> http://docs.oracle.com/javadb/10.8.2.2/getstart/index.html
-
modder
aktív tag
hát egy 500 soros többszörösen egymásbaágyazott ciklusos függvényes, több bean osztályt használó listákból 50 megás xml-ben több ezer bejegyzést cserélgető programommal próbáltam, ami úgy 5 másodpercig dolgozik a fájlon, és semmit nem írt ki.
Egy javas áramkör szimulátort is próbáltam viszonylag bonyolult áramkörökkel, ott sem írt semmit.Bocsesz, megnéztem a szintaxisát újra, és:
-XX:+PrintCompilationboolean típusú argumentumoknál + a bekapcsolva, - a kikapcsolva.
-
modder
aktív tag
-
modder
aktív tag
-
modder
aktív tag
(Konfigom: 4*3,4ghz-s proci. 2*2+2*4gb ram (ddr3, 1600mhz), Win7 64bit (eredeti), Ati radeon hd 5870-1GB. Ez kell a problémám megértéséhez.)
Elég régi és eléggé fura jelenségek uralkodnak a gépemen. Maga a hiba az az hogy ha netezek és valami javát használó honlapot nyitok meg, akkor a gép atomra belassul, és legtöbbször egy félperc-perces állás után ki is fagy a java mondván hogy összeomlott. És ez azért fura mert mint fent leírtam egy eléggé erős vasról van szó, így joggal csodálkozom ha 1 darab netböngészőtől fagy, miközben 3 db crysis 2 is simán megy miközben telepítek. Vírus nemvalószínű hogy van a gépen, elég rendszeresen írtom őket. A gép nem töredezett, nincs tele szeméttel, stb, egyszóval eléggé karbantartom a kicsikét, és mégis, egy nyomorult java alapú honlap, vagy egy youtubos vidi elbánik vele.
A vidikarit is rendszeresen frissítem, akárcsak az oprendszeremet. Namármost nemrég találtam a feladatkezelőben egy eléggé érdekes dolgot, és azt szeretném megtudni hogy az össze függ e ezzel a java problémával. A talált dolog mégpedig az hogy ha a feladatkezelőből, a teljesítmény fülre megyek, akkor ott a szabad memória (úgy hogy megy valami javás honlap) átlagban olyan 0-20MB-on van. Ez normális? Józan paraszt ésszel gondolkodva ennek nem így kén elennie. És azis fura, mint ahogy már említettem, több erősebb program párhuzamos futtatása se terheli le annyira a gépet hogy akadjon, vagy fagyjon, még 1 db youtubos vidi igen.
(íme egy printscreen a feladatkezelőről.
)ha Javára gyanakszol, először mindenképpen frissítsd, szerintem.
Másodszor pedig létezik több JVM monitorozó program.Ilyen a Java Visual VM. Kell hozzá JDK-t telepítened, és itt találod meg:
Java\jdk1.7.0\bin\jvisualvm.exeHa van programozói beállítottságod, akkor ezzel jászogatva talán ráakadsz a problémára (pl. milyen program zabálhatja föl az erőforrásaidat)
Ha Flashnél is baszkódik (youtube), akkor lehet, hogy a böngésződ a hibás. Nálam a chrome egy időben youtube-nál flash miatt rendszeresen kifagyott, nem is olyan régen.
-
modder
aktív tag
Üdv!
Netbeans 7.1.1
Weblogic 12cr1A programozás JEE platformon c. könyv BooApp példáját szerettem volna futtatni de az alábbi hibaüzenetet kapom:
Deployment failed. The message was: weblogic.ejb.container.persistence.PersistenceException: In EJB BookBean, the persistence-use element was not specified or could not be associated with a corresponding persistence-type element for a CMP entity bean in the weblogic-ejb-jar.xml descriptor file.
Értem, hogy mit akar. Viszont megnéztem a kérdéses fájlokat és mégsem értem.
Van valakinek tippje?Én még csak glassfish-t használtam Eclipselinkkel. Weblogic-ban nem vagyok jártas, de
ez a [link] azt sugallja, hogy ez még EJB 1.1, ami már régi, az EJB 2.0 jobban kitalált kevesebb opciót kér.Lehet, hogy a könyv még EJB 1.1-ről beszél, ez esetben szerintem jobban jársz, ha inkább egy on-line tutorial után nézel, ami az újabb verziót tárgyalja
-
modder
aktív tag
http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#substring(int, int)
http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#indexOf(int, int)
azaz megkeresed az " első előfordulását, elmented az indexet, ahol van, majd a következő keresését ettől az indextől kezded -
modder
aktív tag
Akkor a StringBuildernek például az indexOf, replace, insert metódusai lehetnek a barátaid. Ezekkel próbálkozz. Akár a String.replaceAll is mehet végülis. Bár ez regex kifejezést vár, de ha egyébként is felhasználói inputra kell várni, akkor ez nem sokat dob a latba.
például indexOf operátorral rákeresel a két határoló karakterre, ami között a kicserélendő szöveg van, elmented a két karakter pozicióját, majd StringBuilder.insert metódusával beteszed közéjük az újat. Ilyesmikre kell gondolni.
Lehet jobban jársz, ha letöltöd az Apache StringUtils könyvtárat. elég hasznos.
-
modder
aktív tag
Hali!
talán ez http://www.javapractices.com/topic/TopicAction.do?Id=42itt pedig fönt van egy jó kis ábra, hogy melyik osztályt mire tudod használni:
http://docs.oracle.com/javase/tutorial/essential/io/file.htmlÉn a helyedben azt csinálnám, hogy beolvasnám a fájlt sorról sorra. Megváltoztatnám soronként ami kell, és egyből írnám ki egy másik fájlba (BufferedReader, BufferedWriter). A procedúra végén pedig ezt a tmp fájlt átnevezném az eredeti fájlra.
A kicserélés könnyen megy String függvényeivel. Reguláris kifejezéseket ne használj, mert Javaban nagyon lassú.
Ha nem akarod megkeseríteni az életed, akkor arról tegyél le, hogy egy fájlt szimultán olvasol és írsz
nem is hatékonymég ez is segítségedre lehet:
http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/StringBuilder.html
Új hozzászólás Aktív témák
-
Fórumok
LOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Mibe tegyem a megtakarításaimat?
- Apple MacBook
- Huawei Watch Fit 5 Pro - jó forma
- Amlogic S905, S912 processzoros készülékek
- Fujifilm X
- TV antenna és jelerősítés
- Samsung Galaxy Watch8 és Watch8 Classic – lelkes hiperaktivitás
- Gyúrósok ide!
- Kerékpárosok, bringások ide!
- One otthoni szolgáltatások (TV, internet, telefon)
- További aktív témák...
- 4000GB Gen4x4 NVMe SSD, 1 év gar 4TB!!!
- SZÉP! HP ZBOOK FURY 15 G7 Tervező Vágó Laptop -70% 15,6" i7-10850H 32/512 Quadro RTX 3000 6GB FHD
- GARANCIÁLIS LEMEZES PLAYSTATION 5 SLIM CFI-2116
- NAGYKER ÁR!Sosemhasznált! HP OmniBook 5 Flip i5-1334U 8GB 512GB 14" FHD+ áthajtós-érintős Gar.: 1 év
- Macbook Pro 14" A2442 2021 M1 Pro 32/1TB Silver
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

Igen, érdekel komolyabban a programozás. Amúgy a tanárnőnk is mindig mondja, hogy a tervezés egy nagyon fontos szempont, én is így gondolom, csak adatbázisokhoz még nem sok közöm volt, pont azért is próbáltam ki a vizsgaprogramban. Nem gondoltam, hogy ennyire szerteágazó az adatbázisok világa, de legalább ez a kis fejlesztés erre is ráébresztett. 
Azt észrevettem, hogy a tapasztalt java fejlesztők kerülik a netbeanst, helyette intellij ideát, vagy eclipset használnak, de a miértre nem tudom a választ.

Nagyon örülnék ha valakinek esetleg lenne ötlete milyen programot valósíthatnék meg. Bármilyen területen mondhattok ötleteket, annyi a lényeg még, hogy legyen egy adatbázis a program mögött.






![;]](http://cdn.rios.hu/dl/s/v1.gif)

A vidikarit is rendszeresen frissítem, akárcsak az oprendszeremet. Namármost nemrég találtam a feladatkezelőben egy eléggé érdekes dolgot, és azt szeretném megtudni hogy az össze függ e ezzel a java problémával. A talált dolog mégpedig az hogy ha a feladatkezelőből, a teljesítmény fülre megyek, akkor ott a szabad memória (úgy hogy megy valami javás honlap) átlagban olyan 0-20MB-on van. Ez normális? Józan paraszt ésszel gondolkodva ennek nem így kén elennie. És azis fura, mint ahogy már említettem, több erősebb program párhuzamos futtatása se terheli le annyira a gépet hogy akadjon, vagy fagyjon, még 1 db youtubos vidi igen.
