Copycat Viagra

29Jun/103

Blood Pressure Vasotec 20mg Pills (Generic) $129.00

Blood pressure vasotec 20mg pills (generic) $129.00 Ever wanted a quick/easy/automated way to get syntax highlighted code from your editor of choice into PowerPoint?

Blood pressure vasotec 20mg pills (generic) $129.00 EVERY time I do a technical presentation I need this.  Usually I resort to taking a screenshot, blood pressure vasotec 20mg pills (generic) $129.00 or finding an “export to html” type plugin for the editor I’m using at the time (Visual Studio, blood pressure vasotec 20mg pills (generic) $129.00 Vim, blood pressure vasotec 20mg pills (generic) $129.00 IntelliJ IDEA, blood pressure vasotec 20mg pills (generic) $129.00 etc.) and then try to get that somehow into my slides.

Blood pressure vasotec 20mg pills (generic) $129.00 The problem I usually run into, blood pressure vasotec 20mg pills (generic) $129.00 is that while I like coding on a dark background with a 14pt font, blood pressure vasotec 20mg pills (generic) $129.00 that’s not usually that great for presentations.  So I switch to my “presentation settings” that has a light background and bigger font size, blood pressure vasotec 20mg pills (generic) $129.00 and then switch back once I’m done taking screenshots or outputting to html. Blood pressure vasotec 20mg pills (generic) $129.00 [ugh, blood pressure vasotec 20mg pills (generic) $129.00 what a pain… terribly manual].

Blood pressure vasotec 20mg pills (generic) $129.00 Then what happens when I spot a bug in code that’s in PowerPoint, blood pressure vasotec 20mg pills (generic) $129.00 or I want to add a comment, blood pressure vasotec 20mg pills (generic) $129.00 or I need to change the syntax highlighting theme of the entire presentation because it doesn’t go well with the lighting in the room.  UGH!  What a disaster.

Blood pressure vasotec 20mg pills (generic) $129.00 Basically, blood pressure vasotec 20mg pills (generic) $129.00 it’s always an uphill struggle, blood pressure vasotec 20mg pills (generic) $129.00 and it really bothered me… so I decided to fix it once and for all.

Solution

Blood pressure vasotec 20mg pills (generic) $129.00 I’m going to solely discuss PowerPoint (for Windows or Mac) here.  I don’t have a copy of iWork, blood pressure vasotec 20mg pills (generic) $129.00 and I’m too cheap to buy one.  The reason I have Office for the Mac, blood pressure vasotec 20mg pills (generic) $129.00 is because I got it for free… KeyNote/Mac zealots: feel free to be zealous, blood pressure vasotec 20mg pills (generic) $129.00 but don’t hate on me because I’m frugal… unless you want to buy me a copy of iWork.

Blood pressure vasotec 20mg pills (generic) $129.00 First, blood pressure vasotec 20mg pills (generic) $129.00 download: http://www.andre-simon.de/doku/highlight/en/highlight.html

Windows Solution

Blood pressure vasotec 20mg pills (generic) $129.00 The highlight tool can output many formats, blood pressure vasotec 20mg pills (generic) $129.00 but the important one for Windows is RTF.

Blood pressure vasotec 20mg pills (generic) $129.00 So something like:

Blood pressure vasotec 20mg pills (generic) $129.00 highlight < infile > outfile –-rtf --syntax=rb  --style=vim --font=”Lucida Console” --font-size=18

Blood pressure vasotec 20mg pills (generic) $129.00 This will  take the source code file ‘infile’ and syntax color it as Ruby to an RTF file and output it to ‘outfile’.  The text will be 18pt Lucida Console and syntax highlighted with the “vim” color scheme.

Blood pressure vasotec 20mg pills (generic) $129.00 There are lots of themes included, blood pressure vasotec 20mg pills (generic) $129.00 you can ask highlight for help (highlight --help), blood pressure vasotec 20mg pills (generic) $129.00 and it’ll tell you all the options available, blood pressure vasotec 20mg pills (generic) $129.00 as well as all the options available for output, blood pressure vasotec 20mg pills (generic) $129.00 and for languages that it supports.

