愛と勇気と缶ビール

ふしぎとぼくらはなにをしたらよいか

JavaScript

クライアントサイドとサーバサイドのvalidationを共通化する(未遂)

http://d.hatena.ne.jp/antipop/20111101/1320164459これを見て、「JSでHTML5 form validationのruleをDOMから引っこ抜いて、JSON schema ( http://tools.ietf.org/html/draft-zyp-json-schema-03 ) に変換して、それをsubmitの直前にtype="text"なinputとか…

Android4.0にはHTML5 History APIが実装されていない

(※このエントリーは、「Androidのブラウザは本当のクソAdvent Calendar」の一日目の記事として書いています)12/2に発売予定のGalaxy Nexusにも搭載される予定のAndroid4.0ですが、なんと標準ブラウザにHTML5 history APIが「実装されていません」。2.2系、…

location.host部分だけを置き換えて、そっくり同じURLを新しいタブで開くためのVimperatorプラギン

Webサイトをつくっていると、だいたい最低でも * 本番環境 * 開発環境の2つくらいは環境があって、当然ながらどちらも別のホスト名で参照しているとおもうのだけど、開発とかテストの際に「このURLを開発環境のhostで開きたい!」とか「このURLを手元のVMの…

本当はそれなりに面倒くさいJavaScriptとhistoryとAjaxのお話

口上 historyとAjaxといえば、JavaScriptからある程度任意でhistoryのエントリをpushできるhistory.pushStateとか、history.replaceStateは既に大分有名になった感がある。素晴らしい未来では、全てのブラウザにpushStateが乗っていて「location.hashを使っ…

Webページに適当な個人的メモ書きを残すためのブックマークレット

