oinume journal

Scratchpad of what I learned

楽天銀行のデビットカードはいいぞ

最近メインバンクを三菱UFJから楽天銀行に移している。現在進行系なのは、様々な引き落としの手続きに時間がかかっているためだけど、近日中には終わると思う。 デビットカードってなに?メリットは? 使うときはクレジットカードと同じように使える。例えば…

クライアントを作って理解するOAuth2(実装編)

はじめに クライアントを作って理解するOAuth2(準備編) - oinume journalの続編。前の記事ではGoogle APIsのプロジェクトを作成してOAuth2 clientを登録した。この記事では発行されたClient idを使って実際にAccess tokenを取得する部分をGoで実装してみたい…

2019年01月の振り返り

アウトプット OAuth 2.0について以下の記事を書いた。少しかじった程度だけど、その知識をアウトプットした感じ。 journal.lampetty.net 英語 Daily Tech News Showをほぼ毎日聞いている 1エピソードが5分以内なので聞きやすい。長い英語のpodcastは途中で集…

クライアントを作って理解するOAuth2(準備編)

はじめに GoogleやFacebookなどの外部サービスのAPIを利用する上で欠かせないのがOAuth2という仕様なんだけど、この仕様だけ読んでいてもつまらないしよーわからんので、実際に手を動かしてみて理解を深めよう、というのがこの記事の趣旨です。実際にはOAuth…

2019年の抱負

もう10日以上経ってしまったけど2019年の抱負。 大方針:アウトプット 今年のテーマは アウトプット を第一にする。昨年は本を読んだりUdemyでいろいろ勉強していたけど、雑でもいいからアウトプットすることで自分の血肉にしていきたいと思っている。 1日6…

2018年の振り返り

あけましておめでとうございます。年末年始は親戚とハワイで過ごしていました。冬なのに海に入るという謎の体験をして、正月感はまったくなかったけどこれはこれで新鮮でした。 謹賀新年🎍 pic.twitter.com/kRXTEbvBCC— oinume (@oinume) January 2, 2019 仕事…

Satisfying a large interface quickly in Go

Sometimes it's painful to safisfy a large interface in Go. Here is a simple answer for this, just embed interface on struct. The sample code is bellow: package main import ( "fmt" ) type Foo interface { MethodA() MethodB() MethodC() Method…

2018年10月の振り返り

アルゴリズム BTreeをやっているけど、時間がなくて実装ができずに止まっている。 ブロックチェーン 進捗なし lekcijeのインフラ引っ越し CircleCIでdocker buildしてGoogle Container Registryにpushするところまではできたので、あとはKubernetesのyamlを…

direnvから.envをロードする

.envrcファイルに dotenv と書くだけで、現在いるディレクトリの .env ファイルを読んでくれる素敵な仕様を発見した。これでdirenv使いながら.env形式しかうけつけないアプリケーションも 以下は具体的な例。 $ cat .env PORT=12345 ENV=local $ cat .envrc …

2018年9月の振り返り

9月は10日間の奥さんの出張があったこともあり、本当にあっという間だった。 アルゴリズム 次はBTreeをやろうと思って、その前にAVLTreeやらないとダメそうで、そういえばBinarySearchTreeも実装したことないなって思ってBinarySearchTreeを実装した。 10月…

2018年8月の振り返り

アルゴリズム Boyer Moore法やった 次は何をやろうかと悩んだ結果、データベースでよく使うBTreeをやることにした。 ブロックチェーン Ethereum and Solidity: The Complete Developer's Guide | Udemy ノロノロと亀のように進めている。6%完了。やっとスマ…

2018年7月の振り返り

機械学習 進捗なし。次からは振り返り対象から外す。 アルゴリズム 文字列探索で力まかせのアルゴリズム実装した ブロックチェーン www.udemy.com このコースを少しだけ進めた。まだブロックチェーンの基礎の部分だけど曖昧な理解だったところがクリアになっ…

Goのhttpパッケージだけでmiddlewareを実装する

Go

標準ライブラリのhttpパッケージだけでもmiddlewareは簡単に作れますよ、というお話。 おさらい: http.Handlerまたはhttp.HandlerFuncでやり取りする Goのhttp.Handlerやhttp.HandlerFuncをちゃんと理解する - oinume journalに書いたとおり、 http.ListenAn…

GoのWeb Application Frameworkでオススメは?

Go

GoのWeb Application Frameworkでオススメは?という質問をよく受ける。 標準ライブラリのhttpパッケージ使えばおk とまずは返答している。ただ、RESTで様々なHTTPメソッドをサポートする必要があり、かつ /v1/users/{id} のようなPath内にIDが入る場合の対…

読書: 新しい文章力の教室

新しい文章力の教室 苦手を得意に変えるナタリー式トレーニング できるビジネスシリーズ作者: 唐木元出版社/メーカー: インプレス発売日: 2015/08/07メディア: Kindle版この商品を含むブログ (2件) を見る 自分の文章力を高めたいと思ってこの本を買ってみた…

Goのhttp.Handlerやhttp.HandlerFuncをちゃんと理解する

Go

