Hirdetés
- ldave: New Game Blitz - 2025
- eBay-es kütyük kis pénzért
- Brogyi: CTEK akkumulátor töltő és másolatai
- Luck Dragon: Asszociációs játék. :)
- Lalikiraly: Astra kalandok @ Negyedik rész
- Lalikiraly: Kaáli Autó-Motor Múzeum
- gban: Ingyen kellene, de tegnapra
- 8th: A NOB legalizálja a doppingot?
- sziku69: Fűzzük össze a szavakat :)
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
Új hozzászólás Aktív témák
-
janos666
nagyúr
válasz
E.Kaufmann
#10554
üzenetére
Haha.
Elkezdtem nézni a "Masterclass"-t. Legelejétől, mert 5+ élve nem olvastam semmi kódot (és úgy látom kicsit más már kezdő szinten is, mint a C++).
A tanár legalább anyanyelvi angol, ugyanakkor beszédhibás, és furán van felépítve az anyag. Gyakorló feladatokat ad már az előtt, hogy elmagyarázná, hogy mik azok, és hogy épülnek fel a függvények (és hasonló alap dolgok), aztán nem tudom, hogy szándékosan oldja meg őket furán, hogy aztán bemutathasson tipikus problémákat (kicsit sem elegáns, amit csinál, megtöm mindent felesleges else ágakkal és && operátorokkal, redundáns kondíciókkal, aztán később javítja is, mert tele lesz logikai bakikkal, és mondja is, hogy túl hosszú és kacifántos, amit csinált), vagy félvállról veszi és nem is akar (vagy tud) jó példát mutatni.
-
lajszer
tag
válasz
E.Kaufmann
#10665
üzenetére
Akkor bocsi! Ment oda (is)!
-
válasz
E.Kaufmann
#10637
üzenetére
Lehet egy templatet meg kéne próbálni, jó dolog amúgy!

-
válasz
E.Kaufmann
#10635
üzenetére
Nem hiszem, hogy az OpenJDK lenne a baj de megpróbálhatod AdoptOpenJDK-val is pl.
Szerk.: HTML tábla generálásra nem használsz valami templateing engine-t?
-
válasz
E.Kaufmann
#10633
üzenetére
Amúgy régóta "tökmind1": [link]
-
E.Kaufmann
veterán
válasz
E.Kaufmann
#10632
üzenetére
Előzőre valaki?
Más: A régi tanács, hogy sima String-eket nem konkatenálunk, valóban igaz még most is. Csináltam egy egyszerűbb html táblagenerálást. Úgy voltam vele, annyira nem lesz nagy tábla, meg majd csak kioptimalizálja a JDK11.
Háát. Tetülassú volt a generálás, legalább 2-3mp volt érzésre, azt hittem valamit a rendezés körül rontottam el, aztán eszembe jutott a régi intelem, lecseréltem a függvényen belül a konkat nagyját StringBuilder append függvényére, mert csak egy szálon fut a generálás és most csak úgy ugrik befele kérésre az oldal böngészőn át -
Aethelstone
addikt
válasz
E.Kaufmann
#10628
üzenetére
Maven/Gradle/stb kikerülhetetlen manapság. Nem bexarni, csinálni

-
Aethelstone
addikt
válasz
E.Kaufmann
#10626
üzenetére
Ez egész jó.
https://deeplearning4j.org/
-
Aethelstone
addikt
válasz
E.Kaufmann
#10599
üzenetére
Elvileg jó az ábra, de már rég nem kötjük össze őket így explicit. Valami service discovery vagy repository mindenképpen van, amitől kevésbé lesz pókhálós a történet

-
Drizzt
nagyúr
válasz
E.Kaufmann
#10595
üzenetére
Definiald pontosan mit ertesz a tobben alatt, illetve hogy azon tobbek kozul mennyinek van irasi, olvasasi, irasi es olvasasi joga. Es hogy melyik az a legtobb ERP rendszer.
-
Aethelstone
addikt
válasz
E.Kaufmann
#10595
üzenetére
Ez most éppen nem bullshit. Jól működő dolog. A lényeg meg ugyanaz, de a technikai megvalósítás tök más.
-
Aethelstone
addikt
válasz
E.Kaufmann
#10593
üzenetére
Láttál már jó ERP-t?
Nem véletlenül találták ki egyébként a microservice architektúrát. Ami nyilván nem teljeskörű megoldás, vannak kurva nagy gyengeségei, de alapvetően tiszta DB helyzetet teremt. -
Aethelstone
addikt
válasz
E.Kaufmann
#10588
üzenetére
Nos, nem azt mondtam, hogy nem kell db, hanem hogy közös nem kell. Viszont tényleg, pontos igényspec nélkül nehéz technológiai döntést hozni

