- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
-
Fórumok
PROHARDVER! - 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 Tabletek, E-bookok Nyomtatók, szkennerek 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ésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁ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
-
Karma
félisten
API level 16-tól van erre kulcsrakész megoldás a frameworkbe építve:
network service discovery. Úgy tűnik ezt találtad fel újra házilag. -
Karma
félisten
Sziasztok!
Teljesen kezdőként szeretnék megtanulni java-ban programozni. Melyik könyvből érdemes elkezdeni?
Az Angster Erzsébet féle Objektumorienttált tervezés és programozást és a Tanuljuk Meg a Java Programozási Nyelvet 24 Óra Alatt könyveket ajánlgatják több helyen.
Ezek a mai napig megállják a helyüket?Szerintem a 24 órás könyvek sose állták meg a helyüket.
Akkor már inkább a Head First/Agyhullám könyvnek járj utána. -
Karma
félisten
Sziasztok!
Lenne egy Spring Boot alkalmazás és http-n keresztül szeretnék pár taskot elindítani (általában sokáig futna a háttérben). Erre ennél jobb megoldás létezik?
Érdekes ez a lib, de amit leírtál, ahhoz nem sok köze van szerintem. Egy mezei @RestController-rel is mindent meg lehet csinálni. Ha csak az elindítás fontos és az eredmény nem érdekel, a service beaned metódusára rakhatsz @Async annotációt, így a HTTP kérés azonnal visszatérhet. Ha meg kell az eredmény, akkor ugyanez, plusz a DeferredResult.
-
Karma
félisten
Egy fájlba kerülhet több osztály is, de ezek közül csak egy lehet publikus, és annak az osztálynak a neve meg kell egyezzen a fájl nevével. Kezdő perspektívából szerintem mindenképp jobb, ha maradsz az egy fájl egy osztály felosztásnál.
A nested classok is lehetnek publikusak.
De egyébként teljesen egyetértek a második felével. -
Karma
félisten
A lenti kód comment részben szeretném a Button objektumon elkapott mouse esemény is használni.
Ebben szeretnék egy kis segítséget kapni.public class AmicusFXMLDocumentController {
@FXML
private Button buttonMemoryLocation1;
public void initialize() {
//handle
buttonMemoryLocation1.addEventHandler(MouseEvent.MOUSE_PRESSED, mouseEvent -> {
System.out.println("Event " + mouseEvent);
});
}
@FXML
private void buttonsMemoryLocation(ActionEvent event) {
if ((Button) event.getSource() == buttonMemoryLocation1) {
// itt szeretném elkapni, hogy az addEventHandler elsült
}
}
}Célszerű akkor nem kiprintelni, hanem a megfelelő helyre irányítani az eseményt.
public class AmicusFXMLDocumentController {
@FXML
private Button buttonMemoryLocation1;
public void initialize() {
//handle
buttonMemoryLocation1.addEventHandler(MouseEvent.MOUSE_PRESSED, this::buttonsMemoryLocation);
}
@FXML
private void buttonsMemoryLocation(ActionEvent event) {
if ((Button) event.getSource() == buttonMemoryLocation1) {
// itt szeretném elkapni, hogy az addEventHandler elsült
}
}
} -
Karma
félisten
Én is ezt hittem sokáig, hogy elég a Hikari függőséget betenni a pom-ban, aztán kidebugoltam a közelmúltban és láttam, hogy így az alap tomcat-jdbc datasource-t szúrja be.
Szóval kell a
spring.datasource.type=com.zaxxer.hikari.HikariDataSource.
Majd checkold azért te is légyszí, ha lesz rá időd. 
Utánanéztem, igazad van. Engem ez azért nem harapott meg, mert nincs a classpathon a tomcat-jdbc; a logban meg egyértelműen bejelenetkezett a Hikari.
-
Karma
félisten
Nem tudom Karma, hogy csinálja, mert lehet máshogy is, de nekem ez tűnik a legegyszerűbbnek, én így szoktam.
A pom-ba berakod a dependency-t, verzió nem kell ugye, mert Spring Boot a parent, azt ő intézi.
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>Majd az application.properties-be ezt a sort:
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
Mivel a default, a tomcat-jdbc datasource.Majd a megfelelő értékekből létrehozza a datasource-ot a Spring Boot.
pl.:spring.datasource.driver-class-name=org.hsqldb.jdbc.JDBCDriver
spring.datasource.url=jdbc:hsqldb:mem:test
spring.datasource.username=sa
spring.datasource.password=Elvileg a
spring.datasource.typenem is kell, mert a Hikarit megpróbálja megtalálni magától. Az enyém is így néz ki alapvetően, MySQL-nél (ne kérdezzétek) nem árt még egy pár plusz sor a teljességhez. Most nem tudom előszedni sajnos. -
Karma
félisten
-
Karma
félisten
Ennyi információval nagyon nehéz bármit kezdeni, de a Spring Data JPA ennyit azonnal tud nyújtani neked.
-
Karma
félisten
Sziasztok, egy kis programocskán dolgozom ami gpx fájlokból előállít egy html oldalt aztán azt pdf-é alakítja iText használatával (A5-ös oldal). A html úgy néz ki ahogy ki kell nézzen

de a pdf-ben elcsúsznak a dolgok

