約 6,625,623 件
https://w.atwiki.jp/abwiki/pages/48.html
コールバック関数は、事前に登録しておき、その後必要に応じて呼ばれる関数のことである。 通常、関数やプロシージャなどは、プログラム内のコードから呼び出され実行される。一例としてsin()、Math.sin() などの三角関数は、print sin(pi)などのようにプログラム内で記述が現れた際に実行される。 一般的な関数は、すべて手続きに従って呼び出され実行される。 これに対して、コールバック関数は通常の手続きの流れとは異なり、関数がプログラム内部の 主としたフロー内から呼ばれないものの事を指す。 コールバック関数は、与えられた関数名を予め登録しておき、主たる処理のフローとは個別に、 何らかの処理が必要になった場合に、システムによって呼び出される。 この仕組みは割り込みなどの仕組みに応用出来る。 コールバック関数は、言語上、明確に区別されるものではなく、外部から何らかの関数が呼び出される 性質を持つ関数について言い、特にWinodws環境において表現する事が多い。 コールバック関数は、Windows環境のWin32APIを利用する際に良く現れる。 Windowsでは、メッセージのやり取りによって、各イベントがおこる。 このとき、受け取ったメッセージを処理するのがウインドウプロシージャである。 これは次のような図で考えると分かりやすい imageプラグインエラー ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (proc.jpg) コールバック関数 Sub Call() MessageBox(0,"",0,0) End Sub Sub test(callbackfunc As *Sub()) callbackfunc() End Sub test(AddressOf(Call)) この例では、test()はコールバック登録と呼び出しが行われている。実際には登録と実行は区別される。 Call()は呼び出される関数で、Call()がコールバック関数に該当する。
https://w.atwiki.jp/sevenlives/pages/2622.html
コールバック地獄?
https://w.atwiki.jp/suffix/pages/588.html
関数A(引数1,引数2,呼び出したい関数)のような感じで、 ある関数を実行するときに呼び出したい関数をコールバック関数と呼ぶ。 こうすることで、関数Aは呼び出す関数に応じて振る舞いを変えることができる。 実際に呼び出したい関数が void func(int value) { 何らかの処理; } だったとして、関数Aがこの関数を利用するとき等に、 関数ポインタが使える。 void 関数A(int a,ClassA callback関数); と定義した場合、 void 関数A(int a, ClassA 関数); といった感じに。
https://w.atwiki.jp/sevenlives/pages/232.html
ob_start?
https://w.atwiki.jp/kodan/pages/134.html
http //s3pw.com/qrefy/collectajax/ メソッド .readyState .status .statusText .responseXML / .responseText .setRequestHeader(name, value) リクエストヘッダーの追加・修正を行うメソッド name 対象のヘッダー名 value ヘッダーの値 .getAllResponseHeaders() .getResponseHeader() .abort() PromiseオブジェクトとしてのjqXHR jqXHRオブジェクトはPromiseオブジェクトとしての機能を持ち合わせ、そのプロパティ・メソッドを利用できます。 (詳細は$.Deferred(),deferred.promise()をご覧ください。) これにより、Ajaxリクエストのコールバック関数を指定するのに次のメソッドが使用できます。 jqXHR.done(doneCallbacks) リクエスト成功時のコールバック関数を指定 jqXHR.fail(failCallbacks) リクエストでエラーが発生した時のコールバック関数を指定 jqXHR.always(alwaysCallbacks) リクエスト完了時のコールバック関数を指定 jqXHR.then(doneCallbacks,failCallbacks) 第1引数にリクエスト成功時、第2引数にリクエストでエラーが発生した時のコールバック関数を指定
https://w.atwiki.jp/eyes_33/pages/46.html
コールバックは、ActiveRecordでの検索や更新のタイミングで実行されるメソッドのこと before_validationだったら、バリデートの直前に実行される validationの他に、save/create/update/destoryで、before/afterのメソッドがある find/initalizaでは、afterのみ 当然、deleteでは実行されないので注意! コールバックの基本は、コールバックメソッドで使用するプライベートメソッド名を登録する 以下の場合は、after_destroyにhistory_bookを登録する場合ね class Book ActiveRecord Base after_destroy history_book private def history_book logger.info( deleted + self.inspect) end というか、inspect便利だなぁ… これで、こんな感じのログが出る deleted # Book id 24, isbn "978-4-7980-2812-0", title "タイトル", price 100, publish "出版社B", published "2011-12-17", cd false, created_at "2011-12-17 00 03 15", updated_at "2011-12-17 00 03 15" 単なるプライベート以外の定義もできる ブロック形式で直接定義 class Book ActiveRecord Base after_destroy do |b| logger.info( deleted + self.inspect) end ちょっとしたコードなら、これが一番楽そう。 コールバッククラスを定義 まずは、こんなコールバッククラスを作る(app/models/book_callbacks.rb) class BookCallbacks cattr_accessor logger # この中でloggerクラスを直接使えないので、 self.logger ||= Rails.logger # Railsのloggerを取得して使ってる def after_destroy(b) logger.info( deleted + b.inspect) end end で、作ったコールバッククラスを登録 class Book ActiveRecord Base after_destroy BookCallbacks.new 共通化は、これがいいのかな? オブザーバーとして定義 コールバックだとモデルに対して登録するしか無いけど、オブザーバーなら設定ファイルで着脱可能 要するにコールバックはモデルのデータに対しての処理を書き、オブザーバーはモデル操作のタイミングで行うべき処理を書くらしい 使い方は、まずオブザーバーのクラスをrailsコマンドで生成(この場合はBookに対してのオブザーバーを生成) C \user\dev\railbook\app rails g observer Book invoke active_record create app/models/book_observer.rb invoke test_unit create test/unit/book_observer_test.rb で、生成されたBookObserverクラスに、こんな感じでメソッドを追加 class BookObserver ActiveRecord Observer cattr_accessor logger # この中でloggerクラスを直接使えないので、 self.logger ||= Rails.logger # Railsのloggerを取得して使ってる def after_save(b) logger.info( saved + b.inspect) end end あとは、設定ファイル(config/environments/development.rb)に、以下の設定を追加 Railbook Application.configure do config.active_record.observers = book_observer で、あとは、WEBrickを再起動すれば「saved」のログが出るようになる! ほんとは、オブザーバーではデータソースに関わらない処理を書くので、ここではログを書くべきじゃないよ!通知メール送信とかが正しい感じ -
https://w.atwiki.jp/comcatet/pages/41.html
制御文for - JavaScript | MDN for...in - JavaScript | MDNオブジェクトの列挙可能プロパティに対するループ処理 for...of - JavaScript | MDN while - JavaScript | MDN do...while - JavaScript | MDN 配列(Array)Array.prototype.forEach() - JavaScript | MDN Array.prototype.every() - JavaScript | MDNコールバック関数が全てtrueを返せば、戻り値true。コールバック関数がどこかでfalseを返すと、その時点でループ処理が終了して戻り値false。 Array.prototype.some() - JavaScript | MDNコールバック関数が全てfalseを返せば、戻り値false。コールバック関数がどこかでtrueを返すと、その時点でループ処理が終了して戻り値true。 Array.prototype.find() - JavaScript | MDNコールバック関数がtrueを返す最初の要素を返す。 indexが欲しければ↓ Array.prototype.findIndex() - JavaScript | MDN Array.prototype.filter() - JavaScript | MDNコールバック関数がtrueを返す配列要素のみで構成された新しい配列を返す。 Array.prototype.map() - JavaScript | MDNコールバック関数が返す値で構成された新しい配列を返す。 Array.prototype.reduce() - JavaScript | MDN前の要素の処理結果を次の要素の処理に使える。最後の要素の処理結果がこのメソッドの戻り値となる。 処理の順番を配列の後ろ側からにしたければ↓ Array.prototype.reduceRight() - JavaScript | MDN Array.prototype.entries() - JavaScript | MDN配列のindexと要素をkey/value型(Map型)のイテレータにして返す。 MDNでは反復メソッドに分類されてるけど、内部的にはともかく表面的にはアクセサメソッドじゃない? というか、引数無くて戻り値一定なので、メソッドである必要すら無い気が。 keyのみ、valueのみのイテレータが欲しければ↓ Array.prototype.keys() - JavaScript | MDN Array.prototype.values() - JavaScript | MDN ↓現在では Array.from() を使用すればいいので、不要。 NodeListを配列に変換するのにArray.applyを使うのはどうか - rikubaの日記 配列ライクなオブジェクトをforEachするときのイディオム - ぷちてく - Petittech
https://w.atwiki.jp/ebi_xyz/pages/16.html
住所から経度・緯度を取得する場合は、GClientGeocoder.getLatLng()を使う。 getLatLng()の第1引数に住所を、第2引数にコールバック関数を指定する。 経度・緯度を取得した場合は、コールバック関数に取得した経度・緯度を持つGLatLngクラスのオブジェクトが渡される。 経度・緯度が取得できなかった場合は、コールバック関数はnullを受け取る。 以下はサンプル。 var address = "福岡タワー"; // addressは住所だけでなく、建物名等も可 var geocoder = new GClientGeocoder(); geocoder.getLatLng( address, function( point ) { if( point ) { // ジオコーディング成功時 alert( "経度:" + point.x + ", 緯度:" + point.y ); } else { // ジオコーディング失敗時 } }); 2011-11-24
https://w.atwiki.jp/bokuyo/pages/160.html
関数オブジェクト Cでいうところの関数ポインタっぽいの。コールバック関数 ただインライン展開されるから効率いい
https://w.atwiki.jp/frostar/pages/97.html
先日、でたとこサーガの支援ツールを公開しました。 これは公式のキャラクター登録書からデータを取得しています。 公式のキャラクター登録書ではJSON形式のデータが公開されており、 キャラクターのURLに.jsonを付加することで、JSONのデータを参照することが可能です。 このJSONデータの中身を支援ツールの項目に反映させています。 このように、Web上に公開されているデータを取得して扱うことはよくあるケースです。 データを取得するためにはXMLHttpRequestを使うことが多いですが、 XMLHttpRequestにはクロスドメイン制約というものがあるので、 自分と異なるドメインに存在するデータを取得する事ができません。 jQueryとjquery.xdomainajax.jsというプラグインを使うことで可能になるのですが、これはちとめんどい。 そこで、JSONPという技術があります。 JSONPに対応したページであれば、簡単にJSONのデータを取得することが可能になります。 JSONPはscriptタグのsrcとして、URLの最後にコールバック関数を指定すると、 そのURLのデータを取得し、コールバック関数が呼ばれます。 コールバック関数の引数にはJSONのデータが渡されてくるので、これを処理すればいいわけです。 例えば、でたとこサーガの公式登録書では http //detatoko-saga.com/character/[Number].json というURLで[Number]の番号のキャラクターのJSONファイルを参照することができるので、 script src="http //detatoko-saga.com/character/1.json callback=onload" というタグを書けばキャラクター番号1番のデータを取得して、onloadという関数が呼び出されます。 onloadという関数を定義してその中でjsonデータを処理してやれば、公式登録書のデータを扱えます。 function onload(json) { //jsonデータの処理 } JSONPで得られるデータは{}で囲まれている部分はMap、[]で囲まれている部分は配列として戻ってきます。 公式登録書のデータ形式の仕様について詳しくは省略しますが、 例えば、キャラクターの名前はjson["name"]、 2つ目のスキルのスキルランクはjson[1]["rank"]で取得することができます。 あとは、これらを自分のツールのデータに適用するだけ! もちろん、動的scriptタグを生成しても同様に読み込めるので、 目的のデータがJSONPにさえ対応していればこのように簡単に処理が可能です。