タグ

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

  • coc.nvimでPHPStanやPHP_CodeSnifferを使う - Qiita

    coc.nvimVimのLSPクライアント・プラグインの一つです。 cocは自分自身がVimプラグインでありながら、拡張機能(エクステンション)の機構を持っており、LSPサーバをエクステンションをとしてインストールすることで機能を追加することができます。 PHPのLSPサーバのcocエクステンションもいくつかあります。例えばPHPのLSPサーバであるIntelephenseのcocエクステンションとしてcoc-phplsがあります。 coc-phplsをインストールするとcoc経由でPHPの自動補完・定義ジャンプ・ホバー(ヒント)表示・バグ検出などの機能を使えるようになります。 coc-phplsだけでもある程度のバグ検知は可能ですが、Intelephenseが提供するバグ検出は現時点ではPHPStanに比べると弱く、またPHP_CodeSnifferのようにコーディング規約違反を検出す

    coc.nvimでPHPStanやPHP_CodeSnifferを使う - Qiita
    takets
    takets 2022/06/15
    一番下に、単体ファイルごとに実行する設定が書いてある
  • 誰かのために - Qiita

    プログラミングは美しくなければならない。 実際、美しく書けるかどうかではない。美しく書こうという心構えが大切だ。コーディングの話ではない。いやコーディングの話なのか? 計画の段階で「こういう風に書き始めよう、ああいうステートメントを書くだろうな、ちょっとだるいな。あのライブラリ使うな、久しぶりだし覚えてないなぁ。あとこういうAPIが必要だな。勉強しないと。。。。」 こんな脳内ふわふわ計画段階で、8割決まっていると私は思う。問題点、課題が正確に把握できているならば、それを実行すればいいだけだからだ。 やることが分かっている。明確な着地点が見えている。これ以上ないことだ。 生きるということはあいまいだ。20世紀の哲学者、アルベール・カミュは著書「シーシュポスの神話」でこう書き出している。 「真に重大な哲学上の問題は一つしかない。自殺ということだ」 生きるということにそもそも意味がないならば、今

    誰かのために - Qiita
    takets
    takets 2022/06/14
  • 【Ruby on Rails】N+1問題ってなんだ? - Qiita

    はじめに Ruby on Rails界隈でよく耳にする「N+1問題」について解説します。 N+1問題を理解することで無駄なSQLの発行を抑え、処理時間の削減に繋げることができます。 ↓読んでほしい人 N+1問題を知らない人 Ruby on Rails初心者〜中級者 性能改善したい人 N+1問題とは ループ処理の中で都度SQLを発行してしまい、大量のSQLが発行されてパフォーマンスが低下してしまう問題のことです。 日常生活で例えるなら、スーパーで商品を1点ずつお会計するようなもの。 それだけ無駄なことを行なっている状態を指します。 え、そんなアホなこと普通はしないって思いますよね? でもRailsを使用していると往往にしてこの問題が発生してしまうのです。 N+1問題の例 会社(companies)とそれに所属する人(users)を例に説明します。 例えばcompaniesテーブルとusers

    【Ruby on Rails】N+1問題ってなんだ? - Qiita
    takets
    takets 2022/06/10
  • DDDにおけるアプリケーションサービスとドメインサービスの違い - Qiita

    昨日の記事でも触れたとおり、ここ最近iDDDのを読んでいたのですが、なかなかアプリケーションサービスとドメインサービスの違いが理解できなかったので備忘録的にまとめてみました。 ドメインサービスの責務 ドメインサービスはドメインモデルにおける、重要な処理を担ったり、他のドメインオブジェクトの変換や、複数のドメインオブジェクトの値を利用し計算するなどの用途に適している。 特にEntityオブジェクトやValueObjectで上記を実装すると記述量が増えてしまう場合などに有効。 ドメインサービスのメソッド名はユビキタス言語を表すようにし、状態を持たない。 とはいいつつ、Repositoryなどをコンスタラクタの引数として受け付けて、それを内部のプロパティとして保持するパターンがiDDDの例でもいくつか見られる(AuthenticationServiceやAuthorizationService

    DDDにおけるアプリケーションサービスとドメインサービスの違い - Qiita
    takets
    takets 2022/06/10
  • Dockerのマルチステージビルドを使う - Qiita

    この記事はモバイルファクトリー AdventCalendar 2017 31日目 25日目の記事です。 24日目は @mattak さんの『UniRx Quiz』でした。 はじめに 記事は、Dockerのマルチステージビルド(multi-stage builds)に関する公式ドキュメントの非公式拙訳です。 編 マルチステージビルドを使う マルチステージビルドは、Docker17.05以上で利用できる新機能です。 マルチステージビルドは可読性、保守性を保ちながらDockerfileを最適化するのに苦労している人の役に立ちます。 謝辞: 彼自身のブログへの投稿Builder pattern vs. Multi-stage builds in Dockerを、以降の例のベースとして使用することを許可してくれたAlex Ellisに感謝します。 マルチステージビルド以前 サイズを小さく保ちなが

    Dockerのマルチステージビルドを使う - Qiita
    takets
    takets 2022/06/08
    マルチステージビルドの木曽
  • 別docker-composeで立ち上げたDBを参照する - Qiita

    やりたいこと Docker上に構築したec-cubeのDBmySQL)にこれまた別のDockerで構築したrailsアプリから接続したい railsとec-cubeでそれぞれ別のdocker-composeファイルが存在する どういう設定したらrailsからec-cubeのDBのコンテナが見れるのかわかんない 解決した方法 別docker-compose 同士のネットワークを繋げる設定をした 具体的にはrailsとec-cubeを同じネットワーク内に所属させ、コンテナ名で参照できるようにした こちら参考にさせていただきました。ありがとうございます・・・・! 別docker-compose同士のネットワークを繋げる方法 設定ファイルとか railsアプリ側の「docker-compose.yml」と「database.yml」の設定 # docker-compose.yml: 「netwo

    別docker-composeで立ち上げたDBを参照する - Qiita
    takets
    takets 2022/06/08
    f
  • else を禁止してはいけない - Qiita

    複雑なプログラムを書いてしまうのを避けるために、if 文の else を避ける制約を設けてプログラミングしてみましょう、というアプローチがあります。これはあくまで、ThoughtWorks アンソロジーに書かれていた、ある種のプログラミング思考のトレーニング方法のひとつにすぎないものです。 しかし、権威だからか、あるいは、あまりコードを書かない人がわかりやすいと感じるからか、プロダクションコードの規約に使おうとする誤った考えがあります。そんなことをすると、コード品質は下がります。 else 禁止制約というのは、「これまで if-else で記述していた多くのコードは、実は、生成するオブジェクトの多態性によって、分岐の前倒しが可能になるものだったのか」という認識を得られれば、すぐに忘れるべきルールです。 ある実在の OSS コードを例に説明します。 https://github.com/xr

    else を禁止してはいけない - Qiita
    takets
    takets 2022/06/08
  • 別docker-compose同士のネットワークを繋げる方法 - Qiita

    概要 docker-composeを利用して、Vue.jsのコンテナ、APIモックサーバのコンテナを作成して、開発をしているのですが、gitリポジトリを別にしようとするとdocker-compose.ymlを分割→ネットワークが別になってコンテナ内からAPIへアクセスできなくなって困った。ので、どうにかならないか調べて見ました。 解決 docker-compose で別の docker-compose.yml で作ったコンテナとリンクする (ネットワークを繋げる) https://qiita.com/reneice/items/20e981062b093264cd0a 上記記事がとても参考になりました。感謝! 参考までにdocker-compose.ymlの定義です。 Vue.jsやモックサーバのコンテナ構築については下記をご参考ください。 DockerVue.js+TypeScript

    別docker-compose同士のネットワークを繋げる方法 - Qiita
  • 「ビジネスロジック」とは何か、どう実装するのか - Qiita

    アプリケーション開発で、「ビジネスロジックは分離しろ」だとか「Controller にビジネスロジックを書くな」といったことをよく言われると思います。 しかし、ビジネスロジックという言葉の意味を聞いたり調べたりしてみても、「システムのコアの部分」とか「システムの目的になる処理をするところ」みたいなことを言われたりして、よく分かりませんでした。 そんな中、クリーンアーキテクチャや DDD の戦術的設計について学ぶことで、「ビジネスロジックとは何か」、「ビジネスロジックはどう実装するか」について、自分なりの考えが整理されてきたので、この記事ではそれをまとめます。 ※ 曖昧な言葉を自分としてどう使っているかという話になります。違う意味で使う方もいると思うので、ご注意ください ビジネスロジックとは何か 「システムのコアの部分」とか「システムの目的になる処理をするところ」といった説明も正しいとは思い

    「ビジネスロジック」とは何か、どう実装するのか - Qiita
    takets
    takets 2022/06/05
  • tmux の設定で if を使う(ウィンドウが一つの時と複数の時で異なる動作をするキーバインドの設定) - Qiita

    このウィンドウの移動に対するキーバインドを、ウィンドウが一つしか開いていない時はペインの移動に変えたかったのです。 結論 # version 2.3 まで bind-key C-t if-shell 'test #{session_windows} -eq 1' last-pane last-window

    tmux の設定で if を使う(ウィンドウが一つの時と複数の時で異なる動作をするキーバインドの設定) - Qiita
    takets
    takets 2022/05/20
  • idやclassを使ってテストを書くのは、もはやアンチパターンである - Qiita

    いきなり結論を書くと、idやclassはスタイルのためのものなので、テストでそれを使うのはやめましょう。そして、カスタムデータ属性を使いましょう。(idやclassはスタイルのためだけではないという意見はごもっともです!しかし、主にとしてスタイルに使われるということでご了承頂いて以下の駄文に付き合って頂けると幸いです🙇) 先に断っておくと主にreactについての話で、JSXを前提とします。(手法はReactに限りませんが理由は後述) 2020/03/23 追記 この記事は1年以上前に書かれた記事なのでテストフレームワークとしてenzymeを使っていますが、現時点ではTesting Libraryの使用をオススメします。data-testid に対応するクエリを備えています。 React Testing Library · Testing Library はじめに ご存知の通り、ロジックと

    idやclassを使ってテストを書くのは、もはやアンチパターンである - Qiita
    takets
    takets 2022/04/26
  • #git push でリモートブランチ名を指定なしで実行できるようにする ( $ git config --global push.default current ) - Qiita

    #git push でリモートブランチ名を指定なしで実行できるようにする ( $ git config --global push.default current )Git

    #git push でリモートブランチ名を指定なしで実行できるようにする ( $ git config --global push.default current ) - Qiita
    takets
    takets 2022/03/30
    “git config --global push.default current”
  • GitHub ActionsでWorkFlowやJobを連鎖させる方法 - Qiita

    はじめに この記事は、GitHub Actionsでjobやworkflow同士を連鎖させる方法を記録、共有するためのものです。 想定する環境 この記事は、2021/11/12時点でのGitHubを前提に書かれています。GitHubが更新されると、記事の内容をそのまま適用できないことがあります。ご注意ください。 想定する読者 gitを使ったことがある GitHubのアカウントを持っている GitHub Actionsを使ったことがある この記事ではgitの使い方やGitHubの導入方法などは取り扱いません。ご承知ください。 GitHub Actionsとは GitHub Actionsとは、GitHubが提供するCI/CD環境です。リポジトリへのPushやPull requestの作成、Issueへのコメントなどさまざまなイベントを引き金としてコンテナーが立ち上がり、指定された命令を処理し

    GitHub ActionsでWorkFlowやJobを連鎖させる方法 - Qiita
    takets
    takets 2022/03/30
  • Github Actions 入門編 (ざっくり系) - Qiita

    qiita に記事があまりなかったので掲載しました。 github action の概念は知っているものの、コードかけない、めんどくさい、怖いと言う方が中にはいらっしゃるのではと思います。ここではそんな人達向けに記事を書きました。あくまできっかけづくりです。 サンプルコードがあった方がわかりやすいと思うので、ここではサンプルコードと合わせて解説します。 相当手抜きで解説しますが、ご了承願います。 Github Actionとは 一応一言で言うと github が提供する CICD のサービスです。 制約について公式ドキュメントだったり、色々な人の記事を読んでいただければと思います。 格納先 基的に GitHub Actions は全て .github/workflow の配下におきます。yml 形式です。 つまり、my_repostiory というレポジトリがあったら、my_reposi

    Github Actions 入門編 (ざっくり系) - Qiita
    takets
    takets 2022/03/25
    プルリク番号やプルリクのタイトルの取得方法
  • GitHub Actionsでブランチ名を扱う方法 - Qiita

    イベント別解説 起点とするイベントによって方法が異なるため、イベント別に解説します。 全ての例でechoコマンドでブランチ名を出力しています。 プルリクエストの時 on: pull_request: types: [opened, closed] jobs: debug: runs-on: ubuntu-20.04 timeout-minutes: 3 steps: - name: Print branch name env: BRANCH_NAME: ${{github.head_ref}} run: echo $BRANCH_NAME 以下2つの変数はプルリクエストを起点としたときだけ使用可能です。 マージするブランチ名は ${{github.head_ref}} マージ先のブランチ名は ${{github.base_ref}} typesを指定することで対応するアクティビティを指定で

    GitHub Actionsでブランチ名を扱う方法 - Qiita
    takets
    takets 2022/03/18
    “マージするブランチ名は ${{github.head_ref}}”
  • ApacheアクセスログにユーザIDをうまく記録する方法 - Qiita

    はじめに Apacheアクセスログを見返すときに、「ログ上にユーザIDが記録されてたら便利なのにな」とか思うことありませんか? プログラム内で使われる各種情報をアクセスログに連携するためのベストプラクティスをご紹介します。 前提条件 プログラム内の変数値をApacheアクセスログに記録できる Webサーバからクライアントには変数値を直接出力しない Apache 2.4.7以降で使用可能 実装方法 プログラムからは、適当なヘッダとして出力する。

    ApacheアクセスログにユーザIDをうまく記録する方法 - Qiita
    takets
    takets 2022/03/18
  • まだレビューでそんなやりとりしてるの?PHPStanとPHP-CS-Fixerを導入して楽しよう(Github Actionsを添えて) - Qiita

    まだレビューでそんなやりとりしてるの?PHPStanとPHP-CS-Fixerを導入して楽しよう(Github Actionsを添えて)PHPLaravelphp-cs-fixerPHPStanGitHubActions はじめに 弁護士ドットコム Advent Calendar 2021 記念すべき1日目🎉(2年連続) 記事はあくまでも、Laravel MeetUp Okinawa でお話しした内容を記事にしたものになります。 題 突然ですが、レビューでこんな事を言われた/言った経験はないだろうか。 「インデント!!これもう指摘するの3回目!!」 「ここの変数未定義だし、ここも型合ってないよ!!」 …………… ………………………… ……………………………………… 指摘された側 はその場では反省して、気をつける事だろう。 しかし、所詮は人間。同じミスはしてしまう。 指摘する側 も同じ

    まだレビューでそんなやりとりしてるの?PHPStanとPHP-CS-Fixerを導入して楽しよう(Github Actionsを添えて) - Qiita
    takets
    takets 2022/03/17
  • flywayでMySQLのテーブルを管理する(入門) - Qiita

    概要 MySQLのDDLの管理がしたくなったのでflywayを使ってみる 一応現場でも使用することを想定してパスワードの直打ちやファイルに記載してGitに上がってしまうことがないように意識してみています flywayコマンドの実行結果は可視性の向上のために説明に必要な部分のみ記載します 環境やバージョン windows MySQL 5.7 (ローカル) flyway 4.2.0 参考 https://flywaydb.org/ Flywayのインストール まずはflywayのインストールから ここからZipファイルを取得し、解凍。 今回は1から必要なファイル等を把握していきたいので flyway-<version>配下の「flyway」と「flyway.cmd」のみをPathの通ったディレクトリに配置する

    flywayでMySQLのテーブルを管理する(入門) - Qiita
    takets
    takets 2022/03/11
  • 最近の海外DDDセミナーを聞いてみたら色々と常識が破壊された - Qiita

    TL;DR 最近の設計志向はイベント駆動がかなり中心になっている とくにDDD界隈がここまでイベント駆動一槍だとは思わなかった ストーリーを出発点にイベント駆動で設計を組み立てる「イベントストーミング」がかなり多くの場所で事例として取り上げられている はじめに 最近、洋書や動画の講演資料などいくつか海外の情報源に当たることがおおくなり、その中で「結構日でやられている取り組みとちがうなー」と考えることが多く、一旦そのあたりの差分をまとめておこうかと思いました。 ただの出羽守(あるいは鹿鳴館精神)ではなく、一つの潮流としてこんなのがあるってのを記述できればなと思います イベントが設計の基線となりつつある、、、のか? まず1つ目に驚いたのが、イベントが設計の中心になっている、そう感じる機会が多かったこと。 ここで言うイベントは、実践ドメイン駆動設計の中でも「ドメインイベント」として実装パタ

    最近の海外DDDセミナーを聞いてみたら色々と常識が破壊された - Qiita
  • Vue.js サンプルコード - Qiita

    Vue.js のサンプルコードが意外に少ないなぁ、と感じたので、自分が理解できた範囲で「もっともわかりやすいと思うコード(主観)」を書いてみた。 自分の勉強を兼ねてます(失礼) これは誰のためのものですか? Webが表示される仕組みが理解できていて、 HTMLJavaScriptSVG のコードがある程度読み書きができて、 MVVM というか MVC のおおよその概念もつかめていて、 Webアプリ の UI とかを仕事でガリガリ書いているんだけど、 そろそろ AngularJS とか React.js も使わないとなぁ、と思いながらも、複雑すぎて、習得に時間が掛かりそうだからスルーしたくて、 Riot.js から使ってみて、軽くていいけど、SVG との相性が最悪で、、、 Vue.js なら SVG との相性もいいとか学習コストが低いって聞いたのにを買って読んでみてもちっとも頭

    Vue.js サンプルコード - Qiita
    takets
    takets 2022/02/28
    最低限の基礎