タグ

JavaScriptとJavascriptに関するf99aqのブックマーク (293)

  • エントリ通知で既読の物を分かりやすくするGM書いた - 日向夏特殊応援部隊

    詳しくは、http://coderepos.org/share/wiki/iknow_hackからどうぞ。 ちなみにこんな感じになるよ 作ってて悩んだところ visitedって素のJSじゃ判別出来ないので次のようにしました。 visitedにスタイルを当てる *** GM_addStyle(<><![CDATA[ li.new_diary_entry a:visited { position: relative; } ]]></>); getComputedStyleで判別 (getComputedStyle(element, null).getPropertyValue("position") == "relative"); みたいに今回は判別した。 id:brazilさんのLDR Dedupe Entriesってuser.js*1を参考にしました。 *1:Trac記法になってた。。。

    エントリ通知で既読の物を分かりやすくするGM書いた - 日向夏特殊応援部隊
  • Javascript で実装した Ruby インタプリタ JSRuby 0.1 リリースしました。 (nakatani @ cybozu labs)

    « MyMiniCity 日語化 | メイン | JSRuby から jQuery を使う ( Javascript 連携 ) » Javascript で実装した Ruby インタプリタ JSRuby 0.1 リリースしました。 あけましておめでとうございます。 1月からサイボウズ・ラボのオフィスが引っ越しました。新年から気分も新しくぶりぶり仕事します。よろしくです。 というわけでちょっとずつ作っていました Javascript で実装した Ruby インタプリタの "JSRuby" を一区切り付けるべくバージョン番号を付けてリリースしました。 JSRuby Project Page (CodeRepos) http://coderepos.org/share/wiki/JSRuby JSRuby Test Page https://labs.cybozu.co.jp/blog/nak

    f99aq
    f99aq 2008/01/14
    すげー
  • JavaScript の変数と delete 演算子: Days on the Moon

    Kanasan.JS JavaScript 第 5 版読書会 #1 にて delete 演算子の動作が話題に上ったそうです。そこで、それについてちょっとまとめてみようかと思い立ったはいいものの、ずるずると引き伸ばしているうちに年を越してしました。しかし、読書会 #2 の開催も決まり、もうこれ以上引き伸ばしているといつまでたっても書けなさそうなので、いい加減腹をくくって個人的にまとめてみようと思います。 JavaScript の変数 delete 演算子の対象 変数に対する delete 演算子 削除できるプロパティとできないプロパティ 変数の属性 delete 演算子の返り値 JavaScript の変数 delete 演算子の話に移る前に、変数とは何なのかおさらいしておきましょう。JavaScript において、変数とはプロパティの別名です。といっても、すべてのプロパティを変数というわけ

  • 2007-10-13 - 技術日記@kiwanami JavaScriptで b-tree

    導入 ある日突然、JavaScript上で高速に追加・削除が行えて爆速で最小値を検索できる入れ物が欲しくなった。 普通(JavaとかFORTRANとか)ならここで素直に b-tree の実装に入るのだけども、JavaScriptは例によって変態言語なので、実は面倒なことせずにArrayに普通に入れて、素直にソートとか線形探索したほうが速いのかもしれないという疑問を持った。 しかも「最近全然技術日記してない」という突込みが入り、ついカッとなってベンチマークをとってみた。*1 調べ方 以下の3つの入れ物を実装。適当な実装を探してみたが、あまりいいものが無かったので車輪の再実装。 BTree 素直にb-treeを実装。速度よりは読み書きしやすさ優先。スペック通りなら、追加・削除、値の探索が高速。 SortedList 配列を常にソートしておいてb-searchで値探索、spliceで追加・削除。

    2007-10-13 - 技術日記@kiwanami JavaScriptで b-tree
  • iandeth. - Javascriptで快適・お手軽OOP - オレ的まとめ

    Javascriptでオブジェクト指向なコードを書くには、prototypeベースな言語ゆえ、他のOO言語と異なり多少の小細工が必要になります。やり方は幾つもあるようですが、自分であれこれ試してみたうえでのまとめをここで共有してみます。 OOPと言っても、あくまで個人的に最低限必要だと思うこれら機能の実現を目的にしています: 子クラスのコンストラクタにて、親のコンストラクタを実行 他のOO言語では空気を吸うがごとく実装されている機能 メソッドの継承 Child.prototype = new Parent() なんて親インスタンスを作る事無くなんとかする これらをいかに少ない手間で実現できるか。hacker諸氏ならばちょろっと頭使えばできるのでしょうが、自分はウダウダ時間かけて悩んでしまいました orz。以下3通りの解決策です。 目次 専用のextend関数を使う 使い方 サンプルおよびテ

  • Life is beautiful: Javascript、クロージャを使ったプライベート関数の隠蔽について

    (このエントリーは「Javascriptクイズ:無名関数と実行効率の話」の続編。) 「???」と頭をかしげる太郎に、「じゃあ、これだったらどうかな?」と三郎はコードを書き始めます。 function code2name(code) { var mapping = { 'us': 'United States', 'ja': 'Japan', 'ko': 'Korea', 'ru': 'Russa', 'uk': 'United Kingdom', 'fr': 'France', 'cc': 'China', 'gw': 'Germany' }; return mapping[code] || '(unknown)'; } 「カントリーコードを国名に変換しているんですね。」と太郎。 「どこが問題だか分かる?」 「うーん、マッピングのためのオブジェクトを毎回作り直しているところかな。」 「そう

  • スライドするUIを実現するiSlider.js

    iAnime.jsのテスト用に作っていたスライドするUI。書いているうちにライブラリ化したくなったので、これもやはりMITライセンスとしてオープンソース化(Google Code iAnimejsよりダウンロード化)。たて・よこ・ななめ、自由にスライドさせることができることが特徴。"easein", "bounce"などのエフェクトも利用可能。 まずはごく基的なカード型のUIで横にスライドするもの。 こんどは同じコンテンツを縦にスライドさせるもの。アコーディオンUIと呼ばれることもある。エフェクトに"bounce"を使っている点に注目。 軽いのでiPhone/iPod touchでもサクサクと動くのが特徴。

  • Kanasan.JS #2 レポート & 資料: Days on the Moon

    関西での JavaScript 勉強会、Kanasan.JS #2 に行ってきました。今回は 9 時から 21 時という長丁場で、内容は前回に引き続き Prototype.js のコードリーディング。ただし、前回はバージョン 1.5.1.1 だったのが今回からは 1.6.0 を使用ということで、コードリーディングに先駆けて 1.6.0 での変更点に関するプレゼンテーションをやらせていただきました。他の参加者の方々のレポートなどは Kanasan さんの記事経由で読めるかと思います。 フリートーク 午前中はフリートーク及びプレゼンテーションということで、自己紹介の後雑多な話題に。 リファレンス どんな参考文書を利用しているかという話題。とりあえずググって出てきたページという方が結構いるようです。私も検索エンジンを使ったりもしますが、特定のサイトだとこんな感じです。 コア言語 ECMAScri

  • 数値をカンマ区切りにする: Days on the Moon

    JavaScript で数値を 3 桁ごとにカンマで区切るお話。「comma separation by javascript - さらさら宇宙忍法帖」にいろいろまとまっている。 ここでの基的な方針としては 1 回の文字列置換で終わらせること。元のコードは Perlメモの「数字を 3桁ごとにコンマで区切る」。でも小数への対応を考えると 1 回では無理っぽかったので、小数点が含まれる場合は文字列を分割して処理することに。というわけでいきなり結論。 Number.prototype.toDeliminated = function () { var string = "" + +this; var pointIndex = string.indexOf("."); return (pointIndex == -1) ? string.replace(/(\d{1,3})(?=(?:\d\d\

  • JSONアニメーション言語の並列実行機能について

    一つ前のエントリーで紹介したJavascript上のアニメーション記述言語(格好良い名前募集中^^)。先の例は単に上から順番に実行するだけであったが、それだけでは1度に一つのオブジェクトしか動かすことができず、表現力に乏しい。より複雑なアニメーションを実現するには、複数のオブジェクトに別々の動作を同時にさせることができなければだめだし、記述言語もそれをサポートしていなければならない。 そこで試しに実装してみたのが、シーケンスの入れ子構造による並行処理の記述。けっこうすごいことができてしまうのだが、実装は意外にあっさりとできてしまったので(Javascriptで数行)自分でも少し驚いている。 ちなみに、動作A, B, C, D, Eを順番に実行させる場合には、先の例のように、 [A, B, C, D, E] と書けば良い。これはすなわち、「Aが終わったらB、Bが終わったらC、...」という意

  • Google Code Archive - Long-term storage for Google Code Project Hosting.

    Code Archive Skip to content Google About Google Privacy Terms

  • JavaScript でブロックスコープを実現する: Days on the Moon

    JavaScript には基的にブロックスコープというものが存在しない。どうしてもブロックスコープを扱いたいときは function 式を使ったりする。 var a = 10; { var a = 20; print(a); // 20 } print(a); // 20 var a = 10; (function () { var a = 20; print(a); // 20 })(); print(a); // 10 だがやはりブロックスコープがあったほうが便利ということで JavaScript 1.7 では let 式、let 文、let 宣言が導入される。 var a = 10; let (a = 20) { print(a); // 20 } print(a); // 10 しかしこれでは対応するブラウザが Firefox 2 以降などに限られる。ところが、with 文とオブ

  • 最速インターフェース研究会 :: JavaScriptにおけるdeep clone

    http://blog.livedoor.jp/dankogai/archives/50957890.html まず、Object.prototypeにメソッドを生やしてしまうとfor inでキーを列挙するときにいちいちhasOwnPropertyを使わないといけなくなるので普通は使いません。影響が大きすぎるので、よっぽど変態的なライブラリじゃないと使わない。他のライブラリと組み合わせるとほぼ確実に問題が起きる。それから、deep_cloneが欲しい場合はJSONを作ってevalすればよい。パフォーマンスを気にする場合とか、浅いコピーが必要な場合はそれなりに工夫する必要があるけど。 で、JSONにするのにFirefoxだとtoSourceというのが使える。unevalというラッパーがあって、これだとnullでも平気。 http://subtech.g.hatena.ne.jp/cho45/

  • MochiKit.Async.Deferredで非同期処理の同期処理を直感的に書く « ku

    LDRize minibuffer reblog commandは中身の95%がTumblrにポストするJSActionsスクリプト、2007/6/10版 - 実用で出来ていて、今後のメンテナンス性(というかいかに自分は何もしないかという意味だけど)を考えるとTomblooのコードベースに移行しないといけないのでTomblooのコードを読みました。0.0.9のやつです。 Tombloo、0.0.7 - 実用に15日かけてリファクリタングしたと書かれていますが、読んで感動。ShareOnTumblrのときは大きく変わって各サービスをみんなおんなじインターフェイスでtumblrにpostできるような抽象化層が作られていて、ぜんぶ extract -> post っていうメソッド呼び出しで完結するようになってました。readしてwriteすれば実体がなんであろうと読めて書けるみたいなかんじです。

  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • ianime.js v0.20、ようやくIEにも対応

    iPhone用に作り始めたアニメーション・ライブラリianime.js。いつかはIEでも動く様にしなければならないと知りつつ避けていたのだが、やはりこれではいかんとIEもサポートするために大改造。結局のところ、canvasの使用をやめ、DOMを直接操作することによりアニメーションを実現することにした。canvasを使うのと比べて若干遅いが、結果的にはかなりコードサイズを削ることができたので、まあ良かろう。 しかし、この手のライブラリを市場に出回っているすべてのブラウザで動く様に保つためには相当な手間がかかると思うんだが、皆どうやってテストしているんだろう。だからこそ他の人たちから協力を得やすいオープンソースなアプローチが必要という考えもあるが。 ◇ ◇ ◇ ◇ ちなみに、今回のデモはこれ。同じ種類のアイコンと隣り合っているアイコンをクリックすることにより消すことができる。だいぶゲームっぽく

  • とてもシンプルに自分自身が属する script 要素を取得 - IT戦記

    グローバル領域に以下の一行を書く <script> var currentScript = (function (e) { if(e.nodeName.toLowerCase() == 'script') return e; return arguments.callee(e.lastChild) })(document); alert(currentScript); </script>こうすることで、currentScript はこの script 要素を指す。 いちおう説明 DOM は構築されるときに、上から順番に構築される。そして、script タグがあると、 script 要素を構築したあとに、スクリプトを実行する。 つまり、スクリプトが実行されたとき script 要素は今まさに作られたばかりであり、それよりも後ろの要素が存在しない。さらにこの script 要素を含むすべての要

    とてもシンプルに自分自身が属する script 要素を取得 - IT戦記
  • NameBright - Coming Soon

    urielkatz.com is coming soon This domain is managed at

    NameBright - Coming Soon
    f99aq
    f99aq 2007/11/23
    O/R mapper
  • 高反発マットレスの選び方 | アフィブログに騙されない為の高反発マットレス手記

    ウレタン系高反発マットレスでよく言及されるのが密度です。それを頑張って分かりやすく説明してみます。

  • Components.utils.evalInSandbox で window オブジェクトのメソッドを使う - サバニFRP

    greasemonkey で使われているテクニック。sandBox グローバルオブジェクトのプロトタイプチェーンに XPCNativeWrapper で包んだ window オブジェクトをセットしている。 var script = "alert('Hello World');" var safeWindow = new XPCNativeWrapper(window); var sandbox = new Components.utils.Sandbox(safeWindow); sandbox.__proto__ = safeWindow; Components.utils.evalInSandbox(script, sandbox);