- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
- Projektor topic
- Amlogic S905, S912 processzoros készülékek
- Fejhallgató erősítő és DAC topik
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Akciókamerák
- A Linux megnégyszerezte magát a Steamen — a Microsoft ismét ígérget
- AMD vs. INTEL vs. NVIDIA
- AMD FX
- Kormányok / autós szimulátorok topikja
- Milyen billentyűzetet vegyek?
-
Fórumok
PROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Tabletek, E-bookok Nyomtatók, szkennerek PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
Új hozzászólás Aktív témák
-
E.Kaufmann
veterán
-
E.Kaufmann
veterán
Ahogy néztem, a Java 8 volt a nagyobb mérföldkő, olyan sok dolog nem történt a nyelvvel, inkább a motorháztető alatt.
Írd át valamelyik mostani programod Java-ra
. -
E.Kaufmann
veterán
Sziasztok! Segítséget szeretnék kérni:
Az alábbi esküvői honlap template-t letöltöttem, sikerült mindent módosítanom egyedül a visszaszámlálóval nem boldogulok, hogy az általam kívánt napra (2020.06.06) számoljon vissza.
Tudna valaki nekem segíteni?
Köszi!Ez biztos Java kérdés nem véletlen JavaScript? Nem kötekedésből, csak a helyes topikban hátha jobban segítenek.
-
E.Kaufmann
veterán
Van egy InputStream és van egy OutputStream. Közéjük lehetne-e úgy ékelni egy GZipOutputStream-et (és hogyan ), hogy egy nagy állományt ne kelljen először teljesen átpasszolni a gzippen, majd a kapott eredményt ne kelljen egy másik menetben átírni az OutputStream-re hanem egy menetben, ahogy a gzip egy blokkot tömörített, már küldje is a sima outputnak?
-
E.Kaufmann
veterán
Köszi! Biztos később az lesz, de addig is jó móka html generáló progit írni nulláról
, de még az se biztos, hogy a webes felület lesz a nyerő, ez csak egyike a megjelenítési formáknak, lehet, az lesz a vége, hogy egy egyszerűbb droidos felülethez kell majd egy primitív http konnektor. -
E.Kaufmann
veterán
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?
Nem használok, izomból csináltam
, amúgy én elégedett vagyok most a StringBuilderrel, csak ezért nem váltom le a JDK-t, csak érdekes volt, hogy nyers "+" operátorral és String-gel ennyire lomha volt. -
E.Kaufmann
veterán
-
E.Kaufmann
veterán
Van egy kisebb méretű állomány egy meghajtón (<1MByte), amit egy java program ütemezett időközönként beolvas csak olvasásra és szeretném ha nem akadna össze, ha épp szerkesztenék azt az állományt. Hogy érdemes ezt az állományt feldolgozni Java alatt? Gyorsan behúznám a memóriába egy másolatát, de még ezidő alatt is szeretném, ha szerkeszthető maradna az állomány. Hogy érdemes feldolgozni?
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 -
E.Kaufmann
veterán
Van egy kisebb méretű állomány egy meghajtón (<1MByte), amit egy java program ütemezett időközönként beolvas csak olvasásra és szeretném ha nem akadna össze, ha épp szerkesztenék azt az állományt. Hogy érdemes ezt az állományt feldolgozni Java alatt? Gyorsan behúznám a memóriába egy másolatát, de még ezidő alatt is szeretném, ha szerkeszthető maradna az állomány. Hogy érdemes feldolgozni?
-
E.Kaufmann
veterán
Ahogy nézem, a Maven-es feltételnek pont nem felel meg, de úgy is ismerkednem kellene vele és az új NetBeans is a Maven projekteket tette alapértelmezetté. Köszönöm.
-
E.Kaufmann
veterán
Na hogy ON.
Tud valaki ajánlani egyszerűbb NN "könyvtárat" egyszerűbb feladatokhoz, aminek nincs rahedli függősége, Maven nélkül is behúzható egy-két jar felcsatolásával és könnyű tanítani is? -
E.Kaufmann
veterán
Én a következőket láttam: SAP-B1, Vectory, IBSystem/Infosys, nézegetek most egy negyediket. Van egy darab közös adatbázis mögöttük egy rahedli táblázattal. Vannak ugyan programmmodulok, de azok nem közvetlen egymással, hanem az adatbázissal beszélgetnek.
Ha meg van egy tényleg külön modul, ami pl a vonalkódos rendszerért felelős vagy a gyártás rögzítéséért, akkor az külön fájdalom a hátsóba, ha saját adatbázisába ír, mert tuti nem tudják megoldani tisztességesen a két adatbázis közötti kommunikációt. (legalább is sok rossz példát láttam sajnos, főleg akkor problémás ha más az ERP és a vonalkódos rendszer szállítója, valamint egy közismert magyar Bérszámfejtő "fűszerrel" is sok gond van összepasszintani teljes mértékben ERP-vel, már ha nem kézzel akarunk adatokat importálni/exportálni)Én ezt az ábrát néztem microservice-re, de lehet nem jó:

