• カテゴリ コンピュータ の最新配信
  • RSS
  • RDF
  • ATOM

blog - コンピュータカテゴリのエントリ

ブログ投稿時のオプションの初期値

カテゴリ : 
コンピュータ
執筆 : 
kuha 2010-04-25 07:26
ここのブログはd3blogモジュールを使っているのだが、記事投稿時のオプションで、HTMLの有効化、改行の自動挿入、掲載日などが指定できる。デフォルトで改行の自動挿入がオフになっているので、これをオンに変更したのだが、管理者画面からはできずに、ソースコードで該当部分を探して修正することになった。

xoops_trust_path\modules\d3blog\include\preferences.inc.php内の1行を以下のように修正。

//'dobr_by_default' => 0,
'dobr_by_default' => 1,

ちなみに、このファイルで他のオプションのデフォルト値も変更できる。

Max/MSP/Jitterでの日本語表示

カテゴリ : 
コンピュータ » Max/MSP
執筆 : 
kuha 2010-03-30 07:50
Max/MSP/JitterのWindowで日本語表示する方法をまとめてみる。

まず、Max5であること、MacOSXであることが条件となる。
Max4や、Windows XP や Vistaまた 7 だとうまくいかない。おそらくOS内部の日本語処理のUnicodeの問題らしい。Maxは5になって日本語処理が格段によくなっており、Unicode化されているため、日本語だけでなくユニバーサルな言語で対応可能のようだ。

そこで、Jitterでの日本語表示の例だが、Max5 / MacOSならば話は簡単。

例えばjit.lcdにwriteでメッセージを送るときには、まず、
font Osaka 12
とjit.lcdに日本語フォント(この場合はOsaka)の指定をしてやる。そして、
write 今日は。
などのmessageをjit.lcdに送るのだが、このmessageのInspectorを開いてFontタグのFont NameをOsakaなどの日本語フォントにしてやればよい。

また、jit.gl.text2dなどのOpenGLで、テキストをjit.gl.renderに送る場合も同様で、
font Osaka 12
とjit.gl.text2dに日本語フォントの指定をして、
text 今日は。
などのmessageをjit.gl.text2dに送るのだが、このmessageのInspectorを開いてFontタグのFont NameをOsakaなどの日本語フォントにしてやればよい。

ちなみに、PreferencesのDefault Font や System Font は変更しなくてもよい。
Xoops Cubeのフォーラムとして、newbb+fileupを使っているのだが、既読管理にCookieを使っているようで、4KB制限のためフォーラムの投稿が約150スレッドを超えると既読管理ができなくなる。
そこで、新しく投稿されたスレッドは、投稿日時から一定の期間、「New !」といったフラグが表示されるように改造した。

これまで、結構、newbbはテンプレート管理でいろいろ改造してきたが、今回はトップメニューに表示される最近の投稿を新しい順に表示するnewbb_block_new.htmlを改造する。
XoopsはテンプレートにSmartyを使っているので、Smartyで日付計算をする。

まず、$smarty.nowで現在日時のタイムスタンプを取得して、Newを表示する日数の秒を引き算して、スレッドの投稿日時と比較する。Smartyでは、算術計算はmath equationやassignなどを使って変数を宣言して行うので、やや面倒な書き方になる。
また、newbbの日付の書式がデフォルト(2010-3-9など)だと、日付の文字列の比較ができないので、フォーマットをmysql(2010-03-09など)に変更しておく。

たとえば、10日間、New !という文字列を$topic.timeの後に表示するには、以下のような感じ。

  <{math equation=x*24*3600 x=10 assign=deldays}>
  <{math equation=x-y x=$smarty.now y=$deldays format="%d" assign=nowdelay}>
   <{if $nowdelay|xoops_formattimestamp:"mysql" < $topic.time}><FONT COLOR="RED">New !</FONT><{else}> <{/if}>

modules\legacy\language\ja_utf8\global.phpにある日付の書式設定をすべて変更(2010-03-09など)しておく。
//define("_DATESTRING","Y-n-j G:i:s");
define("_DATESTRING","Y-m-d G:i:s");
//define("_MEDIUMDATESTRING","Y-n-j G:i");
define("_MEDIUMDATESTRING","Y-m-d H:i");
//define("_SHORTDATESTRING","Y-n-j");
define("_SHORTDATESTRING","Y-m-d");

ちなみに、Smartyのコメントアウトは、
   <{* hogehoge *}>
などとすればよい。

Max/MSPをiLokにオーソライズ