Van valmi ötletetek, hogy mi lehet a baj?
Szerl.: Most látom, több szöveg is kissebb a pdf ben.
Én csak a flying-saucert használtam HTML-PDF renderelésre korábban (abban is van egy iText3, plusz saját HTML+CSS értelmező), sikerrel, de általános tapasztalat volt, hogy különösen a pozícionálás terén elég messze van a mezei böngészőktől a végeredmény. Addig kell próbálgatni, egyre fapadosabb CSS-sel, míg jól nem néz ki.
-
Karma
félisten
Jó, hogy mindenre van valami elnevezés, ami miatt az a valami marha különleges dolognak tűnik.
Fésüs lista. Dinamikus mátrix. Első hallásra már megijedek, pedig 10 éve Javazom.
Én egyszerűen egy listát látok, amibe listákat tárolnak. Ezen meg nem csodálkozom, hiszen tudom, hogy listába bármit belerakhatok, ahogy a működés megkívánja. És eszembe se jut mindegyikhez külön nevet keresni. Pl ennek mi a neve List<Map<String>> ?Szerintem is felesleges megcímkézni, de csak a kérdésre válaszoltam.
-
Karma
félisten
-
Karma
félisten
Bocsi, én nem írtam le érthetően mit is akarok. Szóval ha mondjuk így néz ki a fájl tartalma:
1. 0.49708825 0.968154
2. -0.49831982 0.967633
3. -0.49938438 0.967984
4. -0.49602369 0.967087
5. 0.49708825 0.968154
6. -0.49831982 0.967633
7. -0.49938438 0.967984
8. -0.49602369 0.967087Én a 4. ik sorral bezárólag szeretném mondjuk kiírni egy másik fájlba vagy konzolra tenni az már részletkérdés. Ami nem akar sikerülni az a 4. és 5. sor határolása. Természetesen a sorok nőhetnek vagy csökkenhetnek mármint a db számuk.
Remélem el tudtam mondani.
Nem sikerült. Miért pont a negyedikig? Mert ott váltott vissza az előjel pozitívba?
-
Karma
félisten
Félreértettem a leírásod, a "harmadik sort már nem akarom megjeleníteni" nekem úgy jött le, hogy ott álljon meg a folyamat. Második nekifutásra átjött, hogy olvasnál az első mínusz jelet tartalmazó sorig (azzal együtt), utána kihagysz mindent, amíg nem jön még egy mínusz.
Ehhez egy boolean segédváltozóra lesz szükséged csak, amit akkor billegtetsz, ha a szöveg mínuszt tartalmaz, és abban az egy esetben, ha ez igaz ÉS nincs mínusz a sorban, continue kulcsszóval átugrod.
CompareTo-ra semmi szükség, semmi olyat nem csinál, aminek a feladatodhoz hajszálnyi köze lenne.
-
Karma
félisten
Sziasztok!
Egy kis segítséget szeretnék kérni.
valami.dat fájlból akaorok adatokat beolvasni, de csak amíg újból nem lessz (-) jelű az első karakter.
A harmadik sort már nem akarom megjeleníteni.
A fájl tartalma:
1. 0.49708825 0.968154
2. -0.49831982 0.967633
3. 0.49938438 0.967984
4. -0.49602369 0.967087public void go(){
try{
//Fájl beolvasás
File myFile = new File("data.dat");
if(!myFile.exists()){
//showMessageDialog();
}
FileReader fileReader = new FileReader(myFile);
BufferedReader reader = new BufferedReader(fileReader);
String line = reader.readLine();
while(line != null){
line = reader.readLine();
System.out.println(line);
}
if (reader != null) {
reader.close();
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}Milyen módszert javasoltok ?
Köszönöm előre is.
Tisztelettel: attis71A kódrészlet, amit utána írtál, már most is soronként olvassa a fájlt. Annyi hiányzik, hogy a while ciklusból breakelj ki, amikor a szövegben - karaktert találsz.
Viszont ha már arra jársz, mindenképp alakítsd át úgy a kódot, hogy try-catch-finally-t használsz, és a readert a finallyben zárod le. Jelen esetben ha bármi hiba van, a fájl nyitva marad, te meg elpazarlod a memóriát.
-
Karma
félisten
Á tényleg!

Akkor jól logikáztam, csak nem gondoltam arra, hogy entitással csináljam meg.
Amúgy szerintem ott van a random is:
"if(world.getBlockId(tx, ty, tz) == blockID && world.rand.nextInt(1000) < NetherOresCore.explosionProbability.getInt())"
Ezt az explosionProbability-t pedig a mod konfigjából olvassa ki.
Nekem is nagyon szimpatikus a forge, de ellentétben a Bukkittal itt alig van wiki, vagy vmi, amiből az ember megtanulhatja a dolgokat... Viszont ha az ember bele tudja magát ásni, akkor elképesztő dolgokat lehet elkészíteni. Most pl a transzformációkkal/animációkkal szórakozom. Viszont ha kész a mod, akkor rengeteg hálás lurkó kerül a táboromba!

Ah. Bocs, afelett tényleg átsiklottam.
-
Karma
félisten
Közben Githubon rátalátam egy NetherOres nevű modra, ahol úgy értelmezem, h ott is kis eséllyel robbanhat a dolog és hangot is ad ki, szóval puskának tökéletes!
Már csak azt kéne megtalálnom, hogy hol itt a késleltetés...A késleltetést a _fuse változó adja, amit az onUpdate csökkent egyesével. Ha leszámolt 80-ról 0-ra, megkeresi a saját ID-ját és robban. Nem látok benne olyan részletet, ami véletlenszerűséget adna neki.
Ettől függetlenül szerintem ez elég jó kiindulási alap, és nem a Forge osztályait használja, kivéve a SideOnly annotációt, ami meg mintha Forge-ban is lett volna.
Majd egyszer én is bele akarok mászni a témába, mondjuk más irányból: a Dockercraft. birizgálja a fantáziámat.
-
Karma
félisten
Sziasztok!
Volna egy kis (elég nagy) problémám. Volna egy ehhez hasonló kódrészlet:
public class Field{
int diceCount, playerNumber;
//get and set methods etc.
}
public class Board{
public Field[] board = new Field[36];
public void boardBuilder(){
for(int i = 0; i < board.length; i++){
board[i] = new Field();
//give value to the Fields
}
}
}
public class IoMethods{
public Board board = new Board();
public void boardPrintOut(){
int helper;
for(int i = 0; i < 6; i++){
for(int j = 0; j < 6; j++){
//The next line is where it gets the Exception
helper = board.board[i*6 + j].getPlayerNumber();
//print part
}
}
}
}Már stack overflow-on is kétszer kétféleképpen rákérdeztem, de csak újra, és újra ugyan azt a választ kapom.
A Board-ban létrehozom a tömbböt, majd incializálom az objektumokat. A Boardon belül kiiratom ott minden rendben van. Az össze objektumnak megvannak az értékei.
Majd kaptam két különböző megoldást:-1- Készítsek egy konstruktort a Board-nak:
Board() {
this.boardBuilder();
}-2- Nem hívtam meg a boardBuildert: (de meghívtam, mert különben a Boardon belül nem tudnék benne értéket tárolni...)
Az első megoldásra a Boardon kívül minden meghívásnál elvesznek a tárolt értékek, és csak 0-val tér vissza.
A második megoldára pedig a példakódon is jelölt módon a tömb végigléptetésekor NullPointerE.-t kapok.Nagyon megköszönném a segítséget, mert kezdek kifutni az időből, és még mindig ilyeneken vagyok fenn akadva.

Pedig teljesen jók a válaszok. Alapvetően a boardBuilder metódus egy koncepcionális hiba, az egészet szüntesd meg, és tedd a konstruktorba a tömb elemeinek inicializálását. Ezzel NPE-d nem lesz több.
Hogy miért veszik el adat, az ebből a kódrészletből nem derül ki. Mivel minden tagváltozód publikus, bárhol elronthatod. Jót tenne a játéknak, ha elkezdenél objektum-orientáltan hozzáállni: az osztályok belső állapota privát, kifelé csak egy interfészt mutatnak, amik az általuk támogatott műveletekből áll.
Például a Board esetén a tömb privát, de van egy műveleted, ami egy X, Y koordinátapárhoz visszaadja az oda illő Fieldet.
-
Karma
félisten
Igazából, nekem nem is sleepre lenne szükségem, hanem egy szimpla counterre. Csak nem tudom, hogyha pl while-lal létrehozok egy i változót 0 értékkel és ahhoz adok hozzá mindig +1-et, amíg eléri a 4-et, akkor az valóban mpenként fog hozzáadni +1-et. Gondolom nem...

Forge mod loader-t használok, elvileg ott is van egy csomó extra lib, ami a segítségemre lehet. A gond az, hogy sehol egy doksi, hogy hogyan is működnek, mi a szintaktika stb...
(#8246) M_AND_Ms
Ezt próbáltam már try-ba tenni és elkapni, de kicrashelt a játék, ha robbanni kellett volna neki...

Amúgy ezt próbáltam:
try {
Thread.sleep(1000);
}
catch (InterruptedException e) {
continue;
}Ja és continue; nélkül is ugyanaz az eredmény...
Végülis ja, az előbb írtam, hogy: "a Thread.sleeppel amúgy is kinyírnád a játékot"

Ezt nem lehet olyan naívan megoldani, hogy majd egy számláló elér valameddig. Nem tudsz számlálót írni anélkül, hogy a mostani problémát megoldanád.(*)
Nem akarnád esetleg a mostani forrásodat megosztani például Pastebinen, vagy valami forráskezelővel (BitBucket, GitHub, stb.)? Jó eséllyel adna ötleteket.
(*): Közben olvasgattam, hogy hogy működik ez a Forge a gyakorlatban. Igazából mégiscsak számlálószerű a megoldás, a rendszer küld ún. tickeket amikor a világ frissül, erre fel tudsz iratkozni, és amikor az értesítés jön, cselekedni. De ehhez is fórumokat kell bújni.
-
Karma
félisten
Például lenne egy 5x5-ös objektumokból álló tömböm (a pálya), és ki szeretnék osztani a 25 mezőből 5-öt üresnek majd 10-et az 1-es játékosnak, 5-öt a 2-esnek, 5-öt a 3-asnak. Itt az 5, 10, 5, 5 lenne az x, y, z, stb.
Létrehozok egy pályával megegyező méretű segéd tömböt, amit feltöltök az előbbinek megfelelően 5 0-val, 10 1-el, és így tovább.
Ezt a segédtömböt összekeverem, a véletlen mezőkiosztásért, majd egyszerű tömbbejárással átadom az értékeket a pályának.A segédtömb feltöltése lenne a gond, mivel változó számú játékosnak változó számú mezőt kellene kiosztani.
Meg tudnám oldani, hogy tömbbejárásban visszaszámlálom a lehetséges játékosok mezőszámait, de nekem nem tűnik szépnek.Rövidtávon megkönnyíted a saját életed, ha a kétdimenziós tömböket elfelejted, helyette egy dimenzióban tárolod a pályád és okosan indexelsz (pl. x,y koordinátákhoz a tömb y*N+x. elemét veszed). Ekkor a tömb feltöltése és megkeverése is triviálissá válik.
Mr Dini: Nem baj, hogy a szintaktikán elakadtál, mert a Thread.sleeppel amúgy is kinyírnád a játékot. Ezért nem is mondom meg, hogy lehetne feloldani az előző fordítási hibát.
Ha Bukkit plugint írsz esetleg, azzal meg lehet oldani ezt helyesen is. Tiszta Java-val nem tudom hirtelen, hogy tudnál egyszerűen visszatérni a UI szálra.
-
Karma
félisten
A range változó inputtól függően 28 - 36 - 48, de azt hiszem találtam rá megoldást. Még nem próbáltam ki, de ez meg fog felelni a célnak.
Pályaméret alapján egyenlő számú mező kiosztására lenne használva.public static void main(String[] args) {
Integer[] arr = new Integer[1000];
for (int i = 0; i < arr.length; i++) {
arr[i] = i;
}
Collections.shuffle(Arrays.asList(arr));
System.out.println(Arrays.toString(arr));
}A Collections.shuffle egyébként a helyes megoldás a feladatodra, örülök hogy megtaláltad. Az ebben implementált Fisher-Yates keverés egyenletes, szemben egy tipikus naív megoldással. Például itt van kifejtve, példával.
-
Karma
félisten
-
Karma
félisten
A Minecrafthoz nem értek, a HxD-t se tudom hogy micsoda, de tipikusan akkor van ez a jelenség ha a fordító nem abban a kódolásban kapja a forrásfájlokat, mint amit vár. Windowson jön ez elő a gyakorlatban, az egyik CP1250-et akar (közép-európai kódlap), a másik meg UTF-8-at.
A forrásfájljaid kódolását a Notepad++-szal elég egyszerűen meg tudod nézni és át is konvertálhatod egy kattintással. A környezetedet viszont csak te ismered.
Hosszú távon meg azt ajánlanám, hogy a szövegeket szervezd ki XML vagy Properties fájlba. Valószínűleg a Minecraftnak is van valami preferált módja.
-
Karma
félisten
-
Karma
félisten
-
Karma
félisten
Szerintetek mi értelme van, hogy egy cégnél az üzemeltetés végezze a programok buildelését?
Adott egy Java EE projekt, eddig előállítottam az EAR file-t lokálisan, az le lett tesztelve, majd DEV és DEMO rendszerre telepítve. Ha minden jól ment, akkor került az éles rendszerre.
Valahol bevett szokás, hogy az üzemeltetés, aki deployolja az appot, az végzi el a buildelést is?
Én őszintén megmondom nem sok értelmét látom. Mit ajánlotok erre a célra? Maven ear plugin?
A modern világ jó részében vagy az üzemeltetés, vagy egy teljesen automatizált folyamat végzi a buildelést és az élesítést is. Persze úgy, hogy először a tesztek is lefutnak. A fejlesztő saját gépén ad-hoc fordított csomagok felett régen eljárt az idő, mert mi van, ha szabadságon vagy, vagy baleset ér? Égjen fel a cég?
Szerintem nézz utána pár build szervernek. Én leginkább a Jenkinset és a TeamCityt ismerem, az előbbit javasolnám kb. bármilyen Java-s projekthez. De tény, a Maven is elég fontos szereplő, hiszen azt tudja meghívni a szerver.
-
Karma
félisten
"Sajnos azonban a mai senior Java fejlesztő brigád 1.6-1.7(1.5??) környékén leragadt."
Mert ezek fejlesztők általában elő, működő és aktívan használt projekteken dolgoznak, amikbe hosszú évek üzleti tudása van berakva. És erre nagyon vigyáznak. Nem fognak Java verziót váltogatni, mert az megjelent.
A kísérletező kedvű ifjú titánok persze megtehetik, hogy mindenfélét kipróbálgassanak, de majd bekerülnek az "életbe" és örülnek, ha nem kell meglévő funkciókat vagy, projekteket piszkálgatni.COBOL programozókra is szükség van még a világban, és minden tiszteletem az övéké. De most egy új projekt indításáról volt szó, nem a legacy-ről.
-
Karma
félisten
Nos, 1.8-as Java-val igazából csak akkor érdemes foglalkozni, ha az ember valóban ki is használja. Sajnos azonban a mai senior Java fejlesztő brigád 1.6-1.7(1.5??) környékén leragadt. Jah, hogy 1.8-on kívül nincs support? A világ nem csak Oracle Java-ból áll, hanem *nix környezetben van OpenJDK is, ami ott kvázi szabvány és egyáltalán nem elhagyott. Hivatalosan a RedHat még mindig supportálja a 7-es OpenJDK-t.
Szóval, nem csak hobbiprojektek és 1.8-as Oracle Java van a világon.
És komolyan kérdezem, aki most kezd el Java-val foglalkozni, annak miért is nem jó egy 7-es verzió? Vagy akár a 6-os is......
Az OpenJDK8 is GA lett 2014 áprilisában, úgyhogy már az is elég régi ahhoz, hogy begyepesedett berkekben is "meg lehessen kockáztatni használni". Én se hobbiprojektekben használom.
A nyelv újításai miatt szerintem egy kezdőnek is bőven megéri foglalkoznia vele - a lambdák és a streamek a legalapvetőbb mórickapéldákban is már kézzelfogható előnnyel bírnak. Na meg ha Görögországba mész, ott se ógörögül tanulsz meg először. Persze ez szubjektív, mások meg notepadban kínoznák a kezdőket, hogy hadd szokják az ipart.
Egyébként update 66-nál jár az Oracle JDK8. Biztos, hogy a rendszerkomponenseid rendben vannak biztonságilag, ha ennyire véres kérdéseket vetnek fel?
-
Karma
félisten
Egyébként az Oracle szerint is, ugyanis 2015. április óta nincs supportja, hacsak nem köt külön szerződést az ember a céggel.
A Tomcat 7-et is felesleges archaizálásnak érzem, mondjuk nem is állnék neki kézzel Tomcatet telepíteni, amióta van Spring Boot.
-
Karma
félisten
Webprogramozás van infón és egyszerű notepad++ -ban kell megírni ezt a "programot".
Tehát nem Java, hanem JavaScript a kérdés? Mert akkor a blur eventre lesz szükséged, valamint a JavaScript topikra ehelyett.
-
Karma
félisten
Sziasztok!
Milyen eseménykezelővel lehet egy input értéket validálni a mező elhagyásakor? Írj példakódot ami megvizsgálja hogy a mezőben 1 és 100 között szám van e?
Milyen UI technológiáról is van szó?
-
Karma
félisten
-
Karma
félisten
Sziasztok!
Egy gráfot szereték modellezni minmax algoritmushoz. Hogy lehet olyan list-et csinálni, aminek 3 attribútuma van (apaTabla, Tabla, heurisztika(int)), de külön osztályt nem hozhatok létre?"de külön osztályt nem hozhatok létre?"
Ezt hogy érted? Meg mi az, hogy lista, aminek három attribútuma van?
Ezek nem a node attribútumai akarnak lenni? -
Karma
félisten
Természetesen nem. Mivel a connectorok által okozott késleltetés relatíve elég kicsi, az üzleti logikád és DB-d bőven hangsúlyosabb lesz.
-
Karma
félisten
-
Karma
félisten
Fogalmam nincs, legalább öt éve nem nyúltam NetBeanshez, és nem is tervezek ezen változtatni. Én mondjuk Spring Bootot szoktam mostanában használni, beágyazott Undertowval (de a default Tomcat is bőven elég lehet, vagy Jettyre átállni is csak pár sor a pom.xml-ben); semmi EE-s hókuszpókusz.
-
Karma
félisten
Persze, jó lehet az is, de nem biztos hogy a legköltséghatékonyabb. Egy Azure Web Site-on Java kódot futtatni macerás (Java 7-ig mondjuk lehetetlennek nem lehetetlen), legalábbis Tomcattel sikerült szerencsétlenkednem.
Ha esetleg GlassFish helyett jó lenne a Wildfly (szintén EE), az OpenShiftet tudom javasolni, ott elég könnyű összepakolni az alkalmazásszervert egy MySQL vagy Postgres DB-vel, aztán Gittel beküldöd rá az alkalmazásod, és megy.
-
Karma
félisten
-
Karma
félisten
Miért pont GlassFish? Átmenrti megoldásokra sokkal könnyebben hordozható megoldások is vannak.
A kérdést mondjuk kifejthetnéd, hiszen a "hogyan" nem több, mint hogy felrakod a GlassFisht, bekonfigurálod, deployolsz... Vagy a hosting a kérdés?
-
Karma
félisten
-
Karma
félisten
-
Karma
félisten
Így próbálom: [link]
Egyébként érdekes, mert ha exportálom a JAR-t akkor ezt a hibaüzenetet kapom:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderExce
ption: unable to find valid certification path to requested targetAzaz nem találja a certificatet.
A java -verisonre ezt kapom:
C:\>java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b18)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)Pedig abban a JDK-ban a certificate benne van a cacerts-ben:
C:\Program Files\Java\jdk1.7.0_60\bin>keytool -list -keystore "C:\Program Files\
Java\jre1.8.0_25\lib\security\cacerts" -alias xy.zzs.hu
Enter keystore password:
xy.zzs.hu, 2015.06.19., trustedCertEntry,Az eclipse.iniben a 1.7.0_60 -os JDK van beállítva, tehát ha Eclipsből futtatom akkor a ennek a JDK-nak a cacerts fájljában keresi a certificatet, és itt már csak connection resetet ír, pedig abba a cacertsbe be sincs importálva a certificate:
C:\Program Files\Java\jdk1.7.0_60\bin>keytool -list -keystore "C:\Program Files\
Java\jdk1.7.0_60\jre\lib\security\cacerts" -alias xy.zzs.hu
Enter keystore password:
keytool error: java.lang.Exception: Alias < xy.zzs.hu> does not exist
U.i: Egyébként a kód más oldallal jól működik, szóval vagy a certificatere gondolok,vagy valami szerver beállításra.
Biztos, hogy a certificate-tel van probléma, bár most nem tudok jobban belefolyni.
Esetleg nézd meg ezeket a JVM opciókat, mind a debuggolás, mind a trust store manuális beállítása segíthet abban, hogy ellenőrizd, biztosan a jó cacerts fájlt húzza be a rendszer például.
-
Karma
félisten
AES128 bit kulcsot szeretnék generálni String input alapján. A String hossza bármi lehet. A függvény a következőt csinálná:
-Ha a String 16 karakter akkor nincs teendő
-Ha több mint 16 karakter akkor ArrayUtils.subArray(key.toCharArray(), 0, 16) majd ezt a végén vissza String-gé
-Ha kevesebb mint 16 karakter (N hosszú), akkor key.toCharArray(), egy új CharArray-be N-ig a key értékei, azon felül pedig egy karakter. A példában "c".Így minden esetben 16 karakter hosszú kulcsot kapok. Ez működik is (String.valueOf-fal). Viszont nem 128 bit lesz a végeredmény.
16 vagy több karakterrel működik hibátlanul. A probléma akkor keletkezik ha ki kell egészíteni plusz karakterekkel: Invalid AES key length: 28 bytes
Jelenleg sysout esetén nem is a key-t kapom meg, hanem a referenciáját.String pin = "1234";
...
...
// így fut le ha 16-nál rövidebb a pin
String[] keyArr = new String[16];
pinArr = pin.toCharArray();
for(int i=0;i<pin.length();i++) {
keyArr[i] = String.valueOf(pinArr[i]);
}
for(int i = pin.length();i<16;i++) {
keyArr[i] = "c";
}
key = String.valueOf(keyArr);
System.out.println(key); // String helyett reference
Key aesKey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, aesKey); // java.security.InvalidKeyException: Invalid AES key length: 28 bytes
byte[] encrypted = cipher.doFinal(password.getBytes());Vannak bejáratott algoritmusok kulcsgenerálásra, például a PBKDF2. Szerintem alapvetően fatális ötlet bármilyen kriptográfiával kapcsolatos implementációnak nekiállni, mert ebben a témakörben túl könnyű hibázni - lásd axioma megjegyzését a kulcsok értékkészletéről.
(Kivéve, ha házi feladatról van szó és konkrétan ez a feladat.)
RexpecT: Nem ártana egy kis kód, hogy hogyan próbálod meghívni az URL-t.
-
Karma
félisten
Sziasztok,
Arrays.toString(charArr) után Eclipse konzol tömbként írja ki a stringem. (getClass String-nek ismeri fel) Ennek mi lehet az oka?
Konkrétan így:
[1, 2, 3, 4, 5, c, c, c, c, c, c, c, c, c, c, c]A másik nagy gondom hogy a felső 16 karakter így 48 bájtot foglal. Míg ha simán Stringként megadom csak 16-ot. Hogyan lehetne ezt orvosolni?
AES kulcs ellenőrzésről lenne szó. Ha nem éri el a 16 karaktert/bájtot akkor hozzádobál c betűket.
Az Arrays.toString helyesen működik, épp csak nem azt csinálja, amit szeretnél. Ami egyébként nem is teljesen világos, micsoda.
-
Karma
félisten
Az ews-java-api Microsoft fejlesztés, és sehol se írják, valamint a POM se utal arra, hogy bármilyen extra külső függősége lenne.
-
Karma
félisten
-
Karma
félisten
Egy abszolút naiv és egyszerű megoldás: ha a címet előtte nagybetűssé konvertálod (toUpperCase), illetve a "karakter" elnevezésű stringjeidnek is a nagybetűs változatát vizsgálod, akkor meg is van oldva a probléma.
-
Karma
félisten
Kicsit előreszaladtam igen és osztom Jim-Y véleményét.
Én legalábbis úgy szoktam, hogy Maven modulos így nem csak horizontálisan (layerezés) hanem vertikálisan (modul) is szétszedem a projektet.
Nem érzem én sem azt, hogy ennek feltétlenül kettőnek kellene lennie, de természetesen Te dolgozol rajta.
"...de természetesen Te dolgozol rajta.
"Ehhez annyit hagy tegyek hozzá, hogy szélsőséges esetektől eltekintve ez a félmondat nem igaz. Gondolni kell a következő emberre is, aki X idő múlva ezt a kódot olvassa vagy írja - ebbe önmagunk jövőbeli formája is beletartozik.
És ha már itt tartunk, szerintem csak azért mert lehet, nem szerencsés szétvágni a projektet.
-
Karma
félisten
köszönöm!

