Hirdetés

Keresés

Új hozzászólás Aktív témák

  • disy68
    aktív tag

    Mit jelet a túl komplex megoldás?
    Amire szükségem lenne:
    Regisztráció
    Bejelentkezés, akár közösségi szolgáltatással egybe vonva
    Belső email értesítés
    SQL adatbázis
    jogosultság kezelés
    képkezelés
    fórum vagy hasonló hirdetéses tevékenység
    És az ezekkel járó sallang. Ez weboldal esetén alap, mobil tekintetében nem tudom mennyire alap.

    Nem is biztos a komplex a megfelelő kifejezés, inkább olyanra kell gondolni, ami rendszerszintű feature lenne, ami nem igazán kivitelezhető natív megoldások nélkül. Szóval ha az egész megvalósítható egy böngészőn belül is, akkor sanszosan nem lesz gond. Persze a pontos képhez érdemes megnézni mit támogat a Flutter, mik a célok és az alapján meghozni a döntést. Amit írsz az nem tűnik problémásnak. Persze kis projektnek sem :-)

  • disy68
    aktív tag

    Hölgyek Urak!

    Kutatgatok, hogy milyen irányba induljak el egy olyan mobileszközökre fejlesztett alkalmazás kivitelezésében, amely kereszt platform tekintetében is megfelelne. iOS és Android alkalmazás lenne egyben, legalább is ami a kódot illeti.

    Kaptam ötletet is egy másik topikban, de szeretnék itt is érdeklődni, hogy van e esetleg javaslat java tekintetében. (egyébként a Flutter(Dart) vonal tűnik egyelőre jónak)

    - Amit még korábban nem említettem meg, hogy nem csak mobil alkalmazást, de webes felületre is szükségem lesz, tehát ha esetleg van olyan megoldás, amelyet egyszerre mind három platformon reszponzív és kompatibilis módon megjelenhet, az lenne a legjobb. - utóbbi nem feltétel, de az adatbázisuk közös lenne.

    Mi a véleményetek? Mit ajánlanátok ?

    Első körben legyen egy külön backend, ami kiszolgálja az appokat/webappot.
    Web/Android/iOS-hez a Flutter valóban jó választás lehet, amíg nem kell semmi túl komplex.

  • disy68
    aktív tag

    Java 8-as maven projekt migrálása újabb, moduláris java verzióra pl 17-re hogy?

    Van valami automatikus megoldás? Vagy manuálisan kell? :/

    Vannak tool-ok, amik segíthetnek itt olvashatsz az egészről részletesebben.

  • disy68
    aktív tag

    Belefutottam egy hibába és egyelőre nem sikerül megoldanom. Szeretném a segítségeteket kérni.

    Van egy terminal/commandline futtatható "jar" fájlom, ami pár paramétert kapva teszi a dolgát.
    Ebben használok egy "config.properties" fájlt. Alaphelyzetben az "src/main/resources/config.properties" path-on van, innét Eclipse-ből indítva szépen el is éri, működik, ahogy kell.
    Azt szeretném elérni, hogy odamásolhassam a futtatható JAR mellé és úgy is tudjam használni bármikor. Na, ez nem megy és nem tudom hogyan kellene megoldani. A futtatható jar külön paramétert nem kaphat erre, automatikusan kellene maga mellett megkeresnie.

    Jelenleg ilyen a betöltő:
        public static Properties loadProperties(String propertiesFilename) {
            Properties prop = new Properties();
            try (InputStream stream = ClassLoader.getSystemResourceAsStream(propertiesFilename)) {
                if (stream == null) {
                    throw new FileNotFoundException();
                }
                prop.load(stream);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return prop;
        }

    CodeSource codeSource = YourMainClass.class.getProtectionDomain().getCodeSource();
    File jarFile = new File(codeSource.getLocation().toURI().getPath());
    String jarDir = jarFile.getParentFile().getPath();

    A fentivel megvan a jar path-ja, hozzácsapod az elvárt fájlnevet és azt próbálod beolvasni, ha nincs ilyen fájl, akkor mehet fallback-nek a resource beolvasás. Esetleg a jar mappájában keresel bármilyen .properties fájlt és mindegyiket beolvasod, de ez már részletkérdés.

  • disy68
    aktív tag

    Ha jól emlékszem, eclipseben sysout-ot beírod és ctrl + space.

    intellij-nél meg sout és ctrl+space
    de bármilyen ide-ben tudsz saját billentyűkombót is beállítani (makró, template, etc)

  • disy68
    aktív tag

    Nem biztos, hogy mindenki ismeri mind a kettőt.

    Kössz a linket, elolvasom. Bár jobb szeretem a magyart, meg az itteniek személyes véleményét. :R

    Szerintem ahány ember annyi személyes vélemény, úgyhogy inkább ismerkedj meg mindkettővel - syntax-tól kezdve odáig, hogy mire való -, aztán majd meglátod neked melyik szimpatikus.

  • disy68
    aktív tag

    Annyit megtudtam, hogy olyan lesz amit egyszerű pszeudo kóddal is meg lehet oldani.

    Akkor sanszosan a szokásos fizzbuzz/fibonacci jellegű feladatokra lehet számítani meg ilyen oldd meg iterációval/rekurzióval. Ha esetleg ennél több energiát fektetnének a dologba, akkor valami saját példa, amiből esetleg kiderül, hogy hogyan állsz hozzá egy feladathoz, hogyan gondolkodsz, ilyesmi.

    Én annyit tanácsolok, hogy gondolkodj hangosan és ha a feladatnál értelmezhető, akkor kérj egy teszt esetet (bemenet-kimenet). És hajrá ;)

  • disy68
    aktív tag

    btw ha már git: lehet commitot/logot purgálni? két külön accountról committáltam az egyik repómba, de szeretném eltünteti a másikról származókat.

    Azt hiszem itt mindenre kitérnek: rewriting history

  • disy68
    aktív tag

    Sziasztok

    Most ismerkedem a java programozással. Viszont van egy problémám. A sima programokat gond nélkül le tudom futtatni, de a mini alkalmazásokat nem jeleníti meg egy böngésző se. Mitől lehet ez?
    Minialkalmazás programkódja:

    import java.awt.*;
    public class BlanksApplet extends javax.swing.JApplet {
    String parameter1;
    String parameter2;
    String parameter3;

    public void init() {
    parameter1 = getParameter("adjective1");
    parameter2 = getParameter("adjective2");
    parameter3 = getParameter("adjective3");
    }

    public void paint(Graphics screen) {
    screen.drawString("The " + parameter1
    + " " + parameter2 + " fox "
    + " jumped over the "
    + parameter3 + " dog.", 5, 50);
    }
    }

    Weblap p.kódja:

    <applet code="BlanksApplet.class" height=80 width=500>
    <param name="adjective1" value="lachrymose">
    <param name="adjective2" value="magenta">
    <param name="adjective3" value="codependent">
    </applet>

    Azért mert már egyik nagy böngésző sem támogatja őket, halott technológia.

    Here are browsers that do not support Java Applet any more:
    - Google Chrome
    - Firefox
    - Safari
    - Microsoft Edge
    - Opera

  • disy68
    aktív tag

    Ez egy régebben (10+ éve)megírt dll. Biztos nem vírusos. Eddig más programnyelvből (Delphi) lett meghívva, és ott működött jól. Talán annyi tudtam még észrevenni, hogy ha elindítom a saját programomat, és leállítom, majd újraindítom, akkor jön elő, de az bizonytalan, hogy mennyi idő múlva és hányadik újraindításnál. Elvileg a Windows újraindítása után rögtön nem csinálja.

    meg kell nézni, hogy pontosan mit és hogyan csinál, hogyan volt használva a korábbi programból és hogyan a tiedből, ha ennyiből nem derül ki akkor utána nézel, hogyan lehet debug-olni, abból biztos kiderül, hogy mi okozza a problémát

    aztán vagy máshogy használod vagy át/újra kell írni

  • disy68
    aktív tag

    Van egy projektem, ami egy külső dll file-t használ egy feladat elvégzéséhez. Jna-t használok. Általában működik is, de néha teljesen váratlanul Microsoft Visual C++ Runtime Library: "Buffer overrun detected! A buffer overrun has been detected which has corrupted the program's internal state." hibát dob.
    Találkozott már valaki ilyen hibával, vagy van valami ötlete mi lehet a hiba? Mivel ez túlnyúlik a Java-n és inkább csak a Java-ban vagyok otthon, ezért nem tudom hogy kéne a hibát keresni.
    Java 8 , Windows 10 az oprendszer és elvileg 4.8.03752 a .NET verzió. Esetleg rossz .NET verzió lenne a probléma?

    Mi az a dll, amit használsz? A hiba azért van, mert a dll-ben lévő kód az általa lefoglalt memórián kívül akar írni a memóriába, amit akár más process éppen használ. Ezt figyeli a runtime és lelövi. Jobb esetben bugos a dll-ben lévő kód, rosszabb esetben valami kártevő lakik benne.

  • disy68
    aktív tag

    <R> Stream<R> map(Fucktion<? super T,? extends R> mapper)

    ilyen esetben nem sérül a clean code elmélete?
    Előző példánál maradva e -> e.getValue0()
    miért
    ? super T
    az első type pataméter és miért
    ? extends R
    a második?

    vagy kár ezen filózni, elég "bután", rutinból használni ezeket a fucktional interface-ket és lambdákat?

    "ilyen esetben nem sérül a clean code elmélete?"
    szerinted mi sérül?

    "miért (...)"
    Producer Extends Consumer Super
    illetve

  • disy68
    aktív tag

        protected static KimenoSzamlaEntity getInvoiceEntity(AbstractInvoiceEntity originalEntity) {
            KimenoSzamlaEntity kimeno= new KimenoSzamlaEntity();
            BeanUtils.copyProperties(originalEntity,kimeno,"parentInvoice", "identifier");
            List<KimenoTetelekItemsEntity> items=new ArrayList<>();
            for (AbstractInvoiceItemsEntity item: originalEntity.callTetelekLista()) {
                KimenoTetelekItemsEntity itm= new KimenoTetelekItemsEntity();
                BeanUtils.copyProperties(item,itm, "parentInvoice", "identifier");
                itm.setParentInvoice(kimeno);
                items.add(itm);
            }
            kimeno.setTetelekLista(items);
            return kimeno;
        }

    Erre valami tipp, hogy lehetne generikusabbá tenni? Pl hogy a "kimeno" típusa mondjuk bemeneti paramétertől függjön (de ne kelljen végig instanceofolgatni az összes lehetséges bemeneti osztályt), és amúgy extends AbstractInvoiceEntity.

    protected static <T extends AbstractInvoiceEntity> T getInvoiceEntity(AbstractInvoiceEntity originalEntity, Class<T extends AbstractInvoiceEntity> newClass) {
    T newInvoice = newClass.newInstance();
    (...)
    return newInvoice;
    }
    valami ilyesmi vagy átadsz egy factory-t, ami létrehozza a kívánt objektumot

  • disy68
    aktív tag

    nem is akarok használni, de a példákban más megoldás nincs, lásd ott a fetch és mégse.
    Az elméleletet tudom, meg azt is, hogy az jpa-nál ritkán stimmel a gyakorlattal, ahogy itt se.

    A gyors megoldás az lett, hogy a service-ben nyomok egy gettert a sub entitykre semmibe vezetett eredménnyel, és utána már jó lesz a servicen kívül is.

    De inkább azt választottam, hogy a @Fetch(value = FetchMode.SUBSELECT)-et átírtam FetchMode.JOIN-ra. Hogy ez most bug, vagy feature, nem tudom, mindenesetre logikát nem látok benne... úgyhogy a bug a valószínűbb.
    Azt nem tudom mit csinál, nem is érdekel, ennek a rakás ürülék alkalmazásnak ez a legkisebb gondja :D

    ha a fetch mód subselect, akkor n db kapcsolódó entity-vel n+1 query-t generál a hibernate, ez működik eager és fetch betöltésnél is, viszont a join fetch mód esetében 1 db query-t generál a hibernate, amivel lekéri a kapcsolódó entity-ket is, így ez instant eager betöltést jelent fetch type-tól függetlenül

    én alapvetően a @NamedEntityGraph irányba mentem volna, ha nincs mód nagyobb refaktorra (bár ha ezt force-olja a projekt struktúra, akkor kb. mindegy, mert eager betöltés lesz a vége)

  • disy68
    aktív tag

    LazyInitializationException-t hogy lehet megoldani, EAGER-re állítás nélkül?
    @Transactional ugye szokás szerint nem működik, a fő entity lekérdezése ugyan abban a @Transactional metódusban van, mint a subselectes getter hívása. Igaz, hogy nem is service layeren van, mert ez ugyan az a rakás... még mindig.

    @OneToMany(mappedBy="parentInvoice", fetch= FetchType.LAZY, cascade= CascadeType.ALL, orphanRemoval=true )
    @Fetch(value = FetchMode.SUBSELECT)
    public List<ItemsEntity> getItemList() {
    return itemList;
    }
    Már volt ilyen gondom, máshol, csak már nem tudom hol, csak arra emlékszem, hogy ott sem volt jó egyik dolog sem az EAGER-t leszámítva, amit a google kidob erre a hibára :), de sikerült EAGER nélkül valahogy.

    "ott sem volt jó egyik dolog sem az EAGER-t leszámítva, amit a google kidob erre a hibára"

    aham, mint ez meg ez, amikben kifejezetten azt írják, hogy ne használj eager-t ilyen helyzetben (első 2 találat)

    Vlad Mihalcea blogját amúgy tudom ajánlani, ha hibernate és/vagy jpa a témakör.

  • disy68
    aktív tag

    Van egy java ee (jsp & servlet + mysql) projektem, amiben szeretném megvalósítani az alábbit:
    Az egyik jsp oldalon az egyik gomb megnyomására egy egyszerű animáció indul el:
    egy alakzat vízszintesen mozog "a" pontból "b" pontba.
    A mozgó alakzat sebességét a mysql adatbázis egy mezőjének értéke határozná meg. Tehát pl ha az adott mezőben 1 van, akkor az alakzat lassabban éri el a "b" pontot, ha 2, akkor gyorsabban.
    Általánosságban hogyan lenne érdemes hozzálátni a megvalósításhoz, miben gondolkodjak, pl, ami az animációt illeti? Javascript?
    És hogyan jut el az adatbázisból származó információ az animációt megvalósító kódig?
    (jdbc megy...)

    Attól függ az "alakzat" az micsoda és hogyan kerül oda. Ha megoldható, akkor CSS animációkkal/átmenettel oldd meg szerintem, amit egy class-al és css változóval (sebesség) irányítasz. A sebességet meg átadod mint globális js változó (generálod jsp-vel a lap betöltésekor). Vagy lekéred http-n keresztül egy végponton.

    Egy minta css transition-re.

  • disy68
    aktív tag

    Dinamikus weboldal készítéséhez, de mivel kezdő vagyok, az is egy kérdés persze, hogy egyáltalán érdemes-e tanulni a Java EE-t.
    Még nem láttam elég videót, nem olvastam elég cikket, hogy felmérjem, mi a legnaprakészebb tudás, amit érdemes megszerezni, ha az ember a Java nyelvet kezdte el tanulni, majd weboldalakat szeretne ksézíteni.

    Nem feltétlen ez lenne az első, amit javasolnék bárkinek is. Vannak hasznos részei, amikre alapulnak implementációk, amikkel szinte biztos találkozik az ember, ha ezekre a funkcionalitásokra lesz szükségük (xml/json feldolgozás, persistence, servlet). Annyit mindenképpen érdemes tudni, hogy mi ez és milyen ajánlásai vannak mely témakörökben.

    Ennek ellenére én inkább javasolnám a Spring keretrendszert kezdésnek, ami egy elég naprakész és sokak által használt megoldás, akár csak web backend (és frontend), middleware vagy akár service és cli alkalmazásokhoz. Rengeteg elérhető anyaggal és nagy közösséggel mögötte.

    Előtte - ha még nem foglalkoztál volna vele - a git használatát érdemes elsajátítani és alkalmazni. Valamint a java ökoszisztémához valamilyen dependency manegement eszköz használatát (maven/gradle) se árt ismerni. Utóbbiakkal a Spring kapcsán fogsz találkozni mindenképpen.

  • disy68
    aktív tag

    docker build-el. Valami maven wrappert írt, hogy be kell rakni a projektbe, az benn is van.
    Igen rákerestem, a java írja, hogy nem jó a jar. Pedig a hivatkozott jar még eredetiben simán indul, ugyan az alatt a 14-es jdk alatt.
    Megnéztem az argumentumot, de nem találja, mivel a docker linux fájlrendszerében keresi, nem az igaziban.

    "Valami maven wrappert írt, hogy be kell rakni a projektbe, az benn is van."

    docker-maven-plugin? hogy néz ki hozzá a konfig a pom.xml-ben?

    "Igen rákerestem, a java írja, hogy nem jó a jar."

    ha rákeresel a hibaüzenetre és hozzácsapod, hogy docker, akkor láthatod, hogy másoknak is volt ilyen problémájuk, a legtöbb esetben az argumentum átadással volt a gond, ami miatt a JAR_FILE változó értéke üres, így a copy nem fut le jól

    "Megnéztem az argumentumot, de nem találja, mivel a docker linux fájlrendszerében keresi, nem az igaziban."

    wut?

  • disy68
    aktív tag

    köszi, ez király dolog! Éreztem, hogy van valami ilyesmi :)

    dockeresíteném (próbából) az egyik sima springboot teszt cuccomat, amiben embedded H2 van.
    De ahogy egy régebbi node-os probálkozásomnál is, itt is egy soros semmit mondó hibaüzenettel száll el a run, de a build az rendben van mindig.
    Error: Invalid or corrupt jarfile /app.jar

    Ez a dockerfile
    FROM openjdk:14-jdk-alpine
    VOLUME /tmp
    ARG JAR_FILE
    ADD ${JAR_FILE} /target/wishlist-1.0-SNAPSHOT.jar 
    COPY ${JAR_FILE} app.jar
    ENTRYPOINT ["java","-jar","/app.jar"]

    Le van buildelve a jar, ott van a helyén a targetban.
    Még is. Amúgy ha arg-ot adnék meg azt, hol adjam meg? A formátumára vagyok kíváncsi.
    Amúgy egy vindózos gépen fut, de lásd a backslashek per jellé vannak alakítva.

    A docker image-et hogyan hozod létre? Használsz-e maven/gradle plugint? Rákerestél-e a hibaüzenetre? Nézted-e hogyan kell argumentumot használni a dokumentációban?

  • disy68
    aktív tag

    py illetve js parser azért kevésbé problémás szerintem

    html parser az szerintem az a kategória, aminél teljesen mindegy miben írja az ember, mert a legtöbb erre is alkalmas nyelvhez/infrastruktúrához van kész lib, java alatt is pont ugyanolyan egyszerű a html parse, mint akármilyen másik nyelven, ha meg selenium kell, akkor pláne mindegy

    szerintem a döntés itt csak azon múlik, hogy mit ismer az ember, miben fejleszt szivesebben/gyorsabban/etc

  • disy68
    aktív tag

    /*
    *
    * /* megjegyzes */
    *
    */

    Ez miért helytelen? :)

    /*
    *
    * /* megjegyzes */ <- itt le lesz zárva a komment blokk
    * <- nincs nyitó
    */ <- random záró

  • disy68
    aktív tag

    frissítettem linuxos kis szerveremen java-t 11-re. Az eddig java 8-on futó kis servlet most:
    Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet

    Nincs máven, és nem is szeretnék belemódosítani a jar-ba.
    Van rá megoldás azon kívül, hogy visszateszem a 8-at?

    "Runtime" is meg lehet adni további dependenciákat pl. a CLASSPATH környezeti változóban vagy -classpath kapcsolóval: link
    pl: java -classpath /path-to/servlet.jar MyApplication

  • disy68
    aktív tag

    Köszi de számomra ebből nem derül ki, hogy az xmx -et le is foglalja, vagy csak annál többet nem enged neki használni?

    For example, starting a JVM like below will start it with 256 MB of memory and will allow the process to use up to 2048 MB of memory: java -Xms256m -Xmx2048m

    Mit jelent, hogy 256 MB-vel fog indulni?

    Mi történik, ha elhagyom a fenti kapcsolókat és simán "java - jar core.jar"-al indítok? (elhagyhatóak egyáltalán?) :R

    A JVM lefoglal magának bizonyos méretű memóriaterületet, amit ő fog kezelni különböző dolgokra (lásd Memory Management). Xmx a maximum, amit lefoglalhat, de ha nincs rá szükség nem fogja.

    A dokumentációban olvashatsz még részletesen a memória kezelés finomhangolásáról.

    Ahogy a Xms és Xmx kapcsolókról is.
    Pl. Xms:
    "Default Values
    If you do not set this, the minimum Java heap size defaults to (depending on which mode you are running):
    -server mode: 25% of the amount of free physical memory in the system, up to 64 MB and at least 8 MB
    -client mode: 25% of the amount of free physical memory in the system, up to 16 MB and at least 8 MB If the nursery size is set with
    -Xns, the default initial heap size will be scaled up to at least twice the nursery size. "

  • disy68
    aktív tag

    Inkább egy listselectionlistenert kellene szerintem.

    Nem ismerem mélyen a swing-et egy gyors keresés alapján ezt találtam, de ha van rá jobb alternatíva akkor nyilván azt érdemes inkább használni. :K

  • disy68
    aktív tag

    Sziasztok!

    Készítettem 4db JList-et a programomban. Azt szeretném elérni valahogyan, hogy egyszerre csak egy kijelölt elem lehessen. Tehát ha a JList 1-ben kijelölök egy elemet akkor a másik 3-ban ne legyen kijelölt elem. Esetleg tudjátok, hogy ezt hogyan tudnám megoldani?

    köszöni szépen :R

    Kézzel. Hozzáadsz a listákhoz egy mouselistenert, amivel nézed, hogy mikor van klikk és amikor kijelöltél valamit, a többi listában de-selectálsz minden elemet.

  • disy68
    aktív tag

    Csak zárójelben. Én egy junior tréning programmal kezdtem egy multinál annó, ahol volt egy gyakorló feladat, ahol kvázi excel jelleggel kellett tudni kezelni cellákat (a cellának lehetett konkrét értéke vagy más cellákra is referáló függvénye). Ekkor futottam bele, hogy java 8-as verzióval bekerült a Nashhorn nevezetű Javascript Engine a JRE-be, amivel elég egyszerűen lehetett kiértékelni az egyszerűbb műveleteket. A js engine JVM byte-kódot generál. Nem használnám production-ben, pláne, hogy a 11-es verzióval deprecated, de érdekes volt, hogy van ilyen is. :)

  • disy68
    aktív tag

    pl mvc.perform(MockMvcRequestBuilders.post("/user").header(HttpHeaders.AUTHORIZATION, "Bearer "+testToken).contentType(MediaType.APPLICATION_JSON_VALUE).content(json)).andReturn();
    így. Ha kihagyom az autentikációs tokent, akkor is megy. Úgy megy, hogy semmilyen jogosultsági beállítást nem állítottam a tesztben. Ugyan ennyivel elindítva postmanből szépen unauthorized, ahogy kell.

    A másik, pedig hogy a beadott DML sql-ben lévő insertek lefutnak még egyszer (constraintviolationnal, mert már ugye betöltötte a DB-be), amikor egy ahhoz köze nincs, rest hívást csinálok először. Utána újra próbálva ugyan az a rest hívás lemegy.
    Így an a DML beadva az application.properties-ben: @Transactional
     @PostMapping(path = "/user")
     @ResponseBody ResponseEntity<InfoResponse> createUser(@RequestBody UserDTO userDTO) {
      User newUser = new User(userDTO);
      return InfoResponse.createResponseEntity(ResponseTypes.SUCCESS, "new user id: "+userRepo.save(newUser).getId(),HttpStatus.CREATED);
     }

    Nem írsz arról, hogy a MockMvc-t hogyan használod (a test class hogyan van annotálva). Ha @SpringBootTest annotációval használod, akkor explicit be kell konfigurálni a security-t.
    részlet a korábbi baeldung cikkből:

    @Autowired
    private WebApplicationContext context;

    private MockMvc mvc;

    @Before
    public void setup() {
    mvc = MockMvcBuilders
    .webAppContextSetup(context)
    .apply(springSecurity())
    .build();
    }(...)

    De én továbbra is TestRestTemplate használatát javaslom, ehhez itt egy kis egyszerű minta.

    A DB-s problémád pedig kicsit zavaros, az az "application.properties" részlet meg egy controller post methodja..

    @(#11044) mobal
    nem unit csak jUnit :)

  • disy68
    aktív tag

    pontosan azt, amit írtam. De lefut az alkalmazás, elindul ugyan úgy mintha simán futtatnám, lefuttatja a teszteket, majd leállítja.

    És most az újabb dolog amit szeretnék el,érni, az az, hogy ne csaljon a springboot junit test, és ne god mode-ban hívja meg a rest szolgáltatásokat, hanem autentikálni kelljen, csak úgy mintha postmanból hívnám.

    Ok, azt hiszem értem mi a félreértés. Ezt írtad: "maradjon futva a junit tesztek lefutása után". Ebből én unit testre asszociáltam és erről is beszéltem.

    Erősen kétlem, hogy támogatná bármilyen test framework alapból, hogy utána fusson tovább az alkalmazás, ami a tesztek futtatása miatt indult.

    A springboot junit test az meg nem csal, hanem azt csinálja, amit "mondasz" neki. Hogyan hívod most a tesztekben a "rest szolgáltatásokat"? Itt egy baeldung a témakörben. Meg egy TestRestTemplate részletesebb.

  • disy68
    aktív tag

    Hogy lehet elérni, hogy a springbootos app maradjon futva a junit tesztek lefutása után, ne lője le az egészet?
    Sőt az lenne a jó, hogy ha választhatnék, hogy indítsa el az egészet, vagy maradjon mindig futva az app, és akárhányszor újrafuttathatom a junit tesztet

    A unit test-eknek van valami futtató keretrendszere, ami segítségével futtatod a teszt osztályok metódusait, amiben használod az alkalmazásod elemeit. Ilyenkor nem fut a teljes alkalmazás, szóval nincs sok értelme így a kérdésnek. Mi a tényleges probléma, mit szeretnél elérni?

  • disy68
    aktív tag

    JPA-ban van arra automata lehetőség, hogy a fő entity, és a hozzá tartozó al-entity-ket egyszerre rakja a DB-be? Tehát van egy fő entity, amihez kapcsolódhat sok al-entity.
    Mert fő entity save-nél csak a fő entity elemeit menti le, a benne lévő al-entityket nem.
    Tényleg csak selectkor képes összeszedni mindent, máskor szájba kell rágni az egyértelműt?

    Cascade működést meg kell adnod. Itt van hozzá egy baeldung.

  • disy68
    aktív tag

    Sziasztok!
    Spring Boot-ot használok, szeretnék két adatbázist is használni. Találtam rá példát:
    [baeldung.com] [medium.com] .
    Az a problémám, hogy a Spring Boot mindenképpen kéri, hogy állítsam be a dialect-t. (pl.: spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect).
    A medium.com-os példában szerepel, hogy a spring.jpa.database=default -el be lehet állítani a dialect-t, de nálam ezzel is "access to dialectresolutioninfo cannot be null when 'hibernate.dialect' not set" hiba jön elő. Viszont a fentebb leírt módon csak az egyik adatbázis dialect-jét tudom beállítani. Valakinek van valami ötlete?

    Alapból nem kéne külön beállítani, ha tud kapcsolódni, akkor meg tudja határozni. Én első körben arra tippelnék, hogy a kapcsolat se épül fel vagy nincs a db létrehozva, akkor is jöhet ez a hiba. A két db amúgy különböző? Van-e mintakód? Próbáltad-e esetleg valami in-memory db-vel (pl. h2/hsql)?

    (#10975) venic
    Melyik porton futna? Ha 80-as, akkor a skype esetleg lehet a ludas. De valami hibaüzenet nem ártana ;)

  • disy68
    aktív tag

    Srácok, SQLite...
    Hogy tudom a ResultSet-et foreach-elni? Jelenleg van rá egy while ciklusom, de C#-ból megszokásból mindenre foreach-et használok, szeretném itt is.

    Ugyanez C#-ban sematikusan:
    foreach (datarow in datatable)

    Köszi! :R

    A ResultSet java alatt nem Iterable ezért önmaga nem támogatja a foreach-et. Írhatsz rá saját Iterator-t vagy használhatod az apache dbutils ResultSetIterator-át.

    Viszont csupán megszokás miatt abszolút fölösleges.

  • disy68
    aktív tag

    Köszi,végül mindhárom állománynak csináltam egy-egy classt,és külön listába olvasom be.de dob egy hibát,a dátummal nem stimmel vmi... :F gondolom,hogy a split a probléma,mert van 4 adat egy sorban pontosvesszővel elválasztva majd a dátum következik,de abban pontokkal van tagolva az év hónap nap.....tudtok segíteni mi a baj?köszi,ide teszem az erre vonatkozó kódrészletet,és hibaüzenetet.

    public class Kutyak2 {

    private int fajtaazon;
    private int nevazon;
    private int vizsgalatazon;
    private int eletkor;
    private LocalDate datum;

    static final DateTimeFormatter formazo=DateTimeFormatter.ofPattern("yyyy.MM.dd");

    public Kutyak2(String sor3) {

    String[] tomb3=sor3.split(";");

    this.vizsgalatazon=Integer.parseInt(tomb3[0]);
    this.fajtaazon=Integer.parseInt(tomb3[0]);
    this.nevazon=Integer.parseInt(tomb3[1]);
    this.eletkor=Integer.parseInt(tomb3[2]);
    this.datum=LocalDate.parse(tomb3[3],formazo);

    Hibaüzenet:

    Exception in thread "main" java.time.format.DateTimeParseException: Text '14' could not be parsed at index 0
    at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2049)
    at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1951)
    at java.base/java.time.LocalDate.parse(LocalDate.java:428)
    at kutyafajtak/kutyafajtak.Kutyak2.<init>(Kutyak2.java:25)
    at kutyafajtak/kutyafajtak.Kutyakapp.main(Kutyakapp.java:31)

    Exception in thread "main" java.time.format.DateTimeParseException: Text '14' could not be parsed at index 0
    Azt mondja a '14'-et nem tudja értelmezni, mint dátum.

    Biztos jó oszlopot nézel?
    Biztos jók az adatok?

  • disy68
    aktív tag

    Sziasztok! Van egy hf-om,abban kérem a segítségeteket.Be kellene olvasni adatokat,de 3 különböző .csv állományból.egy állományból világos,de a 3-at hogyan kell kezelni?Valaki tudna iránymutatást?köszi!

    Gondolom ezt úgy kell elképzelni, mint egy relációs adatbázis 3 tábláját. Vannak rekordok valami azonosító alapján kapcsolva egymáshoz.

    Csinálsz a mezők alapján osztályokat. A kapcsolatok gondolom szülő gyerek (egy szülő több gyerek), ilyen esetben a szülő osztályban lesz egy kollekció, ami gyerekeket tartalmaz.

    Beolvasod őket a fájlokból, majd az azonosítók alapján a gyerekeket belerakod a szülőkbe.

  • disy68
    aktív tag

    Sziasztok!
    Valaki meg tudná magyarázni, hogy miért csak 3 String objektum jött létre?
    Itt a válasz, csak nem értem, hogy miért.. :F
    [link]
    Köszi!

    Írnak többmindent is, de ez a válasz, ahol a generált kódot megnézte a válaszoló.

    A String osztály java alatt immutable, azaz értékadás után az objektum értéke nem változtatható. E miatt a String összefűzés String concat = "first" + " " + "last";
    4 String objektum létrejöttét jelentené.

    Erre rakták bele java 8 óta a fordítóba, hogy ahol ilyen található, azt optimalizálja. A String összefűzéseket helyettesíti StringBuilder-rel, ezért nem fog létrejönni annyi String objektum.

    Vannak még egyéb String-ekkel kapcsolatos optimalizációk, amiket a fordító/futtató környezet csinál/alkalmaz, pl. a válaszokban említett internal pool, ahol kvázi cache-elve vannak String objektum példányok, java 8-as updattel jött a G1 GC-be, hogy tud deduplikálni String-eket. Java 9-ben pedig jött egy olyan, hogy azokat a szövegeket, amiket lehet, ISO-8859-1/Latin-1 kódolással tárolja a JVM UTF-16 helyett (1 vs 2 byte/karakter).

    >javap -c Test Compiled from "Test.java" public java.lang.String makinStrings(); Code: 0: ldc #5; //String Fred 2: astore_1 3: new #6; //class java/lang/StringBuilder 6: dup 7: invokespecial #7; //Method java/lang/StringBuilder."<init>":()V 10: aload_1 11: invokevirtual #8; //Method java/lang/StringBuilder.append: (Ljava/lang/String;)Ljava/lang/StringBuilder; 14: ldc #9; //String 47 16: invokevirtual #8; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; 19: invokevirtual #10; //Method java/lang/StringBuilder.toString:()Ljava/lang/String; 22: astore_1 23: aload_1 24: iconst_2 25: iconst_5 26: invokevirtual #11; //Method java/lang/String.substring:(II)Ljava/lang/String; 29: astore_1 30: aload_1 31: invokevirtual #12; //Method java/lang/String.toUpperCase:()Ljava/lang/String; 34: astore_1 35: aload_1 36: invokevirtual #13; //Method java/lang/String.toString:()Ljava/lang/String; 39: areturn

  • disy68
    aktív tag

    Konkrétan az érdekelne, hogy melyik típusra érdemes beruházni.
    Néhány szempont:
    - könnyű hordozhatóság, mert sokat ingázok
    - Ne csak 1-2 évig legyen elegendő az erőforrás fejlesztésre
    - hosszú üzemidő (eddigi ismereteim alapján, ez nem probléma egyik modellnél sem)
    - Java fejlesztésre használnám leginkább, talán local db is futna rajta

    A hordozhatóság szempontjából a 13"-os modellek a nyerők, viszont itt meg is állt a tudományom. Kicsit utánaolvasva a témának, annyi lejött, hogy azért kisebb erőforrásal is hoznak olyan szintet, mint nagyobb erőforrású win-es gépek. Az viszont nem tudom, hogy Air vagy Pro, mennyi RAM-al, SSD-ből gondolom a 128-as is elég (külső HDD orvosolja a helyhiányt). Windows-os üzleti gépekkel van tapasztalatom eddig, ott a 16GB RAM szerintem elvárt, local db+ IDE + böngésző néhány tabbal + DB nézegető + egyéb apróságok.

    Szóval összefoglalva, szükséges a Pro vagy az Air is elegendő, kell a 16 GB RAM vagy 8-al is vígan el lehet lenni?

    Köszi a válaszokat! :R

    Én a részemről 13"-on megőrülnék, az szerintem nagyon kicsi. A többi kb. attól függ mit fejlesztesz, mekkora az alkalmazás és a kódbázis. Valamint lokál környezetben mennyi adattal szaladgál az alkalmazás.

    A kód az mindenképpen ssd-n férjen el, hogy az ide tudja a fájlokat gyorsan indexelni, én ajánlanám a 256GB-ost. Proci az a build-nél fontos, core i7 alá nem mennék. Egy giga monolith-nél persze sose lesz túl gyors a build, de nem mindegy, hogy 15 perc vagy 45 perc. A memória is attól függ kategória, 1-2 kis microservice-nek elég lehet 8 giga ide-vel egyebekkel, de én is inkább a 16-ot lőném be iránynak.

    Amúgy meg ha munkaeszköz, akkor vedd meg a legjobbat a büdzséd szerint. Meg ha nem akkor is :P

  • disy68
    aktív tag

    Konkretizálom a dolgot.
    Ez itt az új verzió aminek már private ctor van. A 6.2-es verzióban még nem volt private. Van egy saját ComponentUtils osztályunk amit vagy 5 éve írtak és ebből a fent linkelt osztályból került származtatásra. Mivel akkori verzióban még nem volt private a ctor így ebből nem volt gond... Most, hogy új verziót húztam be...szembesültem a változással... Tehát valamikor régen kiterjesztésre került ennek az osztálynak a funkcionalitása és azért kapott azonos nevet, hogy ez legyen használva mindenhol. Ugyanúgy static metódusok vannak benne... Viszont a fenti változás miatt ez a helyzet már nem tartható, de a korábbi funkcionalitásra is szükség lenne, meg a mostanira is. De ezt öröklődéssel már nem lehet biztosítani...

    Ami eddig öröklődött azt átdrótozzátok facade jelleggel.

  • disy68
    aktív tag

    Ezt a tiltósdi dolgot nem annyira vágom miért kell... Voltam már olyan projektben, ahol az 1.5-ös fícsöröket tiltották, mindenki menekült, semmi értelme nem volt. Lombokot szerintem alapvetően pár olyan dologra érdemes használni, ami fordításkor generál le bojlerplét kódot. Ezen az alapon semmilyen nem Java JVM nyelvet nem lenne szabad használni. Amúgy is kényszermegoldás volt, mert a JCP board impotens nyúlbéla volt hozzá, az Oracle meg pénzt akart belőle kifacsarni, nem fejleszteni.

    Az XML vs Java configgal kapcsolatban az a problémám, hogy a konfiguráció karbantartásához/módosításához kódolás kell, CI pipeline. Szerintem a legszebben megfogalmazott Java config is nehezebben átlátható, mint akár az XML. Egyik megoldás sem jó tisztán, nekem leginkább az XML+annotáció az, ami leginkább kezelhető.

    "Az XML vs Java configgal kapcsolatban az a problémám, hogy a konfiguráció karbantartásához/módosításához kódolás kell, CI pipeline."

    Ez a konfiguráció nem ugyanaz, mint az alkalmazáshoz tartozó akár környezetenként változó konfig, pl url-ek. Ha itt kell módosítani bármit - magyarul az alkalmazás context-je változik -, akkor újra kell buildelni az alkalmazást, függetlenül a konfiguráció típusától. Innentől ez nem üzemeltetési kérdés, hanem fejlesztés.

    Az átláthatóság szubjektív dolog, láttam már 30-40 xml-ből felépülő Spring konfigot, ami nekem minden volt csak nem átlátható, viszont volt kolléga, aki azt preferálta. Azt hittem ez csak az ő fétise, de akkor vannak még mások is ezen a vonalon :-)

    "Lombokot szerintem alapvetően pár olyan dologra érdemes használni, ami fordításkor generál le bojlerplét kódot. Ezen az alapon semmilyen nem Java JVM nyelvet nem lenne szabad használni."

    Semmi köze a kettőnek egymáshoz, ne keverd a dolgokat. A lombok által generált kódban nem bíznak sokan, valamint java update esetében okozhat/okozott gondot. Van pár issue-juk is. Ettől függetlenül, ahol lehet én is preferálom a használatát, de ettől még megértem, ha máshogy dönt valaki.

  • disy68
    aktív tag

    Gyors kérdés. Melyik build/dependency managert?

    Maven vagy Gradle?

    Előbbit már próbáltam, nagyon minimális ismereteim vannak róla, utóbbit még soha nem használtam.

    Szerintem érdemes ismerni mindkettőt, de a maven-t mindenképp. Kezdőként elég az egyik is. A Gradle rugalmasabb, a néhanapján felmerülő cache problémákat szopás kiszűrni. A maven kevésbé rugalmas - pluginekkel persze lehet bármit - de régi motoros, szerintem minden problémára van megoldás (plugin) hozzá. Gradle esetében találkoztam olyannal, ami nincs vagy csak részben volt meg a maven-es megoldáshoz képest.

  • disy68
    aktív tag

    Használtam már XML és Java configot is, de egy jól megtervezett struktúra és lombok használata mellett nekem: annotáció > XML > Java config. Utóbbi még üzemeltetési szempontból is aggályos

    A tervezési hibával kapcsolatban meg lehet, hogy igazad van, bár ezzel szerintem csak akkor lehet hatékonyan megküzdeni, ha zöldmezős cuccról van szó.

    (#10501) PeachMan én mindenképpen javasolnám. Nem árt ha mögé látsz, de nem attól leszel jó (junior) fejlesztő, hogy látod a biteket suhanni. :)

    A lombok jó cucc én is szeretem, de magic bytekód generálás erősen ellenjavallott production környezetben. Pénzügyi szektorban még nem találkoztam olyan ügyféllel, akinél ne lett volna tiltólistán.

    "Utóbbi még üzemeltetési szempontból is aggályos"

    Ezt kifejtenéd?

  • disy68
    aktív tag

    Ezt a konstruktoros dolgot azért jól be lehet szippantani sok függőségnél, vagy körkörös függőségeknél.

    A körkörös függőség tervezési hibának hangzik. Több függőségnél pedig facade vagy egyéb wrapper megoldások is játszhatnak. Ezt is mondhatjuk workaround-nak, de én még mindig úgy vagyok vele, hogy inkább lássam a konstruktornál mi a függősége egy osztálynak, semmint annotációkat nézegetni. Én spring-nél is jobban preferálom az explicit java config-ot, mintsem a package scan-t meg annotációkat (saját kódnál, nem lib-eknél). Ha van egy konkrét config, ami alapján látom, mi lesz a context, mi-mi alapján épül fel, az nekem mindig szimpatikusabb volt.

  • disy68
    aktív tag

    Nagyon köszönöm az infokat.
    Olvasok a témában. Sokat kell pótolnom, helyretennem. :) De ez van, meglesz majd.

    A Spring Boot használata például akkor erősen javasolt, ugye?

    Igazság szerint azért akartam eredetileg csak tiszta JavaSE kódot, hogy az alapokkal tisztában legyek. Lássam azokat a feladatokat/megoldásokat amiket egy framework elfed.
    Esetemben nem maga a project elkészítése, hanem a Java gyakorlása a cél.

    A terv első lépésként egy fapados user/account résszel egy webes view-al megszerkesztett crud-ot tudó felület. Valami termék készlet manager. Mondjuk a fentebb említett "car" készlet kezelése.
    Csak amolyan tanulásként.

    Amiért javaslom egy valamilyen dependency injection framework használatát - szigorúan constructor injection-nel - mert ad egy szemléletet, amit jó megszokni. Ez volna az inversion of control.

  • disy68
    aktív tag

    Megkeveredtem a DAO és DTO fogalmak között.

    Tehát valami ilyesmi lenne?
    View <- (Model) -> Service <- (DTO) -> Persistence

    Azaz arra irányulna az újabb kérdésem, hogy a DTO, amit mondjuk megkapok adatbázisból és van benne ID, nem juthat el a view rétegbe igaz? Hanem a kontroller mintegy mapper-ként új objektumot (POJO) hoz létre, de szintén a DTO-ból kapott ID-t használva és azt adja a View-nak?

    DTO: data transfer object
    ez lehet bármilyen két komponens közötti kommunikációban szereplő

    DAO: data access object
    ez egy olyan objektum, amin keresztül adatokat érünk el/tudunk manipulálni, általában adatbázissal a túloldalon - az objektum elrejti a DB részleteket

    repository:
    a DAO-hoz hasonló pattern, inkább domain centrikusabb, az adat objektumokat entity-nek hívjuk ebben az esetben

    A rétegek szervezése/szeparálása fontos dolog, nehéz elsőre ráérezni, fog kelleni hozzá némi tapasztalat. Annyit szerintem mindenképp jegyezz meg most, hogy nincs semmi kőbe vésve. Vannak ajánlások, de mindig az adott problémához keressük a megoldást, nem pedig valami "best practice-t" erőszakolunk rá mindenre.

    Amennyiben egy egyszerű crud a cél, akkor nem is feltétlen szükséges külön entity/dto/pojo-kat készíteni a különböző rétegekhez, mert fölöslegesen kéne transzformálgatni mindent többször is.
    Ha a crud-nál tovább lépünk vagy más jellegű a probléma, akkor hasznos lehet különválasztani a rétegeket jobban.

    Amúgy olvass még kicsit utána funkcionális programozásnak, immutability-nek - java 8 óta java-ban is van hozzá támogatás - szerintem árnyalja majd a képet.

    A Spring JavaEE vs sima java témakörben pedig én javaslom a keretrendszer használatát, ha máshoz nem is, de a dependency injection miatt mindenképpen.

  • disy68
    aktív tag

    95 ezerért nem igazán. Webinár a cucc, 10 modul, akkor inkább egy online tanfolyam udemy-ről vagy hasonlóról sokkal olcsóbban akár bővebb tananyaggal.

  • disy68
    aktív tag

    Szia!

    Igen, azon a linken valóban jól összeszedték a Java licensz tudnivalókat.

    De nálunk a cégben (multi) továbbra se tudtam megerősítést kapni rá, hogy pontosan melyik Java verzió az utolsó ingyenes , az üzleti használatra.

    8-as Javaból a Java 8 update 201/202 az utolsó ingyenes, mert ez még 2019 januárban (jan 15) jelent meg?

    Az használható marad, igen.

    A 11-es esetében viszont vigyázni kell, mert az oracle féle jdk-nak más lett a licenszfeltétele, azt már csak fizetés után lehetne prod-on használni (vagy valamelyik alternatív jdk-t kell használni pl adoptopenjdk).

  • disy68
    aktív tag

    Üdv!
    Persze, hogy megvolt a Download gomb.
    Mivel nincsenek visa meg társai kártyáim, így nem tudok sehogy bejelentkezni.
    Ezért kérem a segítségeteket.

    Egyrészt ez nem legál, másrészt semmi köze a java-hoz.

    @(#10258) szbalogh
    Nekem úgy tűnik, hogy a UI kirajzolása közben történik valami probléma, ami a kód ismerete nélkül elég sokminden lehet. Nem tudom melyik java verzióval fut jelenleg az alkalmazás, de szerintem próbáljátok meg régebbi java verzióval futtatni.

  • disy68
    aktív tag

    Sziasztok!

    Most nem teljesen értem az új Oracle Java licenszelést, 2019-től.
    Az világos, hogy az 1.8-as Java üzleti használatra 2019-tól fizetőssé válik.
    De melyik Java?
    A JRE is fizetős lesz, vagy csak a JDK?

    JRE/JDK nincs különválasztva. Üzleti használatra lesz fizetős az Oracle JDK-ja - fejlesztéshez nem fog kelleni licensz. Itt amúgy nagyon jól össze van foglalva, hogy melyik verzió meddig-merre és pár alternatíva az Oracle JDK használata helyett.

  • disy68
    aktív tag

    Sziasztok.

    SpringBoot alkalmazásból szeretnék elérni egy Mysql adatbázist, de ezt a hibaüzenetet kapom:

    java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'.

    A program properties fájlja:

    datasource:
    url: jdbc:mysql://localhost:3307/blogDB?useSSL=false
    username: username
    password: password
    tomcat:
    connection-properties: useUnicode=true;characterEncoding=utf-8
    max-wait: 20000
    max-active: 50
    initialization-mode: always

    jpa:
    hibernate:
    ddl-auto: create
    show-sql: true
    properties:
    hibernate.dialect: org.hibernate.dialect.MySQL5Dialect

    Ha a useSSL-t true-ra állítom akkor pedig ezzel a hibával száll el:

    com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

    The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

    Őszintén szólva, nem igazán értem mi lehet a probléma.
    Az első hibára az interneten javasolt megoldás nekem nem működött, ugyan úgy dobja a hibát.
    (Javasolt megoldás : )

    ALTER USER 'student'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pass123';

    Az adatbázis localhost-on megy, dockerbe, a default 3306-os portot más adatbázis miatt át mappeltem 3307-re. MySQL Workbench-el elérem az adatbázist, csak programból nem.

    Tipp ? :W

    Szia, nézd meg mi a verziója a mysql-connectornak, amit a spring akar használni, valószínűleg egy régebbi lesz, ami nem támogatja az újabb jelszó kezelési eljárást. Nem tudom mit használsz, maven-t/gradle-t, de adj hozzá dependency-ként egy frissebb verziót pl. ezt.

  • disy68
    aktív tag

    Van persze sok olyan ember, akinek ettől lesz adrenalin. De te is általánosítasz kissé. Sokan a "nagyobb tapasztalatukkal" azért nem hajlandóak az újabb technológia irányába mozdulni, mert lusták, rugalmatlanok, nem fektetnek R&D-be, vagy kivárnak, amíg mindenki elmegy mellettük :)

    Nyilván sokéves rendszereket nem ír újra jellemzően senki, bár több olyan ügyfelünk is van, akik már 10 éves rendszereknél nem a polírozgatáson gondolkoznak. A bedőlés emberi tényező, de nem is ez a lényeg. Nagyon elment az igény az új technológiák irányába zöldmezősök esetében, és senkit nem fog érdekelni, hogy mi a véleményed az igényekről :) Nyilván ez igaz visszafelé is, ha szerinted pl. a mongo jobb lenne content managementre, elastic meg monitoringra, de az ügyfél baromira liferay/sql párti, de szerencsére ez kopik kifelé.

    (#10042) mobal semmi, nekem is tök jól fut rajta a shadow warrior :P

    (#10046) mobal lényegében virtuális gépeket használsz konténerek helyett, ami eltérően viselkedhet a production környezethez képest. Mert az feltételezem, hogy nem windowsos docker a live.
    Akkor inkább már VBox-ban ubuntu/debian és azon docker.

    "Mert az feltételezem, hogy nem windowsos docker a live.
    Akkor inkább már VBox-ban ubuntu/debian és azon docker."

    Lehet én értem félre, amit írsz, de Windows-ra nincs natív docker. A Docker Toolbox és a Docker for Windows - bár ez próbál natívnak tűnni - is egy virtuális linuxon fut, szóval sok előnye nincs használni egy dedikált linux vm-et, hacsak az embernek nincs szüksége valami linux specifikus eszközre. A local környezet meg soha nem lesz olyan, mint a production, ehhez úgyis illik egy teszt környezet, ami minél jobban közelít a production-höz.

    De persze a fejlesztő dolga mit használ.

  • disy68
    aktív tag

    Sajnos már nem volt idő szerkeszteni az előző hsz-t...
    Arra rájöttem, hogy a 0x kezdés nélkül képes konvertálni, de egy másik hex alapú (068E) számot már nem.
    Aztán néztem, és az eszközk ID-jai elé a függvény generátora betolhat töltő nullákat (ezért az első nulla sem kell, elég 3 karakter, csak 4 digitet akar megjeleníteni (nem tudom mért)).

    Ha simán a 68E-t konvertálom, akkor megint jó.
    Már csak azt nem értem, hogy hogy fér el egy 16 bit-es short-ban (min -32,768 max 32,767 (inclusive)) a 390-es érték.

    System.out.println(info.getProductId());
    Mert erre a console a 390-et adja. (ez már más érték, mint az előbb hozott string/short dolog)

    A println függvény játszik valamit a kiírási értékkel?

    .45! Igen az elgépelés, a valódi kódban jól vannak elnevezve! :)

    Java alatt az integer/short/akármi az egy szám reprezentáció számrendszertől függetlenül. Az alapértelmezett számrendszer a toString-nél a 10-es.
    Integer.toString(int i, int radix)

    int binary = 0b0010;
    int hexa = 0x0ef2;

    int sum = binary + hexa;

    System.out.println(sum);
    System.out.println(Integer.toString(sum, 2));
    System.out.println(Integer.toString(sum, 8));
    System.out.println(Integer.toString(sum, 16));

    szerk: Amúgy a java elnevezési konvenciókról olvass még kicsit..

  • disy68
    aktív tag

    Sziasztok!
    Mi a véleményetek erről. A cél a Vaadin Springboot JPA segítségével egy kis egyszerű gyakorlás. A jelszó tárolás mennyire megfelelő? Hogy lenne célszerű session kezelést is megvalósítani?
    Minden őszinte kritkát várok, még kezdő vagyok.

    Én nem használnék ma már sha-1-et sima sóval (pláne nem egy statikus értékkel). Szerintem használj minimum bcrypt-et. Itt olvashatsz egy OWASP ajánlást jelszó hash tárolásról/kezelésről. Bcrypt minta. Amúgy a Spring Security is tartalmaz bcrypt-hez util osztályt.

    Session kezelést is rábíznám a Springre, biztos tudnak a Vaadin-nal együttműködni, de velük nincs konkrtét tapasztalatom.

  • disy68
    aktív tag

    Hirtelen ilyen hibaüzenetbe futottam at STS-el:
    Plug-in org.eclipse.jdt.ui was unable to load class org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.
    Plug-in org.eclipse.jdt.ui was unable to load class org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart.
    Próbáltam a saját könyvtárára teljesen jogosultágot adni. de az nem segítetett.
    Valami ötlete van valakinek?

    Esetleg nem Java 9 van neki beállítva?

  • disy68
    aktív tag

    Tudna valaki segíteni, hogy kell Netbeans alatt a 9-es JAVA platformot beállítani. "Rámutatok" a JDK folderre, de így a projects -> properties -> libraries-ben hiába választom ki a beállított 9-es platformot nem találja a java.lang csomagot. Kicsit fura, hogy separáltam van a JDK és a JRE.

    Rendes támogatás majd a Netbeans 9-es verziójában lesz. Az early access verziókhoz itt egy leírás. Amúgy a Netbeans használja a jre-t, a fejlesztéshez kell a jdk. Nem furcsa dolog, a Netbeans futásához kell egy bizonyos verziójú jre, míg a cél platform java verziója ettől lehet eltérő.

  • disy68
    aktív tag

    Sziasztok!

    Végleg elengedi a Java EE kezét az Oracle

    Ez mit jelent pontosan? Mármint mit lehetett Java EE-ben fejleszteni? Tehát, hogy megértsem, hogy mik az a porgramok, JavaEE be kifejlesztett szoftverek, amik ezek után rosszabb minőségben készülhetnek, ha nem fogják rendesen tovább fejleszteni?

    köszönöm

    A JavaEE egy specifikáció és API gyűjtemény, ami a Java Community Process alkalmazásával fejlődik. Ezekhez az API-khoz készülnek implementációk a specifikációk alapján. Erről egy kis összefoglaló.

    A JavaEE technológiákra rengeteg alkalmazás épül és nagyon sok az érdekelt szereplő. A bejelentés után sok a felmerülő kérdés, így érdemes megvárni ki veszi át az Oracle szerepét, valamint lesznek-e változások a fejlesztési/elbírálási folyamatokban. Olvasd el még ezt a cikket a bejelentésről.

  • disy68
    aktív tag

    Egyszer már kérdezted ezt. "Hagyományos értelemben" vett többszörös öröklődés nincs, ha pl. a C++-szal összevetésben vizsgáljuk a kérdést. Ha egy tesztben látod ezt a kérdést, akkor a tesztíró fejével kellene gondolkodni, mert nem biztos, hogy a hosszú válaszra kíváncsi. DE a nincstől bonyolultabb a téma.
    Az interface, ahogy emvy anno rámutatott, gyakorlatilag egy abstract class csak publikus metódusok body nélkül (+final static mezők és static metódusok implementációval). Többszörös öröklődés van Javában a saját terminológiája szerint, viszont megkülönbözteti az állapot (ilyen nincs Javában, az interface esetleges statikus mezőit nem tekinti annak, hiszen osztály szintűek), implementáció (default interface Java 8-tól, +esetleg static interface method, szintén Java 8-tól) és típus (interface) szerinti többszörös öröklődést.

    És java 9-től már private metódusok is lehetnek interface-ekben a default implementáció mellett.

  • disy68
    aktív tag

    Sziasztok!

    Hibernates kérdés következik... :D Egy findAll query lekéri az entitás összes propertyét, annak ellenére, hogy lazy fetch van beállítva. Íme a Query:
    List<T> entityList = Collections.emptyList();
    try {
    startCustomOperation();
    org.hibernate.query.Query query = session.createQuery("SELECT e FROM "+clazz.getName()+" AS e");
    entityList = query.getResultList();
    tx.commit();
    } catch (HibernateException ex) {
    handleException(ex);
    } finally {
    session.close();
    }
    return entityList;
    }

    A sima "FROM "+clazz.getName()-mel is lekérdezi az összeset. Mi lehet a hiba? :)

    Az entity-d hogy néz ki? Miből látszik a probléma, hogyan vizsgálod, hogy betölti a nem kívánt kapcsolatokat is?

  • disy68
    aktív tag

    Jó, hogy leírtad, mert ezt nem tudtam. köszi

    (#9430) disy68:
    SOLID, GRASP és pár további egyszerűbb dolog; DRY, KISS, YAGNI
    Ezeket nem ismerem. Google-val utána keresek, de ha van időtök csak nagyon röviden írhattok róluk. :)

    melyik milyen contract-nak tesz eleget
    Ez alatt arra gondolsz, hogy elméletben tanuljam meg először, hogy melyik mit tud, ugye?

    Kollekciókkal kapcsolatban első körben ismerni érdemes a főbb inteface-eket
    Melyik kollekció az Interface? Interfacek, amik hirtelen eszembe jutnak: Runnable, Serializable, vagy a Kollekciók is mind azok? Mint a List, Map, stb..?

    Kollekciókhoz ezt nézd át, jól összefoglalja a Collections interface-ből származó interface-eket és azok implementációit.

    "Ez alatt arra gondolsz, hogy elméletben tanuljam meg először, hogy melyik mit tud, ugye?"
    Lényegében, igen :)

    Solid-ra találtam egy magyar összefoglalót érthető példákkal.

    GRASP (General responsibility assignment software patterns)

    Ezek meg beszédesek különösebb magyarázat nélkül is:
    Don't Repeat Yourself (ne legyen kódismétlés)
    Keep It Stupid Simple (legyen a kód olyan egyszerű, amennyire lehet)
    You Ain't Gonna Need It (ne implementálj semmi olyan funkciót/logikát, amire nincs azonnal szükséged, később sanszosan változni fog az irány/struktúra/akármi és úgy is át kell írni)

  • disy68
    aktív tag

    Szia!
    Úgy látom, hogy Te és floatr felhasználó már tapasztalt Java fejlesztők vagytok.
    A munkahelyen melyik adatszerkezeteket használjátok a leggyakrabban?
    Azokat akkor átnézném jobban, megtanulnám, mert a junior pozícióba a nyáron esedékes interjúimon biztosan elő fognak kerülni.

    ArrayList, LinkedList, HashMap -> ezek biztos gyakoriak. Ezeket már használtam többször. Mit lenne érdemes következőnek beiktatnom a gyakorlásaimba? köszönöm

    Mire lepötyögtem, már jött is válasz, de akkor más megfogalmazásban :) :
    Kollekciókkal kapcsolatban első körben ismerni érdemes a főbb inteface-eket és melyik milyen contract-nak tesz eleget (List, Set, Queue + Map). Ez után érdemes megnézni a tényleges implementációkat. A különböző implementációkat pedig akkor használjuk, amikor az adott megoldás igényli (pl. rendezett legyen mindig a kollekció, lehet-e benne ismétlődő elem, írunk vagy olvasunk belőle többet, elejéről/végéről vagy véletlen eléréssel veszünk ki elemeket, szálbiztosnak kell-e lennie). A nyelvi alapokon kívül még érdemes ráfeküdni az OOP-re. OOP alapelvek, SOLID, GRASP és pár további egyszerűbb dolog; DRY, KISS, YAGNI. Alapvető design pattern-ek (singleton, builder, facade, proxy, decorator, visitor, strategy).

  • disy68
    aktív tag

    Sziasztok!

    Segítséget kérnék szépen, mert Google nem a barátom most. :(

    Probléma: Olyan módszert, BIND-olást keresek, amivel folyamatosan figyelni tudom egy könyvtárban levő fájlokat és ha a felhasználó kitöröl fájlokat, akkor az alkalmazás is rögtön frissítse az általa már kilistázott fájlokat.

    Bővebb infók:
    JavaFX-ben GLUON pluginnal csinálok egy alkalmazást, amiben ki kell listázni egy könyvtárban levő fájlokat, mert azokat kell betölteni az alkalmazásba.
    FXCollections.observableArrayList(); listába töltöm be a fájlok neveit a könyvtárból. Majd ráklikkelés és betöltő funkció után betölti a tartalmukat is.
    Ez az observation list jó arra, hogy ha a benne levő fájlnevek változnak, akkor rögtön ő is frissíti a betöltött fájlok neveit a megjelenítő felületen, de ha a USER kitöröl egy fájlt pl. TotalCommanderben, miközben fut az alkalmazás, akkor a program még nem fogja tudni, hogy most le kell futtatnia a függvényt, ami az observation listába betölti a meglévő fájlneveket.

    köszönöm.

    WatchService API-t tudod erre használni.

  • disy68
    aktív tag

    A metódusok legyenek rövidek és legyen nekik minél beszédesebb nevük.

    Ez a legritkább esetben szokott sikerülni :D

    Előfordul persze, hogy megnő ez-az :D .

    Metódusok elnevezéséhez további segítségem nincs, de osztályokhoz, mindig jól jön az enterprisify.

  • disy68
    aktív tag

    Sziasztok!

    Kaptam egy teszt feladatot, TicTacToe. A Consultant interface-t kell implementálni, igazából 1 függvény van benne összesen, ami egy adott állás alapján javasol egy lépést, majd azt az értéket visszaadja. Azon gondolkodtam, hogy itt érdemes még létrehozni külön függvényeket (pl. checkForWin, checkForDraw, stb.), vagy elég a suggest függvényen belül implementálni az egész logikát? Ti mit várnátok el, hogy elegáns? Gáz, ha minden azon az egy függvényen belül van, jobban "OO-sítani" kéne?

    Az van a leírásban, hogy a meglévő kódon már ne változtassak, de ha a YourConsultant osztályon belül még létre akarnék hozni plusz függvényeket, akkor elegáns lenne először az interface-t módosítani, de ezt elvileg nem akarják. Ezért is gondolom, hogy a suggest függvényben elég lenne megoldani az egészet.

    Please advise :R

    public class YourConsultant implements Consultant {

    @Override
    public CellLocation suggest(GameBoard gameBoard) {
    // TODO Auto-generated method stub
    return null;
    }

    Leírás:

    The goal of this exercise is for you to create an implementation of the
    Consultant interface. You can use the provided class YourConsultant that needs
    to be finished. We will run your solution against our unit tests. The source
    and unit tests for this project may be found in the zip file associated with
    this file.

    Please read the JavaDoc carefully.

    Keep in mind that:

    * We are only interested in an implementation for the Consultant interface. We
    do not, for instance, want an application that can interact with other
    (human) players. We do not expect any kind of GUI, nor do we expect a class
    with a main method.

    * We are not so much looking for a solution that performs very fast. If your
    implementation finds the best solution within a second, that is good enough.

    * We are interested in the readability of your code.

    * Follow the instructions carefully, but keep it simple! Your solution might of
    course require more files (Java types), be careful however not to
    over-engineer your solution.

    * You are not allowed to change existing code, i.e. do not change existing
    files.

    Egy metódus egy dolgot csináljon. A metódusok legyenek rövidek és legyen nekik minél beszédesebb nevük. Az hogy a YourConsultant osztályodon belül vannak egyéb private metódusok, amik segítenek jobban struktúrálni a logikát, nem jelenti azt, hogy változtatni kéne az interface-t.

  • disy68
    aktív tag

    Az a gondom, hogy nem tanultam még javat és a szükséges algoritmusokat csak c-ben és c++-ban találtam meg és nem tudom átírni úgy, hogy működjön a processingben.
    Csoporton belül nem tudok segítséget kérni, mert csak ketten vettük fel a tárgyat az egész évfolyamon és a másik diáktól már kérdeztem, de nem nagyon akar segíteni, mert ha hasonló lesz a megoldás, akkor mindketten megbukhatunk. Ezért érthető , hogy nem fogja megosztani a magoldását, amit lehet, hogy ő is valakivel megoldatott.

    A másik diák szerintem pont itt tette fel a kérdést.

  • disy68
    aktív tag

    Sziasztok!

    IntelliJ-ben a Gluon Pluginnal szeretnék futtatni egy alkalmazást és kell hozzá Android SDK Manager is.

    Az alábbi képen látszik, hogy milyen hibát talál. Azt mondja, hogy SDK Managerben telepítsem fel az EXTRAS alatt az Android Support Repository-t.
    De nem sikerül feltelepítenem, mert nem találok ilyet. Android Studio-val együtt telepítettem az SDK Managert és ott, ha megnyiton Android Studio-ban az SDK Managert, akkor nem találok benne EXTRAS részt.

    StackOverflow-n nem találtam megoldást. Tudnátok-e légyszives segíteni? köszönöm

    Erről van szó, gondolom.

  • disy68
    aktív tag

    Sziasztok!

    Néhány algoritmusnak kéne lemernem a tényleges futási idejét. Ehhez szeretnek egy olyan metódust csinálni ami paraméterként elfogad egy másik metódust(az algoritmust) es annak visszaadja a runtimet.
    Tudom több megoldas is van a neten rá, de nekem kicsit zavarosak.Legegyszerűbben hogyan tudnám kivitelezni hogy működjön a counter metódusom alább?

    class SorterTest {

    public static void main(String[] args) {

    long l = counter(Sorter.quicksort(a));



    }

    public static long counter(Method method){

    long startTime = System.currentTimeMillis();

    method();

    long stopTime = System.currentTimeMillis();

    return stopTime - startTime;


    }



    }

    Java 8 alatt van lehetőség metódus referenciát átadni. Akár az alábbihoz hasonlóan is elindulhatsz:
    public class MethodRuntimeChecker {

    public static void main(String[] args) {
    QuickSorter sorter = new QuickSorter();

    int[] array = getNumbers(10_000);

    System.out.println(mesureRunTimeNano(sorter::sort, array) + " ns");
    System.out.println(mesureRunTimeMilli(sorter::sort, array) + " ms");
    }

    public static long mesureRunTimeNano(Function<int[], int[]> intSorter, int[] toBeSorted) {
    long start = System.nanoTime();
    intSorter.apply(toBeSorted);
    return System.nanoTime() - start;
    }

    public static long mesureRunTimeMilli(Function<int[], int[]> intSorter, int[] toBeSorted) {
    long start = System.currentTimeMillis();
    intSorter.apply(toBeSorted);
    return System.currentTimeMillis() - start;
    }

    private static int[] getNumbers(int count) {
    int[] numbers = new int[count];
    Random random = new Random();
    for (int i = 0; i < count; i++) {
    numbers[i] = random.nextInt(count);
    }
    return numbers;
    }
    }

  • disy68
    aktív tag

    párban kellene lenniük a számoknak :) ezt is meg lehet valósítani így?

    Csinálsz egy dto (data transfer object) osztályt, ami egy pojo (plain old java object), két adattaggal, ami a soronkénti két számod, ezeket tárolod pl. egy listában.

  • disy68
    aktív tag

    Heló!

    Ezzel osztom el, hogy a pályán milyen valószínűséggel forduljanak elő az adott dolgok. Kicsit lehet hülyén van kivitelezve, de működik. Szakközép óta nem foglalkoztam javával, szóval 1-2 dolgot át kellett ismételnem a beadandóhoz. :D Úgy tudom, hogy a zárójelben lévő szám a legnagyobb, amit randomizálhat, a +0 meg a legkisebb.

    Nullát adni egy számhoz fölösleges, szerintem erre célzott a kolléga :)
    Ami viszont fontosabb, hogy a max érték exclusive, szóval a nextInt(50) 0 és 49 között ad neked egy random számot. Lásd: doksi

  • disy68
    aktív tag

    Üdv!

    Javaban egy akasztófa játékot kell csinálnom.

    A program nagy része kész, már csak a kép megjelenítése hiányzik, amit én előre elkészített .jpg képekkel oldanék meg, (6 db van) amit a hibázások száma alapján cserélgetek.
    Csináltam egy metódust, ami minden karakter megnyomás után lefut, és beállítja a képet a hibák alapján, így néz ki:
    public Icon faimg(int hiba) {
    ImageIcon kep = new ImageIcon();
    String elut = " ";
    switch (hiba) {
    case 0: kep = new ImageIcon("G:\\Netbeans\\Java\\akasztofa\\img\\af_0.jpg"); break;
    case 1: kep = new ImageIcon("G:\\Netbeans\\Java\\akasztofa\\img\\af_1.jpg"); break;
    case 2: kep = new ImageIcon("af_2.jpg"); break;
    case 3: kep = new ImageIcon("af_3.jpg"); break;
    case 4: kep = new ImageIcon("af_4.jpg"); break;
    case 5: kep = new ImageIcon("af_5.jpg"); break;
    case 6: kep = new ImageIcon("af_6.jpg"); break;
    }

    (Próbáltam direkt kétféleképpen is, de egyikkel se megy a dolog)

    Ezt lefuttatom minden gombnyomás után:
    kep = muvelet.faimg(hiba);
    keplabel.setIcon(kep);

    Nem akarja megjeleníteni a képet, nem tudom mit rontok el :F
    System.out.println-el is megnéztem, a kep megkapja az értéket (elérési utat), de amint lefut, az eredeti fehér kép helyén a keplabel-en semmi nem lesz, a fehér kép is eltünik. :F

    Ha szükséges a forráskódot is meg tudom mutatni.

    Ennyiből ugyan nem látszik mi a hiba, de szerintem az elérési utakkal lehet gond.

    Csináltam egy kis minta projectet (maven project), két "kép cserélővel", az egyik a resource mappából szedi a képeket, a másik pedig külső könyvtárból.

    Ha nincs jól megadva az elérési út a jelenség az általad is leírttal egyezik. Annyit még változtattam, hogy egységesen kezeljem a két változatot, hogy az ImageIcon-t java.net.URL paraméterrel példányosítom.

  • disy68
    aktív tag

    Waaaa, nyomj ra alul hogy mennyi ido alatt terul meg... legrosszabb esethez beirva a legrovidebb ido:) Epic fail.

    Ez nem az ügyfél, hanem számukra vonatkozó infó biztos :D Nekik nyilván az a legrosszabb, ha gyorsan végez a delikvens és kevesebb pénzmag marad az ő zsebükben ;]

  • disy68
    aktív tag

    Még mindig nem sikerült megoldani. Szóval ha valakinek van ötlete ... :)

    Helló, jó kis probléma :)

    Hirtelen olyat találtam, hogy:
    import java.io.PrintStream;
    import java.io.UnsupportedEncodingException;
    import java.util.Scanner;

    public class Main {
    private static final String UTF_8 = "UTF-8";
    private static final String INPUT_MESSAGE = "Írj be egy betűt: ";

    public static void main(String[] args) throws UnsupportedEncodingException {

    try (Scanner scanerObj = new Scanner(System.in, UTF_8);
    PrintStream out = new PrintStream(System.out, true, UTF_8)) {

    while (true) {
    out.print(INPUT_MESSAGE);
    out.println(String.format("key: '%s'", scanerObj.next().charAt(0)));
    }
    }
    }
    }

    Ezzel helyesen kezeli a scanner által utf-8-nak beolvasott betűket, viszont az INPUT_MESSAGE-et nem. Amit találtam még, hogy indítani a -Dfile.encoding=IBM437 (nálam ez az alapértelmezett kódlap chcp parancs megmondja) paraméterrel, bár ezzel nem kísérletezgettem szóval nem tudom működne-e helyesen.

  • disy68
    aktív tag

    Erről az oldalról lenne szó [link] Online játék főleg yatzy érdekel. De sajnos azt már próbáltam hogy a vezérlőpult,java de a kivételekhez hiába adom hozzá ugyanazt dobja fel hiba üzenetként.

    Itt a leírás az engedélyezéshez. A lényeges az oldalon, hogy azt az url-t kell felvenned, ahol az applet megtalálható. Ez nem feltétlen ugyanaz, mint amit látsz a böngésző címsorában. A yatzy játék appletje a http://game03.playforia.net címről tölt be, ezt próbáld meg felvenni. De ez off szerintem itt, ez inkább üzemeltetéssel kapcsolatos problem.

    És zárójelben még annyit, hogy szerintem keress inkább olyan oldalt, ahol nem applet-es játékok vannak, mert előbb utóbb egyik böngésző sem fogja az appleteket támogatni ;)

  • disy68
    aktív tag

    Sziasztok! Olyan problémám lenne hogy van egy játék és nem működik, a java ezt írja ki application blocked by java secutity de sajnos hiába írtam a java consolba hogy ne blokkolja csak nem működik. tud valaki segíteni köszönöm

    Szerintem egy kicsit bővebben írd le, milyen játék, hol fut (böngésző/applet vagy asztali alkalmazás)? Mit írtál és milyen java console-ba (böngészőnél javascript console elérhető ugyebár)?

    Amúgy a gondolatolvasó vénám azt mondatja, hogy Vezérlőpult (nézetnek kis ikonok) -> Java (vagy <java telepítési hely>/javacpl.exe) elindít ott security fül, lentebb állítod a szintet és ha valóban böngészős valamiről van szó, akkor hozzáadod a kivételekhez.

  • disy68
    aktív tag

    Sziasztok!

    Mostanában próbálok átszokni Netbeansről Ideára. Netbeansben volt egy menüpont ahol tudtam hozzá tudtam adni depedenciákat. Ideában nem találom. Hogyan lehet?

    Ahogy (#9126) F1rstK1nq is írja, dependency-t ne az ide-re bízd, hanem maven/gradle.

  • disy68
    aktív tag

    Sziasztok!

    Ismét segítségeteket kérném.

    Van egy pont osztályom:

    public class Point{
    private int x;
    private int y;

    public Point(int x, int y){
    this.x = x;
    this.y= y;
    }

    public int getX(){
    return this.x;
    }

    public int getY(){
    return this.y;
    }

    public boolean equals(Object other){
    Point otherPoint = (Point) other;
    return getX() == otherPoint.getX() && getY() == otherPoint.getY();
    }

    public double getDistance(Point other){
    return Math.sqrt( Math.pow(getX() - other.getX(), 2) + Math.pow(getY() - other.getY(), 2));
    }

    public String toString(){
    return "(" + getX() +", " + getY() + ")";
    }


    }

    Van egy pontokból álló vonallánc osztályom:

    import java.util.ArrayList;
    public class PolyLine{

    private ArrayList<Point> points = new ArrayList<Point>();


    public PolyLine(ArrayList<Point> points){
    this.points = points;

    for (int i = 0; i < points.size()-1; i++){
    if (!add(points.get(i))){
    points.remove(i);
    i--;
    }
    }

    }

    public ArrayList<Point> getPoints(){
    return points;
    }

    public boolean equals(Object other){
    return points.equals(other);
    }

    public boolean add(Point p){

    int pos = points.indexOf(p);

    return pos != -1 && !points.get(pos+1).equals(p);

    }

    public String toString(){

    String a = "[";

    String b = "" ;

    for (int i = 0; i < points.size()-1; i++){
    b = b + points.get(i).toString()+ ", ";
    }

    String c = points.get(points.size()-1).toString() + "]";

    return a + b + c;

    }



    }

    A baj az, hogy a két vonallánc összehasonlításánál az equals false-t dob, amikor azok megegyeznek. Az ismétlődések nem számítanak, azt a vonallánc constructorja kiszedi. A fejlécek fixek, azokat nem lehet változtatni. A sejtesem az, hogy point osztály equals metódusával számol és nem a beépített arraylistessel.

    Itt hozza a teszt:

    import java.util.ArrayList;
    public class Bsp10{

    public static void main(String[] args){


    ArrayList<Point> points = new ArrayList<>();
    points.add(new Point(292, -457));
    points.add(new Point(292, -457));
    points.add(new Point(292, -457));
    points.add(new Point(17, -277));
    points.add(new Point(-942, -103));
    points.add(new Point(-557, -18));

    PolyLine polyLine = new PolyLine(points);

    ArrayList<Point> points2 = new ArrayList<>();
    points2.add(new Point(292, -457));
    points2.add(new Point(17, -277));
    points2.add(new Point(-942, -103));
    points2.add(new Point(-557, -18));

    PolyLine polyLine2 = new PolyLine(points2);

    System.out.println(polyLine);
    System.out.println(polyLine2);
    System.out.println(polyLine.equals(polyLine2));

    }
    }

    Köszi előre is!

    Az equals függvényt hashCode nélkül nem írjuk felül (és amikor felülírjuk használjuk az @Override annotációt)! Mindkét függvény az Object osztályból jön, ami minden osztály őse. Olvasnivaló a témához.

  • disy68
    aktív tag

    Tudom ajánlani a Google Java Style Guide-ot, szerintem korrekt. Jelenlegi projekten is ezt használjuk, annyi változtatással, hogy a sorszélesség 100 helyett 120.

    (#9088) donathl
    Ha kódot raksz be, akkor ne képként légyszi. Amúgy neked pláne ajánlom a linket. Könnyezik a szemem ezektől az ékezetes magyar nevektől :(((

  • disy68
    aktív tag

    Sziasztok!

    Írtam javában gyakorlásképp egy egyszerű számológép programot. Viszont csak úgy sikerült megoldanom, hogy egyszerre csak 2 számmal tud operálni. Kérdésem az lenne, hogy lehet megoldani, hogy egyszerre 3 vagy több számmal is tudjon számolni? Pl. egyszerre 3 szám szorzása, összeadása...

    Forráskód:

    package calculator;

    import java.util.Scanner;
    public class Calculator {

    public static void main(String[] args) {
    Scanner calc = new Scanner(System.in);
    System.out.println("Enter first number");
    double n1 = calc.nextInt();
    System.out.println("Enter second number");
    double n2 = calc.nextInt();

    System.out.println("Enter operation (* ; / ; + ; - ; ^ ; root");

    Scanner op = new Scanner(System.in);
    String operation = op.next();

    switch (operation) {
    case "+": System.out.println("Result: " +(n1+n2));
    break;
    case "-": System.out.println("Result: " + (n1-n2));
    break;
    case "/": System.out.println("Result: "+ (n1/n2));
    break;
    case "*": System.out.println("result: "+ (n1*n2));
    break;
    case "^": System.out.println("result: " +(Math.pow(n1, n2)));
    break;
    case "root": System.out.println("result: "+ (Math.pow(n1, 1 / n2)));

    }
    }

    }

    Pölö a lengyel forma használatával. Avagy a fordított lengyel forma használatával.

  • disy68
    aktív tag

    Éles környezetben igen, de azért csúf lenne, ha egy Java vagy bármilyen fejlesztő nem lenne tisztában azzal, hogy miként működnek a környezeti változók és fejlesztői környezetben ezek állítgatása fejlesztői feladat. Vonatkoztatva nem csak java-ra :)

    Természetesen a fejlesztő a devops-os a maga birodalmában :) így neki illik tisztában lennie ezekkel.

  • disy68
    aktív tag

    Nem kéne ezt belerakni topic összefoglalóba? :) Esetleg mellé tenni pár linket könyvekre / weboldalakra "hogy álljunk neki java-zni" címmel, illetve néhány IDE ajánlás, esetleg felsorolni pár manapság java téren népszerű technológiát (ideértve frameworkot, verziókezelőt, stb.), aminek legalább a nevét célszerű ismerni. Nagyjából úgyis ezek a kérdések szoktak felmerülni, ha nem valami konkrét kérdés van.

    Persze, mindenképpen. Nem tudom ki illetékes itt ez ügyben.

    (#9043) emvy, (#9044) Aethelstone
    A környezeti változók állítgatása nem éppen átlagfelhasználói tevékenység, hanem inkább üzemeltetési. Aki ilyen műveleteket akar csinálni, az szerintem nem árt, ha tisztában van a hogyanokkal, különben hamar pórul járhat. Ilyen szinten meg ne akarjon egy telepítő megcsinálni mindent. Vonatkozva jdk-ra és szerintem.

  • disy68
    aktív tag

    Miért kell ezzel utólag kézzel bindzsiszkedni? Miért nem állítja be a telepítő a környezeti változót, és az elérési útvonalat?

    Azt nem tudom mi az oka, hogy nem rakják bele a path beállítást a jdk telepítőbe, de az lenne a tippem, hogy azért, mert fölösleges. Egy átlag felhasználónak nincs rá szüksége, egy fejlesztő meg úgy alakítja a saját környezetét, ahogy neki tetszik.

    A java_home környezeti változó beállítása amúgy is egy kihagyható lépés, azt azért szokás beállítani, hogy ha frissíti az ember a jdk-t, ne kelljen a Path-ben bogarászni, hanem csak a környezeti változót kelljen átírni. IDE-kben, egyéb helyeken is lehet magára a java_home-ra referálni általában, így könnyebben karbantartható.

  • disy68
    aktív tag

    Üdv! Remélem tud valaki segiteni.
    A gondom hogy most kezdtem a net segitségvel tanulni a java programozást de már az elején leragadtam.
    Nem tudom a parancsorban leforditani a programot igy elinditani se. Mi lehet a gond?
    A program pár sor a legyegyszerűbb lévén kezdő vagyok. A java forditó is elvileg működik de semmi pénzért nem csinál nekem class kiterjesztést hogy el tudjam inditani. Nagyon bosszantó mert papiron mindennek kéne működni de több infot már nem találtam a netem hogy mi lehet a gond.
    Ötlet?

    Mivel nem írod, hogy pontosan mivel is próbálkozol, a lépések nagyvonalakban:
    - JDK telepít
    - környezeti változónak beállítod a telepítés helyét:
    - pl. JAVA_HOME: C:\Program Files\Java\jdk1.8.0_73
    - felveszed a Path környezeti változóhoz a binárisokat:
    - pl. %JAVA_HOME%\bin

    Program:
    package cli;

    public class Hello {
    public static void main(String[] args) {
    System.out.println("Hello dude");
    }
    }

    Parancssorban megnézed jó-e a java beállítás:
    - java -version
    > java version "1.8.0_101"
    > Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
    > Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)

    Majd compile:
    - javac cli\Hello.java

    És végül a futtatás:
    - java cli\Hello
    > Hello dude

  • disy68
    aktív tag

    Lenne egy szakmai kérdésem!

    Lenne egy helper osztályom amiben van pár getter (van egy vendor objektum amit szintén tartalmaz, és ami betölt magának egy adatbázist és abból pakolnám ki az adatokat). Hogy tudnám a "best practice" szerint ezt az objektumot újrahasznosítani?

    Setter, konstruktor vagy instance?

    Remélem érthető volt! :)

    mobal,

    Lehet csk nekem, de nem egészen egyértelmű. Ez a helper osztály nekem egy service-nek hangzik, aminek van egy vendor dependency-je. A service-nek ezt a dependency-t illene konstruktorban átadni, mivel a funkcionalitásához nélkülözhetetlen (azaz ne is jöjjön létre példány anélkül, hogy működne). Nem tudom milyen az architektúra, de ha Java EE, akkor van context. A service valószínűleg valami singleton bean, amit újra lehet hasznosítani (figyelemmel a szálkezelésre, ha szükséges). Maga a vendor object is egy bean lesz ebben az esetben, amit szintén át lehet adni bárminek, ami igényli.

  • disy68
    aktív tag

    Ez a kód nagyjából működik végül:

    BufferedReader br = null;
    try {
    br = new BufferedReader(new FileReader(fajlNev));
    } catch (FileNotFoundException ex) {
    System.out.println(ex.getMessage());
    }


    ObjectMapper mapper = new ObjectMapper();
    try {
    belsoLista = mapper.readValue(br, new TypeReference<List<Szemely>>(){});
    } catch (IOException ex) {
    System.out.println(ex.getMessage());
    }

    Még annyi problémám akadt, hogy a JSon egyik mezőneve nem egyezik meg az objektum konstruktorában várt paraméter nevével.
    Illetve a konstruktor szintén vár egy LocalDate paramétert is, ami miatt ez a hibaüzenet jön:
    Can not construct instance of java.time.LocalDate: no String-argument constructor/factory method to deserialize from String value ('1981-11-23')

    Ennek a megoldásában még tudnátok segíteni? :R :R

    Kelleni fog még a jackson-datatype-jsr310 vagy a jackson-datatype-jdk8 modul is a LocalDate-hez.

    A json mezőnévnek pedig nincs köze a konstruktor paraméter neveihez, hanem a getterek nevei alapján készülnek. Ha szeretnéd megtartani a getter nevét, viszont más nevet használnál a generált json-ben, akkor használhatod a @JsonProperty annotációt. Arra figyelj, hogy melyik jackson verziót használsz (1.x <-> 2.x).

    pl.

    public String getSomething() -> mezőnév: something

    @JsonProperty("somethingelse")
    public String getSomething()
    -> mezőnév: somethingelse

  • disy68
    aktív tag

    [link] :D

    TiBeN commented on Jul 21
    Where is the instance of AbstractApplicationContextProviderRepositoryManagerAdapter ?

    Enterprisify megvan? :D

  • disy68
    aktív tag

    Miért? Megsértődik, ha magyarul írsz, és ezért lassabban/hibásan fog futni?

    Ha az ember még nincs is olyan helyzetben, hogy mással együtt kell dolgoznia egy kódbázison, de komolyan gondolja a programozást, akkor mindenképpen gondolni kell a jövőre. Jobb megszokni az angol kifejezések használatát még az elején, mintsem később kelljen egy rossz berögződésen korrigálni.

  • disy68
    aktív tag

    Egy kicsit komplexebb kérdésem lenne:

    Valamiféle adatszerkezetet keresek, amely alkalmas lenne az alábbira:

    REST-en keresztül érkeznének üzenetek egy szolgáltatásnak. Az üzenetek formája/típusa az egyelőre tetszőleges, a választott adatszerkezetnek megfelelően választanám azt.

    Ezeket az üzenetek egy Spring keretrendszert futtató szintén REST szolgáltatás fogadná, amelynek valahogy fel kéne dolgozni és eltárolni azt.

    Valahogy úgy kéne elképzelni, hogy jönne egy String üzenet A-tól: "A üzenet" (Tehát az üzenetben stringek jönnének, mint egy log service)
    Ezt az üzenetet be kéne tenni valamibe ahol csak az A-tól jövő üzeneteket tárolom. Mindezt úgy, hogy historikusan vissza lehessen követni valamilyen szinten. Tehát mondjuk egy asszociatív tömbbe, ahol kulcs az a dátum lenne, az érték pedig maga az üzenet.

    Ezekután ebből az A tömbből pedig ki ki tudnám szedni az adatokat úgy, hogy megadnám, hogy "ettől-eddig" az intervallumig kérném az értékeket a tömbből.

    Bármilyen segítséget megköszönök! :R

    Lehet én nem értem a kérdést. Ha magára a request-response szerkezete a kérdés, akkor innen válogathatsz.

    A formátum, mint JSON is eléggé adja magát, bár használhatsz xml-t is, többletmunkát nem okoz egyik sem java oldalon.

    Ha a "betenni-kivenni" azt jelenti, hogy perzisztálnád az adatokat, amiket szűrni szeretnél egyszerűen, akkor valamilyen adatbázis használata is célszerű lehet.

    Szóval az induláshoz a kulcsszavak Spring Boot, @Restcontroller, Jackson, Hibernate, MySQL is lehetnek akár.

    Persze ha te üzeneteket fogadsz, akkor érdemes lehet autentikáción is gondolkodni.

  • disy68
    aktív tag

    Még azt megtudnátok mondani, hogy amikor létrehozok egy új projectet, akkor itt a create project from template mit takar?

    illetve itt a base package?

    köszönöm :R

    Java esetében a package egy magasabb egység. A Package-ek logikailag összefüggő egységeket tartalmaznak (interface, class, stb.). A base package általában az adott cég domain-je, plusz az adott alkalmazás neve.

    Pl. FancyStuff alkalmazás eseténél org.fancyltd.fancystuff

    Magyarul rád van bízva mit használsz, de azért használj valami egyedit.

  • disy68
    aktív tag

    uraim

    melyik könyvet javasoljátokk java kezdőnek, programozáshoz? gyorsan tanulok. ;) :R

    Én még Robert C. Martin - Clean Code könyvét mindenképp ajánlanám.

  • disy68
    aktív tag

    C3P0-t néztem, ugye az a régi és bevált megoldások egyike. Valami újabb amit érdemes használni?

    Tapasztalatom nincs vele, de a HikariCP-ről jókat hallani.

Új hozzászólás Aktív témák

Hirdetés