2017年9月6日水曜日

FrogJmp(Lesson3)

問題

コード1

public int solution(int X, int Y, int D) {

    return (int) Math.ceil((double) (Y - X) / D);

}

BinaryGap(Lesson1)

問題

コード1

  1. 2進数に変換(Integer#toBinaryString)
  2. 文字列を char型の配列に変換( String#toCharArray)
public int solution(int N) {

    char[] chars = Integer.toBinaryString(N).toCharArray();

    int gap = 0;
    int count = 0;
    for (char num : chars) {
        if (num == '0') {
            count++;
        } else {
            if (count > gap) {
                gap = count;
            }
            count = 0;
        }
    }
    return gap;
}

コード2

  • コード1ではchar型の配列でループしていたが「1」で文字列を分割する

    1. 文字列の最後、全て「0」を削除( String#replaceAll)
    2. 「1」で文字列を分割する( String#split)
public int solution(int N) {

    String[] strings = Integer.toBinaryString(N)
            .replaceAll("0+$", "")
            .split("1");

    int gap = 0;
    for (String str : strings) {
        int count = str.length();
        if (count > gap) {
            gap = count;
        }
    }
    return gap;
}

コード3

  • コード2をjava8に変換
public int solution(int N) {

    return Stream.of(Integer.toBinaryString(N)
            .replaceAll("0+$", "")
            .split("1"))
            .max((e1, e2) -> Integer.compare(e1.length(), e2.length()))
            .map(e -> e.length())
            .orElse(0);
}

PermMissingElem(Lesson3)

問題

コード1

public int solution(int A[]) {

    Arrays.sort(A);

    int count = 1;
    for (int i : A) {
        if (i != count) {
            return count;
        }
        count++;
    }
    return count++;
}

2014年5月20日火曜日

LinuxでJavaのバージョンを切り替える

概要

メモ

Javaをダウンロード

java6をダウンロード
wget --no-cookies --no-check-certificate --header 
 "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com; oraclelicense=accept-securebackup-cookie"
 "http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-i586.bin" 
 -O "/usr/local/java/jdk-6u45-linux-i586.bin"
java7をダウンロード
wget --no-cookies --no-check-certificate --header 
 "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com; oraclelicense=accept-securebackup-cookie" 
 "http://download.oracle.com/otn-pub/java/jdk/7u55-b13/jdk-7u55-linux-i586.tar.gz" 
 -O "/usr/local/java/jdk-7u55-linux-i586.tar.gz"
java8をダウンロード
wget --no-cookies --no-check-certificate --header 
 "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com; oraclelicense=accept-securebackup-cookie"
 "http://download.oracle.com/otn-pub/java/jdk/8u5-b13/jdk-8u5-linux-i586.tar.gz" 
 -O "/usr/local/java/jdk-8u5-linux-i586.tar.gz"
※改行を入れてるが一行で実行

解凍

java6を解凍
chmod 755 jdk-6u45-linux-i586.bin 
./jdk-6u45-linux-i586.bin
java7,8を解凍
tar -zxvf jdk-7u55-linux-i586.tar.gz
tar -zxvf jdk-8u5-linux-i586.tar.gz

alternativesコマンドでJavaを登録

java6,7,8を登録
alternatives --install /usr/bin/java java /usr/local/java/jdk1.6.0_45/bin/java 1
alternatives --install /usr/bin/java java /usr/local/java/jdk1.7.0_55/bin/java 2
alternatives --install /usr/bin/java java /usr/local/java/jdk1.8.0_05/bin/java 3
Javaのバージョン確認
java -version

java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) Client VM (build 25.5-b02, mixed mode)

javaのバージョンを切り替える

alternatives --config java

3 プログラムがあり 'java' を提供します。

  選択       コマンド
-----------------------------------------------
   1           /usr/local/java/jdk1.6.0_45/bin/java
   2           /usr/local/java/jdk1.7.0_55/bin/java
*+ 3           /usr/local/java/jdk1.8.0_05/bin/java

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:

Java7に切り替え
alternatives --config java

3 プログラムがあり 'java' を提供します。

  選択       コマンド
-----------------------------------------------
   1           /usr/local/java/jdk1.6.0_45/bin/java
   2           /usr/local/java/jdk1.7.0_55/bin/java
*+ 3           /usr/local/java/jdk1.8.0_05/bin/java

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2

Javaのバージョン確認
java -version

java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) Client VM (build 24.55-b03, mixed mode)

補足

Java6インストール時にエラーが出る場合
./jdk-6u45-linux-i586.bin 

Unpacking...
Checksumming...
Extracting...
./jdk-6u45-linux-i586.bin: ./install.sfx.32814: /lib/ld-linux.so.2: bad ELF interpreter: 
そのようなファイルやディレクトリはありません
Failed to extract the files.  Please refer to the Troubleshooting section of
the Installation Instructions on the download page for more information.
ld-linux.so.2 インストール
yum install ld-linux.so.2

2014年4月13日日曜日

OpenSSLのバージョンを確認

概要

OpenSSLのバージョンを確認する
OS : CentOS6.5

確認

$ openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013

2013年12月1日日曜日

PowerShellでシンプルなテンプレートエンジンを作成する

概要

テスト環境や本番環境のアプリリリースにて一部(IPアドレス等)以外、リリース手順が同じ場合
また、メール送信ファイル作成にてユーザ情報以外同一の場合など
毎回、記述するのが面倒なのでシンプルなテンプレートエンジンを作成する

テンプレートファイルと入力データよりファイルを出力する
・テンプレートファイルが存在しない場合はメッセージを出力してなにもしない
・テンプレートの変換は「Hashtable」を使う( @{キー名 = 値; キー名 = 値; ....... })
「Hashtable」の「キー名」にテンプレートに記述した値を設定、「値」に変更する入力データを設定
文字コードのデフォルトは「UTF8」(テンプレートファイル、出力ファイル)

関数


実行例

・テンプレートファイル(Mail_Template.txt)

{LAST_NAME} {FIRST_NAME} 様
ご購入ありがとうございます。

~省略~
・powershell実行
# メールテンプレート指定
$MailTemplateFile = "C:\template\Mail_Template.txt"
# ユーザ情報セット
$User = @{"{LAST_NAME}"="山田"; "{FIRST_NAME}"="太郎"}
# 出力ファイル指定
$MailFile = "C:\Temp\Mail_001.txt"
# 実行
Render-Template -TemplateFilePath $MailTemplateFile -Data $User -OutPutFilePath $MailFile