2012年11月24日土曜日

子供のブログ引っ越しのお手伝い

長男がブログを開始して1週間。できること、できないことが分かってきたので、wordpress.comから、ココログに引っ越ししました。

こちらのブログ比較を参考にしました。

引っ越し先を選定する上でのポイントは下記の通り。

  • ブログパーツとして、html(script,iframe)を登録できること
    今回の引っ越しも、長男がブログパーツをいろいろ試したくなったのがきっかけです。
  • インポート/エクスポートができること
    引っ越しには必須です。
    意外にファイル形式に制限があったり、有料対応のところが多かったです。
  • アクセス解析
    ブログ継続のモチベーションになります。
  • Facebookの「いいね」ボタンを登録できること
    これもモチベーションですね
    でも、標準で利用できるものは少なそう。(ココログはできた)
    こちらを参考に、記事毎にlinkを追加する必要があるみたい。
  • スポンサー広告が非表示にできるか
    これはブログにもよりますが、無料だと表示されるものがありますね。
    今回は広告付きを選びました。

今回、初めて知ったのですが、13歳以下はgoogleアカウント作成できないんですね。今回の引っ越し先として、私が利用しているblogger.comも検討したのですが、上述の年齢制限があったので、あきらめました。他のブログの機能比較もしたかったのですし。

このエントリーをはてなブックマークに追加

S3互換ストレージ用clientを作成してみた その4

前回のiPhoneアプリでは、URLの作成およびレスポンスの取得まで行いました。
今回、取得したレスポンスを整形し、簡単なViwerを作成します。
Titanium Mobileのtable viewテンプレート(Master/Detail Application)を利用しました。

Bucket内のファイルの一覧。

選択したファイルの詳細画面。
ファイル名、最終更新日時、サイズを表示します。


今回は、Bucket内のファイルの一覧および詳細情報を表示するだけの簡単なviwerを作成しました。

S3互換ストレージを操作するポイントは、専用URLの作成(もっというとsignatureの生成)ですが、今回は、S3用のモジュールを利用する事で、signature生成手順を特に意識することなく、実装することができました。

前回作成したアプリの仕組みを利用すると、複数ストレージサービスの切り替え、ファイル管理などもできそうです。
(iPhone上でのファイルのupload/downloadは、やった事ないので調べないといけない。。。)

簡単ですが、今日はここまで。
===
<追記>
2012/11/25 まとめを追記しました。

このエントリーをはてなブックマークに追加

2012年11月23日金曜日

S3互換ストレージ用clientを作成してみた その3

前々回前回に続き、今回はiPhoneアプリ作成に挑戦します。
開発環境はTitanium Mobileを利用します。使用verは2.1.xです。
(ver3.0はかなりエラーでたので、今回はver2.1で作成することにしました)

モジュールとしては、下記を利用しました。

TitaniumMobileを使用するのは久しぶりなので、取り急ぎ下記を実装しました。
  • S3互換ストレージ用URLを作成
  • レスポンスを取得
  • レスポンスをXMLからJSONに変換

実行結果は下記の通りです。
自分のBucket内のファイル一覧を取得しています。















ここまでできれば、fileのget,putも同様の手順で実装可能です。

アプリとしては、UIを作り込む必要がありますが、TitaniumはVer3.0で、alloyというフレームワークが導入されたりと、いろいろと環境変化が激しいようなので、そのあたりを見極めた上で、どのように実装するか考えたいと思っています。
(要は、今はUIの実装までしません)

ソースコード整理できたら、githubで公開したいと思います。

今回はここまで。。。
このエントリーをはてなブックマークに追加

2012年11月20日火曜日

S3互換ストレージ用clientを作成してみた その2

前回に続き、今回はjavascript(node.js)でサンプルを作成します。

npmからamazon-s3-url-signerというものを見つけました。
(knoxというものもあったのですが、うまく動作させることができず断念しました。)
ポイントは、endpoint(host名の事)を任意のものに変更できる事です。任意のs3互換のストレージを指定できます。

まずはinstallから。
$sudo npm install amazon-s3-url-signer

key,secret key,host,bucket名などを渡すことで、URLを生成します。
下記はbucket内のobjectをリストするサンプルです。
var s3 = require('amazon-s3-url-signer');
var putUrl = s3.urlSigner('<key>','<secret key>', {
        host: '<host name>',
    }).getUrl('GET', '/', '<bucket>', 600);
console.log(putUrl);

上で出力されるURLをcurlなどで実行すればレスポンスを得る事ができます。
$curl "http://<host>/?Expires=1353454181&AWSAccessKeyId=<key>&Signature=<signature>"

