FixPack適用時のトラブル

最新のV10.5.0.4の適用時にトラブったのでメモ

セットアップ・ウィザードが立ち上がらない

# ./db2setup
DBI1190I  db2setup が DB2 セットアップ・ウィザードを準備中です。
      このウィザードがプログラムのセットアップ操作を案内します。 お待ち
      ください。

Exception in thread "main" java.lang.InternalError: Can't connect to X11 window server using '0.0' as the value of the DISPLAY variable.
        at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
        at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:77)
        at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:122)
        at java.security.AccessController.doPrivileged(AccessController.java:274)
        at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:86)
        at java.lang.J9VMInternals.initializeImpl(Native Method)
        at java.lang.J9VMInternals.initialize(J9VMInternals.java:237)
        at java.lang.Class.forNameImpl(Native Method)
        at java.lang.Class.forName(Class.java:181)
        at java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:113)
        at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:92)
        at java.awt.Window.initGC(Window.java:478)
        at java.awt.Window.init(Window.java:498)
        at java.awt.Window.<init>(Window.java:547)
        at java.awt.Frame.<init>(Frame.java:431)
        at java.awt.Frame.<init>(Frame.java:396)
        at LoadingGraphic.<init>(Unknown Source)
        at LoadingGraphic.main(Unknown Source)

DISPLAY 変数が正しく設定されていません。  DISPLAY 変数が正しく設定されていて、指定されたディスプレイのウィンドウがオープンできるように許可が正しく設定されているかどうか確認してから、コマンドを再実行してください。

解決方法はいたって簡単

# export DISPLAY=:0

オフラインバックアップのレストア

別環境のDB2のオフラインバックアップを自環境にレストアするところではまったのでメモ。
ちなみに環境は、AIX(6.1)上のDB2(V9.5)です。

レストアする前に必要なこと

バックアップ情報の中に環境情報などが混じっているため、
レストア前にバックアップを取った環境と同じにするようにしなければなりません。
なお、バックアップを取得した際にDB2

 DATABASE.0.db2inst2.NODE0000.CATN0000.20140905155518

のようなファイルを作りますが、ここからも少し情報を読み取ることができまして、

 データベース名.0.db2インスタンスユーザー名.NODE0000.CATN0000.20140905155518

といった感じで読み取ることができます。

実際の環境によって必要な情報(インスタンスの追加作成の有無など)は違うと思いますが、
私が構築した際に必要とした情報は以下の通りです。

  1. db2インスタンスユーザー:BACKUPコマンドを実行したユーザー(この場合:db2inst2)
  2. データベース名:バックアップファイルから読み取れます(この場合:DATABASE)
  3. db2インスタンスインスタンスが追加で必要な場合はあらかじめ情報を提供してもらう
  4. 展開先のフォルダ:データベースを展開していたフォルダはレストアしながら補完してもいいですができれば情報を提供してもらう

これに基づいて以下のオペレーションを行いました。

インスタンスの作成(要root)

