Thoughts about programming, mostly
What is Goji? Goji is a HTTP request multiplexer, similar to net/http.ServeMux. It compares incoming requests to a list of registered Patterns, and dispatches to the Handler that corresponds to the first matching Pattern. Goji also supports Middleware (composable shared functionality applied to every request) and uses the standard context to store request-scoped values. Quick Start Install Goji by
Java の finally よりも golang の defer のほうが筋が良さそうだ、 ということから考え始めた結果、 どうして私が golang を気に入ったのかがわかった気がしたので書いておきます。 ファイルをオープンし読み込みな処理で何かして終わったら閉じる、という関数を Java と golang で書き比べてみましょう。 Java で書くとこんな感じですね。 public static void readFile(String fname) throws IOException { InputStream s = null; try { s = FileInputStream(fname); // // Do something with "s". // } finally { if (s != null) { s.close(); } } }
golangいまどき例外ないの頭おかしいって思ってたけどようするにgoroutineと例外がうまくいかないからgoroutineのほう取って例外捨てたってことかねえ。 — Urabe, Shyouhei (@shyouhei) April 15, 2014 FAQ に書いてあります。 Why does Go not have exceptions? - Frequently Asked Questions (FAQ) - The Go Programming Language We believe that coupling exceptions to a control structure, as in the try-catch-finally idiom, results in convoluted code. It also tends to encourage programme
これを試したときのバージョン: go version go1.0.1 実行環境:Mac OS X Lion 下準備 Goはソースからコンパイルしておきます。これを参考に:http://golang.org/doc/install/source $ hg clone -u release https://code.google.com/p/go $ cd go/src $ ./all.bashとしてインストールしておきます。 まずは、以下の hello.go を普通にコンパイルしてみます: package main import "fmt" func main() { fmt.Println("Hello, 世界") } を $ go build hello.go $ file helloとすると hello: Mach-O 64-bit executable x86_64となってますね。M
以前から興味はあったけど手を出していなかったGo言語ですが、Go 1.1のリリースで、64bit整数も使えるようになったことだし、そろそろやってみる事にします。当面の目標は今までC++で書いていたネットワークサーバ・プログラムをGoで書くことです。 環境構築 普段使っているOSXにGo言語の環境を作ります。 Go言語のインストール 参考 Homebrewであれば以下のコマンドで一発です。 $ brew install go $ cat hello.go package main import "fmt" func main() { fmt.Printf("hello, world\n") } $ go run hello.go hello, world 環境変数 Go関連の環境変数を設定します。 brew upgrade したらGOROOTの設定も変わるようにしています。 参考 progr
(2014-03-25) 書き直しました.このエントリも参考になる部分はあるので置いときます ^^; → (改訂版) docker 0.9 で導入された libcontainer の Namespace 関連の処理 - TenForwardの日記 (2014-03-25) このエントリは色々おかしいので書きなおし中です (2014-03-16) 再度,Clone と Setns の部分の表現を修正しています. (2014-03-11) 公開後,細かい所を修正しています. docker 0.9 がリリースされて,なんかすごいことになっていますね.その辺りの詳しくは Docker 0.9リリースドキュメント日本語訳: Execution driversとlibcontainer導入 - Happy New World をどうぞ. さて,このバージョンの目玉のドライバさえ書けばどんなコンテナツー
http://blog.cloudflare.com/its-go-time-on-linux 1 comment | 1 point | by WazanovaNews ■ comment by Jshiike | 約3時間前 CloudFlareは、こちらのブログ によると、DDoS攻撃のトラフィックに対応できるように、PowerDNSからGo言語で書いた内製のRRDNSに昨年移行しているようです。 今回は、その内製DNSサーバでも重要な役割を果たしている、Go言語におけるタイムスタンプ取得とLinuxカーネルの関係について解説しています。 Time in Go Go言語のtimeパッケージで最もよく使う time.Now については、Sourcegraph に6,000ケースの利用事例がある。 System calls まずは、Linuxでクロック値を取得するために利用できるシステ
Products Docker DesktopContainerize your applicationsDocker HubDiscover and share container imagesDocker ScoutSimplify the software supply chainDocker Build Cloud Speed up your image buildsTestcontainers Desktop Local testing with real dependenciesTestcontainers Cloud Test without limits in the cloud See our product roadmapMORE resources for developers
http://www.youtube.com/watch?v=qATTTSg6zXk 1 comment | 1 point | by WazanovaNews ■ comment by Jshiike | 約3時間前 YouTubeのシステムアーキテクトであるSugu SououmaraneのFOSDEM 2014での講演です。スライドはこちらからダウンロードできます。 1) Vitessとは Vitessは大規模な本番環境でMySQL DBを効率的に利用するためのオープンソースプロジェクトです。概要はプロジェクトゴールのページ にまとまってます。 MySQLは機能が豊富だがスケールさせるときは苦労する。一方、NoSQLはスケーラビリティには問題がないが、アプリケーションが複雑になるとできることに限界があるのがネックになる。セカンダリインデックス、joinsなどがサポートされていない。
大量にあるファイルのファイル名を一括で変更する場合、どうしても GUI での操作であったりマッチパターンを書くのが面倒だったりしましたが、massren を使えば誰でも簡単にファイル名の一括置換が出来る様になります。 laurent22/massren - GitHub massren - Easily rename multiple files using your text editor https://github.com/laurent22/massren お気に入りのテキストエディタを使って、好きな様にファイル名を変更出来ます。サポートしているOSは Windows, Linux, OSX です。中身は golang で書かれています。 それぞれバイナリが用意されているので自分でビルドする必要はありません。Linux と OSX の人はリンク先にある手順を、Windows の人は
Go言語の名前の由来について、デマを思いついたGo言語の名前の由来について、デマを思いついたので、ちょっと面白いと思った人は広めてほしい。 Go言語の名前の由来って知ってる? あれは日本語の数字の5(ゴー)から来てるんだよ。 5は4(シー)、つまりC言語の次だから。 つまりC++やC#と同じ由来なのね。 あ、C#はC++++なんだよ。知ってた?(注:これは本当) こんな感じで。 Go言語はブレイク寸前であり、かなりの関心を集めているが、まだ詳しく知られてはいないので、デマを広めるには今が絶好と思う。 なんでロブ・パイクやケン・トンプソンが日本語を知ってるんだ、ともっともな指摘を受けた場合こんな感じで返していただきたい。 ロブ・パイクやケン・トンプソンがUTF-8の考案者だということは知ってる?(注:これは本当) で、彼らがそれを考案するきっかけは、慶應の村井純先生が、ベル研で「日本語」につ
1つのJenkinsの環境で複数のプロジェクトのテストが実行されることは、ままあると思う。Jenkins上で動作するすべてのプロジェクトが同時に動作するようにJenkins環境を整えるのは難しいことがある。あるプロジェクトのためにライブラリのバージョンを更新したことで、別のプロジェクトのテストが落ちるとか。 Ruby なら Bundler やrbenvを使って環境を切り替えるとだいたい解決するけど、libhogeみたいな共有ライブラリやBundlerやrbenv自体の更新とか、どうしても共有される部分はあって、だいたい普段は問題はないが、まれに困ると言う感じだと思う。 そこで、テストごとにDockerのコンテナを立ち上げてその中でテストを実行するようにすれば、環境を独立させることができるので、環境をこわさないように丁寧に設定するみたいなことに気を使わなくてよくなるので便利。 miyagaw
http://github.com/moriyoshi/ik
Goの cgo という機能を使うと、GoからCの世界のコードを呼んだり、呼ばれたりすることができる。 Perlで言うところのXSというやつだ。 このcgoを使ったGoプログラムは、昔はMakefileを利用してビルドしていたそうだが、 1.0からは go get や go build と言った、go toolがcgoに対応したのでそういうことも必要なくなっている。 cgoの基本的な使い方 まずは import "C" として、Cという疑似パッケージをimportする。 このパッケージを使うと、 C.fprintf(...) というような感じでCの世界にアクセスできるようになる。 また、このimport文の直前のコメントはCのコードとして解釈される。 なので、 package main /* #include <stdio.h> void hello() { fprintf(stderr,
Masanori Ogino @omasanori Rustがsegmented stackをやめた件 https://t.co/fSibG8zoqA を見逃していたので、別の議論でsegmented stackをやめてないと成り立たない話が展開されて混乱した 2013-11-15 19:28:47
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く