タグ

javascriptに関するques9のブックマーク (245)

  • 最速インターフェース研究会 :: 実践JavaScriptで配列をシャッフルする方法リファクタリング

    JavaScriptで配列をシャッフルする話を見て、そういえばArray#shuffleは以前書いた記憶があるなーと思って調べてみたらコピペだった。 http://www.fumiononaka.com/TechNotes/Flash/FN0212002.html Fisher-Yatesというアルゴリズムだそうです。 Array.prototype.shuffle = function() { var i = this.length; while(i){ var j = Math.floor(Math.random()*i); var t = this[--i]; this[i] = this[j]; this[j] = t; } return this; } a = [1,2,3,4,5]; a.shuffle() // 3,1,5,2,4 a // 3,1,5,2,4 ごく普通に実装

  • JavaScriptで配列をシャッフル

    配列をシャッフル、つまりランダムに要素の位置を入れ替えるというのを、sortメソッドを使ってやってみたのだけど、明らかにダメダメなものになってしまった。その後、あーでもないこーでもないと考えたのだけど、算数が得意すぎて頭が痛くなった。ということを某所でぼやいたらはてのくんがコードを見つけてくれた。どうやらFisher-Yatesという有名なアルゴリズムでやると良いらしい。 最初に書いたコードは、 var a = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9); a.sort( function (a, b) { return Math.ceil(Math.random() * 3) - 2; } ); というもの。sortメソッドは、パラメータに与えられた関数が負の値・0・正の値を返すことによって要素の順序を決定するので、その関数がランダムに値を返せばランダ

    JavaScriptで配列をシャッフル
  • JavaScriptソースを整形して表示するGreaseMonkeyスクリプト、外部スクリプトのキャッシュ - 実用

    JavaScriptsubtechグループ - マングローブ - VoxのTemplateクラス できちゃったGreaseMonkeyスクリプト!!そのページで利用されているJavaScriptをフォーマットと色付けを行い表示します。 ShowColorizedSource.user.js Web Developer拡張の[JavaScriptを表示する]機能をより見やすくしたものです。色の抽出と同じく、Web Developerのinformation.jsから多くをコピーして作りました。 以下はGoogleの検索結果で実行したイメージです。 調査したいページを表示し[ツール]-[User Script Commands]-[Show Colorized Source]をクリックすると、ページ内容が消えて、スクリプト一覧が表示されます。各スクリプトのタイトルをクリックすると、整形されたソ

  • [暴満館] JavaScriptによるCSSの操作

    またFirefoxは短縮形で取得しようとすると、設定していないプロパティにデフォルト値が入った状態で返ってくるので注意する。 getStyleValue( "div.hoge", "background" ) //Mozilla : rgb(17, 34, 51) none repeat scroll 0% 0% ルールを削除する function deleteRule( index, sheetindex ) { if( sheetindex == undefined ) sheetindex = 0; document.styleSheets[ sheetindex ].deleteRule( index ); } 全てのルールにはインデックスが振られており、それを指定することでルールから消すことができる。 ただ、同じセレクタで上書きするのとほとんど変わらないので、あまり必要にならない

  • JavaScript Lint - JavaScriptの文法をチェックするソフトウェア - memo.xight.org

    Summary JavaScriptの文法をチェックするソフトウェア. JavaScript Lint が検出する一般的な誤り o 行末にセミコロンが無い行 o ifやfor,while等のないところにあるブレース("{}")など o returnやthrow,continueやbreakによって,実行されることが無くなってしまっているコード o break文が無いcase文 o 数値の前や後についている小数点 o A leading zero that turns a number into octal (base 8).(?) o コメント内にあるコメント o Ambiguity whether two adjacent lines are part of the same statement. o 一つの文なのかそうじゃないのか分からない,繋がった文 o 何もしていない文 JavaS

  • Chart Usage (WebFX)

    To use the Chart widget the chart.js, canvaschartpainter.js and canvaschart.css files needs to be included. Furthermore for IE support the excanvas.js files needs to be included. <script type="text/javascript" src="includes/excanvas.js"></script> <script type="text/javascript" src="includes/chart.js"></script> <script type="text/javascript" src="includes/canvaschartpainter.js"></script> <link rel=

  • JavaScript 1.7 の新機能: Days on the Moon

    Firefox 2 の新機能の一つに JavaScript 1.7 への対応がある。Firefox 2 Beta 2 のリリースも近づき JavaScript 1.7 の新機能もほとんどが実装されてきたのでここにまとめてみる。といっても New in JavaScript 1.7 に大体はまとまっているので補足的な部分など。 識別子の扱い ブロックスコープ 分割代入 イテレータ ジェネレータ 配列内包 参考 なお、ブラウザ上でスクリプトを実行する場合は、JavaScript のバージョンを明記しないと let 、yield がキーワードとして認識されない (Bug 351515) 。 <script type="text/javascript; version=1.7"> JavaScript shell を使う場合は起動時にバージョンを指定するか version 関数を使う。 $ js

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

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

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • JavaScript 1.7 の yield が凄すぎる件について(続き) - IT戦記

    d:id:amachang:20060805 の例ではちょっと説得力が無かったので もうひとつ例を書いてみました。 Firefox 2 beta 1 など(JavaScript 1.7 対応環境)で見てください http://sample.ecmascript.jp/s17-2.html 今回の例のポイント 繰り返し部分の実装 run: function() { this.setOpacity(0); while (this.setOpacityBy(0.01) < 1) yield; while (this.moveBy(-2) > 20) yield; while (this.setOpacityBy(-0.01) > 0) yield; },たったこれだけで、アニメーションが実装できるのだ。 副産物とはいえ、これは便利ではないだろうか。

    JavaScript 1.7 の yield が凄すぎる件について(続き) - IT戦記
  • Collection & Copy - 複数行の文字列

    複数行の文字列 JavaScript Javascript Boot Camp Tutorial \を行端に置くことで、文字列を複数行に分けて記述できることを知った。 IE、Forefox、Operaで確認をした。 alert("<html>\ <body>\ <div>\ </div>\ </body>\ </html>"); 文字列リテラル (String Literals) ECMA Scriptの仕様を読んでも難しく、このことが記述されているのか否か判断ができない。 『JavaScript』の文字列リテラルの項を読み直してみたが記述は見当たらず、これまで色々なコードを読んだが利用されている例に会わなかった。 追記 2006/8/7 nanto_viさんから、詳細な情報をコメントで頂きました。 こちらへ転載させていただきます。 いつも、いつも、当にありがとうございます。 nanto

  • Latest topics JavaScript 1.7のyield文ってなんじゃらほ - outsider reflex

    Latest topics > JavaScript 1.7のyield文ってなんじゃらほ 宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行まんがでわかるLinux シス管系女子の試し読みが可能! « mod_estraierでの履歴全文検索(ミラー) Main 年金の追納 » JavaScript 1.7のyield文ってなんじゃらほ - Aug 07, 2006 JavaScript 1.7 の yield が凄すぎる件についてを見てもyieldってそもそも何なのかちいとも分かっとらんかったのでそこから調べてみた。 yieldはreturnの仲間? そもそもこのyield文というのは、JavaScriptと同じくスクリプト言語のPythonから持ち込まれた仕組みらしい。ジェネレータとは何ぞやで読める例を

  • Javascript Speed Tests - FAX

    Javascript Speed Tests Javascript (via JavaScriptを最速で実行できるブラウザはどれ? - GIGAZINE) Opera 9IE 6(SP2)Firefox 1.5 Try/Catch with errors1090271 Layer movement130351140 Random number engine15060140 Math engine80120541 DOM speed30261200 Array functions7030120 String functions401060 Ajax declaration30300381 Total 540ms1222ms1853ms テスト内容、DOMだとこんな具合。 var startTime = new Date() ; for( var i = 0; i <= 1000; i++

  • 最速インターフェース研究会 :: IEの遠隔操作用ライブラリmechanize.js

    先日のShibuya.js Techtalk#2では開発手法の話とかは(前回話したので)あまりしなかったのですが、そういう話を知りたいという人も多いようなので適当に公開していこうと思います。 http://la.ma.la/misc/js/mechanize/ WWW::Mechanizeと似たインターフェースでIEを遠隔操作するライブラリです。htaから呼び出してテスト用のツールを作ったりします。wshからも使えると思います。 機能的には最低限のものしか実装してません。ファイルのアップロードとかはJS側からいじれなかったと思うので多分無理です。 この手のツールではseleniumというのが有名なのですが、多機能すぎて使い方が良くわからないので自作しました。単純な動作確認や連投に使ったりします。 これを使ってアレをナニしたりしているのですがとてもここには書けません。

  • AJAJA - Trac

    昔はサラ金とかキャッシングのCMも多くて広告も多かったんですけれども、今はすこしずつ減っているような印象を受けますね。昔はもうちょっと多かったと言うよりも、そればっかり流れていた時があったように思います。あの頃は内容もよくわからなくて、別に貸金業者だということがわからなくてもいい、というような意識で作られていたんじゃないか?と思うようなCMが多かったです。インパクトやPRには良かったと思います。 今は逆にこういったキャッシングなどのCMはあるにはあるんですけれども、昔よりも減ったように思います。車内広告などもそうですし、少なくなりつつあります。その代わりに増えているのが過払い請求をするための法律事務所の広告でしょう。元々こういうものは一切見たことがなかったですし、そもそも法律事務所の広告なんて言うものを見たことがある人のほうが少ないと思います。それもそのはずでこういった法律事務所や税理士の

  • Safari の JavaScript の不備 Days on the Moon

    ぱっと見はいいんだけど細かいところでちょこちょこ穴があるような気がする Safari (というより Apple WebKit) ですが、どのような穴がいつふさがれてきたのかまとめてみました。最初は JavaScript 関係だけ調べるつもりだったのですが Safari 2.0.3 で setSelectionRange がサポートされたというのを聞いたのでそっちのほうも少し。ただし、手元に Mac 環境がないので実際に Safari で試したわけではありません。すべてソースと変更履歴から推測しただけなのでそのつもりで。 下の表で「WebKit」というのはその機能が実装された WebKit の (正式公開) バージョン、「Safari」というのはそのときの Safari のバージョンをあらわしています。「-」はその機能が現時点 (Safari 2.0.3) でも未実装ということです。「-」は

  • 激しく誤差の範囲内の予感 - f99aq8oveのブログ

    追記 safari だと replace に関数を渡せないらしいです。 replace に関数指定しない方が良いよ escapeHTML をぐるぐる回してみた 俺のあれは数年前から停滞してるので、かっこいい人の登場を待ちます。。。 関数そのまま使いましたm(__)m 眠い。 escapeHTML の実装 3 パターン (ベンチマーク付き) - (new Hatena).blog() window.onload = function () { bench(escapeHTML_replace_multi, "replace_multi"); bench(escapeHTML_replace_func_rulescached_regexcached, "replace_func_rulescached_regexcached"); bench(escapeHTML_replace_func_r

    激しく誤差の範囲内の予感 - f99aq8oveのブログ
  • 最速インターフェース研究会 :: Safariでreplace callback のエミュレーション

    replaceメソッドをhackしてsafariでもreplace callbackを使えるようにしてみた。Safari バージョン 2.0.2(416.13)で上手く動いたそうです。手元に環境が無いので細かい検証はできませんが、とりあえず。 http://la.ma.la/misc/js/replace_callback/ 解説JavaScriptのString#replaceメソッドは文字列を置換して新しい文字列を返すメソッドですが、第二引数に置換後の文字列を指定する代わりにfunctionオブジェクトを渡してやると、Perlでいうところのeオプションみたいなことができます。 // 大文字を小文字に、小文字を大文字に String.prototype.swapcase = function(){ return this.replace(/([a-z])|([A-Z])/g,functi

  • escapeHTML の実装 3 パターン (ベンチマーク付き) - (new Hatena).blog()

    ウェブを扱うライブラリやプログラムで必ずと言って良いほど見かけるものに、escapeHTML という関数があります。 "&" 等、特別な意味を持つ文字を、表示等のために実体参照 (&amp;) に変換するお決まりの関数なんですが、実装には色々とバリエーションがあるものです。 1. String#replace メソッドを繰り返す (MochiKit 等) function escapeHTML(str) { return str.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;"); }このパターンが最も多く見受けられます。Ruby でも同様に gsub を繰り返す方式を見かけることがあります (例: RSS::Utils.html_escape)。 2. Str

    escapeHTML の実装 3 パターン (ベンチマーク付き) - (new Hatena).blog()
  • rephrase § js-markdown

    Note: John Fraser has independently created Showdown, a better (and actually working) implementation. Use that instead. This page is kept as an historical curiosity. js-markdown is a partial implementation of Markdown in JavaScript. It is known to produce incorrect output in certain situations, generally involving blocks nested inside lists. blockquotes inside lists fail especially horribly. For s

  • prototype.js just for AJAX – Alex Kirk

    As I stated earlier, the prototype.js library is too large for just using AJAX. In its current version (1.4.0_pre10) it weighs 36KB and contains lots of other features that are most probably not needed when just dealing with AJAX. I have therefore created a smaller version just for AJAX, based on 1.4.0_pre10: pt.ajax.js 8.9K It now has only a quarter of size and still provides some nice features s