Node.js で簡単にtcpスキャンする

tcpスキャン


スキャンといいつつ、空いているポートを見つける用途ではありません。
知っているホスト、ポートに対して、生きているかどうかをチェックする用途です。

やりたかったこと:

  • Web Serverが生きているのかどうかをcronなどで定期的にチェックする。
  • HTTPでアクセスを飛ばすと、アクセスログが残ってしまうのでこれは避けたい。
  • とにかく軽く、早いものが良い。
  • ワンライナーでチェックしたい。

そういうライブラリは存在しませんでした。
 

ライブラリが無いなら作れば良いじゃない


というわけで、作りました。

simple-tcpscan
https://www.npmjs.com/package/simple-tcpscan
 

simple-tcpscan


詳しくは上記npmの公式ページに載せていますので、そちらを見ていただければと思います。


const tcpscan = require('simple-tcpscan');
tcpscan.run({'host': 'localhost', 'port': 3000}).then(() => console.log('OK'), () => console.log('NG'));

良い感じで生き死にの処理が書けるようになりました。

riotjs-loaderを3.0.0->4.0.0に変更するとscoped cssがデフォルトになる

riotjs-loaderの実態


別の記事で、riotjs-loaderを 3.0.0 から 4.0.0
に変更すると、真偽値属性が使えるようになると書きましたが、実際は riotjs-loader が依存している riot-compiler が 2.3.22 から 3.0.0 に変更になっただけでした。

つまり、どういうことかというと、自分のプロジェクトでriot v3を使っていたつもりだけど、今まではコンパイラがv2指定だったので、旧バージョンで動作していたということ。
件名の内容に戻ると、scoped css は riot v3 からデフォルトでした。
確かにコンポーネント志向なので、それで正しい動きですが、loaderから依存していたとは思っていませんでした…。

riot-compilerを最新版にする


riot-compiler の最新は現時点で 3.2.4 でした。
riotjs-loader は riot-compiler が dependencies に定義されている点が厄介で、自分のプロジェクトの node_modules\riot-compiler を使用してくれず、 node_modules\riotjs-loader\node_modules\riot-compiler が使用されます。

あまり自由が効かないので、この際自分でloaderを作ってみました。
ついでに、コンパイルオプションも使うつもりはなかったので、差別化としてシンプルなloaderにしました。

riot-simple-loader


riot-simple-loader
https://www.npmjs.com/package/riot-simple-loader

npmモジュールとして公開しているので、良かったら使ってやってください。

使い方は上記の公式npmページと、サンプルをgithubにあげていますので参考にしてください。
https://github.com/nekijak/riot-simple-loader-sample