Kokudoriing

技術系与太話ブログ

WebViewのinvokeScriptではまったところ

.NETでWebアプリのクライアントアプリを作る場合、Windows.UI.Xaml.Controls.WebView を使ってスクレイピングをしたりするわけです。 その時、InvokeScriptAsyncを使ったりするわけです。 こいつは第1引数に呼び出すJavaScriptの関数を、第2引数にその関数…

Gavia(ActiveRecor for IndexedDB) v0.1.0 リリース

半年以上前に作ったActiveRecordなIndexedDBライブラリをちょこちょこ手直ししてみました。 https://github.com/kokudori/gavia/ http://kokudori.github.io/gavia/ 例によってbower install gaviaで入ります。 一番の変更点は今までjQueryDeferredを使うた…

JSFuckから理解するECMAScriptの仕様

JSFuckとは JSFuckは任意のJavaScriptプログラムを[, ], (, ), !, +からなる6文字で置き換える試みです。 意味分かんないですね、サンプルを見てみましょう。 alert(1) 上記のJavaScriptコードと [][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+…

IndexedDBをActiveRecord風に使えるライブラリを作ってみた

タイトルまんまです。 ドキュメントやら詳しくはhttp://kokudori.github.io/gavia/まで。 インストールはbower使うと簡単です。 bower install gavia そもそもIndexedDBはそれはもう非同期非同期した何かなのです。 その上、標準ライブラリはコールバックパ…

条件式判断でリストを分割する拡張メソッド

C#

何を言ってるのかわからないかもしれませんが、いわゆる文字列のSplitのリスト版というかIEnumerable<T>版というかが欲しい。 var nums = new { 1, 2, -1, 5, 6, 8, -1, 11, 2, 4, 6, -1, 9 }; // -1を区切り数としてリストを分割したい. // {{1, 2}, {5, 6, 8}</t>…

npmとpackage.json使い方

node.jsと言えばnpmですよ。 それくらいnpm素敵です。RubyのBundlerとかvimのVundleとかみたく素敵です。 まずはnpmの作法というか、思想というか。 いや、npm含めnode.js初心者なので間違ってたらこっそり教えていただければ幸いです。。 npmはローカルイン…

Grunt0.4.xでのGruntプラグインの作り方

結構前にGrunt.jsがバージョン0.4.xになりました。 ・・・、マイナーバージョンアップというか実質メジャーバージョンアップというか。 かなり変わったのでプラグイン作成とGrunt自体の使い方について備忘録までに。 かなり大きな変更として、Grunt.js本体と…

C#でPEGパーサー

C#

PEGって何?って方はWikipediaを御覧ください。 (正直ボクもよくわかってない・・) ざっくりと、BNFよりも曖昧性のないものを扱うのが得意みたいで、Shift/Reduceコンフリクトが発生しないとのこと。 Perl6がPerl6 rulesとかで言語レベルに組み込んでるアレ…

Coding Guidelines for C# 3.0, 4.0 and 5.0を読んで

C#

Dennis Doomenさんとやら(よく知らない)がお作りになった「Coding Guidelines for C# 3.0, 4.0 and 5.0」 というC#のコーディングガイドラインがあるんですが、それが日本語翻訳されたらしいとのこと。Coding Guidelines for C# 3.0, C# 4.0 and C# 5.0 - Do…

Command/Query分離原則とreturn this

Command/Query分離原則はバーランド・メイヤー大先生のありがたいお言葉です。 内容はと言うと、 オブジェクトやシステムのインターフェイス&実装を「CommandとQueryに分けろよ」という提案。 Commandは値を持たず、副作用(つうか、主作用だけど)だけを持…

Kindle WhitePaper 3GとKindle Fire HDを2台持ちするということ

Kindle WhitePaper 3GとKindle Fire HD両方買っちゃいましたー。わーい。 Kindle Paperwhite 3G出版社/メーカー: Amazon.co.jp発売日: 2012/11/19メディア: エレクトロニクス購入: 97人 クリック: 7,185回この商品を含むブログ (113件) を見る Kindle Fire H…

ファイルを連結して任意の変数を公開できるようにするGruntプラグイン「grunt-encase」を作ってみた

JavaScript(特にブラウザ環境)は名前空間やらの概念がないのでファイル分割が大変苦しい。 グローバル汚染を考えて各ファイルを匿名関数(即時実行パターン)にいちいち入れないとダメ。 でもそうするとやたらテストするのが辛くなります。hogehoge.js (functi…

四季 夏

読了。 四季 夏 (講談社文庫)作者: 森博嗣出版社/メーカー: 講談社発売日: 2006/11/16メディア: 文庫購入: 2人 クリック: 12回この商品を含むブログ (125件) を見る

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック

読了。 リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)作者: Dustin Boswell,Trevor Foucher,須藤功平,角征典出版社/メーカー: オライリージャパン発売日: 2012/06/23メディア: 単行本(ソフトカバー)購…

四季 春

読了。 四季 春 (講談社文庫)作者: 森博嗣出版社/メーカー: 講談社発売日: 2006/11/16メディア: 文庫購入: 3人 クリック: 27回この商品を含むブログ (139件) を見るロリコンホイホイ。

赤緑黒白

読了。 赤緑黒白 (講談社文庫)作者: 森博嗣出版社/メーカー: 講談社発売日: 2005/11/15メディア: 文庫 クリック: 8回この商品を含むブログ (108件) を見るつまりVシリーズ読了。 次は四季シリーズ。どうでもいいけど、「赤、緑」ときて「青」(光の三原色)っ…

朽ちる散る落ちる

読了。 朽ちる散る落ちる (講談社文庫)作者: 森博嗣出版社/メーカー: 講談社発売日: 2005/07/15メディア: 文庫 クリック: 10回この商品を含むブログ (101件) を見る言葉が思考の言語化なら、その意味は主観的で相対的。

インタフェースデザインの心理学 ―ウェブやアプリに新たな視点をもたらす100の指針

読了。 インタフェースデザインの心理学 ―ウェブやアプリに新たな視点をもたらす100の指針作者: Susan Weinschenk,武舎広幸,武舎るみ,阿部和也出版社/メーカー: オライリージャパン発売日: 2012/07/14メディア: 大型本購入: 36人 クリック: 751回この商品を…

REMIX ハイブリッド経済で栄える文化と商業のあり方

読了。 REMIX ハイブリッド経済で栄える文化と商業のあり方作者: ローレンス・レッシグ,山形浩生出版社/メーカー: 翔泳社発売日: 2010/02/27メディア: 単行本(ソフトカバー)購入: 2人 クリック: 73回この商品を含むブログ (34件) を見るしかし経済書かと思…

UXデザイン入門―ソフトウェア&サービスのユーザーエクスペリエンスを実現するプロセスと手法

読了。 UXデザイン入門―ソフトウェア&サービスのユーザーエクスペリエンスを実現するプロセスと手法作者: 川西裕幸,潮田浩,栗山進出版社/メーカー: 日経BP社発売日: 2012/01メディア: 単行本購入: 5人 クリック: 246回この商品を含むブログ (4件) を見る副題…

未来のモノのデザイン

読了。 未来のモノのデザイン作者: ドナルド・A・ノーマン,安村通晃,岡本明,伊賀聡一郎,上野晶子出版社/メーカー: 新曜社発売日: 2008/10/25メディア: 単行本購入: 15人 クリック: 87回この商品を含むブログ (31件) を見る面白かったのは「奴隷化と改善」の…

捩れ屋敷の利鈍

読了。 捩れ屋敷の利鈍 (講談社文庫)作者: 森博嗣出版社/メーカー: 講談社発売日: 2005/03/15メディア: 文庫購入: 1人 クリック: 8回この商品を含むブログ (91件) を見る り‐どん【利鈍】 1 刀剣などの、鋭いことと鈍いこと。 2 利発なことと愚鈍なこと。…

コアjQuery+プラグイン/jQuery UI 開発実践技法

読了。 コアjQuery+プラグイン/jQuery UI 開発実践技法 (Programmer’s SELECTION)作者: Bear Bibeault,Yehuda Katz,吉川邦夫出版社/メーカー: 翔泳社発売日: 2011/08/31メディア: 大型本購入: 8人 クリック: 296回この商品を含むブログ (18件) を見る一部が…

デザイニング・インターフェース ―パターンによる実践的インタラクションデザイン

読了。 デザイニング・インターフェース ―パターンによる実践的インタラクションデザイン作者: Jenifer Tidwell,ソシオメディア株式会社,浅野紀予出版社/メーカー: オライリー・ジャパン発売日: 2007/01/23メディア: 大型本購入: 29人 クリック: 650回この商…

call signatureを実装したインターフェイスを実装したクラスを作りたかった

何を言ってるのかわけわかんないですね。 TypeScriptのクラスはJavaScriptにコンパイルされると関数になります。 なので、直接呼び出すことも、new付きで呼び出すことも(JavaScript的には)可能です。ただ、クラスがnew付きで呼び出し可能であることは直感的…

六人の超音波科学者

読了。 六人の超音波科学者 (講談社文庫)作者: 森博嗣出版社/メーカー: 講談社発売日: 2004/11/16メディア: 文庫 クリック: 41回この商品を含むブログ (95件) を見る森先生は科学者として理想の空間が既に存在し、結局外乱(主に経済的要因)で台無しになって…

アジャイルサムライ−達人開発者への道−

読了。 アジャイルサムライ−達人開発者への道−作者: Jonathan Rasmusson,西村直人,角谷信太郎,近藤修平,角掛拓未出版社/メーカー: オーム社発売日: 2011/07/16メディア: 単行本(ソフトカバー)購入: 42人 クリック: 1,991回この商品を含むブログ (232件) を…

TypeScriptってなにさ

TypeScriptは10/1にMicrosoftが発表したJavaScript互換の新言語。 C#設計チームのチーフであるAnders Hejlsbergらによって開発されただけあって素敵構文。というわけで続々とJavaScript周りの言語が溢れかえってるわけですが。 最近だとDeNAのJSXとかが話題…

エモーショナル・デザイン―微笑を誘うモノたちのために

読了。 エモーショナル・デザイン―微笑を誘うモノたちのために作者: ドナルド・A.ノーマン,岡本明,安村通晃,伊賀聡一郎,上野晶子出版社/メーカー: 新曜社発売日: 2004/10/15メディア: 単行本購入: 3人 クリック: 132回この商品を含むブログ (58件) を見るこ…

スコープチェーンについて(2回目)

現在「ハイパフォーマンスJavaScript」読んでるわけですが。 ハイパフォーマンスJavaScript作者: Nicholas C. Zakas,水野貴明出版社/メーカー: オライリージャパン発売日: 2011/03/20メディア: 大型本購入: 9人 クリック: 1,176回この商品を含むブログ (30件…

プログラマが知るべき97のこと

読了。 プログラマが知るべき97のこと作者: 和田卓人,Kevlin Henney,夏目大出版社/メーカー: オライリージャパン発売日: 2010/12/18メディア: 単行本(ソフトカバー)購入: 58人 クリック: 2,107回この商品を含むブログ (329件) を見る所謂「きのこ本」。 ま…

プログラミングF#(オライリー)

F#

読了。 さて、ようやくひと通り読み終えたので F# 勉強のスタートラインに立てたかな。 しかし F# は専門化された型がいっぱいありますね。 そして判別共用体+パターンマッチは美しいですね。感動。というわけで色々 F# で遊んでいたのですが、いかんせんVi…

jQueryのカスタムイベントはどこにバインドさせるべきか

例えばサイドバーのアニメーションを促すカスタムイベントを使う場合。 サイドバーにはいろんな機能があるとして、専門のサイドバーオブジェクトを作ったとする。でも $('#sidebar').on('click', function() { /* */ }) とすると保守がしんどい。この場合、$…

プログラミングF#

C# F#

絶賛読書中なう。 プログラミングF#作者: Chris Smith,頃末和義,鈴木幸敏出版社/メーカー: オライリージャパン発売日: 2010/08/26メディア: 大型本購入: 4人 クリック: 47回この商品を含むブログ (19件) を見るただ、158ページ、159ページでこんなことが。 …

undefined リテラルと NaN リテラル

undefined は変数宣言(初期化なし)時の規定値です。 NaN は 0 除算時の結果等、常用数学として不適切な値を意味します。 それぞれ undefined、NaN というリテラル表記が ありません。 console.log(undefined); // undefined console.log(NaN); // NaN あれ、…

コレクション初期化子を独自型に実装する

C#

さて、昨日デバッガを騙すという記事を書いたんですが、 独自型に対してコレクション初期化子を適用したりしてました。 そう、C#3.0から独自型にもコレクション初期化子は適用可能です。 素敵!ただもちろん条件はあります。 1.IEnumerable を実装している…

デバッガを騙す

C#

C# は良くも悪くも IDE べったりな言語。 言語が特定ツールに依存することは賛否両論ですが、少なくとも C# はそういう言語だからシカタナイ。 そして IDE と言えば IntelliSense とデバッガですね。 今回はそのデバッガのお話。よく C# でクラスや構造体を…

スコープチェーンとは何か。そもそもスコープとは何か

2012/09/28 追記 すいません、この記事かなり間違った情報を載せてしまってます。 詳しくはこちらを参照ください。 JavaScript には大きく4つの鬼門が存在します。 頑張りすぎる暗黙の型変換。 馴染みのない prototype チェーン。 やたら参照が変わる this…

パソコンを隠せ、アナログ発想でいこう!―複雑さに別れを告げ、“情報アプライアンス”へ

読了。 しかしタイトルが安っぽいですね。 内容は非常に面白かったですが。パソコンを隠せ、アナログ発想でいこう!―複雑さに別れを告げ、“情報アプライアンス”へ作者: ドナルド・A.ノーマン,安村通晃,岡本明,伊賀聡一郎,Donald A. Norman出版社/メーカー: 新…

location.href と location.assign(url)

現在の表示しているページを URL に紐付いたページに移動したい場合。 location.href プロパティに URL 文字列を代入すればOKです。 ちなみに location オブジェクトに直接 URL 文字列を代入しても同じ結果になります。 ただ、location.assign メソッドを使…

配列っぽそうで配列っぽくない少し配列っぽいオブジェクト

かなり今さらなネタ。 食べたいと思いつつまだ食べたことないのでいつか食べたいです。 桃屋 辛そうで辛くない少し辛いラー油 110g出版社/メーカー: 桃屋メディア: 食品&飲料購入: 14人 クリック: 52回この商品を含むブログ (40件) を見る本題。 JavaScript …

jQueryとイベントドリブンと私

jQueryと言えばjQuery.DeferredとjQuery.CallbacksとjQuery.Eventですよね。 おまけにDOM操作も出来るライブラリ。恐らくjQueryバリバリ書いてらっしゃる方々は何を今更といった話しなんでしょうが、 jQuery初心者の自分にとってはjQueryのイベントドリブン…

例外とは何か

大抵のプログラミング言語には例外機構がサポートされています。 しかし、例外とは何でしょう。 「例外」という言葉からはなんとなく「ダメだった」、「失敗した」といった印象を感じられます。 つまり、「イレギュラー」な事。「異常」なことといった印象。…

恋恋蓮歩の演習

読了。 森作品的には「今はもうない」につぐ内容の衝撃さだった。 最初のまったりとした空気と後半の展開の速さとかも結構似てますね。 ただ内容がグロテスク(肉体的ではなく精神的に)だったのでちょっと疲れた。恋恋蓮歩の演習 (講談社文庫)作者: 森博嗣出…

typeof やら instanceof やら toString.apply やら

jQuery や underscore.js では isFunction とか isArray とかの型判定関数的なものがあります。 え?ライブラリ使わないとJavaScriptはろくに型すら判別できないの?半分YESで半分NO。 そもそも typeof とはなんぞやというお話し。よく typeof と instanceof…

拡張メソッドの「拡張」ってなにさ

C#

拡張メソッドはC#3.0から主にLINQをサポートするために追加された機能。 もちろんLINQ以外にもいろんな用途に使えます。そもそも拡張メソッドの「拡張」とは何か。 安直に考えれば既存の型に機能を拡張するというもの。 では何故拡張するのか。つまりバージ…

あったらいいんじゃないかと思うjQuery.fn達

jQuery のプラグインってどうしても UI 周りが多いですね。 UI に依存しないプラグインをまとめてるサイトとかあったりしないですかね。 $.fn.toString = function() { var isAllClonable = this.filter(function() { return !this.cloneNode; }).length > 0…

jQuery.fn.bind, unbind, live, die, delegate, undelegate を使ってはいけない

$.fn.on, $.fn.off を使いましょう。 on と off はそれらを完全に置き換えるAPI。 タイピングも少なく済むのでありがたいですね。 on と off についてはこちらあたりで詳しく解説されてます。でも既存のAPIでうまく行ってるのに on と off を使うメリットっ…

ブログ

元々fc2でブログやってたんですが、パスワード忘れて管理画面に行けなくなりました\(^o^)/ やはりこれからの時代はOAuth(パスワードを直接入力しない認証方法)ですよね、と言い訳。というわけで毎日更新縛りします。 一ヶ月後の記事のクオリティがツイート…