タグ

golangに関するtora_05_036jpのブックマーク (27)

  • Pelletkachels.nl

    Pelletkachels waren ooit eenvoudige apparaten voor verwarming, maar ze hebben een opmerkelijke evolutie doorgemaakt sinds hun bescheiden begin in de jaren ’80 van de vorige eeuw. In dit artikel duiken we diep in de geschiedenis van pelletkachel, bespreken we de belangrijkste mijlpalen en ontwikkelingen op het gebied van subsidiemogelijkheden en werpen we een blik op de transformatie tot moderne en

    Pelletkachels.nl
  • はじめての Go 言語 (on Windows) その2 - Qiita

    前回の続き。 Go 言語(golang)はネットにあるドキュメントがかなりしっかりしているので言語仕様で悩むところはあまりない。 golang.jp - プログラミング言語Goの情報サイト なので、体系的に説明するのではなく、具体例で遊びながらこの言語の癖等を調べていくことにする。仕事に使うなら厳密な評価が必要だけど、今のところはそんな予定もないし、まずはテキトーで(笑) では、これまたみんな大好き素数探索アルゴリズムで遊ぶ。 素数の定義 このサイトに訪れるような方には「釈迦に説法」だと思うが、素数(prime number)の定義を以下に示す。 1 と自分自身以外に正の約数を持たない 1 より大きい自然数 ここで自然数(natural number)は「ペアノの公理」に従う。(0 が自然数に含まれるかどうかについては色々あるみたいだが、素数の定義には影響がないので、ここでは無視する) 素

    はじめての Go 言語 (on Windows) その2 - Qiita
  • Pelletkachels.nl

    Pelletkachels waren ooit eenvoudige apparaten voor verwarming, maar ze hebben een opmerkelijke evolutie doorgemaakt sinds hun bescheiden begin in de jaren ’80 van de vorige eeuw. In dit artikel duiken we diep in de geschiedenis van pelletkachel, bespreken we de belangrijkste mijlpalen en ontwikkelingen op het gebied van subsidiemogelijkheden en werpen we een blik op de transformatie tot moderne en

    Pelletkachels.nl
  • Go For Perl Mongers - YAPC::Asia Tokyo 2014

    しばらくGoを書いてきて、GoPerlを使っている人たちにとってとても相性のよい言語だと思うようになりました。 Perlでは手が届かないかゆいところに手が届くし、速いし、バイナリを作って設置するのも簡単です。 しかしながらGoを書き始めるにあたっては多少それまでPerlや他のLLで培ってきた考え方を変える必要があります。 トークでは、Goを多少触った事があるけれどもまだちゃんと「Goのやりかた」をつかめてないというPerl(もしくはLL系)の方を主な対象としてGoを書く際に知っておきたい知識を具体的な実例を交えて紹介します。 できれば、下記のトピックだけでなく、会場で具体的な質問なども受けたいと思っていますので、もしこのトークが採択されて聞きにきていただける場合はぜひ質問を持ってきて、大声で聞いてください。 goroutineのコントロール (or, "Forget about POS

  • Google Managed VMs で nginx を建ててみた - yanoの日記

    今更ですが、Managed VMs で nginx を建ててみました。GAE に Docker が使えるというのはとても便利ですね。GCE より手軽に使えるのが魅力です。 github appengine-nginx-hello を頼りに試しに nginx を動かしてみたところ、こちらの github のページに古い情報が残っていて多少躓いたので、今はどうなっているのかを書こうと思います。 GoogleCloudPlatform/appengine-nginx-hello · GitHub 1点目 gcloud preview app run /path/to/appengine-nginx-helloとありますが、今は run の引数にフォルダを指定するのではなく、app.yaml を指定するようになっています。 github の appengine-nginx-hello は古い実行方

    Google Managed VMs で nginx を建ててみた - yanoの日記
  • Go のスライスの内部実装 - Block Rockin’ Codes

    History 14/05/09: Merge2 を修正しました。http://twitter.com/jbking/status/464659353945911297 Intro Go のスライスは、いわゆる LL 系の言語が持つ可変長配列の実装と似ています。 よって LL のような手軽な扱いをすることもできますが、その内部実装を知ることでより効率の良いメモリハンドリングができ、パフォーマンスを改善や、メモリーリークの防止などに繋がる可能性があります。 この辺は SWrap というライブラリを作りながら勉強したので、今回は、この Go のスライスの内部実装を解説します。 Go の配列 スライスを知るためには、まず配列について知っておく必要があります。 Go の配列は固定長のため、以下のように長さを指定して宣言します。 var arr [4]int func main() { arr =

  • Go言語 スライスのappendについて

    Google Developer Group 神戸: Googleテクノロジーを活用したり、 勉強会をしたりする活動をしています。 こんにちは。scarvizです。 今回はスライスのappendについて注意したい点を取り上げます。 ■スライスのappendの動き 初期化済みのスライスに新たに要素を追加したい、スライスとスライスを連結させたい、という場合があると思います。 そういう時にappendを使用します。 以下のコードで、最初に出力されるのは要素の追加、次に出力されるのはスライスの連結です。 スライスにスライスを連結させる場合、連結させるスライスの後に「...」をつけることを忘れないようにしてください。 package main import "fmt" func main() { // スライス初期化 intSlice := []int{1, 2, 3} // 新たに"4"という値

  • Big Sky :: Goプログラマであるかを見分ける10の質問

    下記質問にそれぞれ50文字以内を目安に簡単に説明すること。 パッケージ内に定義した関数を外部に公開するにはどうすれば良いか? 非同期に処理を行う為の命令は? 関数を抜けた際に処理を実行するにはどうするか? goroutineの同時実行数を変更するにはどうするか? コンパイラやリンカが8g/6g/5g、8l/6l/5lという名前になっている理由は? Goのガベージコレクションの実装は一般的に何と呼ばれている類か? レシーバがnilの場合にメソッドを呼び出すと何が起きるか? 可変個引数はどの様に定義するか? 関数内で定義されるローカル変数のアドレスを戻り値として外部から参照するとどうなるか? interfaceとstructの違いは何か? panicを補足して強制終了させない為にはどうするか? 答え パッケージ内に定義した関数を外部に公開するにはどうすれば良いか? 関数名の先頭を大文字にします

    Big Sky :: Goプログラマであるかを見分ける10の質問
  • Go言語で並行処理の待ち合わせを書いてみた - 綺麗なコードが良い

    Go言語のgoroutineとchannelを使うと、並行処理の待ち合わせを簡単に書ける。 10個の並行処理を生成して、それらが全て終わったのを待って、10個の平行処理の結果を使って何かの処理をする、という場合だと次のように書けば良い。 並行処理の呼び出し側で、待ち合わせ用のバッファなしチャンネルを一つ作って、そのチャンネルを並行処理を起動するときに渡す。 それぞれの並行処理処理は、自分の計算が終わったら、そのチャンネルに完了通知を送る。 並行処理の呼び出し側では、全ての並行処理から完了通知を受け取ったら、次の処理に移る。 ★WOZ★ //コードここから package main const NumberOfProc = 10 func myfunc(i int, c chan int) { println(i) c <- 1 } func main() { c := make(chan

    Go言語で並行処理の待ち合わせを書いてみた - 綺麗なコードが良い
  • Big Sky :: Golang の channel の使い所

    golang の特徴と言えば goroutine と channel ですが、その使いどころに悩む人もおられる様です。 goroutine は非同期に実行される処理、channel はその groutine と通信する為の仕組みと考えると分かりやすいです。 package main import ( "fmt" "time" ) func main() { task := make(chan string) taskquit := make(chan bool) workerquit := make(chan bool) go func() { loop: for { select { case <-taskquit: workerquit <- true break loop case job := <-task: fmt.Println(job) } } }() go func() {

    Big Sky :: Golang の channel の使い所
  • Big Sky :: Go言語でインタフェースの変更がそれ程問題にならない理由

    golang - Go言語における埋め込みによるインタフェースの部分実装パターン - Qiita [キータ] http://qiita.com/tenntenn/items/e04441a40aeb9c31dbaf golang はインタフェースがマッチしているかどうかにより処理を切り分けられる。 package main import "fmt" type Person struct { FirstName string LastName  string } func (p *Person) Name() string { return p.FirstName + " " + p.LastName } func main() { person := &Person{"Taro", "Yamada"} fmt.Println(person.Name()) } メソッドを保持しているのであれ

    Big Sky :: Go言語でインタフェースの変更がそれ程問題にならない理由
  • golang でループを手っ取り早く並列化する方法 — KaoriYa

    func execLoop(list []Item) { for _, item := range list { do_something(item) } } list に格納された各 item に対して do_something() を適用する、よくあるタイプのループ処理です。 goroutine で並列化、その副作用 golang ではこの do_something() の適用を超お手軽に並列化できます。あ、もちろん do_something() はリエントラントである前提ですね。

  • gowalker.org

    This domain may be for sale!

    gowalker.org
  • Effective Go - The Go Programming Language

    Introduction Go is a new language. Although it borrows ideas from existing languages, it has unusual properties that make effective Go programs different in character from programs written in its relatives. A straightforward translation of a C++ or Java program into Go is unlikely to produce a satisfactory result—Java programs are written in Java, not Go. On the other hand, thinking about the prob

    Effective Go - The Go Programming Language
  • 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
  • effective-goではない何か - 日々是鍛錬

    去年からGolangを書き散らかしてみて、だいぶセンス感じとれるようになってきたので、Golangを書くときのイディオムのようなものをまとめてみる。 Golangをコーディングするディレクトリ 簡単な、10行20行くらいで済むコードであればどこで書いてもいいのだけれども、 ライブラリだったりモジュールに分けるレベルの規模のコードだと、コーディングするディレクトリは、$GOPATH直下、または$GOPATHへのsymlinkにしたほうが良い。 例えば、ライブラリを作成しようとしてホスティング場所はGitHubだとする。 その作成しているライブラリを使ってサンプルコードを書こうとすると、 import宣言は、 import ( "github.com/yoppi/a-library" ) となる。 ただ、$GOPATHにないとビルドできないので、まだGitHubにpushしていない場合はもちろ

    effective-goではない何か - 日々是鍛錬
  • Go の interface 設計 - Block Rockin’ Codes

    history 13/3/31 Tag について追加 intro Go を触ってて interface を用いた設計がまだまだよくわかってなかったので、一旦まとめることにしました。 Go には明示的な継承の機能は無く、 interface も例えば Java のそれとはかなり毛色が違うので、(Class ではなく) Struct の設計に結構癖があると感じます。 Go の interface は言語設計的にもかなり尖っていて、 Go という言語を強く特徴付けていると同時に、 Go 言語自体の開発者たちもこの機能をかなり重要視しています。 例えば、 Go の開発者の一人である Russ Cox 氏によれば Go's interfaces―static, checked at compile time, dynamic when asked for―are, for me, the most

    Go の interface 設計 - Block Rockin’ Codes
  • Go言語での構造体実装パターン

    Go言語での構造体実装は、埋込や独自コンセプトのインターフェースといったGo言語独自の機能を理解して行う必要があります。 今年からGo言語を始めましたが理解が曖昧なままだと実装に迷うことが何度かありました。今回よい機会なので、Go言語での構造体実装パターンとしてまとめてみることにしました。 構造体実装パターン 実装パターンの洗い出しとして、GoFデザインパターンをGo言語で実装する手法をとりました。 その中で繰り返し現れる実装をGo言語での構造体実装パターンとしてまとめてみました。 コンストラクタ関数 エクスポートによるアクセス許可 インターフェースによるポリモフィズム 構造体によるポリモフィズム 構造体によるサブクラス・レスポンシビリティ 構造体による移譲 関数による移譲 以下、それぞれのパターンを解説していきます。 コンストラクタ関数 Go言語には構造体のコンストラクタがないため、構造

    Go言語での構造体実装パターン
  • golangでjsonの文字列からstructのコードを作る #golangjp

  • Big Sky :: Vimを使ったGo言語開発手法

    先日、Go言語バージョン1.1がリリースされました。安定しているのは勿論、幾つか新機能が追加されましたが、何よりもパフォーマンスチューニングが施された一番嬉しいですね。 Go 1.1 performance improvements | Dave Cheney This is the first in a series of articles analysing the performance improvements in the Go 1.1 relea... http://dave.cheney.net/2013/05/21/go-11-performance-improvements さて今日はVimを使ってGo言語を開発する方法を紹介したいと思います。 VimGo言語を開発するには、Go言語のリポジトリに含まれる misc/vim にランタイムパスを追加します。以下を vimr

    Big Sky :: Vimを使ったGo言語開発手法