アルゴリズムは、特定の問題を解決するための命令である。基本的なレベルでは、アルゴリズムは料理本と考えることができます。なぜなら、入力された材料から完成した料理を作るための手順が非常に正確に記述されているからです。
プログラミングでは、さまざまな種類の問題を解くのに有効なアルゴリズムが一通り存在する。しかし、アプリ全体のデザインに取り組む方法のチュートリアルを探している場合は、design patterns のようなより強力なツールに手を伸ばす必要があります。
このアルゴリズムにより、2つのGPS地点のおおよその距離を簡単に計算することができます。 PHPの実装 function getCoordsDistance( float $lat1, float $lng1, float $lat2, float $lng2 ): float { $r = 6371; $lat1 = ($lat1 / 180) * M_PI; $lat2 = ($lat2 / 180) * M_PI; $lng1 = ($lng1 / 180) * M_PI; $lng2 =…
ほとんどのドキュメントフィンガープリントハッシュ関数の原理は、すべての入力に対して常に同じ出力を返すことである。これを決定論的挙動という。同時に、入力が少し変わると出力が大きく変わる(事実上、全く別のハッシュを返す)。特に、入力文書が変更されたかどうかを確認し、変更された場合は全く別のものを取得したい場合に有効である。そのような関数の例として、MD5やSHA1がある。 ハッシュから元の入力の内容を推測したい場合、簡単な方法はなく、ヒットするまで各オプションをブルートフォース(総当り)するほかない…
各アルゴリズムにはそれぞれ複雑さがあり、数学的な表記で表すことができる。この概要では、入力データのサイズ(扱う要素の数)に応じてアルゴリズムの典型的な複雑さを示し、どのタイプのアルゴリズムがどのタイプのタスクに適しているかを示しています。 一般に、問題の種類ごとに最適な特化型アルゴリズムが存在する。どのアルゴリズムも万能ではなく、常に自分の文脈を知る必要があります。 ビッグオー記法 Big O記法*は、入力サイズが大きくなるにつれて、実行時間またはメモリ要件がどのように増加するかによってアルゴリ…
PHPで電話番号を検証し、フォーマットする簡単な方法はありません。そこで、依存関係がなく、かつこの役割を果たすことができる簡単なライブラリを書きました。 目的は、電話番号の形式をチェックしたり、基本的な正規の形式(常に有効)に変換したりすることである。 インストール 単純に作曲家別。 $ composer require baraja-core/phone-number または、Download on GitHubパッケージをダウンロードしてください。 図書館の利用方法 このツールの原理は、ユー…
過去にこの記事では、似たような数字を認識する方法を紹介したことがある。 例えば、500 199 Kčと500 210 Kčはほぼ同じです。 解決策は、比率を計算し、εと比較することです。 $x = 500199; $y = 500210; $epsilon = 0.001; if (abs($x / $y) < $epsilon) { // 数字は似ている }
Captchaは現在、フリーフォーマットを保護するための最も一般的な方法の一つです。もともとデータの安全性を守るためではなく、スパム対策や人間であることを認識するために作られたものです。 しかし、機械で生成されたものなので、必ずしも完璧ではありませんが、キャプチャーテストの成功率は99%前後で、よくできたスパムロボットで解読できる画像は1%程度です。 仕組み 他にもオプションがあり、例えば私はこのソリューションを使っています。 サーバーは、ユーザーがフォームページを要求したという情報を受け取り、…