Java Performance Links

HP Developer Anywhere Updated to 10.01 on June 1, 2013

New Features in this Release
l App redeployment. You can quickly redeploy your app when your Java code changes.
l Automatically reload app configuration files. HP Anywhere IDE automatically applies
changes to your app’s configuration files to the app running on the HP Anywhere server, so you
don’t need to manually reload your app every time you modify these files.
l New jQuery Mobile templates. You can now use out-of-the-box jQuery Mobile templates to
create Hello World and My Report apps.
l Minification support for your apps.HP Anywhere IDE comes complete with a built-in
mechanism that automatically minifies your apps, so they’re always ready for production.
l Automatic updates. Your HP Anywhere IDE Plugin is automatically updated, so you always
have the latest version of the plugin at your fingertips.
l Eclipse Marketplace. You can now download the HP Anywhere IDE Plugin directly from
Eclipse Marketplace.
l Bug fixes. For details, see “Fixed Defects in this Release” on the next page.

http://developer.hpanywhere.com/mind-zone/

Fixed Defects in this Release
The reference number for each fixed defect is the Change Request (QCCR) number. For more
information about fixed defects, visit HP Software Support Online, or contact your HP Support
representative directly.
The following defects are fixed in HP Anywhere IDE (Eclipse) 10.01:
l Coexistence of HP Anywhere IDE and HP Anywhere server: HP Anywhere IDE cannot
reside on the same machine as HP Anywhere server. If HP Anywhere server was already
installed on the machine, the installer did not prevent the installation of HP Anywhere IDE.
(QCCR161516)
l New app version always set to 1.0.0: If you changed the app version in the HP Anywhere App
Project wizard to anything other than the default 1.0.0, the change was ignored. (QCCR158307)
l Inaccessible descriptor file (relevant for WebOS catalog): The <app_name>-
descriptor.xml file was wrapped in the WAR file, and therefore, the app’s metadata was not
accessible when uploading to the WebOS catalog. (QCCR158935)
l OutOfMemoryError: PermGen space error message: This error message was sometimes
displayed when uploading to the HP Anywhere server. (QCCR162145)
l HP Anywhere IDE not shown by default: When you opened HP Anywhere IDE, the default
perspective was set to the Java IDE instead of HP Anywhere IDE. (QCCR160985)
l Incorrect error message for new project with existing name: If you tried to create a project
using an existing project name, a general “failed” error message was displayed that did not
indicate the reason. (QCCR160990)
l HP AnywhereIDE would not start if JDK 1.6 was installed: If JDK 1.6 was installed on the
machine, HP Anywhere IDE failed to open even though JDK 1.7 was also installed on the
machine. (QCCR160984)
l Generic log file: Apps created using

Log Scraping

package com.agilemobiledeveloper.logcheck;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

/**
*
* @author spannt
*
*/
public class LogScraper {

/**
* @param args
*/
public static void main(String[] args) {
String SFTPHOST = "myunixsite.com";
int SFTPPORT = 22;
String SFTPUSER = "myunixid";
String SFTPPASS = "myunixpassword";
String SFTPWORKINGDIR = "/some/unix/directory";
String SERRORFILE = "SystemErr.log";
String SOUTFILE = "SystemOut.log";

Session session = null;
Channel channel = null;
ChannelSftp channelSftp = null;

StringBuilder out = new StringBuilder();

try {
JSch jsch = new JSch();
session = jsch.getSession(SFTPUSER, SFTPHOST, SFTPPORT);
session.setPassword(SFTPPASS);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp) channel;
channelSftp.cd(SFTPWORKINGDIR);

System.out.println("Error File");
out.append("Error File:").append(
LogScraper.parseStream(channelSftp.get(SERRORFILE)));

System.out.println("Output File");
out.append("Output File:").append(
LogScraper.parseStream(channelSftp.get(SOUTFILE)));

} catch (Exception ex) {
ex.printStackTrace();
out.append(ex.getLocalizedMessage());
}

System.out.println("Logs=" + out.toString());

}

/**
*
* line.contains("Exception") ||
*
* @param file
* @return String of error data
*/
public static String parseStream(InputStream inputFileStream) {
if ( null == inputFileStream ) { return "Log Empty"; }
StringBuilder out = new StringBuilder();

BufferedReader br = new BufferedReader(new InputStreamReader(
inputFileStream));

String line = null;
try {
while ((line = br.readLine()) != null) {
if (line.contains("OutOfMemoryError")) {
out.append(line).append(System.lineSeparator());
}
}
} catch (IOException e) {
e.printStackTrace();
out.append(e.getLocalizedMessage());
}

return out.toString();
}
}

Using Square Retrofit REST Client with POJO

Another helpful resource when using Retrofit, JSON to POJO

In your maven pom.xml.

<dependency>
<groupId>com.squareup.retrofit</groupId>
<artifactId>retrofit</artifactId>
<version>(insert latest version)</version>
</dependency>

package com.agilemobiledeveloper.dataradiator.dao;
import retrofit.http.GET;
import retrofit.http.Path;
import retrofit.RestAdapter;
/**
 * 
 * @author spannt
 *
 */
public class TestGitHub {
 static final String API_URL = "https://api.github.com";
static class GithubUserData{
 String avatar_url;
 String bio;
 String blog;
 String company;
 String created_at;
 String email;
 String events_url;
 Number followers;
 String followers_url;
 Number following;
 String following_url;
 String gists_url;
 String gravatar_id;
 boolean hireable;
 String html_url;
 Number id;
 String location;
 String login;
 String name;
 String organizations_url;
 Number public_gists;
 Number public_repos;
 String received_events_url;
 String repos_url;
 String starred_url;
 String subscriptions_url;
 String type;
 String updated_at;
 String url;
 }
interface GithubUser {
 @GET("/users/{username}")
 GithubUserData user(@Path("username") String username);
 }
/**
 * 
 * @param args
 */
 public static void main(String... args) {
 // Create a very simple REST adapter which points the GitHub API endpoint.
 RestAdapter restAdapter = new RestAdapter.Builder()
 .setServer(API_URL)
 .build();

 // Create an instance of our GitHub API interface.
 GithubUser githubUser = restAdapter.create(GithubUser.class);
 GithubUserData userdata = githubUser.user("nxbdi");

 System.out.println("UserData=" + userdata.bio + "," + userdata.email + "," + userdata.name +
 userdata.location + "," + userdata.public_repos + "," + userdata.followers);
 }
}

The library is really simple to use especially if you create your POJO class with the JSONGen.

Console Output:

UserData=Java, Android, NoSQL, SQL. 20 years experience. MS/BS in Com Sci.,tim@agilemobiledeveloper.com,Tim SpannNew Jersey,205,22

15 Seconds to Selenide

package com.agilemobiledeveloper.dataradiator;
import static org.junit.Assert.*;
import org.junit.Test;
import static com.codeborne.selenide.Selenide.*;
import static com.codeborne.selenide.Condition.text;
import static com.codeborne.selenide.Selectors.by;
import static com.codeborne.selenide.Selectors.byText;
import static com.codeborne.selenide.Selenide.$;
import static com.codeborne.selenide.Selenide.$$;
import com.codeborne.selenide.SelenideElement;
import org.junit.Test;
import org.openqa.selenium.By;
import static com.codeborne.selenide.Condition.*;
import static com.codeborne.selenide.Selectors.*;
import static com.codeborne.selenide.Selenide.*;
/**
 * 
 * @author spannt
 *
 */
public class TestHome {
 @Test
 public void userCanLoginByUsername() {
 open("http://google.com/");
 $("title").shouldHave(text("Google"));
 }
}

In Maven pom.xml

<dependency>
<groupId>com.codeborne</groupId>
<artifactId>selenide</artifactId>
<version>2.1</version>
</dependency>

Links du Jour

Echo JS – JavaScript News

dzone.com – BUILD REAL WEATHER APP: JSON, HTTP AND OPENWEATHERMAP

dzone.com – Crossing platforms between iOS and Android with PhoneGap framework. Tutorial

dzone.com – ADB Command Basics and Setup Tutorial

dzone.com – Publishing Android App in Google Play. Things to know ahead!

Code inComplete – Home

Responsive Design Newsletter

The Daily Nerd ☆ Vasilis van Gemert

Status Code: A Weekly Programming Newsletter for Developers and Programmers

Mozilla Hacks Weekly Articles ✩ Mozilla Hacks – the Web developer blog

CSS Weekly — Weekly e-mail roundup of latest CSS articles, tutorials, tools and experiments

Open Web Platform Daily Digest

Smashing Magazine — For Professional Web Designers and Developers

Web Platform Blog | News on the Open Web Platform

Project Euler

aglover/gesticulate · GitHub

Javanotes 6.0, Section 9.2 — Linked Data Structures

Using web workers – Web developer guide | MDN

Quick Example of Searching Your Outlook PST File with Java

https://github.com/rjohnsondev/java-libpst

import com.pff.*;
import java.util.*;
public class &lt;strong&gt;Test&lt;/strong&gt; {
 
 private java.sql.Date yesterday;
 
 public static void main(String[] args)
 {
Test c = new Test("C:\Users\USERID\Documents\Outlook Files\MYEMAIL.pst");
 System.out.println("Mail Count:" + c.counter);
 System.out.println("Folder Count: " + c.foldercounter );
 }
// mail counter
 public int counter = 0;
// folder counter
 public int foldercounter = 0;
/**
 * 
 * Constructor for Test.
 * @param filename
 */
 public Test(String filename) {
 try {
 // Get today as a Calendar
 Calendar today = Calendar.getInstance();
 // Subtract 1 day
 today.add(Calendar.DATE, -1);
 // Make an SQL Date out of that
 yesterday = new java.sql.Date(today.getTimeInMillis());
 
 PSTFile pstFile = new PSTFile(filename);
 //System.out.println(pstFile.getMessageStore().getDisplayName());
 processFolder(pstFile.getRootFolder());
 } catch (Exception err) {
 err.printStackTrace();
 }
 }
int depth = -1;
/**
 * 
 */
 public void processFolder(PSTFolder folder)
 throws PSTException, java.io.IOException
 {
 depth++;
// the root folder doesn't have a display name
 //if (depth &gt; 0) {
 // System.out.println("Folder Name:" + folder.getDisplayName());
 //}
// go through the folders...
 if (folder.hasSubfolders()) {
 Vector&lt;PSTFolder&gt; childFolders = folder.getSubFolders();
 for (PSTFolder childFolder : childFolders) {
 processFolder(childFolder);
 }
 }
//System.out.println("Folder Count:" + folder.getContentCount());
// counter += folder.getContentCount();
// and now the emails for this folder
 if (folder.getContentCount() &gt; 0) {
 foldercounter++;
 depth++;
 PSTMessage email = (PSTMessage)folder.getNextChild();
 
 while (email != null &amp;&amp; email.getSubject() !=null) {
 if (email.getSubject().toLowerCase().contains("MY SEARCH TERM") ) {
 System.out.println(folder.getDisplayName() + ":Email: "+email.getSubject());
 }
// count todays
 if ( email.getCreationTime().after(yesterday) ) {
 counter++;
 }
 email = (PSTMessage)folder.getNextChild();
 }
 depth--;
 }
 depth--;
 }
}


			

Droid Development Links

It’s Hip 2 B Square

Cool Android Tools from Square

Android Testing

http://square.github.io/fest-android/

http://fest.easytesting.org/

http://www.developer.com/open/article.php/10930_3901236_3/Write-More-Understandable-Java-Tests-with-Matcher-Objects-and-FEST-Assert.htm

http://piotrjagielski.com/blog/a-cool-technique-for-object-comparison-in-junit/

http://robolectric.org/

http://corner.squareup.com/2013/04/the-resurrection-of-testing-for-android.html

https://code.google.com/p/robotium/

https://code.google.com/p/mockwebserver/

https://github.com/robolectric/robolectric

http://corner.squareup.com/2013/05/robolectric-two-point-oh.html

http://corner.squareup.com/2012/10/mockito-android.html

https://github.com/octo-online/robospice

https://github.com/octo-online/RoboSpice-samples

 

Small Square Tools

http://corner.squareup.com/2013/05/mimecraft-javawriter-protoparser.html

https://github.com/square/protoparser

https://github.com/square/javawriter

 

Event Bus

http://square.github.io/otto/

 

Square IntelliJ Plugins

http://corner.squareup.com/2013/05/intellij-plugins.html

https://github.com/square/dagger-intellij-plugin

https://github.com/square/otto-intellij-plugin

 

Date from Calendar View for Android

https://github.com/square/android-times-square

http://corner.squareup.com/2013/01/times-square.html

 

HTTP and SPDY Client for Android

http://square.github.io/okhttp/

http://corner.squareup.com/2013/05/announcing-okhttp.html

 

Dagger DI

http://square.github.io/dagger/

http://corner.squareup.com/2013/05/dagger-1.0.html

https://plus.google.com/communities/109244258569782858265/stream/bab12891-7685-4e0c-8dcb-f85cd0ca31c0

http://musingsofaprogrammingaddict.blogspot.com/2012/11/dagger-new-java-dependency-injection.html

http://www.infoq.com/presentations/Dagger

http://blog.patrickbaumann.com/2012/10/di-on-android-without-the-startup-cost-dagger/

https://github.com/patrickbaumann/daggervsroboguice

https://github.com/eburke/presentations/tree/master/strange_loop_2012/samplecode

 

Spoon Android Testing

http://square.github.io/spoon/

 

Android Image Caching and Downloading

http://square.github.io/picasso/

http://corner.squareup.com/2013/05/picasso-one-dot-oh.html

http://square.github.io/pollexor/

https://github.com/globocom/thumbor

https://github.com/globocom/thumbor/wiki

 

Android Shake Detection

https://github.com/square/seismic

 

Android Queues

http://square.github.io/tape/

 

REST Client for Android

http://square.github.io/retrofit/

http://corner.squareup.com/2013/05/retrofit-one-dot-oh.html

 

Square OSS Community

https://plus.google.com/communities/109244258569782858265/stream/47c9b7e4-3c13-4f6f-bc89-ede5f9e58612

 

Squash Notification Tool

http://corner.squareup.com/2013/01/squash.html

 

Android Tips

http://www.curious-creature.org/2012/12/13/android-recipe-2-fun-with-shaders/

 

Facebook SDK for Android

https://github.com/facebook/facebook-android-sdk

 

Sending Photos Easy

http://mobile.tutsplus.com/tutorials/android/android-sdk-sending-pictures-the-easy-way/

 

Growing Android Applications Guided by Tests – using Square Tools

http://www.novoda.com/blog/blog/gaagbt-part-1

https://github.com/frankiesardo/growing-android-applications-guided-by-tests

 

Vert.x + Yoke (Polyglot Answer to Node.js + Express) + WebSockets on many clouds

http://www.infoq.com/news/2013/05/high-volume-vertx

http://www.slideshare.net/samueltauil/vertx-judcon

http://pmlopes.github.io/yoke/

https://github.com/core9/vertx-yoke-engine-closure

https://github.com/core9/mod-mongo-persistor

Vert.x 2.0 Developing Vert.x with Maven · vert-x/vert.x Wiki

Yoke a middleware framework for Vert.x: Java-Tutorial

zznate/nodej · GitHub

Edge Framework -

Vert.x takes first step towards Eclipse Foundation

cloudfoundry-samples/vertx-vtoons · GitHub

The WebSocket API

Nodyn: Node.JS for the JVM

Vert.x Installation Guide

zznate/intravert-ug · GitHub

Netty: Home

Yoke a middleware framework for Vert.x: Benchmark

Vert.x 2.0 Developing Vert.x with Maven · vert-x/vert.x Wiki

Getting Started With vertx (vert.io) – an Alternative to node.js | Web Builder Zone

zznate/edge · GitHub

CloudBees-community/vertx-clickstack · GitHub

Vert.x

Vert.x – the Node.js for Java in the Cloud | OpenShift by Red Hat

Deploying vert.x Applications to Cloud Foundry | CloudFoundry.com Blog

Fun with Scala and Vert.x | Javalobby

sockjs/sockjs-client · GitHub

Reactor pattern – Wikipedia, the free encyclopedia

Vert X Vs Node Js – Latest Technology News | TechNewsNow.com :: TechnewsNow.com

openshift-quickstart/vertx-openshift-quickstart · GitHub

purplefox/openshift-vertx · GitHub

Running a Java Vert.x app on Heroku

Using web workers – Web developer guide | MDN

Asynchronous concurrency with vert.x – part 1 | synyx – Blog

Asynchronous concurrency with vert.x – Part 2 | synyx – Blog

yoke/example/persona at master · pmlopes/yoke · GitHub

yoke/example/kitcms at master · pmlopes/yoke · GitHub

 

