<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
 
 <title>Davis Cabral at GitHub</title>
 
 <link href="http://daviscabral.github.com/daviscabral.github.com/" />
 <updated>2009-07-03T01:05:06-07:00</updated>
 <id>http://daviscabral.github.com/daviscabral.github.com/</id>
 <author>
   <name>Davis Zanetti Cabral</name>
   <email>daviscabral@gmail.com</email>
 </author>

 
 <link rel="self" href="http://feeds.feedburner.com/ImpactBlog" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
   <title>IRC, HEAD instead GET and const_missing</title>
   <link href="http://feedproxy.google.com/~r/ImpactBlog/~3/eM8pY1jG87Y/HEAD-instead-GET.html" />
   <updated>2009-07-03T00:00:00-07:00</updated>
   <id>http://daviscabral.github.com//2009/07/03/HEAD-instead-GET</id>
   <content type="html">&lt;p&gt;Today I started use &lt;span class="caps"&gt;IRC&lt;/span&gt; again, and joined only 2 channels for now: #ruby and #rails. The network is &lt;a href="http://freenode.net"&gt;freenode.net&lt;/a&gt;, and my nickname is my name, daviscabral :)&lt;/p&gt;


	&lt;p&gt;Well, ruby is not my speciality, and I think I should study more and read more about, like Web, &lt;span class="caps"&gt;HTTP&lt;/span&gt; protocol, etc. &lt;span class="caps"&gt;IRC&lt;/span&gt; is a good place to see all kind of doubts and answer as you can, if you can.&lt;/p&gt;


	&lt;h3&gt;&lt;span class="caps"&gt;GET&lt;/span&gt;? No, your fu&lt;strong&gt;*&lt;/strong&gt;ng idiot! Use &lt;span class="caps"&gt;HEAD&lt;/span&gt;!&lt;/h3&gt;


	&lt;p&gt;Well, there I knew a man from Portugal, with a doubt about test if a page exist without get all content. Until that momment, I just imagined one way, &lt;span class="caps"&gt;GET&lt;/span&gt; requests, but this always return all the page body (and this makes senses, was my original request).&lt;/p&gt;


	&lt;p&gt;In my humble ignorance, I asked about the process, if he already tried with Net::HTTP, OpenURI, and started search more about to know what can be done to help &amp;#8211; the best way to learn, is solving problems &amp;#8211; and if you don&amp;#8217;t have problems, call me, I&amp;#8217;ll give you a box full of them.&lt;/p&gt;


	&lt;p&gt;So, a few minutes later, after ate a pizza, a very nice guy from #ruby, send something like: &amp;#8220;good lord, noobs &amp;#8211; just use &lt;span class="caps"&gt;HEAD&lt;/span&gt; instead &lt;span class="caps"&gt;GET&lt;/span&gt;&amp;#8221;. (pause) (breath) Ok, I agree, #FAIL, a big lapse here. I felt like a Home Simpson. But is done :)&lt;/p&gt;


	&lt;p&gt;Bellow the code that I used to test this:&lt;/p&gt;


	&lt;h4&gt;Net::HTTP &amp;#8211; Intro how to test if a page exists&lt;/h4&gt;


&lt;div class="highlight"&gt;&lt;pre&gt;  &lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;net/https&amp;#39;&lt;/span&gt;

  &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;URI&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;http://www.google.com.br/&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Net&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;HTTP&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;start&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;head&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;

	&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


	&lt;h3&gt;const_missing &amp;#8211; Auto loading feature&lt;/h3&gt;


	&lt;p&gt;Some time before the scene above, other guy showed a code with a problem related with const_missing call. I didn&amp;#8217;t know about it, and looked directly in the api doc and google. Was a small fix there to do work, but the main code idea almost working is bellow.&lt;/p&gt;


	&lt;h4&gt;test.rb&lt;/h4&gt;


&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;Test&lt;/span&gt;
    &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Core&lt;/span&gt;
        &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="no"&gt;Test&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Foo&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Bar&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Bla&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;process&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="k"&gt;end&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;

    &lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;Foo&lt;/span&gt;
        &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nc"&gt;Foo&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;const_missing&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="c1"&gt;# look in the core folder for autoloading the file&lt;/span&gt;
            &lt;span class="no"&gt;File&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;./autoload.log&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;w&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Autoloading &amp;#39;&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="n"&gt;str_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_s&lt;/span&gt;
            &lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;core/&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;str_name&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;downcase&lt;/span&gt;
            &lt;span class="n"&gt;klass&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;const_get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;klass&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;klass&lt;/span&gt;
            &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Class not found: &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
        &lt;span class="k"&gt;end&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;

	&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


	&lt;h5&gt;foo/bla.rb&lt;/h5&gt;


&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;Test&lt;/span&gt;
  &lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;Foo&lt;/span&gt;
    &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Bla&lt;/span&gt;
      &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;initialize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="k"&gt;end&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;

	&lt;p&gt;Well, that&amp;#8217;s all for now.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ImpactBlog/~4/eM8pY1jG87Y" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://daviscabral.github.com//2009/07/03/HEAD-instead-GET.html</feedburner:origLink></entry>
 
 <entry>
   <title>Moving forward</title>
   <link href="http://feedproxy.google.com/~r/ImpactBlog/~3/kJDm5KB59JM/moving-forward.html" />
   <updated>2009-06-30T00:00:00-07:00</updated>
   <id>http://daviscabral.github.com//2009/06/30/moving-forward</id>
   <content type="html">&lt;p&gt;Well, wrinting some stuff again&amp;#8230; After a while away, I&amp;#8217;ll came back soon with more projects and papers, I hope. For now, just an update to log my decision: write more open source codes!&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m writing now a kind of game using GitHub &lt;span class="caps"&gt;API&lt;/span&gt; and some other stuff. Should be simple, but nice to play with haml and sphinx. Need improve my knowledge about it right now.&lt;/p&gt;


	&lt;p&gt;Keep (moon)walking ;)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ImpactBlog/~4/kJDm5KB59JM" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://daviscabral.github.com//2009/06/30/moving-forward.html</feedburner:origLink></entry>
 
 <entry>
   <title>First post!</title>
   <link href="http://feedproxy.google.com/~r/ImpactBlog/~3/ZtR4vcGYY04/first-post.html" />
   <updated>2009-05-11T00:00:00-07:00</updated>
   <id>http://daviscabral.github.com//2009/05/11/first-post</id>
   <content type="html">&lt;p&gt;Here is my space to talk about my personal open source projects hosted in the awesome GitHub! :-)
My main idea with this blog is give a chance to document and discuss the features and ideas for many future projects.&lt;/p&gt;


	&lt;p&gt;Keep in touch!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ImpactBlog/~4/ZtR4vcGYY04" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://daviscabral.github.com//2009/05/11/first-post.html</feedburner:origLink></entry>
 
 
</feed>