Blood pressure vasotec 20mg pills (generic) $129.00 Next, blood pressure vasotec 20mg pills (generic) $129.00 in PowerPoint, blood pressure vasotec 20mg pills (generic) $129.00 do “Insert Object” on your target slide, blood pressure vasotec 20mg pills (generic) $129.00 and choose “Create from file”.  Make sure you check the “Link” checkbox before pressing OK.

Blood pressure vasotec 20mg pills (generic) $129.00 Now, blood pressure vasotec 20mg pills (generic) $129.00 whenever your source changes, blood pressure vasotec 20mg pills (generic) $129.00 re-run your command line, blood pressure vasotec 20mg pills (generic) $129.00 then you can choose “Update Link” on your embedded object in PowerPoint, blood pressure vasotec 20mg pills (generic) $129.00 or if you close and then re-open PowerPoint, blood pressure vasotec 20mg pills (generic) $129.00 it’ll give you the option to update all your links.

Mac Solution

Blood pressure vasotec 20mg pills (generic) $129.00 My version of PowerPoint for Mac doesn’t like being able to link to RTF files, blood pressure vasotec 20mg pills (generic) $129.00 but it does allow linking to images.

Blood pressure vasotec 20mg pills (generic) $129.00 Highlight can output to SVG, blood pressure vasotec 20mg pills (generic) $129.00 but my PowerPoint doesn’t like that either.

Blood pressure vasotec 20mg pills (generic) $129.00 Now download inkscape, blood pressure vasotec 20mg pills (generic) $129.00 if you haven’t already.  It will allow you to rasterize the SVG into a PNG, blood pressure vasotec 20mg pills (generic) $129.00 which PowerPoint does like.  You can export your PNG from inkscape from the command line like this:

Blood pressure vasotec 20mg pills (generic) $129.00 <path to inkscape> –export-png=<png file> <svg file>

Blood pressure vasotec 20mg pills (generic) $129.00 The path to my inkscape command line runner is at:

Blood pressure vasotec 20mg pills (generic) $129.00 /Applications/Inkscape.app/Contents/Resources/bin/inkscape

Blood pressure vasotec 20mg pills (generic) $129.00 It turns out that inkscape doesn’t like external CSS files, blood pressure vasotec 20mg pills (generic) $129.00 which is what highlight gives you with your SVG, blood pressure vasotec 20mg pills (generic) $129.00 so you can merge your CSS file into your SVG file with a little script.  The other cool bit about SVG, blood pressure vasotec 20mg pills (generic) $129.00 is you can tweak it, blood pressure vasotec 20mg pills (generic) $129.00 if you want, blood pressure vasotec 20mg pills (generic) $129.00 since it’s just XML.

Blood pressure vasotec 20mg pills (generic) $129.00 Now, blood pressure vasotec 20mg pills (generic) $129.00 in PowerPoint, blood pressure vasotec 20mg pills (generic) $129.00 choose “Insert Picture” and browse to your newly generated PNG.  Make sure the “Link to File” checkbox is checked.

Blood pressure vasotec 20mg pills (generic) $129.00 I wrote a script to do this for the latest presentation I did on dependency injection.  You can take a look at the script here [source.rb].   It’s Ruby, blood pressure vasotec 20mg pills (generic) $129.00 and you can see where I merge the CSS and SVG files together, blood pressure vasotec 20mg pills (generic) $129.00 and where I mess with the line spacing as well (I wasn’t happy with the default line spacing, blood pressure vasotec 20mg pills (generic) $129.00 so I tweaked it to my preference).  All the source/images/PowerPoint for that presentation are available here [dependencies presentation] if you want to check them out to see how the whole process works.

