プログラミングの最近のブログ記事

仕事が忙しくてプルタブを更新している暇がありません。
ごめんなさい。pulltabのSEOも最近落ちてきているので、やり直さなければなりません。
あうー。

本題

ボタンインスタンスbtn0~btn9の合計10個ある場合、
どれを押されたかを検出するには、一つ一つにコードを書き、フラグで検出するよりは
関数に飛ばして、関数内でfor文で処理させたほうが短くて済む。

for(i=0;i<10;i++){
    btnOnRelease(i);
}

function btnOnRelease(_num){
    this["btn"+i].onRelease = function(){
        trace("btn"+i+" is released");
    }
}


たとえばこんな感じ

set_file_buffer($fp, 0);

//書き込みバッファを0にする。
通常、ファイルの書き込みには、バッファと呼ばれるところに一時的に書き込み、ある程度溜まったところで、ファイルに書き込むという動作をするので、バッファにある値と実際のファイルの値が異なる瞬間が存在する。


flock($fp, int operation);

//汎用ファイルをロックする。
operationを指定することにより、ロックすることもできる。


$fp = @fopen("/tmp/counter", "r+");
// ファイルがなかった場合、ファイルを作る。
if( !$fp ) {
    $fp = fopen("/tmp/counter", "w");
}

// バッファとファイルの差異を0にする。
set_file_buffer($fp, 0);

//ファイルを排他ロック
flock($fp, LOCK_EX);
//ファイルポインタを先頭へ
rewind($fp);
$buf = fgets($fp, 1000000);
if( !$buf ) {
     $buf = 1;
} else {
     $buf++;
}
//ファイルポインタを先頭へ
rewind($fp);
fputs($fp, $buf);
//ロック解除
flock($fp, LOCK_UN);
fclose($fp);

参照・引用:スタックアスタリスク

グーグルマップおもしれー。


    <script type="text/javascript">
    function initialize() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("map_canvas"));
        //座標を設定
        var point = new GLatLng(<MTIfNonEmpty tag="cfgooglemappoint"><MTcfgooglemappoint></MTIfNonEmpty>);
        //初期位置 軽度,緯度,縮尺
        map.setCenter(point, 13);

        //マップコントロールパネル表示
        map.addControl(new GLargeMapControl());
        //右下ミニマップの表示
        map.addControl(new GOverviewMapControl());

        //ふきだし設置 位置, ノード(文章)
/*
        map.openInfoWindow(map.getCenter(), document.createTextNode("あああああ"));
        if(!map.infoWindowEnabled()){
            map.enableInfoWindow();
        }
*/
        //スクロールホイールでのズームイン・アウトを有効
        if(!map.scrollWheelZoomEnabled()){
            map.enableScrollWheelZoom();
        }

        //滑らかに拡大縮小を行うを有効
        if(!map.continuousZoomEnabled()){
            map.enableContinuousZoom();
        }

        // ===== マーカーとフキダシ(変更不要) =====
        function createMarker(point,html) {
            var marker = new GMarker(point);
            GEvent.addListener(marker, "click", function() {
                marker.openInfoWindowHtml(html);
            });
            return marker;
        }
        
        // ===== ポイント設置設定、前が緯度(Lat)、後が経度(Lng) =====
        var point = new GLatLng(<MTIfNonEmpty tag="cfgooglemappoint"><MTcfgooglemappoint></MTIfNonEmpty>); //★位置設定
        var marker = createMarker(point,'<div style="width:310px; padding:8px; background-color:#ececec; font-family:Courier; border:solid 1px #cccccc;" ><$MTEntryTitle$> <MTcfshoptitlejp> [<MTcfshoparea>]</div><br /><MTcfaddress>'); // ★
        map.addOverlay(marker);
        marker.openInfoWindowHtml(html);

      }
    }
    </script>
 

とRFC で決められているから。

参照:68user's page

>>C 言語で CGI プログラムを作ろう
$iaddr = inet_aton($host)

Perlでホスト名($host)をIPアドレスに変換

*ホスト名が存在しない場合は、変換されない。

 

$port = getservbyname('http', 'tcp');

httpで使用するポート番号でTCPプロトコルを使う。

*$portには80が入る

img01_080117.jpg

ActionScript、解りやすい独自の書き方

 定数、変数、関数、クラス名、ムービークリップ、ボタン、グラフィック、オブジェクトなどなどの名前をつける際は、先頭の文字を小文字にし単語の切れ目において次の文字を大文字にしてみる。

例: var hogeHoge;

