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
TIG DXユニットでアルバイトをしている齋藤です。 以前、当ブログで連載が行われたFlutterですが、先日業務のためにFlutterの環境構築をしようとしたところ、いくつかの障壁がありました。 当記事ではProxyがある環境下でMac上にFlutterの環境構築について、ダウンロードから仮想デバイス上での公式デモアプリ(Android)実行まで紹介いたします。iOSアプリに関しては今回は説明いたしません。 環境 マシン: MacBook Pro (2020, Intel CPU) ネットワーク: 社外への通信はHTTP Proxyの経由が必要 ※ Apple Siliconを搭載したMacでは、Developing with Flutter on Apple Silicon を参考にする必要があるようです。 Flutterのインストール、flutter doctor基本的にはFlutt
Takuya UedaSouzoh, Inc. (affiliated by Mercari, Inc.) - Go Engineer
go test のキャッシュを消すのは簡単$ go clean -testcache 以上です! $ go test ./... ok github.com/oxequa/realize (cached) ok github.com/oxequa/realize/realize (cached) このように (cached) となっていたものが、、、 $ go clean -testcache $ go test ./... ok github.com/oxequa/realize 0.086s ok github.com/oxequa/realize/realize 0.389s このように、実行時間が表示されており、キャッシュが消えていることが分かりますね。 ちなみに、キャッシュを無視する方法はもうひとつあり、 以下のように -count=1 をつけてやればOKです。 $ go tes
私は行くことを学んでいます。文字列を演奏すると、文字列が一重引用符で囲まれている場合、golangはエラーを出していますが、二重引用符は正常に動作しています。 func main() { var a string a = 'hello' //will give error a = "hello" //will not give error } これは私のシステムで得られるエラーです: illegal rune literal 私が遊び場で同じことをしようとすると、私はこのエラーが発生しています: prog.go:9: missing ' prog.go:9: syntax error: unexpected name, expecting semicolon or newline or } prog.go:9: newline in string prog.go:9: empty char
はじめに go1.11から導入されたmodulesを使うにあたって、あまりよく分かっていなかったので ちょっと過去からmodulesに至るまでの問題や詳細な動きなどを調べてみました。 その時の備忘録を残しておきます。 理解するだけなので、情報が無い部分については自分で調べて、すでに調査済みの箇所は 多くの先人たちの記事を参考にさせていただきました。ありがとうございます。 ライブラリのインストール Go get go get https://github.com/...で$GOPATH/src配下にライブラリをダウンロードする事で、 importで指定してライブラリを使用する事が出来ます。 srcやpkg、binの詳細は以下を参照 プログラムの全体構成 bin/ mathapp pkg/ プラットフォーム名/ 例:darwin_amd64、linux_amd64 mymath.a githu
gistfile1.md このgistは Cloud Foundry Advent Calendar 2013 の16日目の記事です。 はじめに 現在、CloudFoundryのComponentsはGo化しつつあります。それにより、Rubyで実装されていたものに対して性能向上していたり、ソースが読みやすくなっていたりする(こちらは主観ですが・・)半面、開発者にとっての課題も生まれています。その課題のひとつが__依存パッケージ管理__です。まずはRubyの外部パッケージ管理について簡単に振り返りつつ、Goのそれを見ていこうと思います。 依存パッケージ管理(Ruby) Rubyでは外部パッケージはGemファイルとなっており、大抵の場合、Bundlerで管理します。また、最新版が動くとは限らないため設定ファイルにバージョンを指定してそれを使用します。Gemファイル自体はRubyGems.org
問題 deferを使って後処理をしたい場合に、プロセスがCtrl+cなどSIGINTで中断されるとdeferしたものが発火しない。プロセス自体が中断されるのであたりまえなんだけども。 問題の再現 package main import ( "fmt" "time" ) func main() { defer teardown() hoge() fmt.Println("終了") } func hoge() { for i := 0; i < 5; i++ { fmt.Println(i) time.Sleep(1 * time.Second) } } func teardown() { fmt.Println("データのあとかたづけ") } 上記の実行 % go run main.go 0 1 2 3 4 終了 データのあとかたづけ % SIGINTの場合 % go run main.go
Perlだとcallerで呼び出し元のモジュール名やメソッド名が取得できるが、Goでもできるのか? と思って調べてみた。 コード package main import ( "log" "runtime" ) type Hoge struct { name string } func (h *Hoge) Print() { Log(h.name) } func Log(data string) { pc, file, line, _ := runtime.Caller(1) f := runtime.FuncForPC(pc) log.Printf("\ncall:%s\ndata:%s\nfile:%s:%d\n", f.Name(), data, file, line) } func main() { h := &Hoge{ name: "hoge hoge", } h.Print()
logfile, err := os.OpenFile("./test.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0666) if err != nil { panic("cannnot open test.log:" + err.Error()) } defer logfile.Close() // io.MultiWriteで、 // 標準出力とファイルの両方を束ねて、 // logの出力先に設定する log.SetOutput(io.MultiWriter(logfile, os.Stdout)) log.SetFlags(log.Ldate | log.Ltime) log.Println("Log!!") Register as a new user and use Qiita more conveniently You get art
Goというプログラミング言語の強みの1つは、 Tony Hoare考案のCSP に基づくビルトインの並行性(Concurrency)です。Goは並行性を念頭にデザインされているため、複雑に並行したパイプラインの構築を可能にしています。でも、それぞれの並行性パターンがどのように見えるものなのか気になったことはありませんか。 もちろん、気になったことはあると思います。恐らくそれぞれ形は違っても、誰もが頭に描いているのではないでしょうか。もし、「1から100までの数字」について聞かれたら、無意識に頭の中で数字のイメージを思い浮かべると思います。例えば、私の場合、自分の前から1から20までがまっすぐに並び、21以降は90度右に曲がり1000以降まで続くイメージが浮かびます。これは多分私が幼稚園の時に教室の壁に沿って数字が貼られていて、ちょうど角に数字の20があったからなのだと思います。別の例えをす
正月で時間があったので、以前から触ってみたかったgRPCをGo言語から使い、キー・バリュー・ストアのようなものを作ってみた。 KVSといっても、GoのmapへのGet/Put/Delete/ScanをgRPC経由で叩けるようにしただけのもの。それだけだとあまり面白く無いので、gRPCらしく、Watch機能をつけてmapへの更新を監視できるようにした。 github.com 個人的には、HTTP/1.1 + JSON APIと比べた時のgRPC(HTTP/2 + ProtoBuf)のメリットや違いが気になっていたので、そのあたりを気をつけながら書いた。 開発の手順 サービス定義 まずはProtocol Buffers 3でKVSのサービスを定義する。サンプルを見ながら適当に書いた。 grpc-kvs/grpc-kvs.proto at master · matope/grpc-kvs · G
5年前に買った『Java並行処理プログラミング ―その「基盤」と「最新API」を究める―』をようやく読んだ。買った頃には Perl やシンプルな JavaScript ばかり書いていたので並行プログラミングなんてほとんど気にすることがなく、実感がなくて読むのも途中で止まってしまっていた本で、家を掃除しているときに見つけたもの。その後も趣味で Android アプリを書くなど Java に触れる機会はあったけれど、せいぜいが AsyncTask を使うくらいで、マルチスレッドを強く意識してコードを書くこともなかった。 Java並行処理プログラミング ―その「基盤」と「最新API」を究める― 作者: Brian Goetz,Joshua Bloch,Doug Lea出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/11/22メディア: 単行本購入: 30人 クリック: 442回
8月に正式リリースされる Go 1.13 の主な機能 Go 1.13 のベータ版が登場したようだ。 リリースノートも併せて公開されている。 Go 1.13 Beta 1 is released - Google Group Go 1.13 Release Notes - The Go Programming Language Go 1.13 では数値のリテラル表現(2進数表現や浮動小数点数の16進数表現)など色々と重要な機能追加があるが,主なものは以下の通り。 errors パッケージへの機能追加 以前に紹介した golang.org/x/xerrors の機能が正式に errors パッケージに組み込まれるようだ。 階層化 Error パッケージ “xerrors” を試してみる golang.org/x/xerrors の機能をほぼ踏襲しているみたいなので,既に golang.org/
golang と言えば非同期に特化した言語ですが、慣れない内は簡単な非同期しか使えません。しかし sync パッケージを知る事でもっとカジュアルに、かつ確実な非同期処理を行う事が出来る様になります。 今日はそんな sync パッケージについて説明してみたいと思います。 sync.Mutex ご存じ sync.Mutex です。皆さんが一番使う排他制御だと思います。 package main import ( "fmt" "runtime" "sync" "time" ) func parallel(wg *sync.WaitGroup) { fmt.Println("博") time.Sleep(100 * time.Millisecond) fmt.Println("多") time.Sleep(100 * time.Millisecond) fmt.Println("の") time.
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く