Mielőtt még egyszer kódot másolsz a hozzászólásodba, szeretnélek megkérni, hogy félkövérezés vagy pőrén hagyás helyett használd a Programkód gombot! Köszi, mindannyiunknak nagy szívességet teszel.
-
Karma
félisten
-
Karma
félisten
Azon kívül, hogy szerintem kevésbé olvasható a kód?
Semmi 
Szerintem ugyanaz a stílusú kód, azaz egy anonim objektum létrehozása egy metódus implementálásáért, nem lesz kevésbé olvasható a lambdától. Sőt, akkor már a tömörebb jobb, mert például a Java stílusú "new Runnable() { void run() { ... } }" alapjáraton is nagyon belterjes.
Hogy az anonim subclassok mennyivel jobbak/rosszabbak egy nevesítettől, na az már más kérdés.
-
Karma
félisten
Szerintem azt nem úszod meg, hogy egy Javaban írt böngészo"t ne rakj az alkalmazásba. Ez egy Swing komponens, ami chromiumot futtat a háttérben: http://www.teamdev.com/jxbrowser
Onnantól kezdve pedig már csak a megfelelo" URL-t kell összraknod, és beadnod neki:
Static Maps API Version 2 – Entwicklerhandbuch
Direkt a koordináták hogyan jeleníted meg, azt nem tudom, annak a fenti oldalon nézz utána.
Nem feltétlen kell. Mondjuk ahogy nézem, ez a SwingLabs igencsak megszűnt azóta... Van még JMapViewer is, ami OSM projekt, viszont GPL alatt van. Nem semmi mocsár ez.
A JavaFX nem játszik egyébként?
-
Karma
félisten
Egyiket se. A harmadik és negyedik különösen ronda szerintem, mert nehezen olvasható. nem nagyon szoktam támogatni ezt a fajta stringgé konvertálást a hétköznapokban.
Inkább: String.format("%d%d", 1, 2), hogy ne kelljen felesleges memóriaműveleteket végezni.
-
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.
-
Karma
félisten
-
Karma
félisten
Ott van még a Visual Studio Online is, 5 userig szintén ingyenes.
-
Karma
félisten
Sőt, ha már reflexióval birizgáljuk őket, hozzá is lehet férni az értékéhez (persze ha nincs security manager az útban).
import java.lang.reflect.Field;
public class HelloWorld{
public static class A {
private int value;
public A(int value) {
this.value = value;
}
}
public static class B extends A {
public B(int value) {
super(value);
}
}
public static void main(String []args){
B b = new B(42);
try {
Field valueField = A.class.getDeclaredField("value");
valueField.setAccessible(true);
int internal = valueField.getInt(b);
System.out.printf("Found value: %d%n", internal);
} catch (Exception ex) {
System.out.printf("Reflection failed: %s%n", ex.toString());
}
}
}Ez az előbbi peremfeltétellel azt írja ki, hogy "Found value: 42".
-
Karma
félisten
Nézz szét a Camel oldalán, igazából pont erre való az eszköz. Minél többmindent kell csinálni és szervezni, annál inkább javaslom. Itt meg egy lista, hogy mikkel tudsz kapcsolatba lépni Camellel (lásd HDFS2 komponens pl.).
A link, amit elsőre bedobtam, egyébként általános, üzenetalapú mintákról szól, és hogy hogy lehet őket Camellel megvalósítani. De ha az Enterprise Integration Patternek mentén keresgélsz, lehet találsz mást is.
-
Karma
félisten
Sziasztok, lenne egy Java kérdésem. Kéne írnom egy progit, ami fog egy fájlt, és
- binárisról ascii-ra alakítja,
- fix felosztású fájlból CSV-t alakít,
- elteszi egy HDFS-re.. stb (meghívja a HDFS api-t)Ezeket a feladatokat meg is tudom oldani, (bár legszívesebben Bash-el oldottam volna meg, de nem szabad), Amit kérdezni szeretnék, hogy a programot hogy építsem fel, hogy ilyen taszkok egymásutáni futtatására képes legyen, és ne legyen túl szekvenciális. Tehát, hogy csináljak egy Task intefészt input/output fájl paraméterrel, vagy mi legyen a stuktúra.. Mit javasoltok? Holnap neki kéne ugornom a Class Diagrammnak.
Milyen osztályoka bontanátok a progit?
KösziLehet nem a legnépszerűbb megoldás, mivel nem igazán karcsú, de én Apache Camel útvonalat írnék rá. A fájlok fogadása, az adatok átalakítása és máshová küldése pont egy olyan feladat, amire passzol.
-
Karma
félisten
Számomra érthetetlen, hogy mit tanítanak 2 éven át C-ből az egyetemeken 2014-ben, fél-, max. 1 év el kéne, hogy menjen az alapokkal de utána már illene OOP-t tanítaniuk valami modernebb nyelvel.

