ねこの足跡R 2024-03-03T18:05:05+09:00 katsube Hatena::Blog hatenablog://blog/820878482973262145 フリーランスが会社員になったときの各種手続き hatenablog://entry/6801883189070697722 2024-03-03T18:05:05+09:00 2024-03-03T18:09:52+09:00 長いことフリーランスをやっていましたが、3月から再び会社員として働くことにしました。 このあたりの話はまた機会があればするとして、ここではそれにあたって必要になった手続きについて自分用にまとめておきます。 ちなみに個人事業は副業として継続する予定です。 どこかの会社のお手伝いをするというよりは、自分でサービスなどを立ち上げる方向で考えてます。そっちのほうが性にあっているのでねw 長いことフリーランスをやっていましたが、3月から再び会社員として働くことにしました。 このあたりの話はまた機会があればするとして、ここではそれにあたって必要になった手続きについて自分用にまとめておきます。 ちなみに個人事業は副業として継続する予定です。 どこかの会社のお手伝いをするというよりは、自分でサービスなどを立ち上げる方向で考えてます。そっちのほうが性にあっているのでねw katsube [GAS] GMailで差込みに対応した一斉メール送信 hatenablog://entry/6801883189076306243 2024-01-19T21:19:29+09:00 2024-01-19T22:41:37+09:00 一斉メール送信の仕組みを自分で用意するのは考慮することが色々あって正直ダルいのですが、GASを利用すれば比較的かんたんに実現できます。 大まかな流れは以下の通りです。 文面をGoogleドキュメントで作成 送信者のメールアドレスと差込みたい値の一覧をGoogleスプレッドシートにまとめる スプレッドシートにAppsScriptを追加 専門学校の講師をしているのですが、生徒宛に実習用サーバのアカウントをメールで通知する際に利用していました。 一斉メール送信の仕組みを自分で用意するのは考慮することが色々あって正直ダルいのですが、GASを利用すれば比較的かんたんに実現できます。 大まかな流れは以下の通りです。 文面をGoogleドキュメントで作成 送信者のメールアドレスと差込みたい値の一覧をGoogleスプレッドシートにまとめる スプレッドシートにAppsScriptを追加 専門学校の講師をしているのですが、生徒宛に実習用サーバのアカウントをメールで通知する際に利用していました。 katsube [JavaScript] 操作を一定時間しないとタイムアウト扱いにする hatenablog://entry/6801883189061376543 2022-08-07T03:44:29+09:00 2023-12-16T23:04:06+09:00 Webブラウザとサーバー間で常時、または一定間隔で通信を行っている場合、ユーザーが端末の前から長時間離れた際などに通信を停止したい場合があります。最新の情報をサーバからもらってきても使う人がいなければムダですからね。 サーバ負荷的な面で実装するケースが多い印象ですが、スマホアプリの「クラッシュ・オブ・クラン」では無操作状態が続くと強制的にアプリを再起動せよと表示されます。このゲームの場合はログイン状態のときは他プレイヤーが攻め込めないというルールがあるため、それを悪用されないためだと思われます。 というわけで、今回は何らかの事情で一定の時間ユーザーが何も操作を行わなかったかどうかをクライアント… Webブラウザとサーバー間で常時、または一定間隔で通信を行っている場合、ユーザーが端末の前から長時間離れた際などに通信を停止したい場合があります。最新の情報をサーバからもらってきても使う人がいなければムダですからね。 サーバ負荷的な面で実装するケースが多い印象ですが、スマホアプリの「クラッシュ・オブ・クラン」では無操作状態が続くと強制的にアプリを再起動せよと表示されます。このゲームの場合はログイン状態のときは他プレイヤーが攻め込めないというルールがあるため、それを悪用されないためだと思われます。 というわけで、今回は何らかの事情で一定の時間ユーザーが何も操作を行わなかったかどうかをクライアント… katsube [AWS] ECRにDockerイメージをプッシュする hatenablog://entry/6801883189061376566 2022-04-27T01:30:37+09:00 2023-11-25T15:37:08+09:00 気がつけば猫も杓子もDockerと言いますかコンテナな世界になってしまいましたねw DockerイメージをAWSの各種サービスと連携させるためには「ECR」と呼ばれるレジストリサービスへ登録しておく必要があります。 今回はローカルでビルドしたDockerイメージをECRへ登録するまではまとめておきます。 AWS App Runnerが使いたかったのですが、GitHubとの連携で苦戦したためECRにDockerイメージを登録する方法を採用することにしたというのが経緯だったりします。 気がつけば猫も杓子もDockerと言いますかコンテナな世界になってしまいましたねw DockerイメージをAWSの各種サービスと連携させるためには「ECR」と呼ばれるレジストリサービスへ登録しておく必要があります。 今回はローカルでビルドしたDockerイメージをECRへ登録するまではまとめておきます。 AWS App Runnerが使いたかったのですが、GitHubとの連携で苦戦したためECRにDockerイメージを登録する方法を採用することにしたというのが経緯だったりします。 katsube [AWS] S3へMIMEタイプを自動判定しながらアップロードする - Node.js hatenablog://entry/6801883189061376591 2022-04-06T02:20:55+09:00 2023-11-25T15:44:41+09:00 AWS S3を単なるストレージとして使う際には問題とならないのですが、S3をWebサーバとして使う場合はファイルのMIMEタイプ(Content-type)を正しく指定しておかないとWebブラウザからダウンロードを求められるなど意図した通り動いてくれないことがあります。 この指定方法はシンプルでS3.putObjectを実行する際のパラメーターとして渡すだけ。 const params = { Bucket: 's3.example.com', Key: 'foo.html', Body: await fs.readFile('foo.html'), ContentType: 'text/ht… AWS S3を単なるストレージとして使う際には問題とならないのですが、S3をWebサーバとして使う場合はファイルのMIMEタイプ(Content-type)を正しく指定しておかないとWebブラウザからダウンロードを求められるなど意図した通り動いてくれないことがあります。 この指定方法はシンプルでS3.putObjectを実行する際のパラメーターとして渡すだけ。 const params = { Bucket: 's3.example.com', Key: 'foo.html', Body: await fs.readFile('foo.html'), ContentType: 'text/ht… katsube [GitHub] Git LFSで巨大なファイルを扱う hatenablog://entry/6801883189061376643 2022-03-29T16:59:35+09:00 2024-01-03T13:35:53+09:00 Gitでバイナリや巨大なファイルを扱う場合に活躍するのが「LFS(Large File Storage)」。 詳細な説明は様々なページで行われていますので、今回はGitHubの利用を前提とした基本的な使い方についてだけまとめておきます。 簡単に言うとLFSを利用するとファイルの実際のデータは専用のストレージに、リポジトリ内部には200byteにも満たないハッシュ値等を保存することでリポジトリを軽量化することができるという仕組みです。 Gitはバイナリファイルに更新がある度に全データがリポジトリに保管されるため油断しているとあっという間にリポジトリが肥大化してしまいます。またGitHubでは通常… Gitでバイナリや巨大なファイルを扱う場合に活躍するのが「LFS(Large File Storage)」。 詳細な説明は様々なページで行われていますので、今回はGitHubの利用を前提とした基本的な使い方についてだけまとめておきます。 簡単に言うとLFSを利用するとファイルの実際のデータは専用のストレージに、リポジトリ内部には200byteにも満たないハッシュ値等を保存することでリポジトリを軽量化することができるという仕組みです。 Gitはバイナリファイルに更新がある度に全データがリポジトリに保管されるため油断しているとあっという間にリポジトリが肥大化してしまいます。またGitHubでは通常… katsube [AWS] Serverless FrameworkでS3にファイルが追加されたらLambdaを起動する hatenablog://entry/6801883189061376657 2022-03-04T19:31:38+09:00 2023-11-25T16:32:03+09:00 AWS LambdaはRESTful APIの開発時だけではなく、特定のイベントをトリガーとして処理を行うことができます。今回はServerlessFrameworkを利用し、S3に新しくオブジェクトが追加された際に関数を起動するところまでをまとめます。 AWS LambdaはRESTful APIの開発時だけではなく、特定のイベントをトリガーとして処理を行うことができます。今回はServerlessFrameworkを利用し、S3に新しくオブジェクトが追加された際に関数を起動するところまでをまとめます。 katsube [macOS] Brotli形式で圧縮・解凍する hatenablog://entry/6801883189061376668 2022-03-01T23:09:38+09:00 2023-12-16T23:03:24+09:00 「Brotli」はGoogleが開発したファイルの圧縮形式で、主にWebサーバとの間の通信量を削減する目的で利用されています。gzipの後継的な位置づけで圧縮率もgzipより高くすでに主要なWebブラウザで対応済みのため今後徐々に置き換わっていくことが予想されます。 で、通常はWebサーバなどにモジュールを追加などして利用するわけですが、今回はmacOSのTerminal上で利用してみます。結論としては以下の通り。 圧縮 (file.txt.brが生成されます) $ brotli file.txt 解凍 (file.txtが生成されます) $ brotli -d file.txt.br 「Brotli」はGoogleが開発したファイルの圧縮形式で、主にWebサーバとの間の通信量を削減する目的で利用されています。gzipの後継的な位置づけで圧縮率もgzipより高くすでに主要なWebブラウザで対応済みのため今後徐々に置き換わっていくことが予想されます。 で、通常はWebサーバなどにモジュールを追加などして利用するわけですが、今回はmacOSのTerminal上で利用してみます。結論としては以下の通り。 圧縮 (file.txt.brが生成されます) $ brotli file.txt 解凍 (file.txtが生成されます) $ brotli -d file.txt.br katsube [HTML5] ZipファイルのMIMEタイプがOSによって異なる件 hatenablog://entry/6801883189061376678 2022-02-16T16:17:30+09:00 2023-12-16T23:03:14+09:00 最近のHTMLはファイル選択画面でファイル形式をこちらで指定した物以外は選択不可にできます。例えば次のコードではJPEGとPNG画像だけが選択可能になります。 <form> <input type="file" accept="image/jpeg,image/png"> </form> PCでZipファイルをサーバへアップロードするサービスを作っていたのですが、このaccept属性によって制限を付けると特定の環境でZipファイルが指定できない現象が発生し困ったことに。久しぶりにブラウザでZipファイルを扱ったので混乱したのですが、そういえば環境によってZipのMIMEタイプが違うのでした。 … 最近のHTMLはファイル選択画面でファイル形式をこちらで指定した物以外は選択不可にできます。例えば次のコードではJPEGとPNG画像だけが選択可能になります。 <form> <input type="file" accept="image/jpeg,image/png"> </form> PCでZipファイルをサーバへアップロードするサービスを作っていたのですが、このaccept属性によって制限を付けると特定の環境でZipファイルが指定できない現象が発生し困ったことに。久しぶりにブラウザでZipファイルを扱ったので混乱したのですが、そういえば環境によってZipのMIMEタイプが違うのでした。 … katsube 個人でゲーム開発をされている方(新サービスのご意見募集) hatenablog://entry/6801883189061376690 2022-02-07T10:36:13+09:00 2023-11-25T17:17:45+09:00 【追記 2022年11月17日】※こちらの募集は終了しました。ご協力いただいた皆様ありがとうございました! ゲーム会社さんからのご依頼で新しいプラットフォームの開発にご協力いただける方を大募集しております! ご興味のある方がいらっしゃいましたら、ぜひご協力をいただけると大変助かります。 対象者 個人でゲーム開発を行われており、Webブラウザ上で動作する物を作成できる方 ※学生の方や趣味で行われていらっしゃる方も大歓迎です ※作成方法は問いません(UnityやUE4、RPGツクールなどのツールから出力するのもOKです) お願いしたいこと 現在α版のサービスを実際にご利用いただき感想やご意見をお聞… 【追記 2022年11月17日】※こちらの募集は終了しました。ご協力いただいた皆様ありがとうございました! ゲーム会社さんからのご依頼で新しいプラットフォームの開発にご協力いただける方を大募集しております! ご興味のある方がいらっしゃいましたら、ぜひご協力をいただけると大変助かります。 対象者 個人でゲーム開発を行われており、Webブラウザ上で動作する物を作成できる方 ※学生の方や趣味で行われていらっしゃる方も大歓迎です ※作成方法は問いません(UnityやUE4、RPGツクールなどのツールから出力するのもOKです) お願いしたいこと 現在α版のサービスを実際にご利用いただき感想やご意見をお聞… katsube [MySQL] 外部キー制約を一時的に無効にする hatenablog://entry/6801883189061376701 2022-01-25T22:15:16+09:00 2023-12-30T12:02:40+09:00 MySQLで外部キー制約を適用しているテーブルにはDROP TABLEができません。 本番ではその挙動でもちろん良いのですが、開発中にテーブルをまるごと作り直したいときにはこの制約が邪魔になることがあります。またmysqldumpなどで出力したファイルをインポートする際にも、テーブルを順番通りインポートする必要が出てきます(外部キー制約があるとインポートに時間もかかりますよね)。 そういったときにforeign_key_checksの値に「0」をセットすることで一時的に外部キー制約を無効にすることができます。 SET foreign_key_checks = 0; 再び有効にするには「1」を代… MySQLで外部キー制約を適用しているテーブルにはDROP TABLEができません。 本番ではその挙動でもちろん良いのですが、開発中にテーブルをまるごと作り直したいときにはこの制約が邪魔になることがあります。またmysqldumpなどで出力したファイルをインポートする際にも、テーブルを順番通りインポートする必要が出てきます(外部キー制約があるとインポートに時間もかかりますよね)。 そういったときにforeign_key_checksの値に「0」をセットすることで一時的に外部キー制約を無効にすることができます。 SET foreign_key_checks = 0; 再び有効にするには「1」を代… katsube [MySQL] アップデート時にGPGキーのエラーで停止してしまう場合 hatenablog://entry/6801883189061376710 2022-01-25T18:47:14+09:00 2023-11-25T17:22:53+09:00 小ネタです。 踏み台サーバであるAmazon Linux2にMySQLのクライアントを入れRDSを操作しているのですが、ある日yum updateをしたら途中で停止してしまいました。 エラーメッセージを眺めるとMySQLをアップデートする際にGPGが原因でコケているっぽい。 $ sudo yum update (中略) warning: /var/cache/yum/x86_64/2/mysql57-community/packages/mysql-community-libs-5.7.37-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, k… 小ネタです。 踏み台サーバであるAmazon Linux2にMySQLのクライアントを入れRDSを操作しているのですが、ある日yum updateをしたら途中で停止してしまいました。 エラーメッセージを眺めるとMySQLをアップデートする際にGPGが原因でコケているっぽい。 $ sudo yum update (中略) warning: /var/cache/yum/x86_64/2/mysql57-community/packages/mysql-community-libs-5.7.37-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, k… katsube [JavaScript] フォーム部品に値をセットする(まとめ) hatenablog://entry/6801883189061376722 2022-01-02T16:48:41+09:00 2023-11-25T17:31:59+09:00 前回に引き続きフォーム部品のまとめです。今回はプログラム側から値をセットしたり選択状態をコントロールするお話です。 前回のフォームに入力された値を取得したいという方は以下をどうぞ。 blog.katsubemakito.net 前回に引き続きフォーム部品のまとめです。今回はプログラム側から値をセットしたり選択状態をコントロールするお話です。 前回のフォームに入力された値を取得したいという方は以下をどうぞ。 blog.katsubemakito.net katsube [JavaScript] フォーム部品の入力値を取得する(まとめ) hatenablog://entry/6801883189061376749 2022-01-02T16:43:10+09:00 2023-11-25T17:35:28+09:00 Webサービスを作る際に必ずと言ってよいほど利用するフォーム部品ですが、ユーザーに入力された値を取得する際にお恥ずかしながら自分でもたまにど忘れすることがあるのと、新旧の情報がごっちゃになっているため脳内の整理も兼ねてまとめておきます。 フォーム部品に値をセットしたり、選択状態をコントロールしたい場合は以下をどうぞ。 blog.katsubemakito.net Webサービスを作る際に必ずと言ってよいほど利用するフォーム部品ですが、ユーザーに入力された値を取得する際にお恥ずかしながら自分でもたまにど忘れすることがあるのと、新旧の情報がごっちゃになっているため脳内の整理も兼ねてまとめておきます。 フォーム部品に値をセットしたり、選択状態をコントロールしたい場合は以下をどうぞ。 blog.katsubemakito.net katsube ログイン画面にreCAPTCHA v3を導入する hatenablog://entry/6801883189061376768 2021-12-27T23:50:50+09:00 2023-11-25T17:39:51+09:00 ユーザー登録やログインなどで不安になるのが「ボット」の存在です。 検索エンジンのクローラーなど悪意の無いものであればよいのですが、機械的に大量のユーザーを作成されたり、悪意のある人が第三者のアカウントをゲットしようとプログラムを組んで攻めてくる可能性が有名なサービスになればなるほど高くなります。知名度の低いサービスであっても決済情報が保存されているような場合は狙われることもあるでしょう。 そんな心配に比較的かんたんに立ち向かえるのがGoogle社が提供する「reCAPTCHA」です。「私はロボットではありません」のチェックボックスを見かけたことがある方も多いと思いますが、最新版のv3ではこのチ… ユーザー登録やログインなどで不安になるのが「ボット」の存在です。 検索エンジンのクローラーなど悪意の無いものであればよいのですが、機械的に大量のユーザーを作成されたり、悪意のある人が第三者のアカウントをゲットしようとプログラムを組んで攻めてくる可能性が有名なサービスになればなるほど高くなります。知名度の低いサービスであっても決済情報が保存されているような場合は狙われることもあるでしょう。 そんな心配に比較的かんたんに立ち向かえるのがGoogle社が提供する「reCAPTCHA」です。「私はロボットではありません」のチェックボックスを見かけたことがある方も多いと思いますが、最新版のv3ではこのチ… katsube [HTML5] 異なるオリジンのWebStorageの内容を取得する hatenablog://entry/6801883189061376781 2021-12-26T23:55:26+09:00 2023-11-25T17:41:47+09:00 WebStorage(localStorageとsessionStorage)は同一オリジン内のデータしか読み書きできません。名前空間を分けることでデータの衝突を防いだり、大切なデータを他のサイトから覗き見られることから守ってくれています。 しかしWebサービスを開発していると、サブドメイン間などでWebStorage内のデータを共有したいことがあります。そんなときに使うのが window.postMessage。指定したオリジンにだけWebStorage内のデータを渡したり、逆にデータを受け取ってWebStorage内に保存するといったドメインをまたいでの通信が可能になります。 ※同一オリジ… WebStorage(localStorageとsessionStorage)は同一オリジン内のデータしか読み書きできません。名前空間を分けることでデータの衝突を防いだり、大切なデータを他のサイトから覗き見られることから守ってくれています。 しかしWebサービスを開発していると、サブドメイン間などでWebStorage内のデータを共有したいことがあります。そんなときに使うのが window.postMessage。指定したオリジンにだけWebStorage内のデータを渡したり、逆にデータを受け取ってWebStorage内に保存するといったドメインをまたいでの通信が可能になります。 ※同一オリジ… katsube 「いらすとや」さんのトランプ画像をまとめてダウンロードする hatenablog://entry/6801883189061376795 2021-11-18T18:25:28+09:00 2023-11-25T17:46:15+09:00 小ネタです。 「いらすとや」さんのトランプ画像を使わせていただこうとしたら、1枚ずつ保存しなければならないようで心が折れそうになったため一括でダウンロードできるシェルスクリプトを組みました。……組んだのですが、URLのハッシュ値の法則性を解析するのが面倒だったので、結局すべてのURLのリストを作ることにw せっかくなので別の方も利用されるかもしれないと思いコードを置いておきますね。悪用厳禁でお願いしますw 小ネタです。 「いらすとや」さんのトランプ画像を使わせていただこうとしたら、1枚ずつ保存しなければならないようで心が折れそうになったため一括でダウンロードできるシェルスクリプトを組みました。……組んだのですが、URLのハッシュ値の法則性を解析するのが面倒だったので、結局すべてのURLのリストを作ることにw せっかくなので別の方も利用されるかもしれないと思いコードを置いておきますね。悪用厳禁でお願いしますw katsube [AWS] CloudFrontのオリジンを動的に変更する – Lambda@Edge + Node.js hatenablog://entry/6801883189061376811 2021-11-14T16:05:16+09:00 2023-11-25T17:48:18+09:00 CloudFrontで参照しているオリジンをLambda@Edgeで変更してみます。 今回はhttp://foo.example.comでアクセスされたら、CloudFrontがオリジンhttp://example.com/foo/へリクエストする設定をします。 正直なところあまり需要は無いと思いますがw この設定が生きてくるのは大量に同様の設定をしなければならない時ですね。設定が必要なドメインが2〜3個であればCloudFront側でディストリビューションを必要なだけ作成する方がわかりやすいです。 というわけで先ほどの例の「foo」の部分はどのような文字列が来ても対応可能なよう設定していきま… CloudFrontで参照しているオリジンをLambda@Edgeで変更してみます。 今回はhttp://foo.example.comでアクセスされたら、CloudFrontがオリジンhttp://example.com/foo/へリクエストする設定をします。 正直なところあまり需要は無いと思いますがw この設定が生きてくるのは大量に同様の設定をしなければならない時ですね。設定が必要なドメインが2〜3個であればCloudFront側でディストリビューションを必要なだけ作成する方がわかりやすいです。 というわけで先ほどの例の「foo」の部分はどのような文字列が来ても対応可能なよう設定していきま… katsube [JavaScript] 数値がゾロ目か判定する hatenablog://entry/6801883189061376822 2021-11-03T15:19:35+09:00 2023-11-25T17:50:36+09:00 小ネタです。 指定された数値がゾロ目かどうかを判定する正規表現を試してみます。説明するまでも無いと思いますが「1111」「8888」など同じ数だけで構成された数値をゾロ目と言います。 結論から言うと以下の通り。 /** * ゾロ目判定 * * @param {number} num * @returns {boolean} */ function isZorome(num){ return String(num).match(/^([0-9])\1+$/) !== null } 小ネタです。 指定された数値がゾロ目かどうかを判定する正規表現を試してみます。説明するまでも無いと思いますが「1111」「8888」など同じ数だけで構成された数値をゾロ目と言います。 結論から言うと以下の通り。 /** * ゾロ目判定 * * @param {number} num * @returns {boolean} */ function isZorome(num){ return String(num).match(/^([0-9])\1+$/) !== null } katsube [AWS] Serverless FrameworkでLambdaをArm64対応する hatenablog://entry/6801883189061376834 2021-10-20T22:07:28+09:00 2023-11-25T17:52:14+09:00 AWS Lambdaが2021年9月29日からArm64に対応しました。 デフォルトではx86…要はIntelのCPUが使われていますが、Arm64を選択するだけで20%のコストダウン、最大19%のパフォーマンスの向上が期待できるとか!乗るしかない!このビッグウェーブに! AWS Lambdaが2021年9月29日からArm64に対応しました。 デフォルトではx86…要はIntelのCPUが使われていますが、Arm64を選択するだけで20%のコストダウン、最大19%のパフォーマンスの向上が期待できるとか!乗るしかない!このビッグウェーブに! katsube [AWS] CloudFront+S3オリジンでindex.htmlを省略する - Lambda@Edge + Node.js hatenablog://entry/6801883189061376847 2021-09-30T23:30:35+09:00 2023-11-25T17:54:28+09:00 CloudFrontのオリジンにS3を利用する場合、大きく2つのパターンがあります。 S3を独立したWebサーバとして利用する S3を内部的にHDDのように利用する 前者はS3側で割と色々と設定できるのですが問題は後者です。一般的なWebサーバのように「example.com/hoge/」にアクセスしたら「example.com/hoge/index.html」を返して欲しかったりするわけですが、この機能は自分でコードを書いて用意する必要があるのです。正直面倒くさいw というわけでCloudFrontを制御するLambda@Edgeを準備していきます。 CloudFrontのオリジンにS3を利用する場合、大きく2つのパターンがあります。 S3を独立したWebサーバとして利用する S3を内部的にHDDのように利用する 前者はS3側で割と色々と設定できるのですが問題は後者です。一般的なWebサーバのように「example.com/hoge/」にアクセスしたら「example.com/hoge/index.html」を返して欲しかったりするわけですが、この機能は自分でコードを書いて用意する必要があるのです。正直面倒くさいw というわけでCloudFrontを制御するLambda@Edgeを準備していきます。 katsube [AWS] CloudFrontでBASIC認証を行う - Lambda@Edge + Node.js hatenablog://entry/6801883189061376865 2021-09-28T18:02:09+09:00 2023-11-25T17:59:30+09:00 S3をWebサーバ代わりに使っている方も多いと思いますが、開発中のページや社内だけで閲覧したい場合など簡易的なアクセス制限をかけたい場合がありますよね。以前はEC2の安いインスンスを用意することもありましたが、Lambda@Edgeが登場してからはS3とCloudFrontだけで完結することができます。 というわけで今回はCloudFrontを使ってBASIC認証をかける方法をまとめます。 S3をWebサーバ代わりに使っている方も多いと思いますが、開発中のページや社内だけで閲覧したい場合など簡易的なアクセス制限をかけたい場合がありますよね。以前はEC2の安いインスンスを用意することもありましたが、Lambda@Edgeが登場してからはS3とCloudFrontだけで完結することができます。 というわけで今回はCloudFrontを使ってBASIC認証をかける方法をまとめます。 katsube ScanSnap Homeの常駐プロセスを終了したい - macOS版 hatenablog://entry/6801883189061376886 2021-09-28T15:15:34+09:00 2023-11-25T18:09:58+09:00 小ネタです。 PFUのスキャナ「ScanSnap」を10年ほど愛用してまして、もう数百冊以上の書籍やら10年分のあらゆる書類や郵便物をスキャンしてます。めっちゃ便利!思い出や資料として取っておかない物はためらわずにデータ化した方が良いですね。部屋から本棚が3つくらい無くなりましたw リコー PFU ドキュメントスキャナー ScanSnap iX1600 (最新/高速毎分40枚/両面読取/ADF/4.3インチタッチパネル/Wi-Fi対応/USB接続/フラグシップ/書類/レシート/名刺/写真) (Black)ScanSnapAmazon で、ちょっと前にmacOS側から操作するためのアプリがリニュ… 小ネタです。 PFUのスキャナ「ScanSnap」を10年ほど愛用してまして、もう数百冊以上の書籍やら10年分のあらゆる書類や郵便物をスキャンしてます。めっちゃ便利!思い出や資料として取っておかない物はためらわずにデータ化した方が良いですね。部屋から本棚が3つくらい無くなりましたw リコー PFU ドキュメントスキャナー ScanSnap iX1600 (最新/高速毎分40枚/両面読取/ADF/4.3インチタッチパネル/Wi-Fi対応/USB接続/フラグシップ/書類/レシート/名刺/写真) (Black)ScanSnapAmazon で、ちょっと前にmacOS側から操作するためのアプリがリニュ… katsube [Git] GitHubにGPG鍵を登録し署名付きcommit/tagを行う hatenablog://entry/6801883189061376897 2021-09-25T01:34:18+09:00 2024-03-13T16:26:49+09:00 Gitの初期設定で自分の名前やメールアドレスを入力するわけですが、特に認証などが入るわけではないので簡単に他人になりすましが出来てしまいます。そこで確かに自分がコミットまたはタグを付けたことを証明するために、署名を付けることができます。 GitHubを眺めていると見かける、コミットログの横に「Verified」バッジが表示されているのがそれです。 例えばプルリクを受け取った人が、なりすましを行った悪意のある第三者から送られてきたかどうか判断する手助けになるというわけですね。また同様にコミットやタグが改ざんされているかも検知することができます。 Gitの初期設定で自分の名前やメールアドレスを入力するわけですが、特に認証などが入るわけではないので簡単に他人になりすましが出来てしまいます。そこで確かに自分がコミットまたはタグを付けたことを証明するために、署名を付けることができます。 GitHubを眺めていると見かける、コミットログの横に「Verified」バッジが表示されているのがそれです。 例えばプルリクを受け取った人が、なりすましを行った悪意のある第三者から送られてきたかどうか判断する手助けになるというわけですね。また同様にコミットやタグが改ざんされているかも検知することができます。 katsube [GitHub Actions] 実行結果をSlackへ通知する hatenablog://entry/6801883189061376927 2021-09-06T19:21:17+09:00 2023-12-17T17:21:34+09:00 GitHub Actionsの実行結果を毎回GitHub上で確認するのも面倒ですよね。一応失敗したときはメールでお知らせしてくれますが、できればSlackに投げてくれるといろいろ都合が良かったりもします。 そこで今回はActionsの実行結果をSlackへ通知する設定を行います。 GitHub Actionsの実行結果を毎回GitHub上で確認するのも面倒ですよね。一応失敗したときはメールでお知らせしてくれますが、できればSlackに投げてくれるといろいろ都合が良かったりもします。 そこで今回はActionsの実行結果をSlackへ通知する設定を行います。 katsube [GitHub Actions] AWS S3へファイルを自動的に転送する hatenablog://entry/6801883189061376947 2021-09-05T03:33:36+09:00 2023-12-17T17:21:47+09:00 GitHub上にリポジトリを作成し、いつも通りpushすると自動的に仮想マシンが起動しこちらが指定した処理を行ってくれる「Actions」という機能があります。なんとパプリックリポジトリは無料、プライベートリポジトリも月間2000分(約33時間)までは無料で使えるという夢のような機能ですw 主にアプリをビルド(コンパイル)したり、テストコードを自動的に実行するといった用途に使われていますが、ここでは特定のブランチを更新しpushすると、そのファイルをAWS S3へ自動的に転送する設定を行ってみます。 GitHub上にリポジトリを作成し、いつも通りpushすると自動的に仮想マシンが起動しこちらが指定した処理を行ってくれる「Actions」という機能があります。なんとパプリックリポジトリは無料、プライベートリポジトリも月間2000分(約33時間)までは無料で使えるという夢のような機能ですw 主にアプリをビルド(コンパイル)したり、テストコードを自動的に実行するといった用途に使われていますが、ここでは特定のブランチを更新しpushすると、そのファイルをAWS S3へ自動的に転送する設定を行ってみます。 katsube [Git] git-secretsでパスワードや機密情報の登録を禁止する hatenablog://entry/6801883189061376965 2021-09-04T21:22:34+09:00 2023-12-17T17:21:57+09:00 AWSなどのクラウドサービスでは、データベースやファイルシステムなどの各種リソースを操作するためのアカウント(IAM)を発行して権限管理を行うことがありますが、このアカウント情報をGitのリポジトリに登録してしまうと、意図せず流出し悪い人に悪用されてしまう場合があります。 定期的にネット上で話題になりますが、最終的に仮想通貨のマイニングなどに利用され多額の請求がやってくるパターンが多いようです。 【実録】アクセスキー流出、攻撃者のとった行動とその対策 | DevelopersIO AWSが不正利用され300万円の請求が届いてから免除までの一部始終 - Qiita 初心者がAWSでミスって不正利… AWSなどのクラウドサービスでは、データベースやファイルシステムなどの各種リソースを操作するためのアカウント(IAM)を発行して権限管理を行うことがありますが、このアカウント情報をGitのリポジトリに登録してしまうと、意図せず流出し悪い人に悪用されてしまう場合があります。 定期的にネット上で話題になりますが、最終的に仮想通貨のマイニングなどに利用され多額の請求がやってくるパターンが多いようです。 【実録】アクセスキー流出、攻撃者のとった行動とその対策 | DevelopersIO AWSが不正利用され300万円の請求が届いてから免除までの一部始終 - Qiita 初心者がAWSでミスって不正利… katsube [Node.js] SequelizeでMySQLを利用する - その5「ToDoアプリ作成編」 hatenablog://entry/6801883189061376976 2021-08-13T17:00:58+09:00 2023-11-25T18:27:02+09:00 Node.jsの代表的なO/RMであるSequelizeの第五弾。 これまで以下のような内容を取り上げてきました。 第1回 インストールから基本的な利用方法 第2回 SELECT文の使い方 第3回 トランザクション 第4回 マイグレーション 今回はここまでの情報の整理も兼ねて、簡単なToDoアプリを作ってみようと思います。 www.youtube.com Node.jsの代表的なO/RMであるSequelizeの第五弾。 これまで以下のような内容を取り上げてきました。 第1回 インストールから基本的な利用方法 第2回 SELECT文の使い方 第3回 トランザクション 第4回 マイグレーション 今回はここまでの情報の整理も兼ねて、簡単なToDoアプリを作ってみようと思います。 www.youtube.com katsube [Node.js] SequelizeでMySQLを利用する - その4「マイグレーション編」 hatenablog://entry/6801883189061377029 2021-08-10T13:31:21+09:00 2023-11-25T18:29:14+09:00 Node.jsの代表的なO/RMであるSequelizeの第四弾。 第1回ではインストールから基本的な利用方法、第2回ではSELECT文の使い方、第3回ではトランザクションを取り上げました。 今回は「マイグレーション」のお話です。 Sequelizeから提供されているCLIツールを利用すると、モデルの内容をコマンド一発でMySQLへ反映することができます。最初の1回目だけではなく運用開始後に差分を反映することもできます。他のフレームワークなどでも見かけますよね。Ruby on Railsで初めてこの手のツールを触ったときは感動したものですw Node.jsの代表的なO/RMであるSequelizeの第四弾。 第1回ではインストールから基本的な利用方法、第2回ではSELECT文の使い方、第3回ではトランザクションを取り上げました。 今回は「マイグレーション」のお話です。 Sequelizeから提供されているCLIツールを利用すると、モデルの内容をコマンド一発でMySQLへ反映することができます。最初の1回目だけではなく運用開始後に差分を反映することもできます。他のフレームワークなどでも見かけますよね。Ruby on Railsで初めてこの手のツールを触ったときは感動したものですw katsube [Node.js] SequelizeでMySQLを利用する - その3「トランザクション編」 hatenablog://entry/6801883189061377155 2021-08-09T18:27:34+09:00 2023-11-25T18:30:48+09:00 Node.jsの代表的なO/RMであるSequelizeの第三弾。 第1回ではインストールから基本的な利用方法、第2回ではSELECT文の使い方を取り上げました。今回はINSERTやUPDATEなど更新系の処理に欠かせない「トランザクション」です。 Node.jsの代表的なO/RMであるSequelizeの第三弾。 第1回ではインストールから基本的な利用方法、第2回ではSELECT文の使い方を取り上げました。今回はINSERTやUPDATEなど更新系の処理に欠かせない「トランザクション」です。 katsube