Codenvy

I love this IDE.  It connects to PAAS, easily and without effort.

 

In my example I easily create a Spring application and could run on their local server and easily deploy to AppFog.    It also works with CloudFoundry, CloudBees, Heroku and OpenShift.  All of which have free versions.

It works with Maven and is similiar to Eclipse.

 

codeenvy1 codeenvy2

codeenvy3

 

 

 

Spring MVC + Modern HTML5

Tobacco tries it’s best to always include the latest release versions of most popular client libraries.

Latest Tobacco 1.0.12 charges you with Spring 3.2.2, Twitter Bootstrap 2.3.1, jQuery 1.9.1 and Backbone.js 1.0.0

Tobacco Maven Architype for building a project

 

 

https://github.com/priyatam/springmvc-twitterbootstrap-showcase

http://bthurley.wordpress.com/2012/07/25/initialising-datatables-with-twitter-bootstrap-and-spring-mvc-ajax/

http://duckranger.com/2012/07/spring-mvc-and-twitter-bootstrap-customizing-the-input-fields/

http://bthurley.wordpress.com/2012/07/18/spring-mvc-with-restful-datatables/

http://duckranger.com/2012/12/capturing-property-changes-with-spring-jpa-and-hibernate/

https://github.com/eugenp/REST#readme

 

Apache Zookeeper

Apache Zookeeper

replicated synchronization service with eventual consistency

associated with Hadoop
Client

Bag of Links

Links

http://coding.smashingmagazine.com/2013/03/11/responsible-web-design/

http://calendar.perfplanet.com/2012/

http://www.cakesolutions.net/teamblogs/2011/12/19/cake-pattern-in-depth/

http://thoughtforge.net/2051/continuous-delivery-a-maturity-assessment-model/

http://architects.dzone.com/articles/unit-testing-best-practices

http://www.project-management-tools.net/software-development-methodologies/

http://agile.dzone.com/articles/ebays-open-source-agile-test

http://da-data.blogspot.nl/2013/03/optimistic-cuckoo-hashing-for.html

http://javapostsforlearning.blogspot.in/2013/03/serialization-in-java.html

http://www.drmaciver.com/2013/03/a-rewritten-manifesto-for-error-reporting/

 

Templates
http://freemarker.sourceforge.net/

 

Mustache for Java and Android
https://github.com/samskivert/jmustache

https://github.com/spullara/mustache.java

http://www.javarants.com/2010/05/03/the-ideal-web-application-templating-system/

http://mustache.github.com/mustache.5.html

https://github.com/raycmorgan/Mu

https://hacks.mozilla.org/2013/03/shiva-more-than-a-restful-api-to-your-music-collection/

http://java.dzone.com/articles/composite-design-pattern-java-0

http://www.duckout.de/java/json-with-java-jackson/

http://smashinghub.com/33-best-free-html5-tutorials.htm

http://www.catswhocode.com/blog/ultimate-list-of-wordpress-resources

http://skuro.tk/2013/03/11/java-stringbuilder-myth-now-with-content/

http://www.springsource.org/spring-data/rest

https://github.com/SpringSource/spring-data-rest

http://myfaces.apache.org/

https://github.com/olivergierke/spring-restbucks/blob/master/src/main/java/org/springsource/restbucks/RestbucksWebApplicationInitializer.java#L88

http://static.springsource.org/spring-data/rest/docs/1.1.0.M1/reference/htmlsingle/

http://www.infoworld.com/d/application-development/the-developers-checklist-prepare-the-cloud-213941?page=0,0

http://www.javaworld.com//javaworld/jw-03-2013/130306-introduction-to-design-patterns-part-3.html

http://www.ibm.com/developerworks/agile/library/a-devops8/a-devops8-pdf.pdf

http://www.ibm.com/developerworks/java/library/j-mobileforthemasses1/index.html?ca=drs-

http://www.ibm.com/developerworks/opensource/library/os-test-stafstax/index.html?ca=drs-

http://www.ibm.com/developerworks/java/library/j-jn1/index.html?ca=drs-

http://www.dbunit.org/

http://paulirish.com/2013/webkit-for-developers/

http://html5boilerplate.com/

http://html5doctor.com/html5-forms-input-types/

http://feross.org/fill-disk/

http://www.adobe.com/devnet/html5/articles/book-excerpt-the-definitive-guide-to-html5-websocket.html

http://h5bp.github.com/

http://www.youtube.com/watch?v=4oa9xEn3nos

http://buildnewgames.com/introduction-to-crafty/

http://jdstraughan.com/2013/03/05/html5-snake-with-source-code-walkthrough/

https://www.manymo.com/pages/blog/open-in-android-bookmarklet

http://blog.andyet.com/2013/feb/22/introducing-simplewebrtcjs-and-conversatio/

http://huddle.github.com/Resemble.js/

https://github.com/WebReflection/dom4

http://www.dzone.com/links/r/devref_welcome.html

http://maxlibin.com/practice-sass-now/

http://variadic.me/posts/2013-03-06-solving-problems-data-structures.html

http://edmundkirwan.com/general/junit.html

http://blog.jelastic.com/2013/03/06/why-java-does-not-support-operator-overloading-guest-post/

http://architects.dzone.com/articles/install-mongodb-ubuntu

http://mrbool.com/how-to-create-an-editable-html-table-with-jquery/27425

 

Agile Defacto

http://www.javaworld.com/javaworld/jw-06-2007/jw-06-awci.html

http://www.javaworld.com/cgi-bin/mailto/x_java.cgi?pagetosend=/export/home/httpd/javaworld/javaworld/jw-05-2004/jw-0510-tdd.html&pagename=/javaworld/jw-05-2004/jw-0510-tdd.html&pageurl=http://www.javaworld.com/javaworld/jw-05-2004/jw-0510-tdd.html&site=jw_core

http://xunitpatterns.com/Code%20Refactorings.html

 

Agile

http://www.infoq.com/presentations/Hacking-Culture

 

Top ALM Tools
http://www.infoq.com/research/alm-survey?utm_source=infoqresearch&utm_campaign=rr-topicpages

 

LeanUX
http://www.infoq.com/interviews/lean-ux-explained-jeff-gothelf

http://www.infoq.com/interviews/saddington-agile-scout

 

Refactoring Legacy Applications
http://www.infoq.com/articles/refactoring-legacy-applications

 

Cloud Computing / PAAS

http://www.infoq.com/presentations/CloudStack-Architecture

http://www.infoq.com/interviews/mccallion-enterprise-cloud-hybrid-redshift

 

HTML5 + WebSockets + java
http://www.infoq.com/presentations/JSR-356-HTML5-WebSocket-Java

 

DevOps

http://www.infoq.com/presentations/Facebook-Release-Process

 

HTML5 / CSS / JS / Mobile / Design

http://www.infoq.com/interviews/javascript-performance-stoyan-stefanov

 

WebApp
http://www.infoq.com/presentations/Web-App-Platform

http://www.infoq.com/presentations/JSR-356-HTML5-WebSocket-Java

http://johnpolacek.github.com/stacktable.js/

http://speckyboy.com/2013/03/04/designing-custom-github-demo-pages/

http://mojotech.github.com/stickymojo/

http://24ways.org/2012/how-to-make-your-site-look-half-decent/

http://jschr.github.com/textillate/

http://dfcb.github.com/Bedrock/

http://mcpants.github.com/jquery.shapeshift/

http://tenxer.github.com/xcharts/

http://fabien-d.github.com/alertify.js/

http://fatiherikli.github.com/mockup-designer/#document/93a862f6-f82c-2b33-d05b-414dde03c75f

http://jakiestfu.github.com/Behave.js/

http://sundaykofax.github.com/baby-legs/

http://oazabir.github.com/Droptiles/

http://justspamjustin.github.com/junior/#home

http://soulwire.github.com/Makisu/

http://imsky.github.com/holder/

http://benvie.github.com/continuum/

http://thisisdallas.github.com/Simple-Grid/

http://www.webdesignerdepot.com/2013/03/essential-web-design-tips-for-start-ups/

http://tokokoo.github.com/pondasee/

http://jhough10.github.com/Centurion/

http://needim.github.com/noty/

http://oskarkrawczyk.github.com/heyoffline.js/

http://matthewhartman.github.com/base/

http://anasnakawa.github.com/bi-app-less/

http://dfcb.github.com/Responsivator/

http://ckrack.github.com/fbootstrapp/

http://bernii.github.com/gauge.js/

http://laktek.github.com/punch/

http://shopify.github.com/dashing/

http://elclanrs.github.com/jq-idealforms/

http://alexdunphy.github.com/refineslide/

http://soulwire.github.com/sketch.js/

http://sebnitu.github.com/BaseDemo/

http://dfcb.github.com/controldeck.js/

http://oscargodson.github.com/EpicEditor/

http://hpneo.github.com/gmaps/

http://cjdsie.github.com/wirefy/

http://jsantell.github.com/dancer.js/

http://lukaszfiszer.github.com/selectnav.js/

http://xing.github.com/wysihtml5/

http://luis-almeida.github.com/filtrify/

http://luis-almeida.github.com/jPages/

http://eightmedia.github.com/hammer.js/

http://welaika.github.com/wordless/

http://twitter.github.com/typeahead.js/

https://github.com/blog/1081-instantly-beautiful-project-pages

 

Java Patterns

http://javapostsforlearning.blogspot.in/2013/03/template-method-design-pattern-in-java.html
http://javapostsforlearning.blogspot.in/2013/02/observer-design-pattern-in-java.html

 

Hibernate / Spring

http://javapostsforlearning.blogspot.in/2012/08/introduction-to-spring-framework.html

http://javapostsforlearning.blogspot.in/2012/08/dependency-injectionioc-in-spring.html

http://javapostsforlearning.blogspot.in/2012/08/spring-hello-world-example-in-eclipse.html

http://javapostsforlearning.blogspot.in/2012/08/dependency-injection-via-setter-method.html

http://javapostsforlearning.blogspot.in/2012/08/dependency-injection-via-constructor-in.html

http://javapostsforlearning.blogspot.in/2012/08/spring-bean-scopes-with-examples.html

http://javapostsforlearning.blogspot.in/2013/02/hibernate-inheritancetable-per-concrete.html

http://javapostsforlearning.blogspot.in/2013/02/hibernate-inheritancetable-per-subclass.html

http://javapostsforlearning.blogspot.in/2012/08/inheritance-in-spring.html

http://javapostsforlearning.blogspot.in/2012/08/beanpostprocessors-in-spring.html

http://javapostsforlearning.blogspot.in/2012/08/spring-lifetime-callbacks.html

http://javapostsforlearning.blogspot.in/2012/09/annotation-based-configuration-in-spring.html

http://javapostsforlearning.blogspot.in/2012/08/spring-applicationcontext.html

 

Business Framework

http://open-dolphin.org/dolphin_website/Home.html

https://github.com/canoo/DolphinJumpStart

http://open-dolphin.org/download/guide/index.html

 

Agile

http://agile.dzone.com/articles/story-points-considered

http://allankelly.blogspot.co.uk/2013/02/11-agile-myths-and-2-truths.html

 

IBM Heap

https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=2245aa39-fa5c-4475-b891-14c205f7333c

java -Xmx1100m -jar jca437.jar

open phd files

PHD format heapdumps

http://www-01.ibm.com/support/docview.wss?uid=swg21190476
http://www-01.ibm.com/support/docview.wss?uid=swg21196223

java -jar ga439.jar

java -Xmx1100m -jar jca437.jar

ha444.jar <- heap dump analysis

Note: 64-bit Java runtime environment is needed for processing heap dumps that require more than 4GB of memory

java -Xmx2560m -jar ha444.jar

Run com.ibm.jvm.ras.findroots.PrintHeapdump with phd file and redirect output to a file:

java -Xmx1100m -classpath svcdump.jar com.ibm.jvm.ras.findroots.PrintHeapdump heapdump.20130503.055912.16777398.0001.phd > heapdump1.txt

java -Xmx1100m -classpath svcdump.jar com.ibm.jvm.ras.findroots.PrintDomTree heapdump.20130503.055912.16777398.0001.phd > domtree.txt

java -Xmx1100m -classpath svcdump.jar com.ibm.jvm.ras.findroots.TreeViewer domtree.txt

 

Cool Links of the Day

dzone.com – Build Your First Mobile App with PhoneGap Build

Nullzzz – FRP, Bacon.js and stuff: Bacon.js Tutorial Part I : Hacking With jQuery

raimohanska/bacon.js · GitHub

dzone.com – Synchronising Multithreaded Integration Tests revisited

dzone.com – Task.js Asynchronous Tasks In JavaScript

Understanding Java Garbage Collection and what you can do about it – YouTube

dzone.com – Algorithm of the Week: Shortest Path with Djikstra

MongoDB – Updating Records – CodeProject

dzone.com – Sencha Touch 2 Stores – Editing Model Instances and Reverting Changes

dzone.com – String Utility Classes in Java

dzone.com – 5 Talks To Learn More About Node.js

dzone.com – JPA/JPQL: Intermediate Queries with @NamedQuery

dzone.com – How RESTful Is Your REST?

Native Win32 ports of some GNU utilities

UnxUtils | Free software downloads at SourceForge.net

 

SOAP / WS-Security / IBM / Metro / Apache CXF / Axis2

WS-Security Configuration

<con:wssContainer>

<con:crypto>
<con:source>keystore.jks</con:source>
<con:password>mypasswordiscool</con:password>
<con:type>KEYSTORE</con:type>
</con:crypto>
<con:outgoing>
<con:name>Outgoing</con:name>
<con:entry type=”Username” username=”longcomplicateduser” password=”weirdRandomP@33w4rD!”>
<con:configuration>
<addCreated>true</addCreated>
<addNonce>true</addNonce>
<passwordType>PasswordDigest</passwordType>
</con:configuration>
</con:entry>
<con:entry type=”Timestamp”>
<con:configuration>
<timeToLive>60</timeToLive>
<strictTimestamp>true</strictTimestamp>
</con:configuration>
</con:entry>
</con:outgoing>
</con:wssContainer>

<soap:Header>
<wsse:Security soap:mustUnderstand=”true” xmlns:wsse=”http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd” xmlns:wsu=”http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd”><wsu:Timestamp wsu:Id=”TS-4″><wsu:Created>2013-05-01T19:52:45.639Z</wsu:Created><wsu:Expires>2013-05-01T19:53:45.639Z</wsu:Expires></wsu:Timestamp><wsse:UsernameToken wsu:Id=”UsernameToken-3″><wsse:Username>longcomplicateduser</wsse:Username><wsse:Password Type=”http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest”>weirdRandomP@33w4rD!</wsse:Password><wsse:Nonce EncodingType=”http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary”>dfdfdf</wsse:Nonce><wsu:Created>2013-05-01T19:52:45.638Z</wsu:Created></wsse:UsernameToken></wsse:Security>
</soap:Header>

 

http://techdiary.bitourea.com/2007/03/step-by-step-tutorial-to-use-rampart.html

http://www.coderanch.com/t/422683/Web-Services/java/SOAP-Header-missing-Rampart-Axis

http://stackoverflow.com/questions/11794223/rampart-doesnt-add-necessary-headers-to-soap-envelope

 

SET AXIS2_HOME=/axis2-1.6.2
wsdl2java.bat -uri https://X.com?wsdl -o JavaPrj -p mypackage.is.cool -d xmlbeans -t -ss -ssi -sd -g -ns2p

System.setProperty(“javax.net.ssl.keyStore”, “/data/PkiCertificate/tomcatkeystore.jks”);
System.setProperty (“javax.net.ssl.keyStorePassword”, “changeit”);
System.setProperty(“javax.net.ssl.trustStore”, “/data/PkiCertificate/clientstore.jks”);
System.setProperty(“javax.net.ssl.trustStorePassword”, “changeit”);

setx -m JAVA_HOME “jdk1.7.0_04″

setx -m javax.net.ssl.keyStore “/keystore.jks”);
setx -m javax.net.ssl.keyStorePassword “passwordislong”);
setx -m javax.net.ssl.trustStore “/keystore.jks”);
setx -m javax.net.ssl.trustStorePassword “passwordislong”);


http://stackoverflow.com/questions/3803581/setting-a-system-environment-variable-from-a-windows-batch-file

http://nl.globalsign.com/en/support/ssl+certificates/java/java+based+webserver/keytool+commands/

 

-Djavax.net.debug=ssl,trustmanager


http://docs.oracle.com/javaee/1.4/tutorial/doc/Security7.html

http://broadsign.com/docs/9-2-1/appendix/apache-axis2/

http://web.archiveorange.com/archive/v/fNNSSwpIzBWqt1TcJdT4

http://stackoverflow.com/questions/5871279/java-ssl-and-cert-keystore

