2011年12月26日月曜日

whois複数検索をdotcloudに移行しました

個人的に作成していたwhois複数検索サービスをdotcloud+Amon2の環境に移行しました。
http://whois.0tt.0t0.jp/
http://whois-snumano4.dotcloud.com/

今回の目的は、「WAFでの再構築」「PaaSへの移行」でした。
dotcloud+Amon2の環境や移行に伴う手順は、前回記載した手順とほぼ同じ。
ハマッったポイントは下記。

  • 内部処理でLinuxのwhoisコマンドを使用していたが、dotcloud環境ではこのコマンドは使えず、install不可であることが判明。代わりに、同等のサイトにhttp getで情報を取得するように変更。


これで今年の計画は完了。

現在、CSS勉強中。少しは見た目の良いサイトにしたいので。。。
---
追記
2012/11/03 dotcloudの仕様変更につき、URL変更になっています。custome domainが無料で使えるherokuへの移行検討中です。

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

2011年12月18日日曜日

Twitterの「必読」URL抽出サービス リリースしました

「多量のtweetの中から面白そうな情報だけ選択したい」そのために、作成しました。
サービス概要
  • tweet中「必読」という文字列とURLがあれば抽出します。
  • 短縮URLの場合展開し、URLをカウントします。
  • 過去1日、1週間、1ヶ月のURLカウント数のtop20がリスト表示されます。
  • URL先の内容については関知しません。ご了承ください。

システム構成
  • 言語:Perl
    使い慣れているので。Perlでのobject指向の書き方を勉強し、他のスクリプト言語への移行も計画中
  • DB
    MySQLを使用
  • WAF(Web Application Framework):Amon2
    CatalystMojolicious::liteも勉強してみたが、結局、YAPC::AsiaでAmon2の作者の方の発表を聴いて身近に感じたから。後、簡単そうだったので。
  • PaaS:dotcloud
    PerlやMySQLが使えるPaaS。fluxflexもperl対応しているようだが、今はdotcloudの方がCPANモジュールinstallなど使いやすそうなので
  • バージョン管理
    dotcloudで、バージョン管理していないようなので、githubを利用

進め方
  1. サイト企画
  2. Twitter APIの学習
  3. 言語の選択
  4. WAFの選択
  5. サーバ(IaaS,PaaS)の選択
  6. バージョン管理方法の選択
    今回はgithubを使用
  7. コード作成
  8. 動作確認、デザイン修正
  9. デバッグ
  10. google analytics設定
  11. 免責などの記載
  12. favicon作成
    favicon generatorを使用
  13. 連絡先のtwitterを準備
  14. DNS切り替え
    myDNSを使用
  15. URL監視設定
    cmanを利用
  16. リリース、周知

ハマりポイント
  • dotcloudがいまいち安定しない
    • 正しくコンテンツをpushをしてもサイトが正しく表示されない事、ssh接続ができない事が何回かあった。その時には別アカウントを作成して、切り分けを実施した。結局、別アカウントだと正常に動いた。Forumでも同様の質問があり、supportに連絡してほしいという結論になっていた。
    • で、やっと動作したかと思ったら、翌日には動かなくなっていた。この時はrestartを実施して、復旧した。
  • (今回は不要だったが)apacheでamon2を動かす方法がよくわからなかった
    • dotcloudの運用を諦めて自分のサーバ上で構築を検討していた際、既存の環境のapacheでamon2を動かす方法を調べてたがまだ情報少ない。結局はapacheでPSGIを動かす方法となるのだが、正常動作確認には至らなかった。

todo
  • logの確認、デバッグ
  • サイトの安全性チェック
    googleでできそう。
  • 公式RT対応

今後
  • 本サービスのチューニングやってみたい。ボトルネックでてくるぐらいまでになってくれれば。。。
  • 今回のdotcloud+amon2の組み合わせを使って、他サービスも作ってみたい。作成時間は短縮できるハズ。
  • WAFを使っていない作成済のサービスをAamon2を使って再構築。
  • 他PaaSを利用してみたい。
    Rubyでnode.js勉強して、Herokunode ninjaなど。
  • NoSQLも
    Cassandra、mongoDBあたり試せるようなサービス考え中。

変更履歴
  • 2012/8/26 githubを追記
このエントリーをはてなブックマークに追加

2011年12月15日木曜日

iperfと一緒にiftopをつかってみる

前回iperf使ったのですが、実際のトラフィック量を測定するのにiftopを使いました。
今回はiftopの紹介です。

linuxでのトラフィック量計測は何かアプリをinstallする必要がありそうですね。
ここを参考にiftopを使うことにしました。


ここからDLしてinstallを実施。
事前にlibpcapとncurses,ncurses-devel,libpcap-develをyum installで入れておきます。
 

実行はrootでiftopするだけ。
下記のようにsession毎にトラフィック量を計測してくれます。


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

2011年12月4日日曜日

RightScriptsを公開しました

前回紹介したRightScriptsをRightscaleのMultiCloud Marketplaceに公開しました。















下記を参考にさせていただきました。(いつもありがとうございます)
無償アカウントで、MultiCloud Marketplaceでデビュー(第一回リビジョン?) | RightScale Hack
無償アカウントで、MultiCloud Marketplaceでデビュー(第二回公開方法) | RightScale Hack

ポイントは下記。

  • Settings -> Account Settings ->Usersで、「publisher」権限を付与
  • 公開したいrevにて「Publish To MultiCloud Marketplace」をクリック
これで、自分の好きなRightScriptを作成、公開までできました。
ServerTemplateも同様の手順でできるかと思います。
このエントリーをはてなブックマークに追加

2011年11月27日日曜日

CloudStack API用Perlライブラリを公開しました

以前作成したスクリプトをライブラリ化してCPANに公開しました。
Net::CloudStack

CloudStack APIについてのdocumentは下記をご参照ください。
Developer's Guide:CloudStack


