2019年 7月 の投稿一覧

[HTML5] Canvasを画像としてダウンロード

canvasタグに現在描画されている内容を画像としてクライアントにダウンロードしてみます。
Webブラウザなどのクライアントだけで完結するためサーバの負荷などを気にする必要がありません。

今回はひたすらカウントアップするcanvasを、ボタンを押したタイミングでダウンロードできるサンプルです。
続きを読む

[HTML5] 複数のCanvasを合成する

今回は複数のcanvasタグを合成し、最終的に1つのcanvasに結合する処理を取り上げたいと思います。

↑こんな感じで画像を表示したcanvasと、キャプションを表示したcanvasを合成します。
続きを読む

[Linux] MD5の値を大量にチェックする

小ネタです。
例えばsplitコマンドなどで分割したファイルをダウンロードした際に、一つ一つMD5の値を確認するのはダルいですよね。md5sumコマンドでは、予め検証したいファイルのパスとそのMD5の値をペアで記述されたファイルを用意しておくと、一発で確認することでができます。

定義ファイルは以下のようにMD5値と、ファイルのパスを半角スペースなどで区切って書きます。

$ cat MD5SUM
f64062373f79e3fdabed57f6aec6d54d data/foo.zip.1
89063c79371e866afe627ddc221d3a9e data/foo.zip.2
993e1252af0e1fbd2435dcadd2a9fead data/foo.zip.3

あとは-cオプションでこの定義ファイルを渡せば自動的にチェックしてくれます。

$ md5sum -c MD5SUM
data/foo.zip.1: OK
data/foo.zip.2: OK
data/foo.zip.3: OK

続きを読む

macOSでmd5sumを使う

小ネタです。
Linuxなどで利用するmd5sumをmacOSで利用するには別途インストールする必要があります。

結論から言うと以下で一発です。

$  brew install md5sha1sum

今回はv0.9.5が入りました。

$ md5sum --version
Microbrew md5sum/sha1sum/ripemd160sum 0.9.5 (Wed Dec  6 12:48:56 EST 2006)
  Compiled Aug 19 2018 at 22:25:20
Written by Bulent Yilmaz

Copyright (C) 2004,2006 Microbrew Software

続きを読む

[Linux] Bashでwgetの戻り値をチェックする

小ネタです。
シェルスクリプトを書いている際にwgetで正常にファイルをダウンロードできた場合のみ処理を継続したい場合には次のようなコードを書きます。

#!/bin/bash

wget 'https://example.com/foo.zip'

if [ $? -ne 0 ]; then
  echo "[ERROR] 正常にダウンロードできませんでした"
  exit 1
fi
  • $?は直前のコマンドの実行結果が自動的に入ります。
  • 比較演算子の-nenot equalの略で、値が等しくない場合に使用します。

続きを読む

[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で動作するプロジェクトで利用しているライブラリを簡単にアップデートする方法についてまとめたいと思います。
続きを読む