brand new note

インフラエンジニアを目指す大学院生のメモ

node.jsの最初のメモ

1年前にもnodeとかphpとかをやりたくてちょっとだけ書いたことはあるのですが、結局アイデア不足と「プログラミングのこころ」が理解できず挫折。Cだけやってても面白そうなものがすぐには出来そうにないので、ちょっとwebの勉強をします。ずっと前から言ってるのにいつになったら覚えられるのだろうか。。。なお本記事はqiitaを読んだだけの自分用のメモですので、より理解したい方は参照記事及び他サイトを参考にしてください。

node.jsとは

qiita.com

node.js

サーバサイドのjavascriptで、I/Oの処理結果を待たずに処理をするノンブロッキングI/O。

1万台問題っていう処理能力の問題があって、ノンブロッキングI/Oによってこれを解決できるらしい。ストレージの読み書きスピードはCPUやメモリに比べて非常に遅いので、ストレージに書き込めたかを待たずに処理を進める。書き込めたやつからコールバック関数を使って処理する。

キッカケの命令を出すことで動き始める(event driven)つまりクライアントがアクションを起こすことでサーバの中の待機中のプログラムが動き出す?

シングルスレッド

javascriptエンジン(これがなんだかわからない)がgoogle v8ってやつなので高速

アプリの特徴

小さい計算なら早い

メモリを食わない

ローカルとリモートのやり取りをシームレスに行うフレームワークがある

server,clientで処理の共通化ができる

リアルタイム性のあるアプリケーションにあう(常に何か監視し続けていて、的な?)

websocketを使うアプリに合っている

プラットフォームです

nodejsはフレームワークではなくjavascriptアプリケーションのプラットフォーム。フレームワークは開発をするとき便利だから再利用するやつ、プラットフォームは実行ができる環境のこと。言語そのものではない???

framework

Express,Backbone.js,Sails,Meteorなど

これを使えば0からじゃなく容易に開発できるってことですかね

用語

  • callback関数(非同期の処理が終わったら呼ばれるやつ)

  • CommonJS(共通化しようとしている規格)

  • libuv (libev,libeio)非同期I/Oライブラリ、イベントループライブラリ

  • DIRT: データインセンティブリアルタイム

  • npm: node package manager,モジュール管理

クライアントサイドjavascriptとの違い

んーー前に比べたら何を言ってるか理解できるようになった気もします。

インストール

自分のPCがCentOS7なのでこちらを参照します。

qiita.com

最新版をここから確認。

distributions/rpm at master · nodesource/distributions · GitHub

sudo yum install -y gcc-c++ make
curl -sL https://rpm.nodesource.com/setup_9.x | sudo bash -
sudo yum install -y nodejs

インストールできたかどうかバージョンを見て確認します。

f:id:frazz:20180412232722p:plain

これで準備ができました。次以降の記事でなんか作っていこうと思います。

node.jsの2つめのメモ - brand new note