12.14.2008

"Invalid Application" error for Gmail on mobile phones

Unless u've been living under a rock and don't use a smartphone or a blackberry, you already know about all the bells and whistles of Gmail 2 for mobile. Yay to google (: Yet another reason to fall in luv. Read up more here.

However, with some of the mobile phones (Sony Ericsson C905 in my case), when attempting to install mobile gmail app, "Invalid Application" error is received.

To work around this problem, download the jar file here to your PC and transfer it to your phone or type (case sensitive) m.google.com/app/v2.0.6/L1/gmail-g.jar in your mobile browser, and install gmail in your mobile applications directory when prompted.

If you have an older phone which does not meet memory requirement for the new version, you can download 1.x version of the app here: m.google.com/app/v1.1.0/L1/gmail-g.jar or here: m.google.com/app/v1.5.0/L1/gmail-g.jar

8.26.2008

Installing Tomcat 6.x on CentOS 5


UPDATE: This post was revised to work with java6u10 and now includes instructions for automated startup config.
FYI: if you used this post before 11/06, there have been some major changes to the start up script. This new version is the most basic and easiest. ty.

This is a quick and dirty guide for installing Apache Tomcat 6.0.18 on CentOS5. It is based on detailed instructions for CentOS 4 and tomcat 6.0.13 here. If you get no luck, please check out this link for comprehensive explanation and adopt it to your platform.
Install pre-requisite
1. Download java JDK 6 Update 10 and Java Runtime Environment (JRE) 6 Update 10 bin (NOT RPM)

2. Open terminal, su to root and move downloaded files to /root directory
$ su root
Password:
# mv [.....]
3. Create java environment
# mkdir /usr/java
# cd /usr/java
4. Execute downloaded jdk and jre bins.
# sh /root/jre-6u10-linux-i586.bin
# sh /root/jdk-6u10-linux-i586.bin
5. verify install
# ls
you should see that your /usr/java directory now contains jdk1.6.0_10 and jre1.6.0_10 directories
Install overview
1. Download and extract Apache Ant (apache-ant-1.7.1-bin.tar.gz) to /usr/share
# cd /usr/share
# tar -xzf apache-ant-1.7.1-bin.tar.gz
2. Download and extract Apache Tomcat (apache-tomcat-6.0.18.tar.gz) to /usr/share
# tar -xzf apache-tomcat-6.0.18.tar.gz
3. Enable ant link
# ln -s /usr/share/apache-ant-1.7.1/bin/ant /usr/bin
4. Set up JAVA_HOME $env in catalina.sh
# cd /usr/share/apache-tomcat-6.0.18/bin
# vi catalina.sh
5. After the first line, add following
JAVA_HOME=/usr/java/jdk1.6.0_10
6. Test config with Tomcat
# cd /usr/share/apache-tomcat-6.0.18/bin
# ./startup.sh
7. Check logs for errors
# less /usr/share/apache-tomcat-6.0.18/logs/catalina.out
8. Fix errors if any. Go to http://localhost:8080 for Tomcat's web interface.
Automate start up
1. Create script in /etc/init.d for automated start up/shutdown
# cd /etc/init.d
# vi tomcat

2. Place following in the file
#!/bin/bash
# chkconfig: 234 20 80
# description: Tomcat Server basic start/shutdown script
# processname: tomcat
JAVA_HOME=/usr/java/jdk1.6.0_10
export JAVA_HOME
TOMCAT_HOME=/usr/share/apache-tomcat-6.0.18/bin
START_TOMCAT=/usr/share/apache-tomcat-6.0.18/bin/startup.sh
STOP_TOMCAT=/usr/share/apache-tomcat-6.0.18/bin/shutdown.sh
start() {
echo -n "Starting tomcat: "
cd $TOMCAT_HOME
${START_TOMCAT}
echo "done."
}
stop() {
echo -n "Shutting down tomcat: "
cd $TOMCAT_HOME
${STOP_TOMCAT}
echo "done."
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 10
start
;;
*)
echo "Usage: $0 {start|stop|restart}"
esac
exit 0

2. Change permissions
# chmod 755 tomcat
3. Add script to system services
# chkconfig --add tomcat
4. Verify modifications (this script uses levels 2-4)
# chkconfig --level 234 tomcat on
# chkconfig --list tomcat
you should see that service using levels 2, 3 and 4:
tomcat 0:off 1:off 2:on 3:on 4:on 5:off 6:off
5. Test script start up/shutdown
# service tomcat start
# service tomcat stop
So, at this point, tomcat service will start automatically upon reboot. G'luck (:

8.25.2008

Installing Java (Sun JDK 1.6.0) on CentOS 5

This is a quick and dirty guide to installing java on CentOS5.

NOTE: do not log in as root to perform this installation, but you will need credentials with su command. During install, substitute 'user_name' with your login handle.



STEP I: SYS PREP
1. Open terminal

2. Set up working directories (in this example it's ~/rpmbuild)

$ mkdir -p ~/rpmbuild/{SOURCES,SRPMS,SPECS,RPMS,tmp,BUILD}

3. Create ~/.rpmmacros

$ echo "%_topdir /home/user_name/rpmbuild" >> .rpmmacros
$ echo "%_tmppath %{_topdir}/tmp" >> .rpmmacros

4. Log in as root and use YUM to install following packages
$ su root
Password:
# yum install -y rpm-build gcc gcc-c++ redhat-rpm-config
# yum -y install jpackage-utils
# su user_name
$



STEP II: INSTALL JAVA

1. Download JDK 1.6 update 7 self-extracting RPM version (jdk-6u7-linux-i586.bin) from Sun to ~/rpmbuild/SOURCES/

2. Download and build java-1.6.0-sun-1.6.0.7-1jpp.nosrc.rpm package
$ cd ~/rpmbuild
$ curl -L -O http://mirrors.dotsrc.org/jpackage/1.7/generic/SRPMS.non-free/java-1.6.0-sun-1.6.0.7-1jpp.nosrc.rpm
$ rpmbuild --rebuild java-1.6.0-sun-1.6.0.7-1jpp.nosrc.rpm
don't get freaked out by the errors or that it could take a little while, it's ok. Verify that RPMS directory in rpmbuild contains i586 directory with rpms.

3. su to root and migrate rpms to local yum repository

# yum localinstall ~user_name/rpmbuild/RPMS/i586/java-1.6.0-sun-1.6.0.7-1jpp.i586.rpm
NOTE: if you get "NOT SIGNED" issue (and most likely you will), resolve by the following work-around
- install X11 library to resolve libXP.so.6 dependency
# yum install libXp-devel.i386
- then plain old rpm
# rpm -Uvh ~user_name/rpmbuild/RPMS/i586/java-1.6.0-sun-1.6.0.7-1jpp.i586.rpm

4. Login as root to configure alternatives system to use new JDK
[root@blah]# alternatives --config java

5. Verify install
$ java -version
it should display java version "1.6.0_07 ....."

8.13.2008

A gift of a gift makes a perfect... gift

Whether it be a birthday, wedding or a holiday, gifting can present itself to be a serious dilemma. In some ways, it is a formality or an obligation, but also challenges creativity. Below are some ideas on how to get that perfect little something in lieu of a traditional gift.

My favorite source for all my gifts is globalgiving.org network. The company itself is admirable as their objective is to put collected donations to a good use, whether it be helping a community in crisis or having a positive effect on a challenged economy of the country in whole. No project is too big or small, and the best part is GlobalGiving gift card is 100% biodegradable. 100% tax-deductible. 100% guaranteed. Chances are they have a project that is a perfect fit. It can be selected either via topic (such as disaster recovery, health, environment, etc). Or simply search for a cause by the region. Even project selection wizard is available to allow you to make the most fitting choice.

Justgive.org is another creative way to find a perfect gift. Their directory serves as a hub for reputable donation organizations. The company offers a tad stronger focus on domestic and local charities and non-profit organizations, which allows for a more comprehensive selection of a project in your area.

Heifer International has a program that is catching attention world wide. As a donor you can extend your support, but not in a traditional way that one would expect. In their effort to fight hunger and poverty as well as improve the environment, the company provides actual live stock and resources to improve life style in the challenged areas. Their catalog includes items such as heifer, chicks, trees and honeybees.

I've used these companies in a past and gift recipients have always been both: surprised and pleased. Most important, it empowered us both to make a difference in the world. There are many other charity/donation hubs available with similar services, but I thought that I would highlight these three. Also, giving works both ways, and these portals can be used to create wish lists for yourself or those that you know.

Meaningful giving does not always translate to the gift certificates. For example, you can purchase a Christmas tree in a pot and replant it after the holidays. Planting a tree for an event or a person or simply supporting volunteering project in their honor will also be much appreciated.

Happy giving.

6.24.2008

How to help a baby bird that fallen out of the nest

In the spring and early summer many birds have little babies. Sometimes things can go wrong and baby birds can fall out of their nest. What to do if you had found one? Most people don't have it in their hearts to walk passed a helpless little creature without even trying to save its life. If you had found yourself in this situation there are some serious decisions to be made and little guy's life depends on it.

First and foremost, before getting to benevolence part, be aware that there are only 3 species of birds in US that are not protected by law:
  • Common city pigeon (aka rock dove)
  • European starling
  • House sparrow (aka English sparrow)
That still does not mean that you can keep them as pets. Further legal information can be found here. State, county and town laws may impose additional restrictions. So, the general rule of thumb is: if you didn't get it via proper retail channels, you should not keep it. Most people are simply not equipped to give the round the clock care to wild baby birds. Chances of its survival are minimal if you are unexperienced. Also understand that birds raised in captivity lack survival skills only learned in the wild, so releasing them eventually is simply not an option.

You must figure out a course of action and you must be quick about it. Avoid contact with the bird unless necessary. Keep everyone, especially children and pets away.

Confirm that baby bird is indeed in need of help. It is possible that it is a fledgling. These babies have developed feathers, and still in care of their parents, just on the ground not in their nest until they learn how to fly . If such is the case, secure the area from disturbance the best you know how, and just let it be. The nature will take its course. However, if the baby is a nestling it will need help. Nestling have underdeveloped, or very few if any feathers and tend to have a lot of yellow on the corners of their beaks.

Check if the bird is injured:
If injury is serious the humane course of action will be euthanasia. Contact animal control or animal hospital immediately. Each circumstance is different, so not everyone should take matters into their own hands.

If nestling's injuries are very minor or none proceed with the following course of action:

  • Do not call the police, fire department or animal control. Abandoned baby bird is an emergency, but not the kind those departments take care of.
  • Wild bird parents will accept the young back in their nest with human scent on it. Further, most parent birds will "adopt" the young, as long as they're from the same species. Your first course of action should be to locate the nest the bird fell out of. Be mindful and leave nothing but footprints when looking for the nest. By disturbing the environment you may risk scarring off the parent birds. If you had found the nest, be quick about putting the baby back. If you located it, but can't reach it, improvise by making your own basket nest (make sure it has drainage for accumulating water) and hang it as close as possible to the nest. Parents will find their baby. DO NOT hang around as it will scare off the parents. Observe from a far distance and be discreet. If bird is abandoned for more than 5-7 hours, proceed on to the instruction below.
  • If you're unable to locate the nest or bird has been abandoned, you have to temporarily house the baby bird until you find the placement. They have to be kept in a secure warm and quiet place with no bright light. Place a towel in a box and line it with tissues or cotton balls. Baby birds are surprisingly mobile, so make sure they cannot crawl out of the "nest" for their own safety.
  • Avoid disturbing the bird, but you'll have to feed it every couple of hours. Do not feed it pure water, fruit or any other processed foods such as bread. Take dry cat or dog food (hard boiled egg works too), soak it in a water, roll it into tiny pieces and carefully feed it to the bird. Worms, maggots or tiny bugs are ideal of course, but do not feed it things such as canned pet food as it will upset the bird's stomach. Mixing water with food will keep the baby bird hydrated.
  • Once the bird is stabilized your next step is to find placement. The only appropriate place for a wild baby bird is wildlife rehabilitation center. If you're unsure if there's one in your area, call your local animal hospital, HSUS local center or your State Wildlife Agency for a reference. You can also locate a rehabilitation center in online directory here or here.
  • Admit the baby bird to the rehabilitation center as soon as possible. The sooner you will do it, the greater chances it has for survival. Please make a donation to the center when giving the bird. Your support ensures that they help the little guy and many others like him.
Starling the lucky

It's 1:30AM and I'm awoken by the high-pitched noise I hardly think I've heard before. Looking out of my window I see one of the street cats hanging over something. Flashlight, bath robe and 5 minutes later I hold a baby-starling-bird that could have been cat's dinner. As pissed off cat gives me the death glares, I carry the bird inside for overnight stay.

At the break of dawn all attempts were made to find the nest. There was no luck. Starling baby ate really well and rested before the long drive to the new home in the morning. I'm happy to report that now he's joined other orphan birds in Raptor Trust Rehabilitation Center. Please check out their website, and if possible visit or extend donation support. These people are truly wonderful and do so much to preserve precious wildlife resources in New Jersey area.

6.11.2008

NCBI PubMed information retreival via PHP

A while back I had to use NCBI's entrez system to collect and process publication and genome records. While the system is designed to support Perl and Java api with ease, very little if any documentation is available for PHP api.

Below is the code that I've created to connect and collect data via Entez Utilities. Generally, this bit is designed based on user's query to retrieve a set of matching PIDs (Pubmed record IDs), and then utilizes Entrez Fetch to pull the actual records in xml format. The code is easily modified to suit any searching/retrieval needs. Utility and Parameter documentation can be found here: Entrez Utilities. While it is designed for Perl programmers, the parameter specifications are identical for PHP.

PHP5 code: