Hirdetés
Új hozzászólás Aktív témák
-
floatr
veterán
Ha már adott a rendszer, és nem szégyellném használni az OS adottságait, és shell parancsokat osztogatnék
Persze meg lehet kézzel csinálni a file másolgatást is, de a binugz shell parancsokkal gyorsabban lehet haladni, bár ezzel kötöd magad a rendszerhez.
-
floatr
veterán
Az új osztály definíciójánál az ősosztály paraméteres. Vagy konkretizálod, hogy mi a paraméter, vagy hagyod eredeti formájában. A paraméterre vonatkozó megszorítást (Termek) csak az éppen definiált osztálynál tehetsz. Ez a megszorítás annyit tesz, hogy a fordító csak olyan Raktar objektumot enged létrehozni, aminek a paramétere Termek típusú, vagy annak leszármazottja. Ha Gyumolcs paraméterrel hozod létre, akkor onnantól kezdve már nem adhatsz hozzá bármilyen Termek leszármazottat, csak ami a Gyumolcs-ből ered.
Ha pl a Kifli is termék (de ugyebár nem Gyumolcs), akkor ez nem fog fordulni:
new Raktar<Gyumolcs>().add(new Kifli());
mert ez egy "gyümölcsraktár" példány, ahová kiflit nem lehet raktározni
szerk.:
a paraméteres leszármaztatásnál vagy az osztály definíciójakor szabod meg, hogy mi a paraméter, vagy az osztály is paraméteres lesz. Ha paraméteresen hagyod, akkor megmondhatod, hogy milyen ősosztályból lehet paraméter használni, amikor az osztályt létrehozod. A megszorítást meg azért az új osztálynál kell bevésni, mert arra vonatkozik a megszorításod, nem az ősosztályra.[ Szerkesztve ]
-
floatr
veterán
válasz alratar #4885 üzenetére
Ha a cél a Vector használata, akkor nem életszerű.
Az ilyen nyilvántartásokat Map vagy Set használatával sokkal egyszerűbb, és gyorsabb is kezelni. Ha rendezési elv is van mögötte, akkor vannak rendezhető Map-ek is. Nem véletlen, hogy általában adatbázist is raknak mögé. -
floatr
veterán
válasz alratar #4878 üzenetére
Akkor hadd szóljak ki egy kicsit az enterspájzból én is. Ha egy metódusnak a neve "set...", de nem értéket állít be, hanem összead, akkor -- még ha azt is csinálná, amit kellene -- egy kód review-nál fognak hátba vágni. Másrészt meg sokak számára fájó pont, de célszerű legalább az elnevezések esetében angolt használni. Ha egy végzős egyemistát bedobnak a mély vízbe, nagy eséllyel kerülhet olyan projektbe, ami külföldi kooperációban készül.
De ha a konkrét példánál maradunk, akkor sokkal hatékonyabb lenne egy Map-be tárolni, és kulcs (név) alapján keresni, vagy Set-be pakolni, és hashCode/equals metódusokat használni. Ha ez valami oktatáshoz kötődik, akkor nem értem, hogy miért nem lehet életszerűbb példákon keresztül oktatni.
-
floatr
veterán
válasz WonderCSabo #4834 üzenetére
Majdnem 100%, hogy volt ilyen a standard lib-ben. De mindegy, legalább ez is tisztázódott
-
floatr
veterán
válasz WonderCSabo #4828 üzenetére
Az ArrayList egy equals metódust hív meg. Ez az Integer-ben instanceof-al kezdődik, ezt néztem be
Valamiért nekem még mindig az volt a fejemben, hogy az equals nullptr-t dob akkor is, ha a paraméter null.
[ Szerkesztve ]
-
floatr
veterán
válasz WonderCSabo #4825 üzenetére
Ja, instanceof. Nem szóltam
(#4826) Karma nem, az ArrayList-nek saját implementációja van. Legalábbis abban a verzióban ami most kéznél van
Amúgy bármikor bejöhet az, hogy a listádba egy null is becsúszik tőled többnyire függetlenül is
[ Szerkesztve ]
-
floatr
veterán
-
floatr
veterán
válasz S0m30n3 #4813 üzenetére
Akkor fogadj el pár tanácsot. Ha bármiféle szoftvert készítesz, kell lennie egy tervnek, hogy hogyan akarod használni. Ebből lesznek funkciók, azt összeírod bárhová, az alapján ki tudod találni -- ha nem adott -- hogy milyen technológiát érdemes használni. Ezekből már ki tudod sakkozni, hogy milyen részletei lesznek az egésznek, adatmodellel együtt. Aztán egyből összerakod az alapokat: projekt egy IDE-ben, adatbázis szigorúan TCP alapon projekthez beállított júzerrel. Ez utóbbi persze nem triviális, mert minden adatbáziskezelő máshogy települ. Az SQL Server domain alapon szeret beléptetni, az Oracle TNS listener-je alapból nem indult, amikor én használtam, a MySQL és PostgreSQL telepítéskor beállítható, a derby/javadb csomagjait sokáig meg sem találtam... ezeket mind tudni kell kezelni.
Ha ezekkel megvagy, akkor lehet folytatni minden mást, mert ezek nélkül még teszteket sem igazán lehet faragni, nemhogy komolyabb dolgokat. Ha nem megy a beállítás, akkor addig kell a google-t faggani, amíg meg nem lesz. Érdemes ezekre a dolgokra kifejezetten rágyúrni, és összeírni egy kis doksiba, blogba, mert el fogod felejteni. Érdemes lehet biankó projekteket készíteni, ahol ezek a dolgok már eleve benne vannak, és később elég csak kopipésztelni. Már ha komolyabban érdekel az egész...
-
floatr
veterán
válasz S0m30n3 #4798 üzenetére
Ahogy Karma is mondja. Engedélyezni kell, hogy adott ip címen meg lehessen szólítani a 1433-as TCP porton, és hogy user/pwd párossal lehessen csatlakozni. Ez alapból le szokott lenni tiltva, és csak win domain becsatlakozást fogad el. Ami a jelenlegi kódodban van, az szintén domain alapú azonosítással futna, de ezek szerint nem tetszik a szervernek a te géped jelenlegi domain-beli állapota, vagy nem vagy jogosult mint domain júzer.
Emellett érdemes még egy egyéb felhasználót létrehozni az adatbázisodhoz, aminek jelszót adsz, és nem sa-t használni, mert ha netán élesbe kerül egy fejlesztésed, akkor csúnya problémákat tudsz ezzel magadnak okozni.
Azt esetleg javasolnám, hogyha egy kicsit is komolyabb a fejlesztés, akkor legalább egy connection pool-t használj, ha mást nem is.
-
floatr
veterán
válasz WonderCSabo #4793 üzenetére
Lehet h velem van a baj, de már 15 évvel ezelőtt is elvétve láttam csak használatban java serialization-t (max RMI). Amikor fősulira jártam, meg egyemista voltam, még nem oktatták, így magamtól tanultam gyakorlatilag mindent, de ez most szíven ütött Többek közt azért is mert olyan témát feszeget, aminek a gyakorlatban nullához konvergál a határhaszna. Tipikus egyemista feladat. Nem véletlenül használnak inkább XML-t vagy JSON-t.
Az egészben az a mókás, hogy ha a való életben beleszaladnál egy ilyen problémába, hogy meg kéne fejteni a működést, akkor olyan mérnökösen unit tesztelnéd, hogy biztosra legyél benne, és ne rúgassad ki magadat egy esetleges tárgyi tévedésért, ami -- valljuk be -- bármikor beüthet. Ellenben az egyemista vizsgázó kolléga (de a vizsgáztató is) nézne nagyokat, ha azt kapná feladatnak, hogy egy kódolt, aláírt SAML alapján kéne beléptetni egy felhasználót, mondjuk könnyítésképpen úgy, hogy a kliens a jó kulcsot és aláírást adja meg
-
floatr
veterán
válasz Superhun #4751 üzenetére
Csak megnéztem a dolgot, de érdekes [link]
testArrayListAdd 234.896 ops/msec
testVectorAdd 274.886 ops/msec
testArrayListTraverse 1718.711 ops/msec
testVectorTraverse 34.843 ops/msecvégülis csak majdnem két nagyságrendi különbség van a kettő közt. Elhanyagolható Majd amikor nem példaprogramokból él meg az ember, és az ügyfél a haját tépi, hogy miért tart 10 percig egy funkció, akkor majd könnyebb lesz megérteni, csak egy többezres kódbázisú projekten újra végigfutni azért elég necces lesz. Pláne ha nyomorultul van megtervezve a struktúra.
-
floatr
veterán
válasz WonderCSabo #4748 üzenetére
Arany ember vagy
-
floatr
veterán
válasz WonderCSabo #4746 üzenetére
Ja, csak elcsesztem a paraméterezést a table/map esetében
Helyesen Hashtable<K,V> meg HashMap<K,V>
-
-
floatr
veterán
válasz smallmer #4729 üzenetére
Ha egyébként tényleg érdekel az ékezethelyes rendezés, akkor nézz be ide
-
floatr
veterán
-
floatr
veterán
Menet közben beugrott a triviális eset, amikor kell runtime kivétel. Van egy alkalmazásod, amihez AOP-t kell használni (pl. tranzakciókezelés, jogosultságkezelés). A megpatkolt metódusod nem tudhat róla, hogy milyen egyéb mechanizmusok ülnek a nyakába, ezért deklaráltan nem dobhat rajta kívül álló extra kivételeket -- ez sértené is a szuverenitási elvet. Ellenben az advise végrehajtása közben történhetnek olyan dolgok, amikor nem tudsz egyebet csinálni, mint dobni egy kivételt -- pl jogosulatlan hozzáférés esetén. Ezt a kivételt nem tudod sehol sem deklarálni, ezért nem ellenőrzött formában dobod el, amit max a framework konténere láthat
-
floatr
veterán
válasz M_AND_Ms #4724 üzenetére
és (#4725) WonderCSabo
Egyszerűbb esetekben hasznos, mert nem akar senki sem vájkálni a felszín alatt. Amikor viszont egy kicsit összetettebb dologra kerül a sor, eleinte csak vakarod a fejedet, de már futottam bele megoldhatatlan problémába.
A konkrét kódra nem emlékszem már, de a lényege annyi volt, hogy annotációs SQL-el működő perzisztencia motor leszármaztatott interfészeknél elvesztette a fonalat, amikor a metódusokat override-oltam. Ennek az oka a felszín alatt lévő tényleges kompatibilis implementáció, hogy egyszerűen Object-et használ a típusparaméter helyett. Ez meg letarolja az OOP-alapelveket.
Ha lesz egy kis időm rá, megpróbálom rekonstruálni a dolgot.
-
floatr
veterán
válasz M_AND_Ms #4716 üzenetére
Vannak teoretikusok, akik mindenbe belekötnek, amikor megírják a könyveiket. Az ellenőrzött kivételek a saját kódodat erősítik, közvetlen megoldásokkal. A RuntimeException származékok pedig pl. egy konténert címeznek meg valami fatális tévedéssel. Az egyik legjobb példa erre, amikor SOA backended van, és központosított hibakezeléssel akarsz kommunikálni a kliens felé. A nagyobb problémákat egyszerűen nem lehet vagy nem éri meg ellenőrzött kivételekkel visszavezetni, amikor a konténer ezt automatikusan elvégzi egy kis testreszabással.
De ha már itt tartunk, akkor a generics inkább egy baromi nagy tervezési hiányosság, mint ez
-
floatr
veterán
Lehet h van olyan, aki vitatja
Egy metódus kódjában keletkező kivételeket vagy elsikálod helyben, vagy "delegálod" a metódust hívó félnek. Ha nem foglalkozol vele metóduson belül, akkor azt deklarálni kell. Ez nem csak a fordító idegeit nyugtatja, de a QA-hoz sem árt. Önkéntelenül is leellenőrzöd, hogy megfelelő-e a kivételkezelési láncod.
Amúgy a kivételeket úgy általában sokan nem használják jól, nem csupán a deklarációt.
-
floatr
veterán
Anno a Netbeans-ben jelent meg először a Matisse, amit a MyEclipse is "átvett". Az tényleg elég egyszerű, bár a generált kódra már nem mondanám ugyanezt. Netbeans alatt még hagyján, mert amíg azt használtam, az IDE írásvédetté tudott tenni egy file-on belül kódrészleteket, így kézzel nem tudta az ember összebarmolni a builder által megértett kódot. MyEclipse alatt viszont nem tudok ilyesmiről.
-
floatr
veterán
Erre a kérdésre jó választ nem fogsz találni. Most jobban végiggondoltam, hogy nálunk mi alapján megy a felvételiztetés, és nem vagyok tőle boldog. A CTO-val beszélve mondott pár technikai jellegű kvízkérdést, amire mondjuk egy könyvben megtalálod a választ, de szvsz nem sok értéket képvisel h a speciális eseteket kisujjból vágod.
Többet számít inkább az, hogy mennyire vagy csapatban hajlandó dolgozni, mennyire vagy rugalmas, alkalmazkodó, tanulékony, beilleszkedő, mennyire van rálátásod technológiákra, és nem utolsó sorban, milyen meggyőzően adod ezt elő. Minden cégnek, minden projektnek megvan a maga technológiája, azt egy juniornak úgyis meg kell tanulnia használni, és sokszor fontosabb, ha a metodikával tisztában vagy.
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Ryzen 7 5800X / RTX 4060 / B450M / 16GB vagy 32GB RAM / 240GB + 960GB SSD / 650W
- Új Lenovo L0Q Gamer Tervező Laptop 15,6" -30% AMD Ryzen 7 7435HS 16/1TB RTX 4060 8GB FHD 144Hz
- Apple iPhone 14 Plus 128GB, Kártyafüggetlen, 1 Év Garanciával
- Samsung Galaxy S22 128GB, Kártyafüggetlen, 1 Év Garanciával
- Airpods 4 Anc
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest