DRYな備忘録

Don't Repeat Yourself.

Terraformってなんぞや

目的 Terraformのなんたるかを知る Terraformの初歩的な使い方を知る Terraformを使ってみる 調査 Terraform by HashiCorp 公式ドキュメント。Write, Plan, and Create Infrastructure as Code とのこと インフラ構成をコンフィグファイルにして再現性をもた…

Tesseract-OCRをソースからコンパイルする(4.00.00dev)

背景 Tesseract-OCR 4.00.00devで動かない、というissueが来た。 github.com 前回記事 Tesseract-OCRのDockerコンテナ内でのビルド otiai10.hatenablog.com 今回の成果物 Dockerfile Docker Hub docker pull otiai10/tesseract:4.00.00dev FROM debian:stret…

atom command not found

Problem # MacOS % atom . zsh: command not found: atom % which atom atom not found Anything can’t exist without Atom… Research atomコマンドが見つからない問題 – 蔦箱ブログ seems caused by update? Solution % which atom atom not found % /Appli…

【Go言語】意地でもsliceをswitch-caseで比較したい

invalid case []byte literal in switch (can only compare slice foo to nil) switch response[:4] { case []byte{0,0,0,0}, []byte{1,0,0,0}, []byte{2,0,0,0}: fmt.Println("do something") } // これ動かないやつ 可変長であるsliceはnilとの比較だけが…

EC2インスタンスにsshが接続できない原因のまとめ

AWS

目次(随時追加) InternetGatewayがVPCに未追加 Pemファイルのパーミッションが不適切 sshを試みるUserが違う 当該SubnetのRouteTableに当該InternetGatewayが追加されていない: Operation timed out 問題 sshコマンドを打ってもOperationTimeoutになる TCP…

(メモ)Go言語のinvalid recursive typeエラー、再帰データ型の実装とイテレーションについて

go

jsonでいうとこんな感じの { "id": 48, "name": "foo", "entry": { "id": 36, "name": "bar", "entry": { "id": 24, "name": "baz", "entry": { "id": 12, "name": "qux" } } } } 問題 コンパイル時のinvalid recursive typeエラーは、ポインタ型にすれば解…

(メモ)docker/machineのテストが落ちる問題

github.com bash-4.4$ DRIVER=virtualbox make test-integration test/integration/core/core-commands.bats test/integration/run-bats.sh test/integration/core/core-commands.bats INFO: Run the tests with B2D_CACHE=1 to avoid downloading the boot2…

Firebase Cloud Messaging(FCM)でより簡単にWebブラウザにPush通知を送るサンプル

前回、下記のエントリでProgressive Web Appにおけるそこそこ生のWeb-Push-Protocolについておおまかな仕組みを触れました otiai10.hatenablog.com ので、今回はFirebase Cloud Messagingを使って、もっと手軽にWebブラウザにPush通知を送るのをやってみた備…

webブラウザにPush通知送るサーバとjsのサンプル

このドキュメントは 以下の2つのドキュメントをよりプリミティブに理解するためのDRYな備忘録です。 Adding Push Notifications to a Web App | Web | Google Developers The Web Push Protocol | Web | Google Developers 背景 かつて サーバからブラウザ…

Goのコードから複数の異なるDockerホストに対してコンテナの起動を実装する

2017/06/19 追記 エラーハンドリングにバグがあったので修正しました channelに何か流したとき、channelから取り出されないと流し込んだ側をブロックするのを忘れていました - errored <- err + go func() { + errored <- err + }() 前回までで以下のことを…

【GAE/Go】goappで "There are too many files in your application" と怒られる

追記 gcloud components updateするとgoogle-cloud-sdk以下のファイルが更新されて魔改造が吹っ飛ぶ。かなしみ。 問題 % goapp serve INFO 2017-06-07 01:58:24,616 devappserver2.py:692] Skipping SDK update check. INFO 2017-06-07 01:58:24,646 api_ser…

CSS書きたくなさすぎ問題2017

CSS

css書きたくない。できればjsも書きたくない。js必要なの嫌。軽くやりたい。という個人の日記です。 参考 Best CSS Frameworks of 2017 | Three29 10 Free Lightweight CSS Frameworks for a Fast Start 2017年にチェックしておきたい、CSSの軽量フレームワ…

GoのコードからDockerコンテナへのディスクボリュームのマウントを実装する

前々回、前回 GoのコードからDockerコンテナの起動を実装する - DRYな備忘録 GoのコードからDockerイメージのpullを実装する(bufio.Scannerかわいい) - DRYな備忘録 で、GoのコードからDockerイメージのpullとDockerコンテナのrunを実装できたので、実践的…

GoのコードからDockerイメージのpullを実装する(bufio.Scannerかわいい)

前回エントリ↓でコードからのイメージのpullが動かなくてあっれおかしーなーとなって悔しかったのでリベンジです。 otiai10.hatenablog.com tl;dr client.ImagePullの返り値はio.ReadCloser型とerror型 このio.ReadCloserが、イメージのpullのprogressなどを…

GoのコードからDockerコンテナの起動を実装する

やったこと docker clientをGoのコードからimportする container作成 container起動 container停止(& 自動削除) 苦労したこと けっこうdocker(現moby)のコードの移り変わりが激しくて、vendorを固定するのが苦労した これとか できなかったこと コードか…

