emahiro/b.log

Drastically Repeat Yourself !!!!

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

goで一時的なスクリプトを書く方法

go

Goで開発しているときに 標準パッケージの動作確認したい ライブラリの動作確認したい 簡単なスクリプト(HTTPやgoroutineなど)を書きたい と思って調べてみました。 Rubyならirbやpryを使ってコンソールで簡単な動作検証を行えたり、変数の内部見ることが…

GoonのGet()とGetAll()の違いでハマる

Go+GAEの環境でCloudDataStoreからデータを取得するときに Get() GetMulti() GetAll() の挙動の違いでハマったので備忘録として挙動をまとめておきます。 Datasotreのライブラリ datastore https://godoc.org/google.golang.org/appengine/datastore googlea…

appengineのmemcacheを使う

GAEではmemcache一択 appengineのmemcacheパッケージを使ってみました。 リファレンスはこちら https://cloud.google.com/appengine/docs/standard/go/memcache/reference goでキャッシュを扱うときに最初 go-cache を使おうと思っていたのだけれど、GAEでキ…

Goglandでソフトラップを消す

Preference ▶ Editor ▶ Appearance で show right margin をoffにする これでソフトラップがoffになる。 goは変なところでソフトラップがかかって改行されるとコンパイルエラーになるのが嫌なので、ソフトラップをオフにしてます。 参考 http://samuraism.co…

IDEを使うという選択肢

※ IDE…統合開発環境 エディタをカスタマイズすること エディタをバリバリカスタマイズしてこそエンジニアだ(# ゚Д゚) なんてことを思っていた時期もありました。 (今でも少し思ってます) バリバリエディタをカスタマイズして、キーバインドバチバチで、開発効…

lsに変わってexaを使う

少し前に以下の記事をはてブで見つけたので、いい機会だったので使ってみました。 http://wonderwall.hatenablog.com/entry/2017/08/07/222350 普段はfishを使っているので、fish上では ls コマンドを拡張して exa コマンドを叩けるようにしました。 インス…

GoglandでFWのsrc配下のvendorを参照しなくなった時

前置き ginやechoと言ったgoのwebフレームワーク(FW)を使って開発するときに、glideみたいなパッケージ管理ツールを使って依存パッケージを管理しているケースはよくあると思います。 その依存パッケージの管理ディレクトリはプロジェクトルートではなく、…

GQLでプライマリーキーのwhere句指定を行う

GoogleCloudStrageでkey(RDBでいうところのprimarykey)をフックにしてentityをselectしようと思ったらちょっとハマったのでそのメモ 最初に書いたクエリ SELECT * FROM KIND_NAME where ID = 123 この形式ではentityを取得できない。 正しいクエリ SELECT * …

参照型を作成するmake

go

goには2つの値の型があります 値型 参照型 値型と参照型 関数に渡されるときにコピーされる。 そのため、呼び出し元で引数に指定した値型の変数は関数に渡されるタイミングでコピーされ、コピーされた値が関数の呼び出しに使用されるので、呼び出し元の値は…

shell二刀流を試してみてる

shellを二重で使ってみてます。 使っているshell fish zsh 用途によって分ける 普段使いのshellはfishです。 もともとzsh使っていたのですが、なんとなく使っていてもっさり感が出てきたのと、いちいちrcファイルでカスタマイズするのがめんどくさくなってき…

Goのtemplateにおける値の評価の書き方

go

Golangのtemplateファイルでisやnot equal、and条件、or条件の書き方を調べたので備忘録です。 ※ 適宜追加していきます。 is評価 {{ if eq num 1 }} // if num == 1 // 以下同義 {{ if eq ( .num, 1 ) }} not equel評価 {{ if ne .num 1 }} // if num != 1 /…

Golangでの抽象化について

理解がなんとなく浅いと感じていたGolangの抽象化について簡単にまとめました。 goのサンプル package main import "fmt" type Stringer interface { String() string } // Stringerを実装する type Hex int func (h Hex) String() string { return fmt.Spri…

「マイクロサービスアーキテクチャ」を読みました

マイクロサービスアーキテクチャを読んだ話 去年くらいに話題になった「マイクロサービスアーキテクチャ」を最近読みました。 仕事でマイクロサービスアーキテクチャを採用しているプロジェクトに関わることがあり、自分自身今までマイクロサービスアーキテ…

GoのtimeのFormat表記方法でハマったこと

GolangでUnixタイムをISO8601形式に変換したいということがあって、実際に返還する際にFormatの指定の仕方でかなりハマりました。 こういった方の記事を参考にしたらすぐわかったのですが、 GO言語での日付処理 そもそもGoで時刻表記をするときにちょっとク…

Goのsliceで重複を削除する

重複削除処理を実装する ruby でいうところの uniq メソッドみたいなものが golang の slice にもないのかと思って調べてみたけどないらしいので、重複のある slice に対して独自に処理を実装しなければ行けない。 go は非常にシンプルでLL言語をずっと書い…

Goでシェルを実行するCLIToolを書く

goで外部コマンド(デフォルトのコマンドやshellスクリプト)を実行するCLIツールを作ったのでその触りをまとめます。 内容は、goでCLIツール書く時の実装方法について。 やったこと shellスクリプトを外部コマンドとして叩く goの os/exec パッケージを利用…

【fish】CLI上で利用する変数を保持する

fishでのお話。 ターミナル上で特定の文字列を変数にセットして使う方法 $ set x (ls) | echo $x # 当該ディレクトリ上で ls した内容を出力する set x (何か出力をともなうコマンド) とすると () 内で実行されたコマンドの出力結果を x に格納する。 セット…

fishでのevalの設定方法

fish を使っていて、 eval の設定方法がわからなかったので調べました。 参考 eval command in config.fish # evalの設定方法 # bashrc での rbenv の設定 # eval "$(rbenv init -)" と同様のことを書きたい時 eval (rbenv init - | source) # その他の書き…

rubyでオブジェクトの持つメソッドを探索する

ユースケース オブジェクトの中に意図するプロパティを取り出せるのかを確かめる方法に、オブジェクトが持つメソッドを調査するという方法があります。 rubyではjsonオブジェクトのプロパティもメソッドとして取り出せるので、プロパティ not found エラーが…

githubのユーザーネームを変更した話

ユーザーネームを変更しようと思った背景 もともとのgithubのユーザーネームは ememhr っていうのを使っていたのですが、これ、前職で会社用のgithub.comを作るために、もともと作っていた個人用のgithubとは別にとったもので、インターネット周りでは全ての…

【go】構造体にメソッドを追加する

goはオブジェクト指向言語とは違って、書いていてC言語を書いている印象に近く、OOPで言うところのクラスが構造体で、クラスにメソッドを定義することは、構造体にメソッドを定義することになる。 しかし、クラスでカプセル化したりするわけではないので、構…

fishに乗り換えた話

zshの管理がめんどくさくなってきたのでもう少しイケてるshell環境をつくれないものかと調べてたら、fish なるものがあるらしく、使い勝手がよさげなので、期間限定で乗り換えてたときの備忘録 パッケージ管理 oh-my-fish fisherman 1と2もどちらもパッケー…

go で簡易HTTPサーバー立てる

http.HandlerFuncを使う場合 package main import ( "fmt" "net/http" ) func main () { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request){ w.Writer([]bytes(`表示内容`)) } } if err := http.ListenAndServe(":8080", nil); err ! = ni…