http://javarevisited.blogspot.com/2012/09/difference-between-truststore-vs-keyStore-Java-SSL.html

PasswordDigest
http://www.ibm.com/developerworks/training/kp/j-kp-wssecurity/

http://ianso.blogspot.com/2009/12/building-ws-security-enabled-soap.html

Java web services: WS-Security without client certificates

http://www.ibm.com/developerworks/java/library/j-jws17/index.html

Understanding web services specifications, Part 4: WS-Security
http://www.ibm.com/developerworks/webservices/tutorials/ws-understand-web-services4/

Java Web services: Axis2 WS-Security signing and encryption
http://www.ibm.com/developerworks/java/library/j-jws5/index.html

Best Practices for Web Services
http://www.ibm.com/developerworks/library/ws-best11/

Java Web services: Axis2 WS-Security basics
http://www.ibm.com/developerworks/webservices/library/j-jws4/index.html

Java web services: The high cost of (WS-)Security
http://www.ibm.com/developerworks/java/library/j-jws6/index.html

Java web services: WS-Trust and WS-SecureConversation
http://www.ibm.com/developerworks/java/library/j-jws15/index.html

Java web services: WS-Security with CXF
http://www.ibm.com/developerworks/java/library/j-jws13/index.html

Java Web services: Granular use of WS-Security
http://www.ibm.com/developerworks/java/library/j-jws7/index.html

Java web services: Modeling and verifying WS-SecurityPolicy
http://www.ibm.com/developerworks/java/library/j-jws21/index.html

Java Web services: Axis2 WS-Security basics
http://www.ibm.com/developerworks/java/library/j-jws4/

http://blog.sweetxml.org/2007/12/rampart-basic-examples-how-you-add-ws.html

http://www.javaranch.com/journal/200709/web-services-authentication-axis2.html

http://stackoverflow.com/questions/14266237/adding-ws-security-to-wsdl2java-generated-classes

http://wso2.org/library/3190

http://wso2.org/library/3415#step_1

http://ws.apache.org/tcpmon/index.html

Metro for Java (Web Services)

Java Web services: Introducing Metro
http://www.ibm.com/developerworks/java/library/j-jws9/index.html

http://www.bouncycastle.org/java.html

Apache CXF Security
http://cxf.apache.org/docs/ws-security.html

Security Best Practices
http://ws.apache.org/wss4j/best_practice.html

Web Service Security for Java
http://ws.apache.org/wss4j/index.html

AXIS2 Security
http://axis.apache.org/axis2/java/rampart/index.html

CXF
http://www.ibm.com/developerworks/java/library/j-jws12/index.html

Java web services: Understanding and modeling WSDL 1.1
http://www.ibm.com/developerworks/java/library/j-jws20/index.html

JAX-WS Guide
http://axis.apache.org/axis2/java/core/docs/jaxws-guide.html

Axis2 Quick Start Guide
http://axis.apache.org/axis2/java/core/docs/quickstartguide.html

Axis2 FAQ
http://axis.apache.org/axis2/java/core/faq.html

 

Odd Ball Data Structures and More

Costs for Elements in Different Data Structures

https://code.google.com/p/memory-measurer/wiki/ElementCostInDataStructures

Lesser Known Data Structures

http://stackoverflow.com/questions/500607/what-are-the-lesser-known-but-useful-data-structures

Randomize Algorithms

http://en.wikipedia.org/wiki/Randomized_algorithm

Probalistic Data Structures

http://en.wikipedia.org/wiki/Skip_list

Other

http://en.wikipedia.org/wiki/Dancing_Links

http://en.wikipedia.org/wiki/Binary_decision_diagram

http://cr.yp.to/critbit.html

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.96.2143

http://ejohn.org/blog/revised-javascript-dictionary-search/

http://en.wikipedia.org/wiki/Rope_%28data_structure%29

http://en.wikipedia.org/wiki/Gap_buffer

http://en.wikipedia.org/wiki/Spatial_index#Spatial_index

http://en.wikipedia.org/wiki/R-tree

http://en.wikipedia.org/wiki/Kd-tree

http://en.wikipedia.org/wiki/Bit_array

http://www.haskell.org/haskellwiki/Zipper

http://en.wikipedia.org/wiki/Suffix_trie#Functionality

http://en.wikipedia.org/wiki/Splay_tree#Performance_theorems

http://www.cl.cam.ac.uk/research/srg/netos/lock-free/

http://www.boyet.com/Articles/LockfreeStack.html

http://cellperformance.beyond3d.com/articles/index.html

http://en.wikipedia.org/wiki/Disjoint-set_data_structure

http://en.wikipedia.org/wiki/Fibonacci_heap

http://en.wikipedia.org/wiki/Binary_space_partitioning

http://en.wikipedia.org/wiki/Huffman_coding

http://en.wikipedia.org/wiki/Finger_trees

http://en.wikipedia.org/wiki/Circular_buffer

http://en.wikibooks.org/wiki/Haskell/Other_data_structures

http://opendatastructures.org/ods-java.pdf

http://en.wikipedia.org/wiki/Hash_tree

http://www.slideshare.net/koolhits/java-performance-threading-and-concurrent-data-structures

http://labs.carrotsearch.com/hppc.html

http://labs.carrotsearch.com/junit-benchmarks.html

http://developer.android.com/reference/android/util/SparseArray.html

http://commons.apache.org/proper/commons-collections/

https://code.google.com/p/guava-libraries/wiki/NewCollectionTypesExplained

https://code.google.com/p/guava-libraries/wiki/ImmutableCollectionsExplained

https://code.google.com/p/guava-libraries/wiki/CachesExplained

https://code.google.com/p/guava-libraries/wiki/HashingExplained

http://opendatastructures.org/ods-java/

http://en.wikipedia.org/wiki/Book:Fundamental_Data_Structures

http://en.wikipedia.org/wiki/Tango_tree

http://www.codecommit.com/blog/scala/scala-collections-for-the-easily-bored-part-1

http://en.wikipedia.org/wiki/Book:Data_structures

http://en.wikipedia.org/wiki/Rope_(computer_science)

http://en.wikibooks.org/wiki/Data_Structures

http://www.cs.uiuc.edu/~jeffe/teaching/algorithms/

http://en.wikipedia.org/wiki/Cuckoo_hashing

http://cg.scs.carleton.ca/~morin/teaching/5408/refs/minmax.pdf

http://blogs.msdn.com/b/devdev/archive/2007/06/12/cache-oblivious-data-structures.aspx

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.48.973

http://donar.umiacs.umd.edu/quadtree/rectangles/cifquad.html

http://en.wikipedia.org/wiki/Hash_array_mapped_trie

http://en.wikipedia.org/wiki/Inverted_index

http://en.wikipedia.org/wiki/Van_Emde_Boas_tree

http://en.wikipedia.org/wiki/Nested_set_model

http://www.flipcode.com/archives/The_Half-Edge_Data_Structure.shtml

http://www.cs.middlebury.edu/~schar/courses/cs201-s13/js/js.pdf

http://www.theparticle.com/javadata2.html

http://192.9.162.55/docs/books/performance/1st_edition/html/JPAlgorithms.fm.html

http://www.cs.berkeley.edu/~hilfingr/cs61b/f2002/public_html/data-structures.pdf

 

 

 

Node.js for Production

Coding Guides

HP Anywhere (Java + JavaScript)

HP Anywhere

Review by Timothy Spann

Basic Usage

1.1           IDE

Eclipse

eclipse

 

1.2           NOTE

  • Fix required:  HP Anywhere added to maven.bat

SET MAVEN_OPTS=-Djava.net.preferIPv4Stack=true

  • Only runs on Windows.  Windows Only Server
  • Only for developing single page applications (SPA) with Java back-end and JS/HTML5/CSS front-end.

 

1.3           Technology List

  • Eclipse juno
  • jdk 1.7
  • maven
  • tomcat
  • H2
  • jersey
  • enyo js
  • slf4j
  • apache commons
  • xerces
  • json
  • sencha
  • jax-ws
  • ant
  • curl
  • spring 3.0.5
  • jersey
  • junit 4.8
  • JEE
  • JAXB
  • DOM4J
  • Lucene
  • JSTL
  • PhoneGap
  • POI
  • Velocity
  • STAX
  • Xalan
  • Joda Time
  • Hibernate
  • GraniteDS
  • Jackson
  • JTDS
  • JQuery
  • JDOM
  • Sencha Touch
  • Cassandra
  • MS SQL Server

1.4           Links

HP Anywhere: Mobile Apps for the Enterprise

 

1.5           HP Anywhere Architecture for Developers

