メモ: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)以上じゃない…

golang で utf8 でない文字列を for range で回すとどうなるか

概要 golang の string は意識しなければたいていの場合 utf8 な文字列なわけですが, ファイルからテキスト読んできたりすると,非 utf8 な文字列が混じることとかあります. そんな 非 utf8 な文字列を for range で回した場合の挙動でハマったのでメモ. …

ANTLR のターゲットに Go が追加されたので Gogland とあわせて遊んでみる

概要 ANTLR ってのは,いわゆるパーサジェネレーターです. 去年の年末に出たバージョン 4.6 からターゲットに Go が追加されました . かなり昔に使ったことあったんですが,v4 になってだいぶ整理されて洗練された感じになってました. この記事は結構適…

Tips: goa で Consumes 指定したときはデフォルトの Content-Type タイプが読み込まれなくなるので注意

goa はデフォルトで json / xml / gob を受け付けてデコードしてくれるようになっているので特に意識することないと思うのですが,'application/x-www-form-urlencoded' とか,独自のデコーダー作りたいときとかには,Consumes 関数を API の中に書いて指定…

goa で Type と MediaType を混ぜないでうまく再利用する

概要 goa では レスポンスの形式を MediaType で定義します.一方,Type は Payload の形式などを定義します. MediaType は Type の特殊な形で,Veiw とか Link が増えたやつなので,Type の代わりに使えるんですけど, Type の代わりに使うと振る舞いが微…

vaaaaanquishさんの名前を間違えると指摘してくれる slack bot を goa で書く

概要 この記事は Go(その3) Advent Calendar の19日目に間に合わなかった今更ながらの記事です。 goa の紹介のために,slack の Outgoing-Webhooks を使って mattn さんの書かれた 「deeeetさんの名前を間違えると指摘してくれるbot」を goa で書くつもりで…

goa tips: 小ネタ (swaggerドキュメントの抑制とパラメータ必須要素について)

概要 goa のちょっとしたネタです. swagger ドキュメントに出したくない要素を抑制する swagger ドキュメントに出したくない要素を Metadata() を利用して抑制することができるようになりました. 特定の Resource を出力したくなければ Resource() の下で …

goa tips: swagger-ui がサービスできないときのドキュメントどうする問題

概要 goa は swagger ドキュメントを生成してくれるので,これを swagger-ui をつかってサービスしてやると API が分かりやすく,お試しも出来てかなりいいかんじになります.しかし,環境によってはサービスを立ち上げることが出来ないとか,ドキュメントを…

goa の controller を実装する

概要 goa のデザインが出来たら goagen でコードを生成しましょう. コードが生成できたら,次にコントローラ部分を書いていく必要があります.これはビジネスロジックにあたる部分です. というか,goa はデザインを書いて,goagen してコード生成後は,こ…

形態素解析器 kagome を Google App Engine で動かす

概要 kagome を GAE で動かしたいってのをチラホラ耳にしてたのですが,先日ついに issue が投げられたので対応してみました. 正確には UniDic をあきらめて IPADic だけ対応してる kagome.ipadic で動かせることを確認しました. 何が問題なのか? golang …

goa tips : swagger-ui を使って手っ取り早く API を試す

はじめに 折角 API を作ったら,簡単に試して,仕様も俯瞰的に確認したいものです. そんなわけで,今回は開発環境で使える swagger-ui の tips です. swagger-ui は swagger ドキュメントを閲覧するためのサービスを提供してくれます. しかも API コンソ…

goa tips : Type と MediaType を使い分けよう

はじめに MediaType と Type の意味を理解してを適切に使い分けましょう(自戒. よく間違えます.github の issue とか goa の slack channel にもよく質問が上がってます. MediaType はレスポンスの形式 MediaType は Type としても利用できますが,本来…