タグ

ブックマーク / ikawaha.hateblo.jp (6)

  • 形態素解析器 kagome v2 をリリースした - 押してダメならふて寝しろ

    概要 ホント誰得でもないのは重々承知していますが、思い立って 形態素解析器 kagome v2 をリリースしました。とはいっても、だいたいの機能は今ある kagome でも実装済みで、今さら変更してもどうよ・・・という感じではあります。 なので、モチベーションを維持するのが非常に難しくて、だらだらと時間だけがかかってしまいました。 折角作ったのでリリースノートです。 TL;DR; v2 で実現した事 辞書の分離 / バージョン管理 辞書毎に異なる素性項目の扱いの共通化 韓国語辞書対応 辞書の分離 辞書を別リポジトリに分離しました。これにより、長年(?)懸案だった辞書のバージョン管理が可能になりました。go.mod で指定すれば、どのバージョンの辞書を利用しているかがわかります。 また、これにより、これまで kagome.ipadic のような単独辞書を利用するだけのためのライブラリを別に切

    形態素解析器 kagome v2 をリリースした - 押してダメならふて寝しろ
  • 形態素解析器 kagome を Google App Engine で動かす - 押してダメならふて寝しろ

    概要 kagome を GAE で動かしたいってのをチラホラ耳にしてたのですが,先日ついに issue が投げられたので対応してみました. 正確には UniDic をあきらめて IPADic だけ対応してる kagome.ipadic で動かせることを確認しました. 何が問題なのか? golang のプログラムを GAE で動かすには以下の2点の制限があります. GAE では unsafe, syscall, cgo を使ってると動かせない GAE では1ファイル32MBのサイズ制限がある kagome を最初に作ったときは辞書を有限状態トランスデューサー(fst)で構築してて,どうしてもこいつが unsafe 使う実装になってたので対応あきらめてたんですが,なんかの時に辞書を double array trie になおして,辞書からは殆ど unsafe をなくしていたので,今回は1カ所直

    形態素解析器 kagome を Google App Engine で動かす - 押してダメならふて寝しろ
  • ANTLR のターゲットに Go が追加されたので Gogland とあわせて遊んでみる - 押してダメならふて寝しろ

    概要 ANTLR ってのは,いわゆるパーサジェネレーターです. 去年の年末に出たバージョン 4.6 からターゲットに Go が追加されました 🙌 . かなり昔に使ったことあったんですが,v4 になってだいぶ整理されて洗練された感じになってました. この記事は結構適当にやってしまっていると思うので,ちゃんとやりたいならリファレンスを読んだ方がよさそうです(ぉ. The Definitive ANTLR 4 Reference 作者: Terence Parr出版社/メーカー: Pragmatic Bookshelf発売日: 2013/01/22メディア: ペーパーバックこの商品を含むブログを見る ANTLR の簡単な紹介 入力のあるプログラム書いていると,入力が well-formed であるかどうかをチェックする必要があることがあります. 正規表現とか使って自分で入力が正しいかどうかチェ

    ANTLR のターゲットに Go が追加されたので Gogland とあわせて遊んでみる - 押してダメならふて寝しろ
  • 「たぶんみんな間違えてる golang の HTTP Respose Body の閉じ方」は間違えてる - 押してダメならふて寝しろ

    結局 golang の HTTP Response Body はどう閉じるのが正しいのか? - 押してダメならふて寝しろ でいろいろ考察して参りましたが, mattn さんが Russ Cox さんに聞いてくださって解決しました. resp.Body.Close の件、Russ Cox から返事貰った。err が返るならコネクションは閉じられているし、もし現状がそうなってないならば net/http を直すべきだと。なので、みんな間違ってなかった。 #golangmattn (@mattn_jp) 2015, 6月 6 ということなので,今まで通りエラーかどうかチェックして Response Body を閉じればいい. 正) resp, err := http.Get("http://example.com/") if err != nil { // handle error } de

    「たぶんみんな間違えてる golang の HTTP Respose Body の閉じ方」は間違えてる - 押してダメならふて寝しろ
  • たぶんみんな間違えてる golang の HTTP Respose Body の閉じ方 - 押してダメならふて寝しろ

    元ネタはこちらのブログ. 50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs あまりにも衝撃的でした.HTTP Response の Body を閉じるとき,たぶん,みんなこう書いてると思うんだけど, 誤)エラーがないかチェックしてから閉じるようにしておく resp, err := http.Get("http://golang.org") if err != nil { return err } defer resp.Body.Close() エラーがあっても,Response が nil じゃないときがあるらしい.なので,正しい閉じ方はこう. 正)Response が nil じゃなかったら閉じるようにしてからエラーをチェックする resp, err := http.Get("https://

    たぶんみんな間違えてる golang の HTTP Respose Body の閉じ方 - 押してダメならふて寝しろ
  • モンキーパッチのライブラリを使って,golang のメソッドを差し替える黒魔術を使ってみた - 押してダメならふて寝しろ

    モンキーパッチというのは,オリジナルのソースコードを変更せずに実行時にコードを拡張したり変更したりする手法のことです.動的言語で見かけるようなモンキーパッチを golang でもやってのけることができます(って,そういうライブラリを作っちゃった人がいます! 手法については,ライブラリの作者による詳説をご覧ください. Monkey Patching in Go ざっくり言うと,メソッドの開始アドレスをすげ替えて他のメソッド呼び出すようにするという感じのものです. なので, セキュリティ厳しいOSでは動かない. スレッドセーフじゃないし,そもそも何もセーフじゃない. ということにご注意ください. 動かなくても文句は言わない.ただし,時々動作がおかしくなるようなら go test -gcflags=-l のようにフラグをつけてみるといいかもしれません. かなり黒魔術ですが,テストでどうしてもモッ

    モンキーパッチのライブラリを使って,golang のメソッドを差し替える黒魔術を使ってみた - 押してダメならふて寝しろ
  • 1