Java

Best Practice, compiler es premature optimization

Fórumok

Sziasztok,

a kerdes fokent Javaval es C#-val kapcsolatos, de altalanos kerdeskent sem erdektelen szamomra.

tegyuk fel, hogy van egy ilyenunk:


if(foo.getbar() < limit1 || foo.getBar() > limit to) {
//do something
}

aminek van egy ilyen alternativaja:


int bar = foo.getBar;
if(bar < limit1 || bar > limit to) {
//do something
}

Az elso esetben ketszer hivtunk meg egy fuggvenyt amit eleg lett volna egyszer is. A masodikban deklaraltunk egy valtozot amire nem feltetlenul lett volna szukseg. 1-1.

Feltetelezem az nem tortenik meg, hogy a compiler az egyik alternativat (barmelyiket is) hatterben a masikka optimalizalja.

Elso ranezesre a masodik inkabb tunik premature optimization-nek, mint az elso, tehat az elso alternativa kene, hogy jelentse a best practice-t ebben az esetben.

Helyesek a feltetelezeseim? Tudom nagyon szorszalhasogato tuok lenni ilyen kerdesekben, de ugy vagyok vele, hogy eleg egyszer megkapni ra a valaszt es onnantol beepul a stilusomba.

[elnapolva] Decompile + compile

Fórumok

Javában nem vagyok valami otthonos, most mégis arra lenne szükségem, hogy egy apró változtatás erejéig belenyúljak egy programba. A legjobb ingyenes (webes kimenetet is adó) adatbázis-vizualizátort a schemaSpy személyében ismerem; ebbe szeretnék belenyúlni. (Az is segítség, ha valaki megmondja, hogy paraméterezéssel hogy lehet e programban színeket változtatni az idegen kulcsokat összekötő vonalakon.)

A schemaSpy program a graphvizt (és a dotot) használja megjelenítőként, és ennek a leírásában szépen látszik, hogy pl. az edge [=red] révén piros vonalakat lehet húzni. Rá is jöttem, hogy a net/sourceforge/schemaspy/view/DotFormatter.class-ban kellene egy kicsit matatnom. Itt találtam néhány dekompillátort; az egyik egész jónak tűnik. Meglepő módon nem a JAD, JD, classeditor, Krakatau vagy a procyon jött be, hanem a cfr.

A fő kérdésem az, hogy a módosítás után (vagy akár módosítás nélkül) hogyan kell újra fordítani a programot linux alatt? Lehetséges-e ez úgy, hogy csak a DotFormatter.class fájlt dekompilláltam, vagy minden dependenciát dekompillálni kell? Ha csak simán nekiesek javac ...-vel, ad egy csomó "cannot find symbol" hibát.

(Ezt találtam, de talán van ennél egyszerűbb út is.)

Java7ee tutorial

Fórumok

