Thursday, September 26, 2013

No Visio on Macs :-(

Started working on Macs recently and got to know that there's no Visio on Mac :-(. Visio is my favorite tool for all things drawn - UML diagrams, architecture diagrams, everything. The flexibility and the breath of what's possible in Visio is enormous. I stumbled for sometime to realize a block diagram in Skitch but then finally gave up. OmniGraffle is a good alternative. Still a learning curve but very close to Visio.

Friday, August 16, 2013

Signing PDF docs using Adobe Reader


Adobe Reader now provides a way to place your handwritten signature on PDF docs. This has saved me a ton of time (avoind the following workflow....print doc => sign => scan)
  1. Create a signature using Penultimate iPad app.
  2. Save it as a photo and email it to you.
  3. Open PDF in Adobe Reader X
  4. Click on the Signature icon...This opens up a tab on the right side
  5. Click on Place Signature - this will give you the option of either scribbling a signature or opening an image
  6. Import your Penultimate Signature....
  7. Now place your signature wherever you want in the document.

Wednesday, June 26, 2013

Friday, June 14, 2013

Sending books to your Kindle

Found this article that introduced me to the SendToKindle desktop app from Amazon. This is the effective way of having your non Amazon books synced to your Kindle cloud account, so that all of your devices can have them, rather than side loading them. There are versions for PC and Mac.

Additionally, you can use Calibre to convert PDF docs to .mobi before sending them to your Kindle account. 

Thursday, May 16, 2013

Outputting JMX Monitoring Points

If you need to programmatically access all JMX monitoring points for your Servlet app, do the following:

1. Add the following VM arguments to the Tomcat Run Configuration (This can be done in Eclipse/STS run configurations):
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=8234
-Dcom.sun.management.jmxremote.ssl=false

2. Then run the following Java Program:
package com.rim.platform.mdm.core.service.email;

import java.io.IOException;
import java.util.Set;

import javax.management.InstanceNotFoundException;
import javax.management.IntrospectionException;
import javax.management.MBeanAttributeInfo;
import javax.management.MBeanInfo;
import javax.management.MBeanServerConnection;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectInstance;
import javax.management.ReflectionException;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;

public class MonitoringPoints
{

    public MonitoringPoints()
    {
    }

    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception
    {
        String host = "localhost"; 
        int port = 8234;
        String url = "service:jmx:rmi:///jndi/rmi://" + host + ":" + port + "/jmxrmi";
        printAll(url);
    }

    public static void printAll(String url) throws IOException, MalformedObjectNameException, 
            InstanceNotFoundException, IntrospectionException, ReflectionException
    {
        JMXServiceURL serviceUrl = new JMXServiceURL(url);
        JMXConnector jmxConnector = JMXConnectorFactory.connect(serviceUrl, null);
        try
        {
            MBeanServerConnection mbeanConn = jmxConnector.getMBeanServerConnection();
            // now query to get the beans or whatever
            Set beanSet = mbeanConn.queryMBeans(null, null);
            for (ObjectInstance instance : beanSet)
            {
                MBeanInfo info = mbeanConn.getMBeanInfo(instance.getObjectName());
                MBeanAttributeInfo[] mai = info.getAttributes();
                System.out.println("\n******* Monitoring points for: " + instance.getObjectName());
                for (MBeanAttributeInfo object : mai)
                {
                    System.out.println(object.getName());
                }
            }
        }
        finally
        {
            jmxConnector.close();
        }
    }
}