不要になったDockerコンテナの一括削除

docker ps - Docker Documentation % docker ps -a -q -f "status=exited" | xargs docker rm -a --all runningではないコンテナも含めすべて表示 -q --quiet container idのみ表示 -f --filter 色々でフィルタリングできる を、xargsでdocker rmの引数に投…

Docker for Macのインストールと複数VMをつくるまで

Docker for Mac vs. Docker Toolbox - Docker Documentation Get started with Docker for Mac - Docker Documentation 結局Docker for MacはDocker Toolboxと比べてどこが良いのか - Qiita Install Docker for Mac - Docker Documentation インストールのロ…

pkg_resources.DistributionNotFound: The '自作pythonスクリプト==0.0.3' distribution was not found and is required by the application

問題 jobとしてシェルスクリプトを投げるタイプのjob-queueシステムにおいて、シェルスクリプトから pip install --user で入れたpython binを参照させると、どうやらimportでコケている模様。 # 中略 pkg_resources.DistributionNotFound: The 'filtertool=…

scpできなくて私もハマった

問題 scpがエラー無く終わるが、何も転送されていない % scp otiai10@foobar.com:~/test.txt ~/ Enter passphrase for key '/User/otiai10/.ssh/foobar': foobar % % ls -la | grep test.txt % # ← あれーん? tl;dr, 解決 リモート側の.bashrcでログイン時…

vimのcolorschemeで勝手にドキドキするvimrc

vim

わけあってリモートサーバでvimでがんがんコードの編集する仕事をしており、あと単調なので、なんかドキドキしたいと思い、1時間ごとにcolorschemeを勝手に変えるvimrcの断片を書いたのでメモ 追記 2017/05/15 id:foooomioさんありがとうございます!助かり…

RedHatにGo言語をインストール(というか配置)

$ cd $ mkdir -p opt/src $ cd opt/src $ wget https://storage.googleapis.com/golang/go1.8.1.linux-amd64.tar.gz $ tar zxvf go1.8.1.linux-amd64.tar.gz $ mv go ~/opt/.go # GOROOT用 $ mkdir -p ~/proj/go # GOPATH用 $ export GOROOT=~/opt/.go $ exp…

Macにsamtoolsをインストール

ゴール macOS Sierra上でsamtoolsコマンドが使える 参考 samtools を使って bam/sam を操作する | Tips for NGS Data Analysis Samtools ログ % cd % mkdir opt % mkdir opt/src % cd opt/src % wget https://github.com/samtools/htslib/releases/download/…

RustをMacにインストールしてHelloWorldとFizzBuzz

Rust、話題なので、やってみる。ミーハーなので。 brew install rust % brew install rust % rustc -V rustc 1.16.0 % cargo -V cargo-0.17.0-dev (f9e5481 2017-03-03) Hello, Rust! % cd % mkdir -p proj/rust/playground/hello % cd proj/rust/playground…

webpackのプロジェクトでWebWorker書いててつまずいたメモ

まずnew Worker(“./my/worker”) というやつ Workerのコンストラクタにファイルパスを渡すやつからしてwebpackだとどう解決されるのか問題。 worker-loader - npm webpack/webpack.config.js at master · webpack/webpack · GitHub 以上を参考にして、まず np…

react-routerでページを共通Layoutに乗せたりログイン画面は乗せなかったりするルーティングの設定

import React from 'react'; import ReactDOM from 'react-dom' import {Router, Routes, browserHistory} from 'react-router'; import {MyFancyLayout} from '../../layouts'; import { LoginPage, // これと HomePage, SettingPage, NotFoundPage, // こ…

Draft.jsを使ってContentEditableなdivに絵文字をレンダリングしつつ編集可能にする

ぜったいなんかやり方あるだろと思いつつなかなか見つからなくてググり続けたりして6時間ぐらいハマったのでメモ。 import React from 'react'; import {Editor, EditorState, CompositeDecorator} from 'draft-js'; const getEmojiURL = (key) => { // TODO…

jestでTypeError: Cannot read property 'instrument' of undefinedと叱られる

とりあえず ./node_modules/.bin/jest --no-cache # package.jsonのscriptsや、-gで入れてる場合は、 "jest --no-cache" ですもちろん。 としたら通った。 DRY Learning React Native: Building Native Mobile Apps with JavaScript作者: Bonnie Eisenman出…

ブラウザでMediaStreamを動画に固めて保存したい

ゴール ブラウザのJavaScriptで、MediaStreamを動画ファイルにしてローカルに保存できるようにしたい。 参考 MediaStream Recording API - Web APIs | MDN Using the MediaStream Recording API - Web APIs | MDN tl;dr 好きな方法でMediaStreamを取得する g…

TravisCI using fastlane failed with message "Your bundle is locked to credentials_manager (0.16.2)"

Problem $ bundle install --jobs=3 --retry=3 --deployment Fetching gem metadata from https://rubygems.org/........ Fetching version metadata from https://rubygems.org/.. Fetching dependency metadata from https://rubygems.org/. Your bundle i…

iOSプロジェクトをTravisCIでCIしたい

「Travis CIでCIしたい」なのか「TravisでCIしたい」なのか悩みました。 参考 Automate Testing & Build Delivery with fastlane and Travis CI | Macoscope Blog iOS: Continuous Integration with Travis CI and Fastlane tl;dr gem install fastlane 必要…