Nasuta<http://www.nasuta.jp/>

2009年12月06日

【アップデート】アジャイル本のサンプルをcakePHPにポーティング

以前におこなったポーティングですが、テストも含めてcakePHPで実施しました。

http://docs.google.com/leaf?id=0B9EAgTWhLYhiZjZhZDZmNzUtOGRjYS00M2VhLWFkNGMtMjVlZWUzOGI0Y2Y2&hl=ja
posted by ふんじ at 14:46| Comment(0) | TrackBack(0) | Misc | このブログの読者になる | 更新情報をチェックする

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
posted by ふんじ at 21:07| Comment(0) | TrackBack(0) | Misc | このブログの読者になる | 更新情報をチェックする

2008年12月16日

スプレモ(supremo) - GAEで動くマイクロブログを作ってみました

しばらくRuby On Railsを離れてGoogle App Engineの勉強がてらマイクロブログを作ってたのですが、一通り動作するようになったので公開します。ソースはgithubで管理&公開しています。

http://nasuta-take4.appspot.com/

Google App Engine はいろいろ制限があってまだ本格的なサービスを稼働させるには課題がありますが、このまま進化していくと凄いことになりそうです。ぜひRailsも動いて欲しい。
posted by ふんじ at 20:59| Comment(0) | TrackBack(0) | Misc | このブログの読者になる | 更新情報をチェックする

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
}

posted by ふんじ at 23:39| Comment(0) | TrackBack(0) | Misc | このブログの読者になる | 更新情報をチェックする

2008年03月31日

ruby でRSSの解析 その2 はてぶのデータエクスポートデータの解析

はてなブックマークに登録してあるデータはRSS形式でエクスポートできるので、それを解析してURLの一覧を表示するようにしてみた。

が、エラーが発生して解析できない。エラーの内容からするとRSS1.0の仕様に合っていないみたい。仕様にあうように修正してみたら成功。

詳しくははてぶサポート掲示板に載っけました。
http://hatena.g.hatena.ne.jp/bbs/3/13
posted by ふんじ at 15:21| Comment(0) | TrackBack(0) | Misc | このブログの読者になる | 更新情報をチェックする

2008年03月28日

ruby でRSSの解析 その1

http://blog.tofu-kun.org/071212191752.php

こちらを参考に、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
 

posted by ふんじ at 13:58| Comment(0) | TrackBack(0) | Misc | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。