タグ

javascriptとprogrammingに関するpipeheadのブックマーク (463)

  • Dropbox Datastore APIの使い方とか色々 - Qiita

    KiB(kibibyte),MiB(mebibyte)という珍しい単位を使っているのが印象的ですね。 最後の行は英語力()な人なので翻訳できませんでしたが、同期関数の呼び出しサイズだと思います、多分。 参考:Datastore API documentation - Dropbox 実際に、Dropbox Datastore APIへの登録を行なう。 まずは、開発者用のページへアクセスしましょう。 Developers - Dropbox App Console を選択します。 右上の Create app をクリックします。 Dropbox API app を選択します。 今回は、Fileも扱いたいので、 Files and datastores を選択しましたが、場合によっては Datastores only を選択しても良いです。 Appフォルダの下のみのアクセス権が必要なので、Ye

    Dropbox Datastore APIの使い方とか色々 - Qiita
  • 1分でわかるjQueryのscrollTop() スクロール位置取得の使い方

    jQueryのscrollTop()でスクロール位置を取得することでいろいろなことができるようになる。 ウィンドウ最上部のスクロール位置の取得 $(window).scrollTop()で取得。$(window).on("scroll"だけだとロード時に現在位置が表示されないので$(window).on("load scroll"と記述するのが望ましい。 function getScrollTop(){ $("#result").text($(window).scrollTop() + 'px'); } $(window).on("load scroll", getScrollTop); jQueryのscrollTop() スクロール位置取得の使い方 サンプル1 ウィンドウ最下部のスクロール位置の取得 $(window).scrollTop()+$(window).height()で取得

    1分でわかるjQueryのscrollTop() スクロール位置取得の使い方
  • Promiseについて - JS.next

    概要 Promiseとは非同期処理を上手く扱う為のAPIであり、パターンである。 非同期の処理の完了後に続けて処理を行いたいとき、よくコールバックパターンが使われるが、処理が連続するとコールバック地獄と言われる分かりづらいソースコードになってしまう。 また、複数の非同期処理が完了した時に処理を行うなど、コールバックパターンでは難しい事をスマートにできるのがこのPromiseである。 今まではDOMの方でDOM Promiseとして仕様策定が進められていたり、ライブラリのDeferredが有名だったが、ES2015標準に入ることになり、V8に実装された。 実装されたメソッド Promise.resolve(x) Promise.reject(x) Promise.all( [p1, p2, p3, ......] ) Promise.race( [p1, p2, p3, ......] )

    Promiseについて - JS.next
    pipehead
    pipehead 2013/11/28
    > ES6(2015) Promiseと今までのDOM Promise実装やライブラリのDeferredは、よく似ているけれどいくらか仕様が違うということを注意しなければならない。
  • javascriptのモジュールパターンとprototype継承について - tanihiro.log

    jsを書くとき、今まであまりprototype継承を使用せず、どちらかというとモジュールパターンで記述することが多かったので、それぞれ何が違うのか、あまり理解していませんでした。 それを今日教えてもらえたので、まとめます。 モジュールパターンとは function Hoge() { var n = 1; return { fuga: function() { alert(n); } }; } var hoge = new Hoge; hoge.fuga(); // 「1」がalertで表示される hoge.n; // Error このように、関数の返り値をobjectで返し、さらにそのobjectの中にfunctionを用意します。 fugaの中で参照しているnはクロージャの中で生き続けるので、外からでもアクセスできますが、直接は参照できません。 この、クロージャを利用してprivateや

    javascriptのモジュールパターンとprototype継承について - tanihiro.log
    pipehead
    pipehead 2013/11/21
    > モジュールパターンはprivateな変数やメソッドを簡単に定義できるが、継承はできない
  • jQuery.extend() メソッドの使い方まとめ | Tips Note by TAM

    知っている人には当たり前のことかもしれませんが、使い方をまとめておきます。 jQuery.extend() は、基的には複数のオブジェクトをマージして返してくれるメソッドです。 (プラグインのソースで、デフォルトの設定値を上書きする時などによく見かけますね) jQuery.extend(target[, object1][, objectN]) こんな感じで使います。 オブジェクト a の内容と b の内容をマージしたいとき、 var a = { id: 1, name: 'TAM' }; var b = { name: 'TAM-new', hobby: 'football' }; $.extend(a, b); console.log(a); // 結果: // { // id: 1, // name: "TAM-new", // hobby: "football" // } $.e

    jQuery.extend() メソッドの使い方まとめ | Tips Note by TAM
  • MutationObserverを使った高速setImmediate/nextTick - 素人がプログラミングを勉強していたブログ

    MessageChannel / setTimeout / requestAnimationFrame / postMessageを使ったものより異様に速い。 というのも、setTimeout等は、次のサイクル(すなわちnextTick)の開始時に実行する関数を登録し、DOMや画面の更新後に実行されるのだが、 MutationObserverのコールバックは、現在の(同期的な)JS実行が完了した時点でコードを走らせるためである。さらに、MutationObserverは同じ実行サイクルでのDOM上の変更を次回のサイクルにすべてまとめてrecordsとしてコールバックに渡すので、これもsetImmediateの実装には非常に都合が良い。 MutationObserverのような実行タイミングをmicrotaskといい、setTimeout / postMessage / MessageCha

    MutationObserverを使った高速setImmediate/nextTick - 素人がプログラミングを勉強していたブログ
    pipehead
    pipehead 2013/10/24
    > MutationObserverのような実行タイミングをmicrotaskといい、setTimeout / postMessage / MessageChannelなどの実行タイミングをmacrotaskというらしい。
  • デザイナーが知っておきたいDOMの読み込みとjQuery | スマートフォンアプリ開発会社のエンジニアブログ

    こんにちは。ビンゴ豊島です。デザイナーという立場ですがJavaScriptもちょいちょいと書かせていただいております。 今回はDOM操作をする前に知っておきたいDOMの読み込みについて記事を書かせていただきます。対象はDOM操作ばかり、もしくはDOM操作しかしないんですけど?といったデザイナーさんになります。これを読むと今までなんとなく使っていたjQueryも意味を理解した上で使えるようになれるかもしれません。 Webページが表示されるまで ブラウザがページを表示するまで簡単に書くと下記のようになります。 サーバにページをリクエスト サーバから返されたHTMLをダウンロード DOM構築をしつつ描画と画像等のダウンロード 表示完了 このうち「3. DOM構築をしつつ描画とダウンロード」のタイミングでどのような順番でイベントや処理が発生するかを検証します。 DOMの読み込みを確認するサンプルコ

    デザイナーが知っておきたいDOMの読み込みとjQuery | スマートフォンアプリ開発会社のエンジニアブログ
    pipehead
    pipehead 2013/10/22
    スクリプトが実行される順番
  • いまさらrequestAnimationFrameを理解する - console.lealog();

    理解できたらいいな・・。 だいぶ今さら感はあるのですが、改めて知っておきたいタイミングなので。 参考:window.requestAnimationFrame - Web API リファレンス | MDN 一定間隔で処理を繰り返す CanvasでもCssアニメーションでも、「描画処理を繰り返し実行する」ところは一緒。 そこをどうやって実装するかという話で、今まではsetIntervalやsetTimeoutを再帰で呼んだりしてました。 setInterval var anim = function() { console.log('Animations here.'); }; window.setInterval(anim, 1000); 一番わかりやすいし手軽です。 だいたいいつもコレなんじゃないでしょうか。 setTimeout var anim = function() { cons

    いまさらrequestAnimationFrameを理解する - console.lealog();
  • DOM操作の最適化によるJavaScriptチューニング(後編)

    連載「Webサイト・アプリ高速化テクニック徹底解説」の第5回は、前回の「DOM操作の最適化によるJavaScriptチューニング(前編)」に続く後編です。後編では、createElement()などのDOM操作メソッドを使ったさまざまなテクニックや、パフォーマンスを劣化させるよくあるパターンについて詳しく解説します。 CodeIQとの連動企画! この記事で学べるJavaScriptチューニングのテクニックを、実際にCodeIQの問題で試すことができます。もう既に自信がある方は腕試しに、もしくは理解度チェックのための復習として是非ご活用ください!こちらから問題にチャレンジ! 前回は、DOM操作が遅い原因と仕組みについて簡単に説明し、チューニングのサンプルをいくつか解説しました。その中で、innerHTMLを利用したコードをサンプルにあげていますが、innerHTMLを利用する場合、いくつかの

    DOM操作の最適化によるJavaScriptチューニング(後編)
  • [jQuery] 異なるバージョンのjQueryを共存させる | un-T factory! Interactive blog

    un-T factory!のインタラクティブチームのブログです。こんにちわ、榎戸です。 先日とある案件でフロントエンドの実装をおこなっていたときの話です。 ひと通り実装を終え明日はクライアント確認という段階で ステージングサーバにデータをアップしたところ動きません… 弊社テストサーバでは問題なく動いていたものが なぜかステージングサーバだと動かないのです。 時は刻一刻と過ぎていき 空が白み始めたころ原因がわかりました。 jQueryの競合がエラーの原因だったのです。 実装を担当したページでは ほかにも様々なモジュールが読み込まれていたのですが、 モジュールごとに違うバージョンのjQueryを読み込んでいて それが私の書いたスクリプトと衝突していたのです。 調べてみるとこの「jQuery競合問題」には さまざまな解決法がありました。 自分自身の反省をこめて 今

  • DOM操作の最適化によるJavaScriptチューニング(前編)

    連載「Webサイト・アプリ高速化テクニック徹底解説」の第4回は、JavaScriptのチューニングのうち、ボトルネックになりやすいDOM操作の最適化について解説します。前編・後編にわたって、DOM操作が遅くなる原因と仕組み、その解決策について詳しく解説します。 CodeIQとの連動企画! この記事で学べるJavaScriptチューニングのテクニックを、実際にCodeIQの問題で試すことができます。もう既に自信がある方は腕試しに、もしくは理解度チェックのための復習として是非ご活用ください!こちらから問題にチャレンジ! DOM(Document Object Model)とは、HTMLをアプリケーション(ここではJavaScript)から利用するためのAPIです。JavaScriptによるユーザーインターフェースの構築やレスポンスの表示など、インタラクティブな部分はほとんどがDOM操作によるも

    DOM操作の最適化によるJavaScriptチューニング(前編)
  • Taso.compute(more);: hoisting エッセンシャル - 駆け足で始めるjavascriptの変数その1 -

    pipehead
    pipehead 2013/08/29
    > 変数においてはextentの期間外では束縛されていないのでたとえ変数が存在していても未定義となります。前方参照、extentより前、つまり変数が存在する以前(過去)より参照してもjavascriptのundefinedになるわけです。
  • Taso.compute(more);: ピンクのユニコーン・パターン

    世界一誤解された言語javascriptとecmascriptの話。 ──この誤解に関して、私は真に驚くべき証明を見つけたが、このブログはそれを書くには狭すぎる。 JavaFXはじめました。 今回はjavascript特有のデザインパターン。それも間違ったgood partsの話。 1. 変数は関数の先頭で定義する。(過去に定義された変数) 今すぐやめましょう。おかしな刷り込みに騙されてはいけません。 変数の宣言を実際に使う位置より遠くで宣言すれば実際に使う時までに間違った代入などを行われる可能性があります。そのため、変数は使う付近で宣言します。これはどんな言語にも共通するパターンです。javascriptも例外ではありません。これが覆される特別な事情など一切ありません。 よくあるのがhoisting問題に対する予防策として先頭で定義しろという高説がありますが、すでに説明したとおりhois

  • Taso.compute(more);: その間違ったhoisting問題をぶち壊す!

    世界一誤解された言語javascriptとecmascriptの話。 ──この誤解に関して、私は真に驚くべき証明を見つけたが、このブログはそれを書くには狭すぎる。 JavaFXはじめました。 以下のコードの問題を挙げて下さい。 var name = "global"; (function (){ console.log(name); var name = 20; console.log(name); })(); console.log(name); hoisting問題だと答えた人……失格です。シベリア送り25ルーブルを命じます。 thisがないと答えた人、甘い! このままでは実行コンテキストが曖昧です。thisとは何ですか。正しいコードに直して下さい。 var name = "global"; (function (){ console.log(this.name) var name =

    pipehead
    pipehead 2013/08/29
    > 既に変数の定義は実体化されているので後方で定義されたはずの変数であっても既に存在しています。これがいわゆるhoistingです。この仕組みは前方参照を行うためにあります。つまり関数を前方参照するためのものです
  • Custom Elements: HTML に新しい要素を定義する - HTML5 Rocks

    Web Platform Dive into the web platform, at your pace.

    Custom Elements: HTML に新しい要素を定義する - HTML5 Rocks
  • javascriptでスタックトレース - Qiita

    javascriptでちょっと賢いロガーっぽいのを作ったとしても、最終的にはconsole.logを使ったりすると、ログの表示箇所が全て同じファイル、行になるのでいまいち不便。 そこで、V8エンジンのブラウザだけだけど、スタックトレースを取得してログメソッドが実行された行数、ファイル名などを一緒に出力する方法を調べた。 を使えばいける。例えばこんな感じ。 Error.prepareStackTrace = function( e, st ) { return { functionName: st[0].getFunctionName(), lineNumber: st[0].getLineNumber(), //いろいろお好きに }; }; function log( msg ) { var obj = {}; Error.captureStackTrace( obj, log ); co

    javascriptでスタックトレース - Qiita
  • jQueryにおけるattrとpropの違いと使いドコロまとめ - Qiita

    checkboxやradioのチェック状態を調べる際にはattrではなくpropを使うのが良い。 attrでも取れないこともないですが、propで取得する方が処理が早いです。 特にIEの場合、inputに対するdisabledの処理がものすごく重く、attrでdisabledやcheckedの処理を沢山していると、無駄に最悪な感じで負荷がかかります。 attrとpropの取得の違い## またこの2つは、同じ値を取得してるようで異なる値を取得するので注意。 例えば の場合、 チェック時 prop true attr checked 非チェック時 prop false attr undefined という全然違う値が返ってきます。 なぜ解釈が違うのか## attrは純粋に 属性における値 を取得するので、この場合は、 checkされてない ↓ checkedという『属性』がない! ↓ unde

    jQueryにおけるattrとpropの違いと使いドコロまとめ - Qiita
    pipehead
    pipehead 2013/07/23
    > HTMLの属性を取得する場合はattr、input関連の値を取得する場合はprop、と考えておくといいと思います。
  • 非推奨になった Mutation events を Mutation Observers に置き換えよう

    前からDOM3(黒い三連星じゃないよ)で実装されたDOMAttrModifiedや、DOMNodeInsertedをGreasemonkeyスクリプト内で使用していたのだが、これらのMutation eventsが非推奨となってしまったらしい。 じゃあ何を使ったらいいの?ということで、Mutation ObserversというAPIが提供されているらしい。 Mutation Observersの利用方法をまとめてみた。

    非推奨になった Mutation events を Mutation Observers に置き換えよう
  • 結局jQuery.Deferredの何が嬉しいのか分からない、という人向けの小話 - Qiita

    結局jQuery.Deferredの何が嬉しいのか分からない、という人向けの小話 一年ほど前に JavaScript - jQuery.Deferredを使って楽しい非同期生活を送る方法 - Qiita [キータ] という記事を書きました。 で、一年経って、ふと、「もっと分かりやすくjQuery.Deferredの便利さを説明できるんじゃないか」と思い立ってざざざっと書いてみました。 小話と言うにはちょっと長いけど。 -- jQuery.Deferredを使うと嬉しいのは、jQuery.Deferredの仕様を満たす部品同士を簡単に組み合わせることが可能だからです。中には処理を書き下すことができるとかコールバックのネストを防げるのがいいとか言う人もいますが、個人的にこっちのほうがよっぽど重要だと感じます。 例えるならレゴブロックです。レゴブロックはあの凸と凹を持ってるブロックを自由に組み合

    結局jQuery.Deferredの何が嬉しいのか分からない、という人向けの小話 - Qiita
  • jQuery.Deferredを使って、可変数の非同期処理の終了を待ってから処理を実行する

    jQuery.Deferred を使って、可変数の非同期処理の全ての終了を待ってから処理を実行する方法について簡単に紹介します。なお、この記事は  jQuery.Deferred の記事ではなくて、どちらかというと関数オブジェクトの apply メソッドについての簡単な用法の解説になります。 クライアントサイドの Web アプリケーションで、外部 API などからデータを読み込み、その結果を待って処理を行いたい場合があります。jQuery を使うと、通常、次のように書きます。

    jQuery.Deferredを使って、可変数の非同期処理の終了を待ってから処理を実行する