vannak kisebb szolgáltatások, melyek egy részét többen is elérik közvetlenül, másokat több másik szolgáltatás is buzgerál egyszerre.10598: értem, hogy egy közepesnél nagyobb cégnél már gond a skálázhatóság miatt, de kis cégeknél inkább plusz kín ez a szemlélet. Tudom, ők menjenek a felhőbe ERP-zni

-
E.Kaufmann
veterán
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.Jájjjj, még egy technobullshit. Mint annó a web 2.0.
Az ábrákat elnézve nem egy nagy közös adatbázis van, hanem több kicsi , adott részterületenként egy, de ugyanúgy egy részterületet egyszerre többen is elérhetnek és el is kell érniük, szóval a lényeg ugyanaz szvsz, pláne az eredeti kérdés szempontjából.
Ez max az ERP rugalmasságát biztosítja. -
E.Kaufmann
veterán
Miert kene, hogy legyen? Ha tobb alkalmazas irja ugyanazt az adatbazist, az a kaosz fele vezeto ut egyik elso lepcsofoka. Jo persze csak ha ket alkalmazas irja tenyleg, s szigoruan az egyik tablat csak az egyik irhatja, a masikat meg csak a masik, akkor nem lesz gond, de a db nem erre valo. Meg kell oldanod, hogy rajojj mikor jott uj uzenet, olvastak-e az uzenetet, feldolgoztak-e, stb. Onnantol kezdve, hogy ez nem igaz, baj lesz, mert nem lehet tudni ki mifele adatert felelos. Van-e erosebb kutya, vagy mero veletlen ki lesz a source of truth. Meg lehet persze history tablakba bevezetni oszlopot, hogy ki az iro alkalmazas/processz egy adathoz de elegge nyakatekert lesz. En hasznalnek socketet, vagy valamilyen felette levo absztrakciot. Vagy rmi-t. Vagy ha nagy megoldas kell, akkor Kafka, vagy Jms. Vagy persze elhangzott ezer, meg ezer Api, amit amugy tok egyszeru kezelni, pl. Soap, Rest, s kifejezetten erre valok.
Ha tobb alkalmazas irja ugyanazt az adatbazist, az a kaosz fele vezeto ut egyik elso lepcsofoka
Pedig a legtöbb ERP így működik
-
E.Kaufmann
veterán
Szerintem ez itt még kicsit korai. A közös adatbázis meg szerintem erős antipattern a legtöbb esetben

