Új hozzászólás Aktív témák
-
beleszólok
senior tag
válasz Aethelstone #6574 üzenetére
OK. Ha java-t akarok, mit javasolsz RTFM címszó alatt? (online, ingyenesen elérhető - nekem ez már rég csak hobbi, anyagi keret már nem nagyon van rá)
És design pattern témában?
Ebből találkoztam olyanokkal, mint Factory, Singleton(sokak szerint ez felejtős), Dependency Injection, Decorator - ezen volt pár apróbb vitám, mert valahol azt olvastam, hogy a pythonbeli decorator ennek a megvalósítása, mások szerint viszont semmi köze hozzá).
MVC nem tudom, mennyire sorolható ide...Tiszavirág: http://youtu.be/YdcsiW0kfso
-
WonderCSabo
félisten
válasz beleszólok #6601 üzenetére
Manual -> oracle hivatalos tutorial, vogella
Design patterns, sztem nagyon faszán összehasonlítja.
Singleton: igen, sokak szerint anti-pattern. Időnként hasznos lehet, de normálisan kell használni.
MVC, ez is egy pattern végülis.
Decorator: ugye itt egy speckó python nyelvi elemről van szó. A műkődése viszont tényleg kvázi a pattern, viszont a python-os cucc függvényt dekorál, a design pattern pedig objektumot/osztályt.
-
beleszólok
senior tag
válasz WonderCSabo #6602 üzenetére
A python dekorátor használható osztályokon is, amennyire még emlékszem, csak van benne valami kavarás, ami miatt (állítólag) nem fedi teljes mértékben a design patternt. Nem értek hozzá, szóval csak azt mondom vissza, amit máshol írtak.
Tiszavirág: http://youtu.be/YdcsiW0kfso
-
floatr
veterán
válasz WonderCSabo #6595 üzenetére
Igazad van, az ilyen példányoknál teljesen eldobja a részleteket.
Mentségére legyen mondva (#6599) emvy a fordító rátalál minden olyan pontra, ahol hibát követsz el, ezért ez a része nem zavar túl sok vizet. Sőt engem még zavar is az, hogy mindenbe bele tud kötni. Az meg már a te dolgod, hogy figyelmen kívül hagyod, vagy SupressWarning-ot aggatsz rá.
-
WonderCSabo
félisten
12.sor : ArrayList is a raw type. References to generic type ArrayList<E> should be parameterized
13. sor: Type safety: The expression of type ArrayList needs unchecked conversion to conform to ArrayList<Object>Javac meg ezt mondja:
[WARNING] Test/src/Main.java:[12,17] found raw type: java.util.ArrayList
missing type arguments for generic class java.util.ArrayList<E>
[WARNING] Test/src/Main.java:[13,40] unchecked conversion
required: java.util.ArrayList<java.lang.Object>
found: java.util.ArrayList[ Szerkesztve ]
-
nagyúr
válasz WonderCSabo #6605 üzenetére
Persze, ilyen trivialisan egyszeru esetben szol a compiler, ellenben attetelesebb szituaciokban nem feltetlen -- pl. mindenfele szerializacios esetekben.
while (!sleep) sheep++;
-
floatr
veterán
válasz WonderCSabo #6608 üzenetére
Értékadáskor derülne ki a turpisság, nem olvasáskor.
-
floatr
veterán
válasz WonderCSabo #6610 üzenetére
Bármit csinálsz, konverziókat kell majd használnod; akár hagyományos serialization-t, akár saját megoldást, akár perzisztenciát használsz. Mivel a runtime csak Objectet tud kezelni, a listába helyezéskor, értékadáskor nem tud hibát találni, csak amikor használnád az Objectet valamilyen típusként, amire nem lehet castolni.
-
Aethelstone
addikt
A semmit gyúrogatjátok
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
floatr
veterán
válasz Aethelstone #6613 üzenetére
De egész jól. Kéne még pár komment a témában
Mindenesetre nekem ez a fajta féltípusosság kicsit olyan nesze semmi fogd meg jól. A parametrizált osztályok és metódusok még az öröklődési szabályokat is átírják, ami azért gáz egy ennyire deklaráltan OOP nyelv esetében.
-
Aethelstone
addikt
Szerintem meg semelyik nyelv nem tud felkészülni minden lehetséges use-case-re. Viszont nyelvi szinten biztosítani kell olyan lehetőségeket, amikkel ezek a váratlan helyzetek is többé, kevésbe korrektül kezelhetőek. Akár design pattern szinten vagy fejlesztési szabályokkal egyaránt. Vagy ezek megfelelő kombinációjával.
A jelen problémára egyébként fapados, csúnya, de rendkívül hatékony megoldás az instanceof használata
Persze, nyilván le kell törni annak a kezét, aki egy adott ponton nem használja és classcastexceptionnal szétszáll a szarja
[ Szerkesztve ]
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
WonderCSabo
félisten
válasz Aethelstone #6615 üzenetére
Ugye itt generic collectionről van szó, az instanceof itt csak a taroló típusban segít, az elemek típusában már nem, persze ha csak lekérdezed az elsőt.
Szerintem itt felesleges ezzel foglalkozni, alapvetően a hívónak ismernie kell, hogy mit kap vissza, ez a hiba úgyis nagyon gyorsan kiderül a tesztelés során.
Akkor persze kéne esetszétválasztás, ha többféle objektumot kaphatunk vissza, de az pedig szerintem kerülendő... -
Aethelstone
addikt
válasz WonderCSabo #6616 üzenetére
Nos, ugyanarról beszélünk ismét. Mivel tudom, hogy a lista, amit fel kell dolgozzak, milyen elemeket fog tartalmazni, ezért kurvára biztonságos egy explicit cast. Ha meg szétszáll, akkor megnézem, hogy mi is lehet benne és a következő futtatás már jó lesz Nos, valóban...egy listában többféle ojjektum már kövér tervezési hiba.
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
floatr
veterán
válasz Aethelstone #6615 üzenetére
Nekem a generics példányoknál nem fáj az, hogy nincsen runtime generált osztály. Ami fáj, az az öröklési elvek sérülése, ami megint ilyen fordító hekkelés miatt van, mint amit a múltkor bedobtam az enumokkal, konstansokkal kapcsolatban. A nyakát szegik a nyelvnek.
-
Aethelstone
addikt
Hát jah. Nekem is fáj pár dolog. Pl. a metódusokban a default paraméterérték megadás. Nyilván meg lehet oldani, de a varargs, a method overload számomra kicsit munkás Aztán miért nem lehet Enum-ot extendálni? Persze, tudom, hogy final, de miért kell annak lennie? Simán lehetne abstract enum is. Néha fájóan hiányzik az, hogy fel lehessen venni mondjuk property-ket, amiket az utódok elérhetnek...
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
floatr
veterán
válasz Aethelstone #6619 üzenetére
Höhö, indítsunk mozgalmat...
-
beleszólok
senior tag
Előre szólok, ez inkább kötekedés részemről, de kisebb részben tényleg értetlenül állok ezen kijelentés előtt:
JavaBeans™ makes it easy to reuse software components. Developers can use software components written by others without having to understand their inner workings.
Eddig úgy tudtam, ez nem JavaBeans tulajdonság, hanem az objektum orientált alapelvek egyike.
(hogy a belső működés ismerete nélkül használjunk elemeket)
Vagy a hiányos angolom miatt nem értem, hogy mit jelent a "to understand their inner workings"?ui: egyébként két mondatban össze tudná valaki foglalni, hogy mi is a JavaBeans? Régen egy magyar nyelvű könyvecske alapján azt hittem, hogy ennek a GUI fejlesztéshez van köze, de ez hülyeség.
Tiszavirág: http://youtu.be/YdcsiW0kfso
-
Aethelstone
addikt
válasz beleszólok #6622 üzenetére
Itt egy cseppet másról van szó. Nevezetesen arról, hogy az enterprise java környezetekben a Bean-ek nem önmagukban álló entitások, hanem mindig egy interfész/egy vagy több implementáció szerepel és a dependency injection mindig interfészt injektál és nem konkrét implementációt. (Kivéve amikor több implementáció van, viszont ebben az esetben is interfészként hivatkozunk rá, de az injektáláskor megmondjuk nevesítve, hogy melyik implementációról van szó konkrétan @Resource("akarmi") pl.)
Ebben az esetben egy osztály attól függően hogy milyen interfész implementációjára hivatkozunk, máshogy viselkedik nyilván, tökre elrejti az egyéb funkcióit, amiket sima osztályként el tudnánk érni, de itt szándékosan nem akarunk.
Standalone környezetben nem szokták erőltetni az interfész/implementáció párost, de mint írtam, enterprise környezetben de facto szabvány. Azért de facto, mert elvileg lehet implementációt is injektálni(meg minden egyebet is), de nem szép. Ennyi.
[ Szerkesztve ]
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
sirszevenap
őstag
Sziasztok!
Aki tudna nekem segíteni egy kicsit java-ból privátba, az írjon.
Természetesen nem marad hálátlanul!Üdv.
Bankkártyával? Hát persze!
-
jetarko
csendes tag
Template engine-k közül szerintetek melyik a legjobb Spring és portlethez? Eddig tanulgattam kicsit jsp-t és főleg velocity-t, most elkezdek a freemarker-rel is játszani. aztán thymeleaf, jtwig stb.
-
jetarko
csendes tag
válasz Aethelstone #6626 üzenetére
És ha kihagynám a template engine részt, és helyette beüzemelném az Angular js-t? Mondjuk fogalmam nincs, hogy mikor melyik megoldást érdemes használni. Erről tudsz valamit mondani?
[ Szerkesztve ]
-
Cathfaern
nagyúr
válasz jetarko #6627 üzenetére
Template engineket nem ismerem, de angularjs-t valamennyire igen. Két esetben vágj, bele:
1. Egyszerű dolgok kellenek kliens oldalon
vagy
2. Hajlandó vagy rá jóval több időt rászánni, mint első ránézésre szükségesAngularjs tipikusan olyan framework, ami elsőre pofonegyszerűnek tűnik, és pillanatok alatt lehet benne csodás dolgokat összedobni. De ha valamiért nem jó az alapmegoldás, akkor meg nagyon bele kell mélyedni. Ez a kép tökéletesen igaz tapasztalataim szerint [link]
-
tick
aktív tag
Üdv!
A lenti kód (természetesen más szöveggel) azt hivatott bemutatni jelenleg hogy indítok el egy job-ot a lenyomott menü szövege alapján. Van erre valami elegánsabb megoldás? (a menü elemek a saját action commandjukat küldik egy listenernek)
[azon kívül hogy elrejtem valami hasonló metódusba:
getJob(String jobname).run(); ]if(owner.getAction().name().equals("Do this then that") new WorkerJobDoThisThenThat.run();
if(owner.getAction().name().equals("Start something") new WorkerStartSomething.run();
if(owner.getAction().name().equals("Execute this") new WorkerExecuteThis.run();
if(owner.getAction().name().equals("Running out of ideas") new WorkerRunningOutOfIdeas.run();[ Szerkesztve ]
Everything that has a beginning... has an end
-
veterán
Ha TreeSetet szeretném használni úgy, hogy a beszúráson módosítok, és az elemszámát korlátozom, akkor mi a szebb megoldás?
a) Leszármazok belőle
b) Tagváltozóként van bennem egy belőleVégülis tagváltozós megoldás lesz, csak pár funkcióját használom saját függvényekkel, és a többi jobb ha rejtve marad.
[ Szerkesztve ]
https://play.google.com/store/apps/details?id=com.lovemap.lovemapandroid
-
tick
aktív tag
válasz WonderCSabo #6632 üzenetére
Köszönöm.
Egy újabb kérdésem lenne: adott egy osztály ami Runnable-t implementál sok hosszú egymást követő folyamatból áll. Hogyan tudnám megszakítani a futását?
While-ba rakva a flaget változtatva csak akkor áll meg, ha már a végére ért.ezt próbáltam:
public void run() {
while(!Thread.currentThread().isInterrupted()) {
//do time consuming stuff
}
}
public void stop() {
Thread.currentThread().interrupt();
}Everything that has a beginning... has an end
-
#03372544
törölt tag
Sehogy, az interrupt() csak beállít egy flag-et amit neked kell futás közben ellenőrizned az isInterrupted() metódussal.
Egy-az-egyben kilőni a szálat nem tudod, régen lehetett a stop() metódussal de az elég sok problémát felvet ezért későbbi Java verziókban deprecated lett majd ki is vették, UnsupportedOperationExcepcion-t dob hogy véletlenül se használd. -
#03372544
törölt tag
Ilyesmire gondolt a kolléga.
package example;
public interface Job {
void doTheJob();
}
-------------------------------------------------------------------------------------------------------------------------
package example;
public class ExecuteThisJob implements Job {
@Override
public void doTheJob() {
System.out.println("ezt végrehajtom");
}
}
-------------------------------------------------------------------------------------------------------------------------
package example;
public class RunningOutOfIdeasJob implements Job {
@Override
public void doTheJob() {
System.out.println("nincs több ötletem");
}
}
-------------------------------------------------------------------------------------------------------------------------
package example;
public class StartSomethingJob implements Job {
@Override
public void doTheJob() {
System.out.println("valamit elindítok");
}
}
-------------------------------------------------------------------------------------------------------------------------
package example;
import java.util.HashMap;
import java.util.Map;
public class JobFactory {
private static final JobFactory INSTANCE;
static {
INSTANCE = new JobFactory();
}
private Map<String, Job> jobMapping;
private JobFactory() {
jobMapping = new HashMap<String, Job>();
jobMapping.put("executeThis", new ExecuteThisJob());
jobMapping.put("startSomething", new StartSomethingJob());
jobMapping.put("runningOutOfIdeas", new RunningOutOfIdeasJob());
}
public static Job getJob(String jobType) {
return INSTANCE.jobMapping.get(jobType);
}
}
-------------------------------------------------------------------------------------------------------------------------
package example;
public class JobFactoryExample {
private JobFactoryExample() {
}
public static void main(String[] args) {
JobFactoryExample example = new JobFactoryExample();
example.doTheAction("executeThis");
example.doTheAction("startSomething");
example.doTheAction("runningOutOfIdeas");
}
public void doTheAction(String actionName) {
JobFactory.getJob(actionName).doTheJob();
}
} -
tick
aktív tag
válasz Aethelstone #6637 üzenetére
Köszönöm az infokat
Everything that has a beginning... has an end
-
jetarko
csendes tag
Hali, még mindig Spring
A weboldalamat szeretném többnyelvűvé varázsolni. A properties fájlos megoldás megy, de ez nem tetszik. Olyat szeretnék, hogy db-ben tárolódnak kulcsok és ezekhez lesz annyi oszlop amennyi nyelv. Az értékeket az egyik oldalon lehetne állítani és azonnal cserélődne a megjelenésbe azaz semmi újraindítás vagy redeploy.
Nem találtam semmi értelmes példát, leírást erről, hogyan lenne érdemes hatékonyan csinálni.
Jelenleg úgy képzelném el, hogy a controllerbe az adott oldalakhoz hozzáadnám egy listába azokat az értékeket az aktuális nyelv szerint amik megjelennek az adott lapokon. Ez ugye sok-sok db piszkálás mindig, ami sok szövegnél nem valami hatékony. Ha számít hibernate-t használok. Vmi tanács, tipp? -
floatr
veterán
válasz jetarko #6639 üzenetére
FYI a message tag-en keresztüli adatkezelés úgy működik, hogy a properties állományt a classloader beolvassa egy map-be. Mivel semmi nem indokolja a dolgot, nem is tölti újra, de a memóriában tartja az adatokat. Ha "valami" megoldaná, hogy a map újratöltse magát, akkor teljesen mindegy hol tárolod kiindulásképpen.
Mint pl ez a megoldás: [link]
-
#03372544
törölt tag
Ez a megoldás nem pont arról szól amit a kolléga szeretne, itt beleír a property fájlba majd vár hogy újratöltődjön.
A kollégának meg át kellene térnie egy másik property fájlra, ez tök más probléma.Egyébként amit linkeltél nem fog működni amint a property fájl a classpath-on lesz csak egy JAR-ba vagy a WAR-ba, EAR-ba becsomagolva.
[ Szerkesztve ]
-
floatr
veterán
válasz #03372544 #6642 üzenetére
Ez esetben meg ott az AbstractMessageSource. Leszármaztatja, akkor frissíti amikor akarja, a locale-t meg kezeli ahogy eddig. Lényeg h a DB-t menet közben hagyja békén, és használjon egy map-et.
-
jetarko
csendes tag
válasz #03372544 #6640 üzenetére
A fájlból előre beégetett adatok megoldás jelenleg is működik, de azt szeretném, hogy az oldalon tudjam változtatni az értékeket és ne a fájlokba keljen irkálnom manuálisan. Az hogy futás közbe új nyelvet is hozzáadhassak az nem olyan fontos, csak gondoltam azt is megemlítem
Azt sejtettem, hogy a DB piszkálás nem túl optimális, a cache dolgokat még nem tudom, hogy működnek, de majd utánaolvasok.floatr: Ezt a megoldást majd kipróbálom és utánanézek az AbstractMessageSource-nak is.
Am ezt majd szakdogához szeretném megcsinálni, mert sokkal jobbnak tűnik mint az előre sima fájlokból és nem adok lehetőséget a stringek módosítására.
Köszi a válaszokat.
[ Szerkesztve ]
-
plaschil
aktív tag
Sziasztok!
Szeretnék automatizált tesztelést végezni weblapokon. Eclipse-ben szeretném java nyelven. Hogyan induljak el? Van valami hasznos infótok?
Köszönöm előre is!Creative G500 vezérlő panelt keresek// Hol vagy helyileg? - A kisszobába. // Szilvásbuktát, mert azt szeretem!
-
plaschil
aktív tag
válasz plaschil #6649 üzenetére
Nos, és mi a helyzet a folyton változó ID-kal? Ha rögzítek egy tesztesetet, és az ID-ja megváltozik az elemnek, elakad a teszt. Másképp kellene hivatkozni rá, de hogyan?
Creative G500 vezérlő panelt keresek// Hol vagy helyileg? - A kisszobába. // Szilvásbuktát, mert azt szeretem!
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Xiaomi Redmi Buds 3 Lite, Vezeték nélküli fülhallgató, Fekete + szilikon védőtok
- Star Wars - Az eredeti trilógia - DVD kiadás (2022)
- Corsair 110Q ATX Gépház Eladó!
- Dell Latitude 3410 Quad Core i5- i5-10210U 10 generációs laptop 8 GB DDR4 SSD jó akkumulátor
- Star Wars - The Rise of Skywalker - 4K UltraHD Steelbook kiadás
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: Ozeki Kft.
Város: Debrecen