ライブラリinstall手順(cpan install以外の部分) についてまとめます。
  1. 事前準備
    #yum install make cpan gcc expat-devel
    #cpan YAML               #私の環境ではcpanで必要でした。
    #cpan YAML::Tiny            #後述のサンプルスクリプトで使用。
    Cent6.xの場合
    # vi /usr/share/perl5/CPAN/Config.pm
    Cent5.xの場合
    # vi /usr/lib/perl5/5.8.8/CPAN/Config.pm
      'prerequisites_policy' => q[follow],        #[yes]押下を省略するため、ask->followに変更
  2. 事前準備その2(https対応必要の場合)
    #yum install openssl-devel
    #cpan LWP::Protocol::https
  3. ライブラリinstall
    #cpan Net::CloudStack

以下簡易なサンプルスクリプト例と実行例です。(冗長な部分もあるかもしれませんが、ご勘弁)
  • client用サンプルスクリプト(cs-api.pl)
    #!/usr/bin/perl -w
    use strict;
    use warnings;
    use Net::CloudStack;
    use YAML::Tiny;
    use Data::Dumper;
    use JSON;
    use XML::Simple;

    my ($xml_json,$send_request);
    my $yaml = YAML::Tiny->new;
    $yaml = YAML::Tiny->read('cs-api.yml');
    my $obj;

    if(defined($yaml->[0]->{xml_json})){
        $xml_json = $yaml->[0]->{xml_json};
    }
    else{
        $xml_json = 'json';
    }

    if(defined($yaml->[0]->{send_request})){
        $send_request = $yaml->[0]->{send_request};
    }
    else{
        $send_request = 'no';
    }

    my $api = Net::CloudStack->new(
        api_key => $yaml->[0]->{api_key},
        secret_key => $yaml->[0]->{secret_key},
        base_url => $yaml->[0]->{base_url},
        api_path => $yaml->[0]->{api_path},
        xml_json => $xml_json,
        send_request => $send_request,
        );

    my $cmd = $ARGV[0];
    if(defined($ARGV[1])){
        $api->${cmd}("$ARGV[1]");
    }
    else{
        $api->${cmd};
    }
    print Dumper($api->url);
    print Dumper($api->response);
    if($api->xml_json =~ /json/i){
        $obj = from_json($api->response);
    }
    else{
        my $parser = XML::Simple->new;
        $obj = $parser->XMLin($api->response);
    }
    print Dumper($obj);
    if($api->xml_json =~ /json/i){
        foreach (keys %$obj){
            print Dumper($obj->{$_}->{jobid});
        }
    }
    else{
            print Dumper($obj->{jobid});
    }
    exit;
  • 設定ファイル(cs-api-yml)
    cs-api.plと同じディレクトリに保存。(下記伏字にしています)
    ---
    api_key:    ***
    secret_key: ***
    base_url:   http://*.*.*.*
    api_path:   portal/client/api?  #your API PATH
    xml_json:   json
    send_request:   yes
  • 実行例
    # ./cs-api.pl startVirtualMachine id=521
    $VAR1 = 'http://*.*.*.*/portal/client/api?apikey=*****&command=startVirtualMachine&id=521&response=json&signature=***';
    $VAR1 = '{
       "startvirtualmachineresponse" : {
          "jobid" : 2114
       }
    }
    ';
    $VAR1 = {
              'startvirtualmachineresponse' => {
                                                 'jobid' => 2114
                                               }
            };
    $VAR1 = 2114;
また、CPANに公開するまでの手順もまとめました。
CPAN Authorになるまでのまと

備忘録。下記対応予定です
  • APIをresponse処理対応
  • error処理
  • document整備
---
追記 2011/12/02
  • サンプルスクリプトについて追記
追記 2011/12/06
  • ライブラリ更新に伴い、サンプルスクリプト修正
追記 2012/2/17
  • Cent5.xの手順を追加
このエントリーをはてなブックマークに追加

CPAN Authorになるまでのまとめ

先の記事で報告した通り、今年の個人的な目標の1つの「CPAN Author」になれましたので、簡単にまとめておきたいと思います。

    1. PAUSEへ登録
      これは数ヶ月前に登録済でした。これは自分の登録だけなので、まだライブラリ作成前でもok。
      ***@cpan.orgのmail addressをもらえます。
      しかし、登録時に自分のmail addressへの転送設定をちゃんとしておかないと、最初のvalidationができず、せっかくもらったmail addressが使えません。
    2. CPAN searchで事前確認
      自分が作成しようとするライブラリが存在しないことを確認。
    3. ライブラリの作成
      module::starterというツールを使うと、CPANに必要なファイルの雛形を容易してくれます。
      皆、こういうの使っていたんですね。
    4. PAUSEへ名前空間の登録
      DNSと似たような階層構造で名前をつけるのが一般的のようです。あまりtopレベルの名前空間は取得しないものらしい。
      今回は「Net::CloudStack」としました。
      (Net::Amazon::EC2やNet::OpenStack::Computeというライブラリがあったので、同様にNet::を使うことにしました)
    5. PAUSEからライブラリのupload
      下記の2パターン。
      1. 手動でPerl Makefile.PL;make;make test;make distして、tar.gzを作成し、pauseからuploadする
      2. shipitコマンド
        コマンドラ一発で、gitとmakeとuploadしてくれます。便利。
        こちらを参考にやっと使えるようになりました。
    6. CPANでライブラリ公開
      5,6から数時間で、公開されてました。
      http://search.cpan.org/dist/Net-CloudStack/
  • 学んだこと
    上記のCPAN公開までの手順以外に下記を学びました。
    • オブジェクト型Perl
      Mooseを使いました。Perl4時代の書き方しか知らなかったので新鮮でした。
    • バージョン管理
      gitを使うようになりました。
  • 今後
    モダンPerlのスマートな書き方、運用の仕方を学んでいきたいと思います。
    また、javascriptも挑戦したいと思います。Firefox、chromeなどの拡張や、node.jsなどやってみたいですね。node ninjaで遊んでみたいです。

### 2012/1/29追記 ###
shipitについて追記しました。


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

2011年11月17日木曜日

CloudStack API情報まとめ

CloudStack APIの情報をまとめてみました。

<公式情報>
http://docs.cloud.com/CloudStack_Documentation/Developer%27s_Guide%3A_CloudStack
http://download.cloud.com/releases/2.2.0/api_2.2.11/TOC_User.html

