タグ

ブックマーク / qiita.com (1,553)

  • 引数の型を何でも List にしちゃう奴にそろそろ一言いっておくか - Qiita

    この記事は C# その2 Advent Calendar 2018 の第一日の記事である。 はじめに この記事では、主にエンタープライズアプリケーション(SI、企業向けの業務システムやパッケージ製品)の開発に於いて、新規開発ではなく修正や拡張を行うようなシーンを想定して、無駄な工数をなるべく削減すべく自分なりに考えて実践しているベストプラクティスを書いている。 新規開発の場合でも、将来の拡張や修正が見込まれるはずなので、考慮すべき事は同じだ。 競技プログラミングや、組み込み開発の場合でも基的な考え方は適用可能だが、メモリ効率やパフォーマンスを考慮する必要もあるので、あえて配列を使ったり、逸脱するようなケースもあるだろう。 対象とする読者層は、C#プログラミング歴1年以上、SIer やユーザー企業に所属(もしくは常駐)し、特に複数人チームでの開発に携わる若手プログラマ、初級から中級へのステ

    引数の型を何でも List にしちゃう奴にそろそろ一言いっておくか - Qiita
  • C#クイズとその解説 - Qiita

    元ネタはEric Lippertのブログです。コードは少し改変していますが、言っていることは同じです。 A dynamic definite assignment puzzle A dynamic definite assignment puzzle, part 2 class Program { static void Main() { object obj = GetObject(); // ★ string str; if ((obj != null) && ((str = GetString()) != null)) // ◆ { System.Console.WriteLine(obj + str); // ▲ } } static object GetObject() { return "hello"; } static string GetString() { return

    C#クイズとその解説 - Qiita
  • [C#]async/awaitとUniRx.Asyncの実装を追う - Qiita

    ついにUnityでもIncremental Compilerを有効にすることでasync/awaitが使用することができるようになりました。 これは大変うれしいことではありますが、async/awaitが何をやっているかわからないと実行速度や効率の面で不安になるかもしれません。 そこで今回はasync/awaitが裏で何をやっているのか、async/awaitをUnityで便利に使用することができるUniRx.Asyncが裏で何をやっているのかについて解説していきます。 async/awaitの使い方や詳細についてはすでに色々記事があるとは思うのでそちらも参考にしてください。 async/awaitの実装について asyc/awaitのおさらい async/awaitを使用すると以下のような書き方ができます。 async Task Hoge() { Console.WriteLine("1

    [C#]async/awaitとUniRx.Asyncの実装を追う - Qiita
  • 【C#】メソッドのオーバライド、返値型を元の型の派生型にできない。【covariant return types】 - Qiita

    【C#】メソッドのオーバライド、返値型を元の型の派生型にできない。【covariant return types】C#.NET.NETFramework 追記 : C# 9.0では、covariant return typesが追加されるようです。 2018年現在のC#(C# 7.3とかそれより前)では、オーバライド元のメソッドとオーバライドしたメソッドで、返値型は同じ型にしないといけない。そのため、メソッドをオーバーライドした時、返値型を派生型にできない。 ちなみに、これJavaだとできる。「共変戻り値型って知ってますか?(スライド)」 どう困るのか 「そんなん別にできなくてもよくない?」 「え、できなかったんだ?でも、気づかなかったんだから、大した問題じゃないんじゃ?」 「知ってた。別に困らなくないか?」 そう思う人も多いかもしれないけれど、これができないから次みたいな例で困る・・・。

    【C#】メソッドのオーバライド、返値型を元の型の派生型にできない。【covariant return types】 - Qiita
  • AssemblyLoadContext - Qiita

    この記事は、C# その2 Advent Calendar 2018 の9日目の記事です。 AssemblyLoadContextとは プラグインなどで他のアセンブリを動的に読み込む際そのままでは読み込めないケースがあります。 具体的には ホストするアプリケーションと同じライブラリに依存しているがバージョンが違う static変数をホストと分ける必要がある .NET FrameworkではAppDomainを分けて別々にロードすることで解決できました。 しかし.Net Coreではエントリポイントからの実行における複数のAppDomainがサポートされていません 1 。 そこで.Net CoreではAssemblyLoadContextが用意されています。 AssemblyLoadContextが別であれば別アセンブリとして認識されるわけです。 デフォルト空間へのロード まずは起動時にランタ

    AssemblyLoadContext - Qiita
  • 25行でC#のオブジェクト指向がわかった気になる - Qiita

    この物語はいつもLinuxでC書いてるプログラマが急にC#の案件を振られ、勉強のためいろいろコードを書いていたら、なんとなくオブジェクト指向がわかった気になる過程を淡々と描くものです。間違ってるかもしれないので過度な期待はしないでください。 前提知識 端々にCとの比較が出てきますが、Cの入門書をちょっとでもかじっていれば問題ないと思います。 注意!! これはあくまでも自分がオブジェクト指向という考え方を勉強し、納得する過程をなぞったものであり、厳密な定義とは異なる解釈をしている場合があります。 まずは簡単な文法を確認 オブジェクト指向言語触るの初めて(´・ω・`) クラス

    25行でC#のオブジェクト指向がわかった気になる - Qiita
  • C#リフレクションTIPS 55連発 - Qiita

    タイトルの通り、C#のリフレクションのTIPS集です。 これから示すコードは、以下のusingディレクティブが前提のコードとなってます。 using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Reflection; 普段はvarキーワードをよく使ってますが、ここでは変数の型がわかるようにvarキーワードの利用はできるだけ控えています。 それと、いくつかのコードはdynamic使ったほうが簡単に書ける場合もありますが、あくまでもリフレクションのサンプルということでご容赦を。 1. 型名から型情報を得る

    C#リフレクションTIPS 55連発 - Qiita
  • 【Java11】javacでコンパイルせずにJavaを実行してみた - Qiita

    はじめに 投稿はJava Advent Calendar 2018 の25日目の記事です。 初心者ではありますが、「参加することに意義がある!」の精神で、とりあえず空いていた枠に登録してしまいました。 最終日にも関わらず、薄い内容で申し訳ない気持ちもありますが初心者らしく、いざHelloWorld! ※2018/12/26更新:サ〇タ業務の都合上、書きかけで投稿してしまったため、一部内容を追加。 コンパイルせずにjavaを実行!? Java11から、javacでコンパイルせずにjavaを実行できるという噂を聞きつけたため、HelloWorldしてみる。 ただし、ソースファイルが1つで完結する場合に限るなどの制限があるようなので、その辺も試してみる。 環境 OS:Windows 10 JavaOracle Open JDK 11 コンソール:コマンドプロンプト まずは普通のHelloWo

    【Java11】javacでコンパイルせずにJavaを実行してみた - Qiita
  • 2018年の年末にJava入門環境を整えてみる - Qiita

    Javaを書こう! この記事では、Java Advent Calendar 2018 2日目として、Javaを使ったことのないプログラマー向けに、今どきはこれぐらいから始めたほうがいいよねと言えるJava開発環境を紹介するとともに、「Javaが使える」と思えるレベルになるまでコンパイラや静的解析ツールが叱ってくれるような設定をしてみたいと思います。 プログラミング自体が初めてでJavaを使ってみてるという人にはこの記事はあまりお勧めしません。他のプログラミング言語が使えて、Javaもなんとなくはわかるんだけど、って人向けです。 また、経験者におかれましては、俺の環境の方がいい、という想いは皆さんあると思いますので、ぜひご紹介ください。なお、2018年末の記事なわけですが、私の手元ではここ数年はあまり基構成が変わってないです。そろそろFacebook InferとかChecker Fram

    2018年の年末にJava入門環境を整えてみる - Qiita
  • Arrays.asList(T... a) は、なぜ add や remove ができないのか? - Qiita

    (この記事は 地平線に行く とのマルチポストです) Arrays.asList(T... a) というメソッドについてググると、「このメソッドで返ってくる List は、add や remove ができないので注意しましょう」ということが良く書かれています。 でも、「なぜできないのか?」という点については書かれていないことが多いので、理由を説明します。 一言でまとめると「配列を List として扱えるようにラップするためのものだから」です。 (「変換するもの」ではないです) そもそも、どう使うもの? 配列を List<T> として扱いたいときに使います。 例えば、シャッフルするのに Collections.shuffle​(List<?> list) という引数に List を取るメソッドはあるのですが、引数に配列を取るメソッドがありません。 そういうときに、 Collections.sh

    Arrays.asList(T... a) は、なぜ add や remove ができないのか? - Qiita
  • Doma2 でログ出力を制御する - Qiita

    4日目担当の null です。 デフォルトだと、 INFO レベルでいっぱいログが出るので、そのへんを制御する。 環境 Java openjdk 11.0.1 2018-10-16 Doma2 2.19.3 doma-spring-boot 1.1.1 Spring Boot 2.1.1 ソース(一部) buildscript { ext { springBootVersion = '2.1.1.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin: 'java' apply plugin: 'org.springframewo

    Doma2 でログ出力を制御する - Qiita
  • Graal VM の native image を使って Java で爆速 Lamdba の夢を見る - Qiita

    はじめに 前日は mike_neck さんの AWS Lambda のカスタムランタイムにて Java のカスタムランタイムで関数を動かす でした。 偶然にも(?)今日も引き続き、 Lambda Custom Runtime で Java を動かす話です。 AWS Lambda 提供する言語の一つに Java があります。 Java はホットスタートの処理速度は速いもの、コールドスタートでは 5 から 10 秒ほど要することがあります。 また、メモリ消費量も多く LambdaJava の組み合わせは速度重視の場面では使われていないように思います。 2018年の re:invent で、 AWS Lambda の Custom Runtime が発表されました。 お作法に従いさえすればどのような言語でも Lambda として実行可能になりました。 さらに近年 Java 界隈では新しい

    Graal VM の native image を使って Java で爆速 Lamdba の夢を見る - Qiita
  • いまふたたびのJDBC - Qiita

    Help us understand the problem. What is going on with this article?

    いまふたたびのJDBC - Qiita
  • 肥満な物語でDIを解説する - Qiita

    public class Hoge{ // フィールド(メンバー変数) Fuga piyo; // コンストラクター public Hoge(Fuga mogera) { // newは使わない。外部から注入してる。 this.piyo = mogera; } } ※コンストラクターで注入してるのはあくまで一例です。外部から注入するならセッターでもいいです。 ただ、これだけだとメリットがいまいちわかりません。ここからはストーリー形式で解説します。 第1話:肥満度判定会社に行ってみた 突然はじまるストーリー 俺って太ってるのかな?そうだ!肥満度判定会社に検査を依頼してみよう! 数時間後 ようこそ、肥満度判定会社へ。日はどのようなご用件でしょうか? 肥満度判定がしたいんです。 肥満度判定のお客様ですね。それでは、身長と体重を伺ってもよろしいでしょうか? えっと、身長は170cm、体重は70k

    肥満な物語でDIを解説する - Qiita
  • 絵で理解するリスト処理 - java8 stream / javaslang - - Qiita

    java8 で stream やってみたけど慣れねー」とか「ちょっと難しいことしようとするとできねー」ってのを良く聞くのでまとめてみるよ。 型さえ把握すれば8割方わかった様なもんなので、それを絵にしてみるよ。 ちなみに、記事は長いけど最初の[編 -って見出しの箇所まで読めば十分だ! やっぱ冷静に考えると長すぎるので、分割した。 [編 - java8 stream]: filter, map, reduce 基の3手を押さえよう。 reduceには馴染みがないかもしれないけど、Google が提唱したMapReduceモデルってのでmapとは一緒に語られるよ。-> wiki 以下の例題を使って見て行くよ。 /* * 以下の様なログがある * ラベル もしくは ラベル:millisec の形式で1行ずつ出力される * * millisec の総和を求めよ */ List<String>

    絵で理解するリスト処理 - java8 stream / javaslang - - Qiita
  • 3分で分かった気になれるJDK12 - Qiita

    Java Advent Calendar 2018 14日目の記事です。 JDK12が来年リリースされる予定なので、12の変更内容について一部紹介します。 Features JDK12に含まれるJEP(JDK Enhancement Proposal)は以下 2018/12/6時点 89: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental) 230: Microbenchmark Suite 325: Switch Expressions (Preview) 326: Raw String Literals (Preview)  ←JDK12からdropされるかも(2018/12/14更新) 334: JVM Constants API 340: One AArch64 Port, Not Two 341: Defau

    3分で分かった気になれるJDK12 - Qiita
  • 段階的に理解する Java 例外処理 - Qiita

    はじめに 例外処理の問題は Java コードレビューでの頻出指摘事項である。この記事で述べる通り、Java の例外処理において守るべき基的なルールはそれほど複雑ではない。だが、たとえ職務経歴上は経験年数の長い Java プログラマであっても、適切な例外処理を実装できないケースは残念ながらよく観測される。さらに経験年数が短い Java プログラマにおいては言わずもがなである。 なぜ不適切な例外処理が広くはびこっているのか。そこには大きく分けて三つの要因が考えられる。まず、Java 言語仕様において例外機構 (特に検査例外) に歴史的事情による混乱があり、プログラマに過度の自由が与えられていることである。次に、アプリケーションを開発するだけでなく実際に運用してみない限り、不適切な例外処理の弊害に気づけないことである。最後に、適切な例外処理を学ぶためのコンパクトにまとまった資料が世に存在しない

    段階的に理解する Java 例外処理 - Qiita
  • Jibを使用したCircleCI上でのテストフロー構築 - Qiita

    TL;DR Googleが公開しているJibの簡単な紹介 https://github.com/GoogleContainerTools/jib JibとCircleCIを使用し、ブラックボックステスト済みのDockerイメージをECR(Amazon EC2 Container Registry)にpushするまでのフローを構築します。 Jibとは DockerJavaアプリケーションをDockerコンテナ化するには、JavaのビルドはもちろんのことDockerfileの準備やDockerのインストール等の工程を踏むことになります。 Jibはそういった煩わしい工程をコマンド一つで全て行ってくれるOSSです。 MavenおよびGradleのプラグインとして公開されています。 ※今回はGradleのプラグインを使用します。 それだけではなく、Dockerのビルド設定を読み込み、変更のあったレ

    Jibを使用したCircleCI上でのテストフロー構築 - Qiita
  • Prestoの開発環境をdockerでローカルに作った話 - Qiita

    【2020/01/06 追記】 この記事を作成したタイミングではPrestoの公式Dockerイメージがなかったため、Dockerイメージを自作し、その手順を記事にまとめています。 PrestoのVersion312からは公式にDockerイメージがサポートされたようですので、今後環境を自作する際は公式Dockerイメージを利用することをオススメします。(@ebyhrさん 情報ありがとうございました!) はじめに 業ではビッグデータを扱うサービスの開発に携わっています。 自分の担当箇所ではPrestoというミドルウェアを利用しているのですが、Presto周りの機能をローカルで開発する環境が整っておらず、以下のような不満がありました。 ローカル開発用のPrestoがなく、開発中に気軽に動作確認できない 動作確認するためにはテスト環境に修正中のソースコードをデプロイする必要があり、デプロイす

    Prestoの開発環境をdockerでローカルに作った話 - Qiita
  • NVIDIA GPU が使える Docker イメージの作り方 - Qiita

    (Docker Advent Calendar に空きがあったので埋めてみた) [追記] Docker 19.03 以降はコンテナの起動方法が違うので以下を参照。 NVIDIA Docker って今どうなってるの? (19.11版) - Qiita [追記おわり] Docker コンテナ内から NVIDIA の GPU にアクセスするためには NVIDIA Docker を使えばいい、というのはもはや言うまでもないと思う。 $ docker run --runtime=nvidia --rm nvidia/cuda:9.1-runtime nvidia-smi +-----------------------------------------------------------------------------+ | NVIDIA-SMI 390.77 Driver Version:

    NVIDIA GPU が使える Docker イメージの作り方 - Qiita