タグ

goに関するkiririmodeのブックマーク (21)

  • Goでテストのフィクスチャをいい感じに書く | メルカリエンジニアリング

    Merpay Tech Openness Month 2022の6日目の記事です。 こんにちは、Merpay Credit Design Teamでバックエンドエンジニアをしている@youxkeiです。 テストを書く際、その前提条件としてデータベースの状態をフィクスチャとして準備して、データベースにデータを投入することがよくあります。このフィクスチャはYAMLなどの外部ファイルに書かれることもありますが、この記事ではテストコード上にGoで記述する方法を考えていきます。 この記事では、データベースはリレーショナルデータベースを想定していて、具体例として架空の図書館蔵書管理システムのデータベースを使っています。 素直にモデルを使う 多くの場合、以下のようにデータベースのそれぞれのテーブルに対してモデルが定義されています。 package model import ( "time" ) type

    Goでテストのフィクスチャをいい感じに書く | メルカリエンジニアリング
    kiririmode
    kiririmode 2024/05/25
    テスト用データセット(fixture)をGoで記述する方法について解説。モデル間の関連性を明確に表現し、Fixtureパッケージを使ってコードを簡潔に記述する方法を提案。
  • Goではじめてみたブラウザの自動操作 - Qiita

    はじめに 面倒なWEBブラウザの定型作業を自動化したくて。 WEBブラウザの自動操作には定番のSeleniumを利用する。 Seleniumは主にウェブブラウザのテストに利用されているが、テスト用途以外でも利用はできる。 なおウェブスクレイピングが目的であれば、scrapeとかgoqueryなどを利用するほうが簡単。 それでもSeleniumを利用するのは、 実際のブラウザが利用できるという点であり、以下のような利点があると思っている。 IEなど特定のブラウザのみをサポートしているサイトの自動操作 ごりごりのJavascriptやFlashを利用されているサイトの自動操作 証跡として画面のスクリーンショットを取得できる 前提知識 WebDriverを介することで、スクリプトとしてJava,C#,Pythonなど多くの言語から利用できる ブラウザごとにWebDriverが用意されており、1つ

    Goではじめてみたブラウザの自動操作 - Qiita
  • 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アプリケーション作る練習をした - はこべにっき ♨
  • JSON Schema And Go

    It has been about 7 months since I started writing a JSON Schema library, named go-jsschema, and other associated libraries for Go. In this article, I will try to describe these libraries that I wrote. All features are those as of September 2016. ParsingBefore doing anything with a JSON Schema, you need to parse it. This is simple: go-jsschema provides a ReadFile() method as well as a Read() metho

    JSON Schema And Go
  • context パッケージの紹介

    context パッケージの紹介 introduction to context package 8 August 2016 Yasuharu Goto Software Engineer Profile(1/2) Yasuharu Goto @ono_matope ポータルサイトの会社 バックエンド開発 とくいわざ: Go, Cassandra Go歴 2014/1- 2 Contribution Go 1.6 に Contribution net/httpにExpect: 100-continueのクライアントサイド実装を追加 3 contextパッケージの紹介 4 package context google社内で開発 2014年 golang.org/x/net/contextで公開 Go1.7で標準ライブラリに昇格 5 package context contextパッケージはデ

    kiririmode
    kiririmode 2017/01/22
    contextを使ったキャンセル処理、タイムアウト処理と値の格納。説明がとってもわかりやすい。
  • A curated list of awesome Go frameworks, libraries and software - Awesome Go

    Awesome Go We use the Golang Bridge community Slack for instant communication, follow the form here to join. Sponsorships: Special thanks to Awesome Go has no monthly fee, but we have employees who work hard to keep it running. With money raised, we can repay the effort of each person involved! You can see how we calculate our billing and distribution as it is open to the entire community. Want to

    A curated list of awesome Go frameworks, libraries and software - Awesome Go
  • 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 の排他制御、同時 実行数の制御などを行っています

  • FAQ - golang.jp

    起源 このプロジェクトの目標は? ここ10年以上、メジャーなシステム言語は誕生しておりませんが、その間にコンピュータの世界は大きく変化しています。この変化には、次の傾向が見受けられます。 コンピュータ自身は非常に早くなりましたが、ソフトウエア開発は遅いままです。 今日のソフトウェア開発にとって依存関係を管理することはとても重要ですが、C言語で使われている「ヘッダファイル」では、依存関係を正しく解析したり、高速なコンパイルを行うことはできません。 JavaC++のような扱いにくい型システムに対する反発が大きくなりつつあり、これがPythonJavaScriptといった動的な型言語を後押ししています。 基的なコンセプトのうち、ガベージコレクションや並列処理などいくつかは、人気のあるシステム言語においてもほとんどサポートされていません。 マルチコアコンピュータの出現は、心配事と混乱を生み出

  • Big Sky :: golang のサーバで帯域制限したい。

    次回予告「並列ダウンロードするHTTPクライアントをバンド幅制限するサーバをGoで実装した」 / “高速でダウンロードできるツールを Go で実装した。 - Qiita” https://t.co/6NfEyJCwbu — Kazuho Oku (@kazuho) July 13, 2016 並列ダウンローダを使うと幾らかサーバに負荷が掛かってしまいます。golang のサーバ側で帯域制限を行う場合には2つ方法があります。 転送量制限する 接続数制限する まずは転送量制限。転送量の制限には throttled が便利です。 GitHub - throttled/throttled: Package throttled implements rate limiting access to resources such as HTTP endpoints. README.md Throttle

    Big Sky :: golang のサーバで帯域制限したい。
  • Go言語の並行処理デザインパターン by Rob Pike 前編 - Qiita

    少し古いですが、Rob Pikeの並行処理デザインパターンのビデオで取り上げられたコードまとめです。 オリジナルのソースコードはこちらで見れます。 Generator ジェネレータ package main import ( "fmt" "math/rand" "time" "runtime" ) func main() { runtime.GOMAXPROCS(runtime.NumCPU()) rand.Seed(time.Now().UnixNano()) c := boring("boring!") // Function returning a channel. for i := 0; i < 5; i++ { fmt.Printf("You say: %q\n", <-c) } fmt.Println("You're boring: I'm leaving.") } func

    Go言語の並行処理デザインパターン by Rob Pike 前編 - Qiita
  • Ten Useful Techniques in Go - Fatih Arslan

    Here are my own best practices that I've gathered from my personal experiences with dealing lots of Go code for the past years. I believe they all scale well. With scaling I mean: Your applications requirements are changing in an agile environment. You don't want to refactor every piece of it after 3-4 months just because you need to. New features should be added easily. Your application is devel

    Ten Useful Techniques in Go - Fatih Arslan
  • Google Sites: Sign-in

    Not your computer? Use a private browsing window to sign in. Learn more

  • Big Sky :: golang の sync パッケージの使い方

    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.

    Big Sky :: golang の sync パッケージの使い方
  • Go の Test に対する考え方 - Qiita

    Go の Test に対する考え方 この記事は Go Advent Calendar 2013 の 9 日目の投稿です。 今回は、 Go の testing というパッケージの使い方を解説しようと思ったのですが、 それだとつまらなすぎるので、合わせて Go が test というか assert についてどういうスタンスをとっているかを書いてみます。 Go でテスト さて、「テストのないコードはレガシーコード」などと言われて久しく、様々な言語が test (主に Unittest) について言語レベルでサポートしたり、デファクトなライブラリが確立したりといった状況が、今日では至って普通のこととなっています。 そんな言語や環境で、息をするようにテストを書いてきたみなさんが、はじめて Go でコードを書く時に見るべきは testing パッケージです。 http://golang.org/pkg

    Go の Test に対する考え方 - Qiita
  • Go の並行処理 - Block Rockin’ Codes

    intro 先日の Go のカンファレンス GoCon で、 Go の並行処理周りについて発表させて頂きました。 Go Conference 2013 spring - connpass 具体的には Goroutine や Channel の話ですが、これらの機能は結構面白くて、いじって遊んでるだけでもわくわくします。 Go の並行処理は、設計方針がわりと特殊だと思うのですが、設計がシンプルなので分かるとそこまで難しくはないです。 (使いこなすのは、経験が必要そうですが) 今回話すにあたって色々調べましたが、発表時間の都合上省いたものもあるし、質疑応答で聞かれて応えられなかったこともあるので、 ここでまとめて置こうと思います。 発表資料 今回の発表資料はこちらです。 このブログの内容は、これをベースにします。 http://jxck.node-ninja.com/slides/gocon-

    Go の並行処理 - Block Rockin’ Codes
  • Go For Perl Mongers

    Go For Perl Mongers (or, for Lightweight Language lovers) Daisuke Maki Engineer, LINE Corporation Who Is This Guy? @lestrrat LINE / Japan Perl Association / YAPC::Asia (2008~2013) STF / peco (new!) 2 俺とGo Goしてみて約1年弱 概算10~12万行くらい書いた。lived○○rBl○g の裏方にもこっそりgo入れてる 最初の4万行くらいまでに goの落とし穴にほぼ全て落ちた 自信がある 今日はその落とし穴から学んだ諸々の話 3 対象観客層 もともとPerl/Python/Ruby/PHPあたりから来た人 Goは最低限とりあえずかじった程度はやった人 かじってみたけど「Go、便利そうだけどなん

  • Go by Example

    Go is an open source programming language designed for building scalable, secure and reliable software. Please read the official documentation to learn more. Go by Example is a hands-on introduction to Go using annotated example programs. Check out the first example or browse the full list below. Unless stated otherwise, examples here assume the latest major release Go and may use new language fea

  • Go言語の便利情報 - ゆううきブログ

    ここ1年ぐらい収集した便利 Go 言語情報を並べただけです。 http://b.hatena.ne.jp/y_uuki/golang/ https://github.com/stars?language=go オフィシャル 言語機能解説を中心にピックアップ。 Effective Go - The Go Programming Language Go's Declaration Syntax - The Go Blog Share Memory By Communicating - The Go Blog Defer, Panic, and Recover - The Go Blog Go Concurrency Patterns: Timing out, moving on - The Go Blog Go Slices: usage and internals - The Go Blog

    Go言語の便利情報 - ゆううきブログ
  • EmacsでのGo言語編集環境(Linux編) - Shohei Yoshida's Diary

    http://unknownplace.org/archives/golang-editing-with-emacs.html とだいたい同じだったんですが、微妙に違ったところがあったのでメモ。 環境は Ubuntu 13.04 64bitです。 バイナリのインストール Ubuntuのパッケージやら PPAでありますが、公式に配布されるバイナリから インストールすることにします。 https://code.google.com/p/go/downloads/list から自分の環境にあったものを取得してください。 取得できたらそれを展開します。今回は /opt以下にインストールすることに します。 % cd /opt % sudo tar xf ~/Desktop/go1.1.1.linux-amd64.tar.gzこれでインストールできました。 環境変数の設定 環境変数 PATH, GO

    EmacsでのGo言語編集環境(Linux編) - Shohei Yoshida's Diary
  • プログラミング言語「go」は本当に速い? | Happy My Life

    C/C++で書いたのと同じくらい速いよ、とWebサイトにも書かれているgoだが、そのgoのベンチマークが言語別のベンチマーク比較サイトであるThe Computer Language Benchmarks Gameで計測できるようになっていた。 さて、当にC/C++並に速いのか、お手並み拝見。 実行環境 Ubuntu 9.04 (64bit版) quad-core 2.4Ghz Intel® Q6600 4GB メモリ ベンチマーク結果(C++と比較) 詳細はGo 6g ÷ C++ GNU g++にて。 ソースコードは、goが短い(最大1/3)が、実行速度、メモリ消費量は C++の圧勝(最大58倍の差)。 ベンチマーク結果(Java6 Serverと比較) 詳細はGo 6g ÷ Java 6 -serverにて。 メモリ消費量はgoの方がよい結果を出しているが、実行速度はJavaと結構差