2021年11月28日日曜日

JSConf JP 2021のスタッフをやりました

 昨日11月27日は日本最大級のJavaScriptカンファレンスJSConf JP 2021の開催日でした。去年はコロナの影響で中止だったのですが、今年はオンラインで開催です。

そして、今年はなんとスタッフとして参加しました。いや前回もでしたが。

発表内容は他の参加者が各々ブログにまとめてくれていると思うので、今回はスタッフとしての

2021年11月21日日曜日

C++の純粋仮想関数の宣言方法に物申す

多分初めてのC++エントリーです。

ここ何年もC++でまともにコードを書いていないんですが、最初に見たときからどうしても全身がムズムズする文法があります。

純粋仮想関数、お前のことだ。

2021年11月14日日曜日

TypeScriptのenumをいまさら語る

TypeScriptのenumについて。

あちこちで「enumはアカンからunion型を使え」と言われていますが、その理由や「本当にenumはいいところないの?」「unionはenumの移行先として適切なの?」などをいろいろ検証してみましょう。

最後に「こういう仕様ならいいのに」という妄想もあります。

2021年11月7日日曜日

サーバーマシンからLet's EncryptのSSL証明書を使っているサイトにアクセスできないときの対処方法

今年の10月にLet's Encryptであんなことが起こってしまい、Windows Updateをしていない世界中の古いマシンでLet's Encryptを使ったサイトが表示できなくなってしまいました。

それはそれとして、古いサーバーマシンでも似たようなことが起きているんじゃないかと思います。

具体的には、サーバーがスクレイピングやAPIコールなどのために外部サイトにアクセスする際に、サーバー側に古いルート証明書(DST Root CA X3)がインストールされていたために外部サイトへのアクセスに失敗したというパティーン。

今回はこの対処法について。ちなみにこの方法はUbuntu 14.04で確認しています。

2021年10月31日日曜日

POSIX sedとGNU sedの両方で動かすテクニック4種盛り

POSIX sed(macOS標準)とGNU sed(Linux標準)とで微妙に書き方が違うので、どちらでも動くようにシェルスクリプト等を書きたい場合の注意事項をちょっとまとめてみました。

縛りプレイとして、sedコマンドだけで対応するものとします。つまり、パイプやリダイレクト、他のコマンドとの併用などは行わないものとします。

以下の内容は、macOS(POSIX sed)とLinux(GNU sed)の両方で動くことを確認済みですが、どちらも割と新しいバージョンで確認したので古いバージョンでは使えない可能性もあります。ご注意ください。

2021年10月24日日曜日

typescript-eslintでインデントのルールがおかしいときの対応

現在TypeScriptで作っているウェブアプリケーションがあるんですが、先日ESLintのバージョンを7系から8系に、typescript-eslintのバージョンを4系から5系に上げたところ、今まで出なかったエラーが出てきました。

問題を指摘されたのは以下のようなコード片です。

class Foo {
	@decorator
	bar: number;
}

一見問題なさそうに見えます。実際文法的には問題ありませんし今までは特に指摘されてきませんでした(ここだけ見るとbarが初期化されていませんが、あくまでコード片です。実際にはコンストラクターで値を割り当てています)。

何がアカンのかというと、barのインデントだそうです。こうしろと。

class Foo {
	@decorator
		bar: number; // ←こうしないとエラー
}

えっ。こんなコーディングスタイル見たことない

新しいルールが追加されたのかと思って、これを無効にするオプションを探してみたんですが特に見つからず。

2021年10月17日日曜日

文字列にはシングルクォートを使うべきかダブルクォートを使うべきか

文字列はシングルクォートとダブルクォートのどちらで囲うべきか、ときどきコーディングスタイル論争に上がりますね。もちろん、JavaScriptとかPythonのようにどっちを使っても文法上問題ない言語に限ります。CやJavaでは必ずダブルクォートを使わなければいけません。

今回のテーマは、そんな今更感あふれる話題です。