go言語を学び始めてみた

go言語を学び始めました。 最近専らクライアントサイドの開発がメインだったので、サーバーサイドやりたくなったので、徐々に浸透してきたgoについてキャッチアップはじめました。 環境構築 環境 MacOSX Sierra go 1.8 エディター atom goのインストール と…

読書 Note -『なぜ、あなたの仕事は終わらないのか スピードが最強の武器である』

『なぜ、あなたの仕事は終わらないのか スピードが最強の武器である』を読んでみての感想。 新卒時代に、当時の上司から口酸っぱく言われていたことが全て書いてあり、当時の上司はこの著者の言っていることを指して指導してしくれていたのだとここに来て気…

MacOSをアップデートしたらbrew でインストールしたツールが`command not found`になったときの対処

トラブル概要 MacOSX Sierraを2017/04/06時点の最新版にアップデートしたら $ mysql mysql not found になってしまった。 対応した手順 brew list でインストールされているか確認 $ brew list | grep mysql mysql56 mysql@5.6 入っている… mysqlの最新版は5…

WebViewを使ったHTMLの描画

アプリのTableViewから詳細画面に遷移するインターフェースを考えます。 詳細画面に遷移する時に、HTMLをViewに描画するとき、 URLをLoadして直にwebViewを読み込む HTMLの文字列をHTMLの段組みに合わせてWebViewで表示する。 参考 How to load a HTML strin…

【2017年度版】今年度はどんなこと学んでいこうかなってこと

今日から新年度ですね。 渋谷ではおそらく新卒入社と呼ばれるみなさんが飲み会をしてました。 賑やかでこの時期ならではの華やかな空気感が色んなところに感じられるようになりました。 自身も新卒で社会に出てから4年目になってしまい、世間的ににはまだま…

UIRefreshControlの実装でハマったところ

目次 unrecognized selector sent to instance のエラーが出た時 Cannot override with a stored property refreshControl unrecognized selector sent to instance のエラーが出た時 RefreshControlを使ってSwipe & Refreshを実装しようとした際に、 unreco…

WebフレームワークにおいてDDDを適用しようとした時の違和感

概要 エリックエバンズの「ドメイン駆動設計」を読む中で、アプリケーション開発に適用する時に感じてきた違和感をまとめてみました。 まだ前半しか読み終えてないので、後半を読んだ際にはまた別のエントリーでまとめようと思います。 レイヤー化アーキテク…