2013年12月8日日曜日

Windows Azure “仮想マシン”作成

マイクロソフト BizSpark審査承認されました。
http://www.microsoft.com/ja-jp/mic/bizspark/

MSDN サブスクリプション を無料で利用できます。
また、Windows Azure を3年間で最大 ¥454,500分を無償で利用できます。
(登録月¥17,000,以降毎月¥12,500分が提供される。)
Windows Azureを有効化するときに、携帯電話を使った認証(SMS認証)がありますが、
クレジットカードの登録とかは必要ありません。

今回、Windows Azureで“仮想マシン” Windows 2008 Server R2 Datacenterを作成してみました。
私は、さくらでVPS(仮想専用サーバ)を2台(LinuxとWindows)を借りていますがこれと似たようなものですがちょっと制限があります。

【Windows Azure 仮想マシン】注意事項

1)外部に公開するポートは、エンドポイントで登録しないといけない。
2)untrust側のpingは送受信ともフィルターされているっぽい。
3)IPアドレスの逆引きは設定されていない。
   *メールサービス関連を実装するときは要注意です。
    逆引きができないので、メールサーバによっては拒否されます。
    SMTP認証等を実装している外部のSMTPサーバを使う必要があります。

   *場合によっては、逆引きされているIPもあります。
    これは、たまたまマイクロソフトが別サービスのため設定しているものです。
    例)book.azurewebsites.net
      waws-prod-am2-003.cloudapp.net [137.117.224.218]
      nslookup 137.117.224.218
      名前:    dreamspark.ro
      Address:  137.117.224.218

4)使用制限(デフォルト)をかけていますので、無償分のクレジットを超えるとその月は停止されます。
   *これに関しては超えないような、構成を選択しているのでほぼ問題ないかと思います。
   *制限は削除できますが、削除したら制限を再度有効化できません。

5)”仮想マシン” の新規作成は“ギャラリー” から好きなものを選んで作成する。
   http://www.windowsazure.com/ja-jp/pricing/details/virtual-machines/
   *仮想マシン以外にクラウドサービス、ストレージが作成されます。
   *設置場所は、東アジアもありますが、米国西部にしました。
    これは、送信データ転送料が安いのと、踏み台サーバにした時に何かと良いので。
   *インストールモデルは英語版のみとなりますが、言語パックダウンロードして
    日本語を適用させると問題なく日本語化できます。こちら参照↓
    http://yomon.hatenablog.com/entry/2013/06/15/%E3%80%90Azure%E3%80%91%E8%8B%B1%E8%AA%9E%E7%89%88Windows_2008R2SP1%E3%82%92%E6%97%A5%E6%9C%AC%E8%AA%9E%E8%A1%A8%E7%A4%BA%E3%81%B8%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E6%89%8B%E9%A0%86

6)料金について
  ・仮想マシン :S (A1) 1CPU/ MEM 1.75GB ¥7.48 (~ ¥5,561/月)
  ・クラウド サービス:S (A1) 1CPU/ MEM 1.75GB ¥6.65 (~ ¥4,982.37/月)
    ・ストレージ: 最初の 1 TB 1/月 ¥7.89 (GB あたり) ¥5.82 (GB あたり)
    ・送信データ転送(Windows Azure データ センターから出ていくデータ):
       最初の 5 GB/月 1 無料
       5GB~10TB 2/月 ¥9.97 (GB あたり)
多分、無償でいけそう。

【仮想マシン Windows 2008 Server R2 Datacenter】
    CPU:AMD Opteron 4171HE 2.09GHz /MEM:1.75G

  とりあえず今のところ使い道がないので、テストでWEBOSGRID(opensim)に接続しました。
  OSGRID(opensim)は、1SIMの場合TCP,UDP 9000を開ければ良いので、Windows Azureの
  仮想マシンのエンドポイント設定で、TCP 9000、UDP 9000を登録しておきます。
  
  <サービス>
    ・Apache 2.2 / php5.4.7 / Mysql5.5
    ・Opensim 0.8.0

2013年11月18日月曜日

OSgrid OpenSimulator 0.8.0.dev.f94d07f 11-16-2013 リリースされました。

SNS MANIAXXのOpenSimのトピックより、
=================
.NET Framework:Version 4.0以上
Mono:Version 2.10.8.1以上
=================
の情報を頂いて、monoを最新の3.2.3にしてopensim-11162013.v0.8.0.f94d07f
http://www.osgrid.org/index.php/downloads
を動作(osgrid: aska)させました。 * mono 2.10.8でも動作しました。

以前、libomv-0.9.1で作ったlogininfo.exeで
opensimにログインできるかチェックするプログラムですが、opensim-11162013.v0.8.0.f94d07fで起動させると、

[root@www opensim-11162013.v0.8.0.f94d07f]# /usr/local/bin/mono logininfo.exe firstname secondname password "aska/20/60/40" "http://login.osgrid.org"
Missing method .ctor in assembly /projects/opensim1162013.v0.8.0.f94d07f/SmartThreadPool.dll, type System.Runtime.Versioning.TargetFrameworkAttribute
Can't find custom attr constructor image: /projects/opensim-11162013.v0.8.0.f94d07f/
Aborted
でabortして動作せず。

「System.Runtime.Versioning.TargetFrameworkAttribute」でエラーなので、
多分、NET Framework のバージョン関連でエラーになっているのかもということで、
logininfo.exeのコンパイル時の対象フレームワークを見てみると今まで3.5でコンパイルしていたので、
これを.NET Framework:Version 4にしてコンパイルして実装しました。(正常動作しました。)

logininfo.exeはこちらにUPしておきます。

http://dip.picolix.jp/free/soft/logininfo.exe
http://dip.picolix.jp/free/soft/osgrid_login.pl.txt

使い方:
 1) logininfo.exeを OpenSim.exeと同じフォルダーにコピー。
 2) cmd窓(dos窓)で
     logininfo.exe firstname lastname password simname/x/y/height login-server-url
     *linuxはmonoで実行して下さい。(.NET Framework 4以上)

    例)logininfo.exe  aaaaa bbbbb xxxxxx "Wright Plaza/128/128/40" "http://login.osgrid.org"
      Login:...aaaa bbbbb
      Login success Welcome to OSGrid...
      Teleported [Wright Plaza/128/128/40]
      Logout:...

      戻り値
      //windows: echo %ERRORLEVEL%
      //linx : echo $?
   // 0:正常 1:失敗 2:ログインできたものの該当SIMに行けず。 3:失敗