関数名の場合、先頭に文字は何もつけない。関数利用の際はfeedReader();の様に、必ず()まで記述すること。でもこれだとmy_mc.onEnterFrame = feedReader();みたいな形としては利用できないんですよね。すこし考えないといけないかもです。

function feedReader(){
// ここにステートメントを記述
}

feedReader();

記述方法の違いでたとえば

my_mc.onEnterFrame = feedReader();

だと動作しないのに

my_mc.onEnterFrame = function (){
feedReader();
}

こういう書き方だと動作するのは何故なのでしょう・・・。

 変数名の場合、Number型ならn、string型ならs、 boolean型true or flaseならb、フラグ(1 or 0 or -1などの例外処理)ならfを変数名の先頭につける。

  • var nHoge:Number = 15;
  • var sText:String = 'hogehoge';
  • var bFlag:Boolean = true;
  • var fFlag:Number = -1;

ムービークリップなら先頭にmc、ボタンならbtn、グラフィックならgr、オブジェクトならobj。インスタンス名も同じように対処する。

定数はすべて大文字で単語の切れ目に_(アンダースコア)を使う。
定数の場合も同じように先頭小文字で型判別する。

var sVAL_ALPHA

ググればググる程、人によって記述の仕方が異なるので、一番良い方法を見つけたいとおもう今日この頃。とりあえずこの方法でやってみて不具合が出たらまた考えて見ます。最終的には非公式テクニカルノートの野中さんやyougopと同じ記述方法にしてみたいですね。

img01_071220.gif
flashのマニュアルを呼んでいると「データ型について」という項目があります。そこには

  • ストリング (String) データ型
  • 数値 (Number) データ型
  • ブール (Boolean) データ型
  • オブジェクト (Object) データ型
  • MovieClip データ型
  • ヌル (Null) データ型
  • 未定義 (Undefined) データ型
  • Void データ型
この8個のデータ型がある訳ですが、これは本当に正しいのか?とよく考えると疑問が沸いてきます。

主にオブジェクト指向プログラミングで、あるオブジェクトへの操作が呼び出し側(sender)ではなく、受け手のオブジェクト(receiver)によって定まる特性のこと。
--ポリモーフィズム:wikipediaより引用別窓


私はこのポリモーフィズムについて全く理解ができません。上記wikiには次の様な例が載っているわけですが、

  1. 数字を文字列にする場合 string = StringFromNumber(number)
  2. 多態を行なう変換方式:見た目上、型によらない変換が可能 string = number.StringValue

これが全く理解ができません。型を指定しなければならないのか、一度定義した関数やクラスを変数・引数?の型にとらわれず再利用したいのか・・・
または単純に定義したクラスをオブジェクト、インスタンスにする際に内部の関数に異なる動作をさせたいのか・・・
なぜポリモーフィズムが必要なのか。むしろ、そういう状態をそういう名前にしたのか。。。

FLASHを使っていて矩形(けい)でマスクした画像が入っているムービークリップを使うことがよくあると思います。
それをActionScriptで横幅をthis._widthで、高さをthis._heightで取得したいときってあると思います。・・・。あるんです!

で、上手く横幅と高さを取得できないと・・・。


たとえば、

ベクター画像である100×100サイズの矩形(けい)で、200×250の画像Aをマスクしたムービークリップ、mcAがあるとします。

そのmcAの横幅を_width、高さを_heightで、trace()して取得すると、100×100でマスクしてあるのにもかかわらず、画像Aのサイズである横幅200、高さ250を返します。
よく、マスクしてあるムービークリップのサイズを取得し、サイズを変えようと、値を入れ込んでも上手くいかないのはこの為です。

ActionScript [mcA] 「画像A(200×250)を矩形(100×100)でマスクしたムービークリップ」
onClipEvent( load ){
trace( this._width ); // 200 を返す。
trace( this._height ); // 250 を返す。
}

FLASHとPHPによる送信メールフォームの覚書

http://www.gac.jp/article/index.php?stats=question&category=11&id=17138&command=msg

http://www.gac.jp/article/index.php?stats=question&category=11&id=11483&command=msg
教えて!google先生「PHP FLASH メール」


getLoadVars = new LoadVars();
sendLoadVars.sendAndLoad("mail.php", getLoadVars, "POST");

sendLoadVars.sendAndLoad("mail.php", getLoadVars, "POST");を使って、HTMLフォームのようにPOST送信すればよいだけっぽい。
仕事の納期は後2日。どうしましょうOTL

このアーカイブについて

このページには、過去に書かれたブログ記事のうちプログラミングカテゴリに属しているものが含まれています。

前のカテゴリはブックマークです。

次のカテゴリはモバイルSEOです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。