Egyetértek. A C maximum 2 félévet ér, többet nem. Van az alap utasításkészlet + mutatók 20 PDF oldalon, oszt annyi. Lehet, hogy a kolléga a C++ra gondolt? Nálunk a C/C++ elvitt 3 félévet.
BME-n csak egy félév a C, és maga a nyelvi összefoglaló, amit anno lehetett használni vizsgán is akár, mindössze két oldal. Aztán egy félévnyi - a gyakorlattól teljesen elrugaszkodott - C++, és jött a Java meg a C#, ami azért több tárgyban előjött.
Szerintem ennyi azért kell. Mondjuk a C++-nál nem lenne rossz, ha lenne bármi köze a valósághoz (frameworkök, valós helyzetek pl.)
-
Karma
félisten
Az eclipse svn kliensei kalap szar. Mondanám, hoy svn checkout, svn update, svn commit, de sikítófrászt kapsz ezektől

Én elvagyok velük, nagy bajom nem volt vele pedig csináltam már cifra merge-öt is vele. A leginkább az jön be, hogy az átnevezéses/mozgatásos refaktorokat automatikusan követik SVN-ben is, amit manuálisan nem tudom hogy lehetne megoldani idegbaj nélkül.
-
Karma
félisten
Egyebkent meg volt masik iranyban kerdezesnel olyan valasz is, hogy o az ilyenekert mondja hogy a generalt kod az igazi, mert akkor megtervezed az adatstrukturat amit modellezel, es akkor ezt az esetet beleirod a generalasba
Annotációk!!!!
Ez, kiegészítve azzal, hogy a reflexión túl az annotation preprocessing nagyon sokat tud dobni rajta.
-
Karma
félisten
-
Karma
félisten
Sziasztok!
Van egy Java függvényem, aminek annyi a lényege, hogy megadunk egy forrás-, és egy célmappát. Majd végigmegy egyesével rekurzívan és átmásolja a még nem nem átmásolt fájlokat:
//másolás függvény:
public void masolasFGV(File src, File dest)
throws IOException {
//Meg vizsgáljuk, hogy mappa-e:
if (src.isDirectory()) {
//Megpróbáljuk létrehozni a mappát (ha van, akkor nem csinál semmit)
dest.mkdir();
//Listába rendezzük a mappa tartalmát:
String files[] = src.list();
//Majd egyesével végigmegyünk rajta:
for (String file : files) {
//Elkészítjük a fájlokat:
srcFile = new File(src, file);
destFile = new File(dest, file);
//Rekurzív másolás:
masolasFGV(srcFile, destFile);
}
} else {
// Ha a cél nem létezik, másolunk:
if (!dest.exists()) {
Files.copy(src.toPath(), dest.toPath());
System.out.println("Másolás: " + src);
} else {
System.out.println("Van már: " + src);
}
}
}Ez szép is meg jó is. Viszont szeretnék rajta egy kicsit módosítani. Tök sok olyan van, hogy egy mappában van még egy csomó mappa, meg fájl és ezek már meg vannak és felesleges újra "megvizsgálni" őket. Ezért egyszerűbb lenne: Megadjuk a forrásmappát és a célmappát. Ellenőrzi az utolsó módosítás dátumát (.lastModified()), ha nagyobb (azaz újabb), mint az utolsó mentés dátuma akkor belemegy és végig megy rajta ugyanúgy, mint a fenti példában. Viszont ellenkező esetben az egészet kihagyja. Valakinek ötlet?
Ezt a kiegészítő ötletedet szerintem ne erőltesd annyira, mert bár tényleg jó ötlet, nem üzembiztos. Nem minden fájlrendszer jegyzi fel a tartalmazó mappákon a módosítási időt, amikor alatta egy fájl változik.
-
Karma
félisten
Névkonvenciót nem tartja be.

