2013年10月30日水曜日

Linux上でH2 Databaseが起動しない

概要

Linux上でH2 Databaseが起動しない
理由はホスト名が/etc/hostsに記述されていないためエラーが発生

詳細

実行

/h2-1.3.173.jar org.h2.tools.Server

エラー内容

Exception in thread "main" org.h2.jdbc.JdbcSQLException: 入出力例外: "java.net.UnknownHostException:
 XXXXXXX.local: XXXXXXX.local: 名前またはサービスが不明です"
IO Exception: "java.net.UnknownHostException: XXXXXXX.local: XXXXXXX.local: 名前またはサービスが不明です" [90028-173]
 at org.h2.message.DbException.getJdbcSQLException(DbException.java:331)
 at org.h2.message.DbException.get(DbException.java:160)
 at org.h2.message.DbException.convert(DbException.java:275)
 at org.h2.util.NetUtils.getLocalAddress(NetUtils.java:263)
 at org.h2.server.web.WebServer.updateURL(WebServer.java:328)
 at org.h2.server.web.WebServer.init(WebServer.java:317)
 at org.h2.tools.Server.<init>(Server.java:51)
 at org.h2.tools.Server.createWebServer(Server.java:413)
 at org.h2.tools.Server.runTool(Server.java:306)
 at org.h2.tools.Server.main(Server.java:117)
Caused by: java.net.UnknownHostException: XXXXXXX.local: XXXXXXX.local: 名前またはサービスが不明です
 at java.net.InetAddress.getLocalHost(InetAddress.java:1466)
 at org.h2.util.NetUtils.getLocalAddress(NetUtils.java:261)
 ... 6 more
Caused by: java.net.UnknownHostException: XXXXXXX.local: 名前またはサービスが不明です
 at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
 at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:894)
 at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1286)
 at java.net.InetAddress.getLocalHost(InetAddress.java:1462)
 ... 7 more

解決方法

/etc/hostsに記述することで解決

hostsの確認

$ hostname
XXXXXXX.local
$ cat /etc/hosts
127.0.0.1 localhost

hostsの修正

$ vi /etc/hosts
127.0.0.1  XXXXXXX.local localhost

2013年10月24日木曜日

フォルダ配下のファイル名を作成日時順に連番を付ける

関数


メモ

DateTime型をソートする場合、キャスト(変換)しないといけない
Sort-Object {$_.CreationTime -as [DateTime]} 

2013年10月22日火曜日

配列から重複を削除

概要

HashSetを使用して配列の値を一意にする。
プリミティブ型の場合、そのまま使えないのでオブジェクトにラップして一意にする。

メソッド


2013年10月14日月曜日

2つのCSVファイルから項目に一致した行を出力

概要

2つのCSVファイル(顧客マスタ、商品マスタ)から、顧客マスタに商品マスタ.商品コードが存在するものをPowerShellを使ってCSV出力する

メモ

CSVファイル

■商品マスタ(items.csv)

ITEM_ID,ITEM_NAME
10000,AAAAAA
10001,BBBBBB
10002,CCCCCC
・・・・
・・・・
■顧客マスタ(customers.csv)
CUSTOMER_ID,ITEM_ID,CUSTOMER_NAME,QUANTITY
8000,10000,aaaaa,100
8000,10002,bbbbb,50
8001,10005,ccccc,1000
・・・・
・・・・

SQL文だと以下のような感じ

■SQL

SELECT CUSTOMERS.* FROM CUSTOMERS, ITEMS 
WHERE CUSTOMERS.ITEM_ID = ITEMS.ITEM_ID

PowerShell その1

$result = Import-Csv c:\items.csv | Select-Object ITEM_ID 
Import-Csv c:\customers.csv | Where-Object {$result -match $_.ITEM_ID} | Export-Csv c:\output.csv -NoType
customers.csvが10万件、items.csvが1万件で約数十分ぐらいかかる(※スペックによるがとにかく遅い!!)

PowerShell その2

その1の場合、シンプルだが遅いので
items.csvをHashTableにセット(ITEM_IDに重複がないこと)する方法で解決した(約20秒ぐらいで終わる)

$hash = @{}
Import-Csv c:\items.csv | ForEach-Object {$hash.Add($_.ITEM_ID, $_)}
Import-Csv c:\customers.csv | ForEach-Object {if($hash.Get_Item($_.ITEM_ID)){$_}} | Export-Csv c:\output.csv -NoType

2013年10月6日日曜日

音楽ファイルのタグ情報を取得する

概要

フォルダ配下の音楽ファイルのタグ情報を取得する。

・タグ情報を取得するため「taglib-sharp.dll」を使用する。
以下のサイトより取得後、任意の場所に解凍する。
http://download.banshee.fm/taglib-sharp/2.1.0.0/
ファイル名:taglib-sharp-2.1.0.0-windows.zip

関数


実行例

 Get-MusicTagData -MusicFolderPath "C:\develop\flac\MR.BIG\Big, Bigger, Biggest"

メモ

タグ情報/プロパティ情報をすべて取得(※taglib-sharp.dllから取得できるすべて)

$TagLib = "C:\develop\lib\taglib-sharp.dll"
# ライブラリ読み込み
[System.Reflection.Assembly]::LoadFile($TagLib)
# タグ情報を取得するファイル名を指定
$audiofile = [TagLib.File]::Create("C:\develop\flac\MR.BIG\Big, Bigger, Biggest\01 Addicted to that rush.flac")
# タグ情報を取得
$audiofile.Tag
# プロパティ情報を取得
$audiofile.Properties

2013年9月18日水曜日

CentOSにH2 Databaseをインストール

概要

H2 Databaseをインストールすることがメインなので、今回はパーミッション、アクセス権限は考えない

メモ

Javaをインストール


H2 DataBaseをインストール


H2 DataBaseに接続

# H2 DataBaseに起動
/usr/local/java/latest/bin/java -cp /opt/database/h2/bin/*.jar org.h2.tools.Server

Welcome to H2 Shell 1.3.173 (2013-07-28)
Exit with Ctrl+C
[Enter]   jdbc:h2:~/test
URL
[Enter]   org.h2.Driver
Driver
[Enter]   sa
User
[Enter]   Hide
Password
Password
Connected
Commands are case insensitive; SQL statements end with ';'
help or ?      Display this help
list           Toggle result list / stack trace mode
maxwidth       Set maximum column width (default is 100)
autocommit     Enable or disable autocommit
history        Show the last 20 statements
quit or exit   Close the connection and exit

sql> SELECT * FROM INFORMATION_SCHEMA.CATALOGS ;
CATALOG_NAME
TEST
(1 row, 7 ms)
sql> exit;
Connection closed

2013年9月9日月曜日

xmlからログ設定を取得

概要

ログ出力する設定をXMLから取得する関数を作成する。

・初期設定はpsに記述する
・XMLにアペンダを記述して選べるようにする

関数


XML設定


実行例

# XML読込
Set-LogSetting -XMLFilePath "C:\log4ps.xml" -Appender "unit"
# ログ出力
Write-DebugLog -VALUE "デバッグ"
Write-InfoLog -VALUE "情報"
Write-WarnLog -VALUE "警告"
Write-ErrorLog -VALUE "エラー"