<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>LuckyCatLabs &#187; development</title>
	<atom:link href="http://blog.luckycatlabs.com/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.luckycatlabs.com</link>
	<description>Making code suck less</description>
	<lastBuildDate>Tue, 16 Mar 2010 01:37:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Release (Sort-of): RubySunrise Gem</title>
		<link>http://blog.luckycatlabs.com/2010/03/15/release-sort-of-rubysunrise-gem/</link>
		<comments>http://blog.luckycatlabs.com/2010/03/15/release-sort-of-rubysunrise-gem/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 01:37:07 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[announcement]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.luckycatlabs.com/?p=67</guid>
		<description><![CDATA[As a follow-up to the Java sunrise/sunset calculator I released early last year, I&#8217;m releasing a ruby gem that does essentially the same thing.  Just in A LOT less code, but with the same attention to test goodness.
To install and use the RubySunrise gem just:
$ gem install RubySunrise
or download from RubyGems. 
The current version [...]]]></description>
			<content:encoded><![CDATA[<p>As a follow-up to the Java sunrise/sunset calculator I released early last year, I&#8217;m releasing a ruby gem that does essentially the same thing.  Just in A LOT less code, but with the same attention to test goodness.</p>
<p>To install and use the RubySunrise gem just:</p>
<blockquote><p>$ gem install RubySunrise</p></blockquote>
<p>or download from <a href="http://rubygems.org/gems/RubySunrise">RubyGems</a>. </p>
<p>The current version as of today is 0.2, which requires the <a href="http://tzinfo.rubyforge.org/">tzinfo</a> gem (link) to perform the timezone offset lookups.</p>
<p>If you want/need the lastest, just grab it from the github repo:</p>
<blockquote><p>
$ git clone git://github.com/mikereedell/sunrisesunset-ruby<br />
$ gem build RubySunrise
</p></blockquote>
<p>At this time the RubySunrise gem covers astronomical, nautical, civil, and official sunrise/sunset calculations for every location that experiences a sunrise and sunset every day (Sorry Alaska!).  I&#8217;m currently working on the strangeness that is causing my Alaskan test suite to fail with known-good data.</p>
<p>Example time:</p>
<pre name="code" class="ruby:nogutter:nocontrols">
require 'solareventcalculator'

date = Date.parse('2008-11-01')
calc = SolarEventCalculator.new(date, BigDecimal.new("39.9537"), BigDecimal.new("-75.7850"))

utcOfficialSunrise = calc.compute_utc_official_sunrise
localOfficialSunrise = calc.compute_official_sunrise('America/New_York')

puts "utcOfficialSunrise #{utcOfficialSunrise}"
puts "localOfficialSunrise #{localOfficialSunrise}"
</pre>
<p>Which yields:</p>
<pre>
utcOfficialSunrise 2008-11-01T11:33:00+00:00
localOfficialSunrise 2008-11-01T07:33:00-04:00
</pre>
<p>The source is available under the Apache License, Version 2.0:<br />
<a href="http://github.com/mikereedell/sunrisesunset-ruby">http://github.com/mikereedell/sunrisesunset-ruby</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.luckycatlabs.com/2010/03/15/release-sort-of-rubysunrise-gem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven with Ruby Part II</title>
		<link>http://blog.luckycatlabs.com/2009/03/20/maven-with-ruby-part-ii/</link>
		<comments>http://blog.luckycatlabs.com/2009/03/20/maven-with-ruby-part-ii/#comments</comments>
		<pubDate>Sat, 21 Mar 2009 01:50:02 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[clearcase]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.luckycatlabs.com/?p=52</guid>
		<description><![CDATA[Want to add something to your projects Maven builds (like code coverage&#8230;) but don&#8217;t want to CTL-C/CTL-V your way to boredom?  Use the below script to lend a hand.  Substitute the XML in the SNIPPET variable to the artifact/plugin/dependency to be injected (leave the  tag in place) and use the command:

$>ruby mavenInjector.rb [...]]]></description>
			<content:encoded><![CDATA[<p>Want to add something to your projects Maven builds (like code coverage&#8230;) but don&#8217;t want to CTL-C/CTL-V your way to boredom?  Use the below script to lend a hand.  Substitute the XML in the SNIPPET variable to the artifact/plugin/dependency to be injected (leave the <inject> tag in place) and use the command:</p>
<pre name="code" class="ruby:nocontrols:nogutter">
$>ruby mavenInjector.rb /xpath/to/element
</pre>
<p>Here&#8217;s the code.  Check the <a href="http://github.com/mikereedell/scripts/tree/master">git repository</a> for the latest.</p>
<p>In the beginning of the &#8216;for&#8217; loop in the inject method I remove the read-only bit from the file.  This is for those of us afflicted with ClearCase and can be removed for those fortunate enough to use a sane SCM.</p>
<pre name="code" class="ruby:nocontrols:nogutter">
#/usr/bin/env ruby
require 'rexml/document.rb'
require 'fileutils.rb'

class MavenInjector

  def inject(path)
    if(path == nil)
      puts 'Must provide the root path of the node to inject under.'
      exit
    end

    poms = Dir[Dir.pwd() + "/**/pom.xml"]

    for pom in poms do
      if(!File.writable?(pom))
        FileUtils.chmod 0644, pom
      end

      pomXML = REXML::Document.new(File.new(pom))
      element = pomXML.get_elements(path)[0]

      if(element == nil)
        parentElement = pomXML.get_elements("/project/build")[0]
        element = REXML::Element.new("plugins", parentElement)
      end

      for plugin in getElementsToInject() do
        element.add_element(plugin)
      end

      formatter = REXML::Formatters::Default.new(4)
      formatter.write(pomXML, File.new(pom, "w+"))
    end
  end

  def getElementsToInject()
    elementXML = REXML::Document.new(SNIPPET)
    return elementXML.get_elements("/inject/plugin")
  end
end

SNIPPET = <<HEAD
<inject>
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>cobertura-maven-plugin</artifactId>
    <configuration>
<formats>
<format>html</format>
        </formats>
    </configuration>
  </plugin>
</inject>
HEAD

MavenInjector.new.inject(ARGV[0])
</pre>
<p>Any questions/problems/enhancements are welcome in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.luckycatlabs.com/2009/03/20/maven-with-ruby-part-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Ruby To Help Maven</title>
		<link>http://blog.luckycatlabs.com/2009/03/13/using-ruby-to-help-maven/</link>
		<comments>http://blog.luckycatlabs.com/2009/03/13/using-ruby-to-help-maven/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 11:52:14 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.luckycatlabs.com/?p=45</guid>
		<description><![CDATA[Maven projects can become a wasteland of neglected, old dependencies: huge, unmanageable pom files  and a local repository that&#8217;s catalog of every Apache project in the past 10 years.  Who knows if your project still requires that old version of Xerces?
This script takes the name of a dependency and removes it from every [...]]]></description>
			<content:encoded><![CDATA[<p>Maven projects can become a wasteland of neglected, old dependencies: huge, unmanageable pom files  and a local repository that&#8217;s catalog of every Apache project in the past 10 years.  Who knows if your project still requires that old version of Xerces?</p>
<p>This script takes the name of a dependency and removes it from every pom.xml in any sub-directory from where it&#8217;s called, removing the dependency element for the given jar file from each one.  The script also saves the <dependency> tree in the file $artifactname.xml in case you need to put it back.</p>
<pre name="code" class="ruby:nocontrols:nogutter">
#/usr/bin/env ruby
require 'rexml/document.rb'

if(ARGV[0] == nil)
  puts 'Must provide the name of the artifact to remove.'
  exit
end

artifact = ARGV[0].chomp
poms = Dir[Dir.pwd() + "/**/pom.xml"]

for pom in poms do
  pomXML = REXML::Document.new(File.new(pom))
  element = pomXML.get_elements("//dependency[artifactId='" + artifact + "']")[0]

  if(element != nil)
    temp = File.new(artifact + ".xml", "w+")
    formatter = REXML::Formatters::Default.new()
    formatter.write(element, temp)
    puts "Removing the dependency: " + artifact + "\nfrom " + pom
    element.parent.delete(element)
    pomXML.write(File.new(pom, "w+"))
  else
    puts "No artifacts with the name:'" + artifact + "' were found."
  end
end
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.luckycatlabs.com/2009/03/13/using-ruby-to-help-maven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
