2019年買い物ふりかえり

概要 人のレビューが買い物するのに非常に助かるので、自分も今年買ったものを振り返り。 去年の振り返りはこちら 2018年の買い物振り返り - 押してダメならふて寝しろ とてもよかった 炊飯器 炊飯器、価格帯の真ん中ぐらいのやつを10年ぐらい使ってたんです…

Recovery Middleware for Goa v3

概要 Goa v1 にはサーバ内で panic が起こったときにリカバーしてくれるミドルウエアがありました。v3 だとこれがないので移植しました。 Goa v3 からはミドルウエアは Go の標準の方法になっているので Goa 以外でも使えます。 github.com 使い方 handler =…

GoLand の複合リテラルコードの折りたたみを無効にする

メモ

Goa v3 で HTTP リクエストをコントローラー内で参照したい

概要 Goa v1 では、コントローラーのコンテキストに http.Request がまるっと入っていたので、 コントローラー内でリクエストを見たり、ログに出したり簡単にできたのですが、v3 では、gRPC との絡みもあるので、コントローラー(サービスメソッド)で取れる…

Goa v3 で正常系 HTTP レスポンスが複数ある場合

概要 Goa ではエラーレスポンスが複数ある場合は、返す可能性のあるエラーをデザインで定義しておけば、 サービスメソッドでそれらのエラーを(gen 下に生成されるエラー構築用関数で組み立てて)返せばエラーレスポンスを出し分けられます。 しかし、正常系…

Goa v3 のテストをシュッとする

はじめに Goa というのは、Go で API を書くためのフレームワークで、APIデザインを Go のコードとして DSL を使って書けて、デザインからコードの生成、ビジネスロジックを実装というサイクルと上手に回していくことを目的にしています。 統一的なバリデー…

go.mod で利用している外部ライブラリをforkして修正したのを使う

概要 外部ライブラリを使ってると、ライブラリを修正したいとか急に対応しなきゃいけないバグとかあったりして、 本家でマージされるのを待ってられないこともあります。 fork して自分で直したりして解決できたとして、すでに自分のプログラムで利用してい…

kagome v1.11.1 をリリースしました。あるいは sync.Pool にまつわるバグの修正

概要 某フリマアプリの会社でクエリを分解するのに kagome を使っていたそうなのですが(今は知らない)、ときどき変な解析結果になるとレポートをいただきました。 なんか、最初は正しく動いているんだけど、しばらくしておかしくなり、まれにまた正常動作…

brew をやめて go を go get でインストールするようにした

概要 mac 使ってて、go を brew でインストールしてたんですけど、バージョン上がって brew に上がってくるまでちょっと待ってなきゃいけないのと、複数のバージョンを試したいときがあって go get で go 自体を管理するようにしてみました。 前提 go get が…

goa v1 を Go Module 環境でつかう(改)

概要 goa v1 を Go Module 環境でつかう - 押してダメならふて寝しろ でツールを Go Module 環境で管理する方法を書いたけど、このやり方はちょっと変だったので訂正。 songmu=san に go install で大丈夫だよって教えてもらいました。 方法 プロジェクトフ…

goa v1 を Go Module 環境でつかう

追記 やり方が変だったので訂正を書きました ikawaha.hateblo.jp 概要 goa v1 は Go Module 環境にも対応しています。 Go Module 環境でないときは goa を vendoring で使うというテクニックがあったわけですが、 go mod vendor しても、goagen パッケージは…

メモ:pecoをbashで使う

概要 peco を bash で使うときの設定メモ。 元のスクリプトはこちら。 qiita.com Ctr-C で中断したときに history -d 0 が実行されてしまってエラーがコンソールに出てしまうのだけ修正。 export HISTSIZE=10000 export HISTCONTROL=ignoredups export HISTI…

Goa v3 Getting Started をやってみる

概要 Goa v3 のちょっとした説明からサンプルデザインでのサーバ起動、アクセス、swagger-ui の利用までを簡単にまとめました。 Goa v3 について Goa はひとつのデザインを書くだけで、サーバ・クライアント、swagger ドキュメントを生成できる API フレーム…

日本語的文章中国語文字列変換プログラム書了

概要 日本語の文章から平仮名を抜いて漢字だけをつなぎ合わせた、一見すると中国語のように見える文字列を偽中国語というらしい.いわゆるハナモゲラである. https://t.co/orwdAUjfMZ これほしい。 https://t.co/fX7WJmcVlh— シェル芸bot (@minyoruminyon) …

まったくさらな branch をつくる

概要 master ブランチなどに依存しない全く新しいブランチを作成する. 方法 $ git checkout --orphan piyo /以上

メモ:goa v3 のテストを回す