2013年10月15日火曜日

CentOS6 tomcat7の起動が遅い問題対策。

「メモ」

1.tomcat7 ipv6無効及びrandamドライバー変更

 1) /etc/sysconfig/tomcat7に以下を追加。
  JAVA_OPTS="-Djava.net.preferIPv4Stack=true -Djava.security.egd=file:/dev/./urandom"

 ※-Djava.net.preferIPv4Stack=trueは起動時のservlet50xエラー回避
   -Djava.security.egd=file:/dev/./urandom"は起動時に数十秒かかってしまう場合がある問題の回避

  起動中に乱数生成で、/dev/randomが使われると
 「エントロピープールが空の場合、/dev/random から読み出そうとするとブロックされ、環境ノイズの収集がなされるまで待たされる。」
 wikiより。http://ja.wikipedia.org/wiki//dev/random

 で、代わりにノンブロッキングのurandomを使う。
 http://wiki.apache.org/tomcat/HowTo/FasterStartUp
 

2.web.xmlチューニング

 1) /project/sysk/WEB-INF/web.xmlのweb-appの後にmetadata-complete="true"を追加。

<web-app metadata-complete="true"
        xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2e
e/web-app_2_4.xsd"
        version="2.4">

 ※WEB-INF/lib のアノテーションをVMがスキャンするのを無効にする。


 =============================
 1.ipv6そのものを無効にしたい時

 1) /etc/sysconfig/networkに以下を追加。
  NETWORKING_IPV6=no
 2) /etc/modprobe.d/disable-ipv6.confファイルを作成して以下を書く。
  options ipv6 disable=1
 3) ip6tablesサービスを起動している場合。
  chkconfig ip6tables off
 4) リブート
 ==============================

2013年10月12日土曜日

Softbank iPhone3GからiPhone5Sへ 機種変更優遇 25,000ポイント付与もらえました!

SoftbankのiPhone3GからDOCOMOのiPhone5S(16G)にMNPで乗り換えようとして9/21にMNP発行してもらってDOCOMOに予約。
=>
DOCOMOから昨日入荷TELがあり、MNPの有効期限が切れていたので、*5533にMNPをまた発行手続きすると・・・

乗り換え理由とかいろいろ聞かれて、最後にまあとりあえずDOCOMOに乗り換えますと言ったところ、お客様のTELに25,000ポイント付与が当たってますと言われました!!!
当たっている人は少なく、契約年数、使用料とランダム抽選でポイント付与されるらしい。

そんなキャンペーンなんて聞いてないし、前回のMNP発行でもなかったしネットで調べたところありました。

http://amazonews.org/225/
*5533からMNP手続きすると
5000,10000,15000ポイントの付与が場合によりあるらしい。
今回、私は25,000ポイント(機種変更のみに使える)なので上位の方です!

ということで、25,000ポイントもあればiPhone5S(64G)でもいけるので、
早速DOCOMOさんには悪いけど予約キャンセルしました。

2013年10月1日火曜日

パズドラ テクダン+タマ5倍 聖獣達の楽園で たまドラ+がドロップ

テクダン+タマ5倍で、聖獣達の楽園行ったら、たまドラの+タマが落ちた。能力覚醒用モンスターは+になれるんですね。

2013年8月25日日曜日

Twitter のAPI 変更 : Net::Twitter::Lite

TwitterのAPI 1.1へのバージョンアップで、とうとう6/12にNet::Twitter::Liteが動かなくなったので、
Net::Twitter::Lite::WithAPIv1_1をインストール。
ブログ連携のperlプログラムを、
use Net::Twitter::Liteから
use Net::Twitter::Lite::WithAPIv1_1にして動作するようになった。


その他、twitter APIを利用したOSGRIDからのtwitter連携も修正してまた動作するようになった。

2013年8月23日金曜日

Vidyo 技術者認定トレーニング受講してきました。

会社より3日間出張で、Vidyo JapanにてVidyo 技術者認定トレーニング受講してきました。
今日最終日で、35問のQuiz TESTがあり29問正解で合格でした。
東京まで行ってきたので合格して何よりです。

Vidyoとは、最新の映像圧縮技術(H.264/SVC)を使用したテレビ会議システムです。
SVCアーキテクチャーとして特許も取得されている今時の技術なのです。^^
VidyoGatewayを使用すればPolycomとかレガシーな機器も接続できます。

グーグルのビデオチャット「Google+ ハングアウト」、
任天堂のWiiなどにもSVCが組み込まれています。すばらしい・・・



http://japan.vidyo.com/technology/
http://businessnetwork.jp/Detail/tabid/65/artid/2372/Default.aspx

2013年8月21日水曜日

L2TP-VPN に Windows 7 でエラー789で接続できない。

Windows 7 で、VPN接続でL2TP-VPNを作成して接続を試みるも、「エラー789で接続できない。」

解決方法:
 1) regeditで、"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent" を
   作成し2をセットする。

   ここを参考:
   http://network.station.ez-net.jp/client/remote/vpn/l2tp-win7.asp 

  それでも、エラー789 ><

 2) サービスを眺めていたら、IPsec 関連のサービスが2つ無効になっていたので、
  それを自動に変更した。
  ・IKE and AuthIP IPsec Keying Modules 無効→自動
  ・IPsec Policy Agent 無効→自動


これで動作しました。明日からのセミナーは自分のPCで操作できるかな。

2013年8月18日日曜日

これか、3Dのメロディーラインを表示 MIDITrail

【自由の翼(TVサイズ)】 -進撃の巨人- オーケストラアレンジ
http://www.youtube.com/watch?v=Zgn9VrBmCOQ
【オーケストラ】進撃の巨人OPメドレー「自由への進撃」(Orchestral arrange "Attack on Titan" OP medley)
http://www.youtube.com/watch?v=rtCTFdhEdYg


で使われている、で使われている、MIDIの信号表示で3D風になってるのですが、なんのソフトが探してみたところ、
3Dの宇宙空間に複数トラックのノートが浮かぶMIDIプレイヤー「MIDITrail」
でした。

