Öreg íróasztal

A legújabb a házunkhoz kaptuk az előző tulajdonostól ezt a régi “Nyirjes” asztalt, melyet az Ipolyvidéki Erdő és Fafeldolgozó Gazdaság jómunkásemberei készítettek el.

Nem egy új darabról van szó, hiszen az idős házaspár nászajándékként kapta valamikor a dinoszauruszok idejében (hogy Al Bundy szavaival érzékeltessem az korosztálybeli különbségeket). Rááldoztam néhány órát, megszabadítottam a lábain megjelenő penésztől, az egészet jól átmostam és kapott bútorfényt is. Azóta ez lett az íróasztalom, a munkapadom. A fotókon van még egy szitakötős tiffany lámpa, meg egy jó-drága-kézműves-terméket-előállító-speciális-eszterga is, azaz egy Mac.

VirtualBox – filesystem error

Hát, gyorsan kivert a víz ma délután… Jó ideje használok VirtualBox-ot, mindenféle probléma nélkül, de most csúnyán megtréfált az Oracle logós cucc.

Minden futó projektemnek szoktam egy saját VM-et csinálni, abban dolgozok, így szépen elkülönül és nem utolsó sorban jól snapshot-olható. Ma is éppen snapshot-ot nyomtam halt után, mert egy komoly változtatásra készültem a környezetben. A meglepetés akkor ért, mikor a virtuális gép újraindult és az fsck rémsége fogadott a konzolon, filesystem error-okat dobálva. Tehettem bármit, a partíció read-only módban jött csak be, ráadásul a file-ok rajta egy jóval régebbi snapshot szerint látszottak. Gyors SMART teszt a host gépen, majd lemásoltam egy külső HDD-re az image-eket.

Újabb próbálkozások, kézi fsck indítás, reménytelen. Ekkor – software hibára gyanakodva – kicsit utána néztem a hasonló eseteknek és láss csodát a VirtualBox 4.0.2 ismert hibájáról van szó: BLKCACHE_IOERR when creating snapshot. Egyelőre csak workaround van rá, be kell kapcsolni a host I/O cache-t a SATA Controller-hez…

