<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>views/atom.haml</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,7 +1,10 @@
-require 'hotruby'
-
+require 'rubygems'
+require 'sinatra'
 Sinatra::Application.default_options.merge!(
   :run =&gt; false,
   :env =&gt; ENV['RACK_ENV']
 )
+
+require 'hotruby'
+
 run Sinatra.application
\ No newline at end of file</diff>
      <filename>config.ru</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-%w(rubygems sinatra haml hpricot).each{|lib| require lib}
+%w(rubygems sinatra haml hpricot springnote).each{|lib| require lib}
 
 before do
   @springnote = SpringnoteStore.new
@@ -9,6 +9,13 @@ get '/' do
   haml :index
 end
 
+get '/items.atom' do
+  header 'Content-Type' =&gt; 'application/atom+xml; charset=utf-8'
+  
+  @items = @springnote.items(1)[1..-1]
+  haml :atom, :layout =&gt; false
+end
+
 get '/items/:pid/:itemid' do
   @item = @springnote.item_by_id(params[:pid])
   @contents = Hpricot(@item.source.to_s).search(&quot;#item_#{params[:itemid]}&quot;).html
@@ -30,128 +37,4 @@ helpers do
   def sidebar
     @springnote.sidebar.source.to_s rescue &quot;&quot;
   end
-  
-end
-
-
-%w(springnote_client).each{|lib| require lib}
-
-class SpringnoteStore
-  APP_KEY = 'a7501dcb75519aec11a7049e62e3a0f533c265bb'
-  ITEM_PER_PAGE = 7
-  
-  def initialize
-    @note = Springnote(config('note_name'), :app_key =&gt; APP_KEY, :user_openid =&gt; config('user_openid'), :user_key =&gt; config('user_key'))
-  end
-
-  ##############################
-  #### Public Methods
-
-  def sidebar
-    meta_page config('side_page')
-  end
-  
-  def item_by_id(pid)
-    @note.pages.find(pid)
-  end
-    
-  def items(page = 1)
-    s = (page-1)*ITEM_PER_PAGE
-    e = s + ITEM_PER_PAGE
-    pids = index_array[s...e].map{|v| v[1].to_i}.uniq
-    [*@note.pages.find(*pids)].sort{|x, y| y.title &lt;=&gt; x.title}
-  end
-  
-  def write(name, homepage, contents)
-    target = today_page
-    
-    target.source = item_html(name, homepage, contents, target) + target.source.to_s
-    target.save
-  end
-  
-protected
-
-  ##############################
-  #### Config
-
-  def self.config
-    @config ||= YAML.load(File.read(File.dirname(__FILE__) + '/springnote.yml'))
-  end
-  
-  def config(key)
-    self.class.config[key]
-  end  
-  
-  ##############################
-  ### Meta Pages
-  
-  def meta_pages
-    @meta_pages ||= @note.pages.find(config('side_page'), config('index_page'))
-  end
-  
-  def meta_page(pid)
-    meta_pages.select{|page| page.identifier == pid}[0]
-  end
-  
-  def index_array
-    indexes.to_a.sort{|x, y| y[0] &lt;=&gt; x[0]}
-  end
-  
-  def indexes
-    return @indexes if @indexes
-    
-    @indexes = {}
-    meta_page(config('index_page')).source.to_s.
-      scan(/&lt;li&gt;.*?&lt;a.*?href=\&quot;\/pages\/(\d+)\&quot;.*?&gt;(.*?)&lt;\/a&gt;.*?&lt;\/li&gt;/mi).
-      map do |m|
-        @indexes[m[1].to_s] = m[0].to_i
-      end
-          
-    @indexes
-  end
-  
-  def update_index
-    cont = index_array.map do |v|
-      %Q[&lt;li&gt;&lt;a href=&quot;/pages/#{v[1]}&quot;&gt;#{v[0]}&lt;/a&gt;]
-    end.join(&quot;\n&quot;)
-            
-    page = meta_page(config('index_page'))
-    page.source = &quot;&lt;ul&gt;#{cont}&lt;/ul&gt;&quot;
-    page.save
-  end
-  
-  
-  ##############################
-  ### Contents Pages
-  
-  def today_page
-    key = Time.now.strftime('%Y-%m-%d')
-    (indexes[key] &amp;&amp; @note.pages.find(indexes[key])) || create_page(key)
-  end
-  
-  def create_page(key)
-    page = @note.pages.build(:title =&gt; key, :relation_is_part_of =&gt; config('index_page'))
-    page.save
-    
-    @indexes[key] = page.identifier
-    update_index
-    
-    page
-  end
-  
-  def item_html(name, homepage, contents, target)
-    now = Time.now
-    idstr = now.to_i.to_s
-    permlink = &quot;/items/#{target.identifier}/#{idstr}&quot;
-    
-    &lt;&lt;-END
-      &lt;div id=&quot;item_#{idstr}&quot; class=&quot;item_container&quot;&gt;
-        &lt;div class=&quot;item_body&quot;&gt;#{contents}&lt;/div&gt;
-        &lt;div class=&quot;item_meta&quot;&gt;
-          Posteed by &lt;a href=&quot;#{homepage}&quot;&gt;#{name}&lt;/a&gt; at &lt;a href=&quot;#{permlink}&quot;}&gt;#{now.strftime(&quot;%H:%M&quot;)}&lt;/a&gt; - 
-          &lt;a href=&quot;#{permlink}#disqus_thread&quot;&gt;&#45843;&#44544;&lt;/a&gt;
-        &lt;/div&gt;
-      &lt;/div&gt;
-    END
-  end
 end
\ No newline at end of file</diff>
      <filename>hotruby.rb</filename>
    </modified>
    <modified>
      <diff>@@ -238,14 +238,14 @@ textarea {width:550px;height:300px;padding:5px;}
 
 
 /* http://www.ikhono.net/2008/1/4/fancy-links-plugin-for-blueprintcss */
-div#item_body a[href^=&quot;http://hot.rubykr.org&quot;]{background-image:none !important;padding-left:0 !important}
+/*div.item_body a[href^=&quot;http://hot.rubykr.org&quot;]{background-image:none !important;padding-left:0 !important}
 .exempt{background-image:none !important;padding:0 !important}
-.external, div#item_body a[href^=&quot;http:&quot;]{background:url(/images/link.png) no-repeat left top;padding-left:20px;padding-bottom:5px}
-div#item_body  a[href^=&quot;mailto:&quot;]{background:url(/images/email.png) no-repeat left top;padding-left:20px;padding-bottom:5px}
-div#item_body a[href^=&quot;aim:&quot;]{background:url(/images/group.png) no-repeat left top;padding-left:20px;padding-bottom:5px}
-div#item_body a[href$=&quot;.pdf&quot;]{background:url(/images/pdf.png) no-repeat left top;padding-left:20px;padding-bottom:5px}
-div#item_body a[href$=&quot;.doc&quot;]{background:url(/images/word.png) no-repeat left top;padding-left:20px;padding-bottom:5px}
-div#item_body a[href$=&quot;.rss&quot;],a[href$=&quot;.rdf&quot;]{background:url(/images/feed.png) no-repeat left top;padding-left:20px;padding-bottom:5px}
+.external_link, div.item_body a[href^=&quot;http:&quot;]{background:url(/images/link.png) no-repeat left top;padding-left:20px;padding-bottom:5px}
+div.item_body  a[href^=&quot;mailto:&quot;]{background:url(/images/email.png) no-repeat left top;padding-left:20px;padding-bottom:5px}
+div.item_body a[href^=&quot;aim:&quot;]{background:url(/images/group.png) no-repeat left top;padding-left:20px;padding-bottom:5px}
+div.item_body a[href$=&quot;.pdf&quot;]{background:url(/images/pdf.png) no-repeat left top;padding-left:20px;padding-bottom:5px}
+div.item_body a[href$=&quot;.doc&quot;]{background:url(/images/word.png) no-repeat left top;padding-left:20px;padding-bottom:5px}
+div.item_body a[href$=&quot;.rss&quot;],a[href$=&quot;.rdf&quot;]{background:url(/images/feed.png) no-repeat left top;padding-left:20px;padding-bottom:5px}*/
 
 
 body       { background: #32331D; }</diff>
      <filename>public/stylesheets/screen.css</filename>
    </modified>
    <modified>
      <diff>@@ -0,0 +1,121 @@
+%w(springnote_client).each{|lib| require lib}
+
+class SpringnoteStore
+  APP_KEY = 'a7501dcb75519aec11a7049e62e3a0f533c265bb'
+  ITEM_PER_PAGE = 7
+  
+  def initialize
+    @note = Springnote(config('note_name'), :app_key =&gt; APP_KEY, :user_openid =&gt; config('user_openid'), :user_key =&gt; config('user_key'))
+  end
+
+  ##############################
+  #### Public Methods
+
+  def sidebar
+    meta_page config('side_page')
+  end
+  
+  def item_by_id(pid)
+    @note.pages.find(pid)
+  end
+    
+  def items(page = 1)
+    s = (page-1)*ITEM_PER_PAGE
+    e = s + ITEM_PER_PAGE
+    pids = index_array[s...e].map{|v| v[1].to_i}.uniq
+    [*@note.pages.find(*pids)].sort{|x, y| y.title &lt;=&gt; x.title}
+  end
+  
+  def write(name, homepage, contents)
+    target = today_page
+    
+    target.source = item_html(name, homepage, contents, target) + target.source.to_s
+    target.save
+  end
+  
+protected
+
+  ##############################
+  #### Config
+
+  def self.config
+    @config ||= YAML.load(File.read(File.dirname(__FILE__) + '/springnote.yml'))
+  end
+  
+  def config(key)
+    self.class.config[key]
+  end  
+  
+  ##############################
+  ### Meta Pages
+  
+  def meta_pages
+    @meta_pages ||= @note.pages.find(config('side_page'), config('index_page'))
+  end
+  
+  def meta_page(pid)
+    meta_pages.select{|page| page.identifier == pid}[0]
+  end
+  
+  def index_array
+    indexes.to_a.sort{|x, y| y[0] &lt;=&gt; x[0]}
+  end
+  
+  def indexes
+    return @indexes if @indexes
+    
+    @indexes = {}
+    meta_page(config('index_page')).source.to_s.
+      scan(/&lt;li&gt;.*?&lt;a.*?href=\&quot;\/pages\/(\d+)\&quot;.*?&gt;(.*?)&lt;\/a&gt;.*?&lt;\/li&gt;/mi).
+      map do |m|
+        @indexes[m[1].to_s] = m[0].to_i
+      end
+          
+    @indexes
+  end
+  
+  def update_index
+    cont = index_array.map do |v|
+      %Q[&lt;li&gt;&lt;a href=&quot;/pages/#{v[1]}&quot;&gt;#{v[0]}&lt;/a&gt;]
+    end.join(&quot;\n&quot;)
+            
+    page = meta_page(config('index_page'))
+    page.source = &quot;&lt;ul&gt;#{cont}&lt;/ul&gt;&quot;
+    page.save
+  end
+  
+  
+  ##############################
+  ### Contents Pages
+  
+  def today_page
+    key = Time.now.strftime('%Y-%m-%d')
+    (indexes[key] &amp;&amp; @note.pages.find(indexes[key])) || create_page(key)
+  end
+  
+  def create_page(key)
+    page = @note.pages.build(:title =&gt; key, :relation_is_part_of =&gt; config('index_page'))
+    page.save
+    
+    @indexes[key] = page.identifier
+    update_index
+    
+    page
+  end
+  
+  def item_html(name, homepage, contents, target)
+    now = Time.now
+    idstr = now.to_i.to_s
+    permlink = &quot;/items/#{target.identifier}/#{idstr}&quot;
+    
+    &lt;&lt;-END
+      &lt;div id=&quot;item_#{idstr}&quot; class=&quot;item_container&quot;&gt;
+        &lt;div class=&quot;item_body&quot;&gt;#{contents}&lt;/div&gt;
+        &lt;div class=&quot;item_meta&quot;&gt;
+          Posted by &lt;a href=&quot;#{homepage}&quot;&gt;#{name}&lt;/a&gt; at &lt;a href=&quot;#{permlink}&quot;}&gt;#{now.strftime(&quot;%H:%M&quot;)}&lt;/a&gt; - 
+          &lt;a href=&quot;#{permlink}#disqus_thread&quot;&gt;&#45843;&#44544;&lt;/a&gt;
+        &lt;/div&gt;
+      &lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
+    END
+  end
+end
\ No newline at end of file</diff>
      <filename>springnote.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,8 @@
 !!! 1.1
 %html{:xmlns =&gt; &quot;http://www.w3.org/1999/xhtml&quot;}
   %head
-    %title &#46888;&#44144;&#50868; &#47336;&#48708; :: &#54632;&#44760; &#51204;&#54616;&#45716; &#47336;&#48708; &#45684;&#49828;    
+    %title &#46888;&#44144;&#50868; &#47336;&#48708; :: &#54632;&#44760; &#51204;&#54616;&#45716; &#47336;&#48708; &#45684;&#49828;
+    %link{:rel =&gt; 'alternate', :title =&gt; 'News', :type =&gt; 'application/atom+xml', :href =&gt; 'http://feeds.feedburner.com/hotruby'}
     %link{:rel =&gt; 'stylesheet', :href =&gt; '/stylesheets/screen.css', :type =&gt; 'text/css', :media =&gt; 'screen, projection'}/
     %link{:rel =&gt; 'stylesheet', :href =&gt; '/stylesheets/print.css', :type =&gt; 'text/css', :media =&gt; 'print'}/
     %link{:rel =&gt; 'stylesheet', :href =&gt; '/stylesheets/xq_contents.css', :type =&gt; 'text/css', :media =&gt; 'screen, projection'}/
@@ -17,6 +18,8 @@
             %img{:src =&gt; '/images/title.png', :alt =&gt; ' &#46888;&#44144;&#50868; &#47336;&#48708; :: &#54632;&#44760; &#51204;&#54616;&#45716; &#47336;&#48708; &#45684;&#49828;'}
         .column.span-8.last
           #menu
+            %a{:href =&gt; 'http://feeds.feedburner.com/hotruby'} RSS &#44396;&#46021;
+            |
             %a{:href =&gt; '/write'} &#49352;&#49548;&#49885; &#51204;&#54616;&#44592;
             |
             %a{:href =&gt; 'http://forum.rubykr.org/'} &#47336;&#48708; &#49324;&#50857;&#51088; &#54252;&#47100;
@@ -36,7 +39,7 @@
       , 
       %a{:href =&gt; 'http://sinatrarb.com/'} sinatra
       and 
-      %a{:href =&gt; 'http://github.com/'} github
+      %a{:href =&gt; 'http://github.com/deepblue/hotruby/tree'} github
       
       
 :javascript</diff>
      <filename>views/layout.haml</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>.DS_Store</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>10bf170b8c12d534b67e27bad52d8d4b3e0ab84e</id>
    </parent>
  </parents>
  <author>
    <name>Bryan Kang</name>
    <email>deepblue@deepblue.local</email>
  </author>
  <url>http://github.com/deepblue/hotruby/commit/3a23584177a3875f77d3633d5875ea5b8e433d60</url>
  <id>3a23584177a3875f77d3633d5875ea5b8e433d60</id>
  <committed-date>2008-06-11T04:46:11-07:00</committed-date>
  <authored-date>2008-06-11T04:46:11-07:00</authored-date>
  <message>&#49548;&#49828; &#51221;&#47532; atom.haml &#52628;&#44032;</message>
  <tree>014f5bc93e6002990cca358ac3304c9cc8d461c7</tree>
  <committer>
    <name>Bryan Kang</name>
    <email>deepblue@deepblue.local</email>
  </committer>
</commit>