すごいなこれ。しかしこういうのをみるとやってみたくなる性分でして、
ずっとずっと昔作曲した曲があるので、このソフトに食わしてみるかな・・

2013年7月28日日曜日

Android でのスクリーンキャプチャー

前回の宿題で、Androidでアプリからスクリーンキャプチャーを取る方法です。

Androidでアプリからスクリーンキャプチャーを取るにはroot権限がないとだめです。(一部機種でrootを取らなくてもできるものもあります。)

Android 4.0以降では、root化してあればscreencap,screenshotコマンドで簡単にとれるのですが、Android バージョン2.3では使えません。
フレームバッファー /dev/graphics/fb0から直接取得することになります。
(このデバイスは,rootでないとアクアセスできません。)

Android 4.0以降では、電源ボタン+ボリューム(↓)同時押しで取れますが、アプリでこのキーのエミュレートをしても、「電源ボタン」押下は、やはりrootでないと反応しません。


今回、自分使用している機種:SONY Xperia SO-01C 480x854 Android バージョン2.3.2では、Google Playにアップされているツールはどれも正常にとれないのです。赤みがかかった画像になる。RBGAの配列が違うようです。しかたがないので作ることにした。

自分のスマホはrootを取っているので、今回はうまくいけば、アプリにする予定
(公開は今のところ考えていません。)

1) フレームバッファーから生データを取得
#cp /dev/graphics/fb0 /sdcard/fb0

fbのファイルサイズは、3,410,432で、480x854で1ピクセル4バイトとすると
+,-,x,/を思考錯誤して以下の式にたどりついた。

(3410432-(65536 x 2))/2 = 480 x 854 x 4

で、元サイズから65536x2バイト余分引いて、ダブルバッファリングしているので1/2すると、ちょうど480 x 854 x 4になります。

2) 無理やりBMPにしてみる。

fb0にヘッダー54バイトを加えます。
unsigned char header[54] = {
    0x42, 0x4d, 0x36, 0x05, 0x19, 0x00, 0x00, 0x00,0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00,
  0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x56, 0x03,0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x05, 0x19, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};


一応、画像になってますが、上下反転して、色も少しおかしいです。RとBが入れ替わってる。

3) データ変換する。行単位で上下を変換し、BGRA -> RGBAにする。


#include <stdio.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>

#define BMP_SIZE (3410432-(65536*2))/2

unsigned char srcdata[BMP_SIZE];
unsigned char outdata[BMP_SIZE];

unsigned char header[54] = {
    0x42, 0x4d, 0x36, 0x05, 0x19, 0x00, 0x00, 0x00,0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00,
    0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x56, 0x03,0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x05, 0x19, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

int main(int argc, char *argv[]){

int fd,fd_out;
long i,j;

unsigned char c;
unsigned char *p;

fd = _open("fb0",O_RDONLY | O_BINARY );
if(fd == (-1)){
return(-1);
}

p = srcdata;

//_read(fd,srcdata , 3410432 - (65536 * 2));
for(i = 0 ; i < BMP_SIZE ; i+= 53760){
_read(fd,p,53760);
p += 53760;
printf("%i\n",i);
}

fd_out = _open("fb0-001.bmp",O_CREAT | O_WRONLY | O_TRUNC | O_BINARY,S_IREAD | S_IWRITE );
if(fd_out == (-1)){
return(-1);
}

//これだと、上下逆さ&色抜け(R<->B)
//_write(fd_out,header,54);
//_write(fd_out,srcdata,(3410432 - (65536 * 2))/2);

//------------------------------------

unsigned int width = 480;
unsigned int height = BMP_SIZE  / 480 / 4;


        //上下反転
for(i = 0; i < height; i++){
for(j = 0; j < width * 4; j++){
outdata[(height - 1 - i) * width * 4 + j] = srcdata[i * width * 4 + j];
}
}
//R,B入れ替え
int cnv = 0;
for(i = 0 ; i < BMP_SIZE ; i += 2){
if(cnv == 0){
p = &outdata[i];
c = outdata[i];
cnv++;
}else{
*p = outdata[i];
outdata[i] = c;
cnv = 0;
}
}

_write(fd_out,header,54);
_write(fd_out,outdata,BMP_SIZE);

_close(fd);
_close(fd_out);
}


こうすると、正常な画面になります。これで、スクリーンキャプチャーツールが作れます。(要root)

*root化状態でパズドラを動かすとデータが初期化されますので注意が必要です。といっても/system/bin/su,/system/xbin/su,/sbin/suのようにsuがなければ大丈夫です。


参考:
ビットマップフォーマット
http://www.kuwalab.net/technics/bitmap/
RGB565の時は、16bit のデータフォーマットなので
少し調整が必要です。
http://android-dev-log.ldblog.jp/archives/11346611.html

2013年7月15日月曜日

DBD::Pg::st execute failed: ERROR: invalid input syntax for integer: ""

とある検索データ作成中です。

perlのDBD利用での、postgresデータベースのintegerへのNULL値のinsertエラーですが、以前は、
====
例)
dummy表:
 no integer
 name character varying
 level intger
====

$insert = "insert into dummy (no,name,level) values (?,?,?)";
$sth_insert = $dbh->prepare($insert);
$data = "null"; #とか、$data = ""でもいけた時もあった。
$sth_insert->bind_param(1,"TEST",$data);
$sts = $sth_insert->execute();

で、bind_paramの方で、NULL判断してくれてintgerにNULL値が入ってくれてたのにこれだとエラーする。
当然、$data = ""ではだめで、結局 $data = undef;
として、変数そのものをundef(未定義値)にしてOKとなった。

*自分が使ってるphpPgAdminもデータ挿入で、intger項目未入力だと""エラーとなる。
いつからこんなことに。PostgreSQL 8.?以降から。旧システムからの移行するとき注意が必要・・

2013年6月16日日曜日

木の歴龍 テクニカルダンジョン やっとグリフォン 最終日やっとゲットできた。

6/4から超級と地獄級でグリフォン追加されましたが、全然遭遇せず。
やっと最終日の2倍期間で、ゲットできました。
5Fに向けてスキル貯め調整してたけど、4Fで遭遇して2ターンで倒せきれずここは、コンティニューした。

超級、地獄級と合わせて通算36周はしたかと思います。



2013年5月28日火曜日

PostgreSQL インポートエラー

