備忘録

備忘録

C#

WebSocket4Net C# .NET Standard対応 WebSocket クライアントライブラリ

Ⅰ. はじめに WebSocket4Net は2017/05/11 時点でベータ段階ですが .NET Standard 対応の WebSocket ライブラリです。 Ⅱ. 使い方 1. 「WebSocket4Net」で検索し、インストールする 2. サンプルプログラム using System; using WebSocket4Net; namespace WebSo…

C# で HtmlAgilityPack を使って HTML の要素値を XPath で取得する

C#

Ⅰ. はじめに タイトルの通り、「C# で HtmlAgilityPack を使って HTML の要素値を XPath で取得する」方法です。 Web スクレイピングが簡単になります。 Ⅱ. サンプル http://example.comの「タイトル」と「リンク先(href)の値」を取得するサンプルです。 1.…

C#でSMTP, Mailgun, SendGridなどを利用してメールを送信する方法

C#

Ⅰ. はじめに メール配信サービスのAPIをラップした FluentEmail というライブラリの紹介です。 .NET Standard で作られているためクロスプラットフォームで動作します。各サービスの API ドキュメントには HttpClient や RestClient 等を使って Web API を直…

.NET Core で 実行ファイル(exe)を作成する方法

2024/01/22 追記 Ⅰ. はじめに Ⅱ. FDD と SCD の違いについて .NET Core 3.0 以上の場合 .NET Core 2.x 以下の場合 Ⅲ. FDD のやり方 以下のコマンドを実行する Ⅳ. SCDのやり方 1. 以下のコマンドを実行する 2. 実行ファイルが作成される その他 参考 2024/01/…

C#でプロセスのスレッド一時停止させる

C#

Ⅰ. はじめに プロセスのサスペンド、リジュームを拡張メソッドにして使いやすくしたクラスを紹介します。 コピペで動きます。 Ⅱ. プログラム Program.cs var process = Process.GetProcessesByName("notepad").FirstOrDefault(); process.Threads.Suspend();…

C#(EXE)からC++(DLL)の関数を呼び出す方法

Ⅰ. はじめに Ⅱ. 関数をエクスポートする方法(P/Invoke) 1. サンプルプログラム 2. 実行結果 3. DllImportの呼出規約について Ⅲ. C++/CLIを利用する方法 1. サンプルプログラム 2. 実行結果 Ⅰ. はじめに C#(EXE)からC++(DLL)の関数を呼び出す方法です。方法…

C#でPublic Key Pinningする

C#

Ⅰ. はじめに Public Key Pinningとは、SSL証明書のチェックを行うことです。 チェックを行うことで、不正な証明書を検知することができます。例えばクラッカーはMITMを利用して傍受を試みます。 MITMを利用するとSSL証明書が書き換わる為、 不正な証明書であ…

C# WPF 数値のみ入力できるTextBoxを作る

C#

Ⅰ. はじめに 半角数値0~9のみを許可するTextBoxの作り方です。 数値のみ入力可能なTextBoxは標準機能として用意されていません。(2017/02/20時点) 入力値が数値かどうかを判定するコードを書く必要があります。 Ⅱ. 作り方 1. MainWindow.xaml

C# で RSA暗号鍵(.pem)作成する

Ⅰ. はじめに C#でpemファイルを作成する方法です。その逆の、 「C#でpemファイルを読み込む方法」はy_yoda様がQiitaに投稿している記事の通りです。 http://qiita.com/y_yoda/items/f4bd3ec56ac7591c5804 Ⅱ. 環境 C# .NET Core 1.1.0 Ⅲ. ソースコード NuGet…

C#でRSS 1.0のFeedを読む

C#

