2012年4月16日月曜日

iGoogle Gadgetを作ってみる

iGoogle Gadget

This is a gadget for iGoogle.

2011年11月4日金曜日

LTspiceおもしろすぎる。

これはいい。
脱出ゲームよりもスパイダソリティアよりもいい。
しばらくは飽きないなこれ。

・LTspiceを使う
http://www.geocities.jp/ltspice_swcadiii/

やらなきゃいけないことなんて後回しだぜ。
やりたいことを優先なんだぜ。

・シミュレーションモード
オブジェクトを押すと電流、線を押すと電位差が見れる。グラフの色も変えれる。

・昇圧回路のシミュレーション。ポイント。
  • コイルでかくすりゃいいってもんじゃないとかいろいろわかるね。
  • いや、パルスタイミングの方が重要だ。
  • Ton=10ms, Tperiod=10.1msとか最高。800vも出た。
  • いやいや8000v出たし。


・MOSFETの使い方の参考
http://journal.mycom.co.jp/series/volt/001/index.html

2011年3月14日月曜日

地震。科学未来館7階にて。

はあ、大変だった。
地震が起こったとき、ちょうど科学未来館の7階におりましてね。
免震構造のせいか揺れに揺れて死ぬかと思いましたよ。
まあとある学会に参加してたんですが。
とりあえず荷物は未だ館内に置きっぱ。
機材の搬出をどうするかに着いてはいましばらくまて、と。
まあ、俺はとりあえずは最低限の目的は果たせたからいいのかもな、とか。
一緒に来てた先生は飛行機の都合で先に帰って、とりあえずもとからこっちに長期滞在の予定だった俺だけがこっちに残ってアナウンス待って後片付けに行く、みたいな感じ。
はあ。
あとは会社の社長からの連絡待ち、かなあ。

2011年2月28日月曜日

Gainerを複数つないだ状態で各Gainerからアナログ入力を取る方法。

今ちょっとGainer3つ同時に使ってましてね、それぞれから同時にAnalogInputを読まにゃあならん状況なんですよ。でまあ最初はbeginAnalogInput()で各々の入力値読もうとしたら、これがうまくいかない。3つ同時にシリアルに値垂れ流しってのがどうも良くない。
起動した途端に固まる。

なんで、peekAnalogInput()使ってみた。これは呼び出すたびに値一個読み込むアレ。
これはうまく行った。
普通に行ける。
って言う、おはなし。

積まずに済んでよかったなっていう。。。

2011年2月11日金曜日

PlayStationEye (PS3Eye) をprocessing on eclipseな環境で『たくさん』使う。『同時に』使う。

http://0ba38758174010h.blogspot.com/2011/01/playstationeye-ps3eye-processing.html の続き。


無事PlayStationEyeを複数同時利用出来る環境が整った、と思いきや2つまでしか認識されないという事態に直面した前回。
3つ以上使うためにはcreditを購入して接続したカメラのUUID毎にactivateしてあげなきゃいけない。
2月末にはsonyからSDKが配布されるかもしれないという話があるものの、もはや本番まで1ヶ月という現状でそんなものを待つわけにもいかず、買っちゃうことにした。で、買った。4credit。35$。時間は金に変えられねえ。3000円何ざおしかねえぜ。
でまあ、結果としてきちんと動いた。その経過と報告。

どうやってアクチベーションするか。以下手順。

1.まずはcodelaboratoryのサイト行ってアカウントを取る。

2.PS3Eyeがたくさんつながってる状態で、"CL-Eye Device Manager.exe"を起動。"C:\Program Files\Code Laboratories\CL-Eye Driver"にある。つないでる数の分だけウィンドウに項目が表示されてるのを確認しよう。

3.左下のActivateDevicesを押す。アカウントとパスワード入れてログイン。デバイスごとにActivateするか否かを選択できる画面になる。ここで、creditがあればその数だけPSEyeをactivate出来る。でもまだcreditはない。ので買う。

4.右下のAddCreditsを押す。サイトに飛ぶ。ここで、購入したい数のcreditを選んでBuyを押す。支払いはペイパル。購入した分だけアカウントにcreditが加算されていく。ゲーセンの筐体にコイン入れてクレジットが増えるのと一緒。

5.もっかい"CL-Eye Device Manager.exe"開いて、さっきのactivateの画面まで進む。activateしたいカメラを選んで右下のactivate selected Camerasかなんかを押したらおk.。一度activateしたカメラはアカウントに残るので、どのPCにつないで使ってもActivatedなものとして扱われる。壊れたらおしまい。activatedからはずしてcredit戻してもらうこともできるんかな?わかんね。

6.動作確認。全部つながってる状態で、"C:\Program Files\Code Laboratories\CL-Eye Platform SDK\Redist"の中の"CLEyeMulticamTest.exe"を起動。つなげてる分だけカメラのキャプチャウィンドウが開いたらおk.。

7.ここが大事。"C:\Program Files\Code Laboratories\CL-Eye Platform SDK\Redist"の中に"CLEyeMulticam.dll"が入ってることと思う。activateされてるか否かを判断してカメラの数を決めてるのはこいつ。"C:\Program Files\Code Laboratories\CL-Eye Platform SDK\Bin"の中の"CLEyeMulticam.dll"にその機能はない。こいつは最大接続数2に制限してる。Redistフォルダの中の奴を使わないと3つ以上使えない。activateが意味を成さない。ので、単純に取り替える。既にeclipseの当該プロジェクト内のlibNativeフォルダにCLEyeMulticam.dllが入ってることと思う。まずはeclipse上からこいつを削除する。んで、改めて件のRedistフォルダ内のCLEyeMulticam.dllをインポートする。さて、とりあえずカメラを3つ以上使うプログラムを作って起動してみよう。たぶん動いたことと思う。たぶん。

せっかくなんで複数動作の起動確認用に作ったプログラムを此処に載せる。eclipseに貼りつけてピッとしたらちょちょっと動くはず。上下キーでカメラ切り替え。うまく動いたらcameraCount()はつなげてるPSEyeの台数を返してくれるはず。俺の場合は4.。

以下コード。
________________________


import processing.core.*;
import cl.eye.*;

public class PSEye_multi_test extends PApplet{

