emahiro/b.log

日々の勉強の記録とか育児の記録とか。

2018-01-01から1年間の記事一覧

2018年振り返り

今年の振り返りです。 新年に立てた目標はこちら。 ema-hiro.hatenablog.com エンジニアとしてコミットしたと言えるプロダクトをつくる 評価: ‍♂️ 普段で業務で開発しているプロダクトは AndApp | スマホアプリがPCで遊べる | アンドアップ と言いますが、今…

社内isuconに参加して惨敗した話

先日(12/10)社内でisucon8の問題を解くイベントが開催されたので参加してきました。 詳しい内容は DeNA Techブログ イベント概要は後ほどUPされるっぽいのでそしたら更新します。 ISUCON8予選問題においてPerl実装で25万点を突破する方法 - Technology of De…

IntellijでRailsを開発する準備をする

仕事でRailsを書かないといけないことになったのでIntellijでRails開発する準備をした手順をまとめました。 やりたいことは以下の2つです。 - IntellijでRubyの補完が効くようにしたい - IntellijでRailsの補完が効くようにしたい IntellijでRubyの補完が効…

JSのSetTimeoutを解除する

.clearTimeout() | JavaScript 日本語リファレンス | js STUDIO に記載されてる通りなんですけど、実装時にちょっとハマったので備忘録。 // timer起動 const timer = setTimeout(() => { /* hogehoge */ }, "1000"); timer(); // timer解除 clearTimeout(ti…

GCSのObjectをCopyするときの挙動について調べたこと

業務でGoogle Cloud Strage にObjectをコピーするときの挙動について調べたのでまとめておきます。 GCSでのコピーは cloud.google.com/go/storage 配下にある copy.go に処理の中身が書いてあります。 github.com 実際にGCSでコピーをするときには以下のよう…

GCPの認証設定が切れた時の対処法

GCP

いつからかわかりませんが、localのコンソールからGCPの各サービスのAPIを叩くときに以下のエラーが出てAPIが叩けないと言うことがありました。 err: dialing: google: could not find default credentials. See https://developers.google.com/accounts/doc…

AppEngineで静的ファイルをサーブする設定について

ふとした拍子に忘れてしまうappengineでの静的ファイルをサーブする設定についてのメモです。 内容はほぼ Serving Static Content | App Engine standard environment for Go | Google Cloud に載ってる内容です。 例えば以下のようなディレクトリ構成を考え…

AppEngineのGo1.11のランタイムを簡単に試してみた

GAE/Go1.11のランタイムを実際にデプロイまでしてみましたよっていう内容です。 準備 ディレクトリ構成 以下のようなディレクトリ構成でプロジェクトを作成しました。 $GOPATH └── src ├── app │ ├── app.yaml │ └── main.go └── handler ├── index.go └── i…

AppEngineのGo1.11.0のランタイムについて浅く調べてみた

GAE/GoでGo1.11のランタイムがBetaになっていたので調べた内容をまとめてみます。 なお、基本的にはドキュメントに書いてあることを舐めてるだけの内容になります。 参考 先に参考を明示しておきます。ここだけ見れば、GAE/Goを現在使ってる人ならその差分が…

net/http だけでRESTなサーバーを作りたい

Go

