滅入るんるん

何か書きます

Try-Patternまだまだ使える説

C# C#

Try-Patternについて言及したら、ふとTupleでメソッドの返り値を実質複数にするよりTry-Patternで参照(実質ポインター)を使った方が早いんじゃね?と思ってしまったのでベンチマーク取ってみました。 検証対象は [MethodImpl(MethodImplOptions.NoInlining)]…

.NETのネーミングを一覧化してみた

プログラミングする上でネーミングは重要ですよね?しかしネーミングは大変ですよね? という感じなとこで比較的センスが良い.NETのネーミングを一覧化して集計取ってみたらいいんじゃね?と思いついたので.NET CoreのAssembly引っ張ってきて計測してみまし…

劇場版幼女戦記の史実パロ

限りなくネタバレな限りなくネタバレじゃないネタバレに注意 youjo-senki.jp 劇場版幼女戦記を見に行ってきました。幼女戦記らしく史実パロが面白かったので、わかる範囲で史実の事例を挙げていきます 人物 ja.wikipedia.org 一部界隈で人気のヨシフおじさん…

個人的Repository/Service用法

最近個人的なアーキテクチャー設計で確立してきたRepository層とService層についてちょっとだけ書いておきます。 Background アプリケーション想定 UWP, iOS, Androidあたり レイヤーアーキテクチャーを想定 MVPとかMVVMとか 特にロジック部分はアプリケーシ…

キメラアーキテクチャーのすゝめ

なぜキメラアーキテクチャー*1がいいのか、どういったものがキメラアーキテクチャーと呼べるのか殴り書きしていきます。 アプリケーションエンジニアの属性上、静的型付け言語的な要素があるかもしれません。 キメラアーキテクチャーの特徴 レイヤーの責務が…

個人的なコーディングスタイル

C#

新年あけましておめでとうございます。時が過ぎるのは早くてもう2月ですね すいません、深刻なネタ不足で「週1を目標にC#記事を書く」といいつつ1カ月ちょっと放置してました 2月からは週1で書けるよう若干ネタを貯めてるのでたぶん復帰できます。まぁ小ネタ…

ApplicationContextとActivityContextを正しく使い分けよう

「Android ApplicationContext ActivityContext」でググればApplicationContextを使うべきからActivityContextを使うべきまで幅広い主張の記事がありますが、当記事ではActivityContextじゃなければいけないとき以外はApplicationContextを使おうという主張…

Azure PipelineでDownload Secure File taskが認証できずに失敗する対処法

docs.microsoft.com git管理外にしておきたいファイルをAzure PipelineではSecure Fileとして配置することができます。Secure Fileとして配置することで、ビルド時にSecure Fileを引っ張ってきてビルドソースに突っ込むことができます。 Secure Fileの追加は…

Android Instant AppsをGoogle Playに公開するときはdefault-urlに対応するintent filterにStringリソースを使ってるとデフォルトURLとの関連付けができてないと怒られる

このアプリの作成中に躓いたポイントです。 github.com Instant Appsを作るにはApp Linksに対応する必要があります。 Android Studioに付いてる標準のApp Link Assistantを使うと楽にintent filterを用意できるわけですが、http/https両方を追加するとこのよ…

Stellaris 2.2プレイレポート

早くも日本語化Modが仮ではありますがStellaris2.2に対応してくれたので、別ゲー化アップデート後のStellarisをゲーム内で100年ほどプレイしてみたのでそれのレポートします。 Stellarisの別ゲー化アプデはもはや恒例となってきてはいますが、プレイ後の所感…

.NET Core対応したWyamを使ってみる

気が付いたらWyamがついに.NET Core対応してました! Release 2.0.0 · Wyamio/Wyam · GitHub .NET Core対応はv2.0.0ですがすぐにv2.1.0がリリースされる早業っぷり。しかも.NET Core Global Toolsに対応していてコマンドラインでのビルドが簡単になってます…

.NET Core Global ToolsをMcMaster.Extensions.CommandLineUtilsで手軽に作ってみる

.NET Core 2.1から.NET Core Global Toolsというものが追加されました。 それによってNuGetを使ってコマンドラインツールを提供できるようになるみたいです。今回はコマンドラインの引数を簡単にパースしてくれるMcMaster.Extensions.CommandLineUtilsを使い…

Android CustomView/CustomLayoutの作り方

AndroidのCustomView/CustomLayoutを作るには沼が深いのでそれなりの情報をまとめておきます まだ完全に理解ができてないので詰めが甘いところがあるかもしれませんが、基本は抑えていきたいと思います 公式のドキュメントはここ developer.android.com Cust…

Xamarin.AndroidでUpperCamelCaseなリソースが見つからないときの解決法

事の発端 <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <background android:drawable="@color/IconLauncherBackground"/> <foreground android:drawable="@mipmap/IconLauncherForeground"/> </adaptive-icon> Xamarin.Androidでこんな感じに配置したリソースがmipmap…

【C#】nullable intのnonnull判定にはisで変数宣言したほうが早い話

C#

仕事中に無意識にif (x?.y?.z is int value)(zはint?)みたいなコードを書いてしまい、ちょっと怪しかったのでいつもお世話になっているSharplabで確認してみたらなんかすごい最適化がされてるということを発見したのでその話 前置き この話はC# 7.3 コンパイ…