Szerintem ez egy elhanyagolható probléma, ha azt nézzük, hogy C# és Java között át tudja alakítani amit írsz.
-
Karma
félisten
...aminek a nagy része halott, és a magyar nyelvhez még irreleváns is.
Nekem a HunspellJNA, HunspellBridJ és a LanguageTool tűnik a legéletképesebbnek. Az előbbi kettő mondjuk natív libet illeszt be, aminek megvan a maga komplexitása.
-
Karma
félisten
Ez egyébként érdekes kérdés, mert valamivel korábban PandaMonium azt írta, hogy az iterátor menet közben is tudja törölni az aktuális értéket.
-
Karma
félisten
De, az fake, szol mar a fejl.korny, hogy ket type mismatch van (merthogy parseInt van a toString helyett, irja is lent vmelyik comment).
Az viszont teny, hogy lehet idonkent talalni erdekes dolgokat. Az egyik m.tarsam kapta feladatul egy korabbi program atvetelet, javitasat. Annak a programozoja minden egyes feluleten megjeleno figyelmezteto ablakhoz kulon szalat nyitott... szegeny mire rendberakta, me'g evekkel kesobb is emlegette.Jó, ez jogos. Az enyém String.valueOffal volt, úgy már fordul

Ma ilyet mutatott az egyik munkatársam, miután feljött a búvárkodásból:
boolean toReturn = isFooOk && isBarOk && isBazOk && ... && isQuuxOk ? true : false;
return toReturn; -
Karma
félisten
Én ilyet már láttam élesben, nem fake

