Hirdetés

Keresés

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

  • #68216320
    törölt tag

    Magam is tudom köszi. [link]
    Én lezártam volna már a témát de egy hozzászólás még volt és arra reagáltam. Esedezem a bocsánatért mert csak közvetetten érinti a Java-t.

  • #68216320
    törölt tag

    nem teljesen értem a problémádat, androidban van gyári vonalkód szkenner, amit lehet okosítani.
    ezen túlmenően hcl kolléga blogjában van mobiltelefonra írt leltározó program. [link]

    Nos, a telefonban van scanner, de nem tudom hogyan lehetne okosítani. Azon kívül, hogy megmutatja a dekódolt szöveget és link esetén megnyit egy browsert semmi egyebet nem láttam még benne alapból. Aztán hogy éppen ezen a telefonon valahogy talán össze lehet mégis barkácsolni, hogy custom url-t hívjon, de esetleg egy másikon nem ezért szerintem jobb egy külön app erre.

    Az említett leltározó program remek, de idő közben újabb igény merült fel, így magam kell írjak egy egyszerű appot. Szerencsére sok forrást találni a már említett ZXing libre alapozva, ezek lesznek a kiindulási alapok.
    ZXing embedded lesz természetesen, hogy ne kelljen külső app a használathoz.
    Kotlin-nak nem állok most neki, egyelőre JAVA alapon fogom elkészíteni.
    Szóval a kiinduló kérdés itt el is dőlt.

  • #68216320
    törölt tag

    Vezetékes megoldás nem jó sajnos. Ezért gondoltam mobilra, mint leolvasóra. Aztán onnét már valami app átadná egy url-en (get, post, valami) a kapott kódot. Szóval igazából csak az app kellene, de az már off itt.

    Talán találtam valamit: [link] (ha esetleg valaki hasonlóval próbálkozik)

  • #68216320
    törölt tag

    Ennél olcsóbban nem programozza neked le senki: [link]

    Vezetékes megoldás nem jó sajnos. Ezért gondoltam mobilra, mint leolvasóra. Aztán onnét már valami app átadná egy url-en (get, post, valami) a kapott kódot. Szóval igazából csak az app kellene, de az már off itt.

  • #68216320
    törölt tag

    Készítesz egy vonalkód olvasó alkalmazást és egy rest apin elküldöd a spring boot alapú alkalmazásodnak a kódot?

    Nem tudok Android appot készíteni sajnos. Szóval valami free megoldás volna jó erre. A rest már rendben lenne spring-ben, még tokenezgetni sem kellene, mert teljesen lokális hálón lenne a dolog. Szóval nem volna bonyesz.
    Viszont az android oldal teljesen off nekem.
    Esetleg az olvasóra volna ötleted?

  • #68216320
    törölt tag

    Sziasztok.

    Ismertek valami olyan technológiát, amivel free módon lehetne mobil telefont vonalkód/barcode leolvasóként használni bluetooth/wifi kapcsolattal és azt spring boot-ban feldolgozni?

  • #68216320
    törölt 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;
        }

  • #68216320
    törölt tag

    Ha kézzel csinálsz egy manifestet, az is teljesen jó, és akkor nem kell maven extra hozzá. Most hirtelen nem is tudom, melyik a praktikusabb, mert az XML sokkal terjengősebb, mint a manifest maga.

    Maradtam a pom.xml-nél. Kényelmes, ha minden ilyesmit látok egy helyen.

    Más:
    Hogyaza... frissítettem az STS-t és valami gond van az Eclipse-el.
    Ezt a hibaüzenetet kapom: [kép]
    Azt hittem a desktop gépemen van valami gond, megcsináltam a laptopon is, de ugyanez lett a vége. Ilyenkor most mivan?

  • #68216320
    törölt tag

    Manifest file-t generálsz main class definícióval [link]

    Köszönöm, tökéletes.
    Egyelőre a spring-boot verziót próbáltam ki, azzal működik.

  • #68216320
    törölt tag

    Sziasztok.
    Teljesen elfelejtettem, hogyan lehetne megcsinálni, hogy egy "jar" fájl konzolban hívásakor automatikusan induljon egy package/osztályban lévő "main" metód?

    Például így fut: java -cp Hello.jar hu.valami.Hello
    De így szeretném: java Hello.jar

    A pom.xml-be kell valami build megjegyzés vagy hogyan lehetne megcsinálni?

    Update:
    Közben STS-ben csináltam egy "Export/Java/Runnable JAR file" megoldást, de ezzel bepakolta a jövő hetet is a jar-ba.

  • #68216320
    törölt tag

    De ha bekérem a kulcsot, akkor mindjárt kérhetném az adott jelszót is. Persze több jelszó esetén már kellemesebb a kulcsot megadni és azzal decrypt-álni a többit.

    Viszont az alap probléma adott még. A user meg akarja változtatni a property-t kézzel, akkor hogyan tudja beírni a property-be kézzel a titkosított jelszót.

    Vagyis példaként:
    Egy e-mail küldő konfig fájlban lenne az smtp-host, user, pass, port. Ezeket a user kézzel állítja be a saját adatai alapján. De ugye a pass-t nem adhatja meg csak plain, mert nem biztonságos. Az email küldőt pedig egyéb osztályok hívják, szóval nincs külön indítás ahol megadhatnám a key-t, kiegészítő modul lenne.

    Mi van olyankor ha úgy csinálnám, hogy a program (ami hívja majd az email osztályt) minden híváskor átadja a használt key-t (mondjuk nem tudom még az honnét jönne létre). Ezzel tudja ugye decrypt-álni a jelszót az email osztály. Viszont lenne egy ellenörzés, hogy amikor plain text a konfig fájlban a jelszó (modjuk éppen szerkesztette az előbb a user), akkor először encrypt-álja és ezután az általános módon beolvassa, decrypt és használja.

    Valami hasonló módon csinálja linuxon a transmission-daemon is a config fájlban.

    De továbbgondolva a dolgot általános is lehetne a kérdés. Bizonyos esetekben jó lenne SQL-ben tárolt adatoknál is pár olyan értéket titkosítva tárolnom, amit a programom tud írni-olvasni, de ha a user ránéz (akinél fut a programom) ő az sql-ből nem tudja kiolvasni. Ezek olyan dolgok lennének, amikot kénytelen vagyok adni a programmal, de saját, védett adatok lennének viszont kellenek a program működéséhez és alkalmanként távolról frissíteném-bővíteném ezeket.

    Nem tudom mennyire sikerült leírnom a feladatot. A lényeg, hogy idegen szerveren futtatva a programomat védeni kellene bizonyos adatokat, amik ott helyben vannak tárolva. Konfig adatok esetén fájlban vannak ezek, egyéb adatok esetén mondjuk sql-ben.
    Ha valaki ránéz a szerveren ezekre az adatokra akkor simán kiolvasva őket használhatatlanok legyenek csak a program futása közben tudja használni ezeket. Vagyis valami kulccsal titkosítani kellene. De hogy hol lenne mondjuk tárolva ez a kulcs, na azt nem tudom. Tehát valami elvi megoldás kellene, hogy hogyan lehetne ezt felépíteni.

    Van olyan kulcs amit az adott szerver tulajdonosa (cég) ismer és azt használná a program titkosításra. (ez a jelen feladat)

    És lenne olyan is, amit csak én ismerek és az valahogy fixen a programban lenne, azzal tudná a program az általam biztosított adatokat írni/olvasni. (ez egy következő feladat)

  • #68216320
    törölt tag

    indításkor kér be a terminálról.

    De ha bekérem a kulcsot, akkor mindjárt kérhetném az adott jelszót is. Persze több jelszó esetén már kellemesebb a kulcsot megadni és azzal decrypt-álni a többit.

    Viszont az alap probléma adott még. A user meg akarja változtatni a property-t kézzel, akkor hogyan tudja beírni a property-be kézzel a titkosított jelszót.

    Vagyis példaként:
    Egy e-mail küldő konfig fájlban lenne az smtp-host, user, pass, port. Ezeket a user kézzel állítja be a saját adatai alapján. De ugye a pass-t nem adhatja meg csak plain, mert nem biztonságos. Az email küldőt pedig egyéb osztályok hívják, szóval nincs külön indítás ahol megadhatnám a key-t, kiegészítő modul lenne.

    Mi van olyankor ha úgy csinálnám, hogy a program (ami hívja majd az email osztályt) minden híváskor átadja a használt key-t (mondjuk nem tudom még az honnét jönne létre). Ezzel tudja ugye decrypt-álni a jelszót az email osztály. Viszont lenne egy ellenörzés, hogy amikor plain text a konfig fájlban a jelszó (modjuk éppen szerkesztette az előbb a user), akkor először encrypt-álja és ezután az általános módon beolvassa, decrypt és használja.

    Valami hasonló módon csinálja linuxon a transmission-daemon is a config fájlban.

    De továbbgondolva a dolgot általános is lehetne a kérdés. Bizonyos esetekben jó lenne SQL-ben tárolt adatoknál is pár olyan értéket titkosítva tárolnom, amit a programom tud írni-olvasni, de ha a user ránéz (akinél fut a programom) ő az sql-ből nem tudja kiolvasni. Ezek olyan dolgok lennének, amikot kénytelen vagyok adni a programmal, de saját, védett adatok lennének viszont kellenek a program működéséhez és alkalmanként távolról frissíteném-bővíteném ezeket.

  • #68216320
    törölt tag

    Jasypt, Spring cloud config. Ami az erdekes a kerdeskorben, hogy az encryption keyt hol tudod eltarolni es beszerezni az alkalmazas altal, de mas user altal nem.

    Gondolom, ha inbuild a programban, az nem volna jó megoldás. Ha egy másik helyről (mondjuk egy saját webhelyről) tölti be folyton, akkor egy felesleges függőség lenne csak.

  • #68216320
    törölt tag

    Sziasztok.

    Volna néhány olyan érzékeny adat (email fiók jelszó, stb), amit tisztán plain text-ben nem szeretnék property-ben tárolni. Milyen megoldást tudnátok javasolni, hogy védve is legyen, de módosítható legyen rebuild nélkül?

  • #68216320
    törölt tag

    Sziasztok.

    Kis segítséget kérnék.
    Milyen megoldással lehetne úgy futtatni egy külső (linux) parancsot, hogy a futása közben a konzolba kiírt tartalmat egy változóba/tömbbe kapja meg a hívó java class, hogy fel tudjam dolgozni.

    Például egy "ls" parancs (windows esetén ez a dir) a listázott fájlokat/könyvtárakat egy array vagy string-be tegye.
    Nem tudom mennyire érthető a feladat?

    Közben meglett :)
    ProcessBuilder és getInputStream

  • #68216320
    törölt tag

    python, javascript - valami ami erre van kitalálva
    vagy szerver oldalon fog futni?

    Persze, szerver oldalon időzített futás lenne és az eredményeket egy db-ben tárolná.

  • #68216320
    törölt tag

    Ha statikus, akkor jsoup. Ha dinamikus, akkor selenium web driver

    Köszi.
    Dinamikus a site, de az aloldalak ugynazt a sémát követik. Ergo ugyanabban a div vagy td részben más-más érték van.

  • #68216320
    törölt tag

    Sziasztok. Szeretnék különböző url-ekről érkező html tartalmakból adatokat kinyerni. Van valami jól bevált és ajánlott html parser ajánlani tudnátok?

  • #68216320
    törölt tag

    - Nem olyan nehéz a gép, a 15-ös (most már 16-os) modell is teljesen vállalható
    - Plusz gari szerintem mindenképpen megéri, azért többet kibírnak mint két év :)
    - Akksi jól bírja, ha dolgozom rajta 4 - 5 óra, sima "office" használat van 8 is
    - Java fejlesztésre használom én is :)

    13-as és 15, 16-os modell is vállalható szerintem. Ez egyéni preferenciának gondolom, ha sokat használod monitorról akkor a 13 is bőven elég lehet. Memóriából minél több, annál jobb! 16 legalább.

    Nekem egy IDEA + Docker (általában 3 image, SonarQube, MongoDB és RabbitMQ) szokott enni olyan 4 - 5 giga körül. Én az i7-et annyira nem tartom fontosnak, mióta van 8. generációs i5 ami 4 mag + 4 szál.

    Air szerintem kevés, Pro mindenképpen.

    Én Air-t (2017) használok, teljesen jól elvagyok vele. Mondjuk tény, hogy csak az IDE van a gépen, minden egyéb szerveren.

  • #68216320
    törölt tag

    a véleményedtől függetlenül súlyos hiba java vm-et meg java-s programot indítani ott, ahol egy sed vagy awk program tökéletesen elegendő. attól, hogy van java a gépeden, még nem kell minden esetben használni.
    a mysql-nek van parancssori kliense, az tökéletes arra, hogy betöltsd az adatokat az adatbázisba.

    "jó lenne java exec megoldással a kimenetet elkapni és parse-olni.": azt sem értem, ehhez minek java exec. feltalálták a csővezetéket, tessék szabvány bemenetet olvasni és parsolni, ha mindenáron java-ban akarod.

    bocs, de úgy gondoltam, hogy nem központi probléma megoldani, hogy egy linuxon futó program kimenete hogy kerül egy windowson futó programba. te írtad, hogy linuxon futó program szenzor adatokat gyűjt. miért akarnák windowson adatbázisba rakni?

    hagyd a fenébe a java-t, shell szkript topicban vagy linux kezdő topicban megmondják a jó megoldást. szenzor program kiolvassa a mért értékeket, kiküldi szabvány kimenetre, azt sed-del, awk-val vagy shell szkripttel átalakítod szabvány sql insert utasítássá, azt bele küldöd a mysql kliensbe és kész. ennyi. nem java, meg legyen kéznél jdbc driver, meg vm meg a fene se tudja még mi minden függőség.

    Van pár szempont ami miatt a sheel-ből nem volna jó dolgoznom.

    - Egyrészt szeretném a beérkezett értékeket validálni mielőtt tárolom. Persze ezt is lehet bash-el, de java kényelmesebb volna.
    - A szerveren mindenképp van java, mert van egy API, amivel pedig le lehet majd kérdezni ezeket. Tehát a függőségek mindenképp megvanak már
    - Szeretném magát az sql részt nem látható módon használni, tehát nem volna jó, ha az insert into mondjuk script-ben lenne
    - Lenne windows-os gép is, ami szenzor adatot kap, ott akkor új megoldás kellene a parse-oláshoz (persze ott is megoldható)

    Amit mondasz, az mondjuk tökéletes megoldás lehetne arra az esetre, amikor az rpi-ket kell használnom majd. Ott problémás lenne a java.

    Azon gondolkodom, hogy esetleg tényleg a megoldás az lenne, hogy egy API-t csinálni java-ban, amit a kliensek hivogatnak és a már parse-olt adatokat azon keresztül tolnák befelé. Merthogy a szerveren amúgy is van tomcat. Aztán ott validálnám és ha oké tárolnám (mysql, influx, miegyéb) Ha nem oké majd a response jelzi a kliensnek.
    Ekkor a kliens lehet mondjuk a mostani gép linux-al és akkor a sed szétszedné az adatokat (és mondjuk curl hívná az api-t). Ez járható lenne a későbbi rpi kliensek esetén is. A win-es megoldást nem tudom még, hogy ott miként lehetne szétkapni az adatokat és hívni az api-t, de gondolom ott sincs nagy csavar a dologban.

    Ez mennyire lenne járható út?

  • #68216320
    törölt tag

    A magam részéről mindenképpen szívlapáttal csapnám fejbe, aki erre a problémára java programot ír.
    bash shell + sed.

    szerk: letenni fájlba, linuxon, lyalylyly

    A modorod a szokásos, neked sem ártana egy szívlapát a képedbe.

    Aztán gondolom majd a sed tolja nálad az adatokat mysqldb-be (influxdb még hagyján) és ha netán win-en akarnám futtatni, akkor meg mivan? Szóval igen, java program kell. Pont java és pont azért, mert java.

  • #68216320
    törölt tag

    A Linuxos program időzített futtatására használj cront, vagy egyszerűen írj egy bash scriptet, ami tight loopban vár. A kimenetet meg simán irányítsd bele egy fájlba. A Java programban ugyanezt a fájlt nyisd meg ugyanilyen időközönként. Aztán dolgozd fel, s írd ki adatbázisba. Amúgy ahogy az adatod jellegét nézem, kb. egy time series database-ben lenne a legjobb őket tárolni. Erre jó pl. Influxdb. Aztán csinálhatsz rá mindenféle fancy ábrát Grafanával.

    Parse-olni ezt egyébként elég egyszerű, soronként végigolvasod, majd line.split("."), a három elemű tömböt meg felhasználod ahogy akarod..

    Más: Mi a legjobb, legmélyebb Spring video course amivel találkoztatok? Kéne nekem egy masszívabb. Ha csak fizetős van, az se gond. De örülnék, ha legalább 20 óra körüli lenne és nagyon a részletekbe menő.

    A terv hasonló, de nem szeretném fájlba tárolni, hanem jó lenne java exec megoldással a kimenetet elkapni és parse-olni.
    Illetve a grafana tervben van, de sima mysql-ben gondolkodtam nem influxdb-ben. Utóbbit ugyanis nem ismerem és telegraf-ot sem használtam még.

    Ezért elsőkörben sql lenne. Aztán lehet nekiugrok megismerni az influxdb-t. Csak valami jó anyagot kell találnom róla, ami pontosítja bennem a lényegét, működését, felhasználását.

    De köszi a tippet, tényleg ez volna a legjobb végeredmény a feladatra.
    És persze docker használat is jó volna, de még az is várat magára.

  • #68216320
    törölt tag

    Milyen megoldással lehetne egy külső program konzolba írt tartalmát parse-olni?

    Van egy linux-os programom, ami bizonyos szenzorok adatait az alábbihoz hasonló módon adja vissza a konzolba kiírva:

    ... (néhány sor sima text elötte)
    group1.data1.value1: 123456
    group1.data1.value2: valamiszoveg
    group1.data1.value3: 123.01
    group1.data2.value1: valamiszoveg
    group1.data2.value2: 123456
    group2.data1.value1: 123456
    group2.data1.value2: 123456
    group2.data2.value1: 123456
    group3.data1.value1: 123456
    ...

    A lényeg, hogy minden tag új sorban van, a variable neve pontokkal van, a value lehet string, int, float.

    Szeretném bizonyos időközönként (30 másodpercenként) lefuttatni ezt a külsős exe programot és a visszakapott értékeket db-ben tárolni.
    Mivel volna érdemes nekikezdeni?
    Az exe futtatásban, a visszakapott értékek parsolásában kellene segítség.
    Db kezelés nem gond.

  • #68216320
    törölt tag

    Értelek, egy 20 éves tapasztalattal rendelkező jelentkezőnél valóban béna dolog a kódminőség felől érdeklődni, tiszta sor. Ezer ennél relevánsabb kérdést is feltehetnének. Ugyan korrigálhatnám a neked feltett kérdésemet úgy, hogy mit válaszolnál a kérdésre akkor, ha junior lennél egy junior pozira, de érzem, hogy a válaszod ugyanaz lenne. :)

    Nekem nincs ennyi év a hátam mögött, de úgy vélem 20 éves múlttal sem feltétlenül sértődnék meg egy ilyen kérdésen, szerintem ha ez érdekli az interjúztatót a legjobban, akkor szíve joga rákérdezni. Nyilván annak is tudatában van a HR (ha meg nincs akkor így járt), hogy egy ilyen kérdés feltevése milyen színben tünteti fel őket. Szerencsére az állásinterjún a felvételizőnek is van lehetősége arról beszélgetni, amiről konkrétan ő szeretne, és én jelöltként is ugyanúgy elvárom a felvételiztetőtől, hogy készséggel válaszoljon a kérdésemre, mint fordított helyzetben. Nem kellemes, amikor megítélik az embert a feltett kérdése alapján. De legalább hamar kiderül, hogy nincs meg az összhang, próbaidő sem kell ennek a megállapításához.

    Talán azért ez a véleménykülönbség, mert sokat szívtam legacy kóddal, és sokkal jobban megérint a kódminőség (hiánya), mint másokat. És mivel eddig szinte minden kollégámmal jól kijöttem, annyira nem szokott érdekelni, mennyire jól tudok velük együtt dolgozni... eddig mindig sikerült jól együtt dolgoznunk. Esetedben meg talán máshol vannak a hangsúlyos pontok.
    Ez az oka annak is hogy ráugrottam a hozzászólásodra, mert mérhetetlenül sajnálatosnak tartom, hogy a menedzserek mellett sok fejlesztő is tesz a minőségre (szinte lényegtelen összetevőnek tartják), és nem látják, hogy ezzel a saját vagy sorstársaik életét teszik pokollá hosszú távon. Azt hiszem a válaszaimmal igazából csak keresem a megerősítést, hogy valóban az a jó irány, ha a határidőt, a rövid távú sikereket tartja az ember szem előtt. Egyelőre nem sikerült meggyőznöm vagy meggyőzetnem magam, de igyekszem. :D

    ----
    PeachMan:
    Hogy ON is legyek, nálam a model az entitás réteget jelenti - vagy perzisztens réteget, ahogy te fogalmazol. POJOk, amelyek már jávául íródtak, de közvetlenül a DB-be mentjük őket és DB-ből töltjük fel őket. Az ORM akítvan használja őket, lévén ők képezik az O-t az ORM-ben. :)
    A DTO (Data Transfer Object) pedig adatok továbbításáért felel a komponensek között, ez jellemzően magasabb rétegekben jelenik meg (ha a perzisztens réteg van alul és a view felül).

    Hogy mennyire szép elfelejteni a DTO-kat és mindenhol csak a modelt használni, nos, szerintem ez komplexitás kérdése. Egy szép világban nem lenne szükség DTO-ra, mert minek lekopizni valamit pusztán azért, hogy 2 service beszélgetni tudjon egymással. De van egy rakás oka, amiért mégis van létjogosultsága.

    Lehet technológiai oka, mondjuk az ORM meg tud zavarodni, ha egy entitásban több collection is van, DTO-k bevezetése jó workaround tud lenni. Te is említetted, hogy a view-nak nincs szüksége minden mezőre, ez is egy valid ok. Főleg akkor, ha nemcsak nincs szüksége, hanem egyenesen tilos egy view-nak látnia minden adatot. Lehet ok a sebesség optimalizálás. Ha egy view-nak csak 1-2 mező kell egy 20 oszlopos táblából, nagyon nem mindegy, hogy mind a 20 mezőt áttolod-e egy microservice-ből a másikba, vagy csak a szükségeseket. Egy DTO-t létre lehet hozni azzal a 2 szükséges mezővel és azt passzolgatni. Az sem mindegy, hogy egy entitásban a kapcsolódó táblák adatai is feltöltésre kerülnek vagy sem, és erre a view-nak szüksége van-e vagy sem. Van, hogy az ORM-et megkerülve jpql vagy akár natív sql végrehajtásával kell felszívni bizonyos adatokat, mert annyira tetü lassú lenne máskülönben, hogy a user megunja az életét. Ez már egy optimalizációs indok lehet, és nem is a fejlesztés legelején kell erről gondolkodni, hanem a végén, de akkor marha nehéz lesz átállni DTO-ra, ha eddig végig az entitásokat passzolgattuk a komponensek között.
    Gondolom vannak érvek a model használata mellett is, de most nem jut eszembe ilyen, és biztosan jön valaki, aki arról is tud mesélni. :) Ja igen, az ORM is nyújthat megoldásokat az általam fentebb felvetett indokokra, csak nem ismerem annyira mélyen őket, hogy mindegyikre tudnék mondani valami dögös annotációt.
    DTO-t használni nekem könnyebbség. Nagyobb rugalmasságot ad. Ha változik a model, nem feltétlenül kell a service rétegen keresztülverni a változásokat pl.

    Köszi a választ. Otthon részletesen újra átolvasom. :R

  • #68216320
    törölt tag

    Azt hiszem megkeveredtem picit a Model és DAO/DTO fogalmakkal. Ha DTO-t használok a perzisztens rétegem és a service között, akkor azt csak ott használhatom? Például nincs értelme mondjuk view-nak küldeni, igaz? Hiszen tartalmaz számára nem publikus adatokat is. Oda kellene a model, ami csak a user számára érdekes adatokat tartalmazza?
    Service-ek között mivel viszek át adatokat? Ott DTO vagy Model van?
    És mi van ORM esetén?

    Picit segítenétek átlátni a dolgot? Keresgélek infot magam is, de csak belekeveredtem eddig :B

  • #68216320
    törölt tag

    Biztos kozos ososztaly kell neked, nem lenne jobb a kozos interface? Mar persze ha arrol van szo hogy azert szeretned oket valahogy kozositeni, mert kesobb egyforman kezelned a kettot (az egyforma tulajdonsagokkal). Ha most sehol nem kezeled egyutt, akkor meg siman ket osztaly, az nem akadalyozza hogy kesobb kozos interface is legyen, ha valos indok lesz ra.

    Nagyon hasonlóan kezelném őket, de még csakbaz egyik van meg. A különbség köztük annyi lenne, hogy az egyik saját projecten belüli adatokkal jön létre, a másik külső (request) és egyben néhány másik adattal jön létre. A perzisztens rétegben is külön vannak tárolva. Ezen kívül közösen kezelem. Például együtt listázom, stb.

    Ennek ellenére semmi akadálya nincs, hogy teljesen külön osztály legyen, hamár külön is tárolom őket.

  • #68216320
    törölt tag

    Csak annyit tudok a prjektedről, amennyit most leírtál róla, így lehet, hogy valamit félreértek.

    1. Én most microservice bűvkörökben élek és a selfcontained alkalmazás a kedvenc, vagyis semmit sem vágok, cserébe viszont pici a cucc, és nincs benne ui. Természetesen a komponensek közti kommunikációt megvalósító DTO-kat, külön, közös projektbe teszem, hogy mindegyik komponens ugyanazt lássa.
    Ha látod értelmét a vágásnak (mert mondjuk több egymástól eltérő modul is használná), akkor vágj. Ha nincs értelme, akkor ne vágj. A legrosszabb, amit tehetsz, hogy túl korán vágsz és később szívsz, hogy hát lehet, nem is ott kellett volna, ajaj.
    A több UI, több modul felállás szimpi.

    2. A tesztet. Nincs hibátlan osztály. A tesztet. Leginkább párhuzamosan. TDD. Mondtam már, hogy a tesztet? :D Amúgy meg a te dolgod, ahogy jobban esik. Főleg, ha a teszttel kezded.

    3. Ha valami nem komplex, én nem frameworközök, mert csak megköti a kezet, lassít, bonyolít. Amúgy passzolom a kérdést, nem tartom magam frontend gurunak. Persze lehet az, hogy mondjuk valaki csak az angulart ismeri és semmi mást, neki érezhetően könnyebb dolga lesz abban megcsinálni, mint szenvedni egy fura jsp-vel.

    4. Ne származz le. :) Oké, hogy a nyelv megengedi, de attól még nem jó.
    Én nem osztom azt a nézetet, hogy ami úgy néz ki mint egy kacsa és olyan hangot ad ki, mint egy kacsa, az egy kacsa. [link]
    Az egy másik osztály.
    Ha mégis van némi közük egymáshoz, akkor még a composition-t tudom elképzelni, vagyis az osztály egy tagja lesz a meglévő cucc, és az osztályod csak az értelmes mezőket engedi ki az apiján.

    Köszönöm a válaszokat :)

    1. Akkor lehet annál maradok, hogy minden marad egy projectben. Igazából pont azért kérdeztem, mert jelenleg tényleg nem indokolja semmi, hogy szétszedjem. Csak valahol láttam egy ilyen project-et és gondoltam, hátha ... de akkor nem csinálom egyelőre.

    2. Akkor hogy is? A tesztet? :D

    3. Az igazság az, hogy nem ismerek egy framewörköt sem. Tudom, kellene csak próbáltam elodázni. De nagyon úgy tűnik, hogy nincs mese... Angular? Meglesem.

    4. Nem túl komplex. Anno úgy olvastam még, hogy ilyenkor ezt kell tenni. Persze tényleg megoldás a 2 külön osztály. Vagy gondoltam, hogy barkácsdolom picit:
    - átnevezném az eredeti osztályt
    - absztrakt lenne az eredeti osztály
    - kivenném az eredeti osztályból azokat a tulajdonságokat, amik nem közösek
    - leszármaznék 2 osztállyal belőle. az 1. kapná az eredeti nevet és megkapná a saját tulajdonságát. a 2. kapna egy új nevet és a saját tulajdonságait

    Így az eredeti néven meglenne az osztályom az eredeti member-ökkel és lenne egy új az új member-ökkel de csak azokkal amik neki kellenek.
    Persze lehet marhaság amit akarok, sajnos kuka vagyok még a programozáshoz.

    Vagy túlkombináltam valamit megint :)

  • #68216320
    törölt tag

    Egy saját hobby project kapcsán merült fel pár kérdés, amiben szeretném a közösség véleményét kérni.

    1. Maven build-et használok. Mikor szokás parent-child project-et csinálni?
    Most van egy parent pom.xml-em, amiben jelenleg két child pom.xml van. Perzisztens réteg és üzleti réteg, de harmadikként menne majd a WebUI még ide (esetleg más UI ha lesz)

    2. Mit szoktatok előbb elkészíteni? Az osztályt vagy a unit tesztet? Mert ugye ha a tesztet írom előbb, kevesebb esélye van szerintem, hogy bizonyos elemek tesztelése kimarad. Tudom mit akarok csinálni, mik lesznek a funkciói, mik lesznek a paraméterei és ez alapján mik lesznek a buktatók. Ez alapján meg tudnám csinálni az osztályt ami hibátlanul elvégzi a feladatokat. Vagy célszerűbb sorban? Osztály aztán hozzá a teszt?

    3. Servlet-WebUI elkészítéshez mit ajánlotok? Nem lenne komplex a feladat, HTML/CSS/JS ismeretem van. Framework vagy inkább valami saját JSP?

    4. Ha van egy már meglévő model amiből leszármaznék, mert mert az új model tartalmaz még pár tulajdonságot, de van olyan is amit a parent igen, de a child nem, akkor azt hogyan szokás megoldani? Obj esetén mondjuk lehet NULL, de például int vagy boolean esetében mit csinálok vele? Ha adok értéket akkor azt hihetem, hogy az valós.

  • #68216320
    törölt tag

    Egy saját hobby project kapcsán merült fel pár kérdés, amiben szeretném a közösség véleményét kérni.

    1. Maven build-et használok. Mikor szokás parent-child project-et csinálni?
    Most van egy parent pom.xml-em, amiben jelenleg két child pom.xml van. Perzisztens réteg és üzleti réteg, de harmadikként menne majd a WebUI még ide (esetleg más UI ha lesz)

    2. Mit szoktatok előbb elkészíteni? Az osztályt vagy a unit tesztet? Mert ugye ha a tesztet írom előbb, kevesebb esélye van szerintem, hogy bizonyos elemek tesztelése kimarad. Tudom mit akarok csinálni, mik lesznek a funkciói, mik lesznek a paraméterei és ez alapján mik lesznek a buktatók. Ez alapján meg tudnám csinálni az osztályt ami hibátlanul elvégzi a feladatokat. Vagy célszerűbb sorban? Osztály aztán hozzá a teszt?

    3. Servlet-WebUI elkészítéshez mit ajánlotok? Nem lenne komplex a feladat, HTML/CSS/JS ismeretem van. Framework vagy inkább valami saját JSP?

  • #68216320
    törölt tag

    Remek végigolvasni ezt a refactor-t :D
    Esküszöm jobb tapasztalat, mint egy tanfolyam.

    A lambda témához:
    Ezek szerint nem ördögtöl való...
    Csak tudnám a régi melóhelyemen miért ellenezték annyira? Akkor sem értettem. Azt mondjuk soha nem vizsgáltam, h mondjuk egy forEach lassabb a for-nál. Sajnos nálam kényelmi beidegződés a forEach, használom.

  • #68216320
    törölt tag

    Én is én is én is! :D

    String[] arrayOfStrings = { "alma", "körte", "banán", "cseresznye", "áfonya" };
    String longest = Arrays.stream(arrayOfStrings).reduce((a, b) -> a.length() > b.length() ? a : b).orElse(null);

    Ez mennyire BestPactice? Én még úgy tanultam, hogy próbáljuk kerülni a lambda-t, mert a forráskód nehezebben olvasható majd. Nem "nyúlfarknyi" példákra, gondolok, hanem nagyobb osztályokra például. Persze most nem azt mondom, hogy 1-1 forEach vagy hasonló nem kerülhet bele csak például nálam egy-egy komplexebb sor átláthatósága debug esetén nehezebb/lassabb.
    Persze tény, hogy elegánsabb :)

    Vagy ez teljesen rendben van és marhaságot tanultam?

  • #68216320
    törölt tag

    Keresgélek magam is, de esetleg ismertek olyan osztályt, amivel lehetne MP3-at (később MP3 stream-et) raw audio stream-re átalakítani? Jó volna egy 16bit -> 8bit konverzió is és 44.1kHz -> 28kHz mintavétel konverzió is.

  • #68216320
    törölt tag

    Jonak nez ki.
    Annyi megjegyzes, hogy ImageIO es a beepitett javas kepfeldolgozo megoldasok nagyon eroforraspazarloak mind memoria, mind cpu szempontjabol, es a vegeredmeny minosege sem feltetlenul a legjobb, szoval ha komoly megoldas kell, akkor erdemes ezeket kikerulni es valami nativ celeszkozt hasznalni (Pl convert (imagemagick) parancs linuxon), majd a vegeredmenyt direktben kiirni az outputstreamre.

    Köszi. Ez csak amolyan próba project, ezért jelen esetben az erőforrásigény nem probléma. Viszont későbbiekben jó ötletnek tűnik a linux-on konvertálás.
    Ha ezzel megvagyok, akkor ki fogom próbálni az imagemagick-et a cloud szerveren.

  • #68216320
    törölt tag

    Kissé összemosódik a kép "nevének" (fájlnév / uri ? ) és magának a képnek a dinamikussága.
    Nem világos az sem, hogy jön ide a header. Mindegy, kezdjük el és hátha kiderül, mire gondoltál.

    /kepstream-re mappelsz egy servletet web.xml-ben vagy annotációval, request.getPathInfo-ból kiparse-olod a /kepstream utáni részt, megvan a path paramétered, amivel a képet azonosítod szerver oldalon.
    Aztán a httpservletresponse outputstreamedre azt írsz dinamikusan, amit csak akarsz, akár on-the-fly generált képet, akár fájlból beolvasottat.
    Plusz content-disposition, content-type headert nem árt kitölteni a céljaidnak megfelelően.

    Odáig megvagyok, hogy megvan a dinamikusan összerakott kép egy BufferedImage-ben.
    Ezt eddig fájlba tároltam csak le ImageIO.write()-al.
    Viszont, ahogy említettem a browsernek ezt most stream-ként adnám át. Ha jól értem akkor monjuk egy response.setContentType("image/jpeg") és a ServletOutputStream megoldja a dolgot?

    Valami ilyesmi ugrik be nagy vonalakban a leírtak alapján:

    BufferedImage generatedImage = imageGenerator(...);
    response.setContentType("image/jpeg"); 
    ServletOutputStream streamOut = response.getOutputStream();
    ImageIO.write(generatedImage, "jpg", streamOut);
    out.close();

    Ez így valamennyire jó irány?

  • #68216320
    törölt tag

    Milyen megoldással lehetne egy servlet-ben megoldani azt, hogy amikor képet jelenítek meg egy weboldalon, akkor ne a kép nevét használjam az url-ben, hanem egy servlet url-t és az egy kép stream-et adjon vissza header-el?

    Tehát ne ez legyen:
    <div><img src="valami.hu/valami_kep_neve.jpg"></div>

    Hanem ez:
    <div><img src="valami.hu/kepstream/123456"></div>

    Azaz dinamikusan generálódna le egy adott kép minden request-re és nem akarom szerver oldalon tárolni.

    Anno PHP-ban az elv az volt, hogy elküldtem egy header-t és azután raw-ként az image adatait.
    Itt valami hasonló dolog lenne? Header+stream?

  • #68216320
    törölt tag

    Szerintem lehetne a 10620 és 10621-et is törölni és akkor tényleg semmi nyoma. Csak egy törölve lett megjegyzés lenne. Már, ha lehet ilyesmit.

  • #68216320
    törölt tag

    Jó. Nyilvánosan megkövetem a kartársat, amiért ilyen hangnemben írtam neki. Nem fog előfordulni többet.

    Ettől függetlenül ha már kér valamit valaki, amit egyébként 5 perc guglizással ki lehet túrni, ráadásul az optikája olyan volt, hogy sürgős lenne, akkor egy köszi jól esett volna. Nem kötelező, de jól esett volna. Mivel sürgősnek tűnt, ezért vélelmeztem, hogy nem kíván reagálni semmit.

    Elnézést, hogy ennyire felhúztam magam a dolgon. Valóban sürgős lett volna vagy legalábbis mihamarabb szerettem volna a témával foglalkozni, de másképp alakult és ezért csak ma néztem rá. Tehát jól érzékelted. A guglizással igazad van, de a címszavak nem ugrottak be ezért nem vezettek akkor eredményre a találatok.
    A segítséget köszönöm, megnéztem a linket is és kerestem a címszavakra is. Pontosan ilyesmire lenne szükségem. Át is nézem mihamarabb a talált oldalakat.

    mobal: Tőled is elnézést szeretnék kérni, a sértettség és a tanácstalanság beszélt belőlem. Máskor próbálok mérsékeltebb lenni.

    Ha van erre lehetőség és nektek is megfelel javasolnám a problémás hozzászólások törlését, mivel egyáltalán nem vág a témába és 10 év múlva nem akarom újraolvasni.

  • #68216320
    törölt tag

    Segítséget szeretnék kérni a következőben.

    Egy olyan osztályt szeretnék csinálni, amivel be tudok tölteni egy képet, majd erre a képre kisebb képeket tudok rámásolni átlátszó háttérrel (pl. PNG) a megadott koordinátákra.
    Aztán ezt az új bitmap-et vagy letárolnám képfájlként (png, jpeg) vagy stream-ként vissza is adhatnám megfelelő kép fejléccel. Ergo egy servletbe dinamikusan beépíthető lenne.

    Egyelőre nincs ötletem milyen címszavakkal volna értelme kutakodnom info után.
    Adnátok megfelelő címszavakat kereséshez?

  • #68216320
    törölt 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.

  • #68216320
    törölt tag

    Szerintem a legérdemesebb beszerezni valamelyik beginner Udemys Spring traininget. Általában nagyon szájbarágósak és a végletekig praktikusak. Ha szerencséd van, olyan helyed dolgozol, hogy van ingyen access. Ha nem, akkor érdemes kinézni valamelyik akciósat és rákölteni vagy 10-20 eurót. Szerintem ezerszer könnyebb megérteni egy ilyenből, mint könyvekből, vagy írott tutorialokból.

    Jelenleg egy ilyen Udemy-s anyagom van. Ez megfelelő lehet szerinted? Nekem jónak tűnik a content alapján.

    Illetve találtam a YT-on magyar nyelvű anyagot is. A San Franciscoból jöttem csatornán Spring Boot ismeretek címmel.

    A magyar nyelvűvel kezdeném, mert az angol lassabban megy kicsit sajnos (még). Gondolom nem gond, ha két külön helyről jön infó. Átfogóbb képet kapok. Igazából nem rohanok sehova csak veszett módon érdekel a Java és most lett egy kis időm.

    Eddig PHP vonalon dolgoztam, kevéske OOP-vel sajnos a régi projectek miatt, mindenféle framework nélkül. A JAVA mellett állt rá az agyam is az OOP szemléletre. De ez egy másik történet ...

  • #68216320
    törölt 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. :)

    Meg vagyok győzve. Akkor ez lesz.

  • #68216320
    törölt tag

    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.

    Akkor mondjuk Spring alapon tanuljak/próbálkozzak tovább?

  • #68216320
    törölt tag

    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.

    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.

  • #68216320
    törölt tag

    Szerintem ha bedobod ide lesz olyan aki ránéz :). GitHub?

    Akkor ez lesz :)
    Gitlab-ot hasznalok, de mehet github-ra is, ha az valamiért kényelmesebb.

  • #68216320
    törölt tag

    Ne bonyolítsd túl, a dto csak egy pojo ami tartalmazza a post adatokat példul - ha már az én példámnál vagyunk.

    Rendben. Köszi :)

    Nem tudom, olyat lehet kérni itt a csoportban, hogy mondjuk csinálok egy nagyon alap project-et amit feltolok mondjuk a napokban gitlab-ra és megkérlek benneteket, hogy átfussátok? Tényleg alap CRUD dolgok, sima konzolos view-al.
    Szoktak ilyet kérni? Vagy ezt nem illik?
    Szeretném, ha helyesen rögzülnének bennem a pattern-ek.
    Aztán javítgatom, mintegy példaként a későbbiekre.

  • #68216320
    törölt tag

    Springet még hagyom, sima JDBC-t használok majd és alap funkciókat.
    Viszont megkeveredtem, azt hittem DAO-t kizárólag perzisztens rétegben használunk.
    Azt hiszem kellene keresnem valami megfelelő MVC alapú alap funkcionalitású (FW nélküli) kódrészletet, hogy a helyére kerüljenek a dolgok.

    Elnézést a bugyuta kérdésekért. :B vissza a padba...

    Még egy gyors kérdés, akkor elvben valahogy így nézne ki?

    View <- (Model) -> Service <- (DAO) -> Persistence

    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?

  • #68216320
    törölt tag

    Én amikor Springben csinálok egy API-t a következőket követem, a Controller kap egy kvázi DTO-t (sima POJO ami semmire nem jó csak adatokat szállítani) amit validálok majd adott esetben elmenetem tehát model készül belőle.

    Amúgy meg modelekkel dolgozom repository-n keresztül.

    Ahogy a kolléga is írta feljebb.

    mobal,

    Springet még hagyom, sima JDBC-t használok majd és alap funkciókat.
    Viszont megkeveredtem, azt hittem DAO-t kizárólag perzisztens rétegben használunk.
    Azt hiszem kellene keresnem valami megfelelő MVC alapú alap funkcionalitású (FW nélküli) kódrészletet, hogy a helyére kerüljenek a dolgok.

    Elnézést a bugyuta kérdésekért. :B vissza a padba...

    Még egy gyors kérdés, akkor elvben valahogy így nézne ki?

    View <- (Model) -> Service <- (DAO) -> Persistence

  • #68216320
    törölt tag

    Nyers adatok a DTO-ban szerepelnek nem? :)

    Öööö... úgy kellene? Akkor megkeveredtem. :)
    Nálam ott full SQL adatok vannak. Többek között az ID is.

    (#10482) floatr:
    Most még nem használok keretrendszert, előbb megpróbálom teljesen átlátni a dolgot. (Ezután gondoltam Spring komponensekkel lecserélni amit lehet, aztán menne az egész JavaEE vonalra)
    Nálam a terv az lenne, hogy maga a perzisztens réteg egy külön maven modulban van és kifelé interfészként van jelen. Emiatt én úgy gondoltam, hogy a DAO csak ebben a modulban létezik, vissza már modelt ad a szerviz rétegnek. A cél az lenne esetemben, hogy egy mozdulattal a perzisztens réteg modult lecserélve akár más tárolást lehessen használni. Már, ha ez nem hibás koncepció részemről.
    A service réteg szintén külön maven modul. Arra gondoltam, hogy ő pedig csak model-t lát, számára a DAO nem létezik.

  • #68216320
    törölt tag

    A modelben is szerepeljen az ID field, és amikor pl. listából kiválasztasz egy elemet, akkor tudsz ID alapján módosítani/törölni.

    Én anno úgy tanultam, hogy a model-ben kizárólag "nyers" adatok szerepelhetnek. De akkor persze lehet, hogy rosszul emlékszem. Megkoptak az emlékeim sajnos a hosszú kihagyás után.

    És akkor az ID hogy nézzen ki? Legyen mondjuk csak getter hozzá, setter nem és a konstruktorban adjak mondjuk az ID-nak értéket kizárólag?
    Ha a service rétegben van egy addCar akkor ugye ott még nincs ID-m. Tehát kellene egy ID nélküli konstruktor. Ha DAO-ból jön vissza adat, akkor ott már van ID, tehát kell egy olyan konstruktor is.
    Ez így biztonságos? Nem szeretném, ha kivülről lehetne az ID-t variálni. Vagy rossz a gondolatmenet?

  • #68216320
    törölt tag

    Egy elméleti, amolyan programozás technikai kérdés merült fel bennem.
    Sajnos nagyon alap, de elbizonytalanodtam, a segítségeteket kérném.

    Tételezzük fel hogy autók adatait szeretném egy felületen feldolgozni, majd egyszerű CRUD műveletekkel adatbázisban használni.

    Van egy "Car" model, ami ugye tartalmazza az autó adatait. Ezt a service rétegben dolgozom fel. Ha letárolom akkor átkerül a perzisztens rétegbe, ahol egy "CarDAO" lesz. Ebben van már adatbázisban található ID is, mert update/delete művelethez kelleni fog.

    A problémám az, hogy mondjuk update/delete esetén, amikor amikor a "service" rétegben meghívom a perzisztens réteg updateCar/deleteCar funkcióit, akkor át kell adnom neki egy ID-t, hogy melyikkel dolgozzon. Ergo a "service" rétegben is tudnom kell az ID-t. Vagyis egy listázásnál mondjuk, amiből mondjuk egy kattintás a felületen a megfelelő sorban az update/delete, mintha a CarDAO objektumot adnám neki vissza. Ami esetemben "CarDAO" == "Car"+ID
    Hogyan kellene ezt szépen megoldani, hogy a service réteg ne DAO-t kapjon, hanem Model-t?

  • #68216320
    törölt tag

    Felmerült bennem egy kérdés egy saját project-et illetően.

    Ha mondjuk egy project-et kezdek, aminek van több különálló komponense, akkor azokat érdemes külön-külön maven project-ben csinálni?
    Például: Ha mondjuk egy blog-ot veszünk alapul, annak van több különálló komponense.
    - kliens rész (blog olvasása)
    - writer rész (blog írása)
    - admin (blog-ok karbantartása)
    - user account / user rights
    - képkezelő komponens
    - stb.

    Csak példa volt. De arra gondolok, hogy ilyenkor egy maven project legyen az egész, vagy mondjuk érdemes egy 'blog' parrent project-et csinálni és abba megcsinálni egyesével a komponenseket? Gondolom ha külön lenne jobban lehetne karbantartani, nem?
    Vagy túlbonyolítom a helyzetet és elég, ha külön-külön package-be mennek?

  • #68216320
    törölt tag

    Én azért azt javaslom, hogy a tutorialt nézd meg és annak a fényében döntsd el, hogy keretrendszer segítségével vagy nélkül kezded el.

    Hamar bele lehet jönni szerintem :))

    Rendben, köszönöm a bíztatást, meglesem a tutorial-t :)

    Ja még egy dolog, ami most merült fel bennem. Utánnajárok majd a témának, de érdekelne, hogy Spring konfigurációkban annotációkat vagy XML-t szoktál inkább használni? Nekem tetszenek az annotációk. Ha esetleg valaki xml-el konfigurál akkor könnyebben felhasználható a kód a keretrendszeren kívül? Vagy mi az előnye/hátránya személyes tapasztalatod alapján?

    (#10415) Drizzt: Értem amit mondasz és megfontolandó. Bár esetemben nem maga a project elkészítése lett volna a cél, az csak egy eszköz lenne a tanulásra, hogy mégse 100 darab "Hello world" szintű nyúlfarknyi kód legyen. :) De kicsit körbejárom a dolgot akkor még1x.

    És köszi mindkettőtöknek a válaszokat. Nagyon felpörögtem a témára...

  • #68216320
    törölt tag

    Alapvető fogalmakkal kell tisztáznod először és utána szerintem mehetne a Spring.

    Amire szükséged lesz (így hirtelen fejből, nem teljes lista):

    - Singleton
    - MVC
    - Repository
    - DI
    - Annotációk
    - Hibernate (ORM)
    - SQL
    - ... és még sok dolog :)

    Egy kiindulási alap: [link], továbbá célszerű Gradle vagy Maven tool-al is megismerkedned (én személy szerint a Gradle-t ajánlom).

    Köszönöm az info-kat.

    Volt már saját project-em Java-ban, a felsorolt fogalmakkal is tisztában vagyok. Én a maven-t ismerem és használtam, illetve perzisztens rétegben MySQL-t és mintapéldáknál (lustaságból) a Derby-t. Az MVC sem probléma, próbálok interfészeket használni és szép kódot írni. ORM-et még nem használtam Java-ban, kizárólag PHP vonalon a Laravel-ben találkoztam vele. Szóval az új lesz. SOLID alapelvek rendben, értem és próbálom helyesen alkalmazni őket, DI-re is törekszem, bár néha ott még bakizom.

    Marad akkor az a felállás, hogy megcsinálom a tervemet Spring nélkül, refaktor amíg rendben lesz és ezután ugyanazt elkezdem a Spring-et és megpróbálom majd azzal megcsinálni.

  • #68216320
    törölt tag

    Spring az egy elég nagy falat, elég sok technikát / technológiát foglal magában.

    Igen, azt tudom. (sejtem legalábbis)
    Ezzel arra utalnál, hogy a projectet érdemes először mindenféle alkalmazásszerver vagy spring nélkül megvalósítani és azután kezdjem átültetni? Vagy csak ijesztegetsz a nagy falattal és arra utalsz, hogy legyek inkább plakátragasztó? :D

  • #68216320
    törölt tag

    Tudnátok linkelni elsősorban magyar (picit még lassan megy az angol) nyelvű doksit Spring, egészen pontosan Spring Boot kezdeti elsajátításához?

    Kitaláltam gyakorlásnak egy hobby project-et (web view, mysql a crud műveletekhez) ahol az MVC-t szeretném begyakorolni. A szokásos JDBC/SQL Query használata helyett szeretnék JPA-t kipróbálni, még sohasem használtam.
    Illetve nem tudom mi annak a technikának a neve, amikor először a Unit teszteket írják meg, de azzal a megoldással próbálkoznék majd.

    A Spring számomra még ismeretlen terület, ezért kellene pár kezdeti info hozzá magyarul. Aztán úgy gondolnám, ha van egy kis alap és nem a tanulási görbe legalján vagyok akkor már a még nem megfelelő angolommal már mennének az idegennyelvű doksik is. (legalább fejlődik az angolom is)

    A Spring Tool Suite (Eclipse) IDE-t használnám. Megfelelő választás lehet a projecthez? Látom vannak kiegészítők VS Code és Atom IDE-hez is.

    Közben az merült fel bennem, hogy a Spring megértéséhez közelebb vinne-e az a módszer, ha ugyanazt a project-et először sima JavaSE-vel oldanám meg. Jdbc, Servlet, stb.
    Ezután teljesen ugyanazt csinálnám meg Spring-el (esetleg jóval későbben JavaEE-vel talán)
    Így talán az elméleti és megvalósítási különbségek egyértelműbbek lennének.

    Főleg mondom ezt az alapján, hogy 2 év kihagyás után az akkori friss Java tudásomból mostanra megkophattak jelenleg még előre nem látható részek.
    Vagy ne törődjek vele és ugorjak neki csak a Spring-nek?

  • #68216320
    törölt tag

    Tudnátok linkelni elsősorban magyar (picit még lassan megy az angol) nyelvű doksit Spring, egészen pontosan Spring Boot kezdeti elsajátításához?

    Kitaláltam gyakorlásnak egy hobby project-et (web view, mysql a crud műveletekhez) ahol az MVC-t szeretném begyakorolni. A szokásos JDBC/SQL Query használata helyett szeretnék JPA-t kipróbálni, még sohasem használtam.
    Illetve nem tudom mi annak a technikának a neve, amikor először a Unit teszteket írják meg, de azzal a megoldással próbálkoznék majd.

    A Spring számomra még ismeretlen terület, ezért kellene pár kezdeti info hozzá magyarul. Aztán úgy gondolnám, ha van egy kis alap és nem a tanulási görbe legalján vagyok akkor már a még nem megfelelő angolommal már mennének az idegennyelvű doksik is. (legalább fejlődik az angolom is)

    A Spring Tool Suite (Eclipse) IDE-t használnám. Megfelelő választás lehet a projecthez? Látom vannak kiegészítők VS Code és Atom IDE-hez is.

  • #68216320
    törölt tag

    Érdekem megoldás amit felvázolsz. Szoktak ilyen megoldást alkalmazni? Igazából azt nem tudom mennyire kell ragaszkodnom a táblaszerkezetben az osztályok szerkezetéhez? Nyilván ORM esetében feltétlenül, bár hallok olyanokat, hogy nem túl célszerű a használata. Ha jól értem akkor az alábbi módon nézne ki, igaz?

    +----+-------+ +----------------------+ +----------------------+
    | sequence | | TBL1 | | TBL2 |
    +----+-------+ +----+--------+--------+ +----+--------+--------+
    | id | table | | id | field1 | field2 | | id | field1 | field2 |
    +----+-------+ +----+--------+--------+ +----+--------+--------+
    | 1 | TBL1 | | 1 | ... | ... | | 3 | ... | ... |
    | 2 | TBL1 | | 2 | ... | ... | | 4 | ... | ... |
    | 3 | TBL2 | +----+--------+--------+ +----+--------+--------+
    | 4 | TBL2 |
    +----+-------+

    Ahol a sequence tábla id auto_increment, a tbl1, tbl2 id pedig unique.

    Drizzt: Megnéztem a linket, köszönöm. Van egyébként valami javasolt/preferált megoldás a 3 közül vagy teljesen szabadon választhatok közülük. Esetemben a mindent egy táblába a null/notnull miatt nem volna célszerű. A teljesen különálló táblák és a közös tábla-saját típusos tábla megoldások között dilemmázok. Mivel alapvetően a lekérdezések lesznek töbségben és sejthetőleg típusra szűkítve főként, a külön-külön önálló tábla megoldást érzem picit jobb megoldásnak. De bizonytalan vagyok :)

    Ehh, most esett csak le, hogy ezzel a megoldással gyakorlatilag ugyanazt csinálnám, mintha az ős-leszármazott osztályokat modellezném csak teljesen értelmetlen módon, mert akkor legalább az ősben benne lennének a közös értékek. Szóval ez így nagyon nem jó :)

  • #68216320
    törölt tag

    Nem igazán így néz ki. A sequence csak egy futósorszám. Tehát tényleg csak egy szám van benne... az éppen aktuális érték. Ha elkéred tőle az értéket, automatikusan növeli magát eggyel (vagy neked kell növelned kézzel... kinézem ezt a mysql-ből). Ha mindenképpen táblaként akarod elképzelni, akkor van egy oszlopa, neve mondjuk legyen value, és van egy sora, abban az érték pedig 6, mert mondjuk a 6 volt az utoljára kiosztott id.
    Lásd az oldal alján.

    Szóval találkoztam már pár helyen ilyen megoldással... bár az oracle volt, nem mysql, de a concept ugyanaz, globálisan egyedi id. Nyilván nem kötelező minden táblán ezt használni, táblák egy csoportján is lehet, meg létrehozhatsz több sequence-t, más-más csoportoknak... ahogy a domain megköveteli.

    Bár a hozzászólások alapján úgy látom, ebből 1 fő tábla lesz. :)

    Drizzt, bambano, Szmeby: Köszönöm szépen a válaszokat, kiegészítéseket, íránymutatást. Ha megengeditek csak azért, hogy pontosabban megértsem a mikor-mit-miért összefüggéseket, felvázolnék másik helyzetet, amire szintén keresnék optimális megoldást. Csak fantázia, mint az előző, de a tapasztalatot majd vinném egy real projectbe.

    Legyen mondjuk egy ingatlanközvetítőnk ahol a kiindulópont egy abstract ingatlan class. (tulajdonos_id, ugyintezo_id, telepules_id, cim, ar, alapterulet)

    Ebből származna le:

    1. lakas class (szobaszam, felszobaszam)

    2. haz class (szobaszam, telek meret, mellekepuletek_osszterulet, terasz, kozmuvesites)

    3. irodaUzlethelyiseg class (helyisegek_szama, utcafrontrol_megozelitheto, kirakat)

    Nem pontos, de a lényeg, hogy egy ős osztály és mondjuk 3 leszármazott osztály. Jelen esetben nagyon nem bővülhetne, talán még garázs és zártkert, de gondolom tényleg fix számú a lehetőség, ami ide sorolható.

    Ami szükséges volna, az egyedi id, azaz, ha valaki azt mondja a 725-ös ingatlan adatait kéri, akkor abból egyértelmű legyen, hogy milyen/melyik ingatlan. Azaz esetünkben a 3 tábla osztozna egy id sequence-en.

    Lenne mondjuk egy galéria tábla is, amiben a képfájlok url-jét/sorrendjét tárolnánk mondjuk webes megjelenítéshez. Ide tehát kellene, hogy kerüljön egy "ingatlan_id" majd a saját id mellé.

    Ebben az esetben hogy nézne ki a táblaszerkezet? Teljesen megegyezne az object szerkezettel?

  • #68216320
    törölt tag

    szerintem meg egy táblát kell csinálni a terméknek, azon mezőkkel, amelyek biztosan mindegyik terméknél előfordulhatnak, meg egy táblát a változó tulajdonságoknak, és abba belerakni az adott termék tulajdonságait. esetleg egy harmadikat tulajdonságtípusnak.

    A harmadikba beleraknád, hogy milyen tulajdonságok fordulnak elő (pl. kijelzőméret, hdmi száma), a másodikba meg hogy termek_id,tulajdonsag_id, ertek.

    Fix számú, jelen esetben 3 fajta termék kategória van. Nem is várható bővülés, max jóval később talán 1-2 legfejjebb. Ez a 3 fajta termékkategória összesen 5 mezőben egyezik és minden egyébben különbözik. Ebben az esetben sem volna kényelmes inkább 3db külön-külön tábla? A lekérdezések gyorsabbak és egyszerűbbek lennének.

  • #68216320
    törölt tag

    "Viszont ekkor az autoincrement id a mysql-ben csak egy táblára lesz érvényes, azaz lenne 1-es id-val tv és mosógép is."

    Nem kötelező a táblákra bízni az id generálást, autoincrement használata helyett csinálhatsz az adatbázisban egy sequence-et (vagy sequence table-t? nem tudom, mysqlnél milyen eszközök állnak rendelkezésre), és az entitásaid abból szedhetik majd a next id-t.

    Érdekem megoldás amit felvázolsz. Szoktak ilyen megoldást alkalmazni? Igazából azt nem tudom mennyire kell ragaszkodnom a táblaszerkezetben az osztályok szerkezetéhez? Nyilván ORM esetében feltétlenül, bár hallok olyanokat, hogy nem túl célszerű a használata. Ha jól értem akkor az alábbi módon nézne ki, igaz?

    +----+-------+ +----------------------+ +----------------------+
    | sequence | | TBL1 | | TBL2 |
    +----+-------+ +----+--------+--------+ +----+--------+--------+
    | id | table | | id | field1 | field2 | | id | field1 | field2 |
    +----+-------+ +----+--------+--------+ +----+--------+--------+
    | 1 | TBL1 | | 1 | ... | ... | | 3 | ... | ... |
    | 2 | TBL1 | | 2 | ... | ... | | 4 | ... | ... |
    | 3 | TBL2 | +----+--------+--------+ +----+--------+--------+
    | 4 | TBL2 |
    +----+-------+

    Ahol a sequence tábla id auto_increment, a tbl1, tbl2 id pedig unique.

    Drizzt: Megnéztem a linket, köszönöm. Van egyébként valami javasolt/preferált megoldás a 3 közül vagy teljesen szabadon választhatok közülük. Esetemben a mindent egy táblába a null/notnull miatt nem volna célszerű. A teljesen különálló táblák és a közös tábla-saját típusos tábla megoldások között dilemmázok. Mivel alapvetően a lekérdezések lesznek töbségben és sejthetőleg típusra szűkítve főként, a külön-külön önálló tábla megoldást érzem picit jobb megoldásnak. De bizonytalan vagyok :)

  • #68216320
    törölt tag

    Felmerült bennem egy kérdés egy adatmodell-database leképezését illetően. Csak elméleti a dolog, a megvalósítás technikája érdekelne igazából.

    Tételezzük fel, hogy van egy "Termekek" absztrakt osztályom. Itt található id, nev, gyarto, stb.
    Ebből leszármaznak a Televíziók, Mosogepek osztályok. Ezekben már különböző adatok találhatóak. Például a Televiziok esetében kijelzoMeret, hdmiSzama, stb - Mosogepek esetében energiaOsztaly, centrifugaSebesseg, stb.

    Az volna a kérdésem, hogy adatbázisban ezt szintén így kellene megcsinálni? Azaz "termekek" táblát létrehozni, amiben id, nev, gyarto mezők lennének és mondjuk egy termek_tipus mező? Aztán lenne egy "televiziok" tábla amiben lenne egy termek_id és jönnének a kijelzoMeret, hdmiSzama mezők? Aztán a "mosogepek" tábla hasonló megoldással?
    Vagy érdemesebb volna csak két táblát (televiziok, mosogepek) csinálni, részben azonos mezőkkel? Viszont ekkor az autoincrement id a mysql-ben csak egy táblára lesz érvényes, azaz lenne 1-es id-val tv és mosógép is.

    Mi ilyen esetben az elfogadott megoldás?

  • #68216320
    törölt tag

    Java 8 és felette érdemesebb a LocalDateTime-ot használni.

    Köszönöm, így összeállt működőképesen a String=>LocalDateTime=>SqlTimestamp konverzió és a DateTime mezőben le is tárolja a MySQL.

  • #68216320
    törölt tag

    Kis segítséget kérnék. Van egy model-em, amiben 2db dátum+idő-t (datetime?) kellene tárolnom. Értékeket egyenként venne fel, azaz az évszámot külön adom neki, hónapot, stb. Aztán ezt a model menne majd a DAO-nak aki MySQL DateTime formában tárolja.
    Az volna a kérdésem, hogy mi volna megfelelő? A Date object? Vagy van valami speciálisabb, amivel kényelmesen setter-ekkel vagy egy string-ből be tudok adni mondjuk egy "2019-02-01 11:59:59" dátumot?

    Update: Ez mennyire lehet jó megoldás?
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = sdf.parse("2019-01-01 00:00:00");

  • #68216320
    törölt tag

    [link]
    szerk: 2.2-t szoktam egyszerű esetben preferálni.

    Jó megoldás, köszönöm. Ezzel rendben elindul a main().

  • #68216320
    törölt tag

    Urak. Hogyan tudom megcsinálni, hogy a maven által elkészített jar fájlban az App class (ez az egy main() van benne) hívódjon meg automatikusan, amikor a java -jar usermanager.jar parancssort beírja valaki?

    Ez a jelenlegi pom.xml
    <project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.etcetc.usermanager</groupId>
    <artifactId>user-manager</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>user-manager</name>
    <build>
    <plugins>
    <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
    <source>1.8</source>
    <target>1.8</target>
    </configuration>
    </plugin>
    </plugins>
    <finalName>usermanager</finalName>
    </build>
    </project>

    [ Módosította: mobal ]
  • #68216320
    törölt tag

    Tudnátok segíteni, hogy a .classpath fájlt miért nem zárja ki a .gitignore?
    Az alábbi jelenleg a .gitignore tartalma

    # Java
    *.class
    *.jar
    *.war
    *.ear

    # Eclipse
    .project
    .classpath
    .settings

    # Idea
    .idea
    *.iml
    *.iws
    *.ipr

    # OS
    Thumbs.db
    .DS_Store

    # Gradle
    .gradle
    !gradle-wrapper.jar

    # Maven
    target

    # Build
    out
    build
    bin

    # Other
    *.log
    *.swp
    *.bak

  • #68216320
    törölt tag

    Üdv!
    Van egy naptáram, amiben van pár hiba, ha valakinek lenne kedve, ideje, ránézne? Köszönöm előre is!
    (átvariáltam úgy, hogy nem vasárnappal, hanem hétfővel kezdődik, de ha a hónap első napja vasárnap, akkor valamiért hétfőre ugrik, illetve az aktuális nap kiemelés kicsit elcsúszik jobbra )

    <script type="text/javascript" language="javascript">
    <!--

    var day_of_week = new Array('H','K','Sze','Cs','P','Szo','V');
    var month_of_year = new Array('. Január','. Február','. Március','. Április','. Május','. Június','. Július','. Augusztus','. Szeptember','. Október','. November','. December');

    var Calendar = new Date();
    var year = Calendar.getYear();
    var month = Calendar.getMonth();
    var today = Calendar.getDate();
    var weekday = Calendar.getDay();

    var DAYS_OF_WEEK = 7;
    var DAYS_OF_MONTH = 31;
    var cal;

    Calendar.setDate(1);
    Calendar.setMonth(month);

    var TR_start = '<TR>';
    var TR_end = '</TR>';
    var highlight_start = '<TD WIDTH="30"><TABLE CELLSPACING=0 BORDER=0 style="width : border: solid black; border-width: 1px 1px 1px 1px; background: #99cccc"; id="kerekitesd"><TR><TD WIDTH=15><B><font color="#0006ca"><CENTER>';
    var highlight_end = '</CENTER></TD></TR></TABLE></B>';
    var TD_start = '<TD WIDTH="16"><CENTER>';
    var TD_end = '</CENTER></TD>';

    cal = '<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BORDERCOLOR=BBBBBB style="background: #f116ca";><TR><TD>';
    cal += '<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=2>' + TR_start;
    cal += '<TD COLSPAN="'+DAYS_OF_WEEK+'"BGCOLOR="#9c2fff"+" id="kerekitesc"><CENTER><B><font color="#0006ca">';
    cal += +2018 +month_of_year[month]+ ' ' + '</B>' + TD_end + TR_end;
    cal += TR_start;

    for(index= 0; index < DAYS_OF_WEEK; index++)
    {

    if(weekday -1 == index)
    cal+=TD_start+'<font color="#9c291c"><B>'+day_of_week[index] +'</B></font>'+TD_end;

    else
    cal += TD_start + day_of_week[index] + TD_end;
    }

    cal += TD_end + TR_end;
    cal += TR_start;

    for(index= 1; index < Calendar.getDay(); index++)
    cal += TD_start + ' ' + TD_end;

    for(index=0; index < DAYS_OF_MONTH; index++)
    {
    if( Calendar.getDate() > index )
    {
    week_day =Calendar.getDay();

    if(week_day == 1)
    cal += TR_start;

    if(week_day != DAYS_OF_WEEK)
    {

    var day = Calendar.getDate();

    // mai nap kiemelése
    if( today==Calendar.getDate() )
    cal += highlight_start + day + highlight_end + TD_end;

    else
    cal += TD_start + day + TD_end;
    }

    if(week_day == DAYS_OF_WEEK)
    cal += TR_end;
    }

    Calendar.setDate(Calendar.getDate()+1);
    }

    cal += '</TD></TR></TABLE></TABLE>';

    document.write(cal);

    </script>

    Ezt a JavaScript topicban tedd fel programkódként formázva vagy ha hosszú pastebin-re tedd és linkeld. Ez így átláthatatlan azon kívül, hogy nem Java.

  • #68216320
    törölt tag

    Nincs response request nélkül. Ezt valami aktív technológiával lehet megoldani (vagy valami frameworkkel, vagy sima webservice + időzített ajax lekérés)

    Nincs response request nélkül

    Igen, tudom. Pont ez okozza a problémát. A swing-es gui-ban ugye így van megcsinálva (ugyebár ott sima ügy) és megszokták.
    Az ajax esetében esetleg valami megoldással azt volna csak gondolom első lépésben megkérdezni, hogy volt-e változás. Már csak a felesleges kommunikáció minimalizálása érdekében. Ha volt akkor kellene gondolom a táblázat adatait frissítenem.

    Ha fw akkor milyen framework volna megfelelő?

  • #68216320
    törölt tag

    Sziasztok, egy kis segítségre volna szükségem egy probléma megoldását illetően.

    Szükséges volna egy WEB-es felületen egy SQL tábla adatait táblázatosan megjelenítenem.
    A problémát az okozza, hogy amolyan "observer"-es megoldással, ha az SQL tábla adatait egy másik felhasználó megváltoztatja akkor automatikusan ennek az én webfelületemen is frissülnie kellene.
    Milyen megoldással/technológiával lehetne megoldanom, hogy az observer-em ilyenkor request nélkül egy response-t csináljon a servlet-es webfelületen?

    Update: A dolog még csak tervezési fázisban van, teljes szabadság van az adott technológia kiválasztásában. Egyetlen megközés, hogy Tomcat alatt fusson.

  • #68216320
    törölt tag

    Sziasztok!

    Kérnék szépen egy kis segítséget!

    Egy olyan "programot" szeretnék írni ami egy egyenletett lefutatt majd az ott kapott eredményel lefutatná mégegyszer az egyenletett. Próbálkoztam for ciklussal, de sajnos nemjött össze.

    Kezdő érték mondjuk 16(x) lenne és az egyenlet z=(x/2)+4
    Ismétlésnek köszönhetően ezek az értékek jönnének ki:

    16 (ez a kiindulási érték)
    12
    10
    9
    8,5
    8,25

    (Java programnyelvvel egyelőre csak ismerkedek...)

    Programot úgy szeretném megírni, hogy elég legyen a kiindulási értéket átírni, esetleg az egyenletett, majd a ciklusnál az ismétlési számot és utána a program annyiszor futan le azzal az egyenlettel ahányszor szeretném, mindezt úgy, hogy az előzőből számolna tovább.

    Például ha szeretném a W nagy-nagyon sok számadik értéket megkapni akkor ne így kelljen leírnom annyiszor. Persze akkor más szám, más egyenlettel aminek értelme is lenne.

    Előre is köszönöm a segítségeteket!

    public static void main(String[] args) {
    double W0 = 16;
    {
    System.out.println(W0);
    }
    double W1 = (W0 / 2) + 4;
    {
    System.out.println(W1);
    }
    double W2 = (W1 / 2) + 4;
    {
    System.out.println(W2);
    }
    double W3 = (W2 / 2) + 4;
    {
    System.out.println(W3);
    }
    double W4 = (W3 / 2) + 4;
    {
    System.out.println(W4);
    }
    double W5 = (W4 / 2) + 4;
    {
    System.out.println(W5);
    }
    }
    }

    Nem biztos, hogy jól értem, de esetleg valami ilyesmi?

    private static double keplet(double num) {
    return num/2+4;
    }

    public static void main(String[] args) {
    double num = 16;
    int count = 10;
    for (int i = 0; i < count; i++) {
    num = keplet(num);
    }
    System.out.println("Result: " + num);
    }

    Count értelemszerűen annyi, ahányszor számolni akarsz. Num a kezdeti érték.

  • #68216320
    törölt tag

    A swing is elvesztegetett idő, egy munkaadó se kiváncsi erre. Inkább valami mást tanulj, Vaadinon kivűl még ott van a GWT, Struts, de a JSF vagy JSP is hasznosabb, vagy JPA, Hibernate, Eclipselink, Spring, Junit, Mockolás, TDD, SQL stb.
    Ha már könyvből tanulsz "az agyhullám java" sokkal hasznosabb, aktuálisabb és érthetőbb. Ráadásul a Youtube-on sok jó java oktató videó van, angolul rengeteg, de még magyarul is sok.

    Köszi, meglesem akkor ezeket :)
    Mondjuk most megvettem a "Szoftverfejlesztés Java SE platformon" című könyvet.
    Ez úgy tűnik jóval korrektebb információkat tartalmaz.

  • #68216320
    törölt tag

    Szerintem kár erre vesztegetni az idődet. Az új irány: REST és microservices :P
    Vagy android

    Sejtettem én, hogy lejárt dolog ez. :) Köszi.
    A tankönyvben swing van még. Gondolom azt azért nem árt elsajátítani, még ha a vaadin-t is favorizáljátok mostanában, igaz?

  • #68216320
    törölt tag

    Teljesen zöldfülüként kérdezem, hogy egy tankönyvben szereplő JavaApplet-eket érdemes megcsinálnom? Használ valaki böngészőben ilyet vagy mostanra teljesen HTML5+CSS+JS vette át a helyét?
    Elég régi kiadás a magyar 24óra sorozat JAVA része.

  • #68216320
    törölt tag

    Mindenképpen UTF-8 kell? Nem jó a cp1250?

    Az a gond, hogy a forráskódot és a class-t felhasználnák majd osx es linux rendszereken is. Uft8 kellene. Igazából már csak a bevitelt kellene valahogy megoldani. Gondolom az UTF8 ékezetek 2bytes tárolása okoz gondot, de egyelőre nem tudom pontosan mi a gond csak tippelek.
    Kipróbáltad ahogy leírtam és neked is ezt az eredményt adja?

    (#9142) disy68:

    Nálam a fentebb leírt UTF-8 beállításaimmal fordítva/futtatva az INPUT_MESSAGE helyesen jelenik meg, de ékezetet beírva a out.println(String.format("key: '%s'", scanerObj.next().charAt(0))); sornál ugyanazt a hibát adja, mint amit már mutattam.

  • #68216320
    törölt tag

    Jelenleg ott tart a dolog, hogy jó a szöveg megjelenítése, ha a fordító és a VM is UTF8-al van indítva.
    Viszont ékezetes bevitelnél hibát kapok:

    OS X-en nincs vele gond.

    import java.util.*;

    class ReadTest {
    public static void main ( String[] arguments ) {
    System.out.println("Írj be valamit: ");
    char key;
    Scanner scanerObj = new Scanner(System.in,"UTF-8");
    key = scanerObj.next().charAt(0);
    System.out.println("key: ' " + key + "'");
    }
    }

    Fordító:
    javac -encoding UTF-8 %Name%.java

    VM:
    chcp 65001 (utf8-ra váltja a konzolt)
    Java -Dfile.encoding=UTF-8 %Name%

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

  • #68216320
    törölt tag

    Jelenleg ott tart a dolog, hogy jó a szöveg megjelenítése, ha a fordító és a VM is UTF8-al van indítva.
    Viszont ékezetes bevitelnél hibát kapok:

    OS X-en nincs vele gond.

    import java.util.*;

    class ReadTest {
    public static void main ( String[] arguments ) {
    System.out.println("Írj be valamit: ");
    char key;
    Scanner scanerObj = new Scanner(System.in,"UTF-8");
    key = scanerObj.next().charAt(0);
    System.out.println("key: ' " + key + "'");
    }
    }

    Fordító:
    javac -encoding UTF-8 %Name%.java

    VM:
    chcp 65001 (utf8-ra váltja a konzolt)
    Java -Dfile.encoding=UTF-8 %Name%

  • #68216320
    törölt tag

    Help! :)

    Van egy mintaprogramom, ami konzolból vár a felhasználótól karaktereket és ír ki szöveget.
    OSX-en szépen fut az UTF-8-al, de Win alatt helytelenül jeleníti meg az ékezeteket, mivel az UTF8 2Byte-ot kiírja.
    Ha chcp 65001-vel átváltom Win alatt a command line kódolását, akkor a kijelzés jó lesz, de bevitelnél meg sem jelennek az ékezetes karakterek.

    Hogyan lehetne ezt rendesen használni?

  • #68216320
    törölt tag

    JAVA nyelvel ismerkedem. PHP-s előképzettségem már van.
    Mielőbb szeretnék majd JAVA SE-vel foglalkozni csapatban, Junior fejlesztőként. Úgy vélem így lehet a legtöbbet a leggyorsabban ellesni :)

    Bp-en ajánlanátok nem elszállt áron oktatást, ahol tényleg gyorsan lehet az alapokat elsajátítani?
    Illetve Bp-en milyen fizetési sávok vannak ezen a területen?

  • #68216320
    törölt tag

    Mi lehet az oka annak, hogy a java.exe nem találja meg a lefordított .class állományt, holott a path rendben van?
    [kép]

    Sok állítgatás után, most működik. De hogy mi volt a baja ... :)

  • #68216320
    törölt tag

    Mi lehet az oka annak, hogy a java.exe nem találja meg a lefordított .class állományt, holott a path rendben van?
    [kép]

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