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)

Monday, December 13, 2010

Subversion over SSH on Windows: Folder '' does not exist remotely

Setting up SpringSource Tool Suite on Windows 7, when attempting to connect using Subclipse to SVN server with a URL of the form svn+ssh://, get the error "Folder '' does not exist remotely". 

Some people have had luck with HowTo: Configure SVN+SSH with Subclipse on Windows but I kept being prompted for username/password with each folder navigation in the SVN repository (unworkable!).  One of the comments in the blog referred me to Subversion Access from Eclipse Using Subclipse which worked for me although I continue to use username/password (saved) rather than public/private key as the latter method didn't work.  I probably have the key saved improperly on the client and/or server side. 

Other problems that I had as I accessed our SVN server over a VPN:
  • hostname wasn't resolving so I had to find out the IP address of the SVN server and use that in the URL
  • Attempted to use TortoiseSVN as it supposedly handles svn+ssh:// out of the box but after installation and rebooting Windows, still couldn't find the TortoiseSVN menu in the context menu in Windows Explorer

Thursday, December 2, 2010

Re-using your code with Perl modules

Re-use of code, when not copying-and-pasting, is a good thing.  I consider myself beyond a novice Perl programmer.  But since it was never a primary tool at work, I never learned how to develop re-usable Perl modules properly.  Following is a bare-bones implementation of a Perl module.  Note that a module containing a Perl class implementation would not have to use Exporter (nor should it!)

#!/usr/bin/perl
use strict;
use warnings;

package MyPkg;

require Exporter;

our @ISA = qw(Exporter);
our @EXPORT_OK = qw(myfunc);


sub myfunc{ 
 print "bar";
}


1;

In this case, the file containing this code should be named MyPkg.pm, to match the name of the package.  A bare-bones caller of this code could be as simple as:

 
#!/usr/bin/perl
use strict;
use warnings;

use MyPkg qw{myfunc};

myfunc();

Some additional notes:
  • In the module, require Exporter; is not always necessary (not yet clear the situation for its necessity)
  • If your package is something like MyGroup::MySubGroup, two things to observe:  (1) the name of your .pm file should be MySubGroup.pm and (2) the file should be placed in a subdirectory relative to @INC paths named MyGroup.  For example, if you want to locate your re-usable module togehter with your Perl script, you would put it in a subdirectory of the directory with the Perl script named MyGroup

Friday, November 26, 2010

Tomcat installation changed, problems launching Tomcat in Eclipse

  • Install location of Tomcat has changed.  Get message "The archive: [...]/apache-tomcat-6.0.20/bin/bootstrap.jar which is referenced by the classpath, does not exist." when attempting to launch Tomcat in Eclipse
  • Fix: 
    1. In Servers view, double-click on Tomcat server.  Overview of Tomcat settings appears.  
    2. Click on "Open launch configuration"
    3. Go to Classpath tab
    4. Edit User Entries as appropriate
  • If you haven't already, specify your Tomcat installation under Preferences > Server > Runtime Environments

Tuesday, November 2, 2010

Compiling PL/SQL and using TOAD to write stored procedures

  • PL/SQL compiler (version?) is quite stupid:  Missing a semi-colon flags a line several lines below where the actual semi-colon is missing.  Likewise for a missing single quote character
  • To escape the single quote character, double it.  Therefore four consecutive single quotes is a string consisting of a single quote
  • When the compiler reports a compiler error at a certain line, that line # is relative to the start of the Body of stored procedure (assuming you are editing the Body and not the Spec)
  • To compile and "save" your stored procedure to the Oracle server in TOAD, be sure to use the "Execute As Script" button () in the Editor.  Do NOT use the "Execute/compile statement at caret" button.
  • In order to see debug output (i.e. from DBMS_OUTPUT.PUT_LINE function):  Where does DBMS_OUTPUT.PUT_LINE() output go (in Toad) ?

Monday, October 11, 2010

Getting TOAD running without tnsnames.ora, etc.

  1. Download/install TOAD
  2. Download/install Oracle Instant Client
  3. Know your database server's Host IP, Port number, and SID for desired database
  4. When you attempt to connect using TOAD, fill in the "Direct" tab with the information from previous step and select to connect using Instant Client (may already be the default)
Additional note:  Although I am using 64-bit Windows 7, the 64-bit version of the Instant Client did not appear to work (an error about "unable to load oci.dll" within TOAD).  However, the 32-bit version worked fine.

    Thursday, August 12, 2010

    Jersey, JAX-RS notes on Jersey 1.3 User Guide

    • Jersey 1.3 User Guide
    • a more detailed document than the "RESTful Web Services Developer's Guide", especially regarding JSON support and the Jersey client API 
    • example of "Builder" pattern utilized by Jersey client API, rather than the JavaBean get/set pattern:

      8   JAXBBean bean = r.
      9     type(MediaType.APPLICATION_FORM_URLENCODED_TYPE)
      10    .accept(MediaType.APPLICATION_JSON_TYPE)
      11    .post(JAXBBean.class, f);
      

    Jersey, JAX-RS notes for RESTful Web Services Developer's Guide

    • RESTful Web Services Developer's Guide
    • can embed variables in the URIs. URI path templates are URIs with variables embedded within the URI syntax
    • "A fundamental part of REST is that the next set of valid operations is encoded in the response from the last. This means that as long as you only use actions from the last operation you will always perform a valid operation according to the application protocol." - does this feature exist in Jersey?
    • "If a character in the value of a variable would conflict with the reserved characters of a URI, the conflicting character should be substituted with percent encoding." - use case?
    • If the application needs to supply additional metadata, such as HTTP headers or a different status code, a method can return a Response that wraps the entity, and which can be built using Response.ResponseBuilder.
    • By default, a resource class can respond to and produce all MIME media types of representations specified in the HTTP request and response headers