GNU/Linux, Virtualization, Open Source, Oracle Fusion Middleware, Knowledge Management, troubleshooting & performance tuning tips.

Sunday, November 30, 2008

Free Dictionary solution for iPhone - use Stardict dictionaries for weDict

As a non native English speaker, I need good English-English dictionaries not only on my Laptop/desktop but also in my pocket.

On Treo 650, there is Zdic (free and opensouce app written by Chinese folks) with all kinds of free .pdb format dictionaries, works perfectly on Palm OS. I really miss the good part of Treo and Palm OS. While Palm is dying and hopeless, I have to choose my new platform. Early November I bought my new iPhone 3g 8G, simply because I am a *nix lover, its overall specifications meet my needs. In addtion, I don't take Windows (Mobile/CE) into account anyway.

As a result, I have to find a new bunch of apps and research the OS X mobile a bit. Fortunately it is a trimmed version of OS X, not hard for me at all.

Works for:
iPhone firmware 2.1 2.2
weDict 1.1 /weDict Pro 1.2 (works for 1.3 as well)

Note: if you upgrade weDictPro, custom added dictionaries will be kept.

Prerequisites:
  1. Jailbreak it
    use PWNageTool on Mac or QuickPWN on Windows, recommend using Cydia as package management tool, for more info, google please.
  2. OpenSSH installed and service started
    Use Cydia to install, search openssh package. ATP will take care of the installation and dependencies. In addition, I strongly recommend that we install Terminal/Finder/BossPrefs/SBSettings.
  3. Download the dictionaries you want in any language
    http://stardict.sourceforge.net/Dictionaries.php
  4. iPhone connected to the same wireless network as you Desktop/Laptop
    Get the LAN IP address, we need to use SSH.
  5. Any SSH tool
    Cyberduck or FileZilla for OS X
    Filezilla for Linux
    WinSCP/Filezilla for Windows
Hereby I use LDOCE as an example, it works for all other Stardict re-packed dictionaries.
1. Extrac stardict-longman-2.4.2.tar.bz2
2. Rename longman.dict.dz to longman.dict.gz or zip
3. Extrace and get longman.dict
4. Copy longman.idx and longman.ifo to /private/var/mobile/Applications/BFEA9FDA-0903-4321-9A7D-1A0DA030FF21/Documents folder (red+bold string varies on different devices, it may take some time to dig the right folder)
5. Change their attributes to 755 (-rwxr-x-r-x)
6. Launch weDict/weDict Pro, tap config button on bottom right, newly added dictionaries should be listed. Check the screen shot below:


If you don't like the dict name, you can double tap on the name and change it to whatever you like. If for some reason they are not listed, check the prefix for the dictionary file, make sure they are the same. Hold Home for 6 seconds to force exit the app, check again, it should work.


Difference between weDict Pro and weDict:
The Pro version has a built-in FTP service based on DiddyFTPServer, used to upload dictionaries . It's actually pointing to the same folder as I mentioned in the steps. And it is also capable to download dictionaries from a URL.

Also some one said performance of the free version is poorer than Pro, I don't know if it's true. Anyway, it's only 6 bucks.

Fore more info:
http://app.weiphone.com/wedict/index.html

Hope this helps. iPhone is excellent:)

Thursday, November 20, 2008

Too Many Open Files on Ubuntu Linux when installing Oracle BPM

Recently I've been working on VM images for test a test environment based on the new Oracle BPM 10gR3 release and the OS has to be Linux for some reason.

Environment
OS: Ubuntu 8.10 Intrepid Ibex 32-bit
Kernel: 2.6.27-7-generic
JDK: Sun JDK 1.6.0_10
Weblogic Server 10gR3 on JRockit 1.6.0_05 (R27.6.0-50 linux ia32)
(I use the Oracle Service Bus 10gR3 install media which includes WLS)
Oracle 10g XE


We can do it even though Ubuntu is not a supported configuration as per the support matrix. Baiscally all Linux distribution is the same, the only thing matters is the administrator;-)
Interoperability Matrix:
http://www.oracle.com/technology/products/bpm/obpm_config_matrix.html