<各言語対応情報>



皆さん情報公開いただいて感謝です。おかげでコードを見ながら、実装することができます。
CloudStackのサイトにJavaのサンプルコードがありましたが、今は見つかりませんでした。
---
2011/11/28追記
CPANでPerlライブラリ公開しましたので、関連リンクを追記しました。
このエントリーをはてなブックマークに追加

2011年11月16日水曜日

CloudStack API用スクリプトをgithubに公開した

githubで公開しています。詳細はreadmeをご参照ください。
https://github.com/snumano/CloudStack-API

以前、本家の方に下記blogで取り上げていただきました。恐縮です。
Beginners guide to interacting with the CloudStack API

今回は、CPANライブラリをフルに利用させていただいています。
やっている事は2つ。
  • APIに投げるためのURLを生成
  • WWW::Mechanizeを使って、生成したURLに対してrequestし、responseをXMLで取得

Perlは書き捨てのスクリプトが書ける程度ですが、なんとか皆さんにも見ていただけるものを公開して、少しでも皆さんの仕事の負担軽減に貢献できればと思っています。日々勉強中です。
今後ですが、Makefile.plも準備して、必要なライブラリのinstallやtestなどの実行ができるようにしたいと思います。

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

2011年11月13日日曜日

AWSのVMが起動しなくなったので対処方法を調べた

備忘録。
11/11頃から、AWSのmicroインスタンスのVMがdownするようになった。起動もしない。backup取っていたimageから起動しようとしてもダメ。という状況。

VM起動時のsyslogをみると下記logがでていた。


ERROR: mmu_update failed with rc=**


調べてみるとAWS forumに下記投稿あり。
https://forums.aws.amazon.com/thread.jspa?threadID=77744
https://forums.aws.amazon.com/thread.jspa?threadID=77078

32bit t1.microのAmazon Linux instanceを使用している場合に発生する問題のようだ。
対処は、instance起動時に各regionに応じて、下記のAKIを指定すること。(TOKYOの場合は「aki-ec5df7ed」)


eu-west-1
aki-64695810    ec2-public-images-eu/pv-grub-hd0_1.02-i386.gz.manifest.xml
us-east-1
aki-805ea7e9    ec2-public-images/pv-grub-hd0_1.02-i386.gz.manifest.xml
ap-northeast-1
aki-ec5df7ed    ec2-public-images-ap-northeast-1/pv-grub-hd0_1.02-i386.gz.manifest.xml
us-west-1
aki-83396bc6    ec2-public-images-us-west-1/pv-grub-hd0_1.02-i386.gz.manifest.xml
ap-southeast-1
aki-a4225af6    ec2-public-images-ap-southeast-1/pv-grub-hd0_1.02-i386.gz.manifest.xml


この通りにすると正常に起動できました。
調査中、twitterで同様の事象をつぶやいている@m__さんに上記情報を教えていただきました。感謝。










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

2011年11月12日土曜日

RightScaleのRightScriptsを書いてみた

前回、RightScale(RS)の情報を参考にServerTemplateからサーバを起動するところまでやった。
自分用のServerTemplateさえ持っておけば、いつでも自分用のサーバを用意できる。しかも、RSでServerTemplateを保持するのは無料。ServerTemplateを使いこなして、RSを使っている意味がでてくる。

今回はServerTemplateの一要素であるRightScriptを書いてみた。
RightScriptについては下記を参考にした。
  • いつも参考にさせていただいているRightScale Hack
  • 既にServerTemplateを使っていれば、RS dashboardの[Design]-[RightScript]にいくつかRightScriptsが登録されているはず。これらもとても参考になる。
書いたのは下記のPerlのCPAN shellの初期設定部分(特定ファイルの書き換え)。CPANライブラリをinstallする際、いちいち「yes」と入力するのを省略するための設定を追加した。こちらを参考にした。
結果正常に動作した。


#!/bin/bash -ex

#
# Test for a reboot, if this is a reboot just skip this script.
# リブート時に動作しない設定
#
if test "$RS_REBOOT" = "true" ; then
echo "Skip installation and configuration on reboot."
exit 0
fi


#### Setting ####
#ディストリビューション毎のセッティング

if [ $RS_DISTRO = centos ]; then
## Input Configration Setting on Ubuntu ##
echo "Initializing CPAN setting configuration,now..."
cat<<EOF >/usr/lib/perl5/5.8.8/CPAN/Config.pm

# This is CPAN.pm's systemwide configuration file. This file provides
# defaults for users, and the values can be changed in a per-user
# configuration file. The user-config file is being looked for as
# ~/.cpan/CPAN/MyConfig.pm.

