Naoya Ito naoya@naoya.dyndns.org http://naoya.dyndns.org/~naoya/mt/ Blog テクノロジーとWeb サービス Naoya Ito naoya@naoya.dyndns.org http://naoya.dyndns.org/~naoya/mt/ 2018/11/8 Shibuya.pm Tech Talk #4
アジェンダ Blog とは? Blog ツール Blog テクノロジ: RSS Blog テクノロジ: Weblogs.Com Ping PerlでRSS RssRolling Blog テクノロジ: Weblogs.Com Ping XML-RPC Ping Interface Perl による Ping クライアント Perl による Ping サーバ デモ: Ping Server + IRC Amazon Web サービス Perl で AWS Blog と AWS: mt.cgi 2018/11/8 Shibuya.pm Tech Talk #4
Blog とは? (1) Scripting News (by Dave Winer) “日記形式で日々追記していく形式のテキストを主体としたサイト” (山田BBS) Web + Log = Weblog → Blog ウェブログ、ブログ、ウェブロ etc.. Scripting News (by Dave Winer) http://www.scripting.com/ 2018/11/8 Shibuya.pm Tech Talk #4
Blog とは? (2) 2018/11/8 Shibuya.pm Tech Talk #4 NDO::Weblog http://naoya.dyndns.org/~naoya/mt/ torus solutions! http://www.torus.jp/diary/ The Food Section http://www.thefoodsection.com/ blog.bulknews.net http://blog.bulknews.net/mt/ ELECTRIC DOC. http://e-doc.no-ip.com/blog/default.aspx b2evolution http://b2evolution.net/ 2018/11/8 Shibuya.pm Tech Talk #4
Blogツール(1) iBlog Movable Type Radio BLOGGER Blog を作るためのツール http://www.lifli.com/Products/iBlog/main.htm Movable Type http://www.movabletype.org/ Radio http://radio.userland.com/ BLOGGER http://www.blogger.com/ Blog を作るためのツール 様々な Blog ツールがリリースされている サーバインストール型、クライアント型、ホスティング型などアーキテクチャも様々 2018/11/8 Shibuya.pm Tech Talk #4
「BlogはXMLだ!」 …これはちょっと大袈裟 サイトのコンテンツやデザインを管理する軽量なCMSを、XML 応用技術やウェブサービスなどでトッピング。 RSS WeblogUpdates Ping TrackBack XML-RPC API PingBack FOAF ATOM Light Weight CMS 「BlogはXMLだ!」 …これはちょっと大袈裟 2018/11/8 Shibuya.pm Tech Talk #4
Perl な Blog ツール blosxom Greymatter Movable Type … 私も使ってます。 etc. 2018/11/8 Shibuya.pm Tech Talk #4
Blog テクノロジ: RSS サイト概要をXMLで記述したメタデータ 記事タイトル、記事概要、記事URL等の情報をプログラムから効率的に扱うことができる Blogで積極的に利用されている Blogツールが自動生成 2018/11/8 Shibuya.pm Tech Talk #4
RSS アプリケーション SharpReader Bloglines RSSリーダー (Windows アプリ) http://www.sharpreader.net/ Bloglines RSSアグリゲータ (Web アプリ) http://www.bloglines.com/ 2018/11/8 Shibuya.pm Tech Talk #4
Perl で RSS XML::RSS POE::Component::RSS use XML::RSS; use LWP::Simple; my $string = LWP::Simple::get(‘http://naoya.dyndns.org/~naoya/mt/index.rdf’); my $rss = XML::RSS->new; $rss->parse($string); for my $item (@{$rss->{items}}) { print $item->{title}, “\n”; print $item->{link}, “\n”; } XMLのパースなどはモジュール任せ。XMLを全く意識しなくて良い。 2018/11/8 Shibuya.pm Tech Talk #4
RssRolling Blog サイトなどから RSS を集めて来て新着記事を表示する Perl アプリケーション。 RssRolling http://naoya.dyndns.org/~naoya/rssrolling/ 2018/11/8 Shibuya.pm Tech Talk #4
RssRolling の動作 Weblogs.Com BlogRolling blogs 主な使用モジュール 2018/11/8 XML::RSS HTML::RSSAutodiscovery LWP::UserAgent HTML::Template リンク集のRSS Weblogs.Com BlogRolling 出力 HTML RSS 1.0 OPML 1.0 ATOM 巡回 記事のRSS blogs BlogRolling と連携、リンク集の RSS を元に Blog サイトを巡回する 2018/11/8 Shibuya.pm Tech Talk #4
Blog テクノロジ: Weblogs.Com Ping UserLand Software が運営 http://www.weblogs.com/ changes.xml Blog の更新情報を XML で配信するサイト 更新情報は Blog ツールが送信する更新通知(Ping)から構築 2018/11/8 Shibuya.pm Tech Talk #4
(XML-RPC or SOAP or REST) Weblogs.Com Ping XMLで情報公開 Ping (XML-RPC or SOAP or REST) name url 利用 Weblogs.Com Blog with a Blog Tool 各種メタブログサービス 2018/11/8 Shibuya.pm Tech Talk #4
XML-RPC Ping Interface XML-RPC … メッセージングにXMLを用いるRPC。SOAP のベースとなった仕様。 メソッド名 引数 返値(構造体) ret = weblogUpdates.ping(‘NDO::Weblog’, ‘http://naoya.dyndns.org/~naoya/mt/); Request Request (HTTP POST etc.) Response Response 2018/11/8 Shibuya.pm Tech Talk #4
Perl による Ping クライアント XMLRPC::Lite Frontier::Client use Frontier::Client; my $server = Frontier::Client->new( url => ‘http://www.example.com/ping/’ ); my $ret = $server->call(‘weblogUpdates.ping’, ‘NDO::Weblog’, ‘http://naoya.dyndns.org/~naoya/mt/’); メッセージングにXMLが使われていることは一切意識する必要がない。あたかもローカルのオブジェクトのメソッドを呼び出しているかのように。 2018/11/8 Shibuya.pm Tech Talk #4
Perl による Ping サーバ XMLRPC::Transport::HTTP::CGI (or Daemon) POE::Component::Server::XMLRPC use XMLRPC::Transport::HTTP; XMLRPC::Transport::HTTP::CGI->dispatch_to(‘weblogUpdates::ping’)->handle; package weblogUpdates; sub ping { my ($self, $name, $url) = @_; return {flerror => XMLRPC::Data->type(‘boolean’, 0), message => “Thanks for the ping”}; } DB 更新処理などの業務ロジック CGIプログラムとして動作 やはりXMLメッセージングは意識しなくて良い 2018/11/8 Shibuya.pm Tech Talk #4
デモ: Ping Server + IRC 仕様 Weblogs.Com Ping を受信する 受信した Weblog の RSS から最新記事のタイトルを取得する 取得した情報を IRC チャンネルに発言する XML-RPC サーバとして動作 RSS を取得しに行く HTTP クライアントとして動作 IRC bot として動作 様々なコンポーネントがメッセージをやり取り … Perl なら POE (Perl Object Environment) を使うと◎ 2018/11/8 Shibuya.pm Tech Talk #4
POE によるコンポーネント非同期プログラミング use POE qw ( Component::Server::XMLRPC Component::IRC …); … POE::Component::IRC->new(“irc”); POE::Component::Server::XMLRPC->new( alias => “xmlrpc” ); POE::Session->create ( inline_states => { _start => \&setup_service, _stop => \&shutdown_service, ‘webloUpdates.ping’ => \&ping_handler, … });: POE::Kernel->run; sub ping_handler { my $poe = sweet_args; my ($blog_name, $blog_url) = ($poe->args->[0], $poe->args->[1]); $poe->kernel->call ( irc => privmsg => ‘#test’=> sprintf(“Ping Received from %s (%s)”, $blog_name, $blog_url )); } POEコンポーネント イベント登録 イベントハンドラ 2018/11/8 Shibuya.pm Tech Talk #4
Amazon Web サービス 2003年7月に Amazon.co.jp も Web サービス対応。 日本の商品データベースにアクセス可能に。 SOAP or REST インタフェース Amazon.co.jp Web サービス http://www.amazon.co.jp/exec/obidos/subst/associates/join/webservices.html 2018/11/8 Shibuya.pm Tech Talk #4
Perl で AWS SOAP::Lite Net::Amazon 2018/11/8 Shibuya.pm Tech Talk #4 use Net::Amazon; my $ua = Net::Amazon->new( token => ‘トークン’, affiliate_id => ‘アソシエイトID’, locale => ‘jp’); my $response = $ua->search( asin => ‘4873110963’ ); if ( $response->is_success) { for my $property ( $response->property ) { print $property->ProductName, “\n”; } } else { warn $response->message; 2018/11/8 Shibuya.pm Tech Talk #4
Blog と AWS : mtaws.cgi Amazon アフィリエイトリンク作成支援ツール ASIN検索 リンクするためのHTMLコードを出力 Movable Type 風インタフェース Bookmarklet から利用可 http://naoya.dyndns.org/~naoya/mt/archives/000457.html 2018/11/8 Shibuya.pm Tech Talk #4
まとめ Blog のキーワードは “Lightweight” Lightweight な言語 Perl との相性◎ Lightweight なCMS Lightweight なウェブサービス Lightweight なXML Lightweight な言語 Perl との相性◎ CPAN を活用すると吉 2018/11/8 Shibuya.pm Tech Talk #4
おまけ: Blog な CPAN 生活 XML::RSS XML::RSS::Aggregate HTML::RSSAutodiscovery SOAP::Lite, XMLRPC::Lite Net::Blogger, Net::MovableType Net::Amazon Net::Google POE::Component::Server::XMLRPC, SOAP 2018/11/8 Shibuya.pm Tech Talk #4