はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
JavaScriptタップした時間間隔でキーをリピートするのを作ってみた、keyTapper。デモビデオ(22秒)、右に四角が増えていくのはリピート、行が増えるのはタップ、数字はリピート間隔。 わかりづらいけど、実際にデモ(Firefox用)をやってみるとわかる。[J]キーを何度かタップして...、押しっぱなしする。トントントン、ツーーーーーーーパッって感じ。 keyTapper Demo 僕が問題に思っていたのは、キーリピート速度が速すぎることと、キー押下回数が多すぎること。例えば、LDRで、[J]を押しっぱなしにすると速すぎて読めない、でも一日2000エントリで2000回キーを押すのもつらい。[J]を押していって、その速度のまま進んで欲しいと思ったところで、押しっぱなしにするような使い方で考えてる。YHCとかStroboは、見るモード/受動の時間が長いから、リピートがトグルでも良かった
A crude JavaScript implementation of the first stage of Super Mario Brothers has been making the rounds today. It’s roughly playable but misses many key aspects (no mushrooms, no flag, no one-ups, etc.). However, that’s not what’s particularly interesting about the game. Perhaps the most interesting part of the application is not within the game mechanics itself but in the fact that all of the gam
new は予約語なので、代わりにneoで*1 Function.prototype.neo =function(){ var obj={}; obj.__proto__ = this.prototype; var ret = this.apply(obj,arguments); if( ret && typeof(ret)=='object' ){ delete obj; obj = ret; } return obj; }ふむ… obj={} は obj= new Object なので「実装する」と偉そうに言ったわりにアレだが、別に実装が目的ではなくてJavascriptのnew(とthis)の動きを理解するためのサンプルだからこれでいいのだ。 プロトタイプチェーン __proto__ をいじれる系(firefoxとか)なら、だいたいうまくいくはず。 // クラス定義のようなもの fun
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
重たい処理があるんだけど、連続して実行したい場合にメイン処理の実行を遅延させて、最後にセットされた処理だけを実行するようなメソッドを書いてみた。例えば、コマンド入力にも使えるかも? 追記:使えそうなケース はてなスターを連打している間はカウントだけして、連打が切れたらPOSTを行うみたいな処理がすっきり書けるはず。たぶん。 var TimeLag = function(){this.initialize();}; TimeLag.prototype ={ initialize:function(ms){ this.ms = ms; this.exe = null; } ,set:function(func,obj){ if (this.exe && !this.exe.complete) { this.exe.cancel(); } return this.later(func,obj);
書き上げた後に元記事の続きが出ているのに気づいたが、方向性が違うようなのでそのまま掲載。 404 Blog Not Found:javascript - プロトタイプ的継承 (元記事: Prototypal Inheritance) より。継承という言葉は意味が広いので、この操作に対してはチャイルドの作成といったほうが個人的にはわかりやすい。 さて、元記事で紹介されているコードではプリミティブ値からのチャイルドの作成 (継承) ができなかった。これはなぜかといえば、オブジェクト作成の際、プリミティブ値をプロトタイプ ([[Prototype]] 内部プロパティ、__proto__ プロパティ) に設定することはできないからである。 そこで、プリミティブ値が渡された場合は、それをラッパオブジェクトに変換することにする。といっても場合分けの必要はない。Object 関数を使えば、プリミティブ値
ウレタン系高反発マットレスでよく言及されるのが密度です。それを頑張って分かりやすく説明してみます。
Kanasan.JS JavaScript 第 5 版読書会 #1 にて delete 演算子の動作が話題に上ったそうです。そこで、それについてちょっとまとめてみようかと思い立ったはいいものの、ずるずると引き伸ばしているうちに年を越してしました。しかし、読書会 #2 の開催も決まり、もうこれ以上引き伸ばしているといつまでたっても書けなさそうなので、いい加減腹をくくって個人的にまとめてみようと思います。 JavaScript の変数 delete 演算子の対象 変数に対する delete 演算子 削除できるプロパティとできないプロパティ 変数の属性 delete 演算子の返り値 JavaScript の変数 delete 演算子の話に移る前に、変数とは何なのかおさらいしておきましょう。JavaScript において、変数とはプロパティの別名です。といっても、すべてのプロパティを変数というわけ
I’ve been doing a lot of work, lately, with JavaScript inheritance – namely for my work-in-progress JavaScript book – and in doing so have examined a number of different JavaScript classical-inheritance-simulating techniques. Out of all the ones that I’ve looked at I think my favorites were the implementations employed by base2 and Prototype. I wanted to go about extracting the soul of these techn
Functional is a library for functional programming in JavaScript. It defines the standard higher-order functions such as map, reduce (aka foldl), and select (aka filter). It also defines functions such as curry, rcurry, and partial for partial function application; and compose, guard, and until for function-level programming. And all these functions accept strings, such as 'x -> x+1', 'x+1', or '+
ここ最近の Scheme プログラミングで得た感覚を踏まえ、各種 JavaScript ライブラリでお馴染みの $ 関数 (ID による要素検索) を、ごく簡易にですが、関数スタイルで実装してみました。 まずは実装を見ていただく前に、このような例を考えてみてください。 $("id").do_something(); ここで、"id" 要素が確実に見つかるかどうかが保証されていない (do_something が失敗するかもしれない) とします。すると、 var o = $("id"); if (o) { o.do_something(); } のように、いちいちテストをしなければいけませんよね。 これが、関数スタイルでは $("id", do_something); と書くだけで済みます。つまり、$ 関数自身が成否のチェックを行い、成功していればコールバック関数にオブジェクトを渡すように設
http://coderepos.org/share/browser/lang/javascript/nobjdb CodeReposに「nobjdb.js」というファイルを追加しました。これは、「syobocalplus」のタイトル検索のルーチンを抜き出し、ライブラリ化したものです。 オブジェクトの集合の中から、文字列検索の結果によって部分集合を抜いてくる処理…… と言うとわかりにくいですが、要するに 購読しているフィードのリストの中をタイトルで検索する(例: LDR) タグクラウドの絞り込み検索(例: はてブ) などという処理です。これを素朴に実装すると for (var i in list) if (list[i].name.indexOf(keyword) >= 0) { // マッチ! } という感じですが、nobjdb.jsでは、ひとつの文字列にタイトルをすべて突っ込んで、 タ
Latest News Fixed Background Remover - GreaseMonkey UserScript 06 Jun, 2009 Fixed Background Remover UserScript disables fixed background anywhere in the page. Changes all fixed background images to normal background image(scrolls with the page). Older News... A Code Study of the Mikeyy Twitter Worm Pointer - JSL Demo Application Crontab Code Generator Waiting Until User Stops Typing to Check the
Today, at SXSW, I hosted a panel discussion on the “Secrets of JavaScript Libraries.” We set out to discuss the behind-the-scenes nitty-gritty code that powers the universal features of the most popular JavaScript libraries. I think the presentation went quite well. I think we could’ve, easily, done a 2 hour talk with all the content that we had (we had to chop off, at least, two sections at the e
関西での JavaScript 勉強会、Kanasan.JS に行ってきた。内容は Prototype.js のコードリーディング (バージョン 1.5.1.1 を使用)。「家に帰ってレポートを書き、主催者のブログにトラックバックを送るまでが勉強会です」と念を押されたので、まもなく Kanasan さんの記事経由で参加者各々の様子をうかがえるようになると思うけど、以下あとから思ったことも加えて私の場合をつらつらと。 JavaScript 概説 & コードリーディング プロトタイプ やはり皆さん一番引っかかるのはここみたい。おそらく、プロトタイプと名のつくものが 2 つあるのが混乱の原因だと思う。 prototype プロパティ 関数 (Function オブジェクト) のみが持つ。その関数をコンストラクタとして使ったときに用いられる。 [[Prototype]] 内部プロパティ すべてのオ
関数を非同期化する関数を作ってみた。 Function.prototype.asynchronize = function() { var f = this; return function() { var resultcb = function() {}; var failcb = function(e) { throw e }; if (typeof arguments[arguments.length - 1] == 'function') { resultcb = Array.prototype.pop.apply(arguments); if (typeof arguments[arguments.length - 1] == 'function') { failcb = Array.prototype.pop.apply(arguments); } } try { var re
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く