basyura's blog

あしたになったらほんきだす。

c#

WindowsTerminal を任意の位置に動かす

c#

自宅の Windows11 + デュアルモニタ環境でスリープから復帰すると最大化していた Windows Terminal がタスクバーより前になってしまう現象。タスクバーは非表示設定にしているのでカーソルを画面下に移動するのだけど出てこない (前面に来ない) ので困る。 W…

Mac に ASP.NET Core を入れてリバースプロキシ経由のサーバーで自分のドメインとポートを取りたい

概要 諸事情あってタイトルのことをしたいのだけど、家には手頃な Windows 環境が無いので Mac でやってみる。ちなみに実環境は .Net Core ではない。 Install dotnet $ brew install --cask dotnet-sdk ==> Downloading https://download.visualstudio.micr…

C# - インデックス付き Select

c#

Enumerable.Select(TSource, TResult) メソッド (IEnumerable(TSource), Func(TSource, Int32, TResult)) (System.Linq) public static IEnumerable<TResult> Select<TSource, TResult>( this IEnumerable<TSource> source, Func<TSource, int, TResult> selector ) 要素が 1 個でも 1000 個でも変わるのは 1 ms 程度だっ</tsource,></tsource></tsource,></tresult>…

C# - LINQ でループの回り具合を再確認

c#

LINQ 大好きなのはいいんだけど基本的に for で回してるのと同じだってことを認識していない人が多くて困る。魔法か何かと勘違されてる。これに起因してパフォーマンス悪化しまくり。LINQ 便利で使うのだけど、LINQ がない時にそんなにループで回すこと多か…

C# - ループカウンタ

C#

C#プログラマーのための 基礎からわかるLINQマジック!作者:山本 康彦技術評論社AmazonLINQ でループカウンタがあるメソッドがあるのを知らなかった。使いどころがよく分からんけど。 var list = new List<string> { "a", "b", "c", "d", "e" }; list.Where((v, i) =></string>…

XAMLとC#によるUniversal Windows Platform アプリ開発

C#

XAMLとC#によるUniversal Windows Platform アプリ開発作者:大田一希Amazonxaml は難しいなぁ。xaml でもできるといっても PG で解決した方が簡単だったりするしなぁ。MVVM すると直近の解決法としては良くても長期的にはマイナス要素になったりするし。UWP …

WPF - 独自コントロールに独自イベント

某システムで xsl を用いた時に「xsl 地獄もう嫌だ」と心の底から思ったし、もろもろ設定の xml もうんざりだと思ってたのにココにきての xaml。これは最強の xml 地獄だなと思いつつ数年経過。ようやく書けるようになってきたかなという感じはするけど奥が…

C# - プロパティ

C#

C# はプロパティがあるから簡単に書けて便利っていう話があるけど そんなこと無いよなと RaisePropertyChanged を書きながら思う日々。 public string _Message; public string Message { get { return _Message; } set { _Message = value; RaisePropertyCh…

C# - 任意の sln をビルドする

c#

