2021年 の投稿一覧

「いらすとや」さんのトランプ画像をまとめてダウンロードする

小ネタです。

いらすとや」さんのトランプ画像を使わせていただこうとしたら、1枚ずつ保存しなければならないようで心が折れそうになったため一括でダウンロードできるシェルスクリプトを組みました。……組んだのですが、URLのハッシュ値の法則性を解析するのが面倒だったので、結局すべてのURLのリストを作ることにw

せっかくなので別の方も利用されるかもしれないと思いコードを置いておきますね。悪用厳禁でお願いしますw

続きを読む

[AWS] CloudFrontのオリジンを動的に変更する – Lambda@Edge + Node.js

CloudFrontで参照しているオリジンをLambda@Edgeで変更してみます。

今回はhttp://foo.example.comでアクセスされたら、CloudFrontがオリジンhttp://example.com/foo/へリクエストする設定をします。

正直なところあまり需要は無いと思いますがw この設定が生きてくるのは大量に同様の設定をしなければならない時ですね。設定が必要なドメインが2〜3個であればCloudFront側でディストリビューションを必要なだけ作成する方がわかりやすいです。

というわけで先ほどの例の「foo」の部分はどのような文字列が来ても対応可能なよう設定していきます。
続きを読む

[JavaScript] 数値がゾロ目か判定する

小ネタです。

指定された数値がゾロ目かどうかを判定する正規表現を試してみます。説明するまでも無いと思いますが「1111」「8888」など同じ数だけで構成された数値をゾロ目と言います。

結論から言うと以下の通り。

/**
 * ゾロ目判定
 *
 * @param {number} num
 * @returns {boolean}
 */
function isZorome(num){
  return String(num).match(/^([0-9])\1+$/) !== null
}

正規表現の\1はキャプチャグループと呼ばれ、直前のグループがマッチした場合にそれを参照することができます。+は直前のパターンを1個以上繰り返すことを意味するため、/^([0-9])\1+$/とすることで最初の数値が最初から最後まで連続していることを示すことができます。

実際に実行すると以下のような結果になります。

console.log( isZorome(12345) )    // false
console.log( isZorome(11111) )    // true
console.log( isZorome("12345") )  // false
console.log( isZorome("11111") )  // true
console.log( isZorome("abcde") )  // false
console.log( isZorome("aaaaa") )  // false

例えば数値のみのパスワード(暗証番号)として入力された数値がゾロ目だったら警告を出すといった用途に使えるかもしれませんね。

正規表現を使わないパターン

split()で1桁ずつの数字にばらした配列に変換し、everyでチェックします。

function isZorome(value){
  const num = String(value).split('')

  return(
    (! isNaN(num[0])) && (num.every(v => v === num[0]))
  )
}

お好みの方法でどうぞ。

[AWS] CloudFront+S3オリジンでindex.htmlを省略する – Lambda@Edge + Node.js

CloudFrontのオリジンにS3を利用する場合、大きく2つのパターンがあります。

  1. S3を独立したWebサーバとして利用する
  2. S3を内部的にHDDのように利用する

前者はS3側で割と色々と設定できるのですが問題は後者です。一般的なWebサーバのように「example.com/hoge/」にアクセスしたら「example.com/hoge/index.html」を返して欲しかったりするわけですが、この機能は自分でコードを書いて用意する必要があるのです。正直面倒くさいw

というわけでCloudFrontを制御するLambda@Edgeを準備していきます。
続きを読む

[AWS] CloudFrontでBASIC認証を行う – Lambda@Edge + Node.js

S3をWebサーバ代わりに使っている方も多いと思いますが、開発中のページや社内だけで閲覧したい場合など簡易的なアクセス制限をかけたい場合がありますよね。以前はEC2の安いインスンスを用意することもありましたが、Lambda@Edgeが登場してからはS3とCloudFrontだけで完結することができます。

というわけで今回はCloudFrontを使ってBASIC認証をかける方法をまとめます。
続きを読む

ScanSnap Homeの常駐プロセスを終了したい – macOS版

小ネタです。
PFUのスキャナ「ScanSnap」を10年ほど愛用してまして、もう数百冊以上の書籍やら10年分のあらゆる書類や郵便物をスキャンしてます。めっちゃ便利!思い出や資料として取っておかない物はためらわずにデータ化した方が良いですね。部屋から本棚が3つくらい無くなりましたw

で、ちょっと前にmacOS側から操作するためのアプリがリニューアルして「ScanSnap Home」になったのですが、なんとこのアプリ終了することが出来ないんですよ。使い勝手自体は悪くないのですがバックグラウンドでずっと起動し続けるのが非常に気持ち悪い。しかもOSが起動すると勝手に立ち上がるのでインストールしたが最後、呪いにでもかかった気分ですw

