2007年05月08日

developerWorks space

developerWorks space

Introducing developreWorks space より。

IBM developerWorksが始めたコラボレーション・コミュニティ形成サイトのようだ。

紹介記事の中でSourceForgeなどになぞらえているが、より広い、様々な規模や形態のコミュニティ(コミュニティ・モデル)を許容するとしている。

http://www.ibm.com/developerworks/spaces/ には手始めに13のコミュニティ・トピックが作られている。

設立する人の他に協力者が一人いれば新しいコミュニティ・トピックを作る申請ができるそうだ。設立する人は名前を明らかにする必要があるが、協力者は匿名でも構わないらしい。

リンク

posted by uxlf at 05:00| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2007年03月02日

Microsoft、プログラミング完全初心者向けを謳う学習サイトを開設

http://www.eweek.com/article2/0,1759,2099621,00.asp より。

Microsoftが、プログラミング初心者にもプログラミングを学べるサイト、「Beginner Developer Learning Center」を開設。

Microsoftが期限付きで無償公開している開発環境Visual Studio 2005 Expressはなんと一千万回もダウンロードされたそうで、アマチュアの開発者は一億人を超える規模の市場だとみているという。

新しいサイトには「Web開発コース」と「Windows開発コース」があり、 どちらもこれまでプログラミングを全然知らなかった人を想定して

  • Tier 1: プログラミングの基本的なことがらや、プログラミング言語の入門
  • Tier 2: .NETで基礎的なアプリが作れるようになるまで
  • Tier 3: より進んだ話題、データアクセスやデバッグなど

の3段階に分けてレッスンが用意されている。 どれくらい全くの初心者向けを目指しているかというと、Tier 1のレッスン数がTier 2よりもTier 3よりも多かったりとか、実際に手を動かすレッスンが「完全初心者シリーズ」と銘打たれているくらい。

わたしの学習の道程 (My Learning Path)」のページを見ると全体像がわかる。

子供向けのコンテンツも色々取り揃えているとか。 なんでも「VB for Very Bright Kids」だの「C# for Sharp Kids」だのいうそうで、英語圏でもこんな駄洒落を使うのか。

タグ:microsoft Windows
posted by uxlf at 18:44| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2007年02月27日

はじめてのXML-RPC in Ruby (2): ping送信

前回はブログシステムのXML-RPC APIを叩いてみたが、今度はブログの更新を通知する機構を試してみる。ブログ検索エンジン等には通知を受けるためのXML-RPC端があり、通知する側はそれに接続してメソッドを呼ぶ。

そのメソッドはweblogUpdates.pingというもの。http://www.xmlrpc.com/weblogsCom に仕様がある。形式は次のようになっている。

weblogUpdates.ping (weblogname, weblogurl, changesurl=weblogurl, categoryname="none") returns struct

引数の意味は明快だ。注意点はこのAPIを呼ぶのはブログを更新した後でなければならない点。

% irb -rxmlrpc/client

irbを起動したらまずは文字列をXML-RPCに必要なUTF-8に変換する道具を作ってしまう。端末の入出力がUTF-8の場合は不要(あっても害はない)。

irb(main):001:0> require 'nkf'
=> false
irb(main):002:0> def any_to_utf8(str); NKF.nkf("-w", str); end
=> nil

メソッドのパラメータを準備。

irb(main):003:0> blog_name = '雫'
=> "雫"
irb(main):004:0> blog_url = 'http://uxlf.seesaa.net/'
=> "http://uxlf.seesaa.net/"
irb(main):005:0> changes_url = 'http://uxlf.seesaa.net/article/34454416.html'
=> "http://uxlf.seesaa.net/article/34454416.html"

接続を用意し、メソッドを呼ぶ。戻り値は構造体で、flerror要素がfalseなら成功。