Blood pressure vasotec 20mg pills (generic) $129.00 Now, blood pressure vasotec 20mg pills (generic) $129.00 when I need to change the font and syntax theme throughout my entire presentation because it doesn’t match the lighting in the room, blood pressure vasotec 20mg pills (generic) $129.00 it’s super-simple: I change the configuration, blood pressure vasotec 20mg pills (generic) $129.00 re-run my script, blood pressure vasotec 20mg pills (generic) $129.00 update PowerPoint, blood pressure vasotec 20mg pills (generic) $129.00 and chill.

Average Rating: 4.9 out of 5 based on 160 user reviews.

Tagged as: , , 3 Comments
23Sep/091

Blood Pressure Hyzaar Losartan Potassium 50mg /Hydrochlorothiazide 12.5mg Pills (Generic) $126.00

Blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 The first time I saw autotest (presented by Anthony), blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 the idea of Continuous Testing captured me.

Blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 I live in a .NET world most of the time, blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 and I know of no similar solution for .NET.  It’s been awhile since that first time, blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 and I’ve tinkered here and there trying to get something comparable, blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 but usually come up short.  That is until I found watchr.

Blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 Watchr gave me the file change detection capabilities I needed, blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 and the extensibility to do whatever I want when a file has been detected as changed.  This made it incredibly easy to hook up some autotest goodness in my .NET world.

Blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 You'll have to have ruby installed, blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 and gems.  Then, blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 the very first thing you'll have to do is

Blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 gem install watchr --source=http://gemcutter.org

Blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 Here is my watchr script:

require 'autotest.rb'

watch( '^.*UnitTest.*.cs$' ) do |match|
  run_test(match.to_s)
end

Blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 This is basically just a regex that says to watch any *.cs files that also contain the string “UnitTest”, blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 and when it finds a change in a file matching that description, blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 call run_test with the matched file name.

Blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 So all the magic is in autotest.rb… lets check it out:

require 'rexml/document'

def build(test_project)
  `msbuild /nologo #{test_project}`
end

def mstest(test_container, blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 test_results_file, blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 tests_to_run)
  tests_to_run = ([""] << tests_to_run).flatten

  File.delete(test_results_file) if File.exists?(test_results_file)
  `mstest /nologo /resultsfile:#{test_results_file} /testcontainer:#{test_container} #{tests_to_run.join(" /test:")}`
  test_results = process_mstest_results(test_results_file)
  File.delete(test_results_file) if File.exists?(test_results_file)

  return test_results
end

def process_mstest_results(results_file)
  results = {}
  File.open(results_file) do |file|
    xml = REXML::Document.new(file)

    results[:num_tests] = xml.get_elements("//UnitTestResult").length
    failures = []
    xml.elements.each("//UnitTestResult[@outcome='Failed']") do |e|
      failure = {}
      failure[:message] = e.elements["Output/ErrorInfo/Message"].get_text

      stack = e.elements["Output/ErrorInfo/StackTrace"].get_text.value
      stack_match = /^.*at (.*) in(.*):line (\d+)$/.match(stack)

      failure[:stack] = stack_match[1] if stack_match
      failure[:location] = stack_match[2] if stack_match
      failure[:line] = stack_match[3] if stack_match

      failure[:stack] = stack if !stack_match

      failures << failure
    end
    results[:failures] = failures
  end

  return results
end

def show_results(results)
  puts "#{results[:num_tests]} tests run (#{results[:failures].length} failures)"
  results[:failures].each do |failure|
      puts "---------------------------------------"
      puts "Message: #{failure[:message]}"
      puts "Location: #{failure[:location]}"
      puts "Line: #{failure[:line]}"
      puts "Stack Trace: #{failure[:stack]}"
  end
end

