Top Mobile OS in United States

Source: StatCounter Global Stats - Mobile OS Market Share

Using java.util.Properties in Servlet to save User Preferences

import java.util.Properties;




String propertiesFileName = "my_properties.txt";

SAVE PREFERENCES:
Properties unsavedProperties = new Properties();
unsavedProperties.setProperty("my_name", "Uki");
OutputStream propOut = new FileOutputStream(new File(propertiesFileName));
unsavedProperties.store(propOut, "My Server properties");

LATER READ THE SAVED PREFERENCES:

InputStream inStream = new FileInputStream(propertiesFileName);
Properties savedPropeties = new Properties();
savedPropeties.load(inStream);
String myName = savedPropeties.getProperty("my_name");

Java Servlet: starting a thread that always runs

  • when Java Servlet starts it reads web.xml
  • add listener implementation class to your web.xml



<display-name>your_servlet_namedisplay-name>

<listener>
<listener-class>com.your_package_name.TimedServletCallerlistener-class>
listener>

  • we will use ServletContextListener interface
  • create a NEW thread (Loop) inside contextInitialized(), if you did Thread.sleep without new thread the whole Servlet would pause and container would fail to start it after 45 seconds or so


public class TimedServletCaller implements ServletContextListener
{
private static int sleepMinutes = 1;

class Loop extends Thread
{
public void run()
{
while (true)
{
Log.e("Loop is running!");
takeShortNap();
// do stuff here
}
}
}

@Override
public void contextInitialized(ServletContextEvent arg0)
{
Log.e("***** TimedServletCaller.contextInitialized()");
// execute();
Thread thread = new Loop();
thread.start();
}

private static void takeShortNap()
{
Log.i(" Pausing for " + sleepMinutes + " minute(s).");
try
{
Thread.sleep(sleepMinutes * 60 * 1000);
catch (InterruptedException e)
{
Log.e(e.getMessage());
}
}

  • restart your server (Tomcat) now you can use your Servlet, but also the Loop keeps running and doing useful things like database updates, etc.

Google IO Bootcamp iPad drawings

http://www.flickr.com/photos/dnsf/sets/72157623967332393/detail/

HD connector speed

When you are buying the external hard drive storage, I would recommend looking for eSATA connectors, backing up, or copying videos via USB is very slow.

USB 1.1 – 15 Mbps
FireWire (1394a) – 400 Mbps
USB 2.0 – 480 Mbps
FireWire 800 (1394b) – 800 Mpbs
SATA 1.5 – 1.5 Gbps
SATA 3.0 – 3.0 Gbps

near future:

USB 3.0 - 5Gbps
eSATA version of SATA 6G - 6.0Gb/s

Google Documents - please show this to your boss!

We have been using Google docs and Google sites for collaboration for couple of years now, but there are still people who have not heard about the concept. Here is a video to help.

Using HTML panel

I needed to create a subscript text with a link that open up a new popup with different content. Since HorizontalPanel does not work, I used HTMLPanel and use the table tag, which contained element id as shown below.


Click on below image to read the code: CSS


CSS code:


.subscript {
font-size: xx-small;
vertical-align: bottom;
}


.hyperlink_subscript {
text-decoration: none;
cursor: pointer;
color: #0099FF;
font-size: xx-small;
font-weight: normal;
}
Here is how it looks: 


Apache Tomcat: starting, stopping and killing processes

STOPPING:
 /opt/apache/apache-tomcat-6.0.26/webapps $ ../bin/shutdown.sh
Using CATALINA_BASE:   /opt/apache/apache-tomcat-6.0.26
Using CATALINA_HOME:   /opt/apache/apache-tomcat-6.0.26
Using CATALINA_TMPDIR: /opt/apache/apache-tomcat-6.0.26/temp
Using JRE_HOME:        /Library/Java/Home/
Using CLASSPATH:       /opt/apache/apache-tomcat-6.0.26/bin/bootstrap.jar
Mar 31, 2010 11:13:58 AM org.apache.catalina.startup.Catalina stopServer
SEVERE: Catalina.stop:
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
at java.net.Socket.connect(Socket.java:525)
at java.net.Socket.connect(Socket.java:475)
at java.net.Socket.(Socket.java:372)
at java.net.Socket.(Socket.java:186)
at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:408)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:338)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:416)