結果、以下のようなAPIのレスポンスを得ることができます。
<?xml version="1.0" encoding="UTF-8"?><ListBucketResult><Name>testsnumano</Name><Prefix/><Marker/><MaxKeys>1000</MaxKeys><Delimiter>/</Delimiter><IsTruncated>false</IsTruncated><Contents><Key>CentOS-6.3-x86_64-LiveCD.iso</Key><Size>725614592</Size><LastModified>2012-11-18T08:52:52.000Z</LastModified><ETag>"9953ff1cc2ef31da89a0e1f993ee6335"</ETag><Owner><ID>b13accef9968b0ebbef4023cc8b9ddbf11970175f1e64727a39142c3cfc7acc5</ID><DisplayName>snumano</DisplayName></Owner></Contents></ListBucketResult>

これで、javascriptを用いたS3互換ストレージ用clientの目処は立ちました。
次は、いよいよ、Titanium Mobileを利用してiPhoneアプリ作りに挑戦です。
このエントリーをはてなブックマークに追加

S3互換ストレージ用clientを作成してみた

といっても、既存のライブラリで簡単に作りたいので、cpanで探してみました。 Amazon::S3が簡単そうです。
$access_key, $secret_keyおよび、hostに適当な値を入力してください。
下記のサンプルだと、bucketの一覧およびbucket内のコンテンツの一覧を表示します。
#!/usr/bin/perl                                                              
use strict;
use warnings;
use Amazon::S3;
my $access_key = '<input access_key>';
my $secret_key = '<input secret_key>';
my $conn = Amazon::S3->new({
aws_access_key_id     => $access_key,
aws_secret_access_key => $secret_key,
        host                  => '<input host>',        # S3使用の場合は省略                  
retry                 => 1,
                           });
my @buckets = @{$conn->buckets->{buckets} || []};
foreach my $bucket (@buckets) {
    print $bucket->bucket . "\t" . $bucket->creation_date . "\n";
    my @keys = @{$bucket->list_all->{keys} || []};
    foreach my $key (@keys) {
print "+- "."$key->{key}\t$key->{size}\t$key->{last_modified}\n";
    }
}

実行結果は下記の通りです。
$ ./s3.pl
testsnunmano2 2012-11-15T16:26:50.000Z
+- crm-search-result.csv 2260132 2012-11-15T16:26:56.000Z
testsnumano 2012-11-12T14:47:58.000Z
+- CentOS-6.3-x86_64-LiveCD.iso 725614592 2012-11-18T08:52:52.000Z

こちらを参考にしました。(ほとんどコピペです)
細かいメソッドについては、Amazon::S3::Bucketを参考にしました。
add_key_filenameやget_key_filenameで、fileのPUT,GETもできそうです。

後になって気づきましたが、Furl::S3 も使えそうです。

次は、javascriptに挑戦です。
このエントリーをはてなブックマークに追加

2012年11月3日土曜日

webサイト情報調査用bookmarklet作成してみた

webサイトを閲覧していて「このサイトはどこのデータセンター・ネットワークに属しているんだろう?」と調べたくなることがあると思います。
whoisなどでdomain情報や、IPが属するネットワーク事業者情報(AS)を調べれば、だいたいはわかります。しかし、いろいろなサイトでそれぞれの情報を調べる必要があり手間です。

そこで、下記サイトを以前作成しました。使い方は簡単、調査したいサイトのFQDNを入力して、「submit」をクリックするだけです。複数行入力も可能です。
http://whois.workaround.jp/

しかし、いちいち入力するのが手間だと感じていたので、今回bookmarkletを用意しました。bookmarklet作成については下記を参考にしました。


準備

作成したbookmarkletは下記です。PCをご利用の方はブラウザのブックマークバーにドラッグしてください。
whois

スマホの方は下記をブックマークとして保存してください。その後ブックマークを編集して、「https://sites.google.com/site/whoisdummy/?」の部分を削除して、保存してください。
whois


使い方

気になるwebサイトで、上記で登録したbookmarkletをクリックしてください。
サイトに関する情報が表示されます。
domain,IPなどの登録情報や、所属するネットワークの情報がわかります。


動作説明

bookmarkletの中身は下記です。
閲覧中のURLからFQDNを抜き出し、以前作成したサイトに対して引数:textareaの値として、getで渡します。
javascript:(function(){var u=new String(window.location);u=u.substring(2+u.indexOf('//'));var p=u.indexOf('/');if(p!=-1)u=u.substring(0,p);window.open('http://whois.workaround.jp/result?textarea='+u);})();


このエントリーをはてなブックマークに追加