Node.js

[Node.js] Math.random()よりセキュアな乱数を生成する

JavaScriptで乱数を利用したい場合はMath.random()を使うことがほとんどだと思いますが、内部のロジック的に暗号などセキュアな用途には向いていないとされています。Node.jsでは標準モジュールであるcryptoを利用することでこの問題を解決することができます。

サンプルコード

結論から言うと具体的なコードは以下になります。getSecureRandom()関数を実行する度にランダムな整数を取得できます。

const Crypto = require("crypto");

function getSecureRandom(){
  const buff = Crypto.randomBytes(8);  // バイナリで8byteのランダムな値を生成
  const hex  = buff.toString("hex");   // 16進数の文字列に変換

  return ( parseInt(hex,16) );         // integerに変換して返却
}

続きを読む

[Node.js] 依存パッケージをアップデートする

最近のGitHubでは、リポジトリ上で依存している外部のライブラリやモジュールが古いままだと警告を出してくれる機能が追加されました。Webページ上でも表示されますし、git pushなどremoteと通信した際などにも確認できます。

$ git push
Total 0 (delta 0), reused 0 (delta 0)
remote: 
remote: GitHub found 6 vulnerabilities on katsube/gpwd's default branch (2 high, 4 moderate). To find out more, visit:
remote:      https://github.com/katsube/gpwd/network/alerts
remote: 
To github.com:katsube/gpwd.git
   35f20ab..5b85229  master -> master

これらを放置しておくとセキュリティホールの原因にもなりかねないので、定期的にpackage.jsonで指定しているバージョンを更新し、動作確認をする必要が出てきます。しかし1つつずつ最新のバージョンを手作業で確認するのは地獄ですよね。

そんなわけで今回はNode.jsで動作するプロジェクトで利用しているライブラリを簡単にアップデートする方法についてまとめたいと思います。
続きを読む

[Node.js] おみくじQRコードを作成する

前回はアニメーションするQRコードを作成しましたが、今回はその応用です。時間とともにQRコードの情報が変化する「おみくじ」を作ってみたいと思います。

雑にいうと「ルーレット」ですね。すごい勢いでQRコードの内容が切り替わっていく中、その一瞬をQRコードリーダー読み取ることで、利用者から見るとランダムな結果が得られるというヤツです。

続きを読む

[Node.js] デザインQRコードをアニメーションさせる

前回はQRコードの中央にちょっとした画像を貼り付ける「デザインQR」を作成しましたが、今回はその画像をアニメーションさせてみたいと思います。

続きを読む

[Node.js] デザインQRコードを作成する

今回はQRコードの真ん中あたりに画像を埋め込む「デザインQR」をNodeで作成してみます。

通常のQRでも機能自体に問題ありませんが、以下のような欲求が出てきます。

  • どんなデータが埋め込まれているか想像しづらい、
  • デザイン的に無粋(無機質)

今回はこれらを解消しようというお話です。

続きを読む

[Node.js] QRコードを生成する

今回はNode.js上で簡単にQRコードが生成できるnode-qrcodeを利用し、動的にQRコードを生成してみたいと思います。

QRコード自体は非常に便利ですよね。2次元バーコードよりも情報量が増やせるため様々な用途に利用できます。
しばらく前から日本はQRコード決済が世を賑わせていますが、個人的には早く滅んでくれないかなと思っていますがそれはまた別の話しw なんでFeliCaから退化しとんねんw

続きを読む

npmのパッケージ公開入門

Node.jsを使うメリットは膨大なモジュールを備えるnpmの存在が大きいところです。既存の物を利用するだけでも良いのですが、npmには誰でも簡単にモジュールを公開することができる仕組みが備わっています。

続きを読む

Node.jsのバージョンをnodebrewで切り替える

インストールされたNode.jsのバージョンを切り替えたくなるタイミングがありますよね。バージョンアップの際はもとより特定バージョン下での挙動を確認したいとき、バージョンを上げたがうまく動かなくなってしまったので切り戻しを行いたい時などです。実現するためのツールはいくつかあるのですが今回は「nodebrew」をmacOSに入れてみます。
続きを読む

Node.jsをAmazonLinuxにインストールする

公式サイト内にある「Installing Node.js via package manager」の手順に沿ってインストールを行います。

AmazonLinuxは「Enterprise Linux and Fedora」の項になるので、以下の2つのコマンドを実行するだけで入ります。動作に必要なソフトも自動で入れてくれます。

$ curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
$ sudo yum -y install nodejs

この記事を書いてる時点では以下のバージョンが入りました。

$ node --version
v8.9.4

$ npm --version
5.6.0

追記(2019-06-30)

8系はさすがに古すぎますねw
現在のLTSである10系をインストールする場合は以下のようにsetup_8.xとなっている箇所をsetup_10.xに置き換えるだけです。

$ curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo bash -
$ sudo yum -y install nodejs

10系の最新版が入りました。

$ node --version
v10.16.0

$ npm --version
6.9.0

続きを読む

Node.jsで80番ポートを使用するHTTPサーバ

一般ユーザーで動作させたい

0〜1023番はウェルノウンポートと呼ばれ、Linuxではスーパーユーザー(root権限)でないとサーバとして動かすことができません。しかし何も考えずにsudo node xxx.js的な感じで起動するとプロセスがrootで動作するため恐ろしいことこの上なく夜も眠れない日々を過ごす羽目になります。

そこで、以下のようにいったんrootとして起動した後に、子プロセスを別のユーザーに切り替えることで解決を図ります。

続きを読む