Thursday

Copy Maven dependencies to lib folder

Problem: How can I copy all maven dependencies to a target folder say lib
sometimes all you want is to copy all dependencies (jars) to a destination-folder. TheMaven Dependency Plug-In will kindly assist you to copy maven dependencies to a target folder.

Include the following plugin in your pom file:

org.apache.maven.plugins maven-dependency-plugin copy-dependencies package copy-dependencies ${project.build.directory}/alternateLocation false false true


From command prompt run : mvn dependency:copy-dependencies

You will now have a target folder with all your jars!

"GC overhead limit exceeded" Eclipse



"GC overhead limit exceeded" is what you see when you are trying to import a new project or when Eclipse just runs out of memory!




Solution:
Allocate more memory to your Eclipse instance. 
How?: Locate the eclipse.ini file in your Eclipse's installation directory. The content would be something similar to the following:

Change these:


Restart your eclipse :)

Learn Protractor / Quick Protractor demo



If you are well versed with selenium then before going through the demo have a look at these slides:
http://ramonvictor.github.io/protractor/slides/#/

Now straight to the demo:
Prerequisites:
  1. Download and install Nodej
    1. Go to the NodeJS home page
    2. Click install to download the .msi installer package
    3. Run it and follow the instrucitons, you now have NPM (node package manager) and Node.js installed
  2. Open the Node.js command prompt and type in the following command to install protractor globally.
    1. npm install –g protractor
You are now ready for a Proof of Concept:

Demo test application and protractor tests.
Setup     

git clone https://github.com/juliemr/protractor-demo.git 
cd protractor-demo 
npm install

To run

Get a selenium server running at localhost:4444. 
java - jar "Path to the selenium jar"
Make sure the chrome driver's path is set in the system's Path variable

Run ./node_modules/.bin/webdriver-manager update
then ./node_modules/.bin/webdriver-manager start.

Start the test application server 
with node app/expresserver.js Or if you're feeling lazy, just npm start.

Run the tests 
with node_modules/.bin/protractor test/conf.js Or if you're feeling lazy, just npm test.

Thanks to juliemr  for sharing!


Wednesday

Open JavaScript Editor for Eclipse



If you are working on Eclipse (Kepler/Juno/or anyother version) and you want to use JavaScript editors , there are very few good options:


Solution 1: (Recommended for Juno users)

  1. Open Eclipse -> Go to "Help" -> "Install New Software"
  2. Select the repository for your version of Eclipse. I have Juno so I selected http://download.eclipse.org/releases/juno
  3. Expand "Programming Languages" -> Check the box next to "JavaScript Development Tools"
  4. Click "Next" -> "Next" -> Accept the Terms of the License Agreement -> "Finish"
  5. Wait for the software to install, then restart Eclipse (by clicking "Yes" button at pop up window)
  6. Once Eclipse has restarted, open "Window" -> "Preferences" -> Expand "General" and "Editors" -> Click "File Associations" -> Add ".js" to the "File types:" list, if it is not already there
  7. In the same "File Associations" dialog, click "Add" in the "Associated editors:" section
  8. Select "Internal editors" radio at the top
  9. Select "JavaScript Viewer". Click "OK" -> "OK"
To add JavaScript Perspective: (Optional)
10. Go to "Window" -> "Open Perspective" -> "Other..."
11. Select "JavaScript". Click "OK"
To open .html or .js file with highlighted JavaScript syntax:
12. (Optional) Select JavaScript Perspective
13. Browse and Select .html or .js file in Script Explorer in [JavaScript Perspective] (Or Package Explorer [Java Perspective] Or PyDev Package Explorer [PyDev Perspective] Don't matter.)
14. Right-click on .html or .js file -> "Open With" -> "Other..."
15. Select "Internal editors"
16. Select "Java Script Editor". Click "OK" (see JavaScript syntax is now highlighted )

Solution 2: (Recommended for Kepler / any other users)
A super-lightweight javascript editor called Eclipse HTML Editor Plugin, made by Amateras
Download from http://amateras.sourceforge.jp/cgi-bin/fswiki_en/wiki.cgi?page=EclipseHTMLEditor.
Put the downloaded JAR file into ECLIPSE_HOME/plugins or ECLIPSE_HOME/dropins.
Happy JS'ing !!

Tuesday

When I found the "Spotify engineering culture"


A good friend of mine introduced me to this mantra "Spotify culture". I had no clue it existed and went about reading and watching their videos. I must say I was impressed with their way of customizing agile to form these - squads, Tribes, Guilds., Release trains and feature toggles!
If you want to know what these buzz words are, Watch the videos here:

https://labs.spotify.com/2014/03/27/spotify-engineering-culture-part-1/

https://labs.spotify.com/2014/09/20/spotify-engineering-culture-part-2/

Happy Spotifying the culture!

Monday

If you are not doing automated testing, you are NOT ready for continuous delivery




CI as we know is closely knit to Continuous Delivery!
Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early.

It is actually a series of practices that make you ready for continuous delivery. What you need is a quick way of seeing what happened after your new code is deployed. 


You need the following:
  1. Staging environment (clone of prod) before the code hits production release.
  2. Automated tests that kick off as soon as the code is committed
  3. Some form of Iterative development - Agile 
  4. A single source repository
  5. Every commit built on an integration machine 
  6. Fast build 


Visualizations of Continuous Delivery

Nhan Ngo, a QA engineer at Spotify, made four fabulous visualizations while reading Continuous Delivery. She has very kindly agreed to make them available under a Creative Commons license so feel free to share them, download them, and print them out (click to get a higher resolution version). Thank you Nhan!