NetBeans 6.8 and OpenOffice 3.3 on Snow Leopard

A quick note to setup working OpenOffice.org plugin development on Mac OS X 10.6 (64bit)…

NetBeans v6.8 (as the last OOo SDK supported version now) works with OpenOffice Extension 2.0.6 (org-openoffice-extensions-2.0.6.nbm) and OpenOffice 3.3 SDK, but NetBeans configuration should be modified to access OpenOffice by Java. You can not create new OpenOffice.org Component (UNO) without this modification, because NetBeans unable to read Service and Interface classes from OOo and results and empty list after several loads of soffice command.

Error log message looks like following, and see why here (issue 110543):

... /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home/bin/java[14982]: dlopen(/Volumes/MBP_Addons/Application.Addon/Editors/OpenOffice.org.app/Contents/basis-link/ure-link/lib/libjpipe.jnilib, 1): no suitable image found.  Did find:\n	/Volumes/MBP_Addons/Application.Addon/Editors/OpenOffice.org.app/Contents/basis-link/ure-link/lib/libjpipe.jnilib: mach-o, but wrong architecture

The solution is simple with updating value “netbeans_default_options” in “netbeans.conf” with option “-J-d32”. You can find config file in “NetBeans 6.8.app/Contents/Resources/NetBeans/etc” folder.

Diff properties files

Do you want to find updates in properties files after a new release of an alfresco-like java application? Just see following example script to diff two properties files and show differences…

list_missing_properties.php:

/**
 * Quick sample code to diff two properties files after update
 * see more @ http://louise.hu
 * 
 * Usage:
 * 	php list_missing_properties.php "file1.properties" "file2.properties" 
 * 
 * 
 * @author LouiSe@louise.hu
 */

$ppp = null;

$diff = propertiesDiff($argv[1], $argv[2]);
echo "Properties missing in \"".$argv[2]."\":\n\n";
foreach ($diff as $key => $value){
	echo $value."=".$ppp[$value]."\n";
}
echo "\n\n";

$diff = propertiesDiff($argv[2], $argv[1]);
echo "Properties missing in \"".$argv[1]."\":\n\n";
foreach ($diff as $key => $value){
	echo $value."=".$ppp[$value]."\n";
}
echo "\n";

