PG日誌

受託系 PG が C# の事を書いています

C#の新機能を使ってコード量を削減する

C#

C#もバージョンが7.0までリリースされ、以前より言語機能が拡張されています。そこで、昔からある既存のコードを新しい機能を使って簡潔に短く記述することができるようになっています。 定型文の繰り返しが大量にあったり、コードがごちゃごちゃしている場…

QTTabBarで新しいタブをPCで開く

QTTabBarの新しいタブを「+」プラスボタンで開いたときに、Win10でPC(旧マイコンピュータ)を開くように設定する方法です。確認したバージョンは1038(2015-12-8)です。 設定画面から、イベント > タブバーの "+" ボタンをクリックの項目のリストから「ユ…

C#でストラテジーパターンを用いてメソッドの複雑性を下げる

現実は紹介する例より圧倒的に複雑かと思いますが、以下のような状況でC#で利用できるデザインパターンの一つである、ストラテジーパターンを使ったリファクタリングの方法を紹介したいと思います。 あるメソッドに長大な処理が書かれている メソッド内であ…

C#でストラテジーパターンを実装する

GoF(The Gang Of Four)の23デザインパターンのうちのひとつ、Strategy パターンをC#で実装する方法を紹介したいと思います。 増補改訂版 Java言語で学ぶデザインパターン入門作者: 結城浩出版社/メーカー: SBクリエイティブ発売日: 2014/03/12メディア: Ki…

C#で特定のビットを変更する

C#

C#で整数型の特定のビットを立てたり落としたりする方法です。制御系の処理だと結構やるのと思いますが、C#でこういった操作をする事は珍しいので紹介したいと思います。 特定のビット「だけ」を変更するのは、一般的な方法論があるのでそちらを先に紹介した…

C++/CLIでstd::stringとSystem::string^を相互に変換する

タイトルの通りで、C++/CLIでC++の文字列とC#の文字列を相互に変換する方法です。

WFPのListBoxでカードUIを作成する

WPFでListBoxを使ってカードUIを作成する方法です。 作成したものは以下のような外観になります。 リサイズすると横幅に合わせて列数が変わります。 よこに広げると以下のように並び変えられます。 カードの構造 XAMLを貼る前に構造はこんな感じになっていま…

C#から見たC++の例外処理仕様の違い

普段C#を使っていて、C++を使った時に例外を使用した時に感じた違いを書いていきたいと思います。 まずは、言語使用上、違う部分から行きたいと思います。(ちなみに動作をVS2017のVC++で確認してるので規格と違うことがあるかもしれません。 その1:C++の例…

Backblaze社のHDD故障率2017年3Qレポート

先日、クラウドストレージ運営会社のBackblazeが定期的に発表しているHDD故障率のデータの2Qデータの表を文字起こししたのですが、既に3Qデータが発表されていたみたいなのであたらめて表を文字に起こしてみました。3Qデータなので2017年7月~9月までのデー…

Backblaze社のHDD故障率2017年2Qレポート

最近デスクトップPCのHDDの調子が悪くなり、カコンと音がするとそれ以降アクセス速度が10分の1くらいに低下する、いかにも壊れる寸前の動きをしていました。 なので、3.5インチ内蔵HDDのリプレースを考えていたのですが、故障率が低いものがいいと考えていろ…

ListBoxの要素上にカーソルが乗ったときの強調表示を停止する

WFPでListBoxを使用している際時に、マウスカーソルが子要素の上にMouseOverしたときに要素を強調表示するために青い枠が以下のように表示されます。 これを停止するためには以下のコードを記述します。デフォルトのスタイルを停止して自作の表示に切り替え…

Visual Studio 2017で単体テストもしくはTDDする

Visual Studio 2017でC#で開発してる開発者で、開発時にMSTestを使って単体テストを作成したり、コードを書くときにTDDしたりは、すっかり開発風景に定着していると思います。ただ、たまに作成方法を忘れるので、確認を兼ねてVisua Studio 2017 Community版…

New Ship Classes(NSC)で使用しているMODの組み合わせの紹介

