Hirdetés

Keresés

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

  • 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.

  • bambano
    titán

    Üdv! Kényszerűségből ugyan, de ismerkednem kell a Java nyelvvel. Készítenem kell egy kis toolt, ami szervereken futna.

    Kronológia:
    - Java-t tanultam a suliban, kb. 15 évvel ezelőtt
    - PHP-t és C#-ot használok viszonylag rendszeresen (nem vagyok programozó, de időnként szükség van rá, munkahelyen különböző toolokat készítek)
    - alap programozási tudás megvan, de a Java-t nem ismerem nagyon
    - miért kell nekem most mégis Java? Vannak Win és Linux alapú szervereink is, és a toolnak futnia kéne mindegyiken anélkül, hogy rendszerenként kellene fejleszteni a toolt.

    A készülő mini tool adatait ini fájlban tárolnám, ehhez a ini4j library lesz a segítségemre. Nem biztos, hogy jó ötlet, de indításkor betöltöm a tárolt adatokat, futás közben dolgozom velük. A program futásának végén pedig diszkre írnám az ini adatait.

    Kérdés:
    - milyen metódus fut le mindenképpen a program terminálása előtt, amit felhasználhatnék az ini.store(configfile) futtatására?
    - van-e jobb megoldás arra, hogy a konfigurációs adatokat másképp mentsem, az előző kérdésben foglalt helyett?

    Előre is köszi!

    ha az oprendszer gyakja ki a programot, akkor nem fog lefutni semmi. szerintem az ini fájlt akkor kell menteni, amikor változott, nem akkor, amikor előre nem látható események bekövetkeznek vagy nem.

  • Szmeby
    tag

    Nem-nem, egyáltalán nem ragaszkodom az ini-hez (elsőre platformfüggetlenként ez ugrott be), ezt a properties-t is meg fogom nézni ( :R ). Alapvetően ilyenre a registry-t használnám alapesetben, de ugye mint írtam, linuxon is futtatni kéne a cuccost.

    Szerintem az lesz, hogy:
    main()
    {
    kezdő();
    .... // tényleges metódusok
    végző();
    }

    Alternatíva:
    main()
    {
       SajatClass sajat = new SajatClass();
       sajat.Futtat();
    }
    Ahol a külső osztály destruktorába tenném esetleg, vagy valami finalize.

    Nem bonyolítom túl. Abból akartam kiindulni, hogy hátha lehetne a main-t tartalmazó osztálynak egy destruktort írni, ami felszabadít mindent, és egyúttal a konfig adatokat is fájlba írja. De ahogy olvastam, ilyen nincs. Ugye, nincs?

    SajatClass sajat = new SajatClass();
    try {
    sajat.futtat();
    } finally {
    sajat.ment();
    }

    Ha kivétel történik a futtás során, a mentés akkor is megtörténik. Ez inkább javallott, mint a finalize() funkció használata. Vagy akár a sima metódus szekvencia. Mondjuk ha hiba esetén mégsem szeretnél menteni, akkor felejtsd el, amit írtam, arra tényleg jó a szekvencia.

    Neked nem kell kézzel semmit sem takarítani, a garbage collector majd teszi a dolgát, nincs destruktor. De ezt már írták. :)

  • Mr K
    őstag

    Nem-nem, egyáltalán nem ragaszkodom az ini-hez (elsőre platformfüggetlenként ez ugrott be), ezt a properties-t is meg fogom nézni ( :R ). Alapvetően ilyenre a registry-t használnám alapesetben, de ugye mint írtam, linuxon is futtatni kéne a cuccost.

    Szerintem az lesz, hogy:
    main()
    {
    kezdő();
    .... // tényleges metódusok
    végző();
    }

    Alternatíva:
    main()
    {
       SajatClass sajat = new SajatClass();
       sajat.Futtat();
    }
    Ahol a külső osztály destruktorába tenném esetleg, vagy valami finalize.

    Nem bonyolítom túl. Abból akartam kiindulni, hogy hátha lehetne a main-t tartalmazó osztálynak egy destruktort írni, ami felszabadít mindent, és egyúttal a konfig adatokat is fájlba írja. De ahogy olvastam, ilyen nincs. Ugye, nincs?

    Destruktor nincs. Finalizálás van, de az a garbage collector futásához kapcsolódik, és nincs garancia arra, hogy egy adott objektum esetén valaha is lefut - program exit-kor meg pláne, hiszen akkor majd az oprendszer úgyis takarít...

    Nem teljesen értem, hogy minek az exit hook. Egy java programnak jól meghatározott exit pontjai vannak: pl. a main() return pontja, vagy a System.exit() hívás, ezért ha kilépéskor akarsz menteni, akkor ezek elé kell elhelyezni a megfelelő kódot. Ha a program interaktív, akkor nyilván lesz valahol egy "exit" menüpont, vagy window close hook, ahová a mentés ugyancsak beköthető. Ha valamilyen egyéb keretrendszert használsz (pl. servlet engine), ami saját maga intézi a startup és shutdown tevékenységet, akkor ott lesznek specifikus exit hook-ok (pl. a servletnek van init() meg destroy() eljárása, vagy ott a ServletContextListener).

    Mint arra fentebb már felhívták a figyelmet, ha a program abnormális módon terminál (kilövik az oprendszerből, vagy pl. OutOfMemoryError kivétel keletkezik), akkor semmilyen exit hook nem fog működni. Ha erre is fel szeretnél készülni, akkor érdemesebb inkább minden alkalommal automatikusan menteni, ha az ini fájlban tárolt adatok változnak. (És ebben az esetben a kilépéskori mentés eleve felesleges is.) Persze nem tudom mi lenne itt az adatkör: az inicializációs fájl mint fogalom, néhány kilobájtnyi ritkán változó adatot sugall.

  • Szmeby
    tag

    Üdv! Kényszerűségből ugyan, de ismerkednem kell a Java nyelvvel. Készítenem kell egy kis toolt, ami szervereken futna.

    Kronológia:
    - Java-t tanultam a suliban, kb. 15 évvel ezelőtt
    - PHP-t és C#-ot használok viszonylag rendszeresen (nem vagyok programozó, de időnként szükség van rá, munkahelyen különböző toolokat készítek)
    - alap programozási tudás megvan, de a Java-t nem ismerem nagyon
    - miért kell nekem most mégis Java? Vannak Win és Linux alapú szervereink is, és a toolnak futnia kéne mindegyiken anélkül, hogy rendszerenként kellene fejleszteni a toolt.

    A készülő mini tool adatait ini fájlban tárolnám, ehhez a ini4j library lesz a segítségemre. Nem biztos, hogy jó ötlet, de indításkor betöltöm a tárolt adatokat, futás közben dolgozom velük. A program futásának végén pedig diszkre írnám az ini adatait.

    Kérdés:
    - milyen metódus fut le mindenképpen a program terminálása előtt, amit felhasználhatnék az ini.store(configfile) futtatására?
    - van-e jobb megoldás arra, hogy a konfigurációs adatokat másképp mentsem, az előző kérdésben foglalt helyett?

    Előre is köszi!

    Java konfigurációk esetén nekem először a properties fájl ugrik be, faék egyszerűségű textfile kulcs-érték párokkal. Lásd mondjuk: [link]
    Ennek "modernebb", spórolósabb változata a yaml, de ha neked az ini tetszik, biztos az is jó. Mondjuk ha nem kötött, hogy csak ini lehet, én ezért nem hoznék be egy libet, hogy néhány konfig cuccot tároljak.

    Nincs az a metódus, ami megfut, ha azt mondod a programnak, hogy kill.
    Persze ha normál terminálásra gondolsz, akkor izé... nem értem a kérdést. :D
    A main metódus a be és kilépési pont. Megírod a kezecskéddel, hogy milyen esemény hatására terminálódjon a programod, és előtte azt mentesz, amit akarsz.

    Esetleg a jvm shutdown hook-ra gondoltál? Lehet haszna, de nézz utána, hogy mikor hogyan működik, mert egy egyszerű programnál én nem biztos, hogy szórakoznék vele.

    ---

    Trubad Úr. Én szívesen megcsinálom neked. 1M HUF lesz. ;)

  • sztanozs
    veterán

    Nem muszáj, csak javasolt. Olyan ez, mintha a Google-nél nem Google eszközöket használnának :DDD

    PHP-ban is gondolkodtam, de vannak bizonyos policy-k, amik nem teszik lehetővé a webszerver futtatását a szervereken. Nem vagyok benne biztos, hogy Python környezet van-e. Java tutira van, így emiatt választottam azt.

    PHP-nak sem kell webszerver, futtathatod script módban is, közvetlenül parancssorból.

  • sztanozs
    veterán

    Üdv! Kényszerűségből ugyan, de ismerkednem kell a Java nyelvvel. Készítenem kell egy kis toolt, ami szervereken futna.

    Kronológia:
    - Java-t tanultam a suliban, kb. 15 évvel ezelőtt
    - PHP-t és C#-ot használok viszonylag rendszeresen (nem vagyok programozó, de időnként szükség van rá, munkahelyen különböző toolokat készítek)
    - alap programozási tudás megvan, de a Java-t nem ismerem nagyon
    - miért kell nekem most mégis Java? Vannak Win és Linux alapú szervereink is, és a toolnak futnia kéne mindegyiken anélkül, hogy rendszerenként kellene fejleszteni a toolt.

    A készülő mini tool adatait ini fájlban tárolnám, ehhez a ini4j library lesz a segítségemre. Nem biztos, hogy jó ötlet, de indításkor betöltöm a tárolt adatokat, futás közben dolgozom velük. A program futásának végén pedig diszkre írnám az ini adatait.

    Kérdés:
    - milyen metódus fut le mindenképpen a program terminálása előtt, amit felhasználhatnék az ini.store(configfile) futtatására?
    - van-e jobb megoldás arra, hogy a konfigurációs adatokat másképp mentsem, az előző kérdésben foglalt helyett?

    Előre is köszi!

    Ha csak egy kis tool, akkor muszáj javába lennie? Nem lenne jó python vagy valami univerzális szkriptnyelv?

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

Hirdetés