C#でOlliの手書き風描画のフィルタを再現する

動画と写真を手書き風に加工する「Olli」というアプリがあるのですが、結構きれいに手書き風のフィルタがかけられると話題になっていました。 ねとらぼさんのOlli紹介記事 そこで、C#を使って手書き風のフィルタを再現してみようと思います。 申し訳ないです…

C#のArrayListとHashtableは基本的に非推奨

C#のArrayListとHashtableは非推奨 2018年に新規にArrayListの使い方を説明するWebページがあったりしますが、C#のArrayListは現在利用は推奨できません。代わりにList<T>クラスを使用しましょう Javaを学習した方がC#に動的配列の機能を探して同じ機能が無いか</t>…

はてなブログの目次をカスタマイズする

はてなブログって見出しを表示する記法がありますが、デフォルトだとめちゃくちゃダサいです。 このブログのテーマは「Evergreen」です。ここで表示される見出しの見た目をCSSを使ってカスタマイズしたいと思います。 見た目 見出しを表示すると以下のように…

C#でListの内の要素をforeach中に削除する

結論から言うと、foreachの中でリストの要素を削除するのは無理です。諦めましょう。*1 代替手段 (1) for文を逆順で回す (2) RemoveAllメソッドで削除 (3) Whereで抜粋する (4) 自作する foreachの右辺でToArray() + Removeはやめましょう 削除しようとする…

C#のクラスと構造体の違い・使い分け方

C#

C#でクラス(class)と構造体(struct)の違いは何か?それぞれどのような性質があるのか?また、使い分け方の方針の紹介です。基本的にほとんど同じですが割と性質が違います。 性質の違いを考慮しながらどちらを使用するかを検討することになります。…と、言っ…

C#のList<T>.ForEachでTが構造体の値を更新する

C#

前回、C#の配列にForEachメソッドを追加すると同じく、ListのTが構造体の場合、ForEachメソッド内で引数に対する変更がListへ反映されないため、拡張メソッドの機能を利用して、変更が反映される操作を追加します。 具体的にどういう状況か以下のコード(も…

C#の throw と throw ex の動作の違いを確認する

C#

この話、何度も説明をしているのでいい加減何か書き残した方が良いと思ったので、概要をまとめたいと思います。 C#の throw と throw ex で何が違うのかの紹介になります。 具体的には例外が発生したときに、catch節で、以下の2種類の書き方をした時の挙動の…

非ObservableCollection<T>の変更を検出・通知する

Viewへリストの変更を通知するための機能を持つObservableCollectionですが、以下のようにデータソースがListや配列だと変更が検出できません。今回は、Modelのリストが非ObservavleCollectionの場合、やや制約がありますが変更をViewが検出するための仕組み…

邪魔な侍エンジニア塾の記事をGoogleの検索結果で非表示にする

はじめに Googleでプログラミングの事を調べるとやたらと検索に引っかかって上位に表示される「侍エンジニア塾」をGoogleの検索結果から除外して目に触れないようにしたいと思います。 対象ブラウザはChrome限定です。拡張機能の「ゴシップサイトブロッカー…

C#の配列にForEachメソッドを追加する

C#

C#の配列にForEachメソッドを直接追加する方法を紹介したいと思います。 ForEachメソッドは、Pythonにmap関数とほぼ同じ機能を持ちます。map関数は「map関数は、イテラブルオブジェクトに対しその全ての要素に指定した関数を実行し、結果をシーケンスとして…

C#で配列のサイズ変更や要素を末尾に追加する

C#

C#で宣言済みの配列のサイズを変更するためにはArray.Resizeを使用します。末尾に要素を追加する場合、Resizeで+1した後最後にデータを追加します。 実装コードは以下の通りです。 // 100 → 200へ配列のサイズを変更 int[] array = new int[100]; Array.Resi…

C#でBase64形式で文字列やファイルをエンコード・デコードする

C#

C#でもASP. NET Coreなどの環境がだんだん発達してきて、WebAPIを作成したり繋いだりするケースが増えてきていると思います。 そこで、受け取ったJSON中のBase64文字列をデコードしたりする場合があると思いますがが、そういった場合、C#でどのように取り扱…