気分転換にデザインを変更

長らく放置気味のこちらのブログ。

当初はもっと色々自作のあれやこれやをやる予定だったのに・・・。

まぁ。愚痴っても始まりません。

とりあえず、デザイン(テーマ)を変えて、気分転換です!

色々実験的な開発(?)を進めていますので、このブログはその実験台にしてしまおうと考えています。

 

ウェブ開発者のシェルメモ帳

毎日のようにLinuxに触っているのに、ついつい忘れてしまうコマンド。

ということで、ウェブ開発者のシェルメモ帳と題して、ちょっと不真面目なコマンド集(苦笑)を作ってみました。

少しでも楽しんでいただければ嬉しいです。

 

Letter for you

久々の記事で、緊張しますw

昔から、どうしても作りたいサイトがあり、今回即席ではありますが、
公開に踏み切りました。

Letter for you ~君への手紙~

なにかと言いますと、ただ誰かに当てた手紙を、Web上のフォームから> 投稿してもらう、というだけのものです。

実は、以前にも同じコンセプトのサイトを作ったことがありました。
そのとき、知り合いの何人かに(ほとんど無理矢理)書いてもらったの
ですが、思いのほかその内容が心に響きまして。

そんな考え方もあったのか、というような新鮮な感動がありました。

まだまだ改善の余地のありすぎるサイトですが、徐々に育てるのが好き
なので、気長に続けていければと思います。

ぜひ、ご参加ください。

 

シンプルなレーダーチャート

仕事で必要になったので、Flex向けのレーダーチャートコンポーネントを作りました。

いたってシンプルですが、使いやすいと思います。

中身の構成は、決して美しいコードではありませんが・・・(苦笑)。
とりあえず、サンプルのコードをアップしておきます。

サンプルダウンロード

自作のパッケージが一緒に入っています。

 

Flexでなんちゃってコマンドラインクライアントを実装

ブラウザ上で動作し、ちょっとした作業なんかをおこなえる、コマンドラインツールのようなものが作れないかな、と思い、作ってみました。

サンプルページ

表示されたFlashの下のほうのテキストインプットにコマンドを打ち込むと、上のテキストエリアに結果が表示されます。
ブラウザ上での実行なのでJavaScriptとの連携とかもできますし、あるいはLocalConnectionを使用して、他のSWFと通信、あるいはHTTPリクエストを投げて、サーバーとの通信なんかも可能ですね。

野望としては、ソケット通信を利用して、リアルタイムなリッチクライアント(だが、CUI)を実現とかってのも。

現時点で実装済みのコマンドにはほとんど実用性がありませんが、拡張性のあるツールなので、今後作者のやる気が続けば、ちょっとした面白いものにはなるかもしれません。

 

サクラエディタ+PerlScriptでマクロ(1) 現在のディレクトリをオープン

サクラエディターで現在開いているファイルの、設置ディレクトリをエクスプローラでオープンするマクロ。

なお、explorer.exeが存在するパスを”c:/winnt/”としています。

use Win32::Process;
use Win32;

my $f = GetFilename();
$f =~ s/[^\\]+$//;

explorer($f);

sub ErrorReport{
  MsgBox(
    Win32::FormatMessage(Win32::GetLastError())
  );
}

sub explorer {
  my $path = shift;

  Win32::Process::Create($ProcessObj,
  "C:\\winnt\\explorer.exe",
  "explorer $path",
  0,
  NORMAL_PRIORITY_CLASS,
  ".")|| die ErrorReport();
}

ActivePerlのドキュメントを見ていて、Win32::Processに目がいったので、使ってみました。

追記:

エクスプローラのパスは、適宜変更してください。

例)

win2000 "C:\\winnt\\explorer.exe"
win xp "C:\\winsows\\explorer.exe"
 

Flexでゲームを作ろう

…なんて、計画中です。

詳細不明(汗)。

こっちのブログがあまりにさびしいので、投稿してみましたw

 

