- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
- Hat év támogatást csomagolt fém házba a OnePlus Nord 4
- Feltalálta a Google a keresőmotort
- Huawei Watch Fit 5 Pro - jó forma
- Samsung Galaxy Watch8 és Watch8 Classic – lelkes hiperaktivitás
- Apple Watch
- Yettel topik
- Android alkalmazások - szoftver kibeszélő topik
- Poco F8 Ultra – forrónaci
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Huawei Watch Fit 3 - zöldalma
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - 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! 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
-
TBG
senior tag
(#4235) Karma : Ezt jó tudni. Kösz.
(#4236) Superhun : Oké, de amíg a másik String referencia nélkül ott kallódik memóriában valahol addig egy másik területen újabb memória kerül lefoglalásra az új String esetében. A StringBuilder-nél pedig marad ahol van. Ha szükséges bővíti, ha nem akkor marad amennyi volt. Ez valahogy takarékosabbnak tűnik nekem...Rosszul gondolom?
Ez csak abban az esetben jelenthet gondot, ha több tízezres/százezres nagyságrendben "kallódnak" az objektumok. Ergó, a felhasználástól is függ, hogy az ember hogyan hegyezi ki a kódot. Illetve érdemes-e nagyon kihegyzeni. Mindenesetre ökölszabály, hogy ha tökmind1, akkor is a szebb, takarékosabb megoldást használjuk.
-
TBG
senior tag
Ah, hogyne vágnám. A Jetty-s megoldás esetében IS csak a szerver oldali kód fut a Jetty-n. Mi a kérdés?
-
TBG
senior tag
-
TBG
senior tag
-
TBG
senior tag
-
TBG
senior tag
Itt a server.xml, illetve a catalina.out
WARNING: An attempt was made to authenticate the locked user "david"
Belockolt az usered.
-
TBG
senior tag
Sziasztok!
Jávába szeretnék egy olyan alkalmazást írni, ami Linux / Mac szerűen kezeli a képernyőmentéseket. A koncepció, hogy a háttérben fut - óra mellet csücsül - és a "Print Screen" lenyomására a beállított helyre elmenti a képet, majd egy buborék üzenetet dob. Cél platform Win.
Nem vagyok biztos / tudom:
- Megvalósítható a "Print Screen" elkapása ha az alkalmazás a háttérben fut? És hogyan (hogyan kezdjek neki)?
- Buborék üzenet dobására képes a Jáva? (Windows 8)
Köszi!

mobal,
Pl.
https://code.google.com/p/jnativehook/
https://code.google.com/p/jintellitype/ -
TBG
senior tag
Ah, annyira rühellem, hogy harapófogóval kell kihúzni belőled mindent.
Tisztázzuk, olyan Java kód nincs, ami a megakadályozza, hogy kihúzzák a pendrive-ot. Azt tudod csinálni, ahogy korábban is mondtam, hogy az /mnt/pendrive könyvtárat csekkolod...ha már nem létezik, akkor le van választva....És ha a mentési processz még nem futott le, de a meghajtó le van választva ( nincs meg a könyvtár, nem tudsz rá írni, stb) akkor egy hibát dobsz. Ennyi.
-
TBG
senior tag
De ez egy folyamatosan futó szerver. Amihez odasétálnak rádugnak egy pendrive-ot, majd utána lehúzzák. Ezért kellene a programból megoldani a mountot és az umountot.
SZERK: Nem rendesen csatolja le néha, és olyankor lehúzza az éppen mentő kolléga és az eléggé nem tesz neki jót.
A következő kód lehet, hogy rossz:
java.lang.Runtime runtime = java.lang.Runtime.getRuntime();
java.lang.Process process= runtime.exec("sudo umount /mnt/pendrive");
process.waitFor();Ah, annyira rühellem, hogy harapófogóval kell kihúzni belőled mindent.
Tisztázzuk, olyan Java kód nincs, ami a megakadályozza, hogy kihúzzák a pendrive-ot. Azt tudod csinálni, ahogy korábban is mondtam, hogy az /mnt/pendrive könyvtárat csekkolod...ha már nem létezik, akkor le van választva.... -
TBG
senior tag
De ez egy folyamatosan futó szerver. Amihez odasétálnak rádugnak egy pendrive-ot, majd utána lehúzzák. Ezért kellene a programból megoldani a mountot és az umountot.
SZERK: Nem rendesen csatolja le néha, és olyankor lehúzza az éppen mentő kolléga és az eléggé nem tesz neki jót.
A következő kód lehet, hogy rossz:
java.lang.Runtime runtime = java.lang.Runtime.getRuntime();
java.lang.Process process= runtime.exec("sudo umount /mnt/pendrive");
process.waitFor();Jó. Akkor kanyarodjunk vissza. Mit értettél az alatt, hogy nem mindig sIkerül?
-
TBG
senior tag
-
TBG
senior tag
-
TBG
senior tag
-
TBG
senior tag
Amellett hogy se a GC-re, se a teljesítményre nincs hatással, még csak nem is best practice.
Legalábbis vannak ellentétes nézetek, amik szintén best practice-nek gondolják hogy a változódeklaráció a lehető legközelebbi scope-ban legyen a felhasználáshoz. Én mondjuk pont az utóbbit vallom.
Hatása elméletben sincs, mert a stream objektum ugyanakkor veszíti el a hard referenciáját mindkét esetben, ergo a GC semmi különbséget nem lát. De a gyakorlatban se, mert a JVM a metódusba belépéskor foglal le minden stack változót a scope-tól függetlenül, azaz a bytecode ugyanaz lesz.
Épp csak fordításidőben szennyezettebb a lokális névtér.
Utánanéztem és igazad van. Korábban, talán még az 1.3-as, 1.4-es Java környékén igaz lehetett, amit írtam, de most már nem. Ma is tanultam valamit

-
TBG
senior tag
Semmi vitám nincs veled, csak csodálkoztam, hogy mire gondolsz, és azért kötöttem bele mert érdekel ez az "altéma".

A bytebuffer tömböt tényleg ki lehetne szedni, az úgyis mindig felülíródik, felesleges mindig létrehozni.
A finally is teljesen jogos, de itt valszeg nem ez lesz a probléma, mindenesetre érdemes ezt a konvenciót követni. Vagy ha van Java 7-re lehetőség, akkor még jobb a try-with-resources blokk.Nem tudom mennyi fájlról van szó és mekkora méretről, érdemes kipróbálni másik OS-n is, egyébként érdekes a probléma, mert kvázi triviális dologról van szó, ami ráadásul rohadtul gyakori művelet is.
Ami még most eszembe jutott, hogy meg kéne próbálni NIO2 fájlmásolással, lehet, hogy segít rajta, és a kód is rohadtul leegyszerűsödik. Persze ez is csak Java 7-el.
Azért is írtam, hogy tipp, mivel magam sem számítottam gyökeres változásra, de cserébe írtam még pár lehetőséget
Egyébként továbbra is az a véleményem, hogy már design szempontjából célszerűbb loopon kívül deklarálni ebben az esetben a streameket. 
-
TBG
senior tag
Lehet, hogy Linuxot használ..vagy OSX-et, netán BSD-t...előbb ezt kellene kideríteni.
-
TBG
senior tag
Mégis hogyan számíthat? Nagyon érdekelne, amikor pont ugyanannyi objektum jön ugyanott létre.
Nem az objektumok számáról van szó, hanem arról, hogy ezek mikor, milyen intenzitással gc-ződnek. Ezért is vetettem fel, hogy mekkora is az a heap méret. Te csak egyetlen felvetésembe kötöttél bele, ami jogos is lehet, de mi van a többivel? Vagy említhetném az esetleges os szintű problémákat is. Nem egymással van vitánk, a problémát próbáljuk megoldani, nem?
-
TBG
senior tag
Ez semmiben sem segíti jobban a GC-t, mintha a cikluson belül deklarálnád a változót. Így is, úgy is ugyanannyi új objektum születik, az, hogy létre kell hozni egy új pointert vagy sem miden iteráció alatt, nem sokat vesz a latba.
Primitíveknél igen, de összetett objektumoknál már számíthat. Főleg, hogy fájl írás/olvasás is van. Mekkora heap van beállítva? Jó lenne tudni, hogy mennyi fájlról van szó. És a buffered streamek használata sem lenne rossz.
-
TBG
senior tag
Mondjuk. Ez a best practice, nem a cikluson belüli. Pár objektumnál mindegy, de egy fájlrendszerben akár több ezer fájl is lehet. Itt már számít.
-
TBG
senior tag
Próbáld meg a cikluson kívül deklarálni a stream-eket..tipp...
Annak nem lenne sok értelme, hiszen a ciklusban pont hogy különböző fájlokat másol különböző desztinációkra, nem mindig ugyanazt, gondolom.
Arra gondoltam, hogy csak egyszer deklarálja a streameket és csak új példányt rendel hozzá. GC szempontjából szvsz nagyon nem mindegy. Ha sok fájl van, az qrva sok objektum. A különféle desztinációk nem sérülnek. Kódot nem írok, mobilról körülményesebb

-
TBG
senior tag
Akkor pedig az a gyanúm, hogy fut a gc a sok objektum miatt és ezért nem látsz memória növekedést. Próbáld meg a cikluson kívül deklarálni a stream-eket..tipp...esetleg nézhetnéd, hogy a fájlműveletek hogyan alakulnak OS szinten. Lehet, hogy az OS-ben torlódnak a másolási műveletek.
-
TBG
senior tag
Köszi mindenkinek, valóban az volt a probléma.

Viszont most az elején szépen elindul a másolás, majd a végére belassul. Nem kellene valami buffert üríteni? Vagy valami amitől gyorsabb lenne?
if (!dest.exists()) {
atmasoltFajlok++;
//if file, then copy it
//Use bytes stream to support all file types
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dest);
byte[] bufferPDF = new byte[1024 * 4];
int length;
//copy the file content in bytes
while ((length = in.read(bufferPDF)) > 0) {
out.write(bufferPDF, 0, length);
}
in.close();
out.close();
}Plusz utána másolok még más fájlokat, azok is sokkal lassabbak lesznek...
Ha van lehetőséged, akkor szerintem ezzel próbáld: http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html
-
TBG
senior tag
-
TBG
senior tag
És az ebben az egészben a gáz, hogy ezeket az infókat a google segítségével magad is össze tudnád gyűjteni.
-
TBG
senior tag
Tesztre DEBUG szinten szoktunk logolni.
Próbáld ki DEBUG-gal. Nincs kizárva, hogy ez az appender egyáltalán nem logol INFO-ban. Láttam már ilyet. A 4.x-es JBoss egy csomó ERROR logot csak DEBUG-ban volt hajlandó logolni. Ergó, a kedves feljlesztők a try catch ág catch bejegyzéseibe nem ERROR, hanem DEBUG logot tettek... -
TBG
senior tag
igen
log4j.rootLogger=DEBUG, stdout, file, mail
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{HH:mm:ss} %-5p [%t]: %m%n
log4j.appender.stdout.Threshold=TRACE
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=F:\\logging.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.appender.file.Threshold=INFO
log4j.appender.mail=org.apache.log4j.net.SMTPAppender
log4j.appender.mail.BufferSize=1
log4j.appender.mail.SMTPHost=smtp.gmail.com
log4j.appender.mail.SMTPUsername=#####################
log4j.appender.mail.SMTPPassword=XXXXXXXXXXXXXXXXXXXXXX
log4j.appender.mail.SMTPPort=465
log4j.appender.mail.SMTPProtocol=smtps
log4j.appender.mail.From=##########################
log4j.appender.mail.To=##########################
log4j.appender.mail.Subject=Hiba
log4j.appender.mail.layout=org.apache.log4j.PatternLayout
log4j.appender.mail.layout.ConversionPattern=%d{HH:mm:ss} %-5p [%t]: %m%n
log4j.appender.mail.Threshold=INFOA google a fejlesztő barátja.
http://stackoverflow.com/questions/6242838/log4j-failing-to-send-an-email-when-logging-an-error
-
TBG
senior tag
Be tudnád másolni a log4j beállításaid? Password nem kell

-
TBG
senior tag
-
TBG
senior tag
NetBeans-t használok az az alapból futtatható Jart készít, de még ha nem is így volna akkor is a Windows úgy írja h Executable Jar File. Egyébként nincs hibaüzenet csak simán nem történik semmi.
manifest-ben mi van?
-
TBG
senior tag
Üdv, van valami ötletetek hogy miért van az hogy egy program ami az IDE-böl "tökéletesen" futtatható a jar fájlra kattintva nem indul el?
És még az is kérdés, hogy milyen hibával nem futtatja?
-
TBG
senior tag
Persze, azért írtam, hogy lehetséges és nem ultimate

-
TBG
senior tag
Még egy lehetséges megoldás. Kiterjeszted a JTextField-et és adsz neki valami ID-t. Aztán ezen ID alapján hasonlítgatod.
-
TBG
senior tag
-
TBG
senior tag
-
TBG
senior tag
-
TBG
senior tag
Ezt a témát pár száz hsz-sal korábban már végigjártuk, és én még mindig tartom magam ahhoz, hogy osztályon belül nyugodtan lehet konkrét implementációt deklarálni pl.: ArrayList<T>. Azért van ennyiféle implementáció, mert mindegyik másra jó. Semmi haszna nem lenne, ha az ember nem tudná kihasználni a lehetőségeit.
Ugyanakkor a burkoló osztálynak nem szabad visszaadnia konkrét List<T> implementációt. ahhoz nagyon jó ok kell.
Idézek a saját hozzászólásomból:
Nyilvánvalóan nem hiba az ArrayList<?> deklaráció, de a statikus típus interfészként deklarálása good practice. Az implementáció egyszerű változtathatósága miatt. Nem is az osztályváltozókban van komolyabb jelentősége, hanem a getter/setter metódusoknál.
És még valami. Amíg magadnak vagy egy kvázi zárt csapatban dolgozol, addig nincs ezzel gond. Amint pl. API-t kezdesz írni, akkor csak interface. És a doksiban kell leírni a runtime típust.
-
TBG
senior tag
-
TBG
senior tag
Jó, erre van workaround

List<String> list = new ArrayList<String>();
((ArrayList<String>) list).ensureCapacity(20); -
TBG
senior tag
-
TBG
senior tag
List<?> vagy ArrayList<?>
Nyilvánvalóan nem hiba az ArrayList<?> deklaráció, de a statikus típus interfészként deklarálása good practice. Az implementáció egyszerű változtathatósága miatt. Nem is az osztályváltozókban van komolyabb jelentősége, hanem a getter/setter metódusoknál.
Nyilván vannak olyan kivételes esetek, amikor konkrét implementációt kell használni, pl. GWT szerializáció, amikor is nem minden List implementáció szerializálható, hanem csak egyes, konkrét implementációk.
-
TBG
senior tag
Köszönöm a sok tanácsot, sok hasznos instrukciót kaptam.
Végül az alább látható containsUser-el oldottam meg a feladatot. Mi a véleményetek a megoldásról?package com.corejsf;
import java.io.Serializable;
import java.util.*;
import javax.faces.bean.*;
@ManagedBean(name="userbean")
@SessionScoped
public class UserBean implements Serializable{
private String name;
private String password;
private String userListToString;
private static ArrayList userList = new ArrayList();
private User user;
public String addUser(){
user = new User(name, password);
userList.add(user);
userListToString = userList.toString();
if(containsUser(userList, user)){
return "thankYou";
}
else {
return "loginFail";
}
}
public boolean containsUser(ArrayList<User> userList, User user){
boolean isContainsUser = false;
for(int i = 0 ; i < userList.size(); i++ ){
if(userList.get(i).getName().equals(user.getName())&&userList.get(i).getPassword().equals(user.getPassword())) {
isContainsUser = true;
}
}
return isContainsUser;
}
public String loginUser(){
user = new User(name, password);
userListToString = userList.toString();
if(containsUser(userList, user)){
return "thankYou";
}
else{
return "loginFail";
}
}
public String getUserListToString() {
return userListToString;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}A JSF-el ismerkedem, csak közben gondoltam, egy kis kitérőt teszek az ArrayList irányába. Természetesen később nyilván egy adatbázis a végső megoldás. De egyszerre kezdőként nem akarok több dolgot is csinálni.
Plusz:
private static ArrayList userList = new ArrayList();
helyett:
private static List userList = new ArrayList();
-
TBG
senior tag
Egy GUI-adatbazis kezelo turtorial szerint mentem ... a program lefut,mukodik csak egy bajom van vele. Ha uj sort akarok berakni az adatbazisba es miutan beraktam az uj elemet es elmentem lefagy a progi,nem tudok vissza menni,hogy ide - oda ugraljak az adatbazis elemei kozott.
Ha lezarom az X el a programot es ujbol elinditom akkor az uj elem ott van.Hogyan lehetne megoldani,hogy ne fagyon le a progi es vissza ugorjon oda,ahol mutassa az elemeket a textfield.
a program kod a save button -hoz:
TURTORIAL forras:
http://www.homeandlearn.co.uk/java/save_a_new_record.htmla program kod a save button -hoz:
http://pastie.org/7915215Tehát. Itt ez a remek kód.
try {
rs.moveToInsertRow();
rs.updateInt("ID", newID);
rs.updateString("First_Name", first);
rs.updateString("Last_Name", last);
rs.updateString("Job_Title", job);
rs.insertRow();
stmt.close();
rs.close();
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String sql = "SELECT * FROM Workers";
rs = stmt.executeQuery(sql);Ehelyett inkább: (nem teljes és nem is ismerem a táblastruktúrát)
String insertSql = "INSERT INTO Workers(id,firstname) VALUES("+newID+","'"+firs+"'");
stmt.executeUpdate(insertSql); -
TBG
senior tag
Egy GUI-adatbazis kezelo turtorial szerint mentem ... a program lefut,mukodik csak egy bajom van vele. Ha uj sort akarok berakni az adatbazisba es miutan beraktam az uj elemet es elmentem lefagy a progi,nem tudok vissza menni,hogy ide - oda ugraljak az adatbazis elemei kozott.
Ha lezarom az X el a programot es ujbol elinditom akkor az uj elem ott van.Hogyan lehetne megoldani,hogy ne fagyon le a progi es vissza ugorjon oda,ahol mutassa az elemeket a textfield.
a program kod a save button -hoz:
TURTORIAL forras:
http://www.homeandlearn.co.uk/java/save_a_new_record.htmla program kod a save button -hoz:
http://pastie.org/7915215Az új sor hozzáadáshoz inkább az insert sql direktívát használd!
-
TBG
senior tag
-
TBG
senior tag
Sziasztok
Nagyon alap kérdés következik

Van egy osztályom
AppPanel.java ami egy JPanel-ből származik.public AppPanel(Client client) {
this.client = client;
welcomeForm = new WelcomeForm();
contentForm = new ContentForm(this.client);
profileForm = new ProfileForm(this.client);
}Mindjárt visszatérek a fentire, de előtte:
- az AppPanel ami egy panel három részre van osztva, szemléltetésképp header, content, footer, mindhárom egy másik JPanel.Az AppPanel konstruktorában példányosítok 3 panelt amik a content szerepét töltik majd be. (welcomeForm, contentForm, profileForm).
A kérdés: az egyes panelekben, például a profileForm-ban szükségem lenne az AppPanel objektumára, hogy be tudjam zárni magát a Panelt, és másikat töltsek be a contentbe.
Jelenleg úgy néz ki az alkalmazás, hogy alaból a contentben a WelcomeForm van, majd ha belépek akkor azt lecserélem a contentForm-ra, illetve ha belépek a profilba akkor a profileForm töltődik be. Ha belépek a profilba, akkor ki szeretnék lépni onna, és azt szeretném, ha újra a contentForm lenne a contentben.
Ti ezt hogy csinálnátok meg? üdv
megj: a contentet jelenleg ugy cserélgetem, hogy a headerben vannak gombok (bejelntkezés -> lecseréli a welcomeForm-ot contentForm-ra, profil -> lecseréli a contentForm-ot profilForm-ra, de ha belépek a profilba, akkor jelenleg nincs gomb arra hogy visszalépjek, ezt a bezár gombot magában a panelben szeretném implementálni, nem a headerben.)
Szia!
Van egyszerű, ronda és bonyolultabb, szebb megoldás.
1. Egyszerű, ronda.
Az AppPanel osztályt átadod a *Form-oknak konstruktorban.2. Bonyolultabb, szebb
Csinálsz egy Listener interface-t, amit az AppPanel implementál és ott zárogatod be, ami kell. -
TBG
senior tag
-
TBG
senior tag
-
TBG
senior tag
Elvileg igen, de az URL részt célszerű úgy kialakítani, hogy ne kelljen az encode, csak az URI-ban.
-
TBG
senior tag
-
TBG
senior tag
ja hát igen tehát teljesen másra való mint amire kellene. (ez urlbeni paraméterküldésre való) nekem meg url formázás kellene.
Tehát normális url-t stringből a replace-el lehet megint csak összehozni

(url pedig tartalmazhat spacet csak nem space-ként kódolva, de nem is +-ként... De éppen erről volt szó, hogy stringből kéne egy url-t csinálni)
Tehát vegyük át még egyszer. URL NEM tartalmazhat space-t. A paraméterek nevei NEM tartalmazhatnak space-t, a paraméterek értékei igen, encode-olva. Ha pár apróságot figyelembe veszel, könnyebb lesz az életed.
Természetesen a szabványoktól el lehet térni, csak nem érdemes.
-
TBG
senior tag
Az URLEncoder teljesen jól működik. Ismerni kellene pár szabványt és nem anyázni.
http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4
Control names and values are escaped. Space characters are replaced by `+', and then reserved characters are escaped as described in [RFC1738],
Tehát a replaceAll() nem gányolás. A gányolás az, hogy space van az URL-ben.
http://www.w3schools.com/TAGS/ref_urlencode.asp
URLs can only be sent over the Internet using the ASCII character-set.
Since URLs often contain characters outside the ASCII set, the URL has to be converted into a valid ASCII format.
URL encoding replaces unsafe ASCII characters with a "%" followed by two hexadecimal digits.
URLs cannot contain spaces. URL encoding normally replaces a space with a + sign.
-
TBG
senior tag
-
TBG
senior tag
-
TBG
senior tag
-
TBG
senior tag
Azért ThreadPool-al egész jól meg lehet oldani, amit Te hiányolsz.
+1
-
TBG
senior tag
hát én ott még nem láttam normális paraméterezést...
Viszont ez a forkjoinpool már érdekes.Ez viszont vicces: az URL osztály nem kódolja rendesen URL-é a beadott a stringet. Openstreamnél simán elküldi a spacet pedig valami %20-al kéne helyettesítenie, aztán a szerver dobja is 400-as hibát rá.... Nagyon jó, még egy replace(" ","%20") gányolás....
Ez viszont vicces: az URL osztály nem kódolja rendesen URL-é a beadott a stringet. Openstreamnél simán elküldi a spacet pedig valami %20-al kéne helyettesítenie, aztán a szerver dobja is 400-as hibát rá.... Nagyon jó, még egy replace(" ","%20") gányolás....
http://docs.oracle.com/javase/1.5.0/docs/api/java/net/URLEncoder.html
-
TBG
senior tag
Oké, de annyi, hogy JMF még sajnos nem volt elég, mert
"jmf mp3 player java" queryre még annyi rossz találatot adott, vagy 5-6 példaprojektet hoztam létre mielőtt ez bevált volna, vagyis az, hogy beválik, még nem biztos, de már a projektembe beleinjektáltam, tudok start, stopolni, és localhostról, és szerverről is zenét lejátszani, szv jobb mint a semmi.Az igazi az lenne, ha valami javafx szerű kódot fel tudnék használni a projektben, mert most magamtól szedtem le play, pause, next stb ikonokat, és hát ez így mindennek nevezhető, csak szépnek, vagy profinak nem
Meg pörgetősáv sincs :/Azért köszönöm a tippet, mert végül csak lett a dologból valami

-
TBG
senior tag
-
TBG
senior tag
-
TBG
senior tag
GWT-ről azt hallottam, hogy nem annyira intuitív a használata, amin a Vaadin sokat segít. Nekem is tetszik, bár nem kedvelem az ötletet, hogy a GUI-t programkódban állítsuk elő, a deklaratív, JSF-es megoldás nekem jobban tetszik ebből a szempontból. Viszont Vaadinban nekem is tetszik, hogy már-már desktop szerű guit lehet létrehozni.
Nekem is tetszik, bár nem kedvelem az ötletet, hogy a GUI-t programkódban állítsuk elő, a deklaratív, JSF-es megoldás nekem jobban tetszik ebből a szempontból.
Van deklaratív lehetőség is a GWT-ben
UIBinder.Egyeébként ha GWT, akkor csak a sztenderd GWT...minden keretrendszer drámaian rontja a teljesítményt, ráadásul mindegyik bevezeti a saját kis megoldásait, amitől már teljes az inkompatibilitás.
-
TBG
senior tag
A nagy DOM sajnos a kódgenerálás hátulütője, de szerintem nem akkora probléma. Egy üzleti alkalmazásnál sokkal fontosabb a funkcionalitás és a konzisztens "look-and-feel". Pixeltologatás kevésbé. Mennyit lehetne nyerni vele, ha kézzel állítaná össze valaki a html kódot, az eredeti DOM 30%-a lenne elhagyható? A böngészők gyorsak, a szerverek gyorsak, a hálózati forgalom GZip tömörítéssel megy, a renderelésben pár ms-et nyer vele az ember.
A probéma akkor van, amikor generált layoutba bele kell nyúlni saját CSS-sel, ahogy mondtad. Pl. icefaces minden köré <span> taget generál, így sokszor az xhtml-be tett style vagy styleClass elem nem azt a DOM elemet fogja változtatni, amire számítok, szóval ja, ebben igazat adok. Csak azt mondom, hogy ez nem a legfőbb probléma. -- bár annak, aki csak ezt csinálja lehet, hogy az

Egyébként pedig szerintem, ha egy egyedi megjelenésű oldalt kell készíteni, akkor csak az alap <h:> tagek és sima xhtml kód jöhet szóba a faceletben. Ennek egyébként megvan az az előnye is, hogy nem kell fogni a fejünket, amikor fejlesztés közepén derül ki, hogy bugos egy 3rd party komponens library egyik eleme

Egyetértek.
Ezért hanyagolom én speciel a JSF-et többek között. DOM fa nagyság és third party library-k

Richfacessel voltak nagyon rossz tapasztalatok...aztán lett GWT és JSP..ahogy éppen az adott feladat megkívánja.Persze, a GWT-ről lehetne komoly vitát nyitni, de okosan kell használni és akkor nincs gond

-
TBG
senior tag
Most a getBuffer él hibat ir
symbol: method getBuffer()
location: variable outWriter of type Writer
Note: C:\Users\KEX\Desktop\BikeShop FINALE\src\bikeshop\orej.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
C:\Users\KEX\Desktop\BikeShop FINALE\nbproject\build-impl.xml:926: The following error occurred while executing this line:
C:\Users\KEX\Desktop\BikeShop FINALE\nbproject\build-impl.xml:268: Compile failed; see the compiler error output for details.
BUILD FAILED (total time: 0 secondsA metódus elé tegyél egy annotációt:
@SuppressWarnings("unchecked")
public String toXml() {
StringBuilder xml = new StringBuilder();
if ( this.emp!=null && !this.emp.isEmpty() ) {
for (Employee employee: this.emp) {
// employee to xml, ahogy tetszik.
// TransformerFactory tf = TransformerFactory.newInstance();
// Transformer t = tf.newTransformer();
// DOMSource source = new DOMSource(doc);
// StreamResult result = new StreamResult(new File("xmldoc.xml"));
// t.transform(source, result);
// return result.toString();
xml.append(employee.toXml());
}
}
return xml.toString();
} -
TBG
senior tag
Meg a hátránya, hogy ha valami olyan dolgot akarsz megcsinálni, amit nem támogat közvetlenül a component library, akkor kicsit a mélyére kell ásni a dolgoknak, hogyan tudsz megvalósítani JSF-ben egy javascriptes, ajaxos feature-t annak ellenére is, hogy séróból lekódolod a javascript részét, és egy egyszerű servlettel támogatott backendet.
Plusz a JSF tanulási görbéje eléggé lapos, ha egy kicsit is bonyolultabb dolgot kell megcsinálni, például 3 input mezőből kettőt egyszerre kell validálni, és annak függvényében automatikusan kitölteni a 3. input mezőt, az már nem triviális feladat, és aki gyakorlatlan, egy napot is elszenvedhet ilyennel.
Szóval a JSF hátránya nem a nagy DOM fa, hanem az, hogy rohadtul érteni kell hozzá, és egyáltalán nem egyszerű. Mivel az egyszerűség kitétel volt, ezért nem ajánlom.
Én speciel szeretem hogy komponens alapú, és szépen különválasztja a megjelenítési logikát a controller logikától, plusz nem kell foglalkoznom a form változók kinyerésével szerver oldalon, a 3rd party komponens library-k pedig eléggé eye-candy dolgokat tudnak. (viszont ha valamelyik komponens bugos, akkor vagy az eredeti forráskódja alapján csinálsz egy saját komponenst a bugfix-szel, vagy lefejleszted magadnak. Illetve például az Icefaces táblázatai és fája nagyon jól néz ki, de ha több száz elemet akarsz megjeleníteni, akkor baszhatod, mert memóriazabáló a szerver oldalon, és lassú, mint a dög)
Szóval a JSF hátránya nem a nagy DOM fa
Minden weboldal hátrány a nagy DOM fa. Alapvetően egyetértek a leírtakkal, de a nagy DOM-tól a hidegrázás szokott kerülgetni. Saját CSS, satöbbi miatt.
-
TBG
senior tag
TBG:Helo...gondolom mar az idegeidre megyek...
De legyszi meg ezt,...
A employee osztalyban a toXml metodus az ugy jo lessz,vagy a return null az nem lessz jo?
return result.toString(); nem fogadja el ahol van most a return null;Az hogy nm itt rakom fajlba az xml-t hanem majd az orej osztalyban,azt a toXml metodusban kene,...
Hogy beillesztem ?
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("xmldoc.xml"));
t.transform(source, result);
return result.toString();Ezt próbáld meg!
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();
DOMSource source = new DOMSource(doc);
Writer outWriter = new StringWriter();
StreamResult result = new StreamResult( outWriter );
t.transform(source, result);
StringBuffer sb = outWriter .getBuffer();
return sb.toString(); -
TBG
senior tag
Kb mindegyik jo, amit fentebb ajanlottak. En speciel JSF-et szeretem, mert ha ranezel egy [richfaces] vagy [primefaces] showcase-re, akkor latod, hogy nagyon bonyolult ajaxos komponenseket is berakhatsz az oldaladba 5-10 sor koddal. Hatranya viszont, hogy altalaban oriasi DOM fakat general, igy lassu lehet.
És ne felejtsük el az Icefaces-t sem. Az is egy jó kis cucc

-
TBG
senior tag
Ilyen toXml metodus hianyzott az Employee osztalybol?
https://gist.github.com/anonymous/5453407
mar latom at kell meg irni.... a return statement
es a public string toXml -t
vagy marathat így ezzel a public void toXML(){ es ilyenkor nincs public statement,....
de a xml.append(employee.toXml()); meg mindig piros felkiatojel

Igen, de legyen a metódusodnak visszatérési értéke...monduk egy String.
Tehát
public void toXML()
helyett
public String toXML()
A végén meg a
StreamResult result = new StreamResult(new File("xmldoc.xml"));
t.transform(source, result);helyett
StreamResult result = new StreamResult(new File("xmldoc.xml"));
t.transform(source, result);
return result.toString();Azt hiszem, hogy a StreamResult-nak van toString() metódusa értelmesen.
de a xml.append(employee.toXml()); meg mindig piros felkiatojel

Igen, mert String-et vár, de Te voiddal térsz vissza. Ezt javítja az, amit fent rögöftem

Ja és még valami, ne itt rakd az XML-t fájlba, hanem az oraj osztályban. -
TBG
senior tag
Lejart az ido a szerkeszteshez.
ezt hozta letre az Employee ban.
Object toXml() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}mainben ahogy meghivom:
Employee e1 = new Employee("Johny", "881105/4323", 1);
orej zamestnanec = new orej();
zamestnanec.pridajEmp(e1);
zamestnanec.toXml();de nem fut le:
Exception in thread "main" java.lang.UnsupportedOperationException: Not supported yet.
at bikeshop.Employee.toXml(Employee.java:66)
at bikeshop.orej.toXml(orej.java:171)
at bikeshop.BikeShop.main(BikeShop.java:96)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)Hmm. Azért dob java.lang.UnsupportedOperationException: Not supported yet. hibát, mert a toXml() metódusod ezt tartalmazza:
Object toXml() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}Tehát qrva jól működik.
DE!! Ez csak egy generált kód..neked ezt kell tartalommal feltöltened!
Valami ilyesmivel:public String toXml() {
String startElement="<element>";
String endElement="</element>";
String startNameElement = " <name>";
String endNameElement = " </name>";
return startElement+"\n"+startNameElement+this.name+endNameElement+"\n"+endElement;
}Persze, nem ilyen primitív módszerekkel, hanem pl. Sax,DOM...akármi...
-
TBG
senior tag
-
TBG
senior tag
Melyik osztalyba kell megirni az xml makertt?
ehhez az osztalyhoz van kapcsolva az ArrayList:
https://gist.github.com/anonymous/5452699Ez pedig az arraylistes:
https://gist.github.com/anonymous/5452091
De viszont arraylisthez hogyan kell osszekapcsolni az xml maker,...meg szamotse fogadott el nekem csak szoveget.

Az orej-ben, jelentsen bármit is

Írsz egy metódust, valami ilyesmit:
public String toXml() {
StringBuilder xml = new StringBuilder();
if ( this.emp!=null && !this.emp.isEmpty() ) {
for (Employee employee: this.emp) {
// employee to xml, ahogy tetszik.
xml.append(employee.toXml());
}
}
return xml.toString();
} -
TBG
senior tag
ertem,koszi ...sajnos ilyet nem hiszem hogy lehetne hasznalni. bar nem mondtak hogy ilyen is letezik...
erre tudod a valaszt,hogy:
Ha ArrayList hez van rendelve az xml maker ,akkor ha tobb elemet akarok menteni, az mar kiirodna a vegso xml fajlban?
Olyat lehet egyaltalan hogy arraylisthez rendelni az xml makert?
Vagy pedig abban az osztalyban kell az xml maker megirni,amihez van fuzve a ArrayListet tartalmazo osztaly?
(hogy azutan kiirja ha tobb elemet hozok letre.... akkor az xml fajlban is megjelenik mjad)Gyakorlatilag a Java fejlesztésnek az egyik alapja, hogy addig nem kell semmit megírni, amíg meg nem győződsz róla, hogy nem írta-e meg valaki más már

Szerintem olyat alapból nem lehet. Az ArrayList egy konténer, ami különféle objektumokat tárol. Az objektumokhoz lehet XML parsert/marshallert/serializert/ahogy tetszik írni, ami végigmegy az ArrayList elemein és azokat egy XML-be írja bele. Mondjuk ha az ArrayList-ben String-ek vannak:
<element>
<value>egy</value>
</element>
<element>
<value>ketto</value>
</element>
<element>
<value>harom</value>
</element>
<element>
<value>negy</value>
</element>Ahol is az <element></element> reprezentál 1 darab ArrayList elemet. Azt, hogy miként rakod XML-be, a saját XML makered szabályozza.
-
TBG
senior tag
Ezt az Xstream -et hivjak külső libnek?
Nem tudom hogy ilyet hasznalhatunk e...
Abban az osztalyban ahol van az xml maker,hogyan lessz - hogyan kell atirni hogy az ...ArrayList -ből kapja az adatokat?
Ha ArrayList hez van rendelve az xml maker ,akkor ha tobb elemet akarok menteni, az mar kiirodna a vegso xml fajlban?
Ezt is külső libnek hívják...illetve hívhatják. Gyakorlatilag annyit csinál, hogy egy osztályból automatikusan XML fájlt generál.
-
TBG
senior tag
van egy ilyen ListArrey osztalyom,amiben par adat van az alkalmazottakrol.
ime:
https://gist.github.com/anonymous/5452091ez pedig a xml maker osztaly:
Ne bohóckodj a DOM-mal

http://xstream.codehaus.org/
-
TBG
senior tag
Hali, szerintem simán el lehet érni jó eredményeket szimplán servlet + stringtemplate ( http://www.stringtemplate.org/ ) kombinációval. Én még nem próbáltam, de kollégám szerint nagyon jó. A frankó az, hogy nem erőlteti rá a framework a saját technológiáit, hanem azt használsz amit szeretnél. Servlet a Controller szerepben, Stringtemplate a view szerepben, Model szerepben pedig vagy saját DAO-kat írsz JDBC-vel, vagy akármit gyakorlatilag használhatsz backendnek.
Egyébként pedig a Play frameworköt nagyon dícsérik, csak az a bökkenő, hogy ahhoz Scalát érdemes használni, amit nem egy-két nap megtanulni, szerintem.
Én is láttam már ez a sprintemplate-t. Egyetlen bajom van vele, mégpedig az, hogy teljesen Java idegen számomra. Tudom, őskövület vagyok, aki JSP/JSF-en szocializálódott

-
TBG
senior tag
Oks, köszi.

Egy másik kérdés, mindenkinek:
Melyik webes frameworkot ajánlanátok kisebb weboldalak létrehozására? Eredetileg ezért választottam a Grails-t, és esetleg gyors tanulási lehetőséggel bír, vagy sokan használják
.
Spring-et ide túlnagynak érzem. (Pl.: egyszerű blog oldal) Vagy inkább sima JavaEE-t használjon az ember?Szerintem a JSP+Spring(MVC,Security) páros jó lehet. Én személy szerint a GWT-t kultiválom, de kisebb oldalakhoz heavyweight.
-
TBG
senior tag
Szóval, az, hogy a Netbeans-ben hogy kell csinálni, nagyon rossz irány. Netbeans-tól függetlenül is működne kell az ilyen dolgoknak.
Ha van SQL scripted, akkor az egyik irány lehet, hogy felparseolod, mondjuk ';' delimiterrel, majd egyesével szépen lefuttatod az SQL parancsokat, amik benne vannak.
Pl:
CREATE DATABASE test;
CREATE TABLE table1(id int, name varchar(12));Ez konkrétan két utasítást fog egymás után végrehajtani. Nyilvánvalóan adatbázisszervertől függ a pontos szintaktika.
Aztán ha megvan, akkor lehet mindenféle Java-s okosságokat csinálni.
Itt van példakód is: [link]
-
TBG
senior tag
Másik kérdés. (bár ez másnak is mehet)
Ha van a POM.XML-ben (maven) pluginként hozzáadva a Jetty, akkor ezt automatikusan leszedi és elindít egy Jetty-t anélkül, hogy az telepítve van a gépen? Vagy kötelező, hogy ennek ellenére feltelepítve legyen a Jetty?
Ugyanis én Jetty 9.0-t raktam fel, de a kis plugin a Jetty 7-est használja, és ez olyan érdekes, ezen elgondolkodtam.
Nem kötelező. A pom.xml-ben lévő összes függőség letöltődik, feltéve ha elérhető a repókban. Viszont ha eltérő verziókat használsz mondjuk fejlesztői és produktív módban, akkor érhetnek meglepetések, szóval érdemes egységesíteni.
-
TBG
senior tag
-
TBG
senior tag
-
TBG
senior tag
ismer valaki valami libet verziókövetésre java-ban? Valami olyan kéne hogy egy tárhelyen legyenek fájlok, titkosítva, és a javas kliens a felhasználónál letölti ezeket, de csak akkor ha az adott fájl változott, vagy nincs még letöltve, és persze ezt úgy hogy a tárhely csak tárhely, sima fájlszerver http-n.
http://svnkit.com/
-
TBG
senior tag
-
TBG
senior tag
Pedig kihúzod a gyufát!

Az a baj, hogy nem tudom megítélni, hogy helyes-e az alábbi diagram, ami azt mutatja, hogy a Java EE-re a kereslet nagyobb mértékben nőtt, mint Springre, vagyis fejlesztőre.
http://www.indeed.com/jobtrends?q=%22Spring+framework%22%2C+%22Java+EE%22&l=&relative=1
(De igazából nem tudom eldönteni, hogy mennyire hiteles ez a diagram)
DE. A Spring egy jó framework, máskülönben nem használnák, és szerintem innovatívabb is, mint a Java EE, gyorsabban mozog az új technológiák felé. Mindkét keretrendszert nagyon sok helyen használják. De az eredeti kérdéshez visszatérve, ha konkrétan tudja valaki, hogy Springgel kell/akar foglalkozni, akkor azt tanulja előbb, és ne a Java EE-t
Ez a diagram azt is mutathajta, hogy sok helyen keresnek EE fejlesztőt, de nem találnak, mert lassan mindenki átmegy Springre. Sokkal jobban mutatna egy olyan grafikon, hogy hány helyen használnak Springet aktívan és hány helyen EE-t

Ha már flame, legyen kövér

-
TBG
senior tag
Hm, nem tudom, én már 1 éve nézegetek Java-s állásokat (szerencsére Isten nem szeret
) és ha Spring-et kértek volna akkor azt külön jelezték, vagy még a Strut2-t láttam népszerűnek.Java EE kiselőadást kellett tartanom és hát, amikor nézegettem a fórumokat elég nagy vita van ebből a Java EE vs Spring dologból, én nem is mennék bele
. De én sosem dolgoztam bennek, csak tanulgattam őket, így nem tudok bővebbet mondani
.
Bár a Spring elég dinamikusan nő és nagyon megy a fejlesztés is ezerrel. Lehet tényleg érdemes a Spring-gel kezdeni, mert ahogy olvastam a Java EE7-hez még a cache api sem lesz benne, amit már nagyon vártak... (valami Jcache).Mivel foglalkoztam ASP.NET-tel nekem nem volt nehéz megérteni a Java EE alapjait
mástól nem hallottam vissza ezügyben semmit.Szerintem a Spring lassan platform lesz
(tényleg rengeteg eszköze van)Struts2 vs Spring? Nem összehasonlíthatóak

Szerintem a Spring lassan platform lesz
Ez a lényeges mondat. Annyi módosítással, hogy szerintem már az!

Miért Spring? Azért, mert nem kell hozzá applikációs szerver. Egy sima Tomcat/Jetty-vel is simán elszalad, ami egy EE alkalmazásról nem mondható el. Sőt, egy jól megírt Spring alkalmazás fut servlet konténerben és applikációs szerverben is. Mindamellett ugyanazt a funkcionalitást nyújtja, mint egy EE konténer (jó, dinamikus kontext nincs, de embert nem láttam még, aki használta volna)
Nem akarok flame-t nyitni!!
-
TBG
senior tag
Köszi, ezekkel tisztában vagyok, nem csak úgy poénból kezdtem el foglalkozni vele, hanem azért mert nem sokára juniorként munkába állok és ugyan intenzív oktatáson részt fogok venni, már most el szeretnék vele kezdeni foglalkozni, mert van rá időm. A kérdés lényege az volt, hogy felesleges időt ne pazaroljak arra amire nem kell.
TBG : Köszi ezt már megtaláltam, de egy ideje nézegetem már, hogy akkor most mi is van
. Még nem találtam meg a fogást, hogy miként kezdjem el, az SE tutoriallal lassan végzek.Mint mindent, ezt is csak úgy tudod értelmesen elkezdeni, ha van feladat

-
TBG
senior tag
Szerintem előbb döntsd el, hogy mit szeretnél pontosan a Java-tól és abba az irányba indulj el. A PHP-hoz képest itt nagy a "Birodalom" mérete.
Már maga a Java SE sem kis mennyiség. (GUI-k-ról nem beszélve, annotációk, amelyek a gyenge pontjaim, stb. Könyv függő, hogy mit sorolnak ide
Java EE végül is durván mondva, API-k gyűjteménye, párat már Modder is írt. (Najó talán az alapokat, a nagyon-nagyon alapokat érdemes átnézni esetleg egy szakdolgozatból, hogy elméletileg tud, hogy mi az. Amikor olyanokról beszélnek, hogy komponens, konténer, szervlet stb.)
Cég függő, hogy melyiket használják a Spring és a Java EE közül. Bár lehet a pénzszektorhoz a Java EE kell. Mondjuk a Morgan Stanley Spring szakembereket keress.
Ha webes alkalmazások érdekelnek akkor én inkább a Grails-et javasolnám. Egyszerű szimpla és a Spring-re épül (na meg az a csapat is fejleszti
). Java EE esetén meg ott a JSP és a JSF is... (itt viszont az ASP.NET-tel mutatt rokonságot... JSF az olyan Webforms benyomást kelti a JSP pedig az (asp.net)MVC és PHP benyomását). Grails-nél keveset kell a config fájlokban lennem 
És ott van még a fentebb említett nagy vállalati "irány" is.
Bár még én sem vagyok pro, de szerintem az irányt nem árt tudni

Az EE egyre inkább háttérbe szorul a Springgel szemben.
A Springgel érdemes kezdeni szvsz, mert aki ismeri a Springet, az nagyon könnyen tud átnyergelni EE-re, de csak EE ismerettel a Spring a vérhugyozás kategóriája.
Itt a 3-as Springről beszélek. Az előző változatok az XML tengere....bottal nem nyúlnék hozzá. Spring is támogat JSF,JSP techonlógiákat.
A Spring is egyébként egy qrva nagy framework/tool/solution halmaz.
Van Spring MVC, Sping JS, Spring Webflow, Spring Security.....sorolhatnám napestig. Ezekből a Spring Security és az MVC már de facto szabvány.
-
TBG
senior tag
-
TBG
senior tag
-
TBG
senior tag
-
TBG
senior tag
Bocs, ha alapkérdés.

Szóval, van egy byte tömböm + egy fájl nevem. Szeretném úgy csatolni mailben hogy ne mentődjön ez a szerverre (mert most mentődik). Tudnátok segíteni?Kód:
MimeMessageHelper helper = new MimeMessageHelper(message, true);
File someFile = new File(notificationBean.getAttachmentFileName());
FileOutputStream fos = new FileOutputStream(someFile);
fos.write( notificationBean.getFileAttachment());
//fos.flush();
fos.close();
helper.addAttachment(someFile.getName(), someFile);
flush()-t kiszedtem, de nem segített.FileOutputStream helyett ByteArrayOutputStream-et használj!
A someFile.getName() helyett notificationBean.getAttachmentFileName(),
a someFile helyett pedig a ByteArrayOutputSream megfelelő metódusát. -
TBG
senior tag
Még egy megjegyzés az equals(), hashCode() témához.
Szóval, csak a tájékoztatás korrektsége miatt. Igaza van maximálisan az előttem szólóknak(Superhun). Az equals() és hashCode() metódusokat MINDIG EGYÜTT KELL felüldefiniálni, szóval az a megoldás, hogy csak az equals() metódust definiáljuk felül, rossz.
Elnézést a topic olvasóitól a félretájékozatásért és a rossz, pongyola tipp miatt!
-
TBG
senior tag
Sötét mágia, mikor valami nem mondja el magáról, hogy mégis hogyan fog működni, hanem összesen egy valaki tudja, hogy "ja, igen, ez ez meg emez így van".
A szoftverfejlesztés egy ilyen sötét mágiával átjárt tudomány. Láttam sok cifra dolgot már

szerk:
Egyébként meg igazad van.
-
TBG
senior tag
Sosem szabad csak az equals()-t vagy csak a hashCode()-ot felülírni! Nyilván képes lesz működni, ha csak az egyik van felülírva, de mihelyst az objektum fel lesz használva kulcsként (dictionary, set), máris hibás működést kaphatunk! Emellett azt is figyelembe kell venni, hogy az alaplogikának egyeznie kell a két metódusban, különben szintén hibás működést kaphatunk (pl. mikor egy set-hez akarnánk hozzáadni végtelen ciklusba is kerülhetünk). Sőt, igazából ilyen kulcsként való felhasználás esetén csak immutable objektumokat szabadna használni.
Nyilván az nem derült ki, hogy a kolléga mire akarja használni. És igenis, lehet az, hogy csak az egyiket írom felül. Ha egy listába rakom és csak a contains() metódust hivogatom rá, akkor bőven elég az equals() metódust felüldefiniálni.
Nem véletlenül írtam, hogy alternatív megoldás és nem az üdvözítő.
-
TBG
senior tag
Sziasztok!
Egy érdekes, de nem nehéz problémába ütköztem, igazából van is rá elképzelésem, de hátha kapok jobb ötletet tőletek.
Tehát adatokat kellene tárolnom vmiben (természetesen vmi kollekcióra gondoltam).Két részből áll:
egy String és egy intA string értéke és az int értéke is ismétlődhet, tehát pl.: ezek a párosok fordulhatnak elő:
"kutya" - 2
"kutya" - 1
"macska" - 1Látható, hogy egy vagy több String is megegyezhet egymással és egy vagy több int is megegyezhet egymással, viszont nem lehetnek olyan párosok ahol a String és az int is megegyezne.
Tehát tlképpen mindegyik páros egyértelműen azonosítható a String értékkel és az int értékkel.
Olyan mintha egyszerre használnám őket kulcsnak.A kérdésem: melyik kollekciót lenne érdemes erre a feladatra használni?
Időigény, elérés nem számít, de azért ne legyen nagyon undormány és gány.
HashMap egymagában nem jöhet szóba a fentiek miatt.
Össze kellene ágyazni min két kollekciót, csak nem tudom melyik lenne a legmegfelelőbb erre a célra, ami még talán elegáns is lenne.Ha esetleg vki tud vmi elfogadható és vállalható megoldást erre, akkor ne tartsa magában

Superhun megoldása teljesen jó.
Viszont ha már saját osztályt használsz felüldefiniált metódusokkal, akkor szerintem elég az equals felüldefiniálni úgy, hogy a String és az int egyezőség esetén adjon vissza TRUE-t és akkor egy "sima" ArrayList-be is teheted. Persze attól is függ, hogy mennyi elemed lesz, mert nagyon sok elem esetén az ArrayList nem túl gazdaságos. Nem mondom, hogy Superhun vagy az én megoldásom a jobb, az enyém egy alternatív, de valamivel egyszerűbb megoldás, mert csak 1 metódus felüldefiniálását kell megcsinálni, de mint írtam, sok elemnél nem feltétlenül gazdaságos.
-
TBG
senior tag
YouTube api-t használt már innen valaki? 1 éve jól működő alkalmazásnál olyan problémám lépett fel nemrég, hogy a CategoryFilter-t figyelmen kívül hagyva nem a google account-hoz tartozó videókat listázza, hanem a publikus tartalomból próbál. Így exception lesz, mivel több mint 1000 videót akar lekérdezni az alkalmazás... a performancia problémáról nem is beszélve.
Van valakinek ötlete? Api változás lenne?
Nézd meg az api changelogot....első körben.
-
TBG
senior tag
Visszafelé egyszerűbb, de aki csak backend-et tud programozni, az nem feltétlenül képes egy SWING/AWT felületet összerakni. Itt már az a szabály, hogy nem elég a Java-t ismerni, hanem az adott framework-ban is büfének kell lenni.
-
TBG
senior tag
Nem következik. A webes alkalmazásfejlesztés Java-ban egy teljesen más műfaj. Ahogy a kolléga is írja, a GWT áll a legközelebb hozzá, de HTML/JS ismeretek ott is elengedhetetlenek.
Egyrészt kell egy erős backend ismeret...minimum Servlet szinten, de a különféle EE környezetek ismerete is erősen ajánlott. -
TBG
senior tag
Ez így van, és ezt írtam én is. Azért kérdeztem a láthatóságot, mert csodálkoztam, hátha vmi új történik.

TBG: Miért is? Mi van akkor, ha a gyerek metódusából akarok elérni egy másik metódust ami el van fedve/felüldefiniálva a gyerekben, vagy egy változót, ami el van fedve a gyerekben?
Egyébként igazad van, általában arra szoktuk, és arra egyértelmű használni, amire Te gondolsz.Ha a változó/metódus el van fedve, akkor annak oka van. Ha mégis el kell érni, akkor protected. Vagy publikus getter
Alapvetően design kérdése egyébként. -
TBG
senior tag
super-t csak @Override-olt metódusnál "szép" használni.
-
TBG
senior tag
-
TBG
senior tag
Elnézést, elnéztem, Java 10-re tervezik ezt. Miért tartjátok hülyeségnek (természetesen akkor, ha megoldják, hogy nincs performance loss a csomagolóosztályok esetében)?
Megint csak csatlakozom...ha nincs performance loss, meg lesz backward compatibility....akkor jöhet.
-
TBG
senior tag
Sőt. Állítólag Java 8-ban kidobják a primitív típusokat a kukába.
(#3493) hunfatal: Jó kérdés. A doksi is így írja le: The east layout constraint (right side of container).
Csatlakozom...baromság lenne.
Új hozzászólás Aktív témák
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - 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! 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?:))
- Raktáron, PlayStation 4 Slim 500GB, gyönyörű szép állapotban, 6 hó garanciával, üzletből!
- PlayStation 4 Pro 1TB 7216B, frissen pasztázva, 6 hó garanciával, Bp-i üzletből eladó!
- Nintendo Switch OLED 64GB+256GB MicroSD + okositott, Atmosphere 3 hó garanciával
- Akciós! Kishibás! Macbook Pro 13 M1 16GB 256GB Akku: 87% 1 év garancia
- Macbook Pro 13 M1 16GB 256GB Akku: 88% 1 év garancia
- Lenovo ThinkPad X1 Carbon Gen 10 - 27% ÁFÁS (0332)
- iPhone 14 128GB Midnight -2 ÉV GARANCIA - Kártyafüggetlen, MS5600
- Dell Latitude 5410 - 14" FHD touch, Core i5 10310U, 16GB RAM, SSD, jó akku, számla, 6 hó gar
- Új állapotban! Lenovo ThinkPad T14 Gen 3 i5-1245/16gb ram/256 ssd FHD+ garancia
- Apple Watch Series 6 44mm, Bluetooth, 1 Év Garanciával
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest











. Még nem találtam meg a fogást, hogy miként kezdjem el, az SE tutoriallal lassan végzek.



