ワンタイムパスワード:パスワードより悪い?

2025-08-07

多くのサービスが、欠陥のあるログイン方法を使用しています。電子メールまたは電話で6桁のコードを送信する方法です。これは非常に危険です。攻撃者は、簡単にフィッシングサイトを作成し、ユーザーをだましてコードを入力させ、アカウントを盗むことができます。パスワードマネージャーは保護を提供しません。この方法を使用しているMicrosoftのMinecraftログインは、すでに多数のアカウント盗難被害を受けています。この安全でないログインシステムの使用をやめましょう!

続きを読む
テクノロジー

LinuxのPATH:シェルの秘密

2025-04-29

Linuxが実行するコマンドをどのように見つけるのか疑問に思ったことはありませんか?答えは、カーネルではなくシェルに依存していることです!この記事では、PATH環境変数のメカニズムを深く掘り下げ、dashのようなシェルが`padvance`関数を使用してPATH内で実行可能ファイルを探し、カーネルの`execve`システムコールが実際には完全なパスを受け取る方法を明らかにします。Python、Go、Rustなどのプログラミング言語も、サブプロセスライブラリに独自のPATH検索を実装しており、最終的には`execvp`などの基底関数に依存しています。この記事では、shebangが絶対パスを必要とする理由と、`/usr/bin/env`の巧妙な役割についても説明します。

続きを読む
開発

複利でeを説明するのはやめよう

2025-04-11

数学の授業では、自然対数の底eを複利を使って説明することがよくあります。年利100%の口座は、年利で複利計算すると2倍になり、半年複利だと2.25倍、日複利だと約2.714倍、そして連続複利だとちょうどe倍になります。しかし、これは誤解を招きます。複利の成長は指数関数的ですが、この例では複利計算の期間を線形に分割しています。銀行は金利、複利計算期間、年換算利率を別々に公開する必要があります。eを紹介する方法は、それ自身を導関数とするという独自の性質や、オイラーの公式における重要な役割など、他にもっとエレガントな方法があります。これらの方法は、事前にeを知っている必要がなく、数学的により厳密です。

続きを読む

数時間から360ミリ秒へ:パズル解法のオーバーエンジニアリング

2025-02-08

著者は、行で形成された9つの9桁の数の中で、可能な限り最大の最大公約数を得ることを目的とした数独パズルに挑戦しました。Z3ソルバーを使った初期の試みは、数時間経っても解が見つかりませんでした。そこで著者は、いくつかの最適化戦略を採用しました。探索空間を狭めるための数学的分析、BFSアルゴリズム、そして`is_good`関数の反復的な改良(HashSetからbitsetへの移行、そしてベクトル化計算のためのSIMDの活用)です。マルチスレッド化と洗練されたスレッド同期により、解法時間は数時間から360ミリ秒に短縮され、1600倍以上の高速化を実現しました。ハードコードされた解答が最も速い方法であることが判明しましたが、この記事は、一見単純な算術問題でも、綿密なアルゴリズム最適化によって大幅な性能向上が得られることを示しています。

続きを読む
開発

Minecraftサーバーの場所選びが投票システム論争に発展

2024-12-21

Minecraftサーバーの場所を決める問題が、様々な投票システムに関する深い議論を引き起こしました。最初に用いられた単純過半数方式(Plurality voting)は、「スポイラー効果」により最も人気のない選択肢が勝つという結果になりました。「インスタント・ランオフ」方式を試したものの、候補者が変化すると単調性が損なわれることが判明しました。著者はさらに、ボルダ法とアローの不可能性定理を紹介し、最終的に、アローの不可能性定理の3つの条件(一致性、非独裁性、無関係な選択肢の独立性)を満たすため、スコア投票と承認投票をより優れた選択肢として推奨しています。

続きを読む