タグ

Stringに関するMukeのブックマーク (15)

  • Golangでtestingことはじめ(1)〜testingパッケージを使ったユニットテスト〜 - DeNA Testing Blog

    こんにちは。 Golangが一般的に使われるようになってきてもう久しいですね。 最近作られたSWET製のツールでも、Golangを採用したものがあります。 そこで、Golangの標準テストパッケージtestingやその他についてまとめたいと思います。 今回から3回にわたり、 testingパッケージを使ったユニットテスト(testing) テストにおける共通処理(testing) アプリケーションのテスト(gomock, httptest) を紹介します。 この記事を読んで一通りGolangでテストがかけるようになると嬉しいです。 この文章中に登場するサンプルは GitHub にありますので、実際に動作させることが可能です。 $ go get github.com/duck8823/sample-go-testing $ cd $GOPATH/src/github.com/duck8823

    Golangでtestingことはじめ(1)〜testingパッケージを使ったユニットテスト〜 - DeNA Testing Blog
  • go-sqlrow

    この記事はGo2 Advent Calendar 2017 13日目の記事です。 昨日は@kami_zh さんの Goで標準出力をキャプチャするパッケージを書いた でした。 go-sqlrowGo言語で標準パッケージを使用してRDBMSからデータを取ってくるには、以下の様に書きます1。 type Person struct { ID string Name string } db, _ := sql.Open("dn", "dsn") row, _ := db.Query(`SELECT id, name FROM person where id='foo'`) var p Person row.Scan(&p.ID, &p.Name) SQL文を発行するまではいいのですが、最後の行、sql.Row#Scanがくせ者です。 上記の例のように、sql.row#Scanは可変長個のポインタを引

    go-sqlrow
  • Big Sky :: net/http でレスポンスの内容を確認したいなら io.TeeReader を使おう

    « Golang で物理ファイルの操作に path/filepath でなく path を使うと爆発します。 | Main | VimConf2017 に参加してきた。 » printf デバッグは便利だ。技術の後退と言われようと printf でないと解決できない事はまだまだたくさんあります。 今日は net/http でクライアントが得たレスポンスの JSON を確認したいといった場合に、どうデバッグしたらいいかを書いてみたいと思う。 Go のインタフェースは大よそ io.Reader もしくは io.Writer を使う様に設計されている。こうする事でプログラムがメモリを一度に沢山確保してしまわない様にしています。 package main import ( "encoding/json" "fmt" "log" "net/http" ) type Foo struct { ID  

    Big Sky :: net/http でレスポンスの内容を確認したいなら io.TeeReader を使おう
  • Haskellで英語学習用のコマンドラインツールを実装しました - Kuranari::Log

    昨日のHaskellハンズオン でIOモナドを学びました。 アイデアがあったものの、イベント中に実装が間に合わなかったので改めて時間を取って実装をしてみました。 改良点すべき点は多いのですが、とりあえず動くようになったので公開してみます。 作ったもの 英語学習用のCLIツール。 日語に対応する英語を入力すると正解か不正解か、不正解の場合はそのDiffが表示される。 GitHub - kuranari/ring-note 最近、瞬間英作文の書籍を使って英語の勉強をしているのですが、音読だと時制や単数・複数の扱いが曖昧なまま流してしまうので、コンソールで入力して正確な作文が出来ているのかチェックしてみることにしました。 紙に書くと時間がかかるので、キーボード入力がちょうどいいのではと思った次第です。 どんどん話すための瞬間英作文トレーニング (CD BOOK) 作者: 森沢洋介出版社/メーカ

    Haskellで英語学習用のコマンドラインツールを実装しました - Kuranari::Log
  • だんだん開発スピードが遅くなっていくのをどうやってとめたら良かったんだろう? - Mitsuyuki.Shiiba

    先日、モブプロをやってきた。その中で、モブプロとは別で、いくつか感じたことがあって、今日はその中のひとつを思い浮かんだままにメモ。 bufferings.hatenablog.com 要件を満たすプロダクトをより早く出す モブプロでTDDしながら、要件を満たすプロダクトをより早く出すことに集中してみた。例えば、第2ラウンドのお題はTDDBCなどでお馴染みの「自販機」。 「100円を入れてボタンを押すとコーラが1買えること」 最初に「100円を入れてボタンを押すとコーラが1買えること」と言われ。 assertThat(get(100), is("コーラ")); みたいなテストを書いて。 String get(int money) { return "コーラ"; } みたいな実装を書いた。爆速! 「200円を入れてボタンを押すとオレンジジュースが1買えること」 次に「200円を入れてボタ

    だんだん開発スピードが遅くなっていくのをどうやってとめたら良かったんだろう? - Mitsuyuki.Shiiba
  • Goのstructとinterface - oinume journal

    社内でGo勉強会をやったのでその時に自分が発表した時の内容。オブジェクト指向的なことをGoでどう実現するのか、どの辺を諦めなくてはいけないのかをまとめてみた。 Goでのオブジェクト指向 Goでは基的にオブジェクト指向プログラミングはできないと思ったほうが良い。できるのはstructを定義して関数を追加していくことだけである。 http://play.golang.org/p/7w9nbHDec1 package main import "fmt" type User struct { Id int Name string } // 文字列化する関数 func (u *User) String() string { return fmt.Sprintf("%d:%s", u.Id, u.Name) } func main() { var user *User = &User{1, "oin

    Goのstructとinterface - oinume journal
  • JWTについて簡単にまとめてみた - hiyosi's blog

    ここで説明するJWTは、最新のdraftの内容とは異なる場合がありますので、実装される際には最新のdraftや、対応するdraftを確認したほうがよいと思われますのでご注意下さい。 また、エントリではできるだけわかりやすく記載するために、詳細な仕様を省いている箇所もありますので、実装時などにはdraftを読む必要があります。 概要JWTとはJSON Web Tokenの略で、JSONを使ったコンパクトでurl-safeなクレームの表現方法であり、OAuth2やOpenID Connectなんかで使われます。 読み方は JWT の推奨される発音は, 英単語の “jot” と同じである. なんて書いてあります。 JWTの仕様は以下のURLから参照できます。(日語訳は若干古いと思われます。) http://tools.ietf.org/html/draft-ietf-oauth-json-w

    JWTについて簡単にまとめてみた - hiyosi's blog
  • Go言語(Golang) はまりどころと解決策

    Go の言語仕様はシンプルで他の言語に比べてはまりどころが少なくて学習コストが小さめな言語のように思います。しかし、それでもはまるところがないわけではないので、自分がはまって時間を無駄にしてしまったことを書き留めておきます。 念の為誤解のないように追記しておくと、この文書の目的は Go を批判することではなく GoGo であるがゆえに C++/Java/Python など利用者が Go を使い始めるときに困惑あるいは誤解するであろうポイントをまとめておくことで初めて Go を触る人がスムーズに Go を使い始められるようにすることです。私個人は Go はバランスがとれた良い言語でだと思いますし、気に入っています。 目次 interface と nil (Go の interface は単なる参照ではない) 文献 メソッド内でレシーバ(this, self)が nil でないことをチェ

  • Golangを触り始めた② 文法・型 - blue_field

    前回に引き続き、Web+DB vol.82のGo特集が分かりやすいのでそれ見ながら。 ぜんぶ網羅して書いてないけど、メモ。Goのバージョンは1.3.3です。 変数 var message string = "Hello world" 変数宣言は、varで始まり、変数名、型の順。ちょっと違和感。 関数内部で変数宣言と初期化を行う場合は、以下のように:=を利用しても書ける。こっちの書き方を使うことが多そう。変数の型は、代入する値から推論される。 /* import文は省略 */ func main() { message := "Hello world" fmt.Println(message) } 定数は、varじゃなくてconstで宣言。 if 条件部分に()は付けないが、処理部分は{}が必要。 func main() { a, b := 10, 1 if a > b { fmt.Prin

    Golangを触り始めた② 文法・型 - blue_field
  • golang で regexp パッケージを使うときに気をつけること - at kaneshin

    golang の Regexp は初期化の Compile コストがそこそこありますが、実は正規表現のパターンと対象となる文字列によって、初期化コストが無視できる(パターンと文字列に支配される)くらい遅くなります。よく言われる regexp の初期化コスト問題が無視できると言われても、正直、全く嬉しくないですね。 ただ、コーディング中に regexp パッケージを使わなければいけない場面は出てくるため、なるべくコストの掛からない実装を心がけています。 Compile/MustCompile 初期化コストはなくすため、グローバルに保持するようにします。 定義 var re = regexp.MustCompile("[a-z]{3}") func main() { fmt.Println(re.FindAllString("foobarbazqux", -1)) // => [foo bar

    golang で regexp パッケージを使うときに気をつけること - at kaneshin
  • Aho Corasick 法 - naoyaのはてなダイアリー

    適当な単語群を含む辞書があったとします。「京都の高倉二条に美味しいつけ麺のお店がある」*1という文章が入力として与えられたとき、この文章中に含まれる辞書中のキーワードを抽出したい、ということがあります。例えば辞書に「京都」「高倉二条」「つけ麺」「店」という単語が含まれていた場合には、これらの単語(と出現位置)が入力に対しての出力になります。 この類の処理は、任意の開始位置から部分一致する辞書中のキーワードをすべて取り出す処理、ということで「共通接頭辞検索 (Common Prefix Search)」などと呼ばれるそうです。形態素解析Wikipediaはてなキーワードのキーワードリンク処理などが代表的な応用例です。 Aho Corasick 法 任意のテキストから辞書に含まれるキーワードをすべて抽出するという処理の実現方法は色々とあります。Aho Corasick 法はその方法のひと

    Aho Corasick 法 - naoyaのはてなダイアリー
  • Rubyで言語処理100本ノック 00-04 - (wat-aro)

    www.cl.ecei.tohoku.ac.jp Rubyの練習のために始めました. 4章からは難しそうなので3章まで頑張りたい.でも飽きたらやめるかも. コードを書く基礎が足りない気がするのでもっと書かないと. 始めるにあって,とりあえずRuby 2.2.3のStringクラスは一通り目を通してきました. 全体的に末尾再帰でなんとかしようとしてます. Rubyは末尾再帰の最適化がないって聞いたんですがどうなんですかね? Rubyっぽい書き方がわからないので,Rubocop先生に出来るだけ怒られないように書いてます. 00 # 00 文字列を受け取り,末尾から順に表示する class String def my_reverse size = length result = '' while size > 0 size -= 1 result << self[size] end result

    Rubyで言語処理100本ノック 00-04 - (wat-aro)
  • Sinatraライクなgin-gonicで手軽にGolangを試す。 - 俺たちのブログ

    こんにちわ。5号です。Sinatraライクと書いておきながらあんまりSinatra触ったことが無いので全然違ったらすみません。 Golangを試す際にWebAppサーバ作ってみようとする時に軽量なフレームワークで試せるgin-gonicは良いと思います。 gin-gonic/gin · GitHub こちらのqiitaで導入方法は詳細に説明されているのと、 Go - Gin Web Frameworkを試してみたよ - Qiita READMEさえ見たら簡単なサーバはすぐ作れるのですが、せっかくなので今回はGETした時のURIパラメータをそのまま返すWebAppを作ってみます。 main.go package main import "github.com/gin-gonic/gin" func main() { router := gin.Default() router.GET("/:

    Sinatraライクなgin-gonicで手軽にGolangを試す。 - 俺たちのブログ
  • MeCabのGolangバインディングを書いてみた

    GolangからMeCabを呼び出すライブラリ探せばあるにはあるのですが、 なんだかどれもメモリ管理がちょっと怪しいんですよね・・・。 GolangでMeCabを使う。 yukihir0/mecab-go Go言語から mecab を使う - Qiita rerofumi/mecab Go で Mecab を使ってみた メモリ管理はbluele/mecab-golangが一番しっかりしているっぽいですが、 libmecabの一番高機能だけど面倒な使い方しか対応していなくて、ちょっとカジュアルに遊ぶにはつらい。 というわけで、カジュアルな用途から高度な使い方まで対応したWrapperを書いてみました。 shogo82148/go-mecab 使い方 READMEとgodocのexamplesからのコピペになってしまいますが、 簡単に使い方の紹介です。 インストール go getで取ってくるこ

  • Go言語のflagパッケージを使う - ryochack.blog

    Go言語でコマンドラインオプションを扱う - そこはかとなく書くよん。 に触発されたので、flagパッケージについて自分で使ってみてハマったところを書いておく。 コマンドラインオプションの略称を登録する flag.IntVar()などのXxxVar()を使う。 これで -boolでも-bでも同じ変数にフラグの結果が反映されるようになる。 $ go run flag_shorthand.go -bool -int 100 -string hoge bool flag = true int flag = 100 string flag = hoge $ go run flag_shorthand.go -b -i 100 -s hoge bool flag = true int flag = 100 string flag = hoge コマンドラインオプションを最後まで解析する flag.P

    Go言語のflagパッケージを使う - ryochack.blog
  • 1