Labels

.net (1) *nix (1) administration (1) Android (2) Axis2 (2) best practice (5) big-data (1) business-analysis (1) code re-use (1) continuous-integration (1) Cordova-PhoneGap (1) database (2) defect (1) design (3) Eclipse (7) education (1) groovy (2) https (2) Hudson (4) Java (1) JAX-RS (2) Jersey (3) Jetty (1) localization (1) m2eclipse (2) MapForce (1) Maven (12) MySQL (1) Nexus (4) notes (4) OO (1) Oracle (4) performance (1) Perl (1) PL/SQL (1) podcast (1) PostgreSQL (1) requirement (1) scripting (1) serialization (1) shell (1) SoapUI (1) SQL (1) SSH (2) stored procedure (1) STS (2) Subclipse (1) Subversion (3) TOAD (3) Tomcat (4) UML (2) unit-testing (2) WAMP (1) WAS (3) Windows (3) WP8 (2) WTP (2) XML (4) XSLT (1)

Friday, October 25, 2013

OutOfMemoryError with Java

Recently had to investigate an OutOfMemoryError issue possibly caused by my Java code.  Some tools/information I have found useful so far are:
  1. VisualVM - profiler that you probably already have installed.  Check for <JAVA_HOME>/bin/jvisualvm.exe
  2. Generations - describes Java memory management.  It will help you interpret the graphs in the Visual GC plugin
  3. Understanding Weak References - never heard of weak references in the context of Java?  Me too

Thursday, October 3, 2013

Hudson having problem with Subversion: hudson.model.Job.hasCascadingProject()Z

One day, a few of our Hudson jobs (but not all) started to have this error when executing.

FATAL: hudson.model.Job.hasCascadingProject()Z
java.lang.NoSuchMethodError: hudson.model.Job.hasCascadingProject()Z
 at hudson.scm.PerJobCredentialStore.getXmlFile(PerJobCredentialStore.java:137)
 at hudson.scm.PerJobCredentialStore.<init>(PerJobCredentialStore.java:58)
 at hudson.scm.SubversionSCM$DescriptorImpl.createAuthenticationProvider(SubversionSCM.java:1820)
 at hudson.scm.SubversionSCM$DescriptorImpl.getRepository(SubversionSCM.java:2069)
 at hudson.scm.SubversionSCM$DescriptorImpl.checkRepositoryPath(SubversionSCM.java:2039)
 at hudson.scm.SubversionSCM.repositoryLocationsNoLongerExist(SubversionSCM.java:2272)
 at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:748)
 at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:711)
 at hudson.model.AbstractProject.checkout(AbstractProject.java:1229)
 at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:507)
 at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:424)
 at hudson.model.Run.run(Run.java:1367)
 at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
 at hudson.model.ResourceController.execute(ResourceController.java:88)
 at hudson.model.Executor.run(Executor.java:145)

This turns out to be at the Subversion check-out step:

You can click on "Update credentials" to go to a screen to enter in your credentials.  But you might get the following error:

HTTP ERROR 500

Problem accessing /hudson/job/PWS-OCDT/descriptorByName/hudson.scm.SubversionSCM/postCredential. Reason:
    hudson.model.Job.hasCascadingProject()Z

Caused by:

java.lang.NoSuchMethodError: hudson.model.Job.hasCascadingProject()Z
 at hudson.scm.PerJobCredentialStore.getXmlFile(PerJobCredentialStore.java:137)

At this point, check the file-system of your Hudson server.  Under <HUDSON_HOME>\jobs\<Job name> you may notice that compared to Jobs that are working, the problematic job does not have a "subversion.credentials" file.  Copy over this file as-is to the directory.  No Hudson re-start is necessary; just go back to the Dashboard and choose the problematic Job.  From this point, you should be able to choose "Update credentials" and work through the screens without getting an unhelpful
 
hudson.model.Job.hasCascadingProject()Z 

error.  FYI, this is Hudson ver. 2.1.2 and our Subversion server location changed, which may have caused this issue. 

Tuesday, July 9, 2013

Software development and JavaScript podcast

While looking for a Java development podcast (still looking!), I came across JavaScript Jabber.  While the focus is JavaScript, there are episodes with more generic topics like Software Team Dynamics.  The podcasters are all experienced developers from various backgrounds (e.g. .NET, Ruby, etc.), the audio quality is good, and the shownotes are excellent.  Furthermore, they have sponsors so you know they have great content that attracts listeners.

Thursday, June 27, 2013

Nexus system administration misunderstanding

The available repositories that can be added to the Group ("Public Repositories") is on the right (see below).  Intuitively, shouldn't they be on the left, and you move them over to the right?  By default, newly added Repositories show up in the right column ("Available Repositories").

