CentOS で Microsoft SQL Server Command Line Client を使いたいときの Docker Image

公式で用意された Docker ImageUbuntu 16.04 ベースになっており、CentOS で使いたかったので書いた。

Docker Hub

Docker Hub - kheiakiyama/centos7-mssql-tools

GitHub

GitHub - kheiakiyama/centos7-mssql-tools: Unofficial images for Microsoft SQL Server Command Line Tools (sqlcmd/bcp) on CentOS7

つくりかた

Linux 環境での利用方法は以下のドキュメントにあるので、それを Dockerfile におこすだけ。

docs.microsoft.com

プログラマのためのDocker教科書 第2版 インフラの基礎知識&コードによる環境構築の自動化

プログラマのためのDocker教科書 第2版 インフラの基礎知識&コードによる環境構築の自動化

Go 言語を始めるためにやったこと

覚えているうちに書いておきます。

ソースコード置き場の検討

現時点では Mac でのみ開発しています。
(Home)/go/src/github.com/kheiakiyama/(project) に並べるようになりました。

$GOPATH は (home)/go です。

言語の仕組みをざっと理解

Go についての連載記事があったので一通りざっと読みました。

ascii.jp

Go = 使い勝手のよい C++ というのがネット上の評価だと思っていたので、特にメモリ周りがどうなっているのかが気になった次第。
GC が面倒見てくれる C++ があったら便利ですね。

小さいプロダクトで試す

以前 Ruby, Rails を勉強したときもそうだったが、小さいサービスを書くのがモチベーションを維持しつつやりやすい。
Rails のときの記事はこちら。

kheiakiyama.hateblo.jp


ついでに最近 terraform と仲良くなってきたのでそこも練習したのが以下。

kheiakiyama.hateblo.jp

github.com

ちょっと小さすぎだし、コードの最適化といった発想が全然できてないのでもう少しサイズの大きいサービスで試したい。
ホントは Rails で書いたやつを Go に移植してみようと書き始めたが、Go では View が面倒ということが判明し、では静的サイトジェネレータで・・・とどんどん Go から離れていったので手軽な Lambda で書いたのが今ココというところ。

Goならわかるシステムプログラミング

Goならわかるシステムプログラミング

1年以上前からやるやると言ってたけど、さっさとやればよかった。

「ただいま」と「いってらっしゃい」を学習リモコン sRemo-R で Alexa に最適化する

kheiakiyama.hateblo.jp

今や旧機種の sRemo-R を1ヶ月前に購入しましたが、ようやく Alexa 連携を設定しました。

sRemo-R を接続可能にするための設定

新機種の sRemo-R2 もそうですが、sRemo-R に Alexa や ifttt と連携するためには設置場所(僕の場合は自宅) に外部からアクセスできる必要があります。
他の学習リモコンと違う点として、ルータのポート開放を行う必要があります。

sremosup.socinno.com

デフォルトでは 777 ポートを開放します。

ポート開放のときは sRemo-R が使用する IP アドレスを開放する必要がありますが、初期設定を雑に行っている場合は自動割当になっているかもしれません。
その場合はIPアドレス設定をやり直します。

sremosup.socinno.com

無事完了したらそのIPアドレスをポート開放しましょう。

Alexa の設定

Alexa の設定は検索すると腐るほどガジェット記事がヒットしますが、公式の手順を見るのが早いです。

Amazon.co.jp ヘルプ: スマートホーム製品の定型アクションを作成する

できたこと

kheiakiyama.hateblo.jp

上記事で書きましたが、FireTV のオンオフを Alexa から切り替えできるようにしていました。
これに加え、 sRemo-R がエアコンと連携しました。

「ただいま」で FireTV をオン、エアコンをオン
「いってきます」で FireTV をオフ、エアコンをオフ
できるようになりました。
就寝中はエアコンつけっぱなしにしているため、
「おはよう」で FireTV をオン
「おやすみ」で FireTV をオフ
という状態です。

ときどき朝の発話が寝ぼけているために「おはよ」と認識され、デフォルトの朝の挨拶に返答される場合があります。
ここがコンテキストで設定できるようになると嬉しいなというところです。

AWS IoT Button を買ったのでトイレ IoT に使えそうなバックエンド書いた

まえがき

気になっていた AWS IoT エンタープライズボタンを購入しました。

届くまでの間、何に使えそうか考えてましたが勤め先のトイレ IoT で使ってみたいと思いバックエンドのプログラムを書きました。

できたもの

github.com

S3 上に以下のような CSV のメトリックスが保存されるのが iot-button-metrics の最終成果物です。

"2018/07/28 12:12:30",0
"2018/07/28 12:13:29",0
"2018/07/28 12:14:30",1
"2018/07/28 12:15:30",1
"2018/07/28 12:16:30",1
"2018/07/28 12:17:29",1
"2018/07/28 12:18:30",1
"2018/07/28 12:19:30",0
"2018/07/28 12:20:30",0
...

