wxWidgets Install

・ダウンロード
 wxWidgets本家サイト(http://www.wxwindows.org/)から
 インストールモジュールをダウンロードしてきます。
 例:wxMSW-2.8.7.zip というもの

・インストール
 ダウンロードしてきたモジュールを
 適当な場所に解凍します。例:C:\wxMSW-2.8.7
 ※注意:パスにはスペースがないこと※

・環境変数追加
 下記の環境変数を追加します
 変数: WXWIN  値: インストールしたパス
 例: WXWIN = "C:\wxMSW-2.8.7"

・コンパイル
 コマンドプロンプトを開きインストール場所に移動し、下記のコマンドでコンパイルします。
 しばらく時間がかかりますが、エラーを吐かずにコンメ[ルが戻ってくれば完了です。
 cd "C:\wxMSW-2.8.7\build\msw"
 make -f makefile.gcc BUILD=debug OR mingw32-make -f makefile.gcc BUILD=debug UNICODE=1
 cd "C:\wxMSW-2.8.7\samples\minimal"
 make -f makefile.gcc BUILD=debug OR mingw32-make -f makefile.gcc BUILD=debug UNICODE=1
 ※BUILD=releaseにすると、リリース版になります
 
 MSYSがインストールされた場合、下記のようにもコンパイルできます
  cd $WXWIN
  mkdir build-debug
  cd build-debug
  ../configure --with-msw --enable-debug --enable-debug_gdb --disable-shared
  ../configure --enable-optimise --enable-stl --enable-unicode
  make
  make install %%% This step is optional %%%
  cd samples/minimal
  make
  ./minimal.exe
  ※strip minimal.exeを実行すれば、EXEファイルサイズの縮小ができます

 ※詳しいことはファイル"INSTALL-MSW.txt"又は"docs\msw\install.txt"を参照のこと
 ※INSTALL detail infomation from: Cygwin/MinGW compilation

本・辞書・文例集

ここから転載


インターネットの普及を背景に、パソコンで簡単に注文できる上、発注してから受取るまでの時間大幅に短縮され、欲しい本が探しやすい、自宅まで届けてくれる、ネットを利用した書籍販売が伸びている。


本の検索と書評
日本書籍出版協会
タイトルや著者名、内容等から本を検索することができます。
国会図書館
最大級の書籍データベース、タイトルや著者名から本を検索することができます。

book.asahi
朝日新聞社紙面掲載の書評、コラム、ランキング、書籍検索等。

書評ホームページ
書評,レビュー,review,評判こそが、価値を創る。情報の価値は、その使用価値ではなくて、
その評判によってきまるからです。それ以外に価値を生み出す根拠はない。
そのレビューの仕組みががたがたになっています。既存の既成概念の単なる慣性の法則であったり、
既成の概念を単に裏返しで否定したにすぎないものであったり、クリエイティブには批評が必要であり、
その批評は未だに生まれていません。それを創るのは、個々の「読者」です。


ブック・レビュー・ガイド
読みたい本はここで探せ!書名、著者名、新聞・雑誌名、ジャンル等から検索。評判ランキング、「買ってでも読ませたい本」。

オンライン書店
セブンアンドワイ
ブックス

取り扱い書籍は約140万冊。配送は全国8,000店舗のセブンイレブン店頭受け取りか宅配便。
決済はクレジットカードとセブン-イレブン前払いと宅配代引き。宅配の場合は税込1,500円以上のご注文で送料無料になります。
1,500円以下配送料金は宅配便1冊290円,セブンイレブンの受取は無料。
Amazon
アメリカから日本に上陸した最大の本ネット販売サイト。配送料300円(1500円以上の注文は無料)。
本、DVD、CD、エレクトロニクス、家電、おもちゃ&ホビー、ホーム&キッチン、ゲーム、ソフトウェア、洋書ほか豊富な品ぞろえ。
ブックワン配送料は250円(7000円以上の注文は無料)、予約注文書籍が一冊でもあれば送料無料。

ジェイブック注文商品一括配送は320円、分割配送は1配送当たり280円。
ブックサービス配送料は380円、代金引換宅配便でも代引き手数量は不要。
紀伊國屋書店
300万件のデータベースが検索可能。配送料380円

本屋さん配送料は200円、自社ブランドカード会員とコンビニ受取は配送料無料。
本やタウン書店店頭の受取は無料。宅配便送料は取扱い大型書店によって異なる
スカイソフト配送料は250円(7000円以上の注文は無料)

楽天ブックス配送料は250円。
丸善
本のネット販売。洋書や専門書を中心にネット販売。
幻冬舎オンライン
出版社の幻冬舎は自社の全書籍を対象にネット販売をする。書店で入手しにくい希少本のはか、近く出版する新刊本の予約も受け付ける。
古本の買取サービス
イーブックオフ
中古書店チェーン、全国約570店、十万点五十万冊の中古本と中古音楽CDの販売買取サービス。

楽天フリマ
EasySeek(中古本)とサービスが統合されます。個人もお店も出品できるネット上最大のフリーマーケット 新品・中古・アウトレット・
掘り出しものがいっぱい。
ユーブック
サイト上の申込欄で所持本リストを記入。その後、同社が指定する宅配便を使い、本を送る。送料は原則会社負担。50冊から受け付け。
古本市場
テイツは関西・中国地方を中心に約60店。最新買取価額情報、店舗紹介など。
本の出版
万能書店
低価額の自費出版支援サイト。「万能Web出版」従来の1/10で自費出版できる。

電子図書館
青空文庫
昔の文豪たちの名作が大集合!著者権の切れた作品と、著者権者に「自由に読んでもらってOK」とされた1200以上の作品が
収められています。
京都大学電子図書館
電子化テキスト、樋口一葉小説集、博士論文論題一覧、貴重資料画像や富士川本、蔵経書院本等の特殊文庫目録等内研究成果 、
京大ホームページナビ 展示会の歩み 京都大学蔵書 ...

東京工業大学電子図書館
理工学分野の情報資源データベース。図書館が収集した貴重書,研究成果,学位論文,紀要等の全文が電子化されており,WWW
版OPACから検索が可能です
筑波大学電子図書館
附属図書館が収集した貴重書、本学で生産された研究成果報告書、学位論文、紀要等の全文が閲覧できます。
これらの全文情報は蔵書検索(WWW版OPAC)から検索が可能です。また、さまざまな文献情報データベースやオンライン・ジャーナル、
学外サイトへのリンク集、図書館案内等も用意し、これらをハイパーリンクにより有機的に結合して提供します。
電子図書館サービスは、インターネットを介して、世界中から24時間利用が可能です。

辞書
Lycosディクショナリ
プログレッシブ英和中辞典、プログレッシブ和英中辞典、「大辞泉」収録語数:22万語、新語辞書、大日本百科全書を検索。
biglobe辞書検索
英和辞典(三省堂『デイリーコンサイス英和辞典』収録の7万7千語、
和英辞典(三省堂『デイリーコンサイス和英辞典』収録の7万語を検索)、
国語辞典(三省堂『大辞林 第二版』 収録の23万3千語を検索)。

アスキー デジタル用語辞典
アスキー デジタル用語辞典は、基礎的なパソコン用語から難しい専門用語まで、
コンピュータに関連する用語を幅広く収録したインターネット上の用語辞典です。
英辞郎
プロの翻訳者・通訳者で構成されるEDP制作の英和/和英辞書。単語と略語が検索できます。

専門語辞書
ノヴァの翻訳ソフト用に、オプションで販売している「全分野専門語辞書パック」と、「エンターテイメント辞書」を、リアルタイムで参照いただけるサービスです。

文例集
直子の代筆
ビジネスや個人文書など作成する分野を選択すると例文を作ってくれます。ユーザー登録すると、
個人情報が文章にも反映されます。
文例集
社外文書、社内文書、一般の手紙など。豊富な文例集から自分にぴったりの例文が作成されます。
便せんを前にしてじっと考え込む必要はありません。
ビジネス文書の森
ビジネス文書や人事・組織の事例集をダウンロードできる。教育、経営戦略、会計、
総務等の解決策や専門家の無料情報あり。

人事労務管理書式集
WORDで使える人事労務管理書式集 人事労務管理実務者のための総合情報コミュニティ「roumu.com」では、
WORDで使える人事労務管理書式集を提供。
テンプレートBANK
名刺、カード、ハガキ、システムファイル、封筒、宛名タック、ラベル等印刷用の素材やテンプレートが
無料でダウンロードできます。
文例110番
日本人にとって手紙や葉書は、日常を彩る必須アイテムですが、これがけっこう難しい。
そこでこの「オリジナル文例&素材集」では、季節や相手先との関係などを選択すると、
文例や書き方のポイントともに、イラストも表示されます。心のこもった文面づくりにどうぞお役立てください。
インターネットリソース
日本発信、翻訳のためのインターネットリソース。みやすい分類、辞書、用語集のリンク集です。
翻訳

翻訳体験
富士通が提供するサービス及び製品をご紹介するページです。
ブラザー翻訳体験
TransLand/EJ・JE Ver.4.0. 翻訳体験デモ. ここでは、実際の製品と同じように翻訳が
体験できます (但し、専門用語辞書とユーザー辞書は使用できません)。。

J2ME and CDT

This infomation is about J2ME and CDT development by Eclipse.
Before Eclipse_plugins are installed, These tools are needed.

J2ME Dev Tool:
wireless_toolkit 2.5.2

CDT Dev Tool:
MinGW-5.1.3
MSYS-1.0.10
gdb-6.3-2

Others Infomation:
もっと楽しむ!!ニンテンドーDS
ipmsg home
nakka home
ed2k://|file|[Chinese.Writer.V9].CWV9.iso|543602688|6e93fb3724a0ea7d50f14bc6d7b419b4|h=EGSHYMSXYAHQOWY7SC5VBYZEJ2N7O6M6|/

Create JNI_DLL by CL

cl /c /GX -IC:\j2sdk1.4.2_11\include -IC:\j2sdk1.4.2_11\include/win32 yourname.cpp
link /OUT:yourname.dll /NOLOGO /DLL yourname.obj kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib LIBCMT.lib /NODEFAULTLIB:LIBC.LIB

Shell_Perl_Introduce

Shell Introduce 1
unixC Introduce
Unix Introduce

Perl Introduce 1
Perl Introduce 2

Date And Cal in Shell:
# 詳細日付の取得1
VeryDetailDate=`date +%Y%m%d%k%M%S%N`;
sed s/%VERYDETAILDATE%/$VeryDetailDate/ $filename > $fullDir/tmpFile;
sleep 0.2

# 詳細日付の取得1
detailDate=`date +%Y%m%d%H%M%S`;
sed s/%DETAILDATE%/$detailDate/ $fullDir/tmpFile |tee $fullDir/tmpFile 1>/dev/null;
sleep 1

# 日付と文字列の組合せ
result="LT"`date +%H`"-"`date +%M%S`;
sed s/%RESULT%/$result/ $fullDir/tmpFile |tee $fullDir/tmpFile 1>/dev/null;

# 日付の計算例
daysAgao=15;
calDate=`date --date ${daysAgao}' day 5 minutes ago' +%Y%m%d%k%M%S`;
sed s/%CALDATE%/$calDate/ $fullDir/tmpFile |tee $fullDir/tmpFile 1>/dev/null;

# 整数計算例
count=`expr $count + 1`;
# 浮動小数点計算例
dblVal=`echo "$vals + $loop" | bc -l`;
sed s/%$count%/$dblVal/ $fullDir/tmpFile > ${fullDir/tmpFile}.1;
mv ${fullDir/tmpFile}.1 $fullDir/tmpFile;

OpenOfficeIntroduce

--install openOffice (2.3~)
--install openOffice_SDK (2.3~ no-space-dir)
--install openOffice_eclipse_plugin
      Help > Software updates > Find and Install:
      http://cedric.bosdonnat.free.fr/ooeclipseintegration
--install openOffice_SDK to eclipse
      window > preferences > openoffice.orgPlugin > sdkConfiguration

OOmacro by JavaEclipseNew
OOmacro by JavaEclipseOld

mySort

void my_sort(long left, long right)
{
struct KEY_INFO w_key;
long   w_last;
long   w_cnt;

  if ( left < right ) {
    w_key = g_key[left];
    g_key[left] = g_key[(left+right)/2L];
    g_key[(left+right)/2L] = w_key;
    w_last = left;
    for ( w_cnt = left + 1L; w_cnt <= right; w_cnt++ ) {
      if (memcmp(g_key[w_cnt].key, g_key[left].key,
           sizeof(g_key[0].key)) < 0L ) {
        w_key = g_key[++w_last];
        g_key[w_last] = g_key[w_cnt];
        g_key[w_cnt] = w_key;
      }
    }
    w_key = g_key[left];
    g_key[left] = g_key[w_last];
    g_key[w_last] = w_key;
    quick_sort( left, w_last-1L );
    quick_sort( w_last+1, right );
  }
}

signal02

ここから転載

QNX4でハードウェアアクセスを行うドライバープログラムを作成する際に必要となるポートアクセスや割り込みハンドリングなど各種Tipsについて説明します。

  • リンクオプション
  • プロセス間通信
  • ポートアクセス
  • 物理メモリーアクセス

  • 割り込みハンドリング
  • 共有メモリーアクセス
  • PCIコンフィギュレーション情報アクセス

    コード例ではエラーについては扱いませんのが実際のプログラムでは必ずエラーチェックを入れてください。

    QNX4のオンラインマニュアルには関連する関数やコード例がいろいろあります。必ず目を通してください。



    リンクオプション



    ポートアクセスや割り込みの禁止/解除を行うコードを作成する場合は、プログラムをリンクする時にプリビレッジオプションが必要となります。また、実行する際にはrootユーザで行う必要があります。

    ccオプション -T



    test.cをコンパイルしてtestにリンクする例

    cc -o test -T 1 test.c

    実行ユーザ



    root





    プロセス間通信



    ドライバーはプロセスとして実現されるため、そのコントロールとしてプロセス同士のやり取りが必要となります。プロセス同士のやりとりを実現するプロセス間通信には次の3つがあります。


  • メッセージ通信 (Send()/Receive()/Reply())
  • シグナル
  • 共有メモリー


    メッセージ通信はQNX4の基本のプロセス間通信となります。2つのプロセス間のタイミングでデータの引き渡しが簡単に行えます。

    シグナルは他のプロセスのハンドラーを起動するだけで十分な場合に使用します。この動作はソフトウェア的な割り込みとも言えます。

    共有メモリーはプロセスの間で多量のデータを引き渡せますが、2つのプロセス間の同期を扱いませんので注意が必要となります。利点は複数のプロセスで共有が可能な点です。利用方法については後述します。

    プロセス間通信の相手を知るためにQNX4が持つname"名前"機能を使用します。QNX4の場合、他のネットワークノード上のプロセスとのやり取りが必要な場合、名前を参照する時に自動的に通信用のバーチャルサーキットプロセスが生成されます。













    機能関数名ヘッダー
    メッセージ送信Send()sys/kernel.h
    メッセージ受信Receive()sys/kernel.h
    メッセージ返信Reply()sys/kernel.h
    名前登録qnx_name_attach()sys/name.h
    名前削除qnx_name_detach()sys/name.h
    名前参照qnx_name_locate()sys/name.h
    シグナル関数登録/削除signal()sinal.h
    シグナル発生kill()signal.h


    コード例



    メッセージ通信(送信側)

    #include <sys/name.h>
    #include <sys/kernel.h>

    pid_t pid;
    char send_buf[SEND_BUF_SIZE], reply_buf[REPLY_BUF_SIZE];

    /* 名前による送信先プロセスIDの検索(通信前に1回だけ行う) */
    pid = qnx_name_locate( 0, "/Receiver", 0, NULL );

    ...
    /* メッセージ送信 (返信データはreply_bufにセットされている) */
    Send( pid, send_buf, reply_buf, sizeof(send_buf), sizeof(reply_buf) );

    メッセージ通信(受信側)

    #include <sys/name.h>
    #include <sys/kernel.h>

    int name_id;
    pid_t pid;
    char receive_buf[SEND_BUF_SIZE], reply_buf[REPLY_BUF_SIZE];

    /* 名前の登録 (初期化時) */
    name_id = qnx_name_attach( 0, "/Receiver" );

    ...

    /* メッセージ受信 */
    pid = Receive( 0, receive_buf, sizeof(receive_buf) );

    /* メッセージ返信 (返信データをreply_bufにセット) */
    Reply( pid, reply_buf, sizeof(reply_buf) );

    ...

    /* 名前の削除 (終了時) */
    qnx_detach_attach( name_id );


    シグナル(送信側)


    #include <singal.h>

    /* シグナルの発生 */
    kill( ReceiveProcessId, SIGUSR1 );


    シグナル(受信側)


    #include <singal.h>

    /* シグナルの登録 */
    signal( SIGUSR1, signal_handler );
    ...

    void signal_handler( int sig_no )
    {
      /* シグナル受信時処理 */
    }


    (注意1) 通信相手を特定することも可能です。その場合はReceive()関数呼び出し時にプロセスIDを指定します。

    (注意2) ユーザに自由に解放されているシグナルはSIGUSR1/SIGUSR2の2つとなります。





    ポートアクセス




    ポートアクセス関数(inp/inpw/inpd/outp/outpw/outpd)を呼び出します。










    機能関数名ヘッダー
    1バイト入力inp()conio.h
    1ワード(2バイト)入力inpw()conio.h
    1ロングワード(4バイト)入力inpd()conio.h
    1バイト出力outp()conio.h
    1ワード(2バイト)出力outpw()conio.h
    1ロングワード(4バイト)出力outpd()conio.h


    コード例



    アドレス0x378のデータを入力してbit0をセットし出力する。


    #include <conio.h>

    unsigned int data;

    data = inp(0x378);
    outp(0x378,data | 0x01);






    物理メモリーアクセス




    x86の持つセグメント管理機能を用いてアクセスセグメントを作成し物理メモリーをアクセスします。





    機能関数名ヘッダー
    物理メモリーアクセスセグメント作成qnx_segment_overlay()sys/seginfo.h
    アクセスポインター作成MK_FP()i86.h


    コード例



    0xb8000から32kバイトをクリアーする。


    #include <sys/seginfo.h>
    #include <i86.h>

    unsigned mem_seg;
    char __far *p;

    mem_seg = qnx_segment_overlay( 0xb8000, 32768 );
    p = MK_FP( mem_seg, 0x0 );
    {
    int off;
    for ( off=0; off<32768; ++off ) *p++ = 0x0;
    }


    (注1) 32bit版プログラムでは他のposix環境との互換性でshm_open()/mmap()を使用することがマニュアルでは薦められていますが、セグメントを利用した方がシンプルなコードとなります。

    (注2) qnx_segment_overlay()で作成されたセグメントは開放されません。何回もqnx_segment_overlay()を呼び出さないようにプログラミングする必要があります。





    割り込みハンドリング



    CPUの割り込みを禁止/解除のコードをプログラムに埋め込むことが可能です。この場合は割り込み禁止区間を短くして割り込み応答時間が伸びないようにすることが必要です。

    割り込みが受け付けられた時に飛んでくるハンドラーは単純に関数を用いて登録します。また解除を可能です。









    機能関数名ヘッダー
    割り込み禁止_disable()i86.h
    割り込み解除_enable()i86.h
    割り込みハンドラー登録qnx_hint_attach()sys/irqinfo.h
    割り込みハンドラー解除qnx_hint_detach()sys/irqinfo.h
    割り込みマスク設定qnx_hint_mask()sys/irqinfo.h


    コード例



    irq5の割り込みを受けるハンドラーを登録/削除します。


    #include <sys/types.h>
    #include <sys/irqinfo.h>
    #include <i86.h>

    int counter = 0;

    #pragma off(check_stack)
    pid_t irq_handler()
    {
       /* 割り込み処理 */
       ++counter;
    }
    #pragma off(check_stack)

    ...
    irqNo = 5;

    /* 割り込みハンドラー登録 */
    id = qnx_hint_attach( irqNo, &handler, FP_SEG(&counter)

    /* 割り込みマスク解除*/
    qnx_hint_mask( irqNo, 1 );

    /* 割り込みハンドラー解除 */
    qnx_hint_detach( id );
    ...

    (注意1) 割り込みハンドラーにはスタックチェックコードが含まれないようにする必要があります。もしあるとスタックチェックコードの部分でアボートしてしまいます。#pragamaディレクティブを使用するか、ccでコンパイルする時に"-Wc,-s"オプションを追加します。

    (注意2) 割り込み番号を-1にした場合、50msec間隔のタイミング割り込みとして扱われます。物理割り込みと違いシステムで複数のタイミング割り込みを利用することが可能です。おもにタイムアウト等の時間制御に用います。






    共有メモリーアクセス




    x86メモリー管理関数(qnx_segment_XXXX())を利用して共有メモリーを実現することが可能です。x86の持つセグメント管理機能を物理メモリーアクセス同様、用いています。







    機能関数名ヘッダー
    メモリーセグメント作成qnx_segment_alloc()sys/seginfo.h
    メモリーセグメント開放qnx_segment_free()sys/seginfo.h
    メモリーセグメント受け渡し条件設定qnx_segment_arm()sys/seginfo.h
    メモリーセグメントインポートqnx_segment_get()sys/seginfo.h


    共有メモリーを生成し、引き渡し、インポート、アクセスする場合、上記の3つの関数を使用します。

    共有メモリーの生成、引き渡し

  • 共有メモリー用のメモリーセグメントを作成する。 qnx_segment_alloc()
  • 他のプロセスで利用可能なようにセグメントの条件を設定する。 qnx_segment_arm()

  • プロセス間通信やプログラム起動パラメータ等を通して共有メモリーのセグメント情報を送る。


    共有メモリーのインポート、アクセス


  • 送られてきた共有メモリーのセグメントをインポートする。 qnx_segment_get()
  • アクセス用ポイントを作成して共有メモリー領域をアクセスする。

    コード例



    プロセス1 共有メモリーの生成、引き渡し


    #include <sys/seginfo.h>
    #include <i86.h>

    unsigned mem_seg;
    char __far *p;

    /* 生成 */
    mem_seg = qnx_segment_alloc( MemorySize );

    /* 他のプロセスで使用可能にする */
    qnx_segment_arm( -1, mem_seg, 0 );  /* -1はすべてのプロセスを示す */

    ...

    /* 解放 */
    qnx_segment_free( mem_seg );


    プロセス2 共有メモリーのインポート、アクセス


    #include <sys/seginfo.h>
    #include <i86.h>

    pid_t cre_pid;
    unsigned common_seg, mem_seg;
    char __far *p;

    ...
    /* cre_pid = 共有メモリーを生成したプロセスのpid */
    /* common_seg = 生成した共有メモリーのsegment値 */
    /* 2つの値はプロセス間通信か起動パラメータを通して通知します */

    mem_seg = qnx_segment_get( cre_pid, common_seg, 0 );
    p = MK_FP( mem_seg, 0x0 );

    *p = 0x00;

    (注1) 作成し共有メモリーセグメントはプログラムの終了時に解放します。 qnx_segemnt_free()

    (注2) 共有メモリーのため共有しているプロセスが全部終了した時点で解放する必要があります。

    (注3) サンプルプログラムではすべてのプロセスで使用可能にしていますが特定のプロセスにだけ共有メモリーを使用可能にすることができます。各関数の資料を確認してください。





    PCIコンフィギュレーション情報アクセス



    PCI BIOSインタフェース関数(_CA_PCI_XXXX())が用意されています。

    PCI BIOSインタフェース関数を利用してPCIデバイスに設定されているI/Oポートアドレス設定情報、メモリーアドレス設定、割り込み設定情報を読み出し、前出のポートアクセス物理メモリーアクセス割り込みハンドリングで示した方法でPCIバス上のハードウェアをアクセスします。







    機能関数名ヘッダー
    PCI BIOSチェック_CA_PCI_BIOS_Present()sys/pci.h
    PCIデバイス検索_CA_PCI_Find_Device()sys/pci.h
    PCIコンフィギュレーションデータリード_CA_PCI_Find_Read_Config_Byte/Word/DWord()sys/pci.h


    コード例



    DEC21041チップのポート設定情報、メモリー設定情報、割り込み設定情報を読み出します。


    #include <sys/pci.h>

    unsigned vendor_id, device_id;
    int flg;
    int irq_no;
    unsigned int port_adr, mem_adr;
    unsigned bus_num, devfunc_num;
    unsigned index;

    /* PCI BIOS チェック */
    {
      unsigned lastbus, version, hardware;
      flg = _CA_PCI_BIOS_Present( &lastbus, &version, &hardware );
      if ( flg != PCI_SUCCESS ) {
        /* PCI BIOS 存在せず */
      }
    }
    /* PCIデバイス検索 */
    {
      vendor_id = 0x1011;     /* Digital */
      device_id = 0x14;      /* 21041 */
      index = 0;
      flg = _CA_PCI_Find_Device( device_id, vendor_id, index, &bus_num, &devfunc_num );
      if ( flg != PCI_SUCCESS ) {
        /* PCIデバイス存在せず */
      }
    }
    /* PCIデバイスコンフィギュレーション情報リード */
    /* 割り込み設定 */
    {
      unsigned short ds;
      _CA_PCI_Read_Config_Word( bus_num, devfunc_num, 0x3c, 1, (char *)&ds )
      irq_no = (int)ds;
    }
    /* ポート設定情報 */
    {
      int off;
      unsigned long dl;
      for ( off=0; off<5; ++off ) {
        _CA_PCI_Read_Config_DWord( bus_num, devfunc_num, 0x10+off*4, 1, (char *)&dl );
        if ( dl == 0x0 || dl == 0xffffffff ) continue;
        if ( (dl & 0x03) = 0x1 ) break;  /* ポートアドレス情報 */
      }
      port_adr = (unsigned int)(dl & 0xfffffffc);
    }
    /* メモリー設定情報 */
    {
      int off;
      unsigned long dl;
      for ( off=0; off<5; ++off ) {
        _CA_PCI_Read_Config_DWord( bus_num, devfunc_num, 0x10+off*4, 1, (char *)&dl );
        if ( dl == 0x0 || dl == 0xffffffff ) continue;
        if ( (dl & 0x3) = 0x0 ) break;  /* メモリーアドレス情報 */
      }
      mem_adr = (unsigned int)(dl & 0xfffffffc);
    }

    ...

    (注意1) 割り込み/ポート/メモリーの未定義を示す値はPCI BIOSによって微妙に違います。ご使用のマシンで設定される値を確認してください。

    (注意2) PCIバスに接続されているPCIデバイスについての情報はQNX4に付属しているshow_pciコマンドで確認できます。

    (注意3) 同じデバイスがPCIバス時に複数存在することもあります。この場合はindexによって区別します。

    # show_pci

    PCI version   = 2.10

    Class      = Mass Storage (IDE)
    Vendor ID    = 8086h, INTEL CORPORATION
    Device ID    = 7010h,
    PCI index    = 0h
        IO @ f000h
    PCI Int Pin   = NC
    Interrupt line = 0

    Class      = Network (Ethernet)
    Vendor ID    = 1011h, Digital
    Device ID    = 14h, DC21041
    PCI index    = 0h
    IO @ 6100h MEM @ e0000000h
    PCI Int Pin   = INT A
    Interrupt line = 11

  • signal01

    ■[UNIX] signal関数の使用例

    #include

    #include "ourhdr.h"


    /* シグナルハンドラの定義 */
    static void
    sig_usr(int signo)
    {
      if (signo == SIGUSR1) {
        printf("received SIGUSER1\n");
      } else if (signo == SIGUSR2) {
        printf("received SIGUSER2\n");
      } else {
        err_dump("received signal %d\n", signo);
      }

      return;
    }

    int
    main(void)
    {
      /* シグナルハンドラを設定する。signal()は戻り値として今までのシグナルハンド
       * ラもしくはSIG_ERRを返す。
       */
      if (signal(SIGUSR1, sig_usr) == SIG_ERR) {
        err_sys("cat't catch SIGUSER1");
      }
      if (signal(SIGUSR2, sig_usr) == SIG_ERR) {
        err_sys("cat't catch SIGUSER2");
      }

      for (;;) {
        pause();
      }
    }

    =========================

    $ ./a.out &
    [1] 26081
    $ kill -USR1 26081
    $ received SIGUSER1
    $ kill -USR2 26081
    $ received SIGUSER2
    $ kill 26081
    [1]+ 終了しました   ./a.out

    WinBox_Ctrl

    //使最小化按无效
    void CMainFrame::OnDisableMinbox()
    {
      //获得窗口风格
      LONG style = ::GetWindowLong(m_hWnd,GWL_STYLE);

      //设置新的风格
      style &= ~(WS_MINIMIZEBOX);
      ::SetWindowLong(m_hWnd,GWL_STYLE,style);

      //重化窗口边框
      CRect rc;
      GetWindowRect(&rc);
      ::SetWindowPos(m_hWnd,HWND_NOTOPMOST,rc.left,rc.top,rc.Width(),rc.Height(),SWP_DRAWFRAME);
    }

    //使最大化按钮无效
    void CMainFrame::OnDisableMaxbox()
    {
      //获得窗口风格
      LONG style = ::GetWindowLong(m_hWnd,GWL_STYLE);

      //设置新的风格
      style &= ~(WS_MAXIMIZEBOX);
      ::SetWindowLong(m_hWnd,GWL_STYLE,style);

      //重化窗口边框
      CRect rc;
      GetWindowRect(&rc);
      ::SetWindowPos(m_hWnd,HWND_NOTOPMOST,rc.left,rc.top,rc.Width(),rc.Height(),SWP_DRAWFRAME);
    }

    //使关闭按钮无效
    void CMainFrame::OnDisableClose()
    {
      //获得系统菜单
      CMenu *pMenu = GetSystemMenu(FALSE);

      //获得关闭按钮的ID
      int x = pMenu->GetMenuItemCount();
      UINT pID=pMenu->GetMenuItemID(x-1);

      //使关闭按钮无效
      pMenu->EnableMenuItem(pID, MF_DISABLED);
    }


    //使最小化按钮有效
    void CMainFrame::OnAbleMinbox()
    {
      //获得窗口风格
      LONG style = ::GetWindowLong(m_hWnd,GWL_STYLE);

      //设置新的风格
      style |= WS_MINIMIZEBOX;
      ::SetWindowLong(m_hWnd,GWL_STYLE,style);
      //重化窗口边框
      CRect rc;
      GetWindowRect(&rc);
      ::SetWindowPos(m_hWnd,HWND_NOTOPMOST,rc.left,rc.top,rc.Width(),rc.Height(),SWP_DRAWFRAME);  
    }

    //使最大化按钮有效
    void CMainFrame::OnAbleMaxbox()
    {
      //获得窗口风格
      LONG style = ::GetWindowLong(m_hWnd,GWL_STYLE);

      //设置新的风格
      style |= WS_MAXIMIZEBOX;
      ::SetWindowLong(m_hWnd,GWL_STYLE,style);

      //重化窗口边框
      CRect rc;
      GetWindowRect(&rc);
      ::SetWindowPos(m_hWnd,HWND_NOTOPMOST,rc.left,rc.top,rc.Width(),rc.Height(),SWP_DRAWFRAME);
    }

    //使关闭按钮有效
    void CMainFrame::OnAbleClose()
    {
      //获得系统菜单
      CMenu *pMenu=GetSystemMenu(FALSE);

      //获得关闭按钮的ID
      int x=pMenu->GetMenuItemCount();
      UINT pID=pMenu->GetMenuItemID(x-1);

      //使关闭按钮有效
      pMenu->EnableMenuItem(pID, MF_ENABLED);
    }

    //使对话框的关闭按钮无效:
      在对话框的OnInitDialog中调用如下代码
      CMenu *mnu=this->GetSystemMenu(FALSE);
      mnu->ModifyMenu(SC_CLOSE,MF_BYCOMMAND|MF_GRAYED);
      // OR
      mnu->EnableMenuItem(SC_CLOSE,MF_BYCOMMAND|MF_GRAYED);

    ln命令使用

    #!/bin/sh

    BAS=.../obj
    BIN=$BAS/run/bin/current
    LIB=$BAS/run/lib/current

    rm -f $BIN/*
    rm -f $LIB/*
    rm -f $BAS/run.tar

    cd $BAS
    cp */*.so $LIB

    cp .../ProcA/Proc1 $BIN
    cp .../ProcB/Proc2 $BIN
    cp .../ProcC/Proc3 $BIN
    cp .../ProcD/Proc4 $BIN

    tar -cvf run.tar run

    ls -l $LIB $BIN
    date
    ls -l *.tar
    pwd


    tar -xvf run.tar


    // binの変更
    cd bin
    ll --->元の指向のBackup : current -> 元フォルダ/
    rm current --->シンボリックリンクの削除
    ln -s .../run/bin/current current --->新しい指向の作成
    // libの変更
    cd ..
    cd lib
    ll --->元の指向のBackup : current -> 元フォルダ/
    rm current --->シンボリックリンクの削除
    ln -s .../run/lib/current current --->新しい指向の作成

    引越し手続き

    引越先の探し(UR、JKK、不動産など)

    引越先との契約

    現住所への通知

    粗大ゴミの処分(市役所に申請が必要)

    市役所の手続き(健康保険、住民税など)

    引越専門(引越センター)への連絡

    引越センターの見積

    引越センターとの契約

    歯医者への通知(有れば)

    図書館への通知(有れば)

    NHKへの転居届け

    自分会社への通知、届けなど

    郵便局への転居届け

    水道局への通知

    電力会社への通知

    ガス会社への通知

    WEB契約の引越又は解約

    郵便ボックスの鍵の外し

    荷物の整理

    各種類カードへの転居届け

    各銀行への転居届け

    携帯電話への転居届け

    新住所への鍵取り電話(一週間前)

    新住所の水道局への電話(一週間前)

    新住所のガス局への電話(一週間前)

    新住所の電力局への電話(必要有れば)

    市役所(新住所属する)への登録

    WIN_C++_Vector

    // -------------------------------------------------------
    // windows c++ vector define start
    #include <vector>

    typedef struct{
      int  id;
      char* name;
    } MY_DATA;

    typedef std::vector< MY_DATA > MY_VECTOR;

    MY_VECTOR my_vector;
    // windows c++ vector define end
    // -------------------------------------------------------

    // -------------------------------------------------------
    // windows c++ add member to vector start
    char strName[NAME_MAX_SIZE];
    sprintf( strName, "%s", "your name message.");

    MY_DATA item;
    item.name = new char[NAME_MAX_SIZE];
    ::memset( item.name, NULL, NAME_MAX_SIZE );
    item.id = 100;
    lstrcpy( item.name, strName );
    my_vector.push_back( item );
    // windows c++ add member to vector end
    // -------------------------------------------------------

    // -------------------------------------------------------
    // windows c++ delete member from vector start
    MY_VECTOR::iterator pos = my_vector.begin();
    for ( ; pos != my_vector.end() ; ++pos ) {
      if ( 100 == (*pos).id ) {
        free( (*pos).name );
        (*pos).name = NULL ;
        my_vector.erase( pos );
        break;
      }
    }
    // windows c++ delete member from vector end
    // -------------------------------------------------------

    // -------------------------------------------------------
    // windows c++ search member from vector start
    char* getName = new char[ NAME_MAX_SIZE ];
    ::memset( getName, NULL, NAME_MAX_SIZE );
    MY_VECTOR::iterator pos = my_vector.begin();
    for ( ; pos != my_vector.end() ; ++pos ) {
      if ( 100 == (*pos).id ) {
        lstrcpy( getName, (*pos).name );
        break;
      }
    }
    // add your code here.
    // -------------------
    // add your code here.
    free( getName );
    getName = NULL;
    // windows c++ search member from vector end
    // -------------------------------------------------------

    cl /c /GX -IC:\j2sdk1.4.2_11\include -IC:\j2sdk1.4.2_11\include/win32 XXX.cpp
    link /OUT:XXX.dll /NOLOGO /DLL XXX.obj kernel32.lib user32.lib gdi32.lib winspool.lib
    comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib
    odbccp32.lib LIBCMT.lib /NODEFAULTLIB:LIBC.LIB

    激安専門店

    埼玉 アウトレットモール

    アウトレット通販

    アウトレット家具

    アウトレット家具通販1
    アウトレット家具通販2
    アウトレット家具通販3
    アウトレット家具通販4

    ドン・キ・ホーテHome

    Joshin通販
    Joshin通販・電気1
    Joshin通販・電気2

    東急ハンズ通販

    KOJIMA電気

    ケーズデンキ

    ニトリ 家具日常品

    サティ@マイカル生活

    イトーヨーカドー
    イトーヨーカドーnet

    マルエツ 食料品

    マルエツネットスーパー

    ネットスーパー紀伊国屋

    ライフ 食料品

    DB-BAK

    Oracleのシステムに携わっており、Export やImport を随分繰り返し行っています。
    データのExport を行う場合、普段はコマンドプロンプトを開いて
    exp USER/PASS@SID などと打ち込んで後は指示に従っていたのですが、
    すっかり面倒くさくなってしまい、まとめて実行するようにしました。

    exp USER/PASS@SID file=C:\FILE.dmp owner=USER
    exp USER/PASS@SID file=C:\FILE.dmp log=EXPDATA.log owner=USER STATISTICS=none

    上記のようにコマンドプロンプト上に打ち込むことで.dmpファイルを取得できます。
    Importするときもこれまでは imp USER/PASS@SID とやってきたのですが、同様に

    imp USER/PASS@SID file=C:\FILE.dmp full=y ignore=y commit=y

    と入力すればあとはImportの完了を待つだけです。

    中国銀行

    日本にある主な中国銀行

    ・東京支店 〒107-0052 港区赤坂3-4-1   03-3505-8818
    ・大阪支店 〒550-0014 西区北堀江1-1-35 06-6538-1172
    ・大手町所 〒100-0004 千代田区大手町2-2-1新大手町びる1F 03-3277-0288
    ・横浜支店 〒231-0023 中山区下町89番地1 ファンケルビル1F 045-663-2288

    FreeSoft

    無料ソフト
    Seesaa
    窓の杜
    保健・医療関連

    OnSheet

    オンライン表計算アプリ「OnSheet」
     インフォテリアは7月25日、Webブラウザから利用できる表計算アプリケーション「OnSheet」を開発、ベータ版の公開を開始した。法人向けにSaaS形式で10月から提供する。料金は未定。また個人向けには無料でサービスを提供する。
     同社のデータ連係技術と香港のTeam and Conceptsが開発したブラウザベースの表計算技術を組み合わせた。Excelなどのデータを読み込むことができ、表計算のほか36種類のグラフ描画機能も備える。500種類以上の関数のほか、罫線を引くことも可能だ。シートは自動的に保存され、編集ごとに履歴も保存され、遡って過去のシートを閲覧することもできる。
     ワークシートやグラフには固定のURLが与えられ、パーマリンクとして利用できる。
     また表の一部やグラフなどをブログに貼り付けることもできる。iFrameまたはJavascriptを使い、表の変更は動的に反映される。
    *ITMediaから転載*

    JavaSpeechAPI

    Java Speech APIとは
    Java Speech API(以下、JSAPI)はJavaアプリケーションに音声認識や音声合成の機能を組み込むためのAPIである。Java Speech API自身はJCPがスタートする前に発表されたのでJSRは存在せず、Sun Microsystemsのサイト上でその仕様が公開されている。

    JSAPIを使用することで、Javaプログラムで音声の認識や合成を行うことができるようになる。たとえば、合成音声によってテキストを読み上げるというような処理の実装が容易に行える。

    JSAPIの代表的な実装としてはオープンソースで開発されているFreeTTSがある。商用の音声認識/合成ツールのような高度な機能は有していないが、JSAPIを試すには十分な機能を提供してくれる。

    企画とマネジャー

    ITMediaから転載

    「企画を出せ!」そのとき試されるマネジャーの能力
    「企画をつくる仕事」というのは本来楽しいもののはず。しかし、部下がピンとこないのはあなたに問題があるのかもしれない。マネジャーのあなたは、部下にハッパを掛けるだけではもちろんダメだ。マネジメント能力が求められているのだ。

     役員から命令を受け、画期的な商品企画や営業企画を策定することを任されたあなたは、部下たちに対して「とにかく企画を出せ」と命じた。部下たちは「頑張ります」とは言ったものの、本当は途方に暮れている。そして、あなたの知らないところで、こんなセリフが深夜の会社でささやかれる。

     「この間も突然企画を出せと言い出したけど、あのときの企画はどうなったんだろう」「企画力でマネジャーになったの? あの人」「数を出せば、何とかなるだろうなんて、付き合いきれないよ」

     そう、あなたが役員に対して感じたことを部下たちも感じてる。「また始まった。前回出した企画はどうなったんだ。何時間残業して企画をねったと思っているんだ」――。
     しかし、あなたはどうしようもない間違いをおかしたわけではない。部下がピンとこないのは、あなた自信が良い提案をしていないか、あなたのチームが企画による成功体験を持っていないからだ。

     「とにかく企画を出せ」という命令はマネジメントとは言えない。あなたは上役から何を求められ、企画を必要としているのか、理解して指示を出したかが問題だ。

    ダメ企画はすべてマネジャーの責任

     「企画が成功しない原因は、それをマネジメントする側にある」というのは、外資系企業で数々の商品企画を成功に導いてきた経営コンサルタントの長谷川和廣氏だ。

     昨年まで同氏がCEOを務めていた眼鏡レンズメーカーのニコン・エシロールはデフレの値引き合戦による赤字経営に苦しんでいた。同氏のCEO就任以降、見事、黒字に転換しているが、その原動力になったのは、新商品企画だった。世界的にも有名な同社の「バリラックス」ブランドで、高機能の遠近両用レンズの新製品を開発。当時の業界の常識では考えられない高めの価格設定で市場に投入したが、消費者に受け入れられた。商品は売れても利益が出ないという厳しい市場環境の中、勝ち組へと転換した。

     実はこの高機能の商品企画は、現場のR&D部門のシーズや、営業やマーケティング部門が読み取った消費者のニーズから発想したものではなかった。低価格路線を続けても利益は出ないため、付加価値のある高機能商品で利益率を高めたいという経営上の戦略が第一にあり、その目的に向かって商品企画を立案したのだ。

     「シーズやニーズは、企画のもとになる重要な要素です。だから、R&D部門はシーズにこだわって発想しようとするし、営業はニーズから発想を組み立てる。それ自体は間違っていませんが、目的を設定しないままシーズやニーズから企画を立てていくと、的外れな企画になりがちです」と長谷川氏。

     いくら画期的だったり、消費者心理を満たす企画であっても、目的を達成できなければ意味がない。部下に企画の提案を求めるときは、目的を明確にして企画の到達点をしっかり示すことが先決だ。

    チームの目指す方向を示せ

     シーズやニーズをもとにギリギリ知恵を絞っているマネジャー層は多いだろう。しかし、そもそもその発想が企画力を弱めているかもしれないのだ。

     企画はまず数を集めるということは大前提だが、目的を明確にしないまま「数を出せ」と言っても、部下たちはすぐに息切れしてしまう。マネジャーは一呼吸置いて、経営課題を再確認して、何が求められるかを明確にしたい。統括するチームのメンバーは、あなたの指差す方向を探しているものだ。

     マネジャーというのは、チームにとってオーケストラの指揮者のような存在だ。演奏者としての経歴は必要ない。バラバラの個人プレーではない、チームを基礎にした企画を実現するには、その方向を示さなければならない。マネジャーは、ハッとする企画をひねり出す部下を育てればいいのだ。



    ハッとする企画が備える7つの条件

    マネジャーが方向性を示さないまま集められた企画は、ハズレ企画の山になることが多い。「いい加減にしろ」と部下を怒鳴っても時すでに遅し。部下に企画を立てさせるときは、7つのポイントを押さえさせるようにしたい。

     方向性を示すことなく「出せ出せ」と部下に企画を要求するだけでは、マネジャーとは言えない。具体的にどう企画マネジメントしたらよいのだろうか。眼鏡レンズメーカーのニコン・エシロールの元CEOで、経営コンサルタントとして活動している長谷川和廣氏に企画マネジメントの心構えを聞いた。

    企画立案に必要な7つのプロセス

     部下に企画を立てさせるときは、7つのポイントを押さえさせるようにしたい。

    (1)背景・経緯
    (2)現状の課題
    (3)課題改善の可能性
    (4)目標
    (5)目標達成のためのアクションプラン
    (6)経済性
    (7)ほかに与える影響
     この7つは、企画を立案するときのプロセス順に並んでいる。まず情報収集して現状を把握、そこから課題と改善可能性を洗い出す。数ある改善可能性の中からターゲットを絞り、それを実現するための企画を立てる。さらに、それが会社にどんな利益をもたらし、どんなリスクをはらんでいるかを検証する――というわけだ。

     企画立案というと、このうちの(5)のアクションプランだけを考えようとする部下は多い。しかし、前後のプロセスが抜けた企画は、ただの思いつきにすぎない。商品企画にしろ、営業企画にしろ、7つの手順が順番にそろってこそ、はじめて企画として価値を持つことを部下に徹底させるべきだ。

     例えばヒットの可能性を秘めた商品企画があっても、自社がすでにその類似製品で圧倒的なシェアを取っているなら、新しい商品を投入する意味はない。にもかかわらず、そんな企画を上げてくるのは、(1)背景・経緯の把握と(2)現状の課題の洗い出しというプロセスが抜けているからだ。

     あるいはヒット確実な企画でも、多大な投資が必要で豊富な資金力がある企業にしかできないものもある。自社が中小企業なのにそういった企画を部下が提案してくるのは(6)経済性の検証ができていないからだ。

     では、部下にどうやってこの企画立案プロセスを徹底させるか。もっとも簡単なのは、このプロセスに応じたフォーマットで、企画書を作らせることだ。最初から(1)~(7)を書きこませるようなフォーマットを作っておけば、どこかが抜け落ちるようなことはない。

    会計知識がなければ企画はできない

     部下から上がってきた企画を、どのように判断すべきか。これも企画をマネジメントする上で大切なポイントだ。

     判断基準はさまざまだが、長谷川氏が特に重視していたと言うのは提案者の質だ。過去に企画の成功体験を持ち、その経験を自分の中でメソッドになるまで消化させている部下なら、ほぼゴーサインを出す。また、詳細を突っ込んで質問したときに即座に答えられる部下の企画も、承認を出しやすい。「次までに調べてきます」と答える部下は、企画に対する熱意が足りないと判断していい。単なる精神論ではなく、熱意が足りない部下が持ってくる企画は、たいてい生煮えで、どこかに落とし穴があるものなのだ。

     もちろん人だけではなく、企画の中身の精査も必要だ。そのためには、(1)~(7)の企画プロセスを、マネジャー自身も自然に使いこなせるレベルまで身につけておかなくてはいけない。当たり前だが、企画を精査するには、自身が優秀な企画マンであることが前提条件になる。

     中でもマネジャーが重視すべきは、(6)経済性の検証ではないだろうか。かうての日本企業では、企画の着眼点が良く、なおかつ前例があれば、案外簡単に承認が下りるケースが多かった。しかし、外国企業は企画事にP/L(損益計算書)の計画書の提出が必要であり、マネジャーは発想の目新しさよりも、その部分を何度もチェックする。企画を提案する側も、それを承認する側も、論点になるのはいつも「いつまでにいくら利益が出るのか」ということだ。

     いまや日本企業も変わりつつあり、厳密なP/Lまでいかずとも、利益という視点なくしては、企画の提出、承認が難しくなってきた。今後、その傾向がますます強くなれば、当然マネジャーにはより深い会計の知識が求められるようになるだろう。

     例えば部下の企画書では売上1億円の見込みになっているが、本当にそれが可能なのか。あるいは販促費500万円という計算になっているが、それだけで済むのか。別に会計のエキスパートになる必要はないが、少なくともそういった数字を関係部署や関係者に確認して精査できるコーディネート力が必須になるはずだ。

     突き詰めていけば、企画マネジメントは事業をマネジメントするのとあまり変わらない。企画となると、アイデアの質を問いたくなるマネジャーもいるかもしれないが、あくまでも「ビジネスとしていくら利益が出るのか」という視点が大切なのである。



    「良いダメ出し」が10倍知恵を絞る部下を育てる

    部下を褒めるのは難しいが、ダメ出しはもっと難しい――マネジャー自身が普段から企画についての明確な判断基準を持っているかどうかが、企画に対する部下のやる気を左右する。

     部下に企画を出すよう命じるときには「何を求めているか」方向性を明示しないと、後の企画会議が空中分解する。部下たちの間に「どうせ企画を出してもどうせボツなんだろう」という空気がまん延したらおしまいだ。

    「どうしてボツなのか」を説明できるか

     7つのチェックポイントを提案する眼鏡レンズメーカーのニコン・エシロールの元CEOで経営コンサルタントの長谷川和廣氏によれば、人材が豊富な大企業でもこのようなチェックポイントを精査せずに、企画提案をしているケースが多いという。

     長谷川氏は「できるだけ自由な発想をさせたいという狙いがあるのかもしれませんが、どの方向にいけばいいのかを示さずに提案をさせても、結局はハズレ企画の山になってしまいます。自由な発想というのは、ある程度制限がなければ出てきません。制限があると、それをクリアさえすれば、自分の提案が受け入れられるかもしれないというリアリティが生まれます」と語る。

     企画マネジメントにおいて最初に大切なのは方向を示すことだが、付け加えるなら「どうしてボツなのか」を説明することも同じぐらい重要だといえる。
    「緊急企画会議」で議題にされる企画

     そもそも、企画は2種類に大別できる。

     従来から取り組んでいる仕事の延長線上にあり、その仕事に対する改善案的な意味を持つ企画と、延長線上にはあるもが新機軸を含んだ企画の2種類である。

     前者は、部下からも求めている方向性を比較的理解されやすい。「この間、だれかこんなグチをいっていたな」というようなところから、具体的なプランが出てきたりする。

     しかし後者は異なる。「いつもの報告は聞いているけど、キミのところは毎回、同じことを繰り返しているだけじゃないか。もっと新しいアイデアはないのか」などと上役から突然言われるようなケースである。

     上役の言葉の裏には「当然、新しい取り組みぐらい普段から考えているんだろうね」というニュアンスが込められている。そこで、チームメンバーに緊急呼び出しを掛けるわけだ。

    慌てている上司を見透かす部下

     もちろん部下が1人か2人であろうと、マネジャー1人で「新機軸」をひねり出すよりは協力があった方がいい。

     長谷川氏は「たった1人で何か新しいことをしようというのは、土台無理なことです。本人がどんなにすばらしいアイデアマンでも、複数の人の協力を仰ぎながら企画を練るべきです」と語る。

     ここで、普段からのマネジメント力が問われてくる。

     緊急企画会議を招集して、メンバーに自分が言われたことを告げる。しかしそれだけでは漠然としているので、やおら雑談モードで場を和らげながら「自由闊達な議論」を展開しようとする。しかし、メンバーはマネジャーの置かれた状況を瞬時に把握している場合が多い。

     「また、だれかに言われて慌てているな」という具合である。

     そこから、何とかメンバーが知恵を絞ってくれるかどうか。これには、普段からのマネジメント力、もっと言えば「ダメ出し力」ともいうべき力をマネジャーが発揮していたかどうかに掛かる。

    日常のダメ出しが熱い部下を生む

     「良い企画が部下からどんどん出てくることはめったにありません。特に新機軸が求められるような企画の場合には、なかなか出てこないはずです。当然メンバーが必死になって知恵を絞る必要があります。そこまでの意欲を引き出せるかどうかは、日常の中で『ダメ出し』がしっかりできているかに掛かっています」 (長谷川氏)

     7つのチェックポイントなどを活用して、マネジャー自身が企画に対し明確な基準を持って判断しているかどうかなのだ。メンバーから、ぶれのない判断をしていると評価されていれば、彼らが知恵を絞るモチベーションも高まる。

     あいまいな判断基準では、メンバーの企画に対する情熱もなくなる。企画マンとして将来独立できるぐらいの力量を持ったメンバーがそろっていれば話は別だが、そうでなければ、ダメ出しには最も神経を使うべきだ。

     「なぜ、その企画がダメなのかを7つのポイントで判断すると、企画を出した方も不満はたまりにくい。このポイントは(1)~(7)まで順番にチェックしていくことです。背景・経緯という最初の段階でつまずいているのか、最後の段階で考えが甘いのか、説明もしやすいはずです」(長谷川氏)

     褒めることも難しいが、ダメ出しはもっと難しい。しかし、これを意識して普段からマネジメントしていると、あなたが率いるチームに粘り強い積極性が生まれてくるはずだ。

    七つ奇跡_新

    ペルーのインカ帝国の遺跡「マチュピチュ」
    ぺトラ遺跡
    リオのキリスト像
    中国の「万里の長城」
    イタリアの古代競技場「コロッセオ」
    マヤ遺跡
    タージマハル

    EngNews

    BBCHome
    VOAHome
    VOANews
    EngChina
    EngJapan
    success-engjp

    MG4J

    MG4J (Managing Gigabytes for Java) is a free full-text search engine for large document collections written in Java. As a by-product, it offers several general-purpose optimised classes, including fast & compact mutable strings, bit-level I/O, (possibly signed) minimal perfect hashing for very large strings collections, etc.

    With release 1.1, MG4J becomes a highly customisable, high-performance, full-fledged search engine providing state-of-the-art features (such as BM25 scoring) and new research algorithms. Release 2.0 significantly improved performance and introduced several new features.

    The main points of MG4J are:

    * Powerful indexing. Support for document collections and factories makes it possible to analyse, index and query consistently large document collections, providing easy-to-understand snippets that highlight relevant passages in the retrieved documents.
    * Efficiency. We do not provide meaningless data such as "we index x GiB per second" (with which configuration? which language? which data source?)—we invite you to try it. MG4J can index without effort the TREC GOV2 collection (document factories are provided to this purpose) and scales to hundreds of millions of documents.
    * Multi-index interval semantics. When you submit a query, MG4J returns, for each index, a list of intervals satisfying the query. This provides the base for several high-precision scorers and for very efficient implementation of sophisticated operators. The intervals are built in linear time using new research algorithms.
    * Expressive operators. MG4J goes far beyond the bag-of-words model, providing efficient implementation of phrase queries, proximity restrictions, ordered conjunction, and combined multiple-index queries. Each operator is represented internally by an abstract object, so you can easily plug in your favourite syntax.
    * Virtual fields. MG4J supports virtual fields—fields containing text for a different, virtual document; the typical example is anchor text, which must be attributed to the target document.
    * Flexibility. You can build much smaller indices by dropping term positions, or even term counts. It's up to you. Several different types of codes can be chosen to balance efficiency and index size. Documents coming from a collection can be renumbered (e.g., to match a static rank or experiment with indexing techniques).
    * Openness. The document collection/factory interfaces provide an easy way to present your own data representation to MG4J, making it a breeze to set up a web-based search engine accessing directly your data. Every element along the path of query resolution (parsers, document-iterator builders, query engines, etc.) can be substituted with your own versions.
    * Distributed processing. Indices can be built for a collection split in several parts, and combined later. Combination of indices allows non-contiguous indices and even the same document can be split across different collections (e.g., when indexing anchor text).
    * Multithreading. Indices can be queried and scored concurrently.
    * Clustering. Indices can be clustered both lexically and documentally (possibly after a partitioning). The clustering system is completely open, and user-defined strategies decide how to combine documents from different sources. This architecture makes it possible, for instance, to load in RAM the part of an index that contains terms appearing more frequently in user queries.

    The starting point for understanding MG4J is a look at the tutorial, which explains how to index a sample collection and query the newly constructed index from the command line or using a browser. Then, the Javadoc class documentation can provide more insights.

    自-他動詞

    『コラム』統計
    homepage3.nifty.com/jgrammar
    homepage3.nifty.com/jgrammar/漢字

    ①、词干是a+ru的都是自动词,词干是e+ru的都是他动词
    自动词←―――――――――→他动词
    上がる   agaru     上げる   ageru
    温まる   atatamaru   温める   atatameru
    当たる   ataru     当てる   ateru
    集まる   atumaru    集める   atumeru
    当てはまる atehamaru   当てはめる atehameru
    改まる   aratamaru   改める   aratameru
    いたまる  itamaru    いためる  itameru
    薄まる   usumaru    薄める   usumeru
    埋まる   umaru     埋める   umeru
    植わる   uwaru     植える   ueru
    終わる   owaru     終える   oeru
    仕上がる  siagaru    仕上げる  siageru
    儲かる   moukaru    儲ける   moukeru
    遠ざかる  toozakaru   遠ざける  toozakeru
    引っかかる hikkakaru   引っかける hikkakeru
    変わる   kawaru    変える   kaeru
    かかる   kakaru    かける   kakeru
    重なる   kasanaru   重ねる   kasaneru
    固まる   katamaru   固める   katameru
    決まる   kimaru    決める   kimeru
    下がる   sagaru    下げる   sageru
    静まる   sizumaru   静める   sizumeru
    閉まる   simaru    閉める   simeru
    締まる   simaru    締める   simeru
    染まる   somaru    染める   someru
    弱まる   yowamaru   弱める   yowameru
    助かる   tasukaru   助ける   tasukeru
    高まる   takamaru   高める   takameru
    たまる   tamaru    ためる   tameru
    捕まる   tukamaru   捕まえる  tukamaeru
    伝わる   tutawaru   伝える   tutaeru
    つながる  tunagaru   つなげる  tunageru
    詰まる   tumaru    詰める   tumeru
    止まる   tomaru    止める   tomeru
    始まる   hajimaru   始める   hajimeru
    はまる   hamaru    はめる   hameru
    早まる   hayamaru   早める   hayameru
    広がる   hirogaru   広げる   hirogeru
    広まる   hiromaru   広める   hiromeru
    深まる   hukamaru   深める   hukameru
    ぶつかる  butukaru   ぶつける  butukeru
    ぶらさがる burasagaru  ぶらさげる burasageru
    曲がる   magaru    曲げる   mageru
    混ざる   mazaru    混ぜる   mazeru
    まとまる  matomaru   まとめる  matomeru
    丸まる   marumaru   丸める   marumeru
    見つかる  mitukaru   見つける  mitukeru

    ②、词尾是reru的都是自动词
    自动词←―――――――――→他动词
    与词尾是su的他动词对应
    隠れる  kakureru     隠す   kakusu
    崩れる  kuzureru     崩す   kuzusu
    こぼれる koboreru     こぼす  kobosu
    壊れる  kowareru     壊す   kowasu
    つぶれる tubureru     つぶす  tubusu
    流れる  nagareru     流す   nagasu
    外れる  hazureru     外す   hazusu
    乱れる  midareru     乱す   midasu
    汚れる  yogoreru     汚す   yogosu
    倒れる  taoreru     倒す   taosu

    与词尾是ru的他动词对应
    売れる  ureru      売る   uru
    折れる  oreru      折る   oru
    切れる  kireru     切る   kiru
    釣れる  tureru     釣る   turu
    撮れる  toreru     撮る   toru
    ねじれる nejireru    ねじる  nejiru
    破れる  yabureru    破る   yaburu
    割れる  wareru     割る   waru
    与词尾是u的他动词对应
    生まれる umareru    生む   umu

    ③、词尾是su的都是他动词
    自动词←―――――――――→他动词
    返る   kaeru      返す   kaesu
    帰る   kaeru      帰す   kaesu
    覆る   kutugaeru    覆す   kutugaesu
    直る   naoru      直す   naosu
    治る   naoru      治す   naosu
    荒れる  areru      荒らす  arasu
    遅れる  okureru     遅らす  okurasu
    生える  haeru      生やす  hayasu
    冷える  hieru      冷やす  hiyasu
    増える  hueru      増やす  huyasu
    燃える  moeru      燃やす  moyasu
    消える  kieru      消す(例外)kesu
    動く   ugoku      動かす  ugokasu
    及ぶ   oyobu      及ばす  oyobasu
    起きる  okiru      起こす  okosu
    降りる  oriru      降ろす  orosu
    下りる  oriru      下ろす  orosu
    滅びる  horobir     滅ぼす  horobosu
    減る   heru      減らす  herasu
    写る   utur      写す   utusu
    裏返る  urakaeru    裏返す  urakaesu
    転がる  korogaru    転がす  korogasu
    散らかる tirakaru    散らかす tirakasu
    出る   deru      出す   dasu
    残る   nokosu     残す   nokosu
    回る   mawaru     回す   mawasu
    戻る   modoru     戻す   modosu
    枯れる  kareru     枯らす  karasu
    焦げる  kogeru     焦がす  kogasu
    冷める  sameru     冷ます  samasu
    溶ける  tokeru     溶かす  tokasu
    慣れる  nareru     慣らす  narasu
    逃げる  nigeru     逃がす  nigasu
    ぬれる  nureru     ぬらす  nurasu
    はげる  hageru     はがす  hagasu
    漏れる  moreru     漏らす  morasu
    揺れる  yureru     揺らす  yurasu
    乾く   kawaku     乾かす  kawakasu
    飛ぶ   tobu      飛ばす  tobasu
    泣く   naku      泣かす  nakasu
    沸く   waku      沸かす  wakasu
    ふくらむ hukuramu    ふくらます hukuramasu
    ひっくり返る hikkurikaeru ひっくり返す hikkurikaesu

    ④、その他
    自动词←―――――――――→他动词
    開く   aku       開ける   akeru
    空く   aku       空ける   akeru
    浮かぶ  ukabu      浮かべる  ukaberu
    聞こえる kikoeru     聞く    kiku
    砕ける  kudakeu     砕く    kudaku
    片付く  kataduu     片付ける  katadukeru
    かなう  kanau      かなえる  kanaeru
    そろう  sorou      そろえる  soroeru
    整う   totonou     整える   totonoeru
    煮える  nieru      煮る    niru
    見える  nieru      見る    miru
    ふるえる hurueru     ふるわせる huruwaseru
    くっつく kuttuku     くっつける kuttukeru
    傷つく  kizutuku    傷つける  kizutukeru
    欠ける  kakeru     欠く    kaku
    沈む   sizumu     沈める   sizumeru
    進む   susumu     進める   susumeru
    育つ   sodatu     育てる   sodateru
    立つ   tatu      立てる   tateru
    建つ   tatu      建てる   tateru
    近づく  tikaduku    近づける  tikadukeru
    縮む   tidimu     縮める   tidimeru
    付く   tuku      付ける   tukeru
    続く   tuduku     続ける   tudukeru
    届く   todoku     届ける   todokeru
    向く   muku      向ける   mukeru
    結びつく musubituku   結びつける musubitukeru
    緩む   yurumu     緩める   yurumeru
    裂ける  sakeru     裂く    saku
    解ける  tokeru     解く    toku
    抜ける  nukeru     抜く    nuku
    ほどける hodokeru    ほどく   hodoku
    むける  mukeru     むく    muku
    焼ける  yakeru     焼く    yaku
    寝る   neru      寝かせる  nekaseru
    乗る   noru      乗せる   noseru
    載る   noru      載せる   noseru

    IoPageLockLimit

    ファイルアクセスを高速化 IoPageLockLimit

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\
    HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Control SessionManager MemoryManagement IoPageLockLimit(DWord)
    IoPageLockLimit 4MBに指定する場合10進数で4194304(= 1*1024*1024*4 bytes規定値は512KB=524288)を指定してください。

    Windows XP の動作を軽快にしたい
    http://www.mtblue.org/pc/tips/speed_up_xp.php
    レジストリ技、Windows XP速度向上
    http://www.geocities.jp/genta_ro/reg/reg.html
    Windowsの快適化 > XP編
    http://www.micnet.ne.jp/k-sawada/contents/win/winxp.html

    Eclipse-plugin

    紹介

    Callisto(カリスト)を利用してのインストール

     Callistoとは,Eclipseプロジェクトで開発されている複数の代表的なプラグインを,更新マネージャを利用して,簡単にインストールできるようにするものです。高機能なプラグインは,Eclipseプロジェクトで開発されているEMF(Eclipse Modeling Framework),GEF(Graphical Editing Framework),WTP(Eclipse Web Tools Platform)といったプラグインに依存することが多く,Callistoの使い方を覚えておくと便利です。

     また,プラグインを複数インストールする際,連鎖的に他のプラグインへの依存が発生し問題が生じる場合がありますが,Callistoでインストールしたプラグインは整合性が保たれているので,手軽にプラグインのインストールを行うことが出来ます。


    以下の手順で利用します。

    (1)ヘルプメニューから[ソフトウエア更新]→[検索およびインストール]を選択[Help]-->[Software Updates]-->[Find and Install]
    (2)「インストールする新規フィーチャーを選択」をチェックし,[次へ]をクリック
    (3)「Callisto ディスカバリー・サイト」を選択し,[終了]をクリック
    (4)適当なミラー・サイトを選択し,[OK]をクリック
    (5)様々なプラグインが表示されますので,必要なものを選択し,[次へ]をクリック
    (6)ライセンスへの同意などを了承すると,インストールが開始される

    ◆All-In-One-Ecilpse ◆AmaterasIDE Installer ◆MyEclipse


    プラグインの有効化/無効化

     プラグインは,インストールした後に無効化することができます(もちろん有効化も可能)。Eclipse起動後にメニューバーの[ヘルプ]→[ソフトウエア更新]→[構成の管理]を選択します。

     無効にする場合は,当該プラグインを選択し,右のビューで「使用不可にする」をクリックするか,当該プラグインを右クリックして「使用不可にする」を選択します。その際,他のプラグインがそれを使っているなどの依存関係がある場合には無効になりません。その後,Eclipseを再起動するとプラグインが無効になります。


    プラグインのアンインストール方法

     最後に,プラグインのアンインストール方法を紹介しておきましょう。最も一般的な方法は,Eclipseをインストールしたフォルダ直下の「plugins」「features」にコピーしたフォルダをそのまま削除する方法です。

     この場合,起動時に指定したワークスペース用フォルダ内の「.metadata」フォルダ→「.plugins」フォルダ配下にある各種プラグインのフォルダに,当該プラグインの設定が残っているため,それも併せて削除すれば,もともとの設定に戻ります。

     そのほかに,アンインストール用のjarファイルを指定してjavaを起動するプラグインもあります。


    基本的なプラグイン(10個)

    ■プロパティエディタプラグイン
     Java開発では,アプリケーションの設定ファイルや,メッセージ・リソース用のファイルとしてプロパティ・ファイルを利用する場合があります。
     プロパティ・ファイルに日本語を含む場合は,native2asciiコマンドなどを利用してユニコード・エスケープ形式に変換する必要があります。このプロパティエディタプラグインを使用すると,エディタ上では日本語でファイルを編集でき,ファイルの保存時にユニコード・エスケープ形式への変換を自動で行ってくれます。

    ■CheckStyleプラグイン
     Checkstyleプラグインは,ソースコードのコーディング規約違反をチェックするツールです。チェックを有効にするには,プロジェクトを[右クリック]-[プロパティ]-[Checkstyle]をクリックし,「Checkstyle active for this project」チェックボックスにチェックを入れます。

    ■Log4E
     Log4Eは,各種ログライブラリを操作するソースコードを自動的に生成してくれるプラグインです。JDK 1.4から標準APIに加わったLoggingAPI,オープンソースの代表的なログ出力ライブラリのcommons-logging,Log4Jに対応しています。
     Javaエディタ上で右クリックして表示されるメニュー「Log4E」のサブメニューを選択することで以下のことが可能です。
      * Declare logger : ログ出力変数の定義
      * Log this variable : 選択した変数をログ出力
      * Log at this position : 指定した位置に任意のログを出力
      * Log this method : メソッドの開始,終了ログを出力
      * Log this class : ログ出力変数の定義,メソッドの開始,終了ログを出力
      * Substitute System.out's in this method : 選択したメソッド中のSystem.out.printlnをログ出力に変更
      * Substitute System.out's in this class : クラス中のすべてのSystem.out.printlnをログ出力に変更
     使用するログライブラリは[ウィンドウ]-[設定]-[Log4E]で変更することができます。

    ■LogWatcher
     Log4Eと組み合わせて使いたいのが,LogWatcherプラグインです。LogWatcherを使うと,ログファイルをEclipseのビュー上に表示できます。単に表示するだけではなく,ファイルに出力されているログをビュー上でリアルタイムに確認することができます。アプリケーション・サーバーなどが自動的に出力するログなどを確認するのに役に立つでしょう。
     LogWatcherビューを開くには,[ウィンドウ]-[ビューの表示]-[その他]で表示されるリストから,[Log Files]-[Log Watcher]を選択します。新たに表示するログファイルを選択する場合,ビュー上部メニューの「Create a new watcher」をクリックし,ログファイルを選択します。

    ■Eclipse Platform Extensions
     Eclipse Platform Extensionsは,Eclipseにいくつかの便利な機能を追加してくれるプラグインです。インストールすると,メニュバーの[ファイル]に以下のメニューが追加されます。
      * Restart Workbench : Eclipseの再起動
      * Run Garbage Collection : ガーベジコレクションの実行
     また,パッケージエクスプローラ上で右クリックして表示されるメニューには以下の機能が追加されます。
     Open Folder
      In Navigator : 選択したディレクトリをリソースパースペクティブで開く
      In Explorer : 選択したディレクトリをエクスプローラで開く
      In Command Prompt : 選択したディレクトリをコマンドプロンプトで開く
     Copy Name To Clipboard
      Fully Quarified Name : 選択したJavaファイルのクラス名(パッケージから指定した完全修飾クラス名)をクリップボードにコピーする
      File Name : 選択したファイルの名前(ファイル・システム上の絶対パス)をクリップボードにコピーする

    ■Commons4E
     Commons4Eは,オープンソース・コミュニティApache Jakartaプロジェクトのプロダクトの一つで,commons-langを使用して典型的なコードを出力してくれるプラグインです。
     提供されている機能は,以下のメソッド
      * equals()
      * hashCode()
      * toString()
      * compareTo()
    の自動生成です。
     Javaエディタ上で[右クリック]-[Commons4E Lang]を選択すると,対象のメソッド名が表示されます。例えば,toString()メソッドを選択すると,文字列化したい対象のフィールドや,出力する位置などを指定できます。
     なお,commons-langのクラスパスへの追加は手動で設定しなければならないので注意してください。

    ■FindBugs
     FindBugsは,Javaソースコード中のバグの可能性がある個所を指摘してくれるプラグインです。バグの発生を開発中に未然に防ぐことができます。チェックを実行したい対象のプロジェクト上で右クリックし,「Find Bugs」を実行すると,「問題」ビュー上にバグの可能性がある個所が一覧表示されます。

    ■DocJar
     DocJarは,Eclipseのビュー上でJavadocの検索,閲覧ができるプラグインです。

    ■Eclipse Metrics Plugin
     Eclipse Metrics Pluginは,ソフトウエア・メトリクスを計測するためのプラグインです。ソフトウエア・メトリクスとは,ソフトウエアの品質を様々な視点から定量的に評価したものです。代表的な視点としては
      * LOC(Line of Code) : コード行数
      * Complexity : 複雑度
      * Couplings : 結合度
    などがあります。

    ■AnyEdit
     AnyEditプラグインは,Javaエディタを右クリックしたときに表示されるメニューにいくつかの便利な機能を追加してくれます。具体的には,Javaエディタ上で右クリックすると「Convert」というメニューが追加されます。「Convert」のサブメニューで選択できる機能は以下の通りです。
      * Leading tabs to spaces : タブ文字をスペースに変換する
      * Leading spaces to tabs : スペースをタブ文字に変換する
      * Chars to Html entities : 選択した文字列をHTMLエスケープする
      * Html entities to chars : HTMLエスケープされた文字を通常の文字列に戻す
      * Capitalize : 先頭の文字を大文字に変換する
      * Invert case : 大文字と小文字を入れ替える
      * To upper case : 選択したすべての文字を大文字に変換する
      * To lower case : 選択したすべての文字を小文字に変換する
     Javadocを記述するとき,HTMLのタグは,「table」→「<table>」のようにエスケープ処理された形で記述しなければなりません。これはなかなか手間がかかります。「Html entities to chars」を使用すれば,選択範囲を一括で変換してくれるのでjavadocの記述が楽になります。

    Plug-in Catalogueのページ
    http://www.eclipse.org/community/plugins.php
    ここで紹介したプラグイン

    ■プロパティエディタプラグイン
    説明:プロパティファイル編集用エディタ
    ライセンス:GPL
    提供元:http://propedit.sourceforge.jp/

    ■CheckStyleプラグイン
    説明:コーディング規約チェック
    ライセンス:LGPL
    提供元:http://sourceforge.net/projects/eclipse-cs

    ■Log4Eプラグイン
    説明:ログ出力実装
    ライセンス:フリー/有償
    提供元:http://log4e.jayefem.de/index.php/Main_Page

    ■LogWatcher
    説明:ログ表示
    ライセンス:CPL
    提供元:http://graysky.sourceforge.net/

    ■Eclipse Platform Extensions
    説明:プラットフォーム拡張
    ライセンス:AFL
    提供元:http://sourceforge.net/projects/ttl/

    ■Commons4E
    説明:jakarta common-langサポート
    ライセンス:EPL
    提供元:http://www.jiayun.org/mediawiki/index.php?title=Commons4E

    ■FindBugs
    説明:バグの可能性があるソースコードを指摘
    ライセンス:GPL
    提供元:http://findbugs.sourceforge.net/

    ■DocJar
    説明:Javadoc検索
    ライセンス:フリー
    提供元:http://www.docjar.com/

    ■Eclipse Metrics Plugin
    説明:メトリクス計測
    ライセンス:CPL
    提供元:http://eclipse-metrics.sourceforge.net/

    ■AnyEdit
    説明:テキスト変換
    ライセンス:BSD Lisence
    提供元:http://andrei.gmxhome.de/anyedit/index.html

    Eclipse-GUI

    ■Visual Editorプラグイン
    (1)グラフィカル・エディタ
    (2)ソース・エディタ
    (3)デザインパレット
    (4)Java Beanビュー
    (5)プロパティビュー
    (6)カスタマイズ・レイアウト・ウィンドウ

    ■WindowBuilder Pro
     実際の開発現場でVEを利用することは可能でしょうか?
    正直なところ,それは難しいでしょう。VEに任せられるのは(今のところ)
    簡単なツールの開発や,Eclipseプラグインの作成が関の山です。
     VEよりも実用に耐えうるプラグインとして候補にあがるのは,
    間違いなく「Window Builder Pro」です。
    価格/ライセンス 無償(trial version),有償(Commercial license:299ドルから)

    ■Matisse4MyEclipse
    NetBeansには「Matisse」という高機能なGUIビルダが提供されています。
    ここで紹介する「Matisse4MyEclipse」は,このMatisseをEclipse上で利用するためのプラグインです。
    (ただ,年間ランセンス料49.95ドル)

    ■Jigloo SWT/Swing GUI Builder
    説明 GUIビルダ・プラグイン(Swing/SWT対応)
    価格/ライセンス 75ドル(非商用利用は無償)


    Eclipse-WEB

    ■Eclipse WTP
    ──J2EE用プラグインセットの大本命
     Eclipse WTP(Web Tools Platform)とは,Eclipse開発元が提供している,サーバーサイド・アプリケーションの開発環境の決定版です。サーバーサイド・アプリケーションを構成する各種ファイル用のエディタと,J2EE仕様に基づいたアプリケーションに必要となるweb.xmlの編集,サーブレットの作成,JSPの編集,カスタムタグの補完,アプリケーションのJ2EEサーバーへのデプロイ,デバッグなどの機能を持っています。
     データベースへの接続もサポートしており,EclipseからSQLを実行することも可能です。また,Webアプリケーションだけでなく,EJB やWebサービスの開発,EJBとWebアプリケーションを組み合わせたエンタープライズ・アプリケーションの開発を支援する機能も含んでおり,J2EE アプリケーション開発をフルセットでサポートする機能が揃っています。
    主な機能
      * HTML,XML,JSP,CSS,JavaScriptの構造化エディタ(色付け,補完,文法の検証)
      * ServletやEJBのウィザード形式での作成,設定の検証
      * 多種のJ2EEサーバーとの連携(起動,デプロイ,デバッグ実行)
      * データベースとの連携(接続,検索,更新,SQLの実行)
      * 複数のWebアプリケーション,EJBなどを含んだエンタープライズ・アプリケーションの作成
      * XDocletと連携したWebおよびEJB関連ファイルの生成
      * Eclipse内部で動作するWebブラウザ
      * Webサービスの作成,WSDLの編集,クライアントの自動生成,テスト用UDDI

    ■AmaterasIDE
    ──Webアプリケーション用の軽量で気が利いたプラグインセット
     AmaterasIDEは,Tomcat上で動作するアプリケーションをターゲットに定めた,JSFやStrutsフレームワーク用のプラグインを含んだパッケージです。EJBの機能を利用しないのであればWTPより軽量です。
     AmaterasIDEにはEclipse SDKや言語パック,プロパティエディタなどが厳選されて収録されているため,インストール直後から普通に日本語が使えるというのも大きな魅力です。
    主な機能
      * Struts設定ファイルのグラフィカルな編集(Amateras StrutsIDE)
      * Faces設定ファイルのグラフィカルな編集(Amateras FacesIDE)
      * HTMLファイルのビジュアル編集(Amateras EclipseHTMLEditor)
      * プロジェクトのTomcatへのデプロイ,Tomcatの起動/終了(Sysdeo Tomcat)
      * データベースの閲覧(DBViewer)
      * Subversionとの連携(Subclipse)
      * ソースの静的チェック(CheckStyle,FindBugs)

    ■MyEclipse
    ──実績&サポートのある様々なプラグインのセット
     MyEclipseは,米Genuitecが提供している,様々なプラグインをセットにしたものです。日本国内では日立製作所が日本語化し,技術サポート付きで販売しています。Eclipse SDKに,以下の機能を含んだプラグインが追加されます。
    主な機能
      * WTP(機能強化版)
      * SQLエクスプローラー(sqlexplorerベース)
      * HTML,JSPのビジュアル編集
      * Struts設定ファイルの編集支援,検証(EasyStrutsベース)
      * Faces設定ファイルの編集支援,検証
      * Tapestry・Spindleテンプレートの編集支援,検証
      * データベースからのクラス生成およびORマッピング生成支援(Hibernate Tools)
      * Spring設定ファイルの編集支援,検証(SpringIDE)
      * JavaScriptのデバッグ,DOMインスペクタ
      * Bugzillaとの連携
      * Matisse Layout Manager
      * イメージエディタ

    ◆SpringIDE
    ──SpringFrameworkのためのプラグイン
     SpringIDEは,DI/AOPコンテナのデファクト・スタンダードであるSpringFrameworkのためのプラグインです。
    主な機能
      * Spring設定ファイルの編集支援,検証
      * Spring設定ファイルの内容をグラフィカルに表示
      * 設定されたアスペクトをソース上にマーキング
     SpringFramework本体もプラグインに含まれていますが,後々のために別途ダウンロードしておくことをお勧めします。

    最新IT総合情報IN-JP

    http://japan.zdnet.com/ JP-ZDNet
    http://www.itmedia.co.jp/ IT総合情報
    http://itpro.nikkeibp.co.jp/index.html ITpro 総合情報
    http://itpro.nikkeibp.co.jp/article/COLUMN/20051005/222282/?ST=oss

    JDK6-JRuby-NetBeans

    JDK1.6 JRuby1.0 NetBeans5.5.1
    http://java.sun.com/javase/reference/api.jsp
    http://java.sun.com/javase/ja/6/download.html
    http://www.netbeans.org/ 又は www.sun.com
    http://www.netbeans.org/kb/55/using-netbeans/index_ja.html

    まずJDK1.6をダウンロード、インストール、環境変数を設定する()。

    JRuby1.0をダウンロード、解凍、c:¥以下におく。
    JRuby1.0の環境変数pathにC:¥jruby-1.0¥binを追加する。
    jrubyを試す C:¥jruby-1.0¥bin>jruby.bat
    jrubyを試す C:¥jruby-1.0¥samples>jruby swing2.rb

    NetBeansをダウンロード、インストール
    NetBeansデフォルトAPSのユーザ名/パスワードは: admin/adminadmin.

    ⑦環境変数JDK1.4
    CLASSPATH
    .;C:\j2sdk1.4.2_11\lib\tools.jar;C:\j2sdk1.4.2_11\lib\dt.jar;C:\j2sdk1.4.2_11\lib\htmlconverter.jar
    JAVA_HOME
    C:\j2sdk1.4.2_11
    Path
    .;C:\j2sdk1.4.2_11\bin;C:\j2sdk1.4.2_11\jre\bin

    ⑧環境変数JDK1.6
    CLASSPATH
    .;C:\Program Files\Java\jdk1.6.0_01\lib\tools.jar;C:\Program Files\Java\jdk1.6.0_01\lib\dt.jar;C:\Program Files\Java\jdk1.6.0_01\lib\htmlconverter.jar
    JAVA_HOME
    C:\Program Files\Java\jdk1.6.0_01
    Path
    .;C:\Program Files\Java\jdk1.6.0_01\bin;C:\Program Files\Java\jdk1.6.0_01\jre\bin

    常用日用品IN-JP

    しょうゆ    キッコーマン
    ソース     ブルドック
    マヨネーズ   キユーピー
    カップめん   日清
    トマト     カゴメ
    冷凍食品    加ト吉、ニチレイ
    ハム      日本ハム、伊藤ハム
    清涼飲料    コカ・コーラグループ、サントリー
    ビール     アサヒ、キリン

    探しと削除

    grep find
    grep -ri str path
    grep -R str path
    find path -name 'str' -print

    rm [-dfirv] 名前
    オプション
    -d ディレクトリのリンクをはずします。管理者権限が必要です。
    -f 存在しないファイルがあってもエラーを返しません。
    -i ファイルを削除してよいかを確認します。
    -r ディレクトリを再帰的に(中身ごと)削除します。
    -v 経過を表示します。
    名前 削除するファイルまたはディレクトリを指定します。
    使用例:
    $ rm file1* 「file1」ではじまるファイルをすべて削除します。
    $ rm -r dir1 「dir1」ディレクトリをファイルごと削除します。

    $$set echo on spool result.log select * from table order by cols; spool off$$

    BigFreeSpace

    1. http://www.zupload.com
    允许上传500m的文件,几乎无时限
    2. http://www.putfile.com
    允许上传25m的文件,但成人文件请打包上传
    3. http://www.turboupload.com/
    允许上传70m的文件 www.6park.com
    4. http://www.wirefiles.com/
    上传50M文件 www.6park.com
    5. http://www.zshare.net/
    允许上传100m的文件,15天之内有人下载就不过期
    6. http://www.yousendit.com
    上传1G文件,保留7天,限制下载次数,可多线程,推荐!
    7. http://updownloadserver.com/
    可以上传250M的文件,速度不错!
    9. http://upload2.net/
    以上传25M的文件,保存时间有一年哟!
    10. http://storeandserve.com/
    可以上传100M的文件,30天之内有人下载就会一直保留!
    11. http://www.ultrashare.net/
    可以上传30M的文件,速度还可以!
    12. http://www.filefront.com/
    无限空间,速度比较理想,推荐!
    13. http://easy-sharing.com/
    上传75M的文件,下载次数不限,30天内无人下载砍档。
    14. http://www.filefactory.com/upload/
    可以上传1.5G的文件,保存30天
    15. http://fileupyours.com/
    上传200M文件,无限期保存,无限期下载
    16. http://datapickup.com/
    上传1.5G文件,保存7天
    17. http://www.transferbigfiles.com/
    上传1G文件,保存5天
    18. http://www.megashares.com/
    上传1.5G文件,无限制下载
    19. http://ww3.sharebigfile.com/
    上传300M文件,可以开多个线程无限制下载,非常好!
    20. http://www.spread-it.com/
    上传500M文件,30天没人下砍档
    21. http://www.filecache.de/
    上传125M文件,30天没人下砍档
    22.http://megaupload.com
    上传文件250MB,30天没人下自动删

    FONT日中

    "Arial Unicode MS" "MS UI Gothic"

    Sample of "Arial Unicode MS":

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
    Modify "MS Shell Dlg 2"="Arial Unicode MS" (MS UI Gothic)
    Modify "MS Shell Dlg"="Arial Unicode MS" (Tahoma)
    AddNew "PMingLiu"="Arial Unicode MS"
    AddNew "MingLiu"="Arial Unicode MS"
    AddNew "MS UI Gothic"="Arial Unicode MS"
    AddNew "MS Gothic"="Arial Unicode MS"
    AddNew "MS PGothic"="Arial Unicode MS"
    AddNew "SimSun"="Arial Unicode MS"
    AddNew "NSimSun"="Arial Unicode MS"

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\GRE_Initialize]
    Modify "GUIFont.Facename"="Arial Unicode MS"(MS UI Gothic)

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
    Modify "PreloadFontFile"="Arial Unicode MS"(msgothic)

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink]
    at all string-value-key last AddNew value
    "Arialuni.ttf,Arial Unicode MS"
    "MSGOTHIC.TTC,MS UI Gothic"

    0123456789―〇1234567890〇一二三四五六七八九十
    ~ FF5E 003F ~  - FF0D 003F -  ― 2015 815C ―

    果物と野菜

    にんじん     胡萝卜
    しいたけ     香菇
    大根(だいこん) 萝卜
    じゃがいも    土豆
    筍(たけのこ)  笋
    白菜(はくさい) 白菜
    ねぎ       葱
    たまねぎ     洋葱
    ピーマン     柿子椒
    トマト      西红柿
    キャベツ     卷心菜
    なす       茄子
    にんにく     大蒜
    にら       韭菜
    きゅうり     黄瓜
    りんご      苹果
    みかん      桔子
    バナナ      香蕉
    ぶどう      葡萄
    メロン      甜瓜
    桃(もも)    桃
    なし       梨
    パイナップル   菠萝
    レモン      柠檬
    いちご      草莓
    ラディッシュ   小红萝卜
    アスパラガス   芦笋,龙须菜
    薺(なずな)   荠菜
    レタス      莴苣,生菜
    鉈豆(なたまめ) 刀豆
    蚕豆(そらまめ) 蚕豆
    レッド・ペパー  红辣椒
    レッド・ビーン  红豆
    シャンピニオン  食用伞菌,蘑菇

    CodeConv

    1 <br><dt>たらのき【&#x6964;の木】</dt><key type="表記">&#x6964;の木</key>

    2 gaijimap.xml
    <?xml version="1.0" encoding="Shift_JIS"?>
    <gaijiSet>
    <!-- === 16x16 === -->
    <gaijiMap unicode="#x6964" ebcode="B121" alt="" />
    </gaijiSet>

    3 zB121 u6964

    4 あくせい【悪政】</dt><dd>恶政。苛政。使国民受苦的政治。(对义)善政。
    5 あくせい【悪政】</dt><dd>&#x36F1;政。苛政。使国民受苦的政治。(&#x36D4;&#x52E5;)善政。

    FONTNAME XXXX YYYY -h -u=0000 -e=A121 -b=1 -m=GaijiMap.xml > Gaiji.xml

    String基本

    class StringDump {
    public static void main(String[] args) {
    String str = "問題の発生している文字列";
    System.out.println(str);
    char[] buf = str.toCharArray();
    for (int i = 0; i < buf.length; i++) {
    System.out.print(Integer.toString(buf[i], 16) + " ");
    //Integer.toString(buf[i], 16).toUpperCase()
    }
    }
    }

    /*
    >>javac StringDump.java
    >>java StringDump

    問題の発生している文字列
    554f 984c 306e 767a 751f 3057 3066 3044 308b 6587 5b57 5217

    >>


    カノニカライゼーション
    一般に、メソッド equals() が true を返す等価なオブジェクトを、演算子 == が true
    を返す一意なオブジェクトで置き換えることを、カノニカライゼーション (Canonicalization)
    と呼びます。オブジェクトの種類ごとに生成されるインスタンスの個数を一つに制限するので、
    インスタンス化の回数を減らし、データの一意化を促します。
    String 型オブジェクトの生成は、JVMの実行時コンスタント・プール
    で低レベルに実装されているものの一つです。
    事象
    次のコードでは、同じ文字列オブジェクトが参照されます。
    String str1 = "Hello";
    String str2 = "Hello"; // str1 == str2 is true

    次のコードは別の文字列オブジェクトを生成して参照します。
    String str1 = "Hello";
    String str2 = new String("Hello"); // str1 == str2 is false

    str1 == str2 は、前者の例では true を返しますが、後者の例では false を返します。== は変数に代入されている値を比較するものなので、別のオブジェクトへの参照を保持していれば、false が返るのです。文字列オブジェクトに保持されている文字列が等価であることを評価する場合は equals() を使います。次のコードは、いずれの場合でも true を返します。
    boolean bln = str1.equals(str2); // bln is true

    class CanonicalStringDemo {
    public static void main(String[] args) {
    String str1 = args[0];
    String str2 = "こんにちは";
    String str3 = new String("こんにちは");

    // 非カノニカル表現
    System.out.println("Not Canonical representation:");
    System.out.println("\t" + (str1 == str2));
    System.out.println("\t" + (str1 == str3));

    // カノニカル表現
    System.out.println("Canonical representation:");
    System.out.println("\t" + (str1.intern() == str2.intern()));
    System.out.println("\t" + (str1.intern() == str3.intern()));
    }
    }


    >javac CanonicalStringDemo.java
    >java CanonicalStringDemo "こんにちは"
    Not Canonical representation:
    false
    false
    Canonical representation:
    true
    true
    */

    Java Code

     Javaでは文字列はUnicodeとして取り扱われます。つまりString、キャラクタ配列、
    キャラクタストリーム上で操作される文字列はUnicodeになります。
     逆にSJISやEUCのようなネイティブなコード系で記述されたテキストはJavaにとっては
    バイト列が格納されたバイナリファイルとして存在します。つまりネイティブなコード系
    はバイト配列とバイトストリームとして取り扱われるわけです。
     このためコード系変換はネイティブなコード系が格納されているテキストファイル
    (Javaにとってはバイナリファイル)に対する入出力のタイミングで行われます。
     バイナリファイルに格納されているバイト列からキャラクタ列への変換のタイミングで
    ネイティブのコード系はUnicodeに変換され、逆にキャラクタ列からバイト列への変換の
    タイミングでUnicodeはネイティブのコード系に変換されます。

    変換例:
    String unicodeStirng = new String(data.getBytes("iso-8859-1"), "Shift_JIS");
    String unicodeStirng = new String(data.getBytes("Shift_JIS"), "EUC_JP");

    エンコーディング名別名一覧:
    以下のエンコーディング名別名一覧は j2sdk-1_3_1-src.tar.gz に含まれている
    /j2sdk1.3.1/src/share/classes/sun/io/CharacterEncoding.java からの抜粋です。

    java.lang.String#getBytes() などのエンコーディング名を使用する場面で使われます。
    ハッシュの値(右側)を正式名としているようです。大文字小文字を判断します。
    ハッシュのキー(左側)は正式名に対する別名です。こちらは大文字小文字を判断しません。
    このため別名の "jis" を "JIS" と書くのはOKですが、正式名の "ISO2022JP" を "iso2022jp"
    と書くことはできません。

    以下の抜粋では、最初に日本語用エンコーディング名別名一覧をまとめました。
    そのあとに全エンコーディング名別名一覧(日本語用含む)が続きます。



    ========== 日本語用エンコーディング名別名一覧 START ==========
    // Specialized auto-detection for Japanese charsets
    aliasTable.put("jis auto detect", "JISAutoDetect");

    // MIBenum: 16/39
    aliasTable.put("jis", "ISO2022JP");
    aliasTable.put("iso-2022-jp", "ISO2022JP");
    aliasTable.put("csiso2022jp", "ISO2022JP");
    aliasTable.put("jis_encoding", "ISO2022JP");
    aliasTable.put("csjisencoding", "ISO2022JP");

    // MIBenum: 17/2024
    aliasTable.put("shift_jis", "MS932");
    aliasTable.put("ms_kanji", "MS932");
    aliasTable.put("csshiftjis", "MS932");
    aliasTable.put("windows-31j", "MS932");
    aliasTable.put("cswindows31j", "MS932");
    aliasTable.put("x-sjis", "MS932");

    // JIS-defined Shift JIS
    注:"シフト符号化表現" と書かれています。
    aliasTable.put("\u30b7\u30d5\u30c8\u7b26\u53f7\u5316\u8868\u73fe",
    "SJIS"); // JIS name
    aliasTable.put("pck", "SJIS"); // Solaris PCK

    // MIBenum: 18
    // Japanese EUC
    aliasTable.put("eucjis", "EUC_JP");
    aliasTable.put("euc-jp", "EUC_JP");
    aliasTable.put("eucjp", "EUC_JP");
    aliasTable.put("extended_unix_code_packed_format_for_japanese",
    "EUC_JP");
    aliasTable.put("cseucpkdfmtjapanese", "EUC_JP");
    aliasTable.put("x-euc-jp", "EUC_JP");
    aliasTable.put("x-eucjp", "EUC_JP");

    // For handing only JIS0202 and JIS0208 in linux
    aliasTable.put("euc-jp-linux", "EUC_JP_LINUX");
    ========== 日本語用エンコーディング名別名一覧 END ==========


    ========== 全エンコーディング名別名一覧 START ==========
    aliasTable.put("us-ascii", "ASCII");
    aliasTable.put("ascii", "ASCII");
    aliasTable.put("646", "ASCII"); // Solaris POSIX locale
    aliasTable.put("iso_646.irv:1983", "ASCII"); // Linux POSIX locale
    aliasTable.put("ansi_x3.4-1968", "ASCII"); // Caldera linux
    aliasTable.put("iso646-us", "ASCII");
    aliasTable.put("default", "ASCII"); // compatibility with obsolete "Default" converters
    aliasTable.put("ascii7", "ASCII"); // compatibility with obsolete "Default" converters

    // MIBenum: 4
    aliasTable.put("8859_1", "ISO8859_1");
    aliasTable.put("iso_8859-1:1987", "ISO8859_1");
    aliasTable.put("iso-ir-100", "ISO8859_1");
    aliasTable.put("iso_8859-1", "ISO8859_1");
    aliasTable.put("iso-8859-1", "ISO8859_1");
    aliasTable.put("iso8859-1", "ISO8859_1");
    aliasTable.put("latin1", "ISO8859_1");
    aliasTable.put("l1", "ISO8859_1");
    aliasTable.put("ibm819", "ISO8859_1");
    aliasTable.put("ibm-819", "ISO8859_1");
    aliasTable.put("cp819", "ISO8859_1");
    aliasTable.put("819", "ISO8859_1");
    aliasTable.put("csisolatin1", "ISO8859_1");

    // MIBenum: 5
    aliasTable.put("8859_2", "ISO8859_2");
    aliasTable.put("iso_8859-2:1987", "ISO8859_2");
    aliasTable.put("iso-ir-101", "ISO8859_2");
    aliasTable.put("iso_8859-2", "ISO8859_2");
    aliasTable.put("iso-8859-2", "ISO8859_2");
    aliasTable.put("iso8859-2", "ISO8859_2");
    aliasTable.put("latin2", "ISO8859_2");
    aliasTable.put("l2", "ISO8859_2");
    aliasTable.put("ibm912", "ISO8859_2");
    aliasTable.put("ibm-912", "ISO8859_2");
    aliasTable.put("cp912", "ISO8859_2");
    aliasTable.put("912", "ISO8859_2");
    aliasTable.put("csisolatin2", "ISO8859_2");

    // MIBenum: 6
    aliasTable.put("8859_3", "ISO8859_3");
    aliasTable.put("iso_8859-3:1988", "ISO8859_3");
    aliasTable.put("iso-ir-109", "ISO8859_3");
    aliasTable.put("iso_8859-3", "ISO8859_3");
    aliasTable.put("iso-8859-3", "ISO8859_3");
    aliasTable.put("iso8859-3", "ISO8859_3");
    aliasTable.put("latin3", "ISO8859_3");
    aliasTable.put("l3", "ISO8859_3");
    aliasTable.put("ibm913", "ISO8859_3");
    aliasTable.put("ibm-913", "ISO8859_3");
    aliasTable.put("cp913", "ISO8859_3");
    aliasTable.put("913", "ISO8859_3");
    aliasTable.put("csisolatin3", "ISO8859_3");

    // MIBenum: 7
    aliasTable.put("8859_4", "ISO8859_4");
    aliasTable.put("iso_8859-4:1988", "ISO8859_4");
    aliasTable.put("iso-ir-110", "ISO8859_4");
    aliasTable.put("iso_8859-4", "ISO8859_4");
    aliasTable.put("iso-8859-4", "ISO8859_4");
    aliasTable.put("iso8859-4", "ISO8859_4");
    aliasTable.put("latin4", "ISO8859_4");
    aliasTable.put("l4", "ISO8859_4");
    aliasTable.put("ibm914", "ISO8859_4");
    aliasTable.put("ibm-914", "ISO8859_4");
    aliasTable.put("cp914", "ISO8859_4");
    aliasTable.put("914", "ISO8859_4");
    aliasTable.put("csisolatin4", "ISO8859_4");

    // MIBenum: 8
    aliasTable.put("8859_5", "ISO8859_5");
    aliasTable.put("iso_8859-5:1988", "ISO8859_5");
    aliasTable.put("iso-ir-144", "ISO8859_5");
    aliasTable.put("iso_8859-5", "ISO8859_5");
    aliasTable.put("iso-8859-5", "ISO8859_5");
    aliasTable.put("iso8859-5", "ISO8859_5");
    aliasTable.put("cyrillic", "ISO8859_5");
    aliasTable.put("csisolatincyrillic", "ISO8859_5");
    aliasTable.put("ibm915", "ISO8859_5");
    aliasTable.put("ibm-915", "ISO8859_5");
    aliasTable.put("cp915", "ISO8859_5");
    aliasTable.put("915", "ISO8859_5");

    // MIBenum: 9
    aliasTable.put("8859_6", "ISO8859_6");
    aliasTable.put("iso_8859-6:1987", "ISO8859_6");
    aliasTable.put("iso-ir-127", "ISO8859_6");
    aliasTable.put("iso_8859-6", "ISO8859_6");
    aliasTable.put("iso-8859-6", "ISO8859_6");
    aliasTable.put("iso8859-6", "ISO8859_6");
    aliasTable.put("ecma-114", "ISO8859_6");
    aliasTable.put("asmo-708", "ISO8859_6");
    aliasTable.put("arabic", "ISO8859_6");
    aliasTable.put("csisolatinarabic", "ISO8859_6");
    aliasTable.put("ibm1089", "ISO8859_6");
    aliasTable.put("ibm-1089", "ISO8859_6");
    aliasTable.put("cp1089", "ISO8859_6");
    aliasTable.put("1089", "ISO8859_6");

    // MIBenum: 10
    aliasTable.put("8859_7", "ISO8859_7");
    aliasTable.put("iso_8859-7:1987", "ISO8859_7");
    aliasTable.put("iso-ir-126", "ISO8859_7");
    aliasTable.put("iso_8859-7", "ISO8859_7");
    aliasTable.put("iso-8859-7", "ISO8859_7");
    aliasTable.put("iso8859-7", "ISO8859_7");
    aliasTable.put("elot_928", "ISO8859_7");
    aliasTable.put("ecma-118", "ISO8859_7");
    aliasTable.put("greek", "ISO8859_7");
    aliasTable.put("greek8", "ISO8859_7");
    aliasTable.put("csisolatingreek", "ISO8859_7");
    aliasTable.put("ibm813", "ISO8859_7");
    aliasTable.put("ibm-813", "ISO8859_7");
    aliasTable.put("cp813", "ISO8859_7");
    aliasTable.put("813", "ISO8859_7");

    // MIBenum: 11
    aliasTable.put("8859_8", "ISO8859_8");
    aliasTable.put("iso_8859-8:1988", "ISO8859_8");
    aliasTable.put("iso-ir-138", "ISO8859_8");
    aliasTable.put("iso_8859-8", "ISO8859_8");
    aliasTable.put("iso-8859-8", "ISO8859_8");
    aliasTable.put("iso8859-8", "ISO8859_8");
    aliasTable.put("hebrew", "ISO8859_8");
    aliasTable.put("csisolatinhebrew", "ISO8859_8");
    aliasTable.put("ibm916", "ISO8859_8");
    aliasTable.put("ibm-916", "ISO8859_8");
    aliasTable.put("cp916", "ISO8859_8");
    aliasTable.put("916", "ISO8859_8");

    // MIBenum: 12
    aliasTable.put("8859_9", "ISO8859_9");
    aliasTable.put("iso-ir-148", "ISO8859_9");
    aliasTable.put("iso_8859-9", "ISO8859_9");
    aliasTable.put("iso-8859-9", "ISO8859_9");
    aliasTable.put("iso8859-9", "ISO8859_9");
    aliasTable.put("latin5", "ISO8859_9");
    aliasTable.put("l5", "ISO8859_9");
    aliasTable.put("ibm920", "ISO8859_9");
    aliasTable.put("ibm-920", "ISO8859_9");
    aliasTable.put("cp920", "ISO8859_9");
    aliasTable.put("920", "ISO8859_9");
    aliasTable.put("csisolatin5", "ISO8859_9");

    // MIBenum: ???
    aliasTable.put("8859_13", "ISO8859_13");
    aliasTable.put("iso_8859-13", "ISO8859_13");
    aliasTable.put("iso-8859-13", "ISO8859_13");
    aliasTable.put("iso8859-13", "ISO8859_13");


    // MIBenum: ????
    aliasTable.put("8859_15", "ISO8859_15_FDIS");
    aliasTable.put("iso-8859-15", "ISO8859_15_FDIS");
    aliasTable.put("iso_8859-15", "ISO8859_15_FDIS");
    aliasTable.put("iso8859-15", "ISO8859_15_FDIS");
    aliasTable.put("ibm923", "ISO8859_15_FDIS");
    aliasTable.put("ibm-923", "ISO8859_15_FDIS");
    aliasTable.put("cp923", "ISO8859_15_FDIS");
    aliasTable.put("923", "ISO8859_15_FDIS");
    aliasTable.put("latin0", "ISO8859_15_FDIS");
    aliasTable.put("latin9", "ISO8859_15_FDIS");
    aliasTable.put("csisolatin0", "ISO8859_15_FDIS");
    aliasTable.put("csisolatin9", "ISO8859_15_FDIS");

    // MIBenum: 106
    aliasTable.put("utf-8", "UTF8");

    // Alias recommended in RFC 1641
    aliasTable.put("unicode-1-1-utf-8", "UTF8");

    // MIBenum: 1010
    aliasTable.put("unicode-1-1", "UnicodeBigUnmarked");

    // MIBenum: 1000
    aliasTable.put("iso-10646-ucs-2", "UnicodeBigUnmarked");

    // Per Unicode standard
    aliasTable.put("utf-16be", "UnicodeBigUnmarked");
    aliasTable.put("utf-16le", "UnicodeLittleUnmarked");
    aliasTable.put("utf-16", "UTF16");

    // Used by drag-and-drop subsystem
    aliasTable.put("x-utf-16be", "UnicodeBigUnmarked");
    aliasTable.put("x-utf-16le", "UnicodeLittleUnmarked");

    aliasTable.put("unicode", "Unicode");

    // MIBenum: ????
    aliasTable.put("ibm037", "Cp037");
    aliasTable.put("ibm-037", "Cp037");
    aliasTable.put("cp037", "Cp037");
    aliasTable.put("037", "Cp037");

    // MIBenum: ????
    aliasTable.put("ibm273", "Cp273");
    aliasTable.put("ibm-273", "Cp273");
    aliasTable.put("cp273", "Cp273");
    aliasTable.put("273", "Cp273");

    // MIBenum: ????
    aliasTable.put("ibm277", "Cp277");
    aliasTable.put("ibm-277", "Cp277");
    aliasTable.put("cp277", "Cp277");
    aliasTable.put("277", "Cp277");

    // MIBenum: ????
    aliasTable.put("ibm278", "Cp278");
    aliasTable.put("ibm-278", "Cp278");
    aliasTable.put("cp278", "Cp278");
    aliasTable.put("278", "Cp278");

    // MIBenum: ????
    aliasTable.put("ibm280", "Cp280");
    aliasTable.put("ibm-280", "Cp280");
    aliasTable.put("cp280", "Cp280");
    aliasTable.put("280", "Cp280");

    // MIBenum: ????
    aliasTable.put("ibm284", "Cp284");
    aliasTable.put("ibm-284", "Cp284");
    aliasTable.put("cp284", "Cp284");
    aliasTable.put("284", "Cp284");

    // MIBenum: ????
    aliasTable.put("ibm285", "Cp285");
    aliasTable.put("ibm-285", "Cp285");
    aliasTable.put("cp285", "Cp285");
    aliasTable.put("285", "Cp285");

    // MIBenum: ????
    aliasTable.put("ibm297", "Cp297");
    aliasTable.put("ibm-297", "Cp297");
    aliasTable.put("cp297", "Cp297");
    aliasTable.put("297", "Cp297");

    // MIBenum: ????
    aliasTable.put("ibm420", "Cp420");
    aliasTable.put("ibm-420", "Cp420");
    aliasTable.put("cp420", "Cp420");
    aliasTable.put("420", "Cp420");

    // MIBenum: ????
    aliasTable.put("ibm424", "Cp424");
    aliasTable.put("ibm-424", "Cp424");
    aliasTable.put("cp424", "Cp424");
    aliasTable.put("424", "Cp424");

    // MIBenum: 2011
    aliasTable.put("ibm437", "Cp437");
    aliasTable.put("ibm-437", "Cp437");
    aliasTable.put("cp437", "Cp437");
    aliasTable.put("437", "Cp437");
    aliasTable.put("cspc8codepage437", "Cp437");

    // MIBenum: ????
    aliasTable.put("ibm500", "Cp500");
    aliasTable.put("ibm-500", "Cp500");
    aliasTable.put("cp500", "Cp500");
    aliasTable.put("500", "Cp500");

    // MIBenum: ????
    aliasTable.put("ibm737", "Cp737");
    aliasTable.put("ibm-737", "Cp737");
    aliasTable.put("cp737", "Cp737");
    aliasTable.put("737", "Cp737");

    // MIBenum: ????
    aliasTable.put("ibm775", "Cp775");
    aliasTable.put("ibm-775", "Cp775");
    aliasTable.put("cp775", "Cp775");
    aliasTable.put("775", "Cp775");

    // MIBenum: ????
    aliasTable.put("ibm838", "Cp838"); /* MDA */
    aliasTable.put("ibm-838", "Cp838"); /* MDA */
    aliasTable.put("cp838", "Cp838"); /* MDA */
    aliasTable.put("838", "Cp838"); /* MDA */

    // "Cp850"
    // MIBenum: 2009
    aliasTable.put("ibm850", "Cp850");
    aliasTable.put("ibm-850", "Cp850");
    aliasTable.put("cp850", "Cp850");
    aliasTable.put("850", "Cp850");
    aliasTable.put("cspc850multilingual", "Cp850");

    // "Cp852"
    // MIBenum: 2010
    aliasTable.put("ibm852", "Cp852");
    aliasTable.put("ibm-852", "Cp852");
    aliasTable.put("cp852", "Cp852");
    aliasTable.put("852", "Cp852");
    aliasTable.put("cspcp852", "Cp852");

    // "Cp855"
    // MIBenum: 2046
    aliasTable.put("ibm855", "Cp855");
    aliasTable.put("ibm-855", "Cp855");
    aliasTable.put("cp855", "Cp855");
    aliasTable.put("855", "Cp855");
    aliasTable.put("cspcp855", "Cp855");

    // "Cp855"
    // MIBenum: ???
    aliasTable.put("ibm856", "Cp856");
    aliasTable.put("ibm-856", "Cp856");
    aliasTable.put("cp856", "Cp856");
    aliasTable.put("856", "Cp856");

    // "Cp857"
    // MIBenum: 2047
    aliasTable.put("ibm857", "Cp857");
    aliasTable.put("ibm-857", "Cp857");
    aliasTable.put("cp857", "Cp857");
    aliasTable.put("857", "Cp857");
    aliasTable.put("csibm857", "Cp857");

    // "Cp860"
    // MIBenum: 2048
    aliasTable.put("ibm860", "Cp860");
    aliasTable.put("ibm-860", "Cp860");
    aliasTable.put("cp860", "Cp860");
    aliasTable.put("860", "Cp860");
    aliasTable.put("csibm860", "Cp860");

    // MIBenum: 2049
    aliasTable.put("ibm861", "Cp861");
    aliasTable.put("ibm-861", "Cp861");
    aliasTable.put("cp861", "Cp861");
    aliasTable.put("cp-is", "Cp861");
    aliasTable.put("861", "Cp861");
    aliasTable.put("csibm861", "Cp861");

    // MIBenum: 2013
    aliasTable.put("ibm862", "Cp862");
    aliasTable.put("ibm-862", "Cp862");
    aliasTable.put("cp862", "Cp862");
    aliasTable.put("862", "Cp862");
    aliasTable.put("cspc862latinhebrew", "Cp862");

    // MIBenum: 2050
    aliasTable.put("ibm863", "Cp863");
    aliasTable.put("ibm-863", "Cp863");
    aliasTable.put("cp863", "Cp863");
    aliasTable.put("863", "Cp863");
    aliasTable.put("csibm863", "Cp863");

    // MIBenum: 2051
    aliasTable.put("ibm864", "Cp864");
    aliasTable.put("ibm-864", "Cp864");
    aliasTable.put("cp864", "Cp864");
    aliasTable.put("csibm864", "Cp864");

    // MIBenum: 2052
    aliasTable.put("ibm865", "Cp865");
    aliasTable.put("ibm-865", "Cp865");
    aliasTable.put("cp865", "Cp865");
    aliasTable.put("865", "Cp865");
    aliasTable.put("csibm865", "Cp865");

    // MIBenum: ????
    aliasTable.put("ibm866", "Cp866");
    aliasTable.put("ibm-866", "Cp866");
    aliasTable.put("cp866", "Cp866");
    aliasTable.put("866", "Cp866");
    aliasTable.put("csibm866", "Cp866");

    // MIBenum: ????
    aliasTable.put("ibm868", "Cp868");
    aliasTable.put("ibm-868", "Cp868");
    aliasTable.put("cp868", "Cp868");
    aliasTable.put("868", "Cp868");

    // MIBenum: 2054
    aliasTable.put("ibm869", "Cp869");
    aliasTable.put("ibm-869", "Cp869");
    aliasTable.put("cp869", "Cp869");
    aliasTable.put("869", "Cp869");
    aliasTable.put("cp-gr", "Cp869");
    aliasTable.put("csibm869", "Cp869");

    // MIBenum: ????
    aliasTable.put("ibm870", "Cp870");
    aliasTable.put("ibm-870", "Cp870");
    aliasTable.put("cp870", "Cp870");
    aliasTable.put("870", "Cp870");

    // MIBenum: ????
    aliasTable.put("ibm871", "Cp871");
    aliasTable.put("ibm-871", "Cp871");
    aliasTable.put("cp871", "Cp871");
    aliasTable.put("871", "Cp871");

    // MIBenum: ????
    aliasTable.put("ibm874", "Cp874");
    aliasTable.put("ibm-874", "Cp874");
    aliasTable.put("cp874", "Cp874");
    aliasTable.put("874", "Cp874");

    // MIBenum: ????
    aliasTable.put("ibm875", "Cp875");
    aliasTable.put("ibm-875", "Cp875");
    aliasTable.put("cp875", "Cp875");
    aliasTable.put("875", "Cp875");

    // MIBenum: ????
    aliasTable.put("ibm918", "Cp918");
    aliasTable.put("ibm-918", "Cp918");
    aliasTable.put("cp918", "Cp918");
    aliasTable.put("918", "Cp918");

    // MIBenum: ????
    aliasTable.put("ibm921", "Cp921");
    aliasTable.put("ibm-921", "Cp921");
    aliasTable.put("cp921", "Cp921");
    aliasTable.put("921", "Cp921");

    // MIBenum: ????
    aliasTable.put("ibm922", "Cp922");
    aliasTable.put("ibm-922", "Cp922");
    aliasTable.put("cp922", "Cp922");
    aliasTable.put("922", "Cp922");

    // MIBenum: ????
    aliasTable.put("ibm930", "Cp930"); /* MDA */
    aliasTable.put("ibm-930", "Cp930"); /* MDA */
    aliasTable.put("cp930", "Cp930"); /* MDA */
    aliasTable.put("930", "Cp930"); /* MDA */

    // MIBenum: ????
    aliasTable.put("ibm933", "Cp933"); /* MDA */
    aliasTable.put("ibm-933", "Cp933"); /* MDA */
    aliasTable.put("cp933", "Cp933"); /* MDA */
    aliasTable.put("933", "Cp933"); /* MDA */

    // MIBenum: ????
    aliasTable.put("ibm935", "Cp935"); /* MDA */
    aliasTable.put("ibm-935", "Cp935"); /* MDA */
    aliasTable.put("cp935", "Cp935"); /* MDA */
    aliasTable.put("935", "Cp935"); /* MDA */

    // MIBenum: ????
    aliasTable.put("ibm937", "Cp937"); /* MDA */
    aliasTable.put("ibm-937", "Cp937"); /* MDA */
    aliasTable.put("cp937", "Cp937"); /* MDA */
    aliasTable.put("937", "Cp937"); /* MDA */

    // MIBenum: ????
    aliasTable.put("ibm939", "Cp939"); /* MDA */
    aliasTable.put("ibm-939", "Cp939"); /* MDA */
    aliasTable.put("cp939", "Cp939"); /* MDA */
    aliasTable.put("939", "Cp939"); /* MDA */

    // MIBenum: ????
    aliasTable.put("ibm942", "Cp942"); /* MDA */
    aliasTable.put("ibm-942", "Cp942"); /* MDA */
    aliasTable.put("cp942", "Cp942"); /* MDA */
    aliasTable.put("942", "Cp942"); /* MDA */

    // MIBenum: ????
    aliasTable.put("ibm943", "Cp943"); /* ibm.3158 */
    aliasTable.put("ibm-943", "Cp943"); /* ibm.3158 */
    aliasTable.put("cp943", "Cp943"); /* ibm.3158 */
    aliasTable.put("943", "Cp943"); /* ibm.3158 */

    // MIBenum: ????
    aliasTable.put("ibm948", "Cp948"); /* MDA */
    aliasTable.put("ibm-948", "Cp948"); /* MDA */
    aliasTable.put("cp948", "Cp948"); /* MDA */
    aliasTable.put("948", "Cp948"); /* MDA */

    // MIBenum: ????
    aliasTable.put("ibm949", "Cp949"); /* MDA */
    aliasTable.put("ibm-949", "Cp949"); /* MDA */
    aliasTable.put("cp949", "Cp949"); /* MDA */
    aliasTable.put("949", "Cp949"); /* MDA */

    // MIBenum: ????
    aliasTable.put("ibm950", "Cp950"); /* MDA */
    aliasTable.put("ibm-950", "Cp950"); /* MDA */
    aliasTable.put("cp950", "Cp950"); /* MDA */
    aliasTable.put("950", "Cp950"); /* MDA */

    // MIBenum: ????
    aliasTable.put("ibm964", "Cp964"); /* MDA */
    aliasTable.put("ibm-964", "Cp964"); /* MDA */
    aliasTable.put("cp964", "Cp964"); /* MDA */
    aliasTable.put("964", "Cp964"); /* MDA */

    // MIBenum: ????
    aliasTable.put("ibm970", "Cp970"); /* MDA */
    aliasTable.put("ibm-970", "Cp970"); /* MDA */
    aliasTable.put("cp970", "Cp970"); /* MDA */
    aliasTable.put("970", "Cp970"); /* MDA */

    // MIBenum: ????
    aliasTable.put("ibm1006", "Cp1006");
    aliasTable.put("ibm-1006", "Cp1006");
    aliasTable.put("cp1006", "Cp1006");
    aliasTable.put("1006", "Cp1006");

    // MIBenum: ????
    aliasTable.put("ibm1025", "Cp1025");
    aliasTable.put("ibm-1025", "Cp1025");
    aliasTable.put("cp1025", "Cp1025");
    aliasTable.put("1025", "Cp1025");

    // MIBenum: ????
    aliasTable.put("ibm1026", "Cp1026");
    aliasTable.put("ibm-1026", "Cp1026");
    aliasTable.put("cp1026", "Cp1026");
    aliasTable.put("1026", "Cp1026");

    // MIBenum: ????
    aliasTable.put("ibm1097", "Cp1097");
    aliasTable.put("ibm-1097", "Cp1097");
    aliasTable.put("cp1097", "Cp1097");
    aliasTable.put("1097", "Cp1097");

    // MIBenum: ????
    aliasTable.put("ibm1098", "Cp1098");
    aliasTable.put("ibm-1098", "Cp1098");
    aliasTable.put("cp1098", "Cp1098");
    aliasTable.put("1098", "Cp1098");

    // MIBenum: ????
    aliasTable.put("ibm1112", "Cp1112");
    aliasTable.put("ibm-1112", "Cp1112");
    aliasTable.put("cp1112", "Cp1112");
    aliasTable.put("1112", "Cp1112");

    // MIBenum: ????
    aliasTable.put("ibm1122", "Cp1122");
    aliasTable.put("ibm-1122", "Cp1122");
    aliasTable.put("cp1122", "Cp1122");
    aliasTable.put("1122", "Cp1122");

    // MIBenum: ????
    aliasTable.put("ibm1123", "Cp1123");
    aliasTable.put("ibm-1123", "Cp1123");
    aliasTable.put("cp1123", "Cp1123");
    aliasTable.put("1123", "Cp1123");

    // MIBenum: ????
    aliasTable.put("ibm1124", "Cp1124");
    aliasTable.put("ibm-1124", "Cp1124");
    aliasTable.put("cp1124", "Cp1124");
    aliasTable.put("1124", "Cp1124");

    // MIBenum: ????
    aliasTable.put("ibm1381", "Cp1381"); /* MDA */
    aliasTable.put("ibm-1381", "Cp1381"); /* MDA */
    aliasTable.put("cp1381", "Cp1381"); /* MDA */
    aliasTable.put("1381", "Cp1381"); /* MDA */

    // MIBenum: ????
    aliasTable.put("ibm1383", "Cp1383"); /* MDA */
    aliasTable.put("ibm-1383", "Cp1383"); /* MDA */
    aliasTable.put("cp1383", "Cp1383"); /* MDA */
    aliasTable.put("1383", "Cp1383"); /* MDA */

    // Specialized auto-detection for Japanese charsets
    aliasTable.put("jis auto detect", "JISAutoDetect");

    // MIBenum: 16/39
    aliasTable.put("jis", "ISO2022JP");
    aliasTable.put("iso-2022-jp", "ISO2022JP");
    aliasTable.put("csiso2022jp", "ISO2022JP");
    aliasTable.put("jis_encoding", "ISO2022JP");
    aliasTable.put("csjisencoding", "ISO2022JP");

    // MIBenum: 17/2024
    aliasTable.put("shift_jis", "MS932");
    aliasTable.put("ms_kanji", "MS932");
    aliasTable.put("csshiftjis", "MS932");
    aliasTable.put("windows-31j", "MS932");
    aliasTable.put("cswindows31j", "MS932");
    aliasTable.put("x-sjis", "MS932");

    // JIS-defined Shift JIS
    aliasTable.put("\u30b7\u30d5\u30c8\u7b26\u53f7\u5316\u8868\u73fe",
    "SJIS"); // JIS name
    aliasTable.put("pck", "SJIS"); // Solaris PCK

    // MIBenum: 18
    // Japanese EUC
    aliasTable.put("eucjis", "EUC_JP");
    aliasTable.put("euc-jp", "EUC_JP");
    aliasTable.put("eucjp", "EUC_JP");
    aliasTable.put("extended_unix_code_packed_format_for_japanese",
    "EUC_JP");
    aliasTable.put("cseucpkdfmtjapanese", "EUC_JP");
    aliasTable.put("x-euc-jp", "EUC_JP");
    aliasTable.put("x-eucjp", "EUC_JP");

    // For handing only JIS0202 and JIS0208 in linux
    aliasTable.put("euc-jp-linux", "EUC_JP_LINUX");

    // MIBenum: 874
    aliasTable.put("windows-874", "MS874");

    // MIBenum: 2250
    aliasTable.put("windows-1250", "Cp1250");

    // MIBenum: 2251
    aliasTable.put("windows-1251", "Cp1251");

    // MIBenum: 2252
    aliasTable.put("windows-1252", "Cp1252");

    // MIBenum: 2253
    aliasTable.put("windows-1253", "Cp1253");

    // MIBenum: 2254
    aliasTable.put("windows-1254", "Cp1254");

    // MIBenum: 2255
    aliasTable.put("windows-1255", "Cp1255");

    // MIBenum: 2256
    aliasTable.put("windows-1256", "Cp1256");

    // MIBenum: 2257
    aliasTable.put("windows-1257", "Cp1257");

    // MIBenum: 2258
    aliasTable.put("windows-1258", "Cp1258");

    // MIBenum: ????
    aliasTable.put("ibm33722", "Cp33722"); /* MDA */
    aliasTable.put("ibm-33722", "Cp33722"); /* MDA */
    aliasTable.put("cp33722", "Cp33722"); /* MDA */
    aliasTable.put("33722", "Cp33722"); /* MDA */

    // Russian KOI8-R
    aliasTable.put("koi8-r", "KOI8_R");
    aliasTable.put("koi8", "KOI8_R");
    aliasTable.put("cskoi8r", "KOI8_R");

    // Simplified Chinese
    aliasTable.put("gb2312", "EUC_CN");
    aliasTable.put("gb2312-80", "EUC_CN");
    aliasTable.put("gb2312-1980", "EUC_CN");
    aliasTable.put("euc-cn", "EUC_CN");
    aliasTable.put("euccn", "EUC_CN");

    aliasTable.put("big5", "Big5");
    aliasTable.put("big5-hkscs", "Big5_HKSCS");
    aliasTable.put("big5_hkscs", "Big5_HKSCS");
    // Added for future compatibility, explicit mapping to Unicode 2.1
    aliasTable.put("big5-hkscs-unicode21", "Big5_HKSCS");

    // Traditional Chinese
    aliasTable.put("cns11643", "EUC_TW");
    aliasTable.put("euc-tw", "EUC_TW");
    aliasTable.put("euctw", "EUC_TW");

    // Korean
    aliasTable.put("ksc5601", "EUC_KR");
    aliasTable.put("euc-kr", "EUC_KR");
    aliasTable.put("euckr", "EUC_KR");
    aliasTable.put("ks_c_5601-1987", "EUC_KR");
    aliasTable.put("ksc5601-1987", "EUC_KR");
    aliasTable.put("ksc5601_1987", "EUC_KR");
    aliasTable.put("ksc_5601", "EUC_KR");
    aliasTable.put("5601", "EUC_KR");

    aliasTable.put("ksc5601-1992", "Johab");
    aliasTable.put("ksc5601_1992", "Johab");
    aliasTable.put("ms1361", "Johab");

    aliasTable.put("windows-949", "MS949");

    // Thai
    aliasTable.put("tis620.2533", "TIS620");

    // Variants
    aliasTable.put("cp942c", "Cp942C");
    aliasTable.put("cp943c", "Cp943C");
    aliasTable.put("cp949c", "Cp949C");
    ========== 全エンコーディング名別名一覧 END ==========