Goで DataMapperじゃなく、ActiveRecordライクにDB操作したいと思ってつくってみました。 go/parserとgo/astでソースを解析、個々の構造体ごとにARなコードを生成します。 argen ActiveRecord** Gen**eratorでargenです。 クイックスタート テーブルを表す構造体に+ARアノテーションをマークします。
libwebpとlibjpegのGo bindingであるgo-libwebpとgo-libjpegをつくった。 それぞれWebPとJPEGファイルのデコード/エンコードに対応している。どちらもimage.Imageを扱うことが出来てimage/jpegやimage/pngと同じ感覚で使えるインターフェースにしている。たとえばgo-libjpegのサンプルコードは次のような感じ。 package main import ( "bufio" "image/png" "log" "os" "github.com/pixiv/go-libjpeg/jpeg" ) func main() { // Decoding JPEG into image.Image io, _ := os.Open("in.jpg") img, err := jpeg.Decode(io, &jpeg.DecoderOp
原文:http://npf.io/2014/10/why-everyone-hates-go/ 酔っぱらった勢いで訳出してるので、違ってたら修正リクエストください。 訳者の1行でわかるサマリ それって、Goのシンプルな言語哲学が、ML系言語好きのアイデンティティを挑発しちゃってるからじゃないの? いや、実際みんなって訳じゃないんだろうけど。最近、なんてGoをみんなそんなに批判的なのかって言うquoraの質問が出たもんで。(わるい、普段はquoraへのリンクを張らないんだけど、それがこの記事のきっかけだからね。)この質問への回答を見るまえにもう、僕には、次みたいなことが書かれていることがわかってた: Goは70年代に立ち往生した言語だ Goは40年間に及ぶプログラミング言語研究の成果を無視してる Goはブルーカラーの凡夫のための言語だ Go使いはJava1.0で仕事しても大丈夫なんだろう。
今回の勉強会、自分的にも久しぶりに出る勉強会でもあるんだけど、なんと当方多分初めてPerl以外の話を(まともに)公でしてきました。資料は… YAPC後で上げます! 追記: ustの録画があるようです。最初の10分間は僕が主催者とだべってるだけなので飛ばしてください。あと残念ながら会場からの質問が聞こえないですが、まぁわかる…はず 今回はYAPC::Asia Tokyo 2014で話すネタの前哨戦という事で「そもそも俺の話したいネタに需要はあるのか?」とか「この内容でわかってもらえるのか?」とかを調べる意味合いもかねて話してきました。結果的には自分が喋りたい事を聞きたい人も一定数いることはわかったので大変よかった。 質疑応答を絡めた発表をやりたい!と思ってたんだけど、俺の今までのYAPCでの8年にわたる経験だと日本では誰も質問というか、発声をしないからそのまま始めたんじゃ質問は期待できないと
私はGo言語が気に入っていますし、多くの場面で使用します。現にこのブログもGoで書いています。Goは便利な言語ですが、優れた言語とは言えません。つまり、悪くはないけれど、十分ではないということです。 満足できない言語を使用する際は注意が必要です。注意を怠ると、その言語を次の20年間使い続ける羽目になるかもしれないからです。 私のGoに対する主な不満を本文にまとめました。既に何度も指摘されていることも含まれていますが、中にはこれまでほとんど話題になっていない指摘もあります。 これから列挙する全ての課題には既に解決策があることを示すため、私が優良な言語と考えるRustやHaskellと比較して説明します。 汎用プログラミング 課題 誰でもさまざまな事柄に幅広く対応できるコードを記述したいと考えます。例えば数のリストの合計を求めるために定義した関数が、小数、整数、またその他の合計を求められるもの
PC間でのファイル受け渡しのときにファイルサーバを使うことがたまにありますが、OSによってファイルパスやその書式が違ったり、受け渡し用のディレクトリをつくるとか、ファイル渡したいだけなのに、なんだか小さなひっかかりがあってスマートじゃないなあといつも感じてました。 なので、もっと直感的に「ほい、これ」って渡せるツールをつくってみました。 Hoi Hoiはファイルの受け渡しを簡単に行うためのコマンドラインツールです。Go言語で書かれており、HTTPファイルサーバを利用して機能を提供します。 monochromegane/hoi (An easy file transfer tool using http file server.) ファイルを渡す 使い方は簡単でローカルのファイルパスをhoiコマンドの引数に渡すだけです。 そうすると以下のような、ダウンロード用のURLが出力されます。 htt
Instalasi Android Pindai kode QR untuk Android Pilih buka situs web Pilih "UNDUH" untuk mengunduh APK Kami Pilih "PENGATURAN" Pilih "Mengizinkan" dari sumber kami Pilih "Terima" Pilih "INSTAL" SLOTFAFA88 merupakan situs dewa slot 88 terbaik dan judi slot online gacor terpercaya di Indonesia yang telah menghadirkan jenis game dewaslot88 terlengkap. Agen 88 slot slot fafa88, para bettor dapat merasa
June 28, 2014 - golang DockerCon2014で発表されたlibchanについて調べたことをまとめてみます。 libchanはlibcontainerやlibswarmと共に発表されました。 libswarmはDockerを中心にしたエコシステムにおけるベンダーロックインを回避するためのソリューションであり、libcontainerはDocker 0.9リリースドキュメント日本語訳: Execution driversとlibcontainer導入 - Happy New Worldを参照するのがよいでしょう。 では、libchanとは何なのでしょうか。 READMEにはlike Go channels over the networkとあります。ネットワーク上のgo channel?よくかりませんね。。。 README.mdとPROTOCOL.md、いくつかのテ
高速にGo言語のCLIツールをつくるcli-initというツールをつくった tcnkms/cli-init・GitHub cli-initを使えば,Go言語コマンドラインツール作成時のお決まりパターンをテンプレートとして自動生成し,コア機能の記述に集中することができる. デモ 以下は簡単な動作例. 上のデモでは,addとlist,deleteというサブコマンドをもつtodoアプリケーションを生成している.生成結果は,tcnksm/sample-cli-initにある. 背景 Go言語で作られたコマンドラインツールを見ていると,codegangsta/cliというパッケージがよく使われている. これは,コマンドラインツールのインターフェースを定義するためのライブラリで,これを使えば,サブコマンドをもつコマンドラインツールを簡単につくることができる(Usageを自動で生成してくれたり,bash
SoundCloudが2年半ほどGo言語を利用したプロダクトを本番で運用した知見をGopherConで発表していた(“Go: Best Practices for Production Environments”).その中で“CodeReviewCommentsというGoogleでのGo言語のコードレビューにおいてよくあるコメントをまとめたサイトが紹介されていた. 最近Go言語を書くようになり,使えそうなのでざっと抄訳してみた.“リーダブルコード”的な視点も含まれており,Go以外の言語でも使えそう. gofmtでコードの整形をすること コメントは文章で書くこと.godocがいい感じに抜き出してくれる.対象となる関数(変数)名で初めて,ピリオドで終わること // A Request represents a request to run a command. type Request str
ここ最近熱くなっているGo界隈ですが、開発が熱心に行われているとどんどんバージョンアップしていきます。その度に若干動作が変わったりして最新版を追いかけるのも大変です。さらに1.1系、1.2系でライブラリがちゃんと動作するかを確認するのも面倒になるでしょう。 そこで便利なのがプログラミング言語のバージョン管理ツールです。renvやPyenv、rvmなどが有名なジャンルですね。gobrewはGo向けに作られたインストール&切り替えツールです。 gobrewの使い方 インストールは簡単で、curlまたはwgetでできます。 $ curl -L https://raw.github.com/grobins2/gobrew/master/tools/install.sh | sh $ wget --no-check-certificate https://raw.github.com/grobins
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
この前herokuにgolangのアプリを初めてデプロイしたんですが、絶対に忘れそうな手順だったので、次にやるときにここ見ればできるようにメモっておきます。 手順 1. .godirを用意する。 プロジェクトのルートにgo get先を記した.godirを用意します。 $ echo "github.com/yosuke-furukawa/goweb-sample" > .godir2. Procfileを用意する。 $ echo "web: goweb-sample" > Procfilego buildで作られるバイナリを実行する形式で指定しておく。 3. goのbuildpackを入れてheroku createする $ heroku create -b https://github.com/kr/heroku-buildpack-go.git goweb-sampleheroku-bu
1つのJenkinsの環境で複数のプロジェクトのテストが実行されることは、ままあると思う。Jenkins上で動作するすべてのプロジェクトが同時に動作するようにJenkins環境を整えるのは難しいことがある。あるプロジェクトのためにライブラリのバージョンを更新したことで、別のプロジェクトのテストが落ちるとか。 Ruby なら Bundler やrbenvを使って環境を切り替えるとだいたい解決するけど、libhogeみたいな共有ライブラリやBundlerやrbenv自体の更新とか、どうしても共有される部分はあって、だいたい普段は問題はないが、まれに困ると言う感じだと思う。 そこで、テストごとにDockerのコンテナを立ち上げてその中でテストを実行するようにすれば、環境を独立させることができるので、環境をこわさないように丁寧に設定するみたいなことに気を使わなくてよくなるので便利。 miyagaw
benchmark+go+nginx.md Benchmarking Nginx with Go There are a lot of ways to serve a Go HTTP application. The best choices depend on each use case. Currently nginx looks to be the standard web server for every new project even though there are other great web servers as well. However, how much is the overhead of serving a Go application behind an nginx server? Do we need some nginx features (vhosts
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,
色々調べてたらgo でHTTPサーバーをgraceful restartする方法の記事にあたって、そのなかでシグナルを受け取るとリクエストを受け取ったらそれまでに受け付けたリクエストを処理してから停止するmannersというツールを見つけた。さらにゼロダウンタイムでサーバーを再起動するgoagainというツールも見つけたんだけど、これはサーバー内のコードをそれなりに変更しないといけないっぽくてうんざりしてしまった。 「っていうか普通にServer::Starterをかませるようにできればよくね?」と思ったので、go-server-starter-listenerを書いてみた!使い方はREADMEにあるとおり。このようなコードを書いておいてからstart_server --port XXX -- ./your-go-program って感じで動作させればServer::Starterが保持し
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く