iot-button-metrics ではAWS IoT エンタープライズボタンをトイレに設置し、個室入室者が入室時にボタンを押すことを想定しています。
ボタンを押してから5分間は入室している想定でメトリックを保存します。
(この300秒という時間は適切な時間がわからないので調整の余地があります)

複数ボタンはまだ対応してませんが、そのうち対応するでしょう。
(2018/07/29 01:44 追記: 対応しました)

アーキテクチャ

f:id:khei-fuji:20180728221939p:plain

AWS IoT エンタープライズボタンを押したときに Lambda を呼び出すことができます。
ボタンからトリガーされる Lambda Function では単にボタンを押された日時が保存されるのみです。
毎分トリガーされる Lambda Function ではさきの日時を加味してメトリックを保存します。

メトリックを保存するまでが役割で、これをどう可視化するかまではカバーしていません。

あとがき

Amazon - AWS IoT エンタープライズボタン
説明に "約2,000 回クリックできます" とあるため、1日40回利用されるとすれば50日程度、週末を考慮しても2ヶ月程度しか保たないということになります。
地味にコストがかかりますね。。

このコストがクリアされる前提ですが、勤め先で無事導入できた場合は Power BI が得意な同僚がいるため、可視化の部分を託したいところです。


なぜかボタンの Amazon アフィリエイト貼れないのでトイレっぽいもの置いておきます。

sRemo-R2 が発売されたのに sRemo-R を前日に購入しました

まえがき

何も知らずに喜んで設定していたさっきまでの自分。

気づいた

プレスリリース

socinno.com

あとがき

これから買う人は2を買うといいんじゃないですかねえ。

sRemo-R2 – スマートホームライフをあなたに。

Azure Blob Storage の Static website を使い始めた

はじめに

azure.microsoft.com

GA のニュースが入ってきたので、以下自分のレジュメサイトで早速導入した。

kheiakiyama's CV

きっかけ

というのも、先日以下記事でホスティングしたサイトが毎日3時間くらい稼働すると落ちる現象が出ていたため。

kheiakiyama.hateblo.jp

Consumption Plan を使っていたのに App Service の Shared Plan みたいな挙動をしていて、原因を調べていたが、Function Proxy のドキュメントが見当たらなかったので、これを機会に利用をやめたかった。

使い始め方

使い方は冒頭のドキュメントに書いてあり、補足はなし。

Static website の手前には Azure CDN を置いており、先日発表された MicrosoftCDN network を利用している。

Announcing Microsoft's own Content Delivery Network | ブログ | Microsoft Azure

最新の Azure Storage Explorer(Version 1.2.0) では Blob Storage Container の $web を開けない疑惑があるが、先日フィードバックしたときに開けるバージョンをもらっていたのでなんとかなった。

フィードバックでもらったバージョンは Version 1.1.0 なので、間違って更新してしまいそうになる。
早く機能が組み込まれてほしいです。

よくわからない

CDN endpoint でカスタムドメインを設定したとき、whois の連絡先に確認メールが届く仕様だと思っていたが、お名前.com で whois 情報代行していた。
しばらく時間が経つと認証が完了していて、何が起きたか全くわからなかった。
お名前.com 側でよきにはからってくれることなのか?(だとしても本人によるリクエストかを お名前.com 側が知るすべはないはず)

願望


travis-ci などの CD サービスで自動更新できるようにしたい。

Alexa スキル「30言ったら負け」を公開しました

概要

趣味で Alexa Skill を開発してましたが、この度「30言ったら負け」を公開しましたので告知します。

30言ったら負け

30言ったら負け

スキルの概要は以下のとおりです。

誰もが一度はやったことがある、「30を言ったら負けゲーム」ができます。

付け足すことは特にないです。
30代の僕が子供の頃からありましたが、いつからあるんでしょうね。

開発ヒストリー

  • 3月末に ask new 、その後 1ヶ月放置
  • 気が向いた週末に開発を3-4週間
  • 公開前に ASK SDK v2 にアップデート
  • 審査に落ちること4回
  • AWS Summit Tokyo に公開するつもりが、申請ボタンを押しそこねて6月の公開になりました
    (そのため、例のTシャツ は6月にずれ込み・・・)

少し NodeJS が書ける人なら週末だけでも毎月リリースは可能でしょう。

注意点

数字が連続するスキルということもあり、はっきり発声しないと認識しないことがあります。
これはスキルの問題というよりも AWS音声認識の問題だと考えています。
一度も認識ミスなく勝つことができたらなかなかすごいです。

最後に

これ数字を変えて申請したら通るんですかね?

Amazon Echo Dot (Newモデル)、ブラック

Amazon Echo Dot (Newモデル)、ブラック