image

  • フォト Amazonギフト券
    ※この時計の時刻は、閲覧しているパソコンのものであり、必ずしも正確な時間とは限りません

検索

最近のトラックバック

無料ブログはココログ

« 2009年9月5日 | トップページ | 2009年9月8日 »

2009年9月6日

2009-09-06

ピックアップ:IFRS2009 日本語訳を12月刊行, アジャイルは死んだのか, etc...

- http://sankei.jp.msn.com/entertainments/music/090906/msc0909061403002-n1.htm
> ビートルズ新リマスター盤 高音質で9日世界同時発売 (1/2ページ) - MSN産経ニュース

- http://mainichi.jp/enta/mantan/news/20090904mog00m200065000c.html
> 東京マグニチュード8.0:東京に巨大地震が発生 胸に迫るリアルな描写(まんたんウェブ) - 毎日jp(毎日新聞)

- http://blog.livedoor.jp/takeda_cfo/archives/1120481.html
> ■CFOのための最新情報■ : ■ IFRS2009 日本語訳を12月刊行!  −第2回IFRS対応会議 

- http://ameblo.jp/takapon-jp/entry-10335679247.html
> 映画「サマーウォーズ」をいまさらながら見た。|六本木で働いていた元社長のアメブロ

- http://d.hatena.ne.jp/masayang/20090904/1252091354
> なぜAgileは25年前に出現しなかったのか? - masayangの日記(ピスト通勤他

- http://www.arclamp.jp/blog/archives/agile_is_dead.html
> アジャイルは死んだのか (arclamp.jp アークランプ)

- http://www.chikawatanabe.com/blog/2009/09/twitter.html
> On Off and Beyond: Twitterの企業ユース(カスタマーサポート)

ruby (sinatra + haml) で twitter

ExtJS での twitter クライアント例を見つけた。
- http://www.extjs.com/forum/showthread.php?t=77234

> Ext.ux.myTwitter - Twitter Client - Ext JS Forums

shinatra を使った twitter クライアント例も。
- http://jasonbynum.com/2009/09/04/sinatra-twitter-and-httparty/
> Sinatra, Twitter, and HTTParty | Jason Bynum

これらは、通信部には php をつかっている。

これを参考にしつつ、
sinatra + haml + httparty
として、pure-ruby でサブセットを作ってみた。

20090906twitter
- http://homepage2.nifty.com/youichi_kato/src.html
> katoy 自作のソース
twitter アクセス (sinatra + haml + httparty) (2009-09-06)

ソース構成は次のとうり
$ tree .
.
|-- Views
|   |-- index.haml
|   `-- layout.haml
`-- twitter.rb
起動は $ ruby twitter.rb としてから、web ブラウザで http://localhost:4566 にアクセスするだけ。

以下にソースコードを示す。
$ cat twitter.rb
# See http://jasonbynum.com/2009/09/04/sinatra-twitter-and-httparty/

require 'rubygems'      # because we are need gems
require 'sinatra'       # because it's a sinatra app = DOH!
require 'httparty'      # because you like to party, and make dead simple, RESTful HTTP requests
require 'rack-flash'    # this is just handy if you want to pass flash messages to the views (optional)
require 'haml'
require 'time'
require 'uri'
require 'pp'

$KCODE="utf8"

use Rack::Flash     # use rack-flash (optional)
set :sessions, true # session have to be set to true in order to store flashes (optional)

# Very Basic Twitter class
class Twitter
  include HTTParty
  base_uri "twitter.com"
end

def pastetime(posttime)
  sec = (Time.new - Time.parse(posttime))
  return "#{sec.to_i} 秒" if sec < 60
  return "#{(sec/60).to_i} 分" if sec < 60 * 60
  return "#{(sec/(60*60)).to_i} 時間" if sec < 60 * 60  * 24
  return "#{(sec/(60 * 60 * 24)).to_i} 日"
end

# テキストデータ内のURL, @name をリンクにする
def url2link_of_string(html_string)

  URI.extract(html_string, ['http', 'https']).uniq.each{ |url|
    html_string.gsub!(url,"<a href='#{url}'>#{url}</a>")
  }

  s = html_string.clone
  s.scan(/@(\w*)/) {|x|
    html_string = html_string.gsub!("@#{x}", "@<a href='http://twitter.com/#{x}'>#{x}</a>")
  }
  html_string
end

post "/login" do
  if params[:user] != "" and params[:password] != ""
    session[:user] = params[:user]
    session[:password] = params[:password]
    session[:group] = 'friends'
  end
  redirect "/"
end

post "/logout" do
  session[:user] = nil
  session[:password] = nil
  session[:group] = 'public'
  redirect "/"
end

# Get our index page and display the lastest 12 tweets
get "/" do
  @group = session[:group]
  @group = params[:group] if params[:group] != nil
  @group = "public" if @group == nil
  session[:group] = @group
  Twitter.basic_auth(session[:user], session[:password])
  @tweets = Twitter.get("/statuses/#{@group}_timeline.json", :query => {:count => 20, :out => "json"})
  haml :index # use views/index.haml for view
end

#listen for a post on the index page
post "/" do
  # Post the tweet to Twitter
  Twitter.basic_auth(session[:user], session[:password])
  tweet = Twitter.post("/statuses/update.json", :query => { :status => params[:tweet]})
  flash[:notice] = "TWITTERD!" and redirect "/" if tweet.has_key?('id') # if it works
  flash[:notice] = "NOT TWITTERD :(" and redirect '/' # if it doesn't
end

$ cat layot.haml
!! Strict

%html
  %meta{ 'http-equiv' => 'content', :content => 'text/html; charset=utf-8'}
  %head
    %title Twitter With Sinatra
    %style{:type => "text/css", :media => "screen"}
      :plain
        blockquote#twitter {
          background: #e3e3e3;
          margin-top: -4px;
          margin-left: 4px;
          margin-right: 4px;
          margin-bottom: 0px;
        }
  %body
    %div{:id=>"wrapper"}
      %h2{:align=>"center"} Twitter With Sinatra
      != yield

