Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Version History

« Previous Version 16 Next »

On This page

On Related Pages

Standard Tools

These are the tools we have pretty much settled on as a team.  For ease and consistency of development please try to remain on these tools and discuss with the team before introducing competing technologies.

  • Operating System: what ever floats your boat.
  • IDE: Eclipse commonly used and free
  • Wiki / Issue Tracker / Code Browsing and Reviewing / Automated Builds: we have a Jira Studio subscription  (Nicole Deflaux and Mike Kellen as admins)
  • Code versioning: Subversion, hosted by Atlassian as part of our Jira Studio subscription
  • Build System: Maven
  • Build repository manager: see Sage's hosted Artifactory service see jFrog website for info (John Hill and Mike Kellen as admins)

Profilers

Code Coverage

We have been approved for free licenses to use Clover (Atlassian Code Coverage tool) for Eclipse. To install the Clover plug-in for eclipse you can use the update site http://update.atlassian.com/eclipse/clover

Eclipse users: Within Eclipse, select from the menu "Window > Preferences" and click on "Clover > License" and paste the above license string into the license text area.

MONqrDkXrjMnJciwRtLBAEGFOmnBGjNmbRRWECCaUafBQo
mi2Kehqg3mIlkHdhHlTejumx2KzaGJQIsBkyJf66uTXT7W
NPQQsvpRQnqmPnrRpQPSunQNrOQnnRqMNovXXwssmXtvsW
vSttxsuurRqopnmomUUnovrnuoummmmmUUnovrnuoummmm
mUUJXdbW2flkbqtlohpUUnmmmm

Java

Libraries

At this point we don't have any strict licensing requirements, however to maintain flexibility we have to be careful about licenses for software we choose to incorporate into our system.  The best licenses are open source licenses without copy-left provisions (e.g. Apache License) that give us maximal flexibility in what we later do with the code base.  Some strong copy-left licenses (e.g. GPL) would impose licensing requirements on us (e.g. force us to use GPL ourselves) if we chose to redistribute the code base at a later date. For now, we should just be aware of the mix of licenses incorporated into our projects, and have a bias for open source, non-copy left licenses.

R

Python

