Java (1)

昔の下書きが残っていたので、公開。
Javaを勉強しようとまとめてたみたい。


予約語

abstract,
continue,
goto,
package,
synchronized,
this,
private,
if,
default,
assert,
throw,
protected,
implements,
do,
boolean,
throws,
public,
import,
double,
break,
transient,
return,
instanceof,
else,
byte,
try,
short,
int,
extends,
case,
void,
static,
interface,
final,
catch,
volatile,
strictfp,
long,
finally,
char,
while,
super,
native,
float,
class,
const,
for,
new,
switch

変数

int型は、常に32bit。
boolean型は、trueとfalseのみ。(1,0ではない。)
オブジェクト型も存在する。 intは、Integer、
longは、Long、
booleanは、Boolean、

long l = 123L;
Long obj = new Long(123);
long i = numberObject.longValue();
boolean b = true;
配列

int i = 10;
int[] arr = new int[i];
arr[0] = 123;
arr[i] = 987; // java.lang.ArrayIndexOutOfBoundsException
配列数は定数の必要なし

文字列


‘+’で接続可能。
String str1 = “ABC”;
String str2 = “def”;
String str = str1 + ” : ” + str2;

if, whileの判定部は必ずboolean型
三項演算も有る。

int a = (i==123)?456:789
System.out.println( j ); // 一行ずつ
System.out.print( j ); // 続けて

DTIサーバー構築34 「新しい場所で再出発!」

MySQLのバックアップとリストアでデータベースを移行しよう。

だが!
バックアップ元のシステムの文字コードがlatin1、データベースがUTF-8となっていて、

バックアップ先のシステムとデータベースがUTF-8の時、
文字化けが発生するので、いろいろ大変。
具体的には、

$ mysql -u myswluser -p

バックアップ元の文字コード

mysql> show variables like ‘collation%’;
+———————-+——————-+
| Variable_name        | Value             |
+———————-+——————-+
| collation_connection | latin1_swedish_ci |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
+———————-+——————-+
3 rows in set (0.00 sec)
mysql> SHOW VARIABLES LIKE ‘char%’;
+————————–+—————————-+
| 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/ |
+————————–+—————————-+
8 rows in set (0.00 sec)

バックアップ先の文字コード

mysql> show variables like ‘collation%’;
+———————-+—————–+
| Variable_name        | Value           |
+———————-+—————–+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+———————-+—————–+
3 rows in set (0.00 sec)
mysql> SHOW VARIABLES LIKE ‘char%’;+————————–+—————————-+| 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/ |+————————–+—————————-+8 rows in set (0.00 sec)

まず、mysqldumpで文字コードにlatin1を指定する。

$ sudo mysqldump -u username -p –default-character-set=latin1 dbname > dump.sql
 ファイル中のlatin1の部分をutf8に置換。

$ sed -i -e ‘s/SET NAMES latin1/SET NAMES utf8/g’ dump.sql

リストア先で

$ mysql -u mysqluser -p dbname < dump.sql

★DTIサーバー構築一覧はこちら★

DTIサーバー構築33 「優しく。優しく。」

SSHでガシガシやるのもいいけど、webminでお気楽にやるのもいいよね。
と、なんか最近、webminのインストール方法を書いた気もするが。

DTIサーバーの方は、Cent6だし、Cent7と違うかな。
と、思ったけど、一緒だった。

というわけで、以下のページを参考に、インストールしてみた。

自宅サーバ更新!(9)webmin

はい。終了。
★DTIサーバー構築一覧はこちら★

DTIサーバー構築32 「もう、信じられないっ!」

ある日、Gmailの、サイトで、見つけてしまったさ。
この世に生きる喜び。ではなく、エラーメッセージを。
レッドレッド。それはどぎつい、嫌な色だったさ。
レッドレッド。面倒だから半年ほど放っておいたさ。
SSL Security Error. [ Help ]
Server returned error “SSL error: certificate has expired”
そう。証明書の期限切れ。

もうすぐ無料のSSL証明書が簡単に取得できる日が来るようだが、それまでは1年更新の無料証明書を何とか使うしかない。

なので、昔のBLOGの記事を見ながら、まずは、CAcert.orgに行ってみる。
http://www.cacert.org/
あれ?BLOGをよく見ると、CAcertでは信用してもらえずに、StartSSLで取得し直してるやん。

過去の自分に教えられつつ、次のページに行って、右上の「顔写真+鍵」マークでログイン。

証明書の選択が出てくるので、過去に設定したであろう証明書を選択。
ログイン後は、まず、「Validations Wizard」タブを選択して、Type「Email Address Validation」を選択して、「Continue >> >>」

適当なEmailを入力して「Continue >> >>」、待つ。待つ。そして松。

メールが来たら、「Verification Code」を入力して「Continue >> >>」

「Finish >> >>」すなわち、終わり。
でも、目的は達していない。

「Validations Wizard」タブを選択して、今度はType「Domain Name Validation」を選択して、「Continue >> >>」

あなたの管理しているドメインを入力して、「Continue >> >>」

一覧に表示される受信可能なメールアドレスを選択して、「Continue >> >>」
メールが来たら、「Verification Code」を入力して「Continue >> >>」

「Finish >> >>」すなわち、終わり。

でも、まだ目的は達していない。
 

「Certificates Wizard」タブを選択して、Certificate Target「Web Server SSL/TLS Certificate」を選択して、「Continue >> >>」

次に秘密鍵を作るんだけど、更新するだけなので、「skip >> >>」

で、以前作ったCSRをコピペして、「Continue >> >>」

ない!って時は、
秘密キーからパスフレーズを削除して、

# openssl rsa -in pass.key -out nopass.key
CSRファイルを再度作成、

# openssl req -new -key nopass.key -out remake.csr

うまく行けば、再度「Continue >> >>」で、

Domainにあなたのドメインが表示され、「Continue >> >>」で、
サブドメインの入力を急かされ、「Continue >> >>」で、

あれ、同じサブドメインの期限切れ証明書だと、そこまでしなくても良かった?

「Tool Box」タブの「Retrieve Certificate」で、
期限が延長されている証明書をコピーして使えばよかったの?
あれ、どの時点で有効になった?

で、更に最悪なことに、新しい証明書をサーバーに入れてApacheを再起動しても、エラーで起動できない。。。

証明書ファイルの内容を確認したり、

# openssl x509 -text -noout -in domain.pem
秘密鍵ファイルの内容を確認したり、

# openssl rsa -text -noout -in domain.key
CSRファイルの内容を確認したり、

# openssl req -text -noout -in domain.csr

秘密鍵と、証明書が一致するか調べたり、、、

# openssl rsa -noout -modulus -in domain.key | openssl md5
# openssl x509 -noout -modulus -in domain.crt | openssl md5

復旧することができず、
同じサブドメインで証明書を作りなおすことも、既存の証明書を破棄することも無料ではできず。
結局新しいサブドメインにて、やり直し。

ま、最終的にGmailさんに怒られなくなったからいいか。
★DTIサーバー構築一覧はこちら★