タグ

ブックマーク / teramako.hatenadiary.org (15)

  • String repeat のアルゴリズムとパフォーマンス - hogehoge @teramako

    ES6になると、String.prototype.repeatのメソッドが追加されるわけだが、そのアルゴリズムとパフォーマンスを追ってみている。 ES6 String.prototype.repeat の仕様では以下の様な感じでシンプルな書き方をしている。 countが 0 より小さい、または 無限大である場合は RangeError count 0 ならば、空文字列 そうでない場合は、count回、文字列を繰り返して連結する 単純に実装すれば、以下の様な感じで済む。 String.prototype.repeat = function (count) { if (count < 0 || !Number.isFinite(count)) throw new RangeError(); var result = "", str = this; for (var i = 0; i < cou

    String repeat のアルゴリズムとパフォーマンス - hogehoge @teramako
    aereal
    aereal 2014/04/06
  • Shellの[[ ... ]]と[ ... ]の違い - hogehoge @teramako

    主にbashとかkshの話 404 Blog Not Found:perl - glob,readdir, and regexpを読んで、昔Shellのグロブ展開でハマったことを思い出したので適当に書いておく。 Shellスクリプト等で複合コマンドの[[ ... ]]とtestコマンドと同等の[ ... ]をきちんと使い分けている人は意外と少ないのでは無いかと思う。[[ ... ]]も[ ... ]の違いはグロブ展開するかしないかの違いと言ってよいだろう。 変数$hogeが文字列"hoge"から始まる文字か評価したい場合を考えてみる。 if [ $hoge = hoge* ];then # .... fi # or if [ $hoge = "hoge*" ];then #.... fiなどとやって怒られた経験のある人はたくさんいると思う。なぜダメかというと、[ ... ]はtestコマン

    Shellの[[ ... ]]と[ ... ]の違い - hogehoge @teramako
    aereal
    aereal 2013/02/13
  • Re: Firefox14に追加された、ディスプレイをスリープさせないようにするAPI「mozPower」のメモ - hogehoge @teramako

    Firefox14に追加された、ディスプレイをスリープさせないようにするAPI「mozPower」のメモ (Kanasansoft Web Lab.) 気になったので調べてみた。 まず、エラー内容が 引数が足りないやつも、それらしい引数を指定すると同じく「Error: The operation is insecure.」となった。 なので、セキュリティ的にまずいと認識されているであろうということ。 最初は、Chrome特権を有するコード、つまり、アドオンなどFirefox内部のコードからでないと実行できないのではないか、と思った。 が、しかし、それであるならば、コンテンツ側のJavaScriptからアクセスできる、navigationオブジェクト配下に存在する理由がない。何か方法があるはずだ、と思いなおした。 ということで、コード検索! まずは "mozPowser" で検索 http:

    Re: Firefox14に追加された、ディスプレイをスリープさせないようにするAPI「mozPower」のメモ - hogehoge @teramako
  • -webkit-border-radius なんて書いているWeb開発者は腹を切って死ぬべきである - hogehoge @teramako

    地獄の火の中に投げ込むものである。 いや、まあそんなネタはどうでも良くて... そのベンダー接頭辞はいつまで書くの? | Unformed Building 書いてあることは至極真っ当なこと。もろ手をあげて賛成である。 また、 ベンダー拡張プリフィックスはそれそのものがWebを破壊することはないし、ベンダー独自のプロパティーや関数が数万追加されて使われまくったとしても当はWebは壊れない。またその文法が変更されても修正または追加すれば対応できるし、その余裕は十分にある。つまり壊れるのはほとんど全てのケースで開発者の怠慢に過ぎないので、ちゃんと仕様と実装を理解して必要ならば寝る間を惜しんで修正作業に血眼になるべき。みたいな実践を伴わない意識を僕は持っている。 なので憂うべきこの現状は、IE6が拡散して残り続けたことと同じようにベンダー側ではなくWeb開発者側に非があると思っている。 ベンダ

    -webkit-border-radius なんて書いているWeb開発者は腹を切って死ぬべきである - hogehoge @teramako
    aereal
    aereal 2012/05/15
  • Minibuffer Exploit - hogehoge @teramako

    GreasemonkeyのユーザスクリプトであるMinibufferに脆弱性があるよって話。Scriptishでも同様ですよ Minibuffer for Greasemonkey Minibufferが動く状態で、↓のページにアクセスしてみよう http://www.paw.hi-ho.ne.jp/makochi/test/minibuffer.html ただし、Minibufferはしばらくメンテされていない様で、最近のGreasemonkeyでは動かない。GM_addStyleあたりでエラーがでるはず。現状使っている人は自身でパッチをあてて修正しているのではないかと思う。これについては、Firefox4でcan’t wrap XML objectsというエラーが出る件について | Web scratchあたりを参照 あと、Minibufferでピンと来ない人は、LDRizeを動かすた

    Minibuffer Exploit - hogehoge @teramako
  • メソッド実行時の引数に関数代入の挙動 - hogehoge @teramako

    不思議な挙動だね。 Firefox 8.0 var o = {}; o.hoge(o.hoge = function(){ console.log("hoge"); }); // TypeError: o.hoge is not function o.hoge(); // "hoge" o.hoge(o.hoge = function(){ console.log("HUGA"); }); // "hoge" Opera 11.52 var o = {}; o.hoge(o.hoge = function(){ console.log("hoge"); }); // TypeError: o.hoge is not function o.hoge(); // "hoge" o.hoge(o.hoge = function(){ console.log("HUGA"); }); // "ho

    メソッド実行時の引数に関数代入の挙動 - hogehoge @teramako
    aereal
    aereal 2011/11/16
  • 【お願い】background-colorを指定してください - hogehoge @teramako

    文字列を選択した時の挙動というかハイライト周りについて。 ブラウザ毎に挙動が違って面白いというか迷惑。 id:FTTH さんが画像がないとは何事だ。とコメントをくれたのでキャプチャしたよ。これでOK? 上下で背景が黒、白で分けて、それぞれに記述のスタイルを割り当てている。 divに背景色:黒、文字色:白 none: スタイルなし 背景色:画像で白、文字色:黒 背景色:白、文字色:黒 divに背景色:白、文字色:黒 none: スタイルなし 背景色:画像で黒、文字色:白 背景色:黒、文字色:白 Firefoxの場合 背景色によってハイライトが変わる。一番見やすい。 白地の場合 背景色:青、文字色:白 黒字の場合 背景色:白、文字色:青 GoogleChromeの場合 常に背景色:青、文字色:白 黒字の背景色が指定されていると、ハイライトされているか分かりにくかったりする。 そして、複数行選択

    【お願い】background-colorを指定してください - hogehoge @teramako
    aereal
    aereal 2011/10/06
  • ECMAScript 6th の構文をまとめてみた - hogehoge @teramako

    harmony:specification_drafts [ES Wiki] ECMAScript 6thのドラフト版が挙げられている。現在はSeptember 23, 2011のドラフトが最新で、このドラフトの構文部分のみを抜粋してHTML化してみた。 ECMAScript Syntax Grammar 6th Edition / Draft よろしければ、どうぞ。 構文上で、5thとの大きな違いは、 let, constによる変数、定数宣言の導入 AssignmentPatternやBindingPattern辺りが導入されている ...が導入されている 辺りでしょうか。 BindingPattern これは何かっていうと、オブジェクトや配列(Array)の中身の要素を直に変数に入れられるようになる。BindingPatternにはObjectBindingPatternとArrayB

    ECMAScript 6th の構文をまとめてみた - hogehoge @teramako
  • <img src=""/> の挙動 - hogehoge @teramako

    firefox4,5における空のimgタグの挙動 - 技術記録 firefox4か5で、 <img src=""/> みたいな感じで、srcを空にしたimgタグを書いてると、imgタグが現在開いているページ自体を読み込むようだ。 firefox4,5における空のimgタグの挙動 - 技術記録 という問題。気になったのでローカルのWebサーバで検証してみた。 何が気になったか言うと、 で Return the img element to the unavailable state. If an instance of the fetching algorithm is still running for this element, then abort that algorithm, discarding any pending tasks generated by that algori

    <img src=""/> の挙動 - hogehoge @teramako
    aereal
    aereal 2011/08/10
  • 何が「HTML5」であるか - hogehoge @teramako

    ASCII.jp:ここが変わった!HTML5マークアップ入門|浜 俊太朗のHTML5マークアップ移行ガイド 読者のみなさんの中には、これまでにもHTML5関連の情報を読んだことがある方も多いでしょう。それらの情報の中には、従来のHTMLのイメージからはかけ離れた“プログラム的”な内容もあったのではないでしょうか。HTML5とは一体何なのでしょうか? 実は、一般的に「HTML5」と総称されている技術は、大きく「広義のHTML5」と「狭義のHTML5」に分類できます。 広義のHTML5とは主にAPI(Application Program Interface)で、バックグラウンドでJavaScriptの処理を実行できる「Web Workers」や、Webアプリケーションからローカルのファイルを読み取る「File API」、グラフィックを扱える「Canvas」「SVG」などがあります。 さらには

    何が「HTML5」であるか - hogehoge @teramako
    aereal
    aereal 2011/08/07
  • ECMAScript 6th, Harmony と JS++ - hogehoge @teramako

    Web Reflection: ES6, Harmony, and JS++ http://www.3site.eu/JSNext.pdf [PDF] 内容がとても面白い。 Mozilla JavaScripterなら知っているものは多そうだが。 SpiderMonkeyで独自に採用されているものが将来的にECMAScriptに採用されて仕様に載ると良いなと思う。 ということで内容を紹介と個人的メモ ブロックスコープ let JavaScriptで変数宣言というと、var一択で、これは関数ブロックに対するスコープとなり、真のブロックスコープは存在しない。 ということでletってのが登場。 for文、ifのブロック内でのスコープを提供できるよ。 for (let i = 0; i < 3; i++){ // ...; } typeof i; // undefined iはfor文内のみのスコ

    ECMAScript 6th, Harmony と JS++ - hogehoge @teramako
  • 何この変更... Bug 571970 – Main browser chrome should be hidden when viewing in-content UI - hogehoge @teramako

    Bug 571970 – Main browser chrome should be hidden when viewing in-content UI アリスさんもご立腹の変更がMinefieldにて加わっていた Firefox4からアドオン管理画面もタブに開くようになったわけだが、そういったとき、ロケーションバーとか非表示にしようぜ的なもの。 mozilla-central: changeset 58660:9d0841ea7e3b 具体的な変更を見てみるとですね。 changeset: 58660:9d0841ea7e3b user: Dave Townsend <dtownsend@oxymoronical.com> date: Mon Dec 06 10:05:55 2010 -0800 summary: Bug 571970: Main browser chrome shoul

    何この変更... Bug 571970 – Main browser chrome should be hidden when viewing in-content UI - hogehoge @teramako
  • ハッカージャパンにあったFirefoxアドオンの脆弱性 - hogehoge @teramako

    Hacker Japan (ハッカー ジャパン) 2010年 07月号 [雑誌] 出版社/メーカー: 白夜書房発売日: 2010/06/08メディア: 雑誌購入: 3人 クリック: 66回この商品を含むブログ (4件) を見るの冒頭でFirefoxアドオンに関する脆弱性があるというので読んでみた。 あげられたアドオンは FireFTP :: Add-ons for Firefox ウェルカム・メッセージに悪意のあるコードがある場合、これをブラウザーが実行だそうです。 Wizz RSS News Reader - Rss, Atom & Podcast Feeds - Gmail Checker descriptionタグにあるHTMLJavaScriptを実行できるそうです。 CoolPreviews :: Add-ons for Firefox data://URLでXSSが可能だそう

    ハッカージャパンにあったFirefoxアドオンの脆弱性 - hogehoge @teramako
  • やっぱり体感速度 - hogehoge @teramako

    Firefoxより速いGoogleChromeだが、 BarTapとかopener.jsとかインストールすると快適すぎて、とうとうchromeを使うこともなくなった Twitter / tyru: BarTapとかopener.jsとかインストールす ... というTwitter投稿があり、あぁなるほど、と思った。 BarTapというのはBarTab :: Add-ons for Firefoxで、Firefox起動時のタブ読み込みのタイミングを遅らせる(タブを選択した時にコンテンツの読み込みがされるようになる)拡張機能でタブをたくさん開いていると起動がもたついてイラつくという人には嬉しい拡張 opener.js というのは VimperatorのプラグインでURLを開こうとしたとき、既にそのページを開いているタブがあったらそのタブにフォーカスするというもの。 単純に言えば、Firefox

    やっぱり体感速度 - hogehoge @teramako
    aereal
    aereal 2010/02/19
    Chromeは描画速度などでちまちまとポイントをあげるかんじだけど、Firefoxは強烈な拡張やuser.js(やvimpプラグイン)でポイントを荒稼ぎするイメージ。
  • 僕が GoogleChrome に乗り換えず Firefox を使う6つの理由 - hogehoge @teramako

    via: 私が Firefox から Chrome に乗り換えた7つの理由*二十歳街道まっしぐら[ Vimperatorが無い(ぉ 因みに僕が欲しいVimperatorの機能はj,kの様なキーバインドでも、Hit-a-Hintの様な機能でもなく、Vimperatorの様なコマンドライン機能である。 これがGoogleChromeで実現されたら、そちらに傾く可能性は高い 追記: minibufferか、う〜ん、使えるコマンドによりけりかな。。。慣れてしまえばそれでよくなる可能性大ですな。 Firefox はクロスプラットフォームである 僕はWindowsLinuxを使っているけど、どちらでも同じ操作性ってのは大事 追記:Linux版あるのね。知らなかった。 Webアプリケーションへのショートカットは[Mozilla Prismがあるから無問題 teramako's greasemonkey

    僕が GoogleChrome に乗り換えず Firefox を使う6つの理由 - hogehoge @teramako
  • 1