本は思想や未来に影響を与える。お前もブックサンタにならないか? 12月ですね。しわーっす!(挨拶) 年末になると募金だとか寄付、助け合いの話題が盛り上がりますね。 以前にも、インターネットに恩返しして、人類の発展に貢献しちゃおうという記事やら、Be My Eyes について書いたりしたのですが、ちょっとした自分の時間や少しのお金…

JavaScriptデザインパターンってなんだかたいそうなものに考えられがちだけど、実は、そこかしこのライブラリや仕様に取り込まれていることが多い。「デザインパターン分からん」とか「で、どうやって使うのよ」と悶々としている人には、「どういうところで使わているのか」を知っておけばイメージも沸きやすいし、意外にたいしたことないんだな、ということが分かるんじゃないだろうか。そこで、JavaScript やその周辺の技術で、デザインパターンがどのように使われているかを紹介してみることにする。ここでは、GoF本の順番に沿って、以下の11個のパターンを取り上げる。生成に関するパターン Factory MethodAbstract FactoryBuilderPrototypeSingleton構造に関するパターン AdapterComposite振る舞いに関するパターン Chain Of Respon
大学でコンピュータ科学を学ぶ学生の多くは、C++やJavaなどのプログラミング言語を学び始める際に難しいと感じる。その主な理由の一つはLOGOなどの単純な中等教育向けの言語と、より高度なOOP(オブジェクト指向プログラミング)言語との間に大きな隔たりがあるためだ。そこでその隙間を埋めるためにCMU(カーネギーメロン大学)の研究者たちがAliceを開発した。Aliceは、3Dモデルを使用してコンピュータアニメーションを作成するOOP言語だ。 Randy Pausch氏率いるCMUの研究者チームがコンピュータ科学を学ぶ学生向けのC++とJavaの様々な入門用教科書を調べたところ、条件分岐、ループ、再帰、関数/メソッド、コレクション(たいていは配列だがリストのこともある)、オブジェクト、継承、カプセル化、ポリモルフィズムなど、説明が不可欠である概念がいくつかあることがわかった。Aliceでは、学
Flash/Flex のアプリケーションを開発していると (たまには) メモリリークとか気になることもあるかと思います。今回は Flash Player 9 のガーベジコレクションについてです。詳細な実装レベルだと、Flash Player のアップデート時に、ガーベジコレクション周りでも多少の変更が行われたりしていますが、いまのところ基本的なモデルは変わっていません。今回はこの ”基本的なモデル” を紹介します。 Flash Player 8 以前は少し違ったモデルになっています。以下の記述内では Flash Player とあったら Flash Player 9 のことだと思ってください。 Flash Player のメモリ確保 Flash Player のメモリ確保時の動作は特にユニークなものではありません。が、話の基本になるのでとりあえず以下概要です。 メモリの確保は負荷の高い部
javascriptのprototypeはなかなか理解してもらえないですねぇ。 ここ1年間でマジマジと実感しました。 特に、大規模開発をしているとこだと、いろんな知識が入り乱れていて(ホームページ時代からAjax本を読んだ人とか)が、javascriptが単なる関数型列挙な言語(語弊があるけど)という見方が大多数を占めているように見えます。 そんな中で "String.prototype.trim" みたいなコードを見せても、説明下手なのか中々上手く伝わらないですねぇ。 ということで(?)、僕がjavascriptのprototypeを身に着けるまでやったこと、とか。これも備忘 prototype.jsのソースコードを眺める Array.mapとかEnumerable, Hashは勉強になりますねー。 ただ、prototype継承されすぎて、ちょっと多すぎなこともあります。 var
JavaScript のオブジェクトはプロパティ(自身のプロパティを指す)の動的な「袋」です。 JavaScript のオブジェクトは、プロトタイプオブジェクトへのリンクを持っています。あるオブジェクトのプロパティにアクセスしようとすると、オブジェクトだけでなく、オブジェクトのプロトタイプ、プロトタイプのプロトタイプへと、一致する名前のプロパティが得られるか、プロトタイプチェーンの終端に到達するまで、プロパティの探索が行われます。 メモ: ECMAScript 標準に従い、 someObject.[[Prototype]] という表記を someObject のプロトタイプを示すのに使用しています。内部スロット [[Prototype]] には Object.getPrototypeOf() と Object.setPrototypeOf() 関数でアクセスすることができます。これは、標準
このエントリの続きです。 d:id:amachang:20061220:1166630932 ActionScript では Object.prototype を書き換えていいので・・・、 実際に便利な関数を作ってみた _def 関数 この関数は、 DontEnum な(for in で繰り返されない)プロバティを作る Object.prototype._def = function(p, o) { this[p] = o; this.setPropertyIsEnumerable(p, false); }; Object.prototype.setPropertyIsEnumerable('_def', false); _merge 関数 この関数は、this に別のオブジェクトをマージする。上の _def 関数を使って作っています。 Object.prototype._def('_me
JavaScriptは,きちんとしたオブジェクト指向言語であって,オブジェクトを利用した高度な開発が可能です。JavaやC++,.NET系のオブジェクト指向言語がオブジェクトの定義にクラスという概念を用いる「クラス・ベース」の考え方を採用しているのに対し,JavaScriptではひな型となるオブジェクトを元に独自の機能を付加するという「プロトタイプ・ベース」の考え方を採用している点が特徴です。 まず最初に,皆さんの誤解を解いておきましょう。それはJavaScriptは,きちんとしたオブジェクト指向言語だということです。オブジェクト指向言語と言えば,JavaやC++などが有名ですし,C#やVisual Basic 2005といった米Microsoftが開発した.NET系の言語もあります。しかしこれらの言語に比べてJavaScriptは,一段低い「Webブラウザで利用する簡易言語」といったイメ
社内の勉強会の資料をここに公開していきます。社内の人も社外の人も読んでください。 ※ターゲットは JavaScript は書いたことない、オブジェクト指向言語プログラマ。 ※信念は「教わるのではなく、必死に着いていきませう」 今週はかなりハードボイルドで全身タイツのような忙しさなので、みんなが春を分けて楽しんでいたり、香港に行って楽しんでいる間にせこせこ資料を作っています。 はぁ。 Section 00 Prototype.js の前に JavaScript と DOM とイベントの概要 HTML は読み込まれた後、すべての情報が JavaScript のオブジェクトに変換される。 イメージ的にはこんな感じ <html> <head> <title>タイトル</title> </head> <body> : : </body> </html>↓↓↓ var document = { doc
平素より「PHPプロ!」をご愛顧いただき、誠にありがとうございます。 2006年より運営してまいりました「PHPプロ!」ですが、サービスの利用状況を鑑みまして、2018年9月25日(火曜日)をもちましてサービスを終了させていただくことになりました。 サービス終了に伴いまして、2018年8月28日(火曜日)を持ちまして、新規会員登録ならびにQ&A掲示板への新たな質問、回答の投稿を停止させていただきます。 なお、ご登録いただいた皆様の個人情報につきましては、サービス終了後、弊社が責任をもって消去いたします。 これまで多くの皆様にご利用をいただきまして、誠にありがとうございました。 サービス終了に伴い、皆様にはご不便をおかけいたしますこと、心よりお詫び申し上げます。 本件に関するお問い合わせはこちらよりお願いいたします。
知り合いから相談に乗ってやってくれと頼まれたので、ある若手プログラマと会って話をした。お題はスキルパスについでだ。大学を卒業後、独学でプログラミングを学び、現在は中規模開発会社で、主に業務システムの開発に携わっているそうだ。 で、相談の内容は、「このまま現在の業務を続けるか、辞めて、専門学校などでゼロからプログラミング(というかシステム構築)を学びなおすべきか」というものだった。 で、「どうして?」って聞いたところ。 「やっぱり、オブジェクト指向とか、きちんと理解していないので、基礎からやり直したいんです」とのこと。 で、よくよく話を聞いてみると、要は、現場の開発において発生するいろいろな課題を解決できないのは、オブジェクト指向などをよく理解していないからでは?と思いこんでいるようである。 「・・・・」 この手の相談を受けるたび、正直私は気が遠くなるのだ。ITmediaの紙面上で書くのは少
生成したオブジェクトを破棄するには delete ステートメントを使用すればよいが、delete ステートメントによる削除の対象は、生成したオブジェクトの実体ではなく、オブジェクトの参照であることに注意したい。唯一、実体として扱われるのは「そのオブジェクトが、他のいかなるオブジェクトにも参照されていない」ときだけである。オブジェクトは完全に孤独にならない限り、生かされ続ける運命にある。プログラマがオブジェクトの生存管理を怠ると、行き場を失ったオブジェクトは思わぬ所でバグを発生させるだろう。用済みのオブジェクトは大人しく退場して貰った方がよい。 以下のコードでは、hogeRef の存在により、hoge を削除しても実体は残ってしまう。 var hoge:Hoge = new Hoge(); var hogeRef:Hoge = this.hoge; delete this.hoge; 不要に
EXIR.JP - PDF専門検索エンジン 小生がホリデープログラミングして作成したサービスがリリースされました。 まだまだ開発途中ではありますが、遊んでいただければ幸いです。 上場企業のPDFを見出し・全文検索できるキーワード検索型のサービスになります。 ビーグル アース | BEAGLE EARTH 3D回転可能な地球儀を作成しました。 ドラッグして手を離すことにより高速に地球儀を回転させることができます。 Actionscript 3.0にて記述しFlex2SDKのMXMLCにてコンパイルすることで高速性を実現しています。 弊社ホームページ(http://beagle.bz)も合わせてご覧ください。 Chemul [けむり] Molecular Draw 2 - Flash Chemical 3D Structure Viewer 化学物質の3D構造を表示するサイ
ActionScriptの言語仕様とかバグとかの理解度テストを作ってみました。全部出来たらかなり変態チックだと思います。 次の各コードを実行したとき出力される値を答えてください。勿論、Flash使わずに。 解答は次のエントリにポストします。 1. var a:Number = 0; trace(a++); var b:Number = 0; trace(++b); 2. var list:Array = [1,2,3,4,5]; var copy:Array = list; copy[0] = 6; trace(list); trace(copy); 3. var o:Object = new Object(); o.a = 1; o.f = function () : Void { trace(this.a); } var f:Functi
ActionScriptは、2.0・3.0と、オブジェクト指向とか型付けが強化されて、段々とお堅い言語になりつつある。まあ、普通に開発をやる分には、これはかなり嬉しいことなのだけど、スクリプト言語としての視点から見てみると、自由度は下がっているように思える。 JavaScriptではprototype.jsとか、組み込み型拡張とか、クロスブラウザにするためのテクニックだとか、ECMAScriptならではのトリッキーなコードとか、そういうのが多く見られるのだけど、ActionScriptではあんまり見なくなってきてるような気がする。 何が言いたいかというと、OOPもいいけど、皆ASならではの変態的コードも考えようぜ!(えー
AGA治療(男性型脱毛症)の治療クリニック 鹿児島三井中央クリニックは男性女性の性別やご年齢関係なく発毛、育毛治療、抜け毛予防、AGA治療(男性型脱毛症) […]
Flex1.5での開発手法は社内で固まりつつあるのですが、実際Flexを採用している企業数はまだまだこれからで、現状ではFlashを採用している企業が多いです。 そして・・・、 悲しいことにどのプロジェクトも失敗しているように思います。 原因を考えると、 Flashオーサリング的な開発をしているからです。 Flashエンジニアの個人のノウハウ・ライブラリに依存しており、 オープンなフレームワークを探してもなかなか見つかりません。 そもそもFlashエンジニアは、デザインやコンテンツ制作出身者が多いです。 在宅やフリーランスでの契約で個人活動が多いようです。 Flashの制作ノウハウは、生活のための生命線であり、タダで人に教えるのは勇気がいると思います。そして、仲間内でノウハウが溜まります。 Flashエンジニアが一人抜けるとプロジェクトは崩壊します。 一方、 Javaエンジニアは、大企業が
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く