Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
はじめに 当たり前のことで、公式のチュートリアルには明記はしていないけれど同一フォルダに入れるやり方を取っている。 しかし・・・、pythonを使い続けていた身としてはなんかtestフォルダを作って分けないと分かりずらいのでは?と思い試してみたけど結局駄目だったというお話。 他のプロジェクトはどうだろう? 抜粋でgithubをスター数の多い順からいくつか見てみたけれども、 そもそもテストがない! というのも多く、でも大多数は同一フォルダに入っていました。testフォルダを作って分ける同志を探したけれども1~2件見つかった程度。 testフォルダを作るテストは作るのが面倒 下記コードのようにimportしなければならない。かつ、protest.Addのように関数を使用しなければならない。 でもそれらをやればtestフォルダ内にtestファイルを作ることがまず可能となる。
package main import ( "fmt" "github.com/kr/pty" ) func main() { // 仮想端末をオープン ptmx, tty, err := pty.Open() if err != nil { panic(err) } defer ptmx.Close() defer tty.Close() // 仮想端末に対して書き込み buf := make([]byte, 1024) ptmx.Write([]byte("Hello World!")) // 読み込んで表示 n, err := ptmx.Read(buf) fmt.Println(string(buf[:n])) if err != nil { panic(err) } }
はじめに GoのORMといえばGormが定番ですが、 SQLBoilerというORMを使ってみたので、そのレポートです。 https://github.com/volatiletech/sqlboiler 既に存在するDBで動作する。DBスキーマを定義するツールではない。 ActiveRecordのような高い生産性を実現する。 Go本来のStructの使い勝手を壊さない。 パフォーマンスが良い。 といった特徴があるようです。 パフォーマンスについてはREADME末尾にベンチマーク結果が載せてあり、他のORMと比較しても非常に優秀です。 https://github.com/volatiletech/sqlboiler#benchmarks この記事に掲載しているコードは、以下のリポジトリにあります。 https://github.com/uhey22e/sqlboiler-tutor 環境
概要 土曜の昼下がり、特に何をするでもなく、やる気が出なかったので、手元の日めくりカレンダーを毎日1回つぶやいてくれるTwitterBotでも作ろうかなと考えて、Goで作ってみました。ただ、そこらへんのbotサービスに登録するのではつまらないので、自分でロジックも考えてみようという意図です。あと、個人的に1時間に一回とか呟くbotは自分のタイムラインがうまってしまってノイズになるので、毎日1回ツイートするくらいのゆるゆるbotにしました。TwitterのAPIを処理してくれるGoのパッケージanacondaを使うとともに、tickerで時間の概念を導入してみました。 Twitter APIの取得 TwitterでTweetしたり、タイムラインを取得したりするためには、APIキーとアクセストークンが必要になります。Twitterアカウントを作ったら、APIを使うために次のリンクから登録しまし
Goenvの環境構築やら、Go自体の環境セットアップ等々あるけど、 いろいろつまづきながら進んだので、今後つまづかないためのメモ。 本当は、Goならわかるシステムプログラミングを読みたかっただけなんです。 本を買うお金がないのとIntelliJでGoが使えなくなったので代替案で作った 自分の環境 MacBook Pro Zsh(書いてある内容はzsh部分をbashに置き換えてもいけるはず) Brew GO 1.10.0(Goenvでいつでもバージョン変えられるようにしておく) Goenvのインストール まずはGoをMacにインストールする とはいえ、いつでもバージョンを変えられるようにしたいのでせっかくだからGoenvをインストールする インストールはBrewで。
といっても別にgccgoが悪い訳ではなさそう。 tl;dr Ubuntu18.04でのことですが、gccgoをaptを使ってインストールしたところEmacsのirony-modeの補完が機能しなくなり、flycheckのc/c++-clangが「標準ヘッダが見つからない」とエラーを吐くようになりました。書いていたのはC++のコードです。 理由としては gccgoが依存するgccgo-8、それが依存するgcc-8その他が、元々入っていたgcc(バージョン7)に加えてインストールされる clangのインクルードパスに存在しないgcc-8のものが候補として加わる。 clangがバージョン7向けのパスを見に行かなくなるので、irony-modeやflycheckがうまく機能しなくなる。 ということのようです。 検証 gccgoの依存関係 gccgo-8は次のようにgcc-8に依存します。 % ap
func calcAge(t time.Time) (int, error) { // 現在日時を数値のみでフォーマット (YYYYMMDD) dateFormatOnlyNumber := "20060102" // YYYYMMDD now := time.Now().Format(dateFormatOnlyNumber) birthday := t.Format(dateFormatOnlyNumber) // 日付文字列をそのまま数値化 nowInt, err := strconv.Atoi(now) if err != nil { return 0, err } birthdayInt, err := strconv.Atoi(birthday) if err != nil { return 0, err } // (今日の日付 - 誕生日) / 10000 = 年齢 age
はじめに Go言語向けクライアントライブラリRedigoの使い方を見ます。 Redigoでは、簡潔なコーディングのための様々なユーティリティ関数が提供されています。主なものの使い方を紹介します。 環境 OS: Windows 10 Redis: win-3.2.100 Go言語: 1.11 変数へ変換 サーバからの応答をGoの様々な型に変換する関数です。 整数型に変換するにはIntやInt64やUint64を用います。例えばRedisの文字列型で保存した数値をGETでとるときや、LLENなどの応答に使います。また、浮動小数点型に変換するにはFloat64、文字列型に変換するにはString、バイトスライスに変換するにはBytesを使います。 var n int _, _ = conn.Do("SET", "money", "1000") n, _ = redis.Int(conn.Do("
package main import ( "fmt" "github.com/kr/pty" ) func main() { // 仮想端末をオープン ptmx, tty, err := pty.Open() if err != nil { panic(err) } defer ptmx.Close() defer tty.Close() // 仮想端末に対して書き込み buf := make([]byte, 1024) ptmx.Write([]byte("Hello World!")) // 読み込んで表示 n, err := ptmx.Read(buf) fmt.Println(string(buf[:n])) if err != nil { panic(err) } }
package main import ( "fmt" "log" "net/http" "strconv" "github.com/julienschmidt/httprouter" ) func FizzBuzz(w http.ResponseWriter, r *http.Request, p httprouter.Params) { num, err := strconv.Atoi(p.ByName("num")) if err != nil || num < 1 { http.Error(w, fmt.Sprintf("%d Bad Request", http.StatusBadRequest), http.StatusBadRequest) return } var str string for i := 1; i <= num; i++ { if i%15 == 0 { s
gocloc . --include-lang=Go --by-file --not-match-d=_examples -------------------------------------------------------------------------------------- File files blank comment code -------------------------------------------------------------------------------------- mux.go 63 248 148 middleware/throttle_test.go 52 9 143 middleware/compress.go 29 45 138 middleware/strip_test.go 26 6 115 middleware/lo
読者対象 Goの基本的な文法を知っている リクエストがあると、関数が実行される仕組みを知りたい GoのWebApplicationFrameworkを使いこなしたい なぜやるのか? 普段、Webアプリケーションを作っているとリクエストがあると対応するパスに応じて関数を実行させる必要がありますが、 WAFを使っていると内部でどのような処理がされてそうなっているのか知らずに動かせてしまいます。 しかし、正しくWebアプリケーションフレームワークを使うこなすには、内部の実装についての理解が必要なので、この機会にnet/httpパッケージのDocumentを見ながら、リクエストがあると関数が実行されるまでの仕組みを調べました。特に、http.Handleとかhttp.HandleFuncとか似たような名前があって一見こんがらがりますが、Documentに簡潔に説明があったのでそこまで苦労することな
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く