developer's diary

最近はc#のエントリが多いです

AWS Summit Tokyo 2015 オープニングキーノート Scott Chaconさんのお話(GitHub, Inc. 共同創業者)つぶやきメモ

GitHub, AWS などの分散テクノロジーが実現する、デベロッパー主体のアプリケーションデリバリ

AWS Summit Tokyo 2015 1day 基調講演 つぶやきメモ

Google Calendar APIにあるCalendarList.DeleteとCalendars.Deleteの違い

違いが気になったのでAPIを動かして確認してみた。

CalendarList: delete

 ドキュメント:CalendarList: delete - Google Calendar API — Google Developers

ユーザのカレンダー一覧から消すのみでした。  カレンダー自体は残るので注意が必要です。

Calendars: delete

 カレンダーオブジェクト自体を削除します。  カレンダーに付随するACLも削除されていると思われます(ACL.List APIでエラーとなった)

 ドキュメント:Calendars: delete - Google Calendar API — Google Developers

WPFを始める際に読んで参考になったリンク集

jQueryUI dialogを利用してalert関数を作成

alertするパターン毎にdivタグをHTMLにべた書きは面倒。

Dialog | jQuery UIを見てみると、

divタグをHTMLに記述してそれをalertで利用するような使い方で書いてある。

alertの種類分作ってられないので関数の中でdivを作ってから

ダイアログ表示後に後片付けするような関数を作ってみる。

毎度毎度dom生成するから重い?

定義:alertDialog関数

引き数オブジェクト

キー 内容
title ダイアログのタイトル
body ダイアログの本文
close ダイアログを閉じたときに実行する関数

使い方

$(function() {

  $("#btnAlert").on("click", function(){
    alertDialog({title:"title",body:"body", close: function(){ console.log("ダイアログを閉じました。") }});
  });

});

デモ

アラートを終了したら再度アラートをしてみる。

alertDialog({title:"title",body:"body", close:function(){
  alertDialog({title:"title2回目",body:"body2回目", close:function(){} });
}});

ソース

<link rel="stylesheet" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script>

<script type="text/javascript">
    function alertDialog(_options){
        var default_option = {
          title:"",
          body:"",
          close:function(){ return true; }
        }
        var options = $.extend(default_option , _options, {});
        var dom = $("<div />", { title: options.title, html: options.body });
        dom.dialog({
          modal: true,
          close: function(){
            var dom = $(this);
            dom.dialog("destroy");
            dom.remove();
            options.close();
          },
          buttons: [
            {
              text: "Ok",
              click: function() {
                $(this).dialog("close");
              }
            }
          ]
        });
    };
</script>


<script type="text/javascript">
  $(function() {
    $("#btnAlert").on("click", function(){
      alertDialog({title:"title",body:"body"});
    });
  });
</script>

<button id="btnAlert">デモ</button>

twilioでフリーダイヤルを取得した際の試算。

価格は以下を参考に

 

というかシュミレーターがあります。

↓↓↓

http://twilio.kddi-web.com/price/#simulatorArea

固定費

月額利用料:1,620 円(税込)

着信料金

1分あたり21.6 円(税込)

発信料金

フリーダイヤル(0120)で受けた着信をアプリで処理する場合は無料だが、 転送する場合は別途発信料金が必要だと思われる。

宛先 1分あたりの料金(税込)
固定電話宛(下記「携帯電話宛」以外) 5.4 円
携帯電話宛(070 / 080 / 090 番号) 16.2 円
アプリ宛(Client 利用) 0.25 円(税込)
SIP 宛 0.5 円(税込)

録音機能

1分あたり0.1 円(税込)

例)単純に携帯電話に転送。全部で100分

項目 費用
月額利用料 1,620 円
フリーダイヤル着信料金 2,160 円
携帯宛発信料 1,620 円
音声録音 10円
合計 5,410 円

例2)8時間 + 20営業日 = 9600分 を固定電話に転送

項目 費用
月額利用料 1,620 円
フリーダイヤル着信料金 207,360 円
固定電話宛発信料 51,840 円
音声録音 960円
合計 261,780 円

SIP宛の発信だと1分あたり0.5 円なので、合計214,740円

しかし

同時に電話が掛かった場合、「通話待ち」の状態にしないといけない。

twilioの場合、通話キューイングという機能があるのでそれを使えば実装は出来そう。

しかし通話待ちの間は、フリーダイヤルの着信料金がかかる。

なので単純に計算できない。。。

今度はNTTコミュニケーションで試算してみよう。

【調査】AWS SDK for JavaScript in the Browserを利用してS3のセキュリティを確認する

要旨

