- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- gban: Ingyen kellene, de tegnapra
- gerner1
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: Alza kuponok – aktuális kedvezmények, tippek és tapasztalatok (külön igényre)
- djculture: Az elvileg már senkinek nem kellő HDD-k ára is egekbe emelkedett 4 hónap alatt
- eBay-es kütyük kis pénzért
- Gurulunk, WAZE?!
-
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
-
tick
aktív tag
-
tick
aktív tag
Sziasztok!
Selenium-os kérdésem volna. Találkozott-e már valaki olyan problémával, hogy az abszolút xPath nem működik?
org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"html/body/div[1]/div[2]/div[1]/div/div[1]/div/div/div/div[2]/div/div/div[1]/table[4]/tr/td/div/div/button[2]"}
Command duration or timeout: 20.05 secondsKipróbáltam prohardveren, facebookon, google-n, ha a relatív xPath-t kicserélem abszolút xPath-ra, gond nélkül megy. De a tesztelni kívánt oldalnál a fenti hibát dobja.
Thread.sleep-et tettem bele, wait-et is, de semmi.Sajnos csak az abszolút xPath jöhet szóba, mert a felületen lehetnek azonos nevű elemek, pl. gombok, azonos css-el, azonos class-al, és bizonyos részben random ID-val. Pl. név+random szám. Semmi más nem különböztet meg 2 vagy több elemet, csak az abszolút xPath.
Szia!
Firefox console megtalálja az xpath-t? -
tick
aktív tag
Megvan!

Biztos valami új verzió miatt, de már nem kell elé az xpath= csak simán így: //input[contains(@id,'TextBox_szerzodes')]
Plusz lassítani kellett a lejátszáson, mert hiába volt a szintaxisa megfelelő, akkor is hibára futott.Következő kérdés: mivel nyílhatnak egymásra panelek (akár több is, úgy képzeljétek el mint egy vastagkliensben) ezért lehetséges az, hogy pl. akár több "Save" gomb is legyen, mind különböző, de dinamikus ID-val. Így mivel tudom megkülönböztetni őket? Class? Esetleg van lehetőség ezzel a fenti megoldással ÉS kapcsolatba fűzni még feltételt, hogy pontosan melyik "Save" gombot akarom megnyomni?
(A "Save" csak egy példa, a szemléltetés miatt)Első megközelítésben így gondolkodom. Az egyedi ID témát hagyjuk, mert az egész motor így működik.
Köszönöm az eddigi helpet, értem miért kopaszodik az összes fejlesztő.

Ja! Options->Clipboard format mire való?

Csak WebDriverről tudok nyilatkozni. Ott findElement helyett findElements és megkeresed hányadik kell

pl:
ArrayList<WebElement> elements =
driver.findElements(By.xpath("//input[contains(@id,'TextBox_szerzodes')]"));
System.out.println(elements.get(0).getText());más: nem tiszta miért kellett lassítani, WebDriverben van wait:
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.presenceOfElementLocated(By.id("id"))); -
tick
aktív tag
-
WonderCSabo
félisten
-
tick
aktív tag
-
tick
aktív tag
-
skoda12
aktív tag
-
Cathfaern
nagyúr
Gyakorlatilag bármilyen selectorral ami jquery / css-ben működik tudsz hivatkozni az elemre. Ha ez se elég ahhoz, hogy mindig lefusson a teszt, akkor komoly gondok vannak az oldallal (vagy a teszt megírásával).
-
#03372544
törölt tag
Úgy tudom névvel is tudsz (name attribútum), de az nem biztos hogy egyedi, pl. checkboxgroup-nál mindegyik alá tartozó checkbox-nak ugyanaz kell legyen a neve.
Az ID miért változik? Annak valóban nem kellene, továbbá egyedi kellene legyen.
-
Jim-Y
veterán
-
plaschil
aktív tag
-
tick
aktív tag
-
floatr
veterán
-
Aethelstone
addikt
Nálunk a cégnél van a privát SVN és VPN-nel férek hozzá itthonról. Plusz még bentről is, mert teljesen szeparált a fejlesztői infrastruktúra.
-
Pimpő
tag
-
axioma
veterán
-
M_AND_Ms
veterán
Na sikerült is megoldanom a problémát, a GitHub desktop alkalmazásával.

