- iPhone topik
- Hivatalos a OnePlus 13 startdátuma
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Android szakmai topik
- Milyen okostelefont vegyek?
- Apple Watch
- A hagyományos (nem okos-) telefonok jelene és jövője
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Fotók, videók mobillal
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
Új hozzászólás Aktív témák
-
orc88
őstag
válasz
RexpecT #10222 üzenetére
Google Drive-ba felraktam kompletten ami kell a feladathoz, és ahol elakadtam.
Pastebin a fő osztályról.
Ami még kellhet hozzá a 'tranzakció' osztály (tranzak.java):public class tranzak {
public int id;
public ArrayList<String> term;
public tranzak(ArrayList<String> _term) {
this.term = _term;
}
public tranzak(int _id, ArrayList<String> _term) {
this.id = _id;
this.term = _term;
}
public void getTerm() {
for (int i = 0; i <= this.term.size()-1; i++) {
System.out.println(this.term.get(i));
}
}
public void addTerm(String _ujterm) {
this.term.add(_ujterm);
}
}Amire rájöttem időközben:
Main.class-ban van egy ciklus ami a problémámat okozza:int index = 1;
ArrayList<String> temp = new ArrayList<String>();
tranzak temptranz = new tranzak(0, temp);
for (int i = 0; i <= beolv.size()-1; i++) {
if (beolv.get(i).equals("F")) {
temptranz.id = index;
System.out.println(temptranz.id);
System.out.println(temptranz.term);
//Idáig minden OK, szépen megkapja az (átmeneti) tranzakció az azonosítóját és a terméklistát
trs.add(temptranz);
//Beállítom a változókat a következő tranzakcióhoz
ind++;
temptranz.id = 0;
temptranz.term.clear();
} else {
temptranz.addTerm(beolv.get(i));
}
}
//Viszont amikor kiiratnám a végleges tranzakciókat tartalmazó listát már rossz ID-t és üres terméklistát kapok vissza
for (int i = 0; i <= trs.size()-1; i++) {
System.out.println(trs.get(i).id);
System.out.println(trs.get(i).term);
}Itt a temptranz-ba gyűjtögetem az információkat mind addig amíg "F"-et tartalmazó sort nem talál a ciklus. Ha "F"-hez ér, akkor az eddig összegyűlt adatokkal az átmeneti temptranz objektumot egy az egyben hozzáadnám az ArrayListhez ami tranzakcio objektumokat tartalmaz. A probléma ott jön elő, hogy a
trs.add(temptranz);
sor után kinullázom az ideglenes Stringeket tartalmazó Listát, és valamiért (ezt lehet tudnom kéne) hiába adtam már hozzá az objektumot, kitörli belőle a String lista tartalmát és üresen adja át
Szóval a probléma okára nagyjából rájöttem, közben meg is oldottam Listák nélkül a feladatot, de kíváncsi lennék, hogy mi okozza pontosan, és hogyan kerüljem el a jövőben az ebből adódó hibákat.
Ui.: a sok próbálkozás és ctrl+c / ctrl+v után lehet maradt benne 1-2 fölösleges sor és csúnyán nézhet ki, utólag is bocsi
-
bambano
titán
válasz
RexpecT #8145 üzenetére
ha az üzemeltetés minimális szinten is hozzáértő, akkor nem hagyja, hogy egy olyan gépen buildelődjön a program telepítője, amiről nem tudja, hogy mi van rajta.
tehát minden esetben, amikor a programozó csinálja a telepítőt (nyilván nagyobb projektet feltételezve), ott az üzemeltetés kaszkadőrködik.
ui: láttál már nagyobb halom vírusos telepítőcd-t?
-
Karma
félisten
válasz
RexpecT #8145 üzenetére
A modern világ jó részében vagy az üzemeltetés, vagy egy teljesen automatizált folyamat végzi a buildelést és az élesítést is. Persze úgy, hogy először a tesztek is lefutnak. A fejlesztő saját gépén ad-hoc fordított csomagok felett régen eljárt az idő, mert mi van, ha szabadságon vagy, vagy baleset ér? Égjen fel a cég?
Szerintem nézz utána pár build szervernek. Én leginkább a Jenkinset és a TeamCityt ismerem, az előbbit javasolnám kb. bármilyen Java-s projekthez. De tény, a Maven is elég fontos szereplő, hiszen azt tudja meghívni a szerver.
-
Karma
félisten
válasz
RexpecT #7586 üzenetére
Biztos, hogy a certificate-tel van probléma, bár most nem tudok jobban belefolyni.
Esetleg nézd meg ezeket a JVM opciókat, mind a debuggolás, mind a trust store manuális beállítása segíthet abban, hogy ellenőrizd, biztosan a jó cacerts fájlt húzza be a rendszer például.
-
axioma
veterán
válasz
RexpecT #7558 üzenetére
Ezzel mi szivtunk mar... foleg akkor, ha a 32 bites frissebb verzios volt, mint a 64 bites, emlekeim szerint mas volt az eredmeny total commanderbol inditva ugyanazt, mint a telepitett ikonjarol. (TC-bol azert szerette'k a userek inditani, mert ha a TC adminkent futott - eleve ugy tette ki az asztalra az ikont -, akkor az abbol inditott jre is, es tudott akar "sajat maga ala" file-okat masolni; mig a normal userkent inditott, akkor is ha maga a user admin jogu, a jre csak normal user joggal futott, es nem tudott a vedett konyvtarakba file-t letrehozni.) Anno a regebbi kod az uj jre-vel azon hasalt el, hogy bejott a nemzeti beallitasok kezelese (tizedesvesszo a pont helyett), es az egyik kollega egy tortszamokbol allo listat (egyszeru gps koord.) a vesszo mente'n split-elt...
-
floatr
veterán
válasz
RexpecT #7555 üzenetére
A tanusítvány eleve gond lehet, de még azt is el tudom képzelni, hogy a tanusítványban az URL más, mint amit meghívnál, pl www van az elején.
Ha végképp nem boldogulsz, akkor a tanusítvány ellenőrzését ki lehet iktatni fejlesztés/tesztelés idejére:
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager(){
public X509Certificate[] getAcceptedIssuers(){return null;}
public void checkClientTrusted(X509Certificate[] certs, String authType){}
public void checkServerTrusted(X509Certificate[] certs, String authType){}
}};
// Install the all-trusting trust manager
try {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, trustAllCerts, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {return true;}
});
} catch (Exception e) {
;
}de ez csak tüneti kezelés
-
WonderCSabo
félisten
válasz
RexpecT #7539 üzenetére
Én biztos használnék.
Szerintem megéri, hogy kevesebb a befektetett meló, és a hibák száma is csökken. Nem kell megírni újra azt, amit már nagyon sokszor, nagyon sokan, jobban, hatékonyabban, hibamentesen és agyontesztelve már megírtak.
Persze ha a projektben valamiért számít a bináris mérete, akkor talán nem fér bele a dolog... De ez szerintem most már egyre kevésbé jellemző.
-
Szmeby
tag
válasz
RexpecT #6966 üzenetére
DateTime now = new DateTime();
DateTime tomorrow = now.plusDays(1);
if (tomorrow.isAfter(now)) {
doIt();
}java.util.Date típusra ide-oda tud konvertálni is, ha szükséged van rá.
Vagy ha nem bírod a 3rd party librarykat, akkor java8 LocalDateTime?
LocalDateTime.from(new Date().toInstant()).plusDays(1);
Rengeteget szívhatsz a másodpercek babrálásával. Az, hogy 1 óra 3600 másodperc, pont annyira igaz, mint hogy egy év 365 nap... vagy mint fentebb, hogy 1 nap 24 óra. Általában igaz, kivéve a kivételek esetén.
A daylight-savig csak egy a sok hülyeség közül. Vannak szökőévek, elcsalt másodpercek, időzónák, saját elcseszett DLS megoldásokkal, borzalom.
Javaslom a jodát, hasznos kis eszköz. -
axioma
veterán
válasz
RexpecT #6969 üzenetére
1. ha csak napi 1x kell akkor nem tok mind1, hogy telen 7-kor nyaron 6-kor?
2. ha nem mindegy, akkor is ugy csinalnam, hogy utolso futasi idohoz az altalam irt modon adok 1 napot, es ahhoz hasonlitok -- mert ez fgtl attol, hogy esetleg milyen egyeb valtoztatasok lesznek a naptarban (en ugy 30 evvel ezelott gyerekkent az azt hiszem Furkesz c. gyerekmusorban lattam a jovo naptarat, amit mar akkor jelentos mennyisegu orszag elfogadott, ehhez kepest arrol sincs azota se semmi -- a munkaltatok es konyvelok a'lma, minden negyedev tok azonos 31-30-30 honapokkal es mindig hetfovel kezdodik stb.)
3. a daylight saving ma mar a jelentos mernoki munka miatt amit az ilyen esetekre koltenek mar ossztarsadalmilag boven negativ egyenlegu... -
axioma
veterán
válasz
RexpecT #6966 üzenetére
En lehet hogy forditva csinalnam... nem kovetkeztetni a hossz modositasara, hanem az aktualis datumot visszabontani datumra es idore, datumbol 1 levon (az mar csak egyszerubb, me'g ha honaphataron is van), az idovel egyutt vissza long-ra, es az a tartomany eleje. Ha jol ertem, hogy mit akarsz csinalni (azaz a mai 7:00am lefuttataskor az a lenyeg, hogy a tegnapi - helyi ido szerinti - 7:00am ota eltelt idoszakba beleesest akarod tesztelni).
-
WonderCSabo
félisten
válasz
RexpecT #4636 üzenetére
Az én megoldásom ebben az esetben konkrétan nem gyorsabb, hiszen minden egyes beszúrásnál ki kell keresni, hogy van-e már elem, ez HashMap esetén konstans idejű, de lassabb mintha csak egy List-be szúrsz be, TreeMap esetén pedig logaritmikus. Továbbá az is lassítja, hogy ha még nem volt az adott kulccsal elem, akkor létre kell hozni neki a Listet. Cserébe kevesebb helyet foglal, mint a Te megoldásod, hiszen nem duplikálja a kulcsokat (persze List-ek plusz helyet foglalnak, de ezt az előző simán kompenzálja). Az enyém ott gyorsabb, ha kulcsonként kell lekérni az elemet, a tied lineáris ebben az esetben, enyém a hash esetén konstans, TreeMap esetén logaritmikus. De ebben a példában ez nincs kihasználva. A TreeMap sorrendben is tárolja a kulcsoakt megadott rendezés szerint (String esetén alapból ABC sorrend, a hash-es megoldás viszont random. Továbbá ez egy szebb megoldás, hiszen jobban leírja a feladatot, egy kulcs-hoz több elem tartozik, és csak standard könyvtárbeli elemeket használ. A Guava persze még jobb lenne, de teljesítmény szempontból ugyanazt tudja kb, mint az én megoldásom, csak szebb apit ad hozzá.
-
modder
aktív tag
válasz
RexpecT #4377 üzenetére
Igen, itt a kérdés, hogy A osztályt ki példányosítja. Ha B, vagy már egyébként létre van hozva, és B ismeri, akkor:
public interface A {
public void processObject(Object o);
}
public interface C {
/**
* processXml(String xml, A a) feldolgozza az xml-t, és az eredményt átadja
* a-nak A#processObject(Object o)-n keresztül
*/
public void processXml(String xml, A a);
}
class B {
A a;
public void newXml( String xml ) {
new C().processXml(xml,a);
}
}
public class CImpl {
public void processXml(String xml, A a) {
Object o = parseXml(xml);
a.processObject(o);
}
}Ha C-ben még szükséged van A-ra, akkor a C konstruktorában is átadhatod, de ez így tisztább, jobban látni a függőséget. Az eredeti kérdés interfészekre vonatkozott. Azt nem tudod meghatározni interfészekkel, hogy a C#processXml() implementációja mi legyen, ezért JavaDoc-ban szokták definiálni, hogy miylen további felelőssége van egy metódusnak.
-
Taoharcos
aktív tag
válasz
RexpecT #2803 üzenetére
Mivel a Gui osztály konstruktorában szerepel az initLoad meghívása ezért felesleges azt újból meghívni. El kell dönteni honnan akarod meghívni. Automatikusan a konstruktorból, vagy külön metódusként, de akkor viszont ne szerepeljen a konstruktorban. illetve lehet hogy a láthatóság miatt az initLoad eljárást public-á kéne tenned.
-
modder
aktív tag
válasz
RexpecT #2790 üzenetére
JavaDB ( másik nevén Apache Derby ). Ezt tartalmazza a Java SE, így mindenhol elérhető adatbázismotor. Asztali alkalmazásokhoz kiváló, bár van pár dolog, amit nem tud, pl. nincsen benne full text search.
Ha egyáltalán nem használtál még semmilyen adatbázist, akkor a tanulás 60%-a inkább az SQL-re fog rámenni, 30% arra, hogyan használd a JDBC-t, maradék 10% meg arra, hogyan lődd be a Derby-t.
Kiindulásnak http://docs.oracle.com/javadb/ -> http://docs.oracle.com/javadb/10.8.2.2/getstart/index.html
Új hozzászólás Aktív témák
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- 2db Dell PowerEdge R740 2U Rack Szerver és 3db Netapp FAS2040 NAS
- GYÁRI TÖLTŐK DELL LENOVO HP FUJITSU TOSHIBA Macbook---------- Budapest,/MPL/Foxpost
- Bomba ár! HP EliteBook 830 G5 - i5-8G I 8GB I 256GB SSD I 13,3" FHD I HDMI I Cam I W11 I Gari!
- BenQ PD-3200-U Monitor - Designer 4K 32"
- 10% -tól elvihető.Országosan a legjobb BANKMENTES részletfizetési konstrukció! ACER PREDATOR HELIOS
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: PC Trade Systems Kft.
Város: Szeged