db2icrtコマンドでインスタンスを作成(参考:DB2でインスタンスを追加で作成するには
分離ユーザーはDB2をインストールする際に指定したユーザー(デフォルト:db2fenc1)で大丈夫っぽいです。

# cd /opt/IBM/db2/V9.5/instance
# ./db2icrt -u db2fenc1 db2inst2

/etc/service に ポートの登録(要root)

インスタンスに紐づくポートを登録しておきます(要再起動)
「db2c_db2inst2」は任意の文字列でOKです。

db2c_db2inst2	50001/tcp

RESTOREコマンドの実行(db2インスタンスユーザー)

実行時にフォルダが存在しないエラーなどが出る場合は適宜フォルダを作って補完します。

db2 RESTORE DB DBCD02 FROM /udb/backup_DATABASE

ロールフォワードの実行(db2インスタンスユーザー)

$ db2 rollforward db DATABASE complete 

ちなみにこれを行わない場合、以下のエラーがでることがあります。

SQL1117N  「ロールフォワード・ペンディング」のために、データベース "DATABASE"
の接続または活動化を行うことはできません。  SQLSTATE=57019
{{<
** svcenameの登録(db2再起動必要)
これをしないと外部ツールから接続することができません。
「db2c_db2inst2」は/etc/serviceで登録した際に利用した文字列を利用します。
>|sh|
$ db2 update dbm cfg using svcename db2c_db2inst2

DB2インスタンスプロトコルの設定(db2再起動必要)

$ db2set DB2COMM=TCPIP

これをしないと外部ツールから接続する際に以下のエラーがでることがあります。

[IBM][CLI Driver] SQL30081N 通信エラーが検出されました。使用された通信プロトコル : "TCP/IP" 使用中の通信 API: "SOCKETS" エラーが検出された場所: "" エラーを検出した通信機能: "connect" プロトコル固有のエラー・コード: "10061""*""*" SQLSTATE=08001 

最後に

個人的にはリソースの観点から全く同じものを複製するのは難しいような気もしていて、
データベースをコピーするdb2moveの方が汎用的で使いやすいと思ったりもするのですが、
これはこれで、データベースを作ったり、シーケンス作ったり、権限付与したりと
それはそれでまた面倒な構築作業も増えたりもするので迷うところです。

PDF格納先の判別

生成されたPDFファイルの保存先(IE限定)

IEではPDFは生成されるとデフォルトでは一時的にTemporary Internet Filesに格納されますが、
その配下は隠しファイル・システムファイルとなっていて設定を変えないと
なかなかみることができないという現状があります。

保存先はOSによって違います

現状では以下のようにキャプチャ時にどこに保存されているのかを
OSによって判別するようなものがあれば良くて、これに関しては
SeleniumのPlatformクラスのgetCurrentを使うと簡単に取れます。

public InternetExplorerTempFileCapture() {

  switch (Platform.getCurrent()) {
    case WIN8 :
      this.setTempFolder(System.getProperty("user.home")+"/AppData/Local/Microsoft/Windows/Temporary Internet Files/Low/Content.IE5/");
      break;
    case VISTA :
      this.setTempFolder(System.getProperty("user.home")+"/AppData/Local/Microsoft/Windows/Temporary Internet Files/Content.IE5/");
      break;
    case XP :
      this.setTempFolder(System.getProperty("user.home")+"/Local Settings/Temporary Internet Files/Content.IE5/");
      break;
    default:
      throw new UnsupportedOperationException();
  }
}

PDFのキャプチャ

これに関しては以前の記事にも書きましたが、
隠されていようがそうであるまいが基本的にキャプチャできます。
InternetExplorerの一時フォルダから出力されたPDFを取得する - 遅れてやってきたプログラマーの小言

LINEの年齢認証をMVNOのSIMでも認証できる一番簡単な方法?

LINEで起こるMVMOでの年齢認証の壁

MVMOでスマホを運用していて不便なのは、
LINEで友達を追加する時なんですよね。
ID検索は年齢認証がかかってしまうし、
メールで招待しても認証がかかってしまう。

友だち自動追加とかは意外にいけるようなのですが、
自分の電話帳であまりリストに入れたくないなという人も入ってしまったり、
相手にもそれなりの負担してもらわないといけなかったりして、
かなり気が引けていました。

QRコードという抜け道?

もし、特定のお友達を追加したいときは、

 1.LINEで自分のQRコードを確認してスクリーンショットをとる。
 2.特定のお友達のメールアドレス(Gmailでもなんでもよい)に送付する
 3.送付されたQRコードを適当な画面に表示させてLINEで読み込む。

たったこれだけで登録ができるようになります。

最後に

2014年7月23日現在ではこの方法で登録できますが、
また制限がかかったりするのかもしれないですね…。

ProfileManagementがエラーで起動しない件について

マニュアル通りにやっても…。

なぜか以下のようなエラーがでて起動しないので、
プロファイル作成ができない…。

ちなみに
環境はAIX7.1(64bit)・WebSphere8.5.5(64bit)。

# cd /usr/WebSphere/AppServer/bin/ProfileManagement
# pmt.sh

The program 'eclipse' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadWindow (無効な Window パラメータ)'.
  (Details: serial 1698 error_code 3 request_code 42 minor_code 0)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)
   

そもそもProfileManagementはEclipseベースで動いているようで…。

pmt.shと同じ階層に「eclipse64」(32bitなら「eclipse32」なのかな)がいます。
上記シェル内で、32か64のどちらかをキックするようにしてあります。
※以下、一部抜粋

case ${COMMAND_SDK} in
	*32) ${binDir}/eclipse32/pmt.sh "$@" ;;
	*64) ${binDir}/eclipse64/pmt.sh "$@" ;;
esac

その1:正しいJREが設定されているか、/etc/enveiroment の確認・編集

私の環境では32bitと64bitが混ざって入っていたので、
利用する64bitにパスを変更しました。(再起動必要)

PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/java5_64/jre/bin:/usr/java5_64/bin

その2:eclipse.ini に 魔法のコード

pmt.shと同じ階層にあるeclipseフォルダ内にあるeclipse.iniに以下の一文を追加。

-vmargs -Dorg.eclipse.swt.internal.gtk.cairoGraphics=false

※ 参考サイト
http://askubuntu.com/questions/425318/eclipse-crashes-with-x-window-system-error-using-nx-cairo-the-solution

さいごに

上記の2つでひとまず起動しましたが、「その2」は一度起動されたら
削除しても起動します…うーん、なんなんだろう…。

unzipのインストール

最近、またAIX・WebSphere・DB2と戦ってます。

まさかプリインストールされていないとは

