タグ

ブックマーク / qiita.com (325)

  • 【Jest】モック化はこれでOK! - Qiita

    Jestを利用してモック化しよう テストを作成していて、時刻によって返す値が異なる関数などのテストを書くとき、想定した値を返してもらいたいときがあります。jest.fn()を利用すると簡単に関数をモック化する事ができます。 この記事は、学習した際の自分用の備忘録です。 mockプロパティの確認 すべてのモック関数には、.mockプロパティがあります。モック関数呼び出し時のデータと、関数の返り値が記録されています。はじめにmockプロパティを確認していきます。 calls : モック関数の呼び出し毎の引数の配列 results: モック関数の呼び出し毎の結果の配列 instances : newを使用してモック関数からインスタンス化されたオブジェクトが含まれる配列 describe("#jest.fn", () => { it("Check `jest.fn()` specification

    【Jest】モック化はこれでOK! - Qiita
  • ブラウザ開発者ツールのネットワークタブに表示されない情報送信手法 - Qiita

    はじめに はじめまして、セキュリティエンジニアのSatoki (@satoki00) です。今回はブラウザの開発者ツールのネットワークタブから隠れて、Webサイト内の情報を送信する手法をまとめます。所謂Exfiltrationというやつです。中にはCSPの制限をBypassするために用いられるテクニックもあります。CTFなどで安全に使ってください。 前提 発端はWeb上でテキストの文字数をカウントできるサイトが閉鎖する際の話です。カウント対象のテキストデータがサイト運営 (やサイトを改竄した攻撃者) に盗み取られていないかという議論が巻き起こっていました。「盗み取られていない」側の主張は、ブラウザの開発者ツールのネットワークタブにリクエストを送信した形跡がないというものでした。ここで ブラウザの開発者ツールのネットワークタブに表示がなければ外部へデータを送信していないのか? といった疑問が

    ブラウザ開発者ツールのネットワークタブに表示されない情報送信手法 - Qiita
  • Twitterカードが貼られたツイートはすべて詐欺です、という時代 - Qiita

    最近見つけた現象で既に論じられているかと思ったがちょっと解説が見つからなかったのでまとめておく。 手短に X(旧Twitter)クライアントで表示されるTwitterカードについてカードに表示されるドメインとは違うページにリンクさせる手法が存在する この手法は第三者のTwitterカードを利用することができる つまり悪用者は第三者のTwitterカードを表示させながら自身の意図するページに閲覧者を誘導することができる これはフィッシングの手法になりうる 見つけたツイート 以下のツイートはGoogleBloomberg、日経ビジネスのTwitterカードが添付されているがクリックするとそれらとは異なる情報商材サイトにジャンプする。リンク先に危険な仕組みはないと思われるがクリックは自己責任で。念を入れたい人は curl -L で。 PCブラウザでカーソルを合わせてもXの短縮URLサービスであ

    Twitterカードが貼られたツイートはすべて詐欺です、という時代 - Qiita
    shaw
    shaw 2023/12/08
  • パスキーに入門してみた話 - Qiita

    久しぶりの投稿です。 はじめに 昨今、様々なサイトがどんどんパスキーに対応しはじめてきました。 まだまだパスキーがデフォルトになっていくには時間が掛かりそうですが、どのような仕組みでパスキーを実装するのか、早めにキャッチアップしておくのも悪くないと思い、パスキーについて色々と調べてみました。 パスキーとは? パスワードの代わりに、自分の持つデバイスによる生体認証やパターンを用いて認証を行う方法のことです。 次世代認証技術であるFIDO(Fast IDentity Onlineの略で、「ファイド」と呼びます)を使った認証方式(詳細は後述)で、AppleGoogleMicrosoftがFIDOを普及させるために命名したブランド名になります。 FIDOとは? 脆弱なパスワードは安全ではありません。 2段階・2要素認証を採用してもそれを有効にするユーザーは少なく、昨今では2段階認証を突破する攻

    パスキーに入門してみた話 - Qiita
  • Twitterはタイムラインをどうやってキャッシュしているか - Qiita

    Twitterの内部構造を読解してみる 前口上 Twitterのようなマイクロブログサービスでは短時間で書き込みも多く、特にタイムライン周りは単にRDBのデータを出し入れるするだけではスケールしなくなります。 インターネット上に断片ながらTwitterの中の人がアーキテクチャについて解説した記事や動画がいくつか落ちていたので、Twitterがタイムラインをどうやってキャッシュしているかについてまとめてみたいと思います(推測を含みます)。 Twitterのテーブル構造 単純なTwitterのテーブル定義をRDBで定義すると以下のようになると思います。 tweets ツイート id user_id contents tweet_at followers フォロワー source_user_id destination_user_id users ユーザー id user_name timeli

    Twitterはタイムラインをどうやってキャッシュしているか - Qiita
    shaw
    shaw 2023/09/28
  • ソルト付きハッシュのソルトはどこに保存するのが一般的か - Qiita

    pictBLandとpictSQUAREに対する不正アクセスがあり、パスワードがソルトなしのMD5ハッシュで保存されていたことが話題になっています。 2023年8月16日に外部のフォーラムにpictSQUAREより窃取した情報と主張するデータ販売の取引を持ち掛ける投稿が行われた(中略)パスワードはMD5によるハッシュ化は行われているもののソルト付与は行われていなかったため、単純なパスワードが使用されていた29万4512件は元の文字列が判明していると投稿。(それ以外の26万8172件はまだMD5ハッシュ化されたままと説明。) 不正アクセスによるpictBLand、pictSQUAREの情報流出の可能性についてまとめてみた - piyolog より引用 これに関連してMD5ハッシュやソルトに関するツイート(post)を観察したところ、どうもソルトの理解が間違っている方が多いような気がしました。

    ソルト付きハッシュのソルトはどこに保存するのが一般的か - Qiita
  • 文化祭で某チェーン店を再現して失敗した話 - Qiita

    要約 Wifiは無いに等しいと考えること。 (来場者1万強/日 なんていう状況下でWifiが動くと想定するのが駄目でした) 進捗管理する第三者を設けること。 ソースコード https://github.com/Na4Yu/EasyEats (RTDBのURLやSquareの個別キーは抜いているのでそのままは使えないです) はじめまして はじめまして、高校2年のNaYuです。 今回は文化祭で派手に失敗した話をさせて頂きます。 血反吐を垂れ流しながら書いていましたが、もし皆さんが文化祭を経て「この人のしたことをしなくて良かった~」なんて言っていただければ幸いです。(人の不幸は蜜の味) お願い 記事は知見の共有を目的として個人が執筆したものであり、記事の内容について学校、学校関係者への問い合わせはご遠慮頂けるようお願い申し上げます。 これを読んでいる後輩の方々へ この記事が私からの引き継ぎに

    文化祭で某チェーン店を再現して失敗した話 - Qiita
  • Vue3の衰退を招いたのは<script setup>とCompositionAPIかもしれない という考察 - Qiita

    [6/8 12時頃追記] Vueは死んでないし殺すつもりもないし私はVueが大好きだ、誤解しないでほしい Vue3でOptions APIは消えてないし今後消えていく方向のAPIでもないし挫折した人もこっちつかって再挑戦してほしい [6/8 11時頃追記] 「俺はComposition API使えてるぞ!」「便利じゃん!何をいってるんだこいつは!」 あなたはすごい、でもVueを挫折した人の話を聞くに、Composition APIが「アタリマエでしょ?」の雰囲気の前にうまく馴染めず散っていったという話で、Composition API自体は好きです Vue3の衰退を招いたのは<script setup>かもしれないCompositionAPIという考察 ほとんど肌感であり、根拠のない妄言だと思ってもらって構わないのだが、Vue3のリリース以降Vueが流行から離れつつあり、その原因は<scr

    Vue3の衰退を招いたのは<script setup>とCompositionAPIかもしれない という考察 - Qiita
    shaw
    shaw 2023/06/08
  • 既存のVue.jsプロジェクトをVue 3へ移行したときに必要だった修正まとめ - Qiita

    はじめに この記事では、「既存プロジェクトをとにかくVue3へ移行して元通り動くようにする」が目的です。 「Composition APIで書き換える」といったVue 3の新機能への移行を紹介するものではありません。 公式のマイグレーションガイドはこちら: https://v3.vuejs.org/guide/migration/introduction.html#quickstart 執筆時点ではVue3.0.0ですが、ここに書く問題は以降のバージョンで解決している可能性もあります。 もしお気づきの際はコメントいただけると幸いです。 雑感、設定やプラグイン周りで新しい仕様に合わせなければいけないところがありますが、コンポーネント資材は大部分がそのまま動作すると思います。 1日2日もあればとりあえず動作するところまでは持っていけるかと思います。 追記 2020/09/26: ドキュメントか

    既存のVue.jsプロジェクトをVue 3へ移行したときに必要だった修正まとめ - Qiita
    shaw
    shaw 2023/05/11
  • 既存のVue.jsプラグインがVue 3で使えない場合の対応 - Qiita

    いくつかのパターンをまとめましたが、簡単な修正だけで直るケースも多いです。 ただし、基的にはプラグイン側の修正が必要なので、ここではその修正箇所をまとめています。 目次: ケース1: this.$xxx() 系のプラグインで起きる問題 Composition APIで使う ケース2: <div v-xxx>系のプラグインで起きる問題 ケース3: コンポーネント系プラグインで起きる問題 補足1: Vue.jsとVue 3両方に対応させる 補足2: プラグインの修正ってどうやるの? ケース1: this.$xxx() 系のプラグインで起きる問題 Vueインスタンスメソッドに機能が拡張されるタイプのプラグインで起きるのは、 プラグインのインストール時、Vueのprototypeの拡張に失敗しているという事象です。 Uncaught TypeError: Object.definePropert

    既存のVue.jsプラグインがVue 3で使えない場合の対応 - Qiita
    shaw
    shaw 2023/05/11
  • フリーWi-Fiを使ったら秘密情報を抜かれる経路にはどのようなものがあるか - Qiita

    ゴールデンウィークのはじめ(4月29日)に投稿された以下のツイートですが、5月7日20時において、1,938.8万件の表示ということで、非常に注目されていることが分かります。 我が名はアシタカ!スタバのFreeWi-Fiを使いながら会社の機密情報を扱う仕事をしてたら全部抜かれた。どうすればよい! pic.twitter.com/e26L1Bj32Z — スタバでMacを開くエンジニア (@MacopeninSUTABA) April 29, 2023 これに対して、私は以下のようにツイートしましたが、 これ入社試験の問題にしようかな。『スタバのFreeWi-Fiを使いながら会社の機密情報を扱う仕事をしてたら全部抜かれた』と言う事象に至る現実的にありえる脅威を説明せよ。結構難しいと思いますよ。 https://t.co/LH21zphCTV — 徳丸 浩 (@ockeghem) April

    フリーWi-Fiを使ったら秘密情報を抜かれる経路にはどのようなものがあるか - Qiita
  • TypeScript 10年の歩み - Qiita

    TypeScriptは、2022/10/01に10周年を迎えました。 ということで、それを記念してMicrosoftの中の人が振り返りのエントリーを書いていました。 以下は該当の記事、Ten Years of TypeScriptの紹介です。 Ten Years of TypeScript 2022年10月1日は、TypeScript10歳の誕生日です。 10年前の今日、2012年10月1日に、TypeScriptは初めて公にされました。 The Early Days 初めてTypeScriptが表に現れたとき、それももっともなことでしたが、多くの否定的な意見がありました。 一部のJavaScriptユーザにとって、JavaScriptに型を強制する試みは冗談か邪悪な陰謀のように見えたかもしれません。 しかし、その試みには、多くのメリットがありました。 型チェックのおかげで、ファイルを保存

    TypeScript 10年の歩み - Qiita
  • ChatGPT使い方総まとめ - Qiita

    こんにちは!sakasegawaです! ( https://twitter.com/gyakuse ) 今日は今流行のChatGPTについて紹介します! ChatGPTとは OpenAIが開発するGPT-3(※)というめちゃくちゃすごい言語モデルをベースとしたチャットアプリです。 色んな質問にすぐ答えてくれます。 この記事ではさまざまな使い方を紹介します。 https://chat.openai.com/ ちなみにGPT-3関連では、noteの以下記事も便利なのでぜひ読んでみてください AIがコミットメッセージ自動生成!神ツール『auto-commit』『commit-autosuggestions』の紹介 ※正確にはGPT-3.5シリーズと呼ばれています ChatGPTの仕組みを考えながらプロンプトを作る手法はこちらに別途まとめています 文章 質問-応答 〜について教えて Wikiped

    ChatGPT使い方総まとめ - Qiita
  • [Rails] ファイルダウンロード後に一時ファイルを削除したかった - Qiita

    背景 ダウンロードボタンを押したタイミングで生成された一時ファイルをダウンロードする処理があるのですが、 ダウンロード完了後、どのタイミングで消せばいいのかわからなかったので調べてみました。 調査 例えばこんなコードです。 def dl respond_to do |format| format.zip { dir = Dir.mktmpdir(nil, "#{Rails.root}/tmp/") path = @item.download_from_tmp(dir) #ファイルを生成して一時ディレクトリに保存 stat = File::stat(path) send_file( path, type: 'application/zip', disposition: "attachment", filename: "#{@item.name}.zip", length: stat.size

    [Rails] ファイルダウンロード後に一時ファイルを削除したかった - Qiita
    shaw
    shaw 2022/11/17
  • シェルスクリプトの [ ] と [[ ]] の違いを歴史的に解説 〜 言語設計者の気持ちになって理解しよう - Qiita

    はじめに bash などのシェルには [ ... ] と [[ ... ]] の二種類の比較方法があります。一つはコマンド、もう一つはシェルの文法なのですが、具体的にはこの二つは一体何が違うのでしょうか? そもそもなぜ似ている機能が二つもあるのでしょうか? この記事は言語設計者の気持ちになって考えることで、その理由を解き明かそうという記事です。 なお、違いについての簡単な説明については「test と [ と [[ コマンドの違い - 拡張 POSIX シェルスクリプト Advent Calendar 2013 - ダメ出し Blog 」の記事がよくまとめられていますので紹介します。一通りの違いを素早く知りたい方はこちらを参照してください。 参考 シェルの歴史や種類については「シェルの歴史 総まとめ(種類と系統図)と POSIX の役割」に詳しくまとめています(系統図とか頑張って書いたので見

    シェルスクリプトの [ ] と [[ ]] の違いを歴史的に解説 〜 言語設計者の気持ちになって理解しよう - Qiita
  • サブスクリプション型のビジネスなら見ておくべき5つの超重要チャート - Qiita

    サブスクリプション型のビジネス、またはソフトウェアの世界ではSaaSと言われたりする、顧客が製品やサービスを継続的に利用するために購読するタイプのビジネスは一般的な売り切り型のビジネスとは収益構造が異なるため、ビジネスを成長させるために見るべき指標やチャートも違ってきます。 よくあるのは、この違いを意識せずに「売り切り型」のビジネスでよく使われる指標やチャートをモニターしていたがために、ビジネスの成長のきっかけをつかめなかったり、成長していると思っていたビジネスが急に傾き始めたり、成長の見通しを社内で共有、または外部の投資家にうまく説明できなかったり、という問題です。 そこで、こちらの記事ではサブスクリプション型のビジネスを成長させるために欠かせない5つのチャートを使った簡単な分析手法を紹介させていただきます。 1. コホート分析(生存分析) コホート分析(生存分析) は顧客のチャーンやリ

    サブスクリプション型のビジネスなら見ておくべき5つの超重要チャート - Qiita
  • 障害報告書を書こう! - Qiita

    担当しているITサービスなどに何かしらのインシデントや障害が発生した時に、対処後のアクションとして報告書を提出して事象の内容を報告(レポート)する場合がある。 提出先は会社の偉い人だったりクライアントだったり。場合によってはユーザー向けに発表したり。事の顛末を報告して「今後同様のことを起こさないように努力します、ごめんなさい」をするのだ。どのように再発防止の努力するのかを書くものでもある。 主にクライアント向けのビジネス内容ではあるが、自分が使っているテンプレパターンを共有するので参考にしてもらえればと思う。1 全般的なポイント 心得のようなもの。次の点は留意してて欲しい。 淡々と冷静な説明をこころがける 当然のことながら事実は脚色しない。無駄な修飾も要らない。客観的な事実を簡潔に述べる。 例: ❌「一生懸命頑張って対応したが…」 ❌「寝ないで対応したが…」 ❌「当の原因は…」 できるだ

    障害報告書を書こう! - Qiita
    shaw
    shaw 2022/07/05
  • console.log(); しか使えなかった自分へ。。。 - Qiita

    この記事について Webエンジニアになって早1年半。railsのデバッグをする時にはエディターのデバッガーでスマートにできていたが、javascriptになるといつもconsole.log();ばかりを使って原始的なデバッグをしていた。。。 そんな脳筋な過去の自分に教えてやるための記事です。 console.log({変数名}); 「いきなりconsole.log();の紹介かい!!!」って思われるかもしれませんが、この技を知ったときは「なんで知らんかったんや。。。」って思うくらい便利だったので最初に紹介します。 以下のようなHTMLがある場合 <form> <input type="text" value="名無しの権兵衛" id="name"> <input type="text" value="80歳" id="age"> <input type="text" value="バスケ"

    console.log(); しか使えなかった自分へ。。。 - Qiita
  • Vue CLIをアップデートする - Qiita

    はじめに Vue CLIをアップデートする方法をご説明します。 Vue CLIは頻繁にアップデートされており、アップデートするたびに方法を調べているため備忘録的にコンテンツとして残します。 バージョンを確認する バージョンによってアップデートの方法が異なるため、はじめに現在導入されているVue CLIのバージョンを確認しましょう。 バージョン確認 ターミナル/コマンドプロンプトを開いて「vue --version」コマンドを実行してください

    Vue CLIをアップデートする - Qiita
    shaw
    shaw 2022/03/17
  • Googleフォントを使うと犯罪になる - Qiita

    <link href="https://fonts.googleapis.com">って書くと罰金取られます。 以下はGerman Court Rules Websites Embedding Google Fonts Violates GDPRというニュースの紹介です。 German Court Rules Websites Embedding Google Fonts Violates GDPR ドイツのミュンヘン地方裁判所は、あるWebサイトの運営者が、ユーザの個人情報を人の同意なしにフォントライブラリを経由してGoogleに提供したとして、100ユーロの賠償を命じました。 Webサイトが原告のIPアドレスGoogleに無断で提供したことは、ユーザのプライバシー権の侵害に当たると判断しました。 さらに、Webサイトの運営者は収集した情報をその他のデータと突き合わせることで『IPア

    Googleフォントを使うと犯罪になる - Qiita