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

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:失敗

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) リブート
 ==============================

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さんには悪いけど予約キャンセルしました。

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連携も修正してまた動作するようになった。

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

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

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

解決方法:
 1) regeditで、”HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesPolicyAgent” を
   作成し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で操作できるかな。

これか、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」
でした。

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

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 480×854 Android バージョン2.3.2では、Google Playにアップされているツールはどれも正常にとれないのです。赤みがかかった画像になる。RBGAの配列が違うようです。しかたがないので作ることにした。

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

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

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

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

で、元サイズから65536×2バイト余分引いて、ダブルバッファリングしているので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(“%in”,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