タグ

ブックマーク / qiita.com (2,244)

  • その単体テストは 振る舞い を検証できていますか? - Qiita

    はじめに 記事は単体テストにおける偽陰性に焦点をあてています。偽陽性は別記事にします。 目次 振る舞いを検証できていない場合ただの負債になりかねない そもそも単体テストの目的って? 単体テストで検証したいものって? 振る舞い と 内部実装(実装の詳細) 観察可能な振る舞い とは 内部実装(実装の詳細) とは 注意:振る舞いと内部実装は視点によって変化する 検証したいものは外部から観察可能な1単位の振る舞い 現実世界で 振る舞い と 内部実装 を考える テストケースに内部実装が漏れ出ている例 このテストケースの問題点 テストケースで内部実装の検証をしている場合... 振る舞いの変更があったのにテストが落ちない(偽陰性:False Negative) 振る舞いを検証するように修正した例 おわりに 振る舞いを検証できていない場合、ただの負債になりかねない コードは書いた時点で負債になるとも言わ

    その単体テストは 振る舞い を検証できていますか? - Qiita
  • PostgreSQL 13でのreindexの活用方法をまとめてみた - Qiita

    はじめに データベースのメンテナンスは、パフォーマンスと安定性の維持に欠かせません。その中でも、PostgreSQLではreindexという強力なツールが提供されています。 記事では、reindexの役割と重要性について解説し、具体的な手順とコード例を通じて、PostgreSQL 13におけるreindexの活用方法とパフォーマンス向上効果についてざっくり紹介します。 reindexの実行前の準備 reindexを実行する前に、対象となるテーブルやインデックスの状態を確認することが重要です。以下のコマンドで確認できます。

    PostgreSQL 13でのreindexの活用方法をまとめてみた - Qiita
  • データベースに接続するテストの仕組みを整備して、運用して、反省したこと - Qiita

    はじめに この記事の内容 この記事は上記記事で作成したデータベースに接続するテストの仕組みを運用した際に発生した問題点とそれに対する分析、解決策の案をまとめた記事です。 データベースに接続するテストの詳細な内容は上記記事を参照していただければと思うのですが、作った仕組みの概要としては データベースに接続するJUnitTestをCIで実行するしくみ です。 これによって私が開発しているプロダクトのテストの仕組みの全体像は以下のようになりました。 CIで実行されるJUnitTestJavaプロセスのみ)の実行基盤 CIで実行されるJUnitTest(データベースにアクセスする)の実行基盤 機能開発時に開発者が作成し協力会社の打鍵者の方に依頼するファンクショナルテスト これは自動E2Eテスト等でカバーできるものも含まれており、そういった仕組みも整備しなければいけないという課題認識があります。

    データベースに接続するテストの仕組みを整備して、運用して、反省したこと - Qiita
  • Pull Requestを分割する技術 〜レビューで疲弊しない/させないために〜 - Qiita

    何故 Pull Request(以下、PR) を分割するのか? レビュアーを疲弊させないため 自分が疲弊しないため レビューの精度/速度を上げるため PRを分割しないと、何が起きるのか 時折、それなりに規模の大きな機能を実装する必要がでてきたり、当初はそこまででもないと思っていたが、いざ実装し始めてみたら色々必要になり、結果大規模な作業内容になった、というケースが出てくる。 そうした状況で、諸々の作業内容をまとめて一つのPRとして作成すると、一旦どんな問題が起こるか。 以下、レビュアー/レビュイーの視点からまとめてみる。 レビュアーの視点から 1. 追加/変更ファイル数が多い 単純に圧倒される ファイル変更に伴う依存関係のチェックが大変 どこからどこまで変更が入ったのか、影響範囲がどの程度か、把握が大変 2. diffの量が数百行有って辛い 単純に死ぬほど見づらい diffが多いと目が滑る

    Pull Requestを分割する技術 〜レビューで疲弊しない/させないために〜 - Qiita
  • Enumerable を include する代わりに Enumerator オブジェクトを活用する - Qiita

    概要 コレクションを扱うクラスに Enumerable モジュールを include することはままあります。each メソッドをオーバライドするだけで、 Enumerable#each_with_index, Enumerable#map, Enumerable#inject といった便利な定番メソッドが使えるようになるので便利です。そのため、僕自身もよく Enumerable モジュールを使っていました。 以下の GroupedCharacters クラスは Enumerable モジュールを include する例です。 # アニメキャラクターを作品ごとにグルーピングするためのクラス class GroupedCharacters include Enumerable attr_reader :characters def initialize(*characters) @chara

    Enumerable を include する代わりに Enumerator オブジェクトを活用する - Qiita
  • 高速化のエンジニアリング。注文してから0.722秒。100倍速いぞ!Python : 75.884 C++ : 3.392   JIT Python : 0.722 JITコンパイラで高速化されたコードを自動生成するツール。 - Qiita

    アリスは驚きと興奮を抑えきれませんでした。彼女はすぐに新しいコードを試し、その速さに目を見張りました。今まで数時間かかっていた計算が、ほんの数分で終わったのです。 翌日、アリスはこの発見を友人たちに話しました。友人たちも同じように魔法のを使い、彼らのコードを高速化しました。こうして、プログラミング王国全体で「JITの魔法の」が広まりました。 やがて、アリスは王国のプログラミング大会で優勝し、JITの魔法のの力をさらに広めることになりました。彼女は「JITの守護者」として称えられ、プログラミング王国はかつてない繁栄を迎えました。 アリスはいつも心に誓いました。どんなに強力なツールも、それを使う人々の努力と情熱があってこそ、当の力を発揮するのだと。彼女の言葉は次世代のプログラマーたちに伝わり、JITの魔法のは永遠に受け継がれていくのでした。 前回のあらすじ。 Python count

    高速化のエンジニアリング。注文してから0.722秒。100倍速いぞ!Python : 75.884 C++ : 3.392   JIT Python : 0.722 JITコンパイラで高速化されたコードを自動生成するツール。 - Qiita
  • なんだか助かる便利なおっちゃんになりたい - Qiita

    これまでの生存戦略 それほど尖った能力や知識がない中で、私のこれまでの生存戦略としては求められればなんでもやる、少しくらい泥水でも飲むというものでした。 フロントエンドからバックエンド、データベース設計、API設計、実装、インフラ側の設定、提案書作成、プレゼンテーション、プロジェクト進行、どれも“専門家として誇れるか”というと疑問がありますが、求められればなんでもやるスタンスでそれが自分の価値提供の形と考えていました。 また、以前までは「若い」というのも、強みでした。 一回りほど上の年齢に見られることも珍しくなく、「そんな若かったのか」と驚かれるなかで、「若いのに頑張ってるね」と年齢のフィルターで大目にみてもらえました。 しかし、そんな私も気が付けば40歳、もう若さという武器はありません。 (つい先日まで20代だったはずなのに..何かおかしい..) 体力的にも無理が効かず、新しいことを学ぶ

    なんだか助かる便利なおっちゃんになりたい - Qiita
  • 使えるRSpec入門・その3「ゼロからわかるモック(mock)を使ったテストの書き方」 - Qiita

    はじめに みなさんこんにちは! この記事は「必要最小限の努力で最大限実戦で使える知識を提供するRSpec入門記事」、略して「使えるRSpec入門」の第3回です。 今回はRSpecのモックを使ったテストについて説明します。 これまでモックを全く使ったことがない人でもわかるように丁寧に説明していくつもりです。 また、これまでの回と同様、個人的に使用頻度が低いと思っている内容についてはバッサリ説明を省きます。 ただし、第1回や第2回に比べるとテストコードが少し複雑になって、仕組みや動きを想像するのがちょっと難しいかもしれません。 ぱっと頭に入ってこない場合はじっくり文を読んだり、実際に自分で写経しながらコードを動かしたりするなどして、少し時間をかけながら理解するようにしてください。 今回は以下のような内容を説明します。 モックの基的な使い方 モックを使った検証 モックでわざとエラーを発生させ

    使えるRSpec入門・その3「ゼロからわかるモック(mock)を使ったテストの書き方」 - Qiita
  • SSH接続を10倍速くするたった3行の設定 - Qiita

    今回は、SSH接続を劇的に高速化する方法をご紹介します。たった3行の設定を追加するだけで、接続時間を10分の1に短縮できます。しかも、2回目以降の接続では認証も自動的に行われるので、パスワードやパスフレーズの入力も不要になります。 要点 .ssh/configファイルのHost *セクションに以下の3行を追加するだけです。 詳しい説明 1. ControlMaster auto この設定で、1つのSSH接続で複数のセッションを共有できるようになります。新しくSSH接続を確立するたびに認証情報を入力し直す手間が省けて、接続がぐっと速くなります。具体的には: 初回の接続時のみ認証が必要 2回目以降は既存の接続を再利用するため、認証プロセスをスキップ パスワードやパスフレーズの入力が不要になり、接続がほぼ瞬時に完了 2. ControlPath ~/.ssh/mux-%r@%h:%p Contr

    SSH接続を10倍速くするたった3行の設定 - Qiita
  • 【Git】同じコンフリクト解消を繰り返している人に教えたい「git rerere」 - Qiita

    はじめに こんにちは、kenです。みなさんコンフリクト解消してますか! チーム開発をしているとコンフリクトとは嫌でも向き合うことになりますが、コンフリクト解消って緊張感のある作業なのでやりたくないですよね。 そんなコンフリクト解消をちょっぴり楽にする(かもしれない)コマンドを最近知ったので今回はそれを紹介します、その名もgit rerereです。 git rerereとは Gitの公式ドキュメント(日語版)には次のように記載されています。 git rerere コマンドはベールに包まれた機能といってもいいでしょう。これは “reuse recorded resolution” の略です。その名が示すとおり、このコマンドは、コンフリクトがどのように解消されたかを記録してくれます。 そして、同じコンフリクトに次に出くわしたときに、自動で解消してくれるのです。 ここに書かれているように、git

    【Git】同じコンフリクト解消を繰り返している人に教えたい「git rerere」 - Qiita
  • 【JavaScript】ネイティブで集合演算できるようになった - Qiita

    JavaScriptにはだいぶ前からSetオブジェクトがありましたが、何故か集合演算は全く定義されておらず自力で実装しなければなりませんでした。 その後、まあ不便だねってことでSet Methods for JavaScriptというproposalが提出されました。 実装は珍しくSafariが最も早く、2023/09/18のSafari17から対応しました。 その後2024/02/21にChrome122、そして2024/06/11にFirefox127で実装されたことにより、主要全ブラウザで集合演算が使用可能になりました。 複数環境で実装されたことから、無事ES2025としてStage4、つまり上がりになりました。 ということで使い方を紹介するよ。 Set.prototype.intersection() 要素と引数の、両方に含まれる値を返します。 new Set([1, 2, 3,

    【JavaScript】ネイティブで集合演算できるようになった - Qiita
  • 【AWS】Amazon Linux 2023でパッケージを更新する時の注意点 - Qiita

    Amazon Linux 2023でパッケージを最新バージョンに更新したい時、少し注意が必要です。 Amazon Linux 2と同じように「yum update」を実行してもパッケージは更新されません。 パッケージ更新をしてみる まずは素直にパッケージを更新してみます。 ちなみに、Amazon Linux 2023からベースOSがRHEL/CentOSからFedoraに変わったため、デフォルトのパッケージ管理ツールも「yum」から「dnf」へと変更されました。 ということで、「sudo dnf update」を実行してパッケージを更新してみます。 # パッケージの更新 $ sudo dnf update Last metadata expiration check: 17:12:26 ago on Sun Oct 8 16:31:53 2023. ====================

    【AWS】Amazon Linux 2023でパッケージを更新する時の注意点 - Qiita
  • テストコードを書く上で個人的に気をつけている5つのこと - Qiita

    はじめに エンジニアの皆様、テストコードはちゃんと書けておりますでしょうか?(挨拶) どんな開発言語や開発手法を導入していたとしても、アプリケーションの機能実装とテストは表裏一体であると言えます。場合によっては機能の作り込みよりも時間をかけるべきケースが多いくらい重要である(・・・と信じたい)反面、デッドラインが近づくにつれて真っ先に工数が削られやすく軽視されがちな工程でもあります。 時間に追われてテストコードを書いた結果、テストの体をなしていないコードになっていたり後で見返したときに記述が煩雑すぎてメンテ不能になっていたり・・・といった苦い経験は誰しもがあるかと思います。かくいう自分もそんなことは多々ありました。 そんな今までの経験則を基に「自分がテストコードを書くにあたってどんなことを意識しているのか?」をいくつかピックアップして備忘録も兼ねて紹介したいと思います。 一応注意なのですが

    テストコードを書く上で個人的に気をつけている5つのこと - Qiita
  • ドキュメントを書かないことは「負債を生む」ということ - Qiita

    記事の要約 ドキュメントを書かない事は、企業やチームの「負債」になる ドキュメントを書かない事は、自身の学びや振り返りの「機会損失」になる そういう文化が根付く前に、負の連鎖を断ち切ろう! はじめに 世の中のプロジェクトには、ドキュメントが足りていない、と感じています。 でも残念な事に、ドキュメントをどうしても書きたい人は「ほとんどいない」と思います。 その一方で「ドキュメントを書いた方が良い」という事は、 何となく分かっている人も多いと思います。 やりたくない事をやらなければならないのは、嫌ですよね。 そんな気持ちは分かりますが、これを機に一度改めてみませんか。 何故なら、ドキュメントを書かない事はチームに「負債」を生むからです。 勤め人ならば少なからず一度でも、体験した事があると思います。 「どうして必要な過去の資料が無いんだ」って。 あるはずの歴史の一端がソースコードからしか分から

    ドキュメントを書かないことは「負債を生む」ということ - Qiita
  • Apacheセキュリティ設定 - Qiita

    概要 Apache の設定について共通化できるセキュリティ設定とその各項目についてまとめた。 設定例 必須設定 cat << _EOF_ > /etc/httpd/conf.d/security.conf # バージョン情報の隠蔽 ServerTokens ProductOnly Header always unset "X-Powered-By" # httpoxy 対策 RequestHeader unset Proxy # クリックジャッキング対策 Header always set X-Frame-Options "SAMEORIGIN" # XSS対策 Header always set X-XSS-Protection "1; mode=block" Header always set X-Content-Type-Options "nosniff" # XST対策 Trace

    Apacheセキュリティ設定 - Qiita
  • decimal型(十進小数)に夢を見ている輩が多すぎる - Qiita

    みたいなのが挙げられます。これが話題になった時にSNSで見かける言説が「十進小数 (decimal) 型ならこういう問題はない」です。 ですが、decimal型は十進小数を正確に表現できるという話でしかなく、全ての実数を正確に表現できるわけではありません。例えば、 1.0 / 3.0 * 3.0 の計算を考えてみましょう。数学的には、これはちょうど 1.0 になるはずです。 C#の場合 C#には標準の decimal 型があります。これで 1.0 / 3.0 * 3.0 を計算してみましょう。

    decimal型(十進小数)に夢を見ている輩が多すぎる - Qiita
  • Dockerでデバッグ対象のコンテナにツールを入れずにtcpdump/straceなどを使うワンライナー - Qiita

    はじめに Dockerであんなコンテナやこんなコンテナを動かしてると、なんかうまく動かなくて、デバッグのためにtcpdumpとかstraceなどのツールが使いたくなることが稀によくあります。 そんな時、デバッグ対象のコンテナ内にツールを一時的にインストールしちゃうというのが、まぁ簡単で分かりやすいんですが、デバッグ対象のコンテナを汚すのはできれば避けたいところです。 Dockerのコンテナの分離というのは、結局のところLinuxのリソースの名前空間の分離であるので、逆に同じ名前空間を共有すれば、デバッグ用に立てた隣のコンテナから、デバッグ対象のコンテナのネットワークやプロセスの状態を観察することも可能です。 また、docker buildDockerfileを標準入力から受け取ることもできるので、ワンライナーにしてデバッグ用のコンテナをシュッと呼び出せるようにしてみました。 TL;DR

    Dockerでデバッグ対象のコンテナにツールを入れずにtcpdump/straceなどを使うワンライナー - Qiita
  • Windowsでプロセッサの周波数を固定にする - Qiita

    はじめに プロセッサの周波数は処理負荷や電源状態に応じて動的に変化します。 ここではプロセッサの周波数を固定にする方法を紹介します。 固定できる周波数はProcessor Base FrequencyとCore Speedです。 プロセッサとOSは次の通りです。 Intel Core i5-5200U Processor Processor Base Frequency = 2200 MHz Core Speed = 800 MHz Windows 10 Home 10.0.18362 "プロセッサの最大周波数"を表示する プロセッサの周波数を固定にするには"プロセッサの最大周波数"の設定が必要です。 しかし初期設定では表示されていない可能性があります。表示する手順を説明します。 コマンドプロンプトを起動します。以下を入力します。 powercfg -attributes SUB_PROC

    Windowsでプロセッサの周波数を固定にする - Qiita
    mikage014
    mikage014 2024/05/05
  • より良い Git コミットメッセージを書こう - Qiita

    より良いコミットメッセージを残すことは Git を使った開発をする上で重要なことです。優れたコミットメッセージは、それを読んだ人がコードを理解するのに大いに役立ちます。 では、どのようなメッセージが良いもので、どのようなメッセージが悪いものなのでしょうか? それについて掘り下げていきたいと思います。 基的な Git Commit Message の書き方 詳しいところは、以下の3サイトを参照してください。特に「How to Write a Git Commit Message」には基がすべて書かれています。 How to Write a Git Commit Message https://cbea.ms/git-commit/ Gitのコミットメッセージをうまく作成する7つのルール (「How to Write a Git Commit Message」の和訳記事) https://

    より良い Git コミットメッセージを書こう - Qiita
  • 紙っぽいかわいいWebサイト作りたい - Qiita

    かわいいWebサイトが作りたい Web上でグラフィックデザインっぽい表現をしてるサイト大好き! 思いついたら追加する 「版ズレ」風 版ズレ = 印刷の際に、色の版がズレて出力されてしまう現象。(アナログっぽい雰囲気を出すために、あえてズレているように見せるデザイン手法として使ってます) 一番上のレイヤーに紙っぽいテクスチャを乗せて乗算かける 後ろのテキストはaria-hidden="true"でスクリーンリーダーに読み上げられないようにする (疑似要素でやりたかったけど乗算上手くいかなかった・・) ▼ HTML <div class="hanzure"> <img src="紙っぽいテクスチャ" alt=""> <div class="hanzure01"> <p class="front">版ズレ風の表現</p> <p class="back" aria-hidden="true">版ズ

    紙っぽいかわいいWebサイト作りたい - Qiita