2012年12月1日土曜日

無料で米国の電話番号をgetする

そんな方法があると聞いて調べてみたところ、下記ブログを見つけました。

How to Get US Phone Number (Virtual Number) for Free

実際に確認できたのは下記のものです。

  • Whistle
    MacとiPhoneアプリで動作確認できました。
    米国の電話番号で音声通話の着信ができます。
    (発信は未確認ですができるようです)
  • TextFree
    WebアプリとiPhoneアプリで動作確認できました。
    米国の電話番号でSMSの送受信ができます。
    メール送信の際には、@textfree.usのドメインを使用します。
  • TextNow
    iPhoneアプリで動作確認できました。
    米国の電話番号でSMSの送受信ができます。
    メール送信の際には、@textnow.meのドメインを使用します。
    米国の電話番号で音声通話の着信ができます。無料だと5分間のみの制限あり。
    (発信は未確認ですができるようです)
  • textPlus
    iPhoneアプリで動作確認できました。
    米国の電話番号でテキストメッセージの送受信ができます。
    (音声通話の送発信は未確認ですができるようです)
  • HeyWire
    iPhoneアプリで動作確認できました。
    米国の電話番号でSMSの受信ができます。
    (送信はHeyWireユーザのみ可能のようです)

結局、上記5つの電話番号をgetすることができました。
ほとんどのサービスで、郵便番号もしくはarea codeを指定することで、指定のarea codeの電話番号を取得することができました。

電話番号取得にはそれなりのコストを要する事から、本人認証にも使用されていましたが、このように無料で取得できるようになると、今後も認証に使用できるのか疑問に感じます。
また、電話番号は国番号という国境(ボーダー)が存在しますが、ボーダーレスのインターネットと接続することで、電話番号もまたボーダーレスになりつつあるんだなと感じました。
このエントリーをはてなブックマークに追加

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);})();


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

2012年10月16日火曜日

複数のクラウド(IaaS)を1つのAPIで利用できるApache Libcloudとlc-toolsを使ってみた

数ヶ月前に「Apache Libcloud」の存在を知り、やっと触る時間がとれたので備忘録的に記載します。また、この間にLibcloudが少しは盛り上がるかと思いましたが、全く盛り上がっていません。今後に期待しつつ。。。

Apache Libcloudとは

Apache Libcloud(以降、Libcloud)は、Amazon EC2、Rackspace Cloud Servers等、20種類以上のクラウドサービスのAPIを抽象化(1つのAPIで利用できるように)したpythonライブラリです。2009年にApache Software Foundation(ASF)のプロジェクトに加わったようです。

詳細は下記をご参照ください。
メタクラウドAPI」がオープンソースで登場 - Publickey 
Apache、共通クラウドAPIを目指す「Libcloud」をトップレベルプロジェクトに:ITpro 

実際に使ってみる

こちらを参考に、Libcloudのinstallおよび、AWS EC2のVM listを取得してみました。
ACCESS_IDとSECRET_IDを記載するだけで、簡単に取得できました。
(一部伏せ字。出力結果は見やすくするため改行をいれています。)
$ python test.py
---snip---
list_nodes-----------------
[<Node:
  uuid=xxxxxxxxxxxxxxxxxxxxxxxx,
  name=test,
  state=0,
  public_ips=['x.x.x.x'],
  provider=Amazon EC2 (ap-northeast-1)
...>]
---snip---
しかし、他のクラウド事業者(CloudStack等)で試そうと思った所、Provider名や、API_KEY,SECRET_KEY,URLなどの指定方法が分からない。
LibcloudのHPにも少しサンプルやDocumentはあるのですが、やはり分からない、もしくは難しくて理解できない。。。ネットで調べても情報が少ない。。。

分かりやすいDocumentやサンプルって重要だなと、改めて感じました。

Libcloud用コマンドラインツール lc-tools

Libcloudの使用をあきらめかけた時、「lc-tools」なるものを見つけました。ここ10ヶ月程更新がないのは気になりますが、まずは使ってみます。
DocumentやTutorialが用意されていますので、参考にしながら、まずは下記でlc-toolsをinstallします。
%git clone https://github.com/novel/lc-tools.git
%cd lc-tools
%sudo python setup.py install
次にVM listの取得に挑戦です。今回は、私が開発に携わっているIDCフロンティア クラウドセルフサービス(以後、IDCFクラウド)を対象とします。
IDCFクラウドはCloudStackを利用しており、CloudStackはLibcloudのサポート対象になっています。

~/.lcrcに下記設定ファイルを用意しました。(一部伏せ字)
[idcf]
driver = cloudstack
access_id = xxx
secret_key = xxx
extra = { "host": "xxx.jp", "secure": True, "path": "/portal/client/api" }
下記、実行結果です。
期待通り、VM2台の情報が出力されました。が、出力結果が意外にシンプルすぎます。
(一部伏せ字。出力結果は見やすくするため改行をいれています。)
$ cd lc-tools/
$ ls -1

LICENSE
MANIFEST.in
NEWS
README.md
TODO
VERSION
build
doc
lb-add
lb-destroy
lb-list
lb-member-add
lb-member-list
lb-member-remove
lc-drivers-list
lc-image-list
lc-locations-list
lc-node-add
lc-node-do
lc-node-list
lc-sizes-list
lctools
man
media
provider_specific
scripts
setup.py
test

$ ./lc-node-list -p idcf
---snip---
<Node:
  uuid=xxx,
  name=test,
  state=2,
  public_ips=[],
  provider=CloudStack
...>
<Node:
  uuid=xxx,
  name=test2,
  state=2,
  public_ips=[],
  provider=CloudStack
...>

まとめ

  • Libcloudは20種以上のクラウドサービスに対応しているので、複数サービスを利用している人にとっては、管理が集約できる可能性あり。
  • しかし、現時点では、こちらにも記載があるようにクラウドによって、使用可能な機能に差異がある。また、当然、native API程細かい操作はできない。出力結果も情報が少なすぎるかな。。。
  • Libcloudに関する情報が少なく、ほとんどの人にとっては敷居が高い。
  • Libcloudのコマンドラインツールであるlc-toolsによって、この敷居が低くなる事を期待したい。

Apacheのプロジェクトなので、今後、盛り上がる事を期待したいです。
このエントリーをはてなブックマークに追加

2012年10月14日日曜日

blogにFacebookのlikeボタンをつけてみる

少しハマったので、備忘録として。
ブログ環境としては、Bloggerを使用しています。

ここを参考にlikeボタンのHTML5コードを作成します。
しかし、作成されたコードをそのまま<body>タグを直後にペーストして保存しようとすると、下記エラーが表示されます。
"The reference to entity "appId" must end with the ';' delimiter."
こちらで紹介されている、コードencodeツールを使ってencodeします。
encodeしたものを<body>タグの直後の再度ペーストしたところ、今度は問題なく保存できました。

このブログの右上に、likeボタン設置できました。
ぜひ、"like"をお願いします!

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

