LSDictionary – német-magyar szótár

Van nekem egy kis tündérem, akit Vivinek hívnak, immár több mint 8 éve boldogítjuk egymást. Mivel ez a kis tündér németet tanul – méghozzá nem is akármilyen eredménnyel -, gondoltam meglepem valamivel…

LSDictionary-germanAz LSDictionary-hoz készítettem egy német-magyar, magyar-német kiterjesztést, mely a MEK-en fellelhető német-magyar szótár adatbázisára épül. A belső adatbázis így közel 20.000 szót tartalmaz és természetesen ez a verzió sem mentes az online (Google Translate) fordítás kényelmétől, azaz nem csak szavakat, hanem teljes mondatokat is fordíthatunk vele.

Letöltés: LSDictionary 1.3 (német-magyar) – widget (Mac OS X 10.4+)

LSDictionary – szótár widget

Újabb nap, újabb többnyelvű szótár – azaz semmi különös nem történt. Eddig is voltak és vélhetőleg lesznek is még ilyen játékaim…

LSDictionary widget, OSXMa reggel az egyik HUP fórumon olvastam, hogy valaki írt a régi Vonyó féle adatbázishoz saját keresőt és ahhoz egy Java szörnyet a megjelenítéshez. Egy kicsit ügyeskedtem és hozzá-konvertáltam egy angol ige és melléknév vonzattárt is ehhez az adatbázishoz, így több mint 190.000 elemre bővült az okossága.

Gondoltam, jó kockához méltó pihenésképpen meggyártom a frontend Mac-es verzióját, egy elegáns Dashboard widget formájában. Ehhez az új XCode-ban rejtőzködő Dashcode lett a cimborám, így mintegy negyven perc után megszületett a post-ot tematizáló widget. Nagyon jól kitalálták ezt a kis fejlesztő cuccot, tényleg minden ott van benne, ahol várja az ember!

Tehát kivadásztam a qed-0.1.6.tar.bz2 archívból a szótár adatbázist, majd egy maximálisan a funkcionalitásra optimalizált felületet ácsoltam hozzá. Semmi beállítás, semmi nyomógomb, csak írod amit tudni akarsz és ha van mit, akkor az ámítógép válaszol. A találati listában aláhúzza a kereséshez használt szót, szótöredéket, így könnyebb megtalálni.

LSDictionary Mac OS X widget - Google TranslateNem sokat kell küzdeni a nyelvváltással sem, a találatok között sötétebb színnel szedi az angol részt, míg világosabbal a magyart – bármely nyelven írjuk be a kereső kifejezést, meg fogja találni. Ne zavarjon meg senkit a scrollbar hiánya, ez is az optimalizálásnak esett áldozatul, ettől függetlenül lehet bátran tekerni a görgőt az egéren, vagy húzkodni a kétújjast a tapipadon.

Mivel sok esetben nem csak szavakat szeretnénk fordítani, hanem kifejezéseket, vagy komplett mondatokat is, ezért belekerült a programba egy Google Translate interface. Ha a keresőbe írt kifejezést nem találja a helyi adatbázisban, akkor megpróbálja lefordíttatni a nagy-testvérrel. Természetesen itt is érvényes a fent említett egyszerű működés, a beírt szöveg alapján kitalálja, hogy milyen nyelvű lehet, majd annak megfelelően fordítja le a másik nyelvre…

LSDictionary-multi_languageA programozás során sikerült belefutnom egy érdekes problémába, aminek során a Dashcode-ban jól működött a hálózatos rész, míg a Dashboard-ba deploy-olva nem. Ennek látszólagos oka a Widget Attributes részben beállítható Allow Network Access paraméter hiány volt, noha természetesen ott figyelt az Info.plist file-ban. A megoldás egyszerű lényeknek egy gép, másoknak egy Dashboard újraindítás…

Jah, és hogy miért LSDictionary a neve? Hát legyen ez egy ilyen anniversary dolog… :)

Frissítés, v1.5 (2009. november 14):

  • új szótárak (cigány, dán, észt, héber, holland, portugál, svéd és török – forrás)
  • frissített felület kód, XCode 3.2.1, Dashcode
  • RSS olvasó splash

Frissítés, v1.4 (2009. november 8):

  • többnyelvű szótárak támogatása (angol, eszperantó, finn, francia, latin, német, spanyol – forrás)
  • javított keresés, a beállító panelen definiálható pontosság

Frissítés, v1.3 (2009. július 3):

  • új tematikus szótárak: autóverseny, levelezés, utazás, bank, szólások, orvoslás, betegségek, járművek, közlekedés, érzelem, törvény, politika, vallás, nyelvészet
  • pontosabb keresés, rendezett válasz lista
  • szótár bővítés Google Translate találat, vagy saját adatok alapján (“+” gomb)
  • a speciális karakterek kezelésének finomítása

Frissítés, v1.2 (2009. június 26):

  • a találati listában a szövegre kattintva kimondja, felolvassa a szöveget (text to speech)
  • a bal alsó sarokban lévő + gombbal a Google Translate által lefordított kifejezés hozzáadható a helyi adatbázishoz
  • több adatbázis file is használható, ehhez “en-hu_*.dic” név maszkkal kell berakni a widget könyvtárába, ahol minden rekordot egy “\n” (soremelés) karakter és minden mezőt egy ” :: ” karaktersorozat választ el (“monkey :: majom\n”)

