Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
これは作成した2次元バーコードの元となったURLを、自社が管理していない外部の「短縮URL作成プログラム」が実行した結果、いったん全く別のページを間に挟んだり、そもそも全く別のURLへとジャンプさせたりといった、利用者が予想していなかった挙動をするようになったものだと推察されます。 全く別のページが間に挟まっていて、そこに広告が表示され、その広告が全く異なるWebサイトへの入会を誘導しているとしても、そもそもが「入会の案内」だった場合、気が付かずに入力してしまう可能性はあるでしょう。 本件は2次元バーコードを使うリスクや、見知らぬ短縮URL作成プログラムを利用することだけが問題ではないようにも思えます。特に企業においては、ITでも「生殺与奪の権を他人に握らせるな」というのが重要なのかもしれません。 短縮URLという“根本解決できない問題”にどう立ち向かうか? 「短縮URL」は、それなりに昔
const colors = ["赤","青"] as const; type Colors = typeof colors[number]; //"赤" | "青" typeof colors[number]・・・ってよォ~~~~~ typeofはわかる。スゲーよくわかる TypeScritの世界では、typeofで変数から型を作れるんだよなァ だがnumberってのはどういう事だああ~~~~っ!? 配列にnumberを渡せるかっつーのよ───────ッ!! ナメやがってこの型ァ!! 超イラつくぜぇ~~~~ッ!! 解説 これはよォ 「Lookup Type」ってやつらしいぜぇ たとえばよォ 👇みたいに書くとPerson型からプロパティの型を取り出せるよなァ~?? type Person = { name: string, age: number } type name = Person
1. 第3次AIブームの到来 米Google DeepMindが開発した人工知能(AI)の囲碁プログラム「AlphaGo」が世界トップレベルの実力を持つ韓国のプロ棋士、李世ドル(イ・セドル)九段に4勝1敗と大きく勝ち越したことが着火剤となり、2015年より第3次AIブームへと突入した。(ちなみにAIが誕生したのは1950~1960年代で第1次AIブームの到来) 1.1 余談になるがAlphaGo(4億円の知能)はなぜすごいのか? AlphaGoがそれ以前のチェスや将棋のAIと異なるのは、 畳み込みニューラルネットワーク(CNN) を応用している点だ。このCNNはさらに強化学習を行い、自分自身と対局を数千万回も繰り返した。 間違っていたらすみません、、、、 1.2 ChatGPTによる生成AIのブーム ChatGPTに代表されるLLMは以前から開発競争が繰り広げられていた。 GPT1は201
この記事は「パスワードがハッシュ値で保存されているサイトのSQLインジェクションによる認証回避の練習問題 - Qiita」の続編です。 前回までのあらすじ SQLインジェクションによる影響として、認証回避の例がよく紹介されます。よくある「'OR'a'='a」を入力するパターンはよく見かけるところですが、パスワードがハッシュ値で保存されているケースについても認証回避が可能なケースがあることを示しました(参考:解答編)。 パスワードがペッパー付きハッシュ値で保存されているとどうなる? 今どきはパスワードはソルト付きハッシュ値で保存することが常識になっていますが、加えて「ペッパー(pepper)」というものを付加した方がよいという流れになってきています。ソルトがユーザー毎に異なる文字列であるためにハッシュ値とセットで保存するのに対して、ペッパーは固定値であるもののデータベースとは別の安全な場所に
{ 0: T }という型は「0番目の要素がT型であり、必ず存在する」ことを表します。 配列はオブジェクトでもあり、オブジェクトのプロパティ名に数値も使えるというTypeScriptの言語仕様を巧みに活かした型定義です。 しかしこの型定義ではスプレッド構文を使うと「空でない」という情報が型から消えてしまいます。 例えば次のように配列のシャローコピーを作ると型から{ 0: T }の部分が消えます。 type NonEmptyArray<T> = T[] & { 0: T } // ↓string[]型になる😥 NonEmptyArray<string>型にはならない type Spreaded = [...NonEmptyArray<string>] const array: NonEmptyArray<string> = ['a', 'b'] // ↓型エラーになってしまう😥 [...a
はじめに 巷にカレンダーのAPIは溢れているが、万年カレンダーを作ってみるなどした。 実装方針 日付の基本的な計算はChronoライブラリを使う これで今日が何日で何曜日かの計算は簡単にできる。 祝祭日は政府が定義しているルールに従って実装すれば良い。 と思っていた時期がありました。 祝祭日のルール 国民の祝日に関する法律(昭和23年法律第178号)に則り、内閣府が公布している資料では以下の通り この資料の2条の定義と3条のルールに従えば大体の祝日をカバーできることになる。 ただし、このページだけをサラッと読んだだけでは理解できない罠がいくつかある。 ちゃんとリンク先まで読めばまず引っかからないが、一旦ここでも要約する。 春分の日と秋分の日 これらは、日本国内においては天文学的に定まっており年によって変化する。 表にあるように、4年に1回の周期で23と22日で繰り返すように成っているかのよ
発端 @fumieval 様のツイート。 空の配列を渡したら True を返すべき この関数に空の配列を渡したら True を返すべきである。仕様によるとか状況によるとか相談すべきとか例外を返すべきかもといった意見もあるようだが、議論の余地がないレベルで True を返すしかない。最大の理由は 「True を返さないと、空集合があらゆる集合の部分集合になるというルールに矛盾するから」 である。これは数学における集合論の定理のひとつであり、「これを認めないとそれに連なる集合論のすべてが瓦解する」というルールのひとつであって、認めない相応の理由があるとすれば「数学のもっとも基礎的なルールのひとつを覆してでも実現しなければならないことがある」という次元での話になる。 少なくとも私は 10 年以上プログラミングをしていてそんな状況に遭遇したことはない。 【2023/06/01 追記】 数式がわから
エンジニアの格闘 エンジニアのみなさんはかつてひどいコードや設計と直面し、それと格闘したことでレベルアップした経験はあるでしょう。 つまり、先輩エンジニアたるものクソコードやクソ設計を残して、後輩エンジニアのレベルアップに寄与するのは義務だと言っても過言ではありません(?) 今回はDB設計に焦点をあてて、そのように絶望させる設計の残し方を記しておきます。 初めての投稿なのでレベル的にはかなり初歩になっています。 ↑きっと彼も立派なエンジニアになった時感謝してくれるでしょう 1) 必要な正規化を行わない エンジニアという不思議な不思議な生き物は処理の共通化等なにかと処理をまとめたがる習性があります。 以下のように著者テーブルと書籍テーブルがあるとします。 書籍 書籍ID 書籍名 著者ID
みなさん、Pythonは好きですか? この記事では、私がPythonという言語とそのエコシステムについて思うところを書いていきます。全体を通したストーリーみたいなのはなくて、トピックごとに書いています。 私のPython経験は3年弱です。Pythonについてまだまだ新米だという自覚はありますが、そこは有り余る才能でカバーしてこの記事を書いています。 静的型 Pythonには静的型がありません。型ヒントはありますが、インタープリターにとっては飾りにすぎません。 mypyとかの型チェッカーはありますが、「それさえあれば万事ハッピー」なものではなく、既存のコードを適宜書き換えないと型チェッカーでまともな結果を得るのは難しそうです。型検査を念頭に書かれていない(型ヒント付きの)コードをそのままmypyにかけても大量のエラー・警告が出てくるでしょう(ちなみに、型ヒントなしの関数はmypyのデフォルト
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く