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

  • Dependency Management Plugin 使い方メモ - Qiita

    Dependency Management Plugin とは Spring Project で開発されている(と表現していい?) Gradle のプラグイン。 Maven の BOM と同等の仕組みを Gradle でも使えるようにするためのもの。 BOM の説明は Gradle で BOM を使いたいときには Spring チームの出している Dependency management plugin を使うのがよさそう - なにか作る などを参照。 もともと Spring Boot 1.x の頃は Spring Boot プラグインの一部だったが、 Spring Boot が 2.x になったときに独立したプラグインとして分離された。 + なので、 Spring Boot とは関係なく利用できる(でも、実際一番お世話になるのは Spring Boot を使うときだと思う)。 環境 Gr

    Dependency Management Plugin 使い方メモ - Qiita
  • AtCoderのレート計算式 - Qiita

    この記事はAtCoder公式が出しているレート計算式の説明PDFの内容を解説しようと試みるものである。 AtCoder公式によるレート計算式の説明はPDF3ページに収まる非常に簡潔なものなのだが、その分背景知識や式の設計意図が大幅に省略されていて、原文を読むだけでは理解に悩む箇所も少なくない。 そこで、省略されている箇所をAtCoder公式の発言や私の予想で補って、できるだけわかりやすく解説しようとするのがこの記事の目的である。 この記事の目的上、この記事はAtCoder公式による説明を正確に理解するには全く向いていない。 私の予想が混じっているからである。 私の予想の部分はできる限りそうだと明示するようにするが、信頼できるソースを求めるのであれば原文を読むようにしてほしい。 また、私の数学力が足りていないために、式の設計意図を私が勝手に予想することすらできなかった箇所もある。 その部分は

    AtCoderのレート計算式 - Qiita
  • アルゴリズムの世界地図 - Qiita

    0. アルゴリズムとは? まず、アルゴリズムとは何かを説明します。(0 節の説明はスライド「50 分で学ぶアルゴリズム」 の説明を参考にして書きました) さて、次の問題を考えてみましょう。 問題: 1 + 2 + 3 + … + 100 の値を計算してください。 単純な方法として、式の通りに 1 つずつ足していく方法が考えられます。すると、以下の図のように答えが計算されることになります。 これで答え 5050 が正しく求まりました。これはれっきとした アルゴリズム であり、この問題を 99 回の足し算 で解いています。しかし、計算回数が多く、計算に時間がかかるのではないかと思った方もいると思います。 ここで、方法を変えて、「1 + 100」「2 + 99」「3 + 98」…「50 + 51」の合計を求めることで、1 + 2 + 3 + … + 100 の値を計算してみましょう。 50 個の

    アルゴリズムの世界地図 - Qiita
  • JavaScriptの数値型完全理解 - Qiita

    数値というのはプログラミングにおいて極めて基的な対象です。ほとんどのプログラミング言語は何らかの形で数値の操作を行うことができ、もちろんJavaScriptにおいても例外ではありません。 プログラミングにおける数値の特徴的な点は、往々にしてその性質に応じた複数の型1が与えられている点です。まず、数値は整数か小数かによって分類されます。さらに、値を表すのに使われるビット数、また整数に関しては符号ありか符号なしかという分類ができます。例えば、Rustという言語ではこれらの分類が分かりやすく表れています2。Rustにおける数値の型はi32, i64, u32, u64, f32, f64などがあり、見ただけでどのような特徴を持つ数値なのかが分かりやすくなっています。iというのは符号あり整数、uというのは符号なし整数、fは小数で、その後の数字がビット数ですね。 では、JavaScriptにおいて

    JavaScriptの数値型完全理解 - Qiita
  • GCP Cloud Logging で使える特殊フィールド - Qiita

    特殊フィールドとは Cloud Logging で予約されている jsonPayload 内のフィールド名。 Cloud Logging の UI に反映され見やすくなったり、検索しやすくなったりする。 (クライアントライブラリを利用していないアプリケーションのログも一部のみでも対応することで便利になるかもしれない) また逆に意図せず利用しないように気をつける必要がある。 構造化ログについては GCP Cloud Logging で構造化ログを扱う を参照。 一覧 全体については 公式ドキュメント を参照。 便利そうなものをいくつか抜粋して紹介。 severity ログの重要度 ログフィールドエクスプローラから検索できるようになる。 何も設定していない場合は default 等になっているはずなので、 ログレベルに応じたアイコン等もつき見やすくなる。 利用できる重要度については LogSe

    GCP Cloud Logging で使える特殊フィールド - Qiita
  • 実装クリーンアーキテクチャ

    最近何かと騒がしいクリーンアーキテクチャですが、丁度プロダクトで採用したところだったので折角なので情報共有ということで Qiita の初記事にしてみようと思います。 こちらの記事は GUI や CUI のアプリケーションを対象にしています。 Java コードの記事リンク:https://nrslib.com/clean-architecture-with-java/?preview_id=1263&preview_nonce=542ba7b70f&_thumbnail_id=1293&preview=true その他解説もしています。もしよろしければチャンネル登録をお願いいたします。 より実践的なコード(WEBアプリケーション): https://github.com/nrslib/itddd/tree/master/CleanLike YouTube での解説(WEBアプリケーション):

    実装クリーンアーキテクチャ
  • TypeScriptの型演習 - Qiita

    この記事は、TypeScriptの型を使いこなすための演習として、TypeScriptの型に関する練習問題を提供する記事です。解いて自分のTypeScript力を確かめてみましょう。 問題のレベルは、筆者の既存記事「TypeScriptの型入門」「TypeScriptの型初級」を完全に理解した人なら全部解けるという想定で作られています。記事を読んでいない人が腕試しに解いてみるのも問題ありません。また、記事を読んだけど全部は理解していないという場合でもご安心ください。解ける問題はありますから、ぜひ挑戦してみましょう。 問題は20問あり、4段階の難易度別に分かれています。同じ難易度帯の問題は思いついた順で並んでいるので、後のほうが難しいわけではありません。問題は執筆時点の最新版のTypeScriptTypeScript 3.3.3333)で--strictオプションありの状態で動作を確認して

    TypeScriptの型演習 - Qiita
  • TypeScriptの型初級 - Qiita

    この記事は「TypeScriptの型入門」の続編です。入門の続編ということなので初級というタイトルにしてみました。TypeScriptの型よくわからんという方は先に入門から読むことをおすすめします。入門レベルのTypeScriptくらい分かるよという方は読まなくても大丈夫です。 TypeScriptの型入門 さて、前回の記事ではTypeScriptの型を一通り紹介しました。この記事ではその続編として、実用上必要になるTypeScriptの型の挙動を理解したり、標準ライブラリに存在する型の使い方を理解することを目標にします。前回に引き続き、あくまでTypeScriptの型に関する話ですから、JavaScriptの言語機能とか、TypeScriptの構文とかの話はしません。悪しからずご了承ください。 最終更新: 2019-03-16 (TypeScript 3.4に対応しました) union型

    TypeScriptの型初級 - Qiita
  • TypeScriptの型入門 - Qiita

    TypeScriptは型がついたJavaScriptです。プログラミングにおいて型があることの恩恵は大きく、近頃AltJSの代表格として人気を集めています。TypeScriptはもともと型のないJavaScriptで書かれるコードに型を付けることを使命としていることもあり、たまに変な型が追加されます。例えばTypeScript2.8で追加されたconditional typesはずいぶん注目を集めました。これによってTypeScriptの型システムの表現力が広がりましたが、一方でTypeScriptを書いている人の中には、よく分からない型が増えてついて行けない、一部の人たちが長くてよく分からない型定義を書いて喜んでいるだけと思っている方もいるのではないでしょうか。実際、健全にJavaScriptを書いていれば、自分でそのような変な型を書くことはあまり多くありません。 そこで、この記事ではT

    TypeScriptの型入門 - Qiita
  • 敗北者のTypeScript - Qiita

    TypeScriptJavaScriptに静的型を導入したプログラミング言語で、登場から現在までその人気を増し続けています。 動的型付き言語であるJavaScriptに静的型の安全性(コンパイル時にバグ・間違いを発見することができる能力)を与えることで、TypeScriptJavaScriptによる開発の効率を上げてくれます。 裏にJavaScriptがあるという特性もあり、TypeScriptは「部分的に静的型チェックをする」というような挙動をサポートしています1。詳しくは後述しますが、これによりJavaScriptからTypeScriptへの移行が可能となっています。TypeScriptは@ts-check(あるいは@ts-ignore)などを通じてこのようなユースケースも手厚くサポートしています。 このことの裏返しとして、TypeScriptを利用するときは注意すべき点があります

    敗北者のTypeScript - Qiita
  • Node.js: CPU負荷で3秒かかっていた処理を「Worker Threads」で1秒に時短する - Qiita

    稿では、Node.jsのWorker Threadsとその基的な使い方について説明します。 稿で知れること Worker Threadsの概要 Worker Threadsとは何か? それが解決してくれる問題は何か? worker_threadsモジュールの基的な使い方 スレッド起動時にデータを渡すにはどうしたらいいか? 3秒かかる処理を、並列処理で1秒に短縮する方法。 Worker Threadsとは? CPUがボトルネックになる処理を、別スレッドに負荷分散し、効率的に処理する仕組み。 マルチプロセスではなく、シングルプロセス+マルチスレッドのいわゆる「物のスレッド」です。 Worker Threadsが解決する問題 Node.jsはシングルプロセス、シングルスレッド。 シングルプロセス、シングルスレッドは、シンプルさという利点がある。 一方で、CPUに高い負荷がかかる処理は、

    Node.js: CPU負荷で3秒かかっていた処理を「Worker Threads」で1秒に時短する - Qiita
  • WebSocketの次の技術!?WebTransportについての解説とチュートリアル - Qiita

    概要 こんにちは。NTTコミュニケーションズのyuki uchidaです。普段はSkyWayというWebRTCプラットフォームの開発やWebRTCリサーチャー(見習い)をしています。 この記事は NTTコミュニケーションズ Advent Calendar 2020 の3日目の記事です。 昨日はMasaki Shimuraさんの記事、 「Threat Intelligenceの活用を促進するMISPの紹介」でした。 この記事は、WebSocketの次の技術ではないかと噂される、WebTransportの概要や双方向通信の歴史をまとめつつ、WebTransportのdatagram形式でデータを送信してみるチュートリアル記事です。 対象読者 WebTransportっていう技術を初めて聞いた人 WebSocketを使ったことがあり、不満がある人 双方向通信・リアルタイム通信について興味がある人

    WebSocketの次の技術!?WebTransportについての解説とチュートリアル - Qiita
  • Linuxにおける非同期IOの実装について - Qiita

    はじめに Linux 5.1に新しい非同期IOの仕組みとしてio_uringがマージされてから既に1年以上経ってしまいましたが、これまでのLinuxにおける非同期IOの使い方や実装を見ていきながら、io_uringが登場した背景やLinux AIO(libaio)の問題点をどのように解決しているのかについてまとめました。アプリケーションの書き方については大まかにしか説明していないので、それについてはmanページや別の記事を参照してください。 またIOという範囲が広いのですが、ここではブロックデバイス上のファイルシステムにおける通常ファイルに対するread/writeについて考えています(ネットワークは考えていないのでepollの話はないです)。 前提知識 簡単に前提となる話をおさらいします。 同期IOと非同期IO IOを行うシステムコールとしてすぐに思いつくのはread(2)/write(

    Linuxにおける非同期IOの実装について - Qiita
  • M1 Macの開発環境 - Qiita

    MacBook Pro (M1)でのメモです。インストールできるかどうか状況確認メモです。 自分がよく使うものを中心に。なるべくARMネイティブになるように。もしプライマリーで提供されているインストール手段(.dmg利用など)でARM対応が済んでいればそれを紹介しますが、もしそれで対応していない場合にはMacPortsやソースビルドなどの結果も合わせて紹介します。 PowerPC->x86->x86_64とユニバーサルバイナリを挟んで対応してきたMacPortsはこういう過渡期に強いです。 なお、ここで紹介するバージョンは最新版から古い可能性がありますが、「M1サポートが追加された前後のバージョン」を明記するのを目標にしていますので、これより新しければ問題ないと見てもらえればと思います。 編集リクエストウェルカムです。 現在の状況 IDE/エディタ Eclipseはあまりきちんと試していま

    M1 Macの開発環境 - Qiita
  • もしあなたが急にAndroidアプリを業務で作るはめになった場合の選択肢(2021年初頭版) - Qiita

    記事はAndroid Advent Calendar 2020の2020/12/01分です。 初っ端ということなので、2020年末と2021年頭でのAndroidエンジニアとして初めて業務でやる場合に抑えておいたほうが良い最低限の部分を書いていこうと思います。(ツッコミ待ちです) 対象 2021年3月ぐらいまでに !!業務!! でAndroidアプリを作らされる事になった可愛そうな人が居たとします この人は手続き型言語でオブジェクト指向プログラミングができる知識があり、Androidアプリもなんとなく趣味で作ったこともあるぐらいのレベル感です(なので上長からいきなりお前Android担当なと言われた) 最低限のAndroidアプリの作成の知識はあるものとします(画面の表示にはActivityがいるよとかは書かない) ゲームは対象外です 業務でAndroidアプリを作ることを想定しています

    もしあなたが急にAndroidアプリを業務で作るはめになった場合の選択肢(2021年初頭版) - Qiita
  • 知ると便利なヒアドキュメント - Qiita

    よく、コマンドを実行する時に引数としてファイルを指定して、その中に書かれた物を使うといった物がある。例えばsftpのコマンド。更にはsshのキーファイルやpgpass、rsyncのエクスクルードなどなど。そういうコマンドをシェルから呼ぶ時にヒアドキュメントを使うと綺麗にかけたりすることがあります。 複数行に渡るファイルをシェルから作るときもechoを連発する必要もなくなります。 ヒアドキュメントとは

    知ると便利なヒアドキュメント - Qiita
  • 【Elasticsearch社内勉強会】Lucene IndexSearcher を読む - Qiita

    これは何? 最近、社内で Elasticsearch/Lucene 勉強会を毎週ガヤガヤとやっています。 今週の私の担当は、Luceneの検索メソッド IndexSearcher.search の処理の流れを追っていきます。 準備 まずは、手元でデバッグするために、Luceneインデックスの作成と簡単な動作確認をしておきます。 インデックスの作成 インデックスの作成には、 IndexWriter を用いますが、詳細は、 @po3rin さんの ブログ に譲ります。 Directory directory = FSDirectory.open(Paths.get("./data/index")); StandardAnalyzer analyzer = new StandardAnalyzer(); IndexWriterConfig config = new IndexWriterConf

    【Elasticsearch社内勉強会】Lucene IndexSearcher を読む - Qiita
  • TypeScript で型定義ファイル( d.ts )がないときの対処法 - Qiita

    Could not find a declaration file for module 'foobar'. Try npm install @types/foobar if it exists or add a new declaration (.d.ts) file containing declare module 'foobar'; とコンパイルエラーが発生します。 大まかに分けると3対処法があります。 @types からインストールする 型定義ファイル( d.ts )を自作する require でモジュール読み込み 1. @types からインストールする 型定義ファイルが提供されているか試します。 TypeScript コンパイラの指示通り @types からのインストールを試します。 無事インストール出来たら解決です。 もし型定義が提供されておらず、 error An une

    TypeScript で型定義ファイル( d.ts )がないときの対処法 - Qiita
  • async関数においてtry/catchではなくawait/catchパターンを活用する - Qiita

    async/awaitのエラーハンドリングはtry/catchで行うのが一般的です。 しかし、これは複数のawaitを使い、それぞれ別のエラーハンドリングを行いたい場合など、冗長になりがちです。 そして、特に気に入らないのが、tryのスコープ外で非同期関数の戻り値を使う場合、letを使う必要があるところです。

    async関数においてtry/catchではなくawait/catchパターンを活用する - Qiita
  • Elasticsearchにおける「32GBメモリの壁」の境界線を調べる - Qiita

    はじめに Elasticsearchでは以前からJVMヒープメモリサイズの設定における「32GBの壁」の存在が語られてきました。 デフォルト設定はXms,Xmxともに1gですが、ノードに搭載されるメモリ量に応じてこのパラメータは適宜サイジングすることが必要です。 Elasticsearch 2.xの時代にはすでにElasticsearch Definitive Guideにて、JVMのヒープサイズの設定で32GBを超えないことが性能上のTipsとして言及されていました。 現在の公式documentにも、このサイズは「約」32GBを超えないこととして推奨がされています。 記事ではある環境において、この正確なしきい値となるメモリサイズを調べる方法をまとめます。 なお、この内容はOSのバージョンやJDKのバージョンによって異なるため、お使いの環境における正確なサイズは下記の手順を実際に実行して

    Elasticsearchにおける「32GBメモリの壁」の境界線を調べる - Qiita