ブラウザゲーム「蒼海の武装商船(プライヴァティア)」

ブラウザゲーム、「蒼海の武装商船(プライヴァティア)」をはじめました。

プラットフォームは、いつもの Ubuntu をインストールしたノートPCです。

何もしない状態だと、文字化けしました。

 

今回、ネットで検索したところ、文字化けの対策を発見。早速試したところ、文字化けはなおりました。

sites.google.com

 

文字も読めるし、快調と思ったですが、残念ながらNGでした。

じつは、このゲーム、Chrome ブラウザでの動作が保障されていません。

ゲーム内に、3Dグラフィックを使ったアクション画面があって、それが Chrome では動作しません。動作環境に記載されたブラウザは、IE11以上、FireFox38以上、Opera25以上、Safari7以上で、Windows でも Chrome はダメでした。

Linux では、最新のAdobe Flash Player が、Chrome でしか利用できないので、Chrome 以外のブラウザをLinux で使うと、このゲーム自体が動作しません。

 

ということで、このゲームは、Ubuntu ではNGでした。残念。

Chrome のクロスサイトスクリプティング

つい最近知ったのだが、Chromeブラウザは、クロスサイトスクリプティングをブロックする仕様になっているため、いわいるAJAX(JavaScript を使った非同期通信)で、コンテンツをロードしたサーバー以外のサイトに、非同期通信を行おうとすると、JavaScript でエラーになってしまう。

サーバー側でこのエラーが出ないように設定することができるし、もちろん Chrome の設定を変えることもできる。

最も簡単な回避策は、コンテンツをロードしたサーバーに、非同期通信のサーバーにアクセスしてそのままデータを流すラッパーみたいなものを準備することみたいだ。

 

私は、PHPとかJavaScript の学習用に、無料のサーバーを借りているのだが、そのサーバーに置いたページを開くと、必ず、ブラウザの下の方に、広告が表示される。

ブラウザに表示するコンテンツなら、全く問題にならないのだが、非同期通信を行うデータ(もちろんXMLデータ)の後ろにも広告が付いてしまう。

 

この広告が付くと、非常に都合が悪い。

世の中には、XML形式でデータを公開しているサーバが幾つかある。

www.find-job.net

こういったサーバのデータを利用しようとすると、Chromeクロスサイトスクリプティングのエラーになってアクセスできない。じゃ、自分が借りているサーバからラッパを使って持ってくると、広告が付いてしまい、XMLデータとして読み込めないようだ。

ということで、ネットで探すと、XMLを加工する JavaScriptソースコードがいっぱいあるのだが、泣く泣くテキストで処理するコードを自作することになった。

これはこれで、おもしろかったのだが。

福祉のための公的給付について

機会があり、今すんでいる市の福祉のための公的給付について調べてみた。

 

(1) まずは、グーグル。

キーワードは「山形市 給付」。山形市は、今住んでいる市。

上位に位置するのは、児童手当。

グーグルで調べる世代が、ちょうど子育ての世代で、その中で関心を持つ人が多い、ということの表れでしょう。

調べたかったのは、福祉関係の給付について。

キーワードを「山形市 福祉 給付」として検索しなおしました。

今度は、市の案内とかが上位に出てきます。

しかし、これらを読んでも判り難い。こういうのを解説してくれるページが、ぜひ、上位にくるようにしてほしいものです。

 

私の調べ物は、...簡単には済まない、ということがわかったので見直し中。

ブラウザゲーム「千年勇者」

ブラウザゲーム「千年勇者」、始めました。

基本、RPGはやらないのですが、いつもやっているブラウザゲームとのコラボ企画なので、始めました。はじめたばかりなので、まだチュートリアルの途中です。

しかも、いつもの Ubuntu のノートPCでやってみたのですが、さっそく不具合が。

下記の画面で止まってしまいます。

 

この25%のところにきっと何かがあると思う

f:id:muzina_630:20150222181250p:plain

ということで、Ubuntu でこのゲームはNGです。

