fc2ブログ
 
■プロフィール

クリエイトウェーブ

Author:クリエイトウェーブ
開発における、諸々を書いていきたいなと思っています。
mail : info@createwave.jp

■最近の記事
■カテゴリー
■最近のコメント
■月別アーカイブ

■最近のトラックバック
■ブログ内検索

■RSSフィード
■リンク
PHP用の開発ツール
お久しぶりです。。。フッチーです。
ず~っと忙殺されてました。

前からず~っと、いいPHP開発環境はないかと探してたのですが、やっと見つけた。
色々試してたのですが、どれもしっくり来なくて、結局秀丸で書いていたのですが(秀丸は秀丸で、使いやすいです)
ActionScript3なんかで言えば、FlashDevelopがあまりに優秀で使いやすいので、やっぱPHPとかでも使いやすい環境を求めてしまうのです。

見つけた開発環境は「NetBeans」
これは、素晴らしい・・・・

WinもMacも使えます。
自分は、ActionScript3や最近ではjActionの開発を機にjavaScriptも組む機会も増えてきましたが、HTMLはあまり組ません><。

HTMLもAptanaとかよりも組みやすそうな気がするんですが、そこはどうなんだろ。
とにかく、PHPはこれでバッチシ・・・

テーマ:プログラミング - ジャンル:コンピュータ

カテゴリー:PHP | TM(0) | CM(0)
PHPでパスを取得
おつかれさまです。
フッチーです。

自分を始めクリエイトウェーブが多忙な為、なかなかブログの更新が滞りがちです。
申し訳ありません。

さて、最近グリーにモバゲー、ミクシイとSNSアプリに携わる事が多いのですが、前外に頼んでいたPHPプログラムを自分で担当。Flashとかでゲーム制作、サーバーが絡むものでもクライアント(ユーザーのPC本体)で動くゲーム本編を作ってた事が多いので、中々苦戦中・・・

サーバーは今までもゲーム発注元担当が多かったのとゲーム本編作る方を主にしてたので、あまり手を出さないようにしていたのですが、やってみるとこれはこれでPHP+MySQLも面白いなと思ってきてたりして・・・

さてPHP+Smartyでグリーアプリ制作してたら、HTMLに表示されるべき画像が表示されない。
<img src="img/line.gif" width="240" height="10" />

とかの画像は表示されないという問題が・・・・ まあ基本的なことなんでしょうけど。
SNSシステム通っててパスがずれてるのは容易に想像できるんですが、まあどうすりゃいいんだってことで。

携帯端末のURLを見てみたら、案の定グリーのテスト用URLが表示されてます。当たり前だろうけど、HTML的にはここからのパスを読みにいってるわけで、当然画像読み込みに失敗。

色々PHPにコード埋め込んで実験してしらべてみました。

print(getcwd());

結果
HTTPじゃなくサーバー上のPHPが存在するフォルダのパス
/var/~~ とかのやつ



print($_SERVER["HTTP_HOST"]);

結果
URLというかホストデータが帰ってきた。ホストデータなのでhttp://はなし。
たいていの場合は、ドメインとかサブドメイン、www.ドメインとかが返ってくるんじゃないのかな。



print($_SERVER['SCRIPT_NAME']);

結果
PHPのファイル名



print($_SERVER['SCRIPT_FILENAME']);

結果
サーバー上のPHPのファイル名までのパス



print($_SERVER["DOCUMENT_ROOT"]));

結果
サーバー上のPHPが存在するフォルダのパス


サーバー上のパスが判ってもHTML上じゃ使えないと思うので、結果的に②しかつかえなさそう。

$URL="http://".$_SERVER["HTTP_HOST"]."/読み込ませたい画像パス"
とかするしかないのかな・・・

他に良い方法があるんですかね。
模索は続く・・・・


テーマ:PHP - ジャンル:コンピュータ

カテゴリー:PHP | TM(0) | CM(0)
au端末のキャッシュ
お疲れ様です。フッチーです。

ミクシイモバイルアプリを作成中に気になってたのが、キャッシュ。
自分の端末で実験をすると、どうもPHPではき出した動的なデータが差し替わっていない。

