タグ

関連タグで絞り込む (323)

タグの絞り込みを解除

Golangに関するkutakutatriangleのブックマーク (518)

  • GoReplayを導入して、Production環境へのリクエストを複製し、Staging環境に転送する仕組みを作った - Glide Note

    結構前に作っていたんですが、いろいろと忙しくてブログに書くタイミングを失していたので年末のタイミングで紹介。 TL;DR GoReplayを利用して、Production環境のリクエストを複製し、Stagins環境、開発環境に投げる仕組みを作った インフラ構成の大きな変更無しで、手軽にProduction環境の実リクエストを複製し、開発、動作検証ができるようになった 2016年の弊社サービスのDocker化や、インフラ構成の大幅な変更、ミドルウェアのアップデート、アプリの改修時のバグ事前検知と事故防止に大いに役に立った GoReplayの説明 GoReplay Goで書かれており、バイナリを設置し、オプションを指定し実行するだけで動作する アプリが稼働しているサーバで動く。(例えばNginx+Railsが稼働しているサーバで一緒にGoReplayを動かす感じ。) libpcap を利用して

  • Reversing GO binaries like a pro

    GO binaries are weird, or at least, that is where this all started out. While delving into some Linux malware named Rex, I came to the realization that I might need to understand more than I wanted to. Just the prior week I had been reversing Linux Lady which was also written in GO, however it was not a stripped binary so it was pretty easy. Clearly the binary was rather large, many extra methods

    Reversing GO binaries like a pro
  • GoのASTを使ってパッケージのメンテナンスを考える - YAMAGUCHI::weblog

    はじめに こんにちは、Go界の骨盤職人です。buildersconにmattnさんがいらしていたということで生mattnさんに謁見したかったのですが、諸事情でこの日程はどうしても都合がつかず、参加できなかったことが非常に残念でいまでも悔やんでいます。 さて、Goは安定して開発が進んでおり、いまは安定バージョンが1.8にもなろうというところです。セルフホスティングも1.5で達成し、GCの高速化も順調に進んでいる中、いまだにGoの問題として挙げられるものとして「パッケージバージョンの管理」があります。今日はその辺の話をしようと思います。 TL;DR go パッケージを使って、自分たちが書いたコードが依存してるパッケージを明らかにし、依存先パッケージの更新に追従していこう。 前置き 以下の話はGoをプロダクションで中規模〜大規模に利用している環境を想定しており、細かな閉じられたパッケージのみを開

    GoのASTを使ってパッケージのメンテナンスを考える - YAMAGUCHI::weblog
  • Goならわかるシステムプログラミング

    Goで始める、すこし低レイヤのプログラミング入門。入出力、ネットワーク、メモリなど、現実の世界でプログラムが動くために必要な機能をプログラム言語Goを通して覗いてみよう。OSの機能とは何か、それをプログラミングでどう利用するのか、システムプログラミングの世界をプログラマの視点から眺めていく連載企画。 2017年06月21日 17時00分 プログラミング+ Go言語によるプログラマー視点のシステムプログラミング 第20回 Go言語とコンテナ 連載の最終回。この連載ではプログラムがコンピュータ上で動くときに何が起きているのかをGo言語のコードを通して覗いてきました。今回はその締めくくりとしてコンテナについて紹介します。 2017年06月07日 21時30分 プログラミング+ Go言語によるプログラマー視点のシステムプログラミング 第19回 Go言語のメモリ管理 ソフトウェアにとってメモリは不

    Goならわかるシステムプログラミング
  • GolangでAPI Clientを実装する

    特定のAPIを利用するコマンドラインツールやサービスを書く場合はClientパッケージ(SDKと呼ばれることも多いが記事ではClientと呼ぶ)を使うことが多いと思う.広く使われているサービスのAPIであれば大抵はオフィシャルにClientパッケージが提供されている.例えば以下のようなものが挙げられる. https://github.com/aws/aws-sdk-go https://github.com/Azure/azure-sdk-for-go https://github.com/PagerDuty/go-pagerduty https://github.com/hashicorp/atlas-go 特別使いにくい場合を除けば再実装は避けオフィシャルに提供されているものを使ってしまえばよいと思う(まともなものなら互換性などをちゃんと考慮してくれるはずなので).一方で小さなサービ

  • 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
  • My experience rewriting Enjarify in Rust

    Last year I decided to rewrite Enjarify (a command line Python application) in Go and take notes in order to get data comparing the languages. Obviously, with a rewrite of an existing project, the resulting code won’t be as idiomatic as a project written from scratch, but I thought it was fair since Gophers are constantly trying to convert people away from Python for some reason, and doing a rewri

    My experience rewriting Enjarify in Rust
  • Gorgonia

    I released Gorgonia on Thursday. Gorgonia is a library like Theano or TensorFlow, but mainly written in Go. It provides the necessary primitives for creating and executing neural networks and machine learning algorithms. According to cloc, these are the stats: chewxy@chewxy-Gallifrey:~/workspace/goworkspace7/src/github.com/chewxy/gorgonia$ cloc . 357 text files. 321 unique files. 604 files ignored

  • Rust実装のabライクなツール boom-rustを書きました | hexacosa.net

    最近会社のエンジニアでも Rust を使っている方がいてモチベーションさらに上がってきました。 近くで話せる人がいるというのはいいですね。といっても大阪と東京で離れてはいますが。 で、題ですが、 boom-rust というabライクなツールを書いてみました。 もともと Python実装のboom と Go実装 があり、Rustで実装したらでどれくらいパフォーマンス違うのかなというのを比較できるかなと思い書いてみた次第です。 モチベーション 今自分の中でRustについていろいろ調べたり知見ためているところで、 小さなツールとかからプロダクション環境に投入していきたいなと考えてるところです。 その知見ためる一環として実際のツールなりライブラリをいろいろ書いていこうというのがあり、 boom-rustもそういうモチベーションで書きました。 今そういったツールは主にGoで書いてたりするので、 特

  • WTF Was Wrong With My Go Code

    After being primarily a Perl/C programmer for over 16 years, I started writing Go code about 3 to 4 years ago. At the time I was still trying to learn how to write code that feels right in Go, and back then I was thinking that I was doing an alright job. After having written a few hundred thousand lines of Go, I had a chance to look at one of the earliest libraries that I wrote back then: Boy, WTF

    WTF Was Wrong With My Go Code
  • Python と Ruby と typing - methaneのブログ

    うーん、structural subtypingとダックタイピングは同じものなんだろうか。— Yukihiro Matsumoto (@yukihiro_matz) 2016年9月8日 https://t.co/5Rv86piThC wikipediaによると似て非なる物のようですね。 https://t.co/VwIg39h5M0— INADA Naoki (@methane) 2016年9月8日 この話題について補足しておきます。なお、僕はTAPL脱落組なのであまり正確性は期待しないでください。 背景 Ruby Kaigi で Matz が Ruby3 に向けて考え中の静的型について話されたようです。 少し前から、 Python でも Guido が Dropbox での大量のコードベースを改善していくために type hinting がほしいということで PEP 484 を始めました

    Python と Ruby と typing - methaneのブログ
  • やっぱブロックチェーンダメっぽい

    デジタル台帳「ブロックチェーン」が支える仮想通貨ビットコインを何百万人にも紹介したステファン・トーマス氏は、心変わりした。 この記事、最初見たとき釣りかと思ったけど、釣りではなく「まあそうだよね」と言う意見だった。 ここで言われてるのは 金融機関の政治問題合意形成コストの2つが課題でブロックチェーンが実戦に不向き的なこと。 1個目は人の問題なので置いとくとして、2個目が散々。 計算にマシンパワーが必要なのと、その結果を全ノードに等しく伝えるのに何日もかかる & その過程で生じた履歴がもし採用されなかったら破棄される可能性もある。 これらの点から「速くて、堅牢な、低コストの取引台帳」なんてものはないの明らかなので、登壇テーマとして用いた身なのを棚に上げながら言うと、すぐさまこの界隈は沈静化してほしい。 ハッシュ値を最も早く生成し、その結果その解答者以外の履歴はあっていようが間違っていようが場

    やっぱブロックチェーンダメっぽい
  • SOLID Go Design | Dave Cheney

    This post is based on the text of my GolangUK keynote delivered on the 18th of August 2016. A recording of the talk is available on YouTube. This post has been translated into Simplified Chinese by Haohao Tian. Thanks Haohao! This post has been translated to Russian by Artem Zinoviev. Thanks Artem! How many Go programmers are there in the world? How many Go programmers are there in the world? Thin

  • Standard Package Layout

    Vendoring. Generics. These are seen as big issues in the Go community but there’s another issue that’s rarely mentioned — application package layout. Every Go application I’ve ever worked on appears to have a different answer to the question, how should I organize my code? Some applications push everything into one package while others group by type or module. Without a good strategy applied acros

    Standard Package Layout
  • ssig33.com - Docker で Go で作ったバイナリを実行するなるべく小さいコンテナを作る

    Go でアプリケーションを作ると、そのまま他になにもなくとも実行できるバイナリが出来あがります。この特性によりデプロイが大変楽です。 このような特性があるので、 Go を使う場合 Docker のようなオーケストレーションツールを使わなくても多くのサーバーにアプリをデプロイしていくことも可能かと思われますが、そこはまあ Docker という巨人に乗っておくと楽なことが多いです。具体的には swarm と docker-compose が便利なので Docker 上で実行したい。 ここで問題となってくるのが何も考えずに Docker イメージを作るとイメージサイズが膨れあがってしまってシングルバイナリによる手軽さなどが損なわれてしまうという点です。 たとえば golang:alpine のような比較的小さいイメージを使ってもファイルサイズはバイナリサイズ + 300MB ほどにもなってしまい

  • More Effective Go

    More Effective Go 27 July 2016 山泰宇 サイボウズ株式会社 github.com/ymmt2005 資料について 資料はサイボウズの社内トレーニング用に作成したものです。 以下については前提知識としています。 A Tour of Go How to Write Go Code Effective Go 2 Agenda リポジトリの構成 依存関係の解決 ツール類 github.com の周辺エコシステム 重要ライブラリ 排他制御 goroutine の取り扱い方 3 題材 github.com/cybozu-go/aptutil を題材とします。 go-apt-cacher / go-apt-mirror というユーティリティを含んでおり、 内部で HTTP のリバースプロキシ、多数の goroutine の排他制御、同時 実行数の制御などを行っています

  • goimportsのスキャン対象から特定ディレクトリを除外する - Qiita

    goimportsが高速になりました! goimportsとは、.goファイルのimport文を自動的に追加・削除してくれる、Goによる開発には欠かせないツールです。しかし、Goのパッケージの仕様上、パッケージ名の探索のためにGOROOT/GOPATH配下の全てのディレクトリを探索する必要があり、GOPATH配下に大量のディレクトリが存在する場合、遅くなることでも知られています1 2。 そこでbradfitzがgoimportsにパフォーマンス改善を加えたのですが、その中の一つに、設定ファイルで特定ディレクトリを除外するという新機能を見つけたので紹介します。 やり方 $GOPATH/src/.goimportsignore ファイルを作成し、除外したいディレクトリを(設定ファイルからの相対パスで)記述すると、goimportsはそのディレクトリを無視してくれます。スマートです。 これでテス

    goimportsのスキャン対象から特定ディレクトリを除外する - Qiita
  • Big Sky :: golang の channel を使ったテクニックあれこれ

    golang の channel は他の言語に見ない独特のパラダイムを開発者に提供します。 単純にスレッド間でメッセージングをするだけでもC言語で書けばそこそこの量になったり、慣れていない人であればどう実装すればいいか分からないなんて事もあったと思います。しかし golanggoroutine/channel は、やっている内容の割にとても容易にスレッド間通信やキューイング、処理の受け待ち等を実装できる様になっています。尚、channel をどの様に適用したら良いかについては以下を参照下さい。 Big Sky :: Golang の channel の使い所 golang の特徴と言えば goroutine と channel ですが、その使いどころに悩む人もおられる様です。 goroutine は非同期に実行される処理、channel はその grout... http://mat

    Big Sky :: golang の channel を使ったテクニックあれこれ
  • Goでプロビジョニングツールを作った - オープンソースこねこね

    GitHub - kohkimakimoto/cofu: Minimum configuration management tool written in Go.github.com CofuというサーバプロビジョニングツールをGoで実装しました。Itamaeを参考に作りました。実装言語の違い(ItamaeはRubyによる実装)はありますが、外部仕様、内部実装、共にかなり似せて作ってあるので、ItamaeまたはItamaeが参考にしているchefを使ったことがあると、理解は簡単かと思います。特徴をざっくり説明すると、 ローカルでのプロビジョニングのみ対応。SSHなどでのリモートサーバのプロビジョニングはサポートしない Goなので実行ファイル一個で動く。導入が簡単 レシピはLuaのDSLで記述する 今のところ動作プラットフォームはRedHat(CentOS)のみをサポート あたりでしょうか。

    Goでプロビジョニングツールを作った - オープンソースこねこね
  • Goでデーモンを作ってみる

    Go Conference 2016 SprintのLT資料です。 #gocon サンプルコード: https://gist.github.com/hironobu-s/548b98c63d4cb6cede95

    Goでデーモンを作ってみる