2022年2月27日日曜日

JavaScriptで予約語を使わないワンライナーFizzBuzz

今回はただのネタです。

Code Golfとは別方向の趣向で、予約語を使わないFizzBuzzの実装です。

Array(100).fill(0).map((_,i)=>console.log(++i%15?i%5?i%3?i:"Fizz":"Buzz":"FizzBuzz"))

これでもまだわかりやすい部類の書き方だと思うので、わかりやすさを犠牲にすれば多分もっと文字数は減らせます。

他の言語ではどうなるんだろう。CとかJavaみたいに絶対に実現できない言語もあるけど。

プログラミングスクール生のみなさん、FizzBuzzの課題を出されたらこれを提出してもいいですよ

2022年2月20日日曜日

パスワードの制限が厳しいとハッシュ化していない可能性が高い理由

以前、イライラするパスワード登録画面5選という記事でこんな趣旨のことを書きました。

パスワードが「8文字以上16文字以下で入力してください」とか「英数字で入力してください」のように制限が厳しいサービスは、パスワードをハッシュ化せずにそのままDBに保存している可能性が高い

生パスワードをそのまま保存する危険性については言わずもがなですが、上記の内容について先日「なんで?」という質問を受けたので、この場でも書いておきます。

2022年2月13日日曜日

ヤバいエラーには早く気づきたい

みなさん、作ったウェブサービスが吐いているログをちゃんと確認していますか?

サービス監視、ログファイルの出力と集約の設定はやった。でもログの監視をしていなくて、ヤバいエラーが出ていたのに気づかずにユーザーから問い合わせが来て初めて知った・・・みたいなことは割とあるあるです。

これをなんとかした話。とは言っても別に画期的な方法とかではありません。

2022年2月6日日曜日

JavaScriptで非同期処理のawaitつけ忘れを防ぐ

 JavaScriptでバックエンド開発していると非同期処理を使うことが多いですよね。

そこで問題になるのがasync関数に対するawaitのつけ忘れ。まだasync/awaitが使えなくてPromiseオブジェクトに対してthen()catch()をしていた頃ならすぐ気づいたんですが、単に関数呼び出しにawaitをつけるだけというのは便利な反面忘れやすいです。よくやらかします。

JavaScriptは実行するまでPromiseオブジェクトかどうかわからないからESLintじゃ検出できないよなぁ。TypeScript ESLintならできるんかなぁと思いながらルールを探したらありました。