タグ

golangに関するryochackのブックマーク (90)

  • Go のクロスコンパイル環境構築 - Qiita

    Go でクロスコンパイル Go の特徴であるクロスコンパイルの便利さと、その方法はよく語られますが、意外に「そのための準備工程」が知られてない気がしたので、ここで再度クロスコンパイル自体の便利さと、クロスコンパイル方法、そしてその準備方法を書いておきます。 クロスコンパイルの旨味 Go は、 1 つのソースコードから様々な OS 向けのバイナリを生成するクロスコンパイルをサポートしています。しかも、対象の OS が無いとビルドできないわけではなく、例えば MacWindows 用、 Linux 用、 Plan9 用のバイナリを一気に生成するといったことができます。 しかも、 32bit マシンで 64bit 用のバイナリを生成することもできます。 "Write Once Run Anywhere" でお馴染みの Java との違いは、 Java の場合は Class ファイルという形

    Go のクロスコンパイル環境構築 - Qiita
  • How are Rust Traits different from Go Interfaces?

    I am relatively familiar with Go, having written a number of small programs in it. Rust, of course, I am less familiar with but keeping an eye on. Having recently read http://yager.io/programming/go.html, I thought I'd personally examine the two ways Generics are handled because the article seemed to unfairly criticize Go when, in practice, there wasn't much that Interfaces couldn't accomplish ele

    How are Rust Traits different from Go Interfaces?
    ryochack
    ryochack 2016/07/25
    RustのTraitsとGoのInterfaceについて
  • Goのプログラミングパターン

    QCon London 2016において、Peter Bourgon氏は「Successful Go Program Design, 6 Years On」というプレゼンを行い、Goでプログラミングするときに使うべきパターンと避けるべきパターンについて説明した。 GOPATH: 環境変数PATHにGOPATH/binを加え、関係バイナリを簡単にアクセスできるようにする。Bourgon氏は一つのグローバルなGOPATHを使うことを推奨する。たいていの場合、これでうまくいく。自分のコードと外部依存のコードを明確に分離したい人は、2つのGOPATHを作るのが好みだろう。gbを使って、環境変数をセットせずにプロジェクトごとに構築するという選択肢もある。 リポジトリ構成: リポジトリの構成はプロジェクトに依存する。プライベートなプロジェクトで決して公開しないなら、好きな構成で構わない。オープンソース

    Goのプログラミングパターン
  • Assembly - goroutines

    With the complexity of modern computers, it's easy to forget the relatively simple interface they provide to the programmer at the lowest level. Machine code is an almost impervious abstraction over the unavoidably physical transistors and capacitors that make up a computer. The abstractions are still human-made, but they are well-tested and reliable. The computers we program are machines undernea

  • Big Sky :: Golang のオフィシャルが提供するインタフェースまとめ

    golang が提供するインタフェースの中で代表的な物の使い方をまとめてみる。 io.Reader type Reader interface { Read(p []byte) (n int, err error) } ご存じ io.Reader。このシグネチャの Read を実装しておけば golang のありとあらゆる入力機能に対して自分のコードを提供する事が出来る。 例えば永遠に「おっぱい」と言い続ける Reader だと以下の様な実装になる。 package main import ( "io" "os" ) var text = []rune("おっぱい") type OppaiReader struct { n int } func (r *OppaiReader) Read(p []byte) (int, error) { in := len(p) nw := 0 for i

    Big Sky :: Golang のオフィシャルが提供するインタフェースまとめ
  • Go言語の型とreflect

    最近型ではまることがたびたびあったのでまとめてみました。 主に下記についてまとめています。 型とインターフェース 代入のルール 型の変換 型アサーション reflectパッケージの使い方 インターフェースの実装などについては触れていません。 型とインターフェース 名前を持つ型と名前を持たない型 型には名前のある型(named types)とない型(unnamed types)がある。 代入の可否など名前の有無で動作に違いのあるケースがある。 ざっくりいえば、英数字で表されているものが名前のある型、括弧やアスタリスクなどの記号を使って表されている型が名前のない型 名前のある型 下記のようにtypeを使って宣言されている型は名前のある型。

    Go言語の型とreflect
    ryochack
    ryochack 2015/12/27
    型変換について
  • 本物の golang を... 本物の Gopher を、お見せしますよ。 - Qiita

    事の始まり それはD言語くんへの嫉妬から始まった。 D言語くんの繁殖についての仮説 lsを間違えてdlと入力してしまったときに、D言語くんが通り過ぎるコマンド くっ悔しい... そしてショボいAAで2番煎じ。 lsを間違えてgolと入力してしまったときに、Gopherが通り過ぎるコマンド書いた。 こんなはずじゃない! 僕らの Gopher 君はこんなチープじゃない! 明日来てください。物の Gopher をお見せしますよ。 — mattn (@mattn_jp) December 15, 2015 (当はもうちょっと前から作ってましたが) 物のGopher君とは そして今回、これを公開するに至った。 まずはこれをご覧頂きたい。 !!!!!!!!!!!!1 こいつ・・・ 動くぞ・・・ golang で書いたデスクトップマスコットです。起動すると画面のタスクバーの上をウロウロします。たま

    本物の golang を... 本物の Gopher を、お見せしますよ。 - Qiita
    ryochack
    ryochack 2015/12/17
    Gopherかわいいかわいい
  • Big Sky :: golang でスライスの先頭に追加する append がなぜ遅いのか

    Go - ISUCON5予選でスコア34000を出す方法 - Qiita Goで下記のようなsliceの先頭にひたすらオブジェクトを追加する処理を書く際は、不必要に長いsliceにならないよう注意しましょう。負荷が非常に高い処理になります。 hoge := []int{} for _, comment := range comments { hoge = append([]int{comment.ID}, hoge...) } http://qiita.com/y_matsuwitter/items/771020ebb68c07053548 append は第一引数のスライスに第二引数以降の可変個アイテムを追加する関数です。なるべく呼ばれない実装が良いです。どうしても多いアイテムを扱う場合は出来れば以下の様に書くのが良いです。 参考: https://blog.golang.org/sli

    Big Sky :: golang でスライスの先頭に追加する append がなぜ遅いのか
  • イベントループなしでのハイパフォーマンス – C10K問題へのGoの回答 | POSTD

    この投稿は、私が去年OSCONで行ったプレゼンテーションを基に作成しています。プレゼンよりは簡潔に編集し直し、プレゼン後にいただいたいくつかのフィードバックに応える形で記事を書いています。 Go言語に関してよく言われるのは、Go言語はサーバでうまく機能し、静的なバイナリや強力な並行処理、高いパフォーマンスを見せくれるということです。 この投稿では、その後半の2つの項目に関して焦点を当てます。プログラマとってGo言語とそのランタイムは、スケーラブルなネットワークサーバをスレッド管理やブロッキングI/Oを気にせずに書くのにどんなに有効かを説明していきます。 効率的なプログラミング言語に関しての議論 技術的な話に入る前に、Go言語をターゲットにしたマーケットを説明する2つの議論に関してお話したいと思います。 ムーアの法則 画像は以下より引用; 2005年5月にHerb Sutter氏が書いたDr

    イベントループなしでのハイパフォーマンス – C10K問題へのGoの回答 | POSTD
  • これで無人制御も可能に!LiveWedgeをコントロールできるGo言語のライブラリを公開 | Cerevo TechBlog

    こんにちは。小林哲之です。組込みソフトウェアのエンジニアです。 LiveWedgeは4つのHDMI入力を持ち、ライブ配信、録画の機能を備えたビデオスイッチャーです。 今回は、このLiveWedgeをコントロールできるGo言語のライブラリをGithubで公開しましたので紹介させていただきます。 経緯 LiveWedgeは体操作以外にタブレットのアプリケーションソフトから操作できるという特徴を持っています。タブレットのUIは直感的に操作ができるように入念に作り込まれています。これは人が操作することを想定していました。 LiveWedgeの発売後にさまざまなフィードバックをいただいたのですが、周期的に自動で画面を切り換える機能が欲しいという要望がたびたび寄せられました。この機能をタブレットのアプリに追加するのは技術的には可能ですが、細かい要望に応えられるように汎用化するのは簡単ではありません。

    これで無人制御も可能に!LiveWedgeをコントロールできるGo言語のライブラリを公開 | Cerevo TechBlog
    ryochack
    ryochack 2015/08/31
    golang!
  • これからGoを始める人のためのTips集 | The Wacul Blog

    こんにちわ。最近業務でGoを書いているのですが、3,4週間たち、だいぶ環境にも慣れてきたので、これからGoを初めようと思っている人向けにTipsを書きたいと思います。 間違いや改善点などあれば、 @tutuming まで教えていただけると大変ありがたいです。 インストール と設定 (OSX) http://golang.org/dl/ から、インストーラー (go1.3.1.darwin-amd64-osx10.8.pkg など) を選んで最新版をインストールしたら大丈夫です。自分の環境にあわせたインストーラ選んでください。 homebrewを使っている人は でもインストールできます。 $GOPATH とプロジェクトの作り方 Go のパッケージ管理には、 go get コマンドを使います。 go get github.com/aaa/bbb とすると、 github.com/aaa/bbb

    これからGoを始める人のためのTips集 | The Wacul Blog
    ryochack
    ryochack 2015/06/23
    GOPATHを複数指定して開発用のコードとサードパーティのコードを分けておくことができる
  • 50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs

    Go is a simple and fun language, but, like any other language, it has a few gotchas... Many of those gotchas are not entirely Go's fault. Some of these mistakes are natural traps if you are coming from another language. Others are due to faulty assumptions and missing details. A lot of these gotchas may seem obvious if you took the time to learn the language reading the official spec, wiki, mailin

    50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs
  • コード補完もできる Go の REPL「gore」を作った - 詩と創作・思索のひろば

    タイトルの通りです。Go は LL 的に使える、とはよく申しますが、そういう意識で使っていると REPL 的なことをしたいときに困りがちですよね。そこで作りました。gore。いい名前ですね。 motemen/gore · GitHub 以下のスクリーンキャストでだいたいの雰囲気をお察し下さい。 (スクリーンキャストは cho45/KeyCast を使って撮影しました) 特徴 gore の特徴は以下の通りです。 ラインエディタと履歴 複数行入力 パッケージのインポート、補完つき 式および文を実行可能 コード補完(nsf/gocode を利用) プリティプリント(k0kubun/pp か davecgh/go-spew がおすすめ) ドキュメントも引ける(godoc が必要) 以上のように、非常に便利なものになっております。むしろこの程度 REPL には当然あってほしい機能だとも言える。 イン

    コード補完もできる Go の REPL「gore」を作った - 詩と創作・思索のひろば
    ryochack
    ryochack 2015/02/20
    すごい
  • Golang パフォーマンスチューニング - Qiita

    この記事は Go Advent Calendar 2014 17 日目の記事です。 Go におけるパフォーマンスチューニングの話をします。 これらは Denco や Kocha などでのパフォーマンスチューニングの経験などから得た知見です。 処理系の話ではありませんのでご了承ください。 前提 プロファイリングを取った後、じゃあどうやって最適化するかというところの話です 「推測するな、計測せよ」 アルゴリズムやデータ構造は最適なものが選択されていると仮定します 小手先の最適化を行うよりアルゴリズム自体を変えたほうが圧倒的に良くなります。 この記事の各ベンチマークは Go 1.4 (go version go1.4 linux/amd64)で下記のコマンドにて取っています

    Golang パフォーマンスチューニング - Qiita
  • golang で streem を実装した。 - Qiita

    この記事は Go Advent Calendar 2014、16日目の記事です。 はじめに Matz さんが streem という、ストリーム指向言語の開発を始めるらしいです。 まだ文法の設計段階ではあるけど、それなのにかなりの量の pull-req がバンバンと来てて凄いなーと思いつつも「この pull-req 量だと僕には出番無いなー」と思ったので、README.md に書かれているサンプルだけを頼りに streemgolang で実装してみました。 先日はネタで streem のマネをして yacc 定義部分だけ公開していましたが、日ネタが無い中にTLがヒートアップして焦りに焦って勢いで実装してみました。いやはや異様な追い込みを感じます。。。 まずは streem を知る streem は README.md に書かれている通り並列実行を行いつつストリームを処理する言語です。

    golang で streem を実装した。 - Qiita
    ryochack
    ryochack 2014/12/15
    すごい
  • Go言語の父と呼ばれるRob Pike氏による基調講演~Go Conference 2014 Autumn基調講演1人目 | gihyo.jp

    Go Conference 2014 Autumnレポート Go言語の父と呼ばれるRob Pike氏による基調講演~Go Conference 2014 Autumn基調講演1人目 2014年11月30日(日)に、楽天タワーにてGo Conference 2014 Autumnが開催されました。Go Conference(GoCon)は2013年に始まり、年に2回、春と秋に開催される日最大のGo言語のカンファレンスで、今回で4回目となります。今回は基調講演にGo言語の父と呼ばれるRob Pike氏と日Go言語の第一人者の鵜飼氏を招いていることもあり、今までで最も大きい規模となりました。 写真1 会場の様子 この記事では1人目のRob Pike氏の基調講演についてレポートを書きたいと思います。この基調講演では「Simplicity is Complicated」というタイトルで、Go

    Go言語の父と呼ばれるRob Pike氏による基調講演~Go Conference 2014 Autumn基調講演1人目 | gihyo.jp
  • Goに入ってはGoに従え

    Goに入ってはGoに従え Go Conference 2014 autumn 30 November 2014 鵜飼文敏 Fumitoshi Ukai Google Software Engineer - Chrome Infra team Go Readability Approver Go言語のReadabilityをレビューするチーム コードレビューを通じてGo言語のよいコードの書きかたを教える メインのプロジェクトとは別のコードをレビュー 一年前くらい前に参加して 20% timeで 200くらいのCLをレビューしました 今は一日3CLくらい、週に12CLほどのペースでやっています Gopher by Renée French 2 Readabilityスキルとは? プログラミング言語のリテラシー 作法にかなったやりかた で、読んだり書いたりできる能力 言語ごとに作法が違う C++

  • go-toolのpresentで作ったスライドショーを公開する - Qiita

    http://talks.golang.org/ などにあるGoに関するスライドショー。 左右キーでページ送り出来るのですが、 スマホで見れなかったりして、 使いづらいのによくみんな使っているなあと思ってたら、 どうやらこのスライドはgo.toolsにあるpresentという パッケージを使っているということに気づきました。 つまりは「Goの勉強会で発表で使うと差がつけられる!」ということのようです。 以下、作り方のメモ。 ローカルで閲覧できるようにする presentを使ってローカルにスライドショーを作成。 presentのインストール $ present --help Usage of present: -base="": base path for slide template and static resources -http="127.0.0.1:3999": HTTP ser

    go-toolのpresentで作ったスライドショーを公開する - Qiita
    ryochack
    ryochack 2014/11/30
    go-talkツールのスライドフォーマットや公開方法についての日本語説明
  • Go docs

    ryochack
    ryochack 2014/11/30
    go-talkについての説明
  • 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言語の便利情報 - ゆううきブログ