サーバリプレイスの為、PostgreSQL 8.1 コードセットUTF-8で作られたデータベースをpg_dumpでexportして、
新しいサーバのPostgreSQL 8.1にimportしようとしたところ、
invalid byte sequence for encoding "UTF8": 0xc030
でimportできない。(500MぐらいのDB)データ中に不正なコードがあるようで、
手当てするにもいったいどれだけあるのかも不明・・・

そこで、以下の手順を思いついた。nkfでUTF-8からUTF-8に変換したらいいのではないかと。

nkf -xw --no-best-fit-chars src.dmp > dst.dmp
dropdb abcd
createdb abcd
psql abcd < dst.dmp

importできました。メモに残しておきます。
結局、src.dmp と dst.dmpの差分を取ると、文字化けしていたレ―コードは2レコードだった。


※ -xは、半角カナは半角カナのままにする。
--no-best-fit-charsは、適当なキャラクターに変換しない。(例:全角「-」は全角「-」のまま)

2013年5月26日日曜日

パズドラ: Pazdof パズドフ for Android / Xperia arc (SO-01C) 2.3.2

Pazdof パズドフは、hiehieさんが作られているパズドラのコンボ解析アプリです。

Androi4.0以上だと、「パズドラCombo」があり解析に必要なスクリーンショットもroot権限なしで、電源ボタン+ボリューム(↓)同時押しで取れるのですが、自分の持ってるXperia arc (SO-01C) は、スクリーンショットはroot権限がないととれません。
しかもAndroid 2.3.2でそもそも「パズドラCombo」が使えません。

ここぞという時に使いたいので、Pazdof パズドフを使って見ることにしました。

<必要なツール>
■PCツール
・Android-SDK (adb)
 http://developer.android.com/sdk/index.html
・ffmpeg.exe
  http://blog.k-tai-douga.com/category/359294-1.html
  にコンパイル済みのものが配布されていました。

 *スクリーンショットを取るには、USBでPCと接続してPC上で取る必要があります。
  他のスマホ機種だとroot化していれば、アンドロイドアプリで取れるのですが、  Xperia arc 2.3.2だと全体的に赤みがかかってしまいます。
  Xperia arcはRGBXで、どのアプリもXRGBフォーマットで変換しているようで、使えません。

■Androidアプリ
・Pazdof パズドフ for Android
  https://play.google.com/store/apps/details?id=jp.hiehie.pazdof


<設定>
●PCとXperiaをUSBで繋げておく。
DOS窓で、以下を実行。-pix_fmtは、rgbaです。rgb32だと赤が抜けて青みになります。
フレームバッファから直接rawファイルをPULLして、ffmpegでpngに変換します。

1) adb pull /dev/graphics/fb0 fb0
2) ffmpeg  -vcodec rawvideo -f rawvideo -pix_fmt rgba -s 480x854 -i fb0 -f image2 -vcodec png c:\temp\image001.png

3) adb push C:\temp\image001.png /mnt/sdcard/Pictures/Screenshots/

●XperiaでPazdof パズドフ起動(Android 2.3.3以上ですが、2.3.2でも動作しました。)

1) [開始]ボタンを押します。
 ・スクリーンショット保存場所:デフォルト設定でOK。
 ・右90度回転はチェックを外す。
 ・ドロップ位置の調整(Y座標) -16でフィットしました。
  正しい位置にくると、解析結果が自動で表示されます。
 ・ルートの表示位置の調整(Y座標) -27ぐらい。

以上で、パズドラを起動すればPCでスクリーンショットを取ってAndroidに転送すれば自動で解析ルートが表示されます。
(*PCからのコマンド実行は、BATファイル作成してファイル名も時間を含むようにすると良い。)


[追記]
Xperia arc 2.3.2 でのスクリーンショットが赤色な謎がこの機会で分かった。
これで、自力でスクリーンショットアプリ作れます。(root化必要ですが)
/dev/graphics/fb0のフレームバッファーをRBGに変換すれば良いだけですので、
以前、カメラアプリを作った時のコンバートが利用できるかと。
https://play.google.com/store/apps/details?id=jp.picolix.camera.controll
http://dip.picolix.jp/disp9.html


2013年4月29日月曜日

Nexus 7 root化したらパズル&ドラゴンズが動かなくなってしまった。


Nexus 7にパズドラ(パズル&ドラゴンズ)入れて遊んで見たんですが、その後root化したらパズドラが動かなくなってしまった。

どうも、
/system/app/Superuser.apk
/system/xbin/su
この2つがあるとだめなようで、/system/app/Superuser.apkは、
/data/app/Superuser.apkに移動して、/system/xbin/suはとりあえず、suuにrenameして、
動作するようになった。

*書き換えメモ:/system フォルダを書き込み可能にする
$ adb shell 
$ su
# mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system


2013年4月24日水曜日

AndroidでICカード NFCタグを読み込み


会社で、開発用にNexus7を買ったのは実は、NFCタグを読み込みたかったのです。
(他の理由もありますが。)

http://www.atmarkit.co.jp/ait/articles/1211/27/news072.html

からサンプルコードを頂き、コンパイル&GOとしてみたところ、
[2013-04-24 00:46:27 - NfcDiscover] No Launcher activity found!
[2013-04-24 00:46:27 - NfcDiscover] The launch will only sync the application package on the device!
え?どういうこと?しばし悩むこと小一時間。
通常は、
<intent-filter>
       <action android:name="android.intent.action.MAIN" />
       <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
ですが、これがなくてactivityが見つからないし、アイコンも登録されない。ただし設定-アプリのリスト中には存在している。

The launch will only sync the application package on the device!
=> ランチャーは、デバイスの同期で起動って書いてある。英文を読めば良かったのですね。
もう、一行目のNo Launcher で全て読み飛ばしてた!
そういうことです。これで問題なかったのです。

ということで、ICOCAカードをNexus7の背面上部に合わせると反応しました。


手持ちのICカードを調べてみると。
  1. ICOCA                       NfcF
  2. 京都ぷらすOSAKA PiTaPa NfcF
  3. JAL MILEAGE BANK        NfcF
  4. 運転免許証                 IsoDep/NfcB


となっていました。運転免許証 は3月に更新したばかりでICカードになってました。^^


Android Nexus7 で CrenaCam起動しない。


