投稿

10月, 2019の投稿を表示しています

talendでExcelのシリアル値の日付を日付文字列に変換する自作関数

シリアル値…それは1900/01/12からの日数! talendを使ってExcelからデータを取り込む際に、日付をシリアル値で持っているセルをそのまま取り込むとシリアル値の数字で取り込まれてしまうため、日付の文字列に変換する関数を作った。 ※シリアル値から日付型に直変換できないと思ってこんな関数作ってますが、「そんなの必要ない」とかあればご教示ください…。 見出しの通り、シリアル値は1900年1月12日から指定した日付までの日数を示す値なので計算すればシリアル値から日付を求めることができる。 シリアル値の計算で注意すること 1900年1月12日=シリアル値「1」からの日数の合計ではあるが、1つ罠がある。 1900年2月29日は実在しないのに、Excelおよびスプレッドシート系の関数内では存在していることになっているらしい。 詳しくは こちら が解説してくださっているが、歴史的経緯と互換性の問題でずっと残っているようだ。 そのため、1900年2月29日=シリアル値で言うと60日以降であれば1日マイナスする必要がある。 ということでJavaのコード 筆者そんなにJava書かない人なので動けばいいや!の精神で書いているコードである。 バッチリな方はしっかりエラー処理や無駄なロジックは省いていただきたい。 また、日付型文字列になればとりあえず良かったのでString型で返すようになっている。 public static String SerialDateToY4M2D2(String input) {  // Excelのシリアル値を日付型文字列化 if (input = null && input.isEmpty() ) { // 入力がnullか空の場合は空白文字をリターンして終了。 return ""; } int SerialNumber; String RetrunDateString; try { // 1900年1月12日がシリアル値1のため、加算する値は取得したシリアル値−1にする。 SerialNumber = Integer.parseInt(input) - 1; // 1900年2月29日は現実には存在していないがシリアル値上は存在(60)するので、 //

ESXiをインストールしたPCのOEMライセンス確認

ESXiをインストールしたPCのOEMライセンス 最近のWindows10をインストールしたPCには、古式ゆかしいライセンスキーを記載したシールがついていない。 そのため、ライセンスキーが必要になったときにぱっと確認できない。 Linuxをインストールした場合は、「/sys/firmware/acpi/tables/MSDM」をcatすればライセンスキーを確認できるのだが、ESXiの場合、/sysがないので上記では確認できない。 amldumpでライセンスキー取得 amldumpコマンドでacpi系の情報がファイルにdumpできるとのことなので、愚直に実行してみると、いくつかの.amlファイルが出力される。 その中のMSDM.amlファイルの中にWindowsのライセンスキーが書かれている。 ESXi上の仮想OSでアクティベーション ESXiをインストールしているので、当然仮想マシンを構築するのが目的である。 確認したキーでWindows10をライセンス認証すればOK。 当然、Microsoftのライセンス規約をよく読んでやっていいかを判断すること。 Proなら問題ない…らしい? http://blog.yottun8.com/archives/794 めんどくさかったら最新版Windows ServerのDatacenterライセンスを購入すればだいたいOK!いくつでも建てられるよ!(1ライセンス100万以上するけど) Standardでも2仮想ライセンスOKだよ! <2020/01/07追記> ハイパーバイザー上で稼働させるクライアントOSのライセンスは色々デリケートで、DAライセンスなりSAなりが必要になるので、特に法人で色々やる場合は注意してね!