oinume journal

Scratchpad of what I learned

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を実装する

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

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

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

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

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

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

はじめに 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

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-…

2018年の抱負

あけましておめでとうございます。まだ1枚も年賀状の返信出してないです。今年も例によって新年の抱負。 過去の振り返り 新年の抱負をかかげても達成できないことが多いので 目標を2つに絞る 3ヶ月ごとに必ず振り返りをする 目標達成のためのマイルストーン…

2017年の振り返り

あけましておめでとうございます。大晦日は2017年の振り返りをせずに息子の寝かしつけで寝落ちするという体たらくだったので2017年の振り返りをさせてください。 仕事 メルカリに新しい決済手段を追加するというプロジェクトに入り、4月からついにPHPを書き…

2017年に買って良かったモノ・サービス

LINE Pay 買ったモノじゃないけど、LINE Payをちゃんと使い始めた。 ポイントが2%つく。これはかなり太っ腹だと思う 決済するとすぐにLINEに通知が来る。自分はPebbleに通知を送っているので、いくら使ったのかがすぐわかってこれが地味にありがたい オート…

Handling uploaded files in Go

Handling uploaded files in Go is quite easy. Here is a complete example. net/http.Request.ParseMultipartForm parses a request body as multipart/form-data. You can get files with net/http.Request.FormFile after calling the method net/http.R…

エストニアに行く前準備

今日からエストニアに6日間出張に行くのでその前準備に何をやったかをメモしておく。 エストニア出張の目的 ちゃんとしたマイナンバーがある 選挙の投票や、学校の授業の成績管理などが電子化されている e-Residencyなにそれかっこいい スタートアップ界隈が…

ハワイでのSIMはKDDI x h2o が良かった

9/1から1週間ほどハワイに行ったのだけど、現地でのネットワーク環境どうしようかと悩んでいて色々調べた結果KDDI mobile x h2o のSIMが良かったのでレポート。良かった点としては 安い 4G LTE使える 電話もかけられる auのiPhoneだとSIMロック解除してなく…

gcloudコマンドを使わずにGoogle Cloud Storageにファイルをアップロードする

概要 gcloudコマンドを使わずにPythonとgoogle-cloudを使ってGoogle Cloud Storage(GCS)に頑張ってファイルをアップロードしてみる。google-cloudはPython向けのGoogle Cloud Platformの何かを操作するためのクライアントライブラリ。GCPの以下の機能の操作…

2017年の進捗

2017年の抱負 - oinume journal で書いた、今年の抱負の進捗。 機械学習を学ぶ みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習 | Udemy というものをやったけど、本当にまだまだわからないことが多い。あと、自分は機械学習よりもデータ分析の方が…