やりたいこと 当初の想定は以下のような感じでRESTFullなwebサーバーを標準の net/http パッケージだけで書こうと思います。 package main import ( "fmt" "handler" "net/http" ) var port = 8000 type methodHandler map[string]http.Handler func (m meth…

Goので外部パッケージをimportする

Go

以下のようなパッケージ構成のGoのプロジェクトを考えます。 $GOPATH ├── handler │ └── index.go ├── main.go └── middleware └── log.go これだと main.go で localに作成した handler や middleware を import しようとするときに、 Unresolved reference…

iTerm2で goapp test の実行結果を見やすくする

goapp test で単体テストを走らせた時に RUN/PASS/FAIL が見づらいので iTerm2 で goapp test を見やすくする設定を追加します。 設定方法 Preference > Profile > Advanced > Triggers で特定の文字列だった時にハイライトさせるTriggerを設定します。 例え…

引数で指定した型で出力する型を変更するTips part2

Go

昨日以下のエントリを書きましたが json.Unmarshal versionで書いていたので stream でレスポンスを扱う方も追加で記載します。 ema-hiro.hatenablog.com streamを使うパターン func HogeSetter(url string, out interface{}) error { resp, err := http.Get…

引数で指定した型で出力する型を変更するTips

Go

課題感 goは静的型付き言語でfuncの返り値に指定した型は厳格に守る必要があります。 一方で返り値のみ異なるケースで内部の実装の詳細が型以外ほぼ同じような関数を定義したいときは結構あります。 goだと特に同じようなコードを書くことになりがちでこれを…

AppEngineについて考えてること

AppEngine大好きっ子で1年近くAppEngineをPaaSに採用した環境で開発を行ってきた人間としてちょっと考えたことをつらつら書いてみます。 ※1 このエントリは今日(2018/09/21)同僚の人と色々話してた内容をベースにしてます。 ※2 あくまで個人の感想、というか…

Intellijで古いversionのpluginをinstallする

Intellij をはじめとした jetbrains 系のIDEで現在installしているpluginよりも古いversionのpluginを入れようと思ったのでそのメモです。 背景 そもそもなぜわざわざ古いversionのpluginを入れようかと思ったかというと、jetbrains系のIDEでUIをカスタマイ…

『ファイナンス思考』を読んだ

『ファイナンス思考』を読み終えました。 会計というか事業に置けるファイナンスの考え方に興味があるのでとても面白い内容が詰まっていました。 ファイナンスを実際にすることはなくても、どういう考え方を持っておけばいいのか知りたい人にはいい書籍にな…

最近仕事で意識していること

最近仕事をしている中で意識していることをまとめてみました。 Overview 前提をすり合わせること 細かいところにこだわってみること 意図を説明すること 前提をすり合わせること PullRequestに対してレビューしてもらう場合にdescriptionをちゃんと書くよう…

「エンジェル投資家」を読んだ

エンジェル投資家が実際に投資する上での思考回路を赤裸々に記録している書籍です。 著者のジェイソン・カラカニスという人は僕は知りませんでしたが、この人が投資した or 投資し損ねた会社は僕らが知っているサンフランシスコの超優良スタートアップばかり…

Test時に値を書き換えて元に戻すサンプル

Go

メルカリさんのこのブログを呼んで表題のテスト時に置ける値の一時的な書き換えとresetの方法がとても便利だったのでメモりました。 tech.mercari.com テストを回すときに実際のURLでなく適当なダミーURLを叩いてHTTPのレスポンスをモックしたい場合があると…

Table Driven Testのテストケースの書き方について

Go

Goでは単体テストを書く場合に Table Driven Test が可読性、保守性の観点から推奨されています。 そのTableDrivenTestにおいてテストケースの書き方について備忘録です。 テストケースの書き方 ケースごとのstructを定義する 以下のようなコードを想定しま…

Kyash meetup #2 Server Sideに参加してきた。

※ 公開していいところをザクッとメモった備忘録です。 Date/Place 2018/07/31@Kyash kyash.connpass.com 開発環境をDockernizeした話 技術スタック ServerSede:go MicroService AWS 開発環境の構築手順書 手順書が実際の状況とsyncしていない。 AWSは編集後…

localでのgoの管理においてbrewをやめた話

Go

Overview goのversionを複数使いたいケースにおいて brewを使ってしまうと常に最新のgoのversionになってしまいます。 複数versionを管理するために goenv もありますが、高々goのversion管理のためだけに新しいツールを入れたりすると無駄な依存を発生させ…

今の部署に移動して1年経った

去年の今頃諸々あって転籍してきてからちょうど今週で1年と1ヶ月経ったので、この1年を振り返ってみます。 Overview まずはよく1年乗り切ったと思うし、その事実については自分を褒めたい。 正直大変なことたくさんあったし、エンジニアとしての自分自身の経…

【雑記】改善の難しさについて

コードの改善、という作業をここ数日ちゃんと向き合った中で気づいたことをまとめてみる。 Overview あるモデルレイヤーでユースケースごとに無限にメソッドが増えていきそうなポイントをある程度柔軟にパラメータでユースケースを指定して処理を共通化し、…

Gitでよく使うコマンド・設定 ※随時更新

Git

なんとなく使っていたgitコマンドたちを最近commitやmergeをする前に意図を持って使うようになったのでよく使ってるコマンドを整理しました。 ※ ちょくちょく更新していきます。 Commands remoteのmasterを取ってくる時 追跡されてないファイルを確認する 追…

goappコマンドを入れ直した話

Overview GAEを使う場合、localにapp-engineのSDKを入れる必要があります。 少し前までは brew install app-engine-go-64 を叩くと goapp コマンドがlocalにinstallされ、使うことができましたが、ある時から formulla から消えてしまい、brew 経由でDLする…

goimportsでlocalのパッケージのsort順序を編集する。

-local付きでgoimportsする goのformatとimportパッケージをよしなにしてくれる goimports コマンドですが、localで独自に定義したpackageをimportするときにこんな風に並んでほしいことが多いです。 import( // 標準pkg // github.comとか有名所pkg // loca…

Vueのテンプレート構文のエンコードでハマる

Vue

<html lang="ja"> <head> <meta charset="utf-8"/> </head> <body> <div id="app"> <p>This is sample Vue app</p> <p>count: {{ count }}</p> </div> <script src="https://unpkg.com/vue"></script> </body> <script> new Vue({ // describe options el: '#app', data: { count:0, }, methods: { countUp…</html>

初めてハッカソンに参加してきた話

ハッカソンと呼ばれるもの参加してきたので反省をつらつらと。 内容 Event 先週の土日(5/26,27)にこちらのイベントに参加してきました。 connpass.com Theme 仙台市の抱える課題をRESASやモバイル空間統計を使って、あぶり出して解決する というものでした。…