Tegnap befejeztem a kódot is, ma reggel meg félálomban egy GUI-t összedobtam rá.
Tudom, nem egy nagy wasziszdasz, de nekem ez a 2. GUI-s alkalmazásom, és az első ami ennyire komplex lett, és a hibakezeléssel nem is nagyon foglalkoztam.
Kurva sokat tanultam:
csv feldolgozás, Date, Calendar osztályok, enum, parse-olás, és legfőképp előre gondolkodás.
Az egyes bean-ekben azokat a private final mezőket, amiknek nem kívülről adsz értéket, nyugodtan teheted static-ba is. Ha pl száz példányt készítesz egy ilyen bean-ből, akkor ezek a mezők is százszor fognak létrejönni, inicializálódni, százszor foglalják a helyet a memóriában, miközben sohasem változnak és mindegyik bean-ben ugyanazt az értéket képviselik. Static esetén csak egyszer történik minden.
Pl: private static final double HAZAI_KILEPESI = 70.99;Az érték visszaadó getterekben (pl: getPontKodErtek) lévő logikát, már a konstruktorba hajtsd végre. Ha százszor hívják meg az ilyen gettert, akkor százszor fog lefutni ez a logika és mindig ugyanazt fogja visszaadni. Tehát elég egyszer kiszámolni a konstruktorban, ahol beadod az ertek paramétert.
-
Szmeby
tag
Amikor enumot csinálsz, nyugodtan tekintsd őket konstansnak. Vagyis a legtöbb esetben felesleges mellé static final cuccokat definiálni, azok simán elvannak az enum obejktumon belül is. Pl. a KapacitasTipus-ban.
Vagy eleve a double értékeket adod be a konstruktornak (0.5 és 1.0), vagy ha ragaszkodsz az egész számokhoz is, akkor a konstruktorban elosztod százzal. Így a getter sokkal egyszerűbb lesz, megszűnik a felesleges komplexitás (if).Valami ilyesmi módon:
public enum KapacitasTipus {
M0(100), M10(50);
private final int kapacitasTipus;
private final double ertek;
private KapacitasTipus(int tipus) {
this.kapacitasTipus = tipus;
this.ertek = tipus / 100.0;
}
public int getKapacitasTipus() {
return this.kapacitasTipus;
}
public double getKapacitasTipusErtek() {
return this.ertek;
}
}De akár második konstruktor argumentumként is belőhető a másik szám, ha erre tényleg szükség van.
Ami a komplexitást illeti, amikor gigászi if-else vagy switch-case füzéreket látsz, akkor érdemes elgondolkodni azon, hogy talán nem a legjobb helyen vannak. Gondolok itt a Szerzodes.createList() metódusra, ahol egy stringből enum objektumot készítenél. Szerencsére erre létezik az enumban beépített metódus:
pkod = PontKod.valueOf(kod);
...
ktipus = KapacitasTipus.valueOf(kapacitastipus);Amit tudni érdemes róla, hogy exception-t dob, ha olyan stringet kap, amihez nem talál enum példányt. Ha szükséges, ezt ajánlott lekezelni egy try-catch-ben.
A PontKod átalakításával még átláthatóbb kódod lesz.Az enumnak van még pár hasznos beépített metódusa (name(), ordinal(), values()), érdemes őket megismerni.
-
raggg
senior tag
FeldolgozGUI:59:
txtKivalasztott.setText(file.getName());
Itt a fájl nevét kéred ki, nem az útvonalát. Valószínűleg file.getPath()-szal okés lesz.
Kis magyarázat: a getName() a fájl nevét adja vissza (nem az útvonalat), így csak a forrás könyvtárban lévő fájlokra fog működni.
-
emvy
félisten
-
emvy
félisten
Na sikerült is megoldanom a problémát, a GitHub desktop alkalmazásával.

