Goに関するtokbのブックマーク (7)

  • ファイルシステムと、その上のGo言語の関数たち(2)

    Base()とDir()はSplit()を目的別に特化させたものです。 複数のパスからなる文字列を分解する filepath.SplitList()という名前の関数もあります。名前だけ見るとパスの分割に使えそうですが、これは別の用途の関数で、 環境変数の値などにある「複数のパスを1つのテキストにまとめたもの」を分解するのに使います。 たとえば、次のコードは、Unix系OSにあるwhichコマンドをGoで実装してみたものです。 PATH環境変数のパス一覧を取得してきて、それをfilepath.SplitList()で個々のパスに分割します。 その後、各パスの下に最初の引数で指定された実行ファイルがあるかどうかをチェックしています。 package main import ( "fmt" "os" "path/filepath" ) func main() { if len(os.Args)

    ファイルシステムと、その上のGo言語の関数たち(2)
    tokb
    tokb 2017/02/14
  • GoのためのGo

    Go言語はシンプルさを念頭にデザインされた言語です。仕様は単純明瞭さのために小さく収められていますが、そのため表現力に欠けているとか、コードが冗長になるという印象を持つ人も多いでしょう。有名なところでは、ジェネリクスや例外といった機能が(今のところ)存在しないことが問題にされることが多いようです。 一般に、ソフトウェアエンジニアリングというものは書かれる言語だけに依るものではありません。視点を拡げてGoを取りまくツール群を含めて見てみると、go fmt や goimports といったツールが広く使われていること、また go generate コマンドの存在などを見ても、Goという言語には、人間のプログラミングを機械によってさまざまな面から補助しようという態度があります。

    tokb
    tokb 2017/01/29
  • https://blogful.me/b/phileaton/go-meets-sml-part-1

    tokb
    tokb 2016/02/21
  • Channels Are Not Enough or Why Pipelining Is Not That Easy

    concurrency-in-go.md Channels Are Not Enough ... or Why Pipelining Is Not That Easy Golang Concurrency Patterns for brave and smart. By @kachayev Intro Go was designed for building concurrency applications easily so it has goroutines for running independent computations and channels to communicate with each other. We've all heard this story before. All examples and tutorials look just fine: we can

    Channels Are Not Enough or Why Pipelining Is Not That Easy
    tokb
    tokb 2014/09/18
  • ttyrecordからGIF作るのにスクリーンショットなんて必要なかったんや - すぎゃーんメモ

    先日 ターミナル操作の記録(ttyrec)からGIFアニメを生成するツールを作った - すぎゃーんメモ を書いたところ、思っていた以上に反響があって。 自分的にも結構便利だなーと思っていたのだけど、 ttygifとその系列、端末マニアではない人の95%くらいのユースケースでは端末に依存するシーケンスとか流さないだろうし、色とかが微妙に違ってもそこが主眼じゃないと思うので、単純に内部に端末を持ってダイレクトにGIFを吐ければ良くて、いちいちスクリーンショト取るの筋悪ではないの? 2014-07-24 21:45:33 via Twitter Web Client という意見をいただいて。うーん 確かに、と。 C版 で、はやくもそういうのを実現するものが作られました。すごい。 https://github.com/saitoha/seq2gif こんなカンジで使える。 エスケープシーケンスの処

    ttyrecordからGIF作るのにスクリーンショットなんて必要なかったんや - すぎゃーんメモ
  • Big Sky :: Windows のコマンドプロンプトを10倍便利にするコマンド「peco」

    Windows ユーザのごく一部には、コマンドプロンプトが無いと生きられない民族がいます。そしてその民族の一部には cygwin や msys bash 等といった、サードパーティなシェル(powershell?何それ聞こえなーい)を使いたがらない種族もいます。 私もその種族なのですが、今日はそういった世界中のWindowsエンジニアの中でも数パーセントしかいないであろう人達にとって便利なTipsを紹介したいと思います。(オマケでbash連携もあるよ) lestrrat/peco - GitHub https://github.com/lestrrat/peco 以前、私も同じようなツールとして gof というのを作りましたが、peco はこれをもっと簡素に、もっとカスタマイザブルにした物になります。 一見、UNIX でしか動作しなさそうに見えますが、gof ど同様に Windows でも

    Big Sky :: Windows のコマンドプロンプトを10倍便利にするコマンド「peco」
    tokb
    tokb 2014/08/01
  • pipeline and cancellation並行性パターンの勉強 - すぎゃーんメモ

    Go Concurrency Patterns: Pipelines and cancellation - The Go Blog を読んでいて、なかなか理解するまで苦しんだので復習がてら自分でもコードを書いて確かめてみた。 お題 複数の入力データそれぞれに対して重い処理を行い、結果として返ってくる値をまとめて取得する。 途中でエラーが発生したら直ちに処理を中止して終了する。 コード いちばん簡単な例 エラーを考慮しない場合。 package main import ( "fmt" "log" "math/rand" "time" ) func init() { log.SetFlags(log.Lmicroseconds) rand.Seed(time.Now().UnixNano()) } func doSomething(id int) string { wait := rand.I

    pipeline and cancellation並行性パターンの勉強 - すぎゃーんメモ
    tokb
    tokb 2014/08/01
  • 1