Új hozzászólás Aktív témák
-
xTc
aktív tag
Használtál már myeclipse csodát? Nah az az igazi "csoda".. Sajnos a cégnél ez fut, 1000éves verziókban természetesen. :-( Bughalmaz, az általa létrehozott projekteket nem lehet más ide-be behúzni, egyrészt mert sajnos property fileokat generál, másrészt mert sajna a projektfájlok is az svn részeit képzik ügyesen okosan :-)
[ Szerkesztve ]
-
xTc
aktív tag
Valószínűleg az lesz nálunk is, még pár napig van meg az éves subscription, ha addig nem érkezik meg az új akkor rá leszünk kényszerítve rendesen. :-) Személy szerint nem bánnám, néha meg kell lépni 1-2 verzióváltást. Semmi speciális ficsört nem használunk, ami indokolná a myeclipse-t. Azon viszont meglepődtem, hogy máshol is "divat".
@WonderCsabo: Akkor neked is SR2 van már a 4.3.2-es verzió pont ez.
-
McReay
aktív tag
Valaki nem tudja véletlenül, hogy a MapServer nevű alkalmazást, hogy lehet beizzítani Windows alá és később java nyelven felületet csiholni hozzá?
Szükséges lenne itthoni környezet kialakítása, hogy tudjam localhoston tesztelni/fejleszteni a dolgot.
Egy beüzemelési leírás jól jönne lenne hozzá, de az interneten nem találtam!
Oldalon található user guide alapján nem ment a dolog!
[ Szerkesztve ]
Samsung Galaxy Note 8 --- Honda CBR 600 F4
-
axioma
veterán
válasz szabodani #5194 üzenetére
1. Hol a pont osztalyod? (am. irhatnad nagybetukkel az osztalyneveket...) ; ettol fugg hogy hogyan kene tovabb (az is egy osztaly a koordinatakkal mint memberekkel, meg allitgato fuggvenyekkel, vagy mi?)
2. a constructorod nem felel meg a feltetelnek, ott kene a pontot is megadni, nem kulon setter fuggvenyben (amit amugy is illene set<ize> nevvel irni, mondjuk nem tudom hogy magyar elnevezeseknel mi erre a szokas) Raadasul az osztaly azert osztaly, hogy onmaga integritasara vigyazzon, tehat effektive egyetlen pont settere itt felettebb alkalmatlan a feladatra, legfeljebb ujBalFelso lehetne, es akkor egybol egy eltolast - minden pont ujraszamolasat - kene megvalositani. Ezt visoznt nem kerte a feladat...[ Szerkesztve ]
-
Dolby
senior tag
Sziasztok!
Egy háziban szkeletont kell készíteni a kiírt programhoz, amiben azt várják, hogy a metódus hívásokat, a metódus által kapott paramétereket és a visszatérési értékeket kiírja a program 1-1 tesztelt folyamatrészletről.
Mivel nem annyira tartom szerencsésnek ha minden metódust kiegészítek külön kiírásokkal, keresgéltem és a util/logging/logger felmerült mint lehetőség, de egyenlőre a beállításaival kicsit hadakozom. A kérdésem h be lehet állítani h a fenti infókat írja csak ki? Hogy ne szenvedjek fölöslegesen ha nem is fogja tudni :-D- Nyugalom, a hosszú élet ritka!
-
Karma
félisten
AOP segítségével simán meg tudod egy helyről oldani minden metódus naplózását. Csak aztán meg kell indokolnod a konzulensnek.
“All nothings are not equal.”
-
Dolby
senior tag
"A forrásprogramnak a laboratóriumban rendszeresített (nem a hallgatók által írt package hozzáadása nélküli) JDK alatt lefordíthatónak és futtathatónak kell lennie"
Sajnos a kiírás miatt nem használhatunk semmilyen kiegészítést a nyelvhez, ezért próbálnám meg a logger-rel megoldani. :-/
- Nyugalom, a hosszú élet ritka!
-
Karma
félisten
Szerintem ekkor semmivel se vagy előrébb annál, mintha teleszórnád System.out.println()-nel a kódot. Az elvárt működés egyébként is az, hogy stdoutra lökje ki a metódusokat, nem kell a logger cicoma. Belőni egyébként nem bonyolult, a valóságban úgyis majd lesz egy wrapper lib előtte (pl. SLF4J).
Ha elrejted a kiírást egy olyan utility osztály mögé, aminek van egy "enter" meg egy "exit" metódusa, akkor meg pláne mindegy.
IIT rulez.
[ Szerkesztve ]
“All nothings are not equal.”
-
Dolby
senior tag
-
tothpetya
újonc
Sziasztok!
Kellene egy kis segítség nekem. Van egy egyszerű Java program, ami csak annyit csinál, hogy sok kis fájlt másol egyik helyről a másikra. Naponta. Mivel elég sok van, ezért úgy kellene megoldani, hogy csak azokat másolja ami már nincs meg a másik helyen. Ezt a következőképpen oldottuk meg:
//Másolás függvénye:
public void masolas(File src, File dest)
throws IOException {
//Meg vizsgáljuk, hogy mappa-e:
if (src.isDirectory()) {
//Megpróbáljuk létrehozni a mappát (ha van, akkor nem csinál semmit)
dest.mkdir();
//Listába rendezzük a mappa tartalmát:
String files[] = src.list();
//Majd egyesével végigmegyünk rajta:
for (String file : files) {
//Elkészítjük a fájlokat:
srcFile = new File(src, file);
destFile = new File(dest, file);
//Rekurzív másolás:
masolas(srcFile, destFile);
}
} else {
try {
Files.copy(src.toPath(), dest.toPath());
System.out.println("Másolás: " + src);
} catch (FileAlreadyExistsException ex) {
System.out.println("Ez a fájl már meg van: " + src);
}
}
}Viszont így is körülbelül 15 perc alatt megy végig a fájlokon, ha meg van minden akkor is. Meg kellene gyorsítani. Ötletek?
Kb így néz ki a struktúra:
mappaneve1: fajl1, fajl2, fajl3
mappaneve2: fajl1
mappaneve3: fajl1 ... faj10Szóval van olyan mappa ami 10-15 fájlt is tartalmaz és ezek közül sok valószínűleg nem is változik. Arra gondoltam, hogy át kellene úgy alakítani, hogy először megnézi a mappa méretét és ha stimmel a kettő, akkor "bele se lép". Szerintetek ez kivitelezhető? Vagy azt is csak úgy tudja, hogy belelép és összeszámolja a tartalmát. Ha ez nem életképes, akkor valakinek van más ötlete?
-
floatr
veterán
válasz tothpetya #5215 üzenetére
Amikor egy alkalmazás lekérdezi a könyvtár méretét, akkor vagy shell parancsot használ (ami nem túl hordozható megoldás), vagy szépen végignyálazza rekurzívan a belsejét. A leggyakrabban azt szokták csinálni, hogy a megadott útvonalat első körben beolvassák egy nagy listába, és minden elemhez tárolják a méretét, és az utolsó módosítás dátumát. A könyvtárakat nem is feltétlenül szükséges ebben a listában tárolni, mert az mkdirs rekurzívan létrehozza azokat, vagy esetleg a feltérképezéskor érdemes lehet már eleve létrehozni őket. Aztán második menetben összehasonlítod a méret/dátum értékeket, és ha nem stimmel, akkor másolsz. Akkor már csak a lista elemein kell végigfutni, és tudsz becsülni végrehajtási időt is.
-
floatr
veterán
válasz tothpetya #5218 üzenetére
Ilyesmire gondoltam, nem teszteltem:
private static void prepare(File src, File dest, List<File> from, List<File> to) {
File f, d;
for (String p : src.list()) {
f = new File(src, p);
if (f.isDirectory()) {
d = new File(dest, p);
d.mkdir();
prepare(f, d, from, to);
} else {
from.add(f);
to.add(new File(dest, p));
}
}
}
private void copy(List<File> from, List<File> to) {
Iterator<File> itrFrom = from.iterator();
Iterator<File> itrTo = to.iterator();
File ff, ft;
int size = from.size();
for (int i = 0; itrFrom.hasNext() && itrTo.hasNext(); i++) {
ff = itrFrom.next();
ft = itrTo.next();
if (ff.length() != ft.length() || ff.lastModified() < ft.lastModified()) {
Files.copy(ff, ft);
}
// show progress: i/size
}
} -
Aethelstone
addikt
válasz tothpetya #5220 üzenetére
Bocs, hogy belepofázok, de annyival gyorsabb tud lenni, hogy nem másol mindent, hanem csak azt, ami változott. Ahogy a kolléga a hozzászólásában meg is fogalmazta. Gyakorlatilag deltát másolni mindig gyorsabb, ha feltételezzük, hogy nem változik minden.
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
tothpetya
újonc
válasz Aethelstone #5221 üzenetére
Nem baj, azért írtam ide, mert szeretnék minél több nézőpontot megismerni.
Az általam említett kódban is csak azt másoljuk ami nincs még meg (a fájlok nem változnak létrehozás után).
-
Aethelstone
addikt
válasz tothpetya #5222 üzenetére
Nos, azt írod, hogy mappaméretet hasonlítasz össze és ha ugyanakkora, akkor nem lép bele. Ez jó, de kevés. Van egy fájlod, amiben ez van: "Jo napot kivanok" és egy másik, amiben ez: "Jo kapot kivakok"
Méretilag koppra egyezik a két fájl, de az egyik más időpontban lett módosítva. Ezért csak a méret nem elég, módosítás dátuma is kell. Ezt a kolléga kódja megcsinálja. Másrészt meg méret meghatározásához úgy is bele kell menned és fel kell olvasnod a benne lévő fájlok metaadatait.
[ Szerkesztve ]
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
floatr
veterán
válasz Aethelstone #5221 üzenetére
Az az egyetlen probléma, hogy nem látom, mit csinál az ő kódjában a Files.copy(). Ami nálam a meglévő library-kben van, egy JBoss-féle implementáció, és nem foglalkozik azzal, ha ott van valami.
public static void copy(File source, File target, byte[] buff)
throws IOException {
BufferedInputStream in = new BufferedInputStream(new FileInputStream(
source));
BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream(target));
try {
while ((read = in.read(buff)) != -1) {
int read;
out.write(buff, 0, read);
}
} finally {
Streams.flush(out);
Streams.close(in);
Streams.close(out);
}
int read;
}Ha sok kicsi file-t kell másolni, akkor az feltételes végrehajtás érezhetően gyorsabb, mint a kivételkezelés. Lehet h ugyanezt megteszi, így egy kicsit nehéz saccolni. Mindenesetre a size() könyvtárakra nem működik, max a módosítás dátumával okoskodhat, de az sem tud normálisan működni, ha túl mély a fa.
Szerk.: Ah látom 1.7-es NIO.
[ Szerkesztve ]
-
tothpetya
újonc
Akkor próbálom vázolni újra a helyzetet. Van egy könyvtáram legyen főkönyvtár a neve. Ebben van körülbelül 10.000 almappa. Ezekben a mappákban változó számú fájlok vannak. Pl 1-20-ig. Fájlok nem törlődnek, illetve NEM módosulnak. Naponta fel kell ezt a főkönyvtárat másolni egy HDD-re (amin rajta vannak az előző napi fájlok). A lényeg, hogy csak azt másoljuk fel, ami még nincs fent.
Akkor azt mondjátok, hogy az exist() vizsgálat gyorsabb, mint a FileAlreadyExistsException kivétel dobása NIO 1.7-es másolással?
-
tothpetya
újonc
válasz Aethelstone #5227 üzenetére
USB3-as sebességhez én kicsit lassúnak érzem.
-
Aethelstone
addikt
válasz tothpetya #5228 üzenetére
Az egy dolog, hogy Te hogyan érzed Egyrészt nagyban függ a másolás sebessége a fájlok mennyiségétől és méretüktől is. Sok kicsit szart tök lassan másol. Ugye van megnyitási idő, másolási idő, lezárási idő. X fájl esetén ez pontosan Xszer annyi, mint mondjuk 1 fájl esetén.
[ Szerkesztve ]
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
tothpetya
újonc
válasz Aethelstone #5229 üzenetére
Ezzel tisztában vagyok. Azért kérdeztem, hogy nem tudtok-e olyan megoldást, aminek nem kell végigjárni az egész fát. De akkor ezek szerint nem.
-
n00n
őstag
válasz Aethelstone #5231 üzenetére
Nekem is volt ilyen problémám és én sem találtam jobb megoldást.
[ Szerkesztve ]
-
Aethelstone
addikt
Lennének ötleteim.
Naplófájlba gyűjteni, amit már átmásol korábban és a bejárás során deltát képezni. Az relative gyorsan mehet. Aztán csak a deltát másolni közvetlenül...
Ezzel meg lehet spórolni a kétirányú (src, dest) ellenőrzést...etcMI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
floatr
veterán
válasz tothpetya #5230 üzenetére
Ennél lényegesen gyorsabb szvsz intézőben sem lesz, max ha másik file rendszert használsz. Másoláskor csak annyit tehetsz, hogy bejárod a fát. Mozgatáskor van annyi előnyöd, hogy egyazon partícióba nincsen fizikai mozgatás, csak a megfelelő bejegyzés(ek) átírása.
Kis file-ok másolásakor nem az USB3 teljesítménye igazán a szűk keresztmetszet, hanem a filerendszerbeli módosítások okozta pozicionálások. Sokszor a puffert sem olvassa tele az első lépésben sem.
-
bendikeee11
tag
Sziasztok. Elég kezdő szinten vagyok még programozásban. Leginkább csak az alapokat tudom. Egy olyan projekt-et gondoltam ki, amiben audio-t streamelnék élőbe, adatbázisból egy saját lejátszási listából, és egy php oldalon lehetne hallgatni, kérni zenéket online. A kérdésem az lenne, hogy esetleg valaki tudna nekem adni a stream, broadcast-os megoldáshoz valami segítséget, vagy hogy egyáltalán hol, és hogyan kezdjem el?
Üdv.
Yesterday is History, Today is a Gift, Tomorrow is Mystery.
-
-v-
addikt
A lambda meg a funkcionalis dolgok tok jok, en konkretan most arra ertem amit a java 8-ba beleraktak ... na annak ebben a formaban semmi ertelme szerintem. De most tenyleg, sporolok par sort, hogy nem kell anonymus classt csinalnom, es ennyi (amit amugy is baromi ritkan, 1-2 speci esetben hasznalni, mert nem valami jo gyakorlat) ... a fordito meg ugyis ugyanazt csinalja belole.
Ezen kivul meg lettek default methodok, es ennyi, ez a java 8? De tenyleg, nem hozott semmi ujat ...[ Szerkesztve ]
-
WonderCSabo
félisten
Én is azt vágtam le, hogy tényleg itt csak az anyonymous class szintaktikát spóroljuk le, tehát a lambda gyakorlatilag egy szintaktikai cukor, semmi más. Van egy olyan érzésem, hogy megint a legnagyobb szempont a visszafele kompatibilitás volt, mint a Genericnél, és ezért lett ez a low-budget dolog a lambdából. A default method az mi?
-
Karma
félisten
válasz WonderCSabo #5241 üzenetére
A default methodokkal interfészekhez lehet alapértelmezett implementációkat írni, tehát ha van valami közös funkció amit egy interfészt megvalósító osztályoknak mindnek tudnia kell, és pont ugyanúgy, akkor nem kell se abstract ősosztály, se kódot ismételni.
A végeredmény hasonló, mint az extension methodok C#-ban.
De ott van a streams API is, elég erős túlzás hogy nincs a Java 8-ban semmi új... Meg a lamdba szintaxissal sincs baj szerintem – mindig azt vallottam és tartom is, hogy minél kevesebb kódot ír az ember, annál jobb.
“All nothings are not equal.”
-
-v-
addikt
mindig azt vallottam és tartom is, hogy minél kevesebb kódot ír az ember, annál jobb
Háát ... én meg inkább Clean Code stb. felé hajlok. Meg afelé, hogy attól mert van kalapácsom, még ne lássak mindent szögnek. Van amikor igen, jó az ha minél kevesebb kódot irok, valamikor meg nem jó ...
Szeirntem is csak szintaktikai édestiszer ez a lambda, semmi ténylegesen újat nem hoz. -
floatr
veterán
Persze, az api egy dolog, de nem azt tolják, hanem a lambdát. Az meg csak ennyi; lett pár új operátor, meg egy kicsit rövidebb a kód, cserébe könnyebben bele lehet zavarodni.
Ez a default cucc is elég érdekes, amikor többszörös öröklés jön elő. Veszélyes vizekre tévedtek ezzel.
-
fatal`
titán
"A default methodokkal interfészekhez lehet alapértelmezett implementációkat írni, tehát ha van valami közös funkció amit egy interfészt megvalósító osztályoknak mindnek tudnia kell, és pont ugyanúgy, akkor nem kell se abstract ősosztály, se kódot ismételni."
Ez mondjuk tud hasznos lenni.
-
Karma
félisten
Szerintem pont hogy kompatibilis a clean code-dal, hogy az ilyen szintaktikai édesítőszerekkel a lényeget írjuk le, ne pedig a temérdek boilerplate-et.
(#5245) floatr: "Persze, az api egy dolog, de nem azt tolják, hanem a lambdát." ??? Mármint kicsoda?
[ Szerkesztve ]
“All nothings are not equal.”
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Promenade Publishing House Kft.
Város: Budapest