投稿

5月, 2011の投稿を表示しています

V8(d8)でLimeChatスクリプトをデバッグするためには

Google Chrome の Javascript エンジン V8 を使って LimeChat スクリプトをデバッグするためのメモ。V8のインストールについてはhttp://shinya-blog.blogspot.com/2011/01/macjavascriptv8.html実際に使用するのは d8。V8のソースからは shell もコンパイルできるが、複数行の命令文を解釈できない。ソースコードで変更しなければならない点は以下のとおりevent::関連。::が構文エラーになるActiveXObject定義しておくべき関数や変数logsendsendRawXMLHttpRequestはどうしたらいいか分からない。ウェブを検索すると非同期通信を除いてはライブラリがあるらしい。また、rhinoであっても標準では付属していない。

Javascript

http://d.hatena.ne.jp/amachang/20080903/1220405193
http://shinya-blog.blogspot.com/動作環境の判別が簡単にできるなら、d8でのみテストコードを実行するとかできそうなんだけどなぁ。

bitly

http://code.google.com/p/bitly-api/wiki/ApiDocumentation#/v3/shortenhttp://code.google.com/p/bitly-api/wiki/ApiBestPracticeshttp://blog.bungu-do.jp/archives/1659http://umeblo.mydns.jp/?p=193LimeChatのヘルプに中にGoogle検索のサンプルがあったので、それを流用してbitlyでURL短縮を行うスクリプトを作ってみました。https://github.com/ust18365/javascript-stuff/blob/master/google-bitly.jsfunctiontinyurl(url) { varlogin='YOUR_LOGIN_ID' varapiKey='YOUR_API_KEY' varencUrl=encodeURIComponent(url); varbitly='http://api.bitly.com/v3/shorten?' varquery='longUrl='+encUrl+'&login='+login+'&apiKey='+apiKey varreq=newActiveXObject("Microsoft.XMLHTTP"); req.open('get',query,false) req.send(''); eval('var s='+req.responseText);

OAuth

日記投稿スクリプトを考え、実際に作ってみる

記日記のバックアップを考える」の続きのようなメモ自分が何を求めているのかをはっきりさせるためにいろいろ文章化してみようと思います。当初作ろうとしていたRubyスクリプトは、ウェブスクレイピングした内容を定期的に投稿するというものでした。日々更新される複数のサイトを巡回して情報収集を行う場合、手動で閲覧して確認するには多くの時間が必要です。この労力を削減するために、要点のみを抽出することを試みました。この時、サイトの巡回とHTMLの解釈が必要になったため、mechanizeやhpricotモジュールを使用することで目的を達成することができました。これによって毎日の更新を確認することはもちろんのこと、時間単位での更新を追うことも可能になしました。この後、こうして集められた情報は自分以外の人にも必要にされていることが分かったため、Bloggerで公開することにしました。また、記事投稿の作業を簡単にするため、bloggerモジュールで自動化できないか調べてみました。その結果、bloggerモジュールが提供しているのは新規記事の投稿であることが分かりました。これでは日に何度も更新すると、不必要になった古いデータが残されたままになってしまいます。このため、記事を更新できるスクリプトを作成しようと考えました。求めている機能について箇条書きでまとめてみます。日付あるいはトピック指定での記事を投稿するサイトを巡回して、データを取得する(既に実現済み)二時間おきに巡回と記事の更新を行う実行環境については以下のように計画しています。herokuで実行します。また、ウェブcronで2時間に一回程度アクセスしてもらいます。herokuは無料の範囲内で運用します1 dyno (1 cpu、10-50 requests/s)更新周期が遅いため処理にもたついても運用できると楽観視しています。こうして自分の求めるものをまとめていると次々に具体的にしなければならないことが浮かび上がってくる上、実は必要なかった機能やその逆が見えてきます。現在公開されている記事は何度も修正されたものとなっています。また、これからも変わっていくでしょう。まだ理解していない、考えがまとまっていないことはエラー処理googleauthモジュールの使用。bloggerモジュールで使われているが実際どんな機能があるのか。何が考…

疑問リスト

XmlSimple.xml_in の引数の意味

日記のバックアップを考える

先日のBloggerダウンからstatus blogの重要性を学びましたが、毎日欠かさず確認して即座にバックアップを取れるようにするのは大変です。そこでどうやってバックアップをとるべきかを考えてみます。バックアップの対象としては、記事の内容やコメント、さらにはブログの設定なども含まれてくるかも知れません。しかし、ここでは第一目標として、ブログの記事のみに的を絞りたいと思います。そうすると、バックアップのタイミングは記事の投稿時のみでよくなります。以下、メモ今頭の中にある方法は、ローカルマシンと他のブログにバックアップを保存しておくことです。どうやって実現するかについては、別件で作成中の記事投稿スクリプトを改変して対応するつもりです。実際の作業の流れは、ローカルで記事の編集を行い、スクリプトの実行でBloggerや他のブログに投稿を行うというようになります。http://wiki.livedoor.jp/staff/d/API/AtomPub
http://auth.hatena.ne.jp/記事の投稿ができるアプリケーションはどのプラットフォームでもいくつかあるし、実際に自分もScribeFireを使ってみている。でも、ローカルにデータを保存しておくことはできないし、複数のブログへ同じ内容を投稿することはできない。