【C#】async/awaitの内部展開を見る

C#

過去少し記事で触れた程度のasync/awaitですが、実は卒論の研究対象にするぐらいには大学時代からC#の沼に浸かっていたのですが、たまには内部展開をじっくり観察しとこうかなということで書いておきます。 ↓いちおう過去に触れた記事 blog.meilcli.net blog…

【C#】IObservable<T>の最初のイベントだけをawaitで待機する話

C#

唐突ですが、最近やっと仕事でもXamarin.Androidを使い始めました。 仕事で書いてるプロジェクトではMVVM的な感じでViewModel側にReactivePropertyを使っていて、View側を担当しているのでViewModel側が用意したReactivePropertyを購読してやればいいのです…

Xamarin.AndroidにBindingとCode-Behindが追加されてたので試してみた

Xamarin.Android 9.0 - Xamarin Xamarin.Androidのリリースノートを見ていたらいつのまにかにBindingとCode-Behindが追加されていたので試してみました。 xamarin-android/LayoutCodeBehind.md at master · xamarin/xamarin-android · GitHub スペックなどは…

副作用のあるコードはなぜいけないのか

副作用のあるコードは書かないほうがいいというものは経験上わかっていたのですが、今まではなぜ書いてはいけないのかのいい例が思いつかずあまり説明できていなかったのですが、いい例を思いついたので書いておきます。 副作用のあるコードとはなんぞや 副…

C# Language Design Meetings: LDM 2018 10/15, 10/17

C#

csharplang更新されてないかなーとみてたらC# Language Design Meetingsが更新されてたのでそれの10/15と10/17の分の内容を紹介します。 C# Language Design Notes for Oct 15, 2018 csharplang/LDM-2018-10-15.md at master · dotnet/csharplang · GitHub F…

【C#】Utf8String関連のデザイン動向

C#

C#のStringが扱う文字コードはUTF-16ですが、UTF-8が広く使われるようになった現状ではUTF-8→UTF-16の変換コストなどがかかりパフォーマンス上の懸念点となっていました。 そこで最近のパフォーマンス改善の一環として、C#にUTF-8な文字列を扱えるようにしよ…

MVVMとはなんぞやを公理から求めてみる

MVVM(Model-View-ViewModel)はC#/.NET*1の世界で生まれたアーキテクチャーですが、今では他の世界(Androidとか)でも利用されています。 しかしながら、C#/.NETの世界から他の世界へ輸出される際に間違った解釈で移されていたり、言語・フレームワーク上の性…

【C#】デフォルト引数のバージョニング問題

C#

.NETのクラスライブラリ設計 開発チーム直伝の設計原則,コーディング標準,パターン作者: Krzysztof Cwalina,Brad Abrams出版社/メーカー: 日経BP社発売日: 2016/02/04メディア: Kindle版この商品を含むブログを見る 『.NETのクラスライブラリ設計』という本…

HoI4: WW1 modで最高難易度ドイツやったら終わらない戦争に突入した話

プレイ日記的な奴です www.nicovideo.jp ↑に触発されてWW1 mod最高難易度ドイツやってみたくなっただけです() 今回のメインmodはこちらです。 Steam Workshop :: Hearts of Iron IV: The Great War 英語だけだと多少つらいので有志の方が翻訳してくれた日本…

会社で優秀新人賞取った話

優秀新人賞マンになりました— k.penguin (@penguin_sharp) 2018年10月1日 10月の初めに所属部門のエンジニア評価制度で優秀新人賞取ったので、熱が冷めないうちに話しておこうかなと思います。 ↓貰った賞の個人情報を切り抜いた画像です まず、エンジニア評…

続: if(flag == true)はありなのか?なしなのか?

blog.meilcli.net 前回の記事ではnon nullな真偽値の場合を前提として考えましたが、nullableな真偽値を考慮すると前回のような結果にならないなということで続編を書きます。 ※真偽値としてのネーミングとしてflagはナシだろ~~wという話はナシでお願いし…

はてなブログに移行しました

タイトルの通りBloggerからはてなブログに移行しました。 移行によって 記事のパスが変わった 記載内容がおかしい など、移行時のミスっぽいものがあったら教えていただけると嬉しいです。 移行した理由については、Blogger + StackEditだとマークダウン記法…

【C#】Unsafeクラスで安全で危険なコードを書こう()

unsafeとは(哲学) C#でのunsafe C#では元来、危険であると書き手が分かっていれば危険でもパフォーマンスを重視した書き方(ポインター)ができました。その危険という状態を表すのがunsafeコンテキストです。 個人的にはこの思想は気に入っていて、ポインター…

【C#】CILの算術演算命令

C#をコンパイルするとCILになりますが、CILの情報は結構少ないので、メモがてらに書いておきます。 基本 たとえば1 + 10とするC#コードがあったとして、これをCILにすると以下のようなものに論理的にはなります。 ldc.i4.1 ldc.i4.s 10 add 逆ポーランド記法…

Azure DevOpsに改名してOSSなら無料/時間無制限ビルドになった旧VSTSを試す

今日の朝にVSTSがAzure DevOpsに改名し、OSS向けのビルド枠が時間無制限ビルドになったと聞いてさっそく試してみました。値段とかそのあたりのことはここに書いてます。そこで、今回CIビルドを試すのはこないだ作ったばかりのSharedPropertyにします。ちょう…