会社で、開発用にNexus7を入手したのでまず、CrenaCamを入れようとしたけど、Google Playで検索してもCrenaCam検索しても出てこないし、直接、URLで野良アプリ風でダウンロードしても、Androidで「お使いの端末はこのバージョンに対応していません。」のメッセージ。


デバッグしてみたところ、
Camera.open();
で落ちる。
http://stackoverflow.com/questions/16039670/android-camera-preview-code-not-working-with-nexus7-surfaceview-error
を見ると。

1)The problem is that Camera.open() will return null if there is no rear camera:
とのことで、フロントカメラは、Camera.open(0);にしろと記載があった。
で、Android 2.1だと、このパラメータは使えません。
Android 2.3.3だと、Camera.open(0);が使えた。

2)オートフォーカス設定で、
camera.setParametersを使ってセットしていますが、ここでも落ちる。
try{}chatch{}で逃げる。

以上でとりあえず、CrenaCamが起動しました。
ん~。Google本家のハードなのにいろいろと面倒です。


2013年4月22日月曜日

oracle プロシージャーのインポートに6時間がかかる


【メモ】

本番システムのoracleデータベースをexportしたものをimportしたのですが、プロシージャー以外はすんなりimportできましたが、プロシージャー(150本)は、6時間ぐらいかかってしまった。
(週末にimportを動かしたまま放置して、今朝みたら全部正常にimportできていた。)

プロシージャーがなぜこんなにも時間がかかったかみたところ、各プロシージャーの作成時間を調べてみると、大体30分区切りで一群のプロシージャができている模様。
どれがネックになっているか見てみるとどれも、データベースリンクを使用しているプロシージャーでした。

本番は、データベースリンク使っているのですが、今回開発しているところは、データベースリンクはいらないので、当然ありません。
データベースリンクが引けないので、多分タイムアウトするまで待っているものと思われます。

インポート時だけタイムアウトを短く設定できるか、精査不要のオプションがあればいいのに。。。

==== 追記 ====

インポートのCOMPILEオプションはデフォルト"Y"みたいですので、これを"N"でやれば
早かったかも。

imp system/xxxxxx file=abc.dmp fromuser=user1 touser=user2 ignore=y compile=n

2013年4月4日木曜日

Android 開発環境で IntelliJ にしてみた。


2年前 CrenaCam 0.9.2.5を作った時、Eclipseを使ってて、今回EclipseをバージョンアップしてAndroid 開発環境を最新にしようとしましたが、なんかユーザインターフェースがすごく変わってしまって、以前のProjectもimportしなくてはならず、なんとなくうまくProjectが操作できない。

そこで、 IntelliJというものがあり、こちらで紹介されていたので早速インストールしました。
http://www.devlog.alt-area.org/?p=1591

Import Projectで、以前作ったCrenaCamera-Release-0.9.2.5-flashをインポートして、RUNで動作しました。

署名付きAPKのエクスポートで、コマンドラインで作った以前のキーファイルを使えるか?
使えないと、Google Playに登録しているので違うアプリとして認識されてしまい困ったことになります。

Build->Generate Signed APKで作成します。以前作ったキーファイルを指定して
Key store password,Key alias,Key passwordの3つを入力してCameraCam.apkを作成します。
*↑の3つを忘れていたら同じデジタル署名は作成できません。


正式版のCrenaCamがインストールされた状態で、

C:\Android\android-sdk\tools>adb install -r C:\work\android\CrenaCamera-Release-0.9.2.5-flash\CameraCam.apk
1033 KB/s (134450 bytes in 0.127s)
        pkg: /data/local/tmp/CameraCam.apk
Success

で、デジタル署名は前と同じ(当然か・・)でUPDATEできたのでこれからはIntelliJを使うことにします。


*ちなみに、Build->Generate Signed APKで新たに署名を作ってインストールすると、
C:\Android\android-sdk\tools>adb install -r C:\work\android\CrenaCamera-Release-0.9.2.5-flash\CameraCam.apk
518 KB/s (134834 bytes in 0.254s)
        pkg: /data/local/tmp/CameraCam.apk
Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]
のようなことになり失敗します。(この場合は元のアプリを削除すればインストールできます。)


2013年3月31日日曜日

ロジテック LVR-SD100BK ドライブレコーダ付けてみた


ヨドバシカメラのポイントが余ってたので、14000ポイントぐらいでロジテック LVR-SD100BKを買いました。
車に取り付けて試し撮りしました。

   ・外からみると野暮ったいですが。まあいいでしょう。

1)録画は、24秒毎にファイルが生成され2GバイトのSDカードにループで保存されていきます。
2)加速度センサー内蔵で、衝撃を受けた前後の記録も自動で保存される。
 *任意時点も手動でフラグボタンを押せば前後のデータが自動保存される。
3)シガーソケットにつないでいるので、エンジン始動で自動的に録画開始となる。
 機能的には申し分ないです。
 では、さっそく記録した動画をみてみましょう。レコードビューアソフトが付いてくるのでパソコンにAVIで保存して、24秒単位のAVIファイルをVirtualdubツールで結合しました。




  30万画素、フレームレートは15fpsです。記録・証拠用には15fpsで十分ですが、
  ドライブ 観光風の記録を残すなら、もう少し画素数とfpsが多い方が良いです。



2013年3月22日金曜日

交通系ICカードに、「京都ぷらす OSAKA PiTaPa」を持つことに


以前ICOCCAを持っていましたが、ここ2年ぐらい使っておらず、今回「京都ぷらす OSAKA PiTaPa」を持つことにしました。

通勤経路で乗ってる近鉄、京都の地下鉄で割引もあるし、ポイントも貯まるのでいいかなと。

そういえば、「 交通系ICカードの全国相互利用サービス」って3/23からなんですね。

2013年3月21日木曜日

あるプロジェクトの本番投入


今日は、あるプロジェクトの本番投入で、投入後の動作確認、打ち合わせの席上でユーザ皆さんから”分かりやすいユーザインターフェースですね”とお褒めの言葉を頂きました。またシステムフロー資料も良くできて分かりやすいと評価を頂きました。
(まあ、実際作成したのは私ではなくて、担当SE(女の子)なんですが)

