https://github.com/nyarlabo/go-cidr_mobilejpgo-cidr_mobilejp
概要: というのを作りました。
これは何?
- ある IP アドレスが
- 日本の携帯キャリアの IP アドレスかどうかを判定するための
- Go 言語用のライブラリ
なぜ作ったか
んで、実際に 2ch のトリップを求めるライブラリは作った → <https://github.com/nyarlabo/go-ch2trip https://github.com/nyarlabo/go-ch2trip>
よろしい、次は ID だ! となって作業を開始した
しかしながら ID 生成のアルゴリズムがわからんとなった
- で、これはゼロちゃんねるプラスのソースみて解決した
そしたら、モバイルキャリア判別とかあるけど、Go 言語にそんなのない
以上の理由により、よろしい、ならば作成だ! となった
だいたいそんな感じ
使い方
package main import ( "fmt" "net" checker "github.com/nyarlabo/go-cidr_mobilejp" ) func main() { docomoIP := net.ParseIP(`210.153.84.5`) isMobile, carrier := checker.IsMobile(docomoIP) fmt.Println(isMobile) // true fmt.Println( carrier == checker.DOCOMO ) // true }
細かいドキュメント等
- Github: <https://github.com/nyarlabo/go-cidr_mobilejp https://github.com/nyarlabo/go-cidr_mobilejp>
- Godoc: <http://godoc.org/github.com/nyarlabo/go-cidr_mobilejp http://godoc.org/github.com/nyarlabo/go-cidr_mobilejp>
小ネタ集
リポジトリ内の
mksrc.pl
がソレ- 自分で IP 範囲調べて云々は面倒なので Perl で書いた。反省はしない(キリ
ちなみにスクレイパーには
WWW::MobileCarrierJP
使ってるあと
WWW::MobileCarrierJP
のパッチを tokuhirom さんに pull-req とかしたrt.cpan.org で issue 立てたら patches welcome ;)と言われたので(ry
- あと色々わからんことがあったけどなんとかなった
あと今回の件と関係ない live tests がこけてたような気がするけど見てないふりしてる
それと
source.go
では、IP Range を precompile してる最初は、
func init()
で IP Range を Parse するコードを書いてた- けどそれって初期化に時間かかるんじゃね?
- → ということで生の構造体を生成するソースを書いた 詳しくは次を参照 → <https://github.com/nyarlabo/go-cidr_mobilejp/blob/master/source.go https://github.com/nyarlabo/go-cidr_mobilejp/blob/master/source.go>
とりあえず以上
よかったら使ってみてくらさい。
あんまり使い道思いつかんけど(w