2021年3月19日金曜日

Java統合開発環境Eclipseのインストール

 統合開発環境(IDE)がEclipseに決定したことを受け、Windows10へEclipseをインストール、アプリケーションサーバーであるtomcatのデバッグができる設定までを纏めました。

前提条件

Eclipseは日本語化が完了しすぐ使えるEclipse  All in One を使用します

    ここへアクセス https://mergedoc.osdn.jp/

    最新版Eclipse2020をクリックします

    JDKは既にインストール済みなので、JDK無しのもので、Downloadボタンをクリックします
    なお、下記のような説明文にもあるように解凍ソフト7zipを事前に準備しておきます
    • Windows では 7-Zip で解凍してください。それ以外で解凍した場合、パス長 260 文字制限により正常動作しません。
    zipファイルのダウンロードリンクをクリックします

    ダウンロード中...
    ダウンロードが完了したら、任意の場所に解凍するだけでインストールは完了です

    解凍したフォルダの中にあるeclipse.exeをダブルクリックして起動します


    起動時に作成したソースコードなどを格納するワークスペースの保存先を聞かれるので、指定して起動をクリックします。
    (この場所をデフォルトとして使用にチェックを入れておくと次回以降このダイアログは出なくなります)
    起動が完了しました

    続けていくつかやっておくと便利な設定をしていきます

    まずjava(JDK)の設定をします
    メニュー「ウィンドウ」-「設定」-「Java」-「インストール済みのJRE」ここで自身の環境にインストール済みのJRE(JDK)を指定しておきます

    これは好みですが、IDEの外観を「ダーク」にしてみます
    メニュー「ウィンドウ」-「設定」-「一般」-「外観」ここでルック&フィールを「ダーク」に指定し、適用して閉じるをクリックします

    Eclipseの再起動が必要ですが、見た感じがこんな感じになりました。


    ここからTomcatのデバッグ用の設定をします


    メニュー「ウィンドウ」-「ビューの表示」-「その他」と進み「サーバー」の中から「サーバー」を選択し開くをクリックします。

    サーバービューが表示されました。
    「使用可能なサーバーがありません」をクリックします。

    サーバーのタイプを選択で「tomcat」でフィルターし、インストール済みのTomcat9を選択し次へをクリックします

    Tomcat9インストール先ディレクトリ、JREを指定して次へをクリックします

    まだアプリケーションが無いので、このまま完了をクリックします

    Tomcat9がセットアップされました。

    次回は簡単なサーブレットを作成し、このサーバー上で起動させるところまでを記載したいと思います。

    2021年3月18日木曜日

    IDE(EclipseかVisualStudioCodeが候補)を決める


    結果から申し上げますとKingFisheの開発はEclipseで行きます。

     IDEとは統合開発環境のことで、Javaで開発を行う場合、次の3つの内どれかを使うのが一般的です。

    • IntelliJ IDEA
    • Eclipse
    • NetBeans
    今回KingFisheの開発を進めるに当たり、個人的な趣向もあり、IDEではありませんが、プラグインを追加することで拡張でき、なおかつ軽量なVisualStudioCodeが使えないか検討しました。


    VisualStudioCodeにJavaとTomcatプラグインを追加

    なかなか良くできていて、見た感じもGood。
    ただ、私がやり方を知らないだけかもしれませんが、コンパイルや実行エラーが英語表示、Tomcatのコンソールが文字化けする、VisualStudioCodeでのJavaの開発自体がマイナーなんでしょうか、ネットの情報も少なめということで、学習コストを考えて今回は見送りとしました。


    Eclipse All in One

    こちらは、最初から必要なものが一式そろっていて、直ぐ開発に取り掛かれるのと、何といっても歴史があり、ネット上の情報も豊富なことから、Eclipseでの開発を行う事に決定しました。
    次回以降、EclipseのインストールとWebアプリケーション(Hellow World レベル)を紹介したいと思います。

    2021年3月17日水曜日

    MySQL データのバックアップとリストア(2)

    MySQL8.0 コマンド(mysqldump)を使用してデータベースのデータバックアップとリストアを実施してみます。

     今回はデータベース運用中のオンラインバックアップとリストアです

    全データベースをバックアップするコマンド

    C:\>mysqldump -u [ユーザー] -p --all-databases > [バックアップファイル]
    

    データベース指定してバックアップするコマンド

    C:\>mysqldump -u [ユーザー] -p [データベース名] > [バックアップファイル]
    

    全データベースを復元するコマンド

    C:\>mysql -u [ユーザー] -p  < [バックアップファイル]
    

    データベースを指定して復元するコマンド

    C:\>mysql -u [ユーザー] -p -D [データベース名] < [バックアップファイル]
    


    実施環境:Windows10,MySQL8.0.22

    バックアップ前の状態は以下の様な構成(テーブルはすべてInnoDB)

    • データベース 「javadev」 この中に テーブル「new_table1」と「new_table2」
    • データベース 「javadev2」 この中に テーブル「new_table1」
    workbenchでバック前の内容を確認してみます



    全データベースをバックアップするコマンド(途中改行しないように)

    C:\>mysqldump -u root -p --all-databases > c:\Download\data\alldata.dmp
    

    これでc:\Download\data\alldata.dmpというファイルが作成されます(バックアップファイル)

    ここからリストアしてみましょう

    確認できるようにテーブルを削除しておきます


    全データベースを復元するコマンド(途中改行しないように)

    C:\>mysql -u root -p  < c:\Download\data\alldata.dmp
    

    workbenchで結果を確認してみます(きれいに復元されました)




    最後に

    上記例はいずれも、mysqldumpの「--lock-tables」オプションが有効になっている状態です(デフォルト)。
    これは、バックアップにあたり、テーブルロックを行い実施しますので、オンライン中、行ロックを含む、ロック状態のテーブルがあるとコマンドがロック解放待ち状態になります。

    ロック待ちをしたくない場合、mysqldumpで「--single-transaction」オプションを指定すると、バックアップ開始時のスナップショットを元にバックアップが実行されます。
    (この場合、バックアップ開始時点の状態がバックアップされる)

    C:\>mysqldump --single-transaction -u [ユーザー] -p --all-databases > [バックアップファイル]
    


    これをバッチファイル化してタスクスケジューラー等に組み込み場合 -p[パスワード] (-pに半角スペースを入れず続けて記述したもの)を使います。

    ただし、" [Warning] Using a password on the command line interface can be insecure."パスワードをコマンドに書き込むなというワーニングが出ます。

    C:\>mysqldump --single-transaction -u [ユーザー] -p[パスワード] --all-databases > [バックアップファイル]
    

    2021年3月16日火曜日

    MySQL データのバックアップとリストア(1)

     MySQL8.0 workbenchを使用してデータベース(スキーマ)内のデータバックアップとリストアを実施してみます。

    MySQL Workbenchを起動します

    対象のMySQL Connectionをクリックします

    パスワードを入力してOKをクリックします
    serverメニューから、Data Export をクリックします

    対象のデータベース(スキーマ)にチェックを入れ、バックアップファイルの格納先を指定
    Start Exportをクリックします
    バックアップ(Export)が完了しました
    出力先に指定した場所に.sqlファイルが出来ています
    中身をテキストエディタで開いてみると、DROP TABLEした後、CREATE TABLEしデータINSERTする形になっているのが分かります

    今後は、バックアップしたファイルを使用してリストアします
    リストアされたか分かるように、テーブルを事前に消してリストアしてみます
    対象テーブルを選択、右クリックし、Drop Tableをクリックします

    テーブルが消えています

    serverメニューから、Data Export をクリックし、バックアップしたファイルとリストア先データベース(スキーマ)を指定して実行します。

    リストアが完了しました。

    テーブルを開いて、中身を確認してみます
    ちゃんと復元されていますね。

    次回はコマンドラインから、ベックアップとリストアを実施する記事を書こうと思います

    2021年3月14日日曜日

    MySQL CSVファイル インポート

     他のデータベースや、Excel等で作成したデータをMySQLへインポートしたいといった場合に使用します

    前回作成したスキーマJavadevのテーブルnew_table1へインポートします。


    インポートするcsvファイルを用意します

    色々な文字が入ったものを用意しました。
    ただし、このファイルの文字コードはUTF-8、改行コードはCR+LFとしています。


    MySQL Command Line Client を起動します
    パスワードを入力します

    ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
    MySQLにはインポートできるディレクトリを制限しているので、適当なフォルダにcsvファイルを置いてインポートしようとするとこのエラーがでます。
    そこで、次のコマンドを入力し、制限がかかっていないディレクトリを確認します

    mysql> show variables like '%secure_file_priv%';
    
     C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\
    であることが分かりましたので、ここに先ほどのcsvファイルを配置し
    次のコマンドを入力します

    mysql> LOAD DATA 
    INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/INPORT001.csv' 
    INTO TABLE new_table1 
    FIELDS TERMINATED BY ',' 
    ENCLOSED BY '"' 
    LINES TERMINATED BY '\r\n' 
    IGNORE 1 ROWS;
    


    インポートが実行されました
    データが入っている事が確認できます

    CSVファイルの項目に,,(値無しが)入っており、これをNullとして扱いたい場合、CSVファイルの,,を,\N,(Nは大文字)に置換すれば行けます






    2021年3月13日土曜日

    MySQLデータベース(スキーマ)とテーブル作成

     MySQL8.0のインストールが完了したところで、今度はworkbenchを使用してデータベース(スキーマ)と続けてテーブルを作成してみます。

    MySQL Workbenchを起動します

    対象のMySQL Connectionをクリックします

    パスワードを入力してOKをクリックします

    データベース(スキーマ)が無い状態から。
    左上のアイコン「Create a new schema」をクリックします

    データベース(スキーマ)名とスキーマ内でデフォルトとしたい、charset(文字コード)、collation(照合順序)を指定します
    ※charset(文字コード)、collation(照合順序)は指定しなければMySQL8.0のデフォルトでそれぞれ、utf8mb4,utf8mb4_0900_ai_ciになります

    Applyをクリックします。

    Finishをクリックします

    データベース(スキーマ)今回はjavadevという名前、charset(文字コード)、collation(照合順序)はデフォルトで作成しました。

    続けてテーブルを作成してみます

    左上のアイコン「Create a new table」をクリックします

    Table Name(テーブル名)を指定します

    Column Name(カラム名)、DataType(データ型)他の属性を指定します
    ※項目を追加するには、赤枠内をダブルクリックすると出来るようになります

    DataType(データ型)は項目右横プルダウンをクリックすると選択できるようになっています

    指定が完了したら、Applyをクリックします

    Applyをクリックします

    Finishをクリックします

    完成です
    charset(文字コード)、collation(照合順序)を指定しなかった為
    MySQL8.0のデフォルトでそれぞれ、utf8mb4,utf8mb4_0900_ai_ciで作成されているのが分かります

    文字コードは日本語も英語も扱いやすいUTF8(utf8mb4)で良いと思いますがCollationはutf8mb4_unicode_ci:A-a区別しない,は-ぱ区別しない
    utf8mb4_general_ci:A-a区別しない,は-ぱ区別する
    などの決まりがあり、システムの特性に応じて検討する必要があります。
    utf8mb4_binはAとaは別文字等すべての文字を区別する指定になります。



    MySQL 8.0での日本語に関するCollation
    • utf8mb4_bin Unicodeのコードポイントのみを利用
    • utf8mb4_general_ci MySQL 5.7のutf8mb4のデフォルト
    • utf8mb4_unicode_ci UCA 4.0.0ベース
    • utf8mb4_unicode_520_ci UCA 5.2.0ベース
    • utf8mb4_0900_ai_ci MySQL 5.8のutf8mb4のデフォルト,UCA 9.0.0ベース
    • utf8mb4_0900_as_cs 大文字小文字およびアクセントを判別,UCA 9.0.0ベース
    • utf8mb4_ja_0900_as_cs 日本語独自の照合調整(Tailoring)を含む
    • utf8mb4_ja_0900_as_cs_ks ひらがなカタカナを判別
    出典
    https://gihyo.jp/dev/serial/01/oss-db-various-news/0023






















    適格請求書等保存方式(インボイス制度)と消費税の端数処理

    消費税の税額計算は 売上税額-仕入れ税額=納税額 2023年10月以降、この納税額の計算の元になる請求書は適格請求書(インボイス)の保存が必要となる。 2019年10月から消費税が10%に引き上げられる際に、日用品等は8%に据え置かれ複数税率を扱う事業者が発生する。 この軽減税率...