Ⅰ. はじめに .NET Framework 3.5以降であれば Atom 1.0 と RSS 2.0を対象にした SyndicationFeed があるのですが、RSS 1.0はサポートされていません。 RSS 1.0 を手書きで解析するときのメモです。 Ⅱ. プログラム 解析対象のXML(GIGAZINEのRSS1.0のFeedを利…

C# でBouncyCastleを使ってRijndael 鍵長256bit, ブロック長256bitで暗号化する

C#

Ⅰ. はじめに .NET Core標準のRijndael実装は鍵長256bit、ブロック長256bitがサポートされていません。 鍵長256bit、ブロック長 256bit のRijndael を利用したい場合は、それなりに利用数が多いBouncyCastleを利用するのがベターかと思います。 Ⅱ. やり方 1. …

C# SHA1を計算させる

C#

private string CalculateSHA1(string str) { using (var sha1 = SHA1.Create()) { var bs = sha1.ComputeHash(new UTF8Encoding().GetBytes(str)); return BitConverter.ToString(bs).ToLower().Replace("-", ""); } }

.NET Core HttpClientでproxyを利用する

Ⅰ. はじめに .NET CoreではWebProxyクラスは存在しません。 代わりにIWebProxyを継承して自分でクラスを作る必要があります。※2017/05/30 追記 .NET Core 2.0 でWebProxyクラスが追加されました。 Ⅱ. サンプル class MyWebProxy : IWebProxy { public ICrede…

.NET Core AESで暗号化、複合する

Ⅰ. はじめに Aesクラスを利用します。.NET Core で IV 256bit を使う方法はこちら。 http://kagasu.hatenablog.com/entry/2017/01/04/213533 Ⅱ. Aesを利用した複合の例 public byte[] DecryptRijndael(byte[] bytes) { Aes aes = Aes.Create(); aes.Padding …

.NET Coreのコンソールで日本語が文字化けする

問題点 対策 1. NuGetから System.Text.Encoding.CodePages をインストールする Install-Package System.Text.Encoding.CodePages 2. 以下の一行を追加 Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); 結果 参考文献 https://opcdiary.net…

C#でCRC32を計算する

C#

Ⅰ. はじめに C#でCRC32を計算するクラスを作成しました。 ホントはSystem.Security.Cryptography.HashAlgorithmを実装するのが筋です。 いつか実装して記事を修正します(そのうちやります…) Ⅱ. 使い方 バイト配列のCRC32を計算する byte[] bytes = new byt…

C# GZipで圧縮、展開する

C#

Ⅰ. はじめに RFC 1952で定義されているGZipの圧縮と展開方法です。 マジックナンバーは「1F 8B」です。 Ⅱ. やり方 1. GZipで圧縮する public static byte[] GZipCompress(byte[] bytes) { using (var ms = new MemoryStream()) { using (var gzipStream = ne…

C# で ImageProcessorを使う

C#

2023/01/18 追記 ImageProcessorの開発は停止されました。 代替としてImageSharpの利用を推奨します。 Ⅰ. はじめに ImageProcessorは画像処理ライブラリです。 現時点で、2値化処理、エッジ検出、色反転、縮小、拡大、切り取り、等様々なフィルタ処理に対応…

C# HttpClientでContent-Typeを指定する方法

C#

Ⅰ. はじめに Ⅱ. 文字列の場合 Ⅲ. バイト配列の場合 方法1 方法2 Ⅳ. ダメな例 Ⅰ. はじめに 基本的にはHttpContentを継承したクラス(FormUrlEncodedContentなど)があるのでそれを使います。 それにより適切なContent-Typeが自動的に指定されます。Content-Ty…

C# FiddlerCoreのサンプル

Ⅰ. はじめに FiddlerCoreを使いHTTP, HTTPS, WebSocketのプロキシサーバーを作る場合のサンプルです。 Windowsのみで動作します。※2017/12/16追記 FiddlerCoreの.NET Standard 2.0対応版(現時点でベータ版)がリリースされていました。 これによりクロスプ…

XamarinでSystem.Drawing.Bitmapは使えない

結論 タイトルの通り、使えません。System.Drawing.BitmapがWin32APIの一部(GDI+周辺のラッパ)である為です。 代替案 C# で ImageProcessorを使う - 備忘録 .NET CoreでSystem.Drawingを使う - 備忘録 参考 Xamarin System.Drawing.Bitmap defined in an a…

Unity Web Playerでフルスクリーンにしたとき、黒い縦線が入る

なぜ縦線が入るのか Windows のタスクバーや、Unity Web Playerのタイトルバーが邪魔になっているから。 解決方法 Unity Web Playerのタイトルバーを消し、 ウィンドウサイズに合わせてUnity Web Playerのウィンドウを拡大する。 C#で実装したサンプル ※対象…

C# HttpListenerでhttps

C#

1. オレオレ証明書を作る makecert -n "CN=localhostCA" -r -pe -sv localhostCA.pvk localhostCA.cermakecert -pe -iv localhostCA.pvk -n "CN=localhost" -ic localhostCA.cer -sv localhostSignedByCA.pvk localhostSignedByCA.cerpvk2pfx -pvk localhost…

Xamarin.AndroidでAlertDialogを出す

RunOnUiThread( () => new AlertDialog.Builder(this) .SetTitle("alert") .SetMessage("helloworld") .Show() );

Xamarin.Androidでroot権限でコマンドを実行する

Java.Lang.Runtime.GetRuntime().Exec(new string[] { "su", "-c", "your command here" });

CentOS 7.xにmonoをインストールする

やり方 この3行を実行するだけ。 rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF" yum-config-manager --add-repo http://download.mono-project.com/repo/centos/ yum -y install mono-c…

C# UnixTimeを求める

C#

現在時刻の UnixTime を計算します var now = DateTime.UtcNow; long unixtime = (long)(now - new DateTime(1970, 1, 1)).TotalSeconds; Console.WriteLine(unixtime); // output // 1454419603

C# WPF Calendarで年月のみ選択できるようにする

やりたいこと WPF標準のCalendarコントロールを使い、年月だけ指定できるようにする。 以下サンプル MainWindow.xaml

ToS(Tree of Savior) 自動ログインツール

C#

※2016/08/24 OBTに対応しました。 ダウンロード https://github.com/kagasu/TOS-Auto-Launcher/releases ソースコード https://github.com/kagasu/TOS-Auto-Launcher/ 参考動画(YouTube) https://www.youtube.com/watch?v=-9sXv1g1jV0 動作に必要なもの .NET…

WPFでWindows.FormsのWebBrowserを使う

1) 参照の追加でSystemWindows.FormsとWindowsFormsIntegrationの2つを追加する。 2) MainWindow.xamlを以下のように書き換える