2011年3月2日水曜日

twitterer_anywhereとwordpressのページ分割

twitterer_anywhere.jp.jsを使用してretweetを回収して表示することができるけど、
wordpressのページ分割をしようした場合、以下のような問題が起きる。

1:
http://hogehoge.jp/post_id をページ分割すると

2:
http://hogehoge.jp/post_id/2 や
http://hogehoge.jp/post_id/3 になる

WPのパーマリンクはページ分割分まで出さないので、
topsyなどに引数で渡す場合 1:http://hogehoge.jp/post_id になる。
逆に出されるとページ毎にリツイート変わってしますのでありがた迷惑。

となると、
http://hogehoge.jp/post_id/2 や
http://hogehoge.jp/post_id/3 では、
ページのURLからトラックバックを取得してるtwitterer_anywhere.jp.jsでは
リツートが表示されなくなる。

それを解消するためtwitterer_anywhere.jp.jsに書かれたjavascriptのreplaceの正規表現を少し書き換え。

ソース下部に書かれたtwitterer_urlの部分を

twitterer_url = location.href.replace(/\/\d$/,"");

にする。

2010年12月8日水曜日

Twitpic等のサムネイル画像取得

$url = 'Twitpicなどの短縮URL';

$_url = parse_url($url);
hostCheck($_url['host'], $_url['path']);

function hostCheck($host, $path){
if(strcmp($host,"twitpic.com")==0){
$thumbPath = "http://". $host. "/show/thumb". $path;
echo "twitpic : ";
}else if(strcmp($host,"yfrog.com")==0){
$thumbPath = "http://". $host. $path. ".th.jpg";
echo "yfrog : ";
}else if(strcmp($host,"img.ly")==0){
$thumbPath = "http://". $host. "/show/thumb". $path;
echo "img.ly : ";
}else if(strcmp($host,"pic.im")==0){
$thumbPath = "http://". $host. "/website/thumbnail". $path;
echo "pic.im : ";
}else if(strcmp($host,"imgur")==0){
$thumbPath = "http://i.imgur.com/". $path. "l.jpg";
echo "imgur : ";
}else if(strcmp($host,"movapic.com")==0){
$thumbPath = "http://image.movapic.com/pic/t_". $path. ".jpeg";
echo "携帯百景 : ";
}else if(strcmp($host,"ow.ly")==0){
$thumbPath = "http://static.ow.ly/photos/thumb/". $path. ".jpg";
echo "ow.ly : ";
}
//画像であるかの確認
if(@exif_imagetype($thumbPath)){
echo '<img src="http://www.blogger.com/.%20$thumbPath." />';
}
}

Twitpic 等の画像投稿サービスのサムネイル画像の URL