-
mind_against
tag
válasz
E.Kaufmann
#10560
üzenetére
Ez a Java programozás topik, én pedig programozással kapcsolatban folytatom

-
Aethelstone
addikt
válasz
E.Kaufmann
#10554
üzenetére
Nekem tökmindegy. Mindenki azt néz, amit akar

-
Aethelstone
addikt
válasz
E.Kaufmann
#10551
üzenetére
Udemy? Volt egy kollégám, fizikus végzettséggel. Fél év után feladta, hogy a programozás nem megy neki. Azóta Udemy-n oktat......programozást.

-
E.Kaufmann
veterán
válasz
E.Kaufmann
#10544
üzenetére
Tegnap picit még püföltem a kódon:
- kettévettem a poireplace függvényt,
- megcsináltam, hogy elvileg működjön fejléccel és lábléccel is, de ez nem lett alaposabban tesztelve
- néha írt hibaüzeneteket a Word, hogy a fájl meg van már nyitva, így bezártam az input és output állományt is a függvény végén
- kicsit sztrímesítettem, ha valakinek gondja lenne vele, távolítsa el a kódból elsőnek a .parallel() részeket:private static void paragReplace(XWPFParagraph p,java.util.HashMap<String,String> hs){
String text = p.getText();
boolean change=false;
for ( String key : hs.keySet() ) {
if (text != null && text.contains("${"+key+"}")) {
text = text.replace("${"+key+"}", hs.get(key));
change=true;
}
}
if(change){
List<XWPFRun> runs = p.getRuns();
if (runs != null) {
String ff=runs.get(0).getFontFamily();
int fs=runs.get(0).getFontSize();
removeAllRuns(p);
insertReplacementRuns(p,text,ff,fs);
}
}
}
public static void poiReplace(java.util.HashMap<String,String> hs, String in, String out) throws Exception
{
//Bekezdések
java.io.FileInputStream ins=new java.io.FileInputStream(in);
XWPFDocument doc = new XWPFDocument(ins);
doc.getParagraphs().stream().parallel()
.forEach((p) -> {
paragReplace(p,hs);
}
);
//Táblázatok
doc.getTables().stream().parallel()
.forEach((tbl) -> {tbl.getRows().stream()
.forEach((row) -> {row.getTableCells().stream()
.forEach((cell) -> {cell.getParagraphs().stream()
.forEach((p) -> {
paragReplace(p,hs);
});
});
});
}
);
//Fejléc bekezdések és táblázatok
doc.getHeaderList().stream().forEach( (hdr) ->
{
hdr.getParagraphs().stream().parallel()
.forEach((p) -> {
paragReplace(p,hs);
});
hdr.getTables().stream().parallel()
.forEach((tbl) -> {tbl.getRows().stream()
.forEach((row) -> {row.getTableCells().stream()
.forEach((cell) -> {cell.getParagraphs().stream()
.forEach((p) -> {
paragReplace(p,hs);
});
});
});
});
}
);
//Lábléc bekezdések és táblázatok
doc.getFooterList().stream().forEach( (ftr) ->
{
ftr.getParagraphs().stream().parallel()
.forEach((p) -> {
paragReplace(p,hs);
});
ftr.getTables().stream().parallel()
.forEach((tbl) -> {tbl.getRows().stream()
.forEach((row) -> {row.getTableCells().stream()
.forEach((cell) -> {cell.getParagraphs().stream()
.forEach((p) -> {
paragReplace(p,hs);
});
});
});
});
}
);
doc.write(new java.io.FileOutputStream(out));
doc.close();
ins.close();
} -
E.Kaufmann
veterán
válasz
E.Kaufmann
#10526
üzenetére
Ha valakinek kellene DOCX "sablon" (változókkal ellátott DOCX doksi) kitöltése Apache POI-val (és StringUtils-szal), akkor itt az én módszerem.
Két-három StackOverFlow-os példát kicsit össze kellett gyúrni, hogy megtalálja a változókat és sortörést és formázást is jól kezeljen:
A lényeg, hogy a változónevek a docx-ben ${változónév} formában szerepeljenek, valamint a változók és a helyettesítő szövegek egy HashMap<String,String> objektumban vannak, ahol a key a változónév csupaszon, a value meg a helyettesítő érték.
Docx4j így kezelte, és nem akartam mindent újraírni.
Mindenesetre mind az IDE mind a java fellélegzett, hogy kiszedtem a Docx4j-t meg a függőségeit
private static void removeAllRuns(XWPFParagraph paragraph) {
int size = paragraph.getRuns().size();
for (int i = 0; i < size; i++) {
paragraph.removeRun(0);
}
}
private static void insertReplacementRuns(
XWPFParagraph paragraph, String replacedText,
String fontFamily, int fontSize)
{
String[] replacementTextSplitOnCarriageReturn = StringUtils.split(replacedText, "\n");
XWPFRun newRun = paragraph.insertNewRun(0);
newRun.setFontFamily(fontFamily);
newRun.setFontSize(fontSize);
String part = replacementTextSplitOnCarriageReturn[0];
newRun.setText(part,0);
for (int j = 1; j < replacementTextSplitOnCarriageReturn.length; j++) {
part = replacementTextSplitOnCarriageReturn[j];
newRun.addBreak();
newRun.setText(part);
}
}
public static void poiReplace(java.util.HashMap<String,String> hs, String in, String out) throws Exception
{
XWPFDocument doc = new XWPFDocument(new java.io.FileInputStream(in));
for (XWPFParagraph p : doc.getParagraphs()) {
String text = p.getText();
boolean change=false;
for ( String key : hs.keySet() ) {
if (text != null && text.contains("${"+key+"}")) {
text = text.replace("${"+key+"}", hs.get(key));
change=true;
System.out.println("\nx\n"+p.getText()+"\n"+key+"\n"+hs.get(key));
}
}
if(change){
List<XWPFRun> runs = p.getRuns();
if (runs != null) {
String ff=runs.get(0).getFontFamily();
int fs=runs.get(0).getFontSize();
removeAllRuns(p);
insertReplacementRuns(p,text,ff,fs);
}
}
}
for (XWPFTable tbl : doc.getTables()) {
for (XWPFTableRow row : tbl.getRows()) {
for (XWPFTableCell cell : row.getTableCells()) {
for (XWPFParagraph p : cell.getParagraphs()) {
String text = p.getText();
boolean change=false;
for ( String key : hs.keySet() ) {
if (text != null && text.contains("${"+key+"}")) {
text = text.replace("${"+key+"}", hs.get(key));
change=true;
}
}
if(change){
List<XWPFRun> runs = p.getRuns();
if (runs != null) {
String ff=runs.get(0).getFontFamily();
int fs=runs.get(0).getFontSize();
removeAllRuns(p);
insertReplacementRuns(p,text,ff,fs);
}
}
}
}
}
}
doc.write(new java.io.FileOutputStream(out));
doc.close();
}A poiReplace függvényt kell hívni, a másik kettőt meg a poiReplace hívogatja.
-
Aethelstone
addikt
válasz
E.Kaufmann
#10522
üzenetére
Hétfőn tudok majd