function getAllPropertyNames($propArray) {
	
	$propertyNames = array();
	
	for($i=0;$i

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)”

Java fejlesztés

Hmm, azt hiszem – sőt biztos vagyok benne -, hogy csak akkor érdemes Java-s fejlesztési projektbe fogni, ha a számlázandó összeg végéhez hozzá lehet írni egy nullát… Különben a veszteség igen durva lesz.

Ennél a borzalomnál lassabb, nehézkesebb, erőforrás-zabálóbb idegesítőbb, szögletesebb bullshit-et még nem termelt ki magából ez a bináris előjelű szakma… Java for mazopisták!

Simple Video Converter

Egy apró, de mégoly ravasz szerszámot eszkábáltam így saját örömre…

Erre az egyszerű videó konvertáló widget-re elsősorban azért volt szükségem, mert a családi fényképezőgépünkkel készült videókat (QuickTime/Motion JPeG) macerás volt konvertálgatni olyan formátumba, amit az asztali lejátszók is képesek elfogyasztani. Mivel a parancssori ffmpeg használata nem mondható túl elegánsnak a mai időkben, ezért fogtam a DashCode-ot és legyártottam hozzá ezt a frontend-et.

A widget-et igyekeztem a lehető legegyszerűbbre tervezni, ezért van a használata során néhány megkötés. Az első ilyen a videó file típusok listája (*.mov, *.flv, *.mpg, *.divx, *.avi), ezeket a felső legördülő listából lehet kiválasztani. A második megkötés, hogy a videókat csak bizonyos alkönyvtárakon (Downloads, Desktop és Movies) belül keresi meg, így gyorsabb és egyszerűbb lett a konvertálandók kiválasztása, file selector nélkül természetesen. A megjelenő listában egy videó file nevére kattintva az alsó fekete területen elkezdődik annak lejátszása, feltéve ha a QuickTime képes az adott formátumot értelmezni. A kijelölt videó, vagy videók (működik a multi select is) konvertálása a “Start” gomb megnyomása után kezdődik, az DivX videók a forrással megegyező könyvtárban fognak megjelenni a procedúra végén, az eredetivel megegyező néven, “.avi” kiterjesztéssel.

Nagyjából ennyi is a program ismertetője, kár lenne rá több szót vesztegetni, jó szórakozást hozzá…

Letöltés: Simple_Video_Converter.zip

Az asztali lejátszók által támogatott és lejátszott DivX videó formátum előállítására hivatott a Simple Video Converter névre keresztelt Dashboard widget. Az újabb digitális fényképezőgépek közül több (pl. a Panasonic Lumix széria) QuickTime Motion JPeG formátumban rögzíti a videókat, melyek konverzió nélkül igen nagy helyet foglalnak, ráadásul csak számítógépen jeleníthetők meg. Ezen túl a widget a videó-megosztó oldalakon használt Flash videó (flv) formátum konverziójára is alkalmas, így letöltés után ezekből a file-okból is előállítható DivX (Small, Medium, Big) formátumú videó. Ezen túl az Flash alapú videó lejátszók (FLV), az iPhone, a Sony PSP és az iPad által szeretett formátumok előállítására is van lehetőség, csak a megfelelő outputot kell kiválasztani hozzá…

Az alkalmazás megkeresi a felhasználó könyvtáraiban található videókat, majd lehetőséget ad előnézetre, illetve kiválasztható a DivX file mérete – ezáltal a minősége is – ami alapján a konverzió megtörténik.

Links web browser OSX port

I’ve made a quick universal binary port from Links, the console (Terminal os Mac) based text browser.

Links web browser on Mac Terminal

Links is a text-based browser with support for HTML tables and frames, provides:

  • a light and stable alternative to the big GUI browsers;
  • a colour terminal (X11/GUI or console);
  • lightning-fast loading and rendering of pages;
  • bookmarks, rebindable keys, multi-language support, multiple character sets;
  • background downloads (with multiple simultaneous connections);
  • support for FTP (not passive FTP) and LOCALFILE protocols, HTTP and FTP proxies;
  • SSL, https support

Download OSX universal binary package: links-1.00-osx.tar.gz (unpack into root folder)

LSDictionary v1.5

A rengeteg letöltés és a hozzájuk kapcsolódó visszajelzések alapján kicsit bővítettem a szótár adatbázisán.

LSDictionary-1.5Hogy teljesen polkorrektnek (pc) tűnjek, gyorsan beleraktam a kisebbség nyelvét, meg természetesen a másikat is a többi mellé. Az új nyelvek: cigány, dán, észt, héber, holland, portugál, svéd és török.

Apróság, de megpróbálkoztam a Quartz Composer-rel egy saját RSS olvasót összehozni, ami nem volt túl nehéz, főleg, ha elárulom, hogy az egyik demójából indultam ki… Ennek végeredménye látható a widget betöltődése után, ami a louise.hu blog legfrissebb bejegyzéseit igyekszik megjeleníteni egészen addig, amíg a felhasználó el nem kezdi böködni az egérrel a felületet.

Link és letöltés: LSDictionary v1.5

LSDictionary – többnyelvű szótár

A mai nap folyamán elkészült az LSDictionary widget 1.4-es verziója, mely az angol-magyar nyelvpáron kívül immár a magyar és az eszperantó, finn, francia, latin, német illetve spanyol nyelvek közötti szótárazást és fordítást is elérhetővé teszi a felhasználó számára.

LSDictionary-multi_languageA szótár különlegessége abból adódik, hogy egyidejűleg képes offline és online működésre is, azaz ha egy szót, vagy kifejezést nem talál a helyi adatbázisában akkor a Google Translate segítségével keresi azt meg. Az ilyen találatokkal könnyedén bővíthető a saját adatbázis. Minden adatbázis szabadon bővíthető, az új szavakat és kifejezéseket a program az adott felhasználóhoz rendelve, helyben tárolja.

Új tulajdonságként került bele a programba a beállító panelen elhelyezett nyelv és keresési pontosság választó is. Ez utóbbival a konkrét szóra való kereséstől, a szótöredékes keresésig lehet változtatni az értékeket.

Link és letöltés: LSDictionary v1.4