作成時は、さりげないユーザインターフェース(ユーザが何も疑問を抱かないようなインターフェース)をこういうふうに作ってと、サンプルコードを担当SEに渡して、作ってくれました。(良くできています。ありがとです。)

また、システムフロー資料もユーザが理解でき、かつ作る側にも有用な資料を作ってくれました。
(何回の指導でここまでできたので、素養は十二分にあるかな。)

で、内心良くできてるなー、でもユーザさんは気が付かないだろうなーと思っていたのですが、なんと、”分かりやすいユーザインターフェースですね”と言って頂けたので嬉しかったです。

すごいですね、とかいいですねとか言われても、それほど感動しません、そういう仕様を満たすものを作ってるので。
こういうことは、過去たくさんのプロジェクトをやってきましたがそうは滅多に言われません。

ということで、ブログにメモ。。。

2013年3月17日日曜日

移転テスト

Bloggerにブログ移転しました。
[メモ]重要 BloggerのプロフィールをGoogle+ プロフィールに関連付けると、投稿者名が全て、本名に;;

・元に戻すには、 http://blog.m-y-p.com/2011/10/googlebloggergoogle.html を参考に、
http://www.blogger.com/revert-profile.g で元に戻せた。 

・ウェブマスター ツールのサイトマップの追加は、 http://picolix.blogspot.jp/atom.xml?redirect=false&max-results=1000 というようにすればOK 記事数をmax-results=に指定する。

2013年3月11日月曜日

SMAIL v4.16にバージョンアップしました。

UTF8に変換して送信できるようにしました。エンコードは8bitだけの予定でしたが、他の、メールクライアントを見てみるとbase64やquoted printableも対応しているようなのでこれも対応しました。SMAIL
【バージョンアップ内容】
 1) キャラクターセット:UTF8,エンコード 8bit/base64/quoted printableで送信対応

-c: -c
キャラクターセット:ISO-2022-JP エンコード 7bit (-c未指定時のデフォルトです。)
-cj
キャラクターセット:ISO-2022-JP エンコード 7bit
-cu8
キャラクターセット:UTF8 エンコード 8bit
-cub
キャラクターセット:UTF8 エンコード base64
-cuq
キャラクターセット:UTF8 エンコード quoted printable

[参考]
http://www.atmarkit.co.jp/ait/articles/0104/10/news002.html
http://ja.wikipedia.org/wiki/Quoted-printable

2013年3月10日日曜日

なばなの里 ウィンターイルミネーション 見てきました。

混雑を予想して、3時前に到着し園内を散策。今の時期は、しだれ梅が開花しています。
ぽかぽかようきだったので、ベンチでうとうと。
ウィンターイルミネーションは、6時10分点灯でした。相当な混雑&花粉症による涙目とくしゃみ・・・



2013年3月5日火曜日

SMAIL UTF8の対応

前回、「IBM拡張文字->NEC選定IBM拡張文字変換」に対応して、拡張文字の文字化け対応致しましたが、今度はUTF8変換にも対応予定です。
とりあえず目途がたったので、また週末に改修予定。。。あ、週末は旅行に行くんだった・・
[窓の杜ダイジェストニュース3/4]
http://www.forest.impress.co.jp/docs/digest/index201303.html

SMAIL改修方針:メモ
【utf-8対応】

1.本文:
1) charset="utf-8" 、content-Transfer-Encoding:は 8bitにして、
  8ビットバイナリ―コードで出力。

2.サブジェクト、漢字添付ファイル名、漢字ニックネーム
1) utf-8でMIMEエンコード
=?utf-8?B?xxxxxxxxxxxxxxxx=?=

※漢字ニックネームはフリー版では使えません。

3.添付ファイルは今まで通り。
1) content-transfer-encoding:base64


肝心のsjisからutf8への変換ですが、MultiByteToWideCharでCodePageにCP_UTF8を指定すればOK。
Windows CEは、CP_UTF8は未サポート。

2013年3月3日日曜日

SMAIL v4.15にバージョンアップしました。

SMAIL v4.15にバージョンアップしました。

【バージョンアップ内容】
 1) IBM拡張文字をNEC選定IBM拡張文字に自動変換する。(文字化け対策)
これの「mail : IBM拡張文字->NEC選定IBM拡張文字変換」対応です。
 2) openSSL 1.0.1eにライブラリをバージョンアップ。
セキュリティー対策
 3) -Bオプション 文字列を暗号化して表示するオプションを追加。
4) -xオプション htm,htmlの添付ファイルは、Content-Type:text/htmlとして出力する。

ここのところ忙しかったですが、やっとバージョンアップできました。

2013年2月25日月曜日

PETCTスキャンの結果聞きに行ってきました。

先週、これのの再詳細検査ということで、PETCTスキャンを受けて、先ほど結果を聞きました。
異常無しでした。やれやれです。

PETCTは、ここで受けました。まあ、5mmのものがあるので、経過観察ということで、半年後に通常のCT検査をすることに。

2013年2月12日火曜日

FireStorm Viewer のビルド & サイズ制限解除(1024mまでok,メッシュも)

前回、OSgrid(OpenSim)にインポートしたメッシュオブジェクトの東京スカイツリー(244m)をLSLスクリプトでなんとか643mにしましたが、今回スケールが250mオーバーのMESH対応のViewerをFireStorm Viewerを改造しビルドして1024mまで拡大できるようにしました。(これでどんなものでも、ほぼ好きに拡大できます。)

まず、FireStorm Viewerのソースコードとそれをコンパイルする環境が必要です。
こちらを参考に必要なソフトウエア
http://www.metaverse.jp.net/reports/recompile-of-sl-viewer/needed-software/
FireStorm Viewer のビルド環境の構築
http://www.metaverse.jp.net/reports/recompile-of-sl-viewer/firestorm/

・FireStorm の fmod(オーディオ関係のライブラリ)関連は手当しなくてもエラーしなかったので何もせず。ですのでオーディオがもしかして鳴らないかも。
・QuickTime SDKは入れなかったけどエラーしなかったので何もせず。
(もしかして、既に入れていたかも)で、ビルドバージョンは、4.3.1.32323ができました。
1024mまで拡大できます。無論secondlifeでは通用しませんが・・
opensim系で巨大建造物を作る方で欲しい方はこちらからダウンロードできます。
http://dip.picolix.jp/free/soft/firestorm-bin.zip
回答して、FireStorm ViewerのFirestorm-Release.exeにあるフォルダーにコピーして下さい。firestorm-bin.exeを実行すると、初期設定の後、普通に使えます。