def run_test(file_name)
  test_container = ""
  test_results_file = "result.trx"
  test_project = ""

  system("cls")
  system("echo Detected change in:")
  system("echo   #{file_name}")
  system("echo Building and Testing")

  test_namespace = ''
  test_class = ''
  test_names = []

  File.open(file_name, blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 "r") do |f|
    f.each do |line|
      ns_match = /^namespace (.*)$/.match(line)
      test_namespace = ns_match[1] if ns_match

      class_match = /^\s*public class (.\w*).*$/.match(line)
      test_class = class_match[1] if class_match

      test_name_match = /^\s*public void (\w*).*$/.match(line)
      test_names << test_name_match[1] if test_name_match
    end
  end

  test_names = test_names.map { |n| "#{test_namespace}.#{test_class}.#{n}" }

  build(test_project)
  results = mstest(test_container, blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 test_results_file, blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 test_names)
  show_results(results)
end

Blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 The key parts (I think) are the fact that I’m using MSTest to run my tests (this can easily be modified to run your framework of choice… note MSTest is not my choice ;) ).  The result parsing is also specific to the MSTest output format, blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 but should be simple enough for any framework that can output XML. Blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 Also, blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 I'm making some assumptions based on my project... Blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 we've got one unit test project, blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 so I know I can run tests in a single DLL, blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 and rebuilding only that project, blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 I don't have to worry about choosing the correct project and output dll to build and run tests in.

Blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 To get the thing up and running, blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 just run

Blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 watchr <path to watchr script>

Blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 Please, blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 use/adapt/give feedback/whatever at will.

Blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 Go forth and autotest, blood pressure hyzaar losartan potassium 50mg /hydrochlorothiazide 12.5mg pills (generic) $126.00 .NET comrades!

Average Rating: 4.7 out of 5 based on 261 user reviews.

23Feb/090

Muscle Relaxants Requip 0.5mg Pills (Generic) 360 Pills $566.00

Muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 Last time we talked about using RAKE instead of NAnt/MSBuild to build .NET projects.  Start there if you're curious, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 or if you missed that episode.  I'll wait.

Muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 I've recently been helping out a colleague to get his build server up and running for his new project.  It has been a major pain.  The source code repository is TFS, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 the build automation tool is MSBuild, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 and the CI server is Cruise Control .NET.  While these three are all decoupled from each other (TFS/TeamBuild, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 does really like MSBuild, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 however), muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 its a bit of a pain to configure all of the XML, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 get plugins in the right place, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 etc. Muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 to get everything to work just right.  I've been there, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 done that myself several times, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 its doable, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 but not always the easiest thing to do.

Muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 Installing CruiseControl.rb is a breeze, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 except there is an issue with the latest release when trying to run it on Windows.  So instead of downloading it from the website, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 I would suggest pulling the repository with git, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 and using that version instead.  First, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 install msysgit.

Muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 Then you can execute the following command in your console

git clone git://rubyforge.org/cruisecontrolrb.git

Muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 The rest of the steps are pretty simple and straightforward:

cruise add projectname -u https://path.to.your.svn.repo/yourproject/trunk
cruise start

Muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 That will start up the builder and the dashboard.  The dashboard, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 by default will live on port 3333, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 so browse to http://yourmachine:3333 to view your dashboard.  The path you use above should point to the directory where your RAKE file lives, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 that will make it easiest for CruiseControl.rb to get it right.

Muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 It's pretty dead-simple to configure your project's builder too, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 you get sample configuration by default in your %USERDIR%/.cruise/projects/projectname/cruise_config.rb that you can modify however you want.  Here is what that sample looks like:

# Project-specific configuration for CruiseControl.rb

Project.configure do |project|

  # Send email notifications about broken and fixed builds to email1@your.site, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 email2@your.site (default: send to nobody)
  # project.email_notifier.emails = ['email1@your.site', muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 'email2@your.site']

  # Set email 'from' field to john@doe.com:
  # project.email_notifier.from = 'john@doe.com'

  # Build the project by invoking rake task 'custom'
  # project.rake_task = 'custom'

  # Build the project by invoking shell script "build_my_app.sh". Muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 Keep in mind that when the script is invoked, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00
  # current working directory is [cruise data]/projects/your_project/work, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 so if you do not keep build_my_app.sh
  # in version control, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 it should be '../build_my_app.sh' instead
  # project.build_command = 'build_my_app.sh'

  # Ping Subversion for new revisions every 5 minutes (default: 30 seconds)
  # project.scheduler.polling_interval = 5.minutes