2012年10月4日木曜日

IDCFクラウドセルフとCONTEGIX MIRACLOUDを見比べてみる

突然ですが、米国の事業者(CONTEGIX)のIaaSサービス(MIRACLOUD)の画面を見てみましょう。




ん?どこかで見たような画面ですね。
そうです、IDCFクラウドのセルフの画面です。





それもそのはず。どちらもCitrix社のCloudPortal+CloudStackを使用しているからです。

同じソフトウェアを使用しているので、見た目・操作性はほぼ一緒。(サービス仕様の違いから、若干の差異あり)
しかも、日本語も対応済。海外のクラウドサービスなのに、普通に日本語表示してくれれるのは地味にうれしいはず。

MIRACLOUDの料金はこちら。従量課金と月額課金が用意されています。

IDCFクラウドセルフを使っていて、急に海外でサーバが必要になった場合は、同じ操作性のCONTEGIX MIRACLOUDも選択肢に入れてみてはいかがでしょうか。
このエントリーをはてなブックマークに追加

2012年9月10日月曜日

OpenFlow Tremaのサンプルプログラム作りに挑戦

前回から少し間が空きましたが、この間TremaとRubyの勉強を(少し)していました。
今回はTremaを使ってOpenFlowスイッチの統計情報を表示するサンプルプログラム作りに挑戦します。
作成し終わってから、似たようなサンプルがあることに気づきましたが、スルーします。

環境準備

下記サイトを参考にinstallします。
https://github.com/trema/trema/blob/develop/README.md

下記のサンプルコードも同時に、src/examples/にinstallされます。
https://github.com/trema/trema/tree/develop/src/examples


install完了したら、上述のlink先のtutorialや下記のTrema編の情報をみながら、実際にサンプルコードを触りながら、動作を確認していきます。Tremaはイベント駆動型で、最初は少し戸惑いました。
http://gihyo.jp/dev/serial/01/openflow_sd

サンプル

今回はOpenFlowスイッチの統計情報を収集するサンプルを作成します。
ネットワーク機器を運用していると、何かと統計情報を参照することが多いので、Tremaで、どのような情報を収集できるのか気になります。

tremaに付属しているサンプル「traffic_monitor」を元に、機能追加する形で実装します。

Trema APIはこちらにreferenceがありますが多すぎるので、まずは、こちらに記載のものから少しずつ試すのがいいと思います。
今回は、下記の2つのrequest messageをOpenFlowコントローラからOpenFlowスイッチに送出し、その結果を対応するevent handlerで待ち受けます。

<メッセージ>
Trema::FeaturesRequest
Trema::PortStatsRequest

<Event Handler>
features_reply(datapath_id, message)
stats_reply(datapath_id, message)

下記はコード抜粋です。
 class TrafficMonitor < Controller
 ---snip---
  def switch_ready datapath_id
    @datapath_id = datapath_id
    send_message datapath_id, FeaturesRequest.new
    send_message datapath_id, PortStatsRequest.new
  end
  def features_reply datapath_id, message
    puts "---------"
    p message.datapath_id
    p message.transaction_id
    p message.n_buffers
    p message.n_tables
    p message.capabilities
    p message.actions
    puts "==="
    p message.ports
  end
  def stats_reply datapath_id, message
    p message.flags
    p message.transaction_id
    p message.type
    puts message.stats
  end
 ---snip---
OpenFlowスイッチと接続時(switch_ready)、OpenFlowコントローラからOpenFlowスイッチに対して、FeaturesRequestとPortStatsRequestメッセージを送出しています。その後、OpenFlowスイッチからのそれぞれの応答(FeaturesReplyとPortStatsReply)を受け取ります。それぞれの応答を受け取るためのEvent Handler、はfeature_replyとstats_replyです。