CHECKING IF STILL RUNNING:
 /opt/apache/apache-tomcat-6.0.26/webapps $ ps aux | grep tomcat
uki       3086  57.9  6.8  1506508 143136 s000  U    11:12AM   0:22.70 /Library/Java/Home//bin/java -Djava.util.logging.config.file=/opt/apache/apache-tomcat-6.0.26/conf/logging.properties -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m -Dfile.encoding=UTF-8 -Dcom.sun.management.jmxremote -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/opt/apache/apache-tomcat-6.0.26/endorsed -classpath /opt/apache/apache-tomcat-6.0.26/bin/bootstrap.jar -Dcatalina.base=/opt/apache/apache-tomcat-6.0.26 -Dcatalina.home=/opt/apache/apache-tomcat-6.0.26 -Djava.io.tmpdir=/opt/apache/apache-tomcat-6.0.26/temp org.apache.catalina.startup.Bootstrap start
uki       3120   0.2  0.0   590540    204 s000  U+   11:14AM   0:00.00 grep tomcat

KILL A PROCESS:
 /opt/apache/apache-tomcat-6.0.26/webapps $ kill 3086

CHECKING IF STILL RUNNING:
 /opt/apache/apache-tomcat-6.0.26/webapps $ ps aux | grep tomcat
uki       3122   0.9  0.0   600020    472 s000  R+   11:14AM   0:00.00 grep tomcat


STARTING:
ill-lt20220@(Wed Mar 31 11:14:27) /opt/apache/apache-tomcat-6.0.26/webapps $ ../bin/startup.sh 
Using CATALINA_BASE:   /opt/apache/apache-tomcat-6.0.26
Using CATALINA_HOME:   /opt/apache/apache-tomcat-6.0.26
Using CATALINA_TMPDIR: /opt/apache/apache-tomcat-6.0.26/temp
Using JRE_HOME:        /Library/Java/Home/
Using CLASSPATH:       /opt/apache/apache-tomcat-6.0.26/bin/bootstrap.jar
ill-lt20220@(Wed Mar 31 11:14:33) /opt/apache/apache-tomcat-6.0.26/webapps $ ps aux | grep tomcat
uki       3132  49.5  3.6  1504832  74680 s000  U    11:14AM   0:06.14 /Library/Java/Home//bin/java -Djava.util.logging.config.file=/opt/apache/apache-tomcat-6.0.26/conf/logging.properties -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m -Dfile.encoding=UTF-8 -Dcom.sun.management.jmxremote -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/opt/apache/apache-tomcat-6.0.26/endorsed -classpath /opt/apache/apache-tomcat-6.0.26/bin/bootstrap.jar -Dcatalina.base=/opt/apache/apache-tomcat-6.0.26 -Dcatalina.home=/opt/apache/apache-tomcat-6.0.26 -Djava.io.tmpdir=/opt/apache/apache-tomcat-6.0.26/temp org.apache.catalina.startup.Bootstrap start
uki       3134   0.0  0.0   590736    308 s000  R+   11:14AM   0:00.00 grep tomcat
ill-lt20220@(Wed Mar 31 11:14:41) /opt/apache/apache-tomcat-6.0.26/webapps $


CHECKING THE LOG:

/opt/apache/apache-tomcat-6.0.26/webapps $ tail -f ../logs/catalina.out
Mar 31, 2010 11:15:12 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory work
Mar 31, 2010 11:15:12 AM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Mar 31, 2010 11:15:12 AM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
Mar 31, 2010 11:15:12 AM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/88  config=null
Mar 31, 2010 11:15:12 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 36930 ms



Mac: location of hosts file

The hosts file on Mac is located at: /private/etc/hosts
The easiest way to modify it is using pico, you need to have WRITE permissions to do so.

 ~ $ cd /private/etc/
 /private/etc $ pico hosts

Eclipse: show line numbers

This is simple stuff, but it is frustrating when you want to show line numbers and cannot find the setting:

On Mac:

Eclipse -> Preferences -> General -> Editors -> Text Editors -> Show line numbers