-
E.Kaufmann
veterán
válasz
E.Kaufmann
#10522
üzenetére
Na közben megszületett a tákolmány
![;]](//cdn.rios.hu/dl/s/v1.gif)
Állandóan nyafogott a docx4j, hogy nincs konfig ezért az alapértelmezettet tölti be, úgyhogy ezt is megoldottam egy csapással:public static void preInit(){
//preinit docx4j
// supress system.err
java.io.PrintStream _err = System.err;
try{
System.setErr(new java.io.PrintStream(new java.io.OutputStream() {
public void write(int b) {
}
}));
//preinit without file
WordprocessingMLPackage.load(new java.io.ByteArrayInputStream(new byte[0]));
}
catch(Exception e){}
//recover system.err
System.setErr(_err);
} -
Aethelstone
addikt
válasz
E.Kaufmann
#10519
üzenetére
Csinálj előbb egy template docx-et. Úgy szerintem gyorsabb lesz. Nyisd meg és abba írkálj. Vagy próbáld meg az apache poi-t, ha a stack-be belefér.
-
M_AND_Ms
veterán
válasz
E.Kaufmann
#10476
üzenetére
-
Taoharcos
aktív tag
válasz
E.Kaufmann
#10471
üzenetére
MySQL
-
M_AND_Ms
veterán
válasz
E.Kaufmann
#10466
üzenetére
Az informatikus az, aki 10 órát dolgozik azon, hogy megkönnyítse a 10 perces munkáját, hogy azt ezentúl fél perc alatt el tudja végezni (ez az én első fő tételem)
-
kutga
félisten
válasz
E.Kaufmann
#10444
üzenetére
Jó ötlet.
-
Szmeby
tag
válasz
E.Kaufmann
#10401
üzenetére
Vagy megragadod a farkánál a rekurziót.

Mondjuk pont nem tudom, hogy a jáva mit csinál vele, de a skála szereti. -
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.
-
M_AND_Ms
veterán
válasz
E.Kaufmann
#10401
üzenetére
Persze, feladata váltogatja a megoldást. Amúgy, meg nincs az a memóriaméret, ami ne lehetne hipp-hopp elfogyasztani
-
floatr
veterán
válasz
E.Kaufmann
#10385
üzenetére
Konfiguráció tárolására sokkal praktikusabb a JSON vagy a YAML. Az XML túl terjengős, nehezebben is olvasható, és a kapcsolódó libek és alkalmazásaik is nyögve nyelősek. Én az SAML-nél vágtam eret magamon.
Nyilván ha az a feladat, hogy XML-el kell dolgozni, akkor az ember befogja az orrát, nyel egy nagyot, és csinálja
De ha nem muszáj, akkor ne szívassad vele se magadat, se másokat. -
kispx
addikt
válasz
E.Kaufmann
#10387
üzenetére
XHTML volt az XML.
-
floatr
veterán
válasz
E.Kaufmann
#10383
üzenetére
Ezt az XML-es témát lassan ideje lenne elfelejteni. Hacsak nem megkötés, akkor inkább JSON
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- E-book olvasók
- VR topik (Oculus Rift, stb.)
- Milyen okostelefont vegyek?
- Intel Core Ultra 3, Core Ultra 5, Ultra 7, Ultra 9 "Arrow Lake" LGA 1851
- OLED TV topic
- Mibe tegyem a megtakarításaimat?
- ldave: New Game Blitz - 2025
- Milyen billentyűzetet vegyek?
- Robotporszívók
- Fejhallgató erősítő és DAC topik
- További aktív témák...
- iPhone 15 Pro MAX 256 GB, fekete, hivatalos garancia, 92% akku, tökéletes állapotban!
- újszerű iPhone 16 Pro Max 256GB natural titanium natúr titán független Apple garancia
- Precision 5560 15.6" FHD+ IPS i7-11850H RTX A2000 32GB 512GB NVMe ujjlolv IR kam gar
- 6-7 gen i5 T procik
- i5 12500/ RTX3060 12GB/ 32GB DDR4 alapú konfig/ garancia/ ingyen foxpost
- Microsoft Surface Pro // Surface // Surface laptop 10.gen i5, Ryzen // 12,5 13,5 15 //
- Új Razer 16 QHD+ OLED 240Hz i9-14900HX 24mag 32GB 2TB SSD Nvidia RTX 4090 16GB 175W Win11 Beszámítás
- 13-14" Új és használt laptopok , üzletitől a gamerig , kedvező áron. Garanciával !
- Telefon felvásárlás!! Samsung Galaxy A12/Samsung Galaxy A22/Samsung Galaxy A32/Samsung Galaxy A52
- Bomba ár! Lenovo ThinkBook 13s-IML - i5-10210U I 8GB I 256SSD I 13,3" FHD I Cam I W11 I Gari!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Elkezdtem nézni a "Masterclass"-t. Legelejétől, mert 5+ élve nem olvastam semmi kódot (és úgy látom kicsit más már kezdő szinten is, mint a C++).


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