irb(main):006:0> proxy = XMLRPC::Client.new_from_uri("http://blogsearch.google.com/ping/RPC2")
=> #<XMLRPC::Client:0x829c3c4 @proxy_port=nil, @auth=nil, @cookie=nil, @create=nil, @port=80, @http=#<Net::HTTP blogsearch.google.com:80 open=false>, @proxy_host=nil, @http_last_response=nil, @parser=nil, @timeout=30, @path="/ping/RPC2", @password=nil, @http_header_extra=nil, @use_ssl=false, @host="blogsearch.google.com", @user=nil>
irb(main):007:0> proxy.call("weblogUpdates.ping", any_to_utf8(blog_name), blog_url, changes_url)
=> {"message"=>"Thanks for the ping.", "flerror"=>false}

以上で完了。

ついでにpingを飛ばすだけの簡単なスクリプトを書いてみた。「blog-ping.rb 'ブログ名' 'http://ブログのURL/' 'http://ブログの/更新された記事のURL'」のように実行するとサーバにブログの更新を通知する。通知先のサーバはスクリプト内のPING_SERVERSに書く。4つめの引数にサーバのURLを指定するとそのサーバにだけ通知する。

ところでこの当ブログをホストして頂いているSeesaaはスパムの巣窟として有名らしく、gooブログ検索をはじめ国内の少なからぬブログ検索エンジンにpingを無視されてしまうようだ。

Seesaaは2月にリニューアルしてリニューアルキャンペーンなどやっている(下のような定型文を埋め込んで記事を書くと抽選でプレゼントらしい)。「要望などを投稿してください」とのことだが、何よりもこの悪評の原因を解消してもらいたいところ。

リニューアルキャンペーン
リニューアルキャンペーン開催中
Seesaaブログが新しくなりました。デザインはもちろん使い勝手もさらに便利に!
新規登録の方も既にお使いの方もプレゼントが当たるチャンス。

タグ:XML-RPC ruby
posted by uxlf at 07:45| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2007年02月23日

はじめてのXML-RPC in Ruby

XML-RPCでブログシステムにアクセスしてみる。

ここではお手軽にRubyを使う。RubyにはXML-RPC用ライブラリが標準で付属するので、簡単に試すことができる。Rubyの対話環境irbを起動したら、まずはそれをロードする。

% irb
irb(main):001:0> require "xmlrpc/client" => true

seesaaブログのAPIにアクセス

RubyでXML-RPCを使うには、目的のサーバを表すプロキシオブジェクトを作ることが必要。seesaaのXML-RPC端のURLはhttp://blog.seesaa.jp/rpcなので、これを指定してプロキシを作る。

irb(main):002:0> proxy = XMLRPC::Client.new("blog.seesaa.jp", "/rpc")
=> #<XMLRPC::Client:0x85b2158 @password=nil, @http_header_extra=nil, @use_ssl=false, @host="blog.seesaa.jp", @user=nil, @proxy_port=nil, @auth=nil, @cookie=nil, @create=nil, @port=80, @http=#<Net::HTTP blog.seesaa.jp:80 open=false>, @proxy_host=nil, @http_last_response=nil, @parser=nil, @timeout=30, @path="/rpc">

まずは簡単な、引数のないメソッドを呼んでみる。mt.supportedMethodsはサーバがサポートしているAPIのリストを返してくれる。

irb(main):003:0> result = proxy.call("mt.supportedMethods")
=> ["blogger.newPost", "blogger.editPost", "blogger.getRecentPosts", "blogger.getUsersBlogs", "blogger.getUserInfo", "blogger.deletePost", "metaWeblog.getPost", "metaWeblog.newPost", "metaWeblog.editPost", "metaWeblog.getRecentPosts", "metaWeblog.newMediaObject", "mt.getCategoryList", "mt.setPostCategories", "mt.getPostCategories", "mt.getTrackbackPings", "mt.supportedTextFilters", "mt.getRecentPostTitles", "mt.publishPost", "seesaa.newUser", "seesaa.newBlog", "seesaa.getCaptcha"]

SSL経由でもアクセス

ブログのXML-RPC APIでは、ユーザ情報が必要なときはユーザ名とパスワードをそのまま渡すので、セキュリティが心許ない。seesaaではSSLによる暗号化した通信も可能なので、こちらを使ってみよう。XML-RPC端にはhttp://ssl.seesaa.jp/blog/rpcを指定する。

