You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
2015-03-21 golangでいい感じにwebサービス書くの考える(5) golang 最近読んだ本 インターフェイス指向設計 ―アジャイル手法によるオブジェクト指向設計の実践作者: Ken Pugh,角谷信太郎(監訳),児島修出版社/メーカー: オライリージャパン発売日: 2008/05/24メディア: 大型本購入: 16人 クリック: 357回この商品を含むブログ (67件) を見るインターフェイス指向設計 - yuku-t blog 経由でこの本を知りオライリーのebookで購入しました。 この手の本は初めて読みましたが比較的薄く(230ページ程度)特定のプログラミング言語によらない説明で読みやすかったです。ただ、実装のひとつの例としてjavaによる実装が紹介されていたのですがインデントが独特すぎて「うわっ」てなりました(小並感まだ言葉で表現できるレベルで理解できていないので
golangやっていて見つけたちょっとしたテクニック的なものをまとめてみます。 factory切り替え golangにおいて関数は第一級オブジェクトなので、例えばあるインターフェイスのfactory methodを状況に応じて入れ替えるみたいなこともできます。 // ユーザー情報を表す構造体 type User struct { Name string Age int } // Userに関係するインターフェイス type UserRepo interface { FindByName(string) (*User, error) } // メモリ上にユーザー情報を持っておく type userRepoMem struct { mem []*User } func (r userRepoMem) FindByName(name string) (*User, error) { for _,
Libraries for implementing authentication schemes. authboss - Modular authentication system for the web. It tries to remove as much boilerplate and "hard things" as possible so that each time you start a new web project in Go, you can plug it in, configure it, and start building your app without having to build an authentication system each time. branca - branca token specification implementation
gojiはgolangのWebApplicationFrameworkです。 gojiにはMiddlewareという仕組みがあり、これを使うことで、リクエストごとに共通して必要な処理を集約することができます。 gojiはリクエストのロギングを行うMiddlewareが用意されているので、それを参考に見ていきます。 func Logger(c *web.C, h http.Handler) http.Handler { fn := func(w http.ResponseWriter, r *http.Request) { reqID := GetReqID(*c) printStart(reqID, r) lw := mutil.WrapWriter(w) t1 := time.Now() h.ServeHTTP(lw, r) if lw.Status() == 0 { lw.WriteH
questionable services Technical writings about computing infrastructure, HTTP & security. (by Matt Silverlock) HTTP Request Contexts & Go ••• Updated (2020): The approaches discussed here were once all valid options, but Go has matured significantly since then! You should use Go’s http.Request.WithContext() method for per-request contexts, passing a context.Background() around as needed. For outbo
For me, the hardest part of learning Go was in structuring my application. Prior to Go, I was working on a Rails application and Rails makes you structure your application in a certain way. “Convention over configuration” is their motto. But Go doesn’t prescribe any particular project layout or application structure and Go’s conventions are mostly stylistic. I’m going to show you four patterns tha
https://github.com/Songmu/strrand moznionがJava版を書いていたのでgolang版を書いた。 regexpチックなパターンを渡すインターフェースのみ移植している。以下の様な使い方だが、詳しくはSynopsis参照のこと。 str, err := strrand.RandomString(`\d{2,3}-\d{3,4}-\d{3,4}`) fmt.Println(str) // 033-128-3473 一応コマンドラインツールも作っていて、 % go get github.com/Songmu/strrand/cmd/strrand とかやれば、strrandというコマンドラインツールが入る。 cho45氏のString_random.jsは丸括弧によるグルーピングやパイプによる選択も実装していて素晴らしいが、strrandはPerl版同様それら
package main import ( "io" "io/ioutil" "os" ) func main() { err := Double(os.Stdin, os.Stdout) if err != nil { panic(err) } } func Double(stdin io.Reader, stdout io.Writer) error { buf, err := ioutil.ReadAll(stdin) if err != nil { return err } stdout.Write(buf) stdout.Write(buf) return nil } このプログラムを実装するにあたってのポイントは以下の通りです。 テスト対象のロジックを関数に切り出す ユニットテストをする上では当たり前ですが、まずはテスト対象を関数に切り出さなければなりません。 このプログラムに
日の出とともに起きるエンジニア この春で意図的に自分のライフスタイルをそれまでの「渋谷で月曜から飲んじゃうぜ!」パターンから完全に変えてから2年半が経ちます。現在自分は朝8時半に出勤、午後3時半〜4時くらいに退勤、あとは午後7時〜8時頃にまたオンラインになり家から必要な事を行う…という基本スケジュールをとっています。ステレオタイプなエンジニア象では夜中遅く暗い部屋でハックしているイメージがありますが、現在の自分は日の出とともに起き午後11時すぎには寝てしまう生活をしているエンジニアなのです。 幸いな事にプログラマー・エンジニアという仕事は周りの理解さえあれば伝統的なサラリーマンのステレオタイプから見たら明らかに異常なスケジュールでも特に生産性を落とさずに仕事を続けることができると仕事ですので、これを最大限利用させてもらっています。 自分は子育てのために意図的にこのような形を取っており、転職
The most amazing feature of Parse Server is that it’s accessible for developers of all skill levels. Personally, I started playing around with Objective-C in 2012. Parse was a way for me to build a complete online app, without having the in-depth knowledge of how to build networking, storage, user systems, etc. The more I built with Parse, the more I learnt JavaScript, which has fortunately allowe
Celebrating Over 10 Years Of Being Too Lazy To Pick A Tagline One of the things I've been really enjoying about Go is how easy testing is. The pervasive use of interfaces and composition-instead-of-inheritance synergize nicely for testing. But as I've expressed this online on reddit and Hacker News a couple of times, I've found that this does not seem to be a universally-shared opinion. Some have
questionable services Technical writings about computing infrastructure, HTTP & security. (by Matt Silverlock) Custom Handlers and Avoiding Globals in Go Web Applications ••• Note: I’ve also published a second article about custom handlers that builds on the foundations here. Might be worth reading after you finish this! Go’s net/http package is extremely flexible, thanks to the fact that it centr
server.go T�g�U ��g�U package main import ( "fmt" "log" "net/http" "html/template" "github.com/gorilla/sessions" "github.com/jmoiron/sqlx" "github.com/zenazn/goji/graceful" "github.com/zenazn/goji/web" ) // appContext contains our local context; our database pool, session store, template // registry and anything else our handlers need to access. We'll create an instance of it // in our main() func
2015-02-26 golangでいい感じにwebサービス書くの考える(2) golang GORMも良さそう russross/meddler · GitHubでは「has oneな関係にあるものを一緒に引っ張ってくる」みたいな処理は書けないので、そういったことがしたい場合jinzhu/gorm · GitHubが良さそうです。 ただテーブル生成やマイグレーションもGORMに任せることになるので(追記:よく見たらすでにあるテーブルスキーマに結び付けられるみたいです!)、それが嫌!って人はdatabase/sqlを使って自前でパースするのが良さそうです。 DBコネクションどうする問題 ORMを使うにしろ使わないにしろDBを一回だけ開いて以降はそのコネクションを使いまわすことになると思いますが、その場合どうやってコネクションをmodelまで持っていくか考えないといけません。 いろいろと
questionable services Technical writings about computing infrastructure, HTTP & security. (by Matt Silverlock) Custom Handlers and Avoiding Globals in Go Web Applications ••• Note: I’ve also published a second article about custom handlers that builds on the foundations here. Might be worth reading after you finish this! Go’s net/http package is extremely flexible, thanks to the fact that it centr
Golangで簡単なwebアプリを作るためにどうしたらいいか調べていたので、試しにGojiというフレームワークと、go-xslateを使ってHello Worldをしてみた。 GitHub - shibayu36/goji-and-go-xslate-sample http://localhost:8000/hello/world にアクセスすると、以下の様なものが出るだけのアプリケーション。 これを作った手順にしたがって簡単に紹介。 作成手順 まずはルーティングを作成 https://goji.io/によると、main関数の中にルーティングを作成してServeすれば良いだけっぽいのでまずはそれを作ってみる。 func main() { goji.Get("/hello/:name", hello) goji.Serve() } これで/hello/{name}でhello関数が使われるよ
goji でWebアプリを書こうとしています。APIサーバーとして使うときに、テストが気になります。 golangは net/http/httptest というhttpのtestを行うパッケージが最初からついています。これを使うと簡単にテストを記述できます。 httptest.Serverはlocalのloopbackインタフェースでサーバーを作成します。 (2014/11/20追記): mopemopeさんから「Routingのテストを入れたほうがいいのでは」というご指摘を受けたので、Route設定を別関数に分け、テストからも使うようにしました。 サンプルアプリ /hello/hoge というURLにアクセスが来たらJSONを返す、という単純なアプリです。 package main import ( "encoding/json" "fmt" "net/http" "github.com
有名なWebサービスをパクるのはよくありませんが、真似たサービスをあくまでも個人用途で作ってみるのは悪くありません。そこからシステム的な面白さを知ったり、技術的な工夫を知ることができます。 今回はチーム用のタスクツールWorkflowyのクローン、HackFlowyを紹介します。 HackFlowyの使い方 HackFlowyはBackbone.jsの使い方を学ぶために作ってみたとのことですが、WebSocketを使っていたりしてちゃんと利用できるレベルになっています。同じようにBackbone.jsを学んだり、WebSocketを学ぶ上でも良いコードなのではないでしょうか。 HackFlowyはnode/JavaScript製のソフトウェア(ソースコードは公開されていますがライセンスは明記されていません)です。 abhshkdz/HackFlowy
つい先日、とあるシステムの処理の流れと一部処理のフローチャートを付けた見積り資料を書くことになり、ちょうど良い機会だったので、MarkdownでUML図表が描ける「StackEdit」を使って、オールMarkdownで資料を作成してみた。 いやぁ、打ち込んだテキストがリアルタイムに図表化されていく様は、とても新鮮で、そしてすごく面白かった。資料が出来上がった後の達成感というか、完成した図表を見た時の感動が結構はんぱない。技術系の資料作成でこんな良い体験ができたのは初めてかもしれんな…(笑) ──と、結構感動的な体験ができるMarkdownでのUML図表作成なんだが、せっかくなのでそれの書き方を含めてもう少し突っ込んだTIPSとしてまとめておこうかと思った次第。 Markdown+UML とは? とりあえず、「Markdown+UML」というのは私の造語だ。まぁ、正確に言うなら「UML di
2015-02-25 golangでいい感じにwebサービス書くの考える(1) golang golangらしく書きたい 半年くらい前からgolangを趣味で書いていましたが Readabilityスキルが皆無であったので ひどいコードを量産してしまいました。(Qiitaにその残骸があります)Goに入ってはGoに従え。golangらしいコードを書きたいです。 薄いパッケージ・フレームワークが良さそう フルスタックなフレームワークより薄いパッケージのほうがいい感じになりそうです。 いろいろと漁ってみたところ以下のパッケージが良さそうかなと思いました。 zenazn/goji · GitHub 薄いwebフレームワーク。 Routing、middleware、Graceful shutdownとかをやってくれる。 russross/meddler · GitHub 薄いORM。 tag情報
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く