\$CPAN::Config = {
  'build_cache' => q[10],
  'build_dir' => q[/root/.cpan/build],
  'cache_metadata' => q[1],
  'cpan_home' => q[/root/.cpan],
  'dontload_hash' => {  },
  'ftp' => q[/usr/kerberos/bin/ftp],
  'ftp_proxy' => q[],
  'getcwd' => q[cwd],
  'gpg' => q[/usr/bin/gpg],
  'gzip' => q[/bin/gzip],
  'histfile' => q[/root/.cpan/histfile],
  'histsize' => q[100],
  'http_proxy' => q[],
  'inactivity_timeout' => q[0],
  'index_expire' => q[1],
  'inhibit_startup_message' => q[0],
  'keep_source_where' => q[/root/.cpan/sources],
  'links' => q[],
  'make' => q[/usr/bin/make],
  'make_arg' => q[],
  'make_install_arg' => q[],
  'makepl_arg' => q[],
  'ncftp' => q[],
  'ncftpget' => q[],
  'no_proxy' => q[],
  'pager' => q[/usr/bin/less],
  'prerequisites_policy' => q[follow],
  'scan_cache' => q[atstart],
  'shell' => q[/bin/bash],
  'tar' => q[/bin/tar],
  'term_is_latin' => q[1],
  'unzip' => q[/usr/bin/unzip],
  'urllist' => [q[ftp://ftp.riken.jp/lang/CPAN/]],
  'wget' => q[/usr/bin/wget],
};
1;
__END__
EOF

echo "Install CPAN Modules,now..."
cpan $CPAN_MODULES

fi
#リターンコード0で終わらせる
exit 0


はまったのは下記。

  • catのredirectで設定を書き出す際、変数部分「$CPAN」を「\$CPAN」とエスケープする必要があった。これはshellの話で、RS特有の話ではないよう。
これでCPANライブラリが自由にinstallできるようになった。また、各種設定ファイルの変更もできる事が確認できた。
rpmパッケージのinstallについては、上述のServerTemplateのRightScriptsを参考にすればできそうだ。

ServerTemplateの作成は続く。。。
---
2011.11.13追記
Inputsの$CPAN_MODULESでspace区切りでモジュール名を渡せるようにしました。
これで、CPANモジュールのinstallまで全て完了できます。

2011.11.13追記その2
上記のConfig.pmですが、defaultの設定(ftpとしてrikenを選択)に「'prerequisites_policy' => q[follow],」を追加しています。


2012.2.15追記
上記のサンプルですが、fileを書きだす部分はrightscriptのAttachmentsに別fileとしてuploadする方がシンプルそうです。

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

2011年11月1日火曜日

情報のinputからoutputまでをPreziでまとめてみた

前回までの情報のinput保存output方法をPreziにまとめてみました。

保存方法を1つにまとめることができれば簡単なのですがなかなかできません。また、すべての情報を保存するのもあまり現実的ではありません。

最近は下記の検索方法でカバーするようにしています。

  • greplin
    twitter,facebook,gmailなどのクラウドサービスを検索対象にできます。最近はこれが便利。
  • evernote
    はてブの内容を転送し、検索可能にしています。
  • google desktop
    local PC内のfile検索に利用。

1つの検索で、local PCおよび全クラウドサービスが検索できれば最高なんですけど、いいのないでしょうか。





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

情報のoutputについて考えてみた

前回までのinput保存に続き、今回はoutputについてまとめてみます。


  1. twitter
    defaultはこれですね。
  2. facebook
    内輪ネタになりそうな場合や、皆の反応を知りたい場合。
  3. blog
    ここ半年、忘備録として書くようになりました。
    stock系の情報はやはりblogがいいですね。
  4. Prezi
    これもここ半年使うようにしています。以前紹介したものです。
    体系的に情報をまとめたい時、特に全体像が見えていない場合でも、どんどん画面を広げたり・ズームして情報を追加できます。
    画面の大きさを気にする必要がなくなります。
  5. その他
    会社のメンバーにはメール、視覚的に面白いものは部会などで紹介ですね。
    本当に伝えたいものは直接口頭ですね。じゃないと、伝わったかどうか分からない。

当初は、twitterの投稿内容をそのままfacebookに流していたのですが、twitterとfacebookはやはり受けている人との関係や、その人達の興味が違うので、twitterとfacebookは明示的に投稿を分けています。
適切な人に適切な情報が届くようにしないと、見てもらえないかと思っています。

次回は、今までの内容をPreziでまとめたいと思います。



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

2011年10月30日日曜日

PerlのWAFで悩んでみた

久しぶりにPerlを使っています。
元々かき捨てスクリプトぐらしか書けませんでしたが、スマートな書き方を身につけたいと思い立ち、モダンPerlに四苦八苦する毎日です。

WAFとしてCatalystが有名ということで、書籍を購入したが、全く分からない。こりゃだめだ。
ということで、モダンPerl的な書き方と軽量WAFと言われるDancer,Majolicious::Lite,Amon2などのtutorialをみて、大体の書き方と動作を把握。

でも、この辺りの軽量WAFの資料は自分にとっては十分といえないため、もう一度、Catalystに戻って再度書籍にtry。今度は、少しは分かる。
まずは、Catalystの書籍をひと通り読んで、それからCatalystがいいのか、他のWAFがいいのか判断する。



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

2011年10月27日木曜日

blogのアクセス元などを調べてみた

最近、新規投稿していないにも関わらずコンスタントにアクセスがあるので気になって調べて見ました。

結果、ほとんどgoogleからの流入である事が分かりました。
しかも検索の場合は、複数キーワードを使ってますね。なるほど。


ついでに、ブラウザ/OSを調べたところ、PC(Win/Mac)が82%、スマホ(iPhone/Android)が10%であることが分かりました。
自分は通勤時にiPhoneでblogなどをチェックしているので、皆もてっきりそうかと思っていましたが、違うんですね。

まとめ

  • 検索を意識したキーワードを使う。
    複数キーワードであれば小さなblogでも検索結果上位にくる可能性大。
  • 閲覧の環境を意識したコンテンツ作り。
このエントリーをはてなブックマークに追加

2011年10月16日日曜日

RightScaleの情報をまとめてみた

まだまだ日本語情報が少ないですが、いろいろと情報はでてきています。
で、まとめてみました。RightScaleのアカウント準備から、サーバテンプレート、rightスクリプトの使用まで。
情報公開いただいた皆様に感謝。


  1. RightScaleのアカウント作成からサーバテンプレートからサーバ起動まで
    資料はこちら
    パブリッククラウドとしてAWSを使用するのが分かりやすく簡単な方法です。AWSアカウントをお持ちで無い方はあわせてアカウント作成方法もご参照ください。

    RightScaleのTutorialsもありますが、上述の資料の方が最初は分かりやすいです。
  2. rightスクリプト使用方法
    こちら記事のPage3を参照
    大体のイメージはできたのですが、rightスクリプトで正常にサーバ起動できていないです。。。

で、これからはrightスクリプトに加えて、chefというものもでてくるようです。
multicloud環境ではchefの方がコントロールしやすいらしい。
11月頃から日本語情報が出てきそう。

---
2012/2/15追記
1のリンク先をRightScaleの日本語版Tutorialに変更しました。

2012/2/16追記
RightScaleの資料をRightScale Forumの掲載のものに変更しました。
Tutorialも残しています。


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

情報の保存方法について考えてみた

前回の「情報のinput方法をまとめてみた」の続き。inputしたものをどのように保存するか。
情報をブックマークなどに保存して満足し、二度とその情報を使わないことはよくある話。
outputするために、適した保存方法は何か?現在の自分の方法とあわせて考えてみます。

  1. はてなブックマーク
    現在メインで使用。タグを工夫することで複数のカテゴライズも可能。検索も可能。
  2. twitter
    基本的にinput,outputの方法になると思います。
    しかし情報を共有することで、他の人と脳を共有する感覚になることもあります。
    自分が忘れている情報でも、他の人が思い出してくれる事があります。
    また、自分が考えつかない新しい発想を得られるかも。
  3. evernote
    1,2をevernoteにbackupしています。方法はこことかこことか。
    chromeの拡張で、google検索時にevernoteも検索してくれます。
    現在、検証中につき効果は未知数。
次はoutputについて考えたいと思います。
このエントリーをはてなブックマークに追加

Amazonインスタントストアをblogに貼ってみた

自分のblogアフィリエイト広告を貼っているが、なかなかクリックしてもらえない。
まぁ、どのblogにも掲載されているような広告はクリックしないだろうな。自分もクリックしないし。。。
で、単純な広告の代わりに、自分のおすすめのものを掲載することにした。(で、ちょっと収益あればうれしい)

今回使用するのは、Amazonインスタントストア。以前話題になったが、まだやっていなかった。
そこに載せるものは、Amazonリストマニアとする。

やり方は結構簡単。30分でできた。

  1. 上述のQAを参考に、リストマニアを作成。200文字のコメントを入力できるので、twitter程度に気楽に入力。
  2. 次にインスタントストアを作成。自分で商品を選ぶこともできるし、リストマニアからひっぱってくることもできる。
  3. インスタントストアのウィジットをblogに貼りつけて完成。(PCだと右サイドバーの上から4つ目のウィジット)


ソーシャルリーディングや、持ち物をベースにソーシャル的につながるサービスがあるが、使用するサービスが分散するとなかなか続かない。
Amazonにソーシャル機能はまだなさそうですね。ソーシャル的につながれば便利。
ただ、実生活に直結しているものがネットにそのまま繋がると、問題もありそう。その1クッションとして、リストマニアが有効かどうか確認したい。

少しずつリストマニアを充実させていきます。
このエントリーをはてなブックマークに追加

2011年10月14日金曜日

webサイトの自動テストツール(Selenium)を触ってみた

Selenium IDE,RCを使ってテストの作成、実行を行ったので、軽いまとめ。
webブラウザの操作を記録し、同じ操作を自動実行するというものです。
参考はここここ


Seleniumを使用するメリットは下記。

  • 複数ブラウザで実行できること
    環境の制限で、FFでしか確認してないです。
  • 変数を扱えること
    base URL,アカウントIDなど変数にして、柔軟に試験したいので
  • 画面のスナップショットが取れること
    outputが流動的な場合はどうしても目視確認が必要なため
    また、evidenceとしても有用



はまったのは下記

  • WinXP+safari5で動かない
    サポート対象外バグのためのようだ。
  • globalに変数をもたせる方法
    こちらを参考に、1つのhtml fileに変数をまとめて記述して、テストケースとしてテストスイートに追加した。
    他にもいい方法ないかな。
  • windows環境、IDEで作成したテストケース内のpathをRCで解釈してくれない
    例:IDEでは「../aaa.html」という形式で保存するが、「..¥aaa.html」と直さないといけない。



でも、個人的に各種操作の自動化で使うのは、Perlのモジュールです。。。
このエントリーをはてなブックマークに追加

2011年10月8日土曜日

FC2ブログからBloggerに戻ってきた

戻りました。理由は下記。



  • やりたかったことがBloggerでも簡単にできることがわかったから
  1. 引用部分を枠線で囲む
    ここを参考にしました。今後もCSSは勉強しないといけないですね。


  • Blogger以外だとできない、難しそうなものがあったから
  1. アクセス解析で、自分のアクセスを除く場合、IPでなくcookieの使用。
    自宅の場合、固定IPでないのでcookieでの区別が楽。スマホの場合もそう。
  2. 過去の自分の記事でアクセスの多かったものを、サイドに表示。
    Bloggerだと簡単なんですが、他だといろいろ設定必要そうだった。
  3. FC2ブログで、週末の夜、「アクセス集中のため表示できない」場合があった。
    直接ブラウザで表示できるようになっても、facebookにlinkを張ろうとすると、「アクセス集中のため表示できない」と表示が継続したので、今後に不安を覚えました。
このエントリーをはてなブックマークに追加

情報のinput方法をまとめてみた

以前はネットワーク/OSなどインフラレベルのtrendを追っていましたが、最近はアプリレベルに移行している気がします。 twitterやRSSを通勤時にiphoneで流し読み、面白そうな記事・イベントをチェックして、会社や自宅で詳細確認しています。
  1. twitter リスト管理し、優先度の高いものから読むようにしています。業界のkey personなど また「サーバーダウン」「クラウド」などkeyword検索も設定している。 ※twitterの流量が多い場合は、RSS feedをgoogle readerで件名で流し読みするのもあり。
  2. RSS feed news、メディアはRSS。個人はtwitterで追うようにしているが、twitter比率が高まっている。 境界はあいまい。
  3. Mailing List MySQL,Android,CoudStack,Hadoop,node.jsなど、技術要素ごと。 https://groups.google.com/?hl=ja&pli=1
  4. 過去に参加したイベントからの案内DM
  5. googleカレンダー IT勉強会カレンダー インフラ系勉強会カレンダー
  6. 雑誌 日経ビジネス、日経コンピュータなどの専門紙 普通の雑誌や、子供のコロコロでも結構仕事に結びつきます。
情報の保存は、はてブに落ち着いています。tag検索、keyword検索で便利。
このエントリーをはてなブックマークに追加

blogで1000PV達成して、引越したので振り返ってみた

前回からいくつか追加してみます。
  • activeなグループに向けて投稿する LinkedInやgoogle+を試しました。google+はPV増加の効果があったようです。
  • blogのサイドに、過去の記事リストを記載 過去の記事も読んでもらえることがわかりました。 これで、twitterとの違いを実感しました。(フローとストック)
  • blogランキングへの登録 人気ブログランキング日本blog村に登録しました。 多少の効果はあった気がします。
このエントリーをはてなブックマークに追加

bloggerからFC2ブログに引越してみた

引越しました。

  • やりたかったこと
    HTML意識せずに、引用部分をわかりやすく記載したい。
  • できたらうれしいもの。(結果、できた)  
  1. アクセス統計機能無償
  2. スマホから編集可能  
  3. Bloggerの記事をimport 

 複数のブログサービスを比較しましたけど、結局ここをみて決めました。 実際に使わないとよくわからないし。 FC2についても、先日記事をよんで興味ありましたし。
このエントリーをはてなブックマークに追加

2011年10月2日日曜日

blogを引っ越してみた

FC2ブログに引越しました


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

2011年9月30日金曜日

blogで1000PV達成直前なので振り返ってみた

いろいろな記事を参考にしました。
自分については、まとめると下記かなと。


  • 内容
    サーバ、プログラムなど実際に試した結果や、ハマったところを紹介するようにしてみました。
  • 公開タイミング
    朝、昼、夕方、深夜それぞれにtwitterでblog周知をしてPVの伸びをみました。
    平日の9時前に周知した場合が、一番PVが伸びた気がします。
  • 検索キーワード
    意外だったのは、なんでもないような記事にPVが集まったことです。
    去年の最高気温と比較してみた
    今夏は気温について、皆注目していたことが分かりました。



アフィリエイトとかは全くダメでした。
今後も続けていきたいと思います。

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

2011年9月29日木曜日

クラウド プレゼンツールPreziを使ってみた

Prezi
今さら感がありますが、見た目のインパクト勝負の時には有効です。
某先輩に倣って、社内でも隙をみて使って、皆の反応を見ています。

操作には少しクセがありますが、すぐに慣れます。日本語使えますが、フォントの種類は少ないです。

参考までに以前作成したものを公開します。


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

2011年9月27日火曜日

Tera Term Pro アシスタントで複数ターミナルを同時操作してみた

@halchiyoから教えてもらった
ここを参考にさわってみた。2年前ぐらいからあったのですね。

アシスタントを起動したら、操作したいTerminalを選択し、後は、コマンドを入力するだけ。
スムーズに複数端末に入力されます。Tab補完も↑カーソルの履歴入力も可能。

検証環境などちょっとした複数端末の初期設定や、複数端末でのパケットキャプチャなどにいいかもです。

<9/29追記>
コマンドをコピペしようとすると、うまくいきませんでした。1台にしかペーストされません。
このエントリーをはてなブックマークに追加

2011年9月23日金曜日

WWW::Scraperとgoogle chart APIを使って気温グラフをつくろうとして挫折した

気象庁のdataを使おうとすると著作権にふれるようなので、グラフの自動作成・公開はやめて、ポイントを忘備録として残します。
  1. Web::Scraperでgooの気温情報を抽出。

  2. use strict;
    
    #!/usr/bin/perl -w
    use strict;
    use warnings;
    use Web::Scraper;
    use URI;
    my $uri = URI->new("http://weather.goo.ne.jp/past/2011/08/662/index.html");
    my $scraper = scraper {
        process '/html/body/div[2]/div/div/div[2]/div/div/div/div/table[2]/tr/td/span[1]','list2[]' => 'TEXT';
    };
    my $result = $scraper->scrape($uri);
    for(my $i=0;$i<35;$i++){
        print $result->{list2}[$i]."\n";
    }
    exit;
  3.  google chart APIに渡す値を整理
    こちらを参考にさせていただいた。感謝。
  4. グラフを出力

ソースはgithubに置きました。



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

ネットワークのスループット測定ツール(iperf)を試してみた

一定のtrafficを出したかったので、iperfを試した。
今回は700Mbpsまででることを確認した。(あまりCPU使っていないようだったので、まだでるかも)

下記詳細。

ここを参考にさせていただいた。

install後、サーバ側にて下記を実行
# iperf -s -u
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size:  122 KByte (default)
------------------------------------------------------------
今回は、クライアント側にて下記を実行。
(<転送量Bytes>のdataを、<帯域>bpsで転送)
# iperf -c <サーバ側IP> -n <転送量> -b <帯域> -u

間のFWで適切なportをopenすることを忘れないように(今回はUDP5001を使用)。と



TCPの使用や、data転送時間の指定などもできます。
このエントリーをはてなブックマークに追加

サイト再構築中


wordpressでサイトを再構築中。
モバイルにも対応できるようになった。

一部はiPhone 3G回線のみアクセス可能の制限中。



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

2011年9月16日金曜日

google+ API試してみた

ここここ参考にした。

Google apisのページでGoogle+ APIをONにするのが分からず少しハマった。
次に、API keyを取得。そして、下記に自分のidとAPI keyを埋めて、getする。と
https://www.googleapis.com/plus/v1/people/<id>?key=<API key>


下記のような感じでjsonで返ってきた。




後は、CPANにNet::GooglePlusがでてくるのを待つばかり。。。
このエントリーをはてなブックマークに追加

2011年9月13日火曜日

5分で、Yahooへのloginを自動化してみた

前回につづいて自動化ネタです。
GUIで簡単に自動化できる「Selenium」を、こちらの記事を参考に試してみました。
今回はYahooへのloginの自動化をします。



  1. 環境準備
    今回はFireFoxのaddonをinstallします。
  2. Firefoxのメニューから「ツール」「Selenium IDE」を起動。
  3. 操作の記録開始
    「アクション」「テストの記録」で開始します。
  4. Webサイトで操作
    今回は、Yahoo!JAPANにてlogin、logoutします。
  5. 操作の記録終了
    再度「アクション」「テストの記録」を選択し終了します。
  6. コマンドの挿入
    「編集」「コマンドを挿入」を選択。
    今回は、logoutの手前に画面のキャプチャをとる「captureEntirePageScreenshot」を挿入します。
    対象に保存場所を入力、値は指定なしです。
  7. 記録を保存
    「ファイル」「テストケースを保存」
  8. 実行
    「アクション」「現在のテストケースを実行」

    結果、下図のように上部に操作記録が、下部に実行ログが表示されます。
    また、「captureEntirePageScreenshot」で指定したファイル名で、画面のスクリーショットが保存されています。


    出力結果の文字列を確認するには「assertTextPresent」などを使います。


    以上、ぜひお試しください。
このエントリーをはてなブックマークに追加

2011年9月12日月曜日

WWW::Mechanizeで<input type="image">なボタンを押してみた

こちらを参考にした。

自分の場合は、formが複数あったので下記で対応した。
$mech->submit_form(form_number => n,);    #Selects the nth form.








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

2011年9月4日日曜日

WWW::Mechanizeで日頃のちょっとした操作を自動化してみた

誰でも「1日1回サイトにloginして、特定の操作をする」なんて事ありますよね。
最近は、PerlのWWW::Mechanizeを使う事が増えました。
一番シンプルなコードは下記になります。
use strict;
use warnings;
use WWW::Mechanize;
 
my $url = 'site name';
my $id = 'your id';
my $pw = 'your pw';
 
my $mech = WWW::Mechanize->new();
$mech->get($url);
$mech->submit_form(
        fields => {
            'id' => $id,
            'pw' => $pw,
    },
    );
 
print $mech->content;
exit;

でも、サイトによっては単純にはいかない場合もあり(どこか勘違いしているだけかもしれませんが)、そういう場合は、FirefoxのLive HTTP Headrsなどのtoolを使って、HTTPの通信の中身を見ながら調整しています。
また、WWW::MechanizeのHTTP通信の様子をみるには、下記コードを挿入してあげればいいです。

$mech->add_handler(request_send => sub {
    my $req = shift;
    $req->dump;
    return;
                   });
  
$mech->add_handler(response_done => sub {
    my $res = shift;
    $res->dump;
    return;
                   });
このエントリーをはてなブックマークに追加

twitterをfacebookに連携してみた

先日、tweetをfacebookにも投稿する実験をしました。
twitterとfacebookで反応がどのくらい違うか/同じか確認したかったためです。
(1年前に、同様にtwitterとmixiを連携した事がありますが、その時はほとんどmixiの反応はありませんでした。)

結果、twitterよりもfacebookの方が反応がありました。
原因は下記と推測します。

  1. 現在、facebookでつながっているいは、会社関係の人がほとんど
  2. 投稿は仕事関係のものが多い
  3. 「いいね」ボタンなど、twitterに比べて、気軽にreplyを返せる仕組みがあるため


特に3が重要な感じがします。
また、1,2については、投稿内容を適切な人達に届ける事の重要性を示していると思います。


以上より、下記をしてみようかと思っています。

  • マルチSNS対応のclientアプリ(iphone)の使用
    iphoneではtwitbirdを使用していますが、投稿用としてhootsuiteを試し中。
  • google+の利用
    今まで、あまりgoogle+を使ってなかったんで。。。



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

2011年8月29日月曜日

dotcloudでperlを動かしてみた

dotcloudのdocumentや、Dancer tutorialを参考に作ってみました。
作成したsampleはgithubに置いています。

ハマったところは下記。

  • dotcloud deployコマンドは、今はないようだ
    代わりに、dotcloud.ymlファイルで記述します。
  • dotcloud destroyコマンドで、削除した後は、dotcloud listコマンドで必ずチェック
    うまく削除できていない事があり、デバッグ時に影響したようです。
  • psgi使用時は、Makefile.PLにてPlack::Requestを指定
後は、dotcloud logsで、logをみながらデバッグしました。

今回、dotcloud環境での値の渡しかたが分からなかったので、documentを参考にDancerを使ってみました。
これで、perlの動かし方がなんとなくわかりました。


Dancerは軽量WAFとの事ですが、majolicious::liteにも興味がでてきました。
catalystは、今の自分にはtoo muchのような気がしています。

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

2011年7月10日日曜日

去年の最高気温と比較してみた

ここのdataを使って、google docsでグラフ作成してみました。
すでに 去年並の暑さになっていることが分かります。
 


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

2011年6月24日金曜日

楽天アフィリエイト 焼き米の紹介をやってみた

楽天のアカウントはもっていたので、紹介したいものを検索して、数分で準備できました。簡単ですね。
直接twitterで紹介もできますね。

焼米は子供の頃に食べてたのを思い出して、最近探しました。
リーズナブルな値段で、昔の味に近いので、気にいってます。特に食欲のない夏には、おやつがわりにポリポリ食べても美味しいです。
私は、1000gを3袋ぐらいまとめ買いしています。

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

2011年6月21日火曜日

iTunes アフィリエイト参加してみた

手続き簡単ですね。審査いれて2日程でできました。
日本のiTunesアフィリエイトはLinkShareという会社がやっていて、LinkShareでは他にもいろいろな会社のアフィリエイトやっているんですね。

昔好きだったF/Xって映画のテーム曲「cantaloop」を紹介しようと思ったのですが、HipHop版があったのでこちらにします。

Cantaloop 2004 EP - Us3
このエントリーをはてなブックマークに追加

Active Perlでexe作成してみた

下記を参考にさせていただきました。
PAR で Perl スクリプトを exe 化する(ActivePerl 5.12.2 編) - blog.remora.cx

C:\>pp -E "say q.Hello, World!." -o test1.exe
Set up gcc environment - 3.4.5 (mingw-vista special r3)
Error in tempfile() using ppXXXXX.pl: Could not create temp file ppxPqPm.pl: Per
mission denied at C:/Perl/site/lib/PAR/Packer.pm line 312

書き込み部分でErrがでたので、C:\Tempを作成し、そこで再度実行すると、うまくできました。

C:\Temp>pp -E "say q.Hello, World!." -o test1.exe
Set up gcc environment - 3.4.5 (mingw-vista special r3)
Set up gcc environment - 3.4.5 (mingw-vista special r3)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Set up gcc environment - 3.4.5 (mingw-vista special r3)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


作成されたexeは、zip圧縮されたものなので、普通に解凍すればソースも確認可能。と

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

2011年5月7日土曜日

WWW::Curl::Easy使ってみた

下記を参考にした。
WWW::Curl - search.cpan.org
#!/usr/bin/perl -w

use strict;
use warnings;
use WWW::Curl::Easy;

my $in_file = "<適当なfile名>";

open(IN,"$in_file");
while(<IN>){
    chomp($_);
    my $response_body;
    my $curl = WWW::Curl::Easy->new;

    $curl->setopt(CURLOPT_HEADER,1);
    $curl->setopt(CURLOPT_WRITEDATA,\$response_body);
    $curl->setopt(CURLOPT_URL, "$_");

    my $retcode = $curl->perform;
    print $_.":".$retcode.":".$curl->getinfo(CURLINFO_HTTP_CODE)."\n";

}

exit;

読み込むURL listは下記フォーマットで、別fileで用意。
http://www.yahoo.co.jp
http://www.google.co.jp

上のスクリプトで動作確認ok。後はDBと連携して、URL listの読み込み・結果を保存を実施予定。
このエントリーをはてなブックマークに追加

2011年5月6日金曜日

wgetとcurlの違いを知った

wgetでfile dlするぐらいでしたが、それぞれいろいろ違うのですね。
下記参照させていただきました。

wgetとcurlの根本的な違い - ctrlshiftの日記
このエントリーをはてなブックマークに追加

JUGGERNAUT観た

腰痛で動けないので、ストックしておいた「TSUTAYAおすすめ」を観ました。
1974年の作品なのに、一気に観れた。ファロン中佐かっこいい。
「red wire and blue wire」以後、有名なセリフになるんですね。


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

2011年5月3日火曜日

FacebookのゲームのASを調べてみた

現時点の精度は60%程度。Facebookのpopular rankingと若干の差異あり。
結論としては、PC版のSNSのソーシャルアプリのAS調査は自動化可能。

Title カテゴリ SAP ユーザ数 AS運営者 AS
CityVilleGames/OtherZynga89171915AmazonAS14618
FarmVilleGames/Virtual WorldZynga46231606AmazonAS14618
Texas HoldEm Poker Games/CardZynga36204518PACNETAS20940
FrontierVilleGames/Virtual WorldZynga15093228AmazonAS14618
Caf? WorldGames/Virtual WorldZynga12916388AmazonAS14618
Pet SocietyGames/Virtual WorldElectronic Arts9578090AmazonAS14618
Ravenwood FairGames/Virtual WorldLolapps Inc.9451266SOFTLAYERAS36351
Treasure IsleGames/Role PlayingZynga8419499AmazonAS14618
It GirlGames/Role PlayingCrowdStar8338276AmazonAS14618
Millionaire CityGames/Virtual WorldDigital Chocolate, Inc.8018617AmazonAS14618
このエントリーをはてなブックマークに追加

2011年5月1日日曜日

Web::Scraper便利

今まで避けてきたWeb::Scraperをやってみることに。
scraper + Firebugの組み合わせで簡単にできる。すごい。
明日は、今まで正規表現で書いていたところを置き換えてみる。

参考:use Web::Scraper; - 今日のCPANモジュール(跡地)
このエントリーをはてなブックマークに追加

2011年4月30日土曜日

MySQLのチューニング

AWSのマイクロインスタンスを利用中。まだまだいけそう。
DB全く分からない状態から、下記書籍を参考にやっています。




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

mixiアプリ(PC版)のASを調べてみた

利用者数順top10で並べてみた。
Category、人気ランキング、AS等での切り口でみると、おもしろい情報がみえてきそう。


Title Category SAP 利用者数 AS
みんなでケンテイ(´∀`)占い・診断Community Factory6231655AS23661
サンシャイン牧場エンターテインメントRekoo5627081AS18068
マイミク通信簿占い・診断空飛ぶ3550770AS17506
脳力大学-漢字テスト学習株式会社ドリコム2590349AS2497
今日の血液型自分の説明書診断占い・診断HEROZ(株)2190718AS16509
たのしい☆みん顔!生活エンターテインメントサイバード2145273AS4713
今日の誕生日占い占い・診断HEROZ(株)1643655AS16509
そうしてあなたは去ってゆくのねコミュニケーション株式会社アドウェイズ1573983AS9370
記憶スケッチその他株式会社REAL1499541AS9607
みんなの農園エンターテインメントRAKOO1471834AS17686
このエントリーをはてなブックマークに追加

mixiのAS番号調査

対応中。だいたいできた。AS情報の整理残し。
このエントリーをはてなブックマークに追加

2011年4月29日金曜日

サーバのセキュリティ設定

下記を参考に、サーバのセキュリティ対応やってみた。
一度、全体的に確認する必要があるな。

これぐらいやっとけ ~Linuxサーバのセキュリティ設定~ - nabeの雑記帳: "
このエントリーをはてなブックマークに追加

2011年4月26日火曜日

JavaScript勉強してみた

サーバサイドJavaScriptに興味でてきたので、とりあえずJS勉強した。
次はこの本。
このエントリーをはてなブックマークに追加

ヤバゲーのAS調べてみた

収集&解析スクリプト作ってみた。いろいろな切り口で分析できそう。他にどのような指標と組み合わせたらおもしろいだろう。

Title Category SAP ランキング 公式サークル参加数 AS
怪盗ロワイヤル-zero-RPG株式会社ディー・エヌ・エー146981AS38636
対戦☆ZOOKEEPERパズル株式会社KITERETSU212085AS2510
ガンダムブラウザウォーズRPG株式会社バンダイナムコオンライン39882AS2510
キャプテン翼スポーツ・レースKLab株式会社42980AS7488
もやしもんガチャガチャ育成・シミュレーション株式会社フジテレビジョン59810AS2510
100万人の信長の野望育成・シミュレーション株式会社ディー・エヌ・エー/株式会社コーエーテクモゲームス6131844AS4713
ラーメン魂育成・シミュレーション株式会社サミーネットワークス722056AS4694
まきば生活 ひつじ村育成・シミュレーション株式会社サクセス810555AS7506
海賊トレジャー ANOTHER WORLDアクション・タイミング株式会社ディー・エヌ・エー920194AS38636
英雄クエストRPGONE-UP株式会社106679AS4694
このエントリーをはてなブックマークに追加

久しぶり

久しぶりにblogに投稿。少し文章書くならtwitterよりblogかなと思っている今日この頃
このエントリーをはてなブックマークに追加