http://docs.google.com/leaf?id=0B9EAgTWhLYhiZjZhZDZmNzUtOGRjYS00M2VhLWFkNGMtMjVlZWUzOGI0Y2Y2&hl=ja
2009年12月06日
【アップデート】アジャイル本のサンプルをcakePHPにポーティング
以前におこなったポーティングですが、テストも含めてcakePHPで実施しました。
http://docs.google.com/leaf?id=0B9EAgTWhLYhiZjZhZDZmNzUtOGRjYS00M2VhLWFkNGMtMjVlZWUzOGI0Y2Y2&hl=ja
http://docs.google.com/leaf?id=0B9EAgTWhLYhiZjZhZDZmNzUtOGRjYS00M2VhLWFkNGMtMjVlZWUzOGI0Y2Y2&hl=ja
2009年11月06日
アジャイル本のサンプルをcakePHPにポーティング
PHP初心者の私がcakePHPを習得するために著書「RailsによるアジャイルWebアプリケーション開発(初版)」
の「第二部 アプリケーションを構築する」に掲載されているサンプルプログラムを
cakePHPで作り直してみました。
極力オリジナルと同じように実装することを心がけて作り直してみたのでrailsとcakePHPの違いがよく理解できたと思います。
一通り実装してみての感想ですが、railsのほうが洗練されているとおもいます。しかし、その一方でcakePHPはrailsに似せてるところでちょっと無理があるんじゃない?という気もしましたが、PHPの手軽さとのトレードオフを考えるとこでも十分いいんじゃない?という気にもなります。
ソースコードはgoogle codeで公開しています。URLはこちら。
http://code.google.com/p/agile-with-cakephp/source/browse/#svn/trunk
cakePHPで作り直してみました。
極力オリジナルと同じように実装することを心がけて作り直してみたのでrailsとcakePHPの違いがよく理解できたと思います。
一通り実装してみての感想ですが、railsのほうが洗練されているとおもいます。しかし、その一方でcakePHPはrailsに似せてるところでちょっと無理があるんじゃない?という気もしましたが、PHPの手軽さとのトレードオフを考えるとこでも十分いいんじゃない?という気にもなります。
ソースコードはgoogle codeで公開しています。URLはこちら。
http://code.google.com/p/agile-with-cakephp/source/browse/#svn/trunk
2008年12月16日
スプレモ(supremo) - GAEで動くマイクロブログを作ってみました
しばらくRuby On Railsを離れてGoogle App Engineの勉強がてらマイクロブログを作ってたのですが、一通り動作するようになったので公開します。ソースはgithubで管理&公開しています。
http://nasuta-take4.appspot.com/
Google App Engine はいろいろ制限があってまだ本格的なサービスを稼働させるには課題がありますが、このまま進化していくと凄いことになりそうです。ぜひRailsも動いて欲しい。
http://nasuta-take4.appspot.com/
Google App Engine はいろいろ制限があってまだ本格的なサービスを稼働させるには課題がありますが、このまま進化していくと凄いことになりそうです。ぜひRailsも動いて欲しい。
2008年04月10日
ruby でサイト内のリンクを抽出
ruby hogehoge.rb http://foobar.com/
と実行したらそのサイトをクロールしてサイト内リンク(テキストのみ)をすべてリストアップするスクリプトを書いてみました。
幾つかのサイトを食わせてみて正常動作してます。このままでもかなり実用に堪えることができると思います。
再帰で実装したら落ちたので再帰を使わないでクロールを行なってます。結構大変ですねぇ。。<クロール
と実行したらそのサイトをクロールしてサイト内リンク(テキストのみ)をすべてリストアップするスクリプトを書いてみました。
幾つかのサイトを食わせてみて正常動作してます。このままでもかなり実用に堪えることができると思います。
再帰で実装したら落ちたので再帰を使わないでクロールを行なってます。結構大変ですねぇ。。<クロール
require 'rubygems'
require 'hpricot'
require 'open-uri'
require 'kconv'
require 'uri'
def catanate(p1="/",p2 = "")
return p2 if p2 =~ /^\//
p1 = p1.sub(/\/([^\/]+)$/,"/");
return p1 + p2
end
def crawler(start)
offset = ""
s_uri = URI.parse(start).normalize
if @bad_urls[s_uri.to_s] != nil then
p "bad url skipped #{s_uri.to_s}"
return
end
queue = []
begin
host = s_uri.host
f = open(s_uri.to_s);
base_uri = f.base_uri
return unless f.content_type =~/text/
if base_uri.host != s_uri.host then
@bad_urls[s_uri.to_s] = "DUMMY"
return
end
doc = Hpricot(f)
rescue => ex
@bad_urls[s_uri.to_s] = "DUMMY"
p "#{s_uri.to_s} ==> #{ex}"
else
(doc/'a').each { |e|
s = e.inner_html.toutf8.gsub(/<.*?>/,'')
next if s == nil || s == ''
begin
next unless e.attributes['href']
uri = URI.parse( e.attributes['href']).normalize
scheme = (uri.scheme == nil ? s_uri.scheme : uri.scheme)
next unless scheme =~/http/
host = (uri.host == nil ? s_uri.host : uri.host)
next unless host == s_uri.host
port = (uri.port == nil ? s_uri.port : uri.port)
if port != nil then
port = (port.to_i == 80 ? "" : ":#{port}" )
end
path = catanate(s_uri.path,uri.path)
qs = ( uri.query == nil ? "" : "?#{uri.query}" )
s = scheme + "://" + host + port + path + qs
next unless @urls[s] == nil
@urls[s]="dummy";
queue.push(s);
rescue => ex2
p "#{e.attributes['href']} => #{ex2}"
end
}
end
return queue;
end
@urls = {}
@bad_urls = {};
q = []
q.push(ARGV[0])
q.each{ |u|
p u
sleep 0.1
wk = crawler(u)
q.concat(wk) if wk != nil
}
@urls.sort.each { |key,val|
p key
}
2008年03月31日
ruby でRSSの解析 その2 はてぶのデータエクスポートデータの解析
はてなブックマークに登録してあるデータはRSS形式でエクスポートできるので、それを解析してURLの一覧を表示するようにしてみた。
が、エラーが発生して解析できない。エラーの内容からするとRSS1.0の仕様に合っていないみたい。仕様にあうように修正してみたら成功。
詳しくははてぶサポート掲示板に載っけました。
http://hatena.g.hatena.ne.jp/bbs/3/13
が、エラーが発生して解析できない。エラーの内容からするとRSS1.0の仕様に合っていないみたい。仕様にあうように修正してみたら成功。
詳しくははてぶサポート掲示板に載っけました。
http://hatena.g.hatena.ne.jp/bbs/3/13
2008年03月28日
ruby でRSSの解析 その1
http://blog.tofu-kun.org/071212191752.php
こちらを参考に、RSSを読み込んでタイトルとURLを表示するスクリプトを作成
インストールする必要があったのはnet-discover
tarball を展開して ruby setup.rb を実行
p ではなく print を使ったのは、p だとタイトルが化けたので。
printだと正しく表示されました。
(環境 MacOS X Tiger / iTerm (UTF-8) )
こちらを参考に、RSSを読み込んでタイトルとURLを表示するスクリプトを作成
インストールする必要があったのはnet-discover
tarball を展開して ruby setup.rb を実行
require 'net/discover'
require 'open-uri'
require 'rss'
feeds = URI.parse(ARGV[0]).discover_rss
feeds.each{|url|
puts url
rss = RSS::Parser.parse(open(url).read)
rss.items.each{ |item|
print item.title
print "\n"
print item.link
print "\n"
}
}
p ではなく print を使ったのは、p だとタイトルが化けたので。
printだと正しく表示されました。
(環境 MacOS X Tiger / iTerm (UTF-8) )
$ ruby rss.rb http://nasuta.seesaa.net/
http://nasuta.seesaa.net/index.rdf
acts_as_paranoid
http://nasuta.seesaa.net/article/45663591.html
Jruby On Rails + Derby(組み込み編)
http://nasuta.seesaa.net/article/40779455.html
Jruby on Rails + Pure Java SQLite JDBC driver
http://nasuta.seesaa.net/article/40303483.html
Jruby 0.9.9 リリース
http://nasuta.seesaa.net/article/40258119.html
Jruby On Rails + Derby
http://nasuta.seesaa.net/article/39579985.html
Jruby On Rails + MySQL
http://nasuta.seesaa.net/article/39104072.html
Jruby On Rails を触ってみる
http://nasuta.seesaa.net/article/38479411.html
CLARAのVPSでmongrelが再起動せず
http://nasuta.seesaa.net/article/29468773.html
SQLite3::SQLException (SQL logic error or missing database)
http://nasuta.seesaa.net/article/28993404.html
ruby on rails on coLinux
http://nasuta.seesaa.net/article/27668857.html
ログイン手続きが無いサイトでのSession Fixation攻撃
http://nasuta.seesaa.net/article/26460667.html
cookieで掲示板の名前とE-Mailを保存
http://nasuta.seesaa.net/article/25531450.html
QRコードの生成に成功
http://nasuta.seesaa.net/article/25468705.html
ページネーションとフラグメントキャッシュ
http://nasuta.seesaa.net/article/25042955.html
pound + mongrel でも落ちました。
http://nasuta.seesaa.net/article/24573162.html