oinume journal

Scratchpad of what I learned

Goのcontextによるキャンセルやタイムアウト

Go

これはなに? Go言語におけるcontextパッケージを使ったキャンセルやタイムアウトについて説明する。この記事を読むと以下について詳しくなれるはず...! context.WithCancel context.WithTimeout context.Done context.Err とはいいつつも、かなり自分向けの…

zshをやめてbashにした

TL;DR Bashを使うにあたって、zshが持つ標準機能のレベルと同じにするには初期設定が面倒だったけどなんとかいける。Bashは進化していると感じた。 bash-itが便利 設定は .bash_profile も含めてoinume/dotfilesに上げているので参考にどうぞ 動機 ターミナ…

2019年5月の振り返り

仕事 4月はもっぱら仕事が忙しく、最終的にGWは半分以上出勤するという体たらくだったので振り返りはスキップしてしまった。おかげでメルペイあと払いのリリースは何とかできたけど、技術的負債が多すぎて運用で死んでいる。 アウトプット GCPのCloud PubSub…

ターミナル環境を見直す: pecoからfzfへ

zsh

コマンドの履歴やディレクトリ移動の履歴を選択するためのツールとして長らくpecoを使ってきたけど、fzfに移行してみた。理由は大したものではなく pecoはshellで複数行のコマンドを検索して実行する場合に、 \ が \\ と2重になってしまうという問題があった…

GCPのCloud Runを使って簡単なリダイレクタを作った話

GCP

今年5月にbetaとしてリリースされたGCPのCloud Runを使って、もともとGAEで運用していたリダイレクタを移植してみたのでその紹介。 Cloud Runとは HTTPリクエストを処理するためのFull ManagedなステートレスのContainerの実行環境。公式サイトには以下のよ…

2019年3月の振り返り

アウトプット GCPのCloud PubSubをGoで動かしてみただけのメモ のみ。とにかく仕事が忙しくてプライベートで勉強したり何かをアウトプットすることを疎かにしてしまった(おかげで仕事は捗った)。 英語 3月から会社がDMM英会話から試験的にNativeCampに切り替…

GCPのCloud PubSubをGoで動かしてみただけのメモ

これはGCPのCloud PubSubのチュートリアルをやってみただけの自分用のメモ。この記事で紹介されているサンプルコードはGitHubに置いてある。 Cloud PubSubとは GCPで提供されているメッセージキュー。メッセージの送信をして(publish)、複数のシステムがその…

2019年02月の振り返り

アウトプット 特になし 英語 1月とほぼ変わらずという状態。ふと、2年前ぐらいに受けたTOEICの結果を見ていたら、Readingにおいて自分は単語力が弱いと書かれていたので、単語をちゃんと勉強するのが一番効果的っぽい。なお、今まで会社の補助で使えていたDM…

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

最近メインバンクを三菱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で実装した…