N予備校「プログラミング入門Webアプリ」を受講しています。
今回は第3章2,3節です。
Node.js
:::note JavaScript でプログラミングすることのできる、サーバーサイド向けのプラットフォーム :::nvmのインストール
Node.jsのバージョンを管理するツールcurl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
-o-
: このオプション、調べ方が悪いのかいまいち理解できてないです。
-o
は指定したファイル名に保存というのはわかるんですが。
source ~/.bashrc
再起動せずに.bashrc
ファイルを読み込ませる
Node.jsのインストール
nvm install v10.14.2
nvm use v10.14.2
node --version
: バージョン確認
node
: コンソールが入力を受け付ける状態になる。
REPL(レプル) : Read-Eval-Print Loop(リード・イーバル・プリント・ループ)の略称で、入力したコードをその場で実行して、結果を表示するツール
終了はctrl + C
練習
その1 入力された値まで加算
'use strict';
const number = process.argv[2] || 0;
let sum = 0;
for(let i = 1; i <= number; i++){
sum = sum + i;
}
console.log(sum);
選択的代入
const number = process.argv[2] || 0;
無効な値が入った場合(falseの場合)に0が入る。
process.argv
コマンドラインの引数が入った配列。
0 番には node コマンドのファイルのパスが入り、
1 番には実行しているプログラムのファイルのパスが入る
その2 フィボナッチ数列
'use strict';
function fib(n){
if(n === 0){
return 0;
}else if(n === 1){
return 1;
}
return fib(n - 1) + fib(n - 2);
}
//40まで出力
const length = 40;
for(let i = 0; i <= length; i++){
console.log(fib(i));
}
time node app.js
実際の処理にかかった時間がわかる。
node --prof app.js
処理に時間がかかっている様子やどれ位メモリを使っているのか
node --prof-process xxxx.log
プロファイル結果を表示
アルゴリズムの修正
:::note アルゴリズムとは、問題を解くための手順を定式化した形で表現したもの。 回を重ねると後に倍々に計算回数が増えるような処理の増え方を指数(しすう)オーダーという。 :::'use strict';
const memo = new Map();
memo.set(0, 0);
memo.set(1, 1);
function fib(n){
if(memo.has(n)){
return memo.get(n);
}
const value = fib(n - 1) + fib(n - 2);
memo.set(n, value);
return value;
}
//40まで出力
const length = 40;
for(let i = 0; i <= length; i++){
console.log(fib(i));
}
Map
連想配列として使えるオブジェクト
一度計算した結果を保存しておく方法を「メモ化」という