SQLの窓

2012年08月22日


Perlで、『defined(%hash) is deprecated at jcode.pl line 684』の対処

WEB 上に正解をみつけられなかったので、実際のコードをテストして検証しましたが、以下のコードで良いと思います。( 二回呼び出して二回目に初期化が処理されないのを確認しました )

このメッセージは『非推奨』を意味しますが、それらの内容や対処方法はこちらを参考にしています
defined(%hash) is deprecated
(D deprecated) defined() は未定義の スカラ 値を調べるので、ハッシュに 使っても普通は無意味です。 ハッシュが空かどうかを調べたい場合は、例えば単に if (%hash) { # not empty } としてください。
sub z2h_euc {
    local(*s, $n) = @_;
    if ( !%z2h_euc ) {
        &init_z2h_euc;
    }
#    &init_z2h_euc unless defined %z2h_euc;
    $s =~ s/($re_euc_c|$re_euc_kana)/
	$z2h_euc{$1} ? ($n++, $z2h_euc{$1}) : $1
    /geo;
    $n;
}

sub z2h_sjis {
    local(*s, $n) = @_;
    if ( !%z2h_sjis ) {
        &init_z2h_sjis;
    }
#    &init_z2h_sjis unless defined %z2h_sjis;
    $s =~ s/($re_sjis_c)/$z2h_sjis{$1} ? ($n++, $z2h_sjis{$1}) : $1/geo;
    $n;
}

WEB 上に % を $ に置き換えているコードを見かけましたが、それでは判断されずに毎回初期化が実行されます。但し、それでも実害は無いと思われます。


タグ:トラブル
posted by lightbox at 2012-08-22 10:52 | 記録 | このブログの読者になる | 更新情報をチェックする

2012年08月18日


長年自分用に使っている、SyntaxHighlighter 2.0.296 用 貼り付けコード作成

ブラウザが、XSS 対応でプレビューが一般的には動かなくなっていたのを動くようにしました。『単独記事で動作するようにする』にチェックすれば、とりあえずブログの記事中に書き込むだけで利用できると思います。

こちらは、テスト用の忍者ブログですが、正しく表示されています

既に、他のバージョンの SyntaxHighlighter がヘッダ等で読み込まれている場合は動作はどうなるかは解りません。

SyntaxHighlighter 2.0.296 用 貼り付けコード作成

オリジナルは、3.0.83 までありますが、そもそも使い方の解りにくいページで、2.0.296 で使用可能なクリップボードへのコピーや、オリジナルソースのウインドウ表示もどうなっているか良く解りません。

現状、iPhone や アンドロイドでも正しく表示されているので、使い込む価値はあると思っています。







posted by lightbox at 2012-08-18 22:31 | WEBサービス | このブログの読者になる | 更新情報をチェックする

2012年08月17日


Google Chromeで iPhone( Android )を正しく表示する方法

F12で開発者(デベロッパー)ツールを開く



右下隅にある歯車アイコンを開くと、3つのタブを持つ黒いオプションページが表示されます

User agent 設定タブ



ここで、agent を設定する事によって、サーバーへとりあえずこちらがその OS である事を通知できるようになりますが、デバイスのサイズはこちらで設定します。また、縦横の切り替えはボタンで行います

表示時にデバッグの為に停止する場合

▼ ブレイクポイントを無効化


デバッグをできるかぎり容易にする為に、document.write 等の特殊な処理部分で停止するようになっているようなので、自動的に設置されたブレイクポイントを一時的に無効にして処理を全て実行させます。

▼ 全て実行


▼ 実行完了


ちなみに、デバッグのタブ名が Sources になったのは最近です。agent タブになったのも最近で、Chrome が 21 になってからだと思います。それまでは、agent の処理もなんだかちょっと変でしたが、今はとても解りやすくなりました。

とにかく、スマホサイズでの WEB ページの確認が容易です。今はまだあまりする事も無いでしょうが、今後はパッド専用のWEB表示フォーマットを考える必要も出て来るのでこれは便利だと思います。





posted by lightbox at 2012-08-17 12:59 | 記録 | このブログの読者になる | 更新情報をチェックする

2012年08月11日


jQueryを使って livedoor の ical 天気ページから iPhone 用コンボボックスを作成する

iPhone のカレンダーに livedoorの 週間天気予報を『照会』させようとすると、アカウントの追加の『その他』で、ical の サーバ部分を入力する必要があるのですが、当然スマホですから入力が面倒なので、スマホで表示してコピーしてペーストすると楽ができます。その為のコンボボックスと入力フィールドを作成する為に、オリジナルページの TABLE 要素全体を使って jQuery で解析してビルドしています

▼ 作成するコードは以下のようになります。
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("jquery", "1");
</script>

<script type="text/javascript">
$(function(){
	var sl = document.createElement("select");
	$("#target").get(0).appendChild(sl);
	$("td").each(function(index,me){
		// 場所を記述している日本語は10文字以内(実際は4文字以内)
		if ( $(me).text().length < 10 ) {
			var opt = document.createElement("option");
			$(opt).text($(me).text());
			$(opt).attr("value",($("a", $(me).next()).get(0).href).replace("toolbox.winofsql.jp","weather.livedoor.com"));
			sl.appendChild(opt);
		}
	});
	$(test).val($(sl).val());
	$(sl).change(function(){
		$(test).val($(this).val());
	});
	$("#target_txt").val($("#target").html());
});
</script>
<div id="target"></div>
<textarea id="target_txt"></textarea>
<br /><input type="text" id="test" style='width:400px;'/>

まず、jQuery に関しては使いたいだけなので、Google の API を利用して一時的に使えるにしています。google.load("jquery", "1"); では、1.7.1 がロードされます。

対象の TABLE はごくふつうのテーブルですが、都合のいい事に必要なテキストは必ず TD が使われているので、$("td") で全ての TD を取得します。

TD はタイトルと、URL 用とがあって、必ず並んでいます。テキストの文字列がはっきり少ないので( 実際は4文字以内 )、$(me).text().length < 10 で対象をまず絞ります( $(me) は、$(this) でも可 )

次にその隣が欲しいわけですから、$(me).next() を対象としてセレクタを再度 "a" で絞って取得し、icalは、先頭の a だと解っているので get(0) で先頭要素を取得して href 属性を手に入れます。

同時に、テキストはすでに $(me).text() で手に入っているので、これらを利用して新しい select を作成してその HTML を TEXTAREA にセットして後で使えるようにします。

ただ、このままではもったいないので、その場で動作確認ができるようにイベントを追加しています。

※ このコードで作った HTML を以下のページで使っています

ip_ical.htm




posted by lightbox at 2012-08-11 14:39 | jQuery | このブログの読者になる | 更新情報をチェックする

2012年08月05日


スマホでYouTubeの埋め込みの表示サイズをJavaScriptでコントロールする

最近まで、YouTube で埋め込みコードを取得すると、OBJECT タグで埋め込まれていたようなのですが、今は IFRAME で取得できるようなので、この処理が可能です。

通常のブログですと、幅640で埋め込んでも特に問題無いですが、スマホで表示するとはみ出てしまいます。その対応処理です。

.text iframe とありますが、Seesaa のブログでは本文の class が text なので、その中の iframe に対して処理を行っています
<script type="text/javascript">
(function(){
	var str = "";
	var userAgent = window.navigator.userAgent.toLowerCase();
	if (userAgent.indexOf("iphone") > -1 || userAgent.indexOf("android") > -1 ) {
		str+="<style type=\"text/css\"> \n";
		str+=".text iframe { \n";
		str+="	width:290px!important; \n";
		str+="	height:auto!important; \n";
		str+="} \n";
		str+="</style> ";
		document.write(str);
	}
})();
</script>
<iframe width="640" height="480" src="http://www.youtube.com/embed/uxBFiU2N65c" frameborder="0" allowfullscreen></iframe>

iPhone



Android





posted by lightbox at 2012-08-05 01:18 | JavaScript コンテンツ | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり