ER図を書いていこう

VARBINARY型:
可変長バイナリバイト文字列
0x00が末尾に付けられることはありません。空白と0x00は異なりますのでデータの末尾に空白が合った場合も特別扱いされることはなく、空白に該当するコードはそのままバイナリデータとして格納されます。

mstはマスターの略
rclはrecruite?

mediumtext
文字型ラージオブジェクトカラム、最大長は 16777215 (2^24 – 1) 文字。

perlでinsertするときに文字化け

db->do(“set names utf8”);をいれる。

my $user = 'root';
my $passwd = '';
my $db = DBI->connect('DBI:mysql:count:localhost', $user, $passwd);
my $sth = $db->prepare("INSERT INTO accounts(password, email, name, name_kana) VALUES ('password2','test@gmail.com2','横山健','よこやまけん')");
$db->do("set names utf8");
$sth->execute;

$sth->finish;
$db->disconnect;

mysql> select * from accounts;
+—-+———–+—————-+——————–+———————————————+
| id | password | email | name | name_kana |
+—-+———–+—————-+——————–+———————————————+
| 1 | password | test@gmail.com | 横山健 | よこやまけん |
| 2 | password | testgmail.com | 横山� | よ�や��ん |
| 3 | password2 | testgmail.com2 | 横山� | よ�や��ん |
| 4 | password2 | testgmail.com2 | 横山健 | よこやまけん |
+—-+———–+—————-+——————–+———————————————+
4 rows in set (0.00 sec)

おお、文字化けが治った。
ところで、@がインサートできんぞ。

DBの設計

まずDBの設計をして、mysqlにテーブルを作っていきます。

create database count;
use count;
create table accounts(
id int auto_increment not null primary key,
password varchar(255) not null,
email varchar(255),
name varchar(128),
name_kana varchar(128)
);
create table campaigns(
campaign_name varchar(255) not null,
campaign_id varchar(20) not null,
device char(1),
distribution date,sho
age_start int,
age_end int,
gender char(1)
);
create table clicks(
campaign_id varchar(20) not null,
mail_open int,
mai_click int
);

mysql> show tables;
+—————–+
| Tables_in_count |
+—————–+
| accounts |
| campaigns |
| clicks |
+—————–+
3 rows in set (0.00 sec)

#!/usr/bin/perl --
use strict;
use DBI;

print "Content-type:text/html\n\n";
my $user = 'root';
my $passwd = '';
my $db = DBI->connect('DBI:mysql:count:localhost', $user, $passwd);
my $sth = $db->prepare("INSERT INTO accounts(password, email, name, name_kana) VALUES ('password','testgmail.com','横山健','よこやまけん')");
$sth->execute;

$sth->finish;
$db->disconnect;

print("finish\n");

mysql> select * from accounts;
+—-+———-+—————-+——————–+———————————————+
| id | password | email | name | name_kana |
+—-+———-+—————-+——————–+———————————————+
| 1 | password | test@gmail.com | 横山健 | よこやまけん |
| 2 | password | testgmail.com | 横山� | よ�や��ん |
+—-+———-+—————-+——————–+———————————————+
2 rows in set (0.00 sec)

文字化けしてますな。

ER図 Entity Relationship Diagram

ER図とは、「データベース設計(データモデリング)で使う設計手法」
「エンティティ」「アトリビュート」「リレーション」「カーディナリティ」と呼ばれるオブジェクトで構成されており、ER図を活用してデータ構造を俯瞰的に設計する

やべー、このあたりを使いこなせば完全に素人ではなくなるなー

UML図

クラス図はUMLの基本となる図のひとつで、システムを構成するクラスとそれらの関係を表現します。また、各クラスが保持する属性(プロパティ)や操作(メソッド)も表現する

クラス図って、classそのものじゃん。

UMLは、オブジェクト指向分析・設計技法における共通の記法として、分析、設計の成果物である仕様を記述

docker redmineのデータを永続化させる

コンテナの/usr/src/redmine/files等のアップロードされるデータをホストマシンのディレクトリにマッピングします。
データベースを別コンテナのものを使用します。別コンテナではデータベースの格納先をホストマシンにマッピングします。
MySQLかPostgreSQLを使った場合、Redmineのコンテナはデータベースの初期化を待ちません。Redmineのコンテナにrestart: alwaysを使っても、タイミングによっては再起動されなくなります。Redmineのコンテナでデータベースのクライアントのmysqladminコマンドやpsqlコマンドがインストールされておらず、healthcheckも利用できません。RedmineのDockerfileでmysqladminコマンドとpsqlコマンドをインストールし、docker-entrypoint.shでデータベースにアクセスできるようになったかを見るべきです。

docker ps -q -l | xargs docker stop | xargs docker rm

docker ps – コンテナの一覧
docker logs – コンテナの標準出力を表示
docker stop – 稼働しているコンテナの停止

dockerでredmineを入れる

データの永続性がないRedmineを動かす
sudo docker run -d –name redmine -p 80:3000 redmine:latest

-アップロードしたファイルはredmineのファイルシステムに保存されます。
-データベースはredmineコンテナのSQLiteが使われます。
-コンテナを削除するとredmineのデータは削除されます。

docker入れるのに時間かかるなーこれ

だいぶ時間がかかったが、
vagrant@vagrant-ubuntu-trusty-64:~$ sudo docker run -d –name redmine -p 80:3000 redmine:latest
Unable to find image ‘redmine:latest’ locally
latest: Pulling from library/redmine
05d1a5232b46: Pull complete
3f4b62449fc8: Pull complete
0a8ae4c4adc5: Pull complete
12f17b4afaac: Pull complete
bd96a6b3c421: Pull complete
2077365091d8: Pull complete
92dd687079de: Pull complete
a8580aed7235: Pull complete
29dd091771dc: Pull complete
35c7cf740aac: Pull complete
06e39eb42c60: Pull complete
e9c2babb9eb2: Pull complete
Digest: sha256:deedc4ec97c280fe9474166e948c1b259cc81999114ceac1b8e58e66c14ce349
Status: Downloaded newer image for redmine:latest
cbb455552207035a5dc34c4637c9deaafefc12da85567b908a3706bd7e0a10d1

うわ、これは凄い。

データの永続性のあるredmineにしないと意味がないか。
システム管理者の承認待ちになるな。

あれ?というか、他のツールも、installして環境つくれなかった場合は、dockerで動かせばいいのでは。。

cpanをインストール

[vagrant@localhost perl]$ sudo yum install perl-CPAN.x86.64
パッケージ perl-CPAN.x86.64 は利用できません。
エラー: 何もしません
[vagrant@localhost perl]$ cpan
-bash: cpan: コマンドが見つかりません

どいうこと? とりあえず、こういう時は、sudo yum updateでしたね。
[vagrant@localhost perl]$ sudo yum update

ここから再度インストール
[vagrant@localhost perl]$ sudo yum install perl-CPAN.x86_64

依存性関連をインストールしました:
perl-Digest-SHA.x86_64 1:5.47-144.el6
perl-ExtUtils-MakeMaker.x86_64 0:6.55-144.el6
perl-ExtUtils-ParseXS.x86_64 1:2.2003.0-144.el6
perl-Test-Harness.x86_64 0:3.17-144.el6
perl-devel.x86_64 4:5.10.1-144.el6

完了しました!

Warning (maybe harmless): ‘YAML’ not installed.

yamlを入れます。
# yum -y install libyaml-devel

# perl -MCPAN -e shell
cpan[1]> o conf prerequisites_policy follow
cpan[2]> o conf commit
cpan[3]> upgrade