今度はURLをそのまま与えてプロキシを作成。

irb(main):004:0> proxy = XMLRPC::Client.new_from_uri("https://ssl.seesaa.jp/blog/rpc")
=> #<XMLRPC::Client:0x8126b70 @password=nil, @http_header_extra=nil, @use_ssl=true, @host="ssl.seesaa.jp", @user=nil, @proxy_port=nil, @auth=nil, @cookie=nil, @create=nil, @port=443, @http=#<Net::HTTP ssl.seesaa.jp:443 open=false>, @proxy_host=nil, @http_last_response=nil, @parser=nil, @timeout=30, @path="/blog/rpc">

ブログのリストを取得

seesaaで開設しているブログのリストを取得する。戻り値の中のblogNameはUTF-8で「雫」と書いてある。irbの起動時にirb -KuとしてRubyにUTF-8エンコーディングを指示していたら(そして端末がUTF-8を表示できれば)「雫」と表示されるところ。一人でブログを複数持てるので戻り値はブログ情報の配列。blogidの値は他のAPIでブログを指定するために必要となる。

irb(main):005:0> r = proxy.call("blogger.getUsersBlogs", "", "mailaddress@example.com", "MyPassword")
=> [{"blogid"=>"112233", "blogName"=>"\351\233\253", "url"=>"http://uxlf.seesaa.net/"}]

ファイルのアップロード

XML-RPCを使って具体的に何かする例として、ファイルをアップロードしてみる。

XML-RPCで送信するために、まずはファイルの内容をBase64エンコードする必要がある。RubyのXMLRPC APIに文字列を渡すと、中身がバイナリデータであれEUC-JPの文字列であれ、何の変換もせずにそのままXMLメッセージに埋め込んでしまう。そのため簡単に不正なメッセージが作れてしまう。それを避けるためには、UTF-8でエンコードされた文字列以外は直接渡さないよう、プログラマが注意する必要がある。勝手によろしくやってくれればいいのだが、文字列がただのバイト列でしかない今のRubyでは致し方ない。

irb(main):006:0> f = XMLRPC::Base64.new(File.read("foo.txt"))
=> #<XMLRPC::Base64:0x8296924 @str="hogehoge\n">

それが出来たら送信。ファイルを送信するにはmetaWeblog.newMediaObjectというAPIを呼ぶ。

irb(main):007:0> r = proxy.call("metaWeblog.newMediaObject", "112233", "mailaddress@example.com", "MyPassword", { "bits" => f, "name" => "foo.txt" })
=> {"url"=>"http://smpl.up.seesaa.net/foo.txt", "upload_id"=>"11122233", "filename"=>"foo.txt"}

参考

posted by uxlf at 06:30| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2007年02月14日

GPLとかけてゴキブリホイホイと解く、そのこころは

チェックインしたらもう離れられない。

The best way I can describe the GPL is that it's the roach motel of licenses: code checks in, but it doesn't check out.

Kode Vicious (in ACM Queue, Vol.5, No.1)より。roach motelはゴキブリホイホイのような商品(Wikipedia)。そのコピーは "Roaches check in... but they don't check out!"。これにコードのチェックイン・チェクアウトをかけている。

posted by uxlf at 22:26| Comment(0) | TrackBack(0) | UNIX | このブログの読者になる | 更新情報をチェックする

2007年02月02日

Google VideoをダウンロードするRubyスクリプト

download-google-video.rb: コマンドラインでGoogle Videoの動画をダウンロードするRubyスクリプト。 JavaScriptとかフラッシュの使えないブラウザや、 Google Videoを見ようとすると固まってしまうブラウザを使うときに有用かもしれない。ただしかなりいい加減。

用例: download-google-video.rb output.flv 'http://video.google.com/url?docid=4634363396909200237'

引数は二つ。一つめは保存するファイル名。二つめは閲覧ページのURL。URLはシェルのメタ文字等を含むので、クォーテーションが必要。

二つめにはURLの代わりにdocid(URLの中のdocid=に続く数字)でも可。

