- Microsoft Excel topic
- Crypto Trade
- Súlyos adatvédelmi botrányba kerülhet a ChatGPT az EU-ban
- MinDig TV
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Rendszergazda topic
- Mindenki AI-t akar, már 2025-re is eladták a HBM chipeket
- Proxmox VE
- Kapnak egy rakás reklámot a Roblox játékosai
- ArchiCAD és Artlantis topik
Új hozzászólás Aktív témák
-
axioma
veterán
Van az nd4j-n kivul olyan library (az nem kapta meg a 3rd party approve-ot, de jo esellyel azert mert egy csomo minden nekunk felesleges dolog miatt vannak nem approve-olhato dependency-k), amelyik optimalisan tud kezelni double[][] (fix meretu letrehozas utan) tipusu matrixokon vegzett muveleteket? Optimalison azt ertem, hogy peldaul nem a double[][] van alatta mint pl. az apache math3-janak, vagyis nem megy el az ido nagy resze a java hulye 2dim indexalasaval... na meg azert van valami nd4j jellegu eszkozkeszlete (pl. elemenkenti gyokvonas pont kene meg hasonlok).
Nyilvan meg lehet irni, de fura hogy nem talaltam letezot. Ami van az minden tul altalanos akar lenni.
Igen, konkretan ebben a projektben csak masik reszen letezik mar python integracio, de akkora valtoztatas most nem menne at, hogy mindent oda attenni. Egy uj funkcio lenne de a tobbihez is hozzanyulnank, mert vannak sebesseggondok. -
axioma
veterán
válasz Aethelstone #10204 üzenetére
OK, koszi. En orulok ha nincs es megirhatom Csak azert probaltam guglizni meg kerdezni, hatha van valami, mert ki tudja. Es hat ugye a cegnek se mindegy, hogy dolgozom rajta vagy csak hasznaljuk. (Bar amennyit az nd4j-nek a sikertelen approve-jaba belefektettek, mar reg keszen lehetnek...)
Az egyetlen kerdes, hogy probaljam meg java-ban, vagy egybol C es JNI. A cucc csak nalunk fog futni (inputot general a userek altal hasznalt programhoz), nem baj ha platformhoz kotjuk. Na majd meglatjuk, nem csak rajtam mulik, koltoi kerdes volt. Sot me'g az is lehet hogy meregetjuk, hogy a mi specko felhasznalasunknal (tipikus matrixmeret 70x70 es 70x250, nem oriasi, csak a muveletek vannak sokan) mennyit hozna a C, ha adnak arra is idot.
(A fonok elsosorban egy nagyon basic matrix-muveletes interface-t akar es alarakni most az apache-ost, hatha kesobb lesz olyan nd4j verzio ami atmegy es/vagy elokerul valami jobb. Csak hat az jelenleg minden lesz csak nem gyorsabb, sot, attol hogy a lepeseket elemibbre bontja, szebb a kod de lassabb lesz, van ami 2-3x menne igy vegig az elemeken, mig a jelenlegi nativan, for ciklusokkal megirtban egyben benne lehet egy osszetettebb muveletsor. De szerencsere egyelore ugy latszik, hogy nyitott az egyeb megoldasokra.) -
Aethelstone
addikt
válasz axioma #10205 üzenetére
Szerintem jni felesleges. A Java is gyors, a szűk keresztmetszet nyilván a választott algoritmus lehet. Bár egy elimináció 70x70 esetén lassú lesz, akármiben, akárhogy írod Az apache egyébként korrekt, én is azt választanám.
[ Szerkesztve ]
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
axioma
veterán
válasz Aethelstone #10206 üzenetére
Hat, me'g ha flat-kent is kezelem es final, azert egy indexeles me'g akkor is van per elem, ha siman vegigfutok az osszesen. C-ben meg mehetne pointer aritmetikaval. Mivel ez suru muvelet, sok matrixon, lehet rajta kulonbseg, erre gondoltam.
Pont eliminalas nem kell, nem linearis egyenletrendszerrol van szo, hanem mindenfele matrixszorzasok, osszegzesek sorra/oszlopra, siman vagy negyzetesen, meg ilyesmik... csak sok. -
axioma
veterán
válasz Aethelstone #10208 üzenetére
Meglatjuk. Koszi az infokat!
-
#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");[ Szerkesztve ]
-
axioma
veterán
Vagy nagyon pentek van, vagy mindenki masnak trivialis hogy ilyen nincs... es meg hetfon is jo lesz csak felre akarom tenni a problemat es a tobbi reszt csinalni.
Tehat ha van ket osztalyom, Imp1Class es Imp2Class, akik azonos interface-t akarnak megvalositani, amiben van hogy "onmaguk" tipusa kell legyen a parameter, mondjuk van benne egy addMtx(... other) fuggveny. Ilyenkor van-e arra megoldas, hogy az other tipusa az az osztaly legyen amelyik eppen megvalosit? Mert ha az interface-t magat irom tipusnak, akkor nem lehetek biztos benne, hogy ugyanazt kapom (holott az a terv, hogy mindenkit csak sajat tipusaval szabadna osszeereszteni).
Igen, lehet ellenorizni instanceof-fal es akkor meghivni csak a sajatot amugy exception. De ez igy onmagaban nem egy megoldhato dolog? Vegulis nem szukseges, foleg hogy egyutt vszinu csak bemutatozni kene, de most mar idegesit, hogy ennyire hianyos a tudasom vagy megint tul sokat gondolok termeszetesnek. -
Lortech
addikt
válasz axioma #10211 üzenetére
Röviden: tényleg nincs.
Csinálhatsz generikus interface-t:
public interface IF1<T extends IF1> {
void add(IF1<T> other);
}
public class Imp1 implements IF1<Imp1> {
@Override
public void add(IF1<Imp1> Other) {
}
}
public class Imp2 implements IF1<Imp2> {
@Override
public void add(IF1<Imp2> other) {
}
}
{
IF1 impraw = new Imp2();
IF1<Imp1> impl1 = new Imp1();
IF1<Imp2> impl2 = new Imp2();
impraw.add(impraw);
impraw.add(impl1);
impraw.add(impl2);
impl1.add(impl1);
impl1.add(impraw);
impl2.add(impl2);
impl2.add(impraw);
pass(impraw, impl1);
pass(impl1, impraw);
pass2(impl2, impl1);
}
private static void pass(IF1<Imp1> one, IF1 other) {
one.add(other);
other.add(one);
}
private static void pass2(IF1 one, IF1 other) {
one.add(other);
other.add(one);
}De ez jobbára csak bohóckodás, mert ha használni akarod, úgyis meg kell adnod a típus paramétert fordítás időben, hogy garantáltan *csak saját magával tudd átadni neki, vagy típus paraméter nélkül hagyod és unchecked leszel. Valamint raw IF1 (impraw-t) IF1 példányt oda vissza tudod passzolgatni futási és fordítási hiba nélkül.
[ Szerkesztve ]
Thank you to god for making me an atheist
-
RexpecT
addikt
válasz #68216320 #10210 üzenetére
Java 8 és felette érdemesebb a LocalDateTime-ot használni.
-
Drizzt
nagyúr
válasz Lortech #10212 üzenetére
Miért nem simán T a paraméter az első add függvényedben, az interface-ben? Ha azt csinálod, akkor azzal meg tudod akadályozni, hogy a "impl1.add(impraw);" illetve a "impl2.add(impraw);" leforduljon. Persze az impraw.add fogad mindenféle típusú interface-et. Aztán ha type mismatch van, akkor futási időben száll el a
paramEnforcerMatrix.add(paramEnforcerVector); sor.public interface ParamEnforcer<T extends ParamEnforcer<T>> {
void add(T other);
}
class MatrixType implements ParamEnforcer<MatrixType> {
@Override
public void add(MatrixType other) {
}
}
class VectorType implements ParamEnforcer<VectorType> {
@Override
public void add(VectorType other) {
}
}
class Tester {
void test() {
MatrixType matrixType = new MatrixType();
ParamEnforcer paramEnforcerMatrix = matrixType;
VectorType vectorType = new VectorType();
ParamEnforcer paramEnforcerVector = vectorType;
matrixType.add(matrixType);
vectorType.add(vectorType);
paramEnforcerMatrix.add(paramEnforcerVector);
}
}I am having fun staying poor.
-
Lortech
addikt
válasz Drizzt #10214 üzenetére
Ha azt csinálod, akkor azzal meg tudod akadályozni, hogy a "impl1.add(impraw);" illetve a "impl2.add(impraw);" leforduljon.
De azt is megakadályozza, hogy az
impl1.add(impl1);
impl2.add(impl2);
forduljon. De ja, igazából nem vagyunk sokkal beljebb az IF1<T> fordítási idejű típussal sem az Imp1 / Imp2 helyett. IF1<T> -vel mind a két imp típuskompatibilis - nem úgy a Matrixtype és Vectortype egymással -, ezért nem kapsz classcastexceptiont, ahogy a példádban viszont igen. Fordítás időben kéne tudni kiküszöbölni ezt az esetet, de a generikusok erre nem jók javában.[ Szerkesztve ]
Thank you to god for making me an atheist
-
#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?
-
Drizzt
nagyúr
válasz #68216320 #10217 üzenetére
Teljesen nem olvastam vegig az alabbi linket, de szerintem minden kerdesedre valaszt kapsz belole. A valasz: attol fugg. 3 fo megoldas van: egy tabla az osszes termektipussal. Ezzel lehet a leggyorsabban lekerdezni termektipusokat ativelo modon, de constrainteket not null constrainteket nem tudsz megadni, ha az altipusok egy reszenel kellene, de legalabb egy altipusnal nem. Aztan lehet mindegyik tioust sajat tablaba rakni. Ekkor az osszes tipus lekerdezesehez tobb tablat kell lekerdezni. Aztan van a kozos tabla a kozos mezoknek, majd egyedi altipus mezoknek kulon tablak, amik visszareferalnak a kozos tulajdonsagokat tartalmazo tablara. Itt joinnal lehet lekerdezni az osszes altipus osszes elemet egyszerre. [link]
I am having fun staying poor.
-
Szmeby
tag
válasz #68216320 #10217 üzenetére
"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.
-
#68216320
törölt tag
válasz Szmeby #10219 üzenetére
É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
[ Szerkesztve ]
-
orc88
őstag
Sziasztok!
Egy érettségi feladattal van problémám. Eddig mindegyik feladatot megoldottam valamilyen úton-módon, viszont most valamiért nem akar működni az ArrayList úgy ahogy én szeretném
Valakinek elküldhetném privátban? (Pár sor lenne az egész, valószínűleg valami bagatell hibát vétettem, viszont több fájlban vannak a dolgok, nem akarom teleszemetelni a topikot )
"Life's simple: You make choices and you don't look back."
-
RexpecT
addikt
-
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 átSzó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
"Life's simple: You make choices and you don't look back."
-
RexpecT
addikt
Felülírod az objektum értékeit ebben a két sorban:
temptranz.id = 0;
temptranz.term.clear();Ezután se lesz még jó, mert egyszer hoztad csak létre a temptranz objektumot.
-
orc88
őstag
válasz Aethelstone #10226 üzenetére
Természetesen
(ezért is akartam először privátban segítséget kérni valakitől, sejtettem, hogy nem lesz egyszerű menet)"Life's simple: You make choices and you don't look back."
-
bambano
titán
válasz #68216320 #10217 üzenetére
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.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
#68216320
törölt tag
válasz bambano #10228 üzenetére
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.
-
Drizzt
nagyúr
válasz #68216320 #10229 üzenetére
Még egy aspektust akarok felvetni. Milyen táblákhoz kapcsolódik a termék még? Ha van olyan, ami termék ID-t használ, akkor innentől kezdve abban a táblában ha akarsz foreign key-t használni, akkor kénytelen leszel 3 különféle oszlopot felvenni. (Utóbbit mondjuk úgy is ki lehet küszöbölni, ha minden 1:1, 1:n kapcsolatot is kapcsolótáblával valósítasz meg, mintha n:n lenne, mert ilyenkor a foreign key a kapcsolótáblába kerül át.)
Másik dolog amit fontolj meg, hogy érdemes lehet Flywayt, vagy Liquibase-et használni, ami jelentősen meg tudja könnyíteni az életed, ha később mégis kell változtatni az adattáblák struktúráján, s ilyenkor a meglevő rendszerek update-elése automata kell, hogy legyen.
[ Szerkesztve ]
I am having fun staying poor.
-
bambano
titán
válasz #68216320 #10229 üzenetére
"Nem is várható bővülés": híres utolsó mondatok
a lekérdezés sebessége egyrészt nem számít akkor, amikor elméletben vizsgálsz egy logikai struktúra->tárolási struktúra leképezést, másrészt nem is tudhatod előre, mi a gyorsabb, harmadrészt oldja meg a hardver
szerintem a kód mindenféle részén folyton azt mókolni, hogy most melyik táblát kell joinolni, hova mit írsz, az nagyobb teher, mint berakni egy táblába, indexelni, a többit oldja meg az adatbáziskezelő meg a beszerzési osztály rambevásárló felelőse.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
Szmeby
tag
válasz #68216320 #10220 üzenetére
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.
-
#68216320
törölt tag
válasz Szmeby #10232 üzenetére
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
-
sutszi
veterán
Helló!
Nem teljesen Java téma, de mivel Java-s projekt így gondoltam elférhet ide, de ha van jobb helye akkor átmegyek...Szóval adott egy projekt aminek a forrása Git verziókezelőben van tárolva. A buildre Jenkins haszálunk. Az elkészült build/release pedig nexusban tároljuk...
Az eredeti elképzelés szerint van a M(master) branch amit tisztán akarunk tartani. Ezért amikor van egy-egy nagyobb projekt ami több feladatot fog össze, arra a célra létrejön mindig egy xxxPM nevű branch. Ebből nyit a továbbiakban mindenki új branchet a saját feladatára. Amikor kész akkor szintén az xxxPM-be megy vissza a merge.
Van még egy U és egy UAT környezet tesztelésre. Alapvetően az az irány, hogy U-ra snapshot míg UAT-ra release verzió kerül ki.Több probléma is kialakult.
1. Jenkinsben 1 job egy adott branchre buildel. Alapból ez a master. De valamiért kitalálták, hogy az xxxPM branchből készülő buildeket ezentúl ne lokálisan készítsük, hanem Jenkinsben... Ezért létrehoztak neki egy külön jobot. Ilyen projektekből több is van, időnként párhuzamosan is, ezért a dedikált jenkins job szerintem nem jó ötlet. A gányolás melegágya az én meglátásom szerint. Nem lehet dinamikusan kezelni. Újabb projektél újabb job?! De meddig?! Ha vége akkor meg átállítjuk egy újra?!
2. Az előbbi problémából következett egy másik. Az M branch közben haladt előre, de az xxxPM nem lett frissítve a változásokkal... Ez már egy nagy hiba volt, tudom. De ettől függetlenül, most megjelent az igény, hogy az xxxPM-ből is legyen release. Nem azért mert ez valaha is élesedhet, hanem azért, hogy UAT-ra tudjanak tenni verziót a laikusoknak, hogy teszteljenek... Tudják, hogy ez nem fog élesedni mert még nincs kész, nincs olyan állapotban. Csak kizárólag a teszt miatt. Ráadásul még két tagot hozzá kell csapni a verziószámhoz, hogy az állapotot jelöljük, így létrejön egy kvázi párhuzamos valóság... Valahogy ezt sem érzem egy kifinomult megoldásnak.
Érdekelne, hogy mi a meglátásotok, illetve, hogyan történnek az ilyen folyamatok nálatok?
Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage
-
macssessz
tag
Üdv Guruk!
Ha rossz helyre írok bocs, nem találtam jobbat.
Egy oldalon találtam párat régi kedves könyveim közül és nem tudom leszedni őket. Bár az oldalon olvasható, látható a szöveg, Ctrl+c - Ctrl+v sem tudja leszedni csak az első pár bekezdést, utána kimaradoznak részek. Azért írok ide mert valami javás varázslás van. Egy régi portable Firefoxomban amivel szintén megpróbáltam letölteni, nincs java támogatás, avval meg sem jelenik a könyv szövege. Ha sikerülne leszedni csinálhatnék hangoskönyvet. Bár a könyv nyomtatva megvan, nem jutok az olvasáshoz. Problémás oldal: [link]Hátha tudtok segíteni?
Köszi előre is. -
batagy
őstag
Sziasztok!
Most nem teljesen értem az új Oracle Java licenszelést, 2019-től.
Az világos, hogy az 1.8-as Java üzleti használatra 2019-tól fizetőssé válik.
De melyik Java?
A JRE is fizetős lesz, vagy csak a JDK? -
disy68
aktív tag
válasz batagy #10239 üzenetére
JRE/JDK nincs különválasztva. Üzleti használatra lesz fizetős az Oracle JDK-ja - fejlesztéshez nem fog kelleni licensz. Itt amúgy nagyon jól össze van foglalva, hogy melyik verzió meddig-merre és pár alternatíva az Oracle JDK használata helyett.
“Yeah, well, you know, that’s just, like, your opinion, man.” — The Dude
-
axioma
veterán
Az mennyire antipattern, hogy van egy generic-es intergace-em, es csinalok egy olyan osztalyt, ami megvalositja a sajat maga 'feletti' interface-t? Az interface kivulrol adott, a kerdes hogy erre csinaljak- ket szintet osztalyban is - nem tennem, csak igy meg furan hat, vagy csak tul sokaig voltam oldschool, foleg 10+ eves kodok kozott. [Me'g mindig a matrixmuveletek megvalositasa tema, bar 90% hogy ez nem lesz prod-ban soha... de ha mar csinalom, csunya se legyen.]
-
axioma
veterán
válasz Aethelstone #10242 üzenetére
Kosz. Kodot max. geprol morickazok, ceges kod sehogy nem hozhato ki, barmilyen artatlan... [volt h munkatars a ceg altal fizetett kezdo, szamara uj prog.nyelv kulsos kurzusara nem tudta a 'vizsgakodot' elkuldeni...]
-
axioma
veterán
válasz axioma #10243 üzenetére
Na valahogy igy nez ki:
public interface ProjMatrix<M> {
public ProjMatrix(double[][] mtx);
public ProjMatrix(M mtx);
public M getUnderlying();
public ProjMatrix add(M mtx);
..
}
Es van harom megvalositas, ebbol ketto ketretegu, az Nd4j-s hasonlo ehhez:public class ApacheMatrix implements ProjMatrix<RealMatrix> {
private final RealMatrix underlying;
public ApacheMatrix(double[][] mtx){... underlying=new RealMatrix(mtx); ...}
public ApacheMatrix(RealMatrix mtx){ underlying=mtx; }
public RealMatrix getUnderlying() { return underlying; }
public ApacheMatrix add(RealMatrix other) { return new ApacheMatrix(underlying.add(other.getUnderlying());}
...Es en csinalnek egy ilyet:
public class FlatMatrix implements ProjMatrix<FlatMatrix> {
private final double[] data;
private final dataLen;
... // segedvaltozok
public FlatMatrix(double[][] mtx) { ....dataLen=...; data=new double[dataLen]; ...}
public FlatMatrix getUnderlying() { return this;}
public FlatMatrix add(FlatMatrix other) { ... }
...Persze ebben az esetben az underlying-gal nem lehet "szepen" konstrualni, az tulkepp egy masolas lesz, de ennek nem lenne jelentosege.
Csak fejbol kb. a lenyeg, lehet benne egyeb hiba, nem az szamit, hanem a konstrukcio osszessegeben mehet-e igy minden gond nelkul.Kosz!
[ Szerkesztve ]
-
Drizzt
nagyúr
válasz axioma #10244 üzenetére
Alapvetően probléma nincsen vele, de én inkább csinálnék egy másik mátrix típust(Matrix), ami teljesen a ProjMatrix implementációitól. És akkor nem lenne generikus a ProjMatrix interface, a getUnderlying helyett meg lenne egy Matrix getMatrix. És az egyes implementációknak lenne az az implementation detail-je, hogy a belső saját mátrixából hogyan fog mátrixot csinálni, factory-kal, különböző bemenő adatok alapján. Pl.: lenne egy ilyen a Matrix createMatrix(double[][] mtx), illetve valami más értelmes adat. A konstruálás paramétereit mindig az vezényelje, hogy milyen adataid lesznek ahol felhasználod ezt az interface-et.
Működni tökéletesen működni fog amit csináltál, viszont az nem fog nekem tetszeni, hogy a felhasználó kódnak végül mindenképpen tudnia kell a konkrét implementáló osztályokról, mert van olyan method az interface-ben, ami implementáció specifikus értéket vár/ad vissza. Így nem tudod pl.: ServiceLoaderrel betölteni az implementációkat, hanem minden új implementációnál újra kell majd fordítanod a kódot. Ami nem feltétlenül probléma, de egy megfontolandó dolog.
Ami sérül ebben az interface-ben, az a SOLID design elvekben a "dependency inversion principle". Nem jó practice, ha az interface felhasználója bármilyen specifikus dolgot kell tudjon az implementációból(esetedben az M típust).
[ Szerkesztve ]
I am having fun staying poor.
-
axioma
veterán
válasz Drizzt #10245 üzenetére
Itt most azert kell a generic, mert ahogy latszik is, pl. az add az direkt csak a sajat underlying-jait tudja osszeadni. Tehat egy kod nem keverheti az underlying-okat, mert pont az a lenyeg hogy ne legyen az egesz lehuzva a get(x,y) szintjere, hanem a meglevo megvalositas "teljes erejet" hasznalja ki. Senki nem is fog es nem is akar olyat irni, hogy nd4j matrixot adunk az apache-oshoz.
A cel nem az, hogy az interface elrejtse a megvalositast, csak hogy lehessen idovel cserelni alatta. De kozben nem fogjuk kidobni az nd4j sebesseget... [idokozben atment vegre a 3rd party engedelyezesen], meg az esetleges kesobbi GPU-val gyorsitast. Ugy kell elkepzelni, hogy a program egy futasa alatt a megvalositasok kozul mindig csak egy letezik, jojjon az barhonnan, es mint ProjMatrix tipusu valtozok lesznek kezelve [igen, van ProjMatrixUtils is create-tel... az interface amugy nekem kivulrol jon mint input, nem mondom hogy nem szolhatok bele - bar amikor probaltam, hogy ha csak 2dim matrixaink vannak, talan nem kene-e az interface-t se altalanos n-dim-nek csinalni, foleg ha a ket "gyari" megvalositas egyike alapbol se kepes ra... de siman lepattantam], egy teljes refactort tuti nem tudnek atvinni. A ...Utils-t bovithetem, masikat nemigen. Es en kell az implementaciokat csinaljam, a flatmatrix csak azert merult fel, mert az apache-t akartam "legyorsulni" (az nd4j-t mar vszinu nem fog sikerulni, bar majd meglatjuk, mivel naponta es hosszan futo job-rol van szo, csak az azon mert sebesseg szamit, nem az "altalanos").[ Szerkesztve ]
-
axioma
veterán
Meg egy dolog jutott eszembe. A RealMatrix is ugy van megcsinalva, hogy vagy egyik vagy masik az implementacioja (Row vagy Block tipusu), es vannak olyan metodusok, amik tulkepp csak azt "lopjak" ki lathatatlanul, hogy melyik tipus van alatta (talan a create a double[][]-bol is ilyen). Bar a RealMatrix-nal ugye az elso dontes az a merete alapjan megszuletik, aztan lehet szivni ha valamiert olyan kodot hozol letre ahol keveredik... nem futottam bele de eleg gyanus nekem az a megoldas.
Itt ennel tisztabb is lenne, a kod egyetlen resze valtozik amikor modositanank a megvalositast, ez azert nem varhato a kiserleteken kivul gyakran, siman egyutt lehet elni vele. Szerencsere arrol meg nem en dontottem, hogy generic-es az interface - en csak abbol fozok amit kaptam.[ Szerkesztve ]
-
orc88
őstag
Sziasztok!
Adott egy vonalkód olvasó. Hogyan tudnám ennek az inputjait kezelni egy java programmal? Az oldalukon a JavaPOS-t említik de ahhoz alig találok valamit a neten
Valaki tudna segíteni, hogy merre induljak el?"Life's simple: You make choices and you don't look back."
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Anglia - élmények, tapasztalatok
- Konzolokról KULTURÁLT módon
- BestBuy ruhás topik
- Milyen billentyűzetet vegyek?
- 3D nyomtatás
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Kihívás a középkategóriában: teszten a Radeon RX 7600 XT
- NVIDIA GeForce RTX 4080 /4080S / 4090 (AD103 / 102)
- Microsoft Excel topic
- Fujifilm X
- További aktív témák...
- 1151 V2 CPU-k / I5-8500 / I5-8400 / BESZÁMÍTOK!
- Intel i5-10400 hatmagos processzor + doboz + gyári új hűtő
- Nintendo Switch játékok (ง '-' )ง Budapest Nyugatinál
- Fekete Sony PlayStation 5 Cover (Lemezes változat)
- Samsung Galaxy S23 Ultra 5G 256GB Dual SIM Phantom Black Gyárilag független Csere/beszámítás is!