$ cat index.haml
!! Strict

%html
  %meta{ 'http-equiv' => 'content', :content => 'text/html; charset=utf-8'}
  %head
    %title Twitter With Sinatra
    %style{:type => "text/css", :media => "screen"}
      :plain
        blockquote#twitter {
          background: #e3e3e3;
          margin-top: -4px;
          margin-left: 4px;
          margin-right: 4px;
          margin-bottom: 0px;
        }
  %body
    %div{:id=>"wrapper"}
      %h2{:align=>"center"} Twitter With Sinatra
      != yield
ntsitm234111:twitter2 youichikato$ cat Views/index.haml
- if flash[:notice]
  %div{:id=>"flash", :style=>"color:red;"}= flash[:notice]
%form{:action=>"/", :method=>"post"}
  %table
    %tr
      %td{:nowrap=>true}
        %textarea{:name=>"tweet", :rows=>"1", :cols=>"100"}
        %br
        %input{:type=>"submit", :value=>"Tweet this!", :disabled=> session[:user] == nil}

%center
  %table
    %tr
      %td{:nowrap=>true}
        %form{:action=>"/login", :method=>"post"}
          user:
          %input{:type=>"text", :name=>"user", :value=>session[:user]}
          password:
          %input{:type=>"password", :name=>"password", :value=>session[:password]}
          %input{:type=>"submit", :value=>"login"}
      %td{:nowrap=>true}
        %form{:action=>"/logout", :method=>"post"}
          %input{:type=>"submit", :value=>"logout", :disabled=> session[:user] == nil}
  %hr
  %form{:action=>"/", :method=>"get"}
    %input{:type=>"radio", :name=>"group", :value=>"public", :checked=> @group=='public'} public
    %input{:type=>"radio", :name=>"group", :value=>"friends", :checked=> @group=='friends'} friends
    %input{:type=>"radio", :name=>"group", :value=>"user", :checked=> @group=='user'} user
    %input{:type=>"submit", :value=>"Refresh"}

- if !@tweets.is_a?(Array)
  %h3 Sorry, something is wrong
  = @tweets.inspect
- else
  %ul
    - for tweet in @tweets
      %hr
      %li
        %img{:src=>"#{tweet['user']['profile_image_url']}", |
             :height=>"48", :width=> "48", :align=>"left", :alt=>"#{tweet['user']['name']}" }
          %a{:style=>"color: red;", :href=>"http://twitter.com/#{tweet['user']['screen_name']}"} #{tweet['user']['screen_name']}
          %small from #{tweet['source']}  #{pastetime(tweet['created_at'])}前
          %blockquote#twitter
            %span #{url2link_of_string(tweet['text'])}

twitter をプログラムから扱う基本は習得できたと思う。
EDINET や SEC 情報の変化を twitter で発信できるだろうと考えている。

ピックアップ:テレ東とTBSなぜ差がついたか, 紙製IBM ThnkPadを作ってみよう, etc...

- http://news.cocolog-nifty.com/cs/article/detail/blog-200909041633/1.htm?c=app.3
> 早くも混乱?高速無料化案 ココログニュース:@nifty

- http://d.hatena.ne.jp/shi3z/20090904/1252058630
> 要領よく問題解決をするための方法論 - Keep Crazy;shi3zの日記

- http://d.hatena.ne.jp/karimikarimi/20090905/1252165635
> 私にとって高校生クイズがちっとも面白くなくなった理由の考察 - karimikarimi

- http://jyouhouya3.net/2009/09/post_212.html
> どうしてこうなった。建築の失敗画像いろいろ

- http://alfalfa.livedoor.biz/archives/51505900.html
> テレ東とTBSなぜ差がついたか・・・慢心・環境の違い:アルファルファモザイク

- http://www.youtube.com/watch?v=Jks36nQ1SBE
> YouTube - ダ_ン_ボ_君

- http://blogs.itmedia.co.jp/kenjiro/2009/08/ibmthnkpad-fc25.html
> 紙製IBM ThnkPadを作ってみよう!:けんじろう と コラボろう!:ITmedia オルタナティブ・ブログ

- http://mottoi.blog32.fc2.com/blog-entry-557.html
> TwitterのFollower数の推移を確認できる「TwitterCounter」が便利 - MS-14D

- http://d.hatena.ne.jp/neriu/20090905/1252172653
> データマニアは今すぐブクマすべき。いろいろ楽しい世界経済統計サイト「世界経済のネタ帳」 - Memento Mac

- http://shigeya.org/blog/archives/2009/09/snow-leopard-1.html
> Snow Leopard その後 (LocalScope::)

- http://d.hatena.ne.jp/zentoo/20090821/1250870502
> 無料かつ(おそらく)最速であなたのWebアプリケーションを世界に公開する方法 - スタジオズブリ

« 2009年9月5日 | トップページ | 2009年9月8日 »

mokuji

2013年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

google

  • twitter
  • __
  • _
    Googleボットチェッカー

合わせて読む

  • 合わせて読む
    フィードメーター - katoy: cocolog あわせて読みたい

リンク