出力結果は下記の通りです。
とりあえず、featuresとportstatsのreply messageを取得できていることがわかります。
$ cd trema/src/examples/test/
$ ls
fdb.rb  readme  traffic-monitor.rb  traffic_monitor.conf
$ ~/trema/trema run traffic-monitor.rb -c traffic_monitor.conf
##### features_reply結果 #####
---------
2748
174194689
256
1
135
4095
===
[#<Trema::Port:0xb734bc5c @peer=0, @name="trema0-0", @state=0, @supported=0, @config=0, @hw_addr=#<Trema::Mac:0xb734bc84 @string="3a:91:53:f7:8e:b7", @value=64395853401783>, @advertised=0, @number=2, @curr=192>, #<Trema::Port:0xb734b7e8 @peer=0, @name="vsw_0xabc", @state=1, @supported=0, @config=1, @hw_addr=#<Trema::Mac:0xb734b84c @string="e2:4d:c0:65:dc:2a", @value=248823568260138>, @advertised=0, @number=65534, @curr=130>, #<Trema::Port:0xb734b16c @peer=0, @name="trema1-0", @state=0, @supported=0, @config=0, @hw_addr=#<Trema::Mac:0xb734b310 @string="8a:75:10:17:c2:1c", @value=152235385799196>, @advertised=0, @number=1, @curr=192>]
###### stats_reply(PortsStatsReply)結果 #####
0
174194690
4
#<Trema::PortStatsReply:0xb73499e8>
collisions: 0
port_no: 2
rx_bytes: 0
rx_crc_err: 0
rx_dropped: 0
rx_errors: 0
rx_frame_err: 0
rx_over_err: 0
rx_packets: 0
tx_bytes: 0
tx_dropped: 0
tx_errors: 0
tx_packets: 0
#<Trema::PortStatsReply:0xb734922c>
collisions: 0
port_no: 65534
rx_bytes: 0
rx_crc_err: 0
rx_dropped: 0
rx_errors: 0
rx_frame_err: 0
rx_over_err: 0
rx_packets: 0
tx_bytes: 0
tx_dropped: 0
tx_errors: 0
tx_packets: 0
#<Trema::PortStatsReply:0xb734850c>
collisions: 0
port_no: 1
rx_bytes: 0
rx_crc_err: 0
rx_dropped: 0
rx_errors: 0
rx_frame_err: 0
rx_over_err: 0
rx_packets: 0
tx_bytes: 0
tx_dropped: 0
tx_errors: 0
tx_packets: 0


サンプルプログラム全体はgithubに置いてあります。
https://github.com/snumano/trema_stats

ハマりポイント

  • Trema情報少ない
    v0.2.5なので、現状では仕方ないですね。上述のサイトのtutorialやサンプルを参考に、必要なAPI documentを読んでいきます。
  • どのEvent Handlerを使えばいいか分かりづらい。
    上記のサンプルでは2種類のメッセージに対応するEvent Handlerを使っていますが、stats_replyで複数のメッセージ(*StatsRequets)に対応するReplyのEventを待ち受けするようです。
    ここのmessageのOb jectの説明をみてやっと理解できました。
  • バグや実装漏れ、ドキュメント間違い
    上述のstats_replyの動作について、実際の動作とDocumentに差異があり、悩んでいたのですが、結局古いTremaバージョンの不具合だったようで、最新バージョンにすることで解消しました。(常に最新バージョンにするようにしたほうがいいですね)
    また、ドキュメントにも小さな記載間違いなどがあるので、都度、確認するようにしています。間違いなど見つけたら、Issue Trackerに記載するようにしています。

引き続き、Tremaのサンプル作りに挑戦したいと思います。次はFlow情報系かな。。。

<追記>
・2012/9/10 出力結果追記
このエントリーをはてなブックマークに追加

2012年7月29日日曜日

OpenFlow環境をつくってみた(Trema編)










前回まででNOXに落ち着きそうだったのですが、Tremaの紹介記事が分かりやすかったので、Tremaに関心が向いてしまいました。さらに、Trema自体に仮想スイッチ・仮想ホストを自由なトポロジで簡単にエミュレートする機能もあり、さらに気にいってしまいました。
Trema github

下記記事では、上のtutorialなどを日本語でさらに分かりやすく説明しています。
こんな夜中にOpenFlowでネットワークをプログラミング!:第7回 【Trema編】新シリーズ始動! OpenFlow界のRailsことTrema入門

環境準備、コントローラー、NWエミュレータの設定は上記記事を参考にして、順調にすすめられました。
また、Rubyは初めてだったので、平行してdotinstallで勉強しました。
NWエミュレータの説明はこちらが参考になります。Open vSwitchを使ってるみたいですね。

気になったのはテストです。プログラミングは専門ではなかったので、ちゃんとテストを考えたことなかったのですが、最近「TDD:Test Drive Development(テスト駆動開発)」という言葉を知り、気になっていたのですが、どのようにテストを書いたらいいのか考えていたところに、よい事例紹介がありました。
こんな夜中にOpenFlowでネットワークをプログラミング!:第9回 【Trema編】テストファーストでアジャイルに

ここでハマったのは、Rubyのversionです。私の環境では、Ruby v1.9.3では、ruby テストフレームワークのRSpecがうまく動かなかったので、rvmを使ってrubyバージョンを切り替えられるようにして、v1.8.7で正常動作確認できました。



今は、上記の本を読んでいるところです。Rspecの説明もありますが、BDD(ビヘイビア駆動開発)の概念とその実践の説明になっています。
OpenFlowからは離れつつありますが、Seleniumへの応用ができる予感がしています。

Ruby on Railsアプリ以外でも Selenium RC を使えば RSpec でテストが書ける! - @yuumi3のお仕事日記 

次回OpenFlowの話に戻れるか、テストの話になるか、はたまた全く関係のない話になるか分かりませんが、今日はこの辺で。。。
このエントリーをはてなブックマークに追加

2012年7月14日土曜日

IT系ステッカー入手方法まとめ

最近、IT系のイベントでステッカー配布されること多いですよね。
で、いざ貼ろうと思ったら、すでにどこかにいってたり。。。
備忘録として改めて、ステッカーの入手方法をまとめてみました。

  1. イベントに参加してもらう
  2. サイトで配布されているステッカーをもらう
  3. webサイトの各専用storeで購入
  4. ステッカー販売サイトで購入
  5. その他

では、順番にみていきましょう。

  1. イベントに参加してもらう
    webサービス系、クラウドサービス系の企業が主催のイベント、勉強会などで配布されることが多いかと思います。
    勉強会の情報については、以前こちらにまとめてみました。

  2. サイトで配布されているステッカーをもらう
    プロモーション目的で配布しているようです。
    送料などの手数料が必要な場合がほとんです。たまに送料不要なケースもあるようですが、最新の情報を確認するようにしましょう。
    How to Get Stack Overflow Stickers « Blog – Stack Exchange http://blog.stackoverflow.com/2009/09/how-to-get-stack-overflow-stickers/
    ※国際郵便、SASE郵便を使うようで、少し手間です。まだ試してはないですが、今でも入手は可能そうです。

    Basho | Get Free Stickers 
    http://basho.com/community/request-stickers/
    ※米国から実際に届き、感激しました。

    Gmailのオリジナルステッカーが貰えるらしい 貰う方法をご紹介 - WEBマーケティング ブログ
    http://web-marketing.zako.org/google/get-your-gmail-stickers.html

    他にも一般に公開はしておらず、メルマガ・ML等に登録していれば、そこで案内されているものもあるようです。
  3. webサービスの各専用ストアで購入
    海外のweb系サービスでは、専用のストアでグッズを販売してるんですね。ステッカーも販売されています。
    下記にまとまっていますので、こちらを参考にさせていただき、githubのステッカーを購入しました。

    Webサービス系ステッカーを集めよう!!
  4. ステッカー販売サイトで購入
    stickerなどで検索すれば、ステッカー専門サイトが多く見つかります。

    MacBook Air用デコシールがマジかっこよすぎ!リンゴが光るデザインステッカーの入手方法と貼り方まとめ | Chrome Life で紹介されているetsyでは、MBAの天板向けのステッカーがたくさんあります。

    stickermuleもかっこいいステッカーが揃ってます。自分の好きなステッカーを注文することもできます。
  5. その他
    自分でステッカーをデザイン、作成される人もいらっしゃるかもしれません。ステッカー作成サイトや作成する機会も販売されているようです。

    また、知り合いを辿って、ステッカーを入手するというのアリですね。

    勉強でお世話になっているdotinstall では応援企画で、ステッカーの販売もされています。(応援しているので早速購入させていただきました)
    ステッカーを購入してドットインストールを応援してみませんか?




私はAppceleratorのステッカーが欲しいです。。。
---
<追加>
2012/10/25 stickermule追加しました。

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

2012年7月12日木曜日

OpenFlow環境をつくってみた(NOX,Mininet編)

前回OpenFlow環境をつくった際に使用したMininet VM imageにNOXが入っていることや、Tutorialにもその辺りの記述があるのに気づきました。
今回は、Mininet VM imageにinstallされているものだけで、OpenFlowコントローラー(NOX)、OpenFlowスイッチ(Mininet)を準備します。
前回の説明と重複する部分がありますが、ご容赦ください。

Mininet VM imageの準備
  1. MininetのVM imageをDL
    こちらを参考にMininetのVM imageをDLします。
  2. VirtualBoxのinstall
    こちらからOS X用をDL
  3. VirtualBoxにて、VMを新規作成
    こちらを参考に、VM新規作成後、HDDイメージとして、上記1でDLしたvmdx fileを指定。
  4. VirtualBoxにて当該VM imageを選択し、設定をクリック。
    ネットワークを選択し、ネットワーク設定を実施(今回はブリッジとして、Wi-fiを選択)
  5. VirtualBoxにて当該VMを起動、login
    ID:openflow
    PW:openflow
  6. /sbin/ifconfig eth0 にて、VM側のIPを確認
    (defaultではDHCPになっているので必要に応じて、static IPを設定してください。こちらが参照になります)
  7. Macからssh接続。
    上記6で確認したIPに対して、ターミナルからssh接続します。
    MAC$ ssh -X openflow@192.168.*.*         #VMのIPを指定。
                                                                       #X windowを利用できるように-Xを指定
    openflow@192.168.*.*'s password:          #default PW:openflow 
    Welcome to Ubuntu 11.10 (GNU/Linux 3.0.0-12-generic i686)
    
     * Documentation:  https://help.ubuntu.com/
    New release '12.04 LTS' available.
    Run 'do-release-upgrade' to upgrade to it.
    
    Last login: Thu Jul 12 07:02:00 2012
    openflow@mininet-vm:~$                            #VMにlogin
    



OpenFlowコントローラーの起動

  1. こちらを参考に、noxの起動
  2. openflow@mininet-vm:~$ cd ~/noxcore/build/src/
    openflow@mininet-vm:~/noxcore/build/src$ sudo ./nox_core -v -i ptcp: pytutorial
    00001|nox|INFO:Starting nox_core (/home/openflow/noxcore/build/src/.libs/lt-nox_core)
    00002|nox|INFO:nox bootstrap complete
    


OpenFlowスイッチの起動
  1. こちらを参考に、Mininetを起動。スイッチ:s1に、ホスト:h2,h3,4を接続。
    nodes,netコマンドで、node情報、接続情報を確認。
    pingallコマンドで、h2,h3,h4間でpingが通ることを確認。
    例として、h2 ifconfigコマンドにて、特定hostにてlinuxコマンドを実行。
    MAC$ ssh -X openflow@192.168.*.*
    openflow@192.168.*.*'s password: 
    Welcome to Ubuntu 11.10 (GNU/Linux 3.0.0-12-generic i686)
    
     * Documentation:  https://help.ubuntu.com/
    New release '12.04 LTS' available.
    Run 'do-release-upgrade' to upgrade to it.
    
    Last login: Thu Jul 12 07:08:56 2012 from 192.168.115.139
    openflow@mininet-vm:~$ sudo mn --topo single,3 --mac --switch ovsk --controller remote
    *** Loading openvswitch_mod
    *** Adding controller
    *** Creating network
    *** Adding hosts:
    h2 h3 h4 
    *** Adding switches:
    s1 
    *** Adding links:
    (s1, h2) (s1, h3) (s1, h4) 
    *** Configuring hosts
    h2 h3 h4 
    *** Starting controller
    *** Starting 1 switches
    s1 
    *** Starting CLI:
    mininet> nodes
    available nodes are: 
    h4 h3 h2 s1 c0
    mininet> net
    s1 <-> h2-eth0 h3-eth0 h4-eth0
    mininet> pingall
    *** Ping: testing ping reachability
    h2 -> h3 h4 
    h3 -> h2 h4 
    h4 -> h2 h3 
    *** Results: 0% dropped (0/6 lost)
    mininet> h2 ifconfig
    h2-eth0   Link encap:Ethernet  HWaddr 00:00:00:00:00:02  
              inet addr:10.0.0.2  Bcast:10.255.255.255  Mask:255.0.0.0
              inet6 addr: fe80::200:ff:fe00:2/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:32 errors:0 dropped:0 overruns:0 frame:0
              TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:2344 (2.3 KB)  TX bytes:1028 (1.0 KB)
    
    mininet> 
    
これで、とりあえずOpenFlowコントローラーとスイッチが起動できました。

GUIコマンドの実行
MininetのHPに掲載されているGUIコマンドを試してみます。
  • consoles.py
    MAC$ssh -X openflow@192.168.*.*
    openflow@192.168.*.*'s password: 
    Welcome to Ubuntu 11.10 (GNU/Linux 3.0.0-12-generic i686)
    
     * Documentation:  https://help.ubuntu.com/
    New release '12.04 LTS' available.
    Run 'do-release-upgrade' to upgrade to it.
    
    Last login: Thu Jul 12 07:27:10 2012 from 192.168.115.139
    openflow@mininet-vm:~$ cd mininet/examples/
    openflow@mininet-vm:~/mininet/examples$ pwd
    /home/openflow/mininet/examples
    openflow@mininet-vm:~/mininet/examples$ sudo ./consoles.py 
    *** Adding controller
    *** Creating network
    *** Adding hosts:
    h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 
    *** Adding switches:
    s17 s18 s19 s20 s21 
    *** Adding links:
    (h1, s18) (h2, s18) (h3, s18) (h4, s18) (h5, s19) (h6, s19) (h7, s19) (h8, s19) (h9, s20) (h10, s20) (h11, s20) (h12, s20) (h13, s21) (h14, s21) (h15, s21) (h16, s21) (s17, s18) (s17, s19) (s17, s20) (s17, s21) 
    *** Configuring hosts
    h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 
    *** Starting controller
    *** Starting 5 switches
    s17 s18 s19 s20 s21 
    上記コマンドによって、新たにhost16台、スイッチ5台が作成されます。
    (先のMininetコマンドにて作成した構成を利用する方法はこれから調べます。。。)
    h1にてping 10.0.0.2(host2のIP)、h2にてifconfigを実行しています。
  • miniedit.py
    openflow@mininet-vm:~/mininet/examples$ pwd
    /home/openflow/mininet/examples
    openflow@mininet-vm:~/mininet/examples$ ls
    baresshd.py     hwintf.py           README             tree1024.py
    consoles.py     linearbandwidth.py  scratchnet.py      treeping64.py
    controllers.py  miniedit.py         scratchnetuser.py
    emptynet.py     multitest.py        sshd.py
    openflow@mininet-vm:~/mininet/examples$ sudo ./miniedit.py 
    下記のような画面が起動するので、スイッチ、hostを描いて、線で接続します。
    (しかし、この後の起動のさせ方はわかりませんでした。。。)


    今回は、Mininet VM imageに含まれるアプリのみで、OpenFlowコントローラー、スイッチを起動してみました。また、GUIコマンドもいくつか起動してみました。

    次回からはいよいよ、コマンド詳細を調べて、複雑な構成・設定を試していきたいと思います。

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

2012年7月8日日曜日

OpenFlow環境をつくってみた(POX,Mininet編)

前回、Windows環境にて、VMware Playerと安価な物理スイッチ(実際にはwifiルータ)を使って環境をつくりました。

しかし、最近はMacを使うことが増えてきたので、MacでOpenFlow環境をあらためて準備することにしました。MacはLANポートないので、できればOpenFlowスイッチもソフトウェアのものを使いたいところです。
ちょうど下記ブログを見つけましたので、参考にさせていただきました。
きりんさん日記: OpenFlow Controllerフレームワーク(Python/POX, Trema/Ruby, C, Java)を試す(Simple Learning L2 Switch) 

調べると、仮想マシン上にOpenFlowコントローラ・スイッチをinstallすれば、物理PCのOSにこだわる必要はなさそうです。
また。MininetというPythonベースのOpenFlowスイッチ(エミュレータ)の存在を知りました。これで複雑なネットワークトポロジおよびエッジスイッチに接続するhostもエミュレータできます。VM imageがあるとのことなので利用することにします。MacにV仮想環境としてVirtualBoxをinstallし、VM imageを起動します。
OpenFlowコントローラは、NOXのPython版の「POX」があり、Macにinstallできるので、これを利用することにします。
どちらもPythonベースです。ちょうどPythonを勉強しているので、いいタイミングです。

OSOpenFlow
ver
OpenFlow
コントローラー
OpenFlow
スイッチ
備考
前回Win1.1NOX 1.1 OflibOpenFlow 1.1 for WHR-G301N前回記事参照
Win以外も可能
今回Mac1.0POXMininetMac以外も可能
たまたまどちらも1.0対応


OpenFlowコントローラーの準備
インストール手順は下記の通り。

  1. https://github.com/noxrepo/poxにアクセス
  2. git cloneで、localにコピー
    Mac用のgithubアプリをinstallしている場合、下記の「Clone in Mac」をクリックし、適当な場所にclone(保存)
  3. ターミナル画面をopenし、上記2で保存した場所に移動
    lsすると、下記のようなファイル・フォルダが確認できます。
    $ pwd
    /Users/N1202A013/Documents/github/pox
    43220800:pox N1202A013$ ls
    COPYING  debug-pox.py ext  pox.py  tests
    README  doc  pox  setup.cfg tools 
  4. POXを起動
    下記のように、Moduleを指定して起動します。これで、OpenFlowスイッチに問い合わせ待ち状態になります。(オプションを指定することで、問い合わせ元のIPやportを指定・変更することもできます。今回は省略)
    $ ./pox.py forwarding.l2_learning
    POX 0.0.0 / Copyright 2011 James McCauley
    DEBUG:core:POX 0.0.0 going up...
    DEBUG:core:Running on CPython (2.7.3/Apr 9 2012 20:52:43)
    INFO:core:POX 0.0.0 is up.
    This program comes with ABSOLUTELY NO WARRANTY.  This program is free software,
    and you are welcome to redistribute it under certain conditions.
    Type 'help(pox.license)' for details.
    DEBUG:openflow.of_01:Listening for connections on 0.0.0.0:6633
    Ready.
    POX> 
    

OpenFlowスイッチ(Mininet)の準備

  1. MininetのVM imageをDL
    こちらを参考にMininetのVM imageをDLします。
  2. VirtualBoxのinstall
    こちらからOS X用をDL
  3. VirtualBoxにて、VMを新規作成
    こちらを参考に、VM新規作成後、HDDイメージとして、上記1でDLしたvmdx fileを指定。
  4. VirtualBoxにて上記3で作成したVMを起動、該当VMにlogin
    ID:openflow
    PW:openflow
  5. Mininetを起動。コントローラーとして、上述のPOXを指定
    スイッチ:s1に、ホスト:h2,h3を接続し、h2,h3間でpingが通ることを
    openflow@mininet-vm:~$ sudo mn --controller=remote --ip=<POX IP> --port=6633
    *** Adding controller
    *** Creating network
    *** Adding hosts:
    h2 h3 
    *** Adding switches:
    s1 
    *** Adding links:
    (s1, h2) (s1, h3) 
    *** Configuring hosts
    h2 h3 
    *** Starting controller
    *** Starting 1 switches
    s1 
    *** Starting CLI:
    mininet> nodes
    available nodes are: 
    h2 h3 s1 c0
    mininet> net
    s1 <-> h2-eth0 h3-eth0
    mininet> pingall
    *** Ping: testing ping reachability
    h2 -> h3 
    h3 -> h2 
    *** Results: 0% dropped (0/2 lost)
    mininet> 
    
    

参考までに、上記コマンド実行時のPOX側のdubug画面を下記に添付します。
上記のpingallのタイミングで、OpenFlowスイッチ(Mininet)からOpenFlowコントローラ(POX)に問い合わせがきているようです。(詳細はおいおい調べていくということで)
POX> INFO:openflow.of_01:[Con 1/1] Connected to 00-00-00-00-00-01
DEBUG:forwarding.l2_learning:Connection [Con 1/1]
INFO:openflow.of_01:[Con 1/1] closing connection
INFO:openflow.of_01:[Con 2/1] Connected to 00-00-00-00-00-01
DEBUG:forwarding.l2_learning:Connection [Con 2/1]
DEBUG:forwarding.l2_learning:installing flow for 2e:b8:2d:29:f4:97.2 -> 4a:8f:f1:97:0c:c3.1
DEBUG:forwarding.l2_learning:installing flow for 4a:8f:f1:97:0c:c3.1 -> 2e:b8:2d:29:f4:97.2
DEBUG:forwarding.l2_learning:installing flow for 2e:b8:2d:29:f4:97.2 -> 4a:8f:f1:97:0c:c3.1
DEBUG:forwarding.l2_learning:installing flow for 2e:b8:2d:29:f4:97.2 -> 4a:8f:f1:97:0c:c3.1
DEBUG:forwarding.l2_learning:installing flow for 4a:8f:f1:97:0c:c3.1 -> 2e:b8:2d:29:f4:97.2
DEBUG:forwarding.l2_learning:installing flow for 2e:b8:2d:29:f4:97.2 -> 4a:8f:f1:97:0c:c3.1
DEBUG:forwarding.l2_learning:installing flow for 4a:8f:f1:97:0c:c3.1 -> 2e:b8:2d:29:f4:97.2

まとめ

  • 今回、Mac上にOpenFlow環境を構築しました。
    • OpenFlowコントローラーとしてNOX、OpenFlowスイッチとしてMininetを使用しました。
    • 今回の環境はMac以外にの環境でも実装可能です。
  • Mininetはいろいろと動作させることができ、面白そうです。引き続き調べたいと思います。
    • Mininetは、OpenFlowコントローラに問い合わせしなくても単体でも動作するようです。
    • 今回のMininet操作については、こちらの「Getting Started with Mininet」の上3つのdocを参考にしました。
    • Mininet tutorialに詳細説明がありそう。

続く。。。

2012/7/9 追記
MininetのVMにはNOXもinstallされていました。結局、Mininet VMがあれば一通りの環境はできそうです。下記参考になりました。
http://www.openflow.org/wk/index.php/OpenFlow_Tutorial

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

2012年7月5日木曜日

OpenFlow環境をつくってみた

以前から気になっていたOpenFlow。
最近、「自宅ラック勉強会」にてbuffaloのwifiルータをOpenFlowスイッチ化するのが気になっていましたが、先日、とうとう衝動的にやってみました。
OpenFlowスイッチは簡単に設定できましたが、OpenFlowコントローラの方が手間取ったので、備忘録として残しておきます。


OpenFlowスイッチの準備

使ったスイッチは「WHR-G301N」。アマゾンで約2500円でした。



下記サイトの「OpenFlow 1.1 for WHR-G301N 作成手順v1.0」を参考に、OpenFlow1.1をinstall。数分で完了。感謝です。
http://www.srchack.org/index.php?topic=Network

OpenFlowスイッチのIPは192.168.1.1/24なので、PC側のIPを192.168.1.10/24など適切なものに設定し、PCからOpenFlowにtelnet(port:23)すると、、、



















無事接続できました!


OpenFlowコントローラの準備

次はコントラーラです。
上述の同じサイトで「NOX 1.1 Oflib を導入済みのVMwareイメージ」を用意してくれているので、これを使いました。(CentOSにNOX 1.1 Oflibのinstallを試しましたが、エラーがでて挫折しました。MacOSでも挫折しました。)


VMwareイメージのOSはUbuntuです。Ubuntuはほぼ初めてです。


使用した環境は下記の通りです。
WindowsVista
VMWare Player4.0.4

今回の構成は下記とします。PCと仮想マシンはブリッジ接続の想定。仮想マシン(192.168.1.11/24)     --+   PC LAN(192.168.1.10/24)         --+--  OpenFlowスイッチ間(192.168.1.1/24)

VMWare Playerから該当イメージを起動後の手順は下記の通り。

  1. 文字化け対応
    下記サイトを参考に~/.bashrcを変更します。http://hamamuratakuo.blog61.fc2.com/blog-entry-400.html
  2. ネットワーク設定実施「sudo vi /etc/network/interfaces」実施後、下記を参考にネットワークアドレスを設定。http://hamamuratakuo.blog61.fc2.com/blog-entry-400.html
     
  3. VMWare Playerのネットワーク設定VMWare Playerの[仮想マシン設定]-[ネットワーク アダプタ]の設定は下記のようにブリッジ設定としました。
  4. 物理PCと仮想マシンを再起動。
    上記1-3だけでは、ネットワークが正常に起動しない(ifconfigにてeth0が見えない)ので、再起動してみました。(ちょっと原因不明の疎通不可になったり。と不安定な感じですが、PCの電源を切って、起動したら疎通できたりしていました。しばらく様子をみたいと思います)
    ---
    2012/7/7 追記
    仮想マシン(NOX)から物理PCまたはOpenFlowスイッチへの疎通不可の時に、OpenFlowスイッチの電源は入れたまま、仮想マシンをshutdown・物理PC電源off後、再び物理PC電源on・仮想マシンを起動したら、疎通が復旧するようです。詳細原因究明には至っていませんが。。。
    ---
    ifconfig結果と、物理PC(NOX)からOpenFlowスイッチにtelnetした結果は下記の通りです。




    以上で、環境構築完了!
    次回、詳しく触ってみたいと思います。






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

2012年6月10日日曜日

OSS情報まとめ

OSS(オープンソース)の情報いろいろあったのでまとめてみます。
カテゴリ毎にまとめてあるのがいいですね。
知らないカテゴリのものもあったりします。

  • RepOSS
    http://203.99.77.203/webapp/reposs/app/osslist
    ※2012年春頃のITLeadersのOSSまとめ記事の元ネタ
  • OSSツール 情報検索 | The Linux Foundation http://www.linuxfoundation.jp/ossdatabase
  • オープンソース(OSS)紹介 | OpenStandia™ (オープンスタンディア) http://openstandia.jp/oss_info/

  • インストールマニアックス5 課題OSS | Install Maniax 5 http://maniax.jp/installmaniax/5/heat/oss
    ※まとめとは違いますが、参考になりそうなので。

後は、興味のあるものから実際に試してみるだけ。
installからやってみたい人は自分のPCやIaaSを、すぐにアプリを使ってみたい人は
HerokuとかのPaaSを使うといいです。

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

勉強会情報

ちょっと纏めることがあったのでこちらでshare。

最近は下記をtwitterでチェックするのがほとんどです。
興味のあるキーワード、人気がありそうなものをチェックしています。
https://twitter.com/#!/upmeetup
http://upmeetup.info/

他には、下記をRSSでチェックしています。
Atnd               http://atnd.org/
こくちーず   http://kokucheese.com/
Connpass     http://connpass.com/

急に予定が空きそうな時には、下記も参考になります。
https://www.google.com/calendar/embed?src=fvijvohm91uifvd9hratehf65k%40group.calendar.google.com


初めての分野を学習する時には、独学するよりも勉強会に出席した方が有効な場合があります。
懇親会があれば、そこで情報交換もいいですね。

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

2012年3月31日土曜日

CloudStack API対応iPhoneアプリ作成に挑戦 その2

前回から少し間が空きましたが、やっとアプリらしくなりましたので、githubで公開しました。
https://github.com/snumano/CloudStack-API-iPhone-App

現時点の機能は主に2点。
・CloudStack APIに対応している複数のクラウドサービスに対応
現時点ではTata、Ninefoldの動作確認済。
Datapipeは個人では申込できなさそうなのです。その他は順次確認予定
・コマンドは、VMとVolumeのlist表示に対応
追加/削除ボタンは表示のみで、まだ機能しません。。。

本アプリは、CloudStackの利点である「複数クラウドサービスをシームレスに管理可能」を実感いただくデモ用アプリになればいいなと考えています。

I released iPhone app at github.It helps for a demonstration of CloudStack API.
https://github.com/snumano/CloudStack-API-iPhone-App

Current version has following functions,
*supports multi cloud services which supoprt CloudStack API.
  Tata,Ninefold and more.
*supports a fewcommand
  listvirtualmachines,listvolumes
  It doesn't support deploy and destroy them.

アプリのスクリーンショットをいくつか紹介します。
Followings are some screenshots of the iPhone app.

赤枠のアイコンのアプリを起動させます。
Click the app icon.


起動時の画面です。右下の設定ボタンをクリックし、API Keyの登録を行います。
Home window.At the first,click the setting button.




TataのAPI KEY、SECRET KEYの登録画面です。
各情報は、各サービスのアカウント情報に表示されているので確認してください。
また、API用のURL(BASE URL、API PATH)は事前に設定してあります。

Setting window.Please submit API KEY,SECRET KEY.

URL(BASE URL、API PATH) is pre-configured.



TataのVMのlist表示(listVirtualMachinesの結果)です。1台しか起動していないので、寂しいですが、正常に表示されています。
右上に「+」ボタンが表示されていますが、現時点では追加(deploy)機能は、未対応なのでクリックしても動作しません。同様に当該VMをスワイプすると、「Delete」ボタンが表示されますが、こちらも未対応です。雰囲気だけでもつかんでいただければ。

Please click 'Tata' and 'VM'.You can see the response of listVirtualMachines.
'Add button' and 'Delete button' are not working now,just dsiplayed.



先のVMをクリックして詳細表示したところです。zonenameが「India」と表示され、しみじみします。
VM detail information window.


いかがでしたでしょうか。
iPhoneにアプリをinstallして各国のクラウドをポケットにいれるもよし、開発環境のMac上で各サービスの生responseを確認するもよし、対応コマンドを増やすもよし。いろいろな楽しみ方ができると思います。
プログラム自体きれいに書けていないところがありますので、ご勘弁いただけたらと思います。

まずは「今年の目標」の1つを完了。

-----
2012/4/1
英語対応しました。
このエントリーをはてなブックマークに追加

2012年3月5日月曜日

CloudStack API対応iPhoneアプリ作成に挑戦 その1

最近JavaScriptを勉強の一環でTitanium Mobileを触っています。そしてせっかくなので、何らかのoutputを考えています。
で、CloudStack API対応のiPhoneアプリ作成に挑戦することにしました。

CloudStack API用のPerlライブラリを作成した事がある程度で、それ以外は、ほぼ初心者です。
下記stepでの対応を想定しています。
  1. CloudStack API入門
  2. JavaScript入門
  3. Titanium Mobile入門
  4. iPhoneアプリ作成
    1. JavaScriptでCloudStack APIのURL生成機能を実装
    2. TitaniumのHTTP Client APIにて上記4-1のURLのレスポンスを取得
    3. TitaniumにてGUIの実装 
    4. AppStoreで公開
それでは、すすめていきます。1,2は過去の学習のまとめとなります。
  1. CloudStack API入門
    CloudStack API情報まとめ
    をご参照ください。
    この時のoutputとして、CloudStack API用Perlライブラリを公開しました。
    今回、CloudStack API対応クラウドとしてTata Communicationのクラウドサービスを利用しています。
  2. JavaScript入門
    参考資料はこちらをご参照ください。
  3. Titanium Mobile入門
    Chapter1-5の途中まで読み、Titanium Mobileの使い方、アプリ作成方法の概要を学習しました。必要な機能は主にJavaScriptで実装することになりそうですが、一部機能についてはTitanium Mobileで提供しているものがありました。楽できます。
    <Titanium Mobileで利用した機能>
    • HTTPClient
    • JSON parse
    <JavaScriptで実装>
    • convert Lower case
    • URI encode
    • Base64 encode          #ライブラリを利用
    • HMAC SHA-1 hash     #同上
       
  4.  iPhoneアプリ作成
    現在作成中です。4-1,4-2のURLの作成およびレスポンスの取得までできました。
    現時点の、iOSシミュレータの画面は下記になります。

    Tataのクラウドサービスに対して、listVirtualMachinesのレスポンスです。
    今のところ、jsonで取得したレスポンスをそのまま表示しているだけです。GUIはTitanium Mobileのテンプレートのままですね。
    今後、VM,Volume,NW等主要なコンポーネントのlist系コマンドの実装および、GUIの実装をすすめたいと思います。

今日はここまでです。
GUIの実装ができたらまた紹介したいと思います。
このエントリーをはてなブックマークに追加

2012年3月2日金曜日

海外のクラウドサービスに登録してCloudStack APIを使ってみる

前回に続き、今回は「CloudStack」をキーワードに海外クラウドを申し込んでみます。
そして、以前作成したCloudStack API用ライブラリがIDCFクラウド以外のサービスでも利用できるか確認してみます。

対象のクラウドサービスはこちらを参考に選んでみました。下記3つです。
Tata Communications
KT
logicworks


それでは、登録から始めます。
  • Tata Communications
    サービス名:InstaCompute
    申込方法:上記URL先の上部に「Free Trial」があるので、こちらをクリック。名前などの情報を入力。しばらくすると(私の場合は翌日)、インドから電話がかかり、本人確認をされる。(mailなどいくつかの質問に回答)。その後、mailにてTrialCodeが送付され、登録するとサービス利用可能になる。
    操作画面:下記はlogin後のコンパネ画面。いろいろとタブが並んでいます。

  • KT
    サービス名:uCloud
    申込方法:上記URL先にいくとハングルの画面になりますので、右上の「English」で英語に切り替えます。左側の「Register」からまずは、メンバー登録を行います。メンバー登録はすんなり完了できたのですが、その後、個人情報を入力する際「SocialSecurityNumaber」を求められたので断念しました。ここまで。
  • logicworks
    サービス名:infiniCloud
    申込方法;前回同様に、クレジットカード登録でエラーになったので今回も断念。

結局、ちゃんと登録できたのはTataだけでした。。。

引き続き、TataにてCloudStack APIを試します。手順は下記の通り。
  1. コンパネのAccount Administration > My Accountより、Cloud API KeyとCloud Secretを確認
  2. 次に、Support > Developer APIより、API操作に必要な情報(Base_URLとAPI Path)を確認
    同じような情報は下記でも公開されています。
    http://instacompute.com/service-details/api/

  3. 上記情報を参考にsignatureを作成。
    (手順自体はCloudStack APIと同じ)
  4. 最後にURL全体を構成しAPIサーバにアクセス。
実際に、以前作成したライブラリを用いて、IDCFクラウド用に作成したスクリプトをそのまま利用してURLを生成しました。
(base_url,api_pathのクラウド情報、api key,secret keyのユーザ情報のみ変更。このコマンドでは、第1引数でサービス名を指定することで、対象サービスを切り替えることができるようにしています)
もちろん、他の言語でも作成可能です。

listZonesの場合、下記のようなresponseを得られました。
listVirtualMachinesなども正常にresponseを得ることができましたが、ここでは割愛します。

$ ./cs-api.pl tata listZones
{
   "listzonesresponse" : {
      "zone" : [
         {
            "name" : "India-South-01",
            "id" : "1"
         }
      ]
   }
}

以上より、CloudStack APIを利用して、IDCFクラウド以外の(CloudStackを使用している)クラウドサービスを操作できることを確認できました。
このエントリーをはてなブックマークに追加

2012年2月23日木曜日

google analyticsでユーザーフローをみる

久しぶりにgoogle analyticsのユーザーフローをみてみました。
このblogの過去1ヶ月のアクセス状況です。

8割程は最初のページで離脱していることが分かります。

いかに離脱率を下げるかですね。






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

Seleniumの変数の使い方


備忘録。
Seleniumのコマンドとjavascriptを混在して利用する場合の、変数の定義と参照の対応表です。
これが正しいのかどうか不安ですが。

storeGlobalは、extensionで追加したものです。


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

2012年2月17日金曜日

IDCFクラウドサービスを使ってみる その5.APIを使ってみる

2/17より、 APIの試験公開が開始されました。
クラウドサービス APIを試験公開

試験期間中、APIを実行できるのは、「IDCフロンティアのクラウドサービス 上で起動した仮想マシンからのみ」となっていますので、この点は注意が必要です。(4月正式サービス予定)
また、IDCFクラウドのAPIはhttpsのみアクセス可能となっていますので、こちらも要注意です。

それでは、実際にAPIを使ってみましょう。
上記のリンク先に詳細情報のURLが記載されています。
そのURLをクリックすると「Getting Started」がありますので、まずはこれをクリックします。
で、後は記載内容に従ってすすめていくだけです。。。
(会社の同僚がきちんとまとめているので、余計な説明は不要なのです。)


少しだけ、補足を。。。


どうでしょうか。
ちゃんと、レスポンスが出力されたでしょうか。

「Getting Started」以外にも開発者向け用などの詳細情報が用意されていますので、こちらも参照いただけたらと思います。
また、上述の資料では、API用コマンド・環境としてPythonが使われています。

APIとしては、CloudStack APIを利用していますので、Pyhton以外の、好みの言語でも使用することが可能です。
多言語でのCloudStack APIの対応事例については、下記をご参照ください。
いろいろやってみる: CloudStack API情報まとめ

下記はCloudStackの情報を網羅的にまとめてあり、参考になります。
クラウド運用構築基盤ソフトウェア「CloudStack」を学ぼう!! | Citrix Blogs


APIで、より便利にクラウドを使いこなしましょう。

===
2012/2/21追記
補足しました。
このエントリーをはてなブックマークに追加

Titanium Mobile アプリを実機にinstallの際のハマりポイント

Titanium Mobile勉強中です。
アプリを実機にinstallの際のハマりポイントを備忘録として残しておきます。


  1. tiapp.xmlのApplication ID入力
    iOS Dev Centerの[iOS Provisioning Portal][App IDs]では、App IDは「Bundle Seed ID」と「Bundle Identifier(ドメインを逆にしたもの)」で構成されます。
    しかし、 tiapp.xmlのApplication IDでは 「Bundle Identifier」のみを指定します。(もし、App IDのBundle Identifierの最後の部分をワイルドカード*で指定した場合、アプリ名を付与する必要があります。)

  2. iTunesのversion up
    日頃使わないMACだったので。。。



下記の本で勉強中です。
このエントリーをはてなブックマークに追加

2012年2月16日木曜日

javascriptを勉強する

今年の目標で書いたjavascriptの勉強の途中経過をまとめます。
  • javascript入門編
  • 応用編
    • iPhoneアプリ開発(Titanium Mobile)
      只今、下記書籍で勉強中。
      サンプルアプリ(KitchenSink)を実機で動かすだけでも楽しいです。


    • Webアプリケーションテスト自動化(Selenium)
      以前書いたSeleniumですが、javascriptで書くこともできます。かなりいろいろな事ができます。
      Seleniumの表現とjavascriptの表現が混在するので、どちらも初心者の自分にとってはややこしいです。


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

2012年2月14日火曜日

IDCFクラウドサービスを使ってみる その4.NATとポートフォワーディング

今回は以前の記事「IDCFクラウドサービスを使ってみる その2.仮想マシンにssh接続する」で、紹介した「NAT」と、「ポートフォワーディング」について詳しくみていきたいと思います。


  1. ソースNATとスタティックNAT
    ソースNATは仮想マシンからインターネット向け通信の際、送信元アドレスのプライベートIPをグローバルIPに変換します。また、複数のVMで1つのグローバルIPを利用します。IDCFクラウドにて、最初の仮想マシンを作成したタイミングで自動で生成されるのが、このソースNAT用のグローバルIPアドレスです。

    スタティックNATはプライベートIPとグローバルIPを1対1で変換します。IDCFでスタティックNATを利用する場合は、グローバルIPを追加し、スタティックNATを有効化します。




  2. ポートフォワーディング
    上述のソースNATの場合、インターネットから仮想マシン向けの通信はできません。これを実現するのがポートフォワーディングです。グローバルIPのポート単位で、転送先の仮想マシンを指定します。この機能を使えば、1つのグローバルIPの複数のポートを利用して、複数の仮想マシンにアクセスすることも可能です。コストを抑えることができます。
    追加したグローバルIPについてはスタティックNAT無効時は、そのままでは通信できませんので、ポートフォワーディングの設定が必要です。


インターネットから仮想マシン向けの通信については、あわせて、ファイアウォールの当該通信の許可設定が必要となりますので、ご注意ください。
ファイアウォール設定については、以前の記事をご参照ください。

次回は監視サービスについて紹介したいと思います。
このエントリーをはてなブックマークに追加

2012年2月12日日曜日

海外のクラウドをRightScaleと接続してみた

前回申し込んだクラウドサービスをRightScaleと接続します。
(RightScale自体のアカウント作成方法や、AWSとの接続については、こちらが参考になります。)

RightScaleにlogin後、メニューバーから[Setteings][Clouds]をクリックします。
下記のように接続したいサービスの+マークをクリックします。


















  • Rackspace
    URL:http://www.rackspace.com/cloud/

    Rackspaceのコンパネにlogin後、[Your Account][API access]の[Username][API Key]を確認します。




    その後、上述のRightScaleの下記画面にて入力し、[Accept]をクリックします。



    接続完了すると下記のようになります。


  • Softlayer
    URL:http://www.softlayer.com/cloudlayer/computing/

    Softlayerのコンパネにlogin後、下記のようにクリック、選択し[User][API Access Key]をチェックします。その後、Rackspaceの時と同様にRightScaleのClouds画面にて、[User ID][API Key]当該項目を入力します。



    接続完了。

     

現時点で確認できたのはここまでです。
Datapipe,Logicworksについては、判明次第、公開したいと思います。
このエントリーをはてなブックマークに追加

IDCFクラウドサービスを使ってみる その3.利用特典とは?

前回までで、仮想マシンの起動および接続までできました。

今回は、「利用特典」について紹介したいと思います。
利用特典とは、オプションサービスの無料枠の事です。
IDCFクラウドのサービスメニューおよび料金体系については、こちらで確認できます。

利用特典については、IDCFクラウドのダッシュボードから[サービス][利用特典]を辿ります。
「IP Address:744IP-Hr」「Network bytes:3240GB」と表示されていることが確認できると思います。


「IP Address:744IP-Hr」は、744Hr=24hr*31日すなわち、1つのグローバルIPアドレス 約1ヶ月分が無料ということを意味します。
その1で説明したように、最初の仮想マシンを作成されたタイミングでグローバルIPアドレスが1つが作成されますが、このIPアドレスが無料になります。この無料で利用できるIPアドレスを効率良く利用するのが、コスト削減のポイントです。

「Network bytes:3240GB」については、10Mbps*30日すなわち、約1ヶ月平均10Mbps分のネットワーク料金の無料を意味します。(1ヶ月3240GBを超過した分について、従量料金が発生します。)
一概には言えませんが、トラフィックの変動を考慮すると、最小数Mbps~最大15Mbpsで変動するようなサイトは、ほぼネットワーク料金は無視できるといえるでしょう。


今まで説明した内容について、現在販売中のSoftwareDesign2月号付属の「今日からはじめるクラウド エントリーガイド」のにて詳細に説明されています。
ただいま、IDCFのfacebookページにて、このエントリガイドを先着100名様にプレゼントしています。
ご興味ある方は下記から応募されてはいかがでしょうか。
http://www.facebook.com/fb.IDCFrontier?sk=app_228367747176855


次回は、「IPアドレスの効率良い利用方法」について紹介したいと思います。

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