<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> </head> <body> <input id="btn1" type="button" value="click me"/> <script> var task1 = function() { var dfd = $.Deferred(); setTimeout(function() { console.log("1つ目の処理"); dfd.resolve(); }, 2000); return dfd.promise(); }; var task2 = function(){ console.log("2つ目の処理"); } $(function() { $('#btn1').on('click', function() { // promise を返す関数の後に、then や done で次に実行したい関数をつなげる task1().then(task2); //こういう書き方が多いかも // var promise = task1(); // promise.then(task2); }); }); </script> </body> </html>
2017年9月6日水曜日
jQuery promise と deferred の利用例
jQuery promise と deferred の簡単な利用例です。このままコピー & ペーストで動作します。
2017年8月23日水曜日
Visual Studio Code と node.js で JavaScript をデバッグ実行する方法
1.node.js をインストールします。
2.Visual Studio Code をインストールします。
3.任意のフォルダにデバッグ対象となる js ファイルを生成します。
(ここでは仮に app.js とします。)
4.Visual Studio Code の「デバッグ」ボタンを押して、「launch.json を開く」ボタンを押します。
5.launch.json の configurations - program に "${workspaceRoot}/app.js" と記述します。
6.Visual Studio Code で app.js を開き、ブレークポイントを設定、もしくは app.js 内に debugger キーワードを記述します。
7.「Launch Program」ボタンをクリックするとデバッグが開始します。
実行結果:
2.Visual Studio Code をインストールします。
3.任意のフォルダにデバッグ対象となる js ファイルを生成します。
(ここでは仮に app.js とします。)
4.Visual Studio Code の「デバッグ」ボタンを押して、「launch.json を開く」ボタンを押します。
5.launch.json の configurations - program に "${workspaceRoot}/app.js" と記述します。
{
// Use IntelliSense to learn about possible Node.js debug attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceRoot}/app.js"
}
]
}
6.Visual Studio Code で app.js を開き、ブレークポイントを設定、もしくは app.js 内に debugger キーワードを記述します。
7.「Launch Program」ボタンをクリックするとデバッグが開始します。
実行結果:
2017年8月13日日曜日
JavaScript で input 要素の focus イベントを登録する
JavaScript で input 要素の focus イベントを登録するスニペットです。ポイントは addEventListener の第三引数の bool 値です。これは、イベントをキャプチャするタイミングを決定する値で、デフォルトで false(=バブリングフェーズ)になっています。focus イベントはキャプチャフェーズで発生するようですので、true を指定します。
document.addEventListener("focus", function (args) { debugger; }, true);
2017年8月12日土曜日
TypeScript input 要素の入力値を div 要素に反映する
タイトルの通り、input 要素に入力された値を div 要素にも表示する例です。
入力要素:input (id: titleInput, contentInput)
反映対象:div(id: titleArea, contentArea)
TypeScript では、input 要素を HTMLInputElement にキャストすることで value 属性にアクセスすることができます。下の keyup イベントで引数 args から target(input 要素)にアクセスし、この target を HTMLInputElement にキャストしています。
index.ts
index.html
入力要素:input (id: titleInput, contentInput)
反映対象:div(id: titleArea, contentArea)
TypeScript では、input 要素を HTMLInputElement にキャストすることで value 属性にアクセスすることができます。下の keyup イベントで引数 args から target(input 要素)にアクセスし、この target を HTMLInputElement にキャストしています。
index.ts
var dataModel: DataModel; class DataModel{ private _title: string; get Title(): string { return this._title; } set Title(newTitle: string) { this._title = newTitle; //notification to UI element var elem: HTMLElement = document.getElementById(this._titleSelector); if (elem !== undefined && elem.tagName == "DIV") { elem.textContent = this._title; } } private _titleSelector: string; get TitleSelector(): string { return this._titleSelector; } set TitleSelector(titleSelector: string) { this._titleSelector = titleSelector; } constructor() { } } document.addEventListener("DOMContentLoaded", function () { dataModel = new DataModel(); }); document.addEventListener("focus", function (args) { var target: HTMLInputElement = <HTMLInputElement>args.target; if (target !== undefined && target.id !== "") { var placement: any = target.getAttribute("data-placement"); dataModel.TitleSelector = target.getAttribute("data-placement"); } }, true); document.addEventListener("keyup", function (args) { var target: HTMLInputElement = <HTMLInputElement>args.target; if (target !== undefined && target.id !== "") { dataModel.Title = target.value; // TypeScript では、オブジェクトを HTMLInputElement にキャスト後、value 属性にアクセスすることができる。 } });
index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="index.js"></script> </head> <body> <input type="text" id="titleInput" data-placement="titleArea" /> <div id="titleArea"></div> <input type="text" id="contentInput" data-placement="contentArea" /> <div id="contentArea"></div> </body> </html>
2017年7月29日土曜日
行列の乗算
行列の乗算(掛け算)の備忘録です。
行列が2つ、下記のようにあったとします。
行列1:
a11 a12
a21 a22
a31 a32
行列2:
x11 x12 x13
x21 x22 x23
これらをかけると、結果は 3行 x 3列の行列になります。
結果として得られる階の3行は、行列1からきています。3列は同様に、行列2からきています。
解:
a11x11+a12x21 a11x12+a12x22 a11x13+a12x23
a21x11+a22x21 a21x12+a22x22 a21x13+a22x23
a31x11+a32x21 a31x12+a32x22 a31x13+a32x23
行列が2つ、下記のようにあったとします。
行列1:
a11 a12
a21 a22
a31 a32
行列2:
x11 x12 x13
x21 x22 x23
これらをかけると、結果は 3行 x 3列の行列になります。
結果として得られる階の3行は、行列1からきています。3列は同様に、行列2からきています。
解:
a11x11+a12x21 a11x12+a12x22 a11x13+a12x23
a21x11+a22x21 a21x12+a22x22 a21x13+a22x23
a31x11+a32x21 a31x12+a32x22 a31x13+a32x23
2017年7月17日月曜日
クラウドコンピューティングにおける仮想マシンの構成
クラウドコンピューティングにおいて、仮想マシンの構成は次の3つの階層に分類される。
・仮想マシン
・OS / ミドルウェア
・アプリケーション
仮想マシンはハードウェアに相当する。ミドルウェアは、OS とアプリケーションの仲介役として、OS の機能を拡張するプログラム群である。
・仮想マシン
・OS / ミドルウェア
・アプリケーション
仮想マシンはハードウェアに相当する。ミドルウェアは、OS とアプリケーションの仲介役として、OS の機能を拡張するプログラム群である。
コンピュータの5大装置
コンピュータの5大装置は次の5つの分類がある。
- 制御装置
- 演算装置
- 記憶装置
- 入力装置
- 出力装置
1の制御装置と2の演算装置は、主にプロセッサーと呼ばれる装置で構成されている。
プロセッサーは CPU、GPU、DSP がある。
3の記憶装置には、主記憶装置(=RAM、揮発性)と補助記憶装置(=不揮発性)がある。
4の入力装置には、キーボード、マウス、センサーなどがある。
5の出力装置には、ディスプレイ、スピーカー、プリンターなどがある。
OSI 参照モデルと TCP/IP の対応表
OSI 参照モデルと TCP/IP の対応表です。
TCP/IP の第4層、アプリケーション層は、OSI 参照モデルの第4層~第7層までに対応している。
TCP/IP の第1層、ネットワークインターフェース層は、OSI 参照モデルの第1層~第2層に対応している。
TCP/IP の第4層、アプリケーション層は、OSI 参照モデルの第4層~第7層までに対応している。
TCP/IP の第1層、ネットワークインターフェース層は、OSI 参照モデルの第1層~第2層に対応している。
2017年7月16日日曜日
線形探索(リニアサーチ)
線形探索(リニアサーチ)は、配列の要素に対して順次比較して対象のデータを検索する。1つずつ順次比較するために、配列の添字を1つずつ増やしていく。
配列のデータに重複がなければ、対象のデータを見つけ出した時点で探索を終えることができる。
配列のデータに重複がある場合、配列の全データに対して探索を行う。
線形探索に要する実行時間は O(n) となる。
配列のデータに重複がなければ、対象のデータを見つけ出した時点で探索を終えることができる。
配列のデータに重複がある場合、配列の全データに対して探索を行う。
線形探索に要する実行時間は O(n) となる。
2017年7月15日土曜日
2017年7月4日火曜日
CMOS-NAND 回路のわかりやすい説明
こちらのサイトに公開されている PDF が分かりやすかったので、メモしておきます。
http://www.dsl.hiroshima-u.ac.jp/~iwa/text/LB4.CMOSLogic.pdf
→ P.48 「スイッチによる等価回路2入力CMOS-NANDゲート」参照
http://www.dsl.hiroshima-u.ac.jp/~iwa/text/LB4.CMOSLogic.pdf
→ P.48 「スイッチによる等価回路2入力CMOS-NANDゲート」参照
2017年7月2日日曜日
2 進数の補数の求め方
2進数でマイナスを表現する補数は、2進数を反転し、1を足すと得られます。
例:
10 進数で -5 を 2 の補数で表すには、
① 10 進数の 5 を 2 進数に変換する → 0101
② ① で得られた 2 進数を反転し、1を足す → 1011
例:
10 進数で -5 を 2 の補数で表すには、
① 10 進数の 5 を 2 進数に変換する → 0101
② ① で得られた 2 進数を反転し、1を足す → 1011
登録:
投稿 (Atom)

