tag:blogger.com,1999:blog-63121473780378946402024-02-20T19:10:52.851+09:00wkswkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.comBlogger25125tag:blogger.com,1999:blog-6312147378037894640.post-52325532065911556332019-04-03T20:41:00.002+09:002019-04-03T20:43:11.388+09:00[替え歌シリーズ]クソリプ野郎 垢BAN<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/kwxVEEStm98/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/kwxVEEStm98?feature=player_embedded" width="320"></iframe><br />
<br />
あなたのちょっとしたツィートがクソリプで溢れた時に。<br />
<br />
<br />
クソリプ野郎 垢BAN<br />
<br />
リプなんだろ? クソリプするなよ<br />
リプの内容に 火をつけろ<br />
それは知ってる ひと足お先<br />
光の速さで なんどもクソリプさ<br />
クソリプ クソリプってなんだ ゴミのリプのことさ<br />
リプってなんだ ためになることさ<br />
炎上! あばよ投稿<br />
炎上! よろしくブロック<br />
クソリプ野郎 垢BAN!<br />
<br />
クソリプは 天使の顔して<br />
心で俺を マウントするものさ<br />
おれもお前も フォロー外リプを<br />
噛みつきさえならない リプをするのさ<br />
クソリプ クソリプってなんだ あきらめないことさ<br />
リプってなんだ くやまないことさ<br />
炎上! あばよ投稿<br />
炎上! よろしくブロック<br />
クソリプ野郎 垢BAN!<br />
<br />
クソリプ クソリプってなんだ ゴミのリプのことさ<br />
リプってなんだ ためになることさ<br />
炎上! あばよ投稿<br />
炎上! よろしくブロック<br />
クソリプ野郎 垢BAN!wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-70984983925255318412019-03-23T19:12:00.002+09:002019-03-23T19:12:50.393+09:00[替え歌シリーズ]ポリゴンがいっぱい<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/04SpqyUcNlM/0.jpg" src="https://www.youtube.com/embed/04SpqyUcNlM?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
掃除してたらダンボール型のVRグラスをみつけてその時使っていた端末をいれてみたあなたに。<br /><br /><br />ポリゴンがいっぱい<br />
<div>
<br /></div>
古い端末の中に 隠れてデータがいっぱい<br />
低画質な3Dの中の<br />
画質ははるかなメモリー<br />
データは無限のつながりで 終わりを思いもしないね<br />
手に届くVRは 限りなく地平線<br />
視界を包んでいた<br />
大人の階段昇る 君はまだポリゴンさ<br />
高画質は誰かがきっと<br />
作ってくれると 信じてるね<br />
デプスだったといつの日か 想う時がくるのさ<br />
キラリ アセットのような<br />
まぶしいデータがいっぱい<br />
ひとりだけ横向く VR空間だね<br />
ARを夢みる頃<br />
ガラスの階段作る ガラスの靴不透明さ<br />
踊り場で描画を止めて<br />
レンダリング 気にしている<br />
温度だったとなつかしく 時間置く日があるのさ<br />
大人の階段昇る 君はまだポリンゴンさ<br />
高画質は誰かがきっと<br />
作ってくれると 信じてるね<br />
デプスだったといつの日か 想う時がくるのさ<br />
温度だったとなつかしく 時間置く日があるのさwkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-9058709273107736252018-11-20T15:13:00.001+09:002018-11-20T15:13:34.857+09:00[替え歌シリーズ] U.S.B.<b>※ファンの方すいません</b><br />
<br />
USBの話題を議会で質問された方に。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/sr--GVIoluU/0.jpg" src="https://www.youtube.com/embed/sr--GVIoluU?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<br />
<div style="background-color: white; color: #1d2129; font-family: system-ui, -apple-system, system-ui, ".SFNSText-Regular", "hiragino kaku gothic pro", meiryo, "ms pgothic", sans-serif; font-size: 14px; margin-bottom: 6px;">
U-U-U.S.B.<br />U-U-U.S.B.<br />C'-C'-C'-C'-C'-C'-C'-C'mon, jack<br />C'-C'-C'-C'-C'-C'-C'-C'mon, memory</div>
<div class="text_exposed_show" style="background-color: white; color: #1d2129; display: inline; font-family: system-ui, -apple-system, system-ui, ".SFNSText-Regular", "hiragino kaku gothic pro", meiryo, "ms pgothic", sans-serif; font-size: 14px;">
<div style="font-family: inherit; margin-bottom: 6px;">
U.S.B.<br />オールド政治家観たハツゲン (ハツゲン ハツゲン)<br />U.S.B.<br />専門家発言 真似した (真似した 真似した)<br />U.S.B.<br />事前 聴いてた言葉 (言葉 言葉)<br />U.S.B.<br />質問が突然だった (だった だった)<br />数十年で手書き書類 だいぶ変化したようだ<br />だけれど僕らは日本人<br />同じ時代の旅人さ<br />C'mon, baby サイバー<br />セキュリティの見方を inspired<br />C'mon, baby サイバー<br />交差する情報 セキュリティリスク<br />C'mon, baby サイバー<br />憧れてた大臣の席が<br />C'mon, baby サイバー<br />混乱してく ジパングで</div>
<div style="font-family: inherit; margin-bottom: 6px; margin-top: 6px;">
C'-C'-C'-C'-C'-C'-C'-C'mon, jack<br />U.S.B.<br />発言踊った議会 (議会 議会)<br />U.S.B.<br />質疑応答された (された された)<br />U.S.B.<br />仲間の古い知識 (知識 知識)<br />U.S.A.<br />あのこは発言した (した した)<br />パシフィック・オーシャン 一飛び<br />情報はいつもファーストスピード<br />記事というテキスト交わし<br />System Error 書かれるのさ<br />C'mon, baby サイバー<br />閣僚の味方 organizer<br />C'mon, baby サイバー<br />ニューウェーブ待つ 有権者<br />C'mon, baby サイバー<br />どっちらが正解か秘密<br />C'mon, baby サイバー<br />ユナイテッドする 興ざめ</div>
<div style="font-family: inherit; margin-bottom: 6px; margin-top: 6px;">
C'-C'-C'-C'-C'-C'-C'-C'mon, jack<br />C'-C'-C'-C'-C'-C'-C'-C'mon, memory<br />C'mon, baby サイバー<br />セキュリティの見方を inspired<br />C'mon, baby サイバー<br />交差する情報 セキュリティリスク<br />C'mon, baby サイバー<br />憧れてた大臣の席が<br />C'mon, baby サイバー<br />混乱してく ジパングで<br />C'-C'-C'-C'-C'-C'-C'-C'mon, jack<br />C'-C'-C'-C'-C'-C'-C'-C'mon, memory</div>
</div>
wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-67273187579350328162013-12-24T23:43:00.004+09:002013-12-24T23:44:05.818+09:00[替え歌シリーズ] バグが散々苦労する<b>※ファンの方すいません</b><br />
<br />
テスト前夜にきっとこんな事も起こってるはず。<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/kSrje0jehnw" width="420"></iframe>
<br />
昔 となりのおしゃれな プログラマは<br />
結合テストの前日 私に云った<br />
今夜 8時になれば サンタが家にやって来る<br />
ちがうよ それは帰宅したいだけのおはなし<br />
そういう私に ウィンクして<br />
でもね テストになれば あなたもわかる そのうちに<br />
バグが散々苦労する 本当に散々苦労する<br />
余計な仕様追い越して<br />
バグが散々苦労する 難度高い散々苦労する<br />
仕様の外から来た<br />
あれから いくつ冬がめぐり来たでしょう<br />
今も彼女を 思い出すけど<br />
ある日遠い街へと バグがつれて行ったきり<br />
そうよ 明日になれば<br />
私も きっと直せるはず<br />
バグが散々苦労する 本当に散々苦労する<br />
仕様変更をかかえて<br />
バグが散々苦労する ありそうに散々苦労する<br />
顧客から来る<br />
バグが散々苦労する 本当に散々苦労する<br />
予算追い越して<br />
バグが散々苦労する 難度高い散々苦労する<br />
私の家帰れない<br />
バグが散々苦労する 本当に散々苦労する<br />
仕様変更をかかえて<br />
バグが散々苦労する ありそうに散々苦労する<br />
仕様の外から来た<br />
バグが散々苦労する<br />
<div>
<br /></div>
wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-26290381770799560312013-12-24T23:07:00.001+09:002013-12-24T23:43:49.765+09:00[替え歌シリーズ] クリティカルなバグの頃には<b>※ファンの人すいません。</b><br />
<br />
年末進行で焦って修正して確認せずコミットしたあなたへ・・。<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/aT4iDWb09vo" width="560"></iframe>
<br />
<br />
Subversionに<br />
コミットする頃には<br />
君と僕のマージで<br />
バグが 出ているだろう<br />
バージョンログが<br />
流れる頃には<br />
誰がバグを出したか<br />
今はわからなくても<br />
<br />
このバグを<br />
少し 直せば<br />
届いていたのに<br />
1秒前<br />
何か 足りない<br />
コードのすれ違い<br />
<br />
お互いを管理してなさすぎて<br />
コードがよそ見できないのさ<br />
<br />
プロジェクトマネージャが<br />
出社する頃まで<br />
マージ前に戻って<br />
もっと ローカルでいよう<br />
プロジェクトマネージャが<br />
出社する頃まで<br />
何が 大切なのか<br />
一人 考えたい<br />
<br />
誰かが<br />
コード修正するのは<br />
助かるけれど<br />
バグを<br />
無理矢理に<br />
直せないから<br />
<br />
近すぎて見えない修正は<br />
マージが発生すればわかるらしい<br />
<br />
クリティカルなバグが<br />
発生する頃には<br />
君と僕の答えも<br />
きっと 出ているだろう<br />
起動しないプログラムが<br />
発生する頃には<br />
何が原因なのか<br />
今は見えなくても<br />
<br />
年末進行が<br />
流れる頃には<br />
どういう君と僕に<br />
チケットは降るのだろうか?<br />
顧客検証が<br />
行われる頃には<br />
どういう君と僕に<br />
チケットは降るのだろうか?wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-82612341847159728492013-12-24T22:27:00.003+09:002013-12-24T23:43:57.448+09:00[替え歌シリーズ] クリスマスイブの夜にみんなから取り残された人へ<b style="background-color: white; color: #444444; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"><span style="font-size: medium;">※ファンの方すいません・・・。</span></b><br />
<br />
クリスマスイブ。<br />
楽しく飲んでいてふと周りを見たら誰もいない。<br />
そんなあなたへ。<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/Hx0C_bkGqhE" width="560"></iframe>
<br />
<div class="MsoNormal">
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;"><br /></span>
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">金は夜更け過ぎに</span><span lang="EN-US"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">ゼロへと変わるだろう</span><span lang="EN-US"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">記憶ない、ほらない</span><span lang="EN-US"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">きっと誰も来ない</span><span lang="EN-US"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">ひとりだけの三次会</span><span lang="EN-US"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">さてぇは、うぉぉ、おいてかれた</span><span lang="EN-US"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">懐深く</span>
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">秘めた小遣い</span><span lang="EN-US"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">叶えられそうもない</span><span lang="EN-US"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">必ず今夜なら</span><span lang="EN-US"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">みんなで飲める気がした</span><span lang="EN-US"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">タクシー、ウォーォたぶん、乗れない</span><span lang="EN-US"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">まだ消え残る</span>
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">酒への想い</span><span lang="EN-US"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">夜へと飲み続く</span><span lang="EN-US"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">街角には泥酔者</span><span lang="EN-US"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">汚物のきらめき</span><span lang="EN-US"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">際限ない、うぉーお、酒がない</span><span lang="EN-US"><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">金は夜更け過ぎに</span><span lang="EN-US"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">ゼロへと変わるだろう</span><span lang="EN-US"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">記憶ない、うほほほほ、ほらない</span><span lang="EN-US"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">きっと諭吉はいない</span><span lang="EN-US"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">ひとにぎりの</span><span lang="EN-US">100</span><span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">円玉</span><span lang="EN-US"><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "MS 明朝"; mso-ascii-font-family: Century; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: "MS 明朝"; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Century; mso-hansi-theme-font: minor-latin;">そりゃない、うぉーでも、ほかない<br /></span><span lang="EN-US"><o:p></o:p></span></div>
<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]-->
<iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/UwrAsaS5KbQ" width="560"></iframe>
牧瀬里穂かわいいわ・・。
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>10 pt</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>JA</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
<w:UseFELayout/>
</w:Compatibility>
<w:NoLineBreaksAfter Lang="JA">$([\{£¥‘“〈《「『【〔$([{「£¥</w:NoLineBreaksAfter>
<w:NoLineBreaksBefore Lang="JA">!%),.:;?]}¢°’”‰′″℃、。々〉》」』】〕゛゜ゝゞ・ヽヾ!%),.:;?]}。」、・゙゚¢</w:NoLineBreaksBefore>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="276">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]-->
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:標準の表;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0mm 5.4pt 0mm 5.4pt;
mso-para-margin:0mm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:Century;
mso-ascii-font-family:Century;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Century;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}
</style>
<![endif]-->
<!--StartFragment-->
<!--EndFragment--><br />
<div class="MsoNormal">
<br /></div>
wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-7018657667141722772013-10-06T03:11:00.001+09:002013-10-06T03:53:57.003+09:00Youtubeのビデオを見出しのタイトルから自動的に拾って埋め込んでくれるJS<div class="tr_bq">
<script type="text/javascript">
var APIKEY="AIzaSyAX-yYhTzOgQ4ASJkmHigyRp62eQoauxqY";
var CHANNELID="UCGiSzzfTs7s3dHy3xWkSQ0g";
var TARGETTAG="h4";
var tTags;
var isYTLoad=false;
setTimeout(function(){
tTags=document.getElementsByTagName(TARGETTAG);
viewYoutube();
},1000);
function onJSClientLoad() {
gapi.client.setApiKey(APIKEY);
gapi.client.load('youtube', 'v3', function(){
isYTLoad=true;
viewYoutube();
});
}
function addVideo(insDom){
var tTitle=insDom.textContent?insDom.textContent:insDom.innerText;
var request=gapi.client.request({
path:"/youtube/v3/search",
params:{
maxResults:1,
q:tTitle,
channelId:CHANNELID,
type:"video",
order:"date",
"part":"id"
}
});
request.execute(function(resp) {
if(!resp.error && resp.items[0]){
var insEl = document.createElement("div");
insEl.innerHTML = '<iframe width="560" height="315" src="//www.youtube.com/embed/'+resp.items[0].id.videoId+'" frameborder="0" allowfullscreen></iframe>';
insDom.parentNode.insertBefore(insEl, insDom.nextSibling);
}
});
}
function viewYoutube(){
if(isYTLoad && tTags && tTags.length>0){
for( var i=0; i<tTags.length; i++ ) {
if(tTags.item(i))
addVideo(tTags.item(i));
}
tTags=null;
}
}
</script>
<script src="https://apis.google.com/js/client.js?onload=onJSClientLoad"></script>
Youtubeの動画をブログなどで埋め込む時に1つとかなら動画の共有のコードをコピーしてくれば楽なのですが、html5jの勉強会のように数があると色々面倒なので、自動で埋め込むJSを作りました。<br />
原理は単に"H4"タグに書かれたタイトルを元にYoutubeに検索に行ってヒットしたら埋め込むというものです。</div>
<br />
例:<br />
-----------------------------------------<br />
<h4>
Webアプリのマネタイズのこれまで</h4>
menue株式会社 成田守さんの講演でした。<br />
<h4>
プリペイド電子マネー『ウェブマネー』決済について
</h4>
ウェブマネーの担当者さんの講演でした。<br />
-----------------------------------------<br />
<br />
という形でタイトルを書いただけで埋まってくれます。<br />
とりあえず、Blogger的にはH4になる「準見出し」にすると勝手に取ってくるという形にしています。Hx系はいろんなところで使われるのでかぶってないものをチョイスしたいところですが、なかなか良いのが選べないというのがこの手のブログツールの悲しいところ。<br />
とりあえず、つらつら書いて見出し設定したら勝手に埋まるというらくちんさを目指しました。<br />
ただ、問題なのはブログ書いてる時にコピペなどすると変な文字列とかこっそり入ったりするので、そこは綺麗になるようにしてねとしか言えないのが悲しいです。<br />
Bloggerはこの辺のコードを埋めても動くから便利ですが、onloadのタイミングの空気が読めない時があるので、あえての1秒後に実行にしてあります。<br />
<br />
ソースコードは<br />
<blockquote>
<script type="text/javascript"><br />
var APIKEY=※https://cloud.google.com/consoleから取得したもの※;<br />
var CHANNELID="UCGiSzzfTs7s3dHy3xWkSQ0g"; // 絞り込むためのチャンネルID<br />
var TARGETTAG="h4"; // 対象となるタグ名<br />
var tTags;<br />
var isYTLoad=false;<br />
setTimeout(function(){<br />
tTags=document.getElementsByTagName(TARGETTAG);<br />
viewYoutube();<br />
},1000);<br />
function onJSClientLoad() {<br />
gapi.client.setApiKey(APIKEY);<br />
gapi.client.load('youtube', 'v3', function(){<br />
isYTLoad=true;<br />
viewYoutube();<br />
});<br />
}<br />
function addVideo(insDom){<br />
var tTitle=insDom.textContent?insDom.textContent:insDom.innerText;<br />
var request=gapi.client.request({<br />
path:"/youtube/v3/search",<br />
params:{<br />
maxResults:1,<br />
q:tTitle,<br />
channelId:CHANNELID,<br />
type:"video",<br />
order:"date",<br />
"part":"id"<br />
}<br />
});<br />
request.execute(function(resp) {<br />
if(!resp.error && resp.items[0]){<br />
var insEl = document.createElement("div");<br />
insEl.innerHTML = '<iframe width="560" height="315" src="//www.youtube.com/embed/'+resp.items[0].id.videoId+'" frameborder="0" allowfullscreen></iframe>';<br />
insDom.parentNode.insertBefore(insEl, insDom.nextSibling);<br />
}<br />
});<br />
}<br />
function viewYoutube(){<br />
if(isYTLoad && tTags && tTags.length>0){<br />
for( var i=0; i<tTags.length; i++ ) {<br />
if(tTags.item(i))<br />
addVideo(tTags.item(i));<br />
}<br />
tTags=null;<br />
}<br />
}<br />
</script><br />
<script src="https://apis.google.com/js/client.js?onload=onJSClientLoad"></script> </blockquote>
です。<br />
YoutubeのAPIのOnloadなどなど見計らっちゃってるので一部面倒なコードになってますが、直接読むようにするなどすればもうちょっとすっきりするかな。<br />
運用方法として、上記コードをブログに埋め込むか基本動画が埋まってるというのであればブログパーツにするかという所でしょうか?<br />
ここのブログは常に動画が埋まるものでもないので、ブログのソースにして貼付けるというめんどくさい形にしています。。。orz<br />
<br />
<br />
<br />wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-2216226441578523692013-06-19T15:44:00.000+09:002013-06-19T16:53:36.286+09:00UTCamera風 jQueryプラグイン作った<a href="http://ut.uniqlo.com/utcamera/" target="_blank">UTCamera</a>風な画像をブラウザでできるプラグイン作った。<br />
※WebRTCの機能が対応してて、有効設定されてるブラウザのみで動作します。ご注意ください。<br />
※PC版のChromeなら動きます。<br />
<br />
以下にソースを公開してあります。<br />
<br />
<a href="https://github.com/wakasamasao/bcam/">https://github.com/wakasamasao/bcam/</a><br />
<br />
使い方は以下のソースを参照ください。<br />
<a href="https://github.com/wakasamasao/bcam/blob/master/bcam.html">https://github.com/wakasamasao/bcam/blob/master/bcam.html</a><br />
<br />
流れとしては<br />
<ol>
<li>WebRTCの機能を用いてブラウザがWebCamにアクセスを試みる<br />-> ブラウザから使用許可を求められるので許可が必要です</li>
<li>200ms毎(ブラウザの処理によって遅延することが多い)にカメラ画像を取得</li>
<li>10回撮影したら画像を合成しGIFアニメに変換</li>
<li>base64にエンコードした文字列が返ってくる</li>
</ol>
<div>
という形です。</div>
<div>
設定で撮影秒間や回数、ループするしない、フィルムロールのようにコマ撮り写真にするなどいろいろ変更できます。</div>
<div>
<br /></div>
<div>
とりあえず、こんなのが作成できます。<br />
GIFアニメのは<strike>ループ</strike>リバースがかかってるため、自然に繰り返してるように見えます。</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-2loucz30p8s/UcFMqTVB7iI/AAAAAAAAELI/TUKTou7RT9Q/s1600/a.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-2loucz30p8s/UcFMqTVB7iI/AAAAAAAAELI/TUKTou7RT9Q/s1600/a.gif" height="100" width="100" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-3Ygi_1iroXg/UcFMeTXE70I/AAAAAAAAELA/Ov1VD5nH-nY/s1600/a.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-3Ygi_1iroXg/UcFMeTXE70I/AAAAAAAAELA/Ov1VD5nH-nY/s1600/a.jpg" height="40" width="400" /></a></div>
<br />
<br />
なお読み込み時のJSですが、GIFアニメ化するかしないかで必要とするプラグイン変わるのですが、<br />
<blockquote class="tr_bq">
<script src="js/gifencoder/b64.js"></script><br />
<script src="js/gifencoder/LZWEncoder.js"></script><br />
<script src="js/gifencoder/NeuQuant.js"></script><br />
<script src="js/gifencoder/GIFEncoder.js"></script></blockquote>
に関してはGIFアニメ化するのに必要なライブラリです。読み込まなかったらGIFアニメにはできず、フィルムロールタイプしか生成できません。<br />
<br />
パラメータは以下のような感じで設定すると色々変わります。<br />
<br />
width:200, // 生成される画像の横幅<br />
height:200, // 生成される画像の縦幅<br />
times:10, // 繰り返し回数<br />
timing:200, // 取得タイミング(ms)<br />
type:"animation", // 出力タイプ animation:GIFアニメ , pict:Film roll風<br />
playtiming:100, // GIFアニメの場合の再生スピード<br />
format:"png", // typeでpict指定の場合の出力フォーマット png | jpeg<br />
layout:"horizontal", // 現在使ってないが設定<br />
reverse:true, // アニメーション終了後に逆再生して繰り返しに違和感無いにするかどうか<br />
videoObj:null, // ここにvideo tagのオブジェクトを指定するとそこにカメラ画像を表示<br />
insertvideo:false, // 実行してるdomにキャプチャ用のvideoを表示するかどうか<br />
oncomplete:null, // 終了後のイベント<br />
onend:null, // キャプチャ終了後のイベント<br />
onstart:null, // キャプチャ開始のイベント<br />
onerror:null, // エラー時のイベント<br />
onwarning:null, // 警告時のイベント<br />
<br />
万華鏡タイプのエフェクトとか色々やろうとは思ってるんですが頓挫中。<br />
他にフィルムロール状態が縦並びとか正方形とか色々並べ替えたり・・いやなんでもない。<br />
そもそもこれを使ったサービスを先に作れ・・と・・・・・・。ゴフゥ(吐血<br />
あ、アイディアはあるんですよ?つ、作ってたら凝りだして・・いや・・ね・・(汗<br />
<br />
<br />wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-6774265812292303292013-06-11T03:52:00.002+09:002013-06-11T04:14:00.308+09:00html5のVideoタグでLive配信をするAppleAppleの基調講演の配信ページがsafari限定になっていて、何をやってるのか見てみた。<br />
<br />
埋め込みタグは<br />
<blockquote class="tr_bq">
<video id="movie" class=" video" src="http://p.events-delivery.apple.com.edgesuite.net/13oygadvoyibawefpiuawefpiuawdf6/sl_mvp.m3u8" x-webkit-airplay="allow" autohref="true" width="848" height="480" autoplay="autoplay" jsonurl="/apple-events/scripts/ac_media_jsons/june_2013_event.json" expectingmoviejson="true" spec="" style="width: 848px; height: 480px; "></video></blockquote>
となっています。<br />
おおお!Videoタグ!<br />
たしか前回はObjectタグでQT呼び出しだったはず。<br />
コントローラーは<div>で自作されていた。ShadowDOMな感じではない状態で。<br />
<br />
srcには .m3u8 という拡張子のファイルを呼び出しています。<br />
このm3u8はプレイリスト用のよくあるフォーマットです。<br />
<a href="http://ja.wikipedia.org/wiki/M3U" target="_blank">http://ja.wikipedia.org/wiki/M3U </a><br />
src指定されてるものは最初の画面関連の動画プレイリストのようです。<br />
あと気になるところとして jsonurl という謎のアトリビュートが設定されています。<br />
このjsonファイルも見てみると、これもm3u8のプレイリストを呼び出しています。<br />
で、m3u8のファイル辿ってみると約9秒毎の .ts ファイルを連続再生させています。<br />
中の .ts ファイルは srcで指定されてるのは開始タイミングで行われていたものが定義されています。jsonurlで指定されてるものは、常時更新されているようです。<br />
<br />
この配信方法はhttpのライブ配信では王道のアルゴリズムではあるが、将来Videoタグでライブ配信するときに使われるスタンダードになっていくのだろうか?<br />
W3CなどでLive配信についてはどう議論されてるか追えていないのでよくわかってはいませんが・・後で調べてみます。<br />
DRMかけてセッションがないとDLできない、帯域をデバイスやネットワークなどで常時変更しまくったり、共有しようとしても細切れまくってるから共有するのがめんどくさくなるなどは実現できそうな気はする。<br />
あと、プレイリストの生成をどうなるかがわからないけど、WebRTCな感じでP2Pな方法で動画ファイル送りまくるという方法がうまく使えるかな?<br />
<br />
ただ、どうも不安定なようで、再生中に突然src属性で指定されていた最初の動画が流れてしまったり、動画の切替で1フレーム程度白いものが入って変にフラッシュするような挙動になったり、取得できなかった動画をスキップしまくったりしていました。<br />
<br />
追記:<br />
HTTP Live Streaming ですねと教えてもらいました。<br />
http://en.wikipedia.org/wiki/HTTP_Live_Streaming<br />
この方法にはiOS時代になって(Flashがないので・・)一気に普及した方法です。<br />
YoutubeLiveもiOS対応になるのがこのあたりで時間かかった感じだったと思います。<br />
videoタグにもとうとうHTTP Live Streamingがやってきたかというのが胸熱。wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-88614472477481093142013-05-14T18:08:00.000+09:002013-05-14T18:14:04.982+09:00日の丸ブラウザはIEコンポーネントという方向に・・<br />
※このエントリは書いてる途中で変な方向に進んでるとわかっていながら書き進めたものになります。<br />
<br />
企業内でIE6は使われ続けてもいい。ただアクセスを外に出さないでほしい。<br />
<a href="http://bathtimefish.hatenablog.com/entry/2013/05/14/165411">http://bathtimefish.hatenablog.com/entry/2013/05/14/165411</a><br />
<br />
というエントリーをふんふん。確かに出てかなければどうでもいいや。と読んでいたんだが、ある事実に気づいてしまった。<br />
元ネタの記事は<br />
<br />
<br />
双日システムズ、Windows XPから7/8への移行向けにIE6互換ブラウザを開発<br />
<a href="http://news.mynavi.jp/news/2013/05/10/168/index.html">http://news.mynavi.jp/news/2013/05/10/168/index.html</a><br />
<br />
からであり、このニュースを超ポジティブに捉えてみよう。<br />
ニュース記事からの抜粋のため内容は確実ではないが<br />
<br />
<blockquote class="tr_bq">
Internet Explorer互換ブラウザを新規開発</blockquote>
<blockquote class="tr_bq">
自社開発ブラウザであるためユーザ環境やアプリケーションに合わせた改修も行うことができる</blockquote>
なんと!!新規開発ということはこれは双日システムズさんが<br />
<span style="color: red; font-size: large;"><b><br /></b></span>
<span style="color: red; font-size: large;"><b>日の丸独自ブラウザを作った</b></span><br />
<span style="color: #cccccc;">※ただしIE6互換の</span><br />
<br />
ということに他ならないということか!<br />
これは一大事ですよ。<br />
<br />
では、プレスリリースちゃんと見みてみよう。<br />
<br />
双日システムズ、アプリケーション仮想化の専門組織を立ち上げ、Windows®XP からの移行支援サービスに本格参入<br />
~独自のIE 互換ブラウザでWindows®7/8 へのアプリケーション移行をフルサポート~<br />
<a href="https://security.sojitz-sys.com/virtualization/news/pdf/20130510.pdf">https://security.sojitz-sys.com/virtualization/news/pdf/20130510.pdf</a><br />
<blockquote class="tr_bq">
双日システムズでは、通常IE コンポーネントブラウザと呼ばれるIE 互換ブラウザを新規開発</blockquote>
ぬぬ。<br />
<br />
<br />
IEコンポーネントブラウザ - Wikipedia<br />
<a href="http://ja.wikipedia.org/wiki/IE%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6">http://ja.wikipedia.org/wiki/IE%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6</a><br />
<blockquote class="tr_bq">
IEコンポーネントに含まれるHTMLレンダリングエンジンの機能を使えるため、新たなHTMLレンダリングエンジンを開発するのに比べると容易にウェブブラウザの開発を行うことができる。</blockquote>
ぬぬ。<br />
<br />
これをWebkitのブラウザ達と"文字列上"で比べてみよう。<br />
<br />
[ <b><span style="color: red;">IEコンポーネント</span></b> ]を[ <b><span style="color: red;">利用</span></b> ]した[ <b><span style="color: red;">双日システムズのブラウザ</span></b> ]<br />
[ <b><span style="color: red;">Webkit</span></b> ]を[ <b><span style="color: red;">搭載</span></b> ]した[ <span style="background-color: white; font-family: sans-serif; font-size: 15px; line-height: 22.640625px;"><b><span style="color: red;">NetFront Browser NX</span></b> ]</span><br />
<span style="background-color: white; font-family: sans-serif; font-size: 15px; line-height: 22.640625px;"><br /></span>
これはぱっと見一緒ではないか。<br />
やはり日の丸独自ブラウザができたと祝杯をあげるべきという事だな。<br />
<br />
うん。<br />
うん。<br />
<br />
<br />
うん・・・・・・・・・・・・・・・・・。<br />
<br />
違う・・。<br />
これは世界に戦いにいけるものではない・・・。<br />
<br />wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-71705551719329728002013-05-06T02:22:00.001+09:002013-05-06T02:29:34.217+09:00HTML5ロゴに空気をいれて爆発させるアプリを作ったHTML5ロゴに空気をいれて爆発させて運動不足解消を狙ったアプリを作ってみた。<br />
音声を出すようにしてもらえると、マサオ隊長から激励を聞く事ができ、やる気がどんどん出てくることでしょう。<br />
<span style="font-size: x-small;">※ <a href="https://madhatter.hat.io/">HTML5ロゴを使ったクレイジーな何か。</a> に応募したものです。</span><br />
<br />
<span style="font-size: large;"><b>HTML5PUMP</b></span><br />
<a href="http://wakasa.org/project/html5pump/" target="_blank">http://wakasa.org/project/html5pump/</a><br />
※iPhoneでご覧ください。一部のAndroid端末では正しく動作しません。<br />
※音声が出るコンテンツですので音を出してお楽しみください。<br />
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="http://1.bp.blogspot.com/-DqF2IQpGKZM/UYaSWdRaYhI/AAAAAAAAEDo/5VYqAXKkaZs/s1600/html5pu.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://1.bp.blogspot.com/-DqF2IQpGKZM/UYaSWdRaYhI/AAAAAAAAEDo/5VYqAXKkaZs/s320/html5pu.jpg" width="187" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
技術的に何をしてるかというと<br />
<ul>
<li>three.jsを用いてロゴを3D変形させて膨らんでるような変形をさせる</li>
<li>重力加速度を取得してある一定速度を超えたらイベントを発生</li>
<li>一定の計算とランダムで応援音声を再生させる</li>
</ul>
<div>
という感じです。</div>
<div>
<br /></div>
<div>
苦労した点としては</div>
<div>
<ul>
<li>ロゴが膨らんで破裂するというものを動的に絵を作成させる方法の検討</li>
<li>iPhoneでは音声データの読み込み制限があるため、バットノウハウで乗り越えた</li>
</ul>
<div>
という所でしょうか?</div>
</div>
<div>
ちなみに、膨張してる絵を作るところは球体にテクスチャで貼付けています。</div>
<div>
Canvasで生成したテクスチャを最初は小さく、カメラで拡大して表示し、どんどんカメラをひきながらテクスチャサイズを変えて変形させるという無理矢理な感じでアニメーションさせています。</div>
本来ならオブジェクト自体を変形させれば良いのですが、計算上面倒な事が多々あったため、この方法を採用しました。wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-25837483544624507002013-05-06T01:42:00.000+09:002013-05-06T17:50:53.871+09:00HTML5ロゴが来襲してくるというアプリを作ったHTML5は皆さんのすぐそばまで来てるというのを実感(嘘)するために、視覚化を考えました。<br />
このアプリを使えばもう見るからにすぐ来てるというのが実感できるものです。<br />
<span style="font-size: x-small;">※ <a href="https://madhatter.hat.io/" target="_blank">HTML5ロゴを使ったクレイジーな何か。</a> に応募したものです。</span><br />
<br />
<b><span style="font-size: large;">HTML5来襲</span></b><br />
<a href="http://wakasa.org/project/html5attack/" target="_blank">http://wakasa.org/project/html5attack/</a><br />
※位置情報の提供を許可してください<br />
※携帯端末で幹線道路とか付近で閲覧を推奨<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: left;">
<a href="http://1.bp.blogspot.com/-zADrqxU4L9Q/UYZ2YjzOfvI/AAAAAAAAEDY/-LXnEMfND9c/s1600/html5att_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://1.bp.blogspot.com/-zADrqxU4L9Q/UYZ2YjzOfvI/AAAAAAAAEDY/-LXnEMfND9c/s320/html5att_1.jpg" width="203" /></a></div>
<div style="text-align: left;">
※実際にはモザイクはかかっておりません。見る楽しみが減るので加工しています。</div>
<br />
技術的に何をしてるかというと<br />
<ul>
<li>位置情報を取得して、最寄りのGoogleストリートビューがある緯度経度を探す</li>
<li>スマホが向いてる方位を取得し、Googleストリートビューを表示</li>
<li>Canvasを重ねてモノリス的なロゴと空を飛ぶアニメーションロゴ群を500ms毎に追加</li>
</ul>
<div>
という感じです。</div>
<div>
<br /></div>
<div>
苦労した点としては</div>
<div>
<ul>
<li>空を飛んでくというアニメーション計算が非常にしんどいし、実際作り込み失敗。</li>
<li>iPhoneで0.1とか移動させてもうまく移動してくれないのでカクカクするのを回避で妥協する箇所が多い</li>
<li>最寄りのストリートビューを探すというのがAPIの性質上、何度も叩かないと取れない</li>
<li>最寄りを探すのがある程度の範囲内のストリートビューなので、どこかわかりにくいのでUI作り・・なおす気力なし。</li>
</ul>
<div>
とかかな・・いろいろ問題ある状態ではあります。</div>
</div>
<div>
<br /></div>
<div>
ちなみに、最初は<a href="http://ja.wikipedia.org/wiki/%E9%8A%80%E6%B2%B3%E6%BC%82%E6%B5%81%E3%83%90%E3%82%A4%E3%83%95%E3%82%A1%E3%83%A0" target="_blank">バイファム</a>の最終回からインスピレーションを得て<br />
<ul>
<li><b>紙飛行機を飛ばして地図上に飛行距離を出す</b></li>
<li><b>みんなで飛ばしたものをシェアして紙飛行機が飛び交うのを見る</b></li>
</ul>
という幻想的できれいなアプリだったのですが、作ってる最中に"飛ばす"というアクションが無くなり、地図上のプロットも無くなるという、完全に原型を留めていないものになりました。(涙)<br />
おかしいな・・・・。<br />
<div class="separator" style="clear: both;">
<iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/63VqYGaaEKs" width="420"></iframe>
</div>
<div class="separator" style="clear: both;">
※4分30秒付近からのイメージ</div>
<br /></div>
wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-1110072442807733192013-05-05T23:19:00.000+09:002013-05-05T23:29:02.597+09:00HDDの容量が足りなくなって調べたらAdobeさんが確信犯だった件ディスクの空き容量も見なくて使ってたら、いきなり容量が足りないと言われた。<br />
残り1GB・・だと!?!?<br />
それも何で気づいたかというと、iPhoneのiOSのアップデートかけようとしたら容量足りないって、iOSの方がか?と思ったら自分のHDDだったという悲しすぎるオチ。<br />
<br />
とりあえず、容量が足りないと言われた時にまず疑うのがキャッシュ系。<br />
そのキャッシュ系はユーザーライブラリにあることが多い。<br />
うーむ・・と探したら、さすがAdobeさん。<br />
<br />
ハードディスクの空き領域が徐々に減っていく (Premiere Pro/Encore)
<br />
<a href="http://helpx.adobe.com/jp/x-productkb/multi/cpsid_84648.html" target="_blank">http://helpx.adobe.com/jp/x-productkb/multi/cpsid_84648.html</a><br />
<blockquote class="tr_bq">
問題点 (Issue)<br />
Adobe Premiere Pro や Adobe Encore を使用していると、<span style="color: red;">ハードディスクの空き領域が自然に減っていきます。</span></blockquote>
やっぱりお前か・・・。力強く仕様ですが何か?とドヤ顔で書いてやがる。<br />
自分で悪いと思ってるのか対処方法が公開されていた。<br />
<blockquote class="tr_bq">
解決方法 (Solutions)<br />
この問題を解決するには、以下の場所にあるキャッシュデータを、<span style="color: red;">作業終了後に削除します。</span></blockquote>
やはり力強い。自分では消さないので消してくれと。<br />
ほいほい。わかった。消せばいいのね。<br />
と思っても、OSX 10.7以降はユーザディレクトリにはライブラリが存在しないと思っていたらその対処法もあった。<br />
さすがAdobeさん。確信犯。<br />
<div>
<br /></div>
非表示のユーザーライブラリフォルダーにアクセスする方法(Mac OS X 10.7 以降)
<a href="http://helpx.adobe.com/jp/x-productkb/global/cpsid_91195.html" target="_blank">http://helpx.adobe.com/jp/x-productkb/global/cpsid_91195.html</a><br />
<br />
とりあえず表示してないと何かと面倒なので、表示する設定をターミナルから流し込む。<br />
で、Adobeフォルダみたら・・ <b><span style="color: red; font-size: large;">50GB </span></b>超え。<br />
おぃ。俺のHDDの半分もっていってやがる!!<br />
※HDDの容量は120GBです。<br />
<br />
で、さっくりここの対処方法から削除してやっと復活。<br />
<br />
他にもいろいろクリーニングしたいけど、クリーニングアプリの良さげなものをもわからず一旦これで終了。<br />
<br />
みなさんもAdobe製品にはお気をつけを・・。wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-11549686445711167952013-05-01T13:04:00.000+09:002013-05-06T02:22:50.193+09:00HTML5ロゴを愛する人のためのChrome機能拡張を作ったHTML5ロゴが好きで好きでしょうがない人のためのChromeの機能拡張を作った。<br />
<span style="font-size: x-small;">※ <a href="https://madhatter.hat.io/" target="_blank">HTML5ロゴを使ったクレイジーな何か。</a> に応募したものです。</span><br />
<div>
<br />
<b>● We Love HTML5 LOGO! more. ●</b><br />
<a href="https://chrome.google.com/webstore/detail/we-love-html5-logo-more/ipldhmeiifmgbfdjkonnpjcgegilpmmk?hl=ja" target="_blank">https://chrome.google.com/webstore/detail/we-love-html5-logo-more/ipldhmeiifmgbfdjkonnpjcgegilpmmk?hl=ja</a><br />
<br />
これを入れるとあら不思議。<br />
すべてのWebページに <b><span style="color: orange; font-size: large;">5</span></b> 、 <b><span style="color: orange; font-size: large;">HTML5</span></b> という文字があったら<a href="http://www.w3.org/html/logo/" target="_blank">HTML5ロゴ</a>になります。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-Y-swSwWL3Io/UYCLe3B6qCI/AAAAAAAAD6w/j6gLm-8AUUE/s1600/more.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="http://3.bp.blogspot.com/-Y-swSwWL3Io/UYCLe3B6qCI/AAAAAAAAD6w/j6gLm-8AUUE/s320/more.png" width="320" /></a></div>
<br />
<br />
!注意!<br />
サイトの作りによっては適応されない場合があります。<br />
例:amazon.com、google.com<br />
<br />
上記が少々使いにくいと感じたり、普通にサイトを使いたいという方用に抑えたフォントサイズのものもご用意してあります。<br />
<br />
<b>● We Love HTML5 LOGO! ●</b><br />
<a href="https://chrome.google.com/webstore/detail/we-love-html5-logo/dccieefclmgoommkpjjdppmdpbpgecim?hl=ja" target="_blank">https://chrome.google.com/webstore/detail/we-love-html5-logo/dccieefclmgoommkpjjdppmdpbpgecim?hl=ja</a><br />
<br />
!注意!<br />
かなり自然に溶け込むサイズにしたため、忘れてこのまま画面キャプチャを送って大惨事にならないようにお気を付けください。<br />
<br />
技術的に何をしてるかというと<br />
<ul>
<li>HTML5ロゴのSVGデータをSVGフォント用に変換</li>
<li>Chrome機能拡張でロードされた時に「SVG FONTが含まれるSVG」と「bodyに対してfont-familyを適応するcss」を追加</li>
</ul>
だけです。<br />
<br />
細かい情報はあまりないので以下を参考に試行錯誤して微調整しました。<br />
<a href="http://www.w3.org/TR/SVG/fonts.html" target="_blank">http://www.w3.org/TR/SVG/fonts.html</a><br />
<a href="http://webamb.com/web_service/773.html" target="_blank">アイコンをFireworksでSVG出力してWebフォントに対応させる方法</a><br />
<br />
ちなみに苦労したのがSVG FONTの作り方で、普通のSVGをFONTとして使うにはかなり厄介でIllustratorなどから吐き出した複雑な図形のSVGだとpathタグで吐き出されるためそのまま使えません。<br />
SVG FONTの場合、svgのパスで d アトリビュートで作れる図形じゃないとだめなようで、変換が必要でした。<br />
最悪手動で作ろうかと思ってたのですが、 <a href="http://icomoon.io/app/" target="_blank">IcoMoon App</a> というサイトでうまいこと変換してくれるというのを知ってそこで変換しました。<br />
<br /></div>
wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-82676728145026204702013-04-30T13:39:00.000+09:002013-04-30T14:00:23.946+09:00hat.ioで開催されてた「10キー電卓 or 時計のスマホアプリデザイン・大募集!」に応募した。hat.ioというリクルートさんがやってるサイトでコンテストがあったので応募してみた。<br />
<br />
10キー電卓 or 時計のスマホアプリデザイン・大募集!<br />
<a href="https://calclock.hat.io/">https://calclock.hat.io/</a><br />
<br />
応募したのは以下の5作品<br />
<ul>
<li>両手計算機 <a href="https://hat.io/works/1303" target="_blank">https://hat.io/works/1303</a>
<br />
<a href="http://4.bp.blogspot.com/-lA5BNYw-vb8/UX8vfikcB6I/AAAAAAAAD6A/ro0v3NSiS3w/s1600/defimg.png" imageanchor="1"><img border="0" src="http://4.bp.blogspot.com/-lA5BNYw-vb8/UX8vfikcB6I/AAAAAAAAD6A/ro0v3NSiS3w/s1600/defimg.png" height="200" width="200" /></a>
</li>
<li>はじく計算機 <a href="https://hat.io/works/1304" target="_blank">https://hat.io/works/1304</a>
<br />
<a href="http://4.bp.blogspot.com/-aBgBg9s0cZY/UX8vl_1CgSI/AAAAAAAAD6I/FsYpESv_hU8/s1600/flickcalc.png" imageanchor="1"><img border="0" src="http://4.bp.blogspot.com/-aBgBg9s0cZY/UX8vl_1CgSI/AAAAAAAAD6I/FsYpESv_hU8/s1600/flickcalc.png" height="200" width="151" /></a>
</li>
<li>数字認識付き計算機 <a href="https://hat.io/works/1357" target="_blank">https://hat.io/works/1357</a>
<br />
<a href="http://4.bp.blogspot.com/-Pjtpxn2Kwr4/UX8vstxWRyI/AAAAAAAAD6Q/XhQdLQeUrio/s1600/camera1.jpg" imageanchor="1"><img border="0" src="http://4.bp.blogspot.com/-Pjtpxn2Kwr4/UX8vstxWRyI/AAAAAAAAD6Q/XhQdLQeUrio/s1600/camera1.jpg" height="166" width="200" /></a>
</li>
<li>ギター風計算機 <a href="https://hat.io/works/1364" target="_blank">https://hat.io/works/1364</a>
<br />
<a href="http://4.bp.blogspot.com/-r9fMNya8ZDM/UX8vwtlZZPI/AAAAAAAAD6Y/fbw-hx8KF2U/s1600/defimg.jpg" imageanchor="1"><img border="0" src="http://4.bp.blogspot.com/-r9fMNya8ZDM/UX8vwtlZZPI/AAAAAAAAD6Y/fbw-hx8KF2U/s1600/defimg.jpg" height="200" width="200" /> </a>
</li>
<li>日時計 <a href="https://hat.io/works/1305" target="_blank">https://hat.io/works/1305</a>
<br />
<a href="http://4.bp.blogspot.com/-8cayVzqCchM/UX8v4Gwu7hI/AAAAAAAAD6g/7iSZGcOFWd4/s1600/hidokei2.png" imageanchor="1"><img border="0" src="http://4.bp.blogspot.com/-8cayVzqCchM/UX8v4Gwu7hI/AAAAAAAAD6g/7iSZGcOFWd4/s1600/hidokei2.png" height="129" width="200" /></a>
</li>
</ul>
<div>
多少はJSで実装してどうなんかな?とか検証はしてみたけど、基本1枚絵を作るだけのものです。<br />
脳内の妄想のみが主な作業なので、アイディア考えて絵に起こすという作業を無限ループしてたばっかりに、コンテストを荒らすのか?並に応募してしまいました・・。<br />
※ <complete id="goog_352846733"><a href="https://twitter.com/yukio_andoh" target="_blank">@yukio_andoh</a> さんも怒涛の追い上げで投稿しまくってた。逃げ切り応募すればよかった・・。</complete><br />
<br />
さて、僕の Golden Hat Prize の賞品 <b>MacBook Air</b> はいつ届くのかな?待ち遠しいです。<br />
<b><span style="color: red;">※ !注意! 発表はまだです。(4月30日時点)</span></b><br />
<br />
<i>「え?レッドブル狙いだろ?<br />色物扱いのものばっかりじゃねぇか!」</i><br />
<br />
そんな声もちらほら聞こえますが、そんな気はまったく<b>無い</b>です。<br />
見るからに力のこもった MacBookAir狙いのものしかないじゃないですか!!</div>
wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-4135500939225644502013-04-06T16:06:00.002+09:002013-04-06T23:18:19.865+09:00マカンコウサッポウもしくは波動拳写真をHTML5技術で強化するCanvasアプリどうも以下のような写真が流行ってるらしい。<br />
<a href="http://matome.naver.jp/odai/2136420834172042501" rel="nofollow" target="_blank">女子高生を中心に「かめはめ波」「マカンコウサッポウ」が流行中!吹っ飛び画像まとめ</a><br />
<br />
だが、どうも破壊力があまり感じられない。<br />
何が足りないんだ・・・と考えた結果が <b><span style="color: red;">GIFアニメ</span></b> だ!と結論に達しました。<br />
で、Canvas使ってGIFアニメ作るJS作りました。<br />
<br />
HADOOOO<br />
<a href="http://wakasa.org/project/hadoooo/" target="_blank">http://wakasa.org/project/hadoooo/</a><br />
※iPhoneで動かそうと思ったけど、最終的に重過ぎて作り込み断念。PCのChromeかFirefoxで使ってください。<br />
<br />
何ができるかというと<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: left;">
<a href="http://4.bp.blogspot.com/-rD0UAD4onVo/UV_HEcZzdCI/AAAAAAAAD44/Kd8gNOgosbY/s1600/P1020772.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="http://4.bp.blogspot.com/-rD0UAD4onVo/UV_HEcZzdCI/AAAAAAAAD44/Kd8gNOgosbY/s320/P1020772.JPG" width="320" /></a></div>
<div style="text-align: left;">
というかわいらしい写真をあっという間に</div>
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="http://3.bp.blogspot.com/-YhEKYBn6c0Q/UV_HIXuoo7I/AAAAAAAAD5A/XoD3cfK4PK0/s1600/index.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="http://3.bp.blogspot.com/-YhEKYBn6c0Q/UV_HIXuoo7I/AAAAAAAAD5A/XoD3cfK4PK0/s320/index.gif" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
という、悪っぽいGIFアニメができます。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
使い方は</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<ol>
<li>画像をドラックして読み込ませる</li>
<li>パワーをためたい箇所でマウスダウン</li>
<li>十分たまったらそのままマウスを発射したい方向に動かす</li>
</ol>
<div>
で、出来上がりです。</div>
<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
技術的に何をしてるかというと</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<ol>
<li>Canvasに画像を表示</li>
<li>マウスダウンで最初のパワーをためる箇所を取得</li>
<li>マウスが描画してる円から外に飛び出るかを監視</li>
<li>円から出たらマウスアップを監視してビームを作る</li>
<li><a href="https://github.com/antimatter15/jsgif" target="_blank">jsgif</a> を利用して画面プルプルさせたGIFアニメを出力する</li>
</ol>
<div>
というものです。</div>
<div>
ぜひマカンコウサッポウとかをもっと効果的にしたいという時にお使いください。</div>
<br />
<span id="goog_354084804"></span><span id="goog_354084805"></span><br />
<br />
<br />wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-64942962452239309172013-03-02T00:17:00.000+09:002013-03-02T00:35:23.238+09:0040の夜 - FBアプリを消したあの方へ -<br />
<b><span style="font-size: large;">※ファンの方すいません・・・。</span></b><br />
<br />
とあるネットの有名人の方がフェースブックアプリにいらついて削除していらっしゃったので、ついつい作りました。<br />
<br />
聞いてください。<br />
<br />
<br />
40の夜......<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/jv3BtWJSMLM?feature=player_embedded' frameborder='0'></iframe></div>
<br />
ヤフトピのニュースとFBばかり見てる俺<br />
インターネットの上の空 届かない電波探してる<br />
やり場のない読み込みのイライラ破りたい<br />
アプリの表示 煙草をふかして待っても動かない<br />
<br />
しゃがんでかたまり 画面タッチしながら<br />
心のひとつも解り合えない スマホをにらむ<br />
そして仲間達は今夜フェースブックで計画を立てる<br />
<br />
とにかくもう さっさと表示を してほしい<br />
友達からの通知が何なのかさえ 解からず震えている<br />
40の夜<br />
<br />
ブラウザ起動で走り出す 動くかも解からぬまま<br />
PC用のURLのサイトへ<br />
誰にも縛られたくないと 逃げ込んだHTML5に<br />
自由になれた気がした40の夜<br />
<br />
動かないアプリ 熱くなるスマホ 電池恋しくて<br />
夢見てるあの操作感の横を サヨナラつぶやき削除長押し<br />
アイコンの上 ぽつんと光る バツの印<br />
85円で買えるアプリ 熱くなるスマホ握りしめ<br />
<br />
動くかも解らないけど<br />
HTML5と俺は将来さえ ずっと夢に見てる<br />
大人達はアプリを入れろ入れろと言うが 俺はいやなのさ<br />
<br />
読み込まないアプリが俺達の全てならば<br />
なんてちっぽけで なんて意味のない なんて無力な<br />
40の夜<br />
<br />
ブラウザ起動で走り出す 動くかも解からぬまま<br />
PC用のURLのサイトへ<br />
覚えたての操作感味わい 星空を見つめながら<br />
自由を求め続けた 40の夜<br />
<br />
ブラウザ起動で走り出す 動くかも解からぬまま<br />
PC用のURLのサイトへ<br />
誰にも縛られたくないと 逃げ込んだHTML5に<br />
自由になれた気がした 40の夜wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-86090701087613608672013-03-01T11:30:00.002+09:002013-03-01T11:30:51.177+09:00iPhone用Google Mapsアプリで[サーバに接続できませんでした]と表示された時の対処法<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-zOxFzE8CYZ8/UTAQypeUs3I/AAAAAAAADpE/kewt-zW8OtY/s1600/goerror.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-zOxFzE8CYZ8/UTAQypeUs3I/AAAAAAAADpE/kewt-zW8OtY/s1600/goerror.png" /></a></div>
<br />先日からこっそり悩まされた iPhone用GoogleMapsアプリで起動して地図を動かす、検索すると<br />
[<b>サーバに接続できませんでした</b>]<br />
とアラートが常に出てアプリケーションとして使い物にまったくならないという状態になったので、それの回避方法を。<br />
※画面キャプチャ忘れてた・・・<br />
<br />
結論として症状が出るのは<br />
<br />
<ul>
<li>アカウントのパスワードを変更した</li>
<li>2段階認証プロセスを設定していない</li>
</ul>
<div>
場合に起こるようです。</div>
<div>
どうやら、このGoogleMapsアプリは「<b>アプリ上ログイン状態になってるけど認証が通らない場合は通信をまったくさせない</b>」という仕様になってるみたいです。</div>
<div>
なぜ地図タイル取得時にもアカウントの認証が必要なのか少々気持ち悪いですが、まぁそこはおいておこう・・。</div>
<div>
※アカウントに紐付けてみてる地図の位置でも傾向を取ってるのか・・?</div>
<div>
<br /></div>
<div>
で、対処方法は</div>
<div>
<ul>
<li>いったんログアウトして再度ログインさせる</li>
</ul>
<div>
という方法で解決しました。</div>
</div>
<div>
ログアウトさせる場所は少々わかりにくいですが</div>
<div>
<ol>
<li>検索バーの横の人アイコンをタッチ</li>
<li>右上の設定アイコンをタッチ</li>
<li>アカウント名が表示されてるものをタッチ</li>
</ol>
</div>
<div>
の操作でできます。</div>
<div>
<br /></div>
<div>
アラートのメッセージ内容をどうにかしてほしいな・・・。ネットワークのせいかと疑ってしまっていて解決策に気づくのに時間がかかってしまいました・・。</div>
<div>
パスワードかえてからものすごい日付経って気づいたのでアカウントのせいだと気づくのに時間かかった・・。<br /></div>
<div>
p.s.</div>
<div>
日ごろGoogleMapsアプリをほぼ使ってない生活なんだと気づいて人間らしいぞ!と変な誇らしさを感じている今日この頃です。</div>
wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-18713573652389321382012-11-30T11:26:00.001+09:002012-11-30T12:43:49.005+09:00JavaScriptのファイル結合をSublimeTextから簡単に実行する方法最近のJavaScriptのつくりとして、jQuery等のプラグインを使ったりしてると複数のJavaScriptを読み込まないといけなくなります。<br />
<div>
これに対応するために import.js というスクリプトを作って<script>タグをdocument.writeしたりもしますが、数が多くなるとレスポンスが悪かったり、いろいろジレンマが発生してきます。</div>
<div>
参考: <a href="http://www.ezgate-mt.sakura.ne.jp/javascript/83.html">http://www.ezgate-mt.sakura.ne.jp/javascript/83.html</a></div>
<div>
<br /></div>
<div>
これらをSublimeTextでショートカット一発で解決する方法を考えてみました。</div>
<div>
と、いっても、ものすごいレガシー感いっぱいの内容ですが・・</div>
<div>
<ol>
<li>JS圧縮ライブラリ (UglifyJS等) をインストールする</li>
<li>それを使うためのバッチファイルやシェルスクリプトを書く</li>
<li>SublimeTextでショートカットキー一発で呼び出す設定を書き、設定</li>
</ol>
<div>
1 はインストールなのでここでは特に説明しませんが、UglifyJSの場合、node.jsインストールしてnpmコマンドでインストールするのがが2ステップで入れれるので一番楽だと思います。例はUglifyJSになっています。</div>
</div>
<div>
<br /></div>
<div>
2 は単に3で書く部分を簡略化するためです。ファイルを追加したりする場合にSublimeTextで編集しやすかったり、テストも楽なので、この方法が便利です。</div>
<div>
いざとなればこのファイルをたたけば結合してくれるのも便利。</div>
<div>
例:</div>
<div>
以下は該当のjs群がある同一ディレクトリに __build.bat というファイル名で作った場合のサンプル。<br />
PC用import.jsとスマホ用import-sp.jsの2ファイルを作成しつつ、各ファイルはそれごとに指定の複数のJSファイルを1つのファイルに結合したい。</div>
<div>
<i><br />__build.bat</i></div>
<div>
<blockquote class="tr_bq">
call uglifyjs -o import.js hoge1.js jquery.js jquery.hoge2.js jquery.hoge3.js hoge4.js<br />
call uglifyjs -o import-sp.js jquery.js jquery.hoge2.js jquery.hoge3.js hoge5.js</blockquote>
</div>
<div>
3 はSublimeTextで [Tool] > [Build System] > [New Build System...] を選ぶと、Build(Ctr+B)で実行できる設定ファイルのテンプレが開きます。それに 2 で作ったファイル名を書くだけ。<br />
保存先は上記で作った場合は保存時のデフォルトでOKです。<br />
例:<br />
<i><br />CallBuildbat.sublime-build</i><br />
<blockquote class="tr_bq">
{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>"cmd":["__build.bat"]<br />
}</blockquote>
<br />
他のBuildSystemを使ってる場合は3は結構作りこむ必要がありますが、使ってない場合は上記だけでOKです。<br />
<br />
で、この準備ができたら [Tool] > [Build System] >[CallBuildbat] (3 で保存した名前)を選びましょう。<br />
そして、該当のJSファイルを開いて <b>Ctr+B</b> を押すと、さくっと複数ファイルが結合した import.js と import-sp.js が出来上がってるはずです。<br />
<br />
なんて簡単!<br />
<br />
ほかにも、いろいろ設定がかけますが、自分で使いやすいようにカスタマイズしてみてください。<br />
<br /></div>
wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-86390298033252982852012-06-16T21:32:00.001+09:002012-06-16T21:39:35.552+09:00IPv6とInternetExplorer<a href="http://www.worldipv6launch.org/" target="_blank">World IPv6 Launch</a>を過ぎてもみなさんのがんばりで問題なく接続できている今日この頃、いかがお過ごしでしょうか?<br />
ちょっと気になることがあって、ISPさんではなくブラウザ絡みの視点からちょっと調べてみました。<br />
<br />
ブラウザで<a href="http://tools.ietf.org/html/draft-ietf-v6ops-happy-eyeballs-07" target="_blank">Happy Eyeballs</a>が実装されている(ChromeとFireFoxは実装済み <b>※追記</b>)とIPv6で接続を失敗して次はIPv4でというフォールバックをせず、IPv6+IPv4を一気に送って早く帰ってきた方を採用!となる事で回避(ただのトラフィック増やしてる方法とも言えなくはないが・・)したりと意外とブラウザレベルでもがんばってるようです。<br />
※今まで知らなかった・・・(汗)<br />
<br />
でも、よくよく見てるとやっぱりここでInternetExplorerさんの文字が・・<br />
<br />
<div>
<ul>
<li>Microsoft Internet Explorer (IE7, IE8)ではフォールバックの回数の上限が5回となっているため、これを超える数の IPv6 アドレスが名前解決の際に得られた場合、IPv4へフォールバックせずに通信が終了してしまう。回数はレジストリで制御可能となっており、デフォルト値が 5 回となっている</li>
</ul>
</div>
<br />
<div>
※参考 <a href="http://www.v6pc.jp/jp/upload/pdf/v6fix20110609.pdf">http://www.v6pc.jp/jp/upload/pdf/v6fix20110609.pdf</a></div>
<div>
<br /></div>
<div>
な、なんですと・・・。</div>
<div>
これの影響でHTMLは読み込むけど、画像読もうとした時には上限数超えてて読み込まないとかあるようです。</div>
<div>
※参考 <a href="http://www.attn.jp/worldipv6day/meeting/20111125/111121_BIGLOBE.pdf">http://www.attn.jp/worldipv6day/meeting/20111125/111121_BIGLOBE.pdf</a></div>
<div>
とりあえず、IPv4時代が青春だったIEさんには相当IPv6は重荷のようです。そりゃそうですが。</div>
<div>
<br /></div>
<div>
<a href="http://support.microsoft.com/gp/ipv6info/ja">http://support.microsoft.com/gp/ipv6info/ja</a>
</div>
<div>
とかにもまとまってますね。</div>
<div>
<br /></div>
<div>
たぶん今の時点で特に話題にも出てこないので大丈夫だとは思いますが、XPでIE8等を利用してるクライアントから突然 「画像がちょっとしか出なくなった!」 とかあった時に、クライアントさんの社内ネットワークがIPv4からIPv6対応に変わってたりした場合には、この手のIPv6がらみも疑ってみるというのが必要かもしれません。<br />
※上記は間違った話かも。僕そんな知識ないんす・・・。<br />
とりあえずChromeで見てみてください。と。。。。。</div>
<div>
<br /></div>
<div>
ま、たぶんもう大丈夫でしょうけどね。</div>wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-42275209490458771812012-06-04T20:31:00.001+09:002012-06-04T20:46:27.973+09:00CoffeeScriptでダブルコーテーションが入れ子になった文字連結CoffeeScriptで文字列連結を行なって文字列を作るときに"の入れ子をしたときにエスケープしないというのに気づいたのでメモ
<br />
<br />
通常文字列連携するときには
<br />
<br />
<i>-CoffeeScript-</i><br />
<blockquote>
abc='title'<br />
console.log <span style="background-color: red;">"</span><span style="background-color: #f4cccc;">こんにちは#{abc}</span><span style="background-color: red;">"
</span></blockquote>
をいう形で作ります。<br />
※色は強調用に意図的に塗ってます。<br />
これを用いてjQueryなどでエレメント名を変数化してる時など妙な入れ子になります。<br />
"で括られてるため、気分的に<b>\"</b>とエスケープして書くとコンパイルするとエラーします。<br />
どうやら文法的には入れ子になろうとエスケープしないで書くのが正解です。<br />
<i><br /></i><br />
<i>-HTML部-</i><br />
<blockquote>
<h1 class="title">たいとるです</h1></blockquote>
<i>-CoffeeScript-</i><br />
<blockquote>
abc='title'<br />
# <strike>console.log <span style="background-color: red;">"</span><span style="background-color: #f4cccc;">こんにちは#{$(</span><span style="background-color: red;">\"</span><span style="background-color: #e06666;">.#{abc}</span><span style="background-color: red;">\"</span><span style="background-color: #f4cccc;">).html()}</span><span style="background-color: red;">"
</span></strike><br />
console.log <span style="background-color: red;">"</span><span style="background-color: #f4cccc;">こんにちは#{$(</span><span style="background-color: red;">"</span><span style="background-color: #e06666;">.#{abc}</span><span style="background-color: red;">"</span><span style="background-color: #f4cccc;">).html()}</span><span style="background-color: red;">"
</span></blockquote>
個人的には違和感ありまくるのですが、こういうものらしいです。wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-34745971555347683312012-05-17T11:12:00.001+09:002012-05-17T11:20:55.632+09:00たった3ステップでCoffeeScriptをWindows7にインストールWindows7にCoffeeScriptをインストールをするのが3ステップで可能になってました。<br />
<br />
<div class="separator" style="float: left;">
<a href="http://1.bp.blogspot.com/-3WfiF9TGYVc/T7RYMHLsigI/AAAAAAAABig/d154jBYIu44/s1600/WS000001.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-3WfiF9TGYVc/T7RYMHLsigI/AAAAAAAABig/d154jBYIu44/s200/WS000001.JPG" width="130" /></a></div>
<div class="separator" style="float: left; margin-top: 30px;">
→
</div>
<div class="separator" style="float: left;">
<a href="http://3.bp.blogspot.com/-cZzKPHJ_iLE/T7RYM-Rl9DI/AAAAAAAABik/kZF-4deJpmI/s1600/WS000002.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-cZzKPHJ_iLE/T7RYM-Rl9DI/AAAAAAAABik/kZF-4deJpmI/s200/WS000002.JPG" width="130" /></a>
</div>
<div class="separator" style="float: left; margin-top: 30px;">
→
</div>
<div class="separator" style="float: left;">
<a href="http://2.bp.blogspot.com/-8BqRrDlLsII/T7RYN3d4A0I/AAAAAAAABis/UDbuaHDkvc4/s1600/WS000006.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-8BqRrDlLsII/T7RYN3d4A0I/AAAAAAAABis/UDbuaHDkvc4/s200/WS000006.JPG" width="130" /></a></div>
<div style="clear: both;">
</div>
<br />
<ol>
<li><a href="http://nodejs.org/" target="_blank">node.js</a> のサイトにアクセスし、[ <b>Download</b> ]ボタンから[ <b>Windows Installer</b> ]を<b>ダウンロード</b></li>
<li>ダウンロードした [ <b>node-v0.6.18.msi</b> ]※ をダブルクリックして<b>インストール</b></li>
<li>コマンドプロンプト立ちあげて、[ <b>npm install coffee-script --global </b>] と打つ</li>
</ol>
<br />
<div>
※2012/5/17現在<br />
<br />
上記は検証用のいれたばかりのWindows7 SP1で行なってみました。<br />
すばらしく簡単になってますね。</div>wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-29402717835347621552012-05-06T00:21:00.000+09:002012-05-06T00:33:20.004+09:00Sublime Text 2でCoffeeScriptのコンパイルをするバッドノウハウ<br />
はやりの<a href="http://www.sublimetext.com/2" target="_blank">Sublime Text 2</a>を使ってます。<br />
会社ではWindows、自宅ではMacと環境がもろ違うんですが、同じエディタが使えるのは非常に良いです。 <br />
で、最近コード書こうと思ったらCoffeeScriptで書いてしまうという中毒症状が出始めてるので、そのあたりの環境作った時のメモを。<br />
<i>※個人的にはCoffeeScriptはおすすめしません。理由はいくつかあるんですが、最大の問題点はネットに落ちてるJSのコードをそのままコピペで動かせないから、ちょいと変換とかするのがなんとも。 </i><br />
<br />
とりあえずSublime Text 2でCoffeeScriptを書くのに便利なツールを入れるんですが、今回のゴールは、<br />
<span style="font-size: large;"><b><u>複数のCoffeeScriptファイル</u>を<u>保存するだけ</u>で勝手にコンパイルしてくれて、サクサクっとコードを書いていきたい</b></span><br />
という所です。<br />
<br />
とりあえず、前段として、CoffeeScriptのインストールとSublimeText2にCoffeeScriptの言語拡張を入れるというのがあるのですが、ググれば適度に日本語の情報がヒットするのでそちらで・・。<br />
<a href="http://d.hatena.ne.jp/mizchi/20111021/1319167480">http://d.hatena.ne.jp/mizchi/20111021/1319167480</a><br />
<a href="http://memo.devjam.net/tag/coffeescript">http://memo.devjam.net/tag/coffeescript</a><br />
※僕の場合、Windows環境はさっくりいったのにMac環境で手こずりました。MacPortsのバカヤロウ・・。 <br />
※時代は進化してるので、たぶんインストーラーでさっくり言ってたりしてブログにないくらい簡単になってます。 <br />
<br />
で、もろもろ入れて準備万端。さてさてコード書いてjsにコンパイルしましょう。<br />
という所なんですが、Windows、Macでは入れたばかりだとSublime Text 2のビルドコマンドがうまく動きません。<br />
どうもコマンド部分でパスがうまく通ってないようです。コマンドプロンプトではうまく通ってるみたいだが、 Sublime Text 2は上手くいってないようです。<br />
しょうがないので、設定を変更します。 <br />
ただ問題は、インストールはコマンドでやってるので、どこに何が入ったのかわからないという。と、そんな困ったときはOSのファイル検索です。<br />
<span style="font-size: large;"><b>CoffeeScript.sublime-build</b></span><br />
これを検索してみてください。<br />
ちなみに、私の環境のMacだと<br />
~/Library/Application Support/Sublime Text 2/Packages/CoffeeScript/Commands<br />
あたりにあります。<br />
<br />
で、開いてみると<br />
<blockquote class="tr_bq">
{<br />
"path": "$HOME/bin:/usr/local/bin:$PATH",<br />
"cmd": ["coffee","-c","$file"],<br />
"file_regex": "^(...*?):([0-9]*):?([0-9]*)",<br />
"selector": "source.coffee"<br />
}</blockquote>
となっていると思います。<br />
2行目のpathがWindows、Macでは違うのでcoffeeコマンドがあるパスを指定しましょう。<br />
Mac環境だと<br />
<blockquote>
"path": "/opt/local/bin",</blockquote>
になります。<br />
で、このパスを書き換えて<br />
<blockquote class="tr_bq">
{<br />
"path": "/opt/local/bin",<br />
"cmd": ["coffee","-c","$file"],<br />
"file_regex": "^(...*?):([0-9]*):?([0-9]*)",<br />
"selector": "source.coffee"<br />
}</blockquote>
保存して、Command+bとすると、おおお!!コンパイルされて同階層にjsがはき出された!<br />
と、まぁここまで、ググるとよくあるんですが、なぜかSublime Text 2の設定でSave All on Buildにチェックいれても、保存しても完全に無視されます。なぜだ。悲しい・・。<br />
※僕の設定が何かおかしいだけだとは思うんですが。解決法知ってる方は教えてください。<br />
<br />
なのでここからは<b>バッドノウハウ</b>です。<br />
ですが、怪我の功名で<br />
<span style="font-size: large;"><b>普通にSublimeText2やるとエラーしてても何でも[Finished]としか出ない</b></span>という衝撃のメッセージでエラーしたの気づかないという悲しいオチですが、きっちりエラーメッセージが拾えるようになります。結構これ重要だったりします。エラーしてる=JSはき出さない=ブラウザで見て反映されてないというのに気づくのが遅れるのです。<br />
<br />
<br />
とりあえず、自動でコンパイルができないということは、<br />
<span style="font-size: large;">保存(Ctr+S)したらコンパイル(Command+b)してブラウザリロード</span><br />
という作業は結構めんどくさいし、コンパイル忘れして動かないなーと悩むことまちがいなし。<br />
仕方が無いので、CoffeeScriptのコマンドにある watch を使って監視してもらおう。<br />
<a href="http://sites.google.com/site/sappariwiki/coffeescript/coffee-command">http://sites.google.com/site/sappariwiki/coffeescript/coffee-command</a><br />
強いて言うなら、このwatchを使うんだったら別にSublimeText2上でやらなくてもいいんじゃないかと言われそうですが、毎回起動時にコマンドプロンプト立ち上げてコマンド叩くのが面倒だったりするので、エディタからショートカットで呼び出したいのです。<br />
なので、とりあえず以下のようにwを追加して-wcとコマンドを変更してみました。<br />
<blockquote class="tr_bq">
"cmd": ["coffee","-wc","$file"],</blockquote>
こうすると、一度Command+bを呼び出せば、ずっと常駐して監視してくれるようになりました。<br />
ですが、ここで問題。<br />
1つのCoffeeScriptファイルなら問題ないのですが、<b>2つ以上の複数になると</b>、1ファイルしかコンパイルできないので前に常駐してたものがキャンセルされます。別のファイルを変更するたびにCommand+bを押す事になるのは無しです。<br />
で、コマンドでファイル名部分をディレクトリ指定するとそこにあるCoffeeScriptファイル全部監視してくれるという便利な機能があるので<br />
<blockquote class="tr_bq">
{<br />
"path": "/opt/local/bin",<br />
"cmd": ["coffee","-wc","./"],<br />
"selector": "source.coffee"<br />
}</blockquote>
としてみました。こうすると同階層にあるCoffeeScriptファイルをすべて監視してくれるようになって、複数あっても大丈夫です。<br />
これで、何か記述ミスがあっても他のファイルでエラーが出ててもエディタ上で確認できます。wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-33612169093684906552012-04-22T01:10:00.000+09:002012-05-06T01:38:20.277+09:00素人による勉強会動画配信日記(接続機材編)勉強会動画配信ボランティアをせっせとやってると、このご時世では技術的に難しいことじゃないのに結構いろんな人に質問されるから、とりあえずまとめてみようかなと。<br />
<div>
<br /></div>
<div>
一番みなさんが悩むところは機材選定のようなので、そこを中心として。</div>
<div>
と、えらそうに言ってますが、素人なんで調子のんなよ!って内容になりますが。</div>
<div>
あと、家庭用ビデオカメラとか持ってる前提の話が主です。自分の子供が生まれたりすれば親ばかになり持ってる可能性が高いので、そういう用途と共有するという前提となります。<br />
<br /></div>
<div>
とりあえず大きくわけると個人予算のボランティアベースだと</div>
<div>
<ul>
<li>WebCam等PC用品で撮影</li>
<li>家庭用ビデオカメラ等で撮影</li>
</ul>
<div>
に別れると思われます。</div>
</div>
<div>
※例外もありますが。</div>
<div>
<br /></div>
<div>
こちらどちらがいいとは難しいのですが、WebCamの場合</div>
<div>
<ul>
<li>ズームなどができないので、設置場所が限られる</li>
<li>机などに置いてだと見上げる感じになりプロジェクターの絵が台形になって見難い</li>
<li>プロジェクターの明かりと周りの暗さの影響でスライドが真っ白気味になる</li>
</ul>
<div>
など見てる方としては見にくい事が多いです。ドライバの設定で回避できるものもあったりもしますが。</div>
</div>
<div>
そのあたりを考えると、家庭用ビデオカメラなどの</div>
<div>
<ul>
<li>ズームが効くので最後尾とかから正面を撮影できる</li>
<li>ホワイトバランスや露出が良い感じになる</li>
<li>マイクが
(PCの内蔵等と比べて) 良いので声が聴きやすい</li>
</ul>
<div>
になるものが欲しくなってくるところです。
</div>
</div>
<div>
<br /></div>
<div>
ですが、家庭用ビデオカメラの映像をネット配信に使おうとしても、簡単につなぐということができません。</div>
<div>
<ul>
<li>よくある普通のPCにはRCAケーブルやHDMI入力が可能なものがない</li>
<li>昨今の家庭用ビデオカメラはFireWire出力はできない</li>
</ul>
<div>
USB端子はついてるものの、あくまであれは”録画したものを取り込む”ためのもので、今見てる映像をそこに出力することはできません。</div>
</div>
<div>
となると、それをなんとかPCに取り込んだりする機器が必要となります。 </div>
<div>
現状お手頃(携帯を買うより安いというレベルとしておこう)?な機材として</div>
<div>
<ul>
<li>単体で配信できる機材 @ <a href="http://www.amazon.co.jp/gp/product/B0065G4GH6/ref=as_li_ss_tl?ie=UTF8&tag=wakasaorg-22&linkCode=as2&camp=247&creative=7399&creativeASIN=B0065G4GH6" target="_blank">Cerevo LiveShell</a> (2.6万)</li>
<li>Firewireに変換 @ <a href="http://auctions.search.yahoo.co.jp/search?p=ADVC" rel="nofollow" target="_blank">ADVC-55,ADVC-100,ADVC-110</a> (中古6千〜 新品1.7万くらい)</li>
<li>USB2.0に変換 @ <a href="http://www.amazon.co.jp/gp/product/B005XDFD4M/ref=as_li_ss_tl?ie=UTF8&tag=wakasaorg-22&linkCode=as2&camp=247&creative=7399&creativeASIN=B005XDFD4M" target="_blank">MonsterX Live</a> (1.6万くらい)</li>
<li>Firewireが出力できるビデオカメラ @ <a href="http://auctions.search.yahoo.co.jp/search?ei=UTF-8&p=miniDV+-%E3%83%80%E3%83%93%E3%83%B3%E3%82%B0&oq=&slider=0&auccat=23636" target="_blank">DVテープタイプのビデオカメラ</a>(中古1万〜)</li>
</ul>
あたりになるかなと思います。<br />
どれも一長一短があって、これというおすすめできないのですが、FirewireのタイプだとほぼMac限定(Windowsだと内蔵してるのが少ない)になりますし、USB2.0に変換のタイプだと現状Windowsしかドライバ(Mac対応は絶賛開発中のようですが)がありません。<br />
あと、専用にDVのビデオカメラ買ってもいいんですが、リスク軽減で録画しておいて、配信失敗してたらあとでアップするという観点からはあまりおすすめできません。 miniDVのテープでは60分程度となるため、勉強会では確実にテープチェンジが必要になるからです。<br />
で、もろもろ考えると個人的にはLiveShellをおすすめします。金額的に高くついてるように見えるのですが、設定さえしてしまえばつなげてほいと単体で配信できるというのが非常に楽ですし、せっかくの勉強会参加して自分のPCが配信してるので使えない状態なのも悲しいです。わからないことを検索したりツィッター見たりしたいし。<br />
ただ、LiveShellは結構曲者で、ネットワーク接続するのに音声カプラーな感じで設定したりするのと繋がらない場合なんで??となりやすく、慣れるまで面倒です。<br />
このあたりのノウハウは実際にやってみないと説明がつかない所が多いですが、機材選定はこんな感じですね。<br />
あとは音声がらみとか色々あることはあるんですが、それはまた別の機会に。 <br />
なんだかんだで上記に書いた4パターン全部なぜか持ってたりするので、機会があればお貸しすることもできるかもです。<br />
とりあえず、自分にあった勉強会参加しつつ、配信をするというスタイル模索するしかないです。<br />
<ul>
</ul>
</div>wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0tag:blogger.com,1999:blog-6312147378037894640.post-24140193022483716032012-04-09T19:02:00.000+09:002012-04-09T19:20:03.343+09:00Perfumeのモーションデータを地図上に置いてみた<a href="http://www.perfume-global.com/">http://www.perfume-global.com/</a> で配布されてるBVHとSOUNDデータで何かできないかとやってみた。<br />
<br />
<h2>
できたもの</h2>
Perfume Maps<br />
<a href="http://wakasa.org/project/perfumemaps/" target="_blank">http://wakasa.org/project/perfumemaps/</a><br />
<br />
※いきなり音が出るよ。<br />
※Chrome推奨。限定はしないけどChromeで見て欲しい。音量に応じて動画のサイズが変わるのはChromeだけ。IEは動かないのは仕様。<br />
※CPUすごく使うよ。ファン回るよ。<br />
※地図のズームアウトはマウスホイールで残してあるよ。点線を引きでみたりするとき用に。<br />
※読み込むたびに動画や場所が変わるよ。場所Perfumeがコンサートで使ったことある会場にしてるよ。<br />
<br />
何がしたいの?って聞かれたら、そこに地図などのAPIがあるからさ。としか言えません。<br />
<br />
<h2>
使ったAPI</h2>
<div>
<ul>
<li>Web Audio API (Chrome) or Audio (FireFox)</li>
<li>Google Maps API<br /><span style="font-family: monospace; white-space: pre-wrap;">+ <a href="http://maps.stamen.com/" target="_blank">maps.stamen.com</a> Data By <a href="http://www.openstreetmap.org/" target="_blank">OpenStreetMaps</a></span></li>
<li>Google Geocoding API</li>
<li>Youtube Player API</li>
</ul>
<div>
あとはjQuery使ったりjsで簡易BVHデータ解析とかもろもろ組み込んでます。<br />
iPhone対応は最初考えたけど疲れてやめたよ。すいません。</div>
<div>
<br /></div>
<div>
開発を CoffeeScript でやってみました。</div>
</div>
<div>
触ったこともありません。いきなり作つくるものがコレなのか?初めてなのに。<br />
そもそもWebAudioAPIなんていうハイテクなAPIも触れたこともありませんがね。<br />
厳しい戦いだった・・。</div>
<div>
<br />
とりあえず、CoffeeScriptをそれなりに触ってみましたが、インデントもコードなので、</div>
<div>
・人のソースをコピペで組み込む手抜きはダメ。インデントきっちりやってね。</div>
<div>
・エディタでコメントアウトして戻したらスペース入ってエラーってひどいよ・・。</div>
<div>
とか悲しい事が多すぎました。</div>
<div>
便利なんだけどね。</div>
<div>
<br /></div>
<div>
紆余曲折があって最初に考えてたものとはまったく別のコンテンツになったので、基本コードはスパゲティ状態です。</div>
<div>
そしてAPIが多すぎてロードタイミングとかきっちり設計してないのでたまに動きません。</div>
<div>
そのときはキャッシュに貯めてリロードです(恥<br />
<br />
内容に関しては気分が乗ったら解説することにします。ハイ。</div>wkshttp://www.blogger.com/profile/04081767756029722690noreply@blogger.com0