あってるのか良くわからないけど、ビルドはできた。 public void Build(string slnPath) { FileInfo info = new FileInfo(slnPath); Directory.SetCurrentDirectory(info.DirectoryName); ProcessStartInfo psInfo = new ProcessStartInfo() { FileName = "x…

C# - 任意のディレクトリ配下にある任意のファイルの一覧を取得する

C#

var projects = Find(baseDir, (v) => v.EndsWith(".csproj")); private List<string> Find(string baseDir, Func<string, bool> condition, List<string> list = null) { list = list ?? new List<string>(); var projects = Directory.GetFiles(baseDir).Where(v => condition(v)); list.AddRange</string></string></string,></string>…

プログラミング.NET Framework

プログラミング.NET Framework 第4版作者:Jeffrey Richter日経BPAmazon終盤はだいぶ読み流してしまったけど、かなり勉強になった。 マルチプラットホームになるらしいし、やって損はない。仕事で C# を書きまくってるけど言語的な不満はあまりなくて メソッ…

名前付き引数

c#

使えたんだ・・・知らなかった。 using System; class Class1 { public void Print(string message, string id = "-", DateTime date = default(DateTime)) { Console.WriteLine("message={0}, id={1}, date={2}", message, id, date); } static void Main(s…

foreach のあとの foreach

C#

なんとなく linq で抽出した後に foreach でなにかしら回しながら処理をしたあと、さいど foreach で回すとループで回らないのじゃないかという不安から、ToList() でリストにしてから foreach してしまうことがある。 using System; using System.Linq; usi…

C#によるマルチコアのための非同期/並列処理プログラミング

c#

C#によるマルチコアのための非同期/並列処理プログラミング作者:山本 康彦技術評論社Amazon前半、特にフォアグラウンド/バックグラウンドスレッド周りは勉強になった。そして実践で役に立った。

mono で log4net

C#

プロジェクトで log4net を使ってるけど、使ってるだけでどういうものかよく分かってなかったので mono で試してみる。 log4net ソースをプロジェクトから取得 http://logging.apache.org/log4net/source-repository.html $ svn checkout http://svn.apache.…

mono で async/await

Mono is a software platform designed to allow developers to easily create cross platform applications. Sponsored by Xamarin, Mono is an open source implementation of Microsoft's .NET Framework based on the ECMA standards for C# and the Com…

CallerFilePath, CallerLineNumber, CallerMemberName attributes

C#

using System; using System.Runtime.CompilerServices; class Class1 { static void Main(string[] args) { Hello(); } private static void Hello([CallerFilePath] string file = "", [CallerLineNumber] int no = 0, [CallerMemberName] string name = "…

C# のプロパティ禁止ルールを設けてみたい

C#

便利ですよね、プロパティ。 public class Person { public string FirstName { get; set; } public string LastName { get; set; } public int Age { get; set; } } って定義すれば。 Person person = new Person() { FirstName = "hogemura", LastName = "…

FindAll と Where

C#

class Class1 { static void Main(string[] args) { List<string> list = new List<string>() { "a","ab","c","d","af" }; Stopwatch watch = new Stopwatch(); watch.Start(); List<string> extracted = list.FindAll((v)=> v.StartsWith("a")); watch.Stop(); Console.WriteLine(wa</string></string></string>…

確かに ToArray の方が早いんだなぁ

C#

using System; using System.Linq; using System.Collections; using System.Collections.Generic; class Class1 { static void Main(string[] args) { List<string> list = new List<string>(); for (int i = 0 ; i < 1000000; i ++) { list.Add(i.ToString()); } IEnumerab</string></string>…

インスタンスを生成しつつ、差分で初期処理を行う

C#

良い感じでジェネリクスを使えたような気がするけど、どうなんだろう。 using System; class Factory { static void Main(string[] args) { Prop prop = Factory.NewInstance<Prop>((h) => { h.Age = 30; }); Console.WriteLine(prop.Name); Console.WriteLine(pro</prop>…

Dictionary#TryGetValue のどのへんが使いやすいんだろうか

c#

Dictionary でインデクサを使ってアクセスした際に該当するキーが無いと、KeyNotFoundException がスローされる。 例外が発生しないようにするためには、Dictionary#ContainsKey を使ってチェックすることになる。 そんなの効率悪いよーって人のために Dicti…

C#プログラミング すぐに現場で使える知識

〔速攻入門〕 C#プログラミング すぐに現場で使える知識作者:中 博俊,猪股 健太郎,岩永 信之,山本 康彦技術評論社Amazonこれは当たりだなぁ。 とくに Java から移ってくる人が効率よく吸収するためには必読だなぁ。てことでおぬぬめ。

Action

c#

メソッドをパラメータで渡して実行する。 パラメーターを受け取らず、戻り値を持たないメソッドをカプセル化します。 Action デリゲート using System; class Class1 { static void Main(string[] args) { Class1 cs1 = new Class1(); cs1.Say(); } public v…

c# の twitter ライブラリを書いてみた - twicseratops

c# の勉強がてら書いてみた。 IDE はまだ使いたくないので、vim とコンパイルコマンド(csc)で。 オリジナル OAuth認証でTwitterにアクセスするコードをC#で書いてみた。OAuthBase.csを参考にした。 C#でOAuthでTwitter つくったもの https://github.com/basy…

C# で GUI アプリを作る

C#

visual studio を使わずに。eclipse のコンソールに流れる、cvs リポジトリにコミットした際のログを wiki フォーマットに変換するツールを作りたい。クリップボードに貼り付ける機能も欲しい。 cvs のフックでゴニョゴニョは諸事情によりできない eclipse …

C# の基本

C#

文字列 String msg1 = "hello"; string msg2 = "world"; string は String のエイリアスらしいんだけど、string を使うほうが標準的? 大文字と小文字始まりが混ざるのが気持ち悪いんだけど、メリットはなに?? 文字列連結 using System.Text; StringBuilde…

IDE が無くても C# が書けるんだよ

ちょっと動作確認したいだけなのに、スクリプトライクに軽い感じで書きたいだけなのに、、、Visual Studio や Visual Web Developer とか糞重いの入れるの嫌だーーーーー。 と思ってたら案外簡単だった。ただし、GUI はまだ良く分かってない。 .Net Framewor…