タグ

golangに関するakiramazのブックマーク (45)

  • Go初心者が気を付けること

    Go初心者がやってしまいがちなやらない方がいいことを書き出してみました。 情報検索や環境構築 golang.jpを見に行ってしまう Golang(ごーらんぐ)と呼んでしまう(by hogedigo) depが最新推奨のパッケージマネージャだと勘違いする(Go標準の「go mod」を使おう) 「GO???」環境変数を理解せずに設定しまくる(わからない場合は一切設定しないのが正しい) しょっぱなからgvm,gobrew,goenvなどのマルチバージョンのマネージャを入れようとしてエディタ連携環境構築に失敗する (複数バージョンのGoの運用は既に標準のGoだけでできるようになっている) エディタにgoimportsやgolintを設定し忘れる OSのパッケージマネージャまかせで古いGoやgccgoをインストールしてしまう エラーハンドリング周り err変数名のバリエーションを増やしすぎる(ほとん

  • Go言語で扱えるデータフレーム厳選4つ - Qiita

    はじめに データサイエンティストでなかったとしても、数値データを使って様々な解析をする際には CSV ファイル等ファイルを読み込み、数値の配列としてメモリに保持して、それらをループ等で利用して解析を行っておられると思います。 その際、配列は1次元目に行、2次元目に列、を格納するのが一般的です。多くのケースではこの方法で事足りるのですが、解析を行ううちに「列としてデータの固まりを扱いたい」「ラベル付けされた列を扱いたい」と感じる事が出てくると思います。 これを簡単にしてくれるのが「データフレーム」です。 データフレーム4種 記事では Go 言語から扱えるデータフレームを4つご紹介します。 QFrame https://github.com/tobgu/qframe QFrame は、フィルタリング、集計、およびデータ操作をサポートするイミュータブルなデータフレームです。 QFrame での

    Go言語で扱えるデータフレーム厳選4つ - Qiita
  • GoでWebアプリを作ろう 第一回 : Goで簡単なCRUD - Studio Andy

    こんにちは、Andyです。 普段はフロントエンドチームでJSばかり書いているのですが、せっかくGoの会社に入ったので良い機会だと思いGoに入門してみました。「Goの作法」を知ればより裏側のシステムについての理解が深まり、フロント側も良いプロダクトが作れるんじゃないかなと期待しています。 せっかく新しい言語を学ぶので、学習の中でやった事や詰まった事を文字で残そうというのが記事の目的。 とてもじゃないですが1回で全てをカバーできないので数回に分けてチャレンジします。 手探りで自分なりのベストプラクティスを模索している最中なのでマサカリ大歓迎です。 現在のスタック 学習を始めるにあたって、自分のエンジニアとしてのスタックはこんな感じ。 Ruby on Rails, ES6 (業務レベル) PHP, Perl, Python (趣味レベル) ちなみにgolangの経験値はA Tour of Go

    GoでWebアプリを作ろう 第一回 : Goで簡単なCRUD - Studio Andy
  • Golangの defer をRubyでも使いたい - たごもりすメモ

    前にRubyでtry-with-resourcesが使いたいという話を書いてそのときにリリースしたgemもあるが、人類の安全に・便利にリソースを解放したいという欲求には際限がない。 try-with-resources は便利なんだけど欠点がないわけではなくて、リソースの確保と解放を一ヶ所でまとめてやらないとネストが深くなる。複数箇所に分けて書くならネストも2段になってしまう。 これはこれで整理されたコードを書く圧力になるので悪くない面もあるんだけど、とはいえもうちょっと自由にやりたい、いい方法は無いもんか、という話。 defer ある。Golangの defer が便利そう。defer foobar って書いとくと、そのスコープを外れるときに自動的に foobar の内容が実行される。あるスコープのどこに何度書いてもいい。これは便利。 # GolangのdeferのままRubyにもってき

    Golangの defer をRubyでも使いたい - たごもりすメモ
  • go-promptを使ったリッチなコマンドラインツールの作り方 - Qiita

    先週go-promptというGoの端末制御ライブラリを公開しました。 c-bata/go-prompt: A library for building powerful interactive prompts inspired by python-prompt-toolkit, making it easier to build cross-platform command line tools using Go. https://github.com/c-bata/go-prompt このライブラリを使うと kube-prompt のような強力な補完を持つツールが簡単に開発できます。 この記事ではgo-promptの使い方について解説していきます Getting Started それではさっそくgo-promptを使ってリッチなコマンドラインツールを作ってみましょう。 Download

    go-promptを使ったリッチなコマンドラインツールの作り方 - Qiita
    akiramaz
    akiramaz 2017/08/24
    かっこよい
  • A Tour of Goを終えたあなたにおすすめのGoを勉強するためのリソース - すずけんメモ

    今年も夏のインターンで学生にGoの講義をします。多く寄せられる質問が「A Tour of Goを終えたのですが、その後に何をやるのがおすすめですか?」というものです。学生に限らず、言語を学ぶ方はプログラミングそのものに対する慣れやバックグラウンドも違います。そこでなるべくいろんな方の参考になるように、おすすめななりページなり方法なりをまとめてみます。 わりと多くの人におすすめ 「プログラミング言語Go」(Alan A.A. Donovan, Brian W. Kernighan著)です。通称GOPL。 http://www.gopl.io/ 柴田さんによる日語翻訳もあります。 https://www.amazon.co.jp/dp/4621300253 Go言語のイントロダクションから始まり、型・インタフェース・並列性の説明などが丁寧にかかれています。私がGOPLを良いと思う点は、例示

    A Tour of Goを終えたあなたにおすすめのGoを勉強するためのリソース - すずけんメモ
  • Go言語でお手軽スクレイピング | LINKBAL Blog

    準備 今回は下記のパッケージを利用させていただいております。 https://github.com/PuerkitoBio/goquery パッケージインストール [code lang=text] go get github.com/PuerkitoBio/goquery [/code] ソースコード 実行結果 さいごに 非常に簡単にスクレイピングを行うことができました。 Go言語は並列処理が強みの一つなので、並列でスクレイピングすることにより、 時間を短縮することができますね。(用法用量は守って正しく…) 弊社ではエンジニアを大募集しております。 ご興味ある方はこちらからお問い合わせください。 http://linkbal.co.jp/recruit/ ※ 著作権注記 The Go gopher was designed by Renee French. (http://reneefre

    Go言語でお手軽スクレイピング | LINKBAL Blog
  • Log in to Your Account · GitBook (Legacy)

    akiramaz
    akiramaz 2017/02/05
    goでのネットワークプログラミングのチュートリアル
  • GoのためのGo

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

  • Big Sky :: golang オフィシャル謹製のパッケージ依存解決ツール「dep」

    « Re: Go でシングルバイナリな Web アプリを開発しているときに webpack --watch をうまいところやる | Main | Ruby の a = a + 1 はなぜ undefined method '+' for nil:NilClass なのか » golang にはパッケージマネージャが無数にあります。 PackageManagementTools · golang/go Wiki · GitHub Home Articles Blogs Books BoundingResourceUse cgo ChromeOS CodeReview CodeReviewComments CodeTools C... https://github.com/golang/go/wiki/PackageManagementTools 僕もその一つの gom というのを開発している

    Big Sky :: golang オフィシャル謹製のパッケージ依存解決ツール「dep」
  • Golangでエラー時にスタックトレースを表示する - Qiita

    Golangerrorにはスタックトレース情報はない.基は必要ないと思うし困ったこともない.一方で新しくプロジェクトに入りかつコードベースに慣れてない場合はどこが問題かアタリをつけるためにあっても良いとも思う.pkg/errorsを使ってるならそれはすぐに実現できる. pkg/errorsの基的な考え方についてなどは GoCon 2016 springの後に "Golangのエラー処理とpkg/error"にまとめた(作者のDaveのブログ記事は "Don’t just check errors, handle them gracefully").ここで強調して書いたのはちゃんとエラーをアノテートする(何をしてそのエラーが発生したかの状況を付加する)ことである.特に外部のパッケージとやり取りする場合,つまりまともなエラーメッセージが返ってこないかもしれない場合,pkg/errorsの

    Golangでエラー時にスタックトレースを表示する - Qiita
  • イラストを Git で管理したかったのでツールをつくった - blog.syfm

    イラストの管理 自分はたまにイラストを描いたりするのですが、以前からその管理方法に苦労していました。 苦労していた点は主に次の 2 点です。 バックアップ 制作過程 Gif をつくるのが面倒くさい 強い人は、短時間でもさらっとイラストを描いてしまいますが、自分は時間をものすごく掛けないとまともなものが描けないので、バックアップは結構頻繁に取ります。 手動でバックアップしようとした場合は、ふつうにファイルを複製する感じになると思います。 ただ、普段からコードを書いていて VCS を利用している身だと、どうしても原始時代かと錯覚してしまいます。 さらに、PhotoShop の psd 形式や CLIP STUDIO PAINT の標準である clip 形式はいろんなデータが詰め込んであるので 1 ファイル当たり平気で 50 MB くらい持って行かれます。これも結構厳しいところです。 VCS を

  • Zebra開発者の石黒氏、Go言語で全面的に書き換えた「Zebra 2.0」を開発中

    2016年10月21日に開催されたネットワーク関連のイベント「ONIC Japan 2016」で、HASH-SET 代表取締役の石黒邦宏氏(写真1)は新しいルーティングソフトウエア「Zebra 2.0」を開発中であることを明らかにした。同氏が開発した「GNU Zebra」およびその派生ソフトウエアである「Quagga」は、オープンソースのルーティングソフトウエアとして広く使われている。Zebra 2.0は、米グーグルが開発したプログラミング言語「Go」を採用し、マルチスレッドに対応したのが特徴。2017年には公開したいとする。 同氏がZebraの開発を始めたのは1996年。当時のネットワークソフトウエアはモノリシックな(=一体型の)構造を持つものが多かった。それに対し、Zebraはマルチプロセスで、各プロトコルを処理するモジュールを独立したプロセスとして実装するという、当時としては先進的な

    Zebra開発者の石黒氏、Go言語で全面的に書き換えた「Zebra 2.0」を開発中
  • Golang Goの並列処理を学ぶ(goroutine, channel) - Qiita

    Goのコンカレンシー、略して合コンを勉強したわけですが。 Tour of Goの例とかはさっぱり良くわからないので "Goルーチンで並行化する方法: 6秒かかる処理を3秒にしよう" を参考にして遊んでみました。コードもこの記事からとったものです。大変わかりやすい例で、並行処理の素晴らしさがよく分かる記事でした。 package main import ( "fmt" "time" ) func threeSecond() { time.Sleep(3000 * time.Millisecond) fmt.Println("3 seconds passed") } func oneSecond() { time.Sleep(1000 * time.Millisecond) fmt.Println("1 second passed") } func twoSecond() { time.Sle

    Golang Goの並列処理を学ぶ(goroutine, channel) - Qiita
  • Golang でのウェブ開発を考えてみる - Qiita

    Help us understand the problem. What is going on with this article? 仕事Golang を使ってウェブアプリを作ることになりそうなので、どんな構成がいいのか考えてみる。あくまで前提ありきの選択なので、何でもかんでも適用できるわけではない。 JS や静的ファイル部分は今のところ考慮していない。単によく知らないので。 突っ込み大歓迎です。これいいよ!とか教えてください 前提 多機能なフレームワークよりシンプルなフレームワークに色々組み合わせる方法をとりたい。 開発者は数名程度。Golang に精通している開発者が 1 名いる。残りはこれから。 開発者は Django での開発経験が豊富な人が多い 全員ウェブ開発経験はそれなりに積んでいる。 HTML と JSON 両方のパターンが存在するのでテンプレートエンジンは重要。 JS

    Golang でのウェブ開発を考えてみる - Qiita
  • Goでxxxのポインタを取っているプログラムはだいたい全部間違っている - Qiita

    Goで、文字列、インターフェイス、チャネル、マップ、スライスのポインタを取っているプログラムは、書いた人がきちんと自分がなにをしているのか理解しているのでなければ、ほぼ確実に間違っているといっていい。 Goではある種の型の値はそもそもポインタのようなものである。上記の型はどれも任意の大きさになり得るが、大きくなりうる実体のデータはヒープに確保されていて、値そのものが持っているのはそのヒープ上への値へのただのポインタ+多少の付随的なデータにすぎない。こういった値を値渡しではなくポインタ渡しする必要はない。ポインタのデリファレンスのほうがポインタのコピーより高くつくし、余計な混乱を引き起こすだけだからだ。もしこういう値をポインタ渡ししているとしたら、そのコードはなにか深い意味があるのではなく、それを書いた人が大きな値がコピーされると勘違いしていて書いた可能性のほうがずっと高い。 文字列は2ワ

    Goでxxxのポインタを取っているプログラムはだいたい全部間違っている - Qiita
  • https://qiita.com/utamaro/items/dc41e0dddaa99c49ed3f

    akiramaz
    akiramaz 2016/10/02
    ][GUI]
  • 最近、httpstat なるものが流行っているらしい - tellme.tokyo

    github.com おそらく先行実装は python で書かれたこれです。 curl にはウェブサイトの応答時間を計測する機能が搭載されており、このツールではそれを利用して出力結果をグラフィカルに表示させています。単なる curl のラッパーのようなツールなのですが、見た目がリッチになるのに加えて、単一ファイルで実行でき python のバージョンに影響されないような工夫がされているのが、受けているポイントのような気がします。 このツールを見たとき「Go で書いてみるの良さそう!(この手のツールで単一バイナリになるのは嬉しいですよね)」と思い、休憩時間やお昼休みなどにちまちま書いていたら、二日前に先を越されてしまいました(そりゃそうですよね。なんでもスピードが大事だと痛感)。 github.com また、ついこの間まで 800 Stars くらいだったのですが、ここ1週間で爆発的に伸びて

    最近、httpstat なるものが流行っているらしい - tellme.tokyo
  • Go 言語で wc を実装してみた - takatoshiono's blog

    Go 言語で wc を実装してみた GitHub - takatoshiono/go-wc: Go implementation of wc command for practice なぜか A Tour of Go をやり終えた時「全然うまく書けない」というのが感想だった。もっと Go 言語のコードを読み書きする必要がある。 そして読むだけだとやる気が続かないから何か書きたい。何を作ろうか? Go 言語なのでスタンドアローンで起動するバイナリ実行形式のファイルがよさそう。仕様が簡単で手頃なやつがいいな...と考えて wc にしたのだった。他にも以下が候補にあった。 ab smtp server beer コマンド(なんかうまそうなビールを表示する) wc コマンド find コマンド (コマンド系で攻めるなら GNU coreutils, findutils などを見るとよさそうか...

    Go 言語で wc を実装してみた - takatoshiono's blog
  • ISUCON6予選で敗退しましたがAzureに詳しくなれました - このブログはURLが変更になりました

    AppArmor Goとして @netmarkjp, @ishikawa84g, @matsuu で参戦しましたが残念ながら去年に続き予選敗退(推定)となりました。最終スコアは24000ぐらいです。 序盤 デプロイが終わって何も変更していない状態(デフォルトのperl実装)でベンチマーク回す →スコア0 Go言語に切り替えてベンチマーク回す →スコア0 MySQLに適切なインデックス追加、htmlifyの正規表現生成を切り出してentryの追加/削除があるまで正規表現をキャッシュして使いまわす →スコア0 えーこれでもダメかーと思いつつ昼で気分転換。 中盤 昼で思いつきました。 初期状態でentryごとにマッチするキーワードを予め抽出してキャッシュし、entryの追加/削除があるごとにentryごとのキーワードキャッシュをいい感じに調整することで正規表現生成のコストを下げようとする →

    ISUCON6予選で敗退しましたがAzureに詳しくなれました - このブログはURLが変更になりました