2011-02-21から1日間の記事一覧

第一級オブジェクトとは

以下、Wikipediaによる。 第一級オブジェクト(ファーストクラスオブジェクト、first-class object)は、あるプログラミング言語において、たとえば生成、代入、演算、(引数・戻り値としての)受け渡しといったその言語における基本的な操作を制限なしに使…

名前付き関数式と無名関数

名前付き関数式 var func = function name(){ ・・・・・ }; nameが関数名である。 無名関数 var func = function(){ ・・・・・ }: 無名関数にしても、定義に変化はないが、関数オブジェクトのnameプロパティ(上記例の場合、func.name)が空文字列になる。 n…

JavaScriptでは、スコープは関数スコープのみである

Javaと異なり、JavaScriptでは波括弧({})を使用したローカルスコープは存在しない。あるのは、関数スコープだけである。例えば、ifの条件部あるいはforやwhileのループ内部でvarを使って変数を定義しても、その変数はそれらの内部でローカルな変数にはなら…

オブジェクトが配列かどうかを検査する

<script type="text/javascript"> //配列かどうかを調べるための関数の定義 if(typeof Array.isArray === "undefined"){ Array.isArray = function(arg) { return Object.prototype.toString.call(arg) === "[object Array]"; }; } ary = [0,1,2]; alert(ary); //trueと表示される alert(Arr</script>…

配列リテラル記法以外は使わない方が安全らしい

配列のコンストラクタを使用した場合、引数に渡す整数値は作成される配列の長さを表す。 例えば、下記コードは長さ4の配列を作成する。array[0]はundefined。 var array = new Array(4);

2種類のメニュー

Androidで利用できるメニューには、下記2つがある。 オプションメニュー 端末の[MENU]ボタンを押すことで表示されるメニューのこと。 onCreateOptionsMenuメソッドをオーバーライドして作成する。 コンテキストメニュー 要素を一定時間押し続けることで表示…

AndroidのLinuxカーネル部分の改変

Linuxカーネル部分と、そのライブラリはLinuxに基づくため、GNU GPLで保護されている。 GPLの規約では、改変を行った場合はソースコードを開示しなくてはならない。

Androidのライセンス

AndroidはApache Licence 2.0により公開されている。 開発するアプリケーションはソースコード公開の義務のないApache License 2.0を適用できる。 カーネル部分とそのライブラリ、WebKit以外は、Apache Licence 2.0とBSD Licenceに準じるので、改変が可能。

Androidアプリケーションとプロセス

Androidアプリケーションは、個別のプロセスで実行され、プロセスごとに専用の仮想マシンが割り当てられる。

Surface managerはアプリケーションフレームワークではなく、ライブラリ

Surface Managerは、複数アプリケーションの2D/3Dグラフィックスの統合を可能にするもので、ライブラリの1つ。アプリケーションフレームワークの代表的な機能は下記のとおり。 Activity Manager Content Providers View System Resource Manager Package Man…

JavaScriptベンチマークテスト

「SunSpider」という有名なベンチマークテストがある。 知らなかった。

Dalvik仮想マシン

Wikipediaには、Dalvik仮想マシンについて下記の説明がある。 ダン・ボーンスタイン(英語)およびGoogle社のエンジニアがAndroidプラットフォームのために設計・開発した、レジスタベースの仮想マシンである。 JVMが「スタックベース」であるのに対し、Dalv…

変数はスコープのどこで宣言したとしても、先頭で宣言した(宣言済み)とみなされる

JavaScriptでは、ある変数はそれが同じスコープ(同じ関数)の中にある限り、たとえvar宣言より前にその変数が使われていたとしても、その変数は宣言済みとみなされる。 変数が宣言済みということは、変数が宣言され、undefinedで初期化されているということ…

関数のnameプロパティ

関数宣言パターンでは、読み取り専用のnameプロパティが利用できる。 ただし、値はブラウザによって異なる。 <script type="text/javascript"> function foo(){}; var bar = function(){}; var baz = function baz(){}; alert(foo.name); alert(bar.name); alert(baz.name); </script> Firefox3.6.13…