2021-01-01から1年間の記事一覧

ログイン画面にreCAPTCHA v3を導入する

ユーザー登録やログインなどで不安になるのが「ボット」の存在です。 検索エンジンのクローラーなど悪意の無いものであればよいのですが、機械的に大量のユーザーを作成されたり、悪意のある人が第三者のアカウントをゲットしようとプログラムを組んで攻めて…

[HTML5] 異なるオリジンのWebStorageの内容を取得する

WebStorage(localStorageとsessionStorage)は同一オリジン内のデータしか読み書きできません。名前空間を分けることでデータの衝突を防いだり、大切なデータを他のサイトから覗き見られることから守ってくれています。 しかしWebサービスを開発していると、…

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

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

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

CloudFrontで参照しているオリジンをLambda@Edgeで変更してみます。 今回はhttp://foo.example.comでアクセスされたら、CloudFrontがオリジンhttp://example.com/foo/へリクエストする設定をします。 正直なところあまり需要は無いと思いますがw この設定が…

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

小ネタです。 指定された数値がゾロ目かどうかを判定する正規表現を試してみます。説明するまでも無いと思いますが「1111」「8888」など同じ数だけで構成された数値をゾロ目と言います。 結論から言うと以下の通り。 /** * ゾロ目判定 * * @param {number} n…

[AWS] Serverless FrameworkでLambdaをArm64対応する

AWS Lambdaが2021年9月29日からArm64に対応しました。 デフォルトではx86…要はIntelのCPUが使われていますが、Arm64を選択するだけで20%のコストダウン、最大19%のパフォーマンスの向上が期待できるとか!乗るしかない!このビッグウェーブに!

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

CloudFrontのオリジンにS3を利用する場合、大きく2つのパターンがあります。 S3を独立したWebサーバとして利用する S3を内部的にHDDのように利用する 前者はS3側で割と色々と設定できるのですが問題は後者です。一般的なWebサーバのように「example.com/hoge…

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

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

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

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

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

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

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

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

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

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

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

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

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

Node.jsの代表的なO/RMであるSequelizeの第五弾。 これまで以下のような内容を取り上げてきました。 第1回 インストールから基本的な利用方法 第2回 SELECT文の使い方 第3回 トランザクション 第4回 マイグレーション 今回はここまでの情報の整理も兼ねて、…

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

Node.jsの代表的なO/RMであるSequelizeの第四弾。 第1回ではインストールから基本的な利用方法、第2回ではSELECT文の使い方、第3回ではトランザクションを取り上げました。 今回は「マイグレーション」のお話です。 Sequelizeから提供されているCLIツールを…

[Node.js] SequelizeでMySQLを利用する - その3「トランザクション編」

Node.jsの代表的なO/RMであるSequelizeの第三弾。 第1回ではインストールから基本的な利用方法、第2回ではSELECT文の使い方を取り上げました。今回はINSERTやUPDATEなど更新系の処理に欠かせない「トランザクション」です。

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

Node.jsの代表的なO/RMであるSequelizeの第二弾。 前回はインストールから基本的な利用方法までを取り上げました。今回はSELECT文にまつわるトピックスを取り上げていきます。 Sequelizeに限った話ではないですが、WHERE句の条件が複雑になってくると「これS…

[Node.js] SequelizeでMySQLを利用する - その1「チュートリアル編」

Node.jsでO/RMと言えば「Sequelize」です。 PostgreSQL, MySQL, MariaDB, SQLite, Microsoft SQL Serverなど主要なRDBに対応しており、AWS上での利用報告もありますのでRDSなどでももちろん使えます。また現在たどれる最古のバージョンv1.1.2は2011年にリリ…

[JavaScript] クレジットカード番号から国際ブランドを特定する

前回に引き続きクレジットカードがテーマです。今回は決済画面などで入力されたクレジットカード番号がどの国際ブランであるかを調べるコードです。 ブランドを検出するロジックは前回と同じですので、ここではユーザーの入力と検出部分のつなぎ込みがメイン…

[JavaScript] クレジットカード番号が正しいか検証する

決済画面などで入力されたクレジットカード番号が正しい物であるか検証するコードを書いてみます。 npmでモジュールを探すとcard-validatorなどいくつか見つかるので、実際にはこれらを使うのが楽ちんですね。メンテナンスされていればカード番号の仕様が変…

新型コロナワクチン1回目を摂取したら四十肩と再開した話

7月9日(金)、GMOさんのご厚意で取引先の職域摂取の枠に混ぜていただくことができたため「渋谷フクラス」の会場で新型コロナウイルスのワクチンを一発打っていただきました。 しかしいざ打つとなるとドキドキしますね。宝くじで1等が当たるよりも圧倒的に低い…

[AWS] Comprehendで日本語の感情分析を行う

AWSから提供されているAIツールの一つ「Amazon Comprehend」がいつの間にか日本語に対応していたので試しに利用してみることにしました。 Comprehendは文章を解析し、単語が人なのか場所なのか意味付けを行ったり、今回チャレンジするどういった感情の文章な…

[AWS] CLIで複数のIAMを使い分ける

小ネタです。 複数のAWSアカウントを利用していると、1台のPCで複数のIAMをCLIから利用したくなるわけですが、複数のプロファイルを簡単に切り替える方法が用意されているのでメモしておきます。

[AWS] S3を操作するIAM JSON ポリシーのサンプル

AWSのIAMユーザーごとに権限を設定する場合、最初から用意されているポリシーだけでは十分な制限がかけられません。例えば特定のバケット以外は触らせたくないと言った場合ですね。こういう細かい制御がしたくなったらJSONで定義することになります。 今回は…

【募集終了】Webサービスのデザイン&コーディングをお願いできる方

【追記 2021年06月25日】 無事にご協力先が決定いたしました。ご協力・ご応募いただいたみなさま、誠にありがとうございます!これを持って締め切りとさせていただきたいと思います。 ゲームに関係したCGMサービスを立ち上げる話が持ち上がっておりまして、…

[Node.js] ClamAVでウイルスチェック

Node.jsでウイルスチェックを行います。ユーザーがアップロードしたファイルを公開するようなサービスでは事前にチェックを行わないと、簡単にウイルスを撒き散らすスーパースプレッダーと化してしまいます。 今回は無料で使えるオープンソースのアンチウイ…

[macOS] Clam AntiVirusをインストールする

無料で使えるオープンソースのアンチウイルスソフト「ClamAV」をmacOSへインストールして動かすところまでをまとめます。 ちょっと前にAmazon Linux2へ入れたのですが、手元の環境でもチェックしたくなったんですよ。

[HTML5] リンク先のファイルを超簡単にダウンロード指定する - download属性

なんとa要素にdownload属性を追加するだけで、ページ(ファイル)を表示するのではなく、Webブラウザにファイルを保存するかダイアログを表示させダウンロードを促すことが可能です。 <a href="foo.txt" download>foo</a> download属性にファイル名を指定すれば、デフォルトのファイル名として…

Clam AntiVirusをAmazon Linux2へ導入する

無料で使えるオープンソースのアンチウイルスソフト「ClamAV」をAWSのAmazon Linux2へインストールして動かすところまでをまとめます。 ウイルスはWindowsをターゲットとしたものが多く、限られたユーザーしか利用しないLinux環境だと入れないことが多かった…

FFmpegで実際使うと便利だが脳みそに焼き付いてくれないオプションメモ

コマンドラインで利用できる動画編集ツールFFmpegですが、十数年来の付き合いだというのに、たまにしか使わないもんだからオプションが脳みそに定着してくれませんw いざ使うとめっちゃ便利なんですよ。でもそこまでたどり着けないw 今回は年貢の納め時と…