はじめに GoでHTTP Serverを作ろうとすると、標準ライブラリを使う場合以下のようなコードをよく書くと思う。 package main import ( "fmt" "log" "net/http" ) func main() { mux := http.NewServeMux() mux.Handle("/hello", http.HandlerFunc(hello)) log…

2018年6月の振り返り

機械学習 進捗なし アルゴリズム hash tableのオープンアドレス法の実装した Boyer Mooreの文字列検索のアルゴリズム学んだ ブロックチェーン 進捗なし lekcijeの月額課金 Stripeでsubscriptionの初月無料が簡単にできるということがわかった その他細々とし…

2018年5月の振り返り

機械学習 Udemyのキカガクのコースは全部やり終わって、単回帰分析ならできそうな気がしてきた アルゴリズム hash のオープンアドレス法の実装やってない ブロックチェーン(New) やりたいな。とりあえずUdemyのこの講座に課金した lekcijeの月額課金 Stripe…

Generating an unpredictable random value in Go

There are a lot of examples to use math/rand. However, should use crypto/rand if you want to generate an unpredictable random value. That's because crypto/rand uses getrandom(2) if available, /dev/urandom otherwise on Linux. As a real worl…

課金している有料のMacアプリ

Mac

自分的に もうこれがないと生活できない というMacの有料アプリ集。 Alfred 高機能なランチャー。£19。 クリップボードのコピー&ペースト Chromeのブックマークを検索して開く 英和・和英辞書 計算機 IntelliJ IDEA コードを書く時はこれを使っている。Inte…

Comparing datetime in Golang

Go

https://play.golang.org/p/5-BtaE6iXaP time.Before and time.After package main import ( "fmt" "time" ) func main() { t1 := time.Date(2018, 1, 1, 10, 0, 0, 0, time.UTC) t2 := time.Date(2018, 1, 1, 11, 0, 0, 0, time.UTC) fmt.Printf("t1.Before…

2018年4月の振り返り

その1. 機械学習 まだ 【キカガク流】人工知能・機械学習 脱ブラックボックス講座 - 初級編 - が終わっていない。3分の2ぐらい。5月中には終わらせたい。 その2. lekcijeに月額課金 手付かず。 その他 Hashtable だいぶ昔に実装したHashtableをGoで実装した…

2018年1Qの振り返り

2018年も早くも4ヶ月が過ぎてしまったので、1Qの振り返り。3ヶ月スパンの振り返りだと何をやったのか忘れてしまうので次からは1ヶ月単位で振り返ろう。 その1: 機械学習 ゼロから作るDeep Learning を読むのはいったんペンディングにして、Udemyの 【キカガ…

grpc-gatewayでRESTful APIを実装する

背景 何かしらの理由でRESTでAPIを実装しなくてはいけない時に、JSONを直接扱うのは面倒くさい。具体的には、JSONをデシリアライズして内部のデータ構造にマッピングする処理を書くのが面倒だ。というわけで、grpc-gatewayを使ってProtocol Buffersを定義す…

Google Apps Scriptで外部のREST APIを呼び出す

Google Apps Script(GAS)から外部のREST APIを呼ぶには、UrlFetchApp.fetch というメソッドを呼び出せば良い。例えばJSONをリクエストのペイロードとして送る場合のサンプルコードはこんな感じ。 var data = { 'email': email, 'subject': subject, 'message…

Google Driveの画像をブログに埋め込む

いっっっつもやり方を忘れるので未来の自分のためにメモ。 1.Google Driveで対象の画像ファイルを選択して開く 2.画像が表示されるので、右上のメニュー(縦の...のアイコン)から 新しいウィンドウで開く をクリックする。 3.開いたウィンドウの右上のメニュ…

Googleフォームでメールアドレスを収集する場合にそのメールアドレスをGASから取得する

ググってもあまり出てこなかったのでメモ。Googleフォームで メールアドレスを収集する という設定をONにすると、フォームの回答を記録するSpreadsheetにメールアドレスが保存されるようになる。 これをGASのスクリプトからどうやって取るんだろうと思って調…

HerokuのName lookup timeoutが短すぎて困ってる話

最近HerokuのDynoで以下のようなエラーが出るようになった。アプリケーションから接続するMySQLのホスト名の解決が失敗しているっぽい。 Jan 18 08:20:25 ***** app/web.1: {"level":"error","ts":"2018-01-17T23:20:24Z","msg":"InternalServerError","erro…

webpackで<script>タグでロードしたライブラリをbundleされたJSから外したい

webpackのconfigには externals というものがある(ドキュメント)。このexternalsで定義したライブラリは、importで参照していてもwebpackでビルドして生成される成果物(bundle.js)には含まれなくなるというもの。 自分のユースケース もともとReactを使って…

Loop over dates with bash in Linux

Here is an example of looping over dates from 2017-10-22 to 2017-12-31. #!/bin/bash START=2017-10-22 END=2017-12-31 CURRENT=$START while true; do echo $CURRENT if [ "$CURRENT" = "$END" ]; then break fi CURRENT=`date -d "$CURRENT 1day" +%Y-…