Letöltés:

Boost on Ubuntu

Current Ubuntu and Debian distributions lacks up-to-date version of Boost C++ library.

Here is a simple script to install new version with required packages:

#!/bin/sh

# Install packages to Ubuntu (8.04)
sudo apt-get install curl make flex bison libtool automake autoconf
sudo apt-get install g++ python-dev
sudo apt-get install libexpat1-dev libicu-dev libopenmpi-dev libz-dev libbz2-dev
#sudo apt-get install libboost-dev

# Download 1.35+ boost C++ library instead of old (1.34) releases in Ubuntu Linux
BOOST_VERSION=1_38
curl -O http://dfn.dl.sourceforge.net/sourceforge/boost/boost_${BOOST_VERSION}_0.tar.bz2
tar xvjpf boost_${BOOST_VERSION}_0.tar.bz2
cd boost_${BOOST_VERSION}_0
echo "using mpi ;" >>user-config.jam
EXPAT_INCLUDE=/usr/include
EXPAT_LIBPATH=/usr/lib
ICU_PATH=/usr
MPI_PATH=/usr
./configure
make
sudo make install
sudo ln -s /usr/local/include/boost-${BOOST_VERSION}/boost /usr/local/include/boost
cd ${CURRENTDIR}

Eclipse and Aptana plugin update error

Do you have error message “Resulting configuration does not contain the platform.” after starting Eclipse including Aptana plugin on Mac OS X host?

The solution is:

  1. Delete folder “~/Library/Application Support/Aptana”
  2. Delete folder “~/Documents/Aptana Studio” (or Aptana, Aptana Studio Workspace)

Update error of Aptana Professional plugin occured by a previous installation of standalone version…

So, i’ve found an interesting style to change theme to a dark colour set: Green Chaud

So, first you have to import every col file one by one in the options (Window > Preferences > Aptana > Editors > CSS / HTML / JavaScript / PHP / ScriptDoc / XML).

Then you’ll have to set the line numbers color by hand (if you are showing them) : Go in (Window > Preferences > General > Editors > Text Editors), and then set the color of “Line number foreground”. The RGB code of the color is 128 / 159 / 128.

ExtTranslator – a realtime text translator

Do you like foreign language translators?

ExtTranslator - online multi language text translator

Now, i would like to show you a new, realtime translator with following features:

  • ExtJS UI
  • Google Translate AJAX
  • two panels with language selectors
  • type and translate (automatic translation on enter, space, “.”, “,”, “!” and “?” keypresses)
  • nothing special, just works…

Click here to start ExtTranslator!

Xcode on OSX 10.4 Tiger

If you have Mac OS X Tiger (10.4) and want to download and install Xcode from Apple site, you need following steps:

  1. Log in to ADC site
  2. Click on Downloads at Member Areas section
  3. Find and select Developer Tools on the right Downloads sidebar
  4. Scroll down to find Xcode 2.5 in Developer Tools list
  5. Download file xcode25_8m2558_developerdvd.dmg

Xcode 2.5 is the latest version with support of Tiger installation, but not shown on Xcode site – ADC membership required!

gprof on OSX Leopard

Step-by-step example to understand usage of gprof on Mac OS X host.

1. Create an example C source, test.c:

#include 
#include 

int main(void) {
    char some_text[128];
    
    strcpy(some_text, "1234567890");
    printf("%s\n", some_text);

    return(0);
}

2. Create Makefile to build universal binary for i386 and PowerPC targets:

#
# Universal build profile for gprof on Mac OS X by LouiSe@louise.hu
#

UNIVERSAL_BUILD = -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 -arch i386 -arch ppc
CFLAGS = -Wall $(UNIVERSAL_BUILD) -pg
CC = gcc $(CFLAGS)
LDFLAGS = $(UNIVERSAL_BUILD) -pg

all: test

test.o: test.c
	$(CC) -c test.c

test: test.o
	$(CC) $(LDFLAGS) -o test test.o

clean:
	rm -f *o; rm -f test
    * A universal binary is, in Apple parlance, an executable file or application bundle that runs natively on either PowerPC or x86 (Intel)-based Macintosh computers; it is an implementation of the concept more generally known as a “fat binary”.

3. Build binary with make command:

bash-3.2$ make
gcc -Wall -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 -arch i386 -arch ppc -pg -c test.c
gcc -Wall -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 -arch i386 -arch ppc -pg -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 -arch i386 -arch ppc -pg -o test test.o

4. Run test application:

bash-3.2$ ./test 
1234567890

5. Find generated gmon.out (Your program will write the profile data into a file called “gmon.out” just before exiting. If there is already a file called “gmon.out”, its contents are overwritten. There is currently no way to tell the program to write the profile data under a different name, but you can rename the file afterward if you are concerned that it may be overwritten.):

