最近見られたメモ

nginxで遮断IPアドレス一覧を外部ファイルで管理する

特定のIPアドレスからのアクセスを nginx で遮断する方法です。規制対象IPアドレスの一覧表は外部ファイルとして管理し、メンテナンスしやすくします。IPアドレス一覧表以外に編集するファイルは nginx.conf だけです。編集すると言っても、たった一行追加するだけです。せっかくなので、私が管理するWebサーバへ総当り攻撃を仕掛けてくるアタッカーのIPアドレス一覧 (IPアドレス規制ファイル) も下記に載せておきます。ご自由にコピーしてお使いください。
by @TanakaSoftwareLab at 2019/7/16 6:16

ブラウザでグーグル認証システム互換の2FAトークンを生成

ブラウザのJavaScriptで二段階認証のワンタイムトークン(パスコード)を生成する方法です。今回ご紹介するコードは、芽萌丸ツールズの2FAトークン生成ツールでも利用されています。2FA設定時にQRコード等で提供されるシークレットさえ保管しておけば、Google認証システムアプリが無くてもパスコードを生成できます。
by @programming at 2019/8/6 11:54

JavaScriptで画像の動的ロード

JavaScriptを使って画像を動的に読み込む方法です。画像の読み込み中のローディングイメージの表示などに応用できます。ピュアJS版とjQuery版の2つをご用意しました。
by @programming at 2019/7/29 6:37

匿名で投げ銭できるサービス

利用者と運営者側がお互いにプライバシーを守りながら、自分の好きなサイトやブログを応援したい。そのようなニーズは今後も増えていくと思われます。このメモでは、インターネットの世界で今後とても重要な存在になると思われる「匿名の投げ銭サービス」をご紹介します。
by @TanakaSoftwareLab at 2019/7/3 9:56

ラズパイゼロをUSBドングルにしてインターネット接続

ラズパイゼロ Raspberry Pi Zero WH をUSBドングル替わりにしてパソコンをインターネットに接続する方法です。Wi-Fi機能の付いていないパソコンでもラズパイゼロをUSB接続してインターネットできるようになります。
by @iot at 2019/7/1 9:44
更新履歴

leafletで地理院地図を描画しマーカー設置など

地図描画ライブラリleafletと国土地理院の地理院地図を連携させてGISブラウザアプリケーションを作ってみるサンプルです。地理院地図はAPIキーの登録などが不要なのでとてもお手軽で、なおかつ日本政府が管理しているので地図情報ソースとしてはとても安心感があります。
by @programming at 2019/8/20 13:38

ブラウザでグーグル認証システム互換の2FAトークンを生成

ブラウザのJavaScriptで二段階認証のワンタイムトークン(パスコード)を生成する方法です。今回ご紹介するコードは、芽萌丸ツールズの2FAトークン生成ツールでも利用されています。2FA設定時にQRコード等で提供されるシークレットさえ保管しておけば、Google認証システムアプリが無くてもパスコードを生成できます。
by @programming at 2019/8/6 11:54

芽萌丸運用情報

こちらで芽萌丸の運用情報を更新していきます。
by @TanakaSoftwareLab at 2019/8/6 9:08

JavaScriptで画像の動的ロード

JavaScriptを使って画像を動的に読み込む方法です。画像の読み込み中のローディングイメージの表示などに応用できます。ピュアJS版とjQuery版の2つをご用意しました。
by @programming at 2019/7/29 6:37

nginxで遮断IPアドレス一覧を外部ファイルで管理する

特定のIPアドレスからのアクセスを nginx で遮断する方法です。規制対象IPアドレスの一覧表は外部ファイルとして管理し、メンテナンスしやすくします。IPアドレス一覧表以外に編集するファイルは nginx.conf だけです。編集すると言っても、たった一行追加するだけです。せっかくなので、私が管理するWebサーバへ総当り攻撃を仕掛けてくるアタッカーのIPアドレス一覧 (IPアドレス規制ファイル) も下記に載せておきます。ご自由にコピーしてお使いください。
by @TanakaSoftwareLab at 2019/7/16 6:16

Node.jsでシングルトンなクラスモジュール

Node.jsでシングルトンなクラスモジュールを作る簡単な方法です。クラス自体を弄ること無くシングルトン化できる方法なのでお手軽です。
by @programming at 2019/7/12 9:49

Chrome拡張機能でリクエストヘッダrefererの書き換え

Chrome拡張機能で content script や background スクリプト内でのajaxリクエスト時にリクエストヘッダのリファラrefererを書き換える方法です。
by @programming at 2019/7/11 13:22

匿名で投げ銭できるサービス

利用者と運営者側がお互いにプライバシーを守りながら、自分の好きなサイトやブログを応援したい。そのようなニーズは今後も増えていくと思われます。このメモでは、インターネットの世界で今後とても重要な存在になると思われる「匿名の投げ銭サービス」をご紹介します。
by @TanakaSoftwareLab at 2019/7/3 9:56

ブラウザでBTC送金トランザクション

ブラウザ上のJavaScriptでビットコイン(BTC)を送金する方法をメモします。今回ご紹介する方法は、いわゆるブラウザウォレットアプリケーションの作り方の基本になります。通常ブラウザウォレットでは、秘密鍵での署名をブラウザのローカル上だけで行います。そのため、秘密鍵がインターネット上に流れて盗聴されるリスクを低減させることができます。これはウォレットアプリとしてのセキュリティ上とても重要なことです。ただし、秘密鍵の管理を自己責任で行う必要があるため、取引所のWebウォレットのように他社にお任せできる利便
by @programming at 2019/7/2 11:12

ヘッドレスなラズパイゼロをケーブルの類を一切使わずにセットアップ

モニターもキーボードも付いてないヘッドレスなラズパイ Raspberry Pi Zero WH をLANケーブルすら使わずにセットアップする方法です。ラズパイをインターネット接続、そして外部パソコンからSSH接続できるようにします。
by @iot at 2019/7/1 9:44

ラズパイゼロをUSBドングルにしてインターネット接続

ラズパイゼロ Raspberry Pi Zero WH をUSBドングル替わりにしてパソコンをインターネットに接続する方法です。Wi-Fi機能の付いていないパソコンでもラズパイゼロをUSB接続してインターネットできるようになります。
by @iot at 2019/7/1 9:44

自分のプロバイダ以外のSSHアクセスを全てブロック

サーバセキュリティ向上のため自分のプロバイダ以外からのsshアクセス(ポート22番)を制限する方法のご紹介です。
by @TanakaSoftwareLab at 2019/7/1 6:17

browserifyしたjsファイルの軽量化方法

browserifyしたjsのbundleサイズが大きすぎてブラウザで読み込むには少し辛いとき、無駄な依存モジュールを削除したり、軽量なものに置き換えたりしてbundleサイズの軽量化を図ります。そのような場面で役立つのがdiscモジュールです。discモジュールはWebアプリケーションの読み込み速度改善に重宝します。今回はdiscモジュールの使い方をご紹介します。
by @programming at 2019/6/27 13:49

Bashテクニック集

Unixシェルかつコマンド言語Bashのテクニック集です。個人的によく使いそうなものだけをピックアップしています。
by @programming at 2019/6/27 7:31

ブラウザでQRコード読込と生成

ブラウザでQRコードを読み込んで解析したり、QRコード画像を生成したりする方法です。QRコード画像の読み込みについては画像ファイルからの読み込み方とWebカメラからの読み込み方の両方を紹介しています。
by @programming at 2019/6/25 13:06

Unicode絵文字の一覧表

Unicode絵文字の一覧表です。割りとよく使いそうな絵文字をセレクトしました。クリックでコピーできます。
by @TanakaSoftwareLab at 2019/6/23 11:31

Chrome拡張機能でブラウザのクッキーを利用

Chrome拡張機能でブラウザのクッキーを扱う方法をご紹介。コードサンプルも。
by @programming at 2019/6/21 11:22

芽萌丸利用者のためのメモ更新ガイドライン

芽萌丸利用者のためのメモ更新ガイドラインです。
by @TanakaSoftwareLab at 2019/6/21 9:06

ブラウザからファイル出力(ダウンロード処理)

ピュアなJavaScriptを使ってブラウザからファイルを出力させる方法です。この方法を使えば、JavaScriptによってブラウザ上で生成された任意のデータ(例えばCSVとか)をファイルとしてダウンロードさせることができます。Excelでも文字化けせずに開けるCSVファイルの出力方法も。
by @programming at 2019/6/21 7:19

田中ソフトウェアラボ開発公開ソフトウェア

田中ソフトウェアラボが開発&公開している(or 以前公開していた)Webサービスやアプリケーションを一部ご紹介。
by @TanakaSoftwareLab at 2019/6/20 13:50

jQueryを使っていないサイトをjQueryセレクタで調査

Webページでセレクタを調査する際、 $("div") といった感じのコードをブラウザのコンソール上で叩いて要素をデバッグしたりすると思います。通常このやり方は jQuery を使っているサイトでしか使えません。でも実は jQuery を使っていないサイトでも jQuery セレクタで調査することは可能なのです。その方法をご紹介します。
by @programming at 2019/6/14 7:00

ブラウザでピュアJavaScriptだけでハッシュを生成

外部ライブラリを使わずにピュアJavaScriptだけでブラウザ上でハッシュを生成する方法です。実験コードでは指定した文字列のSHA-256ハッシュを生成しています。
by @programming at 2019/6/12 5:57

TODO要素を作って覚えるカスタム要素

Custom Elements (カスタム要素) を理解する一番の近道は、実際に何かテキトーなカスタム要素を一つ作ってみることではないかと思います。そこで今回は、TODOを管理できる簡単なカスタム要素 todo-element を実際に作ってみたいと思います。
by @programming at 2019/6/11 12:20

生JSでAsync/Awaitも使わずに非同期関数の同期的ループ

ピュアなJavaScriptだけで且つAsync/Awaitも使わずに非同期関数の同期的ループを実現する方法です。このテクニックはイテレーターとジェネレーターを使います。主に古き良きCallbackスタイルでコーディングされているシステムで使えるテクニックですが、様々な理由でAsync/Awaitを敢えて使いたくない(or 使えない)場面でも使えるかと思います。
by @programming at 2019/6/11 7:15

Node.jsでメモリ使用量をログ出力

Node.jsでメモリ使用量の調査に便利な process.memoryUsage() の使い方をご紹介。
by @programming at 2019/6/10 15:58

たった1行のHTMLコピペで実現するTwitterシェアボタン

Twitterシェアボタンをたった1行のHTMLコピペだけで導入する方法です。タグの編集不要、外部ライブラリ不要、JavaScriptコーディング不要、さらにはWebページごとに異なるコードを仕込む必要もありませんので、とても簡単に導入することができます。
by @programming at 2019/6/10 12:03

HTMLへコピペだけで実現する「トップへ戻る」ボタン

一般的なWebページでスクロールダウンした時に右下に出てきてクリックするとページトップへスルスルとスクロールバックするボタン(「トップへ戻る」や「Go to Top」みたいなやつ)ってよく見かけますよね。あのボタン (便宜上ここではGTTボタンと呼びます) を簡単なJSコードのコピペだけで実現できます。
by @programming at 2019/6/10 8:22

nginxのアクセスログを解析する正規表現

nginxのアクセスログファイル access.log を解析するための正規表現をメモしておきます。せっかくなのでアクセス解析用JavaScriptコードも置いておきます。
by @programming at 2019/6/9 7:07

HTMLだけで実現するサイト内検索ボックス

HTMLコードをコピペするだけで使えるサイト内検索ボックスです。HTMLだけで完結。余計なコーディングは一切不要です。Google検索以外にも対応。
by @programming at 2019/6/7 13:40

Node.js の Event Loop ブロッキングを検出する

Node.jsを使ったアプリケーションで Event Loop をブロッキングしている処理部分を検出する方法のご紹介。
by @programming at 2019/6/7 11:46

by @{{ obj.uniqueName }} at {{ app.Util.toLocaleStringJP(obj.updatedAt) }}