複数のミクシイIDで、試してみたら、やっぱり同じ結果でした。
最初のIDで見た結果が、他のIDでログインしても、同じ結果になってしまう・・・・

au端末だとそうなるので、docomo端末だとどうなのだろうと思ってやってみたら、どうもdocomoでは起きない。
sftBankもおきないっぽい。

ただこのままだと3キャリアSNSゲームとしてはマズイので、苦肉の策でPHP読み込んだら、直ぐに別のPHPに毎回変わる変数つけて読み込むとかやってみました。

「おお~、ちゃんと読むじゃないか!」と喜んだのもつかの間・・・au端末では回避できたんですが、元々キャッシュ問題の起きてなかったdocomo端末ではエラーが・・

この方法は駄目っぽい。元々気持ち悪いやり方だし、別の方法を考えねば・・・
なにか方法があるはずだ・・・

と思ってネットで探すも、うまい具合に情報みつからず。
気分を変えて本屋にいってみてみようと思ったら、手に取った本にいきなり書いてありました。

au端末は非常にキャッシュが強力で対策しないといけないらしい。
その対策とは・・

<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="Expires" content="0" />

の3つのmetaタグをつける事でした。

<html xml:lang="ja" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="Cache-Control" content="no-cache" />
    <meta http-equiv="Expires" content="0" />
<head>
<body>
<?php
 ここにPHPの内容を書く
?>
</body>
</html>

とPHPファイルの構造を変えたら、ちゃんとauでも動くようになりました。
PHPの中でHTMLを生成してmetaタグを作るばあいは、こういう構造にする必要はないみたい。

とりあえず、docomo端末、softBank端末もこのままで大丈夫でした。

ふう~3キャリアゲームを作るのも大変だ・・・統一してほすい。

テーマ:ソフトウェア - ジャンル:コンピュータ

カテゴリー:PHP | TM(0) | CM(0)
ActionScript2のXMLパース(au編)
お疲れ様です。フッチーです。

ActionSript2のXMLパース(docomo編)にてdocomo端末でXMLパース出来るようになったんですが、こんどはau端末でXMLを読まなくなってしまいました。

XMLファイルを読み込ませてたときは問題なかったのに、PHPでXMLを生成すると問題あり・・・またまた何故?と思考錯誤。

PHPの中身は下のような感じ。
<?php
 $dom = new DomDocument('1.0');
 $books = $dom->appendChild($dom->createElement('books'));
 $book = $books->appendChild($dom->createElement('book'));
 //attributを追加してみる
 $book->setAttribute("answer", "OK");
 $title = $book->appendChild($dom->createElement('title'));
 //attributを追加してみる
 $title->setAttribute("res", "OK");
 $title->appendChild($dom->createTextNode('テスト'));
 // save XML as string or file
 $test1 = $dom->saveXML(); // put string in test1
 //$dom->save('test1.xml'); // save as file
 //print($test1);
?>

これで
<?xml version="1.0" ?>
<books>
  <book answer="OK">
   <title res="OK">テスト</title>
  </book>
</books>

というXMLが出来上がるんですが、docomo端末は問題なくくるけど、au端末はXMLじゃなくて、なんかHTMLが来てる。なんじゃこりゃあ!?状態に陥りました。

調べてみたら、au端末の場合は、必ず
header("Content-type:text/plain") をつけないといけないらしい。

他のキャリアは、このheaderあるなし関係ないようなので、つまりはつけとくのが無難。

<?php
 header("Content-type:text/plain"); //auには絶対的に必要 docomo、softBankには必要なし
 $dom = new DomDocument('1.0');
 $books = $dom->appendChild($dom->createElement('books'));
 $book = $books->appendChild($dom->createElement('book'));
 //attributを追加してみる
 $book->setAttribute("answer", "OK");
 $title = $book->appendChild($dom->createElement('title'));
 //attributを追加してみる
 $title->setAttribute("res", "OK");
 $title->appendChild($dom->createTextNode('テスト'));
 // save XML as string or file
 $test1 = $dom->saveXML(); // put string in test1
 //$dom->save('test1.xml'); // save as file
 //print($test1);