-
Karma
félisten
Sziasztok!
Ha egy JPanelben ábrázolunk egy pályát, ami mezőkből áll, és a paintComponent-et így írtuk meg:
public void paintComponent(Graphics g) {
super.paintComponent(g);
setBackground(cBackground);
Graphics2D g2d = (Graphics2D)g;
int posX=X0;
int posY=Y0;
for(Field f : map.getFields()){
drawField(f, g2d, posX, posY);
posX += Field.WIDTH;
if(posX >= (map.getWidth() * Field.WIDTH)){
posX = X0;
posY += Field.HEIGHT;
}
}
A drowField 1 mezőt rajzol ki a rajta lévő dolgok alapján.Meg lehet oldani azt valahogy, hogy a JPanel repaint-je helyett csak a drowField legyen meghívva? Szeretnénk ha nem kellene mindig az összes mezőt frissíteni, elég csak azt ami változott, ha ez megvalósítható.
Köszi
Mi a motiváció mögötte? Lassú? Villódzik? Egyikse, csak optimalizálni akarsz rajta?
Egyébként igen, meg lehet oldani. Itt van egy tutorial egy teljes játékról hardveres 2D gyorsítással, van benne pár kulcsmomentum amit átvehetsz. Gondolok különösen a BufferStrategy-n keresztüli rajzolásra, meg az ablak kezelésére.
-
Karma
félisten
Sikerült .. az volt a probléma amit te mondtál.... amúgy mint mondtam egy tutorial alapján írom és ott apletet használ... én sem értem hogy miért nem egyből droid de nem akartam keverni a dolgokat ... amúgy ez csak egy feltételezés de szerintem azért applet mert a legelején volt pár fejezet ilyen nagyon, nagyon alap dolgokról és ebből gondolom, hogy nem akarta még az android specifikus dolgokkal is komplikálni és akkor már azért applet mert jobban hasonlít a felépítése az androidéhoz...
Tényleg majdnem hasonlít, épp csak semmi köze hozzá. Mintha almát hasonlítanál a négyes metróhoz.
-
Karma
félisten
Nem tudom kipróbálni mert most meg olyan hibaüzeneteket kapok hogy a képek amiket a program használ nem olvashatóak, meg ilyenek (mivel az én célom is az android és csak nagyon, NAGYON minimális szinten konyítok a html-hez ezért most nincs kedvem ezzel vacakolni) ... minden esetre az eclipse arra vonatkozó kivételeket jelez, hogy nem lehet AppletViewerPanel -t Frame -re castolni...
Nagyon rég nem appleteztem, de nagyon erős a gyanúm, hogy Frame csak az AWT desktop alkalmazásoknál van... Ami az ablak.
Ha az Android a célod valóban, ne szopasd magad ezzel, menj Androidra! Az appletek egyébként is halottak.
-
Karma
félisten
Bocs lejárt az 5 perc... kipróbáltam az eclipse-t (a NetBeans nem tudja futtatni az appletet, legalábbis tudtom szerint) és megy úgyhogy valószínűleg azzal van a baj ahogy böngészőből próbáltam megnyitni...
Nekem az a getParent().getParent() sor igen gyanús, hogy nullt ad vissza.
-
Karma
félisten
Ezen az oldalon találsz teljes megoldást a JAR-ból kimásolós és betöltős problémára. A kommentek között meg az is ott vagy, hogyan tudod kitakarítani.
Mármint a vége *van, nem tudom miért,hullott így szét a helyesírásom mostanában telefonon

Egyébként azt akartam még,hozzáfűzni, hogy a getClass().getResourceAsStream() az aktuális osztály classloaderét hívja meg, szóval kvázi ugyanott vagy, mintha máshonnan keresnél CL referenciát.
-
Karma
félisten
Ez eddig oké, ez majdnem azonos a ClassLoader "getResourceAsStream()" metódusával.
Az én kérdésem leegyszerűsítve az, hogy ha megvan az URL ("getResource()") vagy az InputStream ("getResourceAsStream()") egy JAR -on belüli mappához akkor utána hogyan tudom a mappát a tartalmával együtt átmásolni a JAR -on kívülre (ergo kicsomagolni).
Ezen az oldalon találsz teljes megoldást a JAR-ból kimásolós és betöltős problémára. A kommentek között meg az is ott vagy, hogyan tudod kitakarítani.
-
Karma
félisten
Valószínűleg nem véletlenül írják. Látni kéne, milyen certet tudnak adni, de könnyen lehet, hogy a java default truststore-ja nem hitelesítené a netlock által kiadott tanúsítvánnyal aláírt kódot. Így sokra nem mész vele, ha ezt használod aláírásra, java verziótól függően vagy security warningot adna vagy meg is tagadná a program futtatását (pl 1.7_45-től).
A legutóbbi, biztonsági modellt érintő változtatásokkal még rúgtak egyet ebbe az amúgy is döglődő RIA platformba. Persze dicsérendő, hogy a biztonságra ráfeküdtek, csak már sokkal korábban kellett volna, kevesebb lett volna a fejlesztőknek okozott kár..Így van, hiába írja alá, a Java nem fogja elfogadni. A NetLocknál ennél bőven drágább tanúsítványra lesz szükség.
-
Karma
félisten
Tudsz erre valami examplet mutatni?
Csak amit neten láttam. Például itt van egy magyarázat, benne a "Real examples" alatt hogy hogy néz ki egy Iterable<T>.foreach, amit így bármilyen adattípusra meg lehet hívni, és még működni fog.
Régi a cikk, úgyhogy nem biztos, hogy a véglegesben is így van. De az elv látszik.
C#-nál meg nézd meg a LINQ-t. Az egész erre az elvre épül

-
Karma
félisten
Ez okosnak tűnik, de pont ezért van egy strict elválasztása az abstract osztálynak és az interfésznek, hogy ne keveredjenek a dolgok. Persze, tudom, hogy csak lehetőség, de használni fogják és onnantól igazából senki sem fogja tudni, hogy mit is kell valójában használni

Érdekes módon más környezetben (ld. C#) ez nem okoz problémát

-
Karma
félisten
mindig azt vallottam és tartom is, hogy minél kevesebb kódot ír az ember, annál jobb
Háát ... én meg inkább Clean Code stb. felé hajlok. Meg afelé, hogy attól mert van kalapácsom, még ne lássak mindent szögnek. Van amikor igen, jó az ha minél kevesebb kódot irok, valamikor meg nem jó ...
Szeirntem is csak szintaktikai édestiszer ez a lambda, semmi ténylegesen újat nem hoz.Szerintem pont hogy kompatibilis a clean code-dal, hogy az ilyen szintaktikai édesítőszerekkel a lényeget írjuk le, ne pedig a temérdek boilerplate-et.
(#5245) floatr: "Persze, az api egy dolog, de nem azt tolják, hanem a lambdát." ??? Mármint kicsoda?
-
Karma
félisten
Én is azt vágtam le, hogy tényleg itt csak az anyonymous class szintaktikát spóroljuk le, tehát a lambda gyakorlatilag egy szintaktikai cukor, semmi más. Van egy olyan érzésem, hogy megint a legnagyobb szempont a visszafele kompatibilitás volt, mint a Genericnél, és ezért lett ez a low-budget dolog a lambdából. A default method az mi?
A default methodokkal interfészekhez lehet alapértelmezett implementációkat írni, tehát ha van valami közös funkció amit egy interfészt megvalósító osztályoknak mindnek tudnia kell, és pont ugyanúgy, akkor nem kell se abstract ősosztály, se kódot ismételni.
A végeredmény hasonló, mint az extension methodok C#-ban.
De ott van a streams API is, elég erős túlzás hogy nincs a Java 8-ban semmi új... Meg a lamdba szintaxissal sincs baj szerintem – mindig azt vallottam és tartom is, hogy minél kevesebb kódot ír az ember, annál jobb.
-
Karma
félisten
Szerintem ekkor semmivel se vagy előrébb annál, mintha teleszórnád System.out.println()-nel a kódot. Az elvárt működés egyébként is az, hogy stdoutra lökje ki a metódusokat, nem kell a logger cicoma. Belőni egyébként nem bonyolult, a valóságban úgyis majd lesz egy wrapper lib előtte (pl. SLF4J).
Ha elrejted a kiírást egy olyan utility osztály mögé, aminek van egy "enter" meg egy "exit" metódusa, akkor meg pláne mindegy.
IIT rulez.
-
Karma
félisten
Sziasztok!
Egy háziban szkeletont kell készíteni a kiírt programhoz, amiben azt várják, hogy a metódus hívásokat, a metódus által kapott paramétereket és a visszatérési értékeket kiírja a program 1-1 tesztelt folyamatrészletről.
Mivel nem annyira tartom szerencsésnek ha minden metódust kiegészítek külön kiírásokkal, keresgéltem és a util/logging/logger felmerült mint lehetőség, de egyenlőre a beállításaival kicsit hadakozom. A kérdésem h be lehet állítani h a fenti infókat írja csak ki? Hogy ne szenvedjek fölöslegesen ha nem is fogja tudni :-DAOP segítségével simán meg tudod egy helyről oldani minden metódus naplózását. Csak aztán meg kell indokolnod a konzulensnek.
-
Karma
félisten
Én úgy értelmeztem, hogy az ellenségtől függően különböző támadásmódszerrel (enum) indít a torony. Ezt eléggé meg tudom indokolni, egy gyalogos ellen nem úgy támadok, mint egy tank ellen, mert vagy felesleges mennyiséget lövök el, vagy túl keveset stb.
Egy dolog, hogy lövedéket indítok, és egy másik dolog annak becsapódása. Egész eddig az utóbbiról volt szó, de ha akarunk ilyen többféle lövést, az se mond ellent az "áldozat számol" sebzési logikának.

-
Karma
félisten
Vagy ez, igen. Bár ha iskolai feladat, akkor nehezebben megindokolható szerintem, hogy miért kell egy osztálynak minden lövedék- és ellenségtípust ismernie.
-
Karma
félisten
Igaz, valóban nem kell eldöntenie a toronynak. Ebben az esetben igazad van. Azt nem olvastam el, hogy játékról van szó ahol kézi irányítás van, azt hittem, ez vmi sima OOP példa.

Bár van egy ilyen:
KRITERIUM: Minden toronynak eltérő mennyiséggel kell sebeznie a különböző típusú ellenségeket.
Na akkor azért mégis el kell dönteni valahol, hogy kit mennyivel tud sebezni.
Remek lehetőség erre az ellenség önmaga, aki ismeri a saját sebezhetőségeit, a DEF pontjait, és úgy egyébként minden megvan helyben ahhoz, hogy kiszámolja a lövedék által okozott sérülést.
Életszerű példával szemléltetve: ha belém csapódik egy tűzgolyó, akkor nem a küldője mérlegeli először, hogy mennyire haltam meg

-
Karma
félisten
A túlterhelt doDamage() metódusok sztem se jó ötlet, viszont a toronynak magának kell eldöntenie, hogy melyik típusú ellenségnek melyik támadást adja be, és nem kívülről kell ezt átadni, legalábbis én így értelmezem a feladatot. Valakinek biztos el kell ezt dönteni.
Én valahogyan úgy csináltam volna, hogy az Entity szolgáltat magáról vmi vulnerabilities információt, és a torony ez alapján dönt - kb. ez az, mint a getType() metódus.Nem sok olyan tower defense játékot ismerek, ahol egy torony többfélét lőne, vagy a cél ellenség kiválasztásán túl több logikával rendelkezne. Szvsz nem is következett a szövegből.
-
Karma
félisten
Sokkal rosszabb, de az eredeti felállás se jó.
Szerintem a legtisztábban úgy tudnád megoldani, hogy a modelledet kiegészíted egy kicsit: a doDamage nem egy számot vár, hanem egy olyan struktúrát, ami tartalmazza a sebzés mértékét (szám), típusát (pl. enum), távolságot (szám, ha akarsz shotgun jellegű fegyvert); az áldozat meg ezekből illetve a saját védelmi paramétereiből kiszámolja az okozott sebzést.
Így senkinek nem kell konkrétan ismernie a másik felet.
-
Karma
félisten
-
Karma
félisten
+1. Az I betűzést C#-ban használom csak, de az implementációs osztályokat ha releváns, valahogyan megkülönböztetem mindkét nyelven. C#-os példa: IStorageService -> DesignStorageService, WindowsStorageService, IsoStoreStorageService.
-
Karma
félisten
A Jackson2 kicsit jobban illeszkedik a JRE-ben meglévő JAXB implementációhoz, meg lehet h elég lesz a core pár dologra.
Mondjuk én egy kicsit elborultam, amikor láttam, hogy mekkora böszme csomagokat építenek fel a feladatra. Egyszer régebben gyúrtam egy specifikus bindingot, és a forrása volt ~20kB, itt meg a jarok rúgnak többszáz kB-ra
Pont a specifikusság az, amivel karcsúbbat lehet írni. A Gsont durván szét lehet hackelni anélkül, hogy a forráskódhoz nyúl az ember(*). Másrészt vannak benne apróságok, amik elméletben nem is számítanának, de a gyakorlat más... Például hogy a Mapek sorrendtartóak.
(*) Személyes rekordom: olyan bővítmény. ami új annotációkat figyel a célosztályon, és a bemeneti JSON fát transzformálja többféleképpen, mielőtt a reflexió rámenne. Nagyon ocsmány JSON bemenetnél kihúzott a szarból.
-
Karma
félisten
Két lehetőséged van: vagy csinálsz egy külön osztályt a koordinátához és egy JsonDeserializert (van rá példa a Gson doksiban), ami az elegáns megoldás; vagy egy List<Double> tagváltozót raksz az osztályba, és kézzel kezeled utána. Ehhez TypeTokent kell használnod, amiről szintén van leírás. (Telefonnal csak ennyire futja, bocsesz.)
-
Karma
félisten
Sziasztok,
Egy JSon-t szeretnék parselni viszont sehogy se akar összejönni. elsődleges dolog hogy melyik json jart kéne leszednem ahhoz, hogy megtudjam ezt egyáltalán csinálni. Szedtem le vmilyen stackoverflows link alapján egy java-json.jar-t viszont abban a JSONSerializer.toJSON() method nem volt jelen.
igazából a parselés terén EZ alapján próbálok elindulni, viszont erre a sorra hibát dob.JSONObject json = (JSONObject) JSONSerializers.toJSON(jsonStrings[0]);
toJSON-nél feldobja a lehetőségeket hogy create new method meg ilyenek, de azokkal nem sokra megyek.
előre is köszi.A Gsonra szavaznék, sokat használom, nagyon jól testre szabható és bővíthető is.
-
Karma
félisten
-
Karma
félisten
Azért a String.valueOf, ami implicit meghívódik ebben az esetben, kicsit jobban olvasható és nem sokkal hosszabb
.Superhun: Wow, ezt nem is tudtam. Mondjuk a felsorolt három, nem optimalizált alternatívából az utolsó pont hogy jobb az int overload miatt.
-
Karma
félisten
Ezt így most nem értettem, de azért köszi.

Egyelőre a tömböket sem értem. A fenti ciklussal kiíratom, akkor csak 11 szám jön ki. A hosszúságának 11-et adtam meg, de elméletileg nem úgy van, hogy 0-11-ig megy, vagyis 12 eleme van?
Nem. Ha egy tömböt 11 eleműnek hozol létre, akkor az 11 elemet tartalmaz, 0-tól 10-ig indexelve.
-
Karma
félisten
Köszi, sikerült.

A .toString() mit csinál? Hibát jelzett rá, kitöröltem így jó. Double-ek vannak a tömbben.
A toString egy olyan metódus, ami minden objektumnak van, és valamilyen formában Stringet állít elő az objektumból.
A double egy primitív típus, így nincsenek metódusai.
Ha általánosan akarod kiiratni a primitív és objektumtípusokat is, használd a String.valueOf(valami) statikus metódust a valami.toString() helyett.
-
Karma
félisten
-
Karma
félisten
Mi? Írtam, hogy kétféleképpen is vissza lehet nyerni a jelszót ennél az alkalmazásnál.
User mappába / .reenger.xml-be rakta nálam, de itt be van hashelve.pl: "<pass>crypto(1,67ded21c107401015d5a05020163701f60)</pass>" = "test"
Ennyi a decode:
public static String decodePassword(String crypto) {
int sl = crypto.length();
if (sl < 10) return null;
char key = (char)(int)Integer.valueOf(crypto.substring(8,10), 16);
char newkey;
crypto = crypto.substring(10, sl - 8);
int cl = (sl - 18) / 2;
char ca[] = new char[cl];
for(int p=0;p<cl;p++) {
ca[p] = (char)(int)Integer.valueOf(crypto.substring(p*2, p*2+2), 16);
newkey = (char)(key ^ ca[p]);
ca[p] ^= key;
key = newkey;
}
crypto = new String(ca);
//System.out.println("d1=" + crypto);
cl = crypto.length() / 2;
ca = new char[cl];
for(int p=0;p<cl;p++) {
ca[p] = (char)(int)Integer.valueOf(crypto.substring(p*2, p*2+2), 16);
}
for(int p=0;p<cl;p++) {
ca[p] ^= 0xaa;
}
char tmp;
for(int p=0;p<cl/2;p++) {
tmp = ca[p];
ca[p] = ca[cl-p-1];
ca[cl-p-1] = tmp;
}
return new String(ca);
}De még egyszerűbb a fiddlert felrakni és megnézni a http forgalmat, ha nem értesz java-hoz.
Nekem személy szerint nem jött át, hogy az "itt" a kérdésre utalt

Szép munka.juhasz22: Ha ez a helyzet, akkor praktikusan elő kellene kerítened a .reenger.xml fájlt a gépedről, és megosztani.
Új hozzászólás Aktív témák
-
Fórumok
PROHARDVER! - 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 Tabletek, E-bookok Nyomtatók, szkennerek 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ésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁ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?:))
- AMD FX
- Arc Raiders
- BMW topik
- Kuponkunyeráló
- Gumi és felni topik
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Milyen billentyűzetet vegyek?
- Mibe tegyem a megtakarításaimat?
- Samsung Galaxy S26 Ultra - fontossági sorrend
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- További aktív témák...
- Samsung Galaxy S24 / 8/128GB / Kártyafüggetlen / 12Hó Garancia
- Apple iPhone 14 Plus 128GB, Kártyafüggetlen, 1 Év Garanciával
- Telefon felváráslás!! Xiaomi 13T, Xiaomi 13T Pro, Xiaomi 14T, Xiaomi 14T Pro
- AKCIÓ! Microsoft XBOX Series S 512GB játékkonzol garanciával hibátlan működéssel
- Alkalmi vétel! HP Omen 17! I7 12700H / RTX 3070Ti 8GB / 1TB Nvme SSD / 16GB DDR5 !
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

Majd checkold azért te is légyszí, ha lesz rá időd. 
Spring Boottal nagyon könnyen belőhető, gyors és a hibakezelés is jól meg van oldva benne.

Már csak azt kéne megtalálnom, hogy hol itt a késleltetés...




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





