DRYな備忘録

Don't Repeat Yourself.

(メモ)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 必要…

個人開発程度のOCRサーバならHerokuに立てればいいじゃない

このエントリはGo (その2) Advent Calendar 2016 - Qiitaの5日目です。WETな方でもお世話になっております、otiai10です。 とある個人開発が、もうかれこれ3年ぐらい続いているんですが、ブラウザ上に描画されたちょっとしたテキストをOCR(文字認識)する要…

Dockerでホストのファイルをコンテナに持って行くメモ

というか、マウントである。 メモ まず入って出れることだけ確認。--rmで終了時にコンテナも抹消する。 % uname Darwin % docker run -i -t --rm library/ubuntu root@7f3902552705:/# uname Linux root@7f3902552705:/# exit exit % docker ps -a CONTAINER…

UITableViewの左にある謎の余白を消したい

やることは3つ UITableViewのseparatorInsetをゼロにする これはインターフェースビルダーからでも変更可能 UITableViewCellのlayoutMarginsをゼロにする UITableViewCellのpreservesSuperviewLayoutMarginsを無効にする func viewDidLoad() { super.viewDid…

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

コンパイルして、共有ライブラリとして読み込まれる.soファイルをつくれることを確認したい。APIファイル(.hとか)はReleases · tesseract-ocr/tesseract · GitHubを解凍すれば同梱されてる。ついでに同環境下でそのTesseract-OCRがちゃんと動くことも確認…

Dockerで雑に使い捨て開発環境つくる個人的なメモ

たとえば、Macでdocker-machine使ってて、debianの環境が手っ取り早くほしい。 % docker-machine create -d virtualbox foobar % eval $(docker-machine env foobar) % docker run -i -t --rm library/debian -i -t この端末のstdin/stdoutでsshする --rm コ…

herokuで自作buildpackを作った時に得た知見

かつてこれ↓を書いたときからまたHerokuは状況が変わってて、 otiai10.hatenablog.com 今では、buildpackっていう、いうなればインスタンスの初期化スクリプトみたいなのを定義できるっぽい。そこで依存するパッケージのインストール(に相当すること)も可…

RubyのtimesみたいなやつをSwiftでやりたい

count = 5 count.times.map { |i| i * i } # => [0, 1, 4, 9, 16] let count = 5 [Int](0..<count).map { $0 * $0 } // => [0, 1, 4, 9, 16] こうすか、しらんけど</count).map>

How to install gosseract to CentOS 7

What is this document for? "gosseract" is a Tesseract-OCR wrapper for Golang, and this document is for an issue reported to "gosseract" github.com Reproduce the issue Set up environment for simulating CentOS # because I'm using MacOS % doc…

【iOS】プロジェクト内に配置したjsonファイルの内容をSwiftyJSONで取得する

let filepath = NSBundle.mainBundle().pathForResource("message", ofType:"json") // 1. Resourcesっていうグループ(と物理ディレクトリ)作ってるけど、ファイル名だけでよい // 2. 返り値はnullable(String?)なので注意 let data = NSData(contentsOf…

【Go言語】GoでJWT(JSON Web Token)を使うサンプル

参考 JSON Web Tokens - jwt.io GitHub - dgrijalva/jwt-go: Golang implementation of JSON Web Tokens (JWT) jwt - GoDoc GitHub - slok/go-jwt-example: Golang & jwt (Jason web token) example ← なんかこれ今時点で動かなかったので package main impo…

【iOS】StackViewで子供のViewを3分の1幅にしたい【AutoLayout】

ゴール StackView(やAutoLayout)を使っていて、1/3分割にしたいときがある Multiplierに整数や小数は入れたことあるけど、分数(無限分数)はどうやって入れるんだ? 調査 stackoverflow.com 解決 StackViewで3分の1ってどうやるんだろと思ったら「1:3」(…

【Xcode】あると思うんだけどno matching provisioning profiles foundとか言われる

stackoverflow.com Preference Accounts View Details 今あるやつ全部捨てる(右クリック) Xcodeを殺す(← ここ重要) 再起動 Preference > Accounts > View Details で、「Download All」

Fabric/Crashlyticsで同プロジェクトの別bundle identifierのアプリを追加する

twittercommunity.com Xcodeにおいてbundle identifierを変更する Fabricデスクトップアプリにおいて「+ New App」というボタンがあるのでクリック 同プロジェクトを選択する チュートリアルが始まるが、だいたいのことは済んでるので、⌘+Bとか適当にしてチ…

【iOS】画面の向き(Orientation)を特定のページのみで制限したり許可したりしたい【supportedInterfaceOrientations】

ゴール たとえば 基本的にPortrait(縦向き)のみに制限したいんだけど、特定の画面だけではLandscape(横向き)を許可したい 特定のViewで、強制的に向きを変えることはできる けど、これは向きを変えるだけであって、ふたたび端末をぐるっとすると縦向きに…

【Go言語】ローカルのGoの(継続的な)バージョンアップ【go1.7】

go

なんかいつの間にこんなrepoあったの go - Git at Google git clone https://go.googlesource.com/go とりあえず現状確認 % go version go version go1.6.2 darwin/amd64 % echo $GOROOT /Users/otiai10/.go/1.6.2 % ls /Users/otiai10/.go 1.4.3 1.5.3 1.6.2…

SwfitでTableViewをつかってかっこいいフィードを実装するときに習得したことまとめ

いかんせんスケジュールがギリギリだったので、個別にエントリ書くのは無理でした TableView TableViewの各Rowの高さを指定したい tableView.rowHeight swiftでtableViewの高さを変更する - Qiita TableViewのボーダーを消したい tableView.separatorStyle =…

なにもしてないのにXcodeがこわれた: An error was encountered while running (Domain = LaunchServicesError, Code = 0)

ios - Unable to run app in Simulator: An error was encountered while running (Domain = LaunchServicesError, Code = 0) - Stack Overflow ios - Installation Failed "Invalid argument" when trying to run Today application extension - Stack Over…

【追記】XCTAssertEqualが("foo bar") is not equal to ("foo bar")などと寝ぼけたことを言う【NSNumberFormatter】

問題 ("Optional("10,00 €")") is not equal to ("Optional("10,00 €")" とか言われてXCTAssertEqualがコケる。 調査 Optionalとか 文字列型のポインタを比較してEqualじゃないよとか そういうのを予想してたけど、どうやら違う printしてみた出力をアサーシ…

Angular2 on TypeScriptの最小構成をつくってHello Worldするまでのみちのり

2017/04/24 追記 Angular CLIを使わずにAngularを始める系の記事、もう古すぎるので参考にしないほうがいいです。 | Angular2 on TypeScriptの最小構成をつくってHello Worldするまでのみちのり https://t.co/XjZafjJ6u4— OKUNOKENTARO (@armorik83) April 2…

AlamofireとSwiftyJSONとSwiftTaskで、genericなprotocolを受ける汎用的なHTTPClientをつくりたい

iOS

問題 AlamofireとSwiftTaskで汎用的にレスポンスをモデルにデコードするようなHTTP Clientをつくりたい 特定のAPIエンドポイントのレスポンスをデコードするロジックは、各モデルにもたせたい SwiftJSONを受けて"何らかの"モデルにデコードするメソッドを持…

AlamofireでRequestのHeaderにContent-Type: application/jsonを追加したいのにいっこうに"text/plain"になってしまう問題

iOS

問題 そりゃ400だろ、って感じ。curl使って-H "Content-Type: application/json"ではちゃんとサーバからレスポンスあるのは確認済み。 やったこと1 : Alamofire.Manager.requestの第3引数にheadersを食わせる let headers = [ "Content-Type": "application…

cocoapodsでAlamofire入れようとしたらclang: error: linker command failed with exit code 1と叱られる

iOS

結論 % pod install Analyzing dependencies Downloading dependencies Installing Alamofire (3.4.1) Generating Pods project Integrating client project [!] Please close any current Xcode sessions and use `unko.xcworkspace` for this project from…

diffとpatchのワンライナー

diff -u ./index.html ./public/index.html | git apply -R あてたいpatchはdiff -u ./public/index.html ./index.htmlなんだけど、そっちでやると変なエラー出る(雑)なので、逆にして-R食わせたら動いた。なぜに。 根本的にdiff & patchを理解できてない…

サーバからブラウザにプッシュ通知を送りたい(非WebSocket、非ロングポーリング)

追記 2017/06/19 このエントリで絶賛してる公式ドキュメントがいつの間にかすっげーわかりづらいものになってたので、あらためて自分でサンプル書いたやつがこちらです。 otiai10.hatenablog.com 以下原文 Progressive Web App Dev Summit っていうのがあっ…

v2とか作ってる別リポジトリをv1のリポジトリにマージっぽいことしたい

git

なんかv2っぽいものをゼロスクラッチで別リポジトリに書いてたけど、v1のリポジトリにわりとスターついてるし、page viewもあるのでゼロスクラッチだけど、最終的にはv1で、もちろんコミットログを上乗せした形で公開したいな、と。 参考 Is it possible to …

git logでコミットハッシュだけほしい

git

追記 @otiai10 git log --pretty=%H— はぇ~☆ (@haxe) 2016年6月14日 以下、読まなくていいです % git log --pretty=oneline 5df2e90cfca356707f58de15b0c45ed7ba2446bb いろいろあたらしいかんじに調整 f7caec1f173889c76fc9bc83eed350d930a1ec41 chomexは…