タグ

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

  • 日付期間の重複チェック - Qiita

    はじめに 業務アプリケーションでも、予約管理する機能を作成するときがあります。 その時に予約した日付期間が重複しているかチェックするわけですが、日付期間の重複チェックを複雑に記述される方を見られます。 しかし、これには定石のチェック方法があります。 「比較開始日付 <= 対象終了日付 AND 比較終了日付 >= 対象開始日付」 ※条件に、=が成り立っていいかどうかは仕様によります。 別ブログに書いた記事(2008年)ですが別ブログを破棄したので、情報を新たに変更してQiitaに移行しました。 【2019/10/06 追記】 重複するパターンとして対象期間より短いパターン⑦を追加しました。 これによるチェック方法に変更点はありませんが、テストパターンが無いことで誤解を生じさせてしまったみたいです。 また、定石のチェック方法の導き方について書かれた記事がありました。 期間が重複しているかを判定

    日付期間の重複チェック - Qiita
  • DockerでGo言語の開発環境を作る方法 - Qiita

    はじめに バックエンドにGoを使いたいと思ったときに作ったものです。 とりあえず動作する開発環境を作りたいという方におすすめです。 私自身、Dockerを用いたGoの開発環境の構築に苦労しましたので、同じく苦労している方の参考になれば幸いです。 フォルダ構成 フォルダ構成は以下のとおりです。 project ├backend │ └Dockerfile │ └cmd/ │  └─api/ │   └─main.godocker-compose.yml 具体的な手順 まず、Dockerfileを以下のとおり作成します。 FROM golang:1.19.1-alpine3.16 WORKDIR /app # 最初は以下の部分はコメントアウトする # COPY backend/go.mod . # COPY backend/go.sum . # RUN go mod download #

    DockerでGo言語の開発環境を作る方法 - Qiita
  • API設計まとめ - Qiita

    この記事について はじめてWeb API設計を担当し、設計することを通して学んだAPI設計のベストプラクティスやHTTPやRESTについて整理したいと考えこの記事を書きました。 応用的な内容よりかなり基的な内容中心となっております。 RESTとは Representational State Transferの略。 RESTとはWebのアーキテクチャスタイル、または設計思想のことをさす。(つまりはシステムのアーキテクチャを決定する際の羅針盤のような存在) RESTの特徴は以下の6つ。 クライアント/サーバ ステートレスサーバ キャッシュ 統一インターフェース 階層化システム コードオンデマンド 上記の特徴にしたがっていることをRESTfulといい、RESTの原則に基づいて設計されているAPIをRESTful APIと呼ぶ。 クライアント/サーバー クライアントとサーバーを分離し、それぞれ

    API設計まとめ - Qiita
  • 怖くない CircleCI の config.yml の書き方 - Qiita

    この記事は Classi Advent Calendar 2019 9 日目の記事になります。フロントエンドエンジニアの @kasaharu です。今年はフロントエンドエンジニア以外にも読んでほしい CircleCI についての記事になります。 CircleCI 使ってますか?設定ファイルの変更していますか?もしかしたら Yaml ファイルが大きく、読むのを諦めて雰囲気で修正している人もいるかもしれません。 CI の設定ファイルは毎日見るものではないので、たまに見たときにできるだけ時間を取られないように書き方をしたいものです。 今回は default の config.yml からできるだけメンテナンスしやすいような config.yml を作っていく手順を説明します。 はじめに アプリケーションがフロントエンド前提で書いてあるが他の言語でも考え方は同じはず! 最終的な Yaml ファイル

    怖くない CircleCI の config.yml の書き方 - Qiita
  • GitHub+CircleCI入門 - Qiita

    CircleCIとは CircleCI はSaaS型のCI/CDサービスです。 CI/CDとは「Continuous Integration / Continuous Delivery」の略であり、ビルドやテスト、デプロイを自動化して継続的に行うものです。 GitHubやBitbucketなどのGitホスティングサービスと連携することで、コードがPushされるなどのトリガーに応じて任意の処理を行うことができます。 今回は、PRを出した時にフロントエンドのテストが走るような設定を行ってみます。 CircleCIでHello Worldしてみる アカウント登録 まずアカウントを作る必要がありますが、GitHubやBitbucketを既に利用している方は Signupから「Sign Up with GitHub」や「Sign Up with Bitbucket」で簡単に登録できます。 confi

    GitHub+CircleCI入門 - Qiita
  • MySQLのEXPLAIN(実行プラン)まとめ - Qiita

    MySQLのEXPLAIN(実行プラン)について、まとめます。 EXPLAINは、クエリがどのように実行されるかを確認できます。 例えば、昨日まで1sだったクエリが、今日は10sかかる。という経験はないでしょうか。 EXPLAINを確認すると、意図しないIndexが使われいて、遅くなっていた。ということがあります。 はじめに MySQL 5.6.3以降では、EXPLAIN に使用できる説明可能なステートメントは、SELECT、DELETE、INSERT、REPLACE、UPDATE です。MySQL 5.6.3より前では、SELECT が唯一の説明可能なステートメントです。 今回は、MySQLのバージョンは5.7で試します。 EXPLAIN確認方法 クエリの先頭に EXPLAIN をつけて実行します。 +----+-------------+-------+------------+---

    MySQLのEXPLAIN(実行プラン)まとめ - Qiita
  • 「エンジニアDB」というサービスを開発しました!【Next.js / Rails / AWS / Terraform / Docker / GitHub Actions】 - Qiita

    3.インフラ(全体構成)について ここから技術的なことについて話していきます。 まず大前提として、プロジェクトの全体構成は、Happiness Chain の卒業課題の条件に基づいて決めれらていました。これらの条件には以下が含まれます Rails APIモード / Reactで完全SPAのポートフォリオを作る。 番環境と開発環境にDockerを使う。 番環境にはECS Fargateを使う。 GitHub Actionsを使ってAWSに自動デプロイする。 Terraformでインフラをコード化する。 なので、これに倣って実装しています。 アーキテクチャの全体像 フロントエンドVercelにデプロイして、バックエンドはAWSのECSにデプロイしています。 ブランチ運用は、GitHub flowを採用しています。 プルリク時にテストが走り、mainブランチにマージされるとデプロイされる感

    「エンジニアDB」というサービスを開発しました!【Next.js / Rails / AWS / Terraform / Docker / GitHub Actions】 - Qiita
  • 「例外」がないからGo言語はイケてないとかって言ってるヤツが本当にイケてない件 - Qiita

    この記事は、Go3 Advent Calendar 2018 の8日目の記事です。 7日目は @codehex さんによる「Go でアプリケーションとクライアントのミドルウェアを作成する方法知ってますか?」でした。 日はネタ全開でお送りいたします。 Disclaimer(免責事項) はじめに言い訳というか、これを書いた経緯というか。 プログラミング言語をdisる人をdisる芸を見たいですね! — yet another (@Maki_Daisuke) 2018年10月11日 というツイートをいたしまして、言った手前自分でやるか、と思い立った次第です。 なので、ネタとしてお楽しみください。 なお、炎上した場合にも、それすらもネタとして楽しむ所存ですのでアシカラズ。 それでは、いってみましょう。 Go言語がイケてない…だ…と……? Go言語はイケてない言語としてよくdisられているが、その中

    「例外」がないからGo言語はイケてないとかって言ってるヤツが本当にイケてない件 - Qiita
  • RabbitMQ徹底解説 - Qiita

    第1章: RabbitMQとは何か? RabbitMQは、オープンソースのメッセージングミドルウェアで、メッセージキューを利用してアプリケーション間の非同期通信を実現するためのソフトウェアです。RabbitMQは、AMQPと呼ばれるプロトコルを使用して、メッセージの送信者と受信者を接続します。 RabbitMQの概要 RabbitMQは、Erlangという言語で記述されたオープンソースのメッセージングミドルウェアであり、多様なプログラム言語やプラットフォームで使用できることが特徴です。RabbitMQは、高いパフォーマンスと信頼性を持ち、スケーラビリティが高いため、世界中の多くの企業やオープンソースプロジェクトで利用されています。 RabbitMQの主な特徴 RabbitMQの主な特徴は、以下の通りです。 多様なプログラム言語やプラットフォームで使用できること 高いパフォーマンスと信頼性を

    RabbitMQ徹底解説 - Qiita
  • [Laravel5.1]複数のDBに接続させる

    はじめに Laravelプロジェクト作ってるとDBを複数に分けたい場合があると思います。 ありますよね? 調べてみたら結構簡単にできたので備忘録的な扱いとして手順を残しておきます。 環境 簡単に言うとこんな感じです。 今回はすべてMySQLで構築しましたが、もちろん他のORDBと共存させることも可能みたいです。 当はSQLServerと共存させたかったのですが、ドライバがないって怒られました。 configファイルにsqlsrvの文字があるのに標準でドライバがないってどういうことなのHomesteadさん...。 ドライバ入れたらいけるっぽいけど、工数取られそうだったので今回はオミット。 何か情報をお持ちの方がいればご教示ください 変更手順 次の場所を変更していきます。 /config/database.php /.env(オプション) 設定をベタ打ちする場合 'connections

    [Laravel5.1]複数のDBに接続させる
  • JavaScriptでのサロゲートペア文字列のメモ - Qiita

    I. UnicodeとJavaScript文字列の前提知識 I-I. Unicodeのエスケープシークエンスで文字列を表す "\uXXXX"形式の4桁の16進数で表す // シングルクォートとダブルクォートの差はない "\u3042"; // => "あ" '\u3042'; // => "あ" // 正規表現リテラルでも表現可能 /\u3042/.test('あ'); // => true

    JavaScriptでのサロゲートペア文字列のメモ - Qiita
  • テストで実際に見たウェブサーバの「遅い」状態とは - Qiita

    さくらインターネットのアドベントカレンダー25日目が空いてしまったので、ウェブサーバのチューンナップについて書くことにしました。 私は今日からお休みですが、さくらインターネットは年末年始も休まずに働いていますので、ご安心ください。 年末年始のシフトに入ってくれた社員の皆さんに感謝です。 ということで、責任を持って空いたカレンダーの埋め合わせをさせて頂きますw サーバのレスポンスが遅いとは? なんだかサーバのレスポンスが悪いなぁってことは皆さんも体験されたことあると思います。 原因としては大きく分けて2種類あり、ひとつはApacheやnginxなどのウェブサーバソフトウェアの設定において同時に処理できる上限に達しているケースと、サーバ自体の負荷が高まっているケースです。 前者はApacheでいうとMaxClientsを調整することで対応できますが、そもそもサーバの性能以上にMaxClient

    テストで実際に見たウェブサーバの「遅い」状態とは - Qiita
  • 凄腕エンジニアさんから学んだ例外の話 - Qiita

    はじめに 今携わっているプロジェクトで凄腕エンジニアさんと一緒に開発をさせていただいているのですが、その凄腕エンジニアさんから教えていただいた例外の話がとても勉強になり、 さらにこの例外の話を他のプロジェクトエンジニアさんに伝えたところ、反応が良く、とても勉強になりました!という声をいただけたので、アウトプットしていきたいと思います。 (この記事の中で凄腕エンジニアさんのことはTさんと呼ぶことにします。) ※【凄腕エンジニアさんから学んだ例外の話】の補足 というQiita記事を書きました。 この記事を読み終わった後に疑問が残った人などは補足資料として読んでいただけると嬉しいです。 例外の考え方の源 Tさんの例外の考え方は http://diveintopython3-ja.rdy.jp/your-first-python-program.html#exceptions ↑こちらのPyth

    凄腕エンジニアさんから学んだ例外の話 - Qiita
  • SESでも、ただひたすらに、チームでありたい - Qiita

    この記事は、The Agile Guild(TAG) Advent Calendar 2018の21日目のエントリーです。 はじめに ※この記事は個人の見解であり、所属する組織の公式見解ではありません。 この記事では、 SESメインの会社の管理職が 同じ部署(別々の現場、別々の案件)のメンバーで チームになり、そしてチームであり続ける為に考えていること、そして部署全体でやっていること を書いていきます。 SESに対する個人的な見解 いきなり筋からずれるのですが、この個人的な見解がないと「なぜSESにこだわるの?」という根の疑問が払拭出来ないと思うので先に触れておきます。 ですが、あくまで今回のテーマとは異なるのでさらっとしたまとめに留めます。 昨今SESというとどうしても悪いイメージがついてしまいがちですが、私個人はSESという業態自体は悪いことではなく、むしろ今後より必要になってくる

    SESでも、ただひたすらに、チームでありたい - Qiita
  • docker container / image コマンド新旧比較 - Qiita

    概要 2017年1月18日にリリースされた Docker v1.13 以降(今日現在の v17.03.0-ce )は、 docker コマンドラインの命令体系が再編成されました。記事では変更に至った背景と、新旧コマンド体系の比較情報を整理します。 新しいサブコマンド体系の導入と背景 新しいコマンド体系の導入に至ったのは、docker のトップレベル・コマンド群が 40 を越える状況(当時)となったためです。コマンドには頻繁に使うものもあれば、使わないものもあり、再編成されることになりました。 v1.13から論理オブジェクト単位にコマンドが再編成されました。これは、「何」(コンテナやイメージ、ネットワーク)を、「どうするか」(作成、一覧、起動、停止)で扱います。そのため、従来よりもコマンドの利用目的が分かりやすくなります。たとえば、コンテナを管理する docker container サブ

    docker container / image コマンド新旧比較 - Qiita
  • Carbon の lastOfMonth() と endOfMonth() の違い - Qiita

    会社のコードの中で、lastOfMonth() と endOfMonth() が混在していた。何が違うのか調べてもまとまっている記事がなかったので書く。 調査にはLaravelのTinkerを使った。 環境 Laravel 6.2.0 Carbon 2系 前提

    Carbon の lastOfMonth() と endOfMonth() の違い - Qiita
  • ProxyJumpでhostnameを解決しながら踏み台サーバーをジャンプ - Qiita

    なにこれ 最近こんな案件に当たりました サーバーの種類がかなりの台数ある上に、踏み台経由じゃないとアクセスできない 認証鍵もポートもユーザー名も全部バラバラ 踏み台サーバーは定期的に再生成されIPがたまに変わる ・・・お堅い仕事は結構ですが、とにかくサーバーあたりの情報指定が多くssh/confignが汚染されるのが嫌なので、別ファイルを使ってsshを叩けるようにしたい!と思ったのですが、適当にProxyCommand書いてもssh: Could not resolve hostnameが出て詰まったので調査がてら勉強しなおしました。 sshの基についてもついでに書くので、題にしか興味がない人は題まで飛ばしてください。 最近忙しすぎて年単位で記事書けてなかった&保守もできてなかったので、記事を書くリハビリを兼ねます sshでサーバーにアクセス 単純にsshコマンドでアクセスする まず

    ProxyJumpでhostnameを解決しながら踏み台サーバーをジャンプ - Qiita
  • GitHubを最強のToDo管理ツールにする - Qiita

    ToDo管理ツール、いろいろありますよね。 古くは Remember the Milk、EvernoteGoogle GmailのToDoなども便利です。 しかし、たかだかToDoを管理するのに有料のサービスを使いたくはありませんし、ToDoにはそこそこに個人的なセキュリティが求められる要素があります。 Gmail ToDoだと管理が難しい例 GmailのToDoはメールに起因するToDoには便利ですが、カンバン方式のワークフロー、メールに起因しないToDo…例えば「ああ〜、あのイベントの参加費を月末までに精算処理して領収書提出しなきゃ〜」とか「来月のLTでの講演頼まれちゃったけど、上長伺いから広報チェックから事後記事公開まで 面倒くさい たいへん~」など、チェックボックス的な1段階の階層では片付かないToDoにはあまり効率が良くありません。GmailのToDoは期限もメールそのものへの

    GitHubを最強のToDo管理ツールにする - Qiita
  • PHP8.0がリリースされたので新機能全部やる - Qiita

    PHP8.1 / PHP8.0 / PHP7.4 2020/11/26にPHP8.0.0がリリースされました。 ということで、UPGRADINGに載っている機能や変更点をだいたい全部見て回ることにします。 Backward Incompatible Changes 後方互換性のない変更。 なお、ここで削除される機能の多くは何年も前から公知されています。 PHPコア match is now a reserved keyword. matchが予約語になりました。 match構文の導入に伴う措置です。 function match(){} // PHP8.0 Parse error: syntax error, unexpected token "match", expecting "(" // PHP7.4 エラーは起こらない

    PHP8.0がリリースされたので新機能全部やる - Qiita
  • DockerでのLAMP環境構築手順(Amazon Linux 2/PHP8.1(Laravel9)) ⑦Laravel 9 系のインストール(全8回) - Qiita

    DockerでのLAMP環境構築手順(Amazon Linux 2/PHP8.1(Laravel9)) ⑦Laravel 9 系のインストール(全8回) はじめに かくかくしかじかで、DockerAmazon Linux 2 ベースの LAMP 環境を構築する機会がありましたので、手順についてアウトプットします。 全 8 回を予定しています。 ① 作成する環境の確認 ② Apache の導入 ③ PHP 8.1 系のインストール ④ Composer のインストール ⑤ timezone, locale の設定 ⑥ docker-compose.yml の作成 & MySQL の導入 ⑦ Laravel 9 系のインストール ⑧ Apache の設定ファイルの追加 今回は、 ⑦ Laravel 9 系のインストール についてです。 環境 以下の Docker 環境を構築します。 Am

    DockerでのLAMP環境構築手順(Amazon Linux 2/PHP8.1(Laravel9)) ⑦Laravel 9 系のインストール(全8回) - Qiita