Thursday, April 25, 2013

Notes on "GTAC 2011: Opening Keynote Address - Test is Dead" presentation

The main message is that there needs to be validation of the product idea up front, rather than getting the product idea wrong and potentially killing a start-up one or two years down the road.  This is not prototyping which can be considered verifying that the underlying technologies should work together but a stage prior to this, using "arts and crafts"-type materials rather than hardware/software. 

The secondary message is that calling yourself a tester, even an automation tester, or "quality assurance person" is detrimental to one's career as these skills are thought of as commodities.  That is, the person is interchangeable with an offshore resource.  Rather QA people should take the role of "righters" or people that make a project "right".  I argue that everyone on a project should be responsible for making a project "right", but from past experience, getting your voice heard can be challenging, especially on more hierarchical teams.  Also inertia is a hard thing to fight. 


Tuesday, March 5, 2013

Can't connect to MySQL from remote computer

I recently started using Uniform Server, a WAMP package, for creating a database for my test team.  I really like the convenience and ease of use of this package.  For example, port changes for Apache can be made from the Uniform Server dashboard application, rather than having to hand-edit configuration files.  But Uniform Server is meant for local development and by default, remote connections are not accepted.  For example, attempting a connection using the MySQL JDBC driver, remote users will get a "Connection refused" error.

To fix this, using the dashboard application, "Stop MySQL".  Then run the "MySQL Console".  From its command-line, run "mysqld1".  This starts up MySQL without the "--skip-networking" parameter and thus allows remote connections. 


Monday, January 21, 2013

Notes on "What is Hadoop? Other big data terms like MapReduce? Cloudera's CEO talks" video

  • Map reduce - spread processing of data over many computers so data can be processed in parallel with cheaper hardware.  No transactions or schema.  Aimed more at analysis (Reads) rather than full CRUD?
  • Relational databases not good for unstructured free text  
  • Hadoop - open source, consists of (1) distributed file system to spread out data (HDFS), (2) way to push code down to do data analysis on the data 
  • Scalable because can just drop in more servers 
  • Memcached - in memory cache of relational database, push through writes "incrementally"? 
  • NoSQL - distributed hash tables
  • Sharding (not discussed in video) - taking rows of a relational table and distributing across computers

Altova MapForce review and tips

Altova MapForce is an interesting tool for creating XSL transformations visually.  Looking past the obvious drag-and-drop nature of the tool, here's my review:

What I liked:
  • Promotes the creation of libraries of re-usable functions.  
  • Flexible:  Can swap in another XSD without losing mappings, by editing MFD file directly.  The invalid mappings will be highlighted in red for correction
What I disliked:
  • Generated XSL is not meant to be tweaked, and it would be very difficult to do so
  • No built-in debugging facilities
  • No support for non-function-based facilities (e.g. xsl:analyze-string)
Hard to say whether good or bad:
  • Everything that is re-usable is function-based, that is, consisting of input (optionally) and an output.  It reminds me of Lisp programming.   
 Tips:
  • do not copy and paste functions between MFD files using text editor
  • make higher-level functions if find repeating mapping
  • If parsing the text of a node which has embedded tags (e.g. <addr>PO Box 123<delimiter />c/o Dave<postalCode>90210</postalCode></addr>), in this case, addr and delimiter, respectively, use the MapForce distinct-values function

Wednesday, January 16, 2013

The container 'Maven Dependencies' references non existing library

If you copy an Eclipse-Maven project from one computer to another, you may get a Build Path Problem resembling:  "The container 'Maven Dependencies' references non existing library 'XXXXXXXXXXXX'".  This is obviously due to a difference in the location of the local Maven repository from one computer to the other. 

To fix this, right-click on the project > Maven > Disable Dependency Management.  Once Eclipse has finished rebuilding the project, right-click on the project > Maven > Enable Dependency Management.  This error should now be gone.  

Thursday, January 3, 2013

Maven error "Cannot find wagon which supports the requested protocol: ftp" and Hudson

It is important to understand that Hudson comes bundled with Maven but you can also configure Hudson to use an external installation of Maven (Manage Hudson > Configure System > Maven 3 section).  When you add a Maven build step to your Job, you have the option to use the bundled Maven or your external installation.  However, the default is the bundled Maven. 


This can cause problems if you need additional classes required by your Maven plugins that are not automatically downloaded, e.g. FTP support for the Deploy Plugin or Wagon Plugin (http://mojo.codehaus.org/wagon-maven-plugin/).  That is, if you have dropped the required JAR into the "lib" sub-folder of your external Maven installation but the Job is configured to use the bundled Maven, you will continue to get "Cannot find wagon which supports the requested protocol: ftp" (in this case).