bash-3.2$ ls -al
total 1376
drwxr-xr-x   7 louise  staff     238 May 11 11:48 .
drwxr-xr-x  21 louise  staff     714 May 11 10:17 ..
-rw-r--r--   1 louise  staff     391 May 11 11:11 Makefile
-rw-r--r--   1 louise  staff  648699 May 11 11:50 gmon.out
-rwxr-xr-x   1 louise  staff   29892 May 11 11:48 test
-rw-r--r--   1 louise  staff     173 May 11 11:08 test.c
-rw-r--r--   1 louise  staff    9104 May 11 11:48 test.o
    * In order to write the `gmon.out’ file properly, your program must exit normally: by returning from main or by calling exit. Calling the low-level function _exit does not write the profile data, and neither does abnormal termination due to an unhandled signal.

6. Start gmon profiler:

bash-3.2$ gprof test gmon.out 
gprof: file: test does not contain the host architecture
    * I don’t know how to avoid this architecture mismatch message, remarks in gmon man page: “UNIVERSAL FILE SUPPORT: gprof accepts a “universal” file for the a.out file, using the host architecture from the file. (It is an error if the “universal” file does not contain the host architecture.)”

7. Display the machine’s architecture type:

bash-3.2$ arch 
i386

8. Take universal header from binary:

bash-3.2$ otool -v -f test
Fat headers
fat_magic FAT_MAGIC
nfat_arch 2
architecture i386
    cputype CPU_TYPE_I386
    cpusubtype CPU_SUBTYPE_I386_ALL
    capabilities 0x0
    offset 4096
    size 13372
    align 2^12 (4096)
architecture ppc
    cputype CPU_TYPE_POWERPC
    cpusubtype CPU_SUBTYPE_POWERPC_ALL
    capabilities 0x0
    offset 20480
    size 9412
    align 2^12 (4096)

Update: gprof works on OSX Snow Leopard 10.6.1!

granularity: each sample hit covers 4 byte(s) no time propagated

                                  called/total       parents 
index  %time    self descendents  called+self    name    	index
                                  called/total       children

                0.00        0.00       1/1           __start [1856]
[114]    0.0    0.00        0.00       1         _main [114]

PIC30 toolchain on OSX

I found a good build script to create Mac OS X toolchain with C30 binutils and GCC compiler at Bas van Klinkenberg’s site, but i’ve got same problem like other people in comments:

Process: as
Path: .../bin/as
Identifier: as
Version: ??? (???)
Code Type: X86 (Native)
Parent Process: sh

OS Version: Mac OS X 10.5.6 (9G55)
Report Version: 1

Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0×0000000000084318
Crashed Thread: 0

Thread 0 Crashed:
0 libSystem.B.dylib 0×9471a7c4 strcpy + 52
1 as 0×0006c95b process_resource_file + 59
2 as 0×0006d012 pic30_update_resource + 258
3 as 0×0003c30d bfd_init + 29
4 as 0×00004ae7 main + 183
5 as 0×00001dd6 start + 54

After launching pic30-elf-as in gdb, backtrace could help to find the reason of bus error/segmentation fault message.

Here is the problematic code segment in file c30_resource/src/generato/resource.c, function read_rib():

  if (stat(name,&fileinfo) == -1) {
    /* name cannot be statted */
    /* this could be because of the reoganization of the install directory 
     * some of the binaries are in the same directory as the resource file,
     * some are one directory below it... try moving one up and looking again
     */
    char *c;
    char *ultimate = (char *)name,
         *penultimate = (char *)name;
    char *temp;

    for (c = (char *)name; *c; c++) {
      if ((*c == '/') || (*c == '\\')) {
        penultimate = ultimate;
        ultimate = c;
        while (c[1] == *c) c++;  /* ignore duplicate slashes */
      }
    }
    temp = (char *)xcalloc(strlen(ultimate)+1,1);
    strcpy(temp, ultimate);
    strcpy(penultimate,ultimate);
    stat(name,&fileinfo);
  }

If the path name of current working (install) directory is longer than predefined resource filename (pic30_resource_file) at argument of read_rib() funtion, a bus error occurs here:

strcpy(penultimate,ultimate);

Static string definition at acme/bfd/cpu-pic30.c:

static char *pic30_resource_file = "/usr/local/share/pic30-support/c30_device.info"; 

Possible solutions:
– copy install directory contents into /usr/local
– copy install directory to a higher level in directory tree
– create a symlink of ${TOOLCHAINDIR}/share/pic30-support to /usr/local/share/pic30-support
Microchip Technology Inc. fix this terrible bug in binutils package

Eclipse integration with PIC C Builder

PIC30 Eclipse: test build

The PicCBuilder is an Eclipse plugin for allowing the use of Eclipse CDT as the editor and builder of projects for Microchip PIC microcontrollers. It creates makefiles that involke the C30 toolchain to generate the binary files.

Additional properties to set – following HOWTO – in Eclipse (my toolchain in /opt/pic30-toolchain folder):

Links:
Peter-Jan Randewijk: Microchip MPLAB C30 v3.00
Pilot’s logbook: MPLAB C30 rev 3.02
dsPIC30F Language Tools Quick Reference Guide
MPLAB C30 User Guide