がまん出来なくなってPFUへ問い合わせたところ、次の回答をいただきました。

誠に申し訳ございませんが、ScanSnap Homeで常駐プロセスを
自動起動しないようにする設定や機能、操作等はございません。

あー、ですよねー。と思ったら

ScanSnap Homeの常駐プログラムを自動起動しないようにする
ことはできませんが、本メールに添付したスクリプトファイルを
使用してScanSnap Homeの常駐プログラムを一括終了すること
は可能でございます。

なんやて! (゚д゚)

早速添付ファイルの中身を開いて確認すると単なるシェルスクリプトだったためメモ代わりにブログにも置いておきます。同じ現象で気持ちの悪い思いをされている方の参考になれば。
続きを読む

[Git] GitHubにGPG鍵を登録し署名付きcommit/tagを行う

Gitの初期設定で自分の名前やメールアドレスを入力するわけですが、特に認証などが入るわけではないので簡単に他人になりすましが出来てしまいます。そこで確かに自分がコミットまたはタグを付けたことを証明するために、署名を付けることができます。

GitHubを眺めていると見かける、コミットログの横に「Verified」バッジが表示されているのがそれです。

例えばプルリクを受け取った人が、なりすましを行った悪意のある第三者から送られてきたかどうか判断する手助けになるというわけですね。また同様にコミットやタグが改ざんされているかも検知することができます。
続きを読む

[GitHub Actions] 実行結果をSlackへ通知する

GitHub Actionsの実行結果を毎回GitHub上で確認するのも面倒ですよね。一応失敗したときはメールでお知らせしてくれますが、できればSlackに投げてくれるといろいろ都合が良かったりもします。

そこで今回はActionsの実行結果をSlackへ通知する設定を行います。
続きを読む

[GitHub Actions] AWS S3へファイルを自動的に転送する

GitHub上にリポジトリを作成し、いつも通りpushすると自動的に仮想マシンが起動しこちらが指定した処理を行ってくれる「Actions」という機能があります。なんとパプリックリポジトリは無料、プライベートリポジトリも月間2000分(約33時間)までは無料で使えるという夢のような機能ですw

主にアプリをビルド(コンパイル)したり、テストコードを自動的に実行するといった用途に使われていますが、ここでは特定のブランチを更新しpushすると、そのファイルをAWS S3へ自動的に転送する設定を行ってみます。
続きを読む

[Git] git-secretsでパスワードや機密情報の登録を禁止する

AWSなどのクラウドサービスでは、データベースやファイルシステムなどの各種リソースを操作するためのアカウント(IAM)を発行して権限管理を行うことがありますが、このアカウント情報をGitのリポジトリに登録してしまうと、意図せず流出し悪い人に悪用されてしまう場合があります。

定期的にネット上で話題になりますが、最終的に仮想通貨のマイニングなどに利用され多額の請求がやってくるパターンが多いようです。

このような悲劇を防ぐために、Gitのリポジトリへ特定のパターンの文字列を登録できくなくするgit-secretsを導入してみます。なおこのツールはAmazon製ということもありAWSとの相性がバッチリです。
続きを読む

[Node.js] SequelizeでMySQLを利用する – その5「ToDoアプリ作成編」

Node.jsの代表的なO/RMであるSequelizeの第五弾。

これまで以下のような内容を取り上げてきました。

  1. 第1回 インストールから基本的な利用方法
  2. 第2回 SELECT文の使い方
  3. 第3回 トランザクション
  4. 第4回 マイグレーション

今回はここまでの情報の整理も兼ねて、簡単なToDoアプリを作ってみようと思います。

続きを読む

[Node.js] SequelizeでMySQLを利用する – その4「マイグレーション編」

Node.jsの代表的なO/RMであるSequelizeの第四弾。

第1回ではインストールから基本的な利用方法、第2回ではSELECT文の使い方、第3回ではトランザクションを取り上げました。

今回は「マイグレーション」のお話です。
Sequelizeから提供されているCLIツールを利用すると、モデルの内容をコマンド一発でMySQLへ反映することができます。最初の1回目だけではなく運用開始後に差分を反映することもできます。他のフレームワークなどでも見かけますよね。Ruby on Railsで初めてこの手のツールを触ったときは感動したものですw


続きを読む

[Node.js] SequelizeでMySQLを利用する – その2「SELECT文編」

Node.jsの代表的なO/RMであるSequelizeの第二弾。

前回はインストールから基本的な利用方法までを取り上げました。今回はSELECT文にまつわるトピックスを取り上げていきます。

Sequelizeに限った話ではないですが、WHERE句の条件が複雑になってくると「これSQL書いた方が早くね?」という気持ちになりますねw
続きを読む