ページ URL を書き換えるだけでサムネイル画像が表示できるもの

  • Twitpicドキュメント
    • ページ: http://twitpic.com/
    • サムネイル画像: http://twitpic.com/show//
      • : “mini” or “thumb”
  • 携帯百景
    • ページ: http://movapic.com/
    • サムネイル画像: http://image.movapic.com/pic/_.jpeg
      • : “s” or “t”
  • はてなフォトライフ
    • ページ: http://f.hatena.ne.jp//YYYYMMDD
    • サムネイル画像:http://img.f.hatena.ne.jp/images/fotolife///YYYYMMDD/YYYYMMDD_.jpg
      • : “120″ or “m”
  • Mobypictureドキュメント
    • ページ: http://moby.to/
    • サムネイル画像: http://moby.to/:
      • : “thumbnail”, “small”, “square” or “medium”
  • yFrogドキュメント
    • ページ: http://yfrog.com/
    • サムネイル画像: http://yfrog.com/.th.jpg
  • PhotoShare
    • 短縮URL: http://bctiny.com/p
    • ページ: http://www.bcphotoshare.com/photos//
    • サムネイル画像: http://images.bcphotoshare.com/storages//.jpg
      • : “thumbnail”, “large”, “thumb68″ or “thumb180″
  • img.ly ドキュメント
    • ページ: http://img.ly/
    • サムネイル画像: http://img.ly/show//
      • : “thumb” or “mini”
  • Twitgooドキュメント
    • ページ: http://twitgoo.com/
    • サムネイル画像: http://twitgoo.com/show//
    • サムネイル画像: http://twitgoo.com//
      • : “thumb”, “mini” or “img”
  • pic.imドキュメント
    • ページ: http://pic.im/
    • サムネイル画像: http://pic.im/website/thumbnail/
  • YouTubeドキュメント
    • 短縮URL: http://youtu.be/
    • ページ: http://www.youtube.com/watch?v=
    • ページ: http://www.youtube.com/watch#!v=
    • サムネイル画像: http://i.ytimg.com/vi//.jpg
      • : “default”, or “hqdefault”
  • imgur
    • ページ: http://imgur.com/.jpg
    • サムネイル画像: http://i.imgur.com/.jpg
      • : “s” or “l”
  • Plixi (旧TweetPhoto) (ドキュメント
    • ページ: http://plixi.com/p/
    • ページ: http://tweetphoto.com/
    • サムネイル画像: http://api.plixi.com/api/TPAPI.svc/imagefromurl?size=&url=<ページURL>
      • : “thumbnail”, “medium” or “big”
  • Ow.ly
    • ページ: http://ow.ly/i/
    • サムネイル画像: http://static.ow.ly/photos/thumb/.jpg


2010年10月21日木曜日

phpの何回かに数回起こるメールの文字化け

phpのメール送信で今までに遭遇した事のない文字化けの現象に対して

サーバーはPHP Version 4.1.2

ファイルをアップロードすると、強制的に改行コードをLF(UNIX)にされる仕様。

問題としては

フォームによるメール送信で100回中、何割かの確立で文字化けを起こしていた。


●問題を起こしていた状況

元々サイト自体をshift_jis(PCサイト)で制作されていたので、
限定的にutf8にてフォームを実装。
テストすると問題なし。
複数回テストをすると何割かに文字化けが発生する不安定な状況に。

mb_convert_encodingなどで文字コードを変換するも一向に直らない。

mb_detect_encodingで調べた結果、

そもそもhtmlからPOSTされている時点で文字コードがEUC-JPで渡されていることに気づく。

formタグに accept-charset="shift_jis"を書いても変わらず、なおもEUC-JPでポストされ続ける。
ブラウザからのPOSTはEUC-JPもしくはASCIIがデフォルトらしい。

結果的にPOSTする側とメール送信する側の文字コードをEUC-JPで統一し、
メール本文を以下の様にEUC-JPに変換して送信。
$body = mb_convert_encoding($body, "euc-jp","AUTO");


解決しました。
今回は文字コードを変更しても内容に影響のないサイトだったけど、
UTF-8でDBから情報引き出したりしてるサイトだったらと思うと冷や汗ものだった。

この問題ってサーバーによって生まれるのかな?
他のサーバでは問題のなかったソースコードでのトラブル。

2010年5月7日金曜日

jquery使用時にsetTimeoutでエラー

カート入力時などに、
フェードイン、アウトの処理で「追加しましたよ」とか、「削除しましたよ」とか出そうとした時。

動作としては問題なく動いたが、エラーコンソールではエラーが発生。

まず、

$("#addSign").fadeIn("slow");
setTimeout($("#addSign").fadeOut("slow"), 3000);

と直接setTimeoutにエフェクトを書いた場合は、
missing after element listって出ました。

なので、今度は一度関数をかませて、

$("#addSign").fadeIn("slow");
setTimeout(fadeOutFunc("#addSign"), 3000);
function fadeOutFunc(divName){
$(divName).fadeOut("slow")
}

とおこなったところ。
useless setTimeout call (missing quotes around argment?)
とエラーが発生。

クォーテーション入れてるけどなーと
思って検索かけると海外のフォーラムでヒントを見つけました。

setTimeout('fadeOutFunc("#addSign")', 3000);

どうやら関数を呼ぶときも、シングルで囲んでやる必要があったみたい。
引数があったからかな?
とりあえず問題は解消したので、原因はほっておきます。

あとで調べる。

2010年1月14日木曜日

array_multisort関数に関して

PHPのarray_multisort関数が激便利だったので紹介
非常にわかりやすかったので、リンク

http://www.akiyan.com/blog/archives/2007/10/phparray_multis.html

2010年1月13日水曜日

swfAddressでのまさかのエラー

firefoxでのエラーコンソールに
「obj.parentNode.so.call is not a function」
と表示されurlが遷移してくれない問題があった。

こんなこと抜けてたのかということで、
swfAddressはflash8以降ならできるとわかっていたのに、
以下のように記述していた前のソースを利用していた為につまっていた。

var so = new SWFObject("swf/hogehoge.swf", "website", "100%", "100%", "7", "#CCCCCC");


swfObjectで8以降とキチンと書いてあげないと反応しないんですね。
var so = new SWFObject("swf/hogehoge.swf", "website", "100%", "100%", "8", "#CCCCCC");

2009年12月30日水曜日

array_searchで0がスルーされる

任意の値が配列内に存在するのかを確認する為に

if(array_search("hoge", Array)

ってやったらなぜか配列の0だけがスルーされてしまっていた。

どうやら0で判断させれようではなく、
falseで判断させるといいらしい


if(array_search("hoge", Array) !== false)

で期待通りの判定ができた

2009年12月29日火曜日

php 文字列の比較

いつも忘れるのでメモ

if ( strcmp($a,$b)==0 ){ print '同じ'; }

2009年12月8日火曜日

swfobject.embedSWFのIEでの背景透明

FirefoxやSafariでは問題なくても、
やっぱりIEでは問題が起きる。必ずと言っていいほど。

flashの上にイメージをposition:absoluteで配置した場合、
IEだとflashの下になってしまう。
z-indexで上下を変えられなかったので、
背景を透明にすることで対応する。

var flashvars = {};
var params = {wmode: "transparent"};
swfobject.embedSWF(”xxx.swf”, “ID”, “w-size”, “h-size”, “varsion”, “expressInstall.swf”, flashvars, params);

2009年12月3日木曜日

共有SSLを使用した場合のIEでの問題

こういうことは専門外だけど
IEでのhttpsにアクセスした際に出る
「このページにはセキュリティで保護されている項目と保護されていない項目が含まれています」
というアラート解決まで。

まず、今使ってるサーバは独自SSLでなく共有を使っているので、バーチャルURL設定が必要だった。
それで、設定後取得したURLを自分のドメインの頭につけないと証明書の〜ってアラートが出る。
まぁ、これはすぐに解決。

設定後IE7でテストしてみると、
冒頭でも書いた「このページにはセキュリティで保護されている項目と保護されていない項目が含まれています」
というエラーが出る。
でもこれを「はい」にすれば特に問題もなく表示はされるけど、
信用度がむちゃくちゃ低くなる。胡散臭くなるんですよ。

調べた結果、エラー文の意味通りで
baseにルートのURLを入れていたからSSL対象外のURLからcssやらjsやらを参照してた。
これが問題。

すごい面倒だったけど、
初期化時に全ページのURLを配列で作って、
現在のページがどこからなのか(バーチャルURLから?ルートから?開発から?)ってので、
作り分けました。

無事終了できれいに出来たので良かった。

簡単なことだけど、全然わかってなかった。

2009年11月18日水曜日

鉄板ソース

【 JavaScript 】
 * -------------------------------------------- *
【フォームのポップアップメニュー:現在選択されている値を得る】
  var VAL = document.forms[int].elements['(objname)'].selectedIndex;
  [int]:form番号
  [objname]:ポップアップメニュー の名前
(例)
var form = this.document.forms[0];
var obj = form.elements['myselect'];
var nowselect = obj.selectindex;


【 php 】
 * -------------------------------------------- *
 【配列内検索】
(例)
$temp_arrays = array("東京都","神奈川県","千葉県");
$hit = array_search('神奈川県',$temp_arrays);
if ($hit !== FALSE){
# 存在>処理;
}


 * -------------------------------------------- *
 【ディレクトリ内ファイル情報取得】
  ※特定のディレクトリ内のファイル名を獲得
(例)
if ($h = opendir($dir)) { # ディレクトリハンドル
while (false !== ($file = readdir($h))) { # ファイル名獲得
echo $file; # 処理
}
closedir($h); # ディレクトリハンドルクローズ
}


 * -------------------------------------------- *
 【商品金額などのカンマ表示処理】
  ※四捨五入に利用も可能
(例)
$temp_val = number_format($from_val,0);


 * -------------------------------------------- *
 【多次元配列でのソート】
  ※多次元配列で項目を指定してソートする
(例)
#多次元配列変数
$temp_vals[0]['id']=1; $temp_vals[0]['place']='都会'; $temp_vals[0]['suki']='4';
$temp_vals[1]['id']=2; $temp_vals[1]['place']='樹海'; $temp_vals[1]['suki']='3';
$temp_vals[2]['id']=3; $temp_vals[2]['place']='宇宙'; $temp_vals[2]['suki']='1';
$temp_vals[3]['id']=4; $temp_vals[3]['place']='深海'; $temp_vals[3]['suki']='2';

・好き(suki)順に並べる
foreach($temp_vals as $key => $val){
$suki[$key] = $val["suki"];
}
array_multisort($suki,SORT_ASC);

・第2整列順 ・・・
(上記例では意味無いけど)
※好き順 > id逆順
foreach($temp_vals as $key => $val){
$suki[$key] = $val["suki"];
$id[$key] = $val["id"];
}
array_multisort($suki,SORT_ASC,$id,SORT_DESC);


助かります。
http://metaboy.blog23.fc2.com/?tag=number_format

2009年11月16日月曜日

aタグのonclickでバグ(IE6)

form の外から submit() するため、aタグにonclickで関数を設定。
しかし、IE6 だけ動かないので、onclickに設定した関数のあとにreturn falseを追加。

もしくは以下でも大丈夫だけど、強引な感じがするのでreturn falseを入れる
timer = setTimeout( function () { form.submit(); }, 0 );

2009年10月28日水曜日

addQuicktagのFatal error

wordpressにaddquicktagプラグインを入れました。
別のwpにエクスポートした設定をインポート使用をファイルを吐き出し、
addquicktag設定画面でインポート。

その後、設定画面は「fatal error」他社のmysqlだったので、直接触るのは控えたかったのでgoogleで検索したところ、
http://idea-promotion.netさんに助けてもらえました。

引っかかっていたのは以下の場所
for ($i = 0; $i){


$b = $o['buttons'][$i];

  $b['text'] = htmlentities(stripslashes($b['text']), ENT_COMPAT, get_option(’blog_charset’));
  $b['start'] = htmlentities($b['start'], ENT_COMPAT, get_option(’blog_charset’));
  $b['end'] = htmlentities($b['end'], ENT_COMPAT, get_option(’blog_charset’));
  $nr = $i + 1;


このようにすればなおりますー

for ($i = 0; $i; $i){
if(is_array($o)){
    $b = $o['buttons'][$i];

    $b['text'] = htmlentities(stripslashes($b['text']), ENT_COMPAT, get_option(’blog_charset’));
    $b['start'] = htmlentities($b['start'], ENT_COMPAT, get_option(’blog_charset’));
    $b['end'] = htmlentities($b['end'], ENT_COMPAT, get_option(’blog_charset’));
   $nr = $i + 1;

2009年10月9日金曜日

PHP 5.3.0でのnumber_format

XAMPPの最新バージョン1.7.2は、
PHP 5.3.0になっています。

日頃からsmartyを利用しているのですが、
修正子としてnumber_formatを使用するとエラーが発生

と思っていたら、普通にphpに書き込んでもエラー起きます。
parameter 1 to double ~~

いまだに解決できずに。


バージョン1.7.1のダウンロードはここでできる。
http://xampp-for-windows.jp.brothersoft.com/


追記----------------------------09/12/2
simpleXMLを使用した場合に、エラーが起きるようです。
simpleXMLの配列に反応してしまうようなので、
どうしても使用したい場合は一度simpleXMLの配列から置き換える必要があった。