Viszont működik és naplózhatóvá válhatnak a kommunikációk, amivel pl könnyebben visszaállítható egy előző állapot, valamint ha kettőnél több fél vesz részt a kommunikációban, akkor a konkurencia kezelés is könnyebb adatbázissal. Persze lehet, hogy adott feladathoz ágyúval verébre.
-
E.Kaufmann
veterán
Sziasztok,
A segítségeteket gondoltam kérni az alábbi kérdésekben.
Hogyan tud 2 applikáció adatot küldeni egymásnak akkor, ha egy gépen futnak és akkor is, ha nem?
Például, ha külön gépen vannak, akkor a TCP/IP protokoll jut eszembe.
A lehető legegyszerűbb megoldásokat próbálnám megtalálni.Köszönöm.
Én most olyat csináltam, hogy fogtam egy objektumot, serializáltam, gzippeltem, majd base64-be kódoltam (egyesek szerint felesleges az utóbbi, de biztos ami biztos és a gzip is csak a base64 kódolásból eredő méretnövekedés kompenzálására került be) és http-n át nyomattam.
Ha guglizol, megtalálod, hogy az első három művelet megoldható 1-1 sorból és van java alatt egyszerű http szerver és kliens is, ha nem a biztonság hanem a gyakorlás vagy a gyors elkészítés a fő szempont.
A http kérésbe beágyazhatsz paramétert, ami alapján tudja a szervered, hogy mit is kérsz tőle, az alapján megképzed az objektumot és a fentebb sorolt műveletekkel elküldöd válaszként a kliensnek, a kliens meg elvégzi az ellentétes műveleteket.De más módok is létezhetnek és én is kíváncsi vagyok, ki mit ajánl. Én azért a HTTP-t választottam, mert kellett egy táblázat emberi formában olvasható módon és kliens programmal elérhetően is és egyszerűbb volt egy protokollal megoldani.
-
E.Kaufmann
veterán
Üdv. HTTP szervert próbálok írni gyakorlásként. Chrome-nak van egy preload funkciója ami nyit egy plusz socketet amit gyakorlatilag csak parkoltat esetleges későbbi tartalmak párhuzamos letöltésére.
A socket stream-jéből nem lehet olvasni így csak feleslegesen foglal egy szálat timeout-ig.
Van valami jó módszer arra hogy ezeket meg tudjam különböztetni egy valós http kéréstől ami valamilyen hiba miatt nem tudott írni a streamre?annyira gond az a plusz szál technikai okokból? Nem lehet simán nem foglalkozni vele?
-
E.Kaufmann
veterán
(#10552) Zsoxx és (#10551) E.Kaufmann
Köszi a válaszokat! A további kérdéseimet a Programozás topikban teszem fel inkább.
Miért? Megsértettünk?
![;]](//cdn.rios.hu/dl/s/v1.gif)
-
E.Kaufmann
veterán
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.

Itt a fórumon eddig öten is ajánlották a Udemy-t, nekik is szólj már légyszi, köszönöm.
-
E.Kaufmann
veterán
Sziasztok!
Java programozást tanulni hol éri meg elkezdeni? Főiskolán és egyetemen kívül, munka mellett, teljesen az alapoktól, egészen mást tanultam és mással foglalkozom jelenleg.
Én nem mondom magamat profi Java-snak, de eddig munkahelyen, ami feladatot rendesen körül tudtak írni és voltak is hozzá adatok, azt mind megoldottam.
Ha már van valamennyi alapod (tudsz bohóckodni listákkal, tömbökkel, stringekkel és az IO alrendszerből is láttál pár példát), keress egy olyan feladatot, ami érdekes is de nem túl nagyszabású és próbáld megcsinálni, menet közben úgy is egy halmot kell majd gugliznod, ki kell próbálnod különféle utakat és ragad az emberre. Szerintem annál nincs jobb, ha apróbb sikerélményei vannak az embernek és látja, hogy halad, még ha nem is alkot szép és biztonságos kódot (tudom, Java a többségét elintézi a dolgoknak, de nem is a memóriafoglalásra gondoltam, hanem pl egy olyan hálózatos alkalmazásra, ami otthon jól működik, de a neten kapásból szétkapnák)
Én akkor ugrottam szintet saját érzésre, mikor egy ismerősnek kezdtem maszekolni. Igaz végül nem lett belőle semmi, mert pénzügyi dolgon összevesztünk.
Volt nálam pár tanuló gyakorlaton, egyiküknek kiadtam (bár lényegében közösen csináltuk) egy duplikált fájlkereső alkalmazást. Nem nagy feladat, de újoncnak pl annál nagyobb móka.Egyébként mostanában a Udemy fizetős tananyagait ajánlják, ha mindenáron tananyagként szeretnéd tanulni, vagy kellenek az alapok.
Ja és minimális angol sem árt, de nem kell irodalmi szint. Szakszavak meg pár ige ismerete

-
E.Kaufmann
veterán
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.
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

Na mindegy, eddig müxeni látszik a B megoldás, csak próbáltam a 8.0-ásról 8.1.1-re frissíteni a docx4j-t, de elrontja a docx-et, szóközöket von egybe. Úgyhogy visszaálltam 8-ra.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.
-
E.Kaufmann
veterán
Hétfőn tudok majd


Na mindegy, eddig müxeni látszik a B megoldás, csak próbáltam a 8.0-ásról 8.1.1-re frissíteni a docx4j-t, de elrontja a docx-et, szóközöket von egybe. Úgyhogy visszaálltam 8-ra. -
E.Kaufmann
veterán
Hétfőn tudok majd


Csak jobb lenne patkolás nélkül. Várom. -
E.Kaufmann
veterán
Szia! Köszönöm a választ, POI-t használom az XLSX-ekhez, de nem találtam működő példát docx-hez. Nem tudnál egy linket dobni egy egyszerűbb docx kitöltésről POI-val?
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);
} -
E.Kaufmann
veterán
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.
Szia! Köszönöm a választ, POI-t használom az XLSX-ekhez, de nem találtam működő példát docx-hez. Nem tudnál egy linket dobni egy egyszerűbb docx kitöltésről POI-val?
-
E.Kaufmann
veterán
Ha már így összejöttek itt a szakik egy kérdés.
Használom a docx4j projektet egyszerűbb docx doksik generálásához mintából. Projekt oldala: [link]Ha valaki esetleg használja, meg tudná mondani, hogy az első doksi generálása miért olyan hosszú?
Látszólag megfagy az ezt használó projekt az indításától számított első variableReplace() hívásnál 5 mp-re, de újabb doksik generálása már pikk-pakk megy. Kínomban már inkább indításkor generálok valami kamu doksit. -
E.Kaufmann
veterán
Gondolom levágja az elejét és csak az utolsó bájtot tartja meg (na ez megint jó kérdés, hogy a jvm milyen sorrendben tárolja a bájtokat és meg nem mondom). Ha a végét vágná le, akkor nem váltana előjelet, legalább is ha elől (bocs a pontatlanságért, talán "most significant bit"-nek lehetne nevezni, balról az első
) van az előjelbit.
Majd ha ráér egy okos, írja le mert én is kíváncsi vok
-
E.Kaufmann
veterán
-
E.Kaufmann
veterán
-
E.Kaufmann
veterán
Informatikusnak hogy a piklibe ne kéne programozás? Még egy rendszergazdának is. Már csak azért is, hogy saját dolgodat megkönnyítsd. Igaz én a Java-t kalapácsnak használom és mindent azzal püfölök, olyat is amit pl PS-sel, bash-sal vagy más eszközzel lenne érdemes, de csináltam már java-s reboot programot kínai telefonközponthoz, amit ha nem indítottunk újra naponta, a hívások nem mentek. Betelnetelt rá és kiadta a parancsot. Debian alatt futott cron-ból. Tudom, hogy lehettek volna elegánsabb megvalósításai, de működött. Ugyanígy a régi ERP nem volt képes ütemezett üzeneteket küdeni, egy java-s programocska lekérdezett valamit SQL-lel JDBC-n át és ha kellett, küldött SMTP-n át levelet.
Volt hogy rámlőcsöltek adatrögzítést, csináltam hozzá az ERP által kínáltnál ezerszer kényelmesebb felviteli felületet és onnan nyomtam be az adatokat az ERP-be, ami szintén nem ajánlott, de soha semmi gondot nem okozott.Én imádom a Java-t, mert mindent meg tudok benne csinálni, még ha tudom is, hogy nem kellene mindent benne.
Az a lényeg, hogy egyszerűbb scriptek és programozási ismeretek nélkül a rendszergizda kartalan órás (direkt hagytam le az i-t). -
E.Kaufmann
veterán
Olyant is csinálhatsz amúgy, hogy egy stringbe betolod az összes magánhangzót, és indexOf metódussal ránézel. Ha optimalizálni akarod, akkor sorba rendezett karakterekkel logaritmikus kereséssel is mehet

