昨日こてんぱんにされたBooby Reversi Download Page。その後、ついにリベンジの全滅勝ちに成功。
ってそれは正直単なるまぐれに過ぎないんですが・・・、
累計挑戦者84124人中ランキング1位? Σ( ̄□ ̄!)
・・・
もうこのゲーム、封印しよう・・・。
「けっ、自慢かよ」というツッコミが聞こえてきそうですが・・・
ナントイワレテモイイヤ〜ヽ(´∇`。)ノ
オトナゲナクスクリーンショットトカハッチャウモンネ♪
などと、喜んだのも束の間。
続きを読む
昨日こてんぱんにされたBooby Reversi Download Page。その後、ついにリベンジの全滅勝ちに成功。
・・・
もうこのゲーム、封印しよう・・・。
「けっ、自慢かよ」というツッコミが聞こえてきそうですが・・・
ナントイワレテモイイヤ〜ヽ(´∇`。)ノ
オトナゲナクスクリーンショットトカハッチャウモンネ♪
などと、喜んだのも束の間。
続きを読む
このところ目覚ましが鳴ったらまず枕元のiPod touchをおもむろに掴み、PhotoShareの写真を眺めたりやオセロ・ゲームをやるのが日課。
で、オセロ(Reversi)のプログラムは数々あれど、App Storeでダウンロードできる無料のものだとMoroccoもOthelloも挟まれたとき○がひっくり返るアニメーションがないので時々相手がどこに置いたかわからなかったりするのがちょっと悩み。
というかそんなことよりゲーム的にイマイチ弱い気が…。
もともと勝負事には弱いんですがそれでも慣れるとHardで勝てちゃうので、「そういえば昔ネットでオセロの強いのがどこかにあったなぁ」と思い探したら見つかりました。
ちょっとこれ、強いんですけどー!
さっきから10回以上やってるんですが1回だけ2コ差くらいでやっと勝てた以外連敗街道まっしぐら。。。
序盤調子に乗って攻めると置ける場所がどんどんなくなって追い詰められ、しまいには4回連続パスさせられて惨敗とかばっかです(涙目)
このゲームはflashじゃないからiPodのSafariでも動くし、明日からこれにしようかな。
悔しさですぐ目が覚めそうです。
ここには似合わないネタなのでボツにしてたんですが、YouTube動画の貼り付け方がよくわからんという身内のために書いたスクリプトがもしかしたら誰かの役に立つかも?ということでコードを載せます。
どんな人のためのもの?
…ストライクゾーン狭いですね、該当しない方は華麗にスルーしてください。あらかじめYouTube機能のある日記系サービスでは普通自前script使えないです。
使い方
1. 後述のコードを例えば youtube.js という名称で保存し、サーバの好きな場所にFTP等で転送*します。
以下の例ではサーバトップの/jvs/というディレクトリ内に置いたと仮定します。
2. 貼り付けたいYouTube動画のページのアドレスの最後、v=以降の文字列をコピー。(赤字の部分)
https://www.youtube.com/watch?v=Kg1FsVeoEUQ
3. それを記事中にこのようにペーストします。
<script type="text/javascript" src="https://www.abcjapon.co.jp/gz/youtube.js?v=Kg1FsVeoEUQ"></script>
終了。
こんな感じに表示されます。
オプション
もしブログのカラムが狭い場合とかは、下記のようにwidth,heightを指定できます。
<script type="text/javascript" src="https://www.abcjapon.co.jp/gz/youtube.js?v=Kg1FsVeoEUQ&width=360&height=295">
幅360ピクセルだとこんなかんじ。
でもいちいち幅や高さを指定するのは面倒なのでyoutube.jsの41〜42行目の数値を自分のブログに合わせて直接変えちゃうのもありでしょう。
あとwmodeも指定できます。例:&wmode=opaque
高画質版に対応しました。例:&fmt=6 &fmt=18 &fmt=22(HDソースのみ)
高画質版の貼り付け方法について詳しくはこちらをご覧ください。
再生開始秒数指定に対応しました。例:&start=120(120秒のところからスタートしたい場合)
詳しくはこちらをご覧ください。
&autoplay=1 を付けると自動的に再生開始します。
※保存してFTPとかよくわかんなかったり自由にファイルを置けるサーバがない場合は下記の1行を貼れば手っ取り早く試すことができます。
WordPressの場合は『ビジュアルエディタ』ではなく『コード』の状態で貼ってくださいね。同じくMovableTypeの場合は『リッチテキスト』以外のフォーマットで。
直リンの場合は、常に存在し続ける保証がないことを一応念頭に置きつつよろしくです。
なぜこんなものを?
以前は簡単にPHPファイルをjavascriptファイルとして使用することで引数を渡していました。でもjavascriptだけで書けば僅かながらサーバの負荷軽減になるだろうということで、javascriptファイルへのリンク部分にクエリストリング付けてPHPでなくjavascriptで処理させたかったんです。
あとよく知られた事ですがYouTubeの提供するコードをそのまま貼ってしまうとHTML Validation Serviceのチェックを通らないというのがあります。
YouTubeもobjectタグだけでなくiframeでコード提供してくれるといいんですが。
行番号付コードと簡単解説
パラメータ出力部分はyoutube.jsでググったら出て来たコードをベースに簡単に手を加えています。
クエリストリングを連想配列化するスクリプトはgroundwalker.comさんの記事を参考にさせていただきました。
下のコードをFirefoxでコピペすると行頭に#や行番号が付いちゃったりするので、コピーしにくい場合はこちらからどうぞ。
追記:高画質モードで貼れるようにパラメータを追加しました。
/*ver:3.2*/
var body=document.getElementsByTagName("body")[0];
var scripts=body.getElementsByTagName("script");
for(var i=0; i<scripts.length; i++){
var query=scripts[i].src;
}
var params=getQueryParams(),
v=params.v,
fmt=params.fmt,
width=params.width,
height=params.height,
wmode=params.wmode,
start=params.start,
end=params.end,
autoplay=params.autoplay,
fs=params.fs,
hd=params.hd;
if(v) video(v,width,height,wmode,fmt,hd,start,end,fs,autoplay);
function getQueryParams(){
var qs=query.slice(query.indexOf("?"));
if(qs){
var qsa=qs.substring(1).split('&');
var params={};
for(var i=0; i<qsa.length; i++){
var pair=qsa[i].split('=');
if(pair[0]){
params[pair[0]]=/*decodeURIComponent*/(pair[1]);
}
}
return params;
}
return null;
}
function video(id,width,height,wmode,fmt,hd,start,end,fs,autoplay){
if(!id.match(/^[a-zA-Z0-9_\-]+$/)){
alert('Your query string may be incorrect. https://www.youtube.com/v/'+id);
return;
}
if(!wmode) wmode='transparent';
if(hd==1 && !width && !height){width=853;height=505;}
if(!width) width=0; else width=parseInt(width);
if(!height) height=0; else height=parseInt(height);
if(width<=0 || width>1280) width=425;
if(height<=0 || height>745) height=344;
if(start) id += '&start='+parseInt(start); else if(fmt){
id += '&ap=%2526fmt%3D'+fmt;
id += '&fs=1';
}
if(hd){
id += '&hd='+parseInt(hd);
id += '&fs=1';
}
if(end) id += '&end='+parseInt(end);
if(autoplay==1) id += '&autoplay='+autoplay;
var html = '<object width="'
+ width
+ '" height="'
+ height
+ '"><param name="wmode" value="'
+ wmode
+ '"><param name="movie" value="https://www.youtube.com/v/'
+ id
+ '"></param><param name="allowFullScreen" value="true"><embed src="https://www.youtube.com/v/'
+ id
+ '" type="application/x-shockwave-flash" allowfullscreen="true" width="'
+ width
+ '" height="'
+ height
+ '" wmode="'
+ wmode
+ '"></embed></object>';
document.write(html);
}
2,3行目でbodyタグ内のscript要素を取得して、URLアドレスからではなくscriptタグのquery stringを取得できるようにしています。
31行目のdecodeURIComponentは今回の目的には必要ないのでコメントアウトしています。この処理を省くことで古いMac版IE5でも動作しますが、さすがにもう使ってませんよね??
ブログがきちんと表示できないブラウザは対象外ということで。
41行目の引数の文字列に使用不可な文字が入っていた場合のアラート英作文はテキトー(汗)ですので好きに変えてください。ちなみに日本語のアラートももちろん出せますが、ブログとスクリプトの文字コードが違う場合にはscriptタグ内での文字コード指定が必要なのをお忘れなく。
例:<script type="text/javascript" src="https://www.abcjapon.co.jp/gz/youtube.js?v=Kg1FsVeoEUQ" charset="euc-jp"></script>
アラートは一切出さない、というのもありですね。
44行目 wmodeのデフォルトがtransparentなのは当サイトの都合です。レイヤーの重なりがなければパフォーマンスを追求してwindowやopaqueをデフォルトにしてもいいでしょう。
48,49行目でそれぞれ幅・高さの最大サイズ(左)と何も指定しなかった場合のサイズ(右)を決めています。自分のブログに合わせてあらかじめ小さいサイズにしたり、最大サイズを640×505(縦480ピクセル+メニューの高さ25ピクセル)とかにしてみるのも面白いかも。
19,21,39,45,54〜57行目 HD対応で追加した部分です。
ある意味きわどいこのやり方が期待通りに動くのは20行目の最初の5文字 if(v) があるからです。
もちろん1ページ中に他のスクリプトがあったり異なる複数の動画を読み込んでも問題ないですが、何か不具合があった場合や、もっと良い書き方あるよ!とか教えていただけたら嬉しいです。
ということで98年フランス代表対世界選抜の日がやってまいりました。
階上に住むフーリガンJiroくんとわびすけと3人で、さぁ、ノスタルジーの現場に潜入だ。
これが、行ってみたら思ったより大袈裟なイベントでした。
お客さんは満員、何でも8万人だとか。
スクリーンには98年大会の軌跡をふり返る映像が。ビデオなのに観客は大ブーイングしたり大喝采したり。
ヘリコプターが飛んで来たと思ったら人がつり下げられてワールドカップトロフィー届けにくるし。本物!?借りてきたんかい??
そして10年前と同日・同時刻キックオフ。さぁいちばん空気を読まないのは誰だ!?
あ、ちなみに発表されていた世界選抜メンバーにキーパーがいなかった件ですが、本番はちゃんと居ました。って当たり前ですね (笑)
中田も背番号7で元気に先発です。
続きを読む
先週パリ在住の日本人クライアントさんから相談の電話がありました。なんでも、ここ2〜3日でWanadoo.frのメールアドレス宛に日本からのメールが届かなくなったとのこと。送信者側にもエラーメッセージ等は返っていないそうで、仕事の連絡が取れずとてもお困りでした。