ふるさと納税、家電全廃前に滑り込み

年始めかふるさと納税改善についていろいろと情報が出ていましたが、
ついに今日こんな記事が出ました。

www.sankei.com

治体が贈る返礼品の調達額は、寄付額の3割以下とする目安を初めて設定。商品券や家電は、転売対策の有無や地域への経済効果に関係なく全廃を求めた。

総務相のご意見なので法的な強制力はありませんが、実質強制みたいなものなので
週明けから随時消えていってGWぐらいには全部消えることが想定されます。
すでに私のお気に入りの一つである伊那市はすべての関連HPで申し込みが停止しています。

伊那市はダイソンやカメラからHDDと何でも扱う素晴らしいところだったので残念ですね。
対応もなかなかアグレッシブで去年ぐらいかの家電はよくないのではないかという勧告に対して
ふるさとちょいすが高額商品や家電の取り扱いをやめると、ふるなびに移転し、さらに独自サイトも立ち上げて各種家電を提供してくれていたので非常に残念です。

しかし、まだ申し込みを受け付けている自治体もあるので、申し込みするならこの土日に滑り込みするしかない!
みんながんばれー!

AzureSQLデータベースとSQLServer

2014ベースで似ているけど完全に同じではない。

  • サポートされない機能
    • SQLCLR
    • グローバル一時テーブル
    • Service Broker
    • 一部のシステムテーブルと動的管理ビュー
    • トレースフラグ
  • データベースの分離
    • データベースcontextをユーザデータベース間で切り替えできない
    • 分散クエリ使用不可
  • 運用タスク
    • データベース作成時:物理ストレージはすべて抽象化されストレージを個別指定などはできない。
    • セキュリティの構造:SQLServer認証とAD認証(2017/01より)のみWin認証は使えない
    • バックアップ:自動バックアップのみ。オンデマンドはできない。

Azureのストレージアカウントが見つからなくなったら。。。