(see: http://developer.hpanywhere.com/wp-content/uploads/2013/03/HP_Anywhere_Architecture_for_Developers.pdf)

 

 

 

container

overview

 

Book Review: Testable JavaScript

 Testable JavaScript Book Review

Testable JavaScript

By Mark Ethan Trostler
Publisher: O’Reilly Media
Released: January 2013
Pages: 274

Chapters:

Chapter 1 Testable JavaScript
Chapter 2 Complexity
Chapter 3 Event-Based Architectures
Chapter 4 Unit Tests
Chapter 5 Code Coverage
Chapter 6 Integration, Performance, and Load Testing
Chapter 7 Debugging
Chapter 8 Automation
First off, I want to say this is one of my favorite books. It is a great work on developing with TDD and agile with a focus on JavaScript. I am considering buying a print copy
to keep next to my computer with the GoF, Growing Object Oriented… and Release It! I am big believer in the main aim of the book to keep javascript code simple and
loosely coupled. This is not a book for those who don’t know JavaScript or have some background in Test Driven Development.

The book starts with a nice section on agile, TDD, BDD , the why’s, what’s and how’s of all the best practices for modern development. There is a very thorugh discussion of a
number of great development tools including: JSLInt, JSmeter, JSCheckStyle, YUIDoc and JSDoc. This book is great for Java developers wishing to start doing enterprise level
JavaScript on the client and server and in-between (Meteor / Derby).

I like this book also for it’s thorough coverage of best modern development practices: Code Reuse, Coupling, Metrics, Dependency Injection, auto documenation (think javadoc),
formalized softwtare inspections, coder coverage, fan-out/fan-in nd more agile practices.

One of the other strong topics in the book is Event-Based Architectures / programming. Event-based programming is great for decoupling objects. There is also great information on using and Event-Hub and socket.io as well.

Testing Topics from the Book

  • vows
  • isolation
  • scope
  • mock objects
  • positive and negative testing
  • PhantomJS for testing
  • stubs
  • spies
  • asynchronous testing
  • running tests on the client and server side

Cool Tools from the Book

Links from the Book

 

 

Cool new stuff

The Movie Database API—by apiary.io
Apache Kafka
Apache Kafka
Running a Multi-Broker Apache Kafka 0.8 Cluster on a Single Node – Michael G. Noll
Spring with Maven | Java Code Geeks
Apache Kafka
Google Maps example | Examples Java Code Geeks
Google Guava Cache with regular expression patterns | Java Code Geeks
Fault Injection with Byteman and JUnit | Java Code Geeks
XStream – XStreamely easy way to work with XML data in Java | Java Code Geeks
Simulation of time consuming actions in integration tests | Java Code Geeks
Spring MVC – Easy REST-Based JSON Services with @ResponseBody | Java Code Geeks
Spring MVC Session Tutorial | Java Code Geeks
Spring MVC Form Tutorial | Java Code Geeks
Spring MVC + Hibernate + Maven: CRUD operations example | Java Code Geeks

BloomFilters and Advanced hashing

UML

 

UML

http://www.uml-diagrams.org/

 

 

UML Profiles

http://www.uml-diagrams.org/profile-diagrams.html#profile

 

 

UML 2.5

http://www.uml-diagrams.org/uml-25-diagrams.html

 

 

Web Site Admin use Case

http://www.uml-diagrams.org/examples/website-admin-use-case-diagrams-example.html?context=uc-examples

 

 

http://www.uml-diagrams.org/class-diagrams-examples.html#abstract-factory

 

 

http://www.uml-diagrams.org/class-diagrams-examples.html#library-domain

 

 

http://www.uml-diagrams.org/class-diagrams-examples.html#login-controller-objects

 

 

http://www.uml-diagrams.org/composite-structure-examples.html#tomcat-7-composite

 

 

http://www.uml-diagrams.org/composite-structure-examples.html#observer

 

 

http://www.uml-diagrams.org/examples/java-servlet-30-api-package-diagram-example.html?context=pkg-examples

 

 

http://www.uml-diagrams.org/package-diagrams-examples.html#spring-hibernate

 

 

http://www.uml-diagrams.org/package-diagrams-examples.html#value-object-template

 

 

http://www.uml-diagrams.org/package-diagrams-examples.html#layered-web-architecture

 

 

http://www.uml-diagrams.org/package-diagrams-examples.html#layered-application-model

 

 

http://www.uml-diagrams.org/component-diagrams-examples.html#java-ee-jax-ws-20

 

 

http://www.uml-diagrams.org/deployment-diagrams-examples.html#deployment-example-manifest-webapp

 

 

http://www.uml-diagrams.org/deployment-diagrams-examples.html#web-application

 

 

http://www.uml-diagrams.org/deployment-diagrams-examples.html#multilayered-load-balancing

 

 

http://www.uml-diagrams.org/deployment-diagrams-examples.html#web-application-clusters

 

 

http://www.uml-diagrams.org/deployment-diagrams-examples.html#deployment-example-android

 

 

http://www.uml-diagrams.org/examples/web-application-network-diagram-example.html?context=depl-examples

 

 

http://www.uml-diagrams.org/profile-diagrams-examples.html#ejb-30

 

 

http://www.uml-diagrams.org/profile-diagrams-examples.html#soaml-profile

 

 

http://www.uml-diagrams.org/activity-diagrams-examples.html#google-sso

 

 

http://www.uml-diagrams.org/examples/java-6-thread-state-machine-diagram-example.html?context=stm-examples

 

 

http://www.uml-diagrams.org/sequence-diagrams-examples.html#facebook-authentication

 

 

http://www.uml-diagrams.org/examples/spring-hibernate-transaction-sequence-diagram-example.html?context=seq-examples

 

 

http://www.uml-diagrams.org/timing-diagrams-examples.html#website-latency

 

 

http://www.uml-diagrams.org/examples/java-uml-examples.html

 

 

http://www.uml-diagrams.org/examples/health-insurance-policy-domain-diagram-example.html

 

Application Development for Android

http://www.uml-diagrams.org/examples/android-uml-examples.html?1363880269

 

Java Date
http://www.javaworld.com/cgi-bin/mailto/x_java.cgi?pagetosend=/export/home/httpd/javaworld/javaworld/jw-04-2013/130408-j101-date-and-time-api.html&pagename=/javaworld/jw-04-2013/130408-j101-date-and-time-api.html&pageurl=http://www.javaworld.com/javaworld/jw-04-2013/130408-j101-date-and-time-api.html&site=jw_core

 

Today’s Topics

CQRS

CQRS Info

About UML models – Visio – Office.com

Bringing new life to Spring Travel with Thymeleaf | SpringSource Team Blog

Spring Framework Reference Documentation

Thymeleaf: java XML/XHTML/HTML5 template engine

JUNG – Java Universal Network/Graph Framework

Java and JavaScript Support for Microsoft Visio

Sorting Algorithm Animations

Quick Sort (3 Way Partition) – Sorting Algorithm Animations

JFugue Music NotePad: Wiki: Home — Java.net

Agile Modeling — Frequently Asked Questions (FAQ)

Agile modeling with UML 2 templates for Visio | NSilverBullet

VISIO

UML basics: The sequence diagram

Visio Templates for UML 2.0 – Martin Woodward

Download Visio Stencil and Template for UML 2.2

Elementary Sorts

New programming jargon you coined?

Stack Overflow deleted questions

Link Bag For Weekend

Developing with Eclipse and Maven / Documentation Sonatype.com
HP CodeWars – Problems and solutions from the 2013 edition of HP CodeWars
Joda-Time – Java date and time API – Home
RedHat Repository for Jenkins
Getting Into Ember.js | Nettuts+
Event-Based Programming: What Async Has Over Sync | Nettuts+
Understanding Design Patterns in JavaScript | Nettuts+
JavaScript & AJAX | Nettuts+
The Pragmatic Bookshelf | Debug It!
Make Backbone Better With Extensions | Nettuts+
Forge | Installation
The Pragmatic Bookshelf | Pomodoro Technique Illustrated
Headless Functional Testing with Selenium and PhantomJS | Nettuts+
Installing Jenkins on RedHat distributions – Jenkins – Jenkins Wiki
Build a Twitter Clone From Scratch: The Design | Nettuts+
HTML & CSS | Nettuts+
The Pragmatic Bookshelf | Agile Coaching
Testing JavaScript with PhantomJS | Nettuts+
The Pragmatic Bookshelf | Pomodoro Technique Illustrated
Exploring Java world | I am a Java Developer.
NPR Sunday Puzzle | Programming Praxis
Spring Tutorial | Java J2EEBrain
Android Tutorial | Java J2EEBrain
Selenium and Web Driver
nnnick/Chart.js
Fun with AngularJS! | Devgirls Weblog
15+ Useful Tools For Creating Flow Diagrams
Dia Diagram Editor | Free Graphics software downloads at SourceForge.net
Welcome to JBJF – A new approach to batch jobs…
hull, Introducing Clouseau
Tigris.org: Open Source Software Engineering
List of Unified Modeling Language tools – Wikipedia, the free encyclopedia
How I Turned A Slow Array Sort Into A Quick One Using The Quicksort Algorithmn » Debuggable – Node.js Consulting
Diagram Designer
Authentication Sequence
Intro.js | Better introductions for websites and features with a step-by-step guide for your projects.
Home | Metrics
Superhero.js
diagram – What’s the best UML diagramming tool? – Stack Overflow
OOP In JavaScript: What You NEED to Know | JavaScript is Sexy
400+ Java Interview Questions and Answers blog: Spring Interview Questions and Answers: Overview
SOAP interview questions | Java J2EEBrain
terrill.ca | Sorting HTML Tables with Javascript and QuickSort
substack in cyberspace
Hibernate | Java J2EEBrain
Make Backbone Better With Extensions | Nettuts+
Free UML Tool with full UML, ERD and SysML Supports
Sorting algorithms/Quicksort – Rosetta Code
StarUML – The Open Source UML/MDA Platform
Java | Java J2EEBrain
dzone.com – Sample question & answer application using Spring framework, Mongo DB and Bootstrap
RapidSVN
Download Visio Stencil and Template for UML 2.2
Quicksort (JavaScript) – LiteratePrograms
Devops Weekly Issue 110 – 10th February 2013
DHTML Quick Sort < JavaScript | The Art of Web
terrill.ca | Object Oriented Javascript Implementation of QuickSort
Ember: Baby Steps
dzone.com – Uncle Bob (Robert C. Martin): Object Oriented Design. What is it really?
Home | Dropwizard
A JavaScript refresh | TypedArray.org
Change Vision — Astah Community, UML, Professional, Share and iPad
PlantUML
Violet UML Editor
WebPagetest – Website Performance and Optimization Test
dzone.com – Sending SMS using Android
JDBI : Convenient SQL for Java
BOUML – an UML tool box
Review: HP Cloud challenges Amazon and Google | Cloud Computing – InfoWorld
Web Developer Checklist
Java EE Security Cheat Sheet from DZone Refcardz 
Java Cheat Sheet | OverAPI.com
Code Triage
JPA 2.0 Cheat Sheet from DZone Refcardz
HTML-DOM Cheat Sheet | OverAPI.com
EclipseLink JPA Cheat Sheet from DZone Refcardz
Java EE 6 Annotations Cheat Sheet
jQuery Cheat Sheet | OverAPI.com
JPA Cheat Sheet from DZone Refcardz
Jenkins and More! New OpenShift Release – Nov 15, 2011 | OpenShift by Red Hat
CSS Cheat Sheet | OverAPI.com
Javascript Cheat Sheet | OverAPI.com
Code Triage
Regex Cheat Sheet | OverAPI.com
JBoss EAP 5 Cheat Sheet from DZone Refcardz – Free, professional tutorial guides for developers
Goodbye PowerPoint. Hello reveal.js | OpenShift by Red Hat
Java – Interfaces
dzone.com – Tips and tricks for writing your own Java-based Builders with code snippets
Linux Command Line Cheat Sheet | OverAPI.com
Java EE 6 Cheat Sheet from DZone Refcardz
HTML Cheat Sheet | OverAPI.com
140 Google Interview Questions | Impact Interview
Svn Cheat Sheet | OverAPI.com
The W3C CSS Validation Service
NodeJS Cheat Sheet | OverAPI.com
Xtend – Modernized Java
https://developers.google.com/chrome-developer-tools/
JaxServer – Jaxcore
Modules · joyent/node Wiki
My Thoughts on Node.js and Express | Architects Zone
Android Google Maps Tutorial | Java Code Geeks
Java J2EE PDF Study materials | Java J2EEBrain
Geddy | The original MVC Web framework for Node – a simple, structured way to create full stack javascript applications
Java program – Fibonacci series with recursion example | Java67 – Java Program Example Tutorial Blog
Oracle Interview Question; Database FAQ
Super CSV – Welcome
Hibernate pdf tutorials | Java J2EEBrain
10 most tricky question in java – Answers
Creating a basic site with node.js and Express | Shape Shed
Top 50 Web Services Interview Questions
Web Service | Java J2EEBrain
Developing web services -part 1 | Java J2EEBrain
Tower.js – Full Stack Web Framework for Node.js and the Browser
repl.it – Select a Language
REST Web services Framework interview questions answers
Balloons.IO
SOA | Java J2EEBrain
Mojito – Yahoo! Cocktails – YDN
dzone.com – Working with HTML5 Canvas
Top 10 Java Coding Interview questions answers for programmers | Java67 – Java Program Example Tutorial Blog
Servlets Tutorials | Java J2EEBrain
Hibernate Tutorials | Java J2EEBrain
Express – applications
Basic concepts of OpenLDAP | Java Code Geeks
Grasshopper
How to reverse String in Java using Iteration and Recursion
Top Node.js Frameworks 2012 | OCDevel
Oracle Java Interview Questions – JavaStuff.in
NPR Sunday Puzzle (Java) | Exploring Java world
Breaking down Amazon’s mega dropdown – Ben Kamens
Play20/samples at master · playframework/Play20 · GitHub
The Play Framework at LinkedIn | LinkedIn Engineering
stacksort
xkcd: Ineffective Sorts
]-[3ny0 ONLINE: Setting up a Spring Data JPA Project
Sonatype.org: m2eclipse
effectivcrm – Fresh. Nimble. Cloud Ready. – Google Project Hosting
Tutorial:Create Spring 3 MVC Hibernate 3 Example using Maven in Eclipse
Maven + Spring + Hibernate + MySql Example
Spring and Hibernate4 « Middleware Magic
eugenp/REST · GitHub
Migrating to Spring 3.1 and Hibernate 4.1 | SpringSource Team Blog
Simpler JPA with Spring Data-JPA | Technophile Blog
Spring Hibernate End to End Integration using Maven, Spring MVC, JSP, Oracle11g : A Step by Step Guide | Welcome to Codeyard
Introduction to Spring Tutorial
kamens/jQuery-menu-aim · GitHub
OverAPI.com | Collecting all the cheat sheets
Developer Tools | OverAPI.com
Review: HP Cloud challenges Amazon and Google | Cloud Computing – InfoWorld
Optimize Your CSS With RequireJS | Nettuts+
dzone.com – Sending SMS using Android

 

 

Links of the Day

M101J Course Info
Schauderhaft
Agile Enterprise Architecture
Hibernate Getting Started Guide
Schauderhaft » Testing Databases with JUnit and Hibernate Part 1: One to Rule them
HiberObjects – UML for Hibernate
Data Skills for Agile Software Developers
Schauderhaft » Testing Databases with JUnit and Hibernate Part 2: The Mother of All Things
The Skillset of an Agile DBA
Evolutionary/Agile Database Best Practices
Maximizing Human Performance
Agility@Scale: Strategies for Scaling Agile Software Development
Data Modeling 101
dzone.com – Singleton vs Static Class in Java – Pros and Cons
CumuLogic
IBM Cúram Social Program Management Version 6.0.4.0 Product Documentation – United States
Test Driven Development with Node.JS | ÜberConference
JDepend plugin for Eclipse: JDepend4Eclipse
FindBugs™ – Find Bugs in Java Programs
JDepend
PMD
EclEmma – Java Code Coverage for Eclipse
Shivprasad Koirala: Design pattern interview questions :- Which design patterns have you used in your project ?
Treesaver.js
Stevey’s Blog Rants: Good Agile, Bad Agile
Basic Windows PowerShell commands you should already know | TechRepublic
18 New Useful Frameworks for Web and Mobile App Developers – DesignModo
Automated Acceptance-Testing using JBehave | blog.codecentric.de
FireSSH – The Free SSH Client for Mozilla Firefox
Selenium web application testing system
onjava.com/topics/java/JSP_Servlets
ODBMS.ORG :: Object Database (ODBMS) | Object-Oriented Database (OODBMS) | Free Resource Portal
EMMA: Quick Start
EMMA: Sample Reports
JDK 1.5 and Eclipse
Scheduling Junit tests with RunnerScheduler for a concurrent execution | JUnit.org
openpojo – Trivializing POJO testing and Identity. – Google Project Hosting
OO7J -
Chapter 4: Testing with JUnit – Powered by Google Docs
Welcome to my scratchpad: jSonde – Generate a UML Sequence Diagram
jSonde – java profiler, analyzer & reverse engineering tool
ms.stradax.net/Publications/junit-testgen/junit-testgen-slides.pdf
DresdenOCL
Introduction to Eclipse, Unit Testing and JUnit – Powered by Google Docs
argouml-stats: 2.7. The JUnit test cases
Automatic Generate JUnit Tests
Ohloh, the open source network
JSBlend – A Javascript based diffmerge tool
TestGen4J | Download TestGen4J software for free at SourceForge.net
My Tech Notes: Auto Generate JUnit Test Cases
JUnitDoclet
JUnitDoclet Eclipse Plugin | Download JUnitDoclet Eclipse Plugin software for free at SourceForge.net
SourceForge.net: JUnitDoclet Eclipse Plugin – Project Web Hosting – Open Source Software
HiberObjects – UML for Hibernate
Schauderhaft » Testing Databases with JUnit and Hibernate Part 3: Cleaning up and Further Ideas
Schauderhaft » Testing Databases with JUnit and Hibernate Part 2: The Mother of All Things
Hibernate Getting Started Guide
J A L O P Y – Jalopy the source code formatting tool
EclEmma – Using the Coverage View
Coverlipse
Code Coverage Analysis
Speedup eclipse – startup on windows | Cordobo
Eclipse and memory settings » What Was I Thinking ?
InfoQ: Concurrent and Distributed Applications with Spring
JavaScript Testing | Rich Internet Application and User Interface Videos & Tutorials Directory
What Every Web Programmer Needs To Know About Security – Google Code University – Google Code
AwesomeChartJS
Agile Development: Redefining “Management” in Project Management | Project Management for Software Development
MALLET homepage
Code Quality « The Holy Java
DevRates | Open source reviews by real users
Optimizing MongoDB Compound Indexes
3 Mapping Domain Classes to Mongo Collections 1.1.0.GA
MySQL vs. MongoDB: The Complete Edition | Javalobby
MongoDB Input – Pentaho Wiki
Agile Message Management with C24 and MongoDB | Javalobby

Mocking

Apache POI and Excel Manipulation

 

Apache POI

10gen: M101J MongoDB for Java Developers – Week 2

M101J

This class has been going great.

The flow of the class is great and it’s worked well on Windows with Eclipse, Maven and JDK 1.6.

Some notes and links:

BSON
document oriented database
The Spark web framework for Java is nice, very small and simple.

 

MongoClient client = new MongoClient();
DB db = client.getDB(“school”);
DBCollection people = db.getCollection(“people”);

 

Links

 

 

Sunday’s Best

SPOCK FOR TESTING
vs just mocking
Continuous Integration JEE
Very cool, you can now use CloudBees Jenkins to Build Cloud Foundry Apps!

Agile


Coding Practices


Spring


REST


HTML5 / CSS3

 

Some Current Links

Spring
MVN
Persisting Object with Spring 3.1 and Hibernate 4 | MadBit.org
Layered architecture with Hibernate and Spring 3 | Continuous Reconsideration
Using Maven with Spring 3, Hibernate | tuanleaded
How to configure DBCP connection pool in Hibernate
Using Tomcat JDBC Connection Pool in Standalone Java Application | Java Code Geeks
Spring
REST
JPA basic example with EntityManager , Spring and Maven | hop2croft’s software development Blog
level up – Spring MVC and Hibernate Configuration
level up – Spring MVC and Hibernate Configuration
How to set up the Heroku tools for deployment with multiple accounts | Railsware Blog

 

RVL

Droid

Robolectric: Unit Test your Android Application | Robolectric
Dashboards | Android Developers
Notifications | Android Developers
Action Bar | Android Developers
Notifications | Android Developers
Themes | Android Developers
Support Library | Android Developers
ActionBarSherlock – Home
DatePicker | Android Developers
NumberPicker | Android Developers
Testing Fundamentals | Android Developers
monkeyrunner | Android Developers
appthwack – AppThwack
akquinet STAND � view.details.mavenarchetypes

 

ViewDNS.info – Your one source for DNS related tools!

dzone.com – 10 Vital Aspects of Building a Node.JS Application

Arquillian – JBoss Community

Screen Crack Android App

InternalReprogrammability

ANT « Development « Java Tutorial / Blog

 

Android Links

 

Mongodb Links


Rhino/JS

Asynchronous Driver


Tutorials

Mongo Jackson

Groovy

Today’s Links

Android Development Links

Some Helpful Android Projects

Dagger for IOC/DI

Android Annotations

 

Links of the Day

Node.JS Links

 

OpenShift Spring WebApp / Tomcat

OpenShift Express / Node.js

https://openshift.redhat.com/community/blogs/using-nodejs-mongodb-express-for-your-spatial-web-service-and-its-free

 

MongoJEE

https://github.com/angelozerr/mongo-jee/wiki/Mongo-JEE-Demo-with-Apache-CXF-and-Dojo

http://mongo-jee.opensagres.cloudbees.net/

https://github.com/agilemobiledev/mongo-jee

 

Mongodb on OpenShift
HibernateOGM / Mongodb On Openshift
Redmine (Ruby on Rails implementation) – project management SAAS
Android REST Client

https://github.com/agilemobiledev/spring-security-examples.git

https://github.com/shekhargulati/todo-spring3.2.1-with-tests

https://github.com/agilemobiledev/openshift-devdayuk

 

 

BDD

Heroku on Raspberry Pi

&lt;code&gt;
pi@raspberrypi /mnt/usb1 $ wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh
This script requires superuser access to install apt packages.
You will be prompted for your password by sudo.
--2013-02-01 06:47:51--  https://toolbelt.heroku.com/apt/release.key
Resolving toolbelt.heroku.com (toolbelt.heroku.com)... 184.73.165.65, 107.21.105.64, 50.16.233.102, ...
Connecting to toolbelt.heroku.com (toolbelt.heroku.com)|184.73.165.65|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1737 (1.7K) [application/octet-stream]
Saving to: `STDOUT'

100%[===================================================================================================================================================&gt;] 1,737

2013-02-01 06:47:57 (1023 KB/s) - written to stdout [1737/1737]

OK
Hit http://archive.raspberrypi.org wheezy InRelease
Ign http://toolbelt.heroku.com ./ InRelease
Get:1 http://mirrordirector.raspbian.org wheezy InRelease [12.5 kB]
Get:2 http://toolbelt.heroku.com ./ Release.gpg [490 B]
Hit http://archive.raspberrypi.org wheezy/main armhf Packages
Get:3 http://toolbelt.heroku.com ./ Release [1,673 B]
Get:4 http://mirrordirector.raspbian.org wheezy/main armhf Packages [7,403 kB]
Get:5 http://toolbelt.heroku.com ./ Packages [1,045 B]
Ign http://toolbelt.heroku.com ./ Translation-en_US
Ign http://toolbelt.heroku.com ./ Translation-en
Ign http://archive.raspberrypi.org wheezy/main Translation-en_US
Ign http://archive.raspberrypi.org wheezy/main Translation-en
Get:6 http://mirrordirector.raspbian.org wheezy/contrib armhf Packages [23.3 kB]
Get:7 http://mirrordirector.raspbian.org wheezy/non-free armhf Packages [47.8 kB]
Get:8 http://mirrordirector.raspbian.org wheezy/rpi armhf Packages [14 B]
Ign http://mirrordirector.raspbian.org wheezy/contrib Translation-en_US
Ign http://mirrordirector.raspbian.org wheezy/contrib Translation-en
Ign http://mirrordirector.raspbian.org wheezy/main Translation-en_US
Ign http://mirrordirector.raspbian.org wheezy/main Translation-en
Ign http://mirrordirector.raspbian.org wheezy/non-free Translation-en_US
Ign http://mirrordirector.raspbian.org wheezy/non-free Translation-en
Ign http://mirrordirector.raspbian.org wheezy/rpi Translation-en_US
Ign http://mirrordirector.raspbian.org wheezy/rpi Translation-en
Fetched 7,489 kB in 1min 13s (103 kB/s)
Reading package lists... Done
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  foreman heroku libruby1.9.1 libyaml-0-2 ruby1.9.1
Suggested packages:
  ruby1.9.1-examples ri1.9.1 graphviz ruby1.9.1-dev ruby-switch
The following NEW packages will be installed:
  foreman heroku heroku-toolbelt libruby1.9.1 libyaml-0-2 ruby1.9.1
0 upgraded, 6 newly installed, 0 to remove and 126 not upgraded.
Need to get 5,177 kB of archives.
After this operation, 12.0 MB of additional disk space will be used.
Get:1 http://toolbelt.heroku.com/ubuntu/ ./ foreman 0.60.0 [89.5 kB]
Get:2 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libyaml-0-2 armhf 0.1.4-2 [49.0 kB]
Get:3 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libruby1.9.1 armhf 1.9.3.194-5 [4,192 kB]
Get:4 http://toolbelt.heroku.com/ubuntu/ ./ heroku 2.34.0 [639 kB]
Get:5 http://toolbelt.heroku.com/ubuntu/ ./ heroku-toolbelt 2.34.0 [628 B]
Get:6 http://mirrordirector.raspbian.org/raspbian/ wheezy/main ruby1.9.1 armhf 1.9.3.194-5 [207 kB]
Fetched 5,177 kB in 4s (1,188 kB/s)
Selecting previously unselected package libyaml-0-2:armhf.
(Reading database ... 70836 files and directories currently installed.)
Unpacking libyaml-0-2:armhf (from .../libyaml-0-2_0.1.4-2_armhf.deb) ...
Selecting previously unselected package libruby1.9.1.
Unpacking libruby1.9.1 (from .../libruby1.9.1_1.9.3.194-5_armhf.deb) ...
Selecting previously unselected package ruby1.9.1.
Unpacking ruby1.9.1 (from .../ruby1.9.1_1.9.3.194-5_armhf.deb) ...
Selecting previously unselected package foreman.
Unpacking foreman (from .../foreman_0.60.0_all.deb) ...
Selecting previously unselected package heroku.
Unpacking heroku (from .../archives/heroku_2.34.0_all.deb) ...
Selecting previously unselected package heroku-toolbelt.
Unpacking heroku-toolbelt (from .../heroku-toolbelt_2.34.0_all.deb) ...
Processing triggers for man-db ...
Processing triggers for menu ...
Setting up libyaml-0-2:armhf (0.1.4-2) ...
Setting up libruby1.9.1 (1.9.3.194-5) ...
Setting up ruby1.9.1 (1.9.3.194-5) ...
update-alternatives: using /usr/bin/gem1.9.1 to provide /usr/bin/gem (gem) in auto mode
update-alternatives: using /usr/bin/ruby1.9.1 to provide /usr/bin/ruby (ruby) in auto mode
Setting up foreman (0.60.0) ...
Setting up heroku (2.34.0) ...
Setting up heroku-toolbelt (2.34.0) ...
Processing triggers for menu ...
pi@raspberrypi /mnt/usb1 $ heroku login
Enter your Heroku credentials.
Email: piman@pimail.com
Password (typing will be hidden):
Authentication successful.
pi@raspberrypi /mnt/usb1 $ mkdir test
pi@raspberrypi /mnt/usb1 $ cd test
pi@raspberrypi /mnt/usb1/test $ touch a
pi@raspberrypi /mnt/usb1/test $ heroku create
Creating secret-river-2195... done, stack is cedar
http://secret-river-2195.herokuapp.com/ | git@heroku.com:secret-river-2195.git

&lt;/code&gt;

Coding Katas: The Way of the Code Ninja

The Cyber Dojo is an awesome tool for doing Coding Katas and for improving your skills at the craft.


Node.js / JavaScript Coding Katas

Java

More Awesome Books

Growing Object-Oriented Software with Tests

This book is great and uses Java examples and JUnit.  I try to look at this one every week.

Implementation Patterns

Ken Beck’s awesome book with Java examples is another frequent resource.

Release It!

This book was very helpful in learning about the what can and will go wrong in large scale Java applications. Also how to design to fail and recover quickly and consistently.

 





More books

 

Interview Topics

  • REST
  • Inner Classes
  • Interfaces vs Abstract Classes
  • Collections
  • Linked Lists
  • Serialization
  • Threads
  • Transactions
  • i18N
  • JSP
  • HTML5
  • Javascript
  • Android
  • Cloud / PAAS
  • Your favorite web resource
  • Subversion
  • Github
  • Java Debugging
  • JVM Internals
  • AOP
  • UNIX Scripting
  • XML
  • SAX vs DOM
  • Design Patterns
  • JUnits / Mocking
  • Code Coverage / EMMA
  • JDBC vs Hibernate vs JPA vs Spring Data
  • JMS
  • SOAP Web Services
  • Dependency Injection (DI)
  • Generic Programming
  • Annotations
  • Google Guice
  • Maven / ANT / Gradle / SBT
  • Oracle
  • UNIX / Linux / AIX
  • Websphere / Tomcat
  • Cruise Control / Jenkins / Hudson
  • UML
  • Rational Software Architect
  • Inheritance
  • General Objected Oriented Design / Analysis
  • SQL
            • Inner Join vs Outerjoin
            • Cartesian Product
            • Order By vs Group By
            • Limiting Returned Rows
            • Query Plan
            • Relational Algebra

     

 

Today’s Links

In the course of updating my Raspberry Pi last night, came across these guys:

http://nosql.mypopescu.com/post/41866349361/mongodb-is-abusing-json-with-its-query-language

http://hadoop.apache.org/docs/stable/single_node_setup.html

https://github.com/heroku/devcenter-mongo-java

https://wiki.jenkins-ci.org/display/JENKINS/Starting+and+Accessing+Jenkins

https://devcenter.heroku.com/articles/spring-mvc-hibernate

http://www.dzone.com/links/r/ngrinder_enterprise_level_open_source_stress_test.html

http://www.dzone.com/links/r/a_chatty_atmosphere_scalable_chat_component_using.html

http://www.dzone.com/links/r/groovy_goodness_append_values_to_appendable_objec.html

http://springcert.sourceforge.net/

Android + Java + Heroku + JAX-RS

Spring MVC Hibernate Heroku
Embedded JETTY
Embedded Play
JAX RS

CSS Links

Sending Email With Java (Beware)

I turn on debugging to trace what’s going on. All looks good but one email bounces back after a day and some hotmail and gmails just vanish.

To test a mail server from one of our UNIX servers:

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.*;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
public class Mail {

 /// example command line run
 public static void main(String[] args) {
String sArray[] = new String[] {"tim.spann@somedomain.com", "tspann@timmail.com", "tspannjava@joemail.com"};
List&lt;String&gt; emails = Arrays.asList(sArray);
 Iterator&lt;String&gt; iterator = emails.iterator();
 while (iterator.hasNext()) {
 Mail.sendEmail("test from test", "message", iterator.next() );
}
}

/**
 * size of buffer
 */
 public static final int gkBUFFER_SIZE = 256;
/**
 * getCurrentDateTime
 * @return Date current date
 */
 public final static Date getCurrentDateTime() {
 return new Date(System.currentTimeMillis());
 }

/**
 * sendEmail
 * @param subject subject of email
 * @param message message text
 * @param emailAddress email address to send to
 * @return String log of errors/status
 */
 public final static String sendEmail(String subject, String message,
 String emailAddress) {
// email sent
 boolean emailSent = true;
// email message
 StringBuffer emailLoggingMessage =
 new StringBuffer(Mail.gkBUFFER_SIZE);
// start of message
 emailLoggingMessage
 .append("Email:")
 .append(emailAddress).append(System.getProperty("line.separator"));
// Email Properties
 Properties props = new Properties();
// add properties from properties file
 props.put("mail.smtp.host",
 "mymail.mydomain.com");
 props.put("mail.debug",
 "true");
 props.put("mail.smtp.port","25");
// -- login
 props.put("mail.smtp.auth", "true");
Session session = Session.getInstance(props,
 new javax.mail.Authenticator() {
 protected PasswordAuthentication getPasswordAuthentication() {
 return new PasswordAuthentication("nt domainntid", "ntpassword");
 }
 });

// / -------------
// turn on debug mode
 session.setDebug(true);
Message msg = new MimeMessage(session);
 InternetAddress addressFrom = null;
 try {
 addressFrom =
 new InternetAddress("Timothy.Spann@SomeSenderDomain.com");
 } catch (AddressException e) {
 e.printStackTrace();
emailLoggingMessage.append(e.getLocalizedMessage()).append(
 System.getProperty("line.separator"));
 emailSent = false;
 }
 try {
 msg.setFrom(addressFrom);
 } catch (MessagingException e) {
 e.printStackTrace();
emailLoggingMessage.append(e.getLocalizedMessage()).append(
 System.getProperty("line.separator"));
 emailSent = false;
 }
// recipient
 InternetAddress addressTo = null;
 try {
 addressTo = new InternetAddress(emailAddress);
 } catch (AddressException e) {
 e.printStackTrace();
 // refactor this
 emailLoggingMessage.append(e.getLocalizedMessage()).append(
 System.getProperty("line.separator"));
 emailSent = false;
 }
// add to address as recipient
 try {
 msg.setRecipient(Message.RecipientType.TO, addressTo);
 } catch (MessagingException e) {
 e.printStackTrace();
 emailLoggingMessage.append(e.getLocalizedMessage()).append(
 System.getProperty("line.separator"));
 emailSent = false;
 }

// Setting the Subject and Content Type
 try {
 msg.setSubject(subject);
 } catch (MessagingException e) {
 e.printStackTrace();
 emailLoggingMessage.append(e.getLocalizedMessage()).append(
 System.getProperty("line.separator"));
 emailSent = false;
 }
 try {
 msg.setContent(message,"text/plain");
 } catch (MessagingException e) {
 e.printStackTrace();
 emailLoggingMessage.append(e.getLocalizedMessage()).append(
 System.getProperty("line.separator"));
 emailSent = false;
 }
 try {
 Transport.send(msg);
 } catch (MessagingException e) {
 e.printStackTrace();
 emailLoggingMessage.append(e.getLocalizedMessage()).append(
 System.getProperty("line.separator"));
 emailSent = false;
 }
// sent message
 if (emailSent) {
 emailLoggingMessage.append("Email successfully sent.")
 .append(System.getProperty("line.separator"));
 }
// return message
 return emailLoggingMessage.toString();
 }
}

I am testing on a UNIX Server with:

– mail.sh

export ANT_OPTS="-Xms2048m -Xmx2048m -XX:MaxPermSize=1024m"
export JAVA_OPTS="-server -Xms2048m -Xmx2048m -XX:MaxPermSize=1024m"
export CLASSPATH=$CLASSPATH:dsn.jar:mail.jar:mailapi.jar:pop3.jar:smtp.jar:activation.jar:imap.jar:ojdbc14.jar:runtime12.jar:.
javac Mail.java
java Mail &gt; mail.txt 2&amp;&gt; mailerr.txt

Debug Log

DEBUG: JavaMail version 1.4.4
DEBUG: URL jar:file:/home/tspann/mail/pop3.jar!/META-INF/javamail.providers
DEBUG: successfully loaded resource: jar:file:/home/tspann/mail/pop3.jar!/META-INF/javamail.providers
DEBUG: URL jar:file:/home/tspann/mail/smtp.jar!/META-INF/javamail.providers
DEBUG: successfully loaded resource: jar:file:/home/tspann/mail/smtp.jar!/META-INF/javamail.providers
DEBUG: URL jar:file:/home/tspann/mail/imap.jar!/META-INF/javamail.providers
DEBUG: successfully loaded resource: jar:file:/home/tspann/mail/imap.jar!/META-INF/javamail.providers
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
DEBUG: Tables of loaded providers
DEBUG: Providers Listed By Class Name:
{com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc],
com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc],
com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc],
com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc],
com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc],
com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]}
DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc],
imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], smtps=javax.mail.Provider[TRANSPORT,smtps,
com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsy stems, Inc],
smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc],
pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc]}
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
DEBUG: URL jar:file:/home/tspann/mail/smtp.jar!/META-INF/javamail.address.map
DEBUG: successfully loaded resource: jar:file:/home/tspann/mail/smtp.jar!/META-INF/javamail.address.map
DEBUG: setDebug: JavaMail version 1.4.4
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "SomeSenderDomain.com", port 25, isSSL false
220 SomeSenderDomain.com SMTP Ready.
DEBUG SMTP: connected to host "SomeSenderDomain.com", port: 25

EHLO timspann.cool.com
250-ESMTP Server Ready
250-SIZE 0
250-DSN
250-STARTTLS
250 TLS
DEBUG SMTP: Found extension "SIZE", arg "0"
DEBUG SMTP: Found extension "DSN", arg ""
DEBUG SMTP: Found extension "STARTTLS", arg ""
DEBUG SMTP: Found extension "TLS", arg ""
DEBUG SMTP: use8bit false
MAIL FROM:&lt;Timothy.Spann@SomeSenderDomain.com&gt;
250 +OK Sender OK
RCPT TO:&lt;tim.spann@somedomain.com&gt;
250 +OK Recipient OK
DEBUG SMTP: Verified Addresses
DEBUG SMTP: tim.spann@somedomain.com
DATA
354 Start mail input, end with '&lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;'
From: Timothy.Spann@SomeSenderDomain.com
To: tim.spann@somedomain.com
Message-ID: &lt;117704452.0.1350396539475.JavaMail.tspann@tspann.cool.com&gt;
Subject: test from test
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

message
.
250 +OK message queued for delivery.
QUIT
221 Service closing transmission channel closing connection

Issues with IBM AIX Websphere JDK

JavaMail API
Transport
FSQ
Javamail Summary
Javamail Docs
Javamail Docs2
Javamail Readme
SMTP Package Summary
JavaMail without a server
JavaMail

IBM Issues with SSL TLS / GMAIL

Thin Client
IBM WAS security

java.security file at /base_v61/java/jre/lib/security

Port 25
Gmail Ports
SMTP
SMTP Errors
Javamail with SMTPS/SSL
Gmail SMTP using SSL
Javamail to Hotmail
SSL – Android
STARTTTLS
Javamail from Websphere
Sending Gmail
SSL Error Certificate
IBM Support
IBM Support
IBM Support

Javamail with TLS on AIX

SSL

 

Update Using Apache Commons Email (thanks DZONE Readers)

	/**
	 * 
	 * @param subject
	 * @param message
	 * @param emailAddress
	 * @return
	 */
	public final static String sendEmail(String subject, String message, String emailAddress) {
		// email sent
		boolean emailSent = false;

		// email message
		StringBuilder emailLoggingMessage =
				new StringBuilder(UserProvisioningUtility.gkBUFFER_SIZE);

		// start of message
		emailLoggingMessage
				.append(Messages.getString("UserProvisioningProcess.SMTP_MESSAGE_LOG"))
				.append(emailAddress).append(System.getProperty("line.separator"));

		Email email = new SimpleEmail();
		//email.setHostName("smtp.googlemail.com");
		//email.setSmtpPort(465);
		email.setHostName(Messages.getString("UserProvisioningProcess.EMAIL_SERVER"));

		int smtpPort = 25;
		if ( null != Messages.getString("UserProvisioningProcess.EMAIL_PORT")) {
			try {
				smtpPort = Integer.parseInt(Messages.getString("UserProvisioningProcess.EMAIL_PORT"));
			}
			catch(Throwable t) {
				emailLoggingMessage.append(t.getLocalizedMessage()).append(
						System.getProperty("line.separator"));				
			}
		}
		email.setSmtpPort(smtpPort);

//		email.setAuthenticator(new DefaultAuthenticator("username", "password"));
//		email.setSSLOnConnect(true);
		try {
			email.setFrom(Messages.getString("UserProvisioningProcess.FROM_EMAIL"));
		} catch (EmailException e) {
			emailLoggingMessage.append(e.getLocalizedMessage()).append(
					System.getProperty("line.separator"));
		}
		email.setSubject(subject);
		try {
			email.setMsg(message);
		} catch (EmailException e) {
			emailLoggingMessage.append(e.getLocalizedMessage()).append(
					System.getProperty("line.separator"));
		}
		try {
			email.addTo(emailAddress);
		} catch (EmailException e) {
			emailLoggingMessage.append(e.getLocalizedMessage()).append(
					System.getProperty("line.separator"));
		}
		try {
			email.send();
			emailSent = true;
		} catch (EmailException e) {
			emailLoggingMessage.append(e.getLocalizedMessage()).append(
					System.getProperty("line.separator"));
		}

		// sent message
		if (emailSent) {
			emailLoggingMessage.append(
					Messages.getString("UserProvisioningProcess.SMTP_MESSAGE_SENT"))
					.append(System.getProperty("line.separator"));
		}

		return emailLoggingMessage.toString();
	}

Hibernate OGM – MongoDB vs Kundera vs Jongo vs MongoDB API vs Morphia vs Spring Data Mongo – MongoDB Drivers for Java

I am working on a Spring MVC app that demonstrates all of the different MongoDB Java APIs.

Some Links
http://code.google.com/p/morphia/wiki/QuickStart

http://www.mongodb.org/display/DOCS/Java+Tutorial

http://jongo.org/#updating

https://github.com/hibernate/hibernate-ogm

https://openshift.redhat.com/community/blogs/configuring-hibernateogm-for-your-jboss-app-using-mongodb-on-openshift-paas

http://www.hibernate.org/subprojects/ogm.html

https://github.com/impetus-opensource/Kundera/wiki

https://github.com/impetus-opensource/Kundera/wiki/Getting-Started-in-5-minutes

http://blog.fisharefriends.us/morphia-vs-spring-data-mongodb/

http://www.ibm.com/developerworks/java/library/j-morphia/index.html

Maven POM Settings For Various Drivers

	
		morphia
		Morphia

http://morphia.googlecode.com/svn/mavenrepo/

		default

		    sonatype-nexus
		    Kundera Public Repository

https://oss.sonatype.org/content/repositories/releases

			true

			false

		kundera-missing
		Kundera Public Missing Resources Repository

http://kundera.googlecode.com/svn/maven2/maven-missing-resources

			true

			true

        com.google.code.morphia
        morphia
        0.99

        org.hibernate.ogm
        hibernate-ogm-core
        4.0.0-SNAPSHOT
        provided

	org.mongodb
	mongo-java-driver
	2.10.1

 org.springframework.data
 spring-data-mongodb
 1.0.4.RELEASE

Hibernate OGM for MongoDB
https://community.jboss.org/wiki/PortingSeamHotelBookingExampleToOGM
https://github.com/ajf8/seam-booking-ogm
https://openshift.redhat.com/community/blogs/configuring-hibernateogm-for-your-jboss-app-using-mongodb-on-openshift-paas
https://github.com/openshift/openshift-ogm-quickstart

Kundera (JPA for MongoDB)
https://github.com/impetus-opensource/Kundera-Examples/wiki/Using-Kundera-with-Spring
https://github.com/impetus-opensource/Kundera
https://github.com/impetus-opensource/kundera-mongo-performance
https://github.com/impetus-opensource/Kundera-Examples
https://github.com/impetus-opensource/Kundera/wiki/Sample-Codes-and-Examples
https://github.com/impetus-opensource/Kundera-Examples/wiki/Twitter
http://architects.dzone.com/articles/sqlifying-nosql-%E2%80%93-are-orm
https://github.com/xamry/twitample
https://github.com/impetus-opensource/Kundera-Examples/wiki/Cross-datastore-persistence-using-Kundera
http://prabhubuzz.wordpress.com/2012/05/25/mongodb-cassandra-jpa-service-using-kundera/
http://gora.apache.org/
http://xamry.wordpress.com/2011/05/02/working-with-mongodb-using-kundera/
https://github.com/impetus-opensource/Kundera/wiki/Getting-Started-in-5-minutes
https://github.com/impetus-opensource/Kundera/wiki/Concepts

Reading CruiseControl Information

/**
 *
 */
package dev.util.cruise.rss;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;

import javax.mail.MessagingException;

// ROME
import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.io.FeedException;
import com.sun.syndication.io.SyndFeedInput;
import com.sun.syndication.io.XmlReader;

/**
 * @author spannt
 *
 *         RSS FEED of Build
 *
 *         http://localhost:8080/dashboard/rss.xml
 *
 */
public class CruiseControlStatus {

    /**
     *
     * @param url
     * @return
     */
    public static String getPage(String url) {

        StringBuilder out = new StringBuilder();

        URL myUrl = null;
        try {
            myUrl = new URL(url);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        BufferedReader in = null;
        try {
            in = new BufferedReader(new InputStreamReader(myUrl.openStream()));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        String line;

        try {
            while ((line = in.readLine()) != null)
                out.append(line).append(“\n”);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        try {
            in.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return out.toString();
    }

    /**
     * @param args
     */
    @SuppressWarnings(“unchecked”)
    public static void main(String[] args) {

        boolean sendEmail = false;

        URL url = null;
        try {
            url = new URL(“http://localhost:8080/dashboard/rss.xml”);
        } catch (MalformedURLException e) {
            e.printStackTrace();

            System.exit(-1);
        }
        XmlReader reader = null;

        StringBuilder out = new StringBuilder();

        try {

            try {
                reader = new XmlReader(url);
            } catch (IOException e) {
                e.printStackTrace();
                System.exit(-1);
            }
            SyndFeed feed = new SyndFeedInput().build(reader);
            out.append(“\nCruise Control\n\n ” + feed.getLink()).append(“\n\n”);

            for (Iterator<SyndEntry> i = feed.getEntries().iterator(); i.hasNext();) {
                SyndEntry entry = (SyndEntry) i.next();

                /**
                 * <title>release passed Thu, 01 Nov 2012 15:34:37 -0400</title>
                 * <description>Build passed</description> <pubDate>Thu, 01 Nov
                 * 2012 15:34:37 -0400</pubDate>
                 * <link>http://localhost:8080/dashboard
                 * /tab/build/detail/release</link>
                 */
                if (entry.getTitle() != null
                        && entry.getTitle().contains(“CASS FAILED”)) {
                    sendEmail = true;
                    out.append(entry.getTitle() + “<br>\n”
                            + entry.getDescription().getValue() + “<br>\n”
                            + entry.getPublishedDate() + “<br>\n”
                            + entry.getLink() + “<br><br>\n\n”);
                }
            }

            if (sendEmail) {
                // get page
                out.append(“\n\n”).append(
                        getPage(“http://localhost:8080/dashboard/tab/builds”));

                GoogleMail mail = new GoogleMail();
                String[] recipients = { “tim.spann@devland.dev” };
                try {
                    mail.sendSSLMessage(recipients, “Build Notification”,
                            out.toString(), “tim.spann@devland.dev”);
                } catch (MessagingException e) {
                    e.printStackTrace();
                }
            }

        } catch (IllegalArgumentException | FeedException e) {
            e.printStackTrace();
        } finally {
            if (reader != null)
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
        }
    }
}

 

Spring Tutorials – Links

http://tshikatshikaaa.blogspot.com/2012/09/spring-mvc-customized-user-login-logout.html

http://tshikatshikaaa.blogspot.com/2012/09/spring-mvc-service-dao-persistence.html

http://tshikatshikaaa.blogspot.com/2012/08/jpa-tutorial-with-examples-using-hibernate-standalone.html

http://tshikatshikaaa.blogspot.com/2012/10/spring-mvc-form-validation-with-annotations.html

http://tshikatshikaaa.blogspot.com/2012/09/junit-testing-spring-service-and-dao.html

http://tshikatshikaaa.blogspot.com/2012/09/spring-mvc-controller-junit-testing.html

http://tshikatshikaaa.blogspot.nl/2012/09/spring-web-jpa-hibernate-in-memory.html

http://tshikatshikaaa.blogspot.com/2012/11/serving-static-resources-with-spring-mvc.html

http://tshikatshikaaa.blogspot.nl/2012/09/junit-testing-spring-service-and-dao.html

http://tshikatshikaaa.blogspot.com/2013/01/anatomy-of-default-openshift-spring-web.html

http://tshikatshikaaa.blogspot.nl/2013/01/spring-selenium-tests-with-annotations.html

http://tshikatshikaaa.blogspot.com/2012/11/spring-mvc-rest-calls-with-http-only.html

http://www.infoq.com/presentations/Introduction-WebSocket

http://tshikatshikaaa.blogspot.com/2012/11/spring-mvc-rest-calls-from-java.html

http://tshikatshikaaa.blogspot.com/2012/10/setting-logging-dependencies-in-spring.html

http://tshikatshikaaa.blogspot.com/2012/11/spring-mvc-rest-calls-with-ajax.html

http://tshikatshikaaa.blogspot.com/2012/10/returning-json-in-spring-with-annotations.html

http://tshikatshikaaa.blogspot.com/2012/11/fetching-json-with-ajax-in-spring-mvc-context.html

http://tshikatshikaaa.blogspot.com/2012/11/introduction-to-spring-jpa-data-features.html

http://tshikatshikaaa.blogspot.com/2012/11/spring-mvc-error-handling.html

http://www.dzone.com/links/r/caching_with_spring_data_redis.html

http://www.dzone.com/links/r/spring_mvc_how_to_use_sessionattributes_annotation.html

http://www.dzone.com/links/r/cloud_stack_of_your_dreams_bootstrap_and_spring_r.html

http://www.dzone.com/links/r/spring_roo_and_twitter_bootstrap_roostrap_for_spr.html

http://www.dzone.com/links/r/spring_transaction_propagation_tutorial.html

http://www.dzone.com/links/r/rest_services_with_jaxrs_and_spring_handling_lost.html

 

 

 

 

 

The Days of Shell and Rational Roses

http://www.leancrew.com/all-this/2011/12/more-shell-less-egg/

That post reminded me of why UNIX and combining simple single function programs together made UNIX (and Linux) so amazing.

My first college CGI and my first corporate one (Database America’s Yellow Pages engine) were all written in bourne shell!  I thought it was so primitive, but thinking back I was able to implement a functional, fast and solid application in only a few days.   The school project was as a simple web interface to a C++ application I wrote to do some B-Tree application for class.  I do remember making database calls through command line SQL tools and parsing the results wasn’t as clean or as safe as you would want, but that was really because the command line tools were not designed to fit into the standard UNIX change.

We eventually upgraded to Perl, which was really like ShellScript++.

I guess the takeaway here is that make small reusable components that function fast, simple and can be easily chained with other components to make a custom “tool”.  Software is just a tool even when it looks like a fancy magazine or funky website.  Hmm Pipes and Mule ESB have that same feel.  Shell was the ultimate object reuse.

So you would do the painful, slow job of writing C++, even with Rational Rose UML to help guide you, it was painful.  You had to hope you had the correct libraries and that there were free ones.  STL was a great help, but you had to buy a license.  I think we had to buy a bunch of licenses from RogueWave for database stuff as well.  Now Java, Node.Js and the rest have a ton of free libraries for everything.  Which is great, but you have to pick the right one, get it into a build script of some sort (ANT, Maven, Gradle, Rake, SBT, …), combine it with some other libraries and then write some code specific to that library.  With tools like Eclipse and NetBeans, you can automate a lot of that, but even all the libraries and frameworks that help you add bulk and complexities.  More points of failure, not an elegant connection of small tools, but a behemoth of patched together disjoint libraries.

Anyone remembermsql ? MySQL and msql competed for awhile and then MySQL crushed it..

The archive of my old Montclair State Website.

 

Nodester is now AppFog

Quickly add Java, Java Grails, PHP, Python, Ruby, Node.js, … apps.

The free one allows unlimited apps like Heroku.

It also supports a bunch of free services like OpenShift (MySQL, Postgresql, MongoDB, RabbitMQ, and Redis <- very few support this great NoSQL option).

Fast, free and a slick web GUI.

Your choice of data hosting (Amazon, Rackspace, HP or Azure) in different locations (Virginia, Europe, Asia, Dallas, Vegas and San Antonio.)

Up to 2 Gigs free, up to 8 services.

Running CloudFoundry Sample

Docs for accessing mysql

On Windows 7

af login&lt;br&gt;gem update --system
gem install af&lt;br style=""&gt;mvn clean package

af update tspannjavajava
gem update --system
Latest version currently installed. Aborting.

gem install af
Successfully installed af-0.3.18.11
1 gem installed
Installing ri documentation for af-0.3.18.11...
Installing RDoc documentation for af-0.3.18.11...

af login
Attempting login to [https://api.appfog.com]
Email: email@email.com
Password: *****************
Successfully logged into [https://api.appfog.com]

mvn install

F:Projectscloudfoundry-sampleshello-java&gt;af update tspannjavajava
Uploading Application:
&nbsp; Checking for available resources: OK
&nbsp; Packing application: OK
&nbsp; Uploading (12K): OK
Push Status: OK

RabbitMQ

Need to move WEB-INF to maven root

Failed until I made the directory exactly like ZIP file source code download, see META-INF and WEB-INF.

Directory of \Projects\cloudfoundry-samples\hello-java

01/22/2013  02:37 PM    <DIR>          .

01/22/2013  02:37 PM    <DIR>          ..

01/22/2013  02:37 PM                42 .gitignore

01/22/2013  02:37 PM             5,312 README.md

01/22/2013  02:37 PM    <DIR>          src

04/16/2012  11:38 PM               692 pom.xml

04/16/2012  11:39 PM               117 pom.properties

01/22/2013  02:45 PM    <DIR>          target

01/22/2013  02:37 PM    <DIR>          WEB-INF

4 File(s)          6,163 bytes

5 Dir(s)  15,830,614,016 bytes free

\Projects\cloudfoundry-samples\hello-java>af update tspannjavajava

Uploading Application:

Checking for available resources: OK

Packing application: OK

Uploading (15K): OK

Push Status: OK

Stopping Application ‘tspannjavajava’: OK

Staging Application ‘tspannjavajava’: OK

Starting Application ‘tspannjavajava’: OK

F:\Projects\cloudfoundry-samples\hello-java>

Spring

same as cloudfoundry

https://github.com/SpringSource/cloudfoundry-samples/wiki/Cloud-foundry-environment-variables

http://blog.springsource.org/2011/10/13/using-cloud-foundry-services-with-spring-part-1-the-basics/

Similiar to Stackato

http://docs.stackato.com/deploy/languages/java.html

http://jackson.codehaus.org/1.0.1/javadoc/org/codehaus/jackson/JsonNode.html

http://blog.springsource.org/2011/10/13/using-cloud-foundry-services-with-spring-part-1-the-basics/

http://docs.stackato.com/deploy/services/data-services.html#database-services-advanced

https://github.com/Stackato-Apps/hello-java-mysql

Raspberry Pi and Development

Here are some links I have found useful in setting up my Raspberry Pi machine for development and more.

Raspberry Pi

Raspberry Pi on My TV

 

 


MongoDB
Development on Pi
Multimedia
C-64 Emulator (Games)
UPnP
Java on Raspberry Pi

Eclipse/Java

Some Useful Updates via Raspian/Debian
sudo apt-get update
sudo apt-get install eclipse

Java library for Raspberry Pi
Java Library for RPi (Pi4J)
JVM on Pi
Oracle JVM Downloads
JDK1.7 on Pi

General Raspberry Pi Usage

Node.JS on Raspberry Pi
Scala on Raspberry Pi

Installing the TypeSafe Stack

 

New Node.JS, JavaScript, HTML5, NoSQL Links

My favorite new resource is DailyJS, always a ton of great links, libraries, tutorials, documents and more.  This is really a site that I have to visit daily.

 

JavaScript

Continuum / Analytics.js

New Streaming API for Node, Components Tutorial, Holler, GruntStart

HTML5: Server-sent events with Angular.js, Node.js and Express.js | Smartjava.org 

 

Backbone

Backbone.js Tutorial: Backbone.sync

 

JavaScript MUSIC

Substack’s Musical Node Modules – this is really cool stuff.

 

Tutorials

Using MongoDB, Redis, Node.js, and Spring MVC in a single Cloud Foundry Application

Java to Node.JSNode.js Application Development with RabbitMQ Service

Node.js on CloudFoundry

Backbone and Node.JS App

 

I have posted a bunch of great tech links on my Google+, check them out.

 

 

 

 

sj:mug Holiday Mongo Talks

MongoDB @ HP in Mt Laurel, NJ

 

 

My local demo is hitting a MongoDB instance at MongoLab, the provide free hosting for a small dataset.

 

I have a simple application based on Spring Data for Mongodb.

 

MongoOperations mongoOps = null;
 AppConfig config = new AppConfig();
 try {
 mongoOps = config.mongoTemplate();
 } catch (Exception e) {
 e.printStackTrace();
 logger.error("Mongo Connection Error", e);
 }

 Person person = mongoOps.findOne(new Query(where("name").is("Joe")), Person.class);
 logger.info(person.toString());

 model.addAttribute("MongoInfo", person.toString());

 

august 2012 – 2.2
aggregation framework
improved concurrency
mongo is great for email storage / documents
aggregation  - unix style piping
TTL (time to live)
garbage collect data
unwind an array

 

 

Manfiesto for Software Craftsmanship

Manfiesto for Software Craftsmanship

 

Sign it today!

Raising the bar.

As aspiring Software Craftsmen we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work we have come to value:

Not only working software,
but also well-crafted software
Not only responding to change,
but also steadily adding value
Not only individuals and interactions,
but also a community of professionals
Not only customer collaboration,
but also productive partnerships

That is, in pursuit of the items on the left we have found the items on the right to be indispensable.

© 2009, the undersigned.
this statement may be freely copied in any form,
but only in its entirety through this notice.

 

Spring Resources



















http://www.springsource.com/files/uploads/all/Spring-Web-Developer-Certification-Study-Guide.pdf







Using IBM Heap Analyzer and Other IBM Tools For IBM JDK

 

“Anatomy of a Java Finalizer”

“Unveiling the java.lang. OutOfMemoryError”

screen
IBM Class Loader
Screenshot

IBM Thread and Monitor Dump Analyzer for Java

screenshot

IBM Trace and Request Analyzer for WebSphere Application Server

Unveiling the java.lang.Out OfMemoryError

IBM Database Connection Pool Analyzer for IBM WebSphere Application Server

Heap Analyzer Information

Heap Analyzer

Heap Analyzer to Diagnose Java Heap Issues

C:IBMAnalysis>java -Xmx1100m -jar ha439.jar
 

 

Example Dump

java -version

java version “1.6.0_33″

Java(TM) SE Runtime Environment (build 1.6.0_33-b03)

Oracle JRockit(R) (build R28.2.4-14-151097-1.6.0_33-20120618-1633-windows-ia32, compiled mode)

 

Heap Dump Information

File Integrity Complete
File path heapdump.20121120.133422.10420458.0001.phd
File format IBM portable heap dump, PHD Format Version 5
File size 300,304,360 bytes
Time stamp November 20, 2012 ,2:26:03 PM
Java version JRE 6.0 AIX ppc64
Classes 83,868
Instances 11,846,425
Instance arrays 1,905,395
Primitive arrays 2,744,667
Total Entries 16,580,355
References 29,315,306
Root objects 116,696
Types 83,876
Heap range 0×40000000 to 0xfff29fc8
Heap usage 3,219,677,952 bytes
Dark Matter 670,944 bytes (0.02 %)
Leak suspects 26

 

Scrumban for Defect Cycle Resolution

I have been working on using Scrumban to resolve a defect cycle we are working through.  We have a large number of defects on a product (many of which are from a third party framework) and a typical Scrum is a bit difficult because of so many small stories.  I was thinking of doing pure Kanban, but my team is very used to working within a standard Scrum sprint cycle.

 

So a ScrumBan board in our defect fixing war room seems to be the best way to track a lot of small tickets (post-its).

 

I will post and see how this goes.

Node.js Development on Windows with WebMatrix 2

Having found the excellent TOAD for MongoDB (and other NoSQL), Windows is starting to be an okay development platform.  Not as good as Mac or Ubuntu, but not bad.  From Eclipse to SBT to GIT to BASH, everything you need for Node.JS, HTML5, Mobile, NoSQL and Cloud PAAS development is available.

WebMatrix 2 lets you edit JavaScript, Node.js with, HTML5, CSS, Less, CoffeeScript, Images and connect to MySQL.

 

 

 

 

Great Extensions

OrangeBits

NPM

http://extensions.webmatrix.com/

 

http://jsfiddle.net/

 

Resources

http://dotnet.dzone.com/articles/webmatrix-2-rc-html-css-nodejs

http://blog.ntotten.com/2012/09/06/hacking-node-js-on-webmatrix-2/

http://www.nodejs-news.com/nodejs-tech/nodejs-webmatrix/

http://www.youtube.com/user/WebMatrixMS

http://blog.stevensanderson.com/2012/07/09/node-js-development-with-webmatrix-2-and-express/

http://jbeckwith.com/2012/06/07/node-js-meet-webmatrix-2/

http://www.lynda.com/Nodejs-tutorials/Nodejs-First-Look/101554-2.html

https://github.com/MicrosoftWebMatrix

https://github.com/MicrosoftWebMatrix/NodePowerTools

http://www.microsoft.com/web/post/how-to-use-the-nodejs-starter-template-in-webmatrix

http://vishaljoshi.blogspot.com/2012/06/announcing-webmatrix-2-rc.html

http://channel9.msdn.com/Shows/Web+Camps+TV/Coding-Nodejs-in-WebMatrix-2

http://www.hanselman.com/blog/WebMatrix2FrontEndWebDevelopersTakeNoteASPNETPHPNodejsAndMore.aspx?utm_source=javascriptweekly&utm_medium=email

 

mongodb meeting with SJ

Introduction to MongoDB

 

 

A first time meetup in South Jersey at the Fire Hall in Pennsauken.   With some great support from 10gen with info sheets, stickers and pizza.

 

Notes from A. Riveria presentation:

  • Document Data Model
  • Database Technology anywhere…
  • Written in C++
  • Source Code on Github
  • Runs on most platforms
  • BSON (Binary JSON) – binary-encoded serialization
  • JSON collections
  • Embedding of objects/arrays
  • Table => Collection
  • Row => Document
  • Join => Embedded
  • Foreign Key => Reference / Link  (Object Id – autogenerated serial # for each document)
  • Partition => Shard (Shard keys across nodes)
  • Indexes on fields and collections of indexes
  • Great for lat/long
  • Geospatial queries
{} – select all where
db.users.find( {}, {username:1, firstname: 1, lastname:1, email:1}
1- true
Results (JSON):
{  username: “smith”,
    firstname: “angel”,
   lastname: “Rivera”,
   email: “a@a.com”
}

 

Insert

var insertString = {username:”smith”, value:1}

   can use quotes around the fieldnames.

 

db.users.insert(insertString);

 

(users is our collection)

 

Update

db.users.update({username: “jones”}, {$set: {email:”a@yahoo.com”}}

 

first section is where, set part does the update on the field(s)

 

MAKE SURE YOU USE $SET modifier in updates.

Only updates first record it encounters.

 

Save

Upserts.  Update or if not found then create/insert.

 

Remove/Delete

 

db.users.remove( {username:”aname”});

 

deletes a document

 

Mongo Query Operators

 

$ne (not equal)

$lt (less than)

$lte (less than equal to)

$gt

 

mongoimport

Also supports CSV, best to do JSON, the default.    Arrays in a field does not work in a CSV.

mongoimport –db sjmug -c users -v –file data.json –host localhost –port 27018 –jsonArray

 

 

 

 

Thanks to 10gen for sponsorship!

 

 

 

Memory Check From Sun (Oracle) JVM on Windows

java.lang.management.OperatingSystemMXBean mxbean = java.lang.management.ManagementFactory.getOperatingSystemMXBean();
 com.sun.management.OperatingSystemMXBean sunmxbean = (com.sun.management.OperatingSystemMXBean) mxbean;
 long freeMemory = sunmxbean.getFreePhysicalMemorySize()/1048576; 
 long availableMemory = sunmxbean.getTotalPhysicalMemorySize()/1048576; // Megs 1,024 x 1,024
 
 System.out.println("Free=" + freeMemory + " Avail=" + availableMemory);

Long Classpaths in Windows

There’s many options to fix this:

Other options

Windows Symbolic Links Utility (Junction v1.06)

 

http://www.java-forums.org/advanced-java/57496-classpath-max-length.html

 

http://unserializableone.blogspot.com/2007/10/solution-to-classpath-too-long-aka.html

 

IBM JDK Limitations (2,031 characters use java.ext.dirs)

 

Try ext dir for Oracle JDK.

 

Try Jawful, an interesting utility.

 

Try classpath wildcards or a Stackoverflow discussion on Long Java Classpaths.

 

Some general information on Classpath.

 

 

Linked List

Graphic Display of Nodes in a linked list (with bacon data)

 

Linked List in UML

 

Linked List in Pseudo Code

 

Linked List in Node.js (Javascript)

An implementation in Javascript.  A linked list of buffers in Node.js.  A great set of implementations for Javascript.  A computer science implementation of JavaScript.  Also a nice insertion sort in Javascript.

 

Linked List in Java

Java has built in Lists.  An implementation of the Singly Linked List.

 

Linked List in Scala

Scala has built in Lists.  A Scala list from scratch.

 

Linked List in Groovy

Groovy has built in Linked Lists and other Collections.

RosettaCode, An awesome site listing implementations in many languages, this is a link to linked list.

 

 

 

Node.js and Mongodb Links

Test Driven Node.JS Development

What would a language and framework be with unit testing, BDD, and other testing methods, frameworks and systems?

So once you get beyond casual Node.JS development, you will need to start unit testing.  Node.js has a surprisingly robust and mature set of testing tools and options.  Out of the box, Node.js has Built In Assert which will let you do some basic XUnit style tests.   A step beyond that is NodeUnit, which is pretty easy to use for XUnit oriented people.  For me, it’s easy to pick up coming from doing a lot of JUnit tests.  This article is great for Using NodeUnit for Testing.  Node.js is great because so many people have developed tools, frameworks and utilities for it.  The only issue I have it some are not very mature and the options are so fragmented.  There’s no Spring framework or hibernate that garners massive usage.  So many variations and options, I wish they could work together to put together a killer Rails or Spring type group of mature, tested, interconnected tools and utilities.  Full Testing Suite – Mocha is installable via NPM and works with a CI server.  This one is pretty cool.

The source for everything testing/bdd/mocking for Node.JS is Joyent’s Testing Wiki.
There’s a number of behavior driven development tools including the polyglot tool Cucumber -> BDD Testing Tool – Cucumber.JS.  Another option is Asynchronous BDD Testing Tool – Vow.
For mocking,  Mockito Style Mock Objects – Mary Jane, looks great.   I will hope that maybe Mockito will officially support this one.
For JQuery fans, someone has ported QUnit to Node.JS [Node-Qunit]
This is just a sampling of test options.  Obviously tools like Selenium and Firebug will help you and so would JMeter and and SOAPUI.  A lot of general web testing tools are available that can do full system testing or integration testing for your Node.JS web apps.
I will be adding some examples in a future post with a github link.

Ehcache + Hibernate / JPA and TomEE

Ehcache + Hibernate and/or JPA
OpenJEE / TomEE

Spring / HTML5 / Flex

Spring Remoting
FLEX for Spring
Spring BlazeDS Integration
HTML5
Mobile First Responsive Web Design
Application Cache

Node.js and JavaScript Links

OAuth for Node.jS
Backbone hackers guide
Realtime multiplayer game in html5
Nodebots
Cloud Control Hosting
Deploy Node.JS to Staging
HALLOJS Editor
Mod Player
Node.JS Stack Trace
JavaScript Terminal
JavaScript Test Runner

Nodejitsu

Nodejitsu is another Node.js PAAS that offers a free plan.  The free plan is shared hosting through Joyent.  The performance of NodeJitsu’s free plan is very good, especially considering it’s free.  To start sign up on NodeJitsu’s site with the free plan and then follow the Getting Started instructions.  It was a very quick process on Windows.  You can use either their command line, Node.JS based jitsu tool, use the admin web site or use the HTTP API.

Executing the basic jitsu command will show you the following information:

G:&gt;jitsu
info: Welcome to Nodejitsu
info: It worked if it ends with Nodejitsu ok
info: Executing command
help: ___ __
help: / / / /_ / /
help: __/ / / __/ /__/
help:
help: Flawless deployment of Node.js apps to the cloud
help: open-source and fully customizable.
help: https://github.com/nodejitsu/jitsu
help:
help: Usage:
help:
help: jitsu &lt;resource&gt; &lt;action&gt; &lt;param1&gt; &lt;param2&gt; ...
help:
help: Common Commands:
help:
help: To sign up for Nodejitsu
help: jitsu signup
help:
help: To log into Nodejitsu
help: jitsu login
help:
help: To install a pre-built application
help: jitsu install
help:
help: Deploys current path to Nodejitsu
help: jitsu deploy
help:
help: Lists all applications for the current user
help: jitsu list
help:
help: Additional Commands
help: jitsu apps
help: jitsu logs
help: jitsu env
help: jitsu conf
help: jitsu users
help: jitsu databases
help: jitsu snapshots
help: jitsu logout
help:
help: Options:
help: --version, -v print jitsu version and exit
[string]
help: --localconf search for .jitsuconf file in ./ and then parent dir
ectories [string]
help: --jitsuconf, -j specify file to load configuration from
[string]
help: --noanalyze skip require-analyzer: do not attempt to dynamically
detect dependencies [boolean]
help: --colors --no-colors will disable output coloring
[boolean] [default: true]
help: --release, -r specify release version number or semantic increment
(build, patch, minor, major) [string]
help: --raw jitsu will only output line-delimited raw JSON ( use
ful for piping ) [boolean]
info: Nodejitsu ok

To add a MongoDB NoSQL Database is really simple!

jitsu databases create mongo myMongo
info: Welcome to Nodejitsu tspannnodejs
info: It worked if it ends with Nodejitsu ok
info: Executing command databases create mongo myMongo
info: A new mongo has been created
data: Database Type: mongo
data: Database Name: myMongo
data: Connection url: mongodb://nodejitsu:c23948239348239482934@st
aff.mongohq.com:10064/nodejitsudb684248241564
info: Nodejitsu ok

To create your first test app, you can install their demo Hello World application as follows:

jitsu install helloworld
Directory of paasnodejitsuhelloworld
07/20/2012 12:41 PM &lt;DIR&gt; node_modules
07/20/2012 12:41 PM 1,015 package.json
07/20/2012 12:41 PM &lt;DIR&gt; bin
07/20/2012 12:41 PM 1,534 ReadMe.md
2 File(s) 2,549 bytes
4 Dir(s) 2,900,639,744 bytes free
cd helloworld
jitsu deploy
info: Welcome to Nodejitsu tspannnodejs
info: It worked if it ends with Nodejitsu ok
info: Executing command deploy
warn:
warn: Your package.json file is missing required fields:
warn:
warn: subdomain
warn:
warn: Prompting user for required fields.
warn: Press ^C at any time to quit.
warn:
prompt: subdomain: (tspannnodejs.helloworld)
warn: About to write G:paasnodejitsuhelloworldpackage.json
data:
data: {
data: contributors: [
data: { name: 'Marak Squires', email: 'marak.squires@gmail.com' },
data: { name: 'Joshua Holbrook', email: 'josh.holbrook@gmail.com' }
data: ],
data: dependencies: {},
data: repository: { type: 'git', url: 'git://github.com/nodeapps/hellowor
ld.git' },
data: bugs: { url: 'https://github.com/nodeapps/helloworld/issues' },
data: subdomain: 'tspannnodejs.helloworld',
data: engines: { node: '&gt;=0.4' },
data: optionalDependencies: {},
data: analyze: false,
data: name: 'nodeapps-helloworld',
data: devDependencies: {},
data: scripts: { start: 'node ./bin/server' },
data: author: { name: 'Nodejitsu Inc.', email: 'support@nodejitsu.com' },
data: main: '',
data: description: 'a very basic node.js helloworld application',
data: homepage: 'http://nodeapps.github.com/helloworld',
data: version: '0.2.0',
data: licenses: [
data: { type: 'MIT', url: 'https://github.com/nodeapps/helloworld/raw
/master/LICENSE' }
data: ],
data: keywords: [ 'nodeapps', 'helloworld' ]
data: }
data:
prompt: Is this ok?: (yes) yes
info: Skipping require-analyzer because noanalyze option is set
info: Checking app availability nodeapps-helloworld
info: Creating app nodeapps-helloworld
info: Creating snapshot 0.2.0
info: Updating app nodeapps-helloworld
info: Activating snapshot 0.2.0 for nodeapps-helloworld
info: Starting app nodeapps-helloworld
info: App nodeapps-helloworld is now started
info: http://tspannnodejs.helloworld.jit.su on Port 80
info: Nodejitsu ok

 

You can see the deployed application here.

This NYC Node.js PAAS is very performant with a fast easy to use tool.  I am liking them so far.  They are also very Node.JS oriented, being the only of the PAAS vendors to use Node.JS for their command line tool.

They have also developed the very interesting FlatIron Framework, which I will be looking at next.

 

 

 

 

 

 

Nodester Node.JS + Express + Mongo App Part 1 – Nodester

The Running Node.JS Application on a Nodester

 

I am still working on putting up a full application for the tutorial.  Also I will try the same application on Nodejitsu, CloudFoundry and Heroku.

The following are the basic steps for working with Nodester. It is very similiar to all the other command-line PaaS interfaces. I am running this on
Windows, but it will work in most environments.

 

npm install nodester-cli -g
nodester user setup &lt;username&gt; &lt;password&gt;
nodester user setkey c:.sshid_rsa.pub
nodester app create &lt;appname&gt;
nodester app init &lt;appname&gt;
nodester npm install express
nodester npm install mongoose
nodester npm install socket.io

git add .
git commit -am "Ready to deploy"
git push nodester master

nodester app info
nodester app stop|start|restart
nodester app logs

For nodester they push to master for Nodester to get a new build.

Log into your Application List Page on the Administration Site for Nodester and you will see your newly added Application. Nodester has a good help system that will be useful to you while learning. The git commands are standard GIT which makes using all the cloud systems pretty similiar.

After uploading, I check the logs for errors:

nodester app logs
nodester info Showing logs for: rollerderby
New PID: 18884
chroot_runner
chroot_runner
Spawing /app/server.js
Running node v-0.8.1
:: nodester ::

App listening on port 19885

nodester info ok!

nodester deployed

 

I used there out of the box example and added a connection to my test mongo db database at MongoLab.

 

Link Section:

The final deployed application from this tutorial

http://blog.nodester.com/post/3634535277/running-websockets-on-nodester

http://blog.nodester.com/post/19902515151/tips-for-windows-users

http://blog.nodester.com/

https://github.com/nodester/nodester/wiki/

Restify with Mongodb and Mongoose (src)

Backbone.js Boilerplate

Node.JS Mongodb Native Driver

Mongoose Driver

Mongoose Tutorial

Node.JS and Mongodb Video Tutorial

Node.JS / Mongodb / Mongoose Tutorial

Finding Documents in MongoDB with Mongoose

Node.js Tutorial

Restful API with Node.js and Mongodb + Expresss & Mongoose

Backbone.js Fundamentals

Mongoose Model Definition

Toad for Cloud

TOAD for Cloud Databases

It’s free and it works great for querying your NOSQL databases.

I am using it here against a free instance of MongoDB database hosted on MongoLab.  It works great and fast and is nice for people who have been using TOAD against Oracle for years.

It also works Cassandra and Hadoop amongst others.  For free, give it a try.  There’s also an Eclipse plug-in, but that was a little too slow and memory draining for me.  They use a funky datahub for querying things and that seems to work well for me on Windows 7.

Download the Full Installation Community Edition here.

 

TOAD

TOAD

 

HTML5

HTML5 Deep Dive Canvas

Canvas Scene Graph

HTML5 Template Engine for Java/Spring

Creating 3D Games with HTML5

HTML5 Canvas Game Engine

Vector Drawing Tool

2D Games and Graphics Engine

Online HTML5 Sketch Pad

HTML5 Drawing Tool

HTML5 Game

HTML5 JS Library

HTML5 JS Animation Library

JS Library for Sound

JS Processing Language

Keyframing API for HTML5 

SVG Parser and Renderer

JS Library and Editor

MEMSQL – World’s Fastest DB

HTML5 Audio Control (Tape Player UI)

HTML5 Weekly Week #22

HTML5 Application Cache Manifest (facebook)

Modernizr Library (JS, CSS, HTML5)

MS Office Apps with HTML5

Insane HTML5 Game and Source

https://github.com/wwwtyro/Astray <- Kick ass maze game

HTML5 Audio Editor

HTML5 Canvas Demo

Ninja Authoring Tool for HTML5

HTML5 GamePad API

HTML5 Features to Use

HTML5 Canvas and Processing.JS
 

 

 

 

 

 

 

 

 

No, Not Python, It’s the Holy Grails…

I’ve been evaluating a few different technologies for doing some rapid web development work and recently I have been looking at the bounty of available tools, libraries, frameworks and associates of Spring.  Spring ROO and Groovy/Grails are the big two RAD tools from SpringSource and they look pretty amazing.  I don’t think I’ve found the Holy Grail of Web App development, but these two tools are really helpful in rapidly developing apps.  I am hoping someone combines Roo or Grails with Vert.x to make a really awesome alternative to Node.JS.  I like Node.JS and have been doing JavaScript for a decade, but I prefer the languages of the JVM and Vert.x’s support for multiple languages is pretty awesome.  Hmmm, Vert.x in Grails.

With the excellent STS inside Eclipse, this gives Groovy and Java a great IDE for development, testing and debugging.  And that is something that is lacking for Node.JS.  Node.JS has a few tools out there, but nothing open source, free, full of awesome mature plugins (PMD, Checkstyle, GIT, Maven, JUnit, FindBugs, …) and just plain easy to use.  Eclipse also has plugins for working with CloudFoundry, Heroku, OpenShift and other Cloud environments.

Between Grails and Roo, I really like the fact that I can remove Roo at anytime and still have a fully functionally application setup that utilizes standard Spring tools.  It’s also easier to add other cool Spring projects like Spring Social, Spring Mobile, Spring Data and more.

Both Grails and Roo support MongoDB very well and that’s great too see.  I have a few Mongo DB instances on MongoLab, MongoHQ and OpenShift.  These services all have great free developer services that are great for learning, prototyping and for tutorials.  I am really loving Heroku and OpenShift.  It’s hard to pick one, so I didn’t.  I use them both.

Vert.x + Groovy is really cool, but again not much IDE support, tools or extra libraries.  It should grow start building support now, but competition with Node.JS is pretty fierce.

Interesting, Roo vs Grails Jobs.

 

 

But if you look at just Spring (which Roo is just a tool to help with a Spring project):

 

 

There’s also some great documentation, tutorials and books on Groovy/Grails since it’s been out for a while:  http://grails.org/Tutorials  http://www.infoq.com/minibooks/grails-getting-started On the other hand, Roo is newer, but since it generates standard Spring + Java, you are really just getting a good head start on your project.

Heroku has a nice article on using both with their awesome platform:   https://devcenter.heroku.com/articles/grails  and https://devcenter.heroku.com/articles/spring-mvc-hibernate.

I will post a Github repository of some samples soon.

 

Spring MVC + Spring Data for Mongodb + Mongolab + OpenShift

I created a small tutorial application following the Spring Data for Mongodb guide with a little bacon for flavor. I wanted to use real hosting for MongoDB, so I created a database at MongoLab.   It was quick and easy and the hosting is fast and works great even remotely for local development.

The tutorial application in process is one to register your Bacon Creation for this year’s BaconFest.  The winner gets a mini BaconExplosion.

This is ONLY a test, you will not receive BACON.
image

Certification Notes

http://www.coderanch.com/how-to/java/SCJP-FAQ

http://docs.oracle.com/javase/tutorial/

http://www.oracle.com/technetwork/java/javaee/overview/index.html

http://www.google.com/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=1&cts=1330742455969&ved=0CDAQFjAA&url=http%3A%2F%2Fm2projects.googlecode.com%2Ffiles%2FSCJP_Sun_Certified_Programmer_for_Java_6_Exam_310-065.pdf&ei=boRRT5nSOOLv0gG-yejvDQ&usg=AFQjCNEYGyInJaVdgFZ2JVlZlPtOEdCFPA&sig2=E1R9kgPE6kv_3yCpI0K2BA

http://www.fileshut.com/find_files.php?submit=submit&q=Sun+Certified+Enterprise+Architect+For+Java+Ee+6+Study+Guide&ext=0&submitit=Search+Files

http://www.coderanch.com/how-to/java/ScbcdLinks

http://en.wikipedia.org/wiki/Sun_Certified_Professional

http://www.oracle.com/technetwork/java/javaee/documentation/index.html

http://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition

http://docs.oracle.com/javaee/6/tutorial/doc/

http://www.javaworld.com/javaworld/jw-04-2009/jw-04-lean-soa-with-javaee6.html

http://www.javaworld.com/javaworld/jw-02-2012/120214-jtip-rss-for-android.html

https://blogs.oracle.com/theaquarium/entry/and_then_there_were_14

http://www.oraclejavamagazine-digital.com/javamagazine/20111112#pg1

http://www.oraclejavamagazine-digital.com/javamagazine/premiere2011#pg1

http://www.oracle.com/technetwork/articles/java/unittesting-455385.html

http://www.oracle.com/technetwork/articles/java/springtojavaee-522240.html

http://www.oracle.com/technetwork/articles/java/cdi-javaee-bien-225152.html

http://code.google.com/p/jee6-cdi/wiki/DependencyInjectionAnIntroductoryTutorial_Part1

https://blogs.oracle.com/geertjan/entry/java_ee_6_cheat_sheet

http://www.oracle.com/technetwork/java/javaee/downloads/index.html

http://www.physics.usyd.edu.au/~rennie/javaEE6ReferenceSheet.html

http://www.physics.usyd.edu.au/~rennie/javaEE6ReferenceSheet.pdf

 

 

Useful Tools

Google CodePro

Part of the plug-in for Eclipse includes an awesome JUnit Test Case Generator.  It generates a lot of code you need for your unit test, much better than the OOTB Eclipse Junit Class Generator.  It generates all the methods you need to start with and most of the boilerplate test code.  It saves a lot of time and gives you a nice skeleton to start adding tests to.   Google’s CodePro is a nice free tool and a great addition to my toolbox.

https://developers.google.com/java-dev-tools/codepro/doc/features/junit/test_case_generation

My tip:  I have specific Eclipse installs for all my different tools.  One for Android Development, One Spring STS version, one JBoss/OpenShift version, one for Heroku, one for JEE, one for Client Focused / HTML 5, one for Mobile,  etc…  That way I am not loading any extra plugins.

Some of the standard plugins I like:

You definitely don’t want Android tools in your Eclipse if you are not going to do be doing Android apps everytime, keep that in a separate Eclipse install.  You can install as many as you want, space is cheap.   I have some that run of USB Sticks fine.

Recent Articles about JavaScript and Java

Jaggery JS (Server Side Framework and Server)
http://jaggeryjs.org/

Jetty on OpenShift
http://www.dzone.com/links/r/jetty_on_red_hats_openshift_enabling_lightweight.html

Introduction to AOP
http://www.javacodegeeks.com/2012/06/simple-introduction-to-aop.html

NoSQL Unit (soon for MongoDB)
http://www.javacodegeeks.com/2012/06/nosqlunit-030-released.html

Android Dashboard Design Pattern
http://www.javacodegeeks.com/2012/06/android-dashboard-design-pattern.html

App Logging
http://www.javacodegeeks.com/2011/01/10-tips-proper-application-logging.html

Openshift Intro
http://www.javacodegeeks.com/2012/06/rise-above-cloud-hype-with-openshift.html

Getting Started with Spring Social
http://www.javacodegeeks.com/2012/06/getting-started-with-spring-social.html

Android UI Patterns
http://www.androiduipatterns.com/

Spring Social Google
https://github.com/GabiAxel/spring-social-google

https://github.com/GabiAxel/spring-social-google/wiki/Spring-Social-Google-Reference-Manual

 

 

 

 

ETE Presentations

Chariot Solutions Presentations / ETE Presentations
http://chariotsolutions.com/presentations

Chariot Solutions Emerging Technology Philly ETE 2012 Screencasts
http://emergingtech.chariotsolutions.com/category/screencasts/philly-ete-2012/

Chariot Solutions Videos and ETE Videos
http://www.youtube.com/user/ChariotSolutions/featured

CoffeeScript Edge
http://phillyemergingtech.com/2012/system/presentations/the_coffeescript_edge.pdf

Emerging Languages
http://phillyemergingtech.com/2012/system/presentations/Payne_Philly_ETE_2012_slides.pdf

StratisfiedJS (Structured JS)
http://onilabs.com/stratifiedjs

Large Scale Agile
http://phillyemergingtech.com/2012/system/presentations/Large-Scale_Agile_slides.pdf

Spring ROO with Addons
http://phillyemergingtech.com/2012/system/presentations/roo-addons.key.pdf

Backbone.js / Real-time Web Apps
http://phillyemergingtech.com/2012/system/presentations/realtime-web-ete-2012.pdf

Rich-Web Apps with Server Side Java
http://s3.amazonaws.com/chariot-website-production/presentation_documents/documents/000/000/632/vaadin-ria-in-server-side.pdf?AWSAccessKeyId=AKIAJTXMORYAM7NJWIJQ&Expires=1340418954&Signature=7%2BrH1fNE2Zn7vqlaw9ZDYQCQbvs%3D

Vaadin Java Framwork
https://vaadin.com/home

Interesting Stack (Backbone, NodeJS, Restify, MongoDB)
http://backbonetutorials.com/nodejs-restify-mongodb-mongoose/

Dependecy Injection
http://s3.amazonaws.com/chariot-website-production/presentation_documents/documents/000/000/607/di-without-the-gymnastics.pdf?AWSAccessKeyId=AKIAJTXMORYAM7NJWIJQ&Expires=1340422342&Signature=VVMi2uiG2c6m6oaP3%2Bn61pDmHbI%3D

HTML5 Apps with Java and Scala with Play
http://chariotsolutions.com/presentations/html5-apps-in-java-scala-with-the-play-framework

FindBugs
http://chariotsolutions.com/presentations/effective-use-of-findbugs-in-large-software-develo

Massive Scaling
http://chariotsolutions.com/presentations/massively-scaling-to-millions-of-players

Lean, Kanban and Large Scale Agile
http://chariotsolutions.com/presentations/lean-kanban-and-large-scale-agile

Let’s Play TDD
http://jamesshore.com/Blog/Lets-Play/Episode-199.html

Cross Platform Mobile Experience
http://phillyemergingtech.com/2012/system/presentations/Doug_Bellenger-PhillyETE_2012.pdf

Real-Time Web Apps with Backbone
http://chariotsolutions.com/presentations/building-real-time-web-applications

Better Agile Through Tribes
http://chariotsolutions.com/presentations/better%C2%A0agile-thought-throughtribes

Java EE in the Cloud(s)
http://chariotsolutions.com/presentations/java-ee-in-the-clouds

CSS#
http://chariotsolutions.com/presentations/evolution-of-css-layout-through-css3-and-beyond

EmberJS
http://chariotsolutions.com/presentations/emberjs-attacking-boilerplate-where-it-lives

PJAX
http://chariotsolutions.com/presentations/pjax-and-the-next-generation-of-server-side-web-fr

Grails 2.0
http://chariotsolutions.com/presentations/whats-new-in-grails-20

JavaScript Testing / BDD

Google APIs

Google API using JSON and OAuth 2.0 (Works on Android)
http://code.google.com/p/google-api-java-client/

http://google-api-java-client.blogspot.com/

Browse Samples
http://code.google.com/p/google-api-java-client/source/browse?repo=samples

http://code.google.com/p/google-api-java-client/wiki/DeveloperGuide

Setup
http://code.google.com/p/google-api-java-client/wiki/Setup

Google+ Sample
http://code.google.com/p/google-api-java-client/wiki/SampleProgram

Android Information and Video
http://code.google.com/p/google-api-java-client/wiki/Android

From Google:  WARNING: for Android, the jars MUST be placed in a directory named “libs” for the APK packager to find them. Otherwise, you will get a NoClassDefFoundError at runtime.

Android Sample Instructions:
http://samples.google-api-java-client.googlecode.com/hg/tasks-android-sample/instructions.html

OAuth 2.0 for Android
http://code.google.com/p/google-api-java-client/wiki/OAuth2#Android

http://code.google.com/p/google-http-java-client/wiki/Android

Calendar Sample for Android
http://samples.google-api-java-client.googlecode.com/hg/calendar-android-sample/instructions.html?r=default

 

 

 

Grails 2.0

Great video from SpringSource on Grails 2.0 from ETE 2012
http://www.youtube.com/watch?v=c3AMvP0HC9g&feature=plcp

Getting Started 2.04 
http://grails.org/doc/latest/guide/gettingStarted.html

Grails uses Spring 3.1 and latest Tomcat, Groovy and Hibernate.

Over 600 Grails Plugins
http://grails.org/plugins/

Hibernate Plugin GORM
http://grails.org/plugin/hibernate

JQuery for Grails
http://grails.org/plugin/jquery

JQuery UI for Grails
http://grails.org/plugin/jquery-ui

Cobertura Code Coverage
http://grails.org/plugin/code-coverage

Spock for Grails (now can extend Spock’s Class)
http://grails.org/plugin/spock

REST Client
http://grails.org/plugin/rest

Grails with Spring Mobile
http://grails.org/plugin/spring-mobile

Apache POI Grails Builder
https://github.com/andresteingress/gsheets

Log4J
http://blog.andresteingress.com/2012/03/22/grails-adding-more-than-one-log4j-configurations/

Groovy Console
http://grails.org/plugin/console

Twitter Bootstrap for Grails
http://grails.org/plugin/twitter-bootstrap

YUI on Grails
http://grails.org/plugin/yui

Grails is a full stack framework with ORM, DI, Tx, App Server, Database Server, …

Built-In H2 Console for Grails

=> http://localhost:8080/app/dbconsole