    int CAMS_NUM = CLCamera.cameraCount();
    CLCamera myCams[] = new CLCamera[CAMS_NUM];
    PImage myImgs[] = new PImage[CAMS_NUM];
    int CAM_RESOLUTION = CLCamera.CLEYE_QVGA;//CLEYE_QVGA/VGA
    int CAM_WIDTH;
    int CAM_HEIGHT;
    int EXPECTED_FRAMERATE = 60;
    int focused_cam = 0;

    void setupCameras(){
        if(CAM_RESOLUTION == CLCamera.CLEYE_VGA){
            CAM_WIDTH = 640;
            CAM_HEIGHT = 480;
        }
        else if(CAM_RESOLUTION == CLCamera.CLEYE_QVGA){
            CAM_WIDTH = 320;
            CAM_HEIGHT = 240;
        }
      
        if(CAMS_NUM == 0){
            System.out.println("no PSEye founded.");
            System.exit(-1);
        }
        System.out.println("Found " + CLCamera.cameraCount() + " PSEyes.");
        // create cameras and start capture
        for(int i = 0; i < CAMS_NUM; i++)
        {
            // Prints Unique Identifier per camera
            System.out.println("Camera " + (i+1) + " UUID " + CLCamera.cameraUUID(i));

            myCams[i] = new CLCamera(this);
            // ----------------------(i, CLEYE_GRAYSCALE/COLOR, CLEYE_QVGA/VGA, Framerate)
            myCams[i].createCamera(i, CLCamera.CLEYE_COLOR_PROCESSED, CAM_RESOLUTION, EXPECTED_FRAMERATE);
            // Starts camera captures
            myCams[i].startCamera();
            myImgs[i] = createImage(CAM_WIDTH, CAM_HEIGHT, RGB);
        }
    }

    @Override
    public void setup(){
        setupCameras();
      
        size(CAM_WIDTH, CAM_HEIGHT);
        frameRate(EXPECTED_FRAMERATE);
    }

    @Override
    public void draw(){
        // ---------------------   (image destination, wait timeout)
        myCams[focused_cam].getCameraFrame(myImgs[focused_cam].pixels, 0);
        myImgs[focused_cam].updatePixels();
        image(myImgs[focused_cam], 0, 0);

//        println(frameRate);
    }

    public void keyPressed(){
        if(keyCode==UP){
            focused_cam++;
            if(focused_cam==CAMS_NUM) focused_cam=0;
        }
        if(keyCode==DOWN){
            focused_cam--;
            if(focused_cam==-1) focused_cam=CAMS_NUM-1;
        }
    }
}

2011年1月27日木曜日

指定された型は、識別子の名前を指定せずに宣言されています。

VisualStudio2010でOpenGL中の話。
普通にやってるぶんにはGLUTもなんの問題もなく動くんだけど、windows.hも読みこんだとたんエラー。

'float' :指定された型は、識別子の名前を指定せずに宣言されています。

場所はgluPerspectivのnearとfar。いずれも変数名ママ。
とりあえずぐぐってみた。
あった。
http://f4.aaa.livedoor.jp/~pointc/101/No.18614.html
要はnearとfarって名前はDOSが内部で使ってる変数名でした、と。
太古の遺産だけど互換性担保のために残してますよ、だからwindowsAPIを呼び出す限りは使わせませんよ、と。そういうわけである。
くそだよな。
で、名前変えた。
おのおのzNear, zFarに。
動いた。
そんだけ。

そもそもなんでwindowsAPI呼び出したかっつったらQPCとQPFが使いたかったから。
それぞれキュベレイ・プルツー・コロニーレーザーとクインマンサ・プルツー・フィンファンネルの略な。
なんでそんな超高性能タイマーが必要かっていったら、高精度なフレームレート設定がしたかったから。
びっくりしたことにOpenGLにはフレームレートなんて概念がそもそも無い。
設定したかったら自分で実装せにゃならん。
一応glutTimerFuncってのはあるけど、それでも設定できるのは1msec単位だし、そもそも単なるウェイトっぽいからこれだけで高精度なFPS設定は無理そうなの。
だからQPCQPF使って超高精度FPS設定機能を実装しようぜ、という試み。
おわかりいただけただろうか。
というわけで作業に戻る。
でも眠い。ねよっかな。いやもうすこしがんばろう。
おしゃまプリンセスっていい曲だよね。
先週の金曜にインフルエンザにかかったんだけど熱出てないからインフルエンザじゃないかもしれないんだけどそういうインフルエンザもあるみたいな話だからもしかするとインフルエンザなのかもしれないねってミサカはミサカは気分が悪いと訴えながら嘔吐してみたりおウェェェェェェアァァァァァァシャァベッタァァァァァァァ!!!

やっぱ寝よう。モルダーあなた疲れてるのよ。

2011年1月19日水曜日

PlayStationEye (PS3Eye) をprocessingで使う。ついでにeclipseでも使う。

うん。そういうわけでAlexPさんのSDK落として試したみたの。
ここにあるやつ。→ http://codelaboratories.com/downloads/
sampleの中のCLEyeMulticamTest.pdeね。
そしてまあ案の定、動かないw(P.S. 動きました。後述。)
UnsatisfiedLinkError とかcannot find CLEyeMulticam.dll とか出る。
フォーラムとか眺めてみるけど解決策もなく。
AlexPさんのドライバのJavaラッパを書いてprocessingで使えるようにしたって人が居るみたいなんでそっちの方で試してみるか?
マルチで使えるかはわからんが。
_______________________

http://processing.org/discourse/yabb2/YaBB.pl?num=1258927190/0

まずこのden ivanovさんがAlexPさんのドライバ使ってprocessingでもPS3Eyeが動くようにしたぞ、と。
細かい設定なんかはivanovさんのブログな。

http://www.cleoag.ru/2009/11/23/ps3-eye-processing-library/

だけども、これを動かすために必要なAlexPドライバのバージョンは古いものが必要でしたよ、と。
どこで手に入るのかってんでliudrさんがAlexPに聞いてみたら次のとおり旧バージョンを置いてくれた。

http://codelaboratories.com/research/view/sony-ps3eye-camera-directshow-capture-source-filter-update-v3.0.0.0901

ここのv3.0.0.0901を入れたら動くんじゃね、っていう。
さあ、試してみんべ。
________________________

