タグ

programmingに関するpipeheadのブックマーク (1,627)

  • JavaScriptのパフォーマンスを上げる13のテクニック(Google I/O 2012) - ITコンサルタント成長録

    JavaScriptのパフォーマンスを上げる13のテクニック 一部意訳あり。(特に関数についての11と13)。深く理解したい方はスライドや動画を観ることをオススメ。 (元記事) http://www.jonefox.com/blog/2012/07/10/13-javascript-performance-tips/ - 先日、Googleのダニエル・クリフォードは"Google I/O 2012"にて「V8で打ち破るJavaScriptのスピードリミット」と題した素晴らしい講演を行った。その中で彼は、JavaScriptコードで実践できる13のシンプルな最適化手法を紹介している。それらはChromeのV8 JavaScriptエンジンのコンパイルや実行速度を上げ、コードを速くするものだ。彼はそれらについての多くの説明を行なっているが、もしただシンプルTips一覧が欲しいというなら、以下を

    JavaScriptのパフォーマンスを上げる13のテクニック(Google I/O 2012) - ITコンサルタント成長録
  • niw.at — "use strict"

    最近のモダンな JavaScript では、必ず "use strict" というのが書かれていると思います。この使い方を雰囲気ではわかってるけど、正しく理解していない場合が自分も含めて多いと思ったので書きとめたいと思います。 ちなみに、"use strict" でググると Perl のそれが出てきますが、Perl の話はしません。あとセミコロンの話もしません。 "use strict"とはそもそもなにか "use strict" は、Use Strict Directive と呼ばれています。 これは ECMA-262 の 14.1 Directive Prologues and the Use Strict Directive によって示されています。 A Use Strict Directive is an ExpressionStatement in a Directive Pro

  • ステートフルJavaScript 2章 | jekylog

    2.1 イベントの監視 イベントリスナを削除するにはremoveEventListener()を使います。ここには以下のように、addEventListenerで指定したのと同じ引数を指定します。リスナが匿名関数であるなどの理由でリスナへの参照が存在しない場合は、要素ごと破棄しない限りリスナを削除することはできません。 まあ当たり前の事ですね。 ちなみに非標準だけど第4引数はaWantsUntrustedで、信頼されないコンテンツによって引き起こされるイベントを許可する、なる項目もあるらしい。 element.addEventListener - MDN 2.2 イベントの発生順序 ある要素とその祖先に同じ種類のイベントを指定している場合、下記ブラウザによって挙動が違う。 Netscape4はイベントキャプチャリング(event capturing)に対応しています。ここでは、最も上位(外

    ステートフルJavaScript 2章 | jekylog
  • ステートフルJavaScript 1章 | jekylog

    1.1 初期のJavaScript JavaScriptが強力で動的なオブジェクト指向言語である これって議論が分かれるところだけど書籍ではオブジェクト指向言語と言い切っている。 1.2 アプリケーションの構造化 大規模なjavaScriptアプリケーションを作成する上で鍵になるのは、「javaScriptの」アプリケーションをつくろうとはしないことです。まず、独立性の高いコンポーネントへとアプリケーションを分割するべきです。 粒度が細かいほうが制作しやすいし管理もしやすいと。 1.3 MVCとは MVCはデザインパターンの1つであり、アプリケーションをデータ(Model)とプレゼンテーションレイヤ(View)そしてユーザーインタラクションレイヤ(Controller)の3つに分割するという概念です。 大抵のWEBアプリケーションはこう分割できるよねと。 ユーザーがアプリケーションを操作し

    ステートフルJavaScript 1章 | jekylog
  • 平方根を使わずに高速で2点間の距離を近似する - きしだのHatena

    2点間の距離の計算では平方根が必要になりますが、平方根は少し重い計算です。ということで、平方根を使わず、掛け算・割り算・足し算と絶対値・最大・最小だけで距離を近似する方法についての記事を翻訳してみました。 flipcode - Fast Approximate Distance Functions (12:02 補足:おそらく今の標準的なCPUでやる意味はほとんどないと思います。近似のアプローチとして面白いというくらいの話。Z80でやりましょう) 距離関数高速近似 by Rafael Baptista (27 June 2003) 2点間のユークリッド距離を求める計算式は次のようになる。 二次元では次のようになる。 この関数の計算には、平方根が必要になる。これは最近のコンピュータでも高価な計算である。平方根は逐次近似によって求められる。つまり、コンピュータは平方根近似のループを行って、与え

    平方根を使わずに高速で2点間の距離を近似する - きしだのHatena
    pipehead
    pipehead 2012/06/04
    http://www.flipcode.com/archives/Fast_Approximate_Distance_Functions.shtml の和訳; 三次元: d = (X^2 + Y^2 + Z^2)^(1/2); 二次元: d = (X^2 + Y^2)^(1/2)
  • JavaScript のオブジェクトのプロパティ一覧を取得する方法とオブジェクトが指定の名前のプロパティをもっているか検査する方法 - ひだまりソケットは壊れない

    JavaScript のオブジェクトがある名前のプロパティをもっているのかどうか調べる方法や、オブジェクトがもっているプロパティの名前の一覧を取得する方法はいくつか種類があって、それぞれどういうものだったかちゃんと覚えてなかったのでまとめてみました。 基的に data property か accessor property かというのは、プロパティの存在を調べる際やプロパティの名前の一覧を取得する際には関係ないのです。 プロパティの名前一覧を列挙するときには、プロパティが enumerable かどうかというのは関係します。 *1 ECMA-262 5.1 を参照してまとめました。 オブジェクトが指定のプロパティをもっているかどうかの検査 オブジェクトが、指定の名前のプロパティをもっているかどうか調べる方法。 in 演算子 ECMA-262 5.1 - The in operator

    JavaScript のオブジェクトのプロパティ一覧を取得する方法とオブジェクトが指定の名前のプロパティをもっているか検査する方法 - ひだまりソケットは壊れない
    pipehead
    pipehead 2012/06/03
    検査: in 演算子, Object#hasOwnProperty(); 列挙: for-in 文, Object.keys(), Object.getOwnPropertyNames()
  • volatileってなんだろう - ぼっち勉強会

    目的 「volatileって何?」という質問があり、自分の理解も曖昧だったので復習してみた。 勉強内容 volatileって? 何の意味があるの? コンパイラの最適化(置き換え)を抑止する コンパイラの最適化(リオーダー)を抑止する スレッドが値を参照する際に、必ず最新の値を見るようにする volatileって? 修飾子です。次のようにフィールドに対して付けます。 public class Hoge { public volatile int num; } 何の意味があるの? ぼくは次のように理解していますが、まだ自信はありません。 コンパイラの最適化(置き換え)を抑止する コンパイラの最適化(リオーダー)を抑止する スレッドが値を参照する際に、必ず最新の値を見るようにする Javaでは3つ目の説明ばかり見るのですが、これは結果として他のも対応されるからなのかな? まだよく分かっていません

    volatileってなんだろう - ぼっち勉強会
  • bayashi.net

    {{tag: mclocks, tauri, rust}} mclocks [[https://github.com/bayashi/mclocks mclocks]] は、複数タイムゾーンの日時をコンパクトに表示するデスクトップアプリです。Tauri でできていて Windows, Mac, Linux で使えます。 シンプルなタイマー機能とか Epo... つづきを読む

    bayashi.net
  • 演算力は無限になっとる

    Living in the Era of Infinite Computing Power めちゃカンタンな計算が、昔は遅かったんや。8bitプロセッサーで一万回ループしようとおもたらな、内側256回ループする外側で40回ループしたほうが速かったんや。16bitの加算と比較を行うために複数の命令を使わんでもええからや。 掛け算と割り算が、昔は遅かったんや。そもそも、そんな計算するCPU命令なんてなかったんやで。掛け算のオペランドの片方が定数やったら、加算とビットシフトに分解できるんやが(Nに44を掛けるには、N 左シフト 5 + N 左シフト 3 + N 左シフト 2や)、まあ、世の中そんなに都合よういってくれへんわな。 浮動小数点数が、昔は遅かったんや。FPU以前、浮動小数点数の計算はめちゃめちゃ遅いソフトウェアで行われていたんや。はじめのハードウェアは、マシなんはマシやったが、そんなす

    pipehead
    pipehead 2012/05/19
    /* http://prog21.dadgum.com/101.html の和訳 */ > お前ら、無限の演算力を有効につこうてるか?
  • JavaScriptで、メソッドをコールバックとして渡す方法(コールバック関数でthisをbindさせる方法) · DQNEO日記

    Home Subscribe var obj = { name : 'pikachu', say : function(){ alert('I am ' + this.name); } } setTimeout(obj.say, 1000); // => 'I am'とだけ表示される。 これは期待通りに動いてくれません。 コールバックとしてメソッドを渡した場合、それはオブジェクトと切り離された単なる関数(メソッドではない)となってしまうのです。 つまり下記と等価なのです。 setTimeout( function(){alert('I am ' + this.name);} , 1000); 関数がオブジェクトと切り離されているため、このthisはグローバルオブジェクト(windowオブジェクト)を指してしまっており、'I am'とだけ表示されます。 ではどうすればよいでしょうか? bin

    pipehead
    pipehead 2012/05/12
    Function.prototype.bind
  • 2012-05-06

    Win32 APIにはファイルの変更を監視する方法として、少なくとも2つの方法がある。 私は従来よりファイル監視のためのAPIとして、FindFirstChangeNotification関数を愛用している。 だが、WindowsNT系のUNICODEビルドであれば使えるというReadDirectoryChangeW関数によるファイル監視を使うことにより、パフォーマンスの改善が望めそうに思えたため、これを用いた場合には、どのような実装方法となるのか確かめたく実験してみることとした。 FindFirstChangeNotification APIを使ってファイルを監視する方法 Win32でファイルの変更通知を行うものとしては、Windows95時代から使える方法として、FindFirstChangeNotification関数があげられる。 このAPIは、指定したディレクトリまたは、その配下

    2012-05-06
    pipehead
    pipehead 2012/05/06
    FindFirstChangeNotification(), ReadDirectoryChangesW()
  • JavaScript クロスブラウザに関するメモ - とみぞーノート

    IEとFireFoxでのJavaScript(と言うか主にDOMまわり)の挙動の違いに関するメモ書き 1.ウィンドウ/ドキュメント関連 1.1 ドキュメントの幅,高さの取得 IE6 document.body.scrollWidth document.body.scrollHeight NN6,FireFox document.width document.height FireFox12ではdocument.width,heightはundefinedになる。 https://dev.mozilla.jp/2011/06/firefox6-backward-compatibility/ によると、このプロパティは標準化されなかったので、FireFox6以降で削除された模様。 かわりに、以下のようにしてサイズを取得できる。 parseInt(window.getComputedStyle(

  • globalオブジェクトを取得する - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    globalオブジェクトを取得する - Qiita
    pipehead
    pipehead 2012/05/04
    > ECMAScript 5ではindirect eval callなんていう技が存在する。evalに別名をつけて呼ぶとglobalスコープで実行されることを利用する。
  • Underscore.jsのtemplate触ったメモ

    以下、Underscore.jsが1.3.3当時の情報です。 template _.template(templateString, [data], [settings]) Underscore.js Utility template Backbone.jsを試すついでに、Underscore.jsについてるtemplateを試してみました。他のテンプレートライブラリ持ち込んでくるのも億劫だったので。 <script id="tmplString" type="text/template"> <h3>店舗情報</h3> <div id="store"> <p><a href="<%- data.store.url %>"><%- data.store.name %></a></p> <img src="<%- data.store.image %>" alt="店舗写真" /> <dl>

    Underscore.jsのtemplate触ったメモ
  • jQueryのパフォーマンスを下げるアンチパターンに関する超意訳 - Qiita

    // 悪い例 var id = $("#content").data("id"); var itemId = $("#content").data("item-id"); // 良い例 var content = $("#content") var id = content.data("id"); var itemId = content.data("item-id"); // 悪い例 $.each(reallyLongArray, function(count, item) { var newLi = '<li>' + item + '</li>'; $('#ballers').append(newLi); }); // 良い例 : DocumentFragmentを使用 var frag = document.createDocumentFragment(); $.each(reall

    jQueryのパフォーマンスを下げるアンチパターンに関する超意訳 - Qiita
  • 解説 : XMLHttpRequest

    XMLHttpRequest を使用出来るようにする為の宣言。ブラウザにより異なる。 IE では、ActiveXObject("Microsoft.XMLHTTP") を使用。 IE のバージョンによっては、ActiveXObject("Msxml2.XMLHTTP.5.0") , ActiveXObject("Msxml2.XMLHTTP.4.0") , ActiveXObject("Msxml2.XMLHTTP.3.0") , ActiveXObject("Msxml2.XMLHTTP") なども使用出来る。 Mozilla 系ブラウザでは、XMLHttpRequest() を使用。 var xmlhttp = false; if(typeof ActiveXObject != "undefined"){ try { xmlhttp = new ActiveXObject("Micro

  • perl リファレンスは簡単

    新年度ですね!! サンプルコードは間違ってるかもしれないから、適当にワンライナーにでもして試してね!!! ただのハッシュのコピー まず、リファレンスでないハッシュだと "値" がコピーされるのを実行します! # ただのハッシュですね! my %foo = ( key => 1 ); # コピーしてみますよ! my %bar = %foo; # コピーした先で値を代入してみますよ! $bar{key} = 2; # おおもとの方は書き換わってませんね!あたりまえですね! print $foo{key}; # 1 こういうのがリファレンス HASH my $foo = { key => 1 }; print ref($foo); ARRAY my $bar = [1, 2, 3, 4]; print ref($bar); SCALAR my $baz = 123; my $hoge = \$b

    perl リファレンスは簡単
  • Model View ViewModel - Wikipedia

    Model-View-ViewModel概念図。直線は直接的なAssociationを表し、破線は(例えば)Observer パターンを経た間接的なAssociationを表す。 Model-View-ViewModel (MVVM、モデル・ビュー・ビューモデル) はUIを持つソフトウェアに適用されるソフトウェアアーキテクチャの一種である[1]。 MVVMはソフトウェアをModel・View・ViewModelの3要素に分割する。プレゼンテーションとドメインを分離し(V-VM / M)また宣言的Viewを分離し状態とマッピングを別にもつ(V / VM)ことでソフトウェアの保守性・開発生産性を向上させる。 Model-View-ViewModelパターンはModel-View-Controller (MVC) パターンの派生であり、特にPresentation Model[2] パターンを直

    Model View ViewModel - Wikipedia
  • 負数の剰余を計算してはならない - おともだちティータイム

    負数が含まれる剰余を計算した場合、言語に跨がって一意な結果が得られない。 -5 % 3 5 % -3 C -2 2 C++ -2 2 Java -2 2 Ruby 1 -1 Python 1 -1 Common Lisp 1 -1 さて、なぜこんなことが起きるのかというと、剰余には複数の定義が存在するからである。 m ÷ n = q … rこの r を剰余と言うが、 r の範囲が 0 ≤ r < n 最小非負剰余 -n/2 ≤ r < n/2 絶対値最小剰余 の二つの定義があり、一般的には前者の「最小非負剰余」を用いるようである。 m が負数、 n が正数の場合は、先程の表にあるプログラミング言語は以下のように分類される。 絶対値最小剰余 C C++ Java 最小非負剰余 Ruby Python Common Lisp しかし、最小非負剰余では r が正数になる必要があり、剰余の結果が

    負数の剰余を計算してはならない - おともだちティータイム
    pipehead
    pipehead 2012/04/09
    絶対値最小剰余: C, C++, Java; 最小非負剰余: Ruby, Python, Common Lisp
  • 「知恵ノート」は終了いたしました - Yahoo!知恵袋

    平素よりYahoo!知恵袋をご利用いただきありがとうございます。 2017年11月30日をもちまして、「知恵ノート」機能の提供を終了いたしました。 これまでご利用いただきました皆様にはご迷惑をおかけすることとなり、誠に申し訳ございません。 長年のご愛顧、心よりお礼申しあげます。 引き続き、Yahoo!知恵袋の「Q&A」機能をご利用ください。 Yahoo!知恵袋トップ 知恵ノートサービス終了のお知らせ プライバシー - 利用規約 - メディアステートメント - ガイドライン - ご意見・ご要望 - ヘルプ・お問い合わせ JASRAC許諾番号:9008249113Y38200 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.

    「知恵ノート」は終了いたしました - Yahoo!知恵袋