Go言語でクロールとかしてきた情報をデータベースに保存メモ


## 情報収集

* [youtube/api-samples/go](https://github.com/youtube/api-samples/tree/master/go)

`query`を`nogizaka`に変更して実行した結果w

```fish
$> go run search_by_keyword.go
Videos:
[oLKYxLipLKg] 乃木坂工事中 150607『生駒里奈のハニカミデート』- Nogizaka Under Construction -
[jeMaZcrH7Fw] Nogizaka Haruka no Himitsu komplette Staffel Ger Sub [HD]
[AgDfHmH6qkM] Nogizaka Haruka no Himitsu : Pureza ! Episodio-1 [Esp] 2-3  [Sin Censura]
[MLQ65yeKP3s] Nogizaka Haruka no Himitsu Purezza Folge 01 ger sub [FULL] HD
[5OlxVvGCpdc] 乃木坂46　『何度目の青空か？』
[qnZ6DGIXXng] Nogizaka Haruka no Himitsu Finale 03 Sub Español [Ova]
[ZP1zybfKavM] Nogizaka Haruka no Himitsu Capitulo 10 sub español
[s7GCp3byiSE] Nogizaka Haruka no Himitsu Capitulo 11 sub español completo
[HCMjzDX9jxU] Nogizaka Haruka No Himitsu Capitulo 9 Sub Español completo
[TEvW0xEsCa4] Nogizaka Haruka no Himitsu Capitulo 05 Sub Español completo
[p4VSS0rUelA] Nogizaka Haruka no Himitsu : Pureza ! Episodio-1 [Esp] 3-3  [Sin Censura]
[fTVGWAJi0ws] Nogizaka Haruka No Himitsu Finale 04 Sub español [OVA]
[gZQhRZlJqrM] Nogizaka Haruka no Himitsu Purezza  opening sub español
[jHRQEFWZ1tY] Nogizaka Haruka no Himitsu Finale 02 Sub Español [Ova]
[HWGhIoqHks0] Nogizaka Haruka no Himitsu Episode 2 English Subbed HD
[X52kQ-xa-V0] Nogizaka Haruka no Himitsu Finale Episode 4 English Subbed
[g7Jj-ZdHMzg] Nogizaka Haruka no Himitsu Capitulo 12 Final sub Español
[818RG5bX2ps] (Nogizaka 46) Sayurin tried to kiss Maiyan LOL
[cHCpOwy5Iwc] 乃木坂工事中 150705 『自分達の映画を宣伝しよう!!』 - Nogizaka Under Construction -
[-691Wz07rb0] Nogizaka Haruka No Himitsu capitulo 01 Sub. Español HD
[hb3RYp55YzY] Nogizaka Haruka No Himitsu Finale 01 Sub español [OVA]
[Emdv0A0OUvU] Nogizaka Haruka no Himitsu - OP


Channels:
[UCudNks-2yOaxDXN2dNYGKRg] Nogizaka nono


Playlists:
[PLCvRGkxwtSh44hOl5So3SpRRk8dpQRVbZ] Nogizaka Haruka no Himitsu episodes
[PLrrn2WHG5HhnLOshubSKTHHJjWhPXK7WB] Nogizaka Haruka no Himitsu Purezza [FULL]
```

## データベース（mysql on mac）

### インストール

```fish
$> (sudo chown -R root /usr/local)
$> (sudo) brew update
$> (sudo) brew install mysql
$> (sudo chown -R katososuke /usr/local/var/mysql/)
$> mysql.server start
$> mysql -uroot
```

なんか色々エラーがでて、訳もわからず権限を変更した汗

#### 参考

* [Mac へ MySQL を Homebrew でインストールする手順](http://qiita.com/hkusu/items/cda3e8461e7a46ecf25d)
* [Mysql.server through homebrew on macbook](http://superuser.com/questions/837775/mysql-server-through-homebrew-on-macbook)
* [OSX Lion, Homebrewで入れたmysqlが起動しない夜](http://d.hatena.ne.jp/nistetsurooy/20120628/1340896989)

### ユーザの作成

* [ユーザ権限の確認・追加](http://qiita.com/pinohara/items/481c95dc4c8c2568bf8d)
* [13.7.1.2 CREATE USER Syntax](https://dev.mysql.com/doc/refman/5.6/en/create-user.html)

```sql:mysql
mysql> CREATE USER 'puku'@'localhost' IDENTIFIED BY '<password>';
Query OK, 0 rows affected (0.00 sec)
```

`IDENTIFIED BY 'auth_string'`と`IDENTIFIED BY PASSWORD 'hash_string'`の違いはなんなのか汗

#### 確認

```sql:mysql
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> SELECT user, host FROM user;
+---------+-----------------------------+
| user    | host                        |
+---------+-----------------------------+
| root    | 127.0.0.1                   |
| root    | ::1                         |
|         | localhost                   |
| jeffrey | localhost                   |
| puku    | localhost                   |
| root    | localhost                   |
|         | sosuke-no-macbook-pro.local |
| root    | sosuke-no-macbook-pro.local |
+---------+-----------------------------+
8 rows in set (0.01 sec)
```

### データベースの作成

* [データベースの一覧を表示する](http://mysql.javarou.com/dat/000418.html)
* [MySQL: ログインと新規データベースの作成・削除 – CREATE DATABASE、DROP DATABASE文](http://www.yukun.info/blog/2008/10/mysql-login-user-create-database.html)

```sql:mysql
mysql> CREATE DATABASE hello DEFAULT CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)
```

#### 確認

```sql:mysql
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hello              |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

```

### テーブルの作成

* [MySQL: 新規テーブルを作成・削除、構造の確認 – CREATE TABLE、DROP TABLE、DESCRIBE文](http://www.yukun.info/blog/2008/11/mysql-create-table-drop-describe.html)

```sql:mysql
mysql> use hello
Database changed
mysql> CREATE TABLE user
    -> (
    -> id INT(11),
    -> name VARCHAR(64)
    -> );
Query OK, 0 rows affected (0.07 sec)
```

### 権限の付与

```sql:mysql
mysql> GRANT ALL PRIVILEGES ON hello.user TO puku@localhost;
Query OK, 0 rows affected (0.01 sec)
```

全てのテーブルへの権限は
`GRANT ALL ON testdatabase.* TO testuser@'%';`

### `Go`からアクセス

* [Accessing the Database](http://go-database-sql.org/accessing.html)

```go:db_manager.go
package main

import (
	"database/sql"
	"log"

	_ "github.com/go-sql-driver/mysql"
)

func main() {
	db, err := sql.Open("mysql", "puku:<password>@tcp(127.0.0.1:3306)/hello")
	if err != nil {
		log.Fatal(err)
	}
	defer db.Close()

	err = db.Ping()
	if err != nil {
		log.Fatal(err)
	}
}
```

```
$> go run db_manager.go
2015/07/25 15:23:23 dial tcp 127.0.0.1:3306: connection refused
exit status 1
$> mysql.server start
Starting MySQL
. SUCCESS! 
$> go run db_manager.go
```

とりあえず、何もエラーでない、ので、いいのかな？

## ORM? Generator? Simple?

### まとめなど一覧

* [Go言語でのORMを色々検討してみた](http://hachibeechan.hateblo.jp/entry/2015/03/25/Go%E8%A8%80%E8%AA%9E%E3%81%A7%E3%81%AEORM%E3%82%92%E8%89%B2%E3%80%85%E6%A4%9C%E8%A8%8E%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F)(2015/03/25)
* [golangでSQLを叩くライブラリまとめ[基本/クエリビルダ/ORM]](http://qiita.com/umisama/items/c022b16101c48ffdbc6a)
(2015/01/17)

結論的にはこれ！っていうのがない。という話なのかな？

### 他
* [Go言語でActiveRecordライクなORMをつくった](http://blog.monochromegane.com/blog/2015/03/04/argen/)
* [5.5 beedbライブラリを使用してORM開発を行う](http://astaxie.gitbooks.io/build-web-application-with-golang/content/ja/05.5.html)