Amúgy meg:
String text = ...; // a beolvasott cucc
long vowelCount = text.toLowerCase()
.chars()
.filter(c -> "aáeéiíoóöőuúüű".indexOf((char) c) != -1)
.count();

-
E.Kaufmann
veterán
Én a bekért szöveget előbb pl toLowerCase()-vel kisbetűsíteném és utána már kevesebb feltétel kell. Én legalább is, ha nem számít a kis/nagybetű, akkor a biztonság kedvéért mindent tolowerezek (meg trimmelek).
-
E.Kaufmann
veterán
Jaja, fa struktúrájú adatok bejárásánál tud jól jönni, ugyanakkor túl kiterjedt szerkezeteknél nem biztos, hogy jó ötlet, marha sok memóriát fel tud emészteni, valamint egzotikus memóriahibákat dobhat a jvm, még ha a gépben van is elég memória, csak épp a programverem, vagy minek hívják, túlcsordul: [link]
Érdemes ciklusokra visszavezetni a megoldást rekurzió helyett. -
E.Kaufmann
veterán
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.Jópár éve megírtam egy osztályt, azóta azt használom az ilyen amatőr projektjeimhez, nekem nem szívás a konfigot XML-ben tárolni. Nagyobb szívatás, hogy a srác kukázhatta a cuccát és azóta vagy meghúzták, vagy valakit felbérelt (és meghúzták
). -
E.Kaufmann
veterán
-
E.Kaufmann
veterán
-
E.Kaufmann
veterán
Üdv!
JavaFX projektet kellett elkészítenem egyetemi beadandó feladatnak.
Egy telefonkönyv alkalmazást csináltam, ami kontaktokat tárol.
A kontaktok tárolásáról Apache Derby adatbázis gondoskodik, amivel az a gond hogy JDBC-t használ.
Mint utólag kiderült csak JPA-t lehet használni vagy JSON/XML-ben tárolni az adatokat.
Vasárnapig kaptam haladékot, de nagyjából képtelen vagyok addig megoldani.
Szóval ha valaki sos tudna segíteni nekem, természetesen nem ingyen, akkor jelentkezzen kérem és privátban megbeszéljük a dolgot.
Nem hinném, hogy túl nagy feladat lenne annak aki ért hozzá.
Mert összvissz van egy TableView 3 oszloppal és ezeket kellene eltárolni mondjuk JSON-ben, mert az tűnik az opciók közül a legegyszerűbbnek. Csak én még sohasem találkoztam vele és az idő szűke miatt nincs lehetőség a sikertelen próbálkozásokra.Én is inkább SQL párti vagyok, de pölö ez alapján nem akkora wasistdas egyszerű objektumok adat benyomni XML-be, de gondolom a kiolvasás se nehezebb: [link]
Nem tudom,mik a megkötések, én kezdéskor simán beolvasnám ArrayList-be a már létező adatokat, azt olvasnám/bővítgetném/módosítgatnám, szükség esetén meg a változásokat vagy akár az egészet visszaírnám. Ha nagyon szőrszálhasogató a tanárod, amúgy is biztos találhat valamit, amibe beleköthet, ha akar, ha meg nem, akkor szvsz az XML a legegyszerűbb út számodra.
Új hozzászólás Aktív témák
-
Fórumok
PROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Tabletek, E-bookok Nyomtatók, szkennerek PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Diablo II: Classic és Resurrected
- Genshin Impact (PC, PS4, Android, iOS)
- Poco F8 Ultra – forrónaci
- A fociról könnyedén, egy baráti társaságban
- Milyen légkondit a lakásba?
- Projektor topic
- Eredeti játékok OFF topik
- Motoros topic
- Amlogic S905, S912 processzoros készülékek
- Fejhallgató erősítő és DAC topik
- További aktív témák...
- BESZÁMÍTÁS! Apple Mac Mini 2023 M2 8GB 512GB számítógép garanciával, hibátlan működéssel
- Apple iPhone 13 128GB, Kártyafüggetlen, 1 Év Garanciával
- Apple iPhone SE 2022 64GB, Kártyafüggetlen, 1 Év Garanciával
- ÚJRA! 256GB NVMe SSD, 1 év gar - 2230 méret
- 27% - Erazer P20 GAMER PC! i7-14700F / RTX 4070 / 16GB DDR5 / 1TB NVMe / B760
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


)
.
, amúgy én elégedett vagyok most a StringBuilderrel, csak ezért nem váltom le a JDK-t, csak érdekes volt, hogy nyers "+" operátorral és String-gel ennyire lomha volt.







