- Képeken az egyik kameráját elvesztő Sony Xperia 10 VI
- Apple iPhone 15 Pro Max - Attack on Titan
- Egyre közelebb a Poco F6 startja
- Mindent megtudtunk az új Nokia 3210-ről
- iPhone topik
- Újabb Samsungok telepíthetik a Galaxy AI-t
- Bemutatkozott a Moto G32 4G
- Nothing Phone 2a - semmi nem drága
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
- Poco X6 Pro - ötös alá
Hirdetés
-
Megbírságolták a Razert a Zephyr maszkok miatt
ph A cég elég olcsón megússza az ügyfelei félrevezetését, de az üdvözlendő, hogy az Egyesült Államok hatóságai nem siklottak el az ügy felett.
-
Free Play Days 2024 - 18. hét: Headbangers: Rythm Royale
gp Extraként a Star Wars Jedi: Survort is kipróbálhatjuk 5 óra erejéig.
-
Spyra: akkus, nagynyomású, automata vízipuska
lo Type-C port, egy töltéssel 2200 lövés, több, mint 2 kg-os súly, automata víz felszívás... Start the epic! :)
Új hozzászólás Aktív témák
-
floatr
veterán
Öröm és boldogság. Néha olyan szép dolgokra akadok rá, hogy szinte elsírom magam tőle
@Foo("Bar")
tökéletesen működhet konstansokkal, pl.:
public class FooType {
private static final String BAR = "Bar";
}
...
@Foo(FooType.BAR)megoldással. Viszont ha a konstans másképpen kap értéket pl.:
public class FooType {
private static final String BAR = FooEnum.Bar.name();
}Akkor a fordító hanyatt esik az annotációnál. Gyönyörűen megoldották az enumok kezelését a visszafelé kompatibilis okossággal, hogy már majdnem működik is.
-
floatr
veterán
válasz Aethelstone #6353 üzenetére
Most egyelőre vonatkoztassunk el az értelmétől
A nyelv elvileg megengedi, de a fordító hakkolás nem.
Amúgy szenvedtem valamivel, és ebbe futottam bele. De ha egy bárakármilyen statikus metódussal adsz neki értéket, akkor ugyanide lyukadsz ki.
private static final String BAR = FooUtil.getBarNameFromResource();
[ Szerkesztve ]
-
Aethelstone
addikt
Persze, az értelmétől el lehet vonatkoztatni, de minek?
szerk:
A statikus metódust is értem, de az is legalább ennyire fából vaskarika. A statikus metódus visszatérési értéke is változhat, attól függően, hogy milyen üzleti logika van benne. Innentől konstansnak értékül adni szerintem hibás tervezési minta.
[ Szerkesztve ]
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
floatr
veterán
válasz Aethelstone #6355 üzenetére
Ott a problémám ezzel, hogy így a konstans field a nyelv szerint ugyanaz, miközben kétféleképpen kezeli a fordító.
De FYI egy régebbi lib elrontott tervezési mintáját próbáltam átvágni -- mint kiderült -- sikertelenül
[ Szerkesztve ]
-
Aethelstone
addikt
-
floatr
veterán
válasz Aethelstone #6357 üzenetére
Elcseszett dolgokat műveltek az 1.5-től kezdődően a java-val, függetlenül attól, hogy mit tervez az ember.
A múltkor egy olyan bakiba futottam bele, ami miatt a generic-es metódusok öröklése akadt össze, pedig a nyelv szabályai szerint működnie kellett volna, de megint csak a hakkolt fordítási procedúra összegányolt mindent. Szvsz ki kellett volna dobni a régi leírókat, és hagyni a kompatibilitást a vérbe, mert most tele van tervezési hibával az egész.
-
M_AND_Ms
addikt
válasz WonderCSabo #6360 üzenetére
Pontosan!
Aki tejszínhabot szeretne, az inkább verje ki a fejéből!
-
TheProb
veterán
Azt mivel és hogyan tudom megcsinálni ha egy gomb megnyomás után egy ablakot akarok felhozni ahhol akár ugyan úgy én tudnám összeállítani az elemeket, elrenezéseket? Első körben optionpane-eket nézegettem de ott csak egyszerű dolgokat találtam, pl 1 sor bevitele. Arra is gondoltam, hogy esetleg 1 új frame-et kéne összedobni és azt a gomb megnyomásának hatásáea megjeleníti a progi, de ez nem jött össze. Bár lehet csak rosszul csináltam.
"Boba is Mickey, Mickey is Boba" - Finkle Einhorn | PC Rig: https://pcpartpicker.com/b/bBy48d
-
floatr
veterán
válasz WonderCSabo #6360 üzenetére
Ez nem lenne probléma, ha a nyelv meg tudná ezeket a dolgokat különböztetni. De nem a nyelv és a szintaktika tesz különbséget, hanem a megpatkolt fordító.
Mert lehetne egyszerű konstansokat implementálni a nyelvben, meg read-only (akár statikus) változókat, de ilyen nincsen, viszont van félig implementált generics (type erasure és agyonvágott öröklődés), felemás annotáció (a runtime annotáció vs fordításkor történő rendelkezésre állás), nyakatekert enumok (egyedi struktúrának álcázott Enum osztályok), lambdának álcázott Runnable osztályok, meg a többi ilyen nyomorult dolog. A tervezők persze védhetik a dolgot, mint az agresszív kismalac (kuss, én így szállok le), de valójában csak bénáztak a jelenlegi osztály leírók keretein belül.
-
WonderCSabo
félisten
Nagyrészt az egész a visszafele kompatibilitás miatt ilyen béna.
Igen, lehetne olyan runtime annot, aminek fordítási időben nem, viszont futási időben elérheted az értékeit, és akkor lehetne dinamikus is akár. Sok minden lehetne.
Mondjuk azért mielőtt adjon szidjuk a fordítot, nézd meg a JLS-t, valszeg ez így van specifikálva (persze lehet, hogy az egyszerű fordító kedvéért).
-
floatr
veterán
válasz WonderCSabo #6364 üzenetére
Tisztában vagyok a különbséggel, meg szerintem aki eljut arra a minimumra, hogy literál és metódus eredménye között van különbség, az is tudhatja, de épp a specifikáció, vagy annak hiánya a gond. Meg hogy nincsen olyan, hogy konstans.
(#6355) Aethelstone egyébként visszatérve arra, hogy mi számít tervezési hibának:
Gyakran fordul elő az, hogy egy külső erőforrásból adsz értéket egy static final változónak, ami "konstans" (Hogy most ez egy map-ben vagy közvetlen változóban van, az lényegtelen) Szintén static final "konstansokat" lehet használni az említett módon annotációban. Nemtom miért érzel ezzel kapcsolatban tervezési problémát.Ha pl egyszer XML-ben konfigurálsz egy hibernate modellt, másszor meg annotációban, akkor az annotáció lesz az a gyenge pont, ahol a kódba beégetett pl. táblanevet nem fogod tudni változtatni, miközben az XML-ben azt csinálsz, amit akarsz két futtatás közt. De ez csak egy példa a sok közül.
-
Sokimm
senior tag
Nem értem, mert nem tudok eleget. Okítsatok ki pls.
.....
for (int i=c; i<=a; i++)
System.out.println (i);a, és c értéket én adok meg console-ról.
Mért nem írja ki a b-t a végén?
Beadom a két értéket, és vége. BUILD SUCCESSFULHogyan tudnék olyat csinálni, hogy én adom meg neki console-ról, hogy honnan, és meddig (esetleg milyen lépésszámmal) lépjen a ciklus?
(vagy egy random függvényt integrálnék bele, hogy ez a későbbiekben létrehozzon nekem egy megfelelő mennyiségű adathalmazt, amivel majd dolgozhatok (gyakorolhatok).)[ Szerkesztve ]
-
Aethelstone
addikt
Gyakran fordul elő az, hogy egy külső erőforrásból adsz értéket egy static final változónak, ami "konstans"
Nyilván mindenkinek más a szokása, de static final változónak én ott adok értéket, ahol a deklaráció van. Ha nem, akkor nem veszem static final-ra. Azt hiszem, hogy ez tényleg ízlés dolga. Hasonló ez az interfészben deklarált public static final konstansok vs. Enumok esete között. Aki az Enumok előtt is Java-zott, az szereti az interfészt ilyesmire használni. Nem hiba ez, a nyelv és a fordító is megengedi, de az Enumok idejében én konkrétan lábrázást kapok tőle. Ízlés és mószertan kérdése
Ha pl egyszer XML-ben konfigurálsz egy hibernate modellt, másszor meg annotációban, akkor az annotáció lesz az a gyenge pont, ahol a kódba beégetett pl. táblanevet nem fogod tudni változtatni, miközben az XML-ben azt csinálsz, amit akarsz két futtatás közt.
Nos, ez tervezési hiba vagy inkább katyvasz. Mivel benne van az az akna, amit Te is leírsz. Vagy XML-ben konfigurálok entitást, beant, akármit vagy annotációval. Nyilván ha vegyes megoldás van, akkor nem baszok az annotációk alá XML konfiggal két futás között. Mint ahogy a @Table(name="bela") annotációt sem baszom agyon egy DROP TABLE vagy a @Column annotációt egy ALTER TABLE segítségével. Analóg a két eset...mármint az XML vs annotáció és a DROP/ALTER.
Eh, nemtom, hogy érted-e, mire célozgatok?
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
WonderCSabo
félisten
válasz Aethelstone #6367 üzenetére
Nyilván mindenkinek más a szokása, de static final változónak én ott adok értéket, ahol a deklaráció van.
Máshol nem is lehet.
-
Aethelstone
addikt
válasz WonderCSabo #6368 üzenetére
Jó, érted, hogy mire gondolok
Arra gondoltam, hogy ha pl. nem "BELA" a static final változó értéke, hanem mondjuk egy context.xml bejegyzés, akkor én úgy szoktam, hogy nem rakok "közé" még egy static final változót, hanem a kiolvasott bean mezőértéket közvetlenül felhasználom. Persze, nekem könnyű, hülye Springes vagyok, tudok innnyektálni
[ Szerkesztve ]
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
WonderCSabo
félisten
válasz Aethelstone #6369 üzenetére
Értem, nyugi, csak pongyola volt a megfogalmazás.
-
Aethelstone
addikt
válasz WonderCSabo #6371 üzenetére
Jah sajnos. Elnézést
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
Sokimm
senior tag
válasz PumpkinSeed #6370 üzenetére
Bocsánat, az i akart lenni. Tehát az i-re vagyok kíváncsi, mért nem írja ki. :\
-
Aethelstone
addikt
-
Sokimm
senior tag
válasz Aethelstone #6374 üzenetére
Most már jó... Elnézést a buta kérdésem miatt, amire megtaláltam a választ. Ez az internetes lexikonok "TÉMA OFF" címszavára a tökéletes példa. A "semmi értelme az írásomnak" című fejezetet olvastátok.
-
floatr
veterán
válasz Aethelstone #6367 üzenetére
Az első felvetésben egyetértünk h kinek mi fekszik.
A második témában viszont úgy tűnik h elbeszélünk egymás mellett. Arra gondoltam első sorban, hogy az önmagában egy bődületes hiba, hogy egy kód fixen beégetett konfigurációt tartalmaz fordítás-idejű (de idétlen szó ez) konstansokat használó annotáció formájában.
Azt viszont nem tudnám megmondani, hogy hányszor fordult elő az, amikor a supporttal kellett vérre menően csatázni, és telepített alkalmazások alatt a konfigot és/vagy a DB-t változtatni. Véleményem szerint nem valóban enterprise-ready egy ilyen annotált kód. (függetlenül attól, hogy néha ráviszi a szükség az embert). Azon meg végképp nem segít semmi elmélet, hogy a nyelv szintaktikája és a fordító trükkjei nem kompatibilisek.
-
Aethelstone
addikt
Nos, nyilván ésszel kell használni az annotációkat.
Mert ugye a nyelv arra is lehetőséget biztosít, hogy egy alkalmazásnál a forráskódba égessük bele az egyébként lokalizálandó szövegeket, de mégsem teszünk ilyet.
Ergó, ha valamit, valahogyan el lehet baxni, akkor ezzel tisztában kell lenni és nem szabad bemenni abba a bizonyos utcába
Amit pedig konfigurálhatóvá kell tenni, azt azzá kell tenni. Ezt viszont a tervezés folyamán kell kialakítani és nem utólag. Ha pedig utólagos igényként lép fel, akkor fejlesztési igény, build és ennyi
[ Szerkesztve ]
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
floatr
veterán
válasz Aethelstone #6378 üzenetére
Nomost itt kanyarodunk akkor vissza az hibernate marhaságaihoz, az annotált osztályokhoz. Ugyanezért nem csípem a Spring MVC annotációkat, meg a többit, mert mindent beéget a kódba, és a fenti példával élve esély sincsen rá, hogy ez bármennyire is kiszervezhető lenne anélkül, hogy eldobnád az annotációkat totálisan, miközben a szintaktika gyakorlatilag átver.
-
Aethelstone
addikt
Könyörgöm, mi a bajod a Spring annotációkkal? Csak nem fogsz menet közben két futás között egy dependency injectiont megváltoztatni? Vagy hirtelen @Service lesz egy @Controller osztályból? Netán tegnap még @Transactional volt, ma meg már nem?
Hibernate dettó. A @Table(name="Users") miért változna két futtatás között? Netán egy @OneToMany?
Azért írtam, hogy ésszel.....
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
floatr
veterán
válasz Aethelstone #6380 üzenetére
Transactional és függőség esetében is volt már, hogy konfiguráción kellett változtatni az éles környezetben - szerencsére XML-ben. De itt konkrétan az MVC-t említettem, ahol pl. konstansok az útvonalak. És bármennyire is nehéz elképzelni, volt olyan helyzet, hogy egy milliós méretű tábla esetében oszlopot kellett cserélni átmenetileg.
A kérdés csupán annyi, hogy kell-e ehhez a fejlesztő és egy fejlesztői környezet, egy teljes telepítés vagy a patchelés kockázata, ha este tízkor jön az email.
Szerk.: de nagyon elkanyarodtunk a témától. Nem vitatom, hogy kényelmesebb fejlesztéskor, de ugyanennyire szívás a későbbiekben.
[ Szerkesztve ]
-
Aethelstone
addikt
De itt konkrétan az MVC-t említettem, ahol pl. konstansok az útvonalak.
Hát jah. Ez az, amikor az élet úgy hozza, hogy teljesen más dolgokkal kell xopni a projektekben. Én spec. el nem tudom képzelni, hogy mikor kellene azt a remek MVC-s útvonalat dinamikussá tenni. Már teljesen. Mert a köv. pl. szerintem bőven elég.
@RequestMapping("/foo/bar/{param1}/{param2}
public String getFooBar(@PathVariable(value = "param1") String param1,etc, etc.
Oszlopot cserélni? Jaaaaaaj.....neeee. Oszt mivégre? Megint előhúzhatnám a tervezési hiba+gányolás dumámat, de pontosan tudom, hogy egyrészt így működik, másrészt meg már unalmas. A fejlesztőeszközöknek nyilván nem a gányolást kell támogatniuk elsősorban.
Nos, tényleg elkanyarodtunk. Ami nem baj, mert én speciel kifejezetten szeretem az efféle beszélgetéseket Ördög ügyvédje
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
floatr
veterán
válasz Aethelstone #6382 üzenetére
MVC esetében kifejezetten problémás, hogy az útvonalak az osztályokban szétszórva vannak deklarálva. Ez baromira megnehezíti akkor a supportot, amikor egy útvonalat adnak a hibajegyben - mert mást nemigen tudnának. Lehetnek ütközések a projektben, két projekt komponenseiben, összeolvasztáskor; ezt egy külső konfig meg tudhatná oldani.
Az adatbázis kókányolás meg tűzoltás volt, nem tervezési hiba. Tervezni sok mindent lehet, de nem mindent. Ezért mondom, hogy nagy öngól az annotáció - konstans páros hosszú távon. Persze lehet nem egyetérteni, de eddig ezt tapasztaltam.
-
jetarko
csendes tag
válasz Aethelstone #6384 üzenetére
Ezt nem egészen értem, tudnál írni egy példát? Meg ez arra jó, hogy ha tudsz egy url-t, akkor azonnal odatudsz ugrani a fv-hez? A saját alkalmazásomba már van 50-60 url 7-8controllerbe és nem rögtön tudom mi hol van, néha szívok is ezzel 1-2percig
-
TheProb
veterán
Üdv!
Ha több ablakot akarok megvalósítani 1 programon belül (pl bejelentkező ablak, ami ha helyesen van kitöltve akkor enged tovább a főprogramhoz/főablakhoz), akkor azt hogyan illik megcsinálni? mindig új frame-et hozok létre vagy egymás elfedő paneket csinálok? SOF-on azt írta valaki, hogy 1nél több framet nem szokás csinálni, jelenleg én így csináltam meg, de nem tudom hogy tudom elérni a másik framet.
"Boba is Mickey, Mickey is Boba" - Finkle Einhorn | PC Rig: https://pcpartpicker.com/b/bBy48d
-
Aethelstone
addikt
válasz jetarko #6385 üzenetére
Persze.
Itt egy darab kontrollermetódus:
@Override
@RequestMapping(value=RestConstants.AppInfo.SERVICE_NAME, method = { RequestMethod.GET, RequestMethod.POST })
protected HttpEntity<byte[]> processRequest(HttpServletRequest request) {
return super.doIt(RestConstants.AppInfo.SERVICE_NAME, request);
}és a hozzátartozó interfész:
public interface RestConstants {
@RestApiFunction(name = "Application info", description = "Provides information about the application", responseClass = RestAppInfoBean.class)
public interface AppInfo {
@RestApiRequestParameter(service = true, description = "")
static final String SERVICE_NAME = "appinfo";
}
}Ez egy restapi implementáció darabja, pár saját annotációval megspékelve.
Mondjuk ez egy régebbi megvalósítás, ami még nem Enum-ot használ, azt éppen keresem a projektben[ Szerkesztve ]
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
demike93
tag
Sziasztok!
Lehet kicsit pofátlan kérésnek tűnik, de végső elkeseredettségemben már nem tudok mit csinálni.
Segítene valaki megírni egy java beadandót?
Ez lenne az a kis aranyos. Nem kell nekem maxpontosra, sőt elég lenne akár csak az első két részfeladat valahogy nagyvonalakban leírva.Köszönöm előre is!
So Long, and Thanks for All the Fish
-
jetarko
csendes tag
válasz Aethelstone #6387 üzenetére
Hát nem igazán értem, hogy ez mitől jobb annál, mint ha simán kiírnám, hogy pl: /home.
@Override az miért van a @RequestMapping-nál? -
Aethelstone
addikt
válasz jetarko #6390 üzenetére
Hát nem igazán értem, hogy ez mitől jobb annál, mint ha simán kiírnám, hogy pl: /home.
Kb. azért, amiért a konstansok használata jobb, mint a kódba égetett szöveg. Másrészt 15 kontroller összes path-ja mondjuk egy osztályból módosítható.
@Override azért van, mert nincs bemásolva az egész osztály, ami egyébként implementál egy interfészt, ami a jelen probléma szempontjából indifferens.
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
jetarko
csendes tag
válasz Aethelstone #6393 üzenetére
Hm, lehet benne valami, lehet átírom az egészet ilyenre vagy a következőt így kezdem.
Jelenleg elég sok oldalon van adatbázis kezelésem. Amikor elkezdtem csinálni,akkor eszembe se jutott, hogy lehet, hogy az adatbázis nem érhető el, ezért nem kezeltem sehol, hogy tényleg elérhető vagy nem. Most az egyik oldalon beraktam try-ba a lekérdezést, ezért ott letudom kezelni, de a többi oldalon jön a hiba, ha az adatbázis kapcsolat nincs.
Minden egyes helyen try-ba kéne raknom vagy van erre valami szebb megoldás? Hibernate-t használok, ha ez számít. -
Aethelstone
addikt
válasz jetarko #6394 üzenetére
Ezt a "minden oldalon" megfogalmazást nem értem.
Általános szabály, hogy az adatbázis kezelését és az ehhez kapcsolódó hibakezelést 1 helyen oldjuk meg, az esetleges hibákat továbbdobjuk és a használat helyén csak ezeket kezeljük valamilyen módon. Nyilván ha Exception-t dobsz, akkor azt minden helyen kezelni kell, ahol használod.
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
jetarko
csendes tag
válasz Aethelstone #6395 üzenetére
A minden oldal alatt azt értettem, hogy minden függvény ahol meghívom az adatbázis-t, de értem a lényegét, ami logikus is, hogy mindenhol try-ba kell raknom.
-
TheProb
veterán
[JavaFX]
Létezik módszer arra, hogy ne kelljen minden egyes metódust (event handlert) a controller-ben kézzel beírkálni? Mert ezt nem egészen érzem hatékony munka segítésnek így. NB-ben tök jó volt, adott komponensen jobb egér és már adhattam is hozzá a kívánt eseménykezelő fejlécét a kódhoz, itt sajnos ilyet nem találok, se a scene builder se az IDE-k részéről (NB vagy intelliJ, utóbbiban tényleg full üres a controller, NB legalább 1 gomb fejlécét megcsinálja)
"Boba is Mickey, Mickey is Boba" - Finkle Einhorn | PC Rig: https://pcpartpicker.com/b/bBy48d
-
Szmeby
tag
válasz TheProb #6397 üzenetére
Számomra pl. az nem hatékony, amikor fel kell emelnem a kezemet, hogy az egérhez nyúljak. Persze én billentyűzettel fejlesztek. Rühellem, amikor egy program elvárja, hogy kattintgassak.
Egyébént mit értesz fejléc alatt? A (névtelen) osztály példányosítását, vagy esetleg azon belül az implementálandó metódust?
Én ugyan eclipse-ben tolom, de ez code assist és egyszerű hotkeyek segítségével pár másodperc alatt összedobható. Persze nem árt, ha az ember ismeri a frameworkot.Ettől függetlenül persze lehet, hogy van erre valami tool, én nem érteni javafx-hez ennyire.
-
TheProb
veterán
én se kattintgatok (nem is írtam), fejléc alatt a fv nevét, típusát és argumentumát értem, kifejtetlenül. (vagy rossz szót használtam?) Hát én még csak most ismerkedek az FX-el, de egyelőre kicsit idegen ez a mindent kézzel írjunk meg dolog, nem értem mért nem lehet egyből begenárálni a dolgokat a kódba, mint ahogy swing-el teszi az NB.
Amúgy intelliJ-nek az ingyenes verziója is van olyan jó, mint a teljes értékű?
"Boba is Mickey, Mickey is Boba" - Finkle Einhorn | PC Rig: https://pcpartpicker.com/b/bBy48d
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Kerékpárosok, bringások ide!
- Képeken az egyik kameráját elvesztő Sony Xperia 10 VI
- Apple iPhone 15 Pro Max - Attack on Titan
- Sokat fogyaszt az AI, egyre több az adatközpont, kell az atomenergia
- Egyre közelebb a Poco F6 startja
- Fujifilm X
- Mindent megtudtunk az új Nokia 3210-ről
- A fociról könnyedén, egy baráti társaságban
- CASIO órák kedvelők topicja!
- Kertészet, mezőgazdaság topik
- További aktív témák...
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Promenade Publishing House Kft.
Város: Budapest