YAPC::Asia 2011のタイムテーブル (http://yapcasia.org/2011/timetable.html) に、「みる」「絶対みる」「まあ見る」とかそういう個人的なメモ書きを残したかったのでつくった。http://dl.dropbox.com/u/439702/bookmarklet/memomo.htmlダブルクリックでそ…

Firebugのinspect用hint, contenteditable hint

特定の要素をFirebugでinspectしたい時に、いちいちその要素をマウスでクリッコするのがめんどくさいからつくった。 " firebug inspect mode hint js <

iPhone, Androidでの日本語入力監視メモ

DOM Level3で規定されているComposition Eventを使うと、IMEの入力開始 -> compositionstart, IMEで文字追加,変換 -> compositionupdate, IMEで変換確定 -> compositionend, という風にIMEによる英語以外の文字の入力をイベントとして受け取ることが出来るこ…

うんたらかんたら

プロファイラ(関数単位で出るやつ)でパフォーマンス測りたいときに、長い関数があると分かりにくくなっちゃうから function myLongFunction() { ... (function doAPartOfTheWork() { ... })(); ... } ってする、っていうのがHTML5 Rocksの記事に書いてあっ…

やったーJavaScriptの動くMySQLできたよー

※ネタです ※UDFです Mysql 5.1 Plugin Development作者: Andrew Hutchings,Sergei Golubchik出版社/メーカー: Packt Publishing発売日: 2010/08/30メディア: ペーパーバック購入: 1人 クリック: 45回この商品を含むブログ (2件) を見る しばらく積ん読してい…

Aardwolfにみるブラウザに頼らないブレークポイントの実装

weinreっていう、iPhoneやらAndroidやらの実機(別に実機じゃなくてもいいんだけど)で見ているWeb画面のJavaScriptをリモートdebugできるツールがあって、これは割と有名。http://alpha.mixi.co.jp/blog/?p=3248有名なんだけど、試してみると普通にブレーク…

あれやらこれやら

(前略)Log::HandyからData::UtilとClass::Loadへの依存を消した。Data::Utilは自動dumpしたいもの(scalar値)と自動dumpしたくないものの区別にのみ使っていたんだけど、会社で審議した結果「全てdumperに食わせればよくね?」ってことに。また、Class::L…

結局Jasmineで非同期のテストを書く場合にはどうするのがcoolなの…

waits(500)とかあんまりだし、でも調べてもなんかみつかんないので誰か教えて下さい...

JavaScriptが100ms以上実行されてると怒られるようにする

http://www.slideshare.net/nzakas/high-performance-javascript-2011わかりやすいスライドだなー、と思いつつ。1つのJavaScript job(わかりにくい表現だけど、event handlerとかtimerからキックされるJS code)の実行は目安として100ms以下に抑えましょう…

iPhone/Androidにタッチ!

stats.js (https://github.com/mrdoob/stats.js) という、JavaScriptでfpsもどきの値を出すライブラリをiPhone/Androidで試していた時に気づいたんだけど、iPhone/AndroidのWebKitではデフォルトのスクロール中はsetIntervalの監視が無効になっているっぽい…

iPhoneをhtmlなプレゼンのリモコンにするための何か

会社でid:gfxさんがWebSocketを使って夢が広がるエクストリームなプレゼンをしてくれたので、海外の空気を読まずに作ってみました。https://github.com/zentooo/SkyWalk端的に言うと、Socket.IOを通じてリモコンとなるiPhone/Android(?) のブラウザでキャッ…

なぜGoogle Closure LibraryがDOMContentLoaded相当を待つための機能を提供してないかっていう話

あれ、これ前に書いたっけ。http://groups.google.com/group/closure-library-discuss/browse_thread/thread/1beecbb5d6afcb41?pli=1http://stackoverflow.com/questions/2024018/using-domcontentready-considered-anti-pattern-by-google/2024101#2024101 …

iPhone/Android向けのselector-based libraryを実装しての色々(3) - pluginとかtestとかdocumentとか

前回の続き。 plugin機構とか Riddle.jsにはplugin機構があります、と書くとなんだかカッコよさげに聞こえるが、それは結局外部にエクスポートされているシンボルのうち2つ(rとr.fn)に関数を生やすとpluginっぽいことが出来ますよ、というだけの話にすぎな…

iPhone/Android向けのselector-based libraryを実装しての色々(2) - 実装編

前回はほとんどライブラリの紹介しか書いてなかったので、今回の内容は得られた少々の知見とか実装中に考えてたこととかです。 環境を限って、ある程度の割り切りを行えばselector-basedなオレオレライブラリを書くのは大して難しくない、ということ どこま…

iPhone/Android向けのselector-based libraryを実装しての色々(1)

selector-based libraryってまず何やねん、って話ですが、いわゆる$("#id")みたいにcssセレクタでelementをモリっと引っ張ってきて、そのwrapされたelement集合に生えてる関数でいろいろやることがメインの目的とされてるJavaScriptライブラリのことを僕はそ…

localStorageとかsessionStorageとかのアレ

現状のlocalStorageとかsessionStorageは、valueとして文字列しかsetできない実装ばかりなので、アプリで使うならsetする時にJSON.stringifyして、getする時にJSON.parseするようなラッパーを書かないと無理とまでは言わないがめんどくさい。また、 localSto…

JavaScriptでEventまわりのコードをテストする時のアレ

addEventListenerのラッパとか、書くじゃないですか。iPhoneやAndroidでswipe event的なものを用意するために、DOMContentLoaded呼ばれたときにbindしておいてevent delegation使ってほむほむするコードも書くじゃないですか。で、そいつらをテストするコー…

JavaScriptのお勉強をするときの話(環境構築編)

この記事は、JavaScriptを勉強して可能なら使えるようになりたいけど、どこからやっていいかよくわからない、という昔の僕みたいな人のためのガイドです。ちなみにいささかCUI寄りです。初めに断っておきたいのは、僕が多少なりとも真面目にJavaScriptを勉強…

Node.jsひみつの花園、readline module

Nodeの公式docにはだいたいの標準モジュールのドキュメントがそろっているのだけど、なぜかreadlineという名前のモジュールだけはundocumented。-> http://nodejs.org/docs/v0.4.4/api/readline.html中身としては、readlineのない環境(?)で簡易なGNU Read…

Delicious BookmarksのFirefox4.0対応、というか主にVimperator3.0対応まとめ

べ、別にFirefox4.0がリリースされたからこんな記事書いてるんじゃないんだからねっ!あんたのことなんて待ってないし、今頃迎えに来てくれたってちっとも嬉しくないんだから!バカ!バカ! とりあえずadd-on本体をぶっ込む それはさておき、僕はDelicious B…

Replica - terminalのreplからブラウザ上のJavaScriptを実行する

マクラ このまえ会社でちょっと特殊なJavaScript replを作ったのだけど、もうちょっと汎用的なものを作ってみたかったのでNodeで書いたっていうお話。Nodeで書くこと自体にあまり深い意味はないんですが、Socket.IO使えばcross-browser/cross-originでのpush…

JavaScriptのテストについて本気出して考えてみた(2)

前回からの続きで。 DOMエミュレーションの戦略 一方で、本物のブラウザを使わずに何らかのJavaScript実行環境でDOMをエミュレートして、その上でテストを走らせよう、という戦略もある。この分野の大御所はEnv.js(http://www.envjs.com/)ということになって…

JavaScriptのテストについて本気出して考えてみた(1)

一週間のうちまる一日くらいは、「あーあのJavaScriptコードのテストってどうするのがいいかしら?」と考えている。嘘です。多分45分くらい。考えている時間の長さはどうでもいいんだけど、JavaScriptのテストは場合によっては中々ややこしい問題に成り得る…

githubのアレ(history.replaceStateとかhistory.pushStateの話)

会社で下の記事についてリマインドしてもらって、なんとなく気になっていたことを調べたメモ。http://webtech-walker.com/archive/2010/12/06160539.html記事を読んで、history.replaceState(null, "title", "/new.html") とかやると遷移なしでページのconte…

jQueryで複数の要素が返ってくるセレクタの結果セットにget系の関数を適用する場合の返り値

割と常識的な話かもしれないけど 例えば、 (function($) { $(".hoge").attr("name", "hoge"); })(jQuery); という風に書くと、内部的にループが回ってhogeクラスが指定されているelement全てのnameを"hoge"にできる、というのは割と知られた話である。じゃあ…

Shindigのwave featureで実現する簡単なお絵かきチャット feat. node.js and Socket.IO

タイトル書いてから気づいたけど、別にチャット機能とかなかった。 http://d.hatena.ne.jp/zentoo/20100821/1282407303 以前に書いた↑のエントリでは、Shindigのextrasに入ってるwave featureを調べてみて、「あーこれShared Stateはコンテナ側で何とかして…