なかなかゲームがすすみません。

 

仕事のミスについて

会社での仕事のミスについて

 

別のブログに投稿。

http://muzina6301.daiwa-hotcom.com/wordpress/

 

これを書いた後、そのミスのせいで、その人の人格を否定してはいけない、と次の記事を読んで、改めて思いました。


自分が責められているという感覚、あるいは物事には"責任をとるべき誰か"がいるという考え方について。 - フジイユウジ::ドットネット

 

amazon api

 以前は、仕事の1つがプログラム作成だったのですが、3年まえに転職してからは、自宅でやる趣味の1つになってます。今の会社では、この技術を使う機会が無いんだよな。

実は、転職直後から忙しくて、自宅でプログラムなんてやろうとも思わなかったので、久々に書いてます。

 

この週末(土日)に書いたのは、PHPの簡単なプログラム。

たった3年ですが、仕様をすっかり忘れてて、ネットで引きながらのプログラムで、時間ばかりかかってなかなか進まないのがはがゆい。

思えば、転職する前も、プログラムを書く頻度が落ちていて、スキルレベルがかなり怪しかったが、このブランクですっかり忘れてしまったようだ。

 

この週末に書いたのは、Amazon API を利用するための仕組み。

次のブログにあったソースを、ほぼパクリました。


Web APIで最安値を取得できちゃう。楽天、Amazon、Yahoo!など、やってみたら楽しすぎる!!!

 

できたのは、実はAPIを利用するURLを作る処理だけで、受け取ったデータを加工して、見せる処理は、まったくのてつかず。しかも、オプションとかも、まだまだ未調査だし。

これから、いろいろやりたいと思っているのですが、スキルが追いつかない。

 

とりあえず、今回作成したPHPコードは、こんなのです。

(ばんぷろさんのコード、勝手に修正させてもらいました。)

 

[こっちを、ブラウザで表示]

<?php
/*
このファイルは、api.php を使う為の記述
*/

require("api.php");
$api_obj1 = new amazon_PA();

$keyword = "アナと雪の女王";

echo "キーワード    : " . $keyword . "<br>\n";

echo "<br>\n";

try {
$request_url = $api_obj1->api_ItemSearchAll( $keyword, 1);
echo "<a href=\"" . $request_url . "\" target=\"_blank\">ItemSearch結果</a>";
} catch (Exception $e ) {
echo "エラー:<br>\n";
echo $e->getMessage(), "<br>\n";
}

?>

[こっちは、api.php で、読み込みする]

<?php

