archive-com.com » COM » N » NITOYON.COM

Total: 757

Choose link from "Titles, links and description words view":

Or switch to "Titles and links view".
  • WinRT の async/await コーディングがおもしろい(のでJavaScriptで真似してみた) - てっく煮ブログ
    呼び出し元に return する SyndicationFeed feed await client RetrieveFeedAsync feedUri ここから先は 非同期で RSS Atom を 読み取り完了時の処理 FeedData feedData new FeedData feedData Title feed Title Text foreach SyndicationItem item in feed Items RSS の各要素の処理を行う catch Exception ex 非同期での RSS Atom の読み取りに 失敗したときの処理 TitleText Text ex Message コメントで説明してしまいましたが 詳しく見ていきましょう await でいったん呼び出し元に戻る await の部分の処理の構造は次のようになっています try 非同期で RSS Atom を読み取る SyndicationFeed feed await client RetrieveFeedAsync feedUri 成功時の処理 catch Exception ex 失敗時の処理 同期処理のようなコードになっていますね しかし 実際には await キーワードの場所で メソッドは呼び出し元に処理を返します その結果 非同期処理の実行中に UI をブロックすることはありません その後 RSS Atom の読み取りが成功または失敗した段階で メソッドの続きが実行されます 成功時には 読み取り結果があたかも同期で実行したかのように戻り値として返され 成功時の処理を実行します 失敗時には例外が投げられるので 異常系の処理も簡単に書けます イメージ的には次のようなコードを書いているのと同じになります 実際には動かない擬似的なコード client RetrieveFeedSuccess sender e 成功時の処理 client RetrieveFeedError sender e 失敗時の処理 非同期で RSS Atom を読み取る client RetrieveFeedAsync feedUri すばらしい 非同期を同期的に書けるなんてすばらしい コールバックやイベントハンドラ地獄から抜け出せそうな予感 ところで どういう仕組みなのか ところで await キーワードはどのような仕組みで動いているのでしょうか WinRT の非同期メソッドは全て Task オブジェクト Task TResult オブジェクトを返すように実装されています Task クラス Task TResult クラスは 非同期処理を表現するクラスです 自前のメソッドでも async キーワードをつけることで void を返すメソッドは戻り値 Task として 型 T を返すメソッドは戻り値 Task T として扱われます NET 5 では継続の仕組みが導入されたので メソッドの処理の途中で 処理をぶった切ったり 再開したりすることができるようになっています async await キーワードは Task クラス Task TResult クラスを利用しつつ 継続を利用してメソッドの処理を途中で中断したり 中断したところから続きをやり直したりするためのシンタックス シュガーになっているそうです JavaScript でも実現できるんじゃね ところで JavaScript 1 7 からは yield が使えるようになっています ただし 現時点で動くのは Firefox のみ そこで yield を使っても同じような仕組みを実現できるんじゃないかと思って作ってみました ほぼ形は似ていますが XHR を使った Ajax 処理を await 風に書けるようにしてみました await や return の変わりに yield を使っています また XHR を await できるように変換する awaitable 関数を作っています var doXhrTwice async function var xhr awaitable new XMLHttpRequest xhr open GET location href true var result yield xhr send null log finished result status xhr status xhr awaitable new XMLHttpRequest xhr open GET not found png true result yield xhr send null log finished result status xhr status yield 3 これの関数を普通に呼び出すと ログ出力は次のようになります doXhr start doXhr end finished true status 200 finished false status 404 function init1 log doXhr start doXhrTwice log doXhr end init1 から doXhrTwice を呼んでもすぐに処理が返ってくるので 関数呼び出し直後に doXhr end が出力されます ただ doXhrTwice の中では同期的に処理を書けています 次に doXhrTwice を同期的に呼んでみます doXhr start finished true status 200 finished false status 404 doXhr end 3 var init2 async function log doXhr start

    Original URL path: http://tech.nitoyon.com/ja/blog/2011/09/29/async-await-in-js/ (2016-02-13)
    Open archived version from archive


  • タグ「C#」の記事一覧 - てっく煮ブログ
    2011年09月29日 JavaScript C スクリーン座標 クライアント座標の変換いろいろ 2009年02月18日 ActionScript C Win32 WPF C RegAsm では JScript からコレクションとして参照できないので ATL で作り直した話 2008年08月01日 C Win32 C で COM コンポーネントを公開する 2008年07月31日 C C の JScriptCodeProvider で JScript NET と仲良くする 2008年06月05日 JavaScript C Microsoft mshtml dllの怪 2004年11月24日 C IDocHostUIHandlerの設定方法 2004年11月14日 C JScriptやVBScriptをプログラムから利用する 2004年10月08日 C TreeView や ListView のオーナードロー 2004年09月16日 C VC でプロパティを自動作成するマクロ 2004年09月15日 C AxWebBrowserをサムネール表示に使う 2004年09月15日 C WinForms のコントロールの枠 2004年09月13日 C WinForms のショートカットキーで使えるキーを増やす方法 2004年09月13日 C タグ一覧に戻る About

    Original URL path: http://tech.nitoyon.com/ja/blog/tags/c%23/ (2016-02-13)
    Open archived version from archive

  • jQuery.extend マニアックス - てっく煮ブログ
    D prototype extend B prototype とやってしまうと B prototype が書き換えられてしまう そこで 一旦 空オブジェクトに B prototype をコピーしておいて D に実装したいメソッドを上書きコピーしてあげている ちなみに D prototype extend B prototype は 次のように 書いてもよい 書くと同じように動くように見えるが D prototype extend B prototype こうすると B と D に同じメソッド名を作成しようとしたときに B のものが優先されてしまうので注意が必要だ target を省略した extend 次は target を省略した extend の呼び出しパターン3つを見る extend obj fn extend obj extend obj target を省略して obj が1つしかない場合には extend を呼び出したときの this が target として解釈される extend obj extend obj は jQuery 自身を obj で拡張する 例えば extend min function a b return a b a b とすると min 3 5 で小さいほうの値を取得できる 引用元 jQuery extend object jQuery 日本語リファレンス jQuery クラスに static メソッドを追加するようなイメージだ fn extend obj fn は jQuery prototype のこと つまり fn extend obj を利用すると jQuery オブジェクトにメソッドを追加できる たとえば fn extend log function console log this return this とすることで log メソッドを追加できる 例えばこんな風にして使う div log each function メソッドチェーンの途中に突っ込んでログ出力できて便利 fn extend は各種 jQuery プラグインの実装で頻繁に利用されている extend obj 実際に利用されてるのは見たことないし 公式ドキュメントにも書いていないんだけど これが意外に便利なんじゃないかというのが今回の本題 本題までが長かった extend obj を使うと extend されるのは jQuery オブジェクト自身 jQuery オブジェクトにメソッドを追加できる 例えば フォームの要素を enable disable する という処理がソースのあちらこちらに存在しているする form submit function form 配下のコントロールを disable にする this find enabled attr disabled disabled var self this post url function POST が完了すると コントロールを enable にする self find disabled attr disabled json return false この例ではまだ一箇所だが find enabled attr disabled disabled のようなコードが色んな場所にあると ソースが煩雑になる そこで

    Original URL path: http://tech.nitoyon.com/ja/blog/2011/03/24/jQuery-extend-mania/ (2016-02-13)
    Open archived version from archive

  • タグ「jQuery」の記事一覧 - てっく煮ブログ
    jQuery JavaScript jQuery UI モーダルダイアログの仕組み 2011年03月03日 jQuery JavaScript jQuery と object タグの怪 その2 2009年02月20日 JavaScript jQuery Silverlight jQuery と object タグの怪 2009年02月19日 JavaScript jQuery Silverlight はてブ年鑑2009年1月分うp と jQuery remove の高速化話 2009年02月02日 はてブ年鑑 jQuery JavaScript jQuery を高速に使う CSS セレクタの書き方 2008年12月11日 jQuery JavaScript CSS jQuery の配列系のメソッドをメモしとこ 2008年11月21日 jQuery JavaScript jQuery の bind unbind の裏側 2008年01月15日 jQuery JavaScript 論理演算子 と を応用する 2007年12月27日 jQuery JavaScript ActionScript タグ一覧に戻る About Profile nitoyon にとよん 京都のベンチャー会社勤務 プログラマ たまに趣味でデザイン

    Original URL path: http://tech.nitoyon.com/ja/blog/tags/jquery/ (2016-02-13)
    Open archived version from archive

  • twitter の console.log() エラーよけ - てっく煮ブログ
    こういうおまじないを書いておくと安心だろうなー と思っていたら twitter のソースコードに次のようなコードを発見 if window console function var names log debug info warn error assert dir dirxml group groupEnd time timeEnd count trace profile profileEnd window console for var i 0 i names length i window console names i function 新 UI になってからは JavaScript の役割が大きくて console log を残して JavaScript エラーを出してしまうと致命的だからでしょうか 念には念を押して ということなのかもしれませんが 少しびっくりしました 本題から外れますが 日本赤十字に10万円寄付してみました さらに はてなのポイントを450ほど寄付してみました 何もできないもどかしさが少しだけ軽くなったような気がします 被災された方々には 心からお見舞い申し上げます 一刻も早い復旧を心よりお祈り申し上げます Tweet 2011年03月18日 編集履歴 JavaScript Twitter jQuery UI モーダルダイアログの仕組み

    Original URL path: http://tech.nitoyon.com/ja/blog/2011/03/18/console-log-twitter/ (2016-02-13)
    Open archived version from archive

  • タグ「Twitter」の記事一覧 - てっく煮ブログ
    ネタ Twitter Twitter の crossdomain xml 問題について 2008年03月10日 Twitter セキュリティー Flash ついったー足あとちょう 2007年11月13日 ActionScript Twitter すごく楽しかった Flash 談義のログをまとめてみたよ 2007年05月10日 Twitter ActionScript Adobe CS3 解禁 と Twitter な1日 2007年05月09日 Twitter Twitter が面白い 2007年04月08日 Twitter twitter はじめました 2007年04月03日 Twitter タグ一覧に戻る About Profile

    Original URL path: http://tech.nitoyon.com/ja/blog/tags/twitter/ (2016-02-13)
    Open archived version from archive

  • jQuery UI モーダルダイアログの仕組み - てっく煮ブログ
    function event if event keyCode ui keyCode TAB return var tabbables tabbable this first tabbables filter first last tabbables filter last if event target last 0 event shiftKey first focus 1 return false else if event target first 0 event shiftKey last focus 1 return false Tab キーが押されたら ダイアログ外にフォーカスが移らないよう 無理やりダイアログ内にフォーカスを設定している ちなみに ソース中に tabbable という CSS 擬似クラスが登場しているが これは jquery ui core js で独自定義されているもので 標準の CSS や生の jQuery では利用できないので注意が必要だ フォーカスを無理やりなんとかするようなブラウザ拡張がインストールされていたら対処しきれないが 多くの場合ではこの実装で問題なさそうだ Tweet

    Original URL path: http://tech.nitoyon.com/ja/blog/2011/03/03/jquery-modal-dialog/ (2016-02-13)
    Open archived version from archive

  • Skype Extension for Firefox と Security error" code: "1000 - てっく煮ブログ
    sheets document styleSheets var sheet sheets sheets length 1 CSS の最後に追加 IE では addRule を Firefox では insertRule を使う if sheet addRule sheet addRule selector property sheet rules length else if sheet insertRule sheet insertRule selector property sheet cssRules length 最後のスタイルシートオブジェクトに対して insertRule で CSS のルールを追加しようとしてる ところが Skype のプラグインが追加で CSS を突っ込んでいたため 最後のスタイルシートオブジェクト は Skype プラグインのものになってしまっていた ここに insertRule しようとして サンドボックスが異なってエラーになってたようだ これも相性問題か 今まで動いていたコードが動かなくなった理由は Skype をインストールしたこと が原因だったようだ Skype Extension for Firefox はお行儀が悪いので即効で削除した 削除してみると 何事もなかったように動くようになっていた

    Original URL path: http://tech.nitoyon.com/ja/blog/2009/11/20/extention-vs-my-code/ (2016-02-13)
    Open archived version from archive



  •