タグ

Csharpとprogrammingに関するraimon49のブックマーク (120)

  • Windows標準だけでGUIを作成 ― PowerShell+.NET Framework

    はじめに Windows環境では、Visual Studioなど特別な開発環境を用意しなくても、標準搭載されている PowerShell 5.x と .NET Framework 4.x を使って簡単にGUIアプリケーションを作ることができる。 例えば、業務ツールにちょっとした入力フォームやボタンを追加したい場合、PowerShellでWinFormsやWPFを利用すれば数行のコードで実現可能。 さらに、同梱されている csc.exe(C#コンパイラ) を使えば、C#のコードを書く必要はあるが EXE化 することも可能。 記事では、 PowerShell + WinForms PowerShell + WPF C#をcsc.exeでコンパイル(WinForms版) C#をPowerShellでインプロセス実行(Add-Type) の順で、「Windows標準だけ」で完結するGUI作成方法

    Windows標準だけでGUIを作成 ― PowerShell+.NET Framework
  • 【C#】何故 C# を好むのか。~他の言語と比較しながら~ - ねののお庭。

    世の中には多くの C# に関する誤解が蔓延っています。 偏見にも満ちています。 そして技術的に正しい批判ではなく、根的に技術的に誤った批判ばかりで正直悲しい。 技術的に正しい形の批判なら「お、そうだな。そしてそれの解決策はですねぇ...(ニヤニヤ)」となるのですが...。 そして C# 界隈から一歩出ると、「え、C# で作ってるの!?なんで??」とか言われる事が非常に多い始末。 C# 大好きマンとしては非常に嘆かわしい。 嘆かわしい限りなので、ここでなぜ C# を私が好むか、そして何故ソフトウェアの開発に向いているかを語りたいと思います。そして誤解が解けたら嬉しい。ついでに C# を書きたいと思ってくれたら嬉しい。 想定読者 前書きという名の予防線 事前知識: C# と .NET C# はパフォーマンスの高い言語 C# はビルドも高速 C# はオープンソースかつクロスプラットフォーム 言

    【C#】何故 C# を好むのか。~他の言語と比較しながら~ - ねののお庭。
  • 初心者が本当に知りたかったC#入門以前

    この記事は「初心者だった時に知りたかったな…」っていう普通のC#入門だと教えてくれないことが書いてあります。 なので入門記事というより、C#初心者にはちょっと難しい内容もあります! C#の特徴的なところ C#は変化が早い💨 最近は毎年メジャーアップデート 2019: C# 8.0 2020: C# 9.0 2021: C# 10.0 2022: C# 11.0 2023: C# 12.0 2024: C# 13.0 新記法、新しい書き方がモリモリ入る しかも新しい書き方の方が便利で性能が良い(ことが多い) 少し前のC#を知ってる人からするともう別物 解説 C#は6.0までゆっくりな変化だったんですが… 7.0から様子が変わって8.0以降は毎年変わるようになりました。 ↓こちらのスライドの7ページから数枚が参考になります! あんまり変わらないバージョンもありますが、特に大きなところだと,

    初心者が本当に知りたかったC#入門以前
  • 9時間足すんだっけ引くんだっけ問題~あるいは、諸プログラミング言語はいかにタイムゾーンと向き合っているか - エムスリーテックブログ

    私は日付時刻の処理が大好きです。 タイムゾーンの問題でデータ抽出が9時間分漏れていたとか、朝9時の始業前のログが昨日付けになってしまっていたなんていう問題が起こると喜んじゃうタイプ。 そんな私にとって、各プログラミング言語が標準で持っている日付時刻型クラスにはそれぞれ思うところがあり、今日はちょっとその品評会をしてみたいと思います。 エムスリーエンジニアリンググループ、Unit1(製薬企業向けプラットフォームチーム)三浦(@[email protected]) [記事一覧 ]がお送りいたします、エムスリー Advent Calendar 2023の2日目です。 至高の日付時刻型を持つ言語、BigQuery SQL 不足はないが蛇足、Java 8 日付時刻で画竜点睛を欠いたC# C#よりややまし、Python 型は良い構成、なのに命名と処理関数で損しているPostgreSQL まとめ We ar

    9時間足すんだっけ引くんだっけ問題~あるいは、諸プログラミング言語はいかにタイムゾーンと向き合っているか - エムスリーテックブログ
  • 【C#】C# の async/await は実際にどうやって動いているか。 - ねののお庭。

    はじめに 登壇版 Taskの質 C# のイテレータ async/await Compiler Transform ExecutionContext builder.Start() の重要性 IAsyncStateMachine.MoveNext おわりに はじめに C#er は呼吸するように使っている async/await。 そんな async/await について、先日 Stephen Toub 氏 (.NET の中の人。中心人物の一人。) が How Async/Await Really Works in C# という非常に面白い記事を投稿していました。 この記事では Stephen 氏の記事をベースに、C# において async/await は実際どうやって動いてるの?というお話をしていきます。 以前に C#での非同期メソッドの分析。 という翻訳記事を書いたのですが、元になった記

    【C#】C# の async/await は実際にどうやって動いているか。 - ねののお庭。
  • constructorを日本語でなんというか?

    http://lise-sophia.net/kktm/Essay/xx-shi.htm このエッセイが面白かった。動詞に-erや-orをつけるような名詞は「◯◯子」「◯◯機」「◯◯器」などといった接尾辞がつけられる。特に抽象的な概念などの場合には「子」がつけられがち。例えばoperatorを「演算子」と呼んだりidentifierを「識別子」と呼んだりするように、と。 プログラミングの世界ではまさにそういう「抽象的な概念」であるが-erや-orがついた名詞というのはたくさんあるような気がする。どうなっているだろう? constructorについては、「構成子」という訳語があるかな、と思ったが、「構築子」という用語もあるようだ。どちらも現存するらしい(前者は例えばJIS規格のFortran、後者はJIS規格のC#で使われている)。さてFortranのことは全く詳しくないが、C#くらいモダン

    constructorを日本語でなんというか?
  • neue cc - async/awaitのキャンセル処理やタイムアウトを効率的に扱うためのパターン&プラクティス

    async/awaitの鬼門の一つとして、適切なキャンセル処理が挙げられます。別に基的にはそんな難しいことではなく、CancellationTokenSourceを作る、CanellationTokenを渡す、OperationCanceledExceptionをハンドリングする。というだけの話です。けれど、Tokenに手動でコールバックをRegisterしたときとか、渡す口が空いてないものに無理やりなんとかするときとか、タイムアウトに使った場合の始末とか、ちょっと気の利いた処理をしたいような場面もあり、そうした時にどうすれば良いのか悩むこともあります。 こういうのはパターンと対応さえ覚えてしまえばいい話でもあるので、今回はAlterNatsの実装時に直面したパターンから、「外部キャンセル・タイムアウト・大元のDispose」が複合された状況での処理の記述方法と、適切な例外処理、そして最

  • neue cc - .NET 6とAngleSharpによるC#でのスクレイピング技法

    C# Advent Calendar 2021の参加記事となっています。去年は2個エントリーしたあげく、1個すっぽかした(!)という有様だったので、今年は反省してちゃんと書きます。 スクレイピングに関しては10年前にC#でスクレイピング:HTMLパース(Linq to Html)のためのSGMLReader利用法という記事でSGMLReaderを使ったやり方を紹介していたのですが、10年前ですよ、10年前!さすがにもう古臭くて、現在ではもっとずっと効率的に簡単にできるようになってます。 今回メインで使うのはAngleSharpというライブラリです。AngleSharp自体は2015年ぐらいからもう既に定番ライブラリとして、日でも紹介記事が幾つかあります。が、いまいち踏み込んで書かれているものがない気がするので、今回はもう少しがっつりと紹介していきたいと思っています。それと直近Visual

  • (C#) async/await を理解する - ネコのために鐘は鳴る

    この記事は Qiita C# Advent Calendar 2021 の5日目の記事です。 はじめに C# で async/await が登場してからずいぶんと時間がたち、モダンな C# においてはほぼ必須となりました。Unity でも UniTask などのライブラリもあり、簡単に非同期処理が書けます。この記事では C# での非同期処理の歴史にも触れつつ async/await の動作原理について書きます。 Unity C# の話を書いた方が需要が高そうなので Unity および UniTask を前提にした説明とコードが多く出てきますが、async/await は C# の言語機能であるため、動作原理自体は .NET でも同じです。非 Unity の文脈では適宜読み替えてください。 また、詳細を完璧に説明するよりもわかりやすさを重視したため、一部正確さを欠いた説明をしています。ご了承

    (C#) async/await を理解する - ネコのために鐘は鳴る
  • 「DI使うとインタフェース地獄に陥るらしいから使いたくない」と言っていたA氏がインタフェースを使わずにDIで幸せになるまで - Qiita

    DIはインタフェース定義しなくても十分実用的だし、むしろそっちの方が質だよ、という話をします。C#や.NETを使っていますが、それに限らず普遍的な内容です。 インタフェースと実装に分けるとか無理。DIなど不要! 中堅社員のA氏は、**「DIっていちいち実装とインタフェース分けないとダメなんでしょ?。さすがにやってられんわ」**と言って頑なにDIを導入しようとしません。 DIはテスタビリティと併せて語られることが多かった為か、A氏は「注入するクラスは基的にインタフェース定義しましょう」という記事ばかりを読んでいたのです。 インタフェースと実装を分けるとは、例えば次のような事です。 services.AddScoped<IMessageStore, MessageStore>(); public interface IMessageStore { string GetMessage(str

    「DI使うとインタフェース地獄に陥るらしいから使いたくない」と言っていたA氏がインタフェースを使わずにDIで幸せになるまで - Qiita
  • neue cc - async decoratorパターンによるUnityWebRequestの拡張とUniTaskによる応用的設計例

    UniTask v2も2.0.30まで到達し、いい加減そろそろ安定したと言える頃合いです(ほんと!)。GitHub Star数も1000を超えて、準スタンダードとして安心して使ってもらえるレベルまで到達したと思うので、基盤部分から入れ込んで設計するとこんなことができますよ、という一例を出してみます。 UnityWebRequestはかなりプリミティブな代物で、そのまま使うよりかはある程度はアプリケーションに沿ったラッパーを被せることがほとんどなのではないかと思います。しかし、ライブラリ単体でアプリケーションの要求を全て満たそうとするとヘヴィになりすぎたり、というかそもそもアプリケーション固有の要求には絶対に答えられない。というわけで、理想的なラッパーというのは、それ自身が極力軽量で、拡張性を持たせたプラガブルな仕組みが用意されているものということになります。プラガブルな拡張性がないと、例え

  • TypeScriptのanyみたいな「なんでも代入できる型」を分類する - soutaroブログ

    安全でないもの - void * (C) いろいろあるんだろうけど、Cから始めよう。void*にはなんでもキャストできるし、元の型に戻すこともできる。まあany。問題は変なことをやった場合。(Cはよくわからないから誰かが例を書いてくれ。) キャストによって変な型が得られた場合の挙動は未定義なんだと思う。(知らないから、誰か仕様を調べてくれ。)未定義というのは、コンパイラとか計算機は何をしても良いという意味で、 プロセスの実行を止める 最適化によってコードが消える プロセスのメモリを破壊しながら動き続ける 鼻から悪魔が出る などのパターンがありうる。実際には大体SEGVで落ちると思うんだけど、それは仕様には含まれていない。 ここで「安全である」というのは「プログラムの実行中に未定義の状態にならない」という意味である。つまり、Cは安全ではない。 キャストの検査で安全になったもの - dynam

    TypeScriptのanyみたいな「なんでも代入できる型」を分類する - soutaroブログ
  • 「Rust」言語はCよりも遅いのか、研究者がベンチマーク結果を解説

    「C」や「C++」に代わるシステムプログラミング言語として「Rust」が注目を集めている。メモリ安全性が高く、メモリ破壊バグといった脆弱(ぜいじゃく)性を作り込みにくいからだ(関連記事)。 ただし、システムプログラミング言語では、高い処理性能が必須条件であり、これがCやC++が使われ続けている理由となっている。Rustはどの程度「速い」のだろうか。 ドイツのミュンヘン工科大学で博士課程の学生であるポール・エメリク氏は2019年9月9日、Rustで作成したデバイスドライバの性能評価をGitHubで発表した。 同氏のグループはさまざまな言語で同じ機能を備えたデバイスドライバを記述し、性能を比較している。 何が性能低下を引き起こしているのか 性能評価用に作成したのは、Intelのイーサネットコントローラー向けのLinux用デバイスドライバだ(ixgbeタイプ)。 エメリク氏は解説の冒頭で研究に取

    「Rust」言語はCよりも遅いのか、研究者がベンチマーク結果を解説
    raimon49
    raimon49 2019/09/14
    配列アクセスをCより安全にしてくれてパフォーマンスこれだけしか違わないなんてRust最高じゃん。
  • オブジェクト指向プログラミング -- 1兆ドル規模の大失敗

    CodeIQのブログより。🤔 なぜ、OOPから移行する時なのか Ilya Suzdalnitski OOPは、多くの人にコンピューターサイエンスの重要資産と考えられています。コード構成(code organization)に対する究極のソリューション。すべての問題の終焉。私たちのプログラムを書くための唯一の当の方法。自分自身をプログラムするという真なる唯一神から私たちに授けられました… それまでは、そうではなく、抽象化の負担、そして無差別に共有されるミュータブルなオブジェクトの複雑なグラフによって、人々は屈し始めています。現実世界の問題を解決するのではなく、「抽象化」と「デザインパターン」について考えるのに貴重な時間と頭脳が費やされています。 非常に著名なソフトウェアエンジニアを含め、多くの人々がオブジェクト指向プログラミングを批判してきました。驚くことに、OOP自身の発明者でさえ、今

    オブジェクト指向プログラミング -- 1兆ドル規模の大失敗
  • 私と型システムとポエム

    最近巷では俄に型システムについての言及が増え、型システムポエマーが増えてる気がするので自分もその時流に乗りたい。 完全にポエムだけどなんかあったら随時指摘ください。直します。 TL;DR 言いたいことはまとめると次 型システムは程度問題なのでちょうどいいところを探すべき 型は万能でも強さが正義でもない(だから未だに研究されてる) よく知りもしないくせに計算機科学を侮辱するのはやめろ 予防線 あくまでポエムですので中身はないです 私は型理論専攻で学位はとったものの研究者ではないのであまり信用しすぎないように 型システムの過去 型システムは大まかに次のような利点があるとされてきた(個人的主観) 「異常」なプログラムを検出する仕組み 静的解析による分かりやすいエラーメッセージ 型そのもののドキュメント性 IDEでのcompletionに貢献 最適化に貢献 (数学に正しく裏打ちされたsemanti

  • await って言う単語

    C# 5.0で非同期メソッドが導入されてから、 正式リリースを基準にしても5年以上、 最初の発表からだと7年以上経っています。 で、5年経っても、「なんて読むの」「asyncのaとawaitのaは違う」などなどが「定番ネタ」として定期的に出てくるわけですが。 特に、ECMAScript 2017がasync/awaitを導入したり、 Unity 2017がやっとC#のバージョンを6.0に上げれる感じになってきたり、 5年の断絶を経て去年からasync/awaitに触れる人が増えているようです。 5年も離れたら、世代断絶も起こりますよね… そりゃ、「定番ネタ」が改めて増えもしますよね… ということで、5年くらい前に同じようなことをどこかで書いてるはずなんですけど、改めて。 英単語 えいしんく まず読み方。 async: エイシンク await : アウェイト ってやつ。async の方が「ア

    await って言う単語
  • Go言語(Golang) はまりどころと解決策

    Go の言語仕様はシンプルで他の言語に比べてはまりどころが少なくて学習コストが小さめな言語のように思います。しかし、それでもはまるところがないわけではないので、自分がはまって時間を無駄にしてしまったことを書き留めておきます。 念の為誤解のないように追記しておくと、この文書の目的は Go を批判することではなく GoGo であるがゆえに C++/Java/Python など利用者が Go を使い始めるときに困惑あるいは誤解するであろうポイントをまとめておくことで初めて Go を触る人がスムーズに Go を使い始められるようにすることです。私個人は Go はバランスがとれた良い言語でだと思いますし、気に入っています。 目次 interface と nil (Go の interface は単なる参照ではない) 文献 メソッド内でレシーバ(this, self)が nil でないことをチェ

  • nullが生まれた背景と現在のnullの問題点 ― null参照問題(前編)

    Cの系譜を継ぐC#ではnullが長らく使い続けられてきたが、最近ではその存在が大きな問題だと認識されている。前後編でこの問題を取り上げ、今回(前編)はnullを取り巻く事情について考察する。 ← 前回 連載 INDEX 次回 → 近年、nullの存在は、billion dollar mistake(10億ドル規模の損失をもたらす過ち)と呼ばれるくらい忌避されるものになっている。 nullは、低コストでそこそこ安全に参照を扱えるという意味で悪くない妥協ではあるが、技術が進歩した現在ではもう少し賢い参照の扱い方があるはずである。C#のように、これまでnullを認めてしまっているプログラミング言語で、今からそれを完全になくすというのは現実的ではないが、nullに起因する問題を少しでも避ける手段はこれからでも追加していけるだろう。 今回は、nullが生まれるに至った背景から始め、nullが抱える問

  • それでenumとclassのどっちにすれば良いの? - soutaroブログ

    SwiftのenumがObjective Cで欲しいときはどうするか - soutaroブログ この記事には enumが便利なのは ある状態では有効だけど、別の状態では有効ではない値を定義するとき です。 と書きましたが、「それはサブクラスっていうやつではないか」という声があります(どこに?)。その通りで、enumとクラスはよく似ている側面があって、enumでできることはクラスでも(再コンパイルの量とか、網羅性の検査とか、isKindOf:とか、キャストとかの問題を見なかったことにすれば)できるという話でした。 ここで疑問になるのは、 なぜSwiftにはenumとclassという似たような機能が二つ用意されているのか(TMTOWTDI?) 何を考えてenumとclassを使い分ければ良いのか でしょう。 enumとclassの違い Swift的には「classは状態を持てるがenumは持て

    それでenumとclassのどっちにすれば良いの? - soutaroブログ
  • 長文日記

    raimon49
    raimon49 2016/07/01
    これくらい主観による好みというか、愛憎入り乱れてる文章の方が、読み物として面白い。