- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: Asszociációs játék. :)
- Archttila: SMART tesztelés automatizálva: smartctl poller script Zsh-ban, RPi-re
- gban: Ingyen kellene, de tegnapra
- btz: Internet fejlesztés országosan!
- sziku69: Fűzzük össze a szavakat :)
- Parci: Milyen mosógépet vegyek?
- bacsis: Gyere el a 11. BRSZK-ra!
- Luck Dragon: Alza kuponok – aktuális kedvezmények, tippek és tapasztalatok (külön igényre)
- MasterDeeJay: Low budget (50.000 forint) light gémer gép összerakása
-
Fórumok
LOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
Új hozzászólás Aktív témák
-
axioma
veterán
-
axioma
veterán
Először is köszönöm szépen a segítséget.
Így én bis tudom, csak az úgy nem jó.
Ahol létrehozzon ott még nincs imageView1-5
Tehát ott nem tehetem bele.
Csak ott tehetem bele ahol már léteznek.
Azt írtad ott kint hozzam létre, azért tettem oda ki.
Viszont én nem tudom, és nem találtam, hogy lehet egybe hozzá adni az elemeket. Ezért kérdeztem.A tipus az ImageView, nem View.
Így tanultam, és mindenhol így is van.
TextViewnek is TextView és nem View.
És minden tipusnak önmagát adják meg.
Kezdő vagyok, így lehet, hogy lehet másképp, de össze zavar és inkább úgy csinálom ahogy tanultam.
Nezd, en elvet adtam at, nem megoldast. Igy lehet az elozo kerdesedben szereplo ertekadast [letrehozassal egyutt] megoldani. Egy tipust csak at tudsz irni... mobilrol ket masik tennivalo kozott ezt tudtam beszurni.
Visszanezve az elozmenyeket, az imageviewx-ek letrehozasat lehet ugy meguszni, h ahol most az imageview1 = stb sorok vannak, oda azt irod hImageView[] viewNr= new ImageView[5];
viewNr[0]=findViewById(R.id.Egyes);
<stb>
es utana csak a tombbol hasznalod oket csak. -
axioma
veterán
-
axioma
veterán
Switch - valóban
Azt el is kezdtem átnézni kell e még, de jött a postás, és huss elfelejtettem 
viewNr scope miatt. Az imageView nem érhető el kintről.
For ciklus nem lesz. Egyesével lesznek meghivva if -hez kötve, többször, többféleképpen.
Emiatt lehet kell majd a randSzam, így nem nyúltam hozzá.imageView1 =... ahol most van neked, oda tennem a tomb deklaraciot es kozvetlen kitolteset, az onclick meg csak hasznalja
[nem is nez ki jol, h minden onclick csinal egy pont ugyanolyan tombot - bar nyilvan konkretan itt nem rontja el a performanciat...] -
axioma
veterán
de nem int-et adtam meg.
one, two, three, four, five - ezek az id-k amiket megadtam.itt a progi.
Persze nem így lesz, csak most for -al csináltam, hogy azt is gyakoroljam.
De a for nem jó, for helyett method kell nekem majd.ImageView viewNr[] = new ImageView[5];
int imgId[] = new int[]{R.drawable.one, R.drawable.two, R.drawable.three, R.drawable.four, R.drawable.five, R.drawable.six};
public void kockaAkcio(int v, int r){
switch(r) {
case 0:
viewNr[v].setImageResource(imgId[0]);
break;
case 1:
viewNr[v].setImageResource(imgId[1]);
break;
case 2:
viewNr[v].setImageResource(imgId[2]);
break;
case 3:
viewNr[v].setImageResource(imgId[3]);
break;
case 4:
viewNr[v].setImageResource(imgId[4]);
break;
case 5:
viewNr[v].setImageResource(imgId[5]);
break;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
Random random = new Random();
ImageView imageView1 = findViewById(R.id.Egyes);
ImageView imageView2 = findViewById(R.id.Kettes);
ImageView imageView3 = findViewById(R.id.Harmas);
ImageView imageView4 = findViewById(R.id.Negyes);
ImageView imageView5 = findViewById(R.id.Otos);
Button button01 = findViewById(R.id.Dobas);
button01.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int[] kockak = new int[5];
int randSzam = random.nextInt(5);
//itt hozom letre a kepek helyenek a valtozot es tombbe rakom tombben
viewNr[0] = imageView1;
viewNr[1] = imageView2;
viewNr[2] = imageView3;
viewNr[3] = imageView4;
viewNr[4] = imageView5;
for (int i =0; i<5; i++){
randSzam = random.nextInt(5);
//itt rakom be a dobast
kockak[i] = randSzam;
//itt hivom a methodot
kockaAkcio(i, randSzam);
}
}
});
}Jaaa, akkor felreertettelek. OK, nevezzuk imageNumber-nek, az imageId az alfanumerikusra utal inkabb.
Szoval az altalad "one" id-val ellatott resource-hoz az R resource class hozzarendelt egy imageNumber-t, ami int, es ezt tarolja az R.drawable.one alatt. Igy mar talan ertheto.A teljes switch elhagyhato. Az ertelme annyi, mintha a teljes
switch(r) {...}helyett azt irnad, hogyviewNr[v].setImageRescource(imgId[r])
(mondjuk nincs default agad, igy annyi kulonbseg azert van, hogy ha a v nem [0..5], akkor a switch lefut csak semmit nem allit be, az egysoros meg hibat ad)Van tobb aprosag amit lehetne me'g javitani. Pl. a viewNr letrehozas miert kerult be a listenerbe, es miert ket lepesben kap erteket?
ImageView imageView1 = findViewById(R.id.Egyes);viewNr[0] = imageView1;
ehelyettviewNr[0] = findViewById(R.id.Egyes);A randszam feleslegesen van inicializalva randomra, azt nem hasznalod, felulirja a for ciklusban - ez gondot nem okoz csak kod-olvashatosagot, mire gondolhatott a kolto alapon...
-
axioma
veterán
-
axioma
veterán
Nagyon szépen köszönöm a segítséget.
Így sikerült:
ImageView viewNr = imageView1;
int imgId = R.drawable.one;
viewNr.setImageResource(imgId);Így már be tudom rakni for ciklusba, tömbbe, method-ba.
Viszont ezzel teljesen felborul az adat tipusok.
Mivel ebben az esetben int nem egész szám.
Ha viszont azt nézem hogyan használja, akkor minden boolean, mert a cpu 0 és 1 -eseket értelmez.
Tehát nem értem hogy int a String, ami nincs idézőjelben.Milyen ertelemben nem egesz szam? az egy egesz, pontosabban az adott nyelv int-je (az egeszek egy reszhalmaza) - a rendszer hozzarendelt ahhoz a megadott (kephez, ha jol ertem) egy azonositot, amit ezentul az R.drawable.one uton ersz el. Ha egy masik eleme't erned el a resource osztalynak, akkor annak (jo esellyel) mas tipusa lenne.
Amugy ha most kezd mar osszeallni, akkor tekintsd meg a switch-edet. A dobas 0-5 kimenetelehez rendelsz egy masik szamot, amit elore tudsz. Tehat az egesz kicserelheto arra, hogy csak indexeled oket egy elemeivel definialt tombben:int[] imageIds = new int[] {R.drawable.one, R.drawable.two... };
randszam = ...;
viewNr.setImageResource(imageIds[randszam]);
Igy meg kulon fuggveny se fog kelleni. -
axioma
veterán
El fog futni, mert az R.drawable.* az android által generál resource azonosítója lesz.
pl src/drawable/one.png => R.drawable.one
R az android által generált resource osztály, amiben lehet csomó bepakolt resource azonosítója és azon keresztül lehet ezekre hivatkozni. Ezért is lesz int az értéke amit ki lehet debugolni, de amúgy lényegtelen, hogy mi is az.
@lanszelot: Egyszerűbb lenne ha felraknád a kódod valahova, pl github-ra és viszonylag gyorsan meglenne a megfejtés. A hiba pedig amit ír csak szemantikai hiba, nem runtime vagy fordítási. Szerintem rossz helyre másoltad be a kódot vagy ilyesmi.
Figyu, en tudom h mukodnie kell, de most a cel az, h a kerdezo megtapasztalja es megjegyezze. A legelso hsz-ere lehetett volna 4-5 soros megoldast irni, de az a hal, nem a ha'lo'...
-
axioma
veterán
Először is köszönöm szépen a választ mindenkinek.
Azt láttam hogy int -et kér.
De ez "R.drawable.one" hogy int?
Int az egész szám.
Az meg String. Az a kép ID megadása. Az id "one" az is string.Most nagyon meg vagyok kavarodva.
Nem tudom hogy adhatok int -et.hoopy: este ha haza érek megpróbálom.
hogy int: hat az int x =5; utan az x is int... de amugy 1. ott az ide, menj az utolso tag [one] fole, nem jon fel buborekban, h mi az? 2. log-old ki az erteket
az R.drawable.one _nem_ string, egy azonosito [ok, egyszerusitve], nem egyezik az "R.drawable.one" stringgel. Igen, backend-es voltam vilag eletemben de hallottam hiret hogy frontend egyes technologiaiban ez csiki-csuki... itt nem [ill. kerulendo, mint korabban angolul is, meg tolem is elhangzott].
csinalj csak ennyit:int imageId = R.drawable.one;imageView1.setImageResource(imageId);
Ha ez elfut, akkor menjunk tovabb. Ha nem, hibauzenetet mutasd.
[az termeszetesen _nem_ varhato, hogy az imageId -nak barmi koze lesz a 'one'-hoz, lehet h csak nemletezo id-val probaltad, az id nem feltetlen folytonos, sot, az inkabb index nevet kapna] -
axioma
veterán
Biztonság kedvéért kipróbáltam, de egyik se működik.
Vagy én csinálok valami hülyeséget, vagy nagyon rosszul mondom el.imageView1.setImageResource(R.drawable.one);
Ez a sor szent és sérthetetlen.
Semmit se lehet benne változtatni.
Nem használhatok változót, se kikérést, se függvényt, semmit.imageView1.setImageResource(myFunc())
Tehát ez nem működik. /myFunc()/
Az "R.drawable.ID" -nek kell ott lenni. Semmi mást nem fogad el.
Igen, létre hoztam a method-ot returnnal ami azt a sort adja vissza. Próbáltam rengetegféle képpen, de nem.Vagy nem így kell beírni. Lehet össze kell fűzni.
Php-ban ponttal fűzöm össze, JavaScript -ben +. -erre gondolok.
Tudom, hogy html-t js-el, de nem fogad el semmit.
Valahogy másképp kell.En nem vagyok androidos fejleszto, igy altalanossagban (es szerkezeteben) probaltam segiteni. Most rakerestem, ez a fuggveny ennyi:
public void setImageResource (int resId)
Ez azt jelenti, hogy nalad isintlett a myFunc() visszateresi tipusa? -
axioma
veterán
Először is köszönöm szépen a segítséget.
Folyamatosan agyalok azon amit írtál.
Van pár dolog amit nem értek.
Nagyon kezdő vagyok valószínűleg azért.fg - ez nem tudom mi. Függvényre gondolnék, de én nem tudok java-ban függvényéről. Method és class -ról tudok csak.
Map az miért lenne jó?
Map az érték párok bevitele, módosítása stb -re jó.
Nekem fix értékek vannak amik sohase változnak, és sohase kell hozzáadni. Minden fix.
Akkor miért lenne jó a map?a fuggveny/eljaras es ezek angol neve attol fugg, ki mikor es melyik nyelven szocializalodott a programozasba
igen, method-ra gondoltamAmit az angol nyelvuben irnak, az ket dolog.
1. meg lehet oldani elvben amit elsore lekodoltal (azaz a string alapjan "kiertelmezve" elkerni az objektumot), de nagyon antipattern, tehat azt az iranyt el se kezdtem
2. map-et meg ugy akart, hogy helyette van egy fix map-ed, ami a "one" stringhez hozzarendeli az R.drawable.one objektumot stb, es attol kered el
(de ha kicsit tavolabbrol nezed a kodot, ez a 0-hoz rendeled az obj-ot modon is hasznalhato, az meg csak egy indexeles egy tombben - ide gondoltam hogy idovel eljutunk, csak kisebb lepesekkel) -
axioma
veterán
ne a switch-ben set-eld csak
a szamBetuvel mintajara egy objektumnak adj erteketja egybol return jobb
fg-ben az int randszam-tol csakcase 0: return R.drawable.one;
stilus, majd foprog-ban:imageView1.setImageResource(myFunc());...imageView5.set...A map hasznalata me'g korai, ezt bogozd ki es ertsd meg elobb, aztan ki lehet a switch-et o[timalizalni ahogy emlitettem..
[megj. lehet olyat is h forditva, a fg parametere h imageViewN, es annak allitod a switch-ben, de ott me'g kene elobb egy ertek v ref. szerinti atadas gyostalpalo, maradj az egyszerubben programozhatonal]
Ja latom tarolnad is a dobast, akkor a fg csak szambol visszaad objektumot legyen, kint generald
most me'g szemetes lesz de idovel [ha nem eleg h vhogy mukodjon] kigyomlaljuk, de kis lepesekben jobb lesz haladni -
axioma
veterán
Nagyon szépen köszönöm a segítseget.
Sajnos nincs semmi ami ismétlődne.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
Random random = new Random();
ImageView imageView1 = findViewById(R.id.Egyes);
ImageView imageView2 = findViewById(R.id.Kettes);
ImageView imageView3 = findViewById(R.id.Harmas);
ImageView imageView4 = findViewById(R.id.Negyes);
ImageView imageView5 = findViewById(R.id.Otos);
Button button01 = findViewById(R.id.Dobas);
button01.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int[] kockak = new int[5];
//elso kocka
int randSzam = random.nextInt(5);
kockak[0] = randSzam;
switch(randSzam) {
case 0:
imageView1.setImageResource(R.drawable.one);
break;
case 1:
imageView1.setImageResource(R.drawable.two);
break;
case 2:
imageView1.setImageResource(R.drawable.three);
break;
case 3:
imageView1.setImageResource(R.drawable.four);
break;
case 4:
imageView1.setImageResource(R.drawable.five);
break;
case 5:
imageView1.setImageResource(R.drawable.six);
break;
}
//masodik kocka
randSzam = random.nextInt(5);
kockak[1] = randSzam;
switch(randSzam) {
case 0:
imageView2.setImageResource(R.drawable.one);
break;
case 1:
imageView2.setImageResource(R.drawable.two);
break;
case 2:
imageView2.setImageResource(R.drawable.three);
break;
case 3:
imageView2.setImageResource(R.drawable.four);
break;
case 4:
imageView2.setImageResource(R.drawable.five);
break;
case 5:
imageView2.setImageResource(R.drawable.six);
break;
}
//harmadik kocka
randSzam = random.nextInt(5);
kockak[2] = randSzam;
switch(randSzam) {
case 0:
imageView3.setImageResource(R.drawable.one);
break;
case 1:
imageView3.setImageResource(R.drawable.two);
break;
case 2:
imageView3.setImageResource(R.drawable.three);
break;
case 3:
imageView3.setImageResource(R.drawable.four);
break;
case 4:
imageView3.setImageResource(R.drawable.five);
break;
case 5:
imageView3.setImageResource(R.drawable.six);
break;
}
//negyedik kocka
randSzam = random.nextInt(5);
kockak[3] = randSzam;
switch(randSzam) {
case 0:
imageView4.setImageResource(R.drawable.one);
break;
case 1:
imageView4.setImageResource(R.drawable.two);
break;
case 2:
imageView4.setImageResource(R.drawable.three);
break;
case 3:
imageView4.setImageResource(R.drawable.four);
break;
case 4:
imageView4.setImageResource(R.drawable.five);
break;
case 5:
imageView4.setImageResource(R.drawable.six);
break;
}
//otodik kocka
randSzam = random.nextInt(5);
kockak[4] = randSzam;
switch(randSzam) {
case 0:
imageView5.setImageResource(R.drawable.one);
break;
case 1:
imageView5.setImageResource(R.drawable.two);
break;
case 2:
imageView5.setImageResource(R.drawable.three);
break;
case 3:
imageView5.setImageResource(R.drawable.four);
break;
case 4:
imageView5.setImageResource(R.drawable.five);
break;
case 5:
imageView5.setImageResource(R.drawable.six);
break;
}
}
});
}
}Másik fórumon ezt írták, de egy szót sem értek belőle /nem az angol miatt/
"Do you want to have a dynamic drawable resource ID? If yes, there is a way to get the ID by the resource name. However, I strongly suggest you think carefully before taking this path. Having a map where you associate static resource IDs with another value might be better."ne a switch-ben set-eld csak
a szamBetuvel mintajara egy objektumnak adj erteketja egybol return jobb
fg-ben az int randszam-tol csakcase 0: return R.drawable.one;
stilus, majd foprog-ban:imageView1.setImageResource(myFunc());...imageView5.set...A map hasznalata me'g korai, ezt bogozd ki es ertsd meg elobb, aztan ki lehet a switch-et o[timalizalni ahogy emlitettem..
[megj. lehet olyat is h forditva, a fg parametere h imageViewN, es annak allitod a switch-ben, de ott me'g kene elobb egy ertek v ref. szerinti atadas gyostalpalo, maradj az egyszerubben programozhatonal]
-
axioma
veterán
Pont ez a bajom, hogy nem tudom se függvényében, se for ciklusba tenni.
Mert nem pontosan ugyanazt kell végrehajtani.
Az "imageView" - t és az ID -t is módosítani kell.
De nem tudom, mert se paramétert, se változót nem tudok beletenni.Többel is ugyanaz, kikérést se tudok bele tenni.
Nem tudom hogyan kell.azt emeled ki fg-be ami ugyanaz lenne
irdd meg 2-re a 'hosszut'
ami egyforma [szam kitalalas, szambol object switch] az s fg, visszaadja az objektumot, te meg 5x hivod 5 valtozoba setImageResource-olva az eredmenyt [a parameter maga egy fg-hivas]
ha elakadsz, szurd be hogy allsz ne csak meta-beszelgessunk rola -
axioma
veterán
Ez jó lenne, de ebben az esetben iszonyat hosszú kódot kell írnom.
Generálok egy szamot,
Switch berakja imageView1 -esbe
Majd
Generálok egy számot
Switch berakja imageView2-esbe
Stb
Mindent 5ször ismétlek.Mint ahogy írtad, majd a végén azt szeretném, hogy for ciklus végig szalad rajta.
De még tanulom, így igaz, hogy ez megoldás, de nem tanulok.
Nem tudom hogy tudok oda változót berakni.
Azért van tömbből a változó, hogy majd tovább haladhassak a tanulással.Elnézést, hogy kuszán írok. Még kezdő vagyok.
ez ketfelekeppen is meguszhato
1. a kivalasztast megirod fuggvenyben, nem kodmasolas
2. androidot sose csinaltam, de az imageView-k nem lehetne szamozott valyozok helyett eleve tomb? ha nem, tedd tombbe... es ahhoz adj hozza -
axioma
veterán
Ennyi a kód.
Tanulok. Hogyan lehet változót használni ahelyett hogy én írom be.
Random generál egy számot 0-5 között.
Switch ezt a vectror image nevére át váltja.
Beilleszti az imageView-ba.
Telefonon megjelenik a kép.
Kész.
Semmit se csinál.Még csak most tanulom. Az én agyam nem úgy működik mint az atlagé. Nekem így kell tanulnom.
Tudom fura másoknak.
nem jo az elkepzeles [szam->nev->obj]
miert nem a switch csinal obj-ot? az ne szamBetuvel lehyen, hanem az R.drawable.one tipusaval legyen egy valtozod, es annak adj a switch-ben a szamtol fuggo erteket
[advanced megoldas: tomb beloluk es csak indexeled] -
axioma
veterán
Először is köszönöm szépen a választ.
71 es sor - "cannot resolve symbol 'kockak' " hibát dob
Gondolom azért mert idézőjelben rakja be:
"four" nem pedig four.
De ezt csak gondolom.For ciklus azért nem jó, mert "imageView" 1-5 ig van, tehát a végén a számot változtatnom kellene, de azt se tudom hogy kell.
Csak azzal már nem akartam bővíteni a kérdéseim számát.69 sor már nem dob hibát, hogy adtam alap értéket.
Azt sikerült javítani.
"" Értéket adtam a létrehozásnál..Switch-ben a default -ot nem szeretem használni, mert sok galibát tud okozni. Volt már vele szerencsém. Így sokkal egyszerűbb a hibát megtalálni, ha nincs default

adj mar teljes kodot, igy csak talalgatni lehet
plusz azt h mit akarsz elerni... igy nehez tslalgatnija azt nem ertettem miert akarsz betusiteni - az nem megy hogy igy symbol-kent akarod hasznalni... es nem igy kene megoldani
-
axioma
veterán
zold: sztem mert nem ertelmes angol szo
69. hiaba tudod h mindig erteket kap a szamBetuvel, az ott statikus kodelemzes alapjan lehet inicializalatlan
[vagy legyen default ag, vagy a deklaracional irj egy ="" -t, akkor mar csak letezo erteket irsz felul]mit csinalj: ha 5 kockadobas kene, akkor a for ciklusban kene beirni [nem latszik h az-e az a blokk] az eredmenyeket
-
axioma
veterán
-
axioma
veterán
Örülök h sikerült ennyiből meglátni minden aspektusát.
#11881 Drizzt
Többek között azért is más a minőség, mert sokkal jobban végiggondolt az egész. Szinte már waterfall
#11879 btraven
Ha már rendszerszemlélet, dobd bele egy bootba, kapja meg webfluxon a nevet, majd küldje el egy ELK-nek a generált szöveget. Tedd a szöveg generálást egy service-be, amire írhatsz 1 darab unit tesztet, minden másnál mókolsz, meg integrálsz, és többször becsapod magad.#11882 axioma
Ezért mondom, hogy ehhez túl cinikus vagyok. De az már megint nem agilis, ha droidokkal dolgozol. Ráadásul a tesztelt kód többszörösét megírod, ahol a tesztben ugyanúgy lehet hiba, amin átsiklasz, mert rosszul tesztel.Vak vagyok, kevertem a ket mikulast, mea culpa... es azt gyorsolvastam h engem cinikusozol, hiaba nem is allt ossze az agilis sztoriddal. [Pedig szabin vagyok, igaz lakasatrendezes miatt nem tul kipihent.]
A velemenyem all, csak nem neked kellett volna cimeznem. -
axioma
veterán
Túl cinikus vagyok a TDD-hez

Az utóbbi években csak olyan agilis projektekben dolgoztam, ahol az agilitás leginkább arra vonatkozott, hogy menetközben találja ki a megrendelő, hogy mit is akar (vagy nem). A projektek óriási keretrendszereket használnak, amiben az egyes funkciók deklaratív elemeken keresztül automatikusan készülnek el. Ritka volt az, amikor nem változott hétről hétre a követelmény, és nagyon kevés része volt a kódnak az, amiben unit tesztre érdemes dolgok történtek.
Ha ilyen projektekre valaki rávág egy coverage kritériumot, mert az jól mutat, a teljes csapat egy emberként áll fel, és megy át a konkurenciához.
De hello ${username} példakódban piszkosul jól mutat...Vagy csak olyanok kozott dolgozom akik a problemat oldjak meg a szoftver letrehozasaval es az implementacio helyesseget tesztelik megfelelo szintu tesztekkel utat helyesebbnek tartjak.
Tesztet irni TDD-hez DE ugy, hogy az tenyleg minden lehetseges implementacio eseten minden hibat elkap, akkora befektetes, hogy annyi ido alatt az _egyik_ implementaciot tesztelessel egyutt egy-harom masik problemara is megcsinalja [JOL]. Teljes tesztet elore megirni ugy, hogy egy lehetseges implementacio mar a fejeben van, az meg a menet kozben kiderulo donteseknel csinal lyukat [aztan vagy betomik vagy nem... talan ahol merge feltetelbe fut].
Egy esetben jo lehet: az "agy" irja a teszteket, a code monkey-k/juniorok/etc. meg az implementaciot. De akkor sem biztos hogy kicsit is hosszabb tavra nezve.
[Termeszetesen az elozoleg irt kiveteleket fenntartva, altalanosabb meretu/beagyazottsagu/bonyolultsagu fejlesztesi feladatokra.] Es persze SZVSZ. -
axioma
veterán
Nalam a tdd ott bukik, hogy mikor me'g semmi nincs a szoftverbol csak tervek, akkor forditjak le a kovetelmenyeket tesztesetekre. Ami meg csak akkor mukodik jol, ha vagy eleve valami mechanikus, a kimenetekkel csak elgepelest ellenorzo a feladat [protokoll vagy kodolas stb. megvalositasa], vagy meglevo 10 eve futo cuccba +1 feature, ahol minden mas kobe van vesve, nincs fejlesztoi dontesi helyzet. Ezektol eltero esetben nagy esellyel lesz menet kozbeni varialas vagy olyan fontos kepesseg amit elfelejtettek tesztesetbe fogalmazni, mert annyira trivialis ha az egeszet nezne a fejleszto, nem csak a fixalando teszteseteket egymas utan.
(Az meg nem tdd, hogy ir teszteket, ir ettol fgtl a kovetelmenyekbol egy szoftvert, es mikor kilora kesz akkor engedi ra a teszteket, es kezd javitgatni. Legalabbis szvsz.) -
axioma
veterán
Itt nem arról van szó, hogy valaki mimóza-e, hanem hogy elfelejtettük Babitsot és egyre több a néma.
Ha valakinek akkora lelki törése van, hogy egy reál szakon nem képes absztrakt fogalmakról személyes érzelmi befolyáltság nélkül társalogni, akkor kezeltesse magát. Nem hiszem, hogy az megoldás, hogy holnaptól átírjuk a halmazelméletet, mert Kolompár Eszmeraldát a kisebbségi hovatartozására emlékeztetik a részhalmazok.En szerintem eleg absztrakt gondolkodasu vagyok, de baromira nem latnek szivesen egy olyan nevezektant, amiben ami jo az pasis, ami rossz az noi megjelolest kap. Hidd el, abbol is lesz szovicc, me'g azoknal is akik amugy respektalnak, de kozben "csak a moka kedveert" viccbe csomagolva me'gis gunyolodik kicsit. Ez pont nem szakmai nevezektan, de tenyleg olyan mondta kozvetlen nekem aki "ferjen bele, ertse jol, ismer annyira hogy tudja nem gondolom komolyan" elv menten indokolta: a "mernokno"-vel az a problema, hogy az se nem mernok, se nem no.
Vagy elozo munkahelyemen mikor kitort a covid, csinaltak egy kepregeny stilusu "tajekoztato anyagot", hogy letezik a cegnel mentalhigieniai segitseg, csakhogy a rossz pelda az egy no volt rozsaszinben macskaval, a jo pelda aki kisegitette az infoval/url-lel meg egy tesztoszteronbomba... holott a teljes ceg pasi-tultengeses volt (nem csak IT), megis ezzel abrazolta'k... eloiteletek erositesere tokeletes, kozben meg masik szalon ment ezerrel a DEI trening. -
axioma
veterán
Valoszinuleg sosem fogd megerteni, hogy mit jelent egy feketenek a mester szo hallata. En sem fogom, bar szeretnem azt hinni, hogy igen. De nem vagyok naiv, sosem fogom valoban aterezni milyen rabszolgacsalad sarjanak lenni, barmekkora is az empatiam. Az ilyen szavak tudat alatt is hatalmas karokat tudnak okozni az erintetteknek. S az is persze igaz, hogy Magyarorszagon tok mas az elsodleges jelentese a leforditott szonak, emiatt megint mas elkepzelni a pszichologiai hatasat. Idehaza persze elsosorban a mindenhez erto ember jon elo a szo kapcsan, nem a korbacsos rabszolgatarto. Meg az is igaz, hogy biztosan korulvesz minket ezer olyan szo, ami mas emberekben szorongast valt ki. Es persze eszre se vesszuk. Azert amik eleg szeles korben okoznak problemat, az reszemrol nem baj, ha atnevezesre kerul. Meg fogom birni szokni, hogy 1 betuvel kevesebbet kell gepelni.
+1 meloban a dummy is tiltott, de pl. a buildcop is, build gardener a pol.korrekt - nyilvan mas a toltese erzelmileg az egyes - sajnos angolban overload-olt - szavaknak, amivel egyet lehet tenni, tiszteletben tartani
-
axioma
veterán
-
axioma
veterán
Hat ennyibol csak azt lehet megmondani, hogy vagy rossz az interface design-ja, ha igy kell hasznalni akkor irhatott volna melle kommentet hogy minek, vagy tenyleg hibas a sor duplazasa. Ezen felul vagy felesleges (abban az ertelemben hogy nem okoz semmi elterest), de akkor rossz az elnevezese a fuggvenynek [pl. ha set jellegu, egy par csak 1x lehet akkor ne nevezze add-nak], vagy kimondottan problemat okozhat (pl. memoria), ha egy "add" egy peldanyt fog letrehozni azaz szumma 2-t, de kesobb muvelet csak az egyikkel van (es megszuntetes is 1x).
Es szerintem me'g mindig nem fedtem le az osszes lehetseges kombinaciot... Nyilvan attol is fugg, hogy hol van ez a kodreszlet, ha egy standalone jatek (amire elsore asszocialni tudok), akkor kiszeded es kiprobalod, de prod kornyezetben ez nyilvan egy teljesen mas folyamat (es itt me'g csak nem is arra gondolok hogy forumrol vagy mashonnan szerzel hozza infot). -
axioma
veterán
Intellij-ben sout+tab - ha nem tartasz szunetet a t utan - ugyanezt csinalja, sztem lenyelmesebb. Lehet h ctrl-space az altalanosabban megy, azt nem tudom es most epp nincs keznel.
-
axioma
veterán
-
axioma
veterán
Sziasztok!
Létezik olyan program amit pendrive tudnék tenni és még x86 os rendszeren is működik?
A cél a java programozás. De inkább csak az alapok. Egyelőre.
A munkahelyen sok a szabadidőm és kiakarom ezt használni.
A gond hogy nem fix helyen ülök ezért egy gépre sem telepítenék.Pendrivra raktam már egy Eclipset Javaval de lassú.
Ráadásul xp-n kellene működnie.Létezik erre valamilyen megoldás?
Ha ugyis tanulas a cel, es nem elsosorban az IDE-t akarod megtanulni, akkor keress fel egy szimpatikus site-ot amelyik hasznal online ide-t (codechef, hackerearth, leetcode stb.) - ezekne'l meg kesz feladatokat is talalsz.
Viszont fontos kerdes, hogy mennyire munkadhoz kotodik a programkod alkotasa (fejleszto vagy csak mas nyelvben, vagy teljesen mas), mert a cegen policy-je siman kizarhatja az aka'r ilyen kezdo szintu kod barmilyen (pendrive, online ta'rolas) kivitelet a ceg rendszerein kivulre, tajekozodj. [Mi prog.club-ot csinalunk a ceg profiljatol teljesen fuggetlen stilusban, de ha akar ceg altal tamogatott oktatasban vagy, akkor sem lehet cegbelso kornyezetbol kodsorokat kifele vinni, pl. feladatot megoldani/beadni, mert az mar a ceg tulajdonaban levo kod leak-elesenek szamit.] -
axioma
veterán
(illetve csak setter-en keresztuli valtoztatasnal az objektum konzisztens allapotara lehet vigyazni barmely fenntartando feltetel, pl. egyeb membert erinto keresztbehatas eseten)
-
axioma
veterán
"Most azt csináltam hogy ezt az eclipse mappát töröltem."
Persze, miért ne, pótalkatrész!

