oinume journal

Scratchpad of what I learned

xargsでファイルの内容をコマンドの引数として渡す

dates.txt 2019-01-01 2019-02-01 2019-03-01 みたいなファイルがあった時に、このファイルの行をxargsコマンド経由で任意のコマンドの引数として渡す方法。 $ cat dates.txt | xargs -I{} 'echo {}'

MacBookAir 2019を買おうか悩み中

今使っているのはMacBookPro 13inch late 2016 Two Thunderbolt3 portsなんだけど、2018年モデルのMacBookAirにCPUスコアは負けている... browser.geekbench.com Single-Core Score: 3886 Multi-Core Score: 7701 以下は2018年モデルのGeekBenchのスコア。 b…

2019年6月の振り返り

2019年がもう半分が過ぎてしまった。やばい。 ▓▓▓▓▓▓▓▓░░░░░░░ 50%— Year Progress (@year_progress) July 2, 2019 アウトプット 6月は頑張ってブログを書いた。それなりの分量の記事を書こうとすると週に1個が限界な気がするので、良いペースだと思う。 タ…

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 like bellow: package main import ( "fmt" ) type Foo interface { MethodA() MethodB() MethodC() MethodD() } type FooI…

2018年10月の振り返り

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

direnvから.envをロードする

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

2018年9月の振り返り

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

2018年8月の振り返り

アルゴリズム Boyer Moore法やった 次は何をやろうかと悩んだ結果、データベースでよく使うBTreeをやることにした。 ブロックチェーン https://www.udemy.com/ethereum-and-solidity-the-complete-developers-guide/?deal_code=JPA8DEAL2PERCENTAGE&aEightID…

2018年7月の振り返り

機械学習 進捗なし。次からは振り返り対象から外す。 アルゴリズム 文字列探索で力まかせのアルゴリズム実装した ブロックチェーン https://www.udemy.com/ethereum-and-solidity-the-complete-developers-guide/?deal_code=JPA8DEAL2PERCENTAGE&aEightID=s0…

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…