emahiro/b.log

Drastically Repeat Yourself !!!!

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

2017年 ~振り返り~

一年も終わりなので今年の振り返りをします。 振り返り観点は以下 スキルスタック 個人的トピック 技術スタック (個人的達成度) Skill Commit Comment Rails △ 4からあげる時に1から色々触ってました合わせてrubyも1からいろんな書籍、資料を読んで学んだけ…

これからはgoのstreamを使っていこうと思った話

go

これからgoでjson形式のデータをstructにmappingする際にはstreamを使うことを決意した話です。 経緯 下記のエントリーに触発されました。 christina04.hatenablog.com goでjsonをstructにmappingすることをはじめ、 io.Reader のデータを扱うときは一度 []b…

goでAPIのスケルトンを作成する

以前書いた以下のエントリーからさらい一歩進めました。 ema-hiro.hatenablog.com ema-hiro.hatenablog.com 内容は net/http かgorilla/mux を使ってroutingを作る超薄いAPIサーバーを作成する際にこれだけコピれば簡単にapiサーバーを立てることができるみ…

GolangではてなのRSSを取得するクライアントを作成する

go

仕様 はてなのRSSのfeedのURLを登録する 登録したURLでRSSを取得する RSSをparseする 実装 sampleでは、はてなの「テクノロジー」のホットエントリーを使用する。 http://b.hatena.ne.jp/hotentry/it.rss 実際に叩いてみる $ curl -i http://b.hatena.ne.jp/…

goでmecabを動かす

go

簡単な分かち書きのCLIツール作ってみようと思ったのでmecabをgoで動かして見ました。 やったこと goでmecabを動かすこと mecab-golangのinstall 以下のmecabのクライアントを使いました。 github.com 最初に mecab をinstallし、mecab-config が入っている…

Amazon Product Advertising APIのレスポンスをパースする

go

やったこと Amazon Product Advertising APIを使ってISBNから書籍情報を取得するプログラムを書く際に、AmazonのAPIのレスポンスは json ではなく、xmlでデータが帰ってくるので、このxmlをGolangでparseするためにしました。 ※ 今時xmlかよ!っと思ってちょ…

Amazon Product Advertising APIを使ってISBNコードから書籍情報を取得する

go

やったこと Amazon Product Advertising APIを使って書籍情報を取得すること 書籍情報の検索フックにはISBNコードを使ったこと 利用する際にハマったこと 事前準備 以下は事前にやってあるものとします。 Amazon Associate への登録 Associate TagにこのIDを…

os.Openするときの相対パスの書き方

go

goで os.Open(filename string) を実行するときに読み取りファイルを特定のディレクトリにまとめておいたときに os.Open で指定する相対パスがどう決まるかのメモです。 答えはmain.goからの相対パスになります。 例えば以下のようなディレクトリ構成のとき …

選んだ理由よりも「選ばなかった」理由を知りたいなという話

現在働いているチームの目指すべき姿の一つに、答えではなく「観点」を理解する ことで次回以降一人でその答えに辿り着けるようにする。というものがあります。 自分はこの言葉がすごく好きではあるのですが、答えにたどり着く観点の他に、その答えの他に考…

depでginを入れる

go

やったこと depをつかってginをinstallして動かすまで。 depのinstall方法 以下を見て下さい。 ema-hiro.hatenablog.com depでginを入れる depでginをinstallします。 # projectのROOTにいるとする。 $ cd ./src/{project_name} $ dep init $ dep ensure -ad…

go ✕ ajaxを書いてみた

go

サマリ goで簡易的なajax通信するアプリを作ったのでそのメモ 構成 環境 jquery 3.2.1 go 1.9.2 ディレクトリ構成 - src - app - main.go - handler - handler.go - render - render.go - templates - index.tmpl sampleコード main.go var port = "8080" fu…

GoLandの設定をremoteで管理する

Golandの設定をremoteで管理したかったので、その設定方法をメモとして書いておきます。 背景 PC変えたりすると使っていたPCの設定が全て初期化されて1から作り直すのめんどくさいです。 PCやeditorくらいであればもしかしたら、設定ファイルをgithub等にあ…

QiitaのAPIで遊ぶ

go

サマリ APIで遊びながらgoの学習をするシリーズ第二弾で、Qiitaで記事を検索するクライアント goota をgoで書きました。 コードはこちら github.com demo ざっくり仕様 Requirement tagを指定できる。 tagはカンマ区切りでOR条件で検索出来る。 ストック数が…

githubのSearchAPIで遊んだ話

go

githubのsearchAPIを簡単にラップしたGUI作りました。 久しぶりにjqueryとか触ったらすごい懐かしい匂いがして色々つまりました。 request処理とかしててハマったところがあるので別でエントリでまとめようと思います。 コードは以下 github.com refs: はま…

Goでファイル読み込みを調べた話

go

サマリ io.Readerの読み込みついて調べた io.ReaderをWrapして文字列置換 io.Readerが一括読み込みでなくstream的な動作で順次読み込みされている io.Readerについて refs: io - The Go Programming Language io.ReaderはデフォルトのReadのWrap。 ioパッケ…