改修内容:
C:\temp\tt\phoenix-firestorm-lgpl\indra\llmath\xform.h
元:
const F32 SL_DEFAULT_MAX_PRIM_SCALE = 64.f;
const F32 SL_DEFAULT_MAX_PRIM_SCALE_NO_MESH = 10.f;
const F32 OS_DEFAULT_MAX_PRIM_SCALE = 256.f;

修正:
const F32 SL_DEFAULT_MAX_PRIM_SCALE = 1024.f;
const F32 SL_DEFAULT_MAX_PRIM_SCALE_NO_MESH = 1024.f;
const F32 OS_DEFAULT_MAX_PRIM_SCALE = 1024.f;

↓REZ直後(左側のオブジェクト)


↓643mに拡大できます(目盛が800m以上あります。通常版は240mぐらいまで)

2013年2月10日日曜日

OSgirdのログイン&テレポートチェッカーを作ってみた

LibOpenMetaverseで、OSgirdのログイン&テレポートチェッカーlogininfo.exeを作ってみた
この前、OSGridの予期しないリスタートで、それにたまたま気が付いて、自プロセスも再スタートさせましたが、
もし気が付かなかったら、OSGridの中心街(10000,10000)に近いこともあり、場所を他の人にとられることもあります。
(その後気づいたのですが、MANIAXXのOSG48からもリスタート連絡が来ていました。ありがとうございます。)

logininfo.exeは、logintime.txt(テレポート時間とSIM名が記載)を生成するので、この内容を見て一定時間ログインできてなかったらメールするなり、プロセスを再起動するなりのスクリプトを作成すればいいかと思います。
(また、後ほど作成する予定)

[logininfo.exe] ダウンロードはこちら
1.OpenSim.exeのある場所にコピーする。
2.起動方法:
【Windows】
1) OpenSim.exeのある場所に移動。
2) logininfo.exe firstname secondname password "simname/128/128/40" "http://login.osgrid.org"
を実行。成功した場合、戻り値0が返ります。また同フォルダーにlogintime.txt(テレポート時間とSIM名が記載)を生成。
戻り値:
0:成功
1:失敗(ログインタイムアウト)
2:ログインできたものの該当SIMに行けず
3:失敗(その他の例外エラー)
C:\projetcs\opensim>logininfo.exe xxxx xxxxx xxxxxxx "aska/128/128/40" "http://login.osgrid.org"
Login:...xxxx xxxxx
Login success Welcome to OSGrid...
Teleported [aska]
Logout:...
C:\projetcs\opensim>echo %ERRORLEVEL%
0
C:\projetcs\opensim>type logintime.txt
2013/02/09 22:11:47
aska

C:\projetcs\opensim>logininfo.exe xxxx xxxxx xxxxxxx "1aska/128/128/40" "http://login.osgrid.org"
Login:...xxxx xxxxx
Login success Welcome to OSGrid...
Cannot teleport [1aska] now [Lbsa Plaza]
Logout:...

C:\projetcs\opensim>echo %ERRORLEVEL%
2

3) Windowsのタスクスケジュールにセットするときは、
タスクスケジュールを起動してスケジュールを登録します。15分置きの場合。



引数の追加(オプション)には、firstname secondname password "simname/128/128/40" "http://login.osgrid.org"
をセット。
開始(オプション)には、OpenSim.exeがあるディレクトリーをセット


成功すれば15分置きに、OpenSim.exeがあるディレクトリーにlogintime.txtが生成されます。

【Linux】
1) OpenSim.exeのある場所に移動。
2) /usr/local/bin/mono logininfo.exe firstname secondname password "simname/128/128/40" "http://login.osgrid.org"
を実行。戻り値等、windowsと同様です。
[root@www8054ue opensim]# /usr/local/bin/mono logininfo.exe xxxx xxxxx xxxxxxx "aska/128/128/40" "http://login.osgrid.org"
Login:...xxxx xxxxx
Login success Welcome to OSGrid...
Teleported [aska]
Logout:...
[root@www8054ue opensim]# echo $?
0

[root@www8054ue opensim]# /usr/local/bin/mono logininfo.exe xxxx xxxxx xxxxxxx "1aska/128/128/40" "http://login.osgrid.org"
Login:...xxxx xxxxx
Login success Welcome to OSGrid...
Cannot teleport [1aska] now [Lbsa Plaza]
Logout:...
[root@www8054ue opensim]# echo $?
2

LinuxnのCRONにセットするとき、
このまま、セットすると場合によってプロセスが残ったままになります。一応、タイムアウトで必ず終了するように作ってあるのですが、どういうわけか,終了しない場合があるので、以下のperlスクリプトで必ず終了するようにします。 osgrid_login.plをCRONにセットすればOKです。

[osgrid_login.pl]
#!/usr/bin/perl
chdir "/projects/opensim/";

$cmd = '/usr/local/bin/mono logininfo.exe firstname secondname password "simname/128/128/40" "http://login.osgrid.org"';

$cmd_flg = 1;
eval{
local $SIG{ALRM} = sub {
$cmd_flg = -1; #error
die "alarm\n";
};
alarm(100);
$pid = fork;
if ($pid == 0) {
exec($cmd);
#$result = `$cmd`;
#print $? . "\n";
#print $result;
}else{
wait;
}
alarm(0);
};
if($cmd_flg == -1){
kill(9,$pid);
print "Time out\n";
wait;
}

execコマンドに修正(2/10)

2013年2月8日金曜日

肺のCTスキャン撮ってきました。

健康診断で肺に影があるということで、CTスキャン検査(2度目のCTスキャン)を受けてきました。
前回と変わらず、左下に5mm程の丸いものが・・・(大きくはなってないようです。)
で、先生曰くどうしますか?
え?
間をあけてCTスキャンを撮るか、またはFDG-PETのCTスキャンを撮るか?FDG-PETではより正確な判断ができるとのこと。良性か悪性なのか。
では、お願いしますということで、今行ってる病院では設備がないので紹介状を頂いて来週行ってくることに。しかし、このFDG-PET検査3万円もします。