posted by uxlf at 06:41| Comment(0) | TrackBack(0) | UNIX | このブログの読者になる | 更新情報をチェックする

2006年12月23日

オープンソースのソフトウェア障害自動報告システムをGoogleが開発中

Programs crashing? Airbag helps you practice "safe hex"より。

プログラムがクラッシュしたら自動的にその状況の情報を収集してクラッシュ報告を作成・送信するシステムをGoogleが開発中。その名はAirbag。様々なソフトウェアに容易に組込めるようオープンソースで開発されている。しかも既にFirefoxにはそれが組み込まれようとしているとか。

マイクロソフトなどの製品にも同種の機能を持つものがあるが、こちらはWindowsやMacをサポートし、そして近々Linux等でも動くようになるそうだ。

報告を受信するサーバ側のライブラリも合わせて開発され、バグレポート内の数値とシンボルテーブルを照合したりすることができ、Apacheなどにも(たぶん拡張モジュールとして)容易に組込めるという。

posted by uxlf at 07:00| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2006年12月22日

Rubyのソースコード管理がSubversionに移行

プログラミング言語Rubyのソースコード管理が、これまでのCVSから Subversionに移行した。

CVSのときと同様に、誰でもAnonymous SVNでソースコードを取得できるほか、web上でソースコードをブラウズすることが出来る。

ブランチ コード取得方法
ブラウズ
開発先端 (trunk) svn co http://svn.ruby-lang.org/repos/ruby/trunk ruby
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/
1.8ブランチ (ruby_1_8) svn co http://svn.ruby-lang.org/repos/branches/ruby_1_8
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/
1.8.5ブランチ (ruby_1_8_5) svn co http://svn.ruby-lang.org/repos/branches/ruby_1_8_5
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8_5/

Subversionとは—そのユニークな特色

SubversionはCVSの後継として開発されたソースコード管理システム。ファイルの実体の履歴管理とそのファイル名を分離して管理している。そのためファイル名変更や同じファイルのコピー作成も追跡できるのが大きな特長。

Subversionによるソースコード管理のユニークな特色は、その仕組みを利用して、タグ(ソースコードの特定の状態に名前をつけること)やブランチ(同じソースコードの別バージョンの開発の流れ)も単なるコピーによって表現すること。コピーによって元ファイルのある時点の状態を切り出すことができ、その後そのコピーを変更するとそれは枝分かれ開発になる。

posted by uxlf at 22:32| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2006年12月21日

Wiiストラップで集団訴訟に

ストラップの欠陥のせいでWiiのリモコンが手から外れて飛んでいったと、アメリカで集団訴訟が起こされたらしい。engadget.comの記事(怪我した人の写真つき)では、訴えそのものが多少いかがわしいとか(なぜなら、ストラップが切れたからリモコンが手から離れたと主張しているが、ユーザがリモコンを手放してしまわなければそもそもストラップは切れないわけだし、と)、そう大きな問題には発展しないだろうという見方がされている。

slashdotのスレッドでは関連して、自分が悪くても訴訟に持ち込もうとするアメリカの風潮への批判が提起され、大きな議論になっているのが目立つ。有名な「自分がこぼしたコーヒーで火傷してマクドナルドを訴えた女性」にも話題が及んでいる。任天堂にはおおむね好意的か。ストラップは落下防止のためであって投げつけ阻止のためじゃないしさ、という声も。

posted by uxlf at 22:00| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

GoggleのAPIが消えた

Googleが今まで公開していたWebプログラミング用の検索API(SOAP API)を引っこめてしまった。ただちにAPIが使えなくなったわけではないが、今後は新規の利用ができない。

AJAXによるGoogle検索APIは残すので今後はそちらを使えとの由。

しかし、Googleの検索APIはWebプログラミングの入門として非常によい存在であっただけに、非常に惜しまれる。雑誌やサイトに掲載されているWebプログラミングの入門記事も多くはGoogleのAPIを題材にしており、それらの価値も同時に失われてしまったことになるのだ。

posted by uxlf at 07:03| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

広告


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

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

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