より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

C#

LinqでListの結合はConcat

C#

LinqでListの結合ってどうするんだっけなー と、うろ覚えでUnionを使ったところ、 思ったような結果が出ず、結合されていないではないかということがありました。 Unionは重複なし結合。 単純にListを結合したいならConcat。 using System; using System.Lin…

Javaグラフィックス完全制覇をUnityで実装してみる〜シェルピンスキーのギャスケット

C#

書籍「Javaグラフィックス完全制覇」を参考にシェルピンスキーのギャスケットを描画してみます。 UnityなのでLineRendererを用います。 三角形一つについてLineRendererが必要になるので、LineRendererを追加したGameObjectをPrefabとして描画していきます。…

Javaグラフィックス完全制覇をUnityで実装してみる〜3Dの花を咲かせる

C#

Unityの練習中なので、書籍「Javaグラフィックス」をUnityで実装してみることにしました。 Javaグラフィックスは2001年の書籍です。 Javaアプレットとか言っていた時代ですね。私の年齢層がバレますね。 結構面白いことができるので大事に保管していました。…

Unityラングフォート方程式でストレンジアトラクターを作成してみる

C#

書籍「Unityで作るストレンジアトラクター」で学んだことを活かして、ラングフォート方程式でストレンジアトラクターを作成してみることにしました。 数式や実装は以下を参考にします。 www.isc.meiji.ac.jp ローレンツ方程式より計算式を実装するだけでもミ…

読書感想「Unityで作るトロコイド」

C#

Reactのアイコンみたい。 最初の4.6で動かすときにUpdateは空メソッドにしておく必要があります。Changeというメソッドを呼び出すようになってますが、宣言されてないので。 Reactのアイコンみたい 拡張して、最後はすごいことになります。

読書感想「Unityで作るストレンジアトラクター」

C#

ストレンジアトラクターの一つであるローレンツアトラクターを作る本です。 ローレンツアトラクターはローレンツ方程式から生成される曲線です。 ja.wikipedia.org ただ、回転が書籍通りに実装したつもりなのですが、うまく動作しませんでした。ローレンツア…

読書感想「きっちり完成!Unity3Dゲーム制作 クリックスナイパー編」

C#

フタバゼミというプログラミングを教えるところが出版している本です。 レイアウトは「高い(Tall)」で説明されます。 作ったターゲットを撃つだけでも割と面白い 私は、連射性能を上げた上、右クリックの時は、強く右に曲げるようにしました。ターゲットは左…

Riderで選択範囲の移動「Ctrl+Shift+Alt + Up/Down/Left/Right」

C#

小ネタですが、メモ。 Visual Studioで地味に好きな機能が選択範囲の移動です。 選択範囲をまとめて一行上、一行下に移動させます。 これを Riderで行う場合はどうやるんだというと、 Ctrl+Shift+Alt + Up/Down/Left/Right のようです。 www.jetbrains.com

こんな文法あるんだ「Id = id ?? throw new ArgumentException(nameof(id));」

C#