Tegnap befejeztem a kódot is, ma reggel meg félálomban egy GUI-t összedobtam rá.
Tudom, nem egy nagy wasziszdasz, de nekem ez a 2. GUI-s alkalmazásom, és az első ami ennyire komplex lett, és a hibakezeléssel nem is nagyon foglalkoztam.
Kurva sokat tanultam:
csv feldolgozás, Date, Calendar osztályok, enum, parse-olás, és legfőképp előre gondolkodás.
> public boolean kozeEsikE(Date aktualis, int teliKezdete, int teliVege) {
Ez egy eleg fura metodusnak tunik nekem, a masodik es a harmadik bemenoparameterrel nem kezdesz semmit.
> if (this.ertek.equals("HAZAI_KILEPESI")) {
Itt erdemes lenne forditva nezni az egyenloseget (("HAZAI_KILEPESI").equals ... ), hogy ne legyen problemad a null ertekekkel. -
Cathfaern
nagyúr
Bitbucket pont annyira lesz bonyolult, mint a Github, mivel mindkettő git-et használ.
-
boost
veterán
Nálunk van céges SVN szerver, mert nem szabad kódot máshova feltölteni, csak cégen belül. (nem miattunk, hanem az ügyfél kérésére).
Ha játszásiból csinálok valamit, azt meg GitHub-ra.
-
Aethelstone
addikt
-
DNReNTi
őstag
-
WonderCSabo
félisten
Sztem a BitBucket elég egyszerű, de ha van szervered amin van git telepítve, akkor oda is létrehoztatsz repókat pofonegyszerűen.
-
Sianis
addikt
-
fordfairlane
veterán
-
floatr
veterán
Vannak publikus host-ok (github, code.google.com, sourceforge), de cégeknél belső VCS-eket szoktak használni. Ha többen fejlesztitek, akkor egy gépen lehet SVN pl, és a többiek elérik, ha meg céges/otthoni felhasználás a kérdés, akkor meg VPN.
-
plaschil
aktív tag
-
Aethelstone
addikt
Szerintem http://docs.oracle.com/javaee/7/tutorial/doc/home.htm a legjobb. Egyszerű, közérthető, online. Nekem sokat segített annak idején.
-
Aethelstone
addikt
Én ott ragadtam le, hogy van a JavaSE. Ez mind szép és jó, írtam Swing-es vastagklienst (JDBC-vel), és ennyi. És nem látom, hogyan léphetnék át EE-re. Egyszerűen nem látom a kapcsolatot. Én webes dolgokhoz még hülye vagyok, és nem igazán tudom megfogni az egészet sehogyan sem.

Úgy érzem, kellene még pár építőkocka ehhez.Igen, egyszerre egyszerű és bonyolult.
Egyszerű, mert igazából csak pár új dolog van, amit meg kell tanulni és érteni. Bonyolult, mert SE-hez képest teljesen más a megközelítés.
-
emvy
félisten
Most itt miert is kene tobb, mint egy if-else konstrukcio?
if (m>=m1 && m<=m2)
return (d>=d1 && d<=d2)else return false;
-
floatr
veterán
Sziasztok!
Egy újabb rövid kérdés.
Adott 3 dátum. Az egyik yyyy-MM-dd formátumban van, a másik kettő MM-dd-ben.
El kell dönteni, hogy yyyy-MM-dd beleesik-e a másik kettő intervallumába.
pl. 2014-05-10 beleesik-e a 10-01 --- 12.31 intervallumba. Nyilván csak a 05-10-et kellene nézni hasonlításkor.És hogyan szeretnéd pótolni a hiányzó információt, ami ehhez szükséges?
-
Aethelstone
addikt
Ah.

Ez megoldva, ahol majd használom felüldefiniáltam.
Még egy kérdés: cvs-t olvasnék be. Vannak benne integer típusú adatok, pl. 100000.
Ezt beolvasáskor beteszem egy String-be majd parsolom és ez lesz belőle: 100 000, így viszont ugye nem int.
String str_kobmeter = record.get("COL5");
int kobmeter = Integer.parseInt(str_kobmeter);Hibaüzenet:
java.lang.NumberFormatException: For input string: "100 000"Kérdés: hogyan olvasok be számokat csv-ből?
A '100 000' nem szám, hanem String, mivel tartalmaz egy space-t.
-
Karma
félisten
Szervusztok!
Itt miért nem működik a parse-olás:
String fajlnev = args[0];
Date kezdete;
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
CSVParser parser = new CSVParser(new FileReader(fajlnev), CSVFormat.DEFAULT.withHeader());
for (CSVRecord record : parser) {
String kod = record.get("COL1");
String str_date = record.get("COL2");
kezdete = formatter.parse(str_date);
System.out.println(kod + ", " + kezdete + ", " + str_date);
}
parser.close();
a kimeneten meg kéne hogy egyezzen a kezdete és str_date változó, erre fel:
kod010101, Sat Dec 01 00:00:00 CET 2012, 2012-12-01Vagy mit nézek be?
A parser kiválóan működik, de a kiíratásnál a kezdete objektum toString metódusa hívódik meg, ami ezt a formátumot használja.
-
Cathfaern
nagyúr
Komponensteszt (felteszem ez alatt a unit testet értjük) egyértelműen a fejlesztő feladata 100%-ban. Itt lényegében ő ír automatizált teszteket az általa megírt kódhoz.
Integrációs teszt is a fejlesztő feladata, bár itt már nem feltétlen egyértelmű, hogy az írja az automatizált tesztet aki fejlesztette a kódot (illetve ez tipikusan arról szokott szólni, hogy két külön ember által fejlesztett részrendszer együtt is működik-e rendesen. De persze akkor se árt ilyen, ha a két részrendszert ugyanaz az ember fejlesztette).
Rendszerteszt: na ez nem tudom pontosan mit takar. Leginkább viselkedéstesztnek gondolnám, tehát amikor már nem azt nézzük, hogy az egyes leprogramozott dolgok jól működnek-e, hanem hogy az egész rendszer azt csinálja-e amit elvárunk tőle. Ez tipikusan felhasználó felület teszt szokott lenni, jobb esetben automatizálva. Ha automatizálva van, akkor fejlesztőnek lehet köze hozzá, bár tipikusan ezt már egy külön tesztelő csapat szokta csinálni.
UAT: magát az elnevezést nem ismerem, de a "szűk körű végfelhasználói teszt" megnevezés alapján itt a fejlesztőnek csak annyi a feladata, hogy remegve várja, hogy milyen bugokat találnak a userek
-
boost
veterán
Sziasztok!
Az eclipse-ről érdeklődnék, hogy a sárgával jelölt rész micsoda?
Mindig úgy indul az eclipse, hogy ez fut, de mi ez? Ráadásul most töltöttem le. És mindegyik verzióban ott van, alapból.Azzal tudod a programodat Debuggolni. Azaz elindítod a programot, és ahova elhelyeztél breakpointot ott megáll, majd onnan lépésről lépésre tudod léptetni. Közben egy másik ablakban látod a változók aktuális értékét. Hibakeresésre kíváló. A zöld nyíl azt jelenti, hogy fusson tovább a program, Pause jel futás közben megállítod ( erre inkább breakpoint), piros a teljes program leállítása. A nyilak pedig egy funkcióba való belépést, kilépést, vagy átlépést jelentik. Ezek az alapok. A többihez nekem is el kéne indítani egy eclipse-t.
-
Aethelstone
addikt
Erre való pl. a maven, hogy a netről összevadássza. Egyébként szerintem név szerint megvannak a jarok a build pathban, max. fizikailag nincsenek a hivatkozott helyen.
Itt: [link] jó eséllyel megtalálod a hiányzó jarokat. Hacsak nem valami egzotikus helyről szedted őket. Aztán sürgősen térj át valami maven-szerű cuccra

-
Aethelstone
addikt
Milyen projekt? Maven? (látszólag nem)
Statikus függőségeket érdemes megnézni. Az swt,jface külső könyvtárak. Projekten jobb klikk és Build path, Libraries. Ott kellene megnézni, hogy megvan-e minden. -
Aethelstone
addikt
Hali!
Adott a következő kód:
private String iktatoszam;
private String cimzett;
private Date keltezes;
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy.MM.dd HH:mm");
public Level(String iktatoszam, String cimzett, Date keltezes) {
this.iktatoszam = iktatoszam;
this.cimzett = cimzett;
this.keltezes = keltezes;
}Hogyan példányosítom?
Level level = new Level("asd223", "dfsdf321", ???);A kolléga által javasolt megoldás jó, de a a new Date(yyyy,MM,dd) mintha deprecated lenne...
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateInString = "2014-01-01";
Date date = sdf.parse(dateInString);És utána jöhet a Level, ahogy a kolléga javasolta, csak a létrehozott dátummal.
-
fatal`
titán
Hali!
Adott a következő kód:
private String iktatoszam;
private String cimzett;
private Date keltezes;
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy.MM.dd HH:mm");
public Level(String iktatoszam, String cimzett, Date keltezes) {
this.iktatoszam = iktatoszam;
this.cimzett = cimzett;
this.keltezes = keltezes;
}Hogyan példányosítom?
Level level = new Level("asd223", "dfsdf321", ???);new Level("asd", "asdf", new Date(2014, 5, 18));
-
axioma
veterán
Vagy marad a keyset es x.get(e)-vel elkered a map-tol a kulcshoz tartozo part. Nem mondom, hogy ez itt most jobb, de azert ez az alap hasznalati mod. Termeszetesen ha kozben modositgatnad, itt is igaz a concurrent mod.ex. megjegyzes.
amugy ertem hogy ez csak egy pelda, de ha nem egybetus valtozoneveid lennenek, akkor jobban latni lehetne szerintem, hogy ki mivel mit csinal - most en is 2x kellett visszagorgessek ra, sot ha egy het mulva nezed, neked magadnak is vissza kene keresned... -
PandaMonium
őstag
Az x.keySet() -el csupán a kulcsokról kapsz egy Set-et, nem pedig a teljes kulcs-érték pár listáról.
A teljes kulcs-érték pár készletet az x.entrySet() metódussal tudod lekérni és utána végig tudsz rajta menni egy for/foreach loop-al valahogy így:
for(Entry<String, Integer> e : x.entrySet()){
if(e.getValue() == 0){
String kulcs = e.getKey();
// Itt csinálj valamit a kulccsal
}
}Személy szerint én viszont az iterátorokat javasolnám, ugyanis ha egy entry set-en vagy listán keresztül mész épp egy foreach loop-al ConcurrentModificationException-t ha törölni próbálsz a listából egy elemet. Ilyen szempontból jók az iterátorok amelyek képesek megjelölni az objektumokat törlésre és amint vége az iterálásnak az elemeket valóban ki is törli.
Ez a fajta megoldás sem sokkal bonyolultabb:
Iterator<Entry<String, Integer>> iterator = x.entrySet().iterator();
while(iterator.hasNext()){
Entry<String, Integer> e = iterator.next();
if(e.getValue() == 0){
// Példa a törlésre
iterator.remove();
}
}
Ú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?:))
- Lenovo Thinkpad E595 Ryzen 5 3500U, Radeon Vega 8, 8-16GB RAM, SSD, jó akku, számla, gar
- Új és újszerű 15-16 Gamer, irodai, üzleti, készülékek nagyon kedvező alkalmi áron! Garancia Számla!
- AKCIÓ! Intel Core i7 8700 6 mag 12 szál processzor garanciával hibátlan működéssel
- LENOVO ThinkCentre M93p (SFF)i5-4570,4GB DDR3,500GB SATA3 HDD,DVD,WIN10
- BESZÁMÍTÁS! Asus Z370 i7 8600K 16GB DDR4 512GB SSD RX 5500 XT 4GB Rampage SHIVA Thermaltake 600W
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest







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