画像・Viewerが入ったDVDを頂いた。診断時の説明の時、先生は5mmぐらいっていってたので、
実際このツールで診断の時に見た画像まで動かして図ってみると5mmぐらいでした。

2013年2月2日土曜日

OpenSim OSGrid(aska SIM) 東京スカイツリー 634m メッシュオブジェクト

前回、2011年9月23日に作成途中だった東京スカイツリーで当初プリムで作成しようとしましたが、630mの壁に途中であきらめ放棄&削除しましたが、
http://www.picolix.jp/blog/osgrid-secondlife/668/
http://www.picolix.jp/blog/osgrid-secondlife/820/
今回、Ikushima's Works のshigeki iさんがGoogle SketchUpで作られたTOKYO SKY TREEの3DデータをOpenSim OSGrid(aska SIM)にインポートしました。(shigeki iさんに
利用許可確認中。利用許可頂きました。ありがとうございます。!2/2)
・Viewer: Phoenix_Firestorm-Release_4-3-1-31155
・Google SketchUp 8 (プラグイン:OBJexporter.rb)
・blender-2.65a

まず、Google SketchUpで、TOKYO SKY TREE.skp(底面の写真台は削除)を読み込み、
TOKYO SKY TREE.objに変換。
blenderで、TOKYO SKY TREE.objを読み込みTOKYO SKY TREE.daeに変換。
これで、FirestormからOpenSimにmeshでUPLOADできます。描画詳細細度は、
「最低」を選択。三角の数は2480,頂点は2820
「高」三角の数66976,頂点66131にしてUPLOADするとこにした。
スケールはなぜか0.143倍ってなるので、x1にしようとしても修正できず。
小さいものならx1でできますが、まあ、オリジナル600mオーバーなオブジェクトなのでサイズ制限ががあるものと思われるが、ここでは深く考えていなかった。まあ、なんとかなるさと。
ウエイト計算&UPLOADで待つこと
10分 2分、イベントリーにオブジェクトが出来たー

*「高」でも「最低」でも結局プリム数換算で373個で一緒だった。(2/2)

さてREZですが、回りに迷惑をかけたらだめなので、ここは実験島のaska XIIで行うことに。
REZすると遠くの方にREZされました。(オリジナルの視点ポイントが遠かったためかな)
周りのSIMがある場合は、隣接SIMに入り込みます><で、中央に持ってきて、サイズ変更することに。
が、スケールが250mまでしか動かない・・ということで全長約240mの東京スカイツリーになってしまった。1/3モデルですね。

これをなんとか630mにするには・・・

1)スケールが250mオーバーのMESH対応のViewerを探す
このようなものはありませんでした><

   (追記) 2/12にFireStorm Viewerを改造し、1024mまで拡大できるようにした。
   http://crenazumina.picolix.jp/2013/02/firestorm-viewer-1024mok.html

2)最悪、3分割してそれぞれ200mに拡大させて合体させる
リンク解除して再リンクしてみるもうまくいかず。
meshサイズ64mの壁もあるみたい。

3)LSLでスクリプト組んでx2.64倍して634mにする。
千尋 (Chihiro Owatatsumi)さんの
http://shop-chihiro.blogspot.jp/2010/05/blog-post_27.html
のスクリプトを借用してやってみた。

各部サイズは、それぞれ2.64倍になるものの位置情報がおかしく、中央に集まった感じになる。
meshで256mオーバーのものはだめなのかなーと思って諦めようと思ったけど、
もう一度、たまたま[サイズ変更]ボタンを押してみたところ、何mかズレた。で連続して押すと、なんと整列していくではないですか。このスクリプトでこのようになぜ動作するかは 不明・・・
結局、↓にあるように643mの東京スカイツリーができました。


2013年1月21日月曜日

テスト

ブログ―twitter連携止まってたのでテスト

[追記]
simple-tweet 1.3.7.2から1.3.8.3にしたら直りました。
短縮URLは、goo.gl(google)を使いたいので、

$json_data = '{"longUrl": "'. $url . '"}';
$header11 = 'Content-Type: application/json'. "\r\n";
$header11 .= 'Content-Length: '. strlen($json_data);
$context11 = array(
'http' => array(
'method' => 'POST',
'header' => $header11,
'content' => $json_data
)
);
$url1 = file_get_contents('https://www.googleapis.com/urlshortener/v1/url', FALSE, stream_context_create($context11));
$udat = mb_split(",",$url1);
$udat1 = mb_split("\"",$udat[1]);
$url = $udat1[3];

を、simple-tweet.phpに強制追加。

2013年1月20日日曜日

OSgrid OpenSimulator 0.7.5.dev.290dc27 01-09-2013にバージョンアップ

OSgrid OpenSimulator 0.7.5.dev.290dc27 01-09-2013にバージョンアップさせました。
ついでに、使用しているviewerをImprudence ExperimentalからFirestorm Viewer
http://www.phoenixviewer.com/ に変えました。
以前は、Imprudence Experimentalはさくさく動いていたのですが、テレポートに何か難がありFirestorm Viewerに変えてみました。

1)テレポートもMAP(世界地図)表示も軽快
2)MESHもサポート
3)1km先まで表示(Imprudence Experimentalは512m)

これからはこちらを使用することに。
↓の地図は、日本人が運営しているSIM群の塊で、Wright Plaza(10000,10000)の
南のエリアに位置します。

mail : IBM拡張文字->NEC選定IBM拡張文字変換

メールでは、IBM拡張文字コードは文字化けします。(しないメールクライアントもありますが)IBM拡張文字コードは、NEC選定IBM拡張文字コードに変換して送れば良いみたいで早速
コード変換アルゴリズムを探したけど見当たらず。そんなに複雑ではないので以下自力で対応。
IBM拡張文字->NEC選定IBM拡張文字
FA40-FA49 EEEF-EEF8
FA54-FA57 EEF9-EEFC
FA4A-FA53 ---------
FA58-FA5B ---------
FA5C-FA7E ED40-ED62
FA80-FA9B ED63-ED7E
FA9C-FAFC ED80-EDE0
FB40-FB5B EDE1-EDFC
FB5C-FB7E EE40-EE62
FB80-FB9B EE63-EE7E
FB9C-FBFC EE80-EEE0
FC40-FC48 EEE1-EEE9
--------- EEEA-EEEC


[メモ] smailに実装予定です。