タグ

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

  • 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
    最低限の基礎
  • PHPで任意のディレクトリ下にあるファイルを一覧取得する方法 - Qiita

    foreach(glob('dir/{*.gif,*.zip,*.pdf}',GLOB_BRACE) as $file){ if(is_file($file)){ echo htmlspecialchars($file); } } 引数にflagsというのをつけていろいろできる。 参考(公式サイト) array glob ( string $pattern [, int $flags = 0 ] ) flags GLOB_MARK - 各ディレクトリにスラッシュを追加します GLOB_NOSORT - ディレクトリに存在するファイルを返します (ソートはされません)。このフラグを使わない場合は、パス名をアルファベット順にソートします。 GLOB_NOCHECK - 検索パターンにマッチするファイルが見つからない場合に、 検索パターン自身を返します GLOB_NOESCAPE - バックスラ

    PHPで任意のディレクトリ下にあるファイルを一覧取得する方法 - Qiita
    takets
    takets 2022/02/18
    blobを使う
  • チェックリストに関する考察と私達のチェックリスト活用法 - Qiita

    はじめに チェックリストは、組織にたくさんあります。 チェックリストは、世の中にもたくさんあります。 Qiitaでも、「チェックリスト」という単語で検索をかけると10000件以上の記事がヒットします。 先人たち(自分も含めて)が、自分の知識・経験を伝えるために、たくさんのチェックリストを作ってくださっています。ただし、それを受け取る側としては、うまく活用できていない場面が、たくさんあります。 そんな中、私たちのプロジェクトで、チェックリストをうまく活用するため、やったことを記録しておきます。 チェクシートについて思うこと列挙します。 与えられたチェックリストはうまく使えない チェックリストは自分で作るのが一番良い チェックリストはチームで作るのも良い 先人に作成していただいたチェックリストを無駄にはできない 与えられたチェックリストはうまく使えない 「使え!」と与えられたチェクリストは「使

    チェックリストに関する考察と私達のチェックリスト活用法 - Qiita
    takets
    takets 2022/02/17
  • zshの設定ファイルの読み込み順序と使い方Tipsまとめ - Qiita

    設定ファイルの種類と読み込み順序 読み込み順を確かめるには実際に各設定ファイルを作ってそのファイル上でファイル名をechoしてみれば良い ログインシェルの場合(iterm2起動時,SSH,TMUX,SCREENなど含む) zshenv > zprofile > zshrc > zloginの順で、 それぞれglobalを読み込んだ後で、localを上書き読み込み ちなみに以下の〜は環境変数\$ZDOTDIRがあればそれが使われて、なければ\$HOME(つまり〜)が使われます。 \$HOME以外に置きたい場合には\$ZDOTDIRを指定しましょう。 #指定するとgit管理も楽ちんになりますね global) /etc/zshenv local ) ~/.zshenv global) /etc/zprofile local ) ~/.zprofile global) /etc/zshrc lo

    zshの設定ファイルの読み込み順序と使い方Tipsまとめ - Qiita
    takets
    takets 2022/02/10
  • columnコマンドをUbuntuにインストール - Qiita

    columnコマンドは短いたくさんの出力を端末上で複数列に表示して見やすくしてくれるコマンドです。表形式、マルチカラムみたいになります。 例えばですが、まずはcolumnコマンドを使わないとこういう出力になるコマンドがあるとします。

    columnコマンドをUbuntuにインストール - Qiita
    takets
    takets 2022/02/04
  • PHPでXML文字列を整形(フォーマット)する - Qiita

    XMLをログ出力するときに、きちんとフォーマットして出力しようと思いました。 結論から言うと以下のコードで実現できました。 <?php use SimpleXMLElement; // 略 $simpleXmlElement = new SimpleXMLElement($xml); $dom = dom_import_simplexml($simpleXmlElement)->ownerDocument; $dom->formatOutput = true; echo $dom->saveXML(); // 略

    PHPでXML文字列を整形(フォーマット)する - Qiita
    takets
    takets 2022/02/03
  • メタバースの技術限界の解説 - Qiita

    これらの試算から、1人あたりのトラッキングによる通信量はおおよそ16.88kbpsから112.50kbpsと考えられます。 スター型ネットワークの場合 ここでメタバースでスター型のネットワークを採用することを考えます。 どのような構成かというと、クライアントがトラッキングデータをサーバーへ送信します。各クライアントへのトラッキングデータの送信はサーバーが行います。 こうした構成を行う場合、全てのクライアントのデータがサーバーを介し、各クライアントへ流れ込みます。そのため、通信速度は下り速度がボトルネックとなります。ここでは人口75%ラインの88Mbpsを上限として考えます。 先ほどの1人当たりのトラッキングに関わる通信量から算出すると、スター型の場合、801~5,340人が通信の限界になります。 フルメッシュ型ネットワークの場合 一方で、サーバーを介しないクライアント同士が直接つながるフル

    メタバースの技術限界の解説 - Qiita
    takets
    takets 2022/01/29