RSS

作成者別アーカイブ: makandat

Node.js Event Loop とは

Node.js は、 Event Loop というループ内で実行されます。これはブラウザの JavaScript が DOM からのイベントを処理するメカニズムを継承したものである。

Node.js Event Loop

(図をクリックすると拡大できます)

各フェーズの概要は次の通りです。

  • timers: setTimeout() と setInterval()により設定されたコールバックを実行する。
  • I/O callbacks: ほとんど全部のコールバックはここで実行される。例外はタイマ関連とsetImmidaite()関連である。
  • idle, prepare: 内部的に利用される。
  • poll: 新たな I/O イベントを取り出す。
  • checksetImmediate() はここでコールバックと呼び出しを行う。
  • close callbacks:  socket.on('close', ...)などはここで行う。

詳しくは Node.js のイベントループを理解する を参照。

 

 

広告
 
コメントする

投稿者: : 2017/11/10 投稿先 JavaScript, node.js

 

Ubuntu に最新のNode.jsをインストールしてみた。

Qiita の下記投稿「Ubuntuに最新のNode.jsを難なくインストールする」を参考にやってみました。環境は Ubuntu 16.04LTS です。

https://qiita.com/seibe/items/36cef7df85fe2cefa3ea

この投稿で最初の手順

sudo apt-get install -y nodejs npm

は古いNode.jsがすでに入っていたので省略しました。よって「n package を導入」からです。

sudo npm cache clean
sudo npm install n -g

これは問題なし。次の手順「最後に n package を使って node をインストール」です。

sudo n stable
sudo ln -sf /usr/local/bin/node /usr/bin/node

ここで、n stable は安定版(この時点では8.9.0LTS)になるかと思っていましたが、9.0.0がインストールされました。n コマンドで具体的なバージョン番号を指定したほうがよさそうです。(自分は9.0.0でもかまわなったので、やってませんが)

ln -sf /usr/local/bin/node /usr/bin/node ですが、Node.js のインストール先は、/usr/local/bin/node にはならず、自分の場合は /usr/local/n/versions/node/9.0.0 になっていました。

よって、このコマンドをそのまま実行しても機能しませんでした。

さらに、nodejs というのが node コマンドの別名になっていていました。(自分の環境だけかもしれませんが)

最後の古いNode.js を削除する手順を行わないと、古いバージョンと新しいバージョンがバッティングするので必ず行ったほうがよさそうです。

sudo apt-get purge -y nodejs npm

この後に、3つのシンボリックリンク /usr/bin/node, /usr/local/bin/node, /usr/bin/nodejs を

/usr/local/n/versions/node/9.0.0/bin/node

に変更しました。これでどれが使われても安心です。

user@ubuntu:~$ node -v
v9.0.0

ところで、SSL Error: CERT UNTRUSTED というエラーが出ることがあります。次の対処法を行ったら回避できました。

npm install で SSL Error になった時の対処法。
https://blog.yug1224.com/archives/563d9b67bf652a600632d01e

具体的には npm config set ca “” を行いました。

 

終わり

 

 

 
コメントする

投稿者: : 2017/11/08 投稿先 node.js

 

ASP.NET: アプリケーションのバージョンを表示するには

アプリケーションのプロパティの「アセンブリ情報」で定義したバージョンをWebページに表示したい場合、MVC の場合なら、Views/Shared/_Layout.vbhtml (または .cshtml) に次のように1行追加するとよい。(場所は任意)

Version @ViewContext.Controller.GetType().Assembly.GetName().Version

画面上では、次のような感じで表示される。

 
コメントする

投稿者: : 2017/06/04 投稿先 未分類

 

Oracle のストアドプロシージャ実行

SQL*PLUS (や SQL Developer) でストアドプロシージャを実行するとき、EXECUTE (または EXEC) で行います。
しかし、ストアドプロシージャの動作確認後、プログラムに埋め込んで実行したら、SQL が間違っているみたいなメッセージが出て動作しません。

この原因は、EXECUTE は SQL*PLUS のコマンドで、SQL*PLUS でのみ使用可能なためだそうです。

EXECUTE の代わりに CALL にしたらちゃんと動きました。

CALLとEXECUTEの違い
http://www.shift-the-oracle.com/sqlplus/tutorial/call-execute-plsql.html

 
コメントする

投稿者: : 2017/05/26 投稿先 Database

 

FREETEL KATANA01 (Windows Mobile) に機種変更したとき

freetel はいわゆる格安スマホで有名ですが、これまで使っていた priori2 (Android 5) から KATANA01 (Windows Mobile) に機種変更しました。

ここで問題が・・・ネットにつながらない!!

新規購入のときは、SIMの設定がされているようですが、機種変更だとSIMの再設定が必要のようです。

これがわかりづらいです。下記のURLを開いて設定を行いますが、素人には苦しいですね。

https://www.freetel.jp/sim/apn_Setting/

特に最後のプロファイルの設定が手動でやらなければならず(登録済み設定が機能しなかったため)、しかも画像の入力項目が空欄になっていて横に設定方法が文言で書かれているのはいただけません。

さらに、MMS??のURLがないとエラーになるのですが、その設定方法がどこにも書かれてありません。適当に、http::/freetel.jp とか入れたら通りましたが、これでいいんでしょうかね。

katana01setting1

KATANA01Setting2.png

 
コメントする

投稿者: : 2017/03/03 投稿先 未分類

 

ASP.NET:HTMLタグを含む文字列がSQL Serverのテーブルに書き込みできない件

ASP.NET ではデフォルトでデータベースへ格納する文字列の検証をしているようで、HTMLのscriptタグを含んだ文字列をテーブルへ書こうとするとエラーになってしまいました。

aspnet_sqlserver_script

これを回避するには、ValidateInput 属性を false にしてやるとよいようです。

        [ValidateInput(false)]
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult ViewAddClip(Pixels p)
        {
       ....
        }
 
コメントする

投稿者: : 2017/01/29 投稿先 未分類

 

ASP.NET: ASP.NET App_Codeフォルダ

App_Code フォルダには、ソースコードを置くためのフォルダだそうです。(詳しくは下記)

https://msdn.microsoft.com/ja-jp/library/t990ks23(v=vs.100).aspx

VB や C# ソースを置いておけば自動的にコンパイルされるそうですが、そうでないファイル(つまりプログラミング言語のソースでない XML など) はもちろんコンパイルはされないと書いてあります。

問題は、Visual Studio でここに置いた VB や C# ソースをデフォルトで参照できない問題があります。下のように App_Code に Class1.cs を追加したとします。

app_code

エディタで Class1 をコードに追加すると、見つからないので赤線が表示されます。

class1_notvisible

これを回避するには、Class1 のプロパティで「ビルドアクション」を「コンパイル」に変更します。デフォルトは「コンテンツ」です。上の説明にはデフォルトでコンパイルされると書いてあるので、微妙な仕様(バグ?)ですね。

class1_compile

 
コメントする

投稿者: : 2017/01/29 投稿先 ASP.NET