Azureは絶賛進化中で全体のメニューも更新中です。
旧管理画面であるフルポータル(https://manage.windowsazure.com)から新ポータル(https://portal.azure.com)にどんどんと機能が移行していっておりほぼほぼ新ポータルで作業ができるようになっていますが、両者が混在しておりちょっとわかりにくい状態にあります。
VMも「Virtual Machines」と「仮想マシン(クラシック)」とわかれていたりしますが、一番混乱するのはストレージアカウントのところじゃないでしょうか。
このあたりはPowerShellのメソッドも変わっており、新ポータルで作られたストレージアカウントは旧PowerShellのコマンド「Get-AzureStorageAccoun」ではアクセスできません。1.7でついかされている「Get-AzureRMStorageAccount」をつかわないといけません。

1.4以前のAzurePowerShellを使っている場合は1.7以上に更新しましょう。
更新はWebPlatformInstallerでAzurePowerShellを追加するのが楽。

現在使っているAzurePowerShellのバージョンは「Get-Module」コマンドで確認できます。
ちなみにPowerShellのバージョンは「$PSVersionTable」コマンドで確認できます。

動かしてみるとこんな感じ

PS C:\Users\Administrator> Get-AzureStorageAccount | fl StorageAccountName
StorageAccountName : storagefromold

PS C:\Users\Administrator> Get-AzureRMStorageAccount | fl StorageAccountName
StorageAccountName : storagefromnew

どちらも対応したストレージアカウントしか拾えていませんね。これは嵌るポイントだなぁ。。。

ちなみにログインもコマンドが変わっています。

旧コマンド
 Add-AzureAccount
新コマンド
 Login-AzureRmAccount

いろんなメニューが新ポータルへ移行しており来年度中ぐらうにはフルポータルはすべて淘汰されるのかな、、
サービス変化の過渡期って感じですね。

Azureの負荷分散セットとAWSのELB

似たような機能でも思想が違うと色々違いが出るんだなと感じます。
何かを学ぶときにそれだけでを学ぶのではなく類似品をみることで特徴が掴めるのは何を学ぶにも大事ですね。

大きな考え方

AWSの考え方
ELBの下に仮想サーバを配置する。といったメニュー構成

₋Azureの考え方
仮想サーバに対して可用性セットを作って、さらにそのグループに負荷分散セットを作るといったメニューになっている。
可用性セットがあり、更新ドメイン、障害ドメイン、そして可用性セットがさらにそれを大きく包むという感じの構成になっているのだろう。
Bestプラクティスはあるけど好きに設定してくれというようなAWSの考えと、こうするべしというAzureの考えの差があるように感じる。

またTrafficManagerでリージョンマタギの負荷分散が可能。GCEにもあるけどこの機能は便利だなー。(TrafficManagerの実態がどこに存在するのかはわからなかった。)

ヘルスチェックURI

₋ELBの場合
ELBのヘルスチェックのコンフィギュレーションで「Ping Path」にヘルスチェックURIを設定

₋Azureの場合
画面からは設定も確認もできず、PowerShellで設定、確認する必要あり。

get-azurevm -ServiceName <リソースグループ名> -Name <VM名> | Get-AzureEndpoint 

と打って出てきた中の「ProbePath」がヘルスチェックURI。デフォルトは空白なのでおそらく「/」を見に来ている。

更新するときはSet-AzureEndpointコマンドで行う。以下Pageに詳細がある。
Add-AzureEndpoint
Windows Azure Virtual Machinesで、死活監視(ヘルスチェック)しながらロードバランシングする手順 - 蒼の王座

Azure研修1日目

cloudやるならマルチクラウドでしょということでAzureの研修にやってきました。
Azureは触るのもログインするのも初めて!わくわくです。

全体的な気づきとして、AWSに比べインフラやさん視点の設計になっている気がする。(AWSはアプリ開発者視点のものが多い気がする。)
すでにあるノウハウをCloudに移植していったのか、ネイティブなのかの違いなのかな。

面白かった点

  • 課金の考え方

Azure上のVMからシャットダウンしてもダメで管理コンソールからシャットダウンをしないと課金対象から外れない。
http://www.atmarkit.co.jp/ait/articles/1405/09/news093.html

Windows PowerShellとAzure PowerShellWindowsPowerShell ISEとかたくさんある。統一はよ!!
PowerShellのコマンド名わかりにくい。ドットネットのメソッド名っぽいのはわかるのだが、コマンド打つときにはなんか違和感。これはゲイツ様への信心がたらんのでしょう。

  • ActiveDirectory

Azure上のADはオンプレのADとはことなりSSOに特化したのも。オンプレのADのような機能でAzure上のマシンをコントロールできるとかではない。
なんだーーー。そうなのか。。

オープンソースのブロックチェーンHyperledger Fabricのv1.0をUbunts16.04にインストール

オープンソースのブロックチェーンHyperledger Fabricのv1.0αがリリースされていたのでインストールして触ってみる。
当初のリリーススケジュールどおりではありますが、3月にV1.0は無理じゃないかと思っていたら何とか出てきたので結構凄いですね。中の人たちお疲れ様です。

ちなみに以前のバージョン0.5以前の手順は以下
garapon.hatenablog.com

ちょっと前からですがVagrantが使われなくなったりと構築方法もだいぶ変わっていますね。
対象のマシンはProxy環境下にあるWindows上のVirtualBoxに構築されているまっさらなUbunts16.04でやってみます。

手順

Getting Setup — hyperledger-fabricdocs master documentation

本家サイトの上記手順に従ってやっていきます。

事前準備

Go - most recent version
Docker - v1.13 or higher
Docker Compose - v1.8 or higher
Node.js & npm - node v6.9.5 and npm v3.10.10
xcode - only required for OS X users
nvm

を入れなさいと書いてあるので順次入れていきましょう。
なにはともあれPorxyの設定

set http_proxy=http://proxy:port
set https_proxy=http://proxy:port

やれやれですね。

Golangのインストール

sudo apt-get -y install golang

DockerおよびDocker Composeのインストール

sudo apt-get -y install docker.io docker.compose
sudo usermod -aG docker gara

docker-composeの最新版

curl -L --proxy http://proxy:port "https://github.com/docker/compose/releases/download/1.8.1/docker-compose-$(uname -s)-$(uname -m)" > docker-compose
sudo mv docker-compose /usr/bin/
sudo chmod +x /usr/bin/docker-compose

なお、 curl は プロキシの設定が --proxy http://proxy:port なので気をつけましょう。

nvmのインストール(というかnodeを入れたいだけ)

途中でGitにプロキシを通すのを忘れずに

sudo apt-get -y install build-essential libssl-dev
git 
git config --global http.proxy  http://proxy:port
git config --global https.proxy  http://proxy:port
curl  -o- --proxy http://proxy:port https://raw.githubusercontent.com/creationix/nvm/v0.25.2/install.sh | bash

インストールが終わるとClose and reopen your terminal to start using nvmといわれるので再接続。
本来の手順的には

nvm install v6.9.5

でnodeをインストールするんだけど、うまくいかなかったのでnvmコマンドをつかうのはやめて、nコマンドを入れて

sudo n 6.9.5

でインストールしました。
nコマンドのインストールは以下参照
garapon.hatenablog.com

さて、これで事前準備が完了。
いつも思うけど、事前準備が一番めんどくさいよね。。。まあそんなもんか

作業ディレクトリの作成とサンプルのDL

mkdir hackfest
cd hackfest
curl -L https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sfhackfest/sfhackfest.tar.gz -o sfhackfest.tar.gz 2> /dev/null;  tar -xvf sfhackfest.tar.gz

Dokcerの起動!!!

Dockerあげる前にこれまたproxy設定。
/etc/default/dockerに

export http_proxy="http://proxy.example.com:3128/"

的な感じでProxyを追加して

sudo service docker restart

これやってから

docker-compose -f docker-compose-gettingstarted.yml build
docker-compose -f docker-compose-gettingstarted.yml up -d

起動確認!

$ docker ps
CONTAINER ID        IMAGE                                                          COMMAND                  CREATED             STATUS              PORTS                                            NAMES
397d7b0a4376        sfhackfest22017/fabric-peer:x86_64-0.7.0-snapshot-c7b3fe0      "sh -c './channel_tes"   23 seconds ago      Up 22 seconds                                                        cli
8a3ed98c6d08        sfhackfest22017/fabric-peer:x86_64-0.7.0-snapshot-c7b3fe0      "peer node start --pe"   23 seconds ago      Up 22 seconds       0.0.0.0:8056->7051/tcp                           peer2
5f180d32588c        sfhackfest22017/fabric-peer:x86_64-0.7.0-snapshot-c7b3fe0      "peer node start --pe"   24 seconds ago      Up 23 seconds       0.0.0.0:8055->7051/tcp                           peer1
7b39214c0e7a        sfhackfest22017/fabric-peer:x86_64-0.7.0-snapshot-c7b3fe0      "peer node start --pe"   24 seconds ago      Up 23 seconds       0.0.0.0:8051->7051/tcp, 0.0.0.0:8053->7053/tcp   peer0
baeab3a755de        sfhackfest22017/fabric-orderer:x86_64-0.7.0-snapshot-c7b3fe0   "orderer"                28 seconds ago      Up 25 seconds       0.0.0.0:8050->7050/tcp                           orderer
2e7bf4172c7f        sfhackfest22017/fabric-ca:x86_64-0.7.0-snapshot-6294c57        "sh -c 'sleep 10; fab"   28 seconds ago      Up 26 seconds       0.0.0.0:8054->7054/tcp                           ca

6個動いてますね。

つないで確認して見る

$ docker exec -it cli bash
root@397d7b0a4376:/opt/gopath/src/github.com/hyperledger/fabric/peer# cat results.txt
SUCCESSFUL CHANNEL CREATION
SUCCESSFUL JOIN CHANNEL on PEER0
SUCCESSFUL JOIN CHANNEL on PEER1
SUCCESSFUL JOIN CHANNEL on PEER2

全部成功ですね。
ジェネシスBlockも出来ています。

これでインストールは終わり。
あとは本家手順に従ってサンプルを動かすも良し、以前のバージョンのChainCodeを動かすも良し。やり放題です。

おれおれ証明書でHTTPS

数年に1回思い出したくて思い出せないシリーズ

秘密鍵作成
cd /etc/httpd/conf
openssl genrsa -aes128 1024 > server.key

公開鍵作成
openssl req -new -key server.key > server.csr
CommonNameのところに証明したいアドレスを入力

証明書作成
openssl x509 -in server.csr -days 36500 -req -signkey server.key > server.crt

パスフレーズを消す
openssl rsa -in server.key > server.key

アパッチに設定
/etc/httpd/conf.d/ssl.conf
の
<VirtualHost _default_:443>
のなかに
  SSLCertificateFile /etc/httpd/conf/server.crt
  SSLCertificateKeyFile /etc/httpd/conf/server.key