?>

これで問題なくauでも受け取れるようになりました。

テーマ:PHP - ジャンル:コンピュータ

カテゴリー:PHP | TM(0) | CM(0)
FlashLite2.0が使えるか判定
ご無沙汰してます。フッチーです

今年の頭から、自社オリジナルのSNSアプリを計画してるんですが、忙しくて中々進みませんでした。
ゲーム会社っぽい独自のアプローチで、考えてますが、それこそ受注のミクシイ案件やら、動画サイトのゲーム制作など受注案件で、自社活動はここ半年以上ストップ!! まあ受注がメインなんですけどね。(笑
 
でも進まない&受注でもパンク状態が続いたので社員も増やすことに!! 
外部パートナー募集も引き続き行っています!!

で、クリエイトウェーブといえば、ActionScript3がメインな事もあり、PC案件ばかり。当然SNSもPCじゃあと思ってるんですが、時間が立ちすぎたこともあって、いままでちょびちょび作っていた携帯Flashゲームを先に試してみようと思い立ち、いま検討中。

もう作ってある、携帯Flashゲームを載せるので時間短縮にもなるし・・
と思ってたら、そう簡単でもありませんでした。jsも動かないので認証やら全部PHPでやるんですが、自分自身はASやらC#ばかりでPHPとMySQLとか今までやってなかったので、徐々に研究しながらやってます。

で、クリエイトウェーブも以前は、FlashLiteの仕事も多かったのですが、ここ2~3年はPC案件が中心。
以前作ったのは、受注ものだとLite1.1ばかり。 でも自社で作ってるのってLite2が多い。

特に自分なんかは、5年ぐらいLite1.1 は触ってない気がします。
プログラマから見ると、Lite1.1 と Lite2.0~Lite3.1までの差は、大きくかなり壁があります。

それで、
FlashLite2プロジェクト始動
とか、営業でもアピールしてたんですが、もう端末普及度的にもOKではないか?、それに自社もので1.1を使う意味もないので、Lite2でよしと思ってたんですが、やはり遊べない端末は、それなりに処理しないといけない。

せめて、画面で「この端末は対応してません」表示とか。

で、Lite2 以上が遊べる機種を判別するPHPのヒントを求めて、ネットを色々さがしたんですが、見つからず・・・
自分で作る事にしました。

簡単に考えると、これから出る機種は全部対応してるであろう前提で、docomoの場合は、movaは全部対象外だし、fomaは905、705からLite3機種なので、それ以前の機種は、はじけばいいハズ・・・

auは、
http://www.au.kddi.com/ezfactory/tec/spec/new_win/ezkishu.html
にて情報がありますので、flashlite1.1 の機種、もしくはflashliteののってない機種をはじけばいい・・・

softbankも、資料があったので、同じくLite1.1の機種をはじく・・・・

で作ってみました。
Flite_Code.jpg

あくまで、これから出る機種は、該当機種という前提ですけどね・・・・
スマートフォンとかで、情勢も変わってくるかもしれませんが・・・

PHPソースはここ。
FlashLite2が使えるか判定

キャリアとか端末判別は、pearの「Net/UserAgent/Mobile.php」を使っています。
迷ったのが、auのW32S。 端末番号が、「SN33/SN35」となってるので 「SN33」と「SN35」と帰ってくる場合があるのか、ホントに「SN33/SN35」となるのか判らない・・・ 念のため3通りにしておきました。

ソースは使ってもらっても構いませんが、なにかあっても責任は一切負いませんのであしからず・・
もし、使われるとか流用される場合は、コメントを残していってもらえると嬉しいです。

で、ここが間違ってるとか、もっといい方法があるとか、情報ある方は頂けると嬉しいです。

いかんせん、全端末実験できないので、協力してもらって完成出来れば・・・・なんて都合良く考えたりして(笑

テーマ:PHP - ジャンル:コンピュータ

カテゴリー:PHP | TM(0) | CM(0)