<?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>AdaRuby &#187; Beginner</title>
	<atom:link href="http://www.adaruby.com/category/beginner/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.adaruby.com</link>
	<description>Rich Dynamic Applications with Ruby on Rails</description>
	<lastBuildDate>Fri, 02 Jul 2010 09:06:16 +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>Fixing RubyGems in Ubuntu Gutsy Installation</title>
		<link>http://www.adaruby.com/2008/03/24/fixing-rubygems-in-ubuntu-gutsy-installation/</link>
		<comments>http://www.adaruby.com/2008/03/24/fixing-rubygems-in-ubuntu-gutsy-installation/#comments</comments>
		<pubDate>Mon, 24 Mar 2008 11:57:08 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Complaints]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[fix]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[gems]]></category>
		<category><![CDATA[gutsy]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[rubygems.ruby]]></category>
		<category><![CDATA[troubleshooting]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[upgrade]]></category>

		<guid isPermaLink="false">http://adaruby.com/2008/03/24/fixing-rubygems-in-ubuntu-gutsy-installation/</guid>
		<description><![CDATA[
			
				
			
		

Upgrading to the latest RubyGems in Ubuntu Gutsy is a bit non-straightforward. I&#8217;d like to share a quick fix this time. It&#8217;s trivial when you know it, but if not, a friend of mine has almost hosed his system just because of this annoying &#8220;bug&#8221;.
Installing Ruby in Ubuntu is pretty simple:
sudo aptitude install ruby ri [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F03%2F24%2Ffixing-rubygems-in-ubuntu-gutsy-installation%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F03%2F24%2Ffixing-rubygems-in-ubuntu-gutsy-installation%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="Fixing RubyGems in Ubuntu Gutsy Installation" alt=" Fixing RubyGems in Ubuntu Gutsy Installation" /><br />
			</a>
		</div>
<p><a href="http://www.flickr.com/photos/evil_genius_photography/1415180013/" rel="nofollow" ><img src="http://farm2.static.flickr.com/1098/1415180013_435881aab1.jpg?v=0" alt="Ruby-like firetruck" height="500" width="333" title="Fixing RubyGems in Ubuntu Gutsy Installation" /></a></p>
<p>Upgrading to the latest <a href="http://www.rubygems.org/" rel="nofollow" >RubyGems</a> in <a href="http://www.ubuntu.com/" rel="nofollow" >Ubuntu</a> Gutsy is a bit non-straightforward. I&#8217;d like to share a quick fix this time. It&#8217;s trivial when you know it, but if not, a friend of mine has almost hosed his system just because of this annoying &#8220;bug&#8221;.</p>
<p>Installing <a href="http://www.ruby-lang.org/" rel="nofollow" >Ruby</a> in Ubuntu is pretty simple:</p>
<pre>sudo aptitude install ruby ri irb rdoc rubygems libruby-extras libmysql-ruby ruby1.8-dev</pre>
<p>(add other packages as you see fit)</p>
<p>The problem occurs right after you upgrade RubyGems to the latest version:</p>
<pre>sudo gem update --system</pre>
<p>Then you get something like this:</p>
<pre>ceefour@caliva:/usr/bin$ gem
/usr/bin/gem:23: uninitialized constant Gem::GemRunner (NameError)</pre>
<p>Logging in and out doesn&#8217;t work. The world is coming to an end!</p>
<p>Don&#8217;t worry, the world is still running. Check out your /usr/bin folder:</p>
<pre>ceefour@caliva:/usr/bin$ ls -la gem*
-rwxr-xr-x 1 root root 701 2007-08-24 12:18 gem
-rwxr-xr-x 1 root root 698 2008-03-20 09:20 gem1.8
-rwxr-xr-x 1 root root  84 2008-03-20 09:20 gemlock
-rwxr-xr-x 1 root root  89 2008-03-20 09:20 gem_mirror
-rwxr-xr-x 1 root root  76 2008-03-20 09:20 gemri
-rwxr-xr-x 1 root root  89 2008-03-20 09:20 gem_server
-rwxr-xr-x 1 root root  86 2008-03-20 09:20 gemwhich</pre>
<p>So, there is some mismatch between gem and gem1.8. The latter being the newer/correct version.</p>
<p>Simply remove the &#8220;gem&#8221; one and replace (or link) it to the &#8220;gem1.8&#8243; one:</p>
<pre>ceefour@caliva:/usr/bin$ sudo rm gem
ceefour@caliva:/usr/bin$ sudo ln -s gem1.8 gem</pre>
<p>Now:</p>
<pre>ceefour@caliva:/usr/bin$ gem -v
1.0.1</pre>
<p>Presto! We&#8217;re back in business. <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' title="Fixing RubyGems in Ubuntu Gutsy Installation" /> </p>
<p>Interesting RubyGems articles:</p>
<ul>
<li><a href="http://blog.fiveruns.com/2008/3/3/compiling-ruby-rubygems-and-rails-on-ubuntu" rel="nofollow" >Compiling Ruby, RubyGems and Rails on Ubuntu</a></li>
<li><a href="http://dmitterdorfer.blogspot.com/2006/01/ruby-gems-on-ubuntu-linux.html" rel="nofollow" >Jag har litet bråttom: Ruby Gems on Ubuntu Linux</a></li>
<li><a href="http://wafa.web.id/2008/01/20/ruby-rubygems-mirroring/" rel="nofollow" >:: nEvEr gIVeUp :: » Ruby, RubyGems Mirroring</a></li>
<li><a href="http://www.vmunix.com/mark/blog/archives/2006/04/08/ruby-gems-still-doesnt-work-on-104/" rel="nofollow" >VMUNIX Blues » Blog Archive » Ruby GEMS still doesn’t work on 10.4?</a></li>
<li><a href="http://digitalemagine.com/wordpress/archives/18" rel="nofollow" >Stefano’s Blog(s) » The magic world of Ruby, Rails and RubyGems &#8230;</a></li>
<li><a href="http://www.openlogic.com/blogs/2007/06/rubyrailsmysql-installation-h-e-double-hockey-sticks/" rel="nofollow" >Ruby/RubyGems/Rails/MySQL installation h e double-hockey sticks &#8230;</a></li>
</ul>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2008/03/24/fixing-rubygems-in-ubuntu-gutsy-installation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Overview of A Rails Plugin</title>
		<link>http://www.adaruby.com/2008/01/27/overview-of-a-rails-plugin/</link>
		<comments>http://www.adaruby.com/2008/01/27/overview-of-a-rails-plugin/#comments</comments>
		<pubDate>Sun, 27 Jan 2008 11:48:23 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[294]]></category>
		<category><![CDATA[296]]></category>
		<category><![CDATA[344]]></category>

		<guid isPermaLink="false">http://adaruby.com/2008/01/27/overview-of-a-rails-plugin/</guid>
		<description><![CDATA[
			
				
			
		
A common stumbling block for beginner Rails developers is learning the basics required to write plugins. This is made more complicated by the fact that Ruby is inherently dynamic and offers many techniques for code reuse.
Luckily, if you can write Rails applications you can write plugins by simply drawing on a handful of basic patterns.
Why [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F01%2F27%2Foverview-of-a-rails-plugin%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F01%2F27%2Foverview-of-a-rails-plugin%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="Overview of A Rails Plugin" alt=" Overview of A Rails Plugin" /><br />
			</a>
		</div>
<p><a href="http://www.alexyoung.org/" rel="nofollow" >A common stumbling block for beginner Rails developers</a> is learning the basics required to write plugins. This is made more complicated by the fact that Ruby is inherently dynamic and offers many techniques for code reuse.</p>
<p>Luckily, if you can write Rails applications you can write plugins by simply drawing on a handful of basic patterns.</p>
<p><strong>Why write plugins?</strong></p>
<blockquote><p>Writing a plugin will:</p>
<ul>
<li>Help make sharing code more efficient, whether it’s between projects or within the same project</li>
<li>Allow you to publish generic code to the community</li>
<li>Save time and increase your confidence by testing once and reusing many times</li>
<li>Share functionality in a robust manner, especially when using namespaces with ActiveRecord</li>
</ul>
</blockquote>
<p><strong>Usage</strong></p>
<blockquote><p>Rails provides installation scripts through <tt>script/plugin install</tt>, and a generator for creating new plugins: <tt>script/generate plugin</tt>. These will work with URLs, saving time when trying out plugins. You can read more about installing and managing plugins at the <a href="http://wiki.rubyonrails.org/rails/pages/Plugins" rel="nofollow" >Rails wiki</a>.</p></blockquote>
<p><strong>Rubyisms</strong></p>
<blockquote><p>Any of the following tools and techniques provided by Ruby are used by plugins to extend functionality:</p>
<ul>
<li>Mixins: including or extending classes using modules</li>
<li>Opening a class or module definition and adding or overriding methods</li>
<li>Dynamic extension through callbacks and hooks: <tt>method_missing</tt>, <tt>Class#inherited</tt>, <tt>Module#const_missing</tt>, <tt>Module#included</tt></li>
<li>Dynamic extension through code generation: <tt>eval</tt>, <tt>class_eval</tt>, <tt>instance_eval</tt></li>
</ul>
<p>These techniques fall into two broad categories:</p>
<ul>
<li>Using modules and classes to extend existing classes, providing new features</li>
<li>Using introspection to adapt generic code to specific cases</li>
</ul>
<p>It’s important to consider exactly what should be extended when writing a plugin. If complex meta-programming to adapt your plugin to the host application is required, care should be taken to ensure concurrency will not produce unexpected results.</p></blockquote>
<p>Hopefully this very short summary clears things a bit. Read more on  <a href="http://alexyoung.org/articles/show/40/a_taxonomy_of_rails_plugins" rel="nofollow" >Alex Young&#8217;s article</a>.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2008/01/27/overview-of-a-rails-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scraping Gmail with Mechanize and Hpricot</title>
		<link>http://www.adaruby.com/2008/01/11/scraping-gmail-with-mechanize-and-hpricot/</link>
		<comments>http://www.adaruby.com/2008/01/11/scraping-gmail-with-mechanize-and-hpricot/#comments</comments>
		<pubDate>Sat, 12 Jan 2008 00:14:00 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Praises]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[302]]></category>
		<category><![CDATA[326]]></category>
		<category><![CDATA[329]]></category>
		<category><![CDATA[336]]></category>
		<category><![CDATA[337]]></category>
		<category><![CDATA[354]]></category>
		<category><![CDATA[364]]></category>

		<guid isPermaLink="false">http://adaruby.com/2008/01/11/scraping-gmail-with-mechanize-and-hpricot/</guid>
		<description><![CDATA[
			
				
			
		
We&#8217;ve been doing a lot of scraping and mashups lately. So we&#8217;d love to share on how to do this. Fortunately Schadenfreude has written a good tutorial about using Mechanize and Hpricot to scrape Gmail.
The tutorial uses mechanize and hpricot to login to gmail and return a list of Unread emails.
Installation of required tools
 gem [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F01%2F11%2Fscraping-gmail-with-mechanize-and-hpricot%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2008%2F01%2F11%2Fscraping-gmail-with-mechanize-and-hpricot%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="Scraping Gmail with Mechanize and Hpricot" alt=" Scraping Gmail with Mechanize and Hpricot" /><br />
			</a>
		</div>
<p>We&#8217;ve been doing a lot of scraping and mashups lately. So we&#8217;d love to share on how to do this. Fortunately <a href="http://schf.uc.org/articles/2007/02/14/scraping-gmail-with-mechanize-and-hpricot" rel="nofollow" >Schadenfreude has written a good tutorial about using Mechanize and Hpricot to scrape Gmail</a>.</p>
<p>The tutorial uses mechanize and hpricot to login to gmail and return a list of Unread emails.</p>
<p><strong>Installation of required tools</strong></p>
<blockquote><p> <code>gem install mechanize --include-dependencies<br />
</code></p></blockquote>
<blockquote><p>This will install both mechanize and hpricot.</p></blockquote>
<p><strong>Usage</strong></p>
<blockquote><p>Before we can scrape our gmail account, we will need to login. Mechanize is a lib for “automating interaction with websites”. It can store and send cookies as well so once we login our script will now have a session to putter around in as if it was a web browser.</p></blockquote>
<p>&nbsp;</p>
<blockquote>
<pre>require 'rubygems'
require 'mechanize'

agent = WWW::Mechanize.new
page = agent.get 'http://www.gmail.com'

form = page.forms.first
form.Email = '***your gmail account***'
form.Passwd = '***your password***'

page = agent.submit form</pre>
</blockquote>
<blockquote><p>After logging in gmail will try to redirect us to http://mail.google.com/mail?ui&amp;auth=DC8F…. we need to follow this link. Using hpricot we can search for the meta redirect and grab the href attribute then have mechanize follow the link.</p></blockquote>
<p>&nbsp;</p>
<blockquote><p> <code>page = agent.get page.search("//meta").first.attributes['href'].gsub(/'/,'')</code></p></blockquote>
<blockquote><p><em>Note we need to strip the single quotes from around the url, i used gsub for this.</em></p></blockquote>
<blockquote><p>The returned page will try to use javascript to load the interface but it will not work for use. Thankfully a <strong>noscript</strong> tag is included in the source and contains a helpful clue.</p></blockquote>
<blockquote>
<pre>&lt;noscript&gt;&lt;font face="arial"&gt;JavaScript must be enabled in order for you to use Gmail in standard view.
However, it seems JavaScript is either disabled or not supported by your browser.
To use standard view, enable JavaScript by changing your browser options, then &lt;a href=""&gt;try again&lt;/a&gt;.

&lt;p&gt;To use Gmail's basic HTML view, which does not require JavaScript,
&lt;a href="?ui=html&amp;zy=n"&gt;click here&lt;/a&gt;.&lt;/p&gt;&lt;/font&gt;

&lt;p&gt;&lt;font face="arial"&gt;If you want to view Gmail on a mobile phone or similar device
&lt;a href="?ui=mobile&amp;zyp=n"&gt;click here&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt;&lt;/noscript&gt;</pre>
</blockquote>
<p><strong>Full source</strong></p>
<p>&nbsp;</p>
<blockquote>
<pre>require 'rubygems'
require 'mechanize'

agent = WWW::Mechanize.new

page = agent.get 'http://www.gmail.com'
form = page.forms.first
form.Email = '***your gmail account***'
form.Passwd = '***your password***'
page = agent.submit form

page = agent.get page.search("//meta").first.attributes['href'].gsub(/'/,'')
page = agent.get page.uri.to_s.sub(/\?.*$/, "?ui=html&amp;zy=n")
page.search("//tr[@bgcolor='#ffffff']")  do |row|
from, subject = *row.search("//b/text()")
url = page.uri.to_s.sub(/ui.*$/, row.search("//a").first.attributes["href"])
puts "From: #{from}\nSubject: #{subject}\nLink: #{url}\n\n"

email = agent.get url
# ..
end</pre>
</blockquote>
<p>Enjoy the tutorial!</p>
<p>Read more on <a href="http://schf.uc.org/articles/2007/02/14/scraping-gmail-with-mechanize-and-hpricot" rel="nofollow" >Schadenfreude</a>.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2008/01/11/scraping-gmail-with-mechanize-and-hpricot/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Shoes, the Ruby Desktop GUI Toolkit</title>
		<link>http://www.adaruby.com/2007/11/10/shoes-the-ruby-desktop-gui-toolkit/</link>
		<comments>http://www.adaruby.com/2007/11/10/shoes-the-ruby-desktop-gui-toolkit/#comments</comments>
		<pubDate>Sat, 10 Nov 2007 11:47:13 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://adaruby.com/2007/11/10/shoes-the-ruby-desktop-gui-toolkit/</guid>
		<description><![CDATA[
			
				
			
		
If you simply want to write simple GUI desktop applications, Ruby with Shoes is a quick way to do it.
Example session in my computer:

The code for that Timer GUI application is taken from the Shoes samples, which is concise enough for me to put it here:
Shoes.app :height =&#62; 150, :width =&#62; 250 do
  background rgb(240, 250, [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F11%2F10%2Fshoes-the-ruby-desktop-gui-toolkit%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F11%2F10%2Fshoes-the-ruby-desktop-gui-toolkit%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="Shoes, the Ruby Desktop GUI Toolkit" alt=" Shoes, the Ruby Desktop GUI Toolkit" /><br />
			</a>
		</div>
<p>If you simply want to write simple GUI desktop applications, Ruby with <a href="http://code.whytheluckystiff.net/shoes/" rel="nofollow" >Shoes</a> is a quick way to do it.</p>
<p>Example session in my computer:</p>
<p><img src="http://wiki.buatruby.com/images/Shoes01.png" height="535" width="736" title="Shoes, the Ruby Desktop GUI Toolkit" alt="Shoes01 Shoes, the Ruby Desktop GUI Toolkit" /></p>
<p>The code for that Timer GUI application is taken from the Shoes samples, which is concise enough for me to put it here:</p>
<pre>Shoes.app :height =&gt; 150, :width =&gt; 250 do
  background rgb(240, 250, 208)
  stack :margin =&gt; 10 do
    button "Start" do
      @time = Time.now
      @label.replace "Stop watch started at #@time"
    end
    button "Stop" do
      @label.replace "Stopped, ", strong("#{Time.now - @time}"), " seconds elapsed."
    end
    @label = para "Press ", strong("start"), " to begin timing."
  end
end</pre>
<p>To install Shoes on Ubuntu, it needs some dependencies which fortunately are very easy to install:</p>
<pre>sudo aptitude install libungif4g libvlc0</pre>
<p>More detailed <a href="http://code.whytheluckystiff.net/shoes/wiki/DownloadShoes" rel="nofollow" >download and installation instructions</a> are available on whytheluckystiff&#8217;s site.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2007/11/10/shoes-the-ruby-desktop-gui-toolkit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Best microformats Resources for Web 2.0 Developers</title>
		<link>http://www.adaruby.com/2007/09/20/top-10-microformats-resources-for-web-20-developers/</link>
		<comments>http://www.adaruby.com/2007/09/20/top-10-microformats-resources-for-web-20-developers/#comments</comments>
		<pubDate>Thu, 20 Sep 2007 11:01:29 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[Friends]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Opinions]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Praises]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://adaruby.com/2007/09/20/top-10-microformats-resources-for-web-20-developers/</guid>
		<description><![CDATA[
			
				
			
		

microformats has been only two years old, yet it has brought significant changes in a relatively short time.
What is it, actually? According to microformats.org, &#8220;[microformats is] designed for humans first and machines second, [they] are a set of simple, open data formats built upon existing and widely adopted standards.&#8221;
Enough with the fluff, let&#8217;s see how [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F09%2F20%2Ftop-10-microformats-resources-for-web-20-developers%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F09%2F20%2Ftop-10-microformats-resources-for-web-20-developers%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="The Best microformats Resources for Web 2.0 Developers" alt=" The Best microformats Resources for Web 2.0 Developers" /><br />
			</a>
		</div>
<p><a href="http://www.flickr.com/photos/torchlightlms/1206281509/" rel="nofollow"  title="Shave your Semantic (or semantic?) Web!"><img src="http://farm2.static.flickr.com/1187/1206281509_ce53f3d7ff.jpg" alt="Shave your Semantic (or semantic?) Web" title="The Best microformats Resources for Web 2.0 Developers" /></a></p>
<p><a href="http://microformats.org/" rel="nofollow" >microformats</a> has been <a href="http://microformats.org/blog/2007/06/21/microformatsorg-turns-2/" rel="nofollow" >only two years old</a>, yet it has brought significant changes in a relatively short time.</p>
<p>What is it, actually? <a href="http://microformats.org/about/" rel="nofollow" >According to microformats.org</a>, &#8220;[microformats is] designed for humans first and machines second, [they] are a set of simple, open data formats built upon existing and widely adopted standards.&#8221;</p>
<p>Enough with the fluff, let&#8217;s see how it <em>actually</em> works, microformats in action:</p>
<p><a href="http://www.linkedin.com/in/ariekeren" rel="nofollow"  title="Arie Kusuma Atmaja @ LinkedIn"><img src="http://farm2.static.flickr.com/1322/1408453688_afda913dd5.jpg" alt="Arie Kusuma Atmaja nampang gitu lhoh" title="The Best microformats Resources for Web 2.0 Developers" /></a><br />
<a href="http://www.flickr.com/photos/ceefour/1408453688/" rel="nofollow" >Flickr picture source</a></p>
<p align="left">The above picture is me browsing to <a href="http://www.linkedin.com/in/ariekeren" rel="nofollow" >the LinkedIn profile</a> of one of Indonesia&#8217;s  renowned Ruby on Rails experts, <a href="http://ariekusumaatmaja.wordpress.com/" rel="nofollow" >Arie Kusuma Atmaja</a>. The overlay window that contains these semantic information is <strong>not </strong>a <a href="http://www.linkedin.com/" rel="nofollow" >LinkedIn</a> feature. Rather, it is the easily usable, cross-browser <a href="http://leftlogic.com/lounge/articles/microformats_bookmarklet" rel="nofollow" >Microformats Bookmarklet by LeftLogic</a>. Go on&#8230; <em>try it</em> if you haven&#8217;t!</p>
<p align="left">As you can see, the mere act of clicking the bookmarklet shows you some important facts about Arie (or any microformats-enabled you&#8217;re currently at). In case of a <a href="http://microformats.org/wiki/hresume" rel="nofollow" >microformats-enabled resume</a> page like in LinkedIn, it shows you where he works, when, education information, and related stuff. For fun comparison purposes only, <a href="http://www.linkedin.com/in/ceefour" rel="nofollow"  title="Hendy Irawan's LinkedIn profile">my LinkedIn profile</a> has more detailed information than his, hehe <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' title="The Best microformats Resources for Web 2.0 Developers" /> </p>
<p align="left">The best part is not only that the information is human-readable, but it can also be extracted and processed automatically by machines or software. The primary distinguishing trait of a microformats-enabled HTML page is that it has <a href="http://en.wikipedia.org/wiki/Semantic_Web" rel="nofollow" >semantic meaning</a>. A microformats processor can know the difference between a name, an e-mail address, a street address, a job, a university, and so on; while in plain HTML, all you can infer are things dealing with paragraphs, tables, lists, and so on.</p>
<p align="left">Making microformats-enabled pages aren&#8217;t hard at all, actually it is very easy! It&#8217;s even much easier than CSS.</p>
<p align="left">To see how simple it is, let&#8217;s see a snippet of a real-world microformats, still courtesy of Arie:</p>
<pre>&lt;div id="masthead" class="vcard contact"&gt;
  &lt;div id="nameplate"&gt;
    &lt;h1 id="name"&gt;&lt;span class="fn n"&gt; &lt;span class="given-name"&gt;Arie&lt;/span&gt; &lt;span class="family-name"&gt;Kusuma Atmaja&lt;/span&gt; &lt;/span&gt;&lt;/h1&gt;
      &lt;p class="headline title"&gt;&lt;strong&gt;Senior Ruby Developer at IMT&lt;/strong&gt;&lt;/p&gt;
    &lt;div class="adr"&gt;
      &lt;p class="locality"&gt;Indonesia&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;</pre>
<p align="left">Most of the above snippet is just HTML. The microformats part is simply the <strong>class=&#8221;</strong><em>something</em><strong>&#8220;</strong> convention. Simple, and it gets the job done. <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' title="The Best microformats Resources for Web 2.0 Developers" /> </p>
<p align="left">Some more commonly used microformats specifications include:</p>
<ul>
<li><a href="http://microformats.org/wiki/hcard" rel="nofollow" >hCard</a> for people and organizations</li>
<li><a href="http://microformats.org/wiki/hcalendar" rel="nofollow" >hCalendar</a> for calendars and Events</li>
<li><a href="http://microformats.org/wiki/hcalendar" rel="nofollow" >hCalendar</a> for calendars and Events</li>
<li><a href="http://microformats.org/wiki/vote-links" rel="nofollow" >VoteLinks</a> and <a href="http://microformats.org/wiki/hreview" rel="nofollow" >hReview</a> for opinions, ratings, and reviews</li>
<li><a href="http://gmpg.org/xfn" rel="nofollow" ><abbr title="XHTML Friends Network">XFN</abbr></a> for social networks</li>
<li><a href="http://microformats.org/wiki/rel-license" rel="nofollow" >rel-license</a> for licenses</li>
<li><a href="http://microformats.org/wiki/rel-tag" rel="nofollow" >rel-tag</a> for tags, keywords, and categories</li>
<li><a href="http://microformats.org/wiki/xoxo" rel="nofollow" >XOXO</a> for lists and outlines</li>
<li><a href="http://microformats.org/wiki/" rel="nofollow" >&#8230;and more&#8230;</a></li>
</ul>
<p align="left">Despite all these specifications, &#8220;who uses it?&#8221; is a good question. It turns out, there has been many, and more and more sites are adopting it. <a href="http://wordpress.org/extend/plugins/linkedin-hresume/" rel="nofollow" >LinkedIn with hResume</a> is one example, along with <a href="http://torrez.us/archives/2007/08/02/540/" rel="nofollow" >Google Maps</a>, <a href="http://www.ylocalblog.com/blog/2006/06/21/we-now-support-microformats/" rel="nofollow" >Yahoo</a>, <a href="http://www.flickr.com/groups/microformats/" rel="nofollow" >Flickr</a>, and <a href="http://microformats.org/wiki/hcard-examples-in-wild" rel="nofollow" >all these cool guys</a> have been using them. Why shouldn&#8217;t you?</p>
<p align="left">Interested? Here are some stuff to get you started:</p>
<ol>
<li><strong>Online Tools</strong>
<ol>
<li><a href="http://leftlogic.com/lounge/articles/microformats_bookmarklet" rel="nofollow" >Microformats Bookmarklet by LeftLogic</a><br />
A handy microformats explorer bookmarklet. Useful also if you&#8217;re on the go and you want to check out some microformats. No need to install anything fancy on the computer.</li>
<li><a href="https://addons.mozilla.org/firefox/addon/4106" rel="nofollow" >Operator Firefox Extension</a><br />
Microformats explorer extension for Firefox. Whether you&#8217;re a web developer or simply want to check out this latest technology, this is a very useful tool.</li>
<li> <a href="http://blog.codeeg.com/tails-firefox-extension-03/" rel="nofollow" >Tails Firefox extension</a> is another microformats Firefox extension</li>
<li><a href="http://tools.blogmatrix.com/extract/" rel="nofollow" >Almost Universal Microformats Parser</a> is a useful web-based tool to parse microformats.</li>
</ol>
</li>
<li><strong>Tutorials and Resources<br />
</strong></p>
<ol>
<li><a href="http://www.smashingmagazine.com/2007/05/04/microformats-what-they-are-and-how-to-use-them/" rel="nofollow" >Microformats, what they are and how to use them, by Smashing Magazine </a></li>
<li><a href="http://www.xfront.com/microformats/" rel="nofollow" >Microformats Tutorial</a> by XFront<br />
This is a very extensive tutorial. The complete tutorial package including the example files is a 13 MB download! <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' title="The Best microformats Resources for Web 2.0 Developers" /> </li>
<li><a href="http://www.thinkvitamin.com/features/design/how-to-use-microformats" rel="nofollow" >How to Use Microformats</a> by Vitamin Features</li>
<li><a href="http://whymicroformats.com/introduction-to-microformats/" rel="nofollow" >Introduction to Microformats</a> by WhyMicroformats.com</li>
<li><a href="http://www.digital-web.com/articles/the_big_picture_on_microformats/" rel="nofollow" >The Big Picture on Microformats</a> by Digital Web Magazine</li>
<li>Another by Digital Web Magazine: <a href="http://www.digital-web.com/articles/microformats_primer/" rel="nofollow" >Microformats Primer</a></li>
<li>Back to the future: <a href="http://www.readwriteweb.com/archives/mozilla_does_microformats_firefox3.php" rel="nofollow" >Mozilla Firefox 3.0 Does Microformats</a><br />
<a href="http://www.readwriteweb.com/" rel="nofollow" >Read/WriteWeb&#8217;s</a> articles also touched microformats-related stuff quite often.</li>
</ol>
</li>
<li><strong>Microformat Parsers</strong>
<ol>
<li><a href="http://mofo.rubyforge.org/" rel="nofollow" >Mofo Ruby Gem and Rails Plugin</a><br />
Of course, this is Ruby on Rails blog! Mofo is a microformats parser for Ruby and it also doubles as a Rails plugin. Check out <a href="http://errtheblog.com/post/37" rel="nofollow" >Chris Wanstrath&#8217;s post</a> for more information.<br />
There are also microformat parsers for other languages:</li>
<li><a href="http://www.danwebb.net/2007/2/9/sumo-a-generic-microformats-parser-for-javascript" rel="nofollow" >Sumo</a> is a microformats parser for JavaScript</li>
<li><a href="http://allinthehead.com/hkit" rel="nofollow" >hKit</a> is a microformats parser for PHP</li>
<li><a href="http://malatestapunk-stuff.blogspot.com/2007/01/php-microformats-parser.html" rel="nofollow" >Microformats Parser</a> is another parser for PHP</li>
<li><a href="http://phildawes.net/microformats/" rel="nofollow" >Microformats Parser for Python</a></li>
<li><a href="http://code.whytheluckystiff.net/hpricot/" rel="nofollow" >Hpricot Ruby Gem</a><br />
Found a bizarre microformat or inventing your own? No problem, Hpricot comes to the rescue. Parse any HTML-ish document as you see fit&#8230; More info available from <a href="http://redhanded.hobix.com/inspect/hpricot01.html" rel="nofollow" >this RedHanded post</a>.</li>
<li><a href="http://rubyforge.org/projects/scrapi" rel="nofollow" >scrAPI</a> is another Ruby library for parsing HTML that can be useful for processing microformats.</li>
</ol>
</li>
<li><strong>References</strong>
<ol>
<li><a href="http://microformats.org/" rel="nofollow" >Microformats.org</a><br />
&#8220;Official&#8221; web site of Microformats. You can read everything about microformats, current specifications and newly proposed specs.</li>
<li><a href="http://www.amazon.com/gp/product/1590598148?ie=UTF8&amp;tag=gauldong-20&amp;link_code=as3&amp;camp=211189&amp;creative=373489&amp;creativeASIN=1590598148" rel="nofollow" >&#8220;Microformats: Empowering Your Markup for Web 2.0&#8243; Book</a> by <a href="http://webdirections.org/" rel="nofollow" >John Allsopp</a><br />
&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;br /&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;<br />
This is the first book dedicated to, and is a comprehensive guide to, microformats. It explores why, in Bill Gates&#8217;s words, &#8220;We need microformats&#8221;; how microformats work; and the kinds of problems microformats help solve. the book covers every current microformat, with complete details of the syntax, semantics, and uses of each, along with real-world examples and a comprehensive survey of the tools available for working with them. the book also features case studies detailing how major web content publishers such as yahoo put microformats to work in their web applications.</li>
<li><a href="http://suda.co.uk/projects/microformats/cheatsheet/" rel="nofollow" >Brian Suda&#8217;s microformats cheatsheet</a><br />
For people who likes it quick and done, this is perfect. It lists microformats properties by format and also lists each format and the hierarchy. This includes elemental microformats, compound microformats and some of the standard design patterns used.</li>
<li><a href="http://www.ilovejackdaniels.com/cheat-sheets/microformats-cheat-sheet/" rel="nofollow" >Dave Child&#8217;s microformats cheatsheet</a> is another good reference</li>
<li>And <a href="http://microformats.org/wiki/cheatsheets" rel="nofollow" >more cheatsheets on microformats.org wiki</a></li>
<li><a href="http://www.w3.org/TR/grddl/" rel="nofollow" >Gleaning Resource Descriptions from Dialects of Languages (GRDDL)</a> is a recently approved W3C Recommendation that can be used, among others, for extracting semantic information (including microformats) from HTML pages.</li>
<li><a href="http://microformatique.com/" rel="nofollow" >microformatique</a>. A blog about all things microformats!</li>
</ol>
</li>
</ol>
<p>Feel free to add more resources as you see fit, in the comments! <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' title="The Best microformats Resources for Web 2.0 Developers" /> </p>
<p><strong>Updates:</strong></p>
<ol>
<li>I originally thought I was gonna list 10 resources&#8230; But it seems there are much more <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' title="The Best microformats Resources for Web 2.0 Developers" /> </li>
<li>More links to John Allsopp&#8217;s resources</li>
</ol>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2007/09/20/top-10-microformats-resources-for-web-20-developers/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails Developers IDE, NetBeans 6 Beta 1 is Out!</title>
		<link>http://www.adaruby.com/2007/09/19/ruby-on-rails-developers-ide-netbeans-6-beta-1-is-out/</link>
		<comments>http://www.adaruby.com/2007/09/19/ruby-on-rails-developers-ide-netbeans-6-beta-1-is-out/#comments</comments>
		<pubDate>Wed, 19 Sep 2007 12:00:29 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[Friends]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[JRuby]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Opinions]]></category>
		<category><![CDATA[Praises]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://adaruby.com/2007/09/19/ruby-on-rails-developers-ide-netbeans-6-beta-1-is-out/</guid>
		<description><![CDATA[
			
				
			
		

NetBeans 6 Beta 1 is here!!
Let&#8217;s rock the boat  
It&#8217;s the first significant NetBeans event in probably a year  
NetBeans isn&#8217;t only for Java geeks anymore, it has tons of Ruby and Ruby on Rails support now!
What surprises me (and delights me!) about this release is that, not like previous NetBeans 6 milestones [...]


Related posts:<ol><li><a href='http://www.adaruby.com/2009/12/14/netbeans-ide-6-8-released-with-enhanced-ruby-on-rails-support/' rel='bookmark' title='Permanent Link: NetBeans IDE 6.8 Released &#8212; with Enhanced Ruby on Rails Support!'>NetBeans IDE 6.8 Released &#8212; with Enhanced Ruby on Rails Support!</a> <small> NetBeans IDE version 6.8 has been released, Sun Microsystems&#8217;...</small></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F09%2F19%2Fruby-on-rails-developers-ide-netbeans-6-beta-1-is-out%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F09%2F19%2Fruby-on-rails-developers-ide-netbeans-6-beta-1-is-out%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="Ruby on Rails Developers IDE, NetBeans 6 Beta 1 is Out!" alt=" Ruby on Rails Developers IDE, NetBeans 6 Beta 1 is Out!" /><br />
			</a>
		</div>
<p><a href="http://www.netbeans.org/community/releases/60/" rel="nofollow"  title="NetBeans 6 Beta 1 Ruby on Rails IDE"><img src="http://www.adaruby.com/wp-content/uploads/2007/09/netbeans6-only.jpg" alt="NetBeans 6" title="Ruby on Rails Developers IDE, NetBeans 6 Beta 1 is Out!" /></a></p>
<p><a href="http://www.netbeans.org/community/releases/60/" rel="nofollow" >NetBeans 6 Beta 1</a> is here!!</p>
<p>Let&#8217;s rock the boat <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' title="Ruby on Rails Developers IDE, NetBeans 6 Beta 1 is Out!" /> </p>
<p>It&#8217;s the first significant NetBeans event in probably a year <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' title="Ruby on Rails Developers IDE, NetBeans 6 Beta 1 is Out!" /> </p>
<p>NetBeans isn&#8217;t <em>only</em> for Java geeks anymore, it has <a href="http://wiki.netbeans.org/wiki/view/NewAndNoteWorthy" rel="nofollow" >tons of Ruby and Ruby on Rails support</a> now!</p>
<p>What surprises me (and delights me!) about this release is that, not like previous NetBeans 6 milestones where NetBeans-Java is bundled with Ruby, they actually make <a href="http://bits.netbeans.org/download/6_0/beta1/latest/" rel="nofollow" >a special Ruby-only version</a>.</p>
<p>The Ruby-only download is mere 19 MB in size!</p>
<p>That&#8217;s quite &#8220;cheap&#8221; (in terms of bandwidth usage). I&#8217;d expect the Ruby version to be less memory bloat and should have better performance as well, than the mammoth 172 MB one <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' title="Ruby on Rails Developers IDE, NetBeans 6 Beta 1 is Out!" /> </p>
<p>I have been using NetBeans 6 for several months now, starting from the first NetBeans+Ruby version which is NetBeans 6 Milestone 7, and I can say I&#8217;m very impressed.</p>
<p>I&#8217;m still downloading Beta 1 and haven&#8217;t yet installed Beta 1 at the time of this writing, but I can be sure it&#8217;s gonna be event better than the last NetBeans 6 Milestone 10.</p>
<p>Don&#8217;t let the &#8220;Milestone&#8221; or &#8220;Beta&#8221; name put you off, it&#8217;s already usable in more ways than most software.</p>
<p>Check out why George Cook says <a href="http://lifeonrails.org/2007/8/30/netbeans-the-best-ruby-on-rails-ide" rel="nofollow"  title="Netbeans THE best ruby on rails IDE">Netbeans THE best ruby on rails IDE</a>:</p>
<blockquote><p>&#8230; I was gonna write a blow for blow comparison of netbeans against radrails, but I really see no point. I figured it’s best just to tell you why netbeans’ rails support is so creamingly good, but so you know I have evaluated both and textmate, firstly – here’s some points about the other 2. &#8230;</p>
<p>&#8230; I looked about and by chance came across an article that said that ruby on rails support was being added to netbeans 6. I hunted around like a crack addict and found the nightly builds to try out.</p>
<p><strong>I was extremely impressed.</strong></p>
<p>Netbeans is fucking fab, it proper rocks. I’ve been on netbeans 6 since milestone 8, which is about 1,000 builds now (they’re constantly working on it, and updating it). I’ve been with it through broken indentation, broken code completion, broken everything, null pointers, new features, more efficiency, the memory leak sorted out. I’ve watched it evolve before my eyes: I was installing new builds twice a day – Now it’s so stable and so good that I haven’t updated my build in a month (I might later on <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' title="Ruby on Rails Developers IDE, NetBeans 6 Beta 1 is Out!" /> .<br />
<strong>Code completion that works – really really works:</strong><br />
<strong>Code completion is activated with CTRL + SPACE – once activated you can type, or select from the list:</strong><br />
<img src="http://lifeonrails.org/images/netbeans/1.png" alt="Image of code completion" title="Ruby on Rails Developers IDE, NetBeans 6 Beta 1 is Out!" /><br />
<strong>And here are what the diffs look like in the files themselves:</strong><br />
<img src="http://lifeonrails.org/images/netbeans/51.png" alt="Image of svn integration" title="Ruby on Rails Developers IDE, NetBeans 6 Beta 1 is Out!" /><br />
<strong>In line documentation when you need it, where you need it:</strong><br />
<strong>Just press CTRL+SPACE on a keyword and you get the docs.</strong><br />
<img src="http://lifeonrails.org/images/netbeans/16.png" alt="Image of inline documents" title="Ruby on Rails Developers IDE, NetBeans 6 Beta 1 is Out!" /><br />
<strong>Click on rescue, or move the caret over it with the cursor keys:</strong><br />
<img src="http://lifeonrails.org/images/netbeans/25.png" alt="Image of syntax highlighting" title="Ruby on Rails Developers IDE, NetBeans 6 Beta 1 is Out!" /><br />
<strong>code folding:</strong><br />
<strong>You use the + and – buttons to fold code</strong><br />
<img src="http://lifeonrails.org/images/netbeans/53.png" alt="Image of code folding" title="Ruby on Rails Developers IDE, NetBeans 6 Beta 1 is Out!" /></p></blockquote>
<p>(Read his article for more info. He has a very comprehensive review of many NetBeans-Ruby features!)</p>
<p>Michael Urban has his own opinion in <a href="http://www.javalobby.org/java/forums/t97125.html" rel="nofollow" >Move Over Eclipse. NetBeans 6 Rocks!</a>:</p>
<blockquote><p>Ok, I admit the title is a bit inflammatory to Eclipse fans. But after working with NetBeans 6 over the last week, I have to say I am very impressed. This is not simply a minor upgrade, as is so common in IDEs these days even when they are given a new major version number. Quite the contrary, NetBeans 6 is a major new release, and a major improvement over NetBeans 5.5.</p></blockquote>
<p>A roundup of <a href="http://www.netbeans.org/community/releases/60/" rel="nofollow" >NetBeans Ruby-specific features in this release</a>:</p>
<blockquote><p><img src="http://www.netbeans.org/images/screenshots/6.0/ruby-project.png" alt="screenshot of a window being moved by drag and drop" title="Ruby on Rails Developers IDE, NetBeans 6 Beta 1 is Out!" /></p>
<p><strong>Ruby/JRuby/Ruby on Rails Support</strong></p>
<ul>
<li><strong>Project Support.</strong> Quickly create Ruby projects with logical structure, run Ruby files, configure other Ruby interpreters (such as JRuby or native Ruby), locate and install Ruby Gems through a graphical wizard, create and execute unit tests, run RSpec specification files, jump between a Ruby file and its corresponding unit test or spec file, and so on. <a href="http://www.netbeans.org/download/flash/jruby_on_rails/jruby_on_rails.html" rel="nofollow" >View Demo.</a></li>
<li><strong>Advanced Ruby Editing.</strong> Advanced code editing for Ruby, using semantic information about the program to offer code completion, showing available classes and methods for the current expression, along with the associated RDoc documentation. The syntax highlighting is enhanced with semantic information, such that unused local variables and parameters are shown in gray. There are many other editing features, including Goto Declaration for jumping to the declaration point of a class or method reference. <a href="http://www.netbeans.org/download/flash/jruby_editing/jruby_editing.html" rel="nofollow" >View Demo.</a></li>
<li><strong>Ruby Debugger. </strong> Single-step or run through Ruby code, set breakpoints, look at local variables, navigate the call stack, switch threads, and evaluate expressions by just hovering the mouse over the variable in the Editor. There is also support for the &#8220;fast debug&#8221; extension.</li>
<li><strong>Ruby on Rails Support.</strong> Generate Rails projects, or generate code through the Rails code generator graphical wizard, which offers documentation on the plugins within the wizard itself. Third party generators are also supported. Furthermore, there are actions for jumping quickly between a Rails action and its corresponding View, or warping to the browser for the URL most relevant to the file you are editing. Database migrations and Rake targets are supported as well. Finally, RHTML files are highlighted (along with improved NetBeans 6.0 support for related files, such as JavaScript and CSS). <a href="http://www.netbeans.org/kb/55/flickr-on-rails-flash.html" rel="nofollow" >View Demo.</a></li>
</ul>
</blockquote>
<p><a href="http://wiki.netbeans.org/wiki/view/NewAndNoteWorthy" rel="nofollow" >And also</a>:</p>
<blockquote>
<ul>
<li> Quick Fixes
<ul>
<li> Automatic detection of block variables that might be accidentally modifying local variables</li>
</ul>
</li>
</ul>
<p><img src="http://wiki.netbeans.org/wiki/attach/RubyHints/blockvar-fixes.png" alt="http://wiki.netbeans.org/wiki/attach/RubyHints/blockvar-fixes.png" title="Ruby on Rails Developers IDE, NetBeans 6 Beta 1 is Out!" /></p>
<ul>
<li>
<ul>
<li> Rails deprecation warnings which identify usages of deprecated Rails idioms (enable this warning in the Ruby options panel)</li>
</ul>
</li>
</ul>
<p><img src="http://wiki.netbeans.org/wiki/attach/RubyHints/deprecated-fields.png" alt="http://wiki.netbeans.org/wiki/attach/RubyHints/deprecated-fields.png" title="Ruby on Rails Developers IDE, NetBeans 6 Beta 1 is Out!" /></p>
<ul>
<li>
<ul>
<li> Quick which finds same-line definitions of classes or methods and offer to explode these into    multiline, formatted definitions</li>
</ul>
</li>
</ul>
<p><img src="http://wiki.netbeans.org/wiki/attach/RubyHints/sameline.png" alt="http://wiki.netbeans.org/wiki/attach/RubyHints/sameline.png" title="Ruby on Rails Developers IDE, NetBeans 6 Beta 1 is Out!" /></p>
<ul>
<li>
<ul>
<li> A number of experimental hints compatible with Beta 1 but not bundled; access these from the Plugin manager.    These hints can convert between <tt>do</tt> and brace-style blocks, they warn about &#8220;wrong&#8221; name conventions    for Ruby symbols, they offer to run the Rails generator to generate missing views for action methods,    they identify possible incorrect usage of attributes</li>
<li> <a href="http://wiki.netbeans.org/wiki/view/RubyHints" rel="nofollow" >More information about the Ruby quick fixes</a></li>
</ul>
</li>
<li> RHTML formatting (and improvements to the Ruby formatting algorithm). A new formatting preferences panel allows configuration of the continuation indent as well as enabling reformatting of comments.</li>
<li> Updated bundled JRuby to version 1.0.1</li>
<li> Ability to deploy Rails projects to Java EE application servers</li>
<li> YAML code folding and navigator, improved RHTML navigator</li>
<li> Go To Declaration in RHTML files now work to warp to partials, redirect_to, link_to, etc.</li>
</ul>
<p><img src="http://wiki.netbeans.org/wiki/attach/NewAndNoteWorthyBeta1/renderpartial.png" alt="http://wiki.netbeans.org/wiki/attach/NewAndNoteWorthyBeta1/renderpartial.png" title="Ruby on Rails Developers IDE, NetBeans 6 Beta 1 is Out!" /></p>
<ul>
<li> Large number of bug fixes and tweaks</li>
</ul>
<p><strong>Diff</strong></p>
<ul>
<li> Export Diff Patch &#8211; CVS and Subversion integration
<ul>
<li> based on unified diff</li>
<li> automatically opens generated patch file into the editor with colored annotations</li>
</ul>
</li>
</ul>
<p><img src="http://wiki.netbeans.org/wiki/attach/NewAndNoteWorthyBeta1/patch.png" alt="patch Ruby on Rails Developers IDE, NetBeans 6 Beta 1 is Out!"  title="Ruby on Rails Developers IDE, NetBeans 6 Beta 1 is Out!" /></p></blockquote>
<p>Don&#8217;t forget <a href="http://www.netbeans.org/community/releases/60/" rel="nofollow" >the general improvements</a> as well:</p>
<blockquote><p> <strong>Editor Improvements</strong></p>
<ul>
<li><img src="http://www.netbeans.org/images/screenshots/6.0/code-completion4.jpg" alt="screenshot of a window being moved by drag and drop" border="1" title="Ruby on Rails Developers IDE, NetBeans 6 Beta 1 is Out!" /><strong>Smarter code completion.</strong> The NetBeans editor is quicker and smarter, providing completions for keywords, fields, and variables. It also lists the most logical options at the top, and lets you dig down into the full options at the bottom</li>
<li><img src="http://www.netbeans.org/images/screenshots/6.0/hilites3.jpg" alt="screenshot of debugger windows with the Local Variables window fronted" border="1" title="Ruby on Rails Developers IDE, NetBeans 6 Beta 1 is Out!" /><strong>Highlights.</strong> You can think of the highlights feature as an easy-to-use and more correct substitution for the editors Search. The IDE tracks the position of the caret and, based on it, highlights some parts of the code. The highlights are marked with a background color in the editor they are also put into the error stripe, which permits for having overview of the whole file.</li>
<li><strong>Better Navigation and Inspection.</strong> In addition to Highlights, the source editor lets you quickly navigate through your code with improved Navigator window organization and the Members and Hierarchy Inspectors.</li>
<li><strong>More than just code completion.</strong> With live templates and Surround With functionality, you can quickly enter commonly used blocks of code and focus on the business logic.</li>
<li><strong>There is much more.</strong> See the <a href="http://wiki.netbeans.org/wiki/view/Java_EditorUsersGuide" rel="nofollow" >Java Editor User&#8217;s Guide</a>.</li>
</ul>
</blockquote>
<p><strong>Update:</strong> And more from <a href="http://www.rubyinside.com/netbeans-60-beta-1-released-ruby-edition-available-607.html" rel="nofollow" >Peter Cooper of Ruby Inside</a>:</p>
<blockquote><p>NetBeans is a powerful and free. You can create Ruby and Rails projects, run Ruby files, configure interpreters (MRI and JRuby), install Gems graphically, run tests, run RSpecs, debug Ruby code, run Rails apps, and so on, all from the IDE. The Ruby edition is <a href="http://bits.netbeans.org/download/6_0/beta1/latest/" rel="nofollow" >only a 19MB download</a> and it&#8217;s available right now. There are several Ruby related <a href="http://www.netbeans.org/kb/60/flash.html" rel="nofollow" >NetBeans screencasts</a> for the less convinced.</p></blockquote>
<p>Already more than enough evangelizing, I guess&#8230;</p>
<p>Head on to <a href="http://www.netbeans.org/community/releases/60/" rel="nofollow" >NetBeans 6 Release page</a> to find out more and download.</p>


<p>Related posts:<ol><li><a href='http://www.adaruby.com/2009/12/14/netbeans-ide-6-8-released-with-enhanced-ruby-on-rails-support/' rel='bookmark' title='Permanent Link: NetBeans IDE 6.8 Released &#8212; with Enhanced Ruby on Rails Support!'>NetBeans IDE 6.8 Released &#8212; with Enhanced Ruby on Rails Support!</a> <small> NetBeans IDE version 6.8 has been released, Sun Microsystems&#8217;...</small></li>
</ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2007/09/19/ruby-on-rails-developers-ide-netbeans-6-beta-1-is-out/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>A Better Way to GUI Ruby Apps</title>
		<link>http://www.adaruby.com/2007/08/24/a-better-way-to-gui-ruby-apps/</link>
		<comments>http://www.adaruby.com/2007/08/24/a-better-way-to-gui-ruby-apps/#comments</comments>
		<pubDate>Fri, 24 Aug 2007 11:06:02 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Praises]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://adaruby.com/2007/08/24/a-better-way-to-gui-ruby-apps/</guid>
		<description><![CDATA[
			
				
			
		

Profligacy is a JRuby library that makes building Swing Graphical User Interface much easier than with Raw code.  It’s not a builder as with many other projects, but instead a simple Ruby way to structure the UI for the 80% common cases you’ll encounter.
It’s actively used in the Utu iHate client.  iHate started [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F08%2F24%2Fa-better-way-to-gui-ruby-apps%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F08%2F24%2Fa-better-way-to-gui-ruby-apps%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="A Better Way to GUI Ruby Apps" alt=" A Better Way to GUI Ruby Apps" /><br />
			</a>
		</div>
<p><a href="http://www.flickr.com/photos/ameliatzeni/432847516/" rel="nofollow"  title="Ruby on their fingers"><img src="http://farm1.static.flickr.com/147/432847516_28091bd08f.jpg?v=0" height="500" width="375" title="A Better Way to GUI Ruby Apps" alt=" A Better Way to GUI Ruby Apps" /></a></p>
<p><a href="http://ihate.rubyforge.org/profligacy/" rel="nofollow"  title="Profligacy">Profligacy</a> is a JRuby library that makes building <a href="http://java.sun.com/docs/books/tutorial/uiswing/" rel="nofollow" >Swing</a> Graphical User Interface <strong>much</strong> easier than with Raw code.  It’s not a builder as with many other projects, but instead a simple Ruby way to structure the UI for the 80% common cases you’ll encounter.</p>
<p>It’s actively used in the <a href="http://savingtheinternetwithhate.com/" rel="nofollow" >Utu</a> <a href="http://ihate.rubyforge.org/" rel="nofollow" >iHate</a> client.  iHate started as a  RubyCocoa project and then convert to JRuby and Swing.</p>
<p>The purpose of Profligacy is <strong>not</strong> to be a complete way of hiding Swing components from you.  You’ll still be making JButtons and  JLabels, you’ll just be putting them into a Ruby idiomatic code structure that doesn’t make your eyes hemorrhage diarrhea like when you try to code in Java.</p>
<p>The only real innovation in Profligacy is a simpler way to configure a <a href="http://java.sun.com/javase/6/docs/api/javax/swing/GroupLayout.html" rel="nofollow" >GroupLayout</a> using a simple regex/wiki style syntax.  This is a work in progress, but it should make building GUIs much much easier.</p>
<p>Sample code:</p>
<pre>require 'profligacy/swing'
require 'profligacy/lel'

module Test
  include_package 'javax.swing'
  include Profligacy

  layout = "
     [ label_1         | label3      ]
     [ (300,300)*text1 | (150)people ]
     [ &lt;label2         | _           ]
     [ message         | buttons     ]
  "

  ui = Swing::LEL.new(JFrame,layout) do |c,i|
    # nothing here for now
  end

  ui.build(:args =&gt; "Simple LEL Example")
end</pre>
<p>The result:</p>
<p><img src="http://ihate.rubyforge.org/profligacy/images/sample_lel_gui_nested.png" alt="Profligacy" height="397" width="529" title="A Better Way to GUI Ruby Apps" /></p>
<p>TADA! <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' title="A Better Way to GUI Ruby Apps" /> </p>
<p>No fluff required.</p>
<p>Profligacy is really easy to use, but you should still be referring to the Swing™ docs to learn how to actually use the components.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2007/08/24/a-better-way-to-gui-ruby-apps/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SVK Quick Start Guide</title>
		<link>http://www.adaruby.com/2007/08/22/svk-quick-start/</link>
		<comments>http://www.adaruby.com/2007/08/22/svk-quick-start/#comments</comments>
		<pubDate>Wed, 22 Aug 2007 16:39:36 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[Indonesia]]></category>
		<category><![CDATA[Praises]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://adaruby.com/2007/08/22/svk-quick-start/</guid>
		<description><![CDATA[
			
				
			
		
Some people asked me about SVK so here it is. Quickly written because I am a bit lazy and sleepy right now.
SVK is a distributed version control system. In other words, it allows you to mirror a Subversion repository, have local commits, pull changes from upstream, and synchronize/merge it back to the remote Subversion server [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F08%2F22%2Fsvk-quick-start%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F08%2F22%2Fsvk-quick-start%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="SVK Quick Start Guide" alt=" SVK Quick Start Guide" /><br />
			</a>
		</div>
<p>Some people asked me about SVK so here it is. Quickly written because I am a bit lazy and sleepy right now.</p>
<p><a href="http://svk.bestpractical.com/" title="http://svk.bestpractical.com/" rel="nofollow">SVK</a> is a distributed version control system. In other words, it allows you to mirror a Subversion repository, have local commits, pull changes from upstream, and synchronize/merge it back to the remote Subversion server if you want.</p>
<p><strong>English version</strong></p>
<p><strong>UPDATE:</strong> This is an <em>outdated version</em>. The most up-to-date version with newer tips and tricks is in <a href="http://wiki.ruby-id.web.id/wiki/SVK" rel="nofollow"  title="SVK version control system">wiki Ruby Indonesia: SVK</a>, which unfortunately is only available in Indonesian. <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' title="SVK Quick Start Guide" /> </p>
<p><strong>Method 1: Use Subversion repository, but SVK working copy</strong></p>
<p>Assumptions:</p>
<ul>
<li> Subversion repository remote: http://svn.example.com/try/</li>
<li> SVK depot: /try/</li>
</ul>
<pre>svk depot try ~/.svk/try
svk mirror /try/remote http://svn.example.com/try/
svk sync /try/remote
svk cp /try/remote /try/local</pre>
<p>Checkout &amp; working copy:</p>
<pre>svk co /try/local/trunk</pre>
<p>Commit:</p>
<pre>svk ci</pre>
<p>Push: (merge to remote)</p>
<pre>svk push</pre>
<p>Pull: (merge from remote to local)</p>
<pre>svk pull</pre>
<p><strong>Method 2: Use remote Subversion repository, local Subversion repository, and SVK to merge between those repositories </strong></p>
<p>The advantage of this approach is that you can use usual Subversion tools (<a href="http://tortoisesvn.tigris.org/" title="http://tortoisesvn.tigris.org/" rel="nofollow">TortoiseSVN</a>, or native utility from <a href="http://www.aptana.com/" title="http://www.aptana.com/" rel="nofollow">Aptana IDE</a>, <a href="http://www.netbeans.org/" title="http://www.netbeans.org/" rel="nofollow">NetBeans</a>, etc.)</p>
<p>Assumptions:</p>
<ul>
<li> Subversion repository remote: http://svn.example.com/try/</li>
<li> Subversion repository local: http://svn.mycomputer/try/</li>
<li> SVK depot: /try/</li>
</ul>
<pre>svk depot try ~/.svk/try
svk mirror /try/remote http://svn.example.com/try/
svk sync /try/remote
svk mirror /try/localsvn http://svn.mycomputer/try/
svk sync /try/localsvn
svk smerge /try/remote /try/localsvn</pre>
<p>Checkout &amp; working copy:</p>
<pre>svn co http://svn.mycomputer/try/trunk/</pre>
<p>Commit:</p>
<pre>svn ci</pre>
<p>Push: (merge to remote)</p>
<pre>svk sync /try/localsvn
svk sync /try/remote
svk smerge /try/localsvn /try/remote</pre>
<p>Pull: (merge from remote to local)</p>
<pre>svk sync /try/localsvn
svk sync /try/remote
svk smerge /try/remote /try/localsvn</pre>
<p><strong>Tip: Moving local Subversion repository history to remote Subversion server</strong></p>
<p>Assumptions:</p>
<ul>
<li> Subversion repository remote (<strong>still empty</strong>): http://svn.example.com/try/</li>
<li> Subversion repository local (<strong>has history</strong>): http://svn.mycomputer/try/</li>
<li> SVK depot: /try/</li>
</ul>
<p>In short:</p>
<pre>svk depot try ~/.svk/try
svk mirror /try/remote http://svn.example.com/try/
svk sync /try/remote
svk mirror /try/localsvn http://svn.mycomputer/try/
svk sync /try/localsvn
svk smerge --incremental --log --baseless /try/localsvn /try/remote</pre>
<p><strong>Versi Indonesia</strong></p>
<p><strong>UPDATE:</strong> Versi ini sudah <em>out-of-date</em>. Versi paling up-to-date dengan tips-tips tambahan dan edisi revisi ada di <a href="http://wiki.ruby-id.web.id/wiki/SVK" rel="nofollow"  title="SVK version control system">wiki Ruby Indonesia: SVK</a>.</p>
<p><!-- start content --><a href="http://svk.bestpractical.com/" title="http://svk.bestpractical.com/" rel="nofollow">SVK</a> adalah sistem version control terdistribusi.</p>
<p><strong>Cara 1: Pake Subversion repository, SVK working copy</strong></p>
<p>Asumsi:</p>
<ul>
<li> Subversion repository remote: <a href="http://svn.example.com/coba/" title="http://svn.example.com/coba/" rel="nofollow">http://svn.example.com/coba/</a></li>
<li> SVK depot: /coba/</li>
</ul>
<pre>svk depot coba ~/.svk/coba
svk mirror /coba/remote http://svn.example.com/coba/
svk sync /coba/remote
svk cp /coba/remote /coba/local</pre>
<p>Checkout &amp; working copy:</p>
<pre>svk co /coba/local/trunk</pre>
<p>Commit:</p>
<pre>svk ci</pre>
<p>Push: (merge ke remote)</p>
<pre>svk push</pre>
<p>Pull: (merge dari remote ke local)</p>
<pre>svk pull</pre>
<p><strong>Cara 2: Pake Subversion repository remote, Subversion repository local, dan SVK untuk merge</strong></p>
<p>Kelebihan dari cara ini adalah Anda bisa menggunakan tools Subversion seperti biasanya (<a href="http://tortoisesvn.tigris.org/" title="http://tortoisesvn.tigris.org/" rel="nofollow">TortoiseSVN</a>, maupun native utility dari <a href="http://www.aptana.com/" title="http://www.aptana.com/" rel="nofollow">Aptana IDE</a>, <a href="http://www.netbeans.org/" title="http://www.netbeans.org/" rel="nofollow">NetBeans</a>, dsb.)</p>
<p>Asumsi:</p>
<ul>
<li> Subversion repository remote: <a href="http://svn.example.com/coba/" title="http://svn.example.com/coba/" rel="nofollow">http://svn.example.com/coba/</a></li>
<li> Subversion repository local: <a href="http://svn.mycomputer/coba/" title="http://svn.mycomputer/coba/" rel="nofollow">http://svn.mycomputer/coba/</a></li>
<li> SVK depot: /coba/</li>
</ul>
<pre>svk depot coba ~/.svk/coba
svk mirror /coba/remote http://svn.example.com/coba/
svk sync /coba/remote
svk mirror /coba/localsvn http://svn.mycomputer/coba/
svk sync /coba/localsvn
svk smerge /coba/remote /coba/localsvn</pre>
<p>Checkout &amp; working copy:</p>
<pre>svn co http://svn.mycomputer/coba/trunk/</pre>
<p>Commit:</p>
<pre>svn ci</pre>
<p>Push: (merge ke remote)</p>
<pre>svk sync /coba/localsvn

svk sync /coba/remote

svk smerge /coba/localsvn /coba/remote</pre>
<p>Pull: (merge dari remote ke local)</p>
<pre>svk sync /coba/localsvn
svk sync /coba/remote
svk smerge /coba/remote /coba/localsvn</pre>
<p><strong>Tip: Mindahin history Subversion local ke remote </strong></p>
<p>Ini pertanyaan dari Marcel.</p>
<p>Asumsi:</p>
<ul>
<li> Subversion repository remote (<strong>masih kosong</strong>): <a href="http://svn.example.com/coba/" title="http://svn.example.com/coba/" rel="nofollow">http://svn.example.com/coba/</a></li>
<li> Subversion repository local (<strong>sudah berisi</strong>): <a href="http://svn.mycomputer/coba/" title="http://svn.mycomputer/coba/" rel="nofollow">http://svn.mycomputer/coba/</a></li>
<li> SVK depot: /coba/</li>
</ul>
<p>So singkatnya:</p>
<pre>svk depot coba ~/.svk/coba
svk mirror /coba/remote http://svn.example.com/coba/
svk sync /coba/remote
svk mirror /coba/localsvn http://svn.mycomputer/coba/
svk sync /coba/localsvn
svk smerge --incremental --log --baseless /coba/localsvn /coba/remote</pre>
<p><strong>Credits</strong></p>
<p>Thanks buat <a href="http://wiki.ruby-id.web.id/wiki?title=Marcel&amp;action=edit" rel="nofollow"  title="Marcel">Marcel</a> (<a href="mailto:mgozali@yahoo.com" title="mailto:mgozali@yahoo.com" rel="nofollow">[1]</a>) yang sudah menyumbang pertanyaan yang akhirnya membuat saya menulis artikel ini. Trims. &#8211;<a href="http://wiki.ruby-id.web.id/wiki/Pengguna:Ceefour" rel="nofollow"  title="Ceefour">Ceefour</a> 11:23, 22 Agustus 2007 (CDT)</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2007/08/22/svk-quick-start/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Deploying Joomla using Capistrano 2.0</title>
		<link>http://www.adaruby.com/2007/08/14/deploying-joomla-using-capistrano-20/</link>
		<comments>http://www.adaruby.com/2007/08/14/deploying-joomla-using-capistrano-20/#comments</comments>
		<pubDate>Tue, 14 Aug 2007 17:17:36 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[Indonesia]]></category>
		<category><![CDATA[Praises]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://adaruby.com/2007/08/14/deploying-joomla-using-capistrano-20/</guid>
		<description><![CDATA[
			
				
			
		
Who said Capistrano is for Ruby on Rails only?

That&#8217;s probably the major tagline of the whole Capistrano 2.0 saga. You can use it to deploy PHP, Django, or not doing any deployment at all. Let me demonstrate, this time using Joomla:
Capistrano adalah library/tool yang digunakan untuk meng-online-kan aplikasi Ruby on Rails, tapi bisa juga digunakan [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F08%2F14%2Fdeploying-joomla-using-capistrano-20%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F08%2F14%2Fdeploying-joomla-using-capistrano-20%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="Deploying Joomla using Capistrano 2.0" alt=" Deploying Joomla using Capistrano 2.0" /><br />
			</a>
		</div>
<p>Who said <a href="http://capify.org/" rel="nofollow"  title="Capistrano">Capistrano</a> is for <a href="http://www.rubyonrails.org/" rel="nofollow" >Ruby on Rails</a> only?</p>
<p><a href="http://www.flickr.com/photos/dollen/429429873/" rel="nofollow"  title="Future girl"><img src="http://farm1.static.flickr.com/186/429429873_b772b96890.jpg?v=0" height="349" width="500" title="Deploying Joomla using Capistrano 2.0" alt=" Deploying Joomla using Capistrano 2.0" /></a></p>
<p>That&#8217;s probably the major tagline of the whole <a href="http://www.rubyinside.com/capistrano-20-flexible-automated-deployment-system-541.html" rel="nofollow" >Capistrano 2.0</a> saga. You <em>can</em> use it to deploy PHP, Django, or not doing any deployment at all. Let me demonstrate, this time using <a href="http://www.joomla.org/" rel="nofollow"  title="Joomla CMS for PHP">Joomla</a>:</p>
<p><a href="http://capify.org/" rel="nofollow"  title="Capistrano deployment">Capistrano</a> adalah library/tool yang digunakan untuk meng-online-kan aplikasi <a href="http://www.rubyonrails.org/" rel="nofollow"  title="Ruby on Rails framework">Ruby on Rails</a>, tapi bisa juga digunakan untuk aplikasi PHP, misalnya <a href="http://www.joomla.org/" rel="nofollow"  title="Joomla Content Management System for PHP">Joomla</a>:</p>
<pre>ceefour@ojalanow:~/project/layout_mania/trunk$ cap deploy
  * executing `deploy'
  * executing `deploy:update'
 ** transaction: start
  * executing `deploy:update_code'
  * executing "svn checkout -q --username ceefour --no-auth-cache -r11 http://tools.assembla.com/svn/layout_mania/trunk /home/rainbow/apps/layout_mania/releases/20070814160555 &amp;&amp; (echo 11 &gt; /home/rainbow/apps/layout_mania/releases/20070814160555/REVISION)"
    servers: ["rainbowpurple.com"]
    [rainbowpurple.com] executing command
    command finished
  * executing `deploy:finalize_update'
  * executing "chmod -R g+w /home/rainbow/apps/layout_mania/releases/20070814160555"
    servers: ["rainbowpurple.com"]
    [rainbowpurple.com] executing command
    command finished
    triggering after callbacks for `deploy:finalize_update'
  * executing `deploy:symlink_secret'
  * executing "ln -s /home/rainbow/apps/layout_mania/secret /home/rainbow/apps/layout_mania/releases/20070814160555/secret"
    servers: ["rainbowpurple.com"]
    [rainbowpurple.com] executing command
    command finished
  * executing `deploy:use_live_configuration'
  * executing "cp -f /home/rainbow/apps/layout_mania/releases/20070814160555/joomla/configuration.php.live /home/rainbow/apps/layout_mania/releases/20070814160555/joomla/configuration.php"
    servers: ["rainbowpurple.com"]
    [rainbowpurple.com] executing command
    command finished
  * executing `deploy:symlink_cache'
  * executing "rm -rf /home/rainbow/apps/layout_mania/releases/20070814160555/joomla/cache &amp;&amp; ln -s /home/rainbow/apps/layout_mania/shared/cache /home/rainbow/apps/layout_mania/releases/20070814160555/joomla/cache"
    servers: ["rainbowpurple.com"]
    [rainbowpurple.com] executing command
    command finished
  * executing `deploy:symlink'
  * executing "rm -f /home/rainbow/apps/layout_mania/current &amp;&amp; ln -s /home/rainbow/apps/layout_mania/releases/20070814160555 /home/rainbow/apps/layout_mania/current"
    servers: ["rainbowpurple.com"]
    [rainbowpurple.com] executing command
    command finished
 ** transaction: commit
  * executing `deploy:restart'</pre>
<p>The result? <a href="http://layout-mania.humblia.com/" rel="nofollow"  title="Layouts for Friendster, MySpace, Facebook, Imeem, Multiply">layout-mania.humblia.com.</a> Below is the source code of deploy/config.rb used to deploy this Joomla app.</p>
<p>Hasilnya? <a href="http://layout-mania.humblia.com/" rel="nofollow"  title="Layouts for Friendster, MySpace, Facebook, Imeem, Multiply">layout-mania.humblia.com</a>. Di bawah ini adalah <em>source code</em> dari file konfigurasi Capistrano deploy/config.rb yang digunakan untuk aplikasi ini.</p>
<pre>set :application, "layout_mania"
set :repository,  "http://tools.assembla.com/svn/layout_mania/trunk"

# If you aren't deploying to /u/apps/#{application} on the target
# servers (which is the default), you can specify the actual location
# via the :deploy_to variable:
set :deploy_to, "/home/rainbow/apps/#{application}"
set :user, "rainbow"
set :scm_username, 'ceefour'
set :use_sudo, false
set :cache_path, "#{shared_path}/cache"
set :media_path, "#{shared_path}/media"

# If you aren't using Subversion to manage your source code, specify
# your SCM below:
# set :scm, :subversion

role :app, "rainbowpurple.com"
role :web, "rainbowpurple.com"
role :db,  "rainbowpurple.com", :primary =&gt; true

after 'deploy:finalize_update', 'deploy:symlink_secret'
after 'deploy:finalize_update', 'deploy:use_live_configuration'
after 'deploy:finalize_update', 'deploy:symlink_cache'

namespace :deploy do

  # Overwritten to provide flexibility for people who aren't using Rails.
  task :setup, :except =&gt; { :no_release =&gt; true } do
    dirs = [deploy_to, releases_path, shared_path, cache_path, media_path]
    dirs += %w(system).map { |d| File.join(shared_path, d) }
    run "umask 02 &amp;&amp; mkdir -p #{dirs.join(' ')}"
  end

  # Also overwritten to remove Rails-specific code.
  task :finalize_update, :except =&gt; { :no_release =&gt; true } do
    run "chmod -R g+w #{release_path}" if fetch(:group_writable, true)
  end

  # Each of the following tasks are Rails specific. They're removed.
  task :migrate do
  end

  task :migrations do
  end

  task :cold do
  end

  task :start do
  end

  task :stop do
  end

  # Do nothing (To restart apache, run 'cap deploy:apache:restart')
  task :restart do
  end

  task :use_live_configuration, :roles =&gt; :app do
    run "cp -f #{release_path}/joomla/configuration.php.live #{release_path}/joomla/configuration.php"
  end

  task :symlink_cache, :roles =&gt; :app do
    run "rm -rf #{release_path}/joomla/cache &amp;&amp; ln -s #{cache_path} #{release_path}/joomla/cache"
  end
  task :symlink_secret, :roles =&gt; :app do
    run "ln -s #{deploy_to}/secret #{release_path}/secret"
  end

end

namespace :db do

  desc "Overwrite the remote database with local database."
  task :push_force, :roles =&gt; :db do
    system "mysqldump --opt rainbow_layoutmania | bzip2 &gt; /tmp/rainbow_layoutmania.sql.bz2"
    system "rsync -vPa /tmp/rainbow_layoutmania.sql.bz2 rainbowpurple.com:tmp/"
    run "bunzip2 -dc /home/rainbow/tmp/rainbow_layoutmania.sql.bz2 | mysql -u rainbow_layoutma -p`cat #{deploy_to}/secret/db_password` rainbow_layoutmania"
    run "rm -f /home/rainbow/tmp/rainbow_layoutmania.sql.bz2"
    system "rm -f /tmp/rainbow_layoutmania.sql.bz2"
  end

  desc "Optimize remote database."
  task <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' title="Deploying Joomla using Capistrano 2.0" /> ptimize, :roles =&gt; :db do
    run "mysqlcheck --analyze --repair --optimize --user=rainbow_layoutma --password=`cat #{deploy_to}/secret/db_password` rainbow_layoutmania"
  end

end</pre>
<p>Interested? Unfortunately this isn&#8217;t a tutorial. Look more on the resources below:</p>
<p>Tertarik? Sayang sekali ini bukan tutorial, coba cari informasi lebih lanjut di:</p>
<ul>
<li><a href="http://capify.org/" rel="nofollow"  title="Capistrano 2.0 deployment">Capistrano 2.0 official site</a></li>
<li><a href="http://capify.stikipad.com/wiki/" rel="nofollow"  title="Capistrano / Capify Wiki">Capistrano Wiki</a></li>
<li><a href="http://devthatweb.com/view/deploy-any-project-using-capistrano-2" rel="nofollow" >Deploy any project using Capistrano 2</a></li>
<li><a href="http://devthatweb.com/view/automate-the-deployment-of-any-php-project-using-capistrano" rel="nofollow" >Automate the deployment of any PHP project using Capistrano 2.0</a></li>
<li><a href="http://weblog.jamisbuck.org/" rel="nofollow"  title="Jamis Buck aka Capistrano Man">Jamis Buck&#8217;s blog</a> (creator, lead developer, and chief inventor of Capistrano <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' title="Deploying Joomla using Capistrano 2.0" />  )</li>
<li><a href="http://safari.oreilly.com/0596529627" rel="nofollow"  title="Capistrano book from O'Reilly">Capistrano and the Rails Application Lifecycle</a> book from O&#8217;Reilly</li>
</ul>
<p><em>Note:</em> Sorry for dual-language posting, any better suggestion? <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' title="Deploying Joomla using Capistrano 2.0" /> </p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2007/08/14/deploying-joomla-using-capistrano-20/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Twitter API, Gampang Koq :))</title>
		<link>http://www.adaruby.com/2007/08/10/twitter-api-gampang-koq/</link>
		<comments>http://www.adaruby.com/2007/08/10/twitter-api-gampang-koq/#comments</comments>
		<pubDate>Sat, 11 Aug 2007 02:16:53 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[Friends]]></category>
		<category><![CDATA[Indonesia]]></category>
		<category><![CDATA[Opinions]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Praises]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://adaruby.com/2007/08/10/twitter-api-gampang-koq/</guid>
		<description><![CDATA[
			
				
			
		
Tau gak twitter tuh punya API

Ini contoh penggunaannya:
ceefour@ojalanow:~/bin$ salsabeela 'untuk sekarang enak gini'
Sending salsabeela 'untuk sekarang enak gini' '.... OK!
ceefour@ojalanow:~/bin$ salsabeela 'gak perlu mandi tiap hari  '
Sending salsabeela 'gak perlu mandi tiap hari  '.... OK!
ceefour@ojalanow:~/bin$ cat salsabeela
#!/usr/bin/ruby
require "#{File.dirname(__FILE__)}/twitter_pm"
send_pm 'salsabeela', ARGV.join(' ')

isi twitter_pm.rb :
ceefour@ojalanow:~/bin$ cat twitter_pm.rb
require 'rubygems'
gem 'twitter4r', '&#62;=0.2.0'
require 'twitter'
def send_pm(recipient_id, message)
t = Twitter::Client.new(:login [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F08%2F10%2Ftwitter-api-gampang-koq%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F08%2F10%2Ftwitter-api-gampang-koq%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="Twitter API, Gampang Koq :))" alt=" Twitter API, Gampang Koq :))" /><br />
			</a>
		</div>
<p>Tau gak <a href="http://www.twitter.com/" rel="nofollow"  title="Twitter">twitter</a> tuh punya API</p>
<p><a href="http://www.flickr.com/photos/thestatusjoe/624140974/" rel="nofollow"  title="Twittervision"><img src="http://farm2.static.flickr.com/1137/624140974_42d87f9140.jpg?v=0" alt="Twittervision" height="373" width="500" title="Twitter API, Gampang Koq :))" /></a></p>
<p>Ini contoh penggunaannya:</p>
<p><tt>ceefour@ojalanow:~/bin$ salsabeela 'untuk sekarang enak gini'<br />
Sending salsabeela 'untuk sekarang enak gini' '.... OK!<br />
ceefour@ojalanow:~/bin$ salsabeela 'gak perlu mandi tiap hari <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' title="Twitter API, Gampang Koq :))" /> '<br />
Sending salsabeela 'gak perlu mandi tiap hari <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' title="Twitter API, Gampang Koq :))" /> '.... OK!<br />
ceefour@ojalanow:~/bin$ cat salsabeela<br />
#!/usr/bin/ruby<br />
require "#{File.dirname(__FILE__)}/twitter_pm"<br />
send_pm 'salsabeela', ARGV.join(' ')<br />
</tt><br />
isi twitter_pm.rb :</p>
<p><tt>ceefour@ojalanow:~/bin$ cat twitter_pm.rb<br />
require 'rubygems'<br />
gem 'twitter4r', '&gt;=0.2.0'<br />
require 'twitter'</tt></p>
<p><tt>def send_pm(recipient_id, message)<br />
t = Twitter::Client.new(:login =&gt; 'gauldong@gmail.com', :password =&gt; ****************)<br />
message = ARGV.join(' ')<br />
sent = false<br />
begin<br />
recipient = t.user(recipient_id)<br />
rescue<br />
raise("Cannot find user #{recipient_username}")<br />
end<br />
print "Sending #{recipient.screen_name} '#{message}'"<br />
$stdout.flush<br />
sending = Thread.new { t.message(:post, message, recipient); sent= true; }<br />
status = Thread.new { until sent; print '.'; sleep(0.5); $stdout.flush; end }<br />
sending.join<br />
status.join<br />
puts ' OK!'<br />
end<br />
</tt></p>
<p><a href="http://www.flickr.com/photos/36-degrees/502369514/" rel="nofollow"  title="Twittervision"><img src="http://farm1.static.flickr.com/211/502369514_dbe8f830ec.jpg?v=0" alt="Twittervision" height="375" width="500" title="Twitter API, Gampang Koq :))" /></a></p>
<p>ato gini :</p>
<p><tt>ceefour@ojalanow:~/bin$ irb -rubygems<br />
irb(main):001:0&gt; gem 'twitter4r'<br />
=&gt; true<br />
irb(main):002:0&gt; require 'twitter'<br />
=&gt; true<br />
irb(main):003:0&gt; t = Twitter::Client.new(:login =&gt; 'gauldong@gmail.com', :password =&gt; ****************)<br />
=&gt; #&lt;Twitter::Client:0xb773d658 @login="gauldong@gmail.com", @password=****************&gt;<br />
irb(main):004:0&gt; ollie = t.user('salsabeela')<br />
=&gt; #&lt;Twitter::User:0xb7738090 @protected=false, @id=7296272, @profile_image_url="http://assets2.twitter.com/system/user/profile_image/7296272/normal/profileollie.jpg?1183741074", @client=#&lt;Twitter::Client:0xb773d658 @login="gauldong@gmail.com", @password=****************&gt;, @screen_name="salsabeela", @description="What I learn today...", @url="http://blog.salsabeela.com", @location="Jakarta", @name="Ollie"&gt;<br />
irb(main):013:0* for f in ollie.friends; puts f.screen_name; end<br />
popurls<br />
al3x<br />
davewiner<br />
bbcnews<br />
detikcom<br />
ceefour<br />
confession<br />
21c<br />
hotdogsladies<br />
OpinionJournal<br />
cnnbrk<br />
avianto<br />
thomasarie<br />
jenniesbev<br />
twittown<br />
notstevenwright<br />
farry<br />
dhewlett<br />
mbot<br />
kukuhtw<br />
BarackObama<br />
jafrane<br />
javajive<br />
budip<br />
istribawel<br />
enda<br />
timer<br />
Indonesia<br />
unwinged<br />
</tt><br />
lucu kan? =))</p>
<p>thanks to <a href="http://susanpotter.net/" rel="nofollow"  title="Susan Potter">Susan Potter</a> for <a href="http://snakesgemscoffee.blogspot.com/2007/08/higher-leve-bdd-specing-using-rbehave.html" rel="nofollow" >making</a> <a href="http://twitter4r.rubyforge.org/" rel="nofollow"  title="Twitter4r Rubygem">twitter4r</a> gem <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' title="Twitter API, Gampang Koq :))" /> </p>
<p>PS: Twitter tuh apaan sich?!?!? =))</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2007/08/10/twitter-api-gampang-koq/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
