1年前にもnodeとかphpとかをやりたくてちょっとだけ書いたことはあるのですが、結局アイデア不足と「プログラミングのこころ」が理解できず挫折。Cだけやってても面白そうなものがすぐには出来そうにないので、ちょっとwebの勉強をします。ずっと前から言ってるのにいつになったら覚えられるのだろうか。。。なお本記事はqiitaを読んだだけの自分用のメモですので、より理解したい方は参照記事及び他サイトを参考にしてください。
node.jsとは
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なのでこちらを参照します。
最新版をここから確認。
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
インストールできたかどうかバージョンを見て確認します。
これで準備ができました。次以降の記事でなんか作っていこうと思います。