Flex3でキューブにテクスチャを貼り付けてみた

Flash Player10からは3Dを扱うための機能が搭載されています。

どんなものかと思い、とりあえず作ってみました。

↓汚いソースですが
ソース

サンプル

なお、再生にはFlash Player10以降が必要です。

考え方としては、立方体を作成し、各面をBitmapDataで塗りつぶしていくというものです。
graphics.drawTrianglesメソッドを活用することで、これを実現できます。

また、3次元から2次元への投影は、falsh.display.Utils3Dクラスが提供するprojectVectorsメソッドが行ってくれます。
このメソッドはdrawTrianglesメソッドに渡すための三角形の頂点座標情報およびイメージを貼り付けるためのUVT座標情報を生成してくれます。

座標をせっせと割り出していく作業は非常に骨が折れるので、3Dツールとかで作ったデータをインポートしてこれるようなクラスとかあると便利ですね(もう誰か作ってるんじゃないかなぁ…)。

やってみて、いくつかポイントがあったので、メモ。

Vector.<T>に慣れるべし

型制限のついた配列。3D関連の処理ではやたら多用されてるので、サクサク使える必要がある。

Matrix3D処理時の基準点

このページが分かりやすかったです。

気をつけないと、とんでもない方向に回ったりします。

時計回りの座標指定

座標をちまちま指定していくときに、指定順を気をつけないと、陰面消去で面が消えたりします。
自分は紙に書いて、せっせと追っていきました(それでも消えたり)。

UVT座標指定

面にイメージを貼り付ける際に使用する座標です。基本的にテクスチャは長方形ですので、そのまま貼るなら(0,0),(1,0),(0,1),(1,1)のいずれかを指定していくことになります。
これも上記同様指定の順番を間違えるとゆがんだり、ひっくり返った画像が表示されるので、注意。

面倒だったので、ループで処理。

for(var i:uint=0; i<v3.length; i++){
	switch(i%18){
		case 0:
			uvts.push(0);
			uvts.push(0);
			uvts.push(null);
			break;

		case 3:
			uvts.push(1);
			uvts.push(0);
			uvts.push(null);
			break;

		case 6:
			uvts.push(0);
			uvts.push(1);
			uvts.push(null);
			break;

		case 9:
			uvts.push(1);
			uvts.push(0);
			uvts.push(null);
			break;

		case 12:
			uvts.push(1);
			uvts.push(1);
			uvts.push(null);
			break;

		case 15:
			uvts.push(0);
			uvts.push(1);
			uvts.push(null);
			break;
	}
}

まとめ

とにかく座標指定には悩まされるので、目的に応じてラッパークラスを用意しないとやってられないかも。
誰かが便利なコードを用意してくれるのを期待。

でも、なにはともあれ動いたんで、とりあえず満足。

 

ドラッグ&ドロップ操作用Javascript

とりあえずの完成版。

任意のブロック要素間で子要素をドラッグ&ドロップさせることが出来ます。

ダウンロード

動作サンプルページ

ちなみに動作にはprototype.jsが必要です。別途先に読み込んでください。

使用法

  • アイテムの置き場となる要素のclass属性にspot、ドラッグされる要素のclass属性にdraggerをそれぞれ指定します。
  • DragDropManagerオブジェクトを生成し、initApp()メソッドを呼び出します。

var dm = new DragDropManager();
dm.initApp();

基本的にはこれだけです。

並び替えられた要素の結果を得る際は、getResult()メソッドを呼び出します。
このメソッドは、ドラッグされる要素のid属性の値を、カンマ区切りで返します。
また、ドロップ領域間の区切りは|であらわされます。

例) item1,item2,|,item3,|

 

とりあえず、作るだけ作ってみました

開発メモにWordPressを入れたら、思いのほか設定が簡単だったので、こっちもついでに…

勢いあまって入れてみました。

自作でちょっと面白いものが出来たら公開していきたいと思います。