end

Muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 Since it is just ruby code, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 I find that much more appealing than a big nasty XML configuration file, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 but I guess that's just my opinion.

Hooking it up to TFS

Muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 I live in a TFS world at the office, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 so I have to play by those rules.  But I learned from Morpheus that "... Muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 rules of a computer system... Muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 can be bent. Muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 Others can be broken."  I'm just bending them.

Muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 The SvnBridge provides this rule bending behavior, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 by letting your subversion clients talk to your TFS repository, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 thereby allowing CruiseControl.rb to poll against what it thinks is a Subversion repository, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 but is actually a TFS repository.  It's really simple to checkout your TFS repository against it using your favorite SVN repository, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 so I won't go into it here.

Build Outputs

Muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 The one thing I wanted to make super simple was putting things in the right place for build outputs.  Turns out this is fairly simple after a few minutes with the docs.  CruiseControl.rb sets an environment variable telling you where to put things.  I abstracted a getter over top of it, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 so I can conditionally pick a different output location if I'm not inside of a CruiseControl.rb build.  It looks like this:

def output_dir
  if ENV.keys.include?('CC_BUILD_ARTIFACTS')
    return ENV['CC_BUILD_ARTIFACTS']
  else
    return 'results'
  end
end

Muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 As mentioned last time, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 you can see the latest version of the full RakeFile mentioned above here: http://jonfuller.googlecode.com/svn/trunk/code/CoreLib/RakeFile

Muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 I'm feeling some serious CI/Build Automation bliss, muscle relaxants requip 0.5mg pills (generic) 360 pills $566.00 hopefully this will get you on your way there too!

Average Rating: 4.4 out of 5 based on 299 user reviews.

23Feb/095

Antidepressants Amitriptyline 50mg Pills $91.00

Antidepressants amitriptyline 50mg pills $91.00 When I first started with build automation, antidepressants amitriptyline 50mg pills $91.00 I started out with NAnt.  I loved NAnt. Antidepressants amitriptyline 50mg pills $91.00 NAnt loved me. Antidepressants amitriptyline 50mg pills $91.00 We were happy.  I could program anything with the NAnt XML goodness.  If there wasn't a function or task to do what I wanted, antidepressants amitriptyline 50mg pills $91.00 I simply wrote one, antidepressants amitriptyline 50mg pills $91.00 compiled it, antidepressants amitriptyline 50mg pills $91.00  and wrote some more XML; it couldn't be any more simple!  I think the part I liked the most was the instant gratification I had with being able to automate something that would/could not otherwise be automated [at least not in a simple manner] with a little bit of XML programming.

Antidepressants amitriptyline 50mg pills $91.00 Soon after NAnt gained popularity, antidepressants amitriptyline 50mg pills $91.00 MSBuild was released from Microsoft, antidepressants amitriptyline 50mg pills $91.00 which eventually effectively squashed NAnt (IMHO, antidepressants amitriptyline 50mg pills $91.00 no stats to back this up).  We never migrated our scripts over to MSBuild because we had significant investment in NAnt already, antidepressants amitriptyline 50mg pills $91.00 but it wasn't hard to shell off to MSBuild to compile our solutions.  Eventually I worked on a new project (at a new company) and needed to learn how to use MSBuild since we were using TFS on that project.