Note: Create a user for WLS and OBPM is recommended. Using root to install is okay but DO remember to change the owner of the destination to the user created to run WLS and OBPM later. DO NOT use root to run WLS and OBPM in production environment for security.

  1. Launch admin center using root, just use su -s to avoid typing sudo all the time. If not we may encounter permission problems.
    /opt/OracleBPMwlHome/bin/./obpmadmcenter

  2. Click configuration, in Directory tab, click add to create directory. I don't want to talk all the details, please refer to the official installation guide for more details:http://download.oracle.com/docs/cd/E13154_01/bpm/docs65/config_guide/index.html

    Normally this is probably a pain free process (actually it was on Windows as I did it a few days ago)

    In this case, the Configuration wizard hang at around 70%, like in the screenshot.

So I checked the WLS logs as well as the Adim Center logs. It seems that errors were encountered when executing WLST. Errors in Admin Center log:

java.io.FileNotFoundException: /opt/bea/user_projects/domains/bpm/config/config.xml (Too many open files)

This is simply due to the default Linux user security limit, by default a user's max open files (per Terminal session) is 1024 on almost all Linux distributions that I am aware of. This default value is the culprit in this case. For WebLogic Server deployment, it is recommended to change the value to at lease 131072 (Oracle Enterprise Linux recommended, changes can be seen by looking into the oracle-validated RPM package).

Session Wide Solution:
Increase the limit of open files using the command ulimit -n 131072 in a Terminal session, start the obpmadmcenter and WLS in the same Terminal session.

Use ulimit -a or ulimit -n to check the new limit. This is just a temporary workaround, you lose the changes once terminal session ends.

Make the change permanent:
Change the file /etc/security/limits.conf (root access required)
Add the following lines, assume user is oracle (the following changes are recomended by Oracle, for Fusion Middleware and Database 10g/11g):

oracle hard nofile 131072
oracle soft nofile 131072
oracle hard nproc 131072
oracle soft nproc 131072
oracle soft core unlimited
oracle hard core unlimited
oracle soft memlock 3500000
oracle hard memlock 3500000
# Recommended stack hard limit 32MB for oracle installations
# oracle hard stack 32768

Start Admin Center, start BPM Web applications, then Weblogic Server. Now you can login to Process Administrator (webconsole) and Workspace and see the sample process if you selected the option.

Alternative workaround(from Official Debian Documentation and Oracle Technology Network):

make the change without rebooting the server box

sysctl -w fs.file-max 65536
sysctl -a
(echo "65536" > /proc/sys/fs/file-max)

To make this change permanent by inserting the kernel parameter in the /etc/sysctl.conf startup file:
# echo "fs.file-max=65536" >> /etc/sysctl.conf

To query the current usage of file handles by using the following:
# cat /proc/sys/fs/file-nr
825 0 65536

Difference between changing the resource limits via ulimit and sysctl:

Basically the priority is: soft limit < style="font-weight: normal;">The Linux kernel provides the getrlimit and setrlimit system calls to get and set resource limits per process. Each resource has an associated soft and hard limit. The soft limit is the value that the kernel enforces for the corresponding resource. The hard limit acts as a ceiling for the soft limit: an unprivileged process may only set its soft limit to a value in the range from 0 up to the hard limit, and (irreversibly) lower its hard limit. A privileged process (one with the CAP_SYS_RESOURCE capability) may make arbitrary changes to either limit value.

Doubt: Why the output from cat /proc/sys/fs/file-nr and lsof | wc -l always different?
Basically, file-nr provides the open File Descriptors (Data Structure, required handle when applications try to open a file) while lsof outputs Open Files including those NOT using File Descriptors (e.g. current working directory, library files mapped into memory, executable text file etc...).

Generally speaking, lsof of a process always > process's open file descriptors

Do a quick test on your system:
Get Firefox's pid

Get number of opened files by Firefox
lsof -p pid | wc -l
Or
lsof | grep pid | wc -l

Check Firefox process's File Descriptors
ls /proc/pid/fd | wc -l

Compare, got it?
Note: Loaded Library files can be checked by digging into /proc/pid/maps

