developer's diary

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

【調査】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/

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

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円 ※後払い

カード会社の手数料関係メモ

Node-Redは超楽しいかもしれない。

こんな記事を見つけた。

Node-RED を使用してリアルタイムのチャット・アプリケーションを 5 分で作成する

え?なにそれ?Node-Red?

調べてみる。

Raspberry piなんかで使える。おぉ。

というわけで早速試してみた(windows端末にnode.jsが入ってた。)

git clone https://github.com/node-red/node-red.git
cd node-red
npm install

で実行

node red.js

nodeをつなげて遊んでみた。

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

超楽しい。(このエントリからはたぶん伝わらない・・・)

【ふと思ったこと】頭を使うところと、頭を使わないところ。脳みそのメモリーリークがうつ病に繋がる?

  • スコープ
  • ライフサイクル
  • 頭を使って考えるところ
  • 頭を使わなくてもよいところ(考えないところ)

考えないといけないところが多すぎると必ずバッファオーバーフローを起こす。

不安や悩みは考えてもムダなんだけども、頭のメモリを侵食していく。

つまりメモリリーク。

不安や悩みは紙に書き出すことでメモリを解放出来るらしい。

人間の脳には忘れるというガベージコレクションが存在する。

紙に書くことでガベージコレクションが行われ脳のメモリリークを防ぐ。

言葉に吐くことでメモリリークを防ぐ。

悩みが多かった時に考える余地がなくなり、頭がしびれてくる。

眠れない夜を過ごす。

頭がしびれて手足が熱くなって眠れなくなる。

寝るということも脳のガベージコレクション。

メモリリークを防ぐ役割がある。

だから睡眠はとても大事。

考えなくてもいいこと。

考えなきゃいけないこと。

後ろから知らない人に刺されるかもしれないという不安は考えなくてもいいこと。

後ろから知らない人に刺されたときは、考えなきゃいけないこと。

刺されたらどうするかは考えててもいいこと。 でもそんなこと沢山沢山頭の片隅に置いていくとメモリリークが発生する。

イシューはどこにあるのか。

久しぶりにGoogleトレンドと戯れる。

プログラミング言語

データベース

WEBを支える技術

ブラウザ

オペレーションシステム

Linux系

はてなダイアリー vs はてなブログ

パンDEポップ!アップ!が気になる。

このブログの趣向に合わないんだけども。。。 コレカワイイ。

パンDEポップ! アップ! A-76189

パンDEポップ! アップ! A-76189

javascriptでPDF出力(日本語表示)

javascriptだけでPDFが生成できるのでs3だけでも動的なPDF生成が可能。 localStorage等と利用すればもっと広がりそう。

何ができるか。

数独(ナンプレ)の問題と答えを印字したPDFを動的に生成するプログラムとか。。

数独PDF生成

ビンゴカード生成するプログラムとか。。。。

⇒ 作ってません(--;)

DEMO

↑ 上記ボタンを押すとPDFがダウンロードされます。

ソース

function getTextJpegBase64(text, fsize){
  var canvas = new fabric.Canvas('c',{backgroundColor : "#fff"});
  canvas.add(new fabric.Text(text, { fontFamily: 'Arial',fill: 'black',left: 0,top: 0,fontSize: fsize }));
  canvas.setHeight(fsize * 2);
  canvas.setWidth(790);
  canvas.calcOffset();
  canvas.renderAll();
  return $('canvas').get(0).toDataURL('image/jpeg');
}
$(document).ready(function() {
  $('#download-pdf').click(function(){
    var doc = new jsPDF();
    doc.addImage(getTextJpegBase64("日本語表示", 24), 'JPEG',  10,  20);
    doc.save('sample.pdf');
  });
});

依存関係

  • jquery
  • jspdf.js
  • jspdf.plugin.addimage.js
  • FileSaver.js
  • fabric.js
  • canvasタグ1つ

簡単な解説

jspdf.jsが日本語対応していないので、canvasに日本語で文字書いて、imgとしてpdfに取り込んでいます。

この技術要素を利用したサイト

学習プリント生成ページ

数独PDF生成