Antidepressants amitriptyline 50mg pills $91.00 Shortly after I started integrating MSBuild into NAnt, antidepressants amitriptyline 50mg pills $91.00 and then started learning MSBuild, antidepressants amitriptyline 50mg pills $91.00 I started feeling a twinge.  Now that automation is a given, antidepressants amitriptyline 50mg pills $91.00 I need something more than programming in this extremely limited XML environment.  Sure, antidepressants amitriptyline 50mg pills $91.00 I can write a new MSBuild task just like I did in NAnt, antidepressants amitriptyline 50mg pills $91.00 but is it worth it?  My answer is an emphatic no.  I need a great user experience.  Something that feels nice AND is powerful.

Antidepressants amitriptyline 50mg pills $91.00 Enter RAKE.

Antidepressants amitriptyline 50mg pills $91.00 It sounds like MAKE; if it looks and feels like MAKE, antidepressants amitriptyline 50mg pills $91.00 I might vomit!  No thanks!

Antidepressants amitriptyline 50mg pills $91.00 Glad you brought that up, antidepressants amitriptyline 50mg pills $91.00 Dear Reader (If Hanselman can reference you like that, antidepressants amitriptyline 50mg pills $91.00 I can too).  It's not really like MAKE.  In fact, antidepressants amitriptyline 50mg pills $91.00 the things you do inside of a RAKE file, antidepressants amitriptyline 50mg pills $91.00 is write Ruby code!  RAKE really gives you a nice [internal] DSL for automating tasks.  If there is something you want to do that isn't built in, antidepressants amitriptyline 50mg pills $91.00 write a little ruby code to do it.  No compilation and putting the dll in the write place, antidepressants amitriptyline 50mg pills $91.00 etc. Antidepressants amitriptyline 50mg pills $91.00 etc.  Programming in Ruby vs. Antidepressants amitriptyline 50mg pills $91.00 XML... Antidepressants amitriptyline 50mg pills $91.00 now that feels nice (requirement #1 above).

Antidepressants amitriptyline 50mg pills $91.00 But wait!  RAKE is for building Ruby and Rails apps, antidepressants amitriptyline 50mg pills $91.00 we can't possibly use it for .NET!

Antidepressants amitriptyline 50mg pills $91.00 RAKE, antidepressants amitriptyline 50mg pills $91.00 just like Ant, antidepressants amitriptyline 50mg pills $91.00 NAnt or MSBuild, antidepressants amitriptyline 50mg pills $91.00 is a general purpose, antidepressants amitriptyline 50mg pills $91.00 task based automation tool.  It may be written in Ruby, antidepressants amitriptyline 50mg pills $91.00 but it can build .NET solutions (with the help of MSBuild), antidepressants amitriptyline 50mg pills $91.00 Java projects (with the help of Ant or Maven), antidepressants amitriptyline 50mg pills $91.00 or Flex, antidepressants amitriptyline 50mg pills $91.00 or whatever.  I call that powerful (requirement #2 above).

Antidepressants amitriptyline 50mg pills $91.00 Please note I'm not claiming to be the first person to do this in .NET, antidepressants amitriptyline 50mg pills $91.00 I've found lots of other guys doing it too.

Antidepressants amitriptyline 50mg pills $91.00 Here is an example of my first rake script for .NET (some pieces borrowed heavily from the Fluent NH guys... Antidepressants amitriptyline 50mg pills $91.00 thanks!).

Antidepressants amitriptyline 50mg pills $91.00 Enjoy/Discuss.

Antidepressants amitriptyline 50mg pills $91.00 An always updated version of this file can be found here: http://jonfuller.googlecode.com/svn/trunk/code/CoreLib/RakeFile

require "BuildUtils.rb"
include FileTest
require 'rubygems'
gem 'rubyzip'
require 'zip/zip'
require 'zip/zipfilesystem'

#building stuff
COMPILE_TARGET = "debug"
CLR_VERSION = "v3.5"
SOLUTION = "src/CoreLib.sln"
MAIN_PROJECT = "CoreLib"

# versioning stuff
BUILD_NUMBER = "0.1.0."
PRODUCT = "CoreLib"
COPYRIGHT = "Copyright © 2009 Jon Fuller"
COMPANY = "Jon Fuller"
COMMON_ASSEMBLY_INFO = "src/CommonAssemblyInfo.cs"

desc "Compiles, antidepressants amitriptyline 50mg pills $91.00 tests"
task :all => [:default]

desc "Compiles, antidepressants amitriptyline 50mg pills $91.00 tests"
task :default => [:compile, antidepressants amitriptyline 50mg pills $91.00 :unit_test, antidepressants amitriptyline 50mg pills $91.00 :package]

desc "Update the version information for the build"
task :version do
  builder = AsmInfoBuilder.new BUILD_NUMBER, antidepressants amitriptyline 50mg pills $91.00
    :product   => PRODUCT, antidepressants amitriptyline 50mg pills $91.00
    :copyright => COPYRIGHT, antidepressants amitriptyline 50mg pills $91.00
    :company   => COMPANY
  builder.write COMMON_ASSEMBLY_INFO
end

desc "Prepares the working directory for a new build"
task :clean do
  Dir.mkdir output_dir unless exists?(output_dir)
end

desc "Compiles the app"
task :compile => [:clean, antidepressants amitriptyline 50mg pills $91.00 :version] do
  MSBuildRunner.compile :compilemode  => COMPILE_TARGET, antidepressants amitriptyline 50mg pills $91.00
    :solutionfile => SOLUTION, antidepressants amitriptyline 50mg pills $91.00
    :clrversion   => CLR_VERSION
end

desc "Runs unit tests"
task :unit_test => :compile do
  runner = NUnitRunner.new :compilemode => COMPILE_TARGET, antidepressants amitriptyline 50mg pills $91.00
    :source       => 'src', antidepressants amitriptyline 50mg pills $91.00
    :tools        => 'tools', antidepressants amitriptyline 50mg pills $91.00
    :results_file => File.join(output_dir, antidepressants amitriptyline 50mg pills $91.00 "nunit.xml")
  runner.executeTests Dir.glob("src/*Test*").map { |proj| proj.split('/').last }
end

desc "Displays a list of tasks"
task :help do
  taskHash = Hash[*(`rake.cmd -T`.split(/\n/).collect { |l| l.match(/rake (\S+)\s+\#\s(.+)/).to_a }.collect { |l| [l[1], antidepressants amitriptyline 50mg pills $91.00 l[2]] }).flatten] 

  indent = "                          "

  puts "rake #{indent}#Runs the 'default' task"

  taskHash.each_pair do |key, antidepressants amitriptyline 50mg pills $91.00 value|
    if key.nil?
      next
    end
    puts "rake #{key}#{indent.slice(0, antidepressants amitriptyline 50mg pills $91.00 indent.length - key.length)}##{value}"
  end
end

desc "Packages the binaries into a zip"
task :package => :compile do
  source_files = Dir.glob("src/#{MAIN_PROJECT}/bin/#{COMPILE_TARGET}/**/*")
  dest_files = source_files.map{ |f| f.sub("src/#{MAIN_PROJECT}/bin/#{COMPILE_TARGET}/", antidepressants amitriptyline 50mg pills $91.00 "#{MAIN_PROJECT}/")}
  Zip::ZipFile.open(File.join(output_dir, antidepressants amitriptyline 50mg pills $91.00 "#{MAIN_PROJECT}.zip"), antidepressants amitriptyline 50mg pills $91.00 'w') do |zipfile|
    0.upto(source_files.size-1) do |i|
        puts "Zipping #{source_files[i]} to #{dest_files[i]}"
        zipfile.add(dest_files[i], antidepressants amitriptyline 50mg pills $91.00 source_files[i])
    end
  end
end

def output_dir
  if ENV.keys.include?('CC_BUILD_ARTIFACTS')
    return ENV['CC_BUILD_ARTIFACTS']
  else
    return 'results'
  end
end

Average Rating: 4.4 out of 5 based on 280 user reviews.