Blogger Buzz: Blogger is back

Blogger Buzz: Blogger is back: "Update (5/13 7:46PM PST): Nearly all posts since Wednesday are restored, now bringing back comments from last couple days. We expect the co..."Bloggerのダウン、そして巻き戻り。何が原因だったのか分からないけど、ことの経緯について記録しておこうと思う。時間についてはおぼろげなので間違っているかも知れない。まず、週の初めあたりに最初の問題が発生した。投稿エディタが読込中になったまま使えず、投稿ができない状態になった。サポートフォーラムを確認すると、ごく狭い地域でこの問題が発生していること、パッチはもう出荷されていること、問題が改善されない場合はキャッシュを削除することなどが報告されていた。しかし、報告通りに問題が改善することはなかった。ただし、旧投稿エディタは問題なく動作していたし、投稿もできた。水曜になって、Bloggerのダウンが発生した。具体的には、Bloggerの閲覧はできるものの、投稿ページであるダッシュボードにアクセスできなくなった。これはstatus blogではメンテナンスと記述されていたが、事前に通知はされていなかった。status blogに予告があったようだが、投稿があったのは直前の9日だった。この数時間後にBloggerのデータが巻き戻され、記事内容が水曜以前のものに置き換えられた。ダウンから丸一日たって、ダッシュボードにアクセスできるようになった。この時Bloggerチームはデータを復元中であると報告していた。そして、現在、「記事の復元が完了し、コメントを復元中である」という報告がなされている。しかし、記事データは水曜以前の古いままである。おそらく、もうデータがもどってくることはないだろう。バックアップとサポートについて考えさせられる一件であった。今回の件から学んだことstatus blog を毎日欠かさず見なければならない。それができないなら、毎日バックアップする仕組を考えなければならない。報告は具体的かつ正確であった方がいい。悪い内容であっても、信頼を損なうことはなくなる。

Ruby de Google Data API

参考ページ Using Ruby with the Google Data APIsRubygemのbloggerモジュールで不足している機能を実現するために、Google Data APIについて学習します。Bloggerモジュールで実現したかったのは定期的な記事修正でしたが、日付指定の記事投稿ができなかったため断念するしかありませんでした。他のモジュールについてはGoogle Data APIを直接扱うものがあり、類似のモジュールがいくつもあります。このため自分にとって何が必要でどのモジュールが適しているのかを判断する必要があります。また、可能ならばbloggerモジュールにコミットしたいと考えています。このような背景からドキュメントを読む必要があると考えました。以下では、まとめきれていないメモを羅列していくつもりです。GET (記事の取得)、 POST (記事の投稿)、PUT (既存の記事を更新)200 (feedやエントリーの取得に成功)、201 (リソース?の作成や更新に成功)、400 (Bad Requiest)Obtaining and install RubyRubyのインストールとXmlSimpleの準備をする。RubyについてはLinuxならすでに用意されているから、aptなどを使うといい。Windowsだったら、Ruby本家のページに行くと様々なパッケージを見つけることができる。XmlSimpleについては、以下のようにしてインストールする。$ gem install xml-simpleサンプルrequire 'net/http'<br />youtube_top_rated_videos_feed_uri = 'http://gdata.youtube.com/feeds/api/standardfeeds/top_rated'<br />uri = URI.parse(youtube_top_rated_videos_feed_uri)<br />p uri.host<br />Net::HTTP.start(uri.host, uri.port) do |http|<br /> puts http.get(uri.path)<br /&…

Ocaml

プログラミングの基礎
http://www.saiensu.co.jp/?page=book_details&ISBN=ISBN978-4-7819-1160-1&YEAR=2007
サポートページ http://pllab.is.ocha.ac.jp/~asai/book/Top.html

Ruby de Blogger

RubyスクリプトからBloggerへ記事投稿を行うためのメモ。

対象とする環境は
$ ruby --version ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.7.0] 使うのは blogger です。

まず、bloggerをインストールします。
% gem install blogger 環境によっては管理者権限で実行する必要があるかもしれません。

日本語の解説で検索上位にあるのは、http://d.hatena.ne.jp/rubellum/20110330/post_to_blogger_ruby

サンプルを実行するには Blog ID が必要になります。Blog ID を確認するためには、「ダッシュボード」→「投稿の編集」などのように辿ります。この時、URLに含まれている「blogID=」以下の数字が Blog ID となります。

このbloggerモジュールでは非常に簡単に記事の投稿が行える反面、扱える機能が少なく、日付を指定して投稿するなどの操作を行うことができない。

仕様

要求仕様の美学
http://it.impressbm.co.jp/taxonomy/term/134
http://it.impressbm.co.jp/e/2009/02/16/498