年中アイス

いろいろつらつら

GoでJSONの数字/数値を扱う

JSONはデータの表現形式です。表現はできますが、項目があるかや、型が何であるかを検査する仕組みはありません。*1 そのため、システムや実装が分かれている場合に、数値を期待しているが、JSONの表現上、数値か数字かがずれていることが起き得ます。どうい…

Amazon echo (Alexa) がやってきた

スマートスピーカーが盛り上がってきてますが、Amazon echoの招待メールが来て、ポチって届きました。前の日にだいぶ購買欲落ちたってツイートしてたら、その翌日に招待メール来ました。招待メールから4日以内に注文しないと、購入権がなくなるので、注文し…

CircleCI 2.0でGoのテスト触ってみた

CI周りを触ってみている中で、Dockerイメージが動くようになったという、CircleCI 2.0が気になったので触ってみました。ちなみに1.0も触ったことはないです。参考で見たページだと、2.0はBeta版の時期もありましたが、今は正式にリリースされています。 circ…

docker for macのホストを指すドメイン名

手元のMacで開発をしていて、コンテナからホスト上で動作しているサーバに繋ぐ必要がありました。単純にlocalhostを使うとコンテナ自体を指してしまうので、それでは通信できません。ホストのIPをいちいち指定するのもなーと思っていたんですが、docker for …

格安Android(g06+)買ってみた

持っているガラケーのバッテリー寿命が来て、5分も通話すれば落ちるぐらいになってしまいました。*1もう一度ガラケーに変えるという手もあるんですが、契約もめんどいので、MNPして格安SIMに電話番号も移そうかなと検討しています。それで今回移行する端末候…

GoでJSON文字列を整形し直す

Goで、JSONを返すWebAPIを呼んだ時、普通は結果をプログラムで使うので、対応する構造体を用意して、json.Unmarshal()などで変換します。 しかし、JSONをそのまま整形だけして出力したい場合があります。例えば、WebAPIを呼んで、そのレスポンスを見せるだけ…

Apexでlambda slack POSTにGoを使う

以前のエントリで、Lambda Node.js 4.3を使ってSlackにPostしていました。 reiki4040.hatenablog.com 普段Javascriptは書かないので、Goで書いてApexでデプロイする版を試しました。 ApexはLambdaのコードを管理(?)、デプロイするツールで、PythonやNode.js…

AWS CodeBuildでGoプロジェクトをビルドする

AWS TokyoリージョンにもCodeBuild等のCodeシリーズ(?)一式揃い、使ってみようということで、まずはCodeBuildを試してみました。 公式にGoのサンプルはあるんですが、他のライブラリ使ってないhello worldなので、CodeBuildの説明だけという感じでした。vend…

DeploymentとServiceをyamlファイルで定義する

kubectlコマンドとオプションでnginxをminikube上で動かしました。 今回は、コマンドで起動内容を指定するのではなく、定義ファイルを使って動かすようにします。定義ファイルにすることでgitで管理できるようになります。 コマンドの振り返り 以下のように…

Linuxでメモリ使用量が増え続けた

AmazonLinux 2017.03にnginx乗せて稼働させてたら、なぜかメモリ使用量が、1日ちょっとで2GB後半にさしかかりました。cacheではなくusedを徐々に消費してたので、これは何かリークしてる疑い。 プロセス等を見てもメモリを使っているものもいないし、疑いの…

minikubeで自分の作ったimageを使う

前回minikubeの実行環境を作りました。公開されているnginxのimageを使いましたが、実際は自分でimageを作成し、それを実行させることがほとんどだと思います。minikubeはdockerを内包しているので、そこでdocker buildすればimageが登録され、使うことがで…

ローカルでkubernetesを動かせるminikubeを試す

kubernetes(以降k8s)は、GKE(GoogleContainerEngine)を使うのが簡単らしいですが、とりあえずローカル実行できる環境が欲しくなったりします。 minikubeは、VirtualBoxなどの上にk8sの環境を構築してくれるツールです。今回はとりあえずMac上にk8s環境を作り…

リリースを自動化したら思ったより楽になった

rnzooの0.5.0を開発していくにあたって、機能的な追加の他に、リリースの自動化を行いました。もともとビルド自体はbashスクリプトで自動化していて、dockerを使ったコンテナ上でのビルドとアーカイブファイルの作成を行っていました。 今回、devバージョン…

rnzoo 0.5.0開発中

EC2関連のコマンドをGoで実装したrnzooですが、0.5.0に向けて追加実装を色々やってます。 2017/03/23時点で0.5.0-dev5をリリースしています。devバージョンを使いたい場合は、以下で入ります。 brew tap reiki4040/rnzoo brew install --devel rnzoo 0.5.0の…

rnzooにinstance type変更機能を追加しました

rnzooのdevelopバージョンにec2typeというインスタンスタイプを変更するサブコマンドを追加しました。 # すでに入れている場合はtap不要 brew tap reiki4040/rnzoo # developバージョンの指定でインストール brew install rnzoo —devel AWSコンソールからや…