Stellarisの大型MOD「(-New Ship Classes & More v7.0-)」、通称「NSC」を入れて遊んだ時のMOD構成を紹介したいと思います。以下条件で安定して遊べる事が自分のPCで確認しています。(コンポーネント単位で衝突してないかまでは確認していませんが問題なく…

Windows上にCocos2d-x 3.16 Android開発環境を作成する

Cocos2d-x 3.16 が2017年10月11日(水)にリリースされました。今までAndroid開発環境作るのが死ぬほどめんどくさかったのですが、少し改善されたらしいので導入手順をまとめてみました。 環境 構築する環境と、最終目的は以下の通りです。 Windows10 Cocos2d-…

C#とWPFで自力でチャート(グラフ)を描画する

WPFで数万点のデータを高速にグラフに表示しようとすると、たいていのチャートライブラリで何十秒も描画に時間がかかって使い物にならないことが多いので、簡単にデータを見たいときに使用する簡易チャートライブライを作成してみました。 線グラフっぽいも…

Stellaris「Synthetic Dawn」コンティンジェンシー・リベンジ

前回の記事でStellaris 1.8.0 + Synthetic Dawnで新しくなった終盤の危機、「コンティンジェンシー」に完膚なきまでに我が機械帝国がボロ負けしてしまいました。大変悔しいので、前回の反省点を生かしつつ、今回はコンティンジェンシーを潰すために機械文明…

.NET と.NET Coreで定義ファイルを読む

.NETのアプリケーションにはアプリケーション設定ファイルから定義を読み取る機能が付いています。自作の定義フォーマットを作成せずとも定義が読み込めたりします。 そこで、.NET Framework と.NET Coreの両方から読み取ってみようと思います。 .NET Framew…

WPF + C#でSetPixelする

はるか昔、WinFromの時代には、System.Drawing.Bitmapクラスがあってそのクラスには、1ドットごとに色を指定して絵を描くことができるSetPixel関数が付いていました。 WPFになって以降、クラス群が更に高級化したのでBitmapImageやImageSourceではそのような…

C#でTemplate Methodパターンを実装する

GoFのデザインパターンの中でも、振る舞いに関するパターンの1つであるTemplate MethodパターンをC#で実装したいと思います。 Template Methodパターンとは? Template Methodパターンとは、処理の手順を基底クラスで決めておいて、具体的な動作を後から派生…

Stellaris新DLC「Synthetic Dawn」ロボット帝国プレイレポ

Stellarisの新DLC「Synthetic Dawn」とパッチ1.8が2017年9月末に配信されました。 今までのゲームに対し大幅な変更とリバランスが入ったため今までの1.6.2までで鉄板と言われていた攻略法とはかなり違う感じになっています。細かい変更はパッチノートが出て…

中3の15%、短文も理解困難が話題なので解いてみた。C#で。

何か少し火種がくすぶっているようなので自分で解いてみました。 https://www.nasnem.xyz/entry/incorrect-comprehension-test http://mubou.seesaa.net/article/453754579.html 国語の問題らしく設問はこんな感じだそうです。 読解力テストの問題例(1) 以下…

MahAppsでマテリアルデザインっぽいボタンを実装する

WPFのオープンソースのGUIライブラリMahAppsを使ってマテリアルデザイン風のボタンをサクッと実装してみました。 作成環境 Windows10 VisualStudio2017 Update3 (15.3.5) .NET Framework 4.7 MahApps.Metro使用 FLATICONを利用 出来上がったもの 使った小技…

C#で汎用リトライ処理を実装する

C#

C#でリトライの共通処理を書いてみました。 特定の操作を指定した回数分自動でリトライしてくれる仕組みになります。 VisualStudio2017 + .NET4.7 + C#7.0で書いています。(Null条件演算子使ってるので、C#6.0以降なら動くかと) リトライのコード 戻り値なし…

C#でリストの特定の要素の位置を変更する

C#

あるリストに入ってる1つの要素の順序(位置)を変更します。 例えば、5番目の要素を3番目に移動したいなどの状況想定します。Listクラスを使いますがそういったメソッドは存在しないため追加で実装します。 実装例 Listクラスの拡張メソッドとして実装したい…

任意の値型をジェネリック(T)型にキャストする

C#

ジェネリックの型をintやboolにキャストして返却しようと思います。以下の例だと明らかに型が決まってるのですが、コンパイルはできません。 public T Convert<T>(string key) { string value = Config.GetValue(key); Type _t = typeof(T); if(_t == typeof(in</t>…

Pavel Haas - オーボエとピアノのための組曲

はじめに ネットで楽譜と音源の両方が参照できる器楽曲を紹介していきたいと思います。 楽曲情報 作曲者:Pavel Haas - パヴェル・ハース 年代:1899年 ~ 1944年 曲名:Suite for Oboe and Piano Op.17 - オーボエとピアノのための組曲 作品17 作曲時期:19…

System.Threading.Semaphoreの使い方

C#

C#のセマフォの使い方です。 C#のセマフォは主に以下の2つのシーンで利用します。 同時に度に実行できるスレッドの数を制限したい 複数のスレッドの進行を同期したい 同時にXXXする数を制限したいという仕様があったときに効果を発揮します。大抵は、共有資…

C#のusingステートメントの機能

C#

IDisposabeleインターフェースを継承したクラスは、以下のように。usingを使用して以下のように記述すると using(var hoge = new Hoge()) { } 以下のように展開されたのとほぼ同じような形で処理が行われ、リソースが即座に解放されます。 Hoge hoge = null;…

C#の4つのTimerの用途と使い方

C#

C#というか.NETのタイマーの種類について整理と説明をしたいと思います。.NETには自分が知っている限り、現時点で4種類のタイマーがあります。 種類 アセンブリ 用途 System.Timers.Timer System 普通の定周期処理 System.Threading.Timer mscorlib 普通の定…

Cocos2d-xで文字送りを実装する

RPGやノベルで表示されるテキストが1文字ずつ表示されていく、「文字送り」機能を作成したいと思います。 画面の構成は、周りの枠をScale9Spriteで表示して、テキストはラベルで表示します。図にするとこんな感じです。 おおよその仕様ですが以下の通りです…