Update: a Changelog szerint a 4.0.4-ben javították ezt a hibát: “Storage: fixed write errors with snapshots if the host cache is disabled (4.0 regression; bug #8221)”

SSHFS OSX-en

Adott egy szerver, melyet SSH protokollon keresztül érhetünk el és adott egy szerkesztő program, melyet helyi gépen tudunk futtatni…

macfuse_bannerEz az eset lehet egy több száz fotót, vagy sok-sok dokumentumot tartalmazó környezetben, ahol is a szerkesztő programnak (pl. PhotoShop, OpenOffice) nem akaródzik a szerveren futni. Ekkor jön segítségünkre az SSHFS azaz egy olyan file-rendszer, melyen keresztül egy távoli gép könyvtárát SSH protokollon keresztül becsatolhatjuk (mount) a helyi gépünk egy könyvtárába.

SSHFS is a filesystem client based on the SSH File Transfer Protocol. Since most SSH servers already support this protocol it is very easy to set up: i.e. on the server side there’s nothing to do. On the client side mounting the filesystem is as easy as logging into the server with ssh.

Mac-re az SSHFS több verzióban (tekezo, MacFUSE) is elérhető, én a MacFUSE mellett döntöttem.

Az installáció két egyszerű lépésben történik:

  1. A MacFUSE telepítő letöltése és installációja
  2. A MacFUSE SSHFS letöltése, kicsomagolása, és átmásolása a /usr/local/bin könyvtárba sshfs néven

A sikeres telepítés után már csak két dolgunk van, tudnunk kell a távoli szerver bejelentkezési adatait (host név, port szám, felhasználó név, jelszó), illetve létre kell hoznunk a helyi lemezen egy könyvtárat, amiben látni szeretnénk a távoli file-okat. Ezen tudás birtokában elvégezhetjük a távoli könyvtár becsatolását:

LouiSes-MacBookPro:~ louise$ mkdir /tmp/louise.hu
LouiSes-MacBookPro:~ louise$ sshfs louise@louise.hu: /tmp/louise.hu/
warning: ssh nodelay workaround disabled
Password:
kextload: /Library/Filesystems/fusefs.fs/Support/fusefs.kext loaded successfully
LouiSes-MacBookPro:~ louise$ ls /tmp/louise.hu/
Desktop			Music			favicon.ico
Documents		Pictures		mailbfr.core
Downloads		Public			unrarx
Library			Sites	

Banned IP in loop

I’ve been dealing with ssh and other port attacks today as well and noticed this problem, logged by emond.

Apple Mac OS X Leopard Server (10.5) has got an Adaptive Firewall feature – as a very useful function, that can set an IP address and a time-to-live value in minutes, then that ip instantly gets banned for about that many minutes.

Symptom presents in /var/log/system.log:

Oct 26 10:16:44 server emond[113]: Host at 69.162.110.123 will be blocked for at least 15.00 minutes
Oct 26 10:16:44 server emond[4349]: DoRunAction (child): setting the uid/gid to 0/0
Oct 26 10:16:49 server emond[113]: Host at by will be blocked for at least 15.00 minutes
Oct 26 10:16:49 server emond[4363]: DoRunAction (child): setting the uid/gid to 0/0
Oct 26 10:16:49 server emond[113]: Host at 69.162.110.123 will be blocked for at least 15.00 minutes
Oct 26 10:16:49 server emond[4365]: DoRunAction (child): setting the uid/gid to 0/0

As a solution, run afctl command with super-user account:

sudo /usr/libexec/afctl -f

Command afctl should set the start_behavior key to enable in file /etc/af.plist:

start_behavior
enable

Just verify, and fix the key firewall_address (ip address to bind) by hand:

firewall_address
xxx.xxx.xxx.xxx

Restart firewall module by serveradmin:

sudo serveradmin stop ipfilter
sudo serveradmin start ipfilter

J2ME fejlesztés OSX-en

Egy ismerősöm nemrégiben segítséget kért tőlem mobil fejlesztés témában, ezért kicsit utána néztem a dolognak, elsősorban Mac-es környezetben.

Első lépésként megnéztem az Eclipse családot – miután néhány JAVA program megírása után közelebbi kapcsolatba kerültünk – használható-e erre a célra. Mint kiderült létezik egy EclipseME névre hallgató plugin, mely lehetővé teszi a fejlesztőknek, hogy a megszokott Eclipse környezetben készíthessék az applikációkat és a külső SDK-ban található emulátoron futtassák is azokat. Sajnos a preferált Sun Wireless Toolkit Macintosh platformon nem támogatott (csak Windows és Linux binárisokat lehet letölteni) és a többi, az EclipseME által támogatott SDK közül kizárólag az Mpowerplayer volt képes életjeleket produkálni OSX-en.

Szerencsére az egész tortúra nem tartott tovább másfél óránál, miután sikerült kiválasztani a komponenseket, elkészült az első mobil telefonon is futó alkalmazásom (melynek forrását a Móricz Attila által publikált egyik példaprogram alapján készítettem el).

A szükséges, letöltendő eszközök:
1. Eclipse: www.eclipse.org
2. EclipseME plugin: eclipseme.org
3. Mpowerplayer SDK: www.mpowerplayer.com

Az Eclipse letöltéséhez és telepítéséhez nincs hozzáfűznivalóm, ki kell választani egy JAVA fejlesztéshez való verziót (csomagot), majd kicsomagolás után a /Developer/Applications könyvtárban elhelyezni.

Az EclipseME plugin sikeres telepítése után – ezt elvégezhetjük a features és a plugins könyvtár tartalmának átmásolásával az Eclipse hasonló nevű könyvtáraiba, vagy a dokumentációnak megfelelően a beépített installer használatával is – az Eclipse-en belül, a File/New/Other menüben megjelenik egy J2ME Midlet és egy J2ME Midlet Suite opció. Ugyanitt érdemes a Preprocessor beállításokat is ellenőrizni, elkerülendő a forrás file-ok mentésekor előforduló hibaüzeneteket.

Eclipse MIDP Suite Midlet

EclipseME is an Eclipse plugin to help develop J2ME MIDlets. EclipseME does the “grunt work” of connecting Wireless Toolkits to the Eclipse development environment, allowing you to focus on developing your application, rather than worrying about the special needs of J2ME development.

Az Mpowerplayer SDK jelenleg az egyetlen olyan MIDP 2.0 SDK, amit sikerült működésre bírni OSX-en is. Ez az emulátor sokat segíthet a fejlesztőknek, hiszen nem kell az elkészült programjaikat minden esetben áttölteni a telefonba a teszteléshez.

Mpowerplayer - OSX

The Mpowerplayer Software Developer Kit (SDK) includes the core of Mpowerplayer as a standalone application. It’s a pure Java emulator implementing MIDP 2.0 and MMAPI, suitable for integration with your favorite environment and IDE. Third-party integration efforts exist for Ant, Eclipse, Idea, and we hear of more efforts almost daily.

A környezet beállítása

1. Az EclipseME plugin számára definiálnunk kell egy Device-t, ezt a Preferences/J2ME/Device Management menüben tehetjük meg. Az Import gombra kattintva válasszuk ki az mpowerplayer könyvtárát, ott a plugin meg fogja találni a szükséges eszközt.

2. A kiválasztott eszközhöz (Mpowerplayer) hozzá lehet rendelni a Javadoc dokumentációt, ezt az Edit gombra kattintva, a Libraries fülön tehetjük meg, (“…/mpowerplayer/mpp-sdk/javadoc/”).

Eclipse J2ME Device Management

Egy egyszerű példaprogram és az eredménye

1. A File/New/Other menüben válasszuk ki a J2ME Midlet Suite opciót, majd hozzunk létre egy új csomagot, esetünkben “HelloWazz” néven.

2. Válasszuk ki az új projektünket, majd azon belül szintén a File/New/Other menüből válasszunk egy J2ME Midlet opciót, esetünkben “HelloWazzMidlet” néven. Ezzel létrehoztuk a csomagon (suite) belül magát a Midlet-et, aminek a forrását már szerkeszthetjük is.

3. A HelloWazzMidlet.java forrást a bejegyzésben szereplő tartalomra cserélve majd a Run menüből a Run opciót kiválasztva meglesz az első sikerélményünk a mobilos fejlesztéssel kapcsolatban.

HelloWazz Midlet

Források, linkek:
Móricz Attila: Java MIDlet programozói útmutató
Wireless Java: Developing with J2ME
J2ME hobbi programozás
Sziráczki Krisztán: Java alkalmazás fejlesztése mobiltelefonra.
BME HT: Szoftverfejlesztés mobil végberendezésekre
Kirch Tamás: Java 2 platform, Micro Edition (J2ME), MIDP
Sámoly Gábor: Mobil vásárlási rendszer fejlesztése
Bátfai Norbert: A mobil játékfejlesztés elméleti és gyakorlati momentumai
Java ME példaprogramok és leírások

Continue reading J2ME fejlesztés OSX-en