タグ

ブックマーク / astaxie.gitbooks.io (6)

  • controllerの設計 · Build web application with Golang

    13.3 controller設計 伝統的なMVCフレームワークにおいて、多くの場合Action設計のサフィックス反映にもとづいています、しかしながら、現在webではREST風のフレームワークが流行しています。なるべくFilterかrewriteを使用してURLのリライトを行い、REST風のURLを実現しています。しかしなぜ直接新しくREST風のMVCフレームワークを設計しないのでしょうか?章ではこういった考え方に基いてどのようにREST風のMVCフレームワークにフルスクラッチでcontroller、最大限に簡素化されたWebアプリケーションの開発、ひいては一行で可能な"Hello, world"の実装についてご説明します。 controllerの作用 MVC設計は現在Webアプリケーションの開発において最もよく見かけるフレームワーク設計です。Model(モデル)、View(ビュー)およ

    kitokitoki
    kitokitoki 2017/08/01
    参考。コントローラのアクションもレシーバを持って create といった名前にできる。
  • エラー処理 · Build web application with Golang

    11.1 エラー処理 Go言語の主な設計方針は:簡潔、明瞭です。簡潔とは文法がCと似ていて、かなり簡単であるということです。明瞭とはいかなるキーワードも分かりやすいということを指しています。どのような隠された意味も含まず、エラー処理の設計でもこの思想は一貫しています。C言語では-1またはNULLをといった情報を返すことでエラーを表していることをご存知だと思います。しかしユーザからすると、対応するAPIの説明ドキュメントを見なければ、この戻り値がいったいどういう意味を表しているのかそもそもよくわかりません。例えば:0を返すと成功するのか失敗するのかといったことです。Goではerrorと呼ばれる型を定義することで、エラーを表しています。使用する際は、返されるerror変数とnilを比較することで操作が成功したか判断します。例えばos.Open関数はファイルのオープンに失敗した時にnilではない

    kitokitoki
    kitokitoki 2015/10/15
    error, エラー処理, リファクタ
  • Goのhttpパッケージ詳細 · Build web application with Golang

    3.4 Goのhttpパッケージ詳細 前の節でGoが如何にWebの作業モードを実現するかフローをご紹介しました。この節では、httpパッケージを詳しく解剖していきます。これはどのように全体のプロセスを実現しているのでしょうか。 Goのhttpには2つのコアとなる機能があります:Conn、ServeMux Connのgoroutine 我々が普段書くhttpサーバとは異なり、Goはマルチスレッドと高い性能を実現するため、goroutinesを使ってConnのイベント読み書きを処理します。これによって各リクエストは独立性を保持することができます。互いにブロックせず、効率よくネットワークイベントにレスポンスすることができます。これがGoに高い効率を保証します。 Goがクライアントのリクエストを待ち受けるには以下のように書きます: c, err := srv.newConn(rw) if err

    kitokitoki
    kitokitoki 2015/10/13
    httpパッケージ serveMux
  • GOPATHとワーキングディレクトリ · Build web application with Golang

    1.2 GOPATHとワーキングディレクトリ さきほどGoをインストールする際はGOPATH変数を設定する必要があるとご説明しました。Goはバージョン1.1から必ずこの変数を設定するようになっており、Goのインストールディレクトリと同じにはできません。このディレクトリは、GoのソースコードやGoの実行可能ファイル、並びにコンパイル済みのパッケージファイルを保存する為に使用します。そのためこのディレクトリには3つのサブディレクトリが存在します:src、bin、pkgです。 GOPATH設定 go コマンドは、ある重要な環境変数に依存しています:$GOPATH1 Windowsシステムにおいて環境変数の形式は%GOPATH%です。このの中では主にUnix形式を使用します。Windowsユーザは適時置き換えてください。 (注:これはGoのインストールディレクトリではありません。以下では筆者のワ

    kitokitoki
    kitokitoki 2015/10/10
    mainパッケージとは別にアプリの名前のパッケージをつくるということか? あとで試す
  • Goの環境設定 · Build web application with Golang

    1 GOの環境設定 Goの世界へようこそ、さっそく初めてみましょう! Goは新しい言語です、並列処理、ガベージコレクションを備え、軽快にコンパイルできる言語です。以下のような特徴を持っています: 一台のコンピュータ上であっという間に大型のGoプログラムをコンパイルすることができます。 Goはソフトウェアの構造にモデルを与えます。分析をより簡単にこなすことができ、ファイルやライブラリのincludeといったCスタイルの書き出しにありがちな部分を大幅に省くことができます。 Goは静的型付け言語です。型に階層の概念が無いのでユーザはその関係に気をとられることもなく、典型的なオブジェクト指向言語よりももっとライトに感じるくらいです。 Goは完全なガベージコレクションタイプの言語です。また、基的な並列処理とネットワークをサポートしています。 Goはマルチプロセッサ対応のソフトウェアを作成できるよう

    Goの環境設定 · Build web application with Golang
  • テンプレートの処理 · Build web application with Golang

    7.4 テンプレートの処理 テンプレートとは何か おそらくあなたはMVCのデザインパターンについて聞いたことがあると思います。Modelはデータを処理を、Viewは表示結果を、Controllerはユーザのリクエストの制御を行います。Viewレイヤーの処理では、多くの動的な言語ではどれも静的なHTMLの中に動的言語が生成したデータを挿入します。例えばJSPでは<%=....=%>を挿入することで、PHPでは<?php.....?>を挿入することで実現します。 下の図でテンプレートのメカニズムについてご紹介します 図7.1 テンプレートのメカニズム図 Webアプリケーションがクライアントに返すフィードバックの情報の中の大部分の内容は静的で不変です。また少ない部分でユーザのリクエストによって動的に生成されるものがあります。例えばユーザのアクセスログリストを表示したい場合、ユーザ間ではログデータ

    テンプレートの処理 · Build web application with Golang
    kitokitoki
    kitokitoki 2015/10/07
    text/template
  • 1