For Oracle Enterprise Linux and Red Hat Enterprise Linux
Install the oracle-validated package which will resolve all Oracle Fusion Middleware and Database required dependencies and system configurations. Simple run yum install oracle-validated or download the rpm and manually install it!

Tips: Install OpenSSH for easy management as a VM. If you prefer Web UI, try webmin it is also a good tool for overall management. I install webmin on each of my Ubuntu Server VM or box.

References:

Monday, November 17, 2008

Always Remember to Lock your Computer Windows/Linux/Mac OS X

It's always important to lock your computer when you are away from it, even for a short while. I do see a lot of my friends, colleagues they just don't do this. They are not aware of the impact of a malicious attempt. You never know what happened until you find something weird happened to you data/bank account or things like that.

I formed this good habit when I was working for company M. At that time, if you don't lock you computer and was noticed by anyone an invitation email to all team members for lunch or dinner will be sent out. Well, it's no good to you wallet:(


Windows Family
Hotkey/Shortcut
Win+L or Ctrl+Alt+Del and press L

GNU/Linux
Ctrl+Alt+L
Note: at least this works on Debian/Ubuntu and Fedora Core series, GNOME Desktop Environment. Not sure if it applies to all distributions as they may use different desktop environment like KDE, XFCE, WM...

If you use GNOME, you can also add Lock screen applet and to do the same by clicking it.

Mac OS X
Use the Free locker widget in Dashboard, the fastest way would be F12 - > Double click on Lock widget.

Download: http://www.apple.com/downloads/dashboard/networking_security/locker.html

Alternative:
1. In QuickSilver, Create a trigger for /System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app, in my case, I use command+L which is easier to remember.

Note: It's a bit weird to create trigger, especially the process to search. For peace of mind, just copy and paste the full path of the ScreenSaverEngine.app:)




Special Thanks to Brian who shared the tips with us in comment:)

2. execute this command in Terminal
/System/Library/CoreServices/"Menu Extras"/User.menu/Contents/Resources/CGSession -suspend


I don't like to use the hot corner to trigger a screen saver anyway. So to normal users use the Locker widget is probably the best approach I have found so far to lock a Mac.

It's weird to me that Apple don't assign a key combination to lock OS X.

Hope this helps.

Friday, November 14, 2008

Switch Oracle BPM (ALBPM) Studio Language

AquaLogic (Fuego) BPM is now part of Oracle BPM Suite and renamed to Oracle BPM.

Back in the 5.x era, the studio IDE is a Swing based app. As far as I know, from 5.7 BEA started to implement i18n for Studio. However, only several languages are available. It can be switched via menu.

From 6.0 whose code name is puma, a new Studio IDE is built on top of Eclipse IDE. In theory it is should support multiligual. However there is not apparent options in the UI to switch language.

A coworker of mine in China asked my that why his ALBPM 6.0 Studio was in Chinese Simplified. And he was not able to change it. After looking at the locale setting which was zh_CN. And he was not willing to change the system locale. So I told him to try switching using eclipse way:) It did work. I then digged further into the installation folder and found it is multilingual in fact.

Tip applicable for version:
ALBPM Studio 6.0.x
Oracle BPM Studio 10gR3 (10.3) which is ALBPM 6.5

How to use:
Windows OS
Edit the Studio shortcut and add the -nl option. It should look like this:
C:\Oracle\OracleBPMStudio\eclipse\eclipse.exe -nl de

*NIX
Assume that we install Studio in /opt folder.
/opt/OracleBPMStudio/eclipse/./eclipse -nl de
Note: In the 10gR3 Studio installatio folder, there is even no icon for the app but a Eclipse icon...

Check the installation folder and you will find the available languages:
C:\OracleBPMStudio\studio\eclipse\plugins
/opt/OracleBPMStudio/studio/eclipse/plugins

en
es
ja
ko
zh
zh_TW
de
fr
it
nl
pt

For more info on Eclipse:
http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclipse.platform.doc.user/tasks/running_eclipse.htm

About Me

Sydney, NSW, Australia
Keep Life Simple and Stupid:)

FriendFeed badge

Tags