タグ

golangに関するy-kobayashiのブックマーク (48)

  • GoでシュッとWebスクレイピングする

    https://www.youtube.com/watch?v=krnaOxKRhoQ&feature=youtu.be Machine learning system in Python. https://github.com/mercari/ml-system-design-pattern

    GoでシュッとWebスクレイピングする
  • Big Sky :: 書評「Go言語による並行処理」

    O'Reilly Japan, Inc. 様に献頂きました。ありがとうございます。 そして献頂く際にお声を掛けて頂いた、書の翻訳を担当された ymotongpoo さんにもお礼を申し上げます。ありがとうございます。 書の訳は非常に素晴らしく、とても原文が英文であったとは思えないほど綺麗で、読んでいく中で「原文でどの様に表現されているんだろう」といった引っかかりも無く、とてもスムーズに読み進められました。 Go 言語に関わって随分と長くなってきました。初めて Go を知ってからユーザがどんどん増える様を見る事が出来るのは正直に言って非常に嬉しいです。 ふと Go の魅力は何かと聞かれたら幾つか挙げる事が出来ますが、間違いなく選ぶのが「非同期処理の簡単さ」です。これまで多くの開発者が OS スレッドで実現してきた非同期処理を、Go 言語は少ないイディオムとインテリジェントなランタイムを

    Big Sky :: 書評「Go言語による並行処理」
  • Go言語のGCについて - LINE ENGINEERING

    なぜGo言語はコンパクションを採用していないのか GoogleのRick Hudson氏によるISMM 2018 Keynote “Getting To Go”を参照すると、以下のことがわかります。 2014年の時点では”Read barrier free concurrent copying GC”を計画していた しかし期間的な制約から断念し、CMSに舵を切った(この時期に彼らは、ランタイムをCからGoに書き換える作業も行う必要がありました。Changes to the runtime) TCMallocをベースとしたメモリアロケーターを採用することで、断片化およびアロケーションの速度の問題を解決した Go言語のメモリアロケーションについては、ランタイムのコードのコメントにも詳しく記載されています。 malloc.go This was originally based on tcmal

    Go言語のGCについて - LINE ENGINEERING
  • TechCrunch

    [A version of this piece first appeared in TechCrunch’s robotics newsletter, Actuator. Subscribe here.] Earlier this month, Google’s DeepMind team debuted Open X-Embodiment, a database of robotic

    TechCrunch
  • なぜ私達は Python から Go に移行したのか - Frasco

    新しい言語に移行するのは常に大きな決断です。その言語をよく知る人がチームメンバーに1人しかいない時などは特にそうです。今年の初め、我々は Stream の主要言語を Python から Go に切り替えました。この記事では、なぜ私達が Python から Go に移行しようと決断したのか、その理由を説明します。 Go を使う理由 理由1 - パフォーマンス Go は速いです! Go は極端に速い。そのパフォーマンスは Java もしくは C++ に匹敵します。私達のユースケースでは、GoPython より30倍速いです。GoJava を比較したベンチマークはこちらです。 理由2 - 言語パフォーマンスの問題 多くのアプリケーションにとって、プログラミング言語は、単にアプリとデータベースを繋ぐものにすぎません。言語そのもののパフォーマンスは通常あまり重要ではありません。 しかしな

    なぜ私達は Python から Go に移行したのか - Frasco
  • Go言語のリアルタイムGC 理論と実践 | POSTD

    (編注:誤訳、意味の分かりづらい訳を修正しました。リクエストありがとうございました。) 毎日、Pusherは数十億のメッセージをリアルタイム、つまり送り元から宛先まで100ms未満で送信しています。どのようにしてそれを可能にしているのでしょうか。重要となる要因はGoの低レイテンシのガベージコレクタです。 ガベージコレクタはプログラムを一時停止させるものであり、リアルタイムシステムの悩みの種です。そのため、新しいメッセージバスを設計する際には慎重に言語を選びました。Goは 低レイテンシを強調している ものの、私たちは懐疑的でした。「当にGoを使えば実現できるのか? もしできるならどうやって?」 このブログ記事ではGoのガベージコレクタを、どのように機能し(トリコロールアルゴリズム)、なぜ機能し(こんなに短いGCによる一時停止時間の実現)、そして何よりも、それが機能するのかどうか(GCによる

    Go言語のリアルタイムGC 理論と実践 | POSTD
  • Go が他の多くの言語での非同期プログラミングよりも優れている理由 - Qiita

    はじめに 非同期プログラミングと呼んでいるのは、ノンブロッキングIOと select, poll, epoll, kqueue のようなIO多重化を利用したネットワークアプリケーションを書くことです。 node.js で websocket 使ったチャットを書くとかそういうのです。 「他の多くの言語」とは、 Python (asyncio), node.js, C# などを想定しています。 Erlang や GHC なんかは Go に近いかも知れません。 async / await がない言語では、「コールバック地獄」や「deferred地獄」のような問題もありますがこの記事では扱っていません。 async / await のメリットを解説した他の記事を参照してください。 あとこの記事は主にランタイムに関する部分を扱っているので、「それは言語じゃなくて処理系の問題だ!」等の頓珍漢な揚げ足取

    Go が他の多くの言語での非同期プログラミングよりも優れている理由 - Qiita
  • Goについて思うこと 2016

    あんまりこういう内容のポエム的なものは広まってほしくないなあ・・と思うのでこっちにひっそり書くことにする。 今年は僕にとってはGoの存在がとても大きい年だった。 5年前、僕が書くのはWebアプリケーションが中心で、PHPをメインで触っていた。それが気がつけばエンジニアリングのレイヤが広がったなあという所感があって、ここ最近Goがそれを加速してくれた。第二の言語としてのGoはとても良くできていて、小回りが聴くし、ミドルウェアをちょろっと書くにも心地よい。やっぱり最近の言語ならではの良さがある。たとえば、 * テストが標準ライブラリに組み込まれている * net/httpがとても良くできている。フレームワークを必要としない場面も多い。 * concurrencyを堅牢に扱える(うまい言葉が見当たらない) * そしてそれなりに速い というのがあげられる。特にgo toolの充実はすごい。Race

  • GoでWebアプリケーション作る練習をした - はこべにっき ♨

    GoでWebアプリケーションを書いてみる練習として RequestBin ぽいものを試しに作ってみた。gomibakoという名前であまりひねりはない。以下のURLで試せます。 https://gomibako.douzemille.net/ ソースコードもGitHubに公開してある。 github.com 何ができるか HTTPリクエストを受け付ける用のURLを作ることができて、そのURLに対するHTTPリクエストのログをWeb上で確認することができる。ちょっとしたWebHookの動きのチェックとかリバースプロキシの設定確認とかに使えて便利。 具体的には以下の様にして使える https://gomibako.douzemille.net/ にアクセスして "New Gomibako" ボタンを押す https://gomibako.douzemille.net/g/deadbeaf123/

    GoでWebアプリケーション作る練習をした - はこべにっき ♨
  • 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
  • HDE Advent Calendar Day 2: GoでOAuth2/OpenIDとJOSE (JWA/JWT/JWK/JWS/JWE) - HDE Advent Calendar 2015

    (English version available here) HDE Advent Calendar二日目です。子育ての話の続きでも書こうかと思ったのですがうちの子供がどれだけ可愛いかを話してもう会社と関係ないところに行ってしまいそうでしたので止めました。 blog.hde.co.jp では何を書こうか… 今年はあちこちのカンファレンスに顔を出したり、YAPC::Asia Tokyo 2015の主催をしたりもしたのですが、それももうあちこちに書いてしまっていました。 というわけで裏方の技術なので地味ですが、ここしばらくやっていた自分の来の商売である技術ネタを紹介します。 OAuth2/OpenIDとJOSE (JWA/JWT/JWK/JWS/JWE) Dilbert Comic Strip on 2004-01-11 | Dilbert by Scott Adams ここしばらくGo

    HDE Advent Calendar Day 2: GoでOAuth2/OpenIDとJOSE (JWA/JWT/JWK/JWS/JWE) - HDE Advent Calendar 2015
  • 高速でダウンロードできるツールを Go で実装した。 - Qiita

    Code-Hex/pget - GitHub Parallel file download client linux カーネルのダウンロードが約1分で終わる様子 これは何なのか 簡単に言うと pget は Go 言語製の高速ダウンロードツールです。 wget っぽく気軽に実行できるように pget と名付けました。 作成の経緯 たまたま Nodejs で Range header に対してスレッドを使って分割ダウンロードするという ここの記事 を見かけたので今回これを並列処理を得意とする Go 言語で実装してみようと思い作成しました。 調べてみると Python や、Java などのほとんどの言語ですでに実装されてるようですが、どれもただ使えればいいという感じだったので、割と気で作ってみました。(調べられてないだけの可能性高いです) 仕組み ファイルをダウンロードする時、ほとんどの場合が

    高速でダウンロードできるツールを Go で実装した。 - Qiita
  • Big Sky :: peco みたいだけど peco と違うコマンドラインセレクタ cho を作った。

    僕はもっぱらコマンドラインで作業するので peco を使う事が多いです。 Big Sky :: Windows のコマンドプロンプトを10倍便利にするコマンド「peco」 Windows ユーザのごく一部には、コマンドプロンプトが無いと生きられない民族がいます。そしてその民族の一部には cygwin や msys bash 等といった、サードパーティなシェル(power... http://mattn.kaoriya.net/software/peco.htm GitHub - mattn/pcd: peco + cd = awesome! README.md pcd peco + cd = awesome! Requirements peco Windows Installation Copy pcd.bat into your fav... https://github.com/mat

    Big Sky :: peco みたいだけど peco と違うコマンドラインセレクタ cho を作った。
  • Go 言語における並行処理の構築部材 - 詩と創作・思索のひろば

    5年前に買った『Java並行処理プログラミング ―その「基盤」と「最新API」を究める―』をようやく読んだ。買った頃には Perl やシンプルな JavaScript ばかり書いていたので並行プログラミングなんてほとんど気にすることがなく、実感がなくて読むのも途中で止まってしまっていたで、家を掃除しているときに見つけたもの。その後も趣味Android アプリを書くなど Java に触れる機会はあったけれど、せいぜいが AsyncTask を使うくらいで、マルチスレッドを強く意識してコードを書くこともなかった。 Java並行処理プログラミング ―その「基盤」と「最新API」を究める― 作者: Brian Goetz,Joshua Bloch,Doug Lea出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/11/22メディア: 単行購入: 30人 クリック: 442回

    Go 言語における並行処理の構築部材 - 詩と創作・思索のひろば
  • GolangのGCを追う

    Go1.5とGo1.6でGoのGCのレイテンシが大きく改善された.この変更について「ちゃんと」理解するため,アルゴリズムレベルでGoのGCについて追ってみた. まずGoのGCの現状をパフォーマンス(レイテンシ)の観点からまとめる.次に具体的なアルゴリズムについて,そして最後に実際の現場でのチューニングはどうすれば良いのかについて解説する. GoのGCの今 最初にGoのGCの最近の流れ(2016年5月まで)をまとめる. Go1.4までは単純なStop The World(STW)GCが実装されていたがGo1.5からは新たなGCアルゴリズムが導入された.導入の際に設定された数値目標は大きなヒープサイズにおいてもレイテンシを10ms以下に抑えることであった.Go1.5で新たなアルゴリムが実装されGo1.6で最適化が行われた. 以下は公開されているベンチマーク.まずはGo1.5を見る. Gophe

  • インフラエンジニアがGo言語でオペレーションツールを書くことについて - Hatena Developer Blog

    ウェブオペレーションエンジニアの id:y_uuki です。 はてなの東京オフィスで先月開催されたGo 1.6 Release Partyで、「Writing Tools in Go For Ops Engineers」というタイトルで発表しました。 発表では、最近作ったGo製ツールを紹介し、なぜGoインフラエンジニアにとって良い言語であると感じているかを話しました。 最近作ったGo言語のツールの紹介 mkr Grabeni Droot gokc インフラエンジニアGoを利用することのメリット 1. サーバへの配布が簡単 2. サーバ上で高速開発できる 3. 最終的に成果物をはやく作れる その他 発表資料 あとがき 最近作ったGo言語のツールの紹介 以下の4つのツールを作りました。いずれもはてなでのproduction利用を想定したものになります。 mkr mkrははてなで開発している

    インフラエンジニアがGo言語でオペレーションツールを書くことについて - Hatena Developer Blog
  • GoによるWebアプリ開発のキホン

    Golang勉強会 in Kagawa http://gdgshikoku.connpass.com/event/26262/

    GoによるWebアプリ開発のキホン
  • goでスクレイピングするのにgoquery + bluemonday が最強な件 - Qiita

    package main import ( "github.com/PuerkitoBio/goquery" "fmt" ) func main() { doc, err := goquery.NewDocument("https://github.com/PuerkitoBio/goquery") if err != nil { fmt.Print("url scarapping failed") } doc.Find("a").Each(func(_ int, s *goquery.Selection) { url, _ := s.Attr("href") fmt.Println(url) }) }

    goでスクレイピングするのにgoquery + bluemonday が最強な件 - Qiita
  • Visualizing Concurrency in Go · divan's blog

    If you prefer video over blog posts, here is my talk on this at GopherCon 2016: https://www.youtube.com/watch?v=KyuFeiG3Y60 One of the strongest sides of Go programming language is a built-in concurrency based on Tony Hoare’s CSP paper. Go is designed with concurrency in mind and allows us to build complex concurrent pipelines. But have you ever wondered - how various concurrency patterns look lik

  • コネクションプールのチューニング - Qiita

    TL;DR 負荷の変動が激しい環境でコネクションプールの設定のチューニングをさぼるためによくやるハックを紹介します。 問題 Go から https や mysql など外部のリソースにアクセスする場合、一般的にコネクションプールを使うことになります。 コネクションプールは、利用が終わった (idle) コネクションをプールしておき、次に使いたい時に再利用するものです。 (idle コネクションのプールを以後 free pool と呼びます。) ほとんどのコネクションプールの実装には、 idle なコネクションの最大数を制限するオプションがあります。 また、利用中の (active) コネクションと idle なコネクションを合計した全体を制限するオプションを持つものもあります。 例えば net/http パッケージの Transport は MaxIdleConnsPerHost というフ

    コネクションプールのチューニング - Qiita