emahiro/b.log

Drastically Repeat Yourself !!!!

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

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記事書いていたので、飽き性の自分がここまで書き続けられた理由を備忘録として…

gae上のアプリに対してService Workerを登録する

やりたいこと gae上で動いているアプリに対してService Workerを登録します。 やること service worker用のjsファイル sw.js を登録すること。 sw.js ファイルのレスポンスヘッダーに Service-Worker-Allowed:/ を登録すること。 手順 1. sw.jsを読み込むに…

環境を変えた時に先にしておくといいことをまとめてみた

最初に ※ これは個人的な経験をもとにして記載しました。 Summary 転職したり、異動したりで新しい環境に所属することはエンジニアに取って珍しい話ではありませんが、新しい環境に行った時に先んじて理解しておいた方が良いと思われることをまとめて見まし…

【Golang】部分文字列を抽出する

go

golangの文字列から特定の位置の文字を取り出したい時に [:] を使えます。 package main import ( "fmt" ) func main() { s := "abcdefg" fmt.Printf("%+v\n", s[:]) fmt.Printf("%+v\n", s[1:3]) } /* output > abcdefg > bc */ cf. https://play.golang.or…

GoLandでriotのtagファイルをシンタックスハイライトする

Overview GoLand(というかIntelliJ)がデフォルトで対応していないtemplateファイルをカスタム登録する方法 以前tmplファイルの設定方法は書きました ema-hiro.hatenablog.com 手順 前回と同様です。 Preference ▶ Editor ▶ FileType ▶ HTMLを選択。 riot.js…

Use httpmock with fmt

go

Summary golangのhttpのmocking packageである httpmock で fmt packageを使ってstring型に変換したときにハマった話を書きます。 httpmock packageはこちら github.com How to Use var resJson = ` { "id": 1, "name": "taro" } ` func TestHttpMock(t *tes…

Cookpad TechConf2018に行ってきた!

こちらに参加してきました techconf.cookpad.com 基調講演 遅れて参加したので聞いてません。 クックパッドの “体系的” サービス開発 BMLループ リーンスタートアップの考え方 buildの失敗 手戻り? mesureの失敗 ログの取り忘れ learnの失敗 数字は動いた …

HTTPリクエストでReferrerを送信しない

Referrerの制御方法について調べたので備忘録です。 下記ページを参考にしてましたがIE11での挙動など自分で追加で調査した箇所があるので付け足して行きます。 qiita.com Referrerとは? HTTPリクエストを投げたときの参照元です。 ブラウザがHTTPリクエス…

(ほぼ)初めての自宅(リモート)作業をしてみた話

注) プログラミングネタではないです。 自宅作業の経緯 職場でインフルエンザが流行し、感染防止のために学級閉鎖の如く、所属している部署全体で自宅作業推奨になったため、期せずして自宅作業をする機会を得ました。 リモートで仕事するのはほぼはじめてだ…

GraphQLを書いてみた話

仕事ではjson-shemaを使ったRESTを使っています。 API定義がドキュメント化されていることの意義 マイクロサービスアーキテクチャを元に開発していると、コンポーネント間のインターフェースの定義なしにはやっていけないと感じています。 もしjson-schemaが…

Goにおける簡易だけど最低限の情報が入っているerror出力方法の知見

go

errorについての検討 golangはerrorまで含めて愚直に書くことが求められたりして、それはそれで慣れではあるなーと感じているのですが、errorのformatが人に依存したり、1人で個人開発とかしているとerrorをちゃんと書いてるのがめんどくさくなったりするの…

CookieのDomainとPath属性の仕様について調べた話

CookieのDomain属性について調べたのでその備忘録(rfcの該当箇所を抜き出しているだけです。) 調べた背景はCookieを送信する先のDomainとPathについてです。 Domain属性 www.example.com , admin.example.com の用にdomainは同じでも複数のサブドメインでに…

structのomitemptyの挙動と使い所の検討

go

golangのstructでjsonのencodingのためのpropertyに omitempty をつけた時の挙動とその使いどこを検討します。 omitemptyタグとは https://golang.org/pkg/encoding/json/#Marshal には以下の用に記載されている。 The "omitempty" option specifies that th…

structに埋め込んだmapの要素を上書きする

go

やりたいこと struct内に埋め込んだmapのfieldの値を上書きするという処理を考えます。 下記のようなサンプルコードがあったときに originalSamples のItemsの中身を上書きするような処理です。 type Samples struct { Items map[string]string } originalSa…

goで任意引数でtemplateでの表示を変えたりしたい場合の考察

go

golangで関数に任意引数を取り、その任意引数にmapを指定することで、template場でmapで定義したinterfaceを見て表示を変えたいという実装を考えます。 やりたいこと 以下のようなことをしたいと想定します。 func RendarHTML (flags ...map["string"]interf…

goのテストのカバレッジを計測する

go

関わっているプロダクトでテストのカバレッジ取得してみようと思ったので、標準で動作している機能を使ってgoのテストカバレッジを計測してみました。 coverageを計測する coverageを測定するpackageを指定して、カバレッジを図るオプション -cover を指定し…

『お金2.0』を読んだ

『お金2.0』を読んだので、ちょっとした感想をメモって起きます。 感想 帯やamazonの説明文、レビューコメントを参照した方が内容をざっと俯瞰するにはいいと思うので、ここで詳しくは載せませんが、それなりにこれからの経済のあり方がわからない人向けに丁…