Java EE7 tutorialt akarom futtatni.
updatetool ezt válaszlja:
GlassFish Update Tool does not support running in "hu_HU.utf" locale.
Attempting to use English locale.
Traceback (most recent call last):
File "/opt/netbeans74/glassfish-4.0/updatetool/bin/../vendor-packages/updatetool/main.py", line 431, in ?
main(sys.argv[1:])
File "/opt/netbeans74/glassfish-4.0/updatetool/bin/../vendor-packages/updatetool/main.py", line 57, in main
init_app_locale()
File "/opt/netbeans74/glassfish-4.0/updatetool/vendor-packages/updatetool/common/boot.py", line 300, in init_app_locale
msgx = _("WX import error. Verify the WX widgets are in the PYTHONPATH.\nThe following can be reported "\
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 45: ordinal not in range(128)

Valami megoldás?

SVN repo elérése

Fórumok

Sziasztok!

Jelenleg egy házi fejlesztésű dashboard-szerű webapp-on dolgozom.
Jó lenne valahogy behúznom néhány információt az svn repository-nkból is.
Ugyan in-house fejlesztés, de nem open source tehát az SVNKit kiesik pedig pont arra a funkcionalitásra lenne szükségem.
Elsősorban a logokat kellene kinyernem illetve, h melyik fájl melyik revízióban változott utoljára.
Várom a javaslatokat!
Köszönöm!

Android - Push notification, classok nyitása

Fórumok

Egy appomnak beállítottam push notification-t, ami működik is rendesen, üzenet megjön, rápittyentek, elindítja a kívánt class-t, ami hozzá tartozik. Ám innen jön a gondom, hogy a vissza gombra szeretném, hogy a fő képernyőt töltse be, ne pedig kilépjen és az appot ismét el kelljen indítani hozzá.
Magából a futó appból el tudom indítani a push listázót - eltárolom az üzeneteket a szerveren és json-ból vissza lehet őket nézni - de ha csak az üzenet lista class fut a push-ból megnyitva, akkor vissza gombra elszáll az egész, nem tölti be a fő appot. Pl erre a kódra sem:

Intent intent = new Intent(MessagesListActivity.this, Loader.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);

Van tippje valakinek, hogy indítsam el a nekem kellő class-t? Kerestem sokfelé, de lehet rosszul, eddig nem találtam a megoldást. Valami hierarchia gond lehet? Manifestben turkáljak, vagy csak egyszerűen rosszul hívom meg amit kell?

Grizzly

Fórumok

Sziasztok,

Nehezet kérek, magyarázni kellene. Mert sajnos saját kútfőből + Google-ból nem nagyon jutottam előrébb.
A minap egy projekt/beadandó során belebotlottam, és egyenlőre a "kacsa-eperfa" viszonylatban vagyunk...
Mivel a lehetőségek kötött ezért a "Nagy Medvétől" eltérni nem lehet, épp ezért jó lenne, ha legalább köszönőviszonyban lennénk egymással.

Mivel nem vagyok hivatásos JAVA-fejlesztő, ezért eddig általában megmaradtam az általam ismert és használt
Eclipse => WAR => Tomcat/Glassfish-deploy vonalnál, ezért a readme elolvasása után sajnos még mindig elég nagy a(z) (z)űr fejemben az eszközzel kapcsolatban.

Kérdéseim:
1, Egyáltalán micsoda ez?
2, Miért jobb ez, mint mondjuk egy GF vagy TC-deploy? ("Járt utat járatlanért el ne hagyj" elvet követve...)
3, Talán a legnehezebb: Hogy álljak neki? Hogyan hozok össze egy "Hello World"öt?
3+1, Elképzelés, hogy mit szeretnék/kellene majd vele:
JSP & Servlet + JDBC egy PostgreSQL-hez, vagy valamilyen adatbázishoz. Kb. egy tamagocsi szintjéig mennék, nem tovább. A JSP-nek CSS és JavaScript.

Türelmeteket, segítségeteket előre is köszönöm.
ptoth

SQLite UTF-8 beállítása

Fórumok

Az a problémám, hogy bár az SQLite-ban kiadtam a "PRAGMA encoding = "UTF-8" parancsot,
JAVA-ban mégsem jelennek meg az ékezetes karakterek.

Sajnos még csak ismerkedek az SQLite-al, ill. JAVA-ban sem vagyok még valami acélos.
Valahol találtam egy leírást, de ez lehet hogy csak a txt fájlok kezelésénél szükséges...
Azt írták hogy vegyek fel egy "JAVA_TOOL_OPTIONS" nevű környezeti változót aminek az értéke legyen "-Dfile.encoding=UTF8"
Ezt megcsináltam, és txt fájlból szépen be is tudtam olvasni UTF8 karaktereket.
SQLite-nál mit kellene még csinálnom?

public void tesztconnect() throws SQLException
{
try {
Connection connection = null;
ResultSet resultSet = null;
Statement statement = null;
Class.forName("org.sqlite.JDBC");
connection = DriverManager.getConnection("jdbc:sqlite:C:\\Sqlite\\test.db");
statement = connection.createStatement();
resultSet = statement
.executeQuery("SELECT nev FROM table1");
while (resultSet.next())
{
System.out.println("test:"
+ resultSet.getString("nev"));
}

} catch (ClassNotFoundException ex) {
Logger.getLogger(DAL_sqlite.class.getName()).log(Level.SEVERE, null, ex);
}
}

A nevek listázása megy, de sajnos egyetlen ékezetes karakter sem jelenik meg.
Ezt a libraryt használom: https://bitbucket.org/xerial/sqlite-jdbc

Más library is szóba jöhet, nem ragaszkodom ehhez.

Előre is köszönöm a segítséget!

JVM megadása futtathatónak lefordított JAVA programnak

Fórumok

Van egy java-ban írt program ami exe-re fordítva áll rendelkezésemre. Standalone módban installálás nélkül szeretném használni, mert a környezet ezt teszi csak lehetővé.
A program telepítési mappájában van egy JVM mappa, amit a gyártó a weboldalán is elérhetővé tett.

Ha a programot átmásolom egy szűz gépre a következő error fogad:


C:\Users\humartom\Desktop\lcd_for_asa>GEMprogrammerCL.exe /COM10 /P shipping.withOS.pdb
Serialio Library: version 9.9.9: build 9193
Copyright (c) 1996-2008 Serialio.com, All Rights Reserved.
os.name="Windows 7"  os.arch="x86"
java.lang.UnsatisfiedLinkError: no jspWin in java.library.path: Check that native library jspWin is in proper directory
java.lang.UnsatisfiedLinkError: Serialio.SerialPortLocal.SerGetPortList()I
        at Serialio.SerialPortLocal.SerGetPortList(Native Method)
        at Serialio.SerialPortLocal.getPortList(SerialPortLocal.java:1609)
        at gem.Merlinator.rb_getCommPorts(Merlinator.java:14232)
        at gem.Merlinator.sendProgramOS(Merlinator.java:5355)
        at gem.Merlinator.XmodemBinary(Merlinator.java:4847)
        at gem.Merlinator.<init>(Merlinator.java:1955)
        at gem.Merlinator.main(Merlinator.java:2079)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at com.exe4j.runtime.LauncherEngine.launch(Unknown Source)
        at com.exe4j.runtime.WinLauncher.main(Unknown Source)

Hogyan lehet megmondani egy EXE-nek hogy milyen JVM-et használjon?

Próbáltam a következőket a program futtatása előtt, de nem vezettek eredményre:


set JAVA_HOME=%CD%\jvm
set JAVA_OPTS="-Djava.library.path=%CD%\jvm\bin"

Kösz a tippeket előre is!