タグ

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

  • MongoDBの複合インデックスにおけるESRの法則について - Qiita

    はじめに 自社のサーバーでMongoDBを使用しています。 クエリの高速化にindexを用いるのは常套手段ですが、何も考えずに貼ったIndexが適用されない事がありました。 今回はその原因となったESRの法則について調べたことを簡単にまとめました。 ESR(Equality,Sort,Range)の法則 ESRの法則はMongoDBの公式ドキュメントで紹介されています。 1言でまとめると indexは、Equal(一致)、Sort(並び替え)、Range(絞り込み) の順番に貼ったほうがいいよ と言っています。 例えば、以下のqueryがあったとします。

    MongoDBの複合インデックスにおけるESRの法則について - Qiita
  • リーダブルテストコード - Qiita

    はじめに よく言われるように、ソースコードというものは書かれることよりも読まれることの方が多く、それゆえ読みやすいコードを書くということが非常に重要です。それはテストコードにおいても同様であり、プロダクトコードと同等に資産として扱う必要があります。 テストコードは具体的な値を用いて記述し、また複数の変数の値の組み合わせでテストケースを起こすため、プロダクトコードと比べて冗長になりがちです。 書籍『リーダブルコード』の14章でもテストコードの読みやすさについて触れられていますが、稿では読みづらいテストコードをリファクタリングして読みやすくするためのテクニックを紹介したいと思います。 なおサンプルコードはJavaScriptで記述されており、そのテストコードはJest1を用いて書いています。 ソースコードはGitHubにあります。 リファクタリング(その壱) 以下の、決して読みやすいとはいえ

    リーダブルテストコード - Qiita
    etakaha
    etakaha 2022/06/01
  • Docker Desktop for Macの実用的な代替手段: lima + Docker - Qiita

    2023/07/04追記: 現在はRacher Desktopがおすすめ Rancher Desktopの登場により、この記事でやろうとしている環境構築を簡単に実現できるようになっています。設定でコンテナランタイムをdockerd (moby)に設定すれば、Dockerを利用することができます。 はじめに 昨年のPull Limitに引き続き、Docker社が再び動きました。 今後Docker Desktopを使用する場合、中規模以上の企業では有料プランを使用する必要があります。ただし有料プランで提供されるサービスは開発者にとってはあまり価値がないものですし、この有料プランを全社的に導入するという話を進めるのも中々骨が折れるでしょう。 NOTE: Docker Desktopの有料プラン移行には2022年1月31日までの猶予期間があります 既に一部ではDocker Desktopの代替手段

    Docker Desktop for Macの実用的な代替手段: lima + Docker - Qiita
  • プログラマーのための原則(2 万字) - Qiita

    はじめに 今でも語り継がれる「原則」は、それだけ価値のあるコンセプトです。 歴史を振り返ることは、失敗を防ぐための効率の良い方法になります。 👑 DRY (Don't repeat yourself) 「同じことを繰り返すな。」 Andy Hunt と Dave Thomas の著書『達人プログラマー』(1999 年)で提唱された原則で、プログラミングに関する最も重要な原則といっても過言ではありません。 DRY 原則だけでなく、どんなデザインパターンやベストプラクティスでも、同じ処理が重複することは基的に許されていません。 これにはどういう意図が込められているのでしょうか。 🔖 表面的な理由 この原則は、コードの再利用性を高め、そのために疎結合な状態を保つことは、極めて有用なことを示唆します。 1 箇所を直せば済むべき箇所をあちこちに分散させてしまうのは、自分で事故を招いているのと同

    プログラマーのための原則(2 万字) - Qiita
  • Java 15新機能まとめ - Qiita

    Java 15が2020/9/15にリリースされました。 https://mail.openjdk.java.net/pipermail/announce/2020-September/000291.html Java SE 15 Platform JSR 390 JDK 15 GA Release こちらの動画でざっくりと説明しています。 MacLinuxでのインストールにはSDKMAN!をお勧めします Oracle OpenJDK以外に無償で商用利用できるディストリビューションとしては、次のようなものがあります。 AdoptOpenJDK Azul Zulu Community Liberica JDK Amazon Corretto 15 アップデートは10月に15.0.1が、翌年1月に15.0.2がリリースされることになります。 Oracle JDKは開発用途には利用できますが、

    Java 15新機能まとめ - Qiita
    etakaha
    etakaha 2020/09/25
  • 2020年のMavenリポジトリの作り方 - Qiita

    はじめに Javaエンジニアであれば何だかんだでMavenリポジトリを使うことは非常に多いと思います。Gradleであっても使いますしね。 OSSなどはセントラルリポジトリから落とすとして自作のライブラリの管理をどうしていますか? ローカルだけで開発していればmvn installで事足りますが、CI/CDを行っていたりチームや組織でライブラリを共有している場合はそうもいきません。 という分けで今回はMavenで作成したライブラリを公開するための方法に関してまとめました。ちなみに2020年8月時点でのおすすめはGCSをリポジトリにする方法です。 Maven Central Repositoryに登録 OSSのリポジトリサーバを立てる GitHub Pagesを使う GitHub Packages + Actions を使う S3/GCS/Azure Blobにリポジトリを構築する GCP

    2020年のMavenリポジトリの作り方 - Qiita
    etakaha
    etakaha 2020/09/01
  • 図解 X.509 証明書 - Qiita

    はじめに X.509 証明書について解説します。(English version is here → "Illustrated X.509 Certificate") ※ この記事は 2020 年 7 月 1 日にオンラインで開催された Authlete 社主催の『OAuth/OIDC 勉強会【クライアント認証編】』の一部を文書化したものです。勉強会の動画は公開しており、X.509 証明書については『#4 X.509 証明書(1)』と『#5 X.509 証明書(2)』で解説しているので、動画解説のほうがお好みであればそちらをご参照ください。 1. デジタル署名(前提知識) この記事を読んでいただくにあたり、デジタル署名に関する知識が必要となります。つまり、「秘密鍵を用いて生成された署名を公開鍵で検証することにより」、「対象データが改竄されていないこと」や「秘密鍵の保持者が確かに署名したこと

    図解 X.509 証明書 - Qiita
  • リアクティブマイクロサービス入門(2/2)- 実現編 - Qiita

    はじめに 前篇の「リアクティブマイクロサービス入門(1/2)- 概念編」では、なぜリアクティブマイクロサービスが必要なのか、リアクティブマイクロサービスとは何なのかをご紹介しました。 後編となるこの記事では、リアクティブマイクロサービスの実装するために使えるテクニック・技術を、目的別にご紹介します。 もちろん、これらすべてを盛り込まなければリアクティブマイクロサービスを実現できないわけではありませんが、引き出しとして知っておけばより柔軟な設計ができるのではないかと思います。 目的別にまとめているので、適宜リファレンス的にご参照いただければと思います。 モジュール化 リアクティブマイクロサービスに求められる性質をバランス良く満たすためには、ビジネス上の関心事を分割することが重要です。 トレードオフで同時に実現することが難しい要件でも、分割することでそれぞれの関心時に最適化した手段を選択して実

    リアクティブマイクロサービス入門(2/2)- 実現編 - Qiita
  • リアクティブマイクロサービス入門(1/2)- 概念編 - Qiita

    はじめに リアクティブシステムを構築するためのライブラリ「Akka」を開発する Lightbend社 から、リアクティブシステムやマイクロサービスについて学習できる有償のオンライントレーニング「Lightbend Academy」を提供されていますが、2020年夏の間(※)は無償で受講できるようになっています。 ※2020/07/14現在。当初は無償期間が6月末まででしたが、7月末 -> 夏いっぱいと期間が延長されています。 ※「Lightbend Academy」の受講については、こちらのスライド「Lightbend Academyオンライントレーニングを受けてみた」もご参照ください。 この記事では「Lightbend Academy」を受講して学んだ、リアクティブな性質を備えたマイクロサービスを設計・開発するために知っておきたい知識や理論 を、私なりに整理・再編してご紹介したいと思いま

    リアクティブマイクロサービス入門(1/2)- 概念編 - Qiita
  • Webサービスによくある各機能の仕様とセキュリティ観点(ユーザ登録機能) - Qiita

    この記事の目的 課題: Webサービスの各機能の仕様に関するセキュリティ情報があまりない Webサービスを設計するにあたり、よくある機能というのが存在するかと思います。 ユーザ登録 ログイン・ログアウト パスワード復旧 URLで共有 SNSログイン お気に入り登録 いいねボタン マイページ 通知 等・・・ これらに関して、自分の認識をまとめておきたい・意見をもらってブラッシュアップしたいと思い、記事を書きます。 大きい記事たくさん書くの大変なので、機能ごとに書こうかな・・・と思ってますが一つを育てていくかもしれないです。 前書いた記事が個人的には好評だったことも受けて、書いています。 ユーザ登録機能の仕様とセキュリティ toC向けサービスならかなりの割合で存在する機能です。よくある仕様パターンについて考えてみます。 この機能でユーザから取得するもの 認証情報(ID/パスワード) 連絡手段

    Webサービスによくある各機能の仕様とセキュリティ観点(ユーザ登録機能) - Qiita
  • メインフレームの異常処理 - Qiita

    はじめに この記事では、メインフレームでは異常時の処理でどのようなことをやっているのか、また、Linuxの異常処理との違いなどについて話してみようと思います。 この記事を書くに至った直接的なきっかけは、とある人からリクエストがあったからです。が、日ごろからメインフレームの異常処理の考え方については、PCサーバーやクラウドによるシステムがメジャーになった現代であっても、参考になることは多いと感じていてはいました。 筆者は今でこそLinux Kernel周りの仕事をしていますが、20年ぐらい前のころはメインフレームのOS開発部隊に配属されていて、メインフレームのとあるコプロセッサのドライバを書いたりしていました。この際、その異常処理における考え方を体験する機会が多々あり、当時のその経験が20年後の現在でも大いに役にたっていると感じていたからです。 そもそもメインフレームは、これまで長年にわたっ

    メインフレームの異常処理 - Qiita
  • Javaのテストにおけるモダンなベストプラクティス - Qiita

    記事はModern Best Practices for Testing in Java の日語訳です。元記事の著者から許可を得て翻訳、公開しています。 翻訳は不慣れなので変なところもあると思いますが、ご容赦ください。 なお、はてなブログにも同じ記事を投稿しています。 https://dhirabayashi.hatenablog.com/entry/2020/04/21/190009 メンテナンスしやすくて読みやすいテストコードは良いテストカバレッジを確立するために重要で、それにより何かを壊すことを恐れずに新機能の実装やリファクタリングが可能になります。この記事には、私がJavaでユニットテストや統合テストを長年に渡って書いて得られた多くのベストプラクティスが含まれています。それにはJUnit5やAssertJ、Testcontainers、Kotlinといったモダンな技術も含みます

    Javaのテストにおけるモダンなベストプラクティス - Qiita
  • Dockerコンテナ内からホストへ`localhost` でアクセスしてみる - Qiita

    のっぴきならぬ事情でDockerコンテナ内からホストlocalhost でアクセスする必要なときに役立ちそうなのでメモ。 Dockerコンテナ内からホストへアクセスするには こちらの記事が参考になりました。 --add-host オプションを利用すればなんとかなりそうです。 Dockerのコンテナの中からホストOS上のプロセスと通信する方法 - Qiita https://qiita.com/Iju/items/badde64d530e6bade382 localhost じゃなくて良いのなら host.docker.internal というDNS名が用意されているので、それを利用すればよさそうです。 ドキュメントによるとMac/Windowsで利用できそうです。 Networking features in Docker Desktop for Windows | Docker Doc

    Dockerコンテナ内からホストへ`localhost` でアクセスしてみる - Qiita
  • Java 14新機能まとめ - Qiita

    Java 14が2020/3/17にリリースされました。 Java SE 14 Platform JSR 389 ダウンロード OpenJDKサイトからダウンロードできます。 https://jdk.java.net/14/ MacLinuxでのインストールにはSDKMAN!をお勧めします Oracle OpenJDK以外に無償で商用利用できるディストリビューションとしては、次のようなものがあります。 AdoptOpenJDK Azul Zulu Community Liberica JDK LTSではないのでAmazon Correttoではリリースされないようです。 アップデートは4月に14.0.1が、7月に14.0.2がリリースされることになります。 Oracle JDKは開発用途には利用できますが、商用利用にはJava SE Subscriptionを購入する必要があります。 J

    Java 14新機能まとめ - Qiita
    etakaha
    etakaha 2020/02/25
  • EnvoyでWebアプリのセキュリティ周りの関心事を分離する - Qiita

    2023/03/30追記)Envoyの設定項目の変更により記事のそのままの通りでは動作しなくなっていますので注意してください。 以前からEnvoyに興味があって検証したりしています(サーキットブレーカーの効用を検証, その2)。 今回、Envoyセキュリティ周りの関心事を分離できないか試してみました(サンプル実装)。 背景 フレームワークを使わずにWeb APIを実装すると下記のようになるかと思います。 app.get('/api/item/:id', (req, res) => { // ユーザー認証: AuthorizationヘッダーのJWTトークンを検証&Subjectを特定 const subject = authenticateSubject(req.headers) // 権限チェック if (checkPermission(subject)) { ... // API

    EnvoyでWebアプリのセキュリティ周りの関心事を分離する - Qiita
  • Java11からSSL通信のエラーが発生しやすくなった事への考察と対処 - Qiita

    2020/03/13 追記 まだ結構みてくれているので、対応状況を追記します。 https://github.com/apache/httpcomponents-client/pull/178 上記で、対応されています。 https://github.com/apache/httpcomponents-client/blob/master/httpclient5/src/main/java/org/apache/hc/client5/http/impl/DefaultHttpRequestRetryStrategy.java#L123-L135 5.0を使えば解決はしそうです。まだRC版しか提供はされていません。 はじめに Java8+Spring Boot 1.5.Xの頃は、99.9999999%以上で通信が成功していたのに、Java11 + Spring Boot 2.1.Xにしてから

    Java11からSSL通信のエラーが発生しやすくなった事への考察と対処 - Qiita
    etakaha
    etakaha 2020/02/05
  • 【SRE Next 2020】発表資料まとめ - Qiita

    Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up

    【SRE Next 2020】発表資料まとめ - Qiita
  • 令和時代に「Spring入門」「Spring徹底入門」を読むとき気をつけるべきN個のこと - Qiita

    この記事について 事ある度に書いたり言ったりしている通り、2020年を迎えようとしている現在でも、信頼できるSpring関連書籍は下記の2冊しかありません。 Spring徹底入門 改訂新版Spring入門 2冊(以下「書籍」)とも超良書なのですが、どちらもリリースされたのが2016年で、対応しているSpringのバージョンが4.2と古くなっています。 2019年末時点での最新版はSpring 5.2です。この記事では、上記書籍を令和の今読む際、特に気をつけるべき点をいくつか紹介していきます。 4.x->5.xの差分すべてについては、GitHubのWikiを確認してください。 JDKは8以上を使うべし Spring 5.0以降から、JDKのベースラインが8になりました(Spring 4はJDK 6ベース)。今からSpringを使おうと言う人が、JDK 6とか7を使おうとはしないと思いますが・

    令和時代に「Spring入門」「Spring徹底入門」を読むとき気をつけるべきN個のこと - Qiita
  • Javaバージョン別の改元(新元号)対応まとめ - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに 改元が2019年5月1日、新元号が「令和」と4月1日に発表されました。新元号の発表が1ヵ月前の4月1日に予定されています (4/1見直し) 関連する記事は「Javaで新元号に対応する」などがありますが、Java SE 8(以下、単にJava 8のように表記)からのDate and Time APIに対応していなかったり、それ以外のブログなどでも古い情報が多いため、改めてなるべく網羅的かつ実践的となるよう、まとめてみることにしました。 ※記事は改元対応が完了するであろう2019年5月くらいまでは随時更新する予定です。 誤りや補

    Javaバージョン別の改元(新元号)対応まとめ - Qiita
    etakaha
    etakaha 2019/11/19
  • OpenJDKで使えるパフォーマンス分析と障害診断ツール - Qiita

    Oracle JDKを含むOpenJDKディストリビューション(以下、JavaまたはJDK)にはJFRを筆頭にさまざまな分析ツール/仕組みがあります。 JDK7からJDK12にかけてトレンドが変わった部分もあるので、少しサマったメモを書きます。 メトリクス取得のための仕組み Javaにはパフォーマンスメトリクスを取得するための方法がいくつかあります。代表的なのは下記の3つでしょう。 JMX ログ JPLIS(javaagent) JMX Java Management Extensions(JMX)はJavaのリソース監視および管理のためのプロトコルです。簡単にいえばJava版のSNMPです。 JSR-174としてJava 1.5より取り込まれています。 Managed Bean(MBean)を利用してCPUやメモリの情報を取得したり、特定のイベント(例えば強制GC)とかを実行することも可

    OpenJDKで使えるパフォーマンス分析と障害診断ツール - Qiita
    etakaha
    etakaha 2019/11/08