ってえ、試せねーんすけど。
ないんだよ。ない。どこにもねえ。
v3.0.0.0901なんてどこにもねーんだよおうい。
くそったれい。
________________________

あった!
どこのだれが上げてくれたのか知らないけどありがとう!
↓ここな。

http://www.general-search.net/fileinfo/gs5f9f7feh82i0

で、つかってみた。
動きました!やったね!
いや、まだひとつが動いただけ。
2つでやってみんと。
________________________

クソッタリーノ!
だめだ、こいつじゃ複数は動かせねえ。何か別の、別の手段がねえと、、、
________________________

きたこれいいいいいいいいいいいいいいいいいい!
うごいた!うごきやしたよおっかさん!

まあ、単純な話でね、「java ps3eye」でぐぐったら↓これがでてきてさ。


http://codelaboratories.com/forums/viewthread/238/

eclipseで実行してみたら動いたの。それだけ。
cleyemulticam.jarを参照ライブラリにビルドパス追加。
CLEyeMultiCam.dllをlivNativeフォルダの中にインポート。
(注:livNativeフォルダってのはNative library locationに設定してるフォルダのこと。
以下過去記事参照。
http://0ba38758174010h.blogspot.com/2010/11/eclipseprocessingprocessingopengl.html
http://0ba38758174010h.blogspot.com/2010/11/javajbullet.html

それだけ。

一応キャプ画像載せとくね。うれしいから。

どや!
って俺の成果じゃないんすけどね。

ああ、なんかもういいや。疲れた。帰ろう。
そして溜まりに溜まったアニメを消化しよう。
まずはまどかマギカだ。そしてフラクタルだ。その後はみつどもえにインデックスにうわあだるい。
明日はとりあえずうまくいったことを先生に言ってPS3Eyeをたくさん先生に買ってもらおう。
4つあればいいかな?
そして作業的にはJBulletに戻ろう。何も解決してねえから。
まあいい。とにかくかえろう。つかれた。おやすみ。バイバイ。
___________________________


実はここで大問題。今回使ったこのCLEyePlatformSDK、デフォルトのままだと無料で使える代わりにPSEyeは2つまでしか同時利用できない。俺は4つくらい使う必要がある。さてどうしようか。
ってんで次回に続く。

http://0ba38758174010h.blogspot.com/2011/02/playstationeye-ps3eye-processing-on.html

2010年12月28日火曜日

インタラクション2011論文投稿完了。

はい。何とか間に合いました。
デモ部門なんで査読は無いという話ではありんしたが、まあ1/10の結果待ちです。
いやあ、あせったね。
締め切りが11:59で投稿完了したの11:57だったのよ。
まじギリヒヤ。
てか最初動画が送信できなくってさ。
それでもたついてたんだけど、まあJavaサーブレット版のアップローダから無事上げられましたよ。
んでもなぜか「web公開しない」になってんだよね。
してほしいのに。
まあそれは通知後に直接メールで連絡すれば良いかなー、みたいな。
時は3/10-12、ところは科学未来館。
最終日に一般公開もやるみたい。
関東在住でお暇な方はどうぞいらっしゃい。
ああ、先輩呼んでみようかな。横浜に居るんだよな。

しかしまあ、M1なのによう頑張ってると思いますよ、我ながら。
この時期にひいこら言ってんのって普通はM2だけだもん。
良い研究室なんだけどね、B4あんま来ないんだよね。
自分でやりたいこと勝手にやれるような奴じゃないと来ちゃだめな研究室なんだと常々思うわ。
たしかに放置研ではあるけれどもこっちからアイデア出せば先生ちゃんとフォローしてくれるからなあ。
欲しいもんなんでも買ってくれるし。
向き不向きがある場所なのはわかるけど、俺には最高の居場所なのは間違いない。
放置研だから楽ができると勘違いしてる奴が来ると就職できなくて泣きを見る、そんなところ。
B4M2含めてここまで就職率が悪い研究室ってのも珍しいよ。
起業家タイプ向きなのかも。
俺も起業してえわ。
起業して、出来る奴雇って、仕事は全部そいつに任せちゃうの。
で、俺は好き勝手なことやって甘い汁吸って過ごすの。
いいわ、マジあこがれる。
だから就職も給料とかどうでもいいから休み多くて自分の時間が取れて好き勝手やらせてくれる会社に行きたい。
むしろ、そんな会社あったら教えてください。
わあ、腐ってんな。社会なめすぎだろこれ。さすがゆとり。

2010年12月20日月曜日

processingのCaptureライブラリ代替ライブラリCaptureDSでカメラを2つ使う。てかマルチカメラ。

processingでwebカメラを使う場合、普通は標準のCaptureクラスを使ってることと思う。
QTJava使って動いてるあれだ。
WinVDIGがないと動かないというあれだ。
こんなん遅すぎやわ、絵面汚いわで使ってられへんわ―て人は多いみたいで、JMyronだのOpenCVだのと色々と代替キャプチャークラスは提供されている。
今回表題にしているCaptureDSもその一つである。
JavaでDirectShowを使うという目的で開発されたDirectShowJavaというのがあるのだが、これはそれをベースにprocessing用に仕上げられたものである。
その特徴は絵面が奇麗で動作が軽い、ということ。これに尽きる。
NyAR4psgでもこいつの利用が推奨されている。

だいぶ前に私も実際に使ってみた。
その感想は単体で使う分にはこれ以上はないというぐらい申し分ない性能だな、ということ。
単体で使う分には、ね。
なにが不満かといえば、複数では使えないということだった。
複数のカメラを同時に使おうとするとなにやらエラーが出て止まる。
解決策をググってみたり色々と試してみたりするもしおしおのパーで、当時は一旦あきらめたのであった。
なんでそんなことにこだわったかってそういう研究だったからね。カメラ複数台使う必要があったのよ。
結局標準のCaptureクラスをcam.settings()を挟むという旧バージョンでは定石の手法でもってその場は乗り切った。

で、ここまでが1年くらい前の話で、今に至る。
そんときがXPで今は7だって言うのはまあおいとこう。
今しがたなんとはなしにもっかい使ってみたのよ、CaptureDS。
まああいかわらず単体ではきれいだしはやいわな、2つ繋いでみるとやっぱエラー出るな、あはは。
でそこで出たエラーがなんやら、Audio device is busy RealtekHD****だかそんなんですよ。
ここで俺はふと思ったんだ。

そういやこのカメラ(ロジクールのやつ。内蔵マイク付き。QCam Pro for notebooksだかそんなん。それとQCam fusionだかってやつの2つでね。←ここ重要。後述する。)マイク付いてたなあ、案外無効にしたら動いたりして(笑)

でまあ、スタートメニューのデバイスとプリンターのところから当該カメラのサウンドの設定ってのを押してだな、録音タブのところそれっぽいマイクを右クリで無効にしてやったのよ。

そしたらなんとね、動いたの。2つ。同時に。
なんか、人ってすごいなあって思ったね。

あ、ちなみにこれ全部2008年版のCaptureDSでの話ね。
2010年版ではなんか知らんけど動作が変だから。単体でも。
あえてリンクは載せてないけど使いたい人は適当にぐぐってゲットしてチョ。
使い方も本家に書いてあるから分かるはず。
ああ、そういうわけで旧版を使うのをお勧めする。
その場合dsj.jarとdsj.dllも古いバージョンを用意しないと動かないから注意ね。
2008年リリースぐらいの版を使えば動くと思うよ。
スクショ乗せたいけどめんどいンでそれはまあいいや。

__________________________________

あああああああああああああああああ
くそったれ。
たしかにに問題なく使えたよ。
2つのカメラが異なる製品の場合はな!
使用するカメラの区別はカメラに付与されたデバイス名で指定できるんだけどさ、同じカメラ2つ使った場合これが区別されないのな。どっちとも”QcamPro for notebooks”の場合、CaptureDS.list[0]もCaptureDS.list[1]も区別されないのな。結局コンストラクタに渡される引数は同じってことになって衝突、device is busyでエラー。
さてどうしたもんか。
デバイス名いじれれば手っ取り早いんですけどね。
__________________________________

ひとつ考えたのが”QcamPro for notebooks”みたいなストリング型じゃなくてDSFilter型の何かを突っ込んでやれば案外区別できるんじゃね?って話。
CaptureDSの中身をeclipseで見てみりゃわかるんだけど、当該の引数をObject型で受け取った後にDSFilter型かそれ以外か、で処理を分けてるからね。
どうすりゃいいのかはわからん。忙しいんで試してない。

とりあえずせっかくなんで2台以上のカメラをつなぐプログラムのソースでものっけちゃおうかな。
processingIDE上にそんまま張っ付けりゃ動きます。上述のとおりCaptureDSとdsjが導入してあるならね。

使い方:
2つ以上のカメラをPCに繋ぐ。つなぐカメラは、異なるデバイス名でPCに認識される組み合わせとなる物であることが動作条件。マイク内蔵型の場合は、windows7なら「デバイスとプリンター」から当該カメラのプロパティの録音タブを開いてマイク機能を無効にしておくこと。 
うまく起動した場合は、↑↓キーでカメラの切り替えができるはず。
繋げるカメラの台数は無制限。






import processing.video.*;

//デバイス名が同じになる場合は複数同時使用不可
int CAMS_NUM = CaptureDS.list().length - 1;
CaptureDS[] caps = new CaptureDS[CAMS_NUM];
int CAP_WIDTH = 640;
int CAP_HEIGHT = 480;
int EXPECTED_FRAMERATE = 60;

int focused_cam = 0;

void setup() {
  size(CAP_WIDTH, CAP_HEIGHT);
  println(CaptureDS.list());
  for(int i=0; i < CAMS_NUM; i++) caps[i] = new CaptureDS(this, CAP_WIDTH, CAP_HEIGHT, CaptureDS.list()[i], EXPECTED_FRAMERATE);
  frameRate(EXPECTED_FRAMERATE);
}

void draw() {
  caps[focused_cam].read();
  image(caps[focused_cam], 0, 0);
  println(nfc(frameRate, 2));
}

void keyPressed(){
  if(keyCode==UP){
    focused_cam++;
    if(focused_cam==CAMS_NUM) focused_cam=0;
  }
  if(keyCode==DOWN){
    focused_cam--;
    if(focused_cam==-1) focused_cam=CAMS_NUM-1;
  }
}


______________________________

追記: 2011/02/06

processingで複数のカメラを高速に使いたいんならPlayStationEye (PS3Eye)を使うべき。それが今の俺の結論。あとeclipse使うべき。標準IDEは糞。

理由:60fps動作可能。安い。ライブラリも高速。

詳細:  http://0ba38758174010h.blogspot.com/2011/01/playstationeye-ps3eye-processing.html
______________________________

2010年12月18日土曜日

processing with eclipse な環境での”data”フォルダの取り扱い。

processingに慣れた諸氏ならばご存知であろうdataフォルダ。
言うまでもなく、processingスケッチ内で呼び出したいフォントデータ、画像データなどのファイルを格納しておくための場所である。スケッチフォルダ内の同名pdeファイルと同階層に置いてあるdataの名を持つディレクトリがそれである。
さて、ここはprocessingIDEに疲れたものが行き着く地獄の3丁目、eclipseである。
百戦錬磨の諸氏も勝手知ったる自分の家、とはいかない。
先までにも色々とeclipseでの立ち居振る舞いについては伝えてきたが、例によってまたである。
そうだなあ、例えば次のようなコードをeclipseで実行してみてほしい。
 
import processing.core.*;

public class testProcessing extends PApplet {

    public void setup() {
          size(200, 200);
     PFont font = loadFont("muktinarrowbold-14.vlw");
     textFont(font, 14);

     text("processing & eclipse\nthe dynamic duo", 30, 30);
    }
}
 
 
分かると思うが、ここではmuktinarrowbold-14.vlwというフォントファイルが必要となる。
別にこれじゃなくて何でもいいけど。
さて、どこに格納すればいいだろう。
普通eclipseプロジェクトとして考えればプロジェクトフォルダ直下で良いんじゃないか?と思うだろう。
私もそう考えた。だが駄目だった。
結論から言おう。フォントファイルを入れるべき場所は、
プロジェクトフォルダ/src/data/muktinarrowbold-14.vlw
である。
 
ただし!
 
直接エクスプローラからフォルダを作成してファイルを入れる、というのでは駄目だ。
eclipse上からインポートする必要がある。
インポートでmuktinarrowbold-14.vlwを選んで、インポート先のフォルダとして
プロジェクト名/srcを指定する。
この段階でsrcの中にdataができてるのが分かるだろう。
さて、今一度実行してみてほしい。
きちんと実行されてなにか文字が表示されているだろうか。 
いるはずである。
今日はここまで。おしまい。ちゃんちゃん。

今日参考にしたところ:http://go.yuri.at/?p=51
中程の data folder for external resources のところ。
 

eclipseで”○○はファイルシステムと同期が取れていません”と出てフォルダが削除できない。

っていうメッセージが出てプロジェクトパースペクティブからフォルダが消せなくなった。
何したかって、別フォルダからインポートしたうえでプロジェクトフォルダ内に生成されたフォルダの名前変えたりしてたらこうなった。
これホントはパースペクティブ上の当該フォルダ上で右クリック、リファクタリング→名前変更ってやらなきゃだめなのね。
で、どうやって消すか。
方法は二つある。
まずはプロジェクトごと消して作り直す方法。
うん、ごめんなさい。
いくらなんでもこれはないよね。
俺も分かってる。
次に、消せないフォルダの名前を変更して消す方法。
まんまです。
さっき言ったようにまずは消したいフォルダの名前をリファクタリングから変更する。
何でもいい。
で、名前を変更したら改めて消してみる。
どうだい?すんなり消せただろう?

めでたしめでたし。

2010年12月17日金曜日

eclipseでJMFとかQTJavaとか使う。「アクセス制限: 型 ちょめちょめ は必須ライブラリー QTJava.zip で制限されているためアクセスできません」とかまじかんべん。の巻。

・JMFの場合。

1.jmf-2_1_1e-windows-i586.exeを落とす。
2.インストールする。
3.eclipse立ち上げてなんかプロジェクト作る。
4.JMFが入ってるフォルダ(~/program files/JMF/lib/jmf.jar)の中のjmf.jarをビルドパスに追加。
5.これで使えるはず。

・QTJava

1.quick timeインスコ。
2.このままで使えるかと思いきや、この段階ではeclipseだと「アクセス制限: 型 ちょめちょめ は必須ライブラリー QTJava.zip で制限されているためアクセスできません」とか出る。どうしたものかと思いググる。
3.ここを参照する:http://blog.bitmeister.jp/?p=1486
4.というわけでアクセスパーミッションを追加する。
5.JREシステムライブラリー上で右乳首クリック→ビルドパス構成→JREシステムライブラリのアクセスルールを編集→追加を押して「quicktime/**」と入力してOK→おわり。
6.これでめでたくQTJavaの全実績が解除されてるはずだ。

ついでに。5.のとこでquicktime/**てしてるけど、これの意味はquicktime以下のサブドメイン内のクラスも含めた全クラスの実績解除、というもの。quicktime/*ともできるけど、この場合はquicktime直下のクラスのみの解除で、サブドメイン内のクラスについてはパーミッションを追加しない、という意味になる。eclipseは高機能過ぎてついていけないことがままあるから困る。でもnetbeansとか使ったことないし新しい環境に移行とかだるいしなんだかんだでeclipse使いやすいしってことでeclipseを使い続けりるれろ~、の巻。

2010年12月9日木曜日

『史上最強の都市国家ニッポン』を読む。

というわけでみんな大好き三橋さんの本です。
はいそうですわたし三橋信者ですごめんなさい。
まだ読んでる途中だけど思ったことなんかをつらつらと。

p.47
増田先生がそれとなく話をそらそうとしたところで、三橋さんがそのそれた話題に乗りつつ肯定する方向で最終的にはきちんと自分の意見でまとめたところに、ちょっと感心した。対談本ってこういうところがあるから面白いよね。

p.102, p.110
アダムスミスの話を見ていて、粘菌の経路探索、あるいはDNAコンピュータのアルゴリズムとの共通点に気付く。すなわち、いづれも「放っておけば勝手に最適解を導き出す」ものであるということ。
迷路に放り込まれた粘菌も市場に放り込まれた人間もマクロでみればその振る舞いには大差ないのだと。
そんなふうに考えるとデフレを克服する方法として増田先生の言っている「放っておけ。市場に任せてりゃ勝手に解決する。」なんて論にもちょっと納得してしまう。
______________________________

あああああレビューとかめんどくさいなこれ。やめだやめ。
こう言うの向いてねーわ俺。
いやね、読みましたよ、読みましたとも。全部。
やっぱ三橋さん最高です。読んでたら元気が出てきます。
気がついたら氏の著作2冊買ってたんだけど忙しくて読めてねえ。
明日読もう。
中国本と経済本ね。
でももうこう言うの書くのはやめとこう。だるい。
でもこの人の本自体は最高。
洗脳されちゃうといいよ。俺はされた。みんなされちまえば日本はきっと良くなる気がしてくる、そんな本。
てか最近この人露出多いよなあ。
テレビ以外の媒体に、だけど。
やっぱこういう人のほうが受けるんだろうな。世相的に。
なんか元気が出てくるもん。明るい話題のほうが。

このオブジェクトのアクセス許可の設定を表示または編集するアクセス許可がありません。

こないだうちパソのOSをXPから7に入れ替えたんよ。
んでXPん時に使ってた「_Documents」ってフォルダを開こうとしたらね、なんかアクセスがどうのーいうて開かせてくれへんの。
ええやん、そんなん。ちょっとくらい開かせてくれたかってええやん。
じゃあまあしゃあないなあおもてさ、パーミッション変えようと思うてセキュリティタブ開いてん。
そしたらあんた。

「このオブジェクトのアクセス許可の設定を表示または編集するアクセス許可がありません」

これですよ。
どないせえっちゅうねん。
そんなんあんた、変えられませんやん。どうしようもありまへんやん。開けへんやん。

でな、 まあしゃあないいうて、ぐぐってみてん。
そんだらまあな。これや。
http://d.hatena.ne.jp/psquare/20100330/p1
ようはパーミッションユーザにもっぺん自分のアカウントを追加せえっちゅう話でな。
Administrator権限もってようが関係あらへん。追加せえって。
まあ、とりあえず開けましてん。えがったのう。

なんでこんなややこしいパーミッションにしてんだか。
もっと単純で良いと思うんだがな。
どうせ親ユーザーにはこんな風にして見られちまうんだから手間かけさせずに最初から全部開示してりゃあ良いじゃんって言う。

ちなみに俺台湾人だから。大阪弁とかしゃべんないから。
あ、これ秘密な。

2010年11月30日火曜日

processing on eclipseな環境でCaptureクラスを使う。

できねーな。どうしたもんか。
(→2010/12/15追記:できました。後述します。)

はい、タイムオーバーです。
JBulletの方がなんとなく分かってきたのでこれならいけると思ってNyAR4P5とくっつけようと思った矢先で躓いた。Captureが、使えない☆
わかんねえ、ほんきでわかんねえ。
あっちの本家のフォーラムとかでも同じ話題がいくつかでてるけども俺の状態とはどうにも違う。
うーん、、、いっそスレ立てちゃうか、、、
まあもう今日のデモには物理演算の奴は間に合わんな。
おとなしく従来の奴で、となるな。
パワポの準備もあるんで、今回はあきらめる。
だがインタラクション2011の概要提出までには間に合わせて見せる。。。マニアッタライイナー。

いっそprocessingを捨てて本家NyARを使っちゃう、って手もあるけどね。
これが終わったらまじめにそれも考える。
_______________________

さて、というわけで本日のデモ終了。
スライドもデモの内容もほとんど前回と変わって無いんだけど反応はそこそこ良かった。質問もそれなりにきた。特に先生方からなかなかの力作だな、とか良くできている、と言われるとやっぱりちょっとうれしい。関心を持ってもらえたのは良いんだけどその分指摘も多くて、今後やるべきことがまた明確になった。まあ、何も発表しないよりは良かったんじゃあないでしょうか。
と言うわけで今日はちょっとゆっくり休もう。また明日からがんばる。
てかとりあえず早急にカメラを何とかしなきゃほんとに。
個人的にはDSJに興味が。カメラ周りが高速になるとやっぱ色々と変わってくるからね。
あー。解像度は30万画素ぐらいでいいからひたすら高速なUSBカメラが欲しい。
シャッタースピード爆速でハイfpsな奴。ブレに強いとマーカーの補足性能もぐんと上がるだろうし。
でもまあ、ざっと見た感じその手の奴ってやっぱ高いんだよなあ、、、(10万オーバーとか。)
________________________

2010/12/15追記

さて、冒頭に追記した通り、Captureクラスがp5 on eclipseでも使えました。
どうやったかって?
今から説明します。
まあその前に。
今私データグローブの研究やってんすけどね、今しがた試作弐号機「シ-2型」が完成したンすよ。
こいつが素晴らしい一品でね。シ-1型はもうお役御免だね。
可用性、保守性、耐久性、審美性、量産性、全てにおいて大幅に向上。
わだすはこいつでインなんとかクション2011に臨む覚悟だべ。
でまあその肝心のインなんとか2011の概要締め切りが12/24と来た。
これやばい。あと9日。時間ない。マジで。
なにがやばいってまだ概要に手えつけてない。マジで。
てかデモもまだ中途半端。マジで。
せめて物理演算も加えた状態のビデオ添付したいよね。
つーわけで急ごう。
ブログとか書いてる場合じゃない。
でもいいんだ。
ここに書いてるのは独り言。
メモ帳。雑記帳。手記。only my closed world.
まあぶっちゃけ、概要の段階ではまだ実装できてない機能をさもできたかのように書いといて、本番までにきちんと実装できてりゃそれで良いと思うけどね。フヒヒ。
ああそうそう、低周波治療器も買ったンすよ。アマゾンで。1200円のやっすいやつ。
あのビリビリするやつね。
なんに使うかって?
そんなの決まってんじゃん。


フォースフィードバックだよ。


いいや、もう。個人情報の暴露はここまでだ。
さっさと本題に入ろう。

1.eclipseを開く。
2.件のプロジェクトを開く。
3.左の枠んとこで右クリ。インポート→ファイルシステム
4.Cドライブの中のprogram filesの中のQuickTimeの中のQTSystemの中のQTJNative.dllを選択。
5.当該プロジェクトフォルダトップ、もしくはプロジェクトフォルダの中に作ったlibNativeフォルダを選択、OKを押す。
6.もっかいキャプチャー使ったプログラムを動かしてみる。
7.動く。
8.みんなハッピー。


これで動かなかったら?俺は知らん。
他んとこ調べるなりフォーラムで聞くなり死ぬなりすればいいよ。
ちなみに参考にしたスレッドはこれ
ここの



Re: QTJava in Eclipse
Reply #7 - May 20th, 2009, 6:56am
 
Hi.

I have the same problem too, and solved it just now.

1.add "QTJava.zip" to your project build path.
2.and set the location of native library path of "QTJava.zip" to "?:/Program Files/QuickTime/QTSystem".

Try it.


を参考にしたんだけど、俺はこれじゃできなかったんだよね。
なのでそこで示されてるフォルダーん中覗いてそれっぽいdllいくつか探して片っ端からインポートして試してみたってわけ。そしたら動いたのよ。
んで、できましたよーって報告したかったんだけどここのフォーラム自体はもう閉じちゃってるみたいであきらめた。ってそもそも投稿自体が古いんだけど。
ふう、疲れた。
一旦帰って散髪(もちろん3Qカット。半年振りだよ!)に行ってシャワー浴びて飯(日曜に作ったビーフシチュー。冬だしまだ大丈夫だろうと信じる。)食ってまた来るか。
16時から講究だし急がなきゃ。

というわけで中二だから帰る。バイバイ。

P.S. 全く関係ないけど冬月「今なら私にも初号機を動かせるかもしれない」とかってタイトルのSSが面白かった。是非続きを読みたいんだけど一向に上がってこないんだよね。作者さんもう少し頑張ってください。

processing+JBulletをやろうとするとやっぱりBPSGRが参考に。というかこれじゃもはやただの改変だよなこれ。

BPSGRについてはこちらで。
http://reco-memo.blogspot.com/2009/06/jbulletprocessing.html
(こういうの(個人ブログ)って勝手にリンク張ったりして良いもんなのかな。。。?)
recoさんという方が作成されたprocessing用JBullet簡易実装ライブラリ、です。
ごくごく限られた機能しか利用できないという触れ込みですが、あくまでもprocessingIDE上で普通にライブラリを読み込んで使う分には、です。
eclipse上でソースコードの方から読み込めば、そりゃあもうどんなパラメータもメソッドも弄りたい放題増やしたい放題です。
私もちょうどどうやってJBulletをprocessingで動くように対応させたものかと悩みまくっていたところなので、純粋にこのソースがかなり参考になりました。いや、なってます。今、まさに。
しかしeclipseにもだんだん慣れてきたような気がするんだよ。良きかな良きかな。
というかそう、今まさに見てる最中なんです。
ていうか時間がありません。マジで。
デモの準備がじぇんじぇンできてねえの。
もうやばい。死ぬ。パワポも作んないといけないのに。
本番は明日だけど一応今日先生に見せることになってんです。
びゃあ。
あ、どんなデモかってのはひみつ。いづれ言うかも。いや言わないかな。まあ、ひみつ。

一応自分用にメモ。あくまでも自分用。俺の目の前にいるのは常に俺だ。間違っても貴様じゃねえ。
いや、もうそういうのいいから。。。

まずは、processingとprocessing用OpenGLが使える状態になってるプロジェクトっていう前提で。(前回の奴を参照。)

0.BPSGRを落とす。解凍する。

1.プロジェクトにBPSGRライブラリフォルダん中に入ってるsrcをまるまるインポ。

2.プロジェクトトップのsrcディレクトリん中にドラドロして突っ込む。

3.勝手にパッケージごとに分けられるはずだ。これで完了。ね?簡単でしょ?

4.あ!忘れてた。これがみそなんだけど、BPSGRフォルダん中のlibraryん中のjbullet.jarをインポしてビルドパス追加してRefLibに入れる。ここでは他のBPSGR.jarとかは入れる必要ないからね。jbullet.jarだけ、ね。あとjbullet.jarについても、BPSGRライブラリに添付されてるものでないとだめぽ。なにかったら、多分に現行のJBulletとは使ってるバージョンが違うみたいで、新しいjbullet.jarだとなにやらエラーが吐き出されまくる。新しいバージョンでも動くようにするような技量は私にはないので、おとなしく添付のを使うんだぜ。

5.ここまでで動くはず。BPSGR付属のデモをeclipseで動くようにpublic付けたしたりで改編した後実行。ほうらうごいた。めでたしめでたし。

6.で、あとはinitPhysics()の中いじってgravity変えたり、groundShapeが勝手に生成されないように変えたりと好きなようにいじればおk。(作者様勝手にいじってごめんなさい。でも許してくださいこれしか道はなかったんですこうするしかなかったんです。)

あ、一応これも。
AddBox(float mass, Vector3f vec, Vector3f rot, float angle, Vector3f scale)というメソッドがあるんだけど、ここのscaleっていうベクトルがまんまBoxの縦横高さを表すわけなんだけど、例えばこれをあらかじめ外でVector3f scale = new Vector3f(100, 100, 100)みたいにインスタンスを生成しといて、メソッドに引数として渡すとする。一回目はまあ正常にブロックが生成されるんだけど、そのあと同じように続けて同サイズのブロックを生成させようとすると、同じ引数を渡してるはずなのになぜか縦横高さが半分になった状態で生成される。scaleを変えずにそのまま渡しっぱなしにしとくと、繰り返した分だけ半々になっていく。なんでまあ、大きさを変えずに引数を渡したい場合は、Vector3f copyみたいなのを作っといて、copyの方をAddBoxに引数として渡して、呼び出した直後にcopyには最初の状態のscaleをコピーする、ってな小細工がいる。あるいは直接数値を引数として入れとくか。

ここだけなんとかならないか、せっかくなんで後でメソッドの中を見てみよう。。。

eclipseでprocessingを使う。とりわけ不安定さに定評のあるprocessingのOpenGLを使う。

JBulletのデモのところでも書いたけど、このページ(えいごだよ。えいごあれるぎーあるひとはあなひらきしぃしょっくにちゅういなんだよ。)の下の方、Using OpenGL~に書いてあることがすべてでごンす。以上。

でもあたいちょー馬鹿なンで自分用にザパニーズ☆でまとめとく。
自分の言葉でまとめるって、すごく大事なことなンですよ?ってむかーし国語のせんせが言ってた。
てかえいごとか読めないしぃ。だるいしぃ。
えいごといえばNHK教育で「えいごりあん 」って番組やってんだけどさ、あたいアレ最初に見たときどの層に向けて放送してんのかよくわかんなかったのね。
(あ、いまでもわかんねーや。あとでしらべとこ。)
内容こそ(向こうの)小学生レベルで平易で簡単なものだよ。実に平易な表現を用いてキャラクターやらおねえさんやらが集まってお話ってかコントを繰り広げるのね。
セサミストリートとかがちかいかんじ。


でもなにがわかんねえってさ、、、字幕がねえんだよ。

日本語の説明ゼロなの。英語の字幕すらない。
中学生の英語の授業向けか?と思ったけど、いくら内容が簡単とはいえそんなにリスニングできる奴ばっかじゃないだろうし、どう考えても一般の中学生向けとしてはハードルが高いの。
小学校の英語の時間向け?とも思ったけど中学生以前の問題で絶対無理だろ。時間の無駄だ。
高校か?とも思ったけどそもそも高校で教育テレビとか教材につかわねーしなあ。
大学生か、というとさすがにゆとりとはいえ内容的に馬鹿にし過ぎだし。
とにかく謎なんだよ。
でまあ、謎だったんで今調べてみると、なんと答えは小学生向けでした。
うそーんまじかよ。今の小学生すげーナ。
ああ、もしかすると俺が見たのはえいごリアンだと思ってるだけでえいごリアンじゃなかったのかもしれない。深夜だったし。きっとそうだそうにちがいない。

まあいい。英語は置いとこう。英語も大事だけど今は置いとこう。関係ない。
あー、TOEIC受けなきゃなー。次こそは0.7kオーバー取りたい。

えっと、なんだっけ、、、ああそうそう。OpenGLね、OpenGL。
processing on eclipse な環境でのOpenGLの使い方。

まずprocessingをeclipseで使うやり方は、、、まあいいか。できてる前提で。
processingのlibん中のcore.jarをインポートしてビルドパスに追加して参照ライブラリに突っ込む。以上。
で、この状態でimport processing.core.*;って付け加えてPAppletクラスを継承するか別途オブジェクト作るかすればprocessingのメソッド使い放題。public void setup() とpublic void draw()で書いていく。(public void PApplet.setup() と public void PApplet.draw() でもいいかな。)あとはクソみたいなp5IDEと記述は一緒。
んでんでんで~、このままだとimport processing.opengl; は通らない。必要なjarをRefLibに入れてないからね。にゃあにゃあにゃあにゃあ。

さて、processing~/library/openglの中を見るとなんか色々それっぽいものが入ってる。OK.。
まずはインポートだ。 'gluegen-rt.jar', 'jogl.jar' and 'opengl.jar' の3つをとりあえずインポ。
ビルドパス追加でRefLibに。
それから忘れちゃいけないdllファイル。gluegen-rt.dll, jogl_awt.dll, jogl_cg.dll, jogl.dllの4つを例によってlibNativeの中にインポしとこう。

関係ないけど最近俺マス掻く回数が減ってんだよなあ。月1-2回。まだ25なのにこれだよ。草食系とかそんなレベルじゃない。仙人とか、超越者とか、異能者とか、、、若年性EDってやつ?ちくしょう、初陣もまだだってのに。でもほんとそういうのに興味がわかないんだよね。下ネタとかなにがおもしろいのかマジで理解できない。出すもの出す時もあくまで排泄行為の一環としてって感じ。エクスタシー?なにそれ?っていう。病院行った方がいいのかな。25なのに性欲ないンです、なんとかしてください、って。話を聞いてくれたのは30位の松雪泰子似の女医さんだった。「アラ、ソレハタイヘンネエ。デモチリョウノマエニマズハホントウニセイヨクガナイノカタシカメナクッチャイケナイワネエ、ボウヤ?」そういうと松雪泰子似の女医さんはいたいけな僕を診察ベッドの上に押し倒しワッフルワッフル

さあ、これで使えるようになったかな。とりあえずimport processing.opengl; を書いてsize(200,200,OPENGL);とでも書いて実行してみよう。






、、、どうだい?エラーが出ただろう?


まあまあ、そう怒らないでくれ。軽いブリティッシュジョークだhahah。

んで、こっからがみそだ。
ここで俺も詰んでさ。んで答えを求めてさまよったあげく行き着いたのがさっきのページ。
どうするか。 RefLibの中の'gluegen-rt.jar' and the 'jogl.jar' の2つについて、”ネイティブライブラリロケーション”を指定してやるんだ。
賢明な諸氏ならピンと来たことと思う。libNativeフォルダーをわざわざ用意したってのは、こういうことだ。(いや、そもそも標準的にlibNativeのなかにdllを入れるって通例になってるくさいけど。)
当該jarの上で右クリ、ビルパの構成、当該jarの▼を開いて、ネラロケ、編集、libNatibフォルダーの場所を指定してやる、OK。完了。これを2つそれぞれでやること。

さあ、ここまできたらもういいんじゃないか?
おれも書くのだるくなってきたぞ_?
なんだこのアンダーバー。うぜえ。はてな押したつもりがアンダーバーまで一緒に出てきた。うぜえ。アンダーバー超うぜえ。ごめんなさい。嘘です。アンダーバー大好きです。フォルダ名の先頭とかによくつけてます。整理に便利です。おすすめです。生理痛にもよくききます。経血ゼリーおいしいです。でも最近生理がきません。やばいです。責任とって下さい。ブヒー。
で、また適当にOpenでGLな、でもそこはかとなくprocessingabilityを感じさせるプログラムを書いたのち実行ボタン押してください。
エラーをはくこともなく実行できましたね?
(はーい!)←もちろん大きなお友達だよ!
じゃあ今日はここまで。
おわり?
おわり。バイバイ。

PS...あのSSちょっとおもしろいよね。中二じゃないけどあたいは好き。ところで本編でも麦野と浜面が和解できたのは良かった。ありきたりかもしれないがあたいはちょっとぐっときたぞ。ああでもー、浜面も好きだけど一番好きなのはやっぱいっつーさんだな。いっつーさんまじかっけー。いっつーさんマジ天使。
いや、これがネタじゃなくほんとに天使だから困る。あ、これってもしかしてネタばれ?
でもいいよね、どうせこんなこえだめ誰もきやしねーから。ブヒヒ。
上条さんはちょっとうっとおしいけどいなくなったらいなくなったでちょっとさびしい。
どこ行っちゃったんでしょうね?天界?

PSのPS...しかし一人称が「あたい」って我ながら気持ち悪いな。まあいいか。どうせ独り言だ。
だれもみやしねえ。
ついでに言うとPSってのはパーフェクトソルジャーの略なんだからね。勘違いしないでよね。プンプン。

2010年11月27日土曜日

物理音原付ハードウェアMIDIプレーヤ―

1.オルゴールの音鳴らす部分(長さの違う鉄の板が並んでるようなの)を用意。
2.ソレノイドを24個用意。高速にスイッチングできるリレーでも良いかな。
3.鉄の板の下にソレノイド取り付けて それぞれの板が叩けるようにしとく。
4.ソレノイドをmbedかなんかで制御できる状態にしとく。
5.MIDIを流すと音階に応じたソレノイドが動くようにしとく。
6.MIDI ファイルを読み込んでオルゴール音源で実際に演奏してくれる2オクターブ対応オルゴール型ハードウェアMIDIプレーヤの出来上がり。フィジカルMIDI音源というべきか。


ってのを考えてみた。ソレノイドっていくらぐらいすんだろね。
一般向けに売ってんの見たことねーや。
ネットワーク対応させた方がいいかなあ。っていうか明和電機っぽいなあ。

Javaで中括弧のみの文。その意味は?

int a = 1;
println("test1."+a);
/////無条件ブロック
{
  int b = 2;//このbはこのブロックの範囲でだけ使える。
  println("test2."+a+"."+b);
}
//////無条件ブロック終わり。
//↓これは通らない。
//println("test3."+a+"."+b);





こういうことだね。うん。