@Konboi memo

主に技術に関してつらつらと。

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

初回だけじゃない rails application template

最近rails書いてないですがrailsネタを。 はじめに ご存知の人もいるかと思いますが、 rails template は初回だけじゃなくても適用できます。 実行環境 今回の実行環境は rails: 4.0.0 ruby: 2.0.0p576 です。 やってみる 今回はサンプル用に Konboi/rails-templ…

Golangでinterfaceなsliceの長さを調べる

日本語の使い方的にどうなのっていうのはあるがそこは置いく。 コードを見てもらったほうが早いと思うので。 こちらになります。 package main import ( "encoding/json" "fmt" "reflect" "strings" "github.com/mattn/go-jsonpointer" ) func main() { var i i…

ghooks というGithubのWeb Hook Receiver をgolangで書いた

はじめに goの練習がてらに Github::Hooks::Receiver、 octoks をgolangで書いてみました。 ghooks 使い方 README.md にかいてありますが、こんな感じで使います // sample.go package main import ( "fmt" "log" "github.com/Konboi/ghooks" ) func main() { p…

Golangでどんな json が返ってくるかわからない時に const で定義するまでじゃないんだけど、 interface だと呼び出しが面倒なのどうしたらいいんだろう問題

package main import ( "bytes" "encoding/json" "fmt" ) func main() { b := []byte(`{"foo": "bar", "hoge": {"fuga": "hoga"}}`) dec := json.NewDecoder(bytes.NewReader(b)) var jsonData interface{} dec.Decode(&jsonData) fmt.Println(jsonData) fmt…

Golang で Headerの中身を取得する

func Hoge(w http.ResponseWriter, req *http.Request) { header_hoge := req.Header.Get(“Hoge”) } でできる 逆にセットする場合は req.Header..Set(“Hoge”) = “fuafuga” でできる。

go-bindata を使って静的ファイルもビルドファイルに含めてみる

追記 2018/02/08 go-bindata の作者が GitHub アカウントを削除し、他の誰かが同じ名前のアカウントと go-bindata を作成しました。現時点では新しいユーザが良い意味でアカウントを作ったという保証はないのでリポジトリを使用している場合は、まず確認する…

goma っていうmarkdown preview tool を書いてみた

はじめに golangの練習がてらにmarkdownをブラウザでプレビューするやつを作ってみました。 Konboi/goma 使い方は goma --path path/for/README.md してブラウザで localhost:5858 にアクセスすれば大丈夫なはずです。 作る前の目標として対象の markdown ファ…

golang でファイルを取得する

io/ioutil を使う file, err := ioutil.ReadFile(path) こんな感じで引数は byte

# goalng でコマンドライン入力を受け取る

flagを使うのがいいらしい var ip = flag.Int("flagname", 1234, "help message for flagname") こんな感じで使う flag.XXX の XXX には受け取りたい型を指定する 引数は大体の場合3つある flag.Int を例に出すと 1つ目は 引数の名前 2つ目は デフォルトの値…

ISUCON4 予選に参加して惨敗しました。

結果がでましたが、やはりダメでした。 反省を込めて、やったことをまとめておきます。 9/27 1日目に同期の@tkuchikiと先輩の@hilotterの2人とチーム 「流れ弾」として参加してきました。 事前準備 事前準備としては、マシン1台だからDBの負荷がかかる系だよねとか…

Golangでjsonのレスポンスを入れ子にする

はじめに jsonのレスポンスだと { status: 200, results: { message: “ok” } } というようなレスポンスをよく見る。 それをGoでどうすればいいのか調べたのでそれのメモ。 jsonのレスポンスを入れ子にする type Ping struct { Status int `json:"status"` Resu…

Golangでredirectのテストをしようとしたら嵌った

はじめに post以外のメソッドでアクセスしてきた場合は `/‘へリダイレクトするURLに対してきちんとリダイレクトするかのテストを書こうとしたら嵌った 嵌った func TestRedirectHandler(t *testing.T) { ts := httptest.NewServer(http.HandlerFunc(redirect…

GolangでレスポンスにJSONで返す

はじめに railsとかだと render json: HASH とかでよしなにjson形式にして返してくれるんですが、 goだと結構嵌ったのでメモ。 今回はサンプルで /pingにアクセスすると { status: 200, result: “ok” } というjsonを返す例を作ってみたいと思います。 jsonで返…

GoでHTTPのリクエストメソッドを取得する

Getのときは〇〇で Postの時は××したいみたいなのよくある そんなときは http.Request の Method を使えば取得できる func postHandler(w http.ResponseWriter, r *http.Request) { log.Printf(r.Method) } 下記がアクセスしたときのlog 2014/09/21 16:18:59…

Furlを使ってjsonをpostしようとしたら嵌った

嵌ったコード use Furl; … my $furl = Furl->new; my $args = { höge => ‘fuga’, piyp => ‘puyo’ }; $furl->post( $url, [], $args ); 解決したコード use Furl; use JSON::XS; … my $furl = Furl->new; my $args = { höge => ‘fuga’, piyp => ‘puyo’ }; $fu…

【読了】海賊とよばれた男

読んだ 海賊とよばれた男(上) (講談社文庫)作者: 百田尚樹出版社/メーカー: 講談社発売日: 2014/07/15メディア: 文庫この商品を含むブログ (7件) を見る 海賊とよばれた男 上作者: 百田尚樹出版社/メーカー: 講談社発売日: 2012/07/12メディア: 単行本購入: …

最近モヤモヤしてること

現在、ゲームの運用を担当している。 そのゲームで、新しい施策の前にはチームのメンバーで リリースできるかどうか、おもしろいかどうかみんなでプレイしながらチェックする そのときに不具合がないかどうかを見るのは簡単なのだけれど 想定してるユーザーは〇…

本番サーバーに ro_mysql コマンドを作っておくと捗る

はじめに ユーザーさんからのお問い合わせだったり、ディレクターからのお願いだったりで、 本番サーバーのDBでクエリを叩くのは少なくないと思います。 特別に用がある場合以外は、レプリケーション先のサーバーに接続しに行くと思いますが、 もし、指定したHost…

通信の帯域制限をかけてアプリをチェックする

はじめに テザリングを多用する方々は月末になると帯域制限に苦しむことになると思います。 そのような環境でもアプリを使用できるようにするのは、ユーザーの体験的にもビジネス的にも大事な事だと思います。 ということで開発環境、本番環境でそれぞれ帯域制限…

YAPC::Asia 2014 に参加しました

はじめに、YAPC::Asia運営の皆様お疲れ様でした。 おかげで、本当に楽しい時間を過ごす事ができました!! トークはもちろんのこと、懇親会やHUBで話させて頂いた著名エンジニアの方々、 別の道を歩んでる同期のメンバーの現状を聞いて自分も頑張らねばと思ってす…

Team Geek を読んだ

前から読もう読もうとは思っていたけど、読めてなかった。 朝起きて昨日が給料日ってのもあってAmazonのページ開いたら、今注文したら今日届くって言われて半信半疑で注文してみたら、ホント届いてAmazonすげーなってなりながら読んだ。 Team Geek ―Googleのギー…

smartchr.elやっぱり便利

便利。 詳しい使い方はこちらから smartchr.el を使って生産性を上げる 少し前まではCaskでインストールできなかったんですが、 Can’t install smartchr.el 本家の方にp-r出して取り込まれているので、是非Caskを使っている人もお使いください。 Fixed file head…

homebrewを指定のディレクトリにインストールする

homebrewはMacを使う人ならなくてはならない便利なソフトウェアです。 ただ、homebrewのデフォルトのインストールディレクトリは /usr/local 以下で管理権限を持たないユーザーだとインストールするのが面倒です。 そんな時のためにディレクトリを指定してイン…

Emacsでtagを使う

はじめに rebuild.fm聞いてたら自分の設定見直すか!! ってなったので、 コード追うの楽にしいし、重い腰を上げてtagを使って見ることにしました。 tag ファイルを作る ctags -e -R . -e オプションでemacsに対応したTAGファイルを作成する。 -e オプションがな…

Jenkinsのプロジェクトを増やしたらテストがこけるようになってつらかった。

はじめに ※Jenkinsが悪いわけじゃないです。 現在携わっているプロジェクトではテストの際に Test::mysqld を使用して並列にテストを回してました。 ただ、マスターデータのテストと機能系のテストが t/ にまとまっていて、マスターデータのテストだけをチェック…

tig のインストール

tig とは 一言で言うとgit log が綺麗に見れるツールです。 (もちろん、それだけではありませんが) はじめに Macだと brew install tig でインストールできると思います。 今回はソースからインストールする必要があったのでインストールします。 ダウンロード …

emacsclientで立ち上げたemacsだと日本語入力ができなくてこまっていた

開発環境では emacs を emacs —daemon で起動しておき emacsclient hoge.txt で起動していた。 起動が早くて快適だが、1つだけ問題が… こんな感じで表題の通り日本語の入力ができてなかった。 色々知らべてみると emacsclient -nw hoe.txt とやると日本語入力で…

nginxにカスタムヘッダーのレスポンスを表示する

タイトルのようなことがやりたかった時に色々調べたでそれのメモ。 アプリは仮に下記のようなコードがあったとする require 'sinatra' get '/' do status 200 headers \ “X-Unchi-Status" => ‘BuriBuri’ body "hello" end GETでアクセスしてきたとき ステータ…

rerunが便利

sinatraとかのrackアプリを作ってる時に編集したら自動で再起動して欲しいときがよくある。 plackup コマンドはデフォルトで-rの再起動オプションが付いていて最高!! しかし! rackupはついていない。 なのでそんなときにオススメなのがrerun。 gem install r…

bitbucket で hook の response body で返ってくるJSON形成で嵌った。

自分だけ再現するなら致し方無い。 他の人もこれで嵌っていたなら参考にどうぞ はじめに 個人でPrivateで使っているbitbucketで、意味は無いがcommitしたらircにlogを流すようにしたかった。 設定 ⇒ フック ⇒ POST から POSTしたいURLを入力する 自分は個人VPS…