というわけで、せっせとrpmをダウンロードします。
http://www-03.ibm.com/systems/power/software/aix/linux/toolbox/ezinstall.html


インストールは一瞬

瞬殺です…そりゃそうだ。

# rpm -i unzip-5.51-1.aix5.1.ppc.rpm
# unzip -h
UnZip 5.51 of 22 May 2004, by Info-ZIP.  Maintained by C. Spieler.  Send
bug reports using http://www.info-zip.org/zip-bug.html; see README for details.

Usage: unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]
  Default action is to extract files in list, except those in xlist, to exdir;
  file[.zip] may be a wildcard.  -Z => ZipInfo mode ("unzip -Z" for usage).

  -p  extract files to pipe, no messages     -l  list files (short format)
  -f  freshen existing files, create none    -t  test compressed archive data
  -u  update files, create if necessary      -z  display archive comment
  -x  exclude files that follow (in xlist)   -d  extract files into exdir

modifiers:                                   -q  quiet mode (-qq => quieter)
  -n  never overwrite existing files         -a  auto-convert any text files
  -o  overwrite files WITHOUT prompting      -aa treat ALL files as text
  -j  junk paths (do not make directories)   -v  be verbose/print version info
  -C  match filenames case-insensitively     -L  make (some) names lowercase
  -X  restore UID/GID info                   -V  retain VMS version numbers
                                             -M  pipe through "more" pager
Examples (see unzip.txt for more info):
  unzip data1 -x joe   => extract all files except joe from zipfile data1.zip
  unzip -p foo | more  => send contents of foo.zip via pipe into program more
  unzip -fo foo ReadMe => quietly replace existing ReadMe if archive file newer

IBMさんへ

せめてソフトウェアの圧縮形式(zip・gzip)を合わせるか、
プリインストールくらいはしておいてほしいです…。

DELL New XPS 13 購入・レビュー

会社のPCが古くなってきてしまったので買い替え。
せっかくノートを買うならと、MacBookAirをおねだりしてみたのですが、
会社的にはあまりよくないということで、

 DELL New XPS 13

を購入。

CPUとOSをカスタマイズして15万ちょいしました…。

 ・Core i7-4510U
 ・Windows8.1 Pro

Windowsエクスペリエンスはこんな感じ。

まだ使用して2週間程度ですが開発環境はこんな感じ。


まずは気に入っているところの紹介

◎:タッチパネル

そんなんいらんやろと思われる方もいると思いますが、
画面サイズがフルHD(1920×1080)なので文字がまぁまぁ小さいので、
拡大したいシーンに結構威力を発揮してくれます。
タッチパッドだと拡大縮小はカクカクなのですが、
タッチパネルだとかなり快適に操作できます。
特にブラウジングは最高です。
まるでタブレットのようです。

ただし、画面が汚れてしまうのが・・・(´・ω:;.:...

◎:タッチパッド

個人的にはこれが一番おすすめ。
4点タッチなのですごく使いやすい。
だからといってすべてONにしてるわけではないですけど。

 2本:スクロール・右クリックなど
 3本:戻る・進む(Excelタブ移動も使える!!!)
 4本:Alt+Tab

は、このマシンに変えてからかなり使いこんでいて、
最初はマウスも使ってたのですが今はマウスなしでやってます。
手の位置があまり動かないのでむしろこっちの方が、
最近は楽になってきましたε- (´ー`*)フッ

○:画面サイズ

フルHDですが13.3インチではちょうどいいんじゃないでしょうか。
ちょっと文字やアイコンが小さいですがこれ以上小さいときついですね。
作業スペースも思っていた以上に広く使えてすごく良いですし、
タッチパネルというのもあってか画面自体も結構綺麗です。

ちなみに私は

 ・Mini DisplayPort
 ・USB(IO-DATA USB-RGB/D2)

を使って贅沢なトリプルディスプレイにしてますが、
最近ようやく慣れてきて使いやすくなってきたところです。

なお、つないでいるディスプレイ側は文字が大きいので、
細かい作業の場合はそっちで作業できるので便利です。

ここはもう少し改善してもらいたいというところ

△:接続ポートの少なさ

他のノートとかだとHDMIとかが標準でついてますが、
このノートは

 ・USB×2
 ・MiniDisplayPort

くらいしか空いていないので辛いです。
会社のPCなのでSDカードなど使わないのでいいですが、
もし個人で買うとしたら少し迷っちゃうかもしれないです。

△:タッチパッドのクリック感

タッチパッドと一体になっているので隅を押し込むんですが、
私のものが悪いのか、それとも慣れていないからなのか
よくわからないですが反応が悪いです。

良いところにもあげている4点タッチとか、
代わるものがあるのでそれを使いこなせば、
あまり使わなくなるのかもと考えていますが…。

最後に

そんなこんなで簡単なレビューですが、
個人的にはおおむね満足している次第です。