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コマンドたちを最近commitやmergeをする前に意図を持って使うようになったのでよく使ってるコマンドを整理しました。 ※ ちょくちょく更新していきます。 Commands remoteのmasterを取ってくる時 作業ブランチからmasterにcheckoutし…

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やモバイル空間統計を使って、あぶり出して解決する というものでした。…

go get 時の `import path does not begin with hostname` でハマった話

go

1年近くGo書いててGOROOTの設定が間違ってたっていう話を書くのもお恥ずかしい話ではあるんですが備忘録のため 環境としては brewでgoを入れている gorootをテキトーにしか設定してなかった($HOME/goみたいな) エラーの内容は go get コマンドを叩くと pack…

「Vueの学習を始めたぞ」の巻

vue

大したこと書いてません。 Vue を覚えないとそろそろいけないので触りからはじめました。 手順 環境 go + vue.js ※ 静的なファイルをサーブできればなんでもいいのでgoじゃなくてもいいと思います。 環境用意 goの環境用意 mkdir todo; and mkdir todo/src; …

【Go】WebサーバーでLogを表示する

go

やりたいこと Goで立てた簡易webサーバーにアクセスした時に標準出力でLogを表示させるようにします。 webサーバーを立てる /src/todo main.gp handler/main.gp main.go package main import ( "fmt" "net/http" "todos/handler" ) var addr = ":3000" func …

Vue.js書くのに役に立ちそうなリンクまとめ

vue書くのに役に立ちそうなリンクを備忘録でまとめます。 Links 公式 Vue.js Vue.jsサーバーサイドレンダリングガイド Introduction · GitBook vue-test-utilのガイド はじめる · vue-test-utils vue-loaderのDocs Introduction · vue-loader vue-routerのド…

『エンジニアリング組織論への招待』を読んだ

話題の『エンジニアリング組織論への招待~不確実性に向き合う思考と組織のリファクタリング』をGWに読みましたので感想をまとめてみます。 感想 話題になっている書籍は読んでみるタイプでざっと通読したあと気になるところを二度読みました。 個人的な感想…

『教養としてのテクノロジー』 を読んだ

『教養としてのテクノロジーーAI、仮想通貨、ブロックチェーン』を読みました。 GWに帰省するときの下りの新幹線での時間潰しに読んだんですが、去年辺りから話題になりつつあるワードの大枠を理解するには良い書籍だと思いました。 章立てとしては前半の…

ポインタ型のvarでの初期化でハマった話

go

ハマったところ CLIで特定の画像をbinary化してから画像にしてPostで送信する、というコードを書こうと思った時にポインタ型の初期化についてハマったのでメモ。 ざっくり書きたかったコードは以下(※ コードは適当) func UploadImgFile() error { // 画像を…

GCSに保存してあるデータを取得する

※ 当たり前のことでドキュメント通読すればいい話ですが、ちょっとハマったので備忘録として書きました。 Google Cloud Storage(GCS)に保存してあるデータを取得するという話です。 GCSから取得する時 storageパッケージを使います。 godoc.org データを取得…

空のstructにはomitemptyが効かない

go

以下のようなコードを書いたときに https://play.golang.org/p/JVvctX-ir-w {} を返ってくることを期待しているのに、 {"field":{}} が返ってくる、ということにずっとハマっていました。 これは encoding/json の omitempty の振る舞いとして空のstructにom…

2018年始の目標の4半期報告

前回更新から少し間が撒いていまいましたが、新年度が始まったので年始に決めたことの経過と4半期振り返りをしようかなと思います。 ema-hiro.hatenablog.com エンジニアとしてコミットしたといえるプロダクトを作る。 業務の話なので詳しいことは書けません…

Lerning about Cache part1

仕事で真剣にCache戦略を考える機会があったので、これまでなんとなくしか理解してこなかったブラウザキャッシュについて調べてみました。 今回はpart1です。 参考 Real World HTTP HTTP キャッシュ - HTTP | MDN HTTP キャッシュ | Web | Google Developers…

gin✕GAEの環境でhandlerのunittestを書く

前提 goのhandlerレイヤー、MVCのApplicationで言うところのcontrollerのレイヤーのテストを今まで書いてきたことは少なかったのですが、意図しないinputに対して、正常なレスポンスを返さない(400とか401とかを返す)ようなEPを想定した時にhandlerとは言え…

YAPC::Okinawa 2018に参加してきた話

少し日が空いてしまいましたが、先週の3/2~3/4に恩納村で開催されたYAPC::Okinawa 2018 ONNASON に参加してきました。 yapcjapan.org YAPC::Okinawaに参加するまで 普段の業務はGAE/Goを使って開発していて、perlに触れる機会はほぼないので、perlの経験はほ…

100記事継続できた振り返りと所感とこれから

この記事がちょうど100記事目です。 一年弱くらいのんびり書いてたらいつの間にか100記事に到達しました(祝) 特に目標を決めていたわけではないですが、とりあえず気づいたら100記事書いていたので、飽き性の自分がここまで書き続けられた理由を備忘録として…