カテゴリ : 
コンピュータ » Max/MSP
執筆 : 
kuha 2010-03-04 06:47
Max.MSPのライセンスは、通常PCに個別にオーソライズされるので、1ライセンスにつき、1つのPCでしかライセンスを使用できない。しかし、USBのドングルキーの一種であるiLokキーにライセンスをオーソライズすれば、iLokをUSBにさすだけで、どのPCでもMax/MSPを使用できるようになる。その方法は以下の通り。

  1. iLokのサイトにてアカウントを作る。
      確認メールが送られてくるので、リンクよりコンファームする。
      iLokのアカウント管理をするために,同サイトからiLok License Managerをインストールする.
  2. cycling'74のサイトから、Max/MSPのライセンス情報をiLokのアカウントへ移動させる。
      Max/MSPのシリアルナンバーなど、必要情報を入力。
        登録したiLokアカウントのUser ID, Emailなどを入力しないとCycling'74がオーソライズ情報を移してくれない。
      [Submit iLok]をクリックする。
      手続きが終わるとcycling'74よりお知らせメールが届く。通常1-3日を要す。
  3. iLokのアカウント上に移動されたライセンス情報を、実物のiLok本体に移動させる。
      iLokのサイトにログインすると、「You have a license」という表示があるはず。
      iLokをUSBに差し込んで「Synchronize」ボタンを押すと、現在のiLokの情報が表示される。
      [download license]でライセンスをiLok本体にダウンロードし、オーソライズする。

なお、iLokは、もともとはdigidesign社のProtoolsのソフトウェアやプラグインのライセンスを管理するために作られたものなので、M-poweredなど、Protoolsの製品を買うとついてくる。また、iLok単品は、サウンドハウスなどで購入可能。
最近、Windows XP/VistaでMax/MSP4.6+Jitter1.6が立ち上がらなくなる現象が起こって、困っていた。Javaの更新に問題があるのか、Windowsの更新パッチに問題があるのか、いろいろ調べたが、原因はQuickTimeにあることがわかった。

Windows XP/Vista上のMax/MSP4.6 + Jitter1.6は、QuickTimeを7.5.6にバージョンアップすると、Maxが起動しなくなる。Max/MSPまではうまく起動するのだが、Jitterの起動のところで、最新版のQuickTimeとの不整合で落ちるようだ。この場合、QuickTimeのバージョンを7.6.0に下げると、問題は回避され、Max/MSP+Jitterが無事、立ち上がるようになる。あるいは、Jitterのみアンインストールすると、Max/MSPだけは立ち上がる。

なお、MacOSXやMax/MSP/Jitter5ならば、QuickTime7.6.5でも問題ない。

Max/MSPのJavascriptへ引数リスト渡し

カテゴリ : 
コンピュータ » Max/MSP
執筆 : 
kuha 2009-10-08 09:54
Max5になって、JavaScriptへの引数をリストで渡す際の個数が大幅にアップした。

従来のMax4.6までは、引数をリストで渡せるのは最大256個までだったので、たとえばマトリックスの全セルの要素の値をforループで計算するときも、16*16=256までのマトリックスが限界だった。それより大きいマトリックスはoffsetなどを指定して、セルを複数に分けてリスト渡しするしかなかった。

ところが、Max5で、リスト渡しできる最大個数が128*128=16384個にまで増えた。これで、128*128のマトリックスの全セルの計算がJavaScriptで一気に行える。

たとえば、matrixの全セルの値をjit.spillでリストに吐き出し、jsパッチでJavaScriptに渡して、セルの値の最大値とそのセル番号をリスト出力するのは、こんな感じ

inlets = 2; 
outlets = 1; 
var in01_; //input values of all cell as list(array)
var in02_; //input matrix dimmension x,y
function list()
{
    if ( inlet == 0 ) { in01_ = arguments; }
    if ( inlet == 1 ) { in02_ = arguments; }
    if ( inlet == 0 )
    {
        var n;
        var max_i; //最大値セルの番号
        var max_data = 0; //セルの最大値
        n = in02_[0] * in02_[1]; //マトリックスの全セル数
        var data00_ = new Array( n );
        var data01_ = new Array( 2 );
        for( var i = 0; i < n; i++){
            data00_[i] = in01_[i]; //入力リストを配列に格納
            if( max_data <= data00_[i] ){ //最大値とセル番号の格納
                max_data = data00_[i];
                max_i = i; 
            }
        }
        data01_[0] = max_i; //出力結果(セル番号)を入れる
        data01_[1] = max_data; //出力結果(セル最大値)を入れる
        outlet( 0, data01_ ); //結果の入った配列をoutletからリスト出力
        delete data00_;
        delete data01_;
    }

Max/MSPのJavascriptの生命体サンプル

カテゴリ : 
コンピュータ » Max/MSP
執筆 : 
kuha 2009-06-24 05:55
Max/MSPフォルダーのexamples > javascript > simulationの中にboidroidやspiringoidなど面白い生命体のような動きをするサンプルがあります。個体数、大きさ、形状、色合いといった生命体の属性や、重力係数、バネ係数、摩擦係数などの物理的な動きを変数で制御できます。

Javascriptはオープンソースなので、独自のカスタマイズも可能です。