- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- weiss: Pant* rant
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- eBay-es kütyük kis pénzért
- Klaus Duran: 2025 dude
- sziku69: Szólánc.
- Elektromos rásegítésű kerékpárok
- Magga: PLEX: multimédia az egész lakásban
Új hozzászólás Aktív témák
-
axioma
veterán
válasz
lanszelot #12106 üzenetére
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
válasz
lanszelot #12100 üzenetére
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
válasz
lanszelot #12096 üzenetére
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
válasz
lanszelot #12091 üzenetére
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
válasz
lanszelot #12086 üzenetére
a fuggveny/eljaras es ezek angol neve attol fugg, ki mikor es melyik nyelven szocializalodott a programozasba
igen, method-ra gondoltam
Amit 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
válasz
lanszelot #12083 üzenetére
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
válasz
lanszelot #12081 üzenetére
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
-
axioma
veterán
válasz
lanszelot #12073 üzenetére
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
válasz
floatr #11876 üzenetére
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
válasz
Drizzt #11874 üzenetére
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
válasz
Foglalt név #11835 üzenetére
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
válasz
btraven #11749 üzenetére
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
válasz
Oryctolagus #11518 üzenetére
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
válasz
mateo91 #11209 üzenetére
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
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
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
válasz
axioma #11074 üzenetére
"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
válasz
-Faceless- #11072 üzenetére
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
válasz
-Faceless- #11069 üzenetére
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
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
válasz
floatr #10812 üzenetére
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
válasz
Szmeby #10743 üzenetére
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
válasz
#68216320 #10731 üzenetére
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
válasz
#68216320 #10704 üzenetére
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
-
axioma
veterán
válasz
wolfman #10678 üzenetére
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
válasz
Lortech #10671 üzenetére
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 mintDoublePanel
hasznalja. -
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
válasz
Vesporigo #10652 üzenetére
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
válasz
Vesporigo #10546 üzenetére
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
válasz
Aethelstone #10539 üzenetére
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
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
válasz
E.Kaufmann #10401 üzenetére
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
válasz
dementhor #10352 üzenetére
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
válasz
Drizzt #10245 üzenetére
Itt most azert kell a generic, mert ahogy latszik is, pl. az add az direkt csak a sajat underlying-jait tudja osszeadni. Tehat egy kod nem keverheti az underlying-okat, mert pont az a lenyeg hogy ne legyen az egesz lehuzva a get(x,y) szintjere, hanem a meglevo megvalositas "teljes erejet" hasznalja ki. Senki nem is fog es nem is akar olyat irni, hogy nd4j matrixot adunk az apache-oshoz.
A cel nem az, hogy az interface elrejtse a megvalositast, csak hogy lehessen idovel cserelni alatta. De kozben nem fogjuk kidobni az nd4j sebesseget... [idokozben atment vegre a 3rd party engedelyezesen], meg az esetleges kesobbi GPU-val gyorsitast. Ugy kell elkepzelni, hogy a program egy futasa alatt a megvalositasok kozul mindig csak egy letezik, jojjon az barhonnan, es mint ProjMatrix tipusu valtozok lesznek kezelve [igen, van ProjMatrixUtils is create-tel... az interface amugy nekem kivulrol jon mint input, nem mondom hogy nem szolhatok bele - bar amikor probaltam, hogy ha csak 2dim matrixaink vannak, talan nem kene-e az interface-t se altalanos n-dim-nek csinalni, foleg ha a ket "gyari" megvalositas egyike alapbol se kepes ra... de siman lepattantam], egy teljes refactort tuti nem tudnek atvinni. A ...Utils-t bovithetem, masikat nemigen. Es en kell az implementaciokat csinaljam, a flatmatrix csak azert merult fel, mert az apache-t akartam "legyorsulni" (az nd4j-t mar vszinu nem fog sikerulni, bar majd meglatjuk, mivel naponta es hosszan futo job-rol van szo, csak az azon mert sebesseg szamit, nem az "altalanos"). -
axioma
veterán
válasz
axioma #10243 üzenetére
Na valahogy igy nez ki:
public interface ProjMatrix<M> {
public ProjMatrix(double[][] mtx);
public ProjMatrix(M mtx);
public M getUnderlying();
public ProjMatrix add(M mtx);
..
}
Es van harom megvalositas, ebbol ketto ketretegu, az Nd4j-s hasonlo ehhez:public class ApacheMatrix implements ProjMatrix<RealMatrix> {
private final RealMatrix underlying;
public ApacheMatrix(double[][] mtx){... underlying=new RealMatrix(mtx); ...}
public ApacheMatrix(RealMatrix mtx){ underlying=mtx; }
public RealMatrix getUnderlying() { return underlying; }
public ApacheMatrix add(RealMatrix other) { return new ApacheMatrix(underlying.add(other.getUnderlying());}
...Es en csinalnek egy ilyet:
public class FlatMatrix implements ProjMatrix<FlatMatrix> {
private final double[] data;
private final dataLen;
... // segedvaltozok
public FlatMatrix(double[][] mtx) { ....dataLen=...; data=new double[dataLen]; ...}
public FlatMatrix getUnderlying() { return this;}
public FlatMatrix add(FlatMatrix other) { ... }
...Persze ebben az esetben az underlying-gal nem lehet "szepen" konstrualni, az tulkepp egy masolas lesz, de ennek nem lenne jelentosege.
Csak fejbol kb. a lenyeg, lehet benne egyeb hiba, nem az szamit, hanem a konstrukcio osszessegeben mehet-e igy minden gond nelkul.Kosz!
-
axioma
veterán
válasz
Aethelstone #10242 üzenetére
Kosz. Kodot max. geprol morickazok, ceges kod sehogy nem hozhato ki, barmilyen artatlan... [volt h munkatars a ceg altal fizetett kezdo, szamara uj prog.nyelv kulsos kurzusara nem tudta a 'vizsgakodot' elkuldeni...]
-
axioma
veterán
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
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
válasz
Aethelstone #10208 üzenetére
Meglatjuk. Koszi az infokat!
-
axioma
veterán
válasz
Aethelstone #10206 üzenetére
Hat, me'g ha flat-kent is kezelem es final, azert egy indexeles me'g akkor is van per elem, ha siman vegigfutok az osszesen. C-ben meg mehetne pointer aritmetikaval. Mivel ez suru muvelet, sok matrixon, lehet rajta kulonbseg, erre gondoltam.
Pont eliminalas nem kell, nem linearis egyenletrendszerrol van szo, hanem mindenfele matrixszorzasok, osszegzesek sorra/oszlopra, siman vagy negyzetesen, meg ilyesmik... csak sok. -
axioma
veterán
válasz
Aethelstone #10204 üzenetére
OK, koszi. En orulok ha nincs es megirhatom
Csak azert probaltam guglizni meg kerdezni, hatha van valami, mert ki tudja. Es hat ugye a cegnek se mindegy, hogy dolgozom rajta vagy csak hasznaljuk. (Bar amennyit az nd4j-nek a sikertelen approve-jaba belefektettek, mar reg keszen lehetnek...)
Az egyetlen kerdes, hogy probaljam meg java-ban, vagy egybol C es JNI. A cucc csak nalunk fog futni (inputot general a userek altal hasznalt programhoz), nem baj ha platformhoz kotjuk. Na majd meglatjuk, nem csak rajtam mulik, koltoi kerdes volt. Sot me'g az is lehet hogy meregetjuk, hogy a mi specko felhasznalasunknal (tipikus matrixmeret 70x70 es 70x250, nem oriasi, csak a muveletek vannak sokan) mennyit hozna a C, ha adnak arra is idot.
(A fonok elsosorban egy nagyon basic matrix-muveletes interface-t akar es alarakni most az apache-ost, hatha kesobb lesz olyan nd4j verzio ami atmegy es/vagy elokerul valami jobb. Csak hat az jelenleg minden lesz csak nem gyorsabb, sot, attol hogy a lepeseket elemibbre bontja, szebb a kod de lassabb lesz, van ami 2-3x menne igy vegig az elemeken, mig a jelenlegi nativan, for ciklusokkal megirtban egyben benne lehet egy osszetettebb muveletsor. De szerencsere egyelore ugy latszik, hogy nyitott az egyeb megoldasokra.) -
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
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
Csak eszembe jutott errol az off-rol, hogy nemreg kaptam: [link]. Nyilvan nem itthonra es nem reprezentativ, de talan van benne erdekes adat is.
-
axioma
veterán
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
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
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
-
axioma
veterán
válasz
IvoryBrown #9332 üzenetére
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
válasz
IvoryBrown #9330 üzenetére
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
válasz
#74220800 #9327 üzenetére
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
válasz
#74220800 #9325 üzenetére
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
válasz
Chesterfield #9153 üzenetére
Waaaa, nyomj ra alul hogy mennyi ido alatt terul meg... legrosszabb esethez beirva a legrovidebb ido
Epic fail.
-
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
válasz
Chesterfield #9080 üzenetére
Regisztralj linkedin-re, ha beirod hogy java, meg fognak talalni...
-
axioma
veterán
válasz
csabi0911 #9048 üzenetére
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
válasz
#74220800 #8800 üzenetére
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<=r
ellenorzese utan csak mindez, ha nem akarsz meglepeteseket. -
axioma
veterán
válasz
Taoharcos #8454 üzenetére
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
válasz
-Faceless- #8243 üzenetére
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
-
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
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
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- One otthoni szolgáltatások (TV, internet, telefon)
- Renault, Dacia topik
- Vékonyabb lett, jobb kamerát kapott, de az akku maradt a régi: itt a Fold7
- Tőzsde és gazdaság
- Yettel topik
- Teljes verziós, ingyenes mobil játékok és alkalmazások
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- AliExpress tapasztalatok
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Autós topik
- További aktív témák...
- Bivaly erőmű Lenovo P1 G3 (Core I9 8mag/16 szál 32Gb DDR4 1Tb SSD 4Gb Nvidia) MAGYAR laptop eladó!
- Samsung 860 EVO 2.5 500GB SATA3 MZ-76E500 100/90
- Samsung Galaxy Buds 3 Pro fülhallgató
- WHITE GAMER PC! i7-14900K / RTX 4080 Super / 32GB 6000MHz / 1TB 980 Pro / Z790 / 1250W! BeszámítOK!
- WD Western Digital Elements 2.5 1TB (WDBUZG0010BBK) 100/100
- Konzol felvásárlás!! Playstation 5, Playstation 5 Pro
- Xiaomi Redmi Note 13 256GB Kártyafüggetlen 1Év Garanciával
- Honor Magic 5 Lite, 128GB, Kártyafüggetlen, 1 Év Garanciával
- AKCIÓ! Apple iPad Pro 11 2024 1TB WiFi + Cellular tablet garanciával hibátlan működéssel
- 130+131+132+133 - Lenovo Legion Pro 7 (16IRX9H) - Intel Core i9-14900HX, RTX 4080
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest