Okada Hiroshi の blog

typo が多いです

中間証明書の連結

8月29日に購入したワイルドカード証明書ですが、僕が普段使っている環境では問題がなかったのですが、一部の環境※1では中間証明書がインストールされていないようなので、中間証明書を連結しました。

www.ssl2buy.com

上記のページの New AlphaSSL / Wildcard Intermediate certificateAlphaSSL Root CA certificateintermediate.crtroot.crt という名前で保存して。

$ mv toycode.crt toycode1.crt
$ cat toycode1.crt intermediate.crt root.crt > toycode.crt

で連結した証明書ファイルを作成しました。

※1 python やそれを使っている aws ツール

自動リロード

静的なサイトでも開発中には自動リロードして欲しいこともあるので、自動リロードするスクリプトを書いてみました。

poor man's autoreload

以下のスニペットを HTML 文書の head や body の内側に挿入すると 800ミリ秒ごとにHTML文書を(内部的に読み込んで)変化があったらリロードします。

<script src="https://cdn.rawgit.com/HiroshiOkada/6344f094955f3fc31deeffeec2718ff6/raw/4578f0948fa86cff08302a43aea1d913798ce23f/poor-mans-autoreload.js"></script>

追記

10分間変化がなかったらチェックを停止するようにしました。

追記 (2018-10-14)

使っていた RawGit というサービスが終了するので、gist でなく github page を使うことにしました。上記の代わりに以下を使ってください。

 <script src="https://hiroshiokada.github.io/shortcodes/poor-mans-autoreload.js"></script>

RawGit が終了するそうです。 - Okada Hiroshi の blog

GoogleニュースのRSS URL 組み立て

一時期 RSS リーダから遠ざかっていたのですが。最近また Miniflux という RSS インストールして使っています。

Google ニュースRSS 経由で 読みたいので、RSS フィードの URL を生成する簡単な Webアプリを CodePen で書いてみした。

入力欄にキーワードを(空白区切りで)いれて作成ボタンを押してください。

ちなみに URL の仕様は下記の記事を参考にしました。

www.yoshiteru.net

anond.hatelabo.jp

Google スプレッドシートにテキストを貼りつける

Google スプレッドシートにタブやカンマ区切りのテキストを貼り付けるると、貼りつけた直後は列が一つになってしまいます。 けれども貼付け後、テキストを列に分割を選択すると、期待したとおりに列に分割されます。

こういうのは知っている人にとっては当たり前なのでしょうが、僕は今日初めて知ったので書いてみました。

f:id:OkadaHiroshi:20180831162721g:plain

参考: セルのテキストを複数の列に分割する - パソコン - ドキュメント エディタ ヘルプ

SSL ワイルドカード証明書を購入しました

個人で所有しているドメイン toycode.com のワイルドカード証明書の期限が近づいてきたので新しい物を購入しました。

最近は Let's Encrypt があるので SSL 証明書を自前でもっているメリットは少なくないのですが、それでもワイルドカード証明書を一つ用意しておくと色々実験したりするのに便利です。

前回は namecheap という所から買いましたが、今回はさらに安く買える所がないか調べてみました。

プロバイダ サイトURL SSLブランド名 1年 2年
SSL2BUY https://www.ssl2buy.com/ AlphaSSL Wildcard $42.00 $80.00
Cheap SSLL https://cheapsslsecurity.com Comodo PositiveSSL Wildcard $72.95 $127.66
namecheap https://www.namecheap.com Comodo EssentialSSL Wildcard $74.88 $145.76

SSL2BUY という所が 2年で $80 (9000円程度) なので、ここで購入することにしました。

なお、日本語で展開しているところは例えば SSLストア だと2年で3万5000円、サイフにやさしいSSL証明書だと 4万4800円 と高いです。

基本的には持っているドメインの admin 等のメールアドレスか、ドメインwhois に登録されているメールアドレスがあれば、 あとはメールと Web サイトの指示に従っていけば良いのですが、CSR と private key は手元で作成する必要があります。

CSR と private key は openssl がインストールされていれば以下のようにして作成することが出来ます。

$ openssl req -new -newkey rsa:2048 -nodes -keyout toycode.key -out toycode.csr
Generating a 2048 bit RSA private key
...............................+++
.........................+++
writing new private key to 'toycode.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Shinjuku
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Hiroshi Okada
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:*.toycode.com
Email Address []:okadahiroshi@miobox.jp

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

なお、SSL の証明書は XXXXXXX: Your SSL Certificate for *.toycode.com has been issued のような題名の email で送られてきて、添付ファイルでなく、本文中の末尾に

-----BEGIN CERTIFICATE-----

... 30行以上の文字列...

-----END CERTIFICATE-----

というふうに書かれれいるので、この部分をコピペして、例えば toycode.cer みたいなファイルに保管します。

SSL サーバの起動にはこのファイルと先ほど作ったキーファイル (上記の例だと toycode.key) が必要です。

markdown-it のプラグインを書いてみました

nodejs の有名な Markdown パーサの markdown-it で 出力される html のエレメントタイプごとに class 属性を追加したかたので

www.npmjs.com

というプラグインを書いてみました。

markdown-it の内部構造はよくわかっていないので、他のプラグインのコードを参考に書きましたが、パフォーマンス等は悪いと思います。

$ npm install markdown-it @toycode/markdown-it-class --save-dev

みたいにインストールして

const MarkdownIt = require('markdown-it')
const markdownItClass = require('@toycode/markdown-it-class')
 
const mdText = '# テスト文書\n## サブタイトル\n今日は良い*天気*です'
const mapping = { h1: ['title', 'is-4'], h2: 'subtitle', em: 'tag' }
const md = MarkdownIt().use(markdownItClass, mapping)
console.log(md.render(mdText))

<h1 class="title is-4">テスト文書</h1>
<h2 class="subtitle">サブタイトル</h2>
<p>今日は良い<em class="tag">天気</em>です</p>

のようにクラスが付加できます。