namespace ValueObject { public class User { public UserId Id { get; set; } public UserName Name { get; set; } public User(UserId id, UserName name) { if (id == null) throw new ArgumentException(nameof(id)); if (name == null) throw new Argu…

ASP.NET WebアプリケーションにAPIアクセス数に制限をかけるライブラリ「WebApiThrottle」

C#

github.com やりたいことが、数行のコードで実現できる。これぞ、いいライブラリと唸りました。 C#のASP.NET WebアプリケーションについてAPIアクセス数に制限をかけるライブラリです。

HashSetの方がListよりパフォーマンスが速い。そして両者の違いは?

C#

ソースレビューしていたら、List使うだろーと思っていたところでHashSetを使われていることがありました。 なぜにHashSet? そもそもHashSetってなに?と調べてみたところ……。 qiita.com 圧倒的にListよりHashSetの方が検索速度が速いことを初めて知りました…

読書感想「Unity5とC#で作るライフゲーム: UnityとC#で作ってみようシリーズ3」

C#

本に書いてある通りにやっただけですが、サクッと作れるものなんだなぁと感心してしまいました。 開始して、マウス右クリックする ライフゲームは以下の法則です。 死んでいるセルの周囲8セルに生きているセルが3つあれば、セルが生まれる 生きているセルの…

Unityでプロジェクト新規作成しただけなのに、Enter Safe Modeって何これ

C#

Unityでプロジェクトを新規作成して、さあ新しい開発を、と行きたかったのですが、なんとエラー。 なんだ、これ 実行できず。 問題を解決しろというのにも、作ったばかりのブランクプロジェクトに問題も何もモノすらないという状況。 最新版のUnityをインス…

読書感想「Unity2D超入門講座」

C#

本当の超入門なのか、スクリプトを丁寧に説明しているものの、少し内容に物足りない印象を受けました。 マリオタイプのゲームを一つ作るだけで本が終わっています。 ただ、サンプルでダウンロードできる画像はいいですね。

Unityの2D画面座標って、何ベース? タイルセット描画をしてみた

C#

Unityの2Dゲームテンプレートを触っていたのですが、キャラの座標が-5とかで画面の端になってしまいます。この画像は128x128なんですが。 画像は128x128のサイズなんですが Unityは3Dありきでカメラ位置で2Dを実現しているからのようです。 2Dトグルをオフに…

難読化するときは、nameofやReflectionには注意

C#

今の仕事だと、難読化しているコードがありますが、難読化するときの注意点としてはnameofでしょう。 Logger.Info($"{nameof(MethodA)}") なんてして、メソッド名をスマートにログ出力。 と行きたいところですが、難読化した時は実際はメソッド名が変わって…

読書感想「C#ハウツー: 逆引き入門・こんな機能はどう書くの? 」

C#

Finalizer 以下のようなコード。 GC.Collectしてもデストラクタは呼ばれないですね。 using System; namespace Finalizer { class Sample:IDisposable { public Sample() { Console.WriteLine("私、産まれました!"); } ~Sample() { Console.WriteLine("私、…

RegistryKey.OpenSubKeyでUnauthorizedAccessException

C#

MSDNには書いていないのですが、UnauthorizedAccessExceptionが発生することがあるようです。 うーん。MSDNを信用すれば全てが解決するわけではないのですね。 docs.microsoft.com 対応方法としては、OpenSubKey(String, Boolean)を使うといいようです。 sta…

読書感想「裏C#入門・あなたの知らない太古のテクニックと遠い昔の物語」

C#

C#の登場から、コレクション、LINQ、dynamic型。 C#の変遷について筆者の感想をつらつらと語られた本です。 C#はJavaに近くて、そうではない。NUnitは命名規則ではなく、Attributeで片付けられる。そうだよなあと思います。 印象的だったのは巻末で語られる…

MaterialDesignXamlでバッジを表示させたい

C#

MaterialDesignXamlでいわゆるバッジを表示させたいな、と ボタンの右上に表示させる方法であるサンプルは用意されています。 xamlだと以下のようになりますね。 <materialDesign:Badged Badge="3"> <Button Content="MAIL" /> </materialDesign:Badged> ただ、私がやりたいのは以下のような形 その場合は以下のようなコード。 <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding CallName.Value}" /> </textblock></stackpanel>

Versionクラスのコンストラクタに文字列が渡せる

C#

docs.microsoft.com Windowsのファイルバージョンといえば、1.2.3.4という4つのセクションに分かれたバージョン体系ですので、であればC#のVersionクラスもそれしか対応していないのかなと思っていたのですが、2.0という文字列でもVersionクラスはよしなに処…

WPFのTreeViewで指定のTreeViewItemまでスクロールする

C#

TreeViewで選択している項目を保存して、アプリを起動し直した時に選択していた項目を復元する といったことを実現したのですが、しかし選択項目までスクロールされないんですね。 それにはBringIntoViewを使います。 しかし、Bindingされているオブジェクト…

やっとBody Styleに慣れたので、Apply Code Body Styleを適用

C#

public string FaceFilename { get { return Path.Combine(DirectoryPath FaceSingleName); } } というコードは、最新のC#では以下のように書くことが可能です。 public string FaceFilename => Path.Combine(DirectoryPath, FaceSingleName); ただ、自分、…

WPF+WndProc+Notification.Wpfで多重起動通知

C#

多重起動の通知にメッセージダイアログを使っていたのですが、いちいちメッセージダイアログでOKするのが面倒。 Windowsの通知とか使えないかなということチャレンジしてみました。 プロセス間通信についてはgRPCとかも考えたのですが、そこまで大掛かりな仕…

意外と奥が深いDialogResult

C#

WinFormsのFormの仕様として、×で閉じると、DialogResultがCancelになります。Alt+F4で閉じても同様です。 docs.microsoft.com FormのDialogResultの返り値を処理する場合は要注意です。 というわけで上記のようなものを作って動作確認してみました。 Formの…

IDisposableを継承したクラスのインスタンスをDisposeしないとどうなるか?

C#

IDisposableを継承したクラスのインスタンスはDisposeしろ 前職では、徹底されていたことです。 ただ、Disposeしなかったら、具体的に何が起きるのか? 復習も兼ねて、実際に起こして見ることにしました。 単純にFormを2つ宣言し、Mainのフォームから何度もF…

Log4netを卒業して、NLogへと

C# C#

社内で新しいデスクトップアプリケーションを開発することになったのですが、ログ出力はどうしようかと考えていたとき思い出しました。 Log4netは開発休止宣言 代替手段はどうするかということでNLogを選ぶことにしました。 Serilogもありますが、GitHubのSt…

Unityで動的に画像を読み込んでスライスする

C#

Unityで動的に画像を読み込んで、指定の矩形を取得する場合 Sprite.Createを用います。以下のようなコード。 var texture = Resources.Load<Texture2D>("Levels/tileset"); var sprite = Sprite.Create(texture, new Rect(32, 0, 32, 32), new Vector2(0.5f, 0.5f)); お</texture2d>…

クラスは参照渡し、構造体は値渡し

C#

C#細かい挙動ですが、大事なことなのでメモ。 クラスは参照渡しですが、構造体は値渡しになります。 using System; public class Program { public static void Main() { var aClass = new AClass() { X = 1 }; var aStruct = new AStruct() { X = 1}; Conso…

Form.Enabled=falseの意外な効用

C#

WinFormsのアプリケーションを開発中に あっ、これ、処理中に他の操作されたらダメじゃん こういうことって網羅的なテストでは盲点になりがちですよね。 で、ツールだからざっくり一括でコントロール全体をDisabledにしたいということで、親となるFormのEnab…