DB 日本語対応

データベースに日本語のデータを入れようとしたら、   打っても消えてしまってデータを挿入できなかった。。。




show variables like "chara%";

で、設定を見たら


+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

とでてきたので、utf8に変更したらいいのかなと思い、
調べてみたら、my.cnfをいじればいい的なこと書いてあった。


とりあえすmy.cnfはなさげだったので、/ectにmy.cnfを作って、
my.cnfの中を変更するために、

sudo vi my.cnf

(↑sudoがないとうまく保存できなくなる)

[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
[mysqldump]
default-character-set=utf8
[mysql]
default-character-set=utf8

を追加。(/usr/local/mysql/support-files/my-medium.cnfっていうファイルが本当は入っていて
その中身をコピペするらしいが、存在しなかったので、無視した。)


しかし、変化なし!


再起動してみようとしたら、

mysql.server start


ERROR! The server quit without updating PID file (/usr/local/var/mysql/~.local.pid).

と、エラー。




解決方法

(projectFile)/infra/docker/mariadb/conf.d/server.cnfの中を、

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
datadir=/var/lib/mysql
skip-character-set-client-handshake
character-set-server=utf8
character-set-client=utf8
init-connect = SET NAMES utf8

に変更!


show variables like "chara%";

で見てみると、

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

問題解決。

Java 配列・コレクションの違い

配列とは

データをたくさん詰められてまとまったもの。
同じデータを複数持つことが出来るオブジェクト。
一度サイズが決められると変更できない。

以前少しまとめたもの:Java用語まとめ - プログラミングMEMO


コレクションとは

大きさが決まっていない配列的な?
ex) List, ArrayList

Java 名前の見分け方

※→はYes・↓はNo


名前
 ↓
頭が大文字 → クラス
 ↓
後ろに ( ) あり → メソッド
 ↓
先頭にデータ型あり → 変数の宣言
 ↓
後ろに -> あり → ラムダの仮引数
 ↓
変数の利用

StreamAPIについて

StreamAPIとは

コレクション(ex. List, ArrayList)を操作するためのAPI
・データの抽出・加工・集計などができる。
・stream内には基本的にデータは書かない。
・元のコレクションは変更せずに使える。




StreamAPIの基本の流れ

StreamAPIには、Stream生成中間操作終端操作の三段階の流れがある。




Stream生成

データをStreamに変換する。


CollectionをStreamに変換

List<String> lists = Arrays.asList("hoge", "fuga", "bar");
Stream<String> stream = lists.stream();




中間操作

Streamのデータを加工してStreamで返す。
この過程はなくてもいいし、複数回実行もできる。


map
変換

Stream<String>からStream<Emp>に変換

Stream<Emp> nameStream = filteredStream.map(string -> string.getName());




終端操作

Streamのデータを別のクラスに変換する。
1回のみ実行可能。


collect
Streamを任意のコレクションに集約

List<String> result = nameStream.collect(Collectors.toList());

Vagrantまとめ

Vagrantとは

自分のパソコン上で開発用の仮想マシンを簡単に構築することが出来るソフトウェア。
VirtualBoxとの違いは、今までの複雑なコマンドをシンプルなコマンドに集約した点らしい。



Box

VagrantでのBoxとは、作成する仮想マシーンのベースとなるもののこと。



Vargrantで環境構築

1 VirtualBoxVagrantをインストール

参考:VagrantとVirtualBoxでローカル開発環境を構築する方法 | TechAcademyマガジン


2 Boxファイルのインストール

作業用のディレクトリで、Boxを取得

vagrant box add centos(←Boxの名前) package.box(←URL)


取得しているBoxを確認

vagrant box list



3 Vagrantの初期化・Vagrantfile作成

vagrant init centos



4 仮想マシーンを起動する

vagrant up



5 仮想マシーンにログイン

vagrant ssh



6 Vargrantfileを書き換え

Vagrantfileを書き換えるために、

vi Vagrantfile


似たようなところに以下2つを書き加える

config.vm.network "forwarded_port", guest: 80, host: 3001

config.vm.synced_folder "~/workspace/vagrant/01scout", "/var/www/html",type:'rsync', owner: 'vagrant', group: 'apache', mount_options: ['dmode=777', 'fmode=666']



7 再起動

vagrant reload



8 自動同期の設定

ホストマシンとゲストマシン間でのファイルの転送・同期するために、

vagrant rsync-auto

毎回このコマンドを打つ必要があるらしい。



Vagrant コマンド

仮想マシーンの初期化

vagrant init  bento/centos-6.7 (←名前)



仮想マシーン起動

vagrant up



仮想マシーンの状態確認

vagrant status



Vagtantユーザーとして起動した仮想マシーンにログイン

vagrant ssh



パッケージをアップデート(Vagrantに入ってる状態で)

sudo yum update