サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
都知事選
ft-lab.ne.jp
これを進めるとアップデートが行われます。この作業は、対象モジュールのアップデートが行われます。 では、どのようなときにアップデートが必要なのでしょうか? なお、モジュールを開発する場合はいちいちのアップデートが面倒なので、開発用にXOOPS環境を入れて「html/modules/SimpleModule」内のファイルを直接いじりながら進めていくのがてっとり早いと思います。 下記の場合、モジュールをアップデートしないと変更が反映されません。 テンプレートである「templates/*.html」が変更されたとき 「xoops_version.php」内の構成が変更されたとき 「sql/*.sql」にて、データベース構成が変更されたとき 「language/*」内の言語リソースが変更されたとき 下記の場合はモジュールのアップデートは不要です。 実際のプログラム部である「*.php」が変更された
mqoImporter/Exporter for Shade12/13 Ver1.5.0.3 Shade12/Shade13にてメタセコイアのmqo形式を読み込むプラグインです。プラグインとしてのソースコードも同梱しています。 Shade 11以前のものは、古いバージョン(Ver 1.4.0.0以前)で動作します。 仕様 テクスチャ画像ファイルは相対パス指定することで、別ディレクトリ上にあるもの読み込まれます。 メタセコイアの曲面制御には対応していません。 カトマル・クラークにてShadeに持ってきてます メタセコイアのミラーリングは、Shadeのリンクに置き換えられます。 バイナリデータがmqoファイルにある場合は、読み込みに失敗します。 メタセコイアの回転体には対応していません。 メタセコイア内にて、1オブジェクトに複数のマテリアルを割り当てている場合は、 Shadeにインポートしたと
機能をファイルに分ける(PHPのinclude/require) プログラムを組む際に機能が増えてきたとき、1つのファイル内での管理では限界がきてしまいます(可読性がなくなる、メンテナンスがしにくい)。そこで、C言語ではinclude(Javaではimport)でファイルを分けることになります。Flashでもincludeですね。 PHPの場合は、似たようなものが「include」「require」「include_once」「require_once」のように多岐にわたっています。 「include_once / require_once」は、1回だけ読み込まれるという仕様となります。同じPHPファイルを2回以上呼び出すことにより、変数初期化などでのバッティングをしないようにします。C言語で言う、 #ifndef _XXXX_H #define _XXXX_H // 何か定義を行う #e
WindowsではWindowsディレクトリに「php.ini」を置きます。Linuxの場合は「/usr/local/lib/」に置きます。 XOOPSにてPHPを使う場合は文字コードをEUCで扱う必要があるため、これの設定をphp.iniで行う必要があります。その他、いろいろな設定をphp.iniで制御することができるようになっています。 なお、php.iniの設定を変更した場合、一度Webサーバ(Apacheなど)を再起動する必要があります。 文字コードをEUCにする [PHP] ; 以下をEUC-JPに置き換え default_charset="EUC-JP"; [mbstring] mbstring.language = Japanese ; 以下をEUC-JPに置き換え mbstring.internal_encoding = EUC-JP mbstring.http_input
Flashでは、XMLファイルを外部に用意してそこから情報を取ってくることができます。XMLファイルを利用する利点は、データを階層的に管理できる、データがタグ付けされているので分かりやすい、といったところでしょうか。 XMLファイルの読み込みと、XML形式のテキスト作成・および送信もできるみたいです(ファイルに書き出しは無理っぽい)。ですので、XML形式で情報をやりとりできるシステムと連携をとりやすそうですね。たとえば、最近のWeb検索システムを絡めたAPI(GoogleAPI/YahooAPIとか)で、データのやりとりをXMLで行うものも出てきてますので(というか、最近のWebシステムの主流はXMLでデータ送受信かな)、これらをFlashから操作する、ということもできるかもしれません。 サンプルのXMLファイルを用意する + XMLの基礎 それでは、手始めにファイルからXMLファイルを読
これだけではモジュールにテーブル(mysql.sqlの内容)が結びついていません。「xoops_version.php」にて以下の行を追加することにより、モジュールインストール時にデータベーステーブルが作成されることになります。 $modversion['sqlfile']['mysql'] = 'sql/mysql.sql'; $modversion['tables'][0] = 'test_tbl'; 「$modversion['sqlfile']['mysql']」にて、モジュールインストール時に参照するsqlファイルを指定します。「$modversion['tables'][0]」に、作成するテーブル名を指定します。テーブル名は「mysql.sql」でcreate tableしているテーブル名を指定します。 複数のテーブルを生成する必要があるときは、 $modversion['ta
メルセンヌツイスター(2007/07/30) かなり昔から使っていた擬似乱数ルーチンがあるのですが(数学書に載っていたFORTRANのものをC++に移植したものです。少なくともANSI Cのrandよりは散らばりがある)、最近の作業にて周期的な部分が出てしまう、ってのが発生していました。今まで(自前)GIレンダラでも使ってたくらいなので、そんな変えるまでもないかなぁと思ってたのですが・・・。こんなこともあるもんですね。私用でも仕事でも10年くらい使っていたルーチンなんですが、今までお世話になりました。 ということで、もっと精度のいいメルセンヌツイスターに置き換えるようにしました。 http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/mt.html これで散らばりがさらに出てきた感じです。周期も目立たなくなったかな。 しかし、なかなか原因が見つから
Linux Kernel 2.4.xにて、メモリサイズの2倍のスワップ領域がないと、 kernel:Unable to handle kernel paging request at virtual address... のようなエラーメッセージが「/var/log/messages」に吐き出され、しばらくするとシステムが不安定になることがあります。原因がこれかは分かりませんが、出会ったことがあります。 この場合は、スワップ領域を拡張します。以下を入力します。 dd if=/dev/zero of=/swapfile bs=1024 count=1600K この場合、「/swapfile」に(ファイルとして)1.6GBのスワップ領域を作成することになります。 その後、 mkswap -c /swapfile を指定することにてスワップファイルを確定させます。 swapon /swapfil
PhysX (2006/09/08 作成〜2006/10/05 更新) 「PhysX」(フィジックス)とは、ageia社の提供している物理演算を行うためのエンジンです。これを操作するために「PhysX SDK」が同社にて提供されています。非営利で個人使用するにあたっては、自由にSDKをダウンロードして実験することができます。 http://www.ageia.com/ また、物理エンジン部は他社製のPPUを搭載したボードを使用することでハードウェアでアクセラレートすることができます。 このサイトでは、PhysX SDKによるプログラムについての情報を蓄えていく予定にしています。気が向いたら更新することになるため、不定期になることをご了承くださいませ。また、あくまでもこちらで勉強しつつ更新をかけますので、内容の不備についてもご了承を。 2006/10/05での公開されているSDKのバージョン
PHPの配列 <?php $ar = array(1, 2, 3, 4, 5); print("array = ".$ar[2]."<br>\n"); ?> 配列の場合はダブルクォーテーションで囲って"array = $ar[2]<br>\n"のようにはできない点に注意です。上記の場合「array = 3」と出力されます。 配列に要素を追加 for($i = 0; $i < 50; $i++) { $dataA[] = $i; } とすると、$dataA[]は「0, 1, 2, 3, 4, 5 ...」のように入ります。 配列サイズを取得 $ar = array("A", "B", "C", "D"); $n = count($ar); count()で配列サイズを取得します。上記の場合、$nは4が入ります。 二次元配列の実装 一次元配列の中に一次元配列を入れることにより、二次元配列を作る
SmartyとはPHPで使用できるテンプレートエンジンです。デザイン部分(表のHTMLページ)とロジック部(PHPで記述)を分離して管理することができるようになります。Javaで言う、JSPとServletみたいな感じですね。PHP側でHTMLに文字列をassignし、テンプレートファイルでレイアウトを指定することで、ページレイアウトの管理を可読性があるものにします。 少し大きめのシステムを作る場合は、この見通しの良さは(効率アップのためにも)重要になりますので覚えておいて損はないかと思います。ちなみにですが、Smarty自身もPHPで作られています。いわばPHPを拡張するライブラリのような位置づけになります。 PHP単体ではSmartyは利用できませんので、以下の手順でインストールしてあげる必要があります。 Smartyのインストール 2005年11月現在で「Smarty Ver 2.6
考察 Shadeバージョンによって変換の挙動が違う。 Shade8以降は、「create_converted_polygon_mesh_interface」にてパート内の形状がひとまとめにされている(仕様が変わっただけ?)。 コンバートの速度がShade9では(9.0.1でもほぼ同じでした)、Shade7.5からみて7倍以上遅くなっている。 ちなみにShade9「パーティクルフィジックス」にて「物理設定」のカスタム情報を選択した直後に、このコンバート処理を行っているのですが(レンダリング前も同様)大部分がこのコンバート処理で時間がかかってます。つまり、このポリゴンコンバート機能がボトルネックになっていると思われます。 ということで、思い出したようにShadeのパフォーマンスチェックを行うことにします。今のところ気になる点として、 DXFの読み込み(インポート)が異常に遅い ハイパースレッド
「iptables」は、IPアドレスやポート番号により、通過するパケットのフィルタリングを行うプロセスです。これで何が実現できるかというと「ファイアウォール」が実現できます。(1台の専用サーバでも、もちろんこのフィルタリングは指定可能です。昨今は、防御処理を行うのは当たり前になってますので、フィルタリング処理は必要不可欠なものになっています) これにより、不正なアクセス・使いたくない通路(ポート)はシャットアウトしてしまおう、という魂胆です。(ただし、完全に安全というわけではないという点には注意してください)パケットの入る側と出る側があり、これらは双方でフィルタリングの「ルール」を設定することが可能です。 また、ルータでの使用時などでのIPの変換機能(NAT)も備わっています。 フィルタリングの考え方 安全に行うには「すべてを拒んで、特定のを許す」という性悪説(?)で設定します。特に、リモ
XOOPS? 有用な追加モジュール 英語・日本語の切り替え モジュールを造る 簡単なモジュールを作成 ログインユーザ情報の取得 データベースにアクセスするモジュールの作成 外部データベースへのアクセス セッション管理 ハマるとなかなか気づかないワナ サンプルモジュール「SimpleMessageBoard」(2005/11/15) 以前仮置きしていたのを、いろいろ変更を加えました(Ver 1.10)。 ダウンロード:xoops_SimpleMessageBoard_110.zip 以下のようなミニ掲示板を実現するモジュール「SimpleMessageBoard」です。XOOPSのmodulesディレクトリに「SimpleMessageBoard」を放り込んで、システム管理の「モジュール管理」でインストールします。 複数のPHPソースの連携、フォームでの入力処理、データベースの格納、など基本
ベクトルの加減算や内積・外積・行列計算などはレンダラを作る場合には頻繁に使うため、扱いやすいように1ファイル(ソース)にまとめてしまうのが吉です。 たとえば、(x, y, z)の3つのfloat型を持つものは以下のように定義してしまいましょう。 (x, y, z)の要素を持つベクトル typedef struct VECTOR3 { public: float x, y, z; VECTOR3(){ }; VECTOR3(float x, float y, float z) { (this->x) = x; (this->y) = y; (this->z) = z; }; VECTOR3 operator + (const VECTOR3 dvec) const { VECTOR3 v3; v3.x = ((this)->x) + dvec.x; v3.y = ((this)->y) +
ポリゴン(三角形)は、3つの頂点の並びにより「面から垂直に出るベクトル」が計算できます。これが「面法線」といわれるものです。 これは、3頂点をv0/v1/v2とした場合に VECTOR3 vv1, vv2, n; vv1 = v1 - v0; vv2 = v2 - v1; Vec3Cross(&n, &vv1, &vv2); Vec3Normalize(&n, &n); として求まります。「Vec3Cross」は外積を求める関数、「Vec3Normalize」はベクトルを正規化して長さを1.0にする関数です(よく使うベクトル・行列計算関数を参照)。 この「面法線」は、光の計算をするとき(正反射するときなど)に利用されます。また、面が表を向いているか裏を向いているかの判定でも利用されます。 たとえば、方向ベクトルV(v.x, v.y, v.z)があり、面の法線がN(n.x, n.y, n.z
LinuxマシンにEclipseを入れる手順です。 こちらで試した環境は、TurboLinux 7.0、J2SE1.4.1、Eclipse 2.1(GTK版)です。 なお、以下の作業はrootユーザーで行うようにしてください。 GTK+は、GUI周りの描画を行うためのAPI群です。 EclipseのGTK版は、このAPIを利用しています。 TurboLinux7のGTK+はバージョン1.2ですので、2.0以上にアップしないと、 Eclipseを動作させることができません。 すでに、GTK+がインストール済みかを確認するには、 「rpm -q gtk+」「rpm -q glib」などの ようにして、RPMでインストール済みかをチェックしてください。 これで、インストールされているかどうか・バージョンは何か、というのを確認できます。 「rpm -e gtk+」「rpm -e glib」のように
フォームでの文字化け〜"あいうえお眉幅" さて、いきなり変なタイトルをつけてみたのですが、理由は後で説明します。まず以下のPHPソースを実行してみてください。 <html> <head> <meta http-equiv=Content-Type content="text/html; charset=EUC-JP"> </head> <form action="formtest.php" method="POST"> メッセージ:<input type="text" name="f_tVal" size=40 maxlength=40 /><br> <input type="submit" value=" OK " /> </form> <hr> <?php if(isset($_POST['f_tVal'])) { $tVal = $_POST['f_tVal']; print("te
フリーのデータベース「MySQL」のインストール方法・使用方法の簡単なガイドです。http://www.mysql.com/より、最新版のインストールモジュールなどを取得してくることができます。 Windows環境 インストール(Windows) 「mysql-4.0.14b-win.zip」(最新版をmysql.comのサイトより取得するようにしてください)を解凍し、インストールします。また、JavaとJDBCにて連携を取る場合は、ブリッジである「mysql-connector-java-3.0.8-stable.zip」を解凍し、Tomcatの「Tomcat4.1\shared\lib」内に「mysql-connector-java-3.0.8-stable-bin.jar」をコピーします。JDBCの使用については、JDBCのページを参照してください。 その後、以下の作業を行い動作をチ
cosθは水平方向の-1.0〜+1.0の範囲を取り、sinθは垂直方向の-1.0〜+1.0の範囲を取ることが分かります。 θって何? では、次はcosθ/sinθにおける「θ」の意味合いです。上記では「度(°)」で指定しましたが、C言語/数学では「ラジアン」という単位で指定します。 「360度 = 2π」というのが基礎となる単位と考えてください。「π」は円周率を表し「3.1415926535...」と延々に続く数値です。「360度 = 2π」なんで「180度 = π」、「90度 = 0.5π」ですね。 では「N度」では? #define PI 3.1415926535 #define SITA(c) ((PI * (c)) / 180.0) double fValS, fValC; double n = 45.0; fValC = cos(SITA(n)); fValS = sin(SIT
Future's Laboratory 技術格納庫 Future's Laboratory(http://www001.upp.so-net.ne.jp/y_yutaka/)のうち、技術情報をまとめているサイトです。 トップページは「http://ft-lab.ne.jp」となります。 [2014/01/04] facebook https://www.facebook.com/yutaka.yoshisaka [2015/06/23] Twitter https://twitter.com/cg_ftLab facebookでは、技術的でないたわいもないことや解説する必要がないことなどだらだら書いてます。 変更履歴 2016/1/2 独り言日記(2016/01) Menu 2015/12/31 独り言日記(2015/12) 2015/9/4 独り言日記(2015/09) 2015/8/3
さて、オフィス(もしくは自宅の仕事場)などで複数のサーバを使ってネットワーク環境を構築する場合は数台のマシンをつなげることになると思います。 また、Webサーバを立ち上げて外から(インターネットから)サイトを見ることができるようにする、という場合はローカル(LAN内)とは区別した場所にサーバを配置する必要が出てきます。 ネットワーク環境構築にあたっては大きく、「グローバル」「DMZ」「LAN」3つのエリアに分かれます。それぞれがグループ化されていると思ってください。 これは構成例のほんの1例で、その他にも組み合わせはあります。これは後ほど。 グローバル グローバルネットワーク、といってもぶっちゃけて言うと「インターネットから見えるネットワーク領域」です。ここは、外部(インターネット)から見える必要がありますので「グローバルアドレス」というプロバイダから提供されている固定IPアドレスにて認識
[Tomcat 4.1] +[bin] +[common] ... +[webapps] +[examples] +[ROOT] +[tomcat-docs] +[webdav] 例えば、「http://localhost:8080/examples/servlet/HelloWorldExample」のように サーブレットをWebブラウザから実行する場合は、実際のサーブレットのclassファイルは、 「Tomcat 4.1\webapps\examples\WEB-INF\classes\HelloWorldExample.class」に存在することになります。 ここで、実行用のディレクトリを「mydir」として、この中に自分が作ったサーブレットプログラムを収める、とします。 ディレクトリは、以下のように作成する必要があります。 このとき、「mydir」のディレクトリ内に、「WEB-IN
レイトレース処理での一番大事な部分、交差判定について記述します。ここではレイ(視点位置と視線ベクトルを持つ)とポリゴン(三角形)との交差判定になりますね。 単純な交差判定 三次元空間上のポリゴンをX/Y/Z軸を圧縮する形で2次元に投影してしまいます。これは、X-Y平面への投影・X-Z平面への投影・Z-Y平面への投影の3つの投影があります。一番確実なのは(誤差を少なくするのは)それぞれの面に投影した場合の面積を計算して、一番面積の大きい面に投影するとするといいです。 上図の場合は、X-Z平面に投影しています(三角形の頂点座標のうち、X/Z成分のみを取り出します)。 また、レイの方向ベクトルと面の法線ベクトルにより「直線と面の交点位置」を求めます(これは3次元空間での処理)。このときに交点が求まります。が、三角形内に内包されているかは分かりません。これを、X-Z平面に三角形を投影している場合は
Flashゲームではよく使われるんでないかと思われる、ムービークリップの複製です。これは、たとえば32x32ピクセルのブロックを敷き詰める場合に利用できます。また、敵キャラクタを配置する場合にも利用することができそうです。 まずシンボルをトップメニューの[挿入]-[新規シンボル]にて作成します。アニメーションをしないキャラクタなら「グラフィック」を、アニメーションをするキャラクタなら「ムービークリップ」で作成します。 なお、「敷き詰める」みたいな処理を行いたい場合は編集時にグリッドを表示するようにして座標をきっちりあわせるようにします。トップメニューの[表示]-[グリッド]-[グリッドの編集]にてグリッド間隔をしていして、[表示]-[グリッド]-[グリッドの表示]をチェックするとグリッドが表示されます。上の画像では16x16ごとにグリッドを表示するようにして、32x32のブロックを描いてい
PHPにてURL引数のデータを渡す URLの指定にて http://xxxx.yy.zz/user.php?id=5&name=yoshi などとした場合の「id = '5'」「name = 'yoshi'」の引数を取り出します。 <?php // [ user.php ] if(isset($_GET['id'])) { $id = $_GET['id']; print("$id<br>\n"); } if(isset($_GET['name'])) { $name = $_GET['name']; print("$name<br>\n"); } ?> HTTP_GET_VARS$_GETの配列内に、URLで指定した値が代入されます。第一引数にてURLでの引数名をシングルクォーテーションで囲って指定しています。 また、「isset()」関数にてその値が存在するか調べています(true o
元のオブジェクトが持つ頂点情報などは中心位置を(0, 0, 0)としたときの座標系であらわされます。これを「ローカル座標」と言います。 ここから始まり、すべてのオブジェクト(物体)はシーンという3D仮想空間内に配置されます。この「シーン」を表現する座標系を「ワールド座標」と言います。ローカル座標からワールド座標に移行する際に、オブジェクトの拡大縮小・回転・平行移動などが行われます。ワールド座標にはオブジェクトだけでなく、光源・視点も配置されます。 さらに、今度はこれを「視点(カメラ)位置から見たときの」座標に変換します。視点は情報として、「視点位置」と「視線方向」があります(その他、視野角度などの情報もありますが、これが使用されるのは「パースペクティブ変換」です)。これを元に変換すると、始点位置が(0, 0, 0)で視線方向がZ軸で奥に向かってZがプラスになる座標系に変換されます。これを「
Flash MX 2004 Flashによって動的なページを作成するためのTipsなどを記述します。 ここでは、最終的にミニゲームを作成するものとし、同時に基本的な2Dゲームアルゴリズムについて解説していきます。 FlashはWebブラウザ上で動作させることができるだけでなく、最近ではアニメーションのコンテンツ・ゲーム・企業の扉絵・サイト自身など、さまざまな用途で利用されています。応用幅はたくさんありますので、覚えておいて損はないかと思います。 なお、FlashをWebブラウザ上で動作させるには「Flash Player」が必要です。これは、Macromediaのサイトより無料でダウンロードできます。 http://www.macromedia.com/jp/ また、30日間使用できるトライアル版のFlash MX 2004もダウンロードできるためちょっと試してみたい方はいじってみるといい
Javaにおいて、C/C++のモジュールを呼び出すことができる、 または、逆にC/C++からJavaの機能を呼び出すことができる インターフェースを「JNI」(Java Native Interface)と言います。 JNIを使用することにより、JavaではタッチできなかったOSネイティブな処理や 速度の必要な処理をC/C++言語で行ったりできるようになります。 以下に、その手順を説明します。 ここでは、JavaからC言語の関数を呼び出す方法を記述していきます。 呼び出す側のJavaのソース「JNITest.java」を以下のようにします。 [ JNITest.java ] public class JNITest { static { System.loadLibrary("JNITest"); } public native String getText(); public nativ
次のページ
このページを最初にブックマークしてみませんか?
『Future's Laboratory (ft-lab)』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く