GAE/GOのversionを上げたらContextが違ってコードが動かなくなってた話

go

有名な話です。が、いざ自分が体験したので備忘録としてまとめます。 github.com 上記で上げられている netcontextとcontext周りで死ぬ というのに引っかかりました。 課題 go1.6上で以下のようなリクエスト比較するコードを書いてました。 ※ コードはあくま…

time.IsZero()の挙動でハマった話

go

サマリ goのtimeパッケージの IsZero() はUnixTime = 0ではない GAEのdatasotreのdefaultの時刻で IsZero() を使ってもtrueを返さない IsZero()メソッドについて refs: time package - time - pkg.go.dev IsZero reports whether t represents the zero time…

【続】FWに頼らないオレオレroutingを実装する

go

前回書いた記事の中でオレオレroutingを実装する際に標準の net/http パッケージだけだと足りないと書いてましたがこれ、間違いでした。 ema-hiro.hatenablog.com 標準の net/http パッケージだけでオレオレroutingを実装する方法は以下 main.go package mai…

GogLandでtmplファイルをhtmlのシンタックス対象に加える

いつからはわからないですが、GogLand EAPをアップデートしたらtmplファイルがhtmlのシンタックス対象から外れてて、htmlを開いてもxmlと判別されてエラーがうるさくなってしまったので、カスタムファイルとしてtmplファイルのときは、htmlのシンタックスを…

【go】FWに頼らないオレオレroutingを実装する

go

goでFWに頼らず、net/http だけで簡単なWeb Serverを立てたいと思ったので作ってみた。 routing設定 まず躓いたのはroutingをどうするかということ。 net/httpパッケージを使用する場合、全てmain.goにroutingを書いてしまうことになりますが、FWの構造に則…

depを使ってみる

go

golangのオフィシャル謹製パッケージマネージャ「dep」 github.com 個人プロジェクトではglideから乗り換えました。 install 公式の手順に則っておけば問題ないです。 Macでは brew でインストール出来ます。 $ brew install dep ディレクトリ構成 - $GOPATH…

goのsortで複数条件でのsortを実現する上で考えたこと

go

サマリ 特定のModelに対して複数条件でsortしたい場合の実装方法についての考察 実装方法 sortしたいfield毎にモデルにsortのinterfaceを実装をする - ➀ embedで親のsortパッケージを継承する(sort条件を上書きする) - ➁ ➀のとき sortしたいStructのfield毎…

goでprivateメソッドをテストする

go

サマリ go でのprivate methodをテストでcallする方法 テスト手順 goでprivateメソッドをテストファイルからcallする場合には、同一package内においてはファイルが異なっても、同じpackage内に存在するprivate methodを呼ぶことができる というgoの仕様を利…

(続)goでのhttpの書き方あれこれ

以前書いたこれの続き ema-hiro.hatenablog.com 以前書いたgoでのhttpの書き方の内容の続編です。 Postの書き方とAutorizationヘッダーを付けたリクエストを構築するときの方法を備忘録としてまとめました。 標準パッケージはこちら https://golang.org/pkg/…

AbemaTV Developer Conference に参加してきました。

ちょっと遅刻してしまったけど、21日にAbemaTV Developer Conferenceに参加してきました。 (ほとんど個人のメモです。) 感想 先に感想だけ書いておきます。 ※ 僕向けのメモよりスライド探したほうがわかりやすいと思うので(笑) 感想としては、 Abemaのモニ…

webpack + typescript

なぜtypescript? MSが作ってGoogleが採用したので、フロントエンド界隈でtypescriptがしばらく積極的に使われて来そうな気が予感がしたのと、そろそろフロントエンドのキャッチアップしとかないとなーと感じ始めていたので... typescriptの導入 typescript…

webpackでhtmlファイルも出力する

ema-hiro.hatenablog.com 昨日の上記エントリへの追記 TODO htmlファイルをdist以下に作成していましたが、frontendのファイルはsrc以下に管理します。 webpackでコンパイルしたらdist以下にhtmlファイルも出力させます html-webpack-pluginを使います insta…

いまさらだけどyarn + webpackを試す

仕事の中でjsの開発環境を構築する機会があったので、自前でes6をコンパイルする環境をととえてみた備忘録。 jsは動きが早くて色んなツールが出て来るなか、一定出尽くして落ち着いてきそうな感じをここ最近感じていたので、ようやく少しずつキャッチアップ…

goでのhttpの書き方あれこれ

goの標準 goでhttpの処理を書きたいときはnet/httpパッケージを使う。 強力なパッケージなので、基本これを使うで、やりたいことの殆どはまかなえてしまうと思う http.Get(url) package main import ( "fmt" "io/ioutil" "net/http" ) func main() { resp, e…

The Twelve-Factor App を読む

ちょっと前にはてブで上位に上がっていた以下のスライド speakerdeck.com の中に出てきていた「The Twelve-Factor App」を読んだ感想を書く。 原典の邦訳はこちら ▶ https://12factor.net/ja/ 今更感があるがちょっと最近基礎が揺らいでいるなという感覚もあ…