Azt nem tudom, hogy eclipse mappa nélkül hogyan tud működni, mivel az adja a felhasználói felület vázát (ezekszerint mégsem), de örülök, hogy sikerült működésre bírni.eeepc: Az ilyen kompakt cuccokkal óvatosan kell bánni, mert a vas okozhat kompatibilitási problémákat. Nem is olyan régen volt egy NASom, szerettem volna jávát telepíteni rá, amikor is kiderült, hogy ARM proci van benne és max csak valami kiherélt, butított jávát támogat. Az Intel procival szerelt változatot kellett volna vennem, mert azon nagyobb eséllyel működnek a PC-re készült programok.
A másik lazábban kapcsolódó sztori, hogy egy huszonvalahány éves PC-re sem sikerült már bármit telepítenem, sőt egyre kevesebb dolgot, mert annak a procija ugyan intel, de nem támogatja pl. az SSE utasításkészletet, és úgy tűnik az egy rendkívül fontos dolog. Szóval csak azt akarom mondani, hogy kockázatos PC-re írt szoftvert használni egy nem "igazi" PC-n, mert nem biztos, hogy működni fog.eeepc-m volt, sima windows intel minden, de valami 1GB ram-mal
-
axioma
veterán
Keresztkerdes: az ediag program letezo es futtathato, csianlja amit kell csak ezt dobja az autorun-ra vagy most raktad fel es sose ment, csak idegesit ez az ablak?
Nem vilagos, hogy mennie kell-e ugy alapbol a hatterben, vagy mi az elvart mukodes. Amivel en anno szivtam, az a 32/64 bites java verziok kozul hogy mikor mit tekintett egy program sajatnak, es ebben 32-es os van parameternek megadva, ez amugy stimmel nalad? Bar ha a hasabol veszi a jvm-et akkor nem kene kavarjon (de csak nem kene...) -
axioma
veterán
Ezzel kellett volna kezdeni, hogy diplomamunka ötleteket keresel...
Jelszókezelő talán nem elég komplex diplomamunkának, de ez függ a képzési helyedtől. A helyedben összeírnék pár ötletet (a sajátjaidat, meg akár innen is válogathatsz pl: https://www.inf.u-szeged.hu/~alexin/m/theses.html - közte van vhol az enyém is
), és bemennék a konzulensedhez, hogy szerinte melyik lenne a legjobb.Ha egyátalán van konzulensed, tippre még nincs, akkor viszont keresd meg akit majd akarsz, és beszélj vele. A diplomamunka nem Rambó stílusú kódolás.
Ha Szeged es eleg regi akkor kell ismeros is legyen kozte, igy is van
Koszi a nosztalgiat, ez ma ugyis egy ilyen nap! -
axioma
veterán
"En tobb dologban nem ertek egyet a sonarlint-tel, de ettol me'g orulok hogy van, mert neha egyszeru teveszteseknel felhivja a figyelmet a potencialis hibara."
Akinek nem inge ne vegye magára, de én meg azt nem fogom soha megérteni, ha van egy tool aminek a célja a minőség javítása és igen népszerű akkor miért kell kiakadni ha valakinél esetleg jobban tudja a dolgokat? Én nem mondom azt, hogy nincs így de nem is értem ez.
"szornyek keletkeznek"
Én megint csak pont az ellentetjével találkoztam. Ha túl komplex egy metódus szól, hogy nagy. Szerintem ez pont jó. És az esetek 99%-ban igen, tudod még jobban fragmentálni a dolgokat.
Szerintem simán jó dolog, de tényleg, felőlem aki akarja használja aki nem nem. Én látok benne elég sok potenciált és tudást mögötte.
A szorny nem fuggvenynel volt hanem matrix-implementacional (amit aztan nem hasznalnak). A legvegen igy is, ugy is maradt raw type hozzarendeles, de azert hogy 1 helyen legyen nem 2 helyen (kb, lehet hogy 3-4), ettol bevezettek a rekurziv definiciot es ket type parametert... (hogy osszekossek a matrixtipust meg a utilities tipusat, holott a matrixtipus futas soran egyszer, config-bol olvasodik fel).
A fuggvenyre kedvenc peldam a Gauss-eliminacio. Azt szetszedve en biztos kevesbe ismernem fel, a korrektseghez 5 parameteresen lehetett volna a belso fuggvenyt kiemelni (kettot member-bol szamoltunk vegul), de nem lehet egy fel kepernyonyi (vizszintesen, meg nem mondom de biztos <50 LOC) fuggveny, mert tul bonyolult. Az hogy normalisan elnevezni a belsejet nem lehet, az nem baj. Az hogy egy csomot lassit egy azert hoztuk letre hogy jobb legyen sebessegben mint az ApacheCommons, az nem baj. Csak hogy jo alacsony legyen a bonyolultsag, es egysegsugarunak is oda lehessen adni (akik amugy per def nem is dolgozhatnak ebben a csapatban). DE ez az eset, amire azt mondom, hogy a kivetel ami erositi a szabalyt, es egy programozo tudja mar hogy mi az hogy Gauss-eliminacio. A tobbsegeben egyetertek azzal, hogy bontsuk le a hosszu fuggvenyeket.
Az mar egy masik kerdes, hogy ne ugy bontsuk le hogy veszunk 3 altalanositott szornyet, es a sajat sub-task-unkat nem is oldjuk meg csak felparameterezzuk a mar keszet, elotte-utana heavy konverziokkal, de mind1, mert az me'g egy sor csak a stream-ben... kozben picit odafigyelve a 2 oda-vissza megoldhato 1-bol (most egy Date meg Instant dologrol beszelek, az egyik kulso adottsag, a masik belso kenyszer mert kell a het napja).
De kb. egy eve talaltak olyan bottleneck-et, hogy mindenhol az ID nyersen ment tovabb, es minden egyes lepes kulon parsolta ki belole a neki kello reszt (mondjuk az se egy jo design ahol az id darabolhato, me'g ha van ilyen kulso forras is, de belul mi a feneert nem egybol lenyegitik at a kesobb hasznalt reszeire. -
axioma
veterán
Szerintem van ráció abban amit a SonarLint ír. Lehet, hogy komplexebb lesz a dolog de akkor is biztonságosabbá válik azáltal, hogy valmait kell kezdened a DTO-val és nem tudod csak úgy pusztán elmeneteni.
Az egész sonar opcionális, nem muszály használnod. De egyszerűen, egy plugin telepítésével összeségében nagyon sokat tudsz javítani a minőségen.
Én általában a nálam okosabb emberek által javasolt dolgokat elfogadom, persze nem jelenti azt, hogy neked is el kell. Régóta létezik, ha akkor szar lenne, azért bízom benne, hogy nem létezni.
Ki volt és megint hol demagóg? Valláshábórú != demagógia (bocs, ha nem nekem szólt).
En tobb dologban nem ertek egyet a sonarlint-tel, de ettol me'g orulok hogy van, mert neha egyszeru teveszteseknel felhivja a figyelmet a potencialis hibara.
A baj az amikor kotelezove teszik az osszes sonarlint hiba javitasat, es olyan szornyek keletkeznek, hogy az mar nem konnyiti hanem neheziti a megertest. Mert azt megertem hogy a sonarlint celja olyan szintre levinni a fejlesztes szinvonalat hogy egysegsugaru programozo is kovetni tudja, de ez minden csak nem hatekony, ha nem egysegsugaruakkal csinalod amugy a projektet.
Nyilvan SZVSZ. -
axioma
veterán
Me'g mindig nem. A szamologepbe NEM copy-zol olyat ami oda van irva (legalabbis az mar nem szamologep hanem mini-excel...). A szamologep a billentyunyomkodasok menten mukodik. Peldaul azt irja be hogy 12 / 17 sin. Ez lesz a sin(12/17). De mi a fenenek kuldened ebben a formaban a backend-nek? Te a nem szamjegy gombnyomasoknal, ha volt uj szam akkor azt es a muveletet kuldod el, es reszeredmenyt vissza. Tehat 12,/ eseten vissza 12, 17 sin-re vissza a sin(12/17). Ha megengeded a precedenciat (es/vagy zarojelet, de ez azert eggyel komplexebb, en elsore megneznem hogy a feladatleiras alapjan muszaj-e, mert a sima szamologep NEM tudja es a legtobb usernek kb. nem is kell), akkor annyi hogy a backend-en kell egy verem is. De a szamologepen tulkepp forditott lengyel, tokenizalt a bemenet (ugye a sin-ra se a 3 betut kell atkuldeni, hanem egy kodot ami azt jelenti nalad hogy a sin gombot nyomtak meg).
"4*(3+sin(12))" -> a szamologepen ezt is ugy irod be leginkabb, hogy 12 sin +3, *4
Ha nagyon muszaj zarojelezest is tudni, akkor is ilyesmi:
4,* -> vissza 4
( -> vissza 0
3, + -> vissza 3
12, sin -> vissza sin(12)
) -> vissza 3+sin(12)
= -> vissza 4*(3+sin(12))
Tehat minden nem szamjegynel vagy 1 vagy 2 parametert kuldesz, ha volt szam akkor azt es a muveletet, ha nem, akkor csak a muveletet (zarojelet, akarmit).
Probald ki a windows tudomanyos szamologepben.
A nehezites a precedencia. De csak az osszeadas, szorzas eseten (max. ha kell hatvanyozas ott is). A sin() es mas 1-operandusu muvelet az mindig arra vonatkozik, amit epp kiir. -
axioma
veterán
Enyém minden frontend backend ahogy van.
Most hogy mondod igen ennek több értelme van. Én teljesen úgy gondolkodtam, hogy a műveleti mezőnek TextField-nek kell lennie, és ha mondjuk becopy-zod a "4*(3+sin(12))"-t akkor nincs gombnyomás ami mentén felosztod a műveleteket meg nyeljen le üres zárójelet ilyenek.
De akkor "csak" össze kellene foltoznom egy reguláris kifejezést amivel szétbontom, és műveleti sorrendben végigmegyek tömbbön.Semmis akkor a kérdés, csak évek óta nem csináltam ilyesmit, és túl későn este akartam hozzákezdeni. Inkább le is tagadom, hogy hozzákezdtem volna megy a letagadom kupacba.
Me'g mindig nem. A szamologepbe NEM copy-zol olyat ami oda van irva (legalabbis az mar nem szamologep hanem mini-excel...). A szamologep a billentyunyomkodasok menten mukodik. Peldaul azt irja be hogy 12 / 17 sin. Ez lesz a sin(12/17). De mi a fenenek kuldened ebben a formaban a backend-nek? Te a nem szamjegy gombnyomasoknal, ha volt uj szam akkor azt es a muveletet kuldod el, es reszeredmenyt vissza. Tehat 12,/ eseten vissza 12, 17 sin-re vissza a sin(12/17). Ha megengeded a precedenciat (es/vagy zarojelet, de ez azert eggyel komplexebb, en elsore megneznem hogy a feladatleiras alapjan muszaj-e, mert a sima szamologep NEM tudja es a legtobb usernek kb. nem is kell), akkor annyi hogy a backend-en kell egy verem is. De a szamologepen tulkepp forditott lengyel, tokenizalt a bemenet (ugye a sin-ra se a 3 betut kell atkuldeni, hanem egy kodot ami azt jelenti nalad hogy a sin gombot nyomtak meg).
-
axioma
veterán
Sziasztok!
Számológépet csinálok, és bajban vagyok a string parsing-al. Minél többet gondolkodok rajta annál jobban túlbonyolítom...
Neten keresve, vagy csak kétszámos megoldásokat találok amiben nincs is parsing, vagy visszadob a 120 ezredik split() pont mentén leíráshoz.
Tudnátok esetleg ajánlani valamilyen referenciát/példát ahol bármi hasonló megvan valósítva? Szóban is bőven elég lenne, csak hogy nagyjából milyen módszerrel lenne szépen megoldva.Egy kis rant: nyakamba varrtak egy számológépet amiben minden alapműveletnek, sin, tan cos, asztali, és webes nézettel aminek azonos adatbázisa van, működjön minden fő számrendszerben, minden alap mértékegységet váltson át, és API-n keresztül menjen a valuta váltás.
Mindeközben mások nyamvadt amőbát csinálnak meg recepkönyvet. String in, save click, és csókolom.Mit szeretnel parse-olni? Ha jol ertem akkor a tied a frontend. Ha meg igy van, akkor a gombnyomasok tulajdonkeppen megcsinaljak neked a tokenizalast, sot tulkepp rogton a kifejezesfat is felepitheted mindig ahogy jon a kovetkezo gombnyomas (nyilvan szamoknal a szamjegyeket erdemes a frontenden osszevarni es 1x konvertalni). De mar csak azert is igy erdemes mukodnie mert a szamologep a reszeredmenyt altalaban mar irja.
Vagy valamit nem ertek jol. -
axioma
veterán
Hat, reszben ertek egyet. Marmint a gondolkodasmodot onmagaban nehez egy ilyen tanfolyamon megszerezni, de az az erzesem hogy ezek a cegek pont azokat probaljak felvenni, akiknel mar van valami analitikus/algoritmikus gondolkodas, arra epitik ra a konkret programozasi tudast, processzt.
Tehat annak javasolhato a tanfolyam, akit amugy is erdekel, kozel all hozza ez a fajta munka (nem a penz miatt), van alapja (mintha csak diplomaval vagy annak kozeli multtal vennenek fel), es hajlando a tanfolyam honapjait csak erre forditani (nem csak esti muszakban tolja at a sajat melojat hogy ne utkozzon, hanem adott esetben este is nekiall kodolni). Ha ez megvan, akkor szerezhet junior szintet, bar nekem nagyon fura hogy miert fullstack-eznek, akkor feluletesebb, mindenbol kevesebb tudas/gyakorlat lesz.
Egyebkent van olyan ismeros aki elegge mas iranyu diplomaszerzes korul vegigcsinalt egy progmat felvetelit, ahhoz ugye info erettsegit (bar asszem kozepszint eleg volt neki), epp halaszt de gondolkodik egy ilyen tanfolyamba atugrasban. Es me'g ot se biztos, hogy felvennek. Szerintem - most meg plane - van annyi jelentkezo, hogy aki bejutott, arra mar igaz lehet hogy eleg valoszinuen kepes lesz junior lenni a vegen. De ez nem azt jelenti, hogy aki kitalalja hogy kiprobalna, az fel ev mulva kesz junior.
Persze tevedhetek en is, de ezzel a felteteles moddal egyutt en hihetonek tartom mar. -
axioma
veterán
-
axioma
veterán
Engem az zavar amikor a clean code-nak a keplettel ellenorizheto reszet eroltetik, a lenyeget meg siman felrugjak egy unit test kedveert. Kaptam olyan review comment-et hogy a comment-ben (ok kertek hogy legyen leiras hogy miert ugy) a folyo angol szovegben egy zarojel elott nem volt szokoz, potoljam... [osszevontam ket sort es ugy maradt].
En ugy gondolom, hogy a clean code a biorobot kodiroknal muszaj, akik raadasul surun cserelodhetnek, es ezt aztan mint szabvanyt probaltak elterjeszteni hogy a manager egyenletesebb (nem jobb, nem gyorsabb, hanem kiszamithatobb!) haladassal tudjon szamolni.
Nyilvan a clean code masreszt nem mas, mint egy best practice gyujtemeny, iranymutato. Aki gyakorlott, az nem mint clean code csinalja, hanem mint egyszeruen adodo helyes megoldas. [Kedvenc peldam erre, hogy mennyit kuzdenek a tanarok mikor az adatbaziselmeletben keresnek olyan eseteket ami x NF de nem (x+1)NF. Mert termeszetes uton senki nem ugy allitja ossze, ha mar addig eljut hogy atgondolja, hogy ez egy karbantarthato sema legyen. Tok hasonloan a kozosbe irt kod is. Szerintem.] -
axioma
veterán
Ne csinaljatok mar! Szerintem senkinek nincs igaza
Na jo, mondhatjuk ugy is, hogy mindkettotoknek.
A kerdes, hogy az adat _felhasznalva_ mikor es hogyan lesz. A mikor mindket ertelemben: 1. mikorra lesz kesz valami, ami mar hasznalja 2. a bekeruleshez kepest mikor (on-the-fly vagy havi osszesites). Ha a ketto kozul barmelyik a PatoPal-os verzio, akkor en bizony kezzel nyersen (az ellenorzest se eroltetnem bele) letolnam, azaz a gyujtes mar megkezdodik egy ket perces script utan; ellenben barmi magasabb szintu (adatellenorzes, osszesites stb.) plane megjelenites jellegu izet valami magas szintu, akar java nyelven tennek meg.
Most mar mindketten lohettek ide
-
axioma
veterán
Az a baj a script ninjákkal, hogy mindig arra a feladatra koncentrálnak, ami az orruk előtt van. Ezt meg lehet oldani két sor scripttel, ja várj még mókolok rajta.
Szinte minden esetben, amikor egy ilyen kérdés felmerül, jönnek az újabb ötletek, és a végén te is tudod nagyon jól, hogy nem kötélhintát szeretne az emberünk, hanem komplett vidámparkot. Aztán abban a vidámparkban találd meg az egyes scripteket, amiket jó esetben a szerzője tud értelmezni. Tele van a padlás ilyen "szakemberekkel", akik indulatból oldanak meg mindent.az elastic maga az "adatbázis"
a kibana egy dashboard, amivel megjeleníted a méréseket, nyilván nem terminálon queryzgetve akarod nézegetni
a logstash a "pumpa", amivel tetszőleges forrásból, és formátummal betolod az adatokat, ha netán bejönnek új mérésekEttől függetlenül lehet scriptekkel gányolni
Tetszik a vidamparkos hasonlat

[off, csak errol jutott eszembe, az idei adventofcode feladatainak majdnem fele egy ilyen evolucios dolog: az elejen csak 2 opcode-ot ismero ertelmezo volt a feladat, most mar komplett terkepet uzemeltet a sajat hasaban es azt kell meghajtani kivulrol algoval -- megjegyzem nekem tetszik es viszonylag uj is ez a(z elore nem ismert) funkcionkkent tovabbpockolos munkamodszer - igaz nem is java-ban hanem pythonban csinalom] -
axioma
veterán
É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.
----
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.Egy kicsit a kodminoseghez. Ez is olyan, hogy at lehet esni boven a lo tuloldalara. Lassan mar hulyenek nezes esete forog fent, amikor rankeroltetik a 16-os complexity-t (vayg mennyire van allitva), nem beszelve az abbol adodo extra feladatokrol (a complexity miatt letrehozott kulon fuggvenynek vajon kell-e ujra parameter-ellenorzest csinalnia, es a unit test-jenek kell-e olyan eseteket is lefednie, ami az egyetlen hivasi helyen nem fordulhat elo?). Szoval en egyetertek az elvekkel altalaban, de nagyon durva amikor valaki nem azt nezi hogy milyen egy masik - az adott feladattal megbizhato! ha valami komplex cucc kozepe, akkor nem egy most esett ki a bootcamp-bol - fejleszto megerti-e, hanem hogy a szintetikus pontozassal mibe tud belekotni.
Nyilvan ez nem jelenti azt, hogy nincs szarul megirt kod. Csak hogy neha annyira de annyira tullihegik... en 20+ ev multtal pont nem tudnam felsorolni a solid betuszo feloldasat, ettol fuggetlenul azert lehet megis annak megfeleloen dolgozni. Kicsit olyan mint a torvenyek betartasa: egyreszt a torveny a tarsadalmi normak osszegyujtese, megfogalmazasa; masreszt meg senki nem tudja beteve a BTK-t, megis tud esetekrol zsigerbol jo ertekelest adni. A solid is nem csak ugy kinott es tanitjak, hanem a "termeszetesen" kialakult best practice-nek egy szaraz, es megis gumiszabaly osszefoglaloja. Kb. arra jo hogy indokolni tudd, hogy a masiknak (vagy plane kezdonek) az elkepzelese miert nem jo, de nem ugy adsz ki tervet a kezedbol hogy elotte gyorsan leellenorzod, hogy vajon stimmel-e minden betu.
Szerintem. YMMV. -
axioma
veterá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?
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

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.
-
axioma
veterán
Abban a blokkban ervenyes, ahol letrehoztad. Ha bezarod a blokkot, eltunik, es ez pont igy van jol.
Ha kivul is akarod hasznalni, akkor ket dologra van szukseged:
1. kint deklaralni - nyilvan a felhasznalas helyetol fuggo mertekben "kintebb" (ez me'g ugye nem jelent feltetlen ertekadast is)
2. ezutan vagy csak olyan helyzetben lekerdezni, mikor ugyanazon feltetelben vagy (de egyreszt ezert minden normalis IDE kiabalni fog, hogy lehetseges hogy inicializalatlan valtozo, masreszt valoban lehet hogy itt-ott kicsit modositgatva kesobbi igenyek miatt pl. az if-eket ez nem fog mar fennallni), vagy pedig kell neki valami ertelmes ertek akkor is, ha nem az if-en beluli erteket kapja (ugy ertve hogy olyan amit feltetelezve valoban jol fog vegigmenni minden lepes). -
axioma
veterán
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?
Engem meg code review-n (prod.code) direkt felszolitottak, hogy lambda-sitsak. Szerintem attol fugg, hogy hol mi a szokas, en egyebkent nem tartom olvashatatlanabbnak (csak az adott esetben kovettem a korabbi kodstilust). Szerintem nem art megszokni, peldaul a sonarlint ezt nem veszi elagazasnak es extra bonyolitaspontnak ha jol remlik
-
axioma
veterán
Bar kezdonek nem biztos hogy igy kezdenem, de igen, engem is zavar hogy a null-ra kulon kell a kezdes miatt vizsgalni (bar lehetne az elso elem a min/max, de akkor meg nem elegans onmagaval ujranezni). Amikor me'g csak indexszel lehetett vegigmenni, ez fel se merult. -
axioma
veterán
Sziasztok!
Ne haragudjatok, biztosan nem ez a legmegfelelőbb topik erre a problémára, de minél hamarabb megoldást kellene találjak rá, amit egyelőre sehol nem találtam, hátha most ti tudtok segíteni!Adott programok a JAVA, ANYK (általános nyomtatvány kitöltő [ez kell az adóbevalláshoz is]) valamint egy nyomtatvány .jar kiterjesztésben. Na az adott gép, ahol szeretném telepíteni ezt a jar fájlt az ANYK-hoz, egyszerűen nem futtatja azt. Felvillan egy commander ablak, lefut valami villámgyorsan, de be is zár (ez kb fél mp.) Közben meg kellene nyisson egy telepítő részt. Otthon a saját gépemen működik.
Próbáltam vírusirtót (tűzfalat) kikapcsolni, a programokat újratelepíteni, de ugyan úgy semmi. Erre valami ötlet? Mi foghatja meg, miért nem fut le? Lett valami telepítve, ami megfogja?Egyreszt velem volt olyan, hogy elsore mikor nem figyeltem felrakta, aztan masodjara mar nem foglalkozott vele mert benne van, nezd meg hogy a sikertelennek tuno probalkozasok kozben nem kerult-e mar fel.
Masreszt, ha rosszul van beallitva a java (vagy utvonala, vagy a kiterjesztesekhez rendelese), akkor a .jar kiterjesztes nem eleg a windowsnak. Nyiss egy cmd-t (Command Prompt <desktop app>), es irdd be, hogy "java" (kieg. meg jobb ha "java --version"-nel probalkozol). Ha erre azt mondja, hogy nincs ilyen, akkor a java (JRE) install nincs rendben azon a gepen. Ha kapsz verziot, akkor probalkozz a "java -jar <a nyomtatvany jar-anak utvonala>" (vagy ha egy konyvtarban vagy vele, akkor csak a file neve kiterjesztessel).
Ha ezzel se sikerul belevarazsolni a nyomtatvanykitoltobe, akkor szamolj be hogy meddig jutottal. -
axioma
veterán
Nem látom át teljesen a problémádat, a streamektől nem egyértelmű, hogy mi történik. Egy működő példa talán segítene, hogy pontosan lehessen vizsgálni, mire gondoltál.
Nekem úgy tűnik, hogy a lambdák type inference limitációjába ütköztél.
Néhány link, ami indulásnak jó lehet, Brian Goetz kommentjeit érdemes olvasni:
[link]
[link]
[link]
Ha nagyon beleásod magad, javac-vel debug paraméterezéssel (utolsó link) ki lehet vsz. deríteni, hogy mi történik pontosan.Na ugy tunik, hogy a gond nem is azzal van, hogy a lenti
.reduce(...)nem tudja aSpecInterface<K>-rol hogy az egyDoublePanel<K,String>, hanem az, hgoy a reduce azt varna, hogy amit "visszapakolunk" elemet az az eredetivel egyezo tipus legyen. Fuggetlenul attol, hogy maga a reduce muvelete azt csak mintDoublePanelhasznalja. -
axioma
veterán
Nem látom át teljesen a problémádat, a streamektől nem egyértelmű, hogy mi történik. Egy működő példa talán segítene, hogy pontosan lehessen vizsgálni, mire gondoltál.
Nekem úgy tűnik, hogy a lambdák type inference limitációjába ütköztél.
Néhány link, ami indulásnak jó lehet, Brian Goetz kommentjeit érdemes olvasni:
[link]
[link]
[link]
Ha nagyon beleásod magad, javac-vel debug paraméterezéssel (utolsó link) ki lehet vsz. deríteni, hogy mi történik pontosan.Koszi. Ceges es eleg komplex, nehezen szednek ki mukodo reszt topic keretek koze, de a linkek valoban ilyesminek tunnek, atbogaraszom.
-
axioma
veterán
Van egy szamomra nem ismert oku jelenseg, bocs kicsit hosszu.
A feladat: volt egy 2 adott tipusu objektumot kombinalo osztaly, most ugyanez kene altalanosan, tobb elemre.
Az objectumok tipusabol ami lenyeges:public interface SpecInterface<K extends Serializable & Comparable<? super K>>
extends DoublePanel<K, String>
ahol:public interface DoublePanel<R extends Serializable,C extends Serializable>
Ezen kivul kene hasznalni a kombinalashoz mindket iranybol egy-egy fuggvenyt:
A SpecInterface-bol:Optional<SubType> getMyList()
A DoublePanel oldalrol meg egy Utils osztalyon keresztul:public static <R extends Serializable, C extends Serializable>
DoublePanel<R, C> mergeColumns(DoublePanel<R, C> left,
DoublePanel<R, C> right)
Ami az eddig kodban volt:SpecInterface<K> f1=...SpecInterface<K> f2=...
es ezutan siman ment a ketfajta meghivas:...=f1.getMyList()...=DoublePanelUtils.mergeColumns(f1, f2)
Most viszont az elemeket praktikus okokbol Stream-bol vennem es hasznalnam ezeket a kombinalashoz szukseges lepeseket. Az elso nyilvanvaloan csak akkor megy vegig, ha a tipusaStream<SpecInterface<K>> fobjs, viszont ekkor a...=fobjs.reduce((f1, f2) -> DoublePanelUtils.mergeColumns(f1, f2)).get();
sornal azt mondja, hogy nem tudja R,C, es K erteket meghatarozni.
Ellenben ha beszurom hogyStream<DoublePanel<K, String>> fobjs2 = fobjs.map(f -> f);
akkor siman lefordul az...=fobjs2.reduce((f1, f2) -> DoublePanelUtils.mergeColumns(f1, f2)).get();
Mukodik, de randa, es jogosan nem szeretnek code review-n, de azt se tudom hogyan kene rakeresni az okra es megoldasra. El tudna valaki legalabb iranyitani hogy merre keressek? -
axioma
veterán
Hogy lehetne megoldani, hogy if-else szerkezeten belül a megfelelő return hajtódjon végre?
(A feladat szerint a String szam telefonszám bekérése után a megfelelő osztályba kerülünk, ahol további számítások vannak, de azt már megírtam.)private static PhoneNumber PhoneNumber; //gyanítom erre is szükség leszpublic static PhoneNumber create(String szam) {String regex = "\\d+";String firstLetter = String.valueOf(szam.charAt(0));if (szam.matches(regex) == false) {System.out.println("nem jó");System.exit(0);} else if (szam.matches(regex) == true) {System.out.println("tartalmazza");if (firstLetter == "1") {PhoneNumber = new KwakPhoneNumber();return PhoneNumber;} else if (firstLetter == "8") {PhoneNumber = new IkiPhoneNumber();return PhoneNumber;} else if (firstLetter == "9") {PhoneNumber = new McChipPhoneNumber();return PhoneNumber;}}return PhoneNumber; //ez itt a fő kérdés, hogyan adjam vissza a megfelelő returnt}Egyreszt tipikus switch-case pelda az else if-ek helyett, ha mar tanultatok.
Masreszt gyanus, hogy az altipusok konstruktorai nem kapjak meg a szam nevu stringet.
Harmadreszt lehet egybolreturn new KwakPhoneNumber(szam);alakban. Vagy ha mar mindenkepp valtozoba is teszed (bar ez a jelen reszlet nem indokolja), akkor nem kell az adott agon vissza is adni, eleg az ahova odakommentelted...ami jelenleg nonreachable, az IDE nem jelzi neked?ja nem, akkor az jo, ha az az altalanos eset, de ott is kene akkor egy konstruktorhivas es a parameter megadasa.[Amugy az altipusok azok leszarmazottjai rendesen a PhoneNumbernek? Mert anelkul nem fog menni.]
-
axioma
veterán
Sziasztok.
Hogy lehet egyik osztály függvényéből átadni értéket egy másik osztály függvényének?
Jelen esetben:
Innen szeretném
public class Ital {
String nev;
double szazalek;
int ml;
public double getAlkoholGramm() {
return 0.8*ml*szazalek/100.0;
}
}a getAlkoholGramm() függvény értékét átadni a veralkoholEzrelek() függvénynek:
public class Ember {
String nev;
int kilogramm;
double alkoholGramm;
public double veralkoholEzrelek() {
return alkoholGramm / kilogramm;
}
}Ha a veralkoholEzrelek()-be beleírom, hogy
alkoholGramm = Ital.getAlkoholGramm();, akkor pedig ezt az üzenetet írja ki NetBeans: non-static method getAlkoholGramm() cannot be referenced from a static contextTudnátok segíteni, hogy mi a gond és hogyan lehet megoldani? Előre is köszönöm!

A gond ott kezdodik (bocs, nem bantas, hanem segitseg akar lenni), hogy mas az osztalydefinicio es mas a peldany.
Menjunk vissza, mi a cel? Lesznek ember-peldanyaid, meg ital-peldanyaid, es az a kerdes, hogy ha megissza egy emberpeldany az italt, mi a(z uj) veralkohol-szintje. Vagy az jobban illik az eddigi kododhoz, hogy ha meginna, mennyivel emelne a veralkohol-szintjet.Szoval a lenyeg, hogy a fenti, nevezzuk inkabb verezrelekNoveles() fuggvenyednek kene egy Ital tipusu parametert definialni, es az adott ital-peldanytol elkerni a megfelelo adatot.
public double verezrelekNoveles(Ital egyital) {
return egyital.getAlkoholGramm() / kilogramm;
}Az elnevezes most direkt ilyen "kilogo", hogy jobban lasd a kulonbseget, de nem kovetendo.
szerk. lassu vagyok... keresztposzt
-
axioma
veterán
Az a baj h legyinthetnek de az mar kiveri a biztositekot hogy irracionalis megoldast csinalnak. Atterveztek, full tipusos [eddig jo], de ehhez 'en' a szamolo rutin mondjam meg melyikkel akarom hasznalni [implnev.class]. Mert hogy csak igy lehet. Magyarul, atnezve az atalakitast, csak nem akarjak h naluk legyen default. Ez mar reg nem a tipusossagrol szol... Megmodositottam offline ugy [azaz lehetseges, szoval vegulis +1 nap alatt kiderult a valasz, h o"k erveltek rosszul -- bar tovabbra is randa, rosszabb mint volt, karbantarthatalanabb], hogy jojjon 'toluk' default, mi a velemenyuk - a vicc hogy azt meg egy darab if miatt [hogy jofej legyek es ne null-t adjak at ha a default-ot kerem] le-felesleges-bonyolitasozta. Ja ok Londonban ulnek csak en Mo-on...
Mind1, egyelore dokumentalom az egyet nem ertesemet, mar ha benne marad nalam az implementacio megadasa a calc-os osztalyban, aztan ha telik a pohar [mert kozben a manager fonoknek meg en vagyok lasu mig ok ezen ulnek] akkor aktivalom a linkedin-emet...
Viszont sokat javult a generic-ekrol a tudasom, eddig ahhoz hasonlitanam mint nyelvtudasnal a passziv szokincset, hat most beaktivaltak ;-)Nyilvan ugy alakitottak, hogy az lesz amir ok kitalaltak. Orvendek...
-
axioma
veterán
A raw típus manapság csak a probléma kikerülése. Nyilván a full típusosság több tervezést igényel, de meg szokta érni.
Az a baj h legyinthetnek de az mar kiveri a biztositekot hogy irracionalis megoldast csinalnak. Atterveztek, full tipusos [eddig jo], de ehhez 'en' a szamolo rutin mondjam meg melyikkel akarom hasznalni [implnev.class]. Mert hogy csak igy lehet. Magyarul, atnezve az atalakitast, csak nem akarjak h naluk legyen default. Ez mar reg nem a tipusossagrol szol... Megmodositottam offline ugy [azaz lehetseges, szoval vegulis +1 nap alatt kiderult a valasz, h o"k erveltek rosszul -- bar tovabbra is randa, rosszabb mint volt, karbantarthatalanabb], hogy jojjon 'toluk' default, mi a velemenyuk - a vicc hogy azt meg egy darab if miatt [hogy jofej legyek es ne null-t adjak at ha a default-ot kerem] le-felesleges-bonyolitasozta. Ja ok Londonban ulnek csak en Mo-on...
Mind1, egyelore dokumentalom az egyet nem ertesemet, mar ha benne marad nalam az implementacio megadasa a calc-os osztalyban, aztan ha telik a pohar [mert kozben a manager fonoknek meg en vagyok lasu mig ok ezen ulnek] akkor aktivalom a linkedin-emet...
Viszont sokat javult a generic-ekrol a tudasom, eddig ahhoz hasonlitanam mint nyelvtudasnal a passziv szokincset, hat most beaktivaltak ;-) -
axioma
veterán
Nyilvan, de ha latnad mit csinaltak belole... annyit szeritnem nem er meg az egesz. Foleg karbantartas, rafejlesztes lesz igy sokkal attekinthetetlenebb. Es most volt standup, kiderult hogy "try to" szinten van hogy kiszedjek a bedrotozast... eh.
-
axioma
veterán
Nem az a bajuk, de most varjunk egy kicsit mert a comment-emre azt mondtak megoldjak.
Amugy igy nezett ki valahogy eredetileg:
interface XMatrix<M> ...
interface XMatrixUtils<M>
interface Linalg<T> ... { XMatrixUtils<T> newXMatrixUtils()...
A linalg implementacioja meg visszaadta az apachecommons-os valtozatot jelenleg, hosszutavon meg beallitasbol. Es a ...utils az ami eloallitja a nyers adatokbol a matrixosztalyokat, es utils-bol egy szamitasi folyamatban egy peldany van, szoval vedve volt ez elegge.
De igy a kodban ugy hasznaltam, hogy
XMatrixUtils mtxUtils= ...
XMatrix mtx= ...
ahol a bal oldalak meg rawtype-ok. Ami "nem jo" mert nem lesz type check...
Most valami koztes allapot van (nalam ugy hogy a sajat szamolos osztalyom es a unit test-je is generic az <M> felett, ok meg halalra generic-eltek a sajat interface-uket onmagukkal stb. de a vegen az en kodomba hard code-olva tettek hogy "csak igy lehet". Aztan ugy tunik most javitjak, ezek szerint nem csak igy lehet...
En el nem hiszem hogy ez az egesz megeri azt hogy 3 fejleszto most mar tobb mint 1 napot dob ra, sot a generikus alkalmazas fejlesztesi vezetojet is belerangattak, szerintem atlathatatlanabb es hasznalatban zavarobb lesz, mint az a szerencsetlen raw type lett volna. -
axioma
veterán
Na belenyultam egy specko esetbe.
Elkepzeles: tobbfele matrixszamitasi (2dim, altalaban java-hoz kepest kezelheto meretu de sok szamitast igenylo) implementacio hasznalatanak lehetosege. Interface, utils osztaly stb. minden megvan, a factory alapbol rendszervaltozobol veszi az aktualisat, es ha nincs default-ozza, szoval egyszerre biztositott hogy egyfele lesz.
Minden popec, egyszer csak benyogi az egyik review-er, hogy ne hasznaljunk raw type-okat, egyaltalan, mert az antipattern, nem tud a fordito osztalytipust ellenorizni. Java 8. Fogta az interface eredeti kitalaloja, minden fugg mar szinte onmagatol is, de a vege csak az lett, hogy az en kodomban nemes egyszeruseggel a konkret tipust (egyelore egy van elfogadva, bar masik kettot megcsinaltunk) hard code-olta'k mint hibajavitas. Innentol ki van dobva az egesz flexibilitas, ami a lenyeg lett volna...
En siman azt mondanam, hogy a raw type kerulese altalaban nem jelenti azt, hogy - foleg hogy a kodhoz nem fognak egysegsugaruak hozzaferni a domain es a kodresz fontossaga miatt - benne hagynam azt a nem felreertheto raw type-ot, de gondoltam megkerdezem, van-e barmi lehetoseg amit kihagytunk.
Fontos dolog a review es a rossz mintak kerulese, de ez boven a lo tuloldalanak tunik. -
axioma
veterán
Jaja, fa struktúrájú adatok bejárásánál tud jól jönni, ugyanakkor túl kiterjedt szerkezeteknél nem biztos, hogy jó ötlet, marha sok memóriát fel tud emészteni, valamint egzotikus memóriahibákat dobhat a jvm, még ha a gépben van is elég memória, csak épp a programverem, vagy minek hívják, túlcsordul: [link]
Érdemes ciklusokra visszavezetni a megoldást rekurzió helyett.Vagy egyszeruen hasznalni egy listat (ha max. melysegre lehet jo korlatot adni, akkor inkabb tombot indexmutatoval) a rekurziv hivasnak a valoban "perdonto" koztes adataira. Mar siman jobb mind memoriahasznalatban mind sebessegben. Mas kerdes hogy kicsit technikasabb megirni, mint siman egy rekurziot.
-
axioma
veterán
Es ha a tanarod olvassa? Es ha mar azt sem csinalod meg, aminel a teljes internet a rendelkezesedre all es egy zh-hoz kepest tengernyi ido, vagy nem vallalod fel a felkesz-seget, akkor ugyan mar hogyan akarsz kesobb a szakmaban dolgozni? Kismillioszor kell rovid hataridore alig ismert teruleten valamit alkotni. Ez pont felkeszitene arra... vagy kegyetlenebbul fogalmazva kiszurne ha nem vagy ra "kepes" (a kepessegnel beleertem a nem elegge akarast ill. kitartast is).
-
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. -
axioma
veterán
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).
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"). -
axioma
veterán
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!
-
axioma
veterán
Konkrét kód nem ártana, de egyébként elsőre nem antipattern.
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
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
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.
Koszi. Bocs a kesei valaszert, tenyleg sikerult kinullaznom magam a nap vegere, most kezdem osszerakni ujra.
-
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. -
axioma
veterán
Én nem érzem, hogy sokat dobna rajta, de nyilván ha kétségeid vannak, akkor mérni kell.
Meglatjuk. Koszi az infokat!
-
axioma
veterán
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.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
Annyira specifikus nem nagyon lesz. A Java általános célú nyelv, nem speciálisan matematika problémák megoldására találták ki. Ha nagyon speckó valami kell, meg köll írni, nincs mese.
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.) -
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
Lehet ilyeneken szörnyülködni, de ezek tudása / nem tudása pont nem mond el semmit arról, hogy az illető milyen szoftverfejlesztő.
Sok-sok interjún túl számtalan példát tudnék hozni, hogy ki mit nem tudott interjún, olyanok is akiket később felvettünk és tök jó kollégák lettek. Valószínűleg tőled is lehetne java témában 5/5-öt kérdezni, amit nem tudnál, ~mindenkitől.Ez a munkajahoz kellett volna... ott ult velem egy szobaban, lattam a hozzaerteset, masban is. O volt az egyetlen aki kepes volt ekezetes osztalynevekkel dolgozni...
-
axioma
veterán
En lattam 5+ eves tapasztalattal rendelkezo java programozot, aki nem volt tisztaban a szamok (sot: sima, 1-2-4 byte-os elojeltelen egeszek) memoriaban valo tarolasanak mikentjevel. Nezett nagyott mikor egy byte-stream-ben kellett volna adott modon a periferiara kuldenie...
(Arra mar nem emlekszem, hogy a kettes szamrendszer mennyire volt neki ujdonsag, de amikor a kettes komplemens elokerult, az tuti nullarol kellett neki elmondani.)
Ja es diplomaja volt mernoki szakrol, nem ilyen himi-humi tanfolyamos, meg ugy kb. 5 evvel ezelotti sztori, nem is azert vettek fel mert barkit.
A kedvencem a temaban akkor is az a 4. eves prog.terv.mat-os, aki a koleszban jott nekem, hogy "torol a space!" - nem ismerte az insert billentyut... -
axioma
veterán
A google prog.versenye is ilyen, buktam mar megoldast rajta... na jo, azert kezdo szinten tenyleg jobb lenne a code review IS, de azert az is hasznos szerintem is, ha mar csak azert tobbet foglalkozik a user feladattal, mert nem pontosan talalta el a formatumot. A kiiratasi hiba keresese mellett kijavit ket masikat (ld. most a stream close). Onalloan. Szerintem neki is hasznos, nem csak a tanarnak.
Persze ha 100% utan ra se neznek a kodra v nincs legalabb mintamegoldas a buktatok kiemelesevel, akkor az ga'z. -
axioma
veterán
Nekem még így sem jó:
Kérem a diák nevét!
Szabó István
Kérem a diák születési évét!
1996
Kérem a diák átlagát!
3.4
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextDouble(Scanner.java:2413)
at diakteszt.Diakteszt.beker(Diakteszt.java:19)
at diakteszt.Diakteszt.main(Diakteszt.java:28)
C:\Users\Vesp\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 18 seconds)Szerk.: igazad van, az instance volt a probléma, kivettem és így már rendesen kiírta. Az átlagot viszont csak vesszővel fogadta el.
Nagyon köszönöm a gyors segítséget!
Asszem 6-os de lehet hogy 7-es ota mar az op.rdsz szerinti tizedes-jelet hasznalja (volt is baj a magyar gepeken futtatott, float szamokat vesszovel osszefuzve hasznalo programnal, visszaparse-nal 2x annyi int lett belole...)
-
axioma
veterán
-
axioma
veterán
Igen, le volt írva rendesen, hogy mi a Fibonacci sorozat és hogyan épül fel. Abból te találtad ki, hogy hogyan kell kiszámolni a sorozat egyik elemét.
A 20 percből szerintem 5-6 perc csak arra megy el, hogy megértsd és kitalálj egy megoldást. Nekem annyi szerencsém volt, hogy régebben már megoldottam ezt és emlékeztem rá.
Fibo-ra egyebkent van logaritmus ideju rekurziv szamolo - modulo <nagyprim> mert anelkul abrazolhatatlan -, de azt fejbol tudni nem feher embernek valo, versenyhez neha ki kell guglizni. Pl. itt az utolso.
Viszont anno nekunk az algoritmusok tantargy elso gyakorlatainak egyiken volt, hogy miert _nem_ rekurzivan szamoljuk a fibot... minimum tombben vagy persze sima ciklusban. Nekem furcsa, hogy eleve ugy szolt a feladat, hogy valaszthatonak fel volt a rekurziv is sorolva, szinte talcan kinalva. -
axioma
veterán
Megvolt ez az interjú feladat.
Az N-edik Fibonacci számot kellett kiszámolni rekurzívan VAGY ciklussal. 20 perc volt rá. Csak a metódust kellett megírni.Kb. 12-15 perc alatt megcsináltam rekurzívan és egy kis körítés ként egy Java-s Main classba azért beletettem, ahol meghívódik ez a metódus. Hibátlan lett.
Aztán kérdezte a fejlesztő srác, hogy meg tudnám-e a metódust csinálni ciklussal. Ott annyi nem sikerült, hogy a for cikluson belül véletlenül elszámoltam, de már kevesebb időm volt hátra a ciklusos verzióra.
Remélem, hogy ez miatt még átmentem. 2 hét múlva lesz visszajelzés.Jaaaa, akkor ezt ugy ertettek, hogy a programozando feladat matek-logika jellegu, nem pedig a feladott feladat matek-logikai. En az utobbira gondoltam.
-
axioma
veterán
Sziasztok!
Felhívott a HR-es csaj a cégtől, akik most nyitottak a városban irodát Budapest után. Azt mondja, hogy megkapta a CV-met és látja, hogy majd csak nyár közepén lesz számomra aktuális az interjú, de olyan sok a Junior jelentkező, hogy létrehoztak egy előszűrő tesztet.
Menjek be köv. héten megírni ezt, mert ha ez sikerül csak akkor mehetek egyáltalán tovább a HR-es interjúra és szakmai tesztekre a nyáron.
Ez meg egy 20 perces teszt lesz, logikai-matematikai jellegű. Ennyit mondott csupán.Szerintetek mire számíthatok? Mi szokott lenni egy ilyen tesztben? Hogyan készüljek rá?
Java junior pozícióról lenne szó a nyáron, ha ez sikerülne.köszönöm
20 perc alatt nem lehet tul sok mindent megme'rni... szerintem ez valami olyan lehet, amiben mondjuk kell tudni (absztrakt szintre forditva) tagadni egy "xor"-t es megmondani, hogy ha "nehany smirf az smurf, de minden smarf smirf is, akkor lehet-e olyan smurf, aki nem smarf" (el ne kezdd elemezni, csak veletlenszeruen irtam a valtozatokat koze, keso van mar). Esetleg valamelyik cegnel volt me'g kezdoket szuro tesztben algoritmus-vegrehajtas (folyamatabra, 'mi tortenik ha' kerdessel, vagy hianyzo boxokba beleirni szoveg alapjan a szerepet).
Azert majd gyere vissza a valodi valasszal
-
axioma
veterán
Ok, hogy OFF topic, de mivel a processing java alapú és nincs külön fórumja, ezért nem találtam más helyet.
Nyilván nem pátyolgatást kértem, azért, hogy nekem jó legyen, hanem kereslet-kínálat alapon egy másik diákot keresek, ahogyan ezt korábban kifejtettem.
A prog.hu-n felraktam álláshirdetés kategóriába is, de senki nem jelentkezett. Itt is van ilyen topic? Megadod a linket?
A magyar ugarra meg azért utaltam, mert csak a magyar ilyen bunkó, hogy nem segíteni akarnak, hanem összefogva belekötnek a másikba és ítélkeznek, ha segítséget mer kérni.
Nem gondolom, hogy itt mindenki minden diplomáját segítség és konzultáció nélkül csinálta meg.
Egyébként ez lesz az ötödik diplomám: közgazdász Bsc, közgazdász Msc, EU szakközgazdász poszt. grad, Társadalomtudományi és gazdasági szakfordító poszt. grad. (német és angol) és most PTI Bsc. Sajnos ezt már csak levelezőn tudom végezni, mert dolgoznom kell és nem tudok egész nap a neten kutakodni a megoldások miatt a 40 órás melom mellett. Elég sokat keresgéltem már, de eddig nem akadtam semmi tökéletesen használhatóra.
A többi tárgy ebben a félévben természetesen 4.0 átlaggal megvan.Kicsit tajekozodhatnal mielott lebunkozol segitsegmegtagadas okan. Masreszt meg mi lett volna, ha az elso _kerdesed_ (hol akadtal el) teszed ide, es melleirod, hogy penzert segitseg is erdekel? Egyreszt kiderulne, miben kene segitseg, milyen szintu, masreszt kiderulhet hogy ket jo linkkel ki tud valaki segiteni amivel egyedul megoldod.
Ja segitseget beadandohoz csak csoporton belul megbeszelest vettunk igenybe - es me'g net se volt nagy segitseg 91-98 kozott. -
axioma
veterán
Helyettem nem kell elmenni vizsgázni, de levelezőn akkora fos az oktatás és emiatt keresek korrepetálásra tanárokat. Ha itt nem lehet ilyesmit, akkor hol máshol ? Olyan helyre (fórumra) lenne szükségem, amit nem 5-6 éve látogattak, mert pl. az index fórumon a processing több éve halott, néztem a logouton is, ott egyetlen egy hozzászólás volt 2011-ben, a processing.org fórumában meg senki nem tudja megoldani a feladatot.
De nekem nem az kell hogy csinálja meg helyettem ezt vagy azt hanem KORREPETÁLÁS!!! Sajnos évi 400 ezer Ft-os tandíjért nem jár megfelelő oktatás a levelezősöknek. Az iskolát inkább nem nevezem meg egyelőre, de ennyi pénzért többet várnék.Varj, nem tanart, hanem egy olyan embert kerestel, aki meg tudja oldani. Innentol ez akarmit mondasz, a csalas kategoriaja...
Ha tanart keresel, azt kell beleirni az elso hsz-be is. Ami most ott van, az felreerthetetlen. -
axioma
veterán
En a matekban mint topikgazda az ilyeneket mar megbeszeltem a modikkal, hogy torlom. Nem is az irrealitas miatt, hanem mert nem ez a celja az oktatasnak, elvbol ellenzem me'g a megjelenest is. Ott me'g nemmel, korral megadott menj helyettem vizsgazni is elofordult...
-
axioma
veterán
Tényleg utólag már nem lehet, már mint lehet de nem célszerű.
ArryaList erre a problémára jó lehet.
Bele se gondoltam hogy tanuló hozzá tantárgy illetve osztályzat és ezt nem egybe kellene kezelni
Ezt, hogy lehetne kivitelezni?Nagyon nem ertem. Nem az array vagy arraylist-en mulik... miert ne lehetne fent csak deklaralni, lent meg erteket adni (=new ....)
Figyi, szedd ki belole a belso for-okat, eloszor csinald meg csak a nevek bekereset. Ha mukodik, akkor lepj tovabb a tobbdimenzios megoldasra... -
axioma
veterán
Sziasztok
Array Index Out Of Bounds Exception hibát kapok a második for ciklusnál: diakTantargy[j] = beolvas.nextLine();
kellene egy kis segítség hozzá.
Köszönőmpublic void TanuloAdat() {
Scanner beolvas = new Scanner(System.in);
System.out.print("Létszám: ");
int nDiakNev = beolvas.nextInt();
int nDiakTantargy = 0;
int nDiakJegy = 0;
String[] diakNev = new String[nDiakNev];
String[] diakTantargy = new String[nDiakTantargy];
int[] diakJegy = new int[nDiakJegy];
for (int i = 0; i < nDiakNev; i++) {
System.out.println((i + 1) + ". tanuló");
System.out.print("Név: ");
beolvas.nextLine();
diakNev[i] = beolvas.nextLine();
System.out.println("Tantárgyak száma:");
nDiakTantargy = beolvas.nextInt();
for (int j = 0; j < nDiakTantargy; j++) {
System.out.println((j + 1) + ". Tantárgy");
beolvas.nextLine();
diakTantargy[j] = beolvas.nextLine();
System.out.println("Jegyek száma: ");
nDiakJegy = beolvas.nextInt();
for (int k = 0; k < nDiakJegy; k++) {
System.out.print((k + 1) + ". Jegy: ");
diakJegy[k] = beolvas.nextInt();
}
}
}Eloszor letrehozol egy 0 meretu tombot, utana ugyan a tombmeretnek hasznalt nDiakTantargy valtozonak adsz egy uj erteket, de akkor mar nem valtozik a tomb.
Elobb olvasd be, majd utana kapjon erteket (new String[....])
Ezzel ezt az egy problemat megoldod. De maga a konstrukcio nem jo. Minden diak minden tantargyat, sot minden jegyet ugyanoda irod? Gyanus, hogy nem ez lenne a cel. -
axioma
veterán
Ja maradt az arraylist, az a legkézenfekvőbb. De valamiért, a leadó system testje vmiert ezt a hibát írja ki:
Removed two elements but the second one had a lower priority than the first one! Amit nem értek. Amugy itt van a programom(class nevet most atneveztem):
import java.util.ArrayList;
public class MyPriorityQueue<T extends Comparable<T>> {
private ArrayList<T> queue;
private int maxElements;
public MyPriorityQueue(int maxElements){
this.maxElements = maxElements;
queue = new ArrayList<T>();
}
public void add(T e) throws IllegalStateException{
if( size() == maxElements)
throw new IllegalStateException("The queue is already full!");
queue.add(e);
int i = size()-1 ;
T help;
while ( i > 0 && ( queue.get( parent(i) ).compareTo( queue.get(i) ) ) > 0 ){
help = queue.get(i);
queue.set(i,queue.get( parent(i) ));
queue.set(parent(i), help);
i = parent(i);
}
}
public T pop() throws IllegalStateException{
if(queue.isEmpty())
throw new IllegalStateException("The queue is empty!");
T min = queue.get(0);
queue.remove(0);
minheapify(0);
return min;
}
public int size(){
return queue.size();
}
public int parent(int i){
return (i - 1) / 2;
}
public void minheapify(int i){
int l = i*2+1;
int r = l+1;
int min;
T help;
if (l <= size()-1 && ( queue.get(l).compareTo( queue.get(i) ) ) < 0 )
min = l;
else
min = i;
if (r <= size()-1 && ( queue.get(r).compareTo( queue.get(min) ) ) < 0)
min = r;
if (min != i){
help = queue.get(i);
queue.set(i,queue.get(min));
queue.set(min, help);
minheapify(min);
}
}
public void display(){
for(int i = 0; i < queue.size(); i++) {
System.out.print(queue.get(i) + " ");
}
}
}Argh, a megvan-os hsz-edet figyelmetlenul olvastam, azert benne hagyom mert ha ott insert-alsz, akkor talalsz me'g ebben hasznos infot.
En azt nem ertem, hogy miert veszed kulon a torlest es a heapify-t... torolsz az _elejerol_ (ami implementaciofuggo, de a vegerol torles csak olcsobb vagy ugyanannyi lehet, mint az elejerol), holott neked az elejen kell a hely, az utolso elemet kene csak odahelyezni es lekuldeni.
Bocs, java kodban nincs epp keznel, de pythonban ugyanez a kivetel (a tombindexeles ellenere az egy lista, a pop() meg az utolso elemet tavolitja el es adja ertekul):print mylist[0]
if cou==1: # itt van az aktualis meret
mylist=[]
cou=0
else:
act=mylist.pop()
cou-=1
tmp=0
while (tmp*2+1<cou and mylist[tmp*2+1]>act) or (tmp*2+2<cou and mylist[tmp*2+2]>act):
if tmp*2+2==cou or mylist[tmp*2+1]>mylist[tmp*2+2]:
mylist[tmp]=mylist[tmp*2+1]
tmp=tmp*2+1
else:
mylist[tmp]=mylist[tmp*2+2]
tmp=tmp*2+2
mylist[tmp]=actEgyebkent most hogy nezem a kodod, pont ez a baj! Hiszen az eltavolitas utan lesz egy olyan listad, ami az uj index miatt mar nem is heap! Ez szerintem egy erosen kerulendo koztes allapotkent is... Be kene elore szurni magat az utolso elemet, es arra hivni a heapify-t, de akkor mar egyszerubb ez az on-the-fly modszer (amig nem teszed be, addig csak orzod hasonlitasra, majd a vegleges helyen adod ertekul).
-
axioma
veterán
Amúgy a feladatom az lenne, hogy saját kezűleg kell implementalni egy priorityqueque-t, minheap struktúrával,
az alábbi interface segitsegevel:/**
* Manages elements within a priority queue. All Elements in this queue must
* implement the Comparable interface. If a element is requested from this data
* structure the smallest one is returned. If there are multiple smallest
* elements, one of them must be returned.
*/
public class PriorityQueue<T extends Comparable<T>> {
/**
* @param maxElements The maximum number of elements this queue can hold.
*/
public PriorityQueue(int maxElements);
/**
* Add e to the queue.
*
* @param e The element which sould be inserted (at the correct position) into the queue.
* @throws IllegalStateException if the queue is already full
*/
public void add(T e) throws IllegalStateException;
/**
* Returns and removes the smallest element in the queue.
*
* @return the smallest element
* @throws IllegalStateException if the queue is empty
*/
public T pop() throws IllegalStateException;
/**
* Return the current number of elements in the queue.
*
* @return the number of elements
*/
public int size();
}Es nem tudom, hogy milyen classot használhatnék e szerint az adatok belső menedzselésére.
A baj az, hogy a beepitett java PriorityQueue is minheapet használ.LinkedList<E> ill. ArrayList<E> szeretnek használni hozza.
Vagy a fenti feladat azt jelenti, hogy a bepitett PriorityQueue-hoz felülirom a pop() es add() metódusokat?
De akkor meg nem tudok indexeket hasznalni, és az algoritmus alapján szerintem mindenképpen olyan kell, ami indexelhető. Nem tudom ...
1. En ugy ertenem a feladatot ahogy a tobbiek irtak (nem a java.util-ost definialod felul, hanem azt nem include-olva magad irsz egyet)
2. Ha igy teszel, miert baj az, hogy a beepitett is minheap-et hasznal? ArrayList, megirod a minheap-nek a sullyeszt meg buborekol vagy hogy hivtatok fuggvenyet, vagy hat kozvetlen beleirod az add/pop kodjaba, es ennyi.
Bar a maxelements miatt akar sima tombot is hasznalhatsz, persze akkor kulon kell tarolni es managelni a size aktualis erteket (vagy legalabbis erdemes, ha nem akarod mindig megkeresni az elso null-t). Felesleges ha ott az arraylist bekorlatozni magad, de lehet, hogy iskolapeldakent inkabb azt irnam meg. -
axioma
veterán
En elsosorban az identalast tennem helyre, mert az egy dolog hogy a zarojeleket elrontja valaki, de igy baromira nem is latszik a kodbol, hogy mit hova szant. A for-on beluli elso teljes if egy tab-bal bentebb kene legyen.
A tobbivel egyetertek, ekezet es a magyar ugy altalaban elhagyasaval kapcsolatban is, csak szerintem mind a kettot meg kene elozze, hogy a programozo szandeka vilagos legyen a kodbol. (Meg szerintem ha ez rendben van, akkor mar mechanikusan a zarojelpar highlight segitsegevel ellenorizheto, hogy ki hol van bezarva, es az ott jo helyen van-e.) -
axioma
veterán
Álláshirdetéseket hol érdemes nézegetni?
Profession?Regisztralj linkedin-re, ha beirod hogy java, meg fognak talalni...
-
axioma
veterán
Sziasztok!
Írtam javában gyakorlásképp egy egyszerű számológép programot. Viszont csak úgy sikerült megoldanom, hogy egyszerre csak 2 számmal tud operálni. Kérdésem az lenne, hogy lehet megoldani, hogy egyszerre 3 vagy több számmal is tudjon számolni? Pl. egyszerre 3 szám szorzása, összeadása...
Forráskód:
package calculator;
import java.util.Scanner;
public class Calculator {public static void main(String[] args) {
Scanner calc = new Scanner(System.in);
System.out.println("Enter first number");
double n1 = calc.nextInt();
System.out.println("Enter second number");
double n2 = calc.nextInt();System.out.println("Enter operation (* ; / ; + ; - ; ^ ; root");
Scanner op = new Scanner(System.in);
String operation = op.next();switch (operation) {
case "+": System.out.println("Result: " +(n1+n2));
break;
case "-": System.out.println("Result: " + (n1-n2));
break;
case "/": System.out.println("Result: "+ (n1/n2));
break;
case "*": System.out.println("result: "+ (n1*n2));
break;
case "^": System.out.println("result: " +(Math.pow(n1, n2)));
break;
case "root": System.out.println("result: "+ (Math.pow(n1, 1 / n2)));}
}}
Ha eleg a butaszamologep mod (ld. windows, argh), ami NEM ismeri a precedenciat, akkor egyszeruen csinald ciklusban, szam, operator, szam, operator, es engedelyezd az = jelet az operatorok koze (akkor lepsz ki a ciklusbol amikor azt kapod). Minden egyes lepesben egy temp valtozodon alkalmazod az muveletet az uj szammal (elsore ta'rold be, hogy temp 0 es muvelet + volt az indulas elott). En ki is iratnam a reszeredmenyeket (a szam bekerese utan).
-
axioma
veterán
-
axioma
veterán
A tomb valtozojat deklaraltad, de a tombot nem hoztad letre. Igy aztan az elemeire se tudsz hivatkozni (se jobbertekkent, se balertekkent amugy).
double[] xo = new double[(r-l)*10+1];
Muszaj igy, mert ott egesz tipusu kifejezes kell, a 10-zel szorzassal nem lepsz ki belole, ellenben a 0.1-gyel osztassal mar igen...
Ja es ugyel<=rellenorzese utan csak mindez, ha nem akarsz meglepeteseket. -
axioma
veterán
Nezd, ket lehetoseg van.
1. a ceg elszamolta magat - szerinted erre mennyi az esely?
2. amennyibe kerul, annyit kapsz a penzedert
Lehet, hogy tkp. csak a vizsgaert fizetsz, kapsz ne'mi amugy is megtalalhato tavoktatos tananyagot, aztan kuzdj meg vele. Epp nemreg linkelte'k be egy masik topikba a cikket a ket masik magan programozokepzesrol, ahol senior programozo szintu emberek - annak megfelelo fizetesert persze! - foglalkoznak a csoporttal, akiknek tanulasi helyet, valos orakat (bar inkabb gyakorlatiakat), konzultaciot biztositanak -- szoval nem tud olcso lenni az a fajta kepzes, tehat olcso kepzes me'g annyit se ad. (Mert nyilvan nem egyetemi szintu tudast lehet osszeszedni erettsegirol indulo bolcsesz iranyultsagunak.)
+1. esetleg a kesobbi elhelyezesedert a kozvetitotol kapott penz lehet me'g benne, de ez tuti nem ez a nagysagrend, ami a kulonbseg -
axioma
veterán
Például lenne egy 5x5-ös objektumokból álló tömböm (a pálya), és ki szeretnék osztani a 25 mezőből 5-öt üresnek majd 10-et az 1-es játékosnak, 5-öt a 2-esnek, 5-öt a 3-asnak. Itt az 5, 10, 5, 5 lenne az x, y, z, stb.
Létrehozok egy pályával megegyező méretű segéd tömböt, amit feltöltök az előbbinek megfelelően 5 0-val, 10 1-el, és így tovább.
Ezt a segédtömböt összekeverem, a véletlen mezőkiosztásért, majd egyszerű tömbbejárással átadom az értékeket a pályának.A segédtömb feltöltése lenne a gond, mivel változó számú játékosnak változó számú mezőt kellene kiosztani.
Meg tudnám oldani, hogy tömbbejárásban visszaszámlálom a lehetséges játékosok mezőszámait, de nekem nem tűnik szépnek.Mar nem azert, de ezt kicsit lehetne szerintem egyszerusiteni. En azt tennem, mar a jelenleginek minel kisebb modositasaval, hogy
- megkeverek egy 0..(N-1) tombot
- amikor irom a masik tombbe, akkor dontom el, hogy az az index hanyadik reszbe esik, es az alapjan irom az eredetibe a megfelelo erteket (raadasul ha ilyen szep szamaid vannak, akkor oszthatod ugy hogy az otodere csinalsz egy switch-et, sot akar erre me'g aritmetikai kifejezest is...).
Bar ha megfelelo valoszinusegekkel generalnal es a vegen csak azokat tenned fel, amikbol me'g hianyzik egyebkent ujat "dobsz", az is eleg veletlen tabla kene legyen. -
axioma
veterán
Nehany probalkozas utan, netbook olben:

De eleg zavaro, hogy a szavak kozott nem a gepeles ritmusaban lepked, hanem lemaradva, ettol korrigalasbol nyomok me'g valamit... na meg az ertelmetlenseg is, meg az egymas utan ugyanaz, ki tudja melyiknel tartok. Ebben talan hosszu i nem volt, azt csak hosszabb szoveg utan szokom meg, hogy ranezes nelkul hol van. Viszont 3-4 visszatorles kellett. Ektelen magyarul is megprobaltam, allitom hogy gyorsabb lennek, de mivel a hiba bezavar, nem lett jobb.
Azert jo moka volt... talan egyszer kipihenten is megnezem.szerk. nyilvan a gepelesi sebesseg nem szamit a programiras sebessegben... plane a helyes programig eljutas sebessegeben
![;]](//cdn.rios.hu/dl/s/v1.gif)
-
axioma
veterán
Pedig ha nem is pont java, de programozas temaba elegge illik, hogy melyik kiosztasnak mi az elonye. En is parhuzamosan kettot nyuzok, ha muszaj ekezet pl. doksi, akkor az y-z csere miatt a 101 magyart hasznalom, de alapbol angolt (eleg oreg vagyok ahhoz, hogy emailbe se volt tanacsos ekezetet irni, es folyekonyan olvasom az ekezet nelkuli magyart, ezt szoktam meg). Az tuti, hogy nem tennek ki minden sorvegi pontosvesszot altgr-rel... foleg 10 ujjas gepeles mellett azok a kombinaciok!
Mondjuk nyelvenkent van elteres, pl. python eseten kevesebb ilyen egyertelmuen csak idegesitoen elerheto karakter hasznalata szukseges. -
axioma
veterán
AES128 bit kulcsot szeretnék generálni String input alapján. A String hossza bármi lehet. A függvény a következőt csinálná:
-Ha a String 16 karakter akkor nincs teendő
-Ha több mint 16 karakter akkor ArrayUtils.subArray(key.toCharArray(), 0, 16) majd ezt a végén vissza String-gé
-Ha kevesebb mint 16 karakter (N hosszú), akkor key.toCharArray(), egy új CharArray-be N-ig a key értékei, azon felül pedig egy karakter. A példában "c".Így minden esetben 16 karakter hosszú kulcsot kapok. Ez működik is (String.valueOf-fal). Viszont nem 128 bit lesz a végeredmény.
16 vagy több karakterrel működik hibátlanul. A probléma akkor keletkezik ha ki kell egészíteni plusz karakterekkel: Invalid AES key length: 28 bytes
Jelenleg sysout esetén nem is a key-t kapom meg, hanem a referenciáját.String pin = "1234";
...
...
// így fut le ha 16-nál rövidebb a pin
String[] keyArr = new String[16];
pinArr = pin.toCharArray();
for(int i=0;i<pin.length();i++) {
keyArr[i] = String.valueOf(pinArr[i]);
}
for(int i = pin.length();i<16;i++) {
keyArr[i] = "c";
}
key = String.valueOf(keyArr);
System.out.println(key); // String helyett reference
Key aesKey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, aesKey); // java.security.InvalidKeyException: Invalid AES key length: 28 bytes
byte[] encrypted = cipher.doFinal(password.getBytes());1. Elvi szinten nagyon nem ertek egyet az ilyen modon torteno AES kulcs megadassal (gyakorlatilag 256^16 helyett kb. 80^16 kulcsot "engedsz meg" - klavirol elerheto kis/nagy betuk, szmaok, gyakoribb jelek), ezzel kapasbol mar matematikailag is tobb mint 8 nagysagrenddel csokkented a lehetosegeket... de ha az emberek jelszoadasi szokasait nezzuk, kb. beepited a rendszerbe a betoresi pontot a human tenyezovel).
2. Mi az oka annak, hogy a char array-t string tombbe masolva akarod kiegesziteni? Nem latom a koncepciot.
Sot azt sem igazan, hogy minek jon be a char array... te egy 16 hosszu stringet akarsz, akkor ha nagyobb, akkor subString, ha kisebb, akkor meg mondjuk (ha nagyon egyszeru/fapados kodot szeretnel) ciklusban hozzaadsz amig nem jo a hossz egy "c"-t.
Vagy me'g egyszerubb ha mindkettot egy lepesben intezed el... azaz a bejovo stringhez alapbol hozzaadod azt a fix stringet, amiben 16 db 'c' van, es veszed a subString-gel az elso 16 karaktert. Ez mindharom esetre egyetlen utasitassal visszaadja az altalad va'gyott tipusu kiegeszitest.szerk. kellett nekem ennyit gepelni

Új hozzászólás Aktív témák
-
Fórumok
LOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Mibe tegyem a megtakarításaimat?
- Apple MacBook
- Huawei Watch Fit 5 Pro - jó forma
- Amlogic S905, S912 processzoros készülékek
- Fujifilm X
- TV antenna és jelerősítés
- Samsung Galaxy Watch8 és Watch8 Classic – lelkes hiperaktivitás
- Gyúrósok ide!
- Kerékpárosok, bringások ide!
- One otthoni szolgáltatások (TV, internet, telefon)
- További aktív témák...
- 4000GB Gen4x4 NVMe SSD, 1 év gar 4TB!!!
- SZÉP! HP ZBOOK FURY 15 G7 Tervező Vágó Laptop -70% 15,6" i7-10850H 32/512 Quadro RTX 3000 6GB FHD
- GARANCIÁLIS LEMEZES PLAYSTATION 5 SLIM CFI-2116
- NAGYKER ÁR!Sosemhasznált! HP OmniBook 5 Flip i5-1334U 8GB 512GB 14" FHD+ áthajtós-érintős Gar.: 1 év
- Macbook Pro 14" A2442 2021 M1 Pro 32/1TB Silver
- Ducky One 3 Pure White/PBT/DE/Cherry RGB Silent Red switch (Space nem működik)
- Telefon felvásárlás!! Samsung Galaxy A20e/Samsung Galaxy A40/Samsung Galaxy A04s/Samsung Galaxy A03s
- Samsung Galaxy A15 / 4/128GB / Kártyafüggetlen / 12Hó Garancia /
- Nothing Phone (1) / 8/256GB / Kártyafüggetlen / 12Hó Garancia /
- Keresünk iPhone 14/14 Plus/14 Pro/14 Pro Max
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest



Azt el is kezdtem átnézni kell e még, de jött a postás, és huss elfelejtettem
igen, method-ra gondoltam






![;]](http://cdn.rios.hu/dl/s/v1.gif)