Pull Requestを自動で作成する

rnssh, rnzooの新しいバージョンを出そうとするときに、別リポジトリになっているhomebrew-rnssh, homebrew-rnzooを編集してpushするのが、地味に面倒だと思うようになり、他の自動化でも使えるかなと考えて、Pull Requestの自動作成をやってみるようにして…

golangのHTTPサーバを構成しているもの

golangのHTTPサーバは、少量のコードで動くものを作ることができます。内部的には、net/httpパッケージのServerとHandlerで構成されます。 Serverは名前の通り、Serveするもので、HTTPをどのネットワークソースで提供するかを定義するものです。 Handlerは、…

homebrewのformulaフォーマットをチェックする

ふとQiita見てたら、homebrewで配布するという記事に、auditでフォーマットチェックするといいよってコメントがついていました。 goでcliのコマンドを作ってhomebrewで使えるようにしてみた - Qiita rnzooもrnsshも数年前にpecoを参考に作っただけで、チェッ…

rnzoo 0.4.1をリリースしました

去年ふっとgolang 1.7に上げといたrnzooですが、先日v0.4.1をリリースしました。アップデートはhomebrewなら以下で。 brew update brew upgrade rnzoo 内容は、rnzoo ec2listに、-t, -tsvオプションを追加しました。rnzoo ec2listは、ec2のインスタンスリス…

AWS API Gateway+LambdaでSlackにメッセージをPOSTする(後編)

前編、中編にて、AWS API Gateway + Lambdaを使って、post-slack WebAPIを作り、テスト実行まで行いました。後編では、API keyの設定と実際に使えるようにデプロイをしていきます。 Slack Webhook URLは、それを知っていれば誰でも使うことができます。せっ…

AWS API Gateway+LambdaでSlackにメッセージをPOSTする(中編)

前回、Slack Incoming Webhookの作成と、それを使うLambdaを作成したので、続いてAWS API GatewayとLambdaを繋いでいきます。書いていたら思ったより長くなったので、API Gatewayのテスト実行までを中編にして、後編で、API keyの設定とデプロイを行います。…

AWS API Gateway+LambdaでSlackにメッセージをPOSTする(前編)

Slackはincoming webhooksがあり、POSTするだけで、簡単にメッセージを送ることができます。 スクリプトで直接Incoming Webhook使ってもいいんですが、これ自体は別に認証も何もないので、誰かが知ってしまうと、好き放題投稿できます。そんな時に入れ替えた…

iPhone7に変えました

こっちにも書きましたが、2016年末に、iPhone5sからiPhone7に変えました。決め手はやっぱりApplePayでのSuica(後述しますが、停滞中)で、副産物としてQuicPay(ポストペイ型の電子マネー)が便利という気づきがありました。 値段 AppleStoreOnline SIMフリー…

2016年の生活

もう2017年入りましたが、2016年のこと。 子供 2016年、一番のトピックは、6月に初めての子供が生まれたことでした。そして8月からフル在宅勤務を開始して、現在も続けています。保育園次第でまた勤務体系は相談する予定になってます。 出産に立ち会いました…

2016年お金の使い道ランキング

2015年は、買って良かったもの書きましたが、2016年は、自分の時間を取り戻そうに感化され、価値のある出費TOP3に変えてみました。 2016年は子供が生まれたこともあり、そっち関係の出費の価値が高かったです。1位に関しては本当ケチらなくてよかったと心底…

デフォルト値の怖さ

何も設定せずに動かせることは便利ではある 様々なサーバアプリケーションや、ミドルウェアを使う場合に、設定がない場合のデフォルト値が用意されていることがあります。 広く配布して使われるアプリケーションは、様々な人達が使うこともあり、なるべく何…

2015年技術でやってきたこと

毎月やらないとと言っていた振り返りが結局また年をまたぐという状態です。前半何やってたか記憶がないぐらい衰えを感じるので、2016年は四半期ぐらいにはまとめようと思います。。。 キーワードだけあげるとこんな感じ さらにgolang プライベート開発 Auror…

2015年に購入してよかったもの

去年に引き続いて何点か。今年はそんなにもの買ってないかなーというところ。来年引越しする時に色々買い換えるので、その時にまた便利にしたいところです。 ドラム式乾燥機能付き洗濯機 Amazon.co.jp: Panasonic ドラム式洗濯乾燥機 9kg 左開き クリスタル…

データに対する時間がたくさんある

ちょっとハマったので、整理というか殴り書き。 一つのデータにも様々な時間が関わります。 スマートフォンアプリから、WebAPIを経由して、DBおよび検索エンジンに至るまでのデータに対する時間 - ユーザが作成した時間 - アップロードした時間 [↑スマートフ…

GRANTで起こすDB接続障害

MySQLの権限追加でGRANT文を使った時に、DB接続障害を起こす失敗の仕方です。 GRANTSは、MySQLユーザに対しての権限を付与する構文です。 MySQL :: MySQL 5.6 Reference Manual :: 13.7.1.4 GRANT Syntax よく紹介されているのは、CREATE USERを使ってユーザ…