2010.10.31 Sunday | 14:43

  アマゾンの Product Advertising API のカスタマーレビューの対応 プログラマ

Creview

変更内容はたいした事ではないので放っておいてましたが、さすがにそろそろ
しておかないと忘れてしまいます。そもそも、他人の文章をそのまま取ってこ
れていたのがおかしいのですが、リンクを使って IFRAME 化してもあまり格好
良く無いので、shadowbox を使って、かっこよくページ内にできるかぎり大き
く表示するようにしました。

でまあ、自分のブログで書いたレビューを個別に挿入できるようにして、
しばらく様子を見ようと思います。


※ 使い方は、上のサンプルのソースを見れば解ります


それと、忘れがちなので、API のキーの確認。

1) Product Advertising API タブ
2) ちょっとスクロールして、リソースの アカウント設定 
3) アクセスキー情報 で、API 用のログイン





2010.10.31 Sunday | 10:31

  ほぼ、全て JavaScript で作成される Twitter のページで目を引く3つのスクリプト記述 プログラマ

その1

たぶん、IE に対するブックマークレット用のプロテクトです。
外部ドメインを参照するようなブックマークレットが動かなくなります。

( IE 以外では試した事ありません。)
<script type="text/javascript" charset="utf-8">
  // this must be set absolutely before any other script on the app is loaded for IE7
  document.domain = 'twitter.com';
</script>


その2

Firebug が実行中で無い場合にエラーにならないようにしたもので、
ページのデバッグをいつでもできるようにする為の特殊オプションだと思います。

使い方としては、JavaScript から Firebug のコンソールに直接出力するような
テストをするのでしょうが、その処理を埋め込んだままでも運用できるようにする
為だと思われます。

Console API - FirebugWiki
<script>
  var TIME = +new Date;
  if (!window.console) {
    var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
      "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
    window.console = {};
    for (var i = 0; i < names.length; ++i)
      window.console[ names[ i ] ] = function() {}
  }
</script>


その3

みたままですが、IE6 以前のブラウザの為のなんらかの処理ですが、
暇な時に見てみます。まだ IE6 動く環境あるので。
<!--[if lte IE 6]>
<script src="http://a0.twimg.com/a/1288470193/javascripts/phoenix/phxie6.bundle.js"></script>
<![endif]-->

IE 用条件コメント : バージョン ベクタ





2010.10.30 Saturday | 19:45

  PHP 5.3.0 以降の無名関数 プログラマ

借りている「さくらインターネット」ではまだ 5.3.0 は使えないみたいですが、
ローカルの 5.3.0 で動かしてみると気持ち良く動いたのです。

なんだか JavaScript 書いてるみたいで。

特に複雑な変数を明示する為の {} が役に立ってますねぇーー

5.3.0 での違いをはっきり認識したのは今回初めてだったのですが、
そんなにいちいちドキュメントに目を通すわけでも無く。ただ、必ず
さくらインターネットにアップして実行を確かめるのが常なので、
サーバーで動かなくって、「あれれれれ」

今後はもっと気を付けましょう。
<?
// **********************************************************
// n 桁の前ゼロ文字列を作成するには
// 以下で簡単に作成できますが、
// **********************************************************
$a = sprintf("%05d", 1);
print "$a<br>";

// **********************************************************
// どんな言語でもたぶんある関数(メソッド)を使って行うには
// **********************************************************

// 1) n 桁の 0 を目的の文字列の前に連結する

$a = "00000" . 1;

// 2) 全体の長さを取得する

$len = strlen($a);

// 3) 全体の長さ - 欲しい長さを開始位置とする

$start = $len - 5;

// 4) その位置から欲しい長さぶん切り取る

$x = substr( $a, $start, 5 );

print "$x<br>";

// **********************************************************
// PHP 5.3.0 より実行可能な無名関数
// **********************************************************
$f = function( $target, $n ) {

	$target = str_repeat("0",$n) . $target;
	$len = strlen($target);
	$start = $len - $n;
	$target = substr( $target, $start, $n );
	return $target;

};

print "{$f(1,5)}<br>";
print "{$f("AA",5)}<br>";
print "{$f("あA",5)}<br>";
print "{$f(1234,5)}<br>";
print "{$f(12345,5)}<br>";

?>

関連する記事

PHP : 前ゼロ文字列作成と右から必要な長さ文字列を取得する処理





2010.10.23 Saturday | 12:48

  Twitter の IE 用プロテクト? トラブル

英文コメントから、そうかもしれないと思われるのですが・・・

「アプリの他のどのスクリプトもIE7のためにロードされる前に、これは絶対にセットされなければなりません」

Firefox には効果無く、Google Chrome ではそもそもこの記述が無いです。

結論から言うと、これを実行している事によってある種のブックマークレットが
動かなくなります。セキュリティ設定を変更すれば解除されるかも知れませんが、
IE のセキュリティ設定は複雑なので、メリットもありません。

IE のセキュリティホールを利用されないようにする為の対処だと
思うのですが、まあ、この後のスクリプト処理も面白そうなので読んで
みたくはなってきました。
<script type="text/javascript" charset="utf-8">
  // this must be set absolutely before any other script on the app is loaded for IE7
  document.domain = 'twitter.com';
</script>






2010.10.23 Saturday | 12:19

  Flex4 SDK のダウンロード トラブル

Flex3 の SDK のダウンロードページが見れなくなっていましたが、
復活して、同様の Flex4 SDK のダウンロードページです。

Flex4sdk

Flex4 SDK ダウンロード(www.adobe.com) からダウンロードしたバージョンと一致している事を
確認しています。

その他の Flex 関連のリンクは、flex3 チュートリアル からどうぞ。




2010.10.21 Thursday | 17:24

  Flex( swf ) から呼び出した JavaScript で alert するとフリーズする Firefox トラブル

以前は問題無かったのですが、ここ最近だとは思います。
ソースコードをクリップボードをコピーする為に、swf を使っていますが、
swf 側でクリックしないと動作しないので、JavaScript を呼び出しています。

しかし、一度呼び出してクリップボードへのコピーは完了するのですが、再び
呼び出して「コピーされました」と alert させるようにしていたところ、そこで
固まります。仕方ないので、Firefox の場合のみ。setTimeout で alert を実行
するようにしました。

完全に固まるのでたぶん setTimeout で改善されると思ったらやはりそのようでした。
<script type="text/javascript">
var clip_str = "\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9"+
		"\u306b\u30b3\u30d4\u30fc\u3055\u308c\u307e"+
		"\u3057\u305f\u3000\u3000\u3000";


function orgCodeInit(id) {
	return "";
}
function orgCodeGetForClipcopy(id,shiftFlg,ctrlFlg) {
	var str = id.replace(/_object/g,'')
		.replace(/_name/g,'');
	var codeWorkString = "";

	objPre = document.getElementById(str);

	if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) {
		codeWorkString = objPre.innerText;
	}
	else {
		range = document.createRange();
		range.selectNode( objPre );
		codeWorkString = range.toString();
	}
	return( codeWorkString );
}
function orgCodeClipcopyEnd() {
	var userAgent = window.navigator.userAgent.toLowerCase();

	if (userAgent.indexOf("firefox") > -1) {
		setTimeout("alert(clip_str)", 10);
	}
	else {
		alert(clip_str);
	}
}

なんか、3.6.12 でなおったようなんですけど、ひょっとしたら Windows7 特有
かもしれないしなぁ・・・。どうせ処理的には setTimeout で問題無いので全部
変更しよっか考え中。





1/1