タグ

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

  • RSpecべからず集(DSLの構築が不適切な事例あれこれ) - Qiita

    はじめに:これは何? 僕がコードレビューしていて、「ん?いやいや、こんな書き方しちゃダメだよ!」と思ったコード例をまとめた記事です。 この記事でフォーカスするのはRSpecのDSLを適切に構築してないケースです。 ネタが増えたらまた追記するので、気になる方はこの記事のストックをお願いします!(記事の更新時に通知欄でお知らせします) それでは以下が編です👇 トップレベルのdescribeを2つ以上作らない テストコードを読む際に、読み手は「当然ファイル全体が大きなひとつのdescribeブロックになっているはず」と信じ込んでいるので、予想に反するネスト構造になっていると脳内の予想と実際の実行結果が異なって混乱します。 以下のように大きなdescribeブロックで囲んで1ファイルにつきトップレベルのdescribeが1つだけになるようにしましょう。

    RSpecべからず集(DSLの構築が不適切な事例あれこれ) - Qiita
  • MagicalRecord 2.2メモ - Qiita

    試行錯誤してだいぶ理解がまとまってきたのでメモです。わりとお手軽に使えるライブラリですが、CoreDataの基礎知識がないとハマります(ハマりました)。 起動と終了 使いはじめる MagicalRecord:setupCoreDataStackメソッドで永続ストアの初期化と同時にアプリケーションデフォルトのNSManagedObjectContextを初期化する。 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions // 色んな処理 [MagicalRecord setupCoreDataStack]; return YES; }

    MagicalRecord 2.2メモ - Qiita
    yoshuki
    yoshuki 2024/04/19
  • 【RSpec】フレーキーなテスト(たまに落ちるテスト)の直し方 - Qiita

    はじめに 自動テストを整備しておくと大量のテストを自動実行してくれるので大変便利です。 ですが、テストコードが増えてくると「パスするはずなのに、なぜかたまに失敗する」というテストが出てきます。 このような不安定なテストを「フレーキー(flaky)なテスト」と呼びます。 フレーキーなテストの問題点 フレーキーなテストは「たまに失敗するだけ」なので、何度かやり直せばパスします。 なので、GitHub ActionsのようなCIツール上でテストが落ちても、「あ、また落ちた。再実行したら直るかな(ポチッ)」という安易な解決策に走りがちです。 しかし、フレーキーなテストを放置するのはよくありません。 理由は以下の通りです。 当はバグのせいで失敗しているのに「きっとフレーキーなテストだからに違いない」と思い込んで、そのままリリースしてしまうから(いわゆる「狼少年」状態) 実務レベルの巨大なテストコー

    【RSpec】フレーキーなテスト(たまに落ちるテスト)の直し方 - Qiita
  • 業務でAWSを利用する時に知っておくべきポイント10選 - Qiita

    2024年1月時点のAWSベストプラクティスに従って作成しました 好評でしたら続編も検討します 1. 環境ごとにアカウントを分離する 番、検証、開発ごとにアカウントを分割しましょう ✕良くない例 ◎良い例 最初にアカウント分割しておかないと、後で分割するのはとても大変です アカウントを分割することで「検証と思って作業したら、実は番だった」のような事故を減らすことができます コストがアカウント単位で集計されるため、環境ごとのコストを簡単に算出することができます AWS Organizationsを使用することで、各環境に応じた権限設定が簡単にでき、ガバナンスを強化することができます AWSアカウントはAWS Control TowerのAccount Factoryを使用することで、クレジットカード情報を都度入力することなく簡単にアカウントの払い出しが可能です また、AWS Contro

    業務でAWSを利用する時に知っておくべきポイント10選 - Qiita
    yoshuki
    yoshuki 2024/02/21
  • RSpecを実行するとWebdrivers::VersionErrorが発生する場合の対処方法 - Qiita

    Webdrivers::VersionError: Unable to find latest point release version for 115.0.5790. You appear to be using a non-production version of Chrome. Please set `Webdrivers::Chromedriver.required_version = <desired driver version>` to a known chromedriver version: https://chromedriver.storage.googleapis.com/index.html # ./spec/system/tasks_spec.rb:24:in `go_to_project' # ./spec/system/tasks_spec.rb:14:

    RSpecを実行するとWebdrivers::VersionErrorが発生する場合の対処方法 - Qiita
  • Rails 7.0 + Ruby 3.1でゼロからアプリを作ってみたときにハマったところあれこれ - Qiita

    Ruby on Rails Advent Calendar 2021の枠が空いていたので、あとから登録しました はじめに 個人的なプロジェクトになりますが、僕が翻訳しているRSpecの入門書「Everyday Rails - RSpecによるRailsテスト入門」を2022年前半にRails 7.0バージョンにアップデートしようと考えています。 そこでこのの中で使っているサンプルアプリケーションをRails 7.0でゼロから作り直してみました。フロントエンド周りを中心に結構考え方が変わっている部分があったので、「ここでハマった!」とか「こういうポイントを押さえておくといいかも」という点をあれこれ書いてみます。 なお、Rails 7.0版のサンプルアプリケーションはまだ公開できる状態ではないので、公開はもうしばらくお待ちください🙏 今回作成したサンプルアプリケーションはこちらで公開してい

    Rails 7.0 + Ruby 3.1でゼロからアプリを作ってみたときにハマったところあれこれ - Qiita
  • Xcode 14.3 Archiveでビルド失敗する Command PhaseScriptExecution failed with a nonzero exit code - Qiita

    Xcodeを14.3にアップデートしてからArchiveでビルド失敗 普通にシュミレーターではビルドできても、なぜかArchiveするときのビルドが失敗しました。。。 PhaseScriptExecution [CP]\ Embed\ Pods\ Frameworks /Users/gen/Library/Developer/Xcode/DerivedData/Runner-aoyvbssntyfxuhfezgwaajbjclyj/Build/Intermediates.noindex/ArchiveIntermediates/Runner/IntermediateBuildFilesPath/Runner.build/Release-iphoneos/Runner.build/Script-4AFD176ECFE3FEE34085CB5D.sh (in target 'Runner' f

    Xcode 14.3 Archiveでビルド失敗する Command PhaseScriptExecution failed with a nonzero exit code - Qiita
    yoshuki
    yoshuki 2023/08/23
  • Gitで間違ってPRをマージした時にRevertして再度PRを出す方法 - Qiita

    対象者 Gitでrevertした後、再度Mergeしようと思ってプルリクを出したら差分がないと言われて困っている人。 他の記事で「RevertのRevertをする」という言葉を見て、頭がこんがらがった人。 何が起きたのか developブランチ -> masterブランチ にプルリクを出してMerge やっぱりMergeを取り消したいのでRevert revertボタンを押してrevertブランチ -> master にrevertプルリクを出してMerge 再度 develop -> master にプルリクを出す すると、There isn't anything compare. 差分がないとなってしまう。。 どうすればよいのか Revertと聞くと、「戻す」というイメージを持つかもしれないが、実際は新たな修正をMergeしているに過ぎない。つまり上記の例のようにrevertした直後は

    Gitで間違ってPRをマージした時にRevertして再度PRを出す方法 - Qiita
    yoshuki
    yoshuki 2023/06/29
  • フリー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
  • rails 7.0では`config/initializers`配下のファイルが少なくなっている - Qiita

    概要 rails new直後のconfig/initializers配下の初期化ファイルの数が多くユーザの認知的負荷につながっていました。 その中には必ずしもすべてのアプリケーションに必要とは限らない設定や、過去のアップグレードの中で既に不要になっている可能性がある設定が存在していたため、今回ファイル構成が見直され不要あったと判断されたファイルが削除されました。 rails7.0以前 バージョン7.0以前のrailsではrails new時にアプリケーションの初期設定のファイルがconfig/initializers配下に10ファイル作成されていました。 $ rails -v Rails 6.1.4.4 $ rails new sample_app $ tree config/initializers/ config/initializers/ ├── application_contro

    rails 7.0では`config/initializers`配下のファイルが少なくなっている - Qiita
  • Devise 4.9をインストールしてRails 7.0 (Hotwire/Turbo)に対応する - Qiita

    はじめに Rails 7.0が2021年の暮れにリリースされて以降、Deviseは長らくRails 7.0(というか、Hotwire/Turbo)に完全対応していない状態が続いていました。ですが、ようやく2023年2月17日にRails 7.0に対応したDevise 4.9.0がリリースされました🎉 rails-ujsではなく、Hotwire/Turboを使っているRails 7.0にDeviseを組み込んでいる(もしくはこれから組み込もうとしている)人は、以下の手順に従ってDevise 4.9.0を導入してください。 備考 もともとこの記事は「開発中のDeviseをインストールしてRails 7.0 (Hotwire/Turbo)のテストに協力する」というタイトルで公開していましたが、Devise 4.9.0が正式リリースされたことに伴い、タイトルと文を修正しました。 前提条件 Ra

    Devise 4.9をインストールしてRails 7.0 (Hotwire/Turbo)に対応する - Qiita
  • 【この記事はもう古いので読まないこと!!】Turboを有効化したままRails 7.0でDeviseを使う方法 - Qiita

    この記事は古いです!! Devise 4.9.0が正式リリースされたため、この記事の内容はすでに古くなっています。 Devise 4.9の導入方法は以下の記事で説明しています。ですので、こちらを読むようにしてください。 Devise 4.9をインストールしてRails 7.0 (Hotwire/Turbo)に対応する - Qiita はじめに Rails 7.0がリリースされて1年以上経ちましたが、Railsのメジャーな認証ライブラリであるDeviseは未だにRails 7.0に部分的にしか対応していません(参考)。 そのため、Rails 7.0でrails newしたRailsアプリケーション(つまり、Turboが有効になっている状態)だと、Deviseを使おうと思っても意図しない挙動になります。 そこで、この記事ではTurboを有効化したままRails 7.0でDeviseを使う方法を

    【この記事はもう古いので読まないこと!!】Turboを有効化したままRails 7.0でDeviseを使う方法 - Qiita
  • ググり時間をぶった切る。AWSを最速で攻略するサイト13選 - Qiita

    はじめに 自分がAWSをこれっぽっちも知らない頃、 ググって出てきたどこか知らんサイトからだと、「欲しい情報はこれじゃない」ってのが多くあった。 そんなこと繰り返していると エラー、トラブル時に即対応できない 間違って構築したせいで運用時に悪化してしまう 古いソースコードでエラーがでて動かない これで無駄な時間を過ごすことになる。 要は「ググって得たその情報で、作ったものは正しいのか?」 AWSは常にアップデートされ続ける 欲しい情報を手に入れるまで調べる時間を割くなら、 公式展開してるサイトから得たほうが正確である。 ということで、最速でAWSを攻略するサイトをまとめる。 この記事をブックマークでもしておくと、ググる手間も省けるだろう。 目次 AWSドキュメンテーション AWSサービス別資料 トレーニングライブラリ AWSブログ アーキテクチャーセンター ワークショップをする よくある質

    ググり時間をぶった切る。AWSを最速で攻略するサイト13選 - Qiita
    yoshuki
    yoshuki 2022/12/29
  • 個人的docker composeおすすめtips6選 - Qiita

    はじめに 皆さん、docker composeを利用しているでしょうか? 複数のdockerコンテナをまとめて立ち上げたり、環境変数を定義できたり便利ですよね。 今回はある程度docker composeを利用している方向けに私が便利、便利そうと感じたdocker composeの機能を挙げてみました。 docker compose cli v2を利用 docker-composeではなく docker composeコマンドも利用可能になってます。 Docker Desktopでは v3.4.0から利用可能で、基的にはコマンドの互換性あります。 Docker image名やコンテナ名のプレフィックスをディレクトリ名から変更する 通常は ${ディレクトリ名}_${サービス名}でイメージが作成されます。 環境変数COMPOSE_PROJECT_NAMEでプロジェクト名を指定することにより

    個人的docker composeおすすめtips6選 - Qiita
  • Swift5.1のattribute全解説|全27種 - Qiita

    概要 Swift5.1で利用できるattributeの一覧です。(Public APIのみ) 記事は以前作成したSwiftのattributeまとめ[Swift4対応]をSwift5.1向けに更新したものです。 attributeは全てを暗記する必要はありません。これなんだっけ、と思ったときにこの記事でさくっと見られる簡易リファレンスになればと思います。 attributeとは コンパイラに対し、宣言や型の補足情報を伝えるもの 属性や修飾子とも呼ばれる Swift5.1では公式リファレンスに記載されているもので全27種類 attributeの記法 attributeの記法は以下のようになり、より詳細な情報を補足するために引数も指定することができる @〜という記法はコンパイラディレクティブと呼ばれ、コンパイラに対する指示を記載する際に利用される attribute一覧 autoclosur

    Swift5.1のattribute全解説|全27種 - Qiita
    yoshuki
    yoshuki 2022/07/25
  • 【AVFoundation】リアルタイムキャプチャの基本 - Qiita

    この記事は何か? iPhoneのカメラからリアルタイムに映像データを得るために使用するAVFoudationについて調べました。 AVFoundationフレームワーク 主に、4つのグループに分けて捉えることができます。 セッション AVCaptureSessionクラス デバイス AVCaptureDeviceクラス 入力 AVCaptureInputクラス、AVCaptureDeviceInputクラス 出力 AVCaptureOutputクラス、AVCaptureVideoDataOutputクラス AVCaptureSessionがデータを整理し、セッションの開始または停止の指示を受けます。 セッションには、ひとつ以上の入力を追加します。AVCaptureDeviceInputは、カメラやマイクのためのラッパーです。 セッションからデータを受け取るには、出力も追加する必要があります

    【AVFoundation】リアルタイムキャプチャの基本 - Qiita
    yoshuki
    yoshuki 2022/07/20
  • あなたのDockerfileはベストプラクティスに従っていますか?(ベストプラクティスとチェックツール) - Qiita

    Dockerfileのベストプラクティス ベースイメージには公式のレポジトリを使用する FROM命令において、使用するベースイメージは公式のリポジトリのものを使用し、軽量なものが推奨されている。 例えば、Debian イメージなど。 FROM [--platform=<プラットフォーム>] <イメージ名> [AS <名前>] FROM [--platform=<プラットフォーム>] <イメージ名>[:<タグ>] [AS <名前>] FROM [--platform=<プラットフォーム>] <イメージ名>[@<ダイジェスト>] [AS <名前>]

    あなたのDockerfileはベストプラクティスに従っていますか?(ベストプラクティスとチェックツール) - Qiita
  • iOSアプリのライフサイクル - Qiita

    はじめに iosでAppDelegateのメソッドがどんな時に呼ばれるかを知りたかったので、 Appleの資料の確認と、アプリを実装して確認しました。 実装した環境 Xcode 10.2.1 SWIFT 5 ios 12 アプリライフサイクルと呼ばれるメソッド アプリライフサイクル 下の図は、アプリライフサイクルとそれぞれの遷移時にAppDelegateで呼ばれるメソッドです。 アプリの起動時 アプリを最初のタップして、起動した時のAppDelegateの呼ばれる順番です。 func application(_:willFinishLaunchingWithOptions) func application(_:didFinishLaunchingWithOptions:) func applicationDidBecomeActive(UIApplication) アプリをバックグランド

    iOSアプリのライフサイクル - Qiita
    yoshuki
    yoshuki 2022/03/13
  • MagicalRecordを使う - Qiita

    今まであまりCoreData周りのライブラリ使ったことなかったのですが、今回MagicalRecordを利用することになりました。 ライブラリの機能が豊富でドキュメントを見てもわからず、ちょっとずつ異なるメソッド名を見てもどういうときに使うのかわからなかったので調べてみました 前提 NSManagedObjectContext(オブジェクトの管理スペース)のContextType Method 説明

    MagicalRecordを使う - Qiita
    yoshuki
    yoshuki 2022/03/04
  • Ubuntu 20.04 LTS へ do-release-upgrade した後に Postgresql 10から12にアップグレードした話(pg_upgradecluster編) - Qiita

    毎度、ググっても出てこない小ネタを取り扱っております。 記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。 0. はじめに 一昨年、以下のような記事を書きました。 これはこれで操作的には問題ないのですが、もう少し簡単な方法ってないのかな?と思って調べてみたら、以下のような記事を見つけました。 pauloxnet – Upgrading PostgreSQL from version 11 to 12 on Ubuntu 20.04 (Focal Fossa) $ dpkg -l grep postgresql\* 要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)保持 | 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留 |/ エラー?=(空欄)無/(R)要

    Ubuntu 20.04 LTS へ do-release-upgrade した後に Postgresql 10から12にアップグレードした話(pg_upgradecluster編) - Qiita