Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
あるページにアクセスしたらQRコードを表示させる機能を作る必要があったので、Goで簡単に作れないか無いか調べたら以下を見つけたので、net/httpを使って簡単にQRコードを生成できるサービスを作ってみます。 サンプルコード package main import ( "fmt" "github.com/boombuler/barcode" "github.com/boombuler/barcode/qr" "image/png" "net/http" ) func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8082", nil) } func handler(w http.ResponseWriter, r *http.Request) { messages, ok := r.URL.Query()["m"]
type tokenKey int const ( ctxTest tokenKey = 0 ) type App struct { Cache *cache.Cache } // uuidでtoken作成 func makeCsrfToken() string { h := md5.New() io.WriteString(h, uuid.New().String()) token := fmt.Sprintf("%x", h.Sum(nil)) return token } func (a *App) csrf(r *http.Request) { token := makeCsrfToken() ctx := context.WithValue(r.Context(), ctxTest, token) r.WithContext(ctx) a.Cache.Set(token, str
現在大きめの会社でSREチームとして働いています。 範囲はモバイルアプリから、インフラまで色々やります。 今回はSRE関連でパフォーマンスチューニングのテスト自動化ツールを作っているときに、ファイルにjsonを書き出す必要があったため、そこでのパフォーマンスについて、「みんなのGo言語」という本の3.3章で触れていたので、それをdtrussで試してみました。 環境 Mac 10.12 Sierra ※dtrussはバージョンにもよりますがデフォルトで入っています code https://github.com/revenue-hack/go-sample 「みんなのGo言語」(以下みんGo)の3.3の効率的なI/O処理という部分の話 説明 今回はGoでバッファリングすることでwriteのシステムコールが減らせたことを見るので、dtrussの詳しい説明は省きます。とりあえずコマンドのシステム
概要 新しくGo言語を始める時、どのような環境で書き始めるかいくつか選択肢があると思いますが、私はIntelliJが好きなのでIntelliJを使います。 Goは静的型付けでIDEとの相性が良く、IntelliJはオススメです。 難点はIDEの設定が必要になるところです。一度わかれば簡単ですが、はじめは苦労するかもしれません。 私の場合、自分が作成した別のファイル(パッケージ?)をインポートしようとした時にエラーが出てしまい、解決に苦労しました。 これから始める人が苦労しないように(そして私が解決方法を忘れないように)、ここに書き残します。 環境 macOS High Sierra IntelliJ IDEA 2018.2.4(Ultimate) go 1.11 手順 IntelliJインストール Webからダウンロードしインストールします。詳細は割愛します。 Go言語インストール Hom
// --------------------------------------------------------------- // // chrome_headless.go // // Sep/26/2018 // --------------------------------------------------------------- package main import ( "github.com/sclevine/agouti" "fmt" "os" "log" "io/ioutil" "time" ) // --------------------------------------------------------------- func main() { fmt.Fprintf (os.Stderr,"*** 開始 ***\n") url := "https:
こんにちわ 先日、Goで直感的に簡単にdockerを操作できるCUIツールを作りましたという記事で、 docuiについて紹介しました。 この記事は少し技術の話を書いていきます。 Goの基本的な事、goroutineの事をある程度理解していればスラスラ読めると思います。 アジェンダ 使用ライブラリ gocuiの基本 画面描写までの流れ 画面描写のタイミング docuiについて ディレクトリ構成 docuiのメイン処理 入力画面について 処理中メッセージ表示について おまけ 最後に 使用ライブラリ 上記の記事で軽く紹介しましたが、以下のライブラリを使用しています。 gocui Go製のCUIライブラリ docker-client Docker操作のライブラリ gocuiの基本 gocuiでは大まか以下の事ができます。 view(画面)作成・削除 viewへのデータの書込・読取・削除 view毎
// forms.go package main import ( "html/template" "net/http" ) type ContactDetails struct { Email string Subject string Message string } func main() { tmpl := template.Must(template.ParseFiles("forms.html")) http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost { tmpl.Execute(w, nil) return } details := ContactDetails{ Email: r.FormValue("email"), Subje
Go勉強会 Webアプリケーション編 #2で使おうと思っているGo Web Examplesの和訳です。ほぼGoogle翻訳ですが、リンク等も整理された状態であると便利だと思い作りました。次回(Requests & Forms) はじめに Goのhtml/templateパッケージはHTMLテンプレート用の豊富なテンプレート言語を提供します。主にWebアプリケーションで使用され、クライアントのブラウザで構造化データを表示します。Goのテンプレート言語の大きな利点の1つは、データを自動でエスケープすることです。GoはHTMLテンプレートを解析し、すべての入力をエスケープしてからブラウザに表示するので、XSS攻撃については心配する必要はありません。 最初のテンプレート Goのテンプレートの書き方は非常にシンプルです。この例では、HTMLの順序付けられていないリスト(ul)として記述されたTOD
はじめに 突然、職場の上司の方がGolangはいいぞ!しか言わなくなったので、Golang環境を整えてみました。 やること SublimeText3をインストール Golang公式サイトからGoをインストール PackageControlをインストール GoSublimeをインストール SublimeText3をインストール 公式サイト からインストールします。無料ですべての機能が使えますが、何回か保存すると購入してくれってポップアップが出るようになります。うーんどうしようかなぁ・・・って感じです。 Golangをインストール 公式サイト からインストーラーをダウンロードしてインストールします。インストール先を変えた場合、GOPATHを設定する必要があります。 PackageControlをインストール ここのサイト からSUBLIME TEXT 3の項目のスクリプトをコピーして貼り付けま
// --------------------------------------------------------------- // // chrome_save.go // // Sep/26/2018 // --------------------------------------------------------------- package main import ( "github.com/sclevine/agouti" "fmt" "os" "log" "io/ioutil" "time" ) // --------------------------------------------------------------- func main() { fmt.Fprintf (os.Stderr,"*** 開始 ***\n") url := "https://ek
この記事は、IntelliJでGo言語のデバックを『delve』のツールで行う時にデバックできるまでを記載していきます。 ■ Overview Go言語で書かれたソースをIntelliJで開いて、delveツールを使ってデバックします。 ソースコードは以下です。シンプルに package main import "fmt" type rect struct { width, height int } // This `area` method has a _receiver type_ of `*rect`. func (r *rect) area() int { return r.width * r.height } // Methods can be defined for either pointer or value // receiver types. Here's an exa
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに アーキテクチャや設計の書籍や記事、これまでの経験も踏まえ、学んだ事をここにまとめたい。(まだ、勉強中なので微妙なところもあるかもしれません。お気付きの点があればご指摘いただけるとありがたいです。) 参考文献や参考記事は、本当に良書、良記事で非常に参考にさせていただきました。 生意気なタイトルにしてしまいましたが、自分への戒めということもあってこのタイトルにさせていただいたので、ご容赦ください。 ある共通した話題 設計やアーキテクチャについて書かれた書籍や記事を読んでいく中で、言葉は違えどかなりの高確率で共通するテーマが存在した
def update if @user.save redirect_to root_path, notice: "success!" else render :edit, alert: "failed..." end end このnotice, alertの仕組み(flash)をgolangで書いているwebappでも使いたい。 そして標準パッケージだけで完結させたい。 ということで実装してみた。 flashにメッセージを登録する場所(handler) こちらは実際のコードを簡易化させています。(ログインのセッション処理など省略) // handler/register.go func register(w http.ResponseWriter, r *http.Request) { r.ParseForm() input := &input.Register{ Name: r.Form
// --------------------------------------------------------------- // // reserve_form_chrome.go // // Sep/24/2018 // --------------------------------------------------------------- package main import ( "github.com/sclevine/agouti" "fmt" "os" "log" ) // --------------------------------------------------------------- func main() { fmt.Fprintf (os.Stderr,"*** 開始 ***\n") driver := agouti.ChromeDriver
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く