You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
Golang でアニメーション GIF を作る手順を 3 通り紹介します。 フレームごとの画像から生成 ビデオから生成 Go 言語で最初から生成 フレームごとの画像から生成 こんな GIF 画像があったとします (ここ より拝借)。 変換結果はこんな感じ。 生成するためのコードはこんな感じ。 package main import "image" import "image/gif" import "os" func main() { files := []string{"g1.gif", "g2.gif","g3.gif", "g2.gif"} // 各フレームの画像を GIF で読み込んで outGif を構築する outGif := &gif.GIF{} for _, name := range files { f, _ := os.Open(name) inGif, _ := gi
コマンドラインツールを書くときに、プロンプトを出したくなることありますよね?ただ、ちゃんとプロンプトを出すのは案外難しかったりもします。例えば以下の様な要求があるわけです。 自動化の妨げになるからターミナルじゃない時はスキップして欲しい とにかく簡単にプロンプトを表示させたい パスワード入力では入力を隠したい 複数の選択肢から上手いこと選択させたい 単に(y/n)だけ入力させたい ということで書いたのがこちら。 https://github.com/Songmu/prompter 以下のように、それぞれの要求を簡単に解決できます。 var twitterID string = prompter.Prompt("Enter your twitter ID", "default") var passwd string = prompter.Password("Enter your passwo
ここでは、私がたどりついた最善のやり方を紹介しましょう。個人的に過去数年にわたって大量のGoコードと付き合ってきた経験から集めたものです。これらは全て非常にスケーラビリティがあると思っています。私が、スケールする、と言うときは次のような意味があります。 アプリケーションが求める環境は、アジャイル環境の中で変化していきます。開発の3、4か月後に、全てをリファクタリングする必要が出てくるなど、考えたくもないはずです。新しい機能は簡単に追加できなくては意味がありません。 あなたのアプリケーションは多くの人々によって開発されます。可読性が高く、維持しやすいものでなくてはなりません。 あなたのアプリケーションは大勢の人々に使われます。バグは容易に特定でき、修正できなくてはなりません。 長期的にみるとこれらのことが重要になる、ということを私は今までに学んできました。小さなことであっても、多数に影響しま
元ネタはこちらのブログ. 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://
« Protocol Buffers を利用した RPC、gRPC を golang から試してみた。 | Main | Vim 上のファイラを NERDTree から dirvish に乗り換えた。 » 先日、Google が開発しているリモートプロシージャコール、gRPC を golang から使うチュートリアルを書きましたが Big Sky :: Protocol Buffers を利用した RPC、gRPC を golang から試してみた。 http://mattn.kaoriya.net/software/lang/go/20150227144125.htm 今日は ruby と C++ から触ってみたいと思います。はじめに ruby の方ですが、Ruby 2.2.0 でビルドする事が出来ません。どうしても Ruby 2.2.0 から試したい人は、以下の PR にあるパッチを適
タイトルの通りです。Go は LL 的に使える、とはよく申しますが、そういう意識で使っていると REPL 的なことをしたいときに困りがちですよね。そこで作りました。gore。いい名前ですね。 motemen/gore · GitHub 以下のスクリーンキャストでだいたいの雰囲気をお察し下さい。 (スクリーンキャストは cho45/KeyCast を使って撮影しました) 特徴 gore の特徴は以下の通りです。 ラインエディタと履歴 複数行入力 パッケージのインポート、補完つき 式および文を実行可能 コード補完(nsf/gocode を利用) プリティプリント(k0kubun/pp か davecgh/go-spew がおすすめ) ドキュメントも引ける(godoc が必要) 以上のように、非常に便利なものになっております。むしろこの程度 REPL には当然あってほしい機能だとも言える。 イン
GoでJSONをパースするときに、あれこれ考えるのだけど きちんとやっていくと、どうしてもうまく実装できなくなって困っているという話。 先に書いておきますが、結論はないです。 JSONをパースするときの問題 そもそも、JSONを簡単に取り扱う必要がなぜあるのか、について。 標準では、JSONをパースする場合 json.Unmarshalを使ったりjson.NewDecoderを使ったりする。 例えば、User構造体に type User struct { Name string Age uint16 } func main() { var jsonStr = `{ "Name": "Ken", "Age": 24 }` var u User json.Unmarshal([]byte(jsonStr), &u) fmt.Println(u) // {Ken 24} } 上の場合、JSONの
今は企業内においてもバージョン管理でGitを使う所が増えています。個人個人がリポジトリを持つことでオフラインでも開発がスムーズに進められたり、多数の関連ツールの登場によって生産性が向上しています。 GitHubやBitBucketのようなGitリポジトリサービスもありますが、企業内部でリポジトリを持ちたいというケースも多いでしょう。そこで使ってみたいのがGogsです。 Gogsの使い方 GogsはGitHubを強く意識したUIになっていますので、既にGitHubを使っている方であればすぐに使えるようになると思います。社内や自社サーバにGitリポジトリサーバを立てたい時に選択肢の一つに考えてみてください。 GogsはGo製、BSD Licenseのオープンソース・ソフトウェアです。 Gogs: Go Git Service - A self-hosted Git service writte
CodeReviewComments から Go コードのレビュー時によくされるコメントについて。 gofmt gofmt またはそのスーパーセットである goimports を実行すること。goimports は gofmt に加えて import 行の修正も行う。 コメント文 http://golang.org/doc/effective_go.html#commentary を参照。宣言に対するコメントは少し冗長に見えるかもしれないけど完全な文にする。そうすれば godoc できれいに整形される。次のように説明するものの名前から始めピリオドで終える。 // A Request represents a request to run a command. type Request struct { ... // Encode writes the JSON encoding of re
golang で net/http とってきて JSON を parse して所定のキーを取り出すプログラムを書きたかった。 こういう場合、JSONPath とか使って書きたいのだが、JSONPath が完全にサポートされている go のライブラリは見当たらなくて、mattn_jp さんが JSONPath 書こうとして途中でやめた gist がひっかかってくる程度。あとなんか yasuyuky/jsonpath というのもあるのだが、これはいわゆる JSONPath ではない。 JSONPath なくてマジ不便ヤンケ、と思っていたが、mattn_jp さんが go-scan というライブラリを書いていた。 golangのjson、型を作るかmap[string]interface{}にしてキャストするしかなくて最初はgolang面倒臭いなって思ってたけど小規模なら後者で十分だしそれ以上の
高速にGo言語のCLIツールをつくるcli-initというツールをつくった tcnkms/cli-init・GitHub cli-initを使えば,Go言語コマンドラインツール作成時のお決まりパターンをテンプレートとして自動生成し,コア機能の記述に集中することができる. デモ 以下は簡単な動作例. 上のデモでは,addとlist,deleteというサブコマンドをもつtodoアプリケーションを生成している.生成結果は,tcnksm/sample-cli-initにある. 背景 Go言語で作られたコマンドラインツールを見ていると,codegangsta/cliというパッケージがよく使われている. これは,コマンドラインツールのインターフェースを定義するためのライブラリで,これを使えば,サブコマンドをもつコマンドラインツールを簡単につくることができる(Usageを自動で生成してくれたり,bash
Andrew Gerrand 18 June 2014 Today we are happy to announce the release of Go 1.3. This release comes six months after our last major release and provides better performance, improved tools, support for running Go in new environments, and more. All Go users should upgrade to Go 1.3. You can grab the release from our downloads page and find the full list of improvements and fixes in the release note
I’ve been looking for an excuse to try Martini ever since it was announced on the golang-nuts mailing list. Martini is a Go package for web server development that skyrocketed to close to 2000 stars on GitHub in just a few weeks (the first public commit is a month old). So I decided to build an example application that implements a (pragmatic) RESTful API, based on mostly-agreed-upon best practice
Rebuild A Podcast by Tatsuhiko Miyagawa. Talking about Tech, Software Development and Gadgets. 0:00 miyagawa: 今日で2回目だよね、これ出てもらうの。 lestrrat: 2回目ですね。 miyagawa: lestrrat さんこと、牧さんです。 lestrrat: 牧です。よろしくお願いします。 miyagawa: 牧さんといえば、前出てもらったときも Perl の関係の YAPC とかでお馴染みだと思うんですけど。最近、GitHub とか Twitter とかの活動状況見てると、別のことをずっとやっていそうな雰囲気がすごいあってですね。それは何かというと、Go、Golang ですね。で、結構その辺の話を他のゲスト、例えば typester さんのときとかにちょこっと話したりした
// アクセストークン取得時の型 type AccessTokenMessage struct { TokenType string `json:"token_type"` AccessToken string `json:"access_token"` ExpiresIn string `json:"expires_in"` Scope string `json:"scope"` } // アクセストークン取得時のキャッシュ型 type AccessTokenMessageCache struct { accessTokenMessage AccessTokenMessage updateTime time.Time } func (self *AccessTokenMessageCache) loadNewAccessTokenMessage() { resp, err := http
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く