From e4ab1ca30596890557a7ab2e42606c41d63b601c Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 19 Jan 2014 21:14:52 +0900 Subject: [PATCH 01/47] [ja] apply patch --- ja/ebook/01.4.md | 2 +- ja/ebook/02.2.md | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ja/ebook/01.4.md b/ja/ebook/01.4.md index a6fd7f8f..4575d0e5 100644 --- a/ja/ebook/01.4.md +++ b/ja/ebook/01.4.md @@ -166,7 +166,7 @@ "env": { "GOPATH": "$HOME/golang:$GS_GOPATH" } } - `$GS_GOPATH` は gosublime の仮想的な環境変数です。自動的に`.go`ファイルが存在する `~/go/src` を探し出すことで、 `~/go/` をプロジェクトのパスと推測し、自動的に `GOPATH` を適用します。 + `$GS_GOPATH` は gosublime の仮想的な環境変数です。自動的に`.go`ファイルが存在する `~/go/src` を探し出すことで、 `~/go/` をプロジェクトのパスと推測し、自動的に `GOPATH` を適用します。(注意:このような方法ではsublimeにおいてオリジナルのGOPATHを上書きしてしまいます。もしこの設定でエラーが発生した場合は、GOPATHに関連した問題が発生していることになります) もうひとつは、sublime プロジェクトの保存です。 project_name.sublime-project を修正して項目を追加します diff --git a/ja/ebook/02.2.md b/ja/ebook/02.2.md index b4736d7f..aef2b056 100644 --- a/ja/ebook/02.2.md +++ b/ja/ebook/02.2.md @@ -103,7 +103,7 @@ Goではbool値の型は`bool`です。値は`true`もしくは`false`です。 >注意しなければならないのは、これらの型の変数間は相互に代入または操作を行うことができないということです。コンパイル時にコンパイラはエラーを発生させます。 > ->下のコードはエラーが発生します。 +>下のコードはエラーが発生します。:invalid operation: a + b (mismatched types int8 and int32) > >> var a int8 @@ -135,7 +135,7 @@ Goではbool値の型は`bool`です。値は`true`もしくは`false`です。 frenchHello = "Bonjour" // 通常の代入 } -Goの文字列は変更することができません。例えば下のコードはコンパイル時にエラーが発生します。 +Goの文字列は変更することができません。例えば下のコードはコンパイル時にエラーが発生します。:cannot assign to s[0] var s string = "hello" s[0] = 'c' @@ -168,7 +168,10 @@ Goでは`+`演算子を使って文字列を連結することができます: m := `hello world` -`` ` `` で括られた文字列はRaw文字列です。すなわち、文字列はコード内の形式がそのままプリント時の形式になります。文字列の変更はありません。開業はそのまま出力されます。 +`` ` `` で括られた文字列はRaw文字列です。すなわち、文字列はコード内の形式がそのままプリント時の形式になります。文字列の変更はありません。改行はそのまま出力されます。例えばこの例では以下のように出力されます: + + hello + world ### エラー型 Goにはビルトインの`error`型があります。専らエラー情報の処理に使用されます。Goの`package`の中にはエラー処理を行う`errors`というパッケージがあります。 From 43003784bdca62317bc799f96ea7c7fb503c2904 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 19 Jan 2014 21:17:47 +0900 Subject: [PATCH 02/47] [ja] apply patch --- ja/ebook/05.0.md | 2 ++ ja/ebook/05.7.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/ja/ebook/05.0.md b/ja/ebook/05.0.md index cf8108e8..267e369e 100644 --- a/ja/ebook/05.0.md +++ b/ja/ebook/05.0.md @@ -5,6 +5,8 @@ Goはどのようなデータベースの使用もbuiltinではサポートさ 現在NOSQLはすでにWeb開発の流行となっています。多くのアプリケーションがNOSQLをデータベースとして採用しています。以前のキャッシュではありません。5.6節ではMongoDBとRedisの2つのNOSQLデータベースについてご紹介します。 +>[Go database/sql tutorial](http://go-database-sql.org/)ではよく使われる例と詳細な説明を提供しています。 + ## 目次 ![](images/navi5.png?raw=true) diff --git a/ja/ebook/05.7.md b/ja/ebook/05.7.md index 33371d44..f04872b1 100644 --- a/ja/ebook/05.7.md +++ b/ja/ebook/05.7.md @@ -3,6 +3,8 @@ この一章の学習を通じて、いろいろなデータベースをどのように操作するか学んできました。Webの中でも重要なデータの保存に関する問題が解決したので、みなさんのdatabase/sqlの設計思想により一歩進んだ理解が深まることを願っています。 +>[Go database/sql tutorial](http://go-database-sql.org/)ではよく使われる例と詳細な説明を提供しています。 + ## links * [目次]() * 前へ: [NOSQLデータベースの操作](<05.6.md>) From 2fd541e43bd43d89b0f9b40521d6b2ae4223879d Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 19 Jan 2014 21:25:53 +0900 Subject: [PATCH 03/47] [ja] apply patch --- ja/ebook/01.3.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/ebook/01.3.md b/ja/ebook/01.3.md index 454a5ece..f2be5d30 100644 --- a/ja/ebook/01.3.md +++ b/ja/ebook/01.3.md @@ -33,7 +33,7 @@ array_windows.go array_freebsd.go - `go build`の際、システム名の末尾のファイルから選択的にコンパイルすることができます(linux、darwin、windows、freebsd) + `go build`の際、システム名の末尾のファイルから選択的にコンパイルすることができます(Linux、Darwin、Windows、Freebsd) ## go clean From b50c42bed98c00b204cfdf4af365cfb717a92aa5 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 20:44:21 +0900 Subject: [PATCH 04/47] [ja] apply patch --- ja/ebook/02.3.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/ebook/02.3.md b/ja/ebook/02.3.md index fa747ac6..e630e3b8 100644 --- a/ja/ebook/02.3.md +++ b/ja/ebook/02.3.md @@ -1,7 +1,7 @@ # 2.3 フローと関数 この節ではGoの中のフロー制御と関数操作についてご紹介します。 ## フロー制御 -フロー制御はプログラム言語の中の最も偉大な発明です。なぜならこれがあるだけで、あなたはとても簡単なフローの記述でとても複雑なロジックを表現できるからです。フロー制御は3つの部分から成ります:条件判断、ループ制御及び無条件ジャンプです。 +フロー制御はプログラム言語の中の最も偉大な発明です。なぜならこれがあるだけで、あなたはとても簡単なフローの記述でとても複雑なロジックを表現できるからです。Goではフロー制御は3つの部分から成ります:条件判断、ループ制御及び無条件ジャンプです。 ### if `if`はあらゆるプログラミング言語の中で最もよく見かけるものかもしれません。この文法は大雑把に言えば:もし条件を満足しなければ何々を行い、そうでなければまたもう一つ別のことをやるということです。 From 5b7b7df26d3633b650f26af6a0aeaf6e2ed840b6 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 20:47:30 +0900 Subject: [PATCH 05/47] [ja] apply patch] --- ja/ebook/02.3.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/ebook/02.3.md b/ja/ebook/02.3.md index e630e3b8..4d33debf 100644 --- a/ja/ebook/02.3.md +++ b/ja/ebook/02.3.md @@ -468,7 +468,7 @@ Goのコードを書いている時は、importコマンドによってパッケ fmt.Println("hello world") -上のfmtはGo言語の標準ライブラリです。実はgorootの下にこのモジュールが加えられています。当然Goのインポートは以下のような2つの方法で自分の書いたモジュールを追加することができます: +上のfmtはGo言語の標準ライブラリです。実は`GOROOT`環境変数で指定されたディレクトリの下にこのモジュールが加えられています。当然Goのインポートは以下のような2つの方法で自分の書いたモジュールを追加することができます: 1. 相対パス From be71db3eb212ab0e358a4c93cf9c06bcfe600782 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 20:51:43 +0900 Subject: [PATCH 06/47] [ja] apply patch] --- ja/ebook/02.6.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/ebook/02.6.md b/ja/ebook/02.6.md index 7c66f9fb..64198f57 100644 --- a/ja/ebook/02.6.md +++ b/ja/ebook/02.6.md @@ -354,7 +354,7 @@ sort.Interfaceは実は組み込みフィールドです。sort.Interfaceのす } ### リフレクション -Goはリフレクションを実装しています。いわゆるリフレクションとは動的な実行時の状態です。私達が一般的に使用しているパッケージはreflectパッケージです。どのようにreflectパッケージを使うかはオフィシャルのドキュメントに詳細な原理が説明されています。[laws of reflection](http://golang.org/doc/articles/laws_of_reflection.html) +Goはリフレクションを実装しています。リフレクションはプログラムの実行時の状態を検査することができます。私達が一般的に使用しているパッケージはreflectパッケージです。どのようにreflectパッケージを使うかはオフィシャルのドキュメントに詳細な原理が説明されています。[laws of reflection](http://golang.org/doc/articles/laws_of_reflection.html) reflectを使うには3つのステップに分けられます。下で簡単にご説明します:リフレクションは型の値(これらの値はすべて空のインターフェースを実装しています。)。まずこれをreflectオブジェクトに変換する必要があります(reflect.Typeまたはreflect.Valueです。異なる状況によって異なる関数をコールします。)この2つを取得する方法は: From 7c212255707ff6444f4f1e143f7bb58ce877d806 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 20:53:17 +0900 Subject: [PATCH 07/47] [ja] apply patch] --- ja/ebook/02.7.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/ja/ebook/02.7.md b/ja/ebook/02.7.md index eb972463..a448980a 100644 --- a/ja/ebook/02.7.md +++ b/ja/ebook/02.7.md @@ -31,16 +31,16 @@ goroutineはGoのruntime管理を利用したスレッドコントローラで say("hello") //現在のGoroutines実行 } - 出力: - hello - world - hello - world - hello - world - hello - world - hello + // 上のプログラムを実行すると以下のように出力されます: + // hello + // world + // hello + // world + // hello + // world + // hello + // world + // hello goキーワードで非常に簡単にマルチスレッドプログラミングを実現することがお分かりいただけるかと思います。 上の複数のgoroutineは同じプロセスで実行されています。メモリのデータを共有しますが、デザイン上共有を利用して通信を行ったりせず、通信によって共有を行うようにしましょう。 From 12837434ba2a3ddb8b987a2be72c88f65107f11d Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 20:56:42 +0900 Subject: [PATCH 08/47] [ja] apply patch] --- ja/ebook/02.7.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/ebook/02.7.md b/ja/ebook/02.7.md index a448980a..6ff6b315 100644 --- a/ja/ebook/02.7.md +++ b/ja/ebook/02.7.md @@ -137,7 +137,7 @@ channelは`<-`演算子を使ってデータを送ったり受けたりします } } -`for i := range c`でこのchannelがクローズを明示されるまで連続してchannelの中のデータを読み込むことができます。上のコードでchannelのクローズが明示されているのが確認できるかと思います。生産者はキーワード`close`関数によってchannelを閉じます。channelを閉じた後はいかなるデータも送信することはできません。消費側は`v, ok := <-ch`という式でchannelがすでに閉じられているかテストすることができます。もしokにfalseが返ってきたら、channelはすでにどのようなデータも無く、閉じられているということになります。 +`for i := range c`でこのchannelがクローズを明示されるまで連続してchannelの中のデータを読み込むことができます。上のコードでchannelのクローズが明示されているのが確認できるかと思います。生産者は`close`ビルトイン関数によってchannelを閉じます。channelを閉じた後はいかなるデータも送信することはできません。消費側は`v, ok := <-ch`という式でchannelがすでに閉じられているかテストすることができます。もしokにfalseが返ってきたら、channelはすでにどのようなデータも無く、閉じられているということになります。 >生産者の方でchannelが閉じられる事に注意してください。消費側ではありません。これは容易にpanicを引き起こします。 From 7a1565cc36a6180b8fc993e6d912b113758dfa2d Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 20:58:02 +0900 Subject: [PATCH 09/47] [ja] apply patch] --- ja/ebook/03.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/ebook/03.0.md b/ja/ebook/03.0.md index bf0afd5b..7d6b9540 100644 --- a/ja/ebook/03.0.md +++ b/ja/ebook/03.0.md @@ -1,6 +1,6 @@ # 3 Webの基礎 -Webのプログラミングの基礎を勉強することはあなたにとってまさにこの本を読む理由でしょう。事実、どのようにGoを使ってWebアプリケーションをプログラムするかはこの本の目的でもあります。前回までで、Goは既に成熟したHttp処理パッケージを持つことをご紹介しました。これによってどのような事情の動的なWebプログラミングも簡単に作成できます。これ以降の章でご紹介する内容はどれもWebプログラミングの範疇です。この章ではWebに関する概念とGo言語がいかにWebプログラムを実行するかに集中して討論します。 +Webのプログラミングの基礎を勉強することはあなたにとってまさにこの本を読む理由でしょう。事実、どのようにGoを使ってWebアプリケーションをプログラムするかはこの本の目的でもあります。前回までで、Goは既に成熟したHTTP処理パッケージを持つことをご紹介しました。これによってどのような事情の動的なWebプログラミングも簡単に作成できます。これ以降の章でご紹介する内容はどれもWebプログラミングの範疇です。この章ではWebに関する概念とGo言語がいかにWebプログラムを実行するかに集中して討論します。 ## 目次 ![](images/navi3.png?raw=true) From bffc022100bf108ea713b0bb39ab97b9087d4e25 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 20:58:31 +0900 Subject: [PATCH 10/47] [ja] apply patch] --- ja/ebook/03.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/ebook/03.0.md b/ja/ebook/03.0.md index 7d6b9540..21ad71b6 100644 --- a/ja/ebook/03.0.md +++ b/ja/ebook/03.0.md @@ -8,4 +8,4 @@ Webのプログラミングの基礎を勉強することはあなたにとっ ## links * [目次]() * 前へ: [第二章概要](<02.8.md>) - * 次へ: [webでの作業方法](<03.1.md>) + * 次へ: [Webでの作業方法](<03.1.md>) From 12fc04ff115ccc1c0883b314873acdf389782cd7 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 21:07:48 +0900 Subject: [PATCH 11/47] [ja] apply patch] --- ja/ebook/03.1.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/ja/ebook/03.1.md b/ja/ebook/03.1.md index 6d4c9b68..5db00d9e 100644 --- a/ja/ebook/03.1.md +++ b/ja/ebook/03.1.md @@ -85,6 +85,8 @@ HTTPプロトコルはステートレスです。同じクライアントの前 //空行、リクエストヘッダとボディを分けるために使われます。 //ボディ、リソースへのリクエストのオプション、例えばPOSTが渡すオプション +HTTPプロトコルはサーバに対して交互にリクエストを送る方法が定義されています。基本は四種類。GET,POST,PUT,DELETEです。ひとつのURLアドレスはひとつのネットワーク上のリソースを描写しています。またHTTPの中のGET, POST, PUT, DELETEはこのリソースの検索、修正、増加、削除の4つの操作に対応しています。よく見かけるのはGETとPOSTです。GETは一般的にリソースの情報を取得/検索するために用いられ、POSTはリソース情報を更新するために用いられます。 + fiddlerパケットキャプチャを通して下のようなリクエスト情報を見ることができます。 ![](images/3.1.http.png?raw=true) @@ -95,13 +97,12 @@ fiddlerパケットキャプチャを通して下のようなリクエスト情 図3.5 fiddlerがキャプチャしたPOST情報 -**GETリクエストのボディが空であることがわかります。POSTリクエストにはボディがあります**。 - -HTTPプロトコルはサーバに対して交互にリクエストを送る方法が定義されています。基本は四種類。GET,POST,PUT,DELETEです。ひとつのURLアドレスはひとつのネットワーク上のリソースを描写しています。またHTTPの中のGET, POST, PUT, DELETEはこのリソースの検索、修正、増加、削除の4つの操作に対応しています。よく見かけるのはGETとPOSTです。GETは一般的にリソースの情報を取得/検索するために用いられ、POSTはリソース情報を更新するために用いられます。 GETとPOSTの区別を見てみましょう。 -1. GETが入力するデータはURLの後に置かれます。?によってURLと渡すデータを分割します。オプションの間は&で繋ぎます。例えばEditPosts.aspx?name=test1&id=12345。POSTメソッドは入力するデータをHTTPパケットのBodyの中に置きます。 -2. GETが入力するデータの大きさには制限があります。(ブラウザのURLに対する長に制限があるためです。)またPOSTメソッドで入力するデータには制限がありません。 -3. GETメソッドで入力されたデータはセキュリティの問題を引き起こします。例えばログイン画面があったとして、GETメソッドでデータを入力した場合、ユーザ名とパスワードはURL上にあらわれてしまうことになります。もしページがバッファリングされていたり他の人によっがこのマシンにアクセスすることができれば、ヒストリログからこのユーザのアカウントとパスワードを取得することができてしまいます。 + +1. GETリクエストのボディが空であることがわかります。POSTリクエストにはボディがあります。 +2. GETが入力するデータはURLの後に置かれます。?によってURLと渡すデータを分割します。オプションの間は&で繋ぎます。例えばEditPosts.aspx?name=test1&id=12345。POSTメソッドは入力するデータをHTTPパケットのBodyの中に置きます。 +3. GETが入力するデータの大きさには制限があります。(ブラウザのURLに対する長に制限があるためです。)またPOSTメソッドで入力するデータには制限がありません。 +4. GETメソッドで入力されたデータはセキュリティの問題を引き起こします。例えばログイン画面があったとして、GETメソッドでデータを入力した場合、ユーザ名とパスワードはURL上にあらわれてしまうことになります。もしページがバッファリングされていたり他の人によっがこのマシンにアクセスすることができれば、ヒストリログからこのユーザのアカウントとパスワードを取得することができてしまいます。 ### HTTPレスポンスパケット(サーバ情報) HTTPのresponseパケットを見てみることにしましょう。構造は以下のとおりです: From 63a80a916c421439774494c2ad28bbc94c74b43b Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 21:11:15 +0900 Subject: [PATCH 12/47] [ja] translate http status line description --- ja/ebook/03.1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/ebook/03.1.md b/ja/ebook/03.1.md index 5db00d9e..e704d543 100644 --- a/ja/ebook/03.1.md +++ b/ja/ebook/03.1.md @@ -117,7 +117,7 @@ HTTPのresponseパケットを見てみることにしましょう。構造は //空行 ヘッダとボディを分けるために使われます。 Date: Sun, 21 Sep 2014 21:12:10 +0900 Subject: [PATCH 13/47] [ja] apply patch] --- ja/ebook/03.1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/ebook/03.1.md b/ja/ebook/03.1.md index e704d543..312a1699 100644 --- a/ja/ebook/03.1.md +++ b/ja/ebook/03.1.md @@ -157,4 +157,4 @@ Keep-Aliveは永久にコネクションを保持するものではありませ ## links * [目次]() * 前へ: [Webの基礎](<03.0.md>) - * 次へ: [GOでwebサーバを建てる](<03.2.md>) + * 次へ: [GOでWebサーバを建てる](<03.2.md>) From 4f27e07fd991498b7317b47c5390d444dbcadb94 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 21:16:19 +0900 Subject: [PATCH 14/47] [ja] apply patch] --- ja/ebook/03.2.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ja/ebook/03.2.md b/ja/ebook/03.2.md index a8e8565c..71f4a502 100644 --- a/ja/ebook/03.2.md +++ b/ja/ebook/03.2.md @@ -1,8 +1,8 @@ -# 3.2 GOで簡単なwebサーバを立てる +# 3.2 Goで簡単なWebサーバを立てる -前の節でWebはHTTPプロトコルに基づいたサービスであるとご紹介しました。Go言語では完全なnet/httpパッケージを提供しています。httpパッケージを通して実行できるwebサービスを非常に簡単に立ち上げる事ができます。同時にこのパッケージを使用することで、簡単にwebのルーティング、静的なファイル、テンプレート、cookie等のデータに対して設定と操作を行うことができます。 +前の節でWebはhttpプロトコルに基づいたサービスであるとご紹介しました。Go言語では完全なnet/httpパッケージを提供しています。httpパッケージを通して実行できるWebサービスを非常に簡単に立ち上げる事ができます。同時にこのパッケージを使用することで、簡単にWebのルーティング、静的なファイル、テンプレート、cookie等のデータに対して設定と操作を行うことができます。 -## httpパッケージでwebサーバを立てる +## httpパッケージでWebサーバを立てる package main @@ -50,15 +50,15 @@ 図3.8 ユーザがWebにアクセスしてサーバが出力する情報 -上のコードでwebサーバを書くためにはhttpパッケージの2つの関数を呼ぶだけで良いことがわかります。 +上のコードでWebサーバを書くためにはhttpパッケージの2つの関数を呼ぶだけで良いことがわかります。 >もしあなたが以前PHPプログラマであれば。こう問うかもしれません。我々のnginx、apacheサーバは必要ないのですかと?なぜならこいつは直接tcpポートを関ししますので、nginxがsやることをやってくれます。またsayhelloNameは実は我々が書いたロジック関数ですので、phpの中のコントローラ(controller)関数に近いものです。 ->もしあなたがpythonプログラマであったのなら、tornadoを聞いたことがあると思います。このコードはそれとよく似ていませんか?ええ、その通りです。goはpythonのような動的な言語によく似た特性を持っています。webアプリケーションを書くにはとても便利です。 +>もしあなたがPythonプログラマであったのなら、tornadoを聞いたことがあると思います。このコードはそれとよく似ていませんか?ええ、その通りです。GoはPythonのような動的な言語によく似た特性を持っています。Webアプリケーションを書くにはとても便利です。 ->もしあなたがrubyプログラマであったのなら、RORの/script/serverを起動したのと少し似ている事に気づいたかもしれません。 +>もしあなたがRubyプログラマであったのなら、RORの/script/serverを起動したのと少し似ている事に気づいたかもしれません。 -Goを通じて簡単な数行のコードでwebサーバを立ち上げることができました。さらにこのWebサーバの内部ではマルチスレッドの特性をサポートしています。続く2つの節でgoが以下にWebのマルチスレッドを実現しているのか細かくご紹介します。 +Goを通じて簡単な数行のコードでwebサーバを立ち上げることができました。さらにこのWebサーバの内部ではマルチスレッドの特性をサポートしています。続く2つの節でGoが以下にWebのマルチスレッドを実現しているのか細かくご紹介します。 ## links * [目次]() From 73813107940048bafd71dfa5931e0ed767fe8755 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 21:23:18 +0900 Subject: [PATCH 15/47] [ja] apply patch] --- ja/ebook/05.1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/ebook/05.1.md b/ja/ebook/05.1.md index 69801941..7b483b53 100644 --- a/ja/ebook/05.1.md +++ b/ja/ebook/05.1.md @@ -138,7 +138,7 @@ Next関数はひとつのデータを返すのに用いられます。データ ## driver.RowsAffected -RowsAffestedは実はint64のエイリアスです。しかしResultインターフェースを実装していますので、低レイヤーでResultの表示メソッドを実装するために用いられます。 +RowsAffectedは実はint64のエイリアスです。しかしResultインターフェースを実装していますので、低レイヤーでResultの表示メソッドを実装するために用いられます。 type RowsAffected int64 From 70d3b5545b74c62c2dd3296e2cb8104625d02746 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 21:26:12 +0900 Subject: [PATCH 16/47] [ja] apply patch] --- ja/ebook/13.5.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/ja/ebook/13.5.md b/ja/ebook/13.5.md index fb4f320a..ef210d24 100644 --- a/ja/ebook/13.5.md +++ b/ja/ebook/13.5.md @@ -24,15 +24,15 @@ ブログの主なルーティング規則は以下のようになります: //ブログのトップページを表示 - beego.RegisterController("/", &controllers.IndexController{}) + beego.Router("/", &controllers.IndexController{}) //ブログの詳細な情報を検索 - beego.RegisterController("/view/:id([0-9]+)", &controllers.ViewController{}) + beego.Router("/view/:id([0-9]+)", &controllers.ViewController{}) //ブログの文章を作成 - beego.RegisterController("/new", &controllers.NewController{}) + beego.Router("/new", &controllers.NewController{}) //ブログの削除 - beego.RegisterController("/delete/:id([0-9]+)", &controllers.DeleteController{}) + beego.Router("/delete/:id([0-9]+)", &controllers.DeleteController{}) //ブログの編集 - beego.RegisterController("/edit/:id([0-9]+)", &controllers.EditController{}) + beego.Router("/edit/:id([0-9]+)", &controllers.EditController{}) ## データベーススキーマ @@ -66,8 +66,7 @@ ViewController: } func (this *ViewController) Get() { - inputs := this.Input() - id, _ := strconv.Atoi(this.Ctx.Params[":id"]) + id, _ := strconv.Atoi(this.Ctx.Input.Params[":id"]) this.Data["Post"] = models.GetBlog(id) this.Layout = "layout.tpl" this.TplNames = "view.tpl" @@ -101,8 +100,7 @@ EditController } func (this *EditController) Get() { - inputs := this.Input() - id, _ := strconv.Atoi(this.Ctx.Params[":id"]) + id, _ := strconv.Atoi(this.Ctx.Input.Params[":id"]) this.Data["Post"] = models.GetBlog(id) this.Layout = "layout.tpl" this.TplNames = "new.tpl" @@ -127,7 +125,9 @@ DeleteController func (this *DeleteController) Get() { id, _ := strconv.Atoi(this.Ctx.Params[":id"]) - this.Data["Post"] = models.DelBlog(id) + blog := GetBlog(id int) + this.Data["Post"] = blog + models.DelBlog(blog) this.Ctx.Redirect(302, "/") } From 9b4eb5434665f59d2757a0085e14042b8ded6d30 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 21:26:43 +0900 Subject: [PATCH 17/47] [ja] apply patch] --- ja/ebook/13.5.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/ebook/13.5.md b/ja/ebook/13.5.md index ef210d24..cc643b89 100644 --- a/ja/ebook/13.5.md +++ b/ja/ebook/13.5.md @@ -124,7 +124,7 @@ DeleteController } func (this *DeleteController) Get() { - id, _ := strconv.Atoi(this.Ctx.Params[":id"]) + id, _ := strconv.Atoi(this.Ctx.Input.Params[":id"]) blog := GetBlog(id int) this.Data["Post"] = blog models.DelBlog(blog) From 96006aa2dd2c2ae3a7dc9bcc7b6d14886708fbac Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 21:27:39 +0900 Subject: [PATCH 18/47] [ja] apply patch] --- ja/ebook/13.5.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ja/ebook/13.5.md b/ja/ebook/13.5.md index cc643b89..0282bff1 100644 --- a/ja/ebook/13.5.md +++ b/ja/ebook/13.5.md @@ -66,7 +66,7 @@ ViewController: } func (this *ViewController) Get() { - id, _ := strconv.Atoi(this.Ctx.Input.Params[":id"]) + id, _ := strconv.Atoi(this.Ctx.Input.Params(":id")) this.Data["Post"] = models.GetBlog(id) this.Layout = "layout.tpl" this.TplNames = "view.tpl" @@ -100,7 +100,7 @@ EditController } func (this *EditController) Get() { - id, _ := strconv.Atoi(this.Ctx.Input.Params[":id"]) + id, _ := strconv.Atoi(this.Ctx.Input.Params(":id")) this.Data["Post"] = models.GetBlog(id) this.Layout = "layout.tpl" this.TplNames = "new.tpl" @@ -124,7 +124,7 @@ DeleteController } func (this *DeleteController) Get() { - id, _ := strconv.Atoi(this.Ctx.Input.Params[":id"]) + id, _ := strconv.Atoi(this.Ctx.Input.Params(":id")) blog := GetBlog(id int) this.Data["Post"] = blog models.DelBlog(blog) From b37575444f7b35f2a5f837a25724939d830ed9d8 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 21:28:54 +0900 Subject: [PATCH 19/47] [ja] apply patch] --- ja/ebook/06.1.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ja/ebook/06.1.md b/ja/ebook/06.1.md index b67aeba9..687c8705 100644 --- a/ja/ebook/06.1.md +++ b/ja/ebook/06.1.md @@ -60,8 +60,8 @@ wは入力する必要のあるresponse、cookieはstructです。cookieオブ 例を一つ見てみましょう。どのようにcookieを設定するかです。 - expiration := *time.LocalTime() - expiration.Year += 1 + expiration := time.Now() + expiration = expiration.AddDate(1, 0, 0) cookie := http.Cookie{Name: "username", Value: "astaxie", Expires: expiration} http.SetCookie(w, &cookie) From b374abecaf28a80441a1ec4f35f73dc2ae7db53a Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 21:30:04 +0900 Subject: [PATCH 20/47] [ja] apply patch] --- ja/ebook/05.4.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ja/ebook/05.4.md b/ja/ebook/05.4.md index 8012669a..05e2936a 100644 --- a/ja/ebook/05.4.md +++ b/ja/ebook/05.4.md @@ -9,7 +9,7 @@ MySQLはOracleに買収され、現在徐々にクローズされつつありま ## ドライバ GoはPostgreSQLをサポートしたドライバも非常に多く実装されています。国外では多くの人が開発でこのデータベースを使用しているためです。 -- https://github.com/bmizerany/pq database/sqlドライバをサポートしています。純粋にGoで書かれています。 +- https://github.com/lib/pq database/sqlドライバをサポートしています。純粋にGoで書かれています。 - https://github.com/jbarham/gopgsqldriver database/sqlドライバをサポートしています。純粋にGoで書かれています。 - https://github.com/lxn/go-pgsql database/sqlドライバをサポートしています。純粋にGoで書かれています。 @@ -43,7 +43,7 @@ package main import ( "database/sql" "fmt" - _ "github.com/bmizerany/pq" + _ "https://github.com/lib/pq" ) func main() { From efde2e1e7dc045f9a570cca143422661597cf58f Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 21:30:16 +0900 Subject: [PATCH 21/47] [ja] apply patch] --- ja/ebook/04.5.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ja/ebook/04.5.md b/ja/ebook/04.5.md index 9e109411..e975938a 100644 --- a/ja/ebook/04.5.md +++ b/ja/ebook/04.5.md @@ -113,7 +113,8 @@ fmt.Println("error opening file") return err } - + defer fh.Close() + //iocopy _, err = io.Copy(fileWriter, fh) if err != nil { From dace4fa9c57bbdefac3fbee6221c002fa09543fc Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 21:31:26 +0900 Subject: [PATCH 22/47] [ja] apply patch] --- ja/ebook/02.5.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ja/ebook/02.5.md b/ja/ebook/02.5.md index 4c792663..cc9d41e5 100644 --- a/ja/ebook/02.5.md +++ b/ja/ebook/02.5.md @@ -156,7 +156,7 @@ methodはstructの上でしか使用されないのでしょうか?当然違 b.color = c } - func (bl BoxList) BiggestsColor() Color { + func (bl BoxList) BiggestColor() Color { v := 0.00 k := Color(WHITE) for _, b := range bl { @@ -192,13 +192,13 @@ methodはstructの上でしか使用されないのでしょうか?当然違 fmt.Printf("We have %d boxes in our set\n", len(boxes)) fmt.Println("The volume of the first one is", boxes[0].Volume(), "cm³") fmt.Println("The color of the last one is",boxes[len(boxes)-1].color.String()) - fmt.Println("The biggest one is", boxes.BiggestsColor().String()) + fmt.Println("The biggest one is", boxes.BiggestColor().String()) fmt.Println("Let's paint them all black") boxes.PaintItBlack() fmt.Println("The color of the second one is", boxes[1].color.String()) - fmt.Println("Obviously, now, the biggest one is", boxes.BiggestsColor().String()) + fmt.Println("Obviously, now, the biggest one is", boxes.BiggestColor().String()) } 上のコードはconstでいくつかの定数を定義しています。その後カスタム定義型を定義しています。 @@ -211,8 +211,8 @@ methodはstructの上でしか使用されないのでしょうか?当然違 - Volume()はレシーバをBoxとして定義します。Boxの堆積を返します。 - SetColor(c Color)はBoxの色をcに変更します。 -- BiggestsColor()はBoxListに定義されており、listの中の体積が最大の色を返します。 -- PointItBlack()はBoxListのすべてのBoxの色を全部黒に変更します。 +- BiggestColor()はBoxListに定義されており、listの中の体積が最大の色を返します。 +- PaintItBlack()はBoxListのすべてのBoxの色を全部黒に変更します。 - String()はColorに定義されており、Colorno具体的な色を返します(文字列形式) 上のコードは文字で書くと非常に簡単に思えませんか?私達は問題を解決する場合問題の描写を通して、対応するコードを書くことで実現します。 From c9f4c76082e1f30a49262d8bd9a3f26016618c90 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 21:31:43 +0900 Subject: [PATCH 23/47] [ja] apply patch] --- ja/ebook/05.5.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/ebook/05.5.md b/ja/ebook/05.5.md index 620328b8..f9ef783c 100644 --- a/ja/ebook/05.5.md +++ b/ja/ebook/05.5.md @@ -84,7 +84,7 @@ beedbインターフェースはもう一種類の挿入の方法を提供して 複数のデータを挿入 - addslice := make([]map[string]interface{}) + addslice := make([]map[string]interface{}, 0) add:=make(map[string]interface{}) add2:=make(map[string]interface{}) add["username"] = "astaxie" From d5b3eb40c303604d6c562b34a3c35dba964c7834 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 21:44:15 +0900 Subject: [PATCH 24/47] [ja] apply patch] --- ja/ebook/README.md | 2 + ja/ebook/SUMMARY.md | 96 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 ja/ebook/README.md create mode 100644 ja/ebook/SUMMARY.md diff --git a/ja/ebook/README.md b/ja/ebook/README.md new file mode 100644 index 00000000..46bc88ec --- /dev/null +++ b/ja/ebook/README.md @@ -0,0 +1,2 @@ +# Go Web プログラミング +Webプログラミングが好きでGo webプログラミングを書きました。皆さんに気にいってもらえれば幸いです。 diff --git a/ja/ebook/SUMMARY.md b/ja/ebook/SUMMARY.md new file mode 100644 index 00000000..4337ca20 --- /dev/null +++ b/ja/ebook/SUMMARY.md @@ -0,0 +1,96 @@ +* [Goの環境設定](01.0.md) + * [Goのインストール](01.1.md) + * [GOPATHとワーキングディレクトリ](01.2.md) + * [Goのコマンド](01.3.md) + * [Goの開発ツール](01.4.md) + * [概要](01.5.md) +* [Go言語の基礎](02.0.md) + * [こんにちは、Go](02.1.md) + * [Goの基礎](02.2.md) + * [フローと関数](02.3.md) + * [struct型](02.4.md) + * [オブジェクト指向](02.5.md) + * [interface](02.6.md) + * [マルチスレッド](02.7.md) + * [概要](02.8.md) +* [Webの基礎](03.0.md) + * [webでの作業方法](03.1.md) + * [Goで簡単なwebサーバを立てる](03.2.md) + * [Goはどのようにしてweb作業を行うか](03.3.md) + * [Goのhttpパッケージ詳細](03.4.md) + * [概要](03.5.md) +* [フォーム](04.0.md) + * [フォームの入力を処理する](04.1.md) + * [フォームに入力された内容の検証](04.2.md) + * [クロスサイトスクリプティングの予防](04.3.md) + * [フォームの複数回送信の防止](04.4.md) + * [ファイルのアップロード処理](04.5.md) + * [概要](04.6.md) +* [データベースへのアクセス](05.0.md) + * [database/sqlインターフェース](05.1.md) + * [MySQL データベースの使用](05.2.md) + * [SQLiteデータベースの使用](05.3.md) + * [PostgreSQLデータベースの使用](05.4.md) + * [beedbライブラリを使用してORM開発を行う](05.5.md) + * [NOSQLデータベースの操作](05.6.md) + * [概要](05.7.md) +* [sessionとデータの保存](06.0.md) + * [sessionとcookie](06.1.md) + * [Goはどのようにしてsessionを使用するか](06.2.md) + * [sessionストレージ](06.3.md) + * [sessionハイジャックの予防](06.4.md) + * [概要](06.5.md) +* [テキスト処理](07.0.md) + * [XMLの処理](07.1.md) + * [JSONの処理](07.2.md) + * [正規表現の処理](07.3.md) + * [テンプレートの処理](07.4.md) + * [ファイルの操作](07.5.md) + * [文字列の処理](07.6.md) + * [概要](07.7.md) +* [Webサービス](08.0.md) + * [Socketプログラミング](08.1.md) + * [WebSocket](08.2.md) + * [REST](08.3.md) + * [RPC](08.4.md) + * [概要](08.5.md) +* [セキュリティと暗号化](09.0.md) + * [CSRF攻撃の予防](09.1.md) + * [入力フィルタリングの確保](09.2.md) + * [XSS攻撃の回避](09.3.md) + * [SQLインジェクションの回避](09.4.md) + * [パスワードの保存](09.5.md) + * [データを暗号化/復元する](09.6.md) + * [概要](09.7.md) +* [国際化とローカライズ](10.0.md) + * [デフォルトロケールの設定](10.1.md) + * [ローカライズリソース](10.2.md) + * [国際化サイト](10.3.md) + * [概要](10.4.md) +* [エラー処理、デバッグとテスト](11.0.md) + * [エラー処理](11.1.md) + * [GDBを使用したデバッグ](11.2.md) + * [Goによるテスト例](11.3.md) + * [概要](11.4.md) +* [デプロイとメンテナンス](12.0.md) + * [アプリケーションログ](12.1.md) + * [サイトのエラー処理](12.2.md) + * [アプリケーションのデプロイ](12.3.md) + * [バックアップとリストア](12.4.md) + * [概要](12.5.md) +* [どのようにしてWebフレームワークを設計するか](13.0.md)  + * [プロジェクトプラン](13.1.md)  + * [カスタムルータの設計](13.2.md) + * [controllerの設計](13.3.md) + * [ログとデプロイ設計](13.4.md) + * [ブログの追加/削除/修正の実装](13.5.md) + * [概要](13.6.md)  +* [Webフレームワークの拡張](14.0.md) + * [静的ファイルのサポート](14.1.md) + * [Sessionのサポート](14.2.md) + * [フォームのサポート](14.3.md) + * [ユーザ認証](14.4.md) + * [多言語サポート](14.5.md) + * [pprofのサポート](14.6.md) + * [概要](14.7.md) +* 付録A [参考資料](ref.md) From 421d1282663a943df34b399e4e9e0c3f05219eb9 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 21:46:10 +0900 Subject: [PATCH 25/47] [ja] apply patch] --- ja/ebook/03.4.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ja/ebook/03.4.md b/ja/ebook/03.4.md index 06da10c8..be5d6617 100644 --- a/ja/ebook/03.4.md +++ b/ja/ebook/03.4.md @@ -135,11 +135,11 @@ httpパッケージへの分析を通して、全体のコードの実行プロ 順序にしたがっていくつかの事を行います: - 1 DefaultServerMuxのHandlerFuncをコールする。 + 1 DefaultServeMuxのHandlerFuncをコールする。 - 2 DefaultServerMuxのHandleをコールする。 + 2 DefaultServeMuxのHandleをコールする。 - 3 DefaultServerMuxのmap[string]muxEntryで目的のhandlerとルーティングルールを追加する。 + 3 DefaultServeMuxのmap[string]muxEntryで目的のhandlerとルーティングルールを追加する。 - 次にhttp.ListenAndServe(":9090", nil)をコールする。 @@ -161,7 +161,7 @@ httpパッケージへの分析を通して、全体のコードの実行プロ 8 handlerのServeHttpをコールする - 9 この例の中では、この後DefaultServerMux.ServeHttpの中に入ります + 9 この例の中では、この後DefaultServeMux.ServeHttpの中に入ります 10 requestに従ってhandlerを選択し、このhandlerのServeHTTPに入ります From 21ce9f5dc4aebc3ee92cac9a7b0eeb4529c338aa Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 21:49:11 +0900 Subject: [PATCH 26/47] [ja] apply patch] --- ja/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/README.md b/ja/README.md index 36c99383..7b197f32 100644 --- a/ja/README.md +++ b/ja/README.md @@ -17,7 +17,7 @@ ## 連絡方法 ぜひQQ群にどうぞ:259316004 《Go Web编程》专用交流群 -掲示板:[http://bbs.mygolang.com](http://bbs.mygolang.com) +掲示板:[http://bbs.go-china.org/](http://bbs.go-china.org/) ## 謝辞 まずGolang-ChinaのQQ群102319854に感謝を申し上げます。彼らはみんな非常に熱心で、特に数名の方には本当に感謝しています。 From 098580501b01fdc8e63372d0302e2ddcf98e267c Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 21:49:38 +0900 Subject: [PATCH 27/47] [ja] apply patch] --- ja/ebook/02.6.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/ebook/02.6.md b/ja/ebook/02.6.md index 64198f57..367c9f28 100644 --- a/ja/ebook/02.6.md +++ b/ja/ebook/02.6.md @@ -142,7 +142,7 @@ mは3つの型を持つことのできるオブジェクトなので、Men型 mike := Student{Human{"Mike", 25, "222-222-XXX"}, "MIT", 0.00} paul := Student{Human{"Paul", 26, "111-222-XXX"}, "Harvard", 100} sam := Employee{Human{"Sam", 36, "444-222-XXX"}, "Golang Inc.", 1000} - Tom := Employee{Human{"Sam", 36, "444-222-XXX"}, "Things Ltd.", 5000} + Tom := Employee{Human{"Tom", 37, "222-444-XXX"}, "Things Ltd.", 5000} //Men型の変数iを定義します。 var i Men From 995bee79219a811319eb4e16086f355f58b3914e Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 21:49:54 +0900 Subject: [PATCH 28/47] [ja] apply patch] --- ja/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ja/README.md b/ja/README.md index 7b197f32..74e31c39 100644 --- a/ja/README.md +++ b/ja/README.md @@ -13,6 +13,7 @@ 寄付はこちら: [https://me.alipay.com/astaxie](https://me.alipay.com/astaxie) +English Donate:[donate](http://beego.me/donate) ## 連絡方法 ぜひQQ群にどうぞ:259316004 《Go Web编程》专用交流群 From de4bedc36af880eb65f5a7f2ca0c24bd8fe4b37f Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 21:55:06 +0900 Subject: [PATCH 29/47] [ja] apply patch] --- ja/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/README.md b/ja/README.md index 74e31c39..1954259c 100644 --- a/ja/README.md +++ b/ja/README.md @@ -11,7 +11,7 @@ # カンパでサポートする もし"Go Webプログラミング"を気に入っていただけたのなら、寄付を通じて作者にこの本の続きを更新させるか、もっと面白くてためになるオープンソースアプリケーションの開発をご検討下さい:例えばこの本にパッチをあてたり、もっと面白い章を追加したり、もっともっと凄い内容の次回作を出してみたり、beegoを改修してくれたり、です。 -寄付はこちら: [https://me.alipay.com/astaxie](https://me.alipay.com/astaxie) +支付宝扫描捐款: ![](images/alipay.png) English Donate:[donate](http://beego.me/donate) From bf29388276ed97563c26e0e69ac53bc401d526eb Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 21:55:37 +0900 Subject: [PATCH 30/47] [ja] apply patch] --- ja/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/README.md b/ja/README.md index 1954259c..4169e66c 100644 --- a/ja/README.md +++ b/ja/README.md @@ -11,7 +11,7 @@ # カンパでサポートする もし"Go Webプログラミング"を気に入っていただけたのなら、寄付を通じて作者にこの本の続きを更新させるか、もっと面白くてためになるオープンソースアプリケーションの開発をご検討下さい:例えばこの本にパッチをあてたり、もっと面白い章を追加したり、もっともっと凄い内容の次回作を出してみたり、beegoを改修してくれたり、です。 -支付宝扫描捐款: ![](images/alipay.png) +支付宝扫描捐款: ![](ebook/images/alipay.png) English Donate:[donate](http://beego.me/donate) From 364818ce09777897fe9aee4b9a64799e62868f6e Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 21:59:38 +0900 Subject: [PATCH 31/47] [ja] apply patch] --- ja/README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ja/README.md b/ja/README.md index 4169e66c..08fb48e9 100644 --- a/ja/README.md +++ b/ja/README.md @@ -1,4 +1,13 @@ +<<<<<<< ours # "Go Web プログラミング" +この本には現在いくつかのバージョンがあります: + +[中国語で読み始める]() + +[日本語で読み始める]() + +[English Version]() + 現在この本はすでに出版されています。もし悪くない内容だと思ったら以下より購入することができます。ご協力に感謝いたします: - [chinapub](http://product.china-pub.com/3767290) From 001b1e5d640fecd8ed8df01e7811f24d9238a105 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 22:01:16 +0900 Subject: [PATCH 32/47] [ja] apply patch] --- ja/ebook/01.4.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/ebook/01.4.md b/ja/ebook/01.4.md index 4575d0e5..72e68925 100644 --- a/ja/ebook/01.4.md +++ b/ja/ebook/01.4.md @@ -226,7 +226,7 @@ Vimはviから発展したテキストエディタです。コード補完、コ 5. おめでとうございます。インストール完了です。あなたは今から`:e main.go`でGoで開発する面白さを体験することができます。 -より多くのVIM 設定は、[リンク](http://monnand.me/p/vim-golang-environment/zhCN/)をご参照ください。 +より多くのVIMの設定は、[リンク](http://monnand.me/p/vim-golang-environment/zhCN/)をご参照ください。 ## Emacs Emacsは伝説の神器です。彼女はエディタであるだけでなく、統合環境でもあります。または開発環境の集大成と呼んでもよいかもしれません。これらの機能はユーザの身を万能のオペレーティングシステムに置きます。 From 292a4d6bf76691867b2be8ab0136b071fd516b1d Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 22:01:42 +0900 Subject: [PATCH 33/47] [ja] apply patch] --- ja/ebook/13.5.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/ebook/13.5.md b/ja/ebook/13.5.md index 0282bff1..94e17512 100644 --- a/ja/ebook/13.5.md +++ b/ja/ebook/13.5.md @@ -100,7 +100,7 @@ EditController } func (this *EditController) Get() { - id, _ := strconv.Atoi(this.Ctx.Input.Params(":id")) + id, _ := strconv.Atoi(this.Ctx.Input.Params[":id"]) this.Data["Post"] = models.GetBlog(id) this.Layout = "layout.tpl" this.TplNames = "new.tpl" From 9817db91b9b7acd1f74ec91991521db886d21a76 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 22:04:09 +0900 Subject: [PATCH 34/47] [ja] apply patch] --- ja/ebook/02.2.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ja/ebook/02.2.md b/ja/ebook/02.2.md index 66e0434b..17462b34 100644 --- a/ja/ebook/02.2.md +++ b/ja/ebook/02.2.md @@ -386,7 +386,7 @@ sliceには便利な操作があります 下のコードをご覧ください。`map`の読み込みと代入は`slice`と似ています。`key`を通して操作します。ただ、`slice`の`index`は`int`型のみになります。`map`には多くの型があります。`int`でもかまいませんし、`string`や`==`と`!=`演算子が定義されている全ての型でもかまいません。 // keyを文字列で宣言します。値はintとなるディクショナリです。この方法は使用される前にmakeで初期化される必要があります。 - var numbers map[string] int + var numbers map[string]int // もうひとつのmapの宣言方法 numbers := make(map[string]int) numbers["one"] = 1 //代入 @@ -410,7 +410,7 @@ mapを使う段階で注意しなければならないことがいくつかあ `delete`で`map`の要素を削除します: // ディクショナリを初期化します。 - rating := map[string]float32 {"C":5, "Go":4.5, "Python":4.5, "C++":2 } + rating := map[string]float32{"C":5, "Go":4.5, "Python":4.5, "C++":2 } // mapは2つの戻り値があります。2つ目の戻り値では、もしkeyが存在しなければ、okはfalseに、存在すればokはtrueになります。 csharpRating, ok := rating["C#"] if ok { From ba4caa9372ae2007f4dcdf960fd3b6ce7f6b5918 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 22:21:30 +0900 Subject: [PATCH 35/47] [ja] apply patch] --- ja/ebook/01.1.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/ja/ebook/01.1.md b/ja/ebook/01.1.md index a290fc4a..84742c00 100644 --- a/ja/ebook/01.1.md +++ b/ja/ebook/01.1.md @@ -96,13 +96,16 @@ PATHを設定します。`export PATH=$PATH:$GO_INSTALL_DIR/go/bin` もしgoのUsage情報が現れた場合は、goはすでにインストールされています。もしこのコマンドが存在しないと出てきた場合は、自分のPATH環境変数の中にgoのインストールディレクトリが含まれているか確認してください。 -### Windows インストール +### Windows インストール ### -[ダウンロードURL][downlink]に接続し、32bitシステムはgo1.0.3.windows-386.msiをダウンロードします。64bitシステムであればgo1.0.3.windows-amd64.msiをダウンロードします。ファイルをダブルクリックして、デフォルトのまま「次へ」をクリックします。この時goはすでにあなたのシステムにインストールされています。デフォルトでインストール後の環境変数には`c:/go/bin`が追加されています。cmdを開いて、`go`と入力します。 +[Google Code ダウンロードページ][downlink]に接続し、32bit Windows の中から名前に windows-386 を含む msi パッケージをダウンロードします。64bit Windows であれば名前に windows-amd64 を含むものをダウンロードします。ダウンロード後実行しますが、デフォルトのインストールフォルダである C:\Go\を変更してはいけません。他の場所にインストールしてしまうと、あなたが書いた Go コードが実行できなくなってしまうかもしれません。インストールが終わるとデフォルトで環境変数 Path に Go のインストールフォルダの下にある bin フォルダ `C:\Go\bin\` が追加され、Go のインストールフォルダである `C:\Go\` が環境変数 GOROOT に追加されます。cmdを開いて、`go`と入力します。 -macインストール成功の画像で、インストールが成功します。 +** インストールが成功しているか確認する ** + +「ファイル名を指定して実行」に `cmd` を入力することでコマンドラインツールを開きます。プロンプトで`go`と入力することで Usage 情報が確認できるか確かめることができます。`cd %GOROOT%` を入力すると、Go のインストールフォルダに入れるか確認できます。どちらも成功していれば、インストールに成功しています。 + +インストールに成功していなければ、環境変数 Path と GOROOT の値を確認してください。もし存在しなければアンインストールの上再インストールし、存在していればコンピュータを再起動してください。大抵は再起動していないことが原因です。 -もしGoのUsage情報が現れたら、Goはすでにインストールされています。もしこのコマンドが存在しないと出た場合は自分のPATH環境変数にGoのインストールディレクトリが含まれるか確認してください。 ## サードパーティツールのインストール ### GVM From 6805869ef0d3b51e4599c62118f62129c0305548 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 22:22:42 +0900 Subject: [PATCH 36/47] [ja] apply patch] --- ja/ebook/01.1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/ebook/01.1.md b/ja/ebook/01.1.md index 84742c00..a9558a31 100644 --- a/ja/ebook/01.1.md +++ b/ja/ebook/01.1.md @@ -98,7 +98,7 @@ PATHを設定します。`export PATH=$PATH:$GO_INSTALL_DIR/go/bin` ### Windows インストール ### -[Google Code ダウンロードページ][downlink]に接続し、32bit Windows の中から名前に windows-386 を含む msi パッケージをダウンロードします。64bit Windows であれば名前に windows-amd64 を含むものをダウンロードします。ダウンロード後実行しますが、デフォルトのインストールフォルダである C:\Go\を変更してはいけません。他の場所にインストールしてしまうと、あなたが書いた Go コードが実行できなくなってしまうかもしれません。インストールが終わるとデフォルトで環境変数 Path に Go のインストールフォルダの下にある bin フォルダ `C:\Go\bin\` が追加され、Go のインストールフォルダである `C:\Go\` が環境変数 GOROOT に追加されます。cmdを開いて、`go`と入力します。 +[Google Code ダウンロードページ][downlink]に接続し、32bit の場合は名前に windows-386 を含む msi パッケージをダウンロードします。64bit であれば名前に windows-amd64 を含むものをダウンロードします。ダウンロード後実行しますが、デフォルトのインストールフォルダである C:\Go\を変更してはいけません。他の場所にインストールしてしまうと、あなたが書いた Go コードが実行できなくなってしまうかもしれません。インストールが終わるとデフォルトで環境変数 Path に Go のインストールフォルダの下にある bin フォルダ `C:\Go\bin\` が追加され、Go のインストールフォルダである `C:\Go\` が環境変数 GOROOT に追加されます。cmdを開いて、`go`と入力します。 ** インストールが成功しているか確認する ** From 904a205628b3c0c47c5276ea769aca4d850a0215 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 22:23:46 +0900 Subject: [PATCH 37/47] [ja] apply patch] --- ja/ebook/01.1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/ebook/01.1.md b/ja/ebook/01.1.md index a9558a31..20430b79 100644 --- a/ja/ebook/01.1.md +++ b/ja/ebook/01.1.md @@ -98,7 +98,7 @@ PATHを設定します。`export PATH=$PATH:$GO_INSTALL_DIR/go/bin` ### Windows インストール ### -[Google Code ダウンロードページ][downlink]に接続し、32bit の場合は名前に windows-386 を含む msi パッケージをダウンロードします。64bit であれば名前に windows-amd64 を含むものをダウンロードします。ダウンロード後実行しますが、デフォルトのインストールフォルダである C:\Go\を変更してはいけません。他の場所にインストールしてしまうと、あなたが書いた Go コードが実行できなくなってしまうかもしれません。インストールが終わるとデフォルトで環境変数 Path に Go のインストールフォルダの下にある bin フォルダ `C:\Go\bin\` が追加され、Go のインストールフォルダである `C:\Go\` が環境変数 GOROOT に追加されます。cmdを開いて、`go`と入力します。 +[Google Code ダウンロードページ][downlink]に接続し、32bit の場合は名前に windows-386 を含む msi パッケージをダウンロードします。64bit であれば名前に windows-amd64 を含むものをダウンロードします。ダウンロード後実行しますが、デフォルトのインストールフォルダである C:\Go\を変更してはいけません。他の場所にインストールしてしまうと、あなたが書いた Go コードが実行できなくなってしまうかもしれません。インストールが終わるとデフォルトで環境変数 Path に Go のインストールフォルダの下にある bin フォルダ `C:\Go\bin\` が追加され、Go のインストールフォルダである `C:\Go\` の値が環境変数 GOROOT に追加されます。cmdを開いて、`go`と入力します。 ** インストールが成功しているか確認する ** From aa2604befc8626c345cb07a7095f39be67cdfe2e Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 22:24:41 +0900 Subject: [PATCH 38/47] [ja] apply patch] --- ja/ebook/01.1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/ebook/01.1.md b/ja/ebook/01.1.md index 20430b79..231d1c2e 100644 --- a/ja/ebook/01.1.md +++ b/ja/ebook/01.1.md @@ -98,7 +98,7 @@ PATHを設定します。`export PATH=$PATH:$GO_INSTALL_DIR/go/bin` ### Windows インストール ### -[Google Code ダウンロードページ][downlink]に接続し、32bit の場合は名前に windows-386 を含む msi パッケージをダウンロードします。64bit であれば名前に windows-amd64 を含むものをダウンロードします。ダウンロード後実行しますが、デフォルトのインストールフォルダである C:\Go\を変更してはいけません。他の場所にインストールしてしまうと、あなたが書いた Go コードが実行できなくなってしまうかもしれません。インストールが終わるとデフォルトで環境変数 Path に Go のインストールフォルダの下にある bin フォルダ `C:\Go\bin\` が追加され、Go のインストールフォルダである `C:\Go\` の値が環境変数 GOROOT に追加されます。cmdを開いて、`go`と入力します。 +[Google Code ダウンロードページ][downlink]に接続し、32bit の場合は名前に windows-386 を含む msi パッケージをダウンロードします。64bit であれば名前に windows-amd64 を含むものをダウンロードします。ダウンロード後実行しますが、デフォルトのインストールフォルダである C:\Go\を変更してはいけません。他の場所にインストールしてしまうと、あなたが書いた Go コードが実行できなくなってしまうかもしれません。インストールが終わるとデフォルトで環境変数 Path に Go のインストールフォルダの下にある bin フォルダ `C:\Go\bin\` が追加され、Go のインストールフォルダである `C:\Go\` の値が環境変数 GOROOT に追加されます。 ** インストールが成功しているか確認する ** From 9c65660d796a6a1053c35813e63990f6e56080e9 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 22:26:02 +0900 Subject: [PATCH 39/47] [ja] apply patch] --- ja/ebook/01.1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/ebook/01.1.md b/ja/ebook/01.1.md index 231d1c2e..ef12dda2 100644 --- a/ja/ebook/01.1.md +++ b/ja/ebook/01.1.md @@ -104,7 +104,7 @@ PATHを設定します。`export PATH=$PATH:$GO_INSTALL_DIR/go/bin` 「ファイル名を指定して実行」に `cmd` を入力することでコマンドラインツールを開きます。プロンプトで`go`と入力することで Usage 情報が確認できるか確かめることができます。`cd %GOROOT%` を入力すると、Go のインストールフォルダに入れるか確認できます。どちらも成功していれば、インストールに成功しています。 -インストールに成功していなければ、環境変数 Path と GOROOT の値を確認してください。もし存在しなければアンインストールの上再インストールし、存在していればコンピュータを再起動してください。大抵は再起動していないことが原因です。 +インストールに成功していなければ、環境変数 Path と GOROOT の値を確認してください。もし存在しなければアンインストールの上再インストールし、存在していればコンピュータを再起動し、上の手順を再度お試しください。 ## サードパーティツールのインストール From 6f829093d618d7794254f1b49820d6a175cb31ef Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 22:29:34 +0900 Subject: [PATCH 40/47] [ja] apply patch] --- ja/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ja/README.md b/ja/README.md index 9969d0b2..3559c429 100644 --- a/ja/README.md +++ b/ja/README.md @@ -1,4 +1,3 @@ -<<<<<<< ours # "Go Web プログラミング" この本には現在いくつかのバージョンがあります: @@ -30,7 +29,7 @@ English Donate:[donate](http://beego.me/donate) 掲示板:[http://bbs.go-china.org/](http://bbs.go-china.org/) ## 謝辞 -まずGolang-ChinaのQQ群102319854に感謝を申し上げます。彼らはみんな非常に熱心で、特に数名の方には本当に感謝しています。 +まずGolang-ChinaのQQ群102319854(すでに満員です)に感謝を申し上げます。2群(384414723)を追加してください。彼らはみんな非常に熱心で、特に数名の方には本当に感謝しています。 - [四月份平民](https://plus.google.com/110445767383269817959) (コードレビュー) - [Hong Ruiqi](https://github.com/hongruiqi) (コードレビュー) From f5b139df7b925322142a1846bf579f40905569cd Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 22:34:44 +0900 Subject: [PATCH 41/47] [ja] apply patch] --- ja/ebook/04.2.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ja/ebook/04.2.md b/ja/ebook/04.2.md index 7228afbb..d2ad1dab 100644 --- a/ja/ebook/04.2.md +++ b/ja/ebook/04.2.md @@ -39,9 +39,9 @@ Webアプリケーションを書く時は主に2つの方面のデータ検 >Goの正規表現の実装は[RE2](http://code.google.com/p/re2/wiki/Syntax)です。すべての文字はUTF-8エンコーディングです。 ## 中文 -フォームの要素からユーザの中国語名を得たい場合で、なおかつ正しい中国語であることを保証したい場合、検証を行う必要があります。ユーザに自由に入力はさせません。中国語に対する有効な検証方法は今のところ正規表現しかありません。下のコードをご確認ください +フォームの要素からユーザの中国語名を得たい場合で、なおかつ正しい中国語であることを保証したい場合、検証を行う必要があります。ユーザに自由に入力はさせません。中国語に対する有効な検証には、`unicode` パッケージが提供する `func Is(rangeTab *RangeTable, r rune) bool` と正規表現を使う方法があります。下のコードをご確認ください - if m, _ := regexp.MatchString("^[\\x{4e00}-\\x{9fa5}]+$", r.Form.Get("realname")); !m { + if m, _ := regexp.MatchString("^\\p{Han}+$", r.Form.Get("realname")); !m { return false } From e3e2dd5a49e36812a5a1ca9a06251d74005d1ee0 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 22:49:12 +0900 Subject: [PATCH 42/47] =?UTF-8?q?[ja]=20=E6=A6=82=E8=A6=81->=E3=81=BE?= =?UTF-8?q?=E3=81=A8=E3=82=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ja/ebook/01.4.md | 2 +- ja/ebook/02.0.md | 2 +- ja/ebook/02.7.md | 2 +- ja/ebook/03.0.md | 2 +- ja/ebook/03.4.md | 2 +- ja/ebook/04.0.md | 2 +- ja/ebook/04.5.md | 2 +- ja/ebook/05.0.md | 2 +- ja/ebook/05.6.md | 2 +- ja/ebook/06.0.md | 2 +- ja/ebook/06.4.md | 2 +- ja/ebook/07.0.md | 4 ++-- ja/ebook/07.6.md | 2 +- ja/ebook/08.0.md | 2 +- ja/ebook/08.4.md | 2 +- ja/ebook/09.0.md | 2 +- ja/ebook/09.6.md | 2 +- ja/ebook/10.0.md | 2 +- ja/ebook/10.3.md | 2 +- ja/ebook/11.0.md | 2 +- ja/ebook/11.3.md | 2 +- ja/ebook/12.0.md | 2 +- ja/ebook/12.4.md | 2 +- ja/ebook/13.0.md | 2 +- ja/ebook/13.5.md | 2 +- ja/ebook/14.0.md | 2 +- ja/ebook/14.6.md | 2 +- ja/ebook/14.7.md | 2 +- ja/ebook/SUMMARY.md | 28 ++++++++++++++-------------- ja/ebook/preface.md | 28 ++++++++++++++-------------- 30 files changed, 57 insertions(+), 57 deletions(-) diff --git a/ja/ebook/01.4.md b/ja/ebook/01.4.md index 72e68925..04f2123f 100644 --- a/ja/ebook/01.4.md +++ b/ja/ebook/01.4.md @@ -457,4 +457,4 @@ Javaに親しい読者はideaには不慣れだと思います、ideaはプラ ## links * [目次]() * 前へ: [Goのコマンド](<01.3.md>) - * 次へ: [概要](<01.5.md>) + * 次へ: [まとめ](<01.5.md>) diff --git a/ja/ebook/02.0.md b/ja/ebook/02.0.md index 0a101f13..a2877e37 100644 --- a/ja/ebook/02.0.md +++ b/ja/ebook/02.0.md @@ -15,5 +15,5 @@ GoはCに似たコンパイラ型言語です。ですが、このコンパイ ## links * [目次]() - * 前へ: [第一章概要](<01.5.md>) + * 前へ: [第一章まとめ](<01.5.md>) * 次へ: [こんにちは、Go](<02.1.md>) diff --git a/ja/ebook/02.7.md b/ja/ebook/02.7.md index 6ff6b315..3abf4e5f 100644 --- a/ja/ebook/02.7.md +++ b/ja/ebook/02.7.md @@ -236,4 +236,4 @@ runtimeパッケージにはgoroutineを処理するいくつかの関数が含 ## links * [目次]() * 前へ: [interface](<02.6.md>) - * 次へ: [概要](<02.8.md>) + * 次へ: [まとめ](<02.8.md>) diff --git a/ja/ebook/03.0.md b/ja/ebook/03.0.md index 21ad71b6..4a0c6538 100644 --- a/ja/ebook/03.0.md +++ b/ja/ebook/03.0.md @@ -7,5 +7,5 @@ Webのプログラミングの基礎を勉強することはあなたにとっ ## links * [目次]() - * 前へ: [第二章概要](<02.8.md>) + * 前へ: [第二章まとめ](<02.8.md>) * 次へ: [Webでの作業方法](<03.1.md>) diff --git a/ja/ebook/03.4.md b/ja/ebook/03.4.md index be5d6617..914ad944 100644 --- a/ja/ebook/03.4.md +++ b/ja/ebook/03.4.md @@ -178,4 +178,4 @@ httpパッケージへの分析を通して、全体のコードの実行プロ ## links * [目次]() * 前へ: [Goはどのようにしてweb作業を行うか](<03.3.md>) - * 次へ: [概要](<03.5.md>) + * 次へ: [まとめ](<03.5.md>) diff --git a/ja/ebook/04.0.md b/ja/ebook/04.0.md index 9a887076..328d854f 100644 --- a/ja/ebook/04.0.md +++ b/ja/ebook/04.0.md @@ -21,5 +21,5 @@ HTTPプロトコルはステートレスなプロトコルです。ではどの ## links * [目次]() - * 前へ: [第三章概要](<03.5.md>) + * 前へ: [第三章まとめ](<03.5.md>) * 次へ: [フォームの入力を処理する](<04.1.md>) diff --git a/ja/ebook/04.5.md b/ja/ebook/04.5.md index e975938a..826bb052 100644 --- a/ja/ebook/04.5.md +++ b/ja/ebook/04.5.md @@ -153,4 +153,4 @@ ## links * [目次]() * 前へ: [フォームの多重送信の防止](<04.4.md>) - * 次へ: [概要](<04.6.md>) + * 次へ: [まとめ](<04.6.md>) diff --git a/ja/ebook/05.0.md b/ja/ebook/05.0.md index 267e369e..3fa1552a 100644 --- a/ja/ebook/05.0.md +++ b/ja/ebook/05.0.md @@ -12,5 +12,5 @@ Goはどのようなデータベースの使用もbuiltinではサポートさ ## links * [目次]() - * 前へ: [第四章概要](<04.6.md>) + * 前へ: [第四章まとめ](<04.6.md>) * 次へ: [database/sqlインターフェース](<05.1.md>) diff --git a/ja/ebook/05.6.md b/ja/ebook/05.6.md index fc6aac61..36c80693 100644 --- a/ja/ebook/05.6.md +++ b/ja/ebook/05.6.md @@ -111,4 +111,4 @@ mgoの操作方法とbeedbの操作方法はほとんど似ていることがわ ## links * [目次]() * 前へ: [beedbライブラリを使用してORM開発を行う](<05.5.md>) - * 次へ: [概要](<05.7.md>) + * 次へ: [まとめ](<05.7.md>) diff --git a/ja/ebook/06.0.md b/ja/ebook/06.0.md index 30b415a2..136d067e 100644 --- a/ja/ebook/06.0.md +++ b/ja/ebook/06.0.md @@ -8,5 +8,5 @@ Web開発ではどのようにしてユーザの閲覧過程のすべてをコ ## links * [目次]() - * 前へ: [第五章概要](<05.7.md>) + * 前へ: [第五章まとめ](<05.7.md>) * 次へ: [sessionとcookie](<06.1.md>) diff --git a/ja/ebook/06.4.md b/ja/ebook/06.4.md index e5876b83..312bbae8 100644 --- a/ja/ebook/06.4.md +++ b/ja/ebook/06.4.md @@ -86,4 +86,4 @@ sessionが始まると、生成されたsessionIDの時間を記録する一つ ## links * [目次]() * 前へ: [sessionストレージ](<06.3.md>) - * 次へ: [概要](<06.5.md>) + * 次へ: [まとめ](<06.5.md>) diff --git a/ja/ebook/07.0.md b/ja/ebook/07.0.md index 88daddd0..78bb7af9 100644 --- a/ja/ebook/07.0.md +++ b/ja/ebook/07.0.md @@ -1,12 +1,12 @@ # 7 テキスト処理 Web開発においてテキスト処理は非常に重要な要素です。往々にして出力または入力する内容に対して処理を行う必要があります。ここでのテキストには文字列、数字、Json、XML等々が含まれます。高性能な一言語としてのGo言語では、これらのテキストの処理はすべてオフィシャルの標準パッケージにサポートされています。また利用中にGo標準ライブラリが巧みに設計されていることに気がつくでしょう。またユーザからすれば非常に簡単にこれらのテキストを処理することができます。本章では4つの節を通してユーザにGo言語のテキスト処理のよい知識をご紹介したいきたいと思います。 -XMLは現在多くの標準インターフェースの対話型言語となっています。多くの場合Javaで書かれたwebserverとのやりとりはどれもXML標準にもとづいて行われます。7.1節ではどのようにXMLテキストを処理するかご紹介します。XMLを使用した後あまりに複雑だと気づきます。現在多くのインターネット企業の対外的なAPIでは多くがJSON形式を採用しています。この形式は描写が簡単ですが、意味をよく表現することができます。7.2節ではどのようにこういったJSON形式のデータを処理するかご説明します。正規表現は人に愛され、また恨まれる道具です。このテキスト処理能力は非常に協力です。我々は前のフォームの検証でその強力さをすでに味わっています。7.3節ではどのようにGoの正規表現を利用するのがよいかより詳しく解説していきます。Web開発において非常に重要な部分としてMVCの分離があります。Go言語ではWeb開発中Vにおいて`template`という専門的にサポートするパッケージがあります。7.4節ではテンプレートをつかってコンテンツをどのように出力するのか詳細に解説していきます。7.5節ではどのようにしてファイルとディレクトリを操作するのか詳しくご紹介します。7.6節の概要では文字列に関する操作についてご紹介します。 +XMLは現在多くの標準インターフェースの対話型言語となっています。多くの場合Javaで書かれたwebserverとのやりとりはどれもXML標準にもとづいて行われます。7.1節ではどのようにXMLテキストを処理するかご紹介します。XMLを使用した後あまりに複雑だと気づきます。現在多くのインターネット企業の対外的なAPIでは多くがJSON形式を採用しています。この形式は描写が簡単ですが、意味をよく表現することができます。7.2節ではどのようにこういったJSON形式のデータを処理するかご説明します。正規表現は人に愛され、また恨まれる道具です。このテキスト処理能力は非常に協力です。我々は前のフォームの検証でその強力さをすでに味わっています。7.3節ではどのようにGoの正規表現を利用するのがよいかより詳しく解説していきます。Web開発において非常に重要な部分としてMVCの分離があります。Go言語ではWeb開発中Vにおいて`template`という専門的にサポートするパッケージがあります。7.4節ではテンプレートをつかってコンテンツをどのように出力するのか詳細に解説していきます。7.5節ではどのようにしてファイルとディレクトリを操作するのか詳しくご紹介します。7.6節のまとめでは文字列に関する操作についてご紹介します。 ## 目次 ![](images/navi7.png?raw=true) ## links * [目次]() - * 前へ: [第六章概要](<06.5.md>) + * 前へ: [第六章まとめ](<06.5.md>) * 次へ: [XMLの処理](<07.1.md>) diff --git a/ja/ebook/07.6.md b/ja/ebook/07.6.md index 862a8609..381f5575 100644 --- a/ja/ebook/07.6.md +++ b/ja/ebook/07.6.md @@ -149,4 +149,4 @@ ## links * [目次]() * 前へ: [ファイルの操作](<07.5.md>) - * 次へ: [概要](<07.7.md>) + * 次へ: [まとめ](<07.7.md>) diff --git a/ja/ebook/08.0.md b/ja/ebook/08.0.md index 05794c38..45ec9c10 100644 --- a/ja/ebook/08.0.md +++ b/ja/ebook/08.0.md @@ -16,5 +16,5 @@ Go言語は21世紀のC言語です。性能と簡単さを追求するため、 ## links * [目次]() - * 次へ: [第七章概要](<07.7.md>) + * 次へ: [第七章まとめ](<07.7.md>) * 前へ: [Socketプログラミング](<08.1.md>) diff --git a/ja/ebook/08.4.md b/ja/ebook/08.4.md index c81d9d59..f503908e 100644 --- a/ja/ebook/08.4.md +++ b/ja/ebook/08.4.md @@ -389,4 +389,4 @@ GoはすでにRPCに対して良いサポートを提供しています。上の ## links * [目次]() * 前へ: [REST](<08.3.md>) - * 次へ: [概要](<08.5.md>) + * 次へ: [まとめ](<08.5.md>) diff --git a/ja/ebook/09.0.md b/ja/ebook/09.0.md index 378906e7..9a1a7e14 100644 --- a/ja/ebook/09.0.md +++ b/ja/ebook/09.0.md @@ -16,5 +16,5 @@ Webアプリケーションプログラムのセキュリティ問題の理由 ## links * [目次]() - * 前へ: [第八章概要](<08.5.md>) + * 前へ: [第八章まとめ](<08.5.md>) * 次へ: [CSRF攻撃の予防](<09.1.md>) diff --git a/ja/ebook/09.6.md b/ja/ebook/09.6.md index 4211fd0a..fd531ddc 100644 --- a/ja/ebook/09.6.md +++ b/ja/ebook/09.6.md @@ -119,4 +119,4 @@ Go言語の`crypto`では双方向暗号の高度な暗号化/復元パッケー ## links * [目次]() * 前へ: [パスワードの保存](<09.5.md>) - * 次へ: [概要](<09.7.md>) + * 次へ: [まとめ](<09.7.md>) diff --git a/ja/ebook/10.0.md b/ja/ebook/10.0.md index f0f34cb0..ef45e46f 100644 --- a/ja/ebook/10.0.md +++ b/ja/ebook/10.0.md @@ -21,5 +21,5 @@ ## links * [目次]() - * 前へ: [第九章概要](<09.7.md>) + * 前へ: [第九章まとめ](<09.7.md>) * 次へ: [デフォルトロケールの設定](<10.1.md>) diff --git a/ja/ebook/10.3.md b/ja/ebook/10.3.md index d2cb6cb5..e09f9dd0 100644 --- a/ja/ebook/10.3.md +++ b/ja/ebook/10.3.md @@ -177,4 +177,4 @@ ## links * [目次]() * 前へ: [ローカライズリソース](<10.2.md>) - * 次へ: [概要](<10.4.md>) + * 次へ: [まとめ](<10.4.md>) diff --git a/ja/ebook/11.0.md b/ja/ebook/11.0.md index 517fb213..d99fa8f3 100644 --- a/ja/ebook/11.0.md +++ b/ja/ebook/11.0.md @@ -15,5 +15,5 @@ Webアプリケーションを開発するにあたって、エラーは避け ## links * [目次]() - * 前へ: [第十章概要](<10.4.md>) + * 前へ: [第十章まとめ](<10.4.md>) * 次へ: [エラー処理](<11.1.md>) diff --git a/ja/ebook/11.3.md b/ja/ebook/11.3.md index f5fe232a..16d4477f 100644 --- a/ja/ebook/11.3.md +++ b/ja/ebook/11.3.md @@ -146,4 +146,4 @@ Go言語はあらかじめ用意されている軽量なテストフレームワ ## links * [目次]() * 前へ: [GDBを使用したデバッグ](<11.2.md>) - * 次へ: [概要](<11.4.md>) + * 次へ: [まとめ](<11.4.md>) diff --git a/ja/ebook/12.0.md b/ja/ebook/12.0.md index 34948d50..f05a1536 100644 --- a/ja/ebook/12.0.md +++ b/ja/ebook/12.0.md @@ -7,5 +7,5 @@ ## links * [目次]() - * 前へ: [第十一章概要](<11.4.md>) + * 前へ: [第十一章まとめ](<11.4.md>) * 次へ: [アプリケーションログ](<12.1.md>) diff --git a/ja/ebook/12.4.md b/ja/ebook/12.4.md index 4387a314..545fad5d 100644 --- a/ja/ebook/12.4.md +++ b/ja/ebook/12.4.md @@ -171,4 +171,4 @@ redisのリストアはホットバックアップとコールドバックアッ ## links * [目次]() * 前へ: [アプリケーションのデプロイ](<12.3.md>) - * 次へ: [概要](<12.5.md>) + * 次へ: [まとめ](<12.5.md>) diff --git a/ja/ebook/13.0.md b/ja/ebook/13.0.md index 18595666..415d9fbf 100644 --- a/ja/ebook/13.0.md +++ b/ja/ebook/13.0.md @@ -8,5 +8,5 @@ ## links * [目次]() - * 前へ: [第12章概要](<12.5.md>) + * 前へ: [第12章まとめ](<12.5.md>) * 次へ: [プロジェクトのプラン](<13.1.md>) diff --git a/ja/ebook/13.5.md b/ja/ebook/13.5.md index 94e17512..66616a4d 100644 --- a/ja/ebook/13.5.md +++ b/ja/ebook/13.5.md @@ -255,4 +255,4 @@ edit.tpl ## links * [目次]() * 前へ: [ログとコンフィグ設計](<13.4.md>) - * 次へ: [概要](<13.6.md>) + * 次へ: [まとめ](<13.6.md>) diff --git a/ja/ebook/14.0.md b/ja/ebook/14.0.md index 737e2d90..a51323ec 100644 --- a/ja/ebook/14.0.md +++ b/ja/ebook/14.0.md @@ -8,5 +8,5 @@ ## links * [目次]() - * 前へ: [第13章概要](<13.6.md>) + * 前へ: [第13章まとめ](<13.6.md>) * 次へ: [静的なファイルのサポート](<14.1.md>) diff --git a/ja/ebook/14.6.md b/ja/ebook/14.6.md index af2d94bd..b5cb0820 100644 --- a/ja/ebook/14.6.md +++ b/ja/ebook/14.6.md @@ -102,4 +102,4 @@ goroutineをクリックすると詳細な情報を得ることができます ## links * [目次]() * 前へ: [多言語サポート](<14.5.md>) - * 次へ: [概要](<14.7.md>) + * 次へ: [まとめ](<14.7.md>) diff --git a/ja/ebook/14.7.md b/ja/ebook/14.7.md index 96abef99..ee4f9655 100644 --- a/ja/ebook/14.7.md +++ b/ja/ebook/14.7.md @@ -1,5 +1,5 @@ # 14.7 まとめ -この章は主にどのようにしてbeegoフレームワークにもとづいて展開を行うかについて詳しく述べました。これには静的なファイルのサポートが含まれます。静的なファイルでは主にどのようにしてbeegoを利用して素早くウェブページを開発するか、bootstrapを利用して美しいサイトの作成についてご紹介しました;2つ目の概要ではどのようにしてbeegoにおいてsessionManagerを構成するかについてご紹介しました。これはユーザがbeegoを利用した時に素早くsessionを利用するのに便利です;第3章の概要ではフォームとバリデーションについてご紹介しました。Go言語のstructの定義に基づくと、Webを開発する過程で重複する作業から解放されます。また、バリデーションを追加するとできるかぎりデータを安全にすることができます。第4章の概要ではユーザの認証についてご紹介しました。ユーザの認証は主に3つの需要があります。http basicとhttp digest認証、サードパーティ認証、カスタム定義の認証です。コードを用いてどのようにして現在あるサードパーティパッケージからbeegoアプリケーションでこれらの認証を実装するのかデモを行いました。第5章のがいようでは多言語サポートをご紹介しました。beegoではgo-i18nという多言語パッケージを使用しています。ユーザはとても簡単にこのライブラリを利用して多言語Webアプリケーションを開発することができます。第6章ではどのようにしてGoのpprofパッケージを利用するのかご紹介しました。pprofパッケージは性能テストに使われるツールです。beegoに対する改造を施した後pprofパッケージを使うことでユーザはpprofからbeegoにもとづいて開発されたアプリケーションのテストを行うことができます。これら6つの章を通して比較的健全なbeegoフレームワークを展開してきました。このフレームワークは現在の数多くのWebアプリケーションに十分対応することができます。ユーザは自身の相続力を継続して発揮することができます。私はここで簡単にいくつか重要と思われる拡張についてご紹介したにすぎません。 +この章は主にどのようにしてbeegoフレームワークにもとづいて展開を行うかについて詳しく述べました。これには静的なファイルのサポートが含まれます。静的なファイルでは主にどのようにしてbeegoを利用して素早くウェブページを開発するか、bootstrapを利用して美しいサイトの作成についてご紹介しました;2つ目のまとめではどのようにしてbeegoにおいてsessionManagerを構成するかについてご紹介しました。これはユーザがbeegoを利用した時に素早くsessionを利用するのに便利です;第3章のまとめではフォームとバリデーションについてご紹介しました。Go言語のstructの定義に基づくと、Webを開発する過程で重複する作業から解放されます。また、バリデーションを追加するとできるかぎりデータを安全にすることができます。第4章のまとめではユーザの認証についてご紹介しました。ユーザの認証は主に3つの需要があります。http basicとhttp digest認証、サードパーティ認証、カスタム定義の認証です。コードを用いてどのようにして現在あるサードパーティパッケージからbeegoアプリケーションでこれらの認証を実装するのかデモを行いました。第5章のがいようでは多言語サポートをご紹介しました。beegoではgo-i18nという多言語パッケージを使用しています。ユーザはとても簡単にこのライブラリを利用して多言語Webアプリケーションを開発することができます。第6章ではどのようにしてGoのpprofパッケージを利用するのかご紹介しました。pprofパッケージは性能テストに使われるツールです。beegoに対する改造を施した後pprofパッケージを使うことでユーザはpprofからbeegoにもとづいて開発されたアプリケーションのテストを行うことができます。これら6つの章を通して比較的健全なbeegoフレームワークを展開してきました。このフレームワークは現在の数多くのWebアプリケーションに十分対応することができます。ユーザは自身の相続力を継続して発揮することができます。私はここで簡単にいくつか重要と思われる拡張についてご紹介したにすぎません。 ## links * [目次]() diff --git a/ja/ebook/SUMMARY.md b/ja/ebook/SUMMARY.md index 4337ca20..bd7e6798 100644 --- a/ja/ebook/SUMMARY.md +++ b/ja/ebook/SUMMARY.md @@ -3,7 +3,7 @@ * [GOPATHとワーキングディレクトリ](01.2.md) * [Goのコマンド](01.3.md) * [Goの開発ツール](01.4.md) - * [概要](01.5.md) + * [まとめ](01.5.md) * [Go言語の基礎](02.0.md) * [こんにちは、Go](02.1.md) * [Goの基礎](02.2.md) @@ -12,20 +12,20 @@ * [オブジェクト指向](02.5.md) * [interface](02.6.md) * [マルチスレッド](02.7.md) - * [概要](02.8.md) + * [まとめ](02.8.md) * [Webの基礎](03.0.md) * [webでの作業方法](03.1.md) * [Goで簡単なwebサーバを立てる](03.2.md) * [Goはどのようにしてweb作業を行うか](03.3.md) * [Goのhttpパッケージ詳細](03.4.md) - * [概要](03.5.md) + * [まとめ](03.5.md) * [フォーム](04.0.md) * [フォームの入力を処理する](04.1.md) * [フォームに入力された内容の検証](04.2.md) * [クロスサイトスクリプティングの予防](04.3.md) * [フォームの複数回送信の防止](04.4.md) * [ファイルのアップロード処理](04.5.md) - * [概要](04.6.md) + * [まとめ](04.6.md) * [データベースへのアクセス](05.0.md) * [database/sqlインターフェース](05.1.md) * [MySQL データベースの使用](05.2.md) @@ -33,13 +33,13 @@ * [PostgreSQLデータベースの使用](05.4.md) * [beedbライブラリを使用してORM開発を行う](05.5.md) * [NOSQLデータベースの操作](05.6.md) - * [概要](05.7.md) + * [まとめ](05.7.md) * [sessionとデータの保存](06.0.md) * [sessionとcookie](06.1.md) * [Goはどのようにしてsessionを使用するか](06.2.md) * [sessionストレージ](06.3.md) * [sessionハイジャックの予防](06.4.md) - * [概要](06.5.md) + * [まとめ](06.5.md) * [テキスト処理](07.0.md) * [XMLの処理](07.1.md) * [JSONの処理](07.2.md) @@ -47,13 +47,13 @@ * [テンプレートの処理](07.4.md) * [ファイルの操作](07.5.md) * [文字列の処理](07.6.md) - * [概要](07.7.md) + * [まとめ](07.7.md) * [Webサービス](08.0.md) * [Socketプログラミング](08.1.md) * [WebSocket](08.2.md) * [REST](08.3.md) * [RPC](08.4.md) - * [概要](08.5.md) + * [まとめ](08.5.md) * [セキュリティと暗号化](09.0.md) * [CSRF攻撃の予防](09.1.md) * [入力フィルタリングの確保](09.2.md) @@ -61,30 +61,30 @@ * [SQLインジェクションの回避](09.4.md) * [パスワードの保存](09.5.md) * [データを暗号化/復元する](09.6.md) - * [概要](09.7.md) + * [まとめ](09.7.md) * [国際化とローカライズ](10.0.md) * [デフォルトロケールの設定](10.1.md) * [ローカライズリソース](10.2.md) * [国際化サイト](10.3.md) - * [概要](10.4.md) + * [まとめ](10.4.md) * [エラー処理、デバッグとテスト](11.0.md) * [エラー処理](11.1.md) * [GDBを使用したデバッグ](11.2.md) * [Goによるテスト例](11.3.md) - * [概要](11.4.md) + * [まとめ](11.4.md) * [デプロイとメンテナンス](12.0.md) * [アプリケーションログ](12.1.md) * [サイトのエラー処理](12.2.md) * [アプリケーションのデプロイ](12.3.md) * [バックアップとリストア](12.4.md) - * [概要](12.5.md) + * [まとめ](12.5.md) * [どのようにしてWebフレームワークを設計するか](13.0.md)  * [プロジェクトプラン](13.1.md)  * [カスタムルータの設計](13.2.md) * [controllerの設計](13.3.md) * [ログとデプロイ設計](13.4.md) * [ブログの追加/削除/修正の実装](13.5.md) - * [概要](13.6.md)  + * [まとめ](13.6.md)  * [Webフレームワークの拡張](14.0.md) * [静的ファイルのサポート](14.1.md) * [Sessionのサポート](14.2.md) @@ -92,5 +92,5 @@ * [ユーザ認証](14.4.md) * [多言語サポート](14.5.md) * [pprofのサポート](14.6.md) - * [概要](14.7.md) + * [まとめ](14.7.md) * 付録A [参考資料](ref.md) diff --git a/ja/ebook/preface.md b/ja/ebook/preface.md index 9ef1d440..275b0665 100644 --- a/ja/ebook/preface.md +++ b/ja/ebook/preface.md @@ -3,7 +3,7 @@ - 1.2. [GOPATHとワーキングディレクトリ](01.2.md) - 1.3. [Goのコマンド](01.3.md) - 1.4. [Goの開発ツール](01.4.md) - - 1.5. [概要](01.5.md) + - 1.5. [まとめ](01.5.md) * 2.[Go言語の基礎](02.0.md) - 2.1. [こんにちは、Go](02.1.md) - 2.2. [Goの基礎](02.2.md) @@ -12,20 +12,20 @@ - 2.5. [オブジェクト指向](02.5.md) - 2.6. [interface](02.6.md) - 2.7. [マルチスレッド](02.7.md) - - 2.8. [概要](02.8.md) + - 2.8. [まとめ](02.8.md) * 3.[Webの基礎](03.0.md) - 3.1 [webでの作業方法](03.1.md) - 3.2 [Goで簡単なwebサーバを立てる](03.2.md) - 3.3 [Goはどのようにしてweb作業を行うか](03.3.md) - 3.4 [Goのhttpパッケージ詳細](03.4.md) - - 3.5 [概要](03.5.md) + - 3.5 [まとめ](03.5.md) * 4.[フォーム](04.0.md) - 4.1 [フォームの入力を処理する](04.1.md) - 4.2 [フォームに入力された内容の検証](04.2.md) - 4.3 [クロスサイトスクリプティングの予防](04.3.md) - 4.4 [フォームの複数回送信の防止](04.4.md) - 4.5 [ファイルのアップロード処理](04.5.md) - - 4.6 [概要](04.6.md) + - 4.6 [まとめ](04.6.md) * 5.[データベースへのアクセス](05.0.md) - 5.1 [database/sqlインターフェース](05.1.md) - 5.2 [MySQL データベースの使用](05.2.md) @@ -33,13 +33,13 @@ - 5.4 [PostgreSQLデータベースの使用](05.4.md) - 5.5 [beedbライブラリを使用してORM開発を行う](05.5.md) - 5.6 [NOSQLデータベースの操作](05.6.md) - - 5.7 [概要](05.7.md) + - 5.7 [まとめ](05.7.md) * 6.[sessionとデータの保存](06.0.md) - 6.1 [sessionとcookie](06.1.md) - 6.2 [Goはどのようにしてsessionを使用するか](06.2.md) - 6.3 [sessionストレージ](06.3.md) - 6.4 [sessionハイジャックの予防](06.4.md) - - 6.5 [概要](06.5.md) + - 6.5 [まとめ](06.5.md) * 7.[テキスト処理](07.0.md) - 7.1 [XMLの処理](07.1.md) - 7.2 [JSONの処理](07.2.md) @@ -47,13 +47,13 @@ - 7.4 [テンプレートの処理](07.4.md) - 7.5 [ファイルの操作](07.5.md) - 7.6 [文字列の処理](07.6.md) - - 7.7 [概要](07.7.md) + - 7.7 [まとめ](07.7.md) * 8.[Webサービス](08.0.md) - 8.1 [Socketプログラミング](08.1.md) - 8.2 [WebSocket](08.2.md) - 8.3 [REST](08.3.md) - 8.4 [RPC](08.4.md) - - 8.5 [概要](08.5.md) + - 8.5 [まとめ](08.5.md) * 9.[セキュリティと暗号化](09.0.md) - 9.1 [CSRF攻撃の予防](09.1.md) - 9.2 [入力フィルタリングの確保](09.2.md) @@ -61,30 +61,30 @@ - 9.4 [SQLインジェクションの回避](09.4.md) - 9.5 [パスワードの保存](09.5.md) - 9.6 [データを暗号化/復元する](09.6.md) - - 9.7 [概要](09.7.md) + - 9.7 [まとめ](09.7.md) * 10.[国際化とローカライズ](10.0.md) - 10.1 [デフォルトロケールの設定](10.1.md) - 10.2 [ローカライズリソース](10.2.md) - 10.3 [国際化サイト](10.3.md) - - 10.4 [概要](10.4.md) + - 10.4 [まとめ](10.4.md) * 11.[エラー処理、デバッグとテスト](11.0.md) - 11.1 [エラー処理](11.1.md) - 11.2 [GDBを使用したデバッグ](11.2.md) - 11.3 [Goによるテスト例](11.3.md) - - 11.4 [概要](11.4.md) + - 11.4 [まとめ](11.4.md) * 12.[デプロイとメンテナンス](12.0.md) - 12.1 [アプリケーションログ](12.1.md) - 12.2 [サイトのエラー処理](12.2.md) - 12.3 [アプリケーションのデプロイ](12.3.md) - 12.4 [バックアップとリストア](12.4.md) - - 12.5 [概要](12.5.md) + - 12.5 [まとめ](12.5.md) * 13.[どのようにしてWebフレームワークを設計するか](13.0.md)  - 13.1 [プロジェクトプラン](13.1.md)  - 13.2 [カスタムルータの設計](13.2.md) - 13.3 [controllerの設計](13.3.md) - 13.4 [ログとデプロイ設計](13.4.md) - 13.5 [ブログの追加/削除/修正の実装](13.5.md) - - 13.6 [概要](13.6.md)  + - 13.6 [まとめ](13.6.md)  * 14.[Webフレームワークの拡張](14.0.md) - 14.1 [静的ファイルのサポート](14.1.md) - 14.2 [Sessionのサポート](14.2.md) @@ -92,5 +92,5 @@ - 14.4 [ユーザ認証](14.4.md) - 14.5 [多言語サポート](14.5.md) - 14.6 [pprofのサポート](14.6.md) - - 14.7 [概要](14.7.md) + - 14.7 [まとめ](14.7.md) * 付録A [参考資料](ref.md) From c7729d6aed083dc440d6a6b17acff6b1438445ea Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 22:57:44 +0900 Subject: [PATCH 43/47] [ja] apply patch --- ja/ebook/07.5.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/ebook/07.5.md b/ja/ebook/07.5.md index 65dc8d2f..48dd3672 100644 --- a/ja/ebook/07.5.md +++ b/ja/ebook/07.5.md @@ -17,7 +17,7 @@ - func RemoveAll(path string) error - pathに従って階層的なサブディレクトリを削除します。たとえばpathがひとつの名前であれば、このディレクトリは削除されません。 + pathに従って階層的なサブディレクトリを削除します。たとえばpathがあるひとつの名前であった場合、このディレクトリ以下のサブディレクトリが全て削除されます。 以下はコード例です: From b1016c1d4737bd5f4ec6ae58d884619b218f4972 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 22:59:29 +0900 Subject: [PATCH 44/47] [ja] apply patch --- ja/ebook/07.6.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja/ebook/07.6.md b/ja/ebook/07.6.md index 381f5575..b53c7aa2 100644 --- a/ja/ebook/07.6.md +++ b/ja/ebook/07.6.md @@ -65,7 +65,7 @@ - func Trim(s string, cutset string) string - s文字列からcutsetで指定した文字列を除去する。 + s文字列の先頭と末尾からcutsetで指定した文字列を除去する。 fmt.Printf("[%q]", strings.Trim(" !!! Achtung !!! ", "! ")) //Output:["Achtung"] From f1b02078fb0e394fcd30b6cd46797ee2e6b6d99f Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 23:07:33 +0900 Subject: [PATCH 45/47] [ja] apply patch --- ja/ebook/05.2.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ja/ebook/05.2.md b/ja/ebook/05.2.md index 7998e139..b6cc71b2 100644 --- a/ja/ebook/05.2.md +++ b/ja/ebook/05.2.md @@ -37,7 +37,7 @@ GoではMySQLをサポートしたドライバが現在比較的多く、以下 package main import ( - _ "github.com/Go-SQL-Driver/MySQL" + _ "github.com/go-sql-driver/mysql" "database/sql" "fmt" //"time" @@ -114,7 +114,7 @@ GoではMySQLをサポートしたドライバが現在比較的多く、以下 キーとなるいくつかの関数についてご説明します: -sql.Open()関数は登録済みのデータベースドライバを開くために使用されます。Go-MySQL-Driverの中でmysqlのデータベースドライバを登録し、2つ目の引数はDSN(Data Source Name)です。これはGo-MySQL-Driverが定義するデータベース接続と設定情報です。以下のシンタックスをサポートします: +sql.Open()関数は登録済みのデータベースドライバを開くために使用されます。go-sql-driverの中でmysqlのデータベースドライバを登録し、2つ目の引数はDSN(Data Source Name)です。これはgo-sql-driverが定義するデータベース接続と設定情報です。以下のシンタックスをサポートします: user@unix(/path/to/socket)/dbname?charset=utf8 user:password@tcp(localhost:5555)/dbname?charset=utf8 From beff7c08a3e9f5f1f2d8328ba1bf2391e70d0d24 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 23:24:10 +0900 Subject: [PATCH 46/47] [ja] apply patch --- ja/ebook/03.4.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ja/ebook/03.4.md b/ja/ebook/03.4.md index 914ad944..7f2a4a56 100644 --- a/ja/ebook/03.4.md +++ b/ja/ebook/03.4.md @@ -41,7 +41,7 @@ Goがクライアントのリクエストを待ち受けるには以下のよう ServeHTTP(ResponseWriter, *Request) // ルーティング実現器 } -Handlerはインターフェースですが、前の節の中で`sayhelloName`関数が特にServerHTTPというインターフェースを実装してはいませんでした。どうして追加できるのでしょうか?もともとhttpパッケージの中では`HandlerFunc`という型を定義しています。この型はデフォルトでServerHTTPインターフェースを実装しています。つまり、HandlerFunc(f)をコールして強制的にfをHandlerFunc型に型変換しているのです。このようにしてfはServerHTTPメソッドを持つことになります。 +Handlerはインターフェースですが、前の節の中の`sayhelloName`関数では特にServeHTTPというインターフェースを実装してはいませんでした。どうして追加できるのでしょうか?もともとhttpパッケージの中では`HandlerFunc`という型が定義されています。私達が定義した`sayhelloName`関数はまさにこのHandlerFuncがコールされた結果であり、この型はデフォルトでServeHTTPインターフェースを実装していることになります。つまり、HandlerFunc(f)をコールして強制的にfをHandlerFunc型に型変換しているのです。このようにしてfはServeHTTPメソッドを持つようになります。 type HandlerFunc func(ResponseWriter, *Request) @@ -93,9 +93,9 @@ Handlerはインターフェースですが、前の節の中で`sayhelloName` return } -もともとこれはユーザのリクエストしたURLとルータの中に保存されているmapのマッチングに従って、このhandlerのServHTTPインターフェースをコールすることで目的の関数を実行することができます。 +もともとこれはユーザのリクエストしたURLとルータの中に保存されているmapに従ってマッチングしています。マッチングによって保存されているhandlerが返されるにあたり、このhandlerのServeHTTPインターフェースがコールされ、目的の関数を実行することができます。 -上の紹介を通じて、ルーティングの全体プロセスを理解しました。これはHandlerインターフェースです。つまり外部のルータはHandlerインターフェースを実装するだけで良く、自分自身で実装したルータのServHTTPの中でカスタムに定義されたルータ機能を実現することができます。 +上の紹介を通して、私達はルーティングの全体プロセスを理解しました。Goは実は外部で実装されたルータをサポートしています。`ListenAndServe`の第2引数が外部のルータを設定する為に用いられます。これはHandlerインターフェースのひとつで、外部ルータでHandlerインターフェースを実装し、そのServeHTTPにカスタム定義のルーティング機能を実装することができます。 下のコードを通して、自分自身で簡単なルータを実装してみます。 From 37fe1b3aba97444817a3444c3672cc981b0ee30f Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Sun, 21 Sep 2014 23:25:36 +0900 Subject: [PATCH 47/47] [ja] fix typo: ServerHTTP -> ServeHTTP --- ja/ebook/03.4.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ja/ebook/03.4.md b/ja/ebook/03.4.md index 7f2a4a56..0af75f10 100644 --- a/ja/ebook/03.4.md +++ b/ja/ebook/03.4.md @@ -50,7 +50,7 @@ Handlerはインターフェースですが、前の節の中の`sayhelloName` f(w, r) } -ルータでは対応するルーティングルールを保存した後、具体的にはどのようにリクエストを振り分けているのでしょうか?以下のコードをご覧ください。デフォルトのルータは`ServerHTTP`を実装します: +ルータでは対応するルーティングルールを保存した後、具体的にはどのようにリクエストを振り分けているのでしょうか?以下のコードをご覧ください。デフォルトのルータは`ServeHTTP`を実装します: func (mux *ServeMux) ServeHTTP(w ResponseWriter, r *Request) { if r.RequestURI == "*" { @@ -62,7 +62,7 @@ Handlerはインターフェースですが、前の節の中の`sayhelloName` h.ServeHTTP(w, r) } -上に示す通りルータはリクエストを受け取った後、`*`であれば接続を切断し、そうでなければ`mux.handler(r).ServerHTTP(w, r)`をコールして対応する設定された処理Handlerを返し、`h.ServeHTTP(w, r)`を実行します。 +上に示す通りルータはリクエストを受け取った後、`*`であれば接続を切断し、そうでなければ`mux.handler(r).ServeHTTP(w, r)`をコールして対応する設定された処理Handlerを返し、`h.ServeHTTP(w, r)`を実行します。 つまり、目的のルーティングのhandlerのServerHTTPインターフェースへのコールです。ではmux.Handler(r)はどのように処理するのでしょうか?