概要 goa v3 のテスト方法. かなり不確かなメモ. やり方 goa のレポジトリに Makefile が入ってるので,これでテストを起動する.テストは3種類用意されている. make test make test-examples make test-plugins 一通りテストしたいときは make travis と…

メモ: goa v3 をいじったりしてデザインに反映させてみる

概要 goa v3 でコードを変更してみたくなったときの goa gen の確認方法. 方法 デザインの方の go.mod で手元の変更したコードを参照するように replace を指定する. 例: module calc go 1.12 replace goa.design/goa/v3 => ./../../go/src/github.com/go…

作業メモ:kagomeのシステム辞書を更新する

概要 辞書項目追加したので作業記録の自分用メモ. 作業 必要なもの go-bindata コマンド 自分のレポジトリにある改造したやつ 作業ディレクトリ kagome/cmd/_dictool 以下で作業する キーワードを追加する IPADIC mecab-ipadic-2.7.0-20070801 を用意する (…

slackのメッセージをひたすら読み上げさせるコマンドを作った

概要 作業に没頭してると slack のメッセージを取りこぼしてしまうことが多いんですが,これを読み上げてくれば便利だなと雑に作ってみました. ゲーム実況なんかで,来たメッセージを bot に読み上げさせて,プレイしながら回答してやつのイメージです. gi…

goa でレスポンスを XML で返す

概要 goa のレスポンスはデフォルトでは json になっているが,これを XML で返したい. ちなみに,入力の方は json, XML, gob (!!!) がデフォルトで受け取れるようになっている. 例で使ったコードはここにあるやつです : https://github.com/ikawaha/cella…

備忘: mac の音が急に出なくなったときの対処

ps aux | grep 'coreaudio[d]' | awk '{print $2}' | xargs sudo kill

2018年の買い物振り返り

はじめに 他の人のレビューですごくいい買い物できたので,自分の今年の買い物も振り返ってみました. もっといいのあるよ!とか教えてもらえればうれしいです. よかった 体重計 他のブログで紹介されてたのをみて買いました.両親が毎日体重を量って手帳に…

context.WithTimeout()を使うとタイムアウトが想像以上にきれいに書けた

概要 slack の Real Time Messaging を使って bot を書いてたんですが,しばらくすると websocket が切断されてて bot が落ちてしまってました.今回はこれにタイムアウト処理を追加してリカバリできるようにした防備録です. 問題のコード func (c *Client)…

Travis-CI で go の特定バージョンでだけテストカバレジを取りたい

概要 go の 1.11 がリリースされました .それに伴って,テストカバレッジの指定方法が変更されて,いままでパッケージひとつごとにしかテストカバレッジ取れなかったのが,パッケージをまとめて指定出来るようになりました. いままでのテストカバレッジ,…

kagomeが go get できない問題

概要 それ、昨晩 go get しようとしたんですけど、いつまで経っても終わらないんですよ…— 結城浩 (@hyuki) 2018年4月17日 kagome が go get できない!ということがある模様. たしかに kagome は辞書をソースコードに変換して保持してるので,重いのは重い…

会社引っ越し前の新宿ランチ棚卸し

3年ほど,新宿高島屋前のオフィスで働いてきましたが, 今年の3月くらいに会社が引っ越すことになったので,新宿三丁目のランチでお世話になったお店を棚卸し. ここも行っておいた方がいいよ!ってところがあったら是非教えてください. ( '-`).oO( とか言…

形態素解析器 Sudachi の辞書が手に入ったので Go で遊んでみた

はじめに Sudachi はワークスアプリケーションズが絶賛開発中の形態素解析器で,Java で書かれています. 今一番新しい注目すべき形態素解析器で,次のような機能が特徴としてあげられています. 複数の分割単位の併用 必要に応じて切り替え 形態素解析と固…

goa tips: 要素がポインタになるのを避ける

はじめに Payload の Member が必須要素でない場合,生成される対応するコードはポインタで表現されます. 文字列なら,string のポインタで表されるわけで,ポインタを渡すために変数を用意してポインタで渡してやるみたいなひと手間が必要になってきます.…

goa tips : v1.3 で追加された HashOf のバリデーションを使う

はじめに goa のこと書くのずいぶん久しぶりになってしまいました. 仕事でも使ってて安定して動いていて,あんまり目新しいこともなくなってきて, API はこれで書くのが当たり前になりつつあり・・・. まぁ,そんな言い訳はどうでもいいんですが, うかう…

形態素解析器 kagome を Google App Engine の最も安いインスタンスで動かす

概要 前回までのあらすじ: kagome を GAE で動かしたいという話があり,kagome.ipadic という IPA 辞書だけを収めたコンパクト版を用意して,GAE 上で動作させることに成功したわけですが,メモリの消費量が多くて B4インスタンス(メモリ 512MB)以上じゃない…