はてなキーワード: エスケープとは
ざっと流し見てみた。
Railsでソーシャルブックマークを作ってみようか(第2回)
http://d.hatena.ne.jp/PoohKid/20070220/p1
初期導入から纏まっている。ざっと見デザインまでやらなければ30分もかからなさそうなので後でやってみようと思う。
以上、まだサイトを見るのは途中。
今日はあまりできなかった。
その代わり、夕方からRuby on Railセミナーにいってきた。
http://www.web-career.com/seminar/ruby_on_rails.html
残念ながら「美人ですね。」っていうような受付の人はいなかった。というか男だったので自重した。
一部のWebアプリを作ろう!みたいなコーナーはオーソドックス。
前知識がないひとにはとても役にたつだろう。
二部のパッケージ開発手法、テスト、品質管理はRubyを実務につかっている会社の話しは聞けないので、なかなかあつかった。疑問に思っていたことにも触れられたのでよかったなと思いましたとさ。
具体的にはプラグインの有効性、開発規模や体制なんかを聞けてよかったざます。
その後に軽い懇親会みたいなのもあったので、なかなか貴重なセミナーだった。
セミナーの主がKBMJグループとかいうので、相当立派なビルにはいってるので、帰ってきてから調べ驚いた。
株★魔人の人の会社気が付いたらこんな規模になってるのかよ!!
時代の流れは恐ろしいものだなと感じるとともに己が身を振り返りふがいなさ満点。
RonRは既存のプロジェクトや、中規模レベルの開発には向いていないような気がする。
あと、これプログラムいうよりはシェルとかバッチを書いているような錯覚に陥る。
シェルの先にあるものを自作するほど開発工数さける規模でやるか数人でちょこちょこカスタマイズで食っていくかしかないのではとおもった。
だが既存のビジネスの代替ラインにはのらない気がするな。
Ruby on Rails: ログイン機能を作る (acts as authenticated 編)
Safe ERB (Rails Plugin)
http://d.hatena.ne.jp/kstn/20060708/1152345246
Rails のアプリケーションで DB や HTTP リクエストから取ってきた文字列を rhtml で出力するときに h メソッドなどでエスケープしないとエラーを出すというプラグインを作ってみました。
最近perlの勉強してて、naoyaのはてなダイアリー - Web::ScraperでWeb::Scraperを知り、試しにはてブのAPIを真似してニフティクリップのコメントを吐くJSONを作った。
#!/usr/local/bin/perl -T # # use strict; use warnings; use URI; use Web::Scraper; use JSON::XS; use CGI; use Encode; my $q = new CGI; print $q->header( -type=>'text/plain', -charset=>'UTF-8'); my $path_info = $q->path_info; my $path = $path_info =~ m{^/?(nobracket/)?(http\w?)://?(.*)$}xms ? $2.'://'.$3 : undef ; exit if ! $path; my $is_nobracket = 'true' if $1; if ($q->query_string) { my $query_string = $q->query_string; $query_string =~ s/;/&/g; $path = $path.'?'.$query_string } $path =~ s/%23/#/; $path =~ s/([^\w ])/'%' . unpack('H2', $1)/eg; $path =~ tr/ /+/; my $entry_url = "http://clip.nifty.com/entry/?url=" . $path; my $bookmarks = scraper { process 'h4>a', 'user' => 'TEXT'; process 'li.dateAndTime', 'timestamp' => 'TEXT'; process 'a.tagtag', 'tags[]' => sub { my $text = $_->as_text or return; my $left = decode_utf8('??~P'); my $right = decode_utf8('??~Q'); return $text =~ /$left (.*?) $right/xms; }; process 'p.comment', 'comment' => 'TEXT'; result 'user', 'timestamp', 'tags', 'comment'; }; my $niftyclip_entry_info = scraper { process 'div.clipTitle>h3>a', 'title' => 'TEXT'; process 'div.clipTitle>p.url>a', 'url' => '@href'; process 'div.comments>div.commentsDetails', 'bookmarks[]' => $bookmarks; result 'title','url','bookmarks'; }; my $niftyclip = scraper { process 'div#content', 'niftyclip_entry' => $niftyclip_entry_info; result 'niftyclip_entry'; }->scrape(URI->new($entry_url)); exit if ! ($niftyclip->{'url'}); $niftyclip->{'entry_url'} = $entry_url; $niftyclip->{'count'} = @{$niftyclip->{'bookmarks'}}; my $json = JSON::XS->new->utf8->encode($niftyclip); $json = '('. $json. ')' if ! $is_nobracket; print $json;
取得方法は
http://monm.on.coocan.jp/niftyclip/json/entry/<取得したいURL>
ってすればいい。「#」は「%23」にエスケープしないとダメ。
作りながら「取得したいURLをURLエンコードするのは面倒だな」って思い、はてブのAPIみたいにpath_infoでアクセスできるようにしたわけだけど、その取得したいURLにquery_stringが付いてた場合にどうやってやって良いかわからず結構悩んだ。
結局、path_info+'&'+query_stringってやることで無理やり作ったけど、普通どうやるもんなんだろ?cpanに何か良いモジュールがあったりするのかな。
それと、はてブに合わせて出力の際に()を付けるようにしたけど、これだとYahoo!Pipesで使えなかったから、
http://monm.on.coocan.jp/niftyclip/json/entry/nobracket/<取得したいURL>
みたいに「nobracket」付きでアクセスした場合には()を付けないようにした。
コレ使うとニフティクリップとlivedoor クリプのコメント取ってくるAPIみたいなのが作れる。
RSSで取得する場合は
http://pipes.yahoo.com/pipes/pipe.run?_id=zECBJ_VY3BGtBw6B8ivLAg&_render=rss&URL=<URLエンコードしたURL>
で取得できるし、jsonで取得する場合は
http://pipes.yahoo.com/pipes/pipe.run?_id=zECBJ_VY3BGtBw6B8ivLAg&_render=json&URL=<URLエンコードしたURL>
ってなる。
とりあえずサクッと作ってみたけど、わざわざページからJSON作ってるからちょっと重い。
その頃にはJSON吐いてくれるようになるんじゃないかなと期待はしてるけど。
参考URL: