増井 雄一郎 Engineer&Product Founder / 株式会社Bloom&Co.CTO / 『スタッフエンジニア マネジメントを超えるリーダーシップ』解説者
はじめに 普段自分はmotemenさんのghqを使ってリポジトリを管理しています. これを用いた場合,通常は~/.ghq以下の適当な位置にリポジトリが配置されます. ところで最近,go言語に手を出したのですが,はじめに$GOPATHを~/.goと設定して作業し始めました. しかしこの場合,ghq getしたリポジトリが$GOPATH/src以下に配置されないことから,importやdepを使う際にエラーが生じました. そのとき,この問題について検索すると様々な解決方法がヒットし,どの方法が最適解なのかわからずややハマってしまいました. そこで今回はgo言語のリポジトリを扱う上でどの方法が良いのかまとめてみようと思います. ghqを活用する上でgo言語のリポジトリをどのように扱うか 方法1 $GOPATHを複数設定する まずは$GOPATHが設定されていないことが問題なのでそれを設定すること
はじめに 「開発者(個人)のための」としているのは、別に自分でやっても良いんだけど Jenkins に任せられるなら任せたい、くらいのモチベーションを表現したつもりです。 ここでは、スレーブの作り方と使い方を簡単にまとめてみました。 環境 Ubuntu 14.04 LTS Jenkins 1.580, 1.582 途中から 1.582 に Upgrade しました スレーブの設定方法 まずはスレーブを作ってみる とりあえず作るなら、localhost だけで十分です。 スレーブの新規作成 スレーブの設定 赤枠で囲んでいる部分が、手を加えている場所です。 「リモートFSルート」はディレクトリを指定します。存在しないディレクトリでも構いません。勝手に作ってくれます。 「ラベル」は空白区切りで複数指定できます。私はついついコンマ区切りと間違えてしまいます。 起動方法は、「SSH経由でUnixマシ
TL;DR Go Modules(vgo)はGo1.11から導入され始めたGoの新しいバージョン管理 Go1.12ではまだ有効にはなっていない(Go1.13からはデフォルトで有効になる) Go Modulesの概要とTipsなどを簡単にまとめた Go1.12のModules関連の変更をDockerを動かして確認してみた GOPATHi外でgo.modがなくてもgo run可能 replaceディレクティブで依存パッケージをローカルのコードを使って解決 etc… 確認に利用したDockerfileやスクリプトは以下のリポジトリにある。 https://github.com/budougumi0617/gomodules-explore vgo発表前のGoのバージョン管理は以下のような手法が取られていた。 go getでgo1タグ・ブランチもしくは最新のmasterブランチを取得する go g
17 Apr 2016 Shrink your Go binaries with this one weird trick Ok, I lied, there's no weird trick. However, you can easily reduce a Go binary size by more than 6 times with some flags and common tools. Note: I don't actually believe a 30MB static binary is a problem in this day and age, and I would not trade (build time | complexity | performance | debug-ability) for it, but people care about it ap
intro 先日 GoのSliceもヤバイ - Qiita こんな記事をみて、別の挙動だけどスライスの内部を理解しきれていなかった頃のことを思い出した。 結構前に謎に思っていた挙動についての話。 以前この挙動を解説しようと思って、前提として書いたスライスの内部構造の記事が、 Go のスライスの内部実装 だったのですが、そっちを書き終わって満足してしまい、本題を忘れていました。 この挙動は、先のブログで説明した内容がわかっていないと、なかなか理解できないかも。わかってしまえば簡単ですが。 やりたいのは、関数側でスライスを操作したときの呼び出し側での結果。 順を追ってみてみます。 配列を関数内で変更する 関数は値渡しで、配列はそれ自体が値なので、まるっとコピーされます。 以下の例は、戻り値で返さないと、呼出側は変化しません。 package main import ( "log" ) func
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 =
Qiitaは2ヶ月ぶりです。 GopherCon2014でSoundCloudの方がプロダクションでGoをどう使うかというところで発表されていたようです。その内容がブログで公開されていたので、僕の勉強も兼ねて翻訳することにしました。 英語は得意でないのですが、ザクッと訳してみました。きっと間違い有るので、どうかご指摘ください。 元ネタ:http://peter.bourgon.org/go-in-production/ スライド:https://github.com/gophercon/2014-talks/blob/master/best-practices-for-production-environments.pdf プロダクション環境でのベストプラクティス SoundCloudでは、たくさんのクライアントに対してAPIの形でプロダクトを提供するようにしています。ですから、ウェブサイ
環境構築するまでに知りたかったこと Golangの最新バージョンは? 1.16.6 (2020/07/12リリース) Goのインストール方法は? macOS の場合は brew で OK この場合、goのsdkは /usr/local/Cellar/go/<バージョン>/libexec にインストールされます。 IntelliJ IDEA や GoLand にような IDE に「GOROOT」というものの指定を求められたら、このパスを使います。 brew で入らないバージョンの go が必要だったり、いくつかのバージョンを併用したい場合は $ go get golang.org/dl/go1.14.4 $ go1.14.4 download # 1.xx.0 の場合 $ go get golang.org/dl/go1.15 $ go1.15 download # 上記でgo getしたg
以下の例では、関数へのポインタとしてfunc_ptrが宣言され、そこへ関数my_functionのアドレスを割り当てている。そしてfunc_ptrを通じて関数を呼び出している。 #include <stdio.h> static int my_function(int a) { printf("my_function: %d\n", a); return 2 * a + 3; } int main(void) { int (*func_ptr)(int a) = my_function; /* あるいは以下でも可能 */ /* int (*func_ptr)(int) = &my_function; */ int x; x = (*func_ptr)(10); /* あるいは以下でも可能 */ /* x = func_ptr(10); */ printf("main: %d\n", x);
間接参照(かんせつさんしょう、英: indirectionもしくは英: indirection reference)とは、コンピュータのプログラミング、特にプログラミング言語において、ある値 (value) を、値そのものによってではなく、名前 (name) や参照 (reference) などにより間接的に指し示すこと、およびその参照自身のことや、それを参照して操作することである。 英語の direct は「指示する」「直接の」という意味があり、indirect は「間接的な」という意味がある。また、indirection は「遠回り」「回り道」という意味がある。通例「参照」という日本語は英語の reference に対応するが、プログラミングの用語および規格の文脈では indirection の一語だけでも「間接参照」を意味する。また、デリファレンス(dereference)とは、参照
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く