Facebookでログインしたアカウントを利用してAmazonのs3にファイルをアップロードした場合、 他ユーザ(別アカウントでFacebookからログインしたユーザ)からどう見えるかを検証。

詳細

  • プライベートなバケットを用意(CORS Configuration EditorでCROSを許可しておく)
  • AWS.WebIdentityCredentialsを利用してFacebookのアカウントにAMIを発行する
  • 発行したAMIのアカウントでS3に対してプライベートなバケットにファイルをアップロード
  • 他のユーザでログインして確認した場合どのように表示されるか。
  • S3からファイルを表示する際は、有効期限付きのURLを生成する(getSignedUrl)

AWS SDK for JavaScript in the Browser

※【AWS SDK for JavaScript in the Browser】はDeveloper Previewです。

ブラウザ内の AWS SDK for JavaScript

権限の種類

権限 意味
private 所有者に FULL_CONTROL が付与される。
public-read 所有者に FULL_CONTROL 、All Users に READ が付与される。
public-read-write 所有者に FULL_CONTROL 、All Users に READ/WRITE が付与される。
authenticated-read 所有者に FULL_CONTROL 、Authenticated Users に READ が付与される。
bucket-owner-read オブジェクト所有者に FULL_CONTROL 、バケット所有者に READ が付与される。
bucket-owner-full-control バケット所有者とオブジェクト所有者に FULL_CONTROL が付与される。

権限の参考

結果

本人が表示

f:id:mitsugi-bb:20141025132923j:plain

他人が表示

f:id:mitsugi-bb:20141025132822j:plain

結果

private、bucket-owner-read、bucket-owner-full-controlで保存したファイルは

ログインユーザまたは、バケット所有者しかアクセスできない。

参考

http://devlog.mitsugeek.net/entry/2014/03/08/AWS_SDK_for_JavaScript_in_the_Browser%E3%81%A7s3%2Bjs%2Bfacebook%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%92%E3%82%84%E3%81%A3%E3%81%A6

http://fb.dev-plus.jp/reference/getstart/website/auth/

【予想】クラウドベンダが増えるとどうなるか。

ふと思ったこと。少しだけまとめてみます。

汎用サーバの生産数が減る

  • 一部のユーザがクラウドに移行
  • 汎用サーバを買う人が減る

汎用サーバの価格が上昇

  • 大量に生産するから安かったけれども生産数が減るのであれば価格が下がる
  • 数が少なくなることによる付加価値の上昇

クラウドに移行するユーザが増える

  • 価格が上がれば当然クラウドへの移行を検討する
  • サーバベンダはクラウドにはない付加価値を付けることで事業を継続する(価格は当然上がる)

負のサイクル

f:id:mitsugi-bb:20141025134431j:plain

格安サーバが売り切れ

1万円台で購入できたHP ProLiant ML110シリーズ。

f:id:mitsugi-bb:20141025135419j:plain

f:id:mitsugi-bb:20141025135444j:plain

↓詳しいスペックとか

HP ProLiant/ML110 G7 - wiki@nothing

サーバを再定義するHP(ヒューレット・パッカード)

f:id:mitsugi-bb:20141025135543j:plain

主にデータセンター向けなラインナップ。

“自働サーバー”の強化をしつつ、
多様化するワークロードに対して、
最適なコンピュート基盤を提供する

↓ハードウェアベースで監視・制御するための、管理ソフトウェア

HP Insight ソフトウェア - Wikipedia

とは書いてみたけど。

まだまだ安いサーバはあるみたい。

f:id:mitsugi-bb:20141025141002j:plain

出張先で見つけたクラウド

f:id:mitsugi-bb:20141025141856j:plain

http://snow.hucc.hokudai.ac.jp/wordpress/munetomo/research-page/

クラウドはどんどん増えてく。

AWSの注意点。Elastic IP アドレスはきちんと解放しよう。

EC2をreserved-instancesで借りてるのに、停止してElastic IPを解放せずに追加で料金支払う羽目になっていた・・・・

バカだ。。

WebPayがec-cubeのクレジットカード決済モジュール作ってた。

https://webpay.jp/docs/plugins#ec-cube

ブログ記事:http://blog.webpay.co.jp/post/ec-cube-module_20aug2014

初期費用、固定費0円のスタータープランで手数料3.25%(VISA/MasterCard)3.40%(JCB/AMEX/DINERS)は安い気がする。

参考

  • GMOイプシロン:4.0%~5.0%
  • PayPal:3.6% + 40円
  • F-REGI(エフレジ):3.4%~4.4%
  • ニッセンコレクト:4.7%+154円 ※後払い