Python Examples for Perl programmers

  1. Example: empty dictionary, add values to it
    layer = {}
    layer["type"] = row[1]
    layer["status"] = row[2]
    layer["name"] = row[3]
    layer["numSamples"] = row[4]
    layer["platform"] = row[5]
    layer["version"] = row[6]
    layer["qcBy"] = row[11]
    # Example: create a populated dictionary
    CSV_TO_PRIMARY_FIELDS =
    Unknown macro: { 'name'}
    # Example: empty array, add values to it
    stringAnnotations = []
    stringAnnotations.append("foo")
    # Example: create a populated array
    
    CSV_SKIP_FIELDS = ["db_id","user_agreement_file_path", "readme_file_path"];
    
    h2. Subversion
    
    For general SVN info see the [SVN book|http://svnbook.red-bean.com/en/1.1/]
    
    
    h3. Moving files and directories
    
    The eclipse plugin for svn generally does a decent job moving files and directories.  See also [http://svnbook.red-bean.com/en/1.1/re18.html]
    
    
    Here is an example:
    * You can see that there is a "deleted" file here but it was actually "svn moved" [http://sagebionetworks.jira.com/source/browse/PLAY/trunk/src/test/java/com/symform/common]
    * Old filename [http://sagebionetworks.jira.com/source/browse/PLAY/trunk/src/test/java/com/symform/common/TestHelpers.java#r9]
    * New filename [http://sagebionetworks.jira.com/source/browse/PLAY/trunk/src/test/java/com/symform/common/Helpers.java#r41]
    * You can see that the full svn history is shown on each page.
    
    svn gets really upset though when you do more complicated things like created a file, delete that file, then make a directory with the same name in the same location as the deleted file.  (but that is a pretty odd thing to do anyway)
    
    When in doubt, make a developer branch and try it there first.[http://svnbook.red-bean.com/en/1.1/ch04s02.html#svn-ch-4-sect-2.1]
    
    
    h3. Developer branches
    
    Want to make a drastic change and run it by the team before merging it to trunk? Want to check in broken code? Make a branch and do it there.
    
    Resources
    * SVN branch documentation [http://svnbook.red-bean.com/en/1.1/ch04s02.html#svn-ch-4-sect-2.1]
    * svnmerge.py Documentation [http://www.orcaware.com/svn/wiki/Svnmerge.py]
    * Rationale [http://kenkinder.com/subversion-merge-tracking-with-svnmerge/]
    * the {{svn switch}} command is handy to change the branch for your local checked out copy of code
    
    h3. How to Set Up Merge Tracking
    
    # Download [svnmerge.py|http://svn.apache.org/repos/asf/subversion/trunk/contrib/client-side/svnmerge/svnmerge.py]
    # Make a branch directory for yourself (you'll only need to do this once) 
    svn mkdir https://sagebionetworks.jira.com/svn/PLFM/branches/deflaux
    # Make a new branch from trunk 
    svn copy https://sagebionetworks.jira.com/svn/PLFM/trunk https://sagebionetworks.jira.com/svn/PLFM/branches/deflaux/automatedIntegrationTesting
    # Have both trunk and your new branch on your local hard drive, this assumes you already have trunk checked out in directory \~/platform 
    cd ~/platform
    svn update trunk
    svn checkout https://sagebionetworks.jira.com/svn/PLFM/branches/deflaux/automatedIntegrationTesting
    # Initialize merge tracking 
    cd trunk
    svnmerge.py init ../automatedIntegrationTesting
    svn commit -F svnmerge-commit-message.txt
    cd ../automatedIntegrationTesting
    svnmerge.py init ../trunk
    svn commit -F svnmerge-commit-message.txt
    
    h3. How to merge
    
    h4. Merge from trunk to your branch
    
    Best Practice: merge changes from trunk to your branch every morning Monday through Friday.  This reduces the pain later when you want to merge from your branch to trunk.
    
    # Ensure the branch is working and committed to SVN.
    # To see what branches are available for importing, use this command from the branch distribution:
    
    python svnmerge.py avail
    #* One of the results should be '/PLFM/trunk'.
    # import the changes from trunk into the branch:
    
    python svnmerge.py merge -S /PLFM/trunk
    # Resolve conflicts, compile, test and commit EVERYTHING in the branch.
    
    h4. Merge from your branch to trunk
    
    # Go to an up-to-date local distribution of trunk.
    # From the trunk distribution use the 'avail' command (above) to find the branch of interest.
    # Use the following command to find the revision(s) of interest:
    
    python svnmerge.py avail -S <your branch>
    # Import the changes from the branch into trunk:
    ## For all changes
    
    python svnmerge.py merge -S <your branch>
    ## For particular changes
    
    python svnmerge.py merge -r <your revisions comma separated> -S <your branch>
    
    
  2. Resolve conflicts, compile, test and commit.

Elastic Bamboo

We currently have MySQL running on our Elastic Bamboo host for the purposes of integration testing. This is accomplished by the customise-extras.sh shell script which is run at boot time for the hosts.

If you want to import a database dump, install Crowd, etc., here is how to modify that script:

  1. Log onto the currently running elastic instance (or spawn one if none are running). http://confluence.atlassian.com/display/BAMBOO/Accessing+an+Elastic+Instance
    • Note that the ssh key is on belltown:/work/platform/PasswordsAndCredentials/AtlassianAccountAWSCredentials/elasticbamboo.pk
    • Note that if you want to log onto the AWS console, Mike's username and password is on belltown:/work/platform/PasswordsAndCredentials/AtlassianAccountAWSCredentials/Mike'sPassword
  2. From the shell try out the commands you want to run at boot time
  3. Run you build and make sure it works
  4. Check your changes to customize-extras.sh into source control PLFM/trunk/tools/bamboo/bin/customise-extras.sh
  5. On the bamboo host, overwrite /mnt/bamboo-ebs/bin/customise-extras.sh with your updated script.
  6. Follow these instructions to create snapshot and configure bamboo to use it Updating your EBS snapshot
  7. Shutdown the host, and kick off a new build. This should start a new bamboo host that will run your updated script.
  8. Make sure the build passes!

For more information, see:

Tools To Know About

Pretty-Print JSON

Have a large blob of JSON?  Want to see it in human readable format?  Toss it into this web ui: http://jsonformatter.curiousconcept.com/

Web Trace Tools

Sequence Diagram Editors

Don’t waste your time with drawing programs when you can just write something similar to psuedocode.

Lucene Search

Browse lucene indices with Luke http://www.getopt.org/luke/

  • No labels