Blog from November, 2007

A programok írása közben nagyon sokat tudunk javítani a hatékonyságon, ha ismerünk apró trükköket, amelyek gyorsítani tudják a munkát. Sok fejlesztő az egeret részesíti előnyben a billentyűzettel szemben, most mutatunk 10 érdekes billentyűzet kombinációt, amelyek miatt érdemes elszakadni az egértől. A kombinációk egy része nem csak NetBeans alatt érhető el, ezért célszerű kipróbálni saját IDE eszközében mindenkinek.

  1. A kijelölt sorokat pillanatok alatt a kijelölés alá tudjuk másolni, ha megnyomjuk a Ctrl-Shift-[lefelé nyíl] gombokat. A másolás annyi alkalommal történik meg, ahányszor lenyomjuk az említett kombinációt. A Ctrl-Shift-[felfelé nyíl] szintén használható, ekkor a kijelölés az eredeti helyén maradt, ellentétben a lefelé nyíl használatával, ahol a kijelölés mozog lefelé a másolások során.
  2. A kijelölt sorokat másolás nélkül mozgatni tudjuk az Alt-Shift-[felfelé-, lefelé nyíl] segítségével, a kijelölés a nyíl irányában fog mozogni.
  3. Egymásba ágyazott forráskód elemeket tudunk kiválasztani az Alt-Shift-[pont] és az Alt-Shift-[vessző] kombinációk használatával, amelyek közül az első egyre nagyobb blokkokat választ ki (különféle zárójelek és pontok mentén), a második pedig az előzőleg kijelölt részt csökkenti egy szinttel.
  4. Ha a forrásunkba szeretnék osztályelemeket generálni (konstruktor, setter illetve getter metódus, stb), akkor csak meg kell nyomnunk az Alt-Insert gombokat, és máris megjelenik egy lebegő ablak, ahol a menüből kiválaszthatjuk a generálandó elemet.

  5. Csoportosan át tudunk nevezni egy-egy metódust vagy változót, ha kijelöljük, majd megnyomjuk a Ctrl-R (refactor) kombinációt. Ekkor a kijelölt szöveg a forrásunk minden pontján átneveződik az új névre. Vigyázzunk ezzel az eszközzel, ugyanis az osztályok neveit is meg tudjuk változtatni, és akkor a NetBeans egy korrekt refactor során magát az osztályt is átnevezi, amire hivatkoztunk.

  6. A Ctrl-[per] billentyűkkel a kijelölt forrást megjegyzéssé tudjuk alakítani, és viszont.

  7. Ha gyorsan meg szeretnénk nézni egy adott osztály vagy metódus tulajdonságait, akkor a kurzorral rajta állva a Ctrl-F12 hatására külön ablakban láthatjuk ezeket az információkat.

  8. A megnyitott forrásfájlok közötti váltáshoz a Ctrl-Tab hatására előugrik egy felbukkanó ablak, amelyben a Ctrl-Tab további nyomogatásával lépkedni tudunk a lefelé a listában.

  9. Ha elkalandoznánk a megnyitott források között, a Ctrl-Q visszavezet majd az utolsó szerkesztett ponthoz.

  10. A Ctrl-Shift-M billentyűk hatására az adott sort megjelelöli a NetBeans, az így megjelölt pontok között a Ctrl-Shift-[pont] és a Ctrl-Shift-[vessző] segítségével előre és hátra tudunk mozogni a megjelölt sorok között.

  11. Ha a kurzort a egy metódus visszatérési típus jelölő részén hagyjuk, akkor a NetBeans megjelöli a metódus összes kilépési pontját.

  12. Alt-F4 határása gyorsan abba tudjuk hagyni a munkát... :)

UNIX rendszergazdák körében ismert program az MRTG, amely a kiszolgáló rengeteg állapotjellemzőjét (memória, processzorterhelés, lemezhasználat, stb) grafikonon ábrázoló eszközt. Ha ehhez hozzávesszük, hogy a hatos Java behozott pár eszközt a virtuális gép állapotának figyeléséhez, kézenfekvő ötlet a kettőt kombinálni: vegyük hozzá a meglévő MRTG grafikonokhoz a JVM állapotát is. A módszer egyszerű, ahogy Dmitri Maximovich is írja blogjában, a jstat programmal le tudjuk kérdezni a futó JVM állapotát, mégpedig PID alapján, amelyet a jps program kimenetéből tudunk kinyerni, majd a jstat kimenetét megetetjük az MRTG programmal.

Super CSV

A CSV - vagyis a Comma Separated Values (vesszővel elválasztott értékek) - az alapvetően szöveges táblázatok kényelmes továbbítási módja, ugyanis egyszerű, mint a faék, és különböző platformok között is képes hidat verni. A SuperCSV API ezen adatszerkezet kezelésére készült, és kényelmes felületet ad a fájlok betöltésére, módosítására és mentésére.

ICsvBeanReader inFile = new CsvBeanReader(new FileReader("foo.csv"), CsvPreference.EXCEL_PREFERENCE);
try
{
  final String[] header = inFile.getCSVHeader(true);
  UserBean user;
  while( (user = inFile.read(UserBean.class, header, processors)) != null)
  {
    System.out.println(user.getZip());
  }
} finally
{
  inFile.close();
}

A forráskódot tekintve a feladatunk mindössze annyi, hogy átadunk egy általunk készített Bean osztályt, amibe a keretrendszer beleolvas egy sort... tehát ne fejlesszük ki újra a meleg vizet, ha a csapot megnyitva folyik a forró víz... :)

Érdemes böngészni az Apache Commons gyűjteményt, hiszen könnyen abba a hibába esünk, hogy implementálunk egy saját elképzelést, amikor rendelkezésre áll egy olyan API, amely teljes egészében lefedi a számunka szükséges problémát, s sokszor túl is mutat rajta. Ilyen a Commons Configuration is, amely egyszerű cél megoldására született: különféle paraméterek elmentése és visszatöltése, ezt viszont profi szinten megvalósították, a paramétereket properties-,  XML-, Windows INI fájlból, JNDI illetve JDBC forrásból is ki tudjuk olvasni gond nélkül.

Ha valaha felmerült bennünk képek kezelése, akkor érdemes a nézelődést a JavaLobby cikkénél kezdeni, ahol összeszedték a képkezelés gyakori problémáit, illetve azok megoldását. A cikk a képek tárolásával és kezelésével kezdődik, ami fontos dolog, ha meg szeretnénk érteni a képek memóriahasználatát, illetve a képeken végzett műveleteket. Ezek után a képek betöltése következik, majd a betöltött kép kirajzolása egy ablak területére. Ezek után már biztos lábban mozgunk a képek kezelésével, így a folytatásban létrehozunk egy új - üres - képet, majd megtöltve tartalommal, elmentjük azt egy fájlba.

A cikk második részénél betöltött képeken végzünk műveleteket, áttetszővé tesszük a teljes képet; átlátszóvá állítunk egy bizonyos színt; tükrözzük a képet; elforgatjuk a képet; átméretezzük a képet; s végül kivágunk egyes részeket a képből. Ez utóbbi alapjául szolgál az animációnak, amikor egy nagyobb képből (amely a mozgás fázisait tartalmazza), egyes képkockákat kivágva a kirajzolt képet cserélgetjük.