Cコンパイラを作り始めた

タイトルの通り、コンパイラを作り始めました。 先日、 転職のお知らせ にも書いたのですが、低レイヤーを勉強していきたいとここ最近考えていました。 正直、僕が考えていた低レイヤーというのは、AWS上でインフラを構築できるようになることやRDBのチュー…

転職のお知らせ

2019年4月12日でピックアップを退職します。 3月19日が最終出社日で、在籍期間は1年9ヶ月ほどでした。 3年くらい働いたような感じがしますが、実際は2年も働いていませんでした。 最終出社日でした。またどこかでお会いしましょう!— 4/12まで有給消化 (@ina…

プロセスをkillする

今までは $ ps aux | grep dev_appserver | grep -v 'grep' で返ってきたpidを指定して $ kill {pid} していたが、pgrepやpkillを使うと便利ということがわかった。 pgrep pgrep はpidのリストが返ってくる。 $ pgrep -f dev_appserver 111 その後killする $…

【メモ】 DockerでMySQLサーバーコンテナを起動する

バージョンを指定してイメージの取得 docker pull mysql:5.7.25 MySQLサーバーコンテナを起動し、DATABASEを作成したりする hoge というDBの作成 inari111 というユーザーの作成 -eオプションは環境変数を設定 -d detachといい、バックグラウンドでコンテナ…

EC2にGoのアプリケーションをデプロイしてレスポンスが返ってくるまで

EC2のインスタンスが起動している前提で進めます。 ビルドする GOOS=linux GOARCH=amd64 go build デプロイする ビルドしたbinaryを配置することにしました。 今回はapp以下に配置します。 scp -i ~/.ssh/hoge.pem {binary名} ec2-user@{IP}:~/app Nginxのイ…

Cloud BuildでAPIドキュメントの生成を自動化

https://cloud.google.com/cloud-build より引用 ピックアップ Advent Calendar 2018 16日目です。 今日はサーバーサイドエンジニアのinari111がお送りします。 Goを毎日書いていますが、Goの話は出てきません… adventar.org 弊社ではProtocol Buffersという…

HHKBのキーキャップをピンクに交換した

インスタの#HHKBタグをフォローしてチェックしていると、海外でキーキャップを交換している方が多く、前々から興味がありました。 Massdrop で見つけて購入を検討していたのですがいつの間にか終わってしまい、 結局AliExpressで購入しました。値段は$32.90…

favclip/testeratorを使ってGAE/Goのテストを高速化する

testeratorはGAE/Goのテストを高速化するライブラリです。 このライブラリを使ってテストの高速化ができたので紹介したいと思います。 contextを必要とするテストでは aetest.NewContext() や aetest.NewInstance() を使うかと思いますが、これを使うと goap…

FirebaseUIでTwitterログイン機能を実装する

FirebaseUIはFirebase Authentication SDK上に構築されるライブラリで、アプリで使用するログイン機能とUIを提供してくれるものです。 メールアドレス、Facebook、Twitter、GitHub、電話番号といった複数のプロバイダに対応しています。 今回はTwitterでログ…

BigQueryの集計結果をテーブルに保存した後GCSにエクスポートしてみた

こういう細かいネタもブログに残していこうと思います。 ってブログ書く度に決意しているんだけど続かないですね... BigQueryの集計結果をテーブルに保存 使うpackageは cloud.google.com/go/bigquery です。このpackageはまだbetaらしいです。 google.golan…

Goのstructを比較してdiffを見るなら godebug/pretty が便利

Go

Goのテストでstructを比較するときに reflect.DeepEqual で比較することがあります。 テストを書き、テストを実行するとFAILだったとき...つらい... structが大きいとさらにつらい。どのフィールドの値が違うのかわかると早くテストを直せて(または実装を直…

Goでsliceを結合するときのパフォーマンスについて

Go

Goでslice結合するとき、append(slice1, slice2…)するのとfor _, s := range slice2 {slice1 = append(slice1, s)}1つずつappendするのどっちがパフォーマンスいいんだろう— inari111 (@inari111) 2018年2月14日 sliceを結合するときに、どういう書き方をす…

fish shellでgoenvを使う

メモ書きとして残す。 $ brew install goenv config.fishを編集する まだ書き方に慣れない eval (goenv init - | source) set -x PATH $HOME/.goenv/bin $PATH set -gx PATH ‘/Users/inari111/.goenv/shims’ $PATH set -gx GOENV_SHELL fish goenv install 1…

datastoreに依存したテストはStronglyConsistentDatastoreをtrueにする

Goを書き始めた頃、テストで下記のようにcontextを生成していた。 ctx, done, e := aetest.NewContext() if e != nil { t.Fatal(e) } defer done() // 1. Putする // 2. 1でPutしたデータをGetする このコードには、datastoreにPutした直後にGetするとデータ…

hatebu: はてブのホットエントリーを表示するCLIツールを作った

最近Goを書いているので、勉強がてらCLIツールを作ってみた。 作ったもの はてブのホットエントリー(テクノロジー)の一覧を表示するCLIツール hatebu を作った。 github.com 学生の頃からはてブが好きで、2014年頃はホットエントリーを収集して過去のホット…

fish shellでgvmを使う

gvmを使うとGoをバージョン指定してインストールできる。 https://github.com/moovweb/gvm 以下、Macにインストールするのを前提とする。 依存ツールのインストール ➤ brew update ➤ brew install mercurial gvmのインストールは bash < <(curl -s -S -L htt…

--allow-emptyで空コミットを作る

Git

プルリクはできるだけ粒度を小さくしレビューをしやすくしていきたい。 そんなとき、空コミットがあると便利。 git commit --allow-empty -m "commit message" feature/hogeブランチで空コミットを作ってPushしWIPのプルリクを作る。 各作業はfeature/hogeか…

nginx + uWSGI + Python3 + bottle でHello Worldまで

雑に動かすところまでやってみたのでメモ。 PythonのフレームワークはDjangoが有名だけど、シンプルなbottleを使ってみることにした。 「bottle.py」だけでできているので入門に最適らしい。 環境 CentOS 6.7 Python 3.5.1(pyenv使用) nginx 1.8 uWSGIをイン…

若手おじさん業をはじめた

先日イベントで会った高校生に、プログラミングに関して聞きたいことがあるので会いたいとDMをいただいたので、今日話してきた。 高校生がプログラミングに興味を持っていることがすごいと思ったし、行動的なところも非常にいいなと思った。自分が高校生のと…

pullしたときに &quot;You have not concluded your merge (MERGE_HEAD exists).&quot;と表示されたら

Git

You have not concluded your merge (MERGE_HEAD exists). Please, commit your changes before you can merge. と表示されたら、、、 git reset --merge とすれば、pullできた。

CakePHPにPHPUnitを導入する

Composerインストール curl -sS https://getcomposer.org/installer | php インストール先を変更する ライブラリはvendorまたはvendorsに入れるようだが、vendorsはデフォルトで.gitignoreに記載されているので、git管理下に含めたくない場合は、以下のよう…

CentOSにGo言語をインストール

最近気になるGo言語。 まずは環境構築をしてみました。 CentOS release 6.5 (Final)にインストールします。 Goのバージョンはこちらを確認 https://golang.org/dl/ インストール cd /usr/local/src/ wget https://storage.googleapis.com/golang/go1.5.1.lin…

hateb stockerをCakePHPでリビルドしました

プライベートで作った自己満サービスを作り直しました。 hateb stocker hateb stockerとは はてブのホットエントリー(テクノロジー)をまとめて見るためのサービスです。 忙しくてこまめにはてブを見る時間がないときに、まとめて見れたらいいなーと思って1年…

YAPCにボランティアスタッフとして参加してきた #yapcasia

昨年も参加したYAPC、今年はボランティアスタッフとして参加した。 写真はスタッフTシャツとアロハシャツと腕章 なぜボランティアスタッフ? 今年のYAPCにボランティアスタッフとして参加したのには理由がある。 それは、昨年のYAPCが今まで参加してきたイベ…

ビルドしただけでNSUnknownKeyExceptionというエラーがでた

storyboardのパーツとプログラムを繋ぐときに、Actionで接続するところを間違えてOutletで接続してしまった。。。 コードの方はすぐに消して接続し直したんだけど、ビルド時にエラーがでた。 エラー文の詳細は忘れてしまったがこんな感じ。 *** Terminating …

VimからAtomに乗り換えた

ずっとVimを使っていたんだけど、Atomに乗り換えて1ヶ月半ほど経った。 Vimが嫌いになったわけではない。 思ったよりもAtomがよかった、それだけである。 入れたPackageを紹介していく。 Packageインストール方法 コマンドラインで(エディタからもできる) ap…

リファラー偽装スパム対策

最近Google Analyticsを見ていると、site4.free-share-buttons.comやguardlink.orgといったスパムbot?によるアクセスが多くてウザい。 .htaccessででアクセスを遮断する。 SetEnvIfNoCase Referer guardlink.org spambot=yes SetEnvIfNoCase Referer site4.…

ビルド時にSource Kit Service crashingというエラーが出る

Swiftデビューした。 プロジェクト作ってビルドしただけなのに Source Kit Service crashing というエラーが出た。 Xcodeのバージョンは6.2 Xcodeを一度終了した後、 rm -rf ~/Library/Developer/Xcode/DerivedData/ rm -rf ~/Library/Caches/com.apple.dt.X…

React Native触ってみた

React NativeでQiitaの記事を表示してみた。 React NativeはReactjsベースでネイティブアプリを構築できるようなんだけど、Reactjsを書いたことがないのでチュートリアルと色々な人のコードを参考に書いてみた。 ほとんどhttp://qiita.com/y_matsuwitter/ite…

2014年振り返って

1年もの凄い早さで過ぎていったなーと毎年思うんだけど、今年は特に早かった。 今年を振り返ってみる。 2014年あったこと(主によかったこと) 少しインターンした 友達のサービス手伝った(実際なにもできなかったに近いけど、いい経験になった) 社会人にな…