class amazon_PA
{

/*
 このファイルは、Amazon Product Advertising API
 利用するためのクラスが定義されている。
*/

// パラメータの配列の名称
var $REQUEST_WORD = array(
"AWSAccessKeyId",
"AssociateTag",
"Keywords",
"Operation",
"OfferStatus",
"ResponseGroup",
"SearchIndex",
"SellerId",
"Service",
"Sort",
"Timestamp",
"Version"
);

// リクエストの為のパラメータ用配列
var $params = array(
"Service"=>"AWSECommerceService",
"AWSAccessKeyId"=>"(ここにアクセスキーを)", // アクセスキー
"AssociateTag"=>"(ここは、アソシエイトタグ)", // アソシエイトタグ
"Keywords"=>"",
"Operation"=>"",
"OfferStatus"=>"",
"ResponseGroup"=>"",
"SearchIndex"=>"",
"SellerId"=>"",
"Sort"=>"",
"Timestamp"=>"",
"Version"=>"2013-08-01"
);

// access URL
// var $BASE_URL = "http://webservices.amazon.com/onca/xml?";
var $BASE_URL = "http://webservices.amazon.co.jp/onca/xml?";

// シークレットキー for signature
var $AWS_API_SECRET_KEY = "(シークレットキー)"; 

// access HOST NAME for signature
//var $BASE_HOST = "webservices.amazon.com\n/onca/xml";
var $BASE_HOST = "webservices.amazon.co.jp\n/onca/xml";


// ItemSerch のメソッド
//
// api_ItemSearch()
//
function api_ItemSearch($SearchIndex, $Keywords, $debug_mode ){

// 引数をチェックする
if ( $SearchIndex == "" ) {
throw new Exception('引数 SesrchIndex が空です。');
}
if ( $Keywords == "" ) {
throw new Exception('引数 Keywords が空です。');
}


// ItemSerch リクエストのパラメータ作成
$this->params["Keywords"] = $Keywords;
$this->params["Operation"] = "ItemSearch";
$this->params["ResponseGroup"] = "ItemAttributes,Offers";
$this->params["SearchIndex"] = $SearchIndex;
$this->params["Timestamp"] = gmdate("Y-m-d\TH:i:s\Z");

// リクエストURLを作成

// URL 用文字列
$request_text = $this->url_param_marge( $debug_mode );
$signature_URL = $this->url_signature_text( $request_text );

if ( $debug_mode == 1 ) { // デバック用
echo "<br>\n";
echo "[URL]:" . $this->BASE_URL . $request_text . "<br>\n";
echo "<br>\n";
echo "[SIG TEXT]: " . $signature_URL . "<br>\n";
echo "[ACCESS K]: " . $this->AWS_API_SECRET_KEY . "<br>\n";
}

// リクエスト用のURLが完成
$request_text_url = $this->BASE_URL . $request_text . "&Signature=" . $signature_URL;
if ( $debug_mode == 1 ) { // デバック用
echo "<br>\n";
echo "[ sig URL ]: " . $request_text_url . "<br>\n";
echo "<br>\n";
}

// リクエスト用のURLを返す
return( $request_text_url );

// api_ItemSearch ここまで
}

//
// api_ItemSearchAll()
//
function api_ItemSearchAll( $Keywords, $debug ){
try {
$request_text_url = $this->api_ItemSearch( "All", $Keywords, $debug );
} catch (Exception $e ) {
throw new Exception( $e->getMessage() );
}
return( $request_text_url );

}

// Sub functions
//
// url_param_marge()
//
function url_param_marge( $debug_mode) {

$request_text = "";
$count = 0;

foreach ( $this->REQUEST_WORD as $rest ) {
if( $this->params[$rest] != "" ) {
$url_text = rawurlencode($this->params[$rest]);
if ( $debug_mode == 1 ) {
echo $rest . " = " . $this->params[$rest] . " [URL ENCODE] " . $url_text . "<br>\n";
}
if ( $count == 0 ) {
$request_text = $rest . "=" . $url_text;
} else {
$request_text = $request_text . "&" . $rest . "=" . $url_text;
}
$count = $count + 1;
}
}
return( $request_text );

// url_param_marge() end
}

//
// url_signature_text()
//
function url_signature_text( $request_text ) {

$request_text_sig = "GET\n" . $this->BASE_HOST . "\n" . $request_text ;

// signature 用のテキストを作成
$signature = base64_encode(hash_hmac('sha256', $request_text_sig, $this->AWS_API_SECRET_KEY, true));
$signature_URL = rawurlencode( $signature );

return( $signature_URL );
// url_signature_text() end
}

}
?>

 

他の機能も利用したいのですが、まだ、手つかず。

うまくいったら、ここにも書きます。

 

 

フラッシュのエラー

年末年始の休暇も終わり、通常の仕事になったと思ったら、また連休。

なかなか休みモードから、仕事モードに切り替わらない。

ついつい正月と同じように、ゲーム三昧。

妻には、「親子でなんなの!!」と言われつつ、子供たちは、DSで、私はPCでゲーム中。

 

さて、正月休み前から気になっていたのだが、Linux 版の Chrome のフラッシュ、Webページによっては、エラーになってしまう。

f:id:muzina_630:20150112154717p:plain

 

DMMのブラウザゲームのトップページでこれが出てしまう。

YouTubeの終了後もこれが出る)

 

これが、Windows 版だとちゃんと表示するので、やっぱりバージョンの問題か。