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/ |
+--------------------------+----------------------------+
問題解決。
for文をStreamに書き換える
10回繰り返す処理
for (int i = 0; i < 10; i++ ) { 処理 }
から、
IntStream.range(0, 10).forEach( i -> { 処理 });
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 VirtualBoxとVagrantをインストール
参考: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