developer's diary

最近はc#のエントリが多いです

c#

超訳 Xamarin の概要

Microsoftのページって個人的に理解する為に、ワンクッションおくことが多いです。 色々読みながら、で結局どうなの?ってのにたどり着くまで結構時間かかること多いんですよね。。。 これは、単純に筆者のスキルレベルのせいだと考えてます。 なので、筆者…

C# (dotnetcore) .netの内部実装を覗いてbit演算子の使い方を学んでみよう

前提 c#のboolは1Byte c#のintは4byte bitの使い所 1億件の情報を保存する .netのリファレンス 実装(referencesource)を覗く .netのリファレンス ソースとは Controlクラスでbit演算子を使っているところを覗いてみる フラグを格納する変数の定義 フラグの定…

C# (dotnetcore) iText7でスキャンした電子書籍に目次(しおり)をつけてみた(The Art of UNIX Programming)

The Art of UNIX Programmingの目次をつける 結果 NuGetでiText7をインストール ソース The Art of UNIX Programmingの目次をつける この本をスキャンしてPDFにしました。 The Art of UNIX Programming作者:Eric S.Raymond発売日: 2007/06/19メディア: 大型…

C# (dotnetcore) CsvHelperでKEN_ALL.CSVを読み込み、郵便番号から住所を返答するコンソールアプリ作成

KEN_ALL.CSVとは 日本郵便が無償配布している、郵便番号と住所の対応が収録されたcsvファイル www.post.japanpost.jp KEN_ALL.CSVのレイアウト No. 項目 型 説明 1 全国地方公共団体コード(JIS X0401、X0402) 半角数字 全国地方公共団体コード - Wikipedia…

【解答】C# (dotnetcore) CSVファイルを永続化に利用したコンソールアプリの作成

本エントリは、以下のエントリに対する解答の1つです。 mitsugeek.net 解答(ソース) 各項目の解説 プログラム上の課題 カンマを含められない Main関数の行数が多い ファイルの行数に伴いレスポンスが悪化する 発展のアプローチ コマンドライン引数を使っ…

【課題】C# (dotnetcore) CSVファイルを永続化に利用したコンソールアプリの作成

本エントリは、以下のようなコンソールアプリで、データの保存にCSVを使うというプログラミングの課題です。 仕様 動作の流れ 利用する部品 解答 仕様 起動時に永続化したデータを読み込み、以下のコマンドを受け付ける exitを選ぶまで、説明→コマンド→説明→…

C# (dotnetcore) int型の最大値、最小値を超えるとどうなるか

早速実行 using System; namespace Test { class Program { static void Main(string[] args) { int i = int.MinValue; Console.WriteLine(i); --i; Console.WriteLine(i); ++i; Console.WriteLine(i); } } } 結果 -2147483648 2147483647 -2147483648

C# (dotnetcore) Docker コンテナで実行するコンソールアプリケーションのチュートリアルを実施してみた

このエントリは、個人的にメモをまとめたものになります。 個人的なチュートリアルの補助的役割です。 実施したチュートリアル docs.microsoft.com 事前の準備 Docker Desktop on Macをインストール docs.docker.jp インストールが成功すると、Dockerコマン…

C# (dotnetcore) 暗黙的な型指定(var)を利用する際の指針

参考書籍 独習C# 新版作者:山田 祥寛発売日: 2017/12/15メディア: Kindle版 参考書籍に、「暗黙的な型指定(var)」の使い所が書かれていたので、自分なりに調べてまとめておく。 Q:結局のところ、暗黙的な型指定(var)と明示的な型(2.3.3 項)と、いずれを利用…

C# (dotnetcore) OpenPop.NETでGmailに接続してCAPAコマンドを実行

CAPAコマンドとは、POP3サーバーに実装されている機能を確認する為のコマンドです。 過去記事を振り返りしていたら、 以下の記事を見つけ、 C#でもUIDLが利用できるのか確認してみたので、記事にまとめときます。 mitsugeek.net ログ付きで確認 using System…

C# (dotnetcore) HttpClientを利用してredmineのAPIを叩く(プロジェクト一覧)

注意 単純なコンソールプログラムのため、 HttpClientをusingで囲わないでくださいという警告を無視しています。 redmineを準備 今回テストで利用するプロジェクトです。 redmineのページ ブラウザでアクセスした結果 APIにブラウザでアクセスすると、以下の…

C# (dotnetcore) スキャンしてOCR処理したPDFをiText7(AGPL)を利用して読み込んでみる

注意 iText7はAGPLライセンスです。利用する場合、利用者に対して、全ソースコードを公開する必要があります。 公開サイト等で利用する場合は、商用ライセンスの購入をお勧めします。 やりたいこと PDF名でディレクトリの存在チェック 存在しない場合、ディ…

C# (dotnetcore) Microsoft.Data.Sqlite と System.Data.SQLite の速度比較

前回の記事で作成したプログラムを1000回繰り返してどちらが早いか比較 mitsugeek.net ソース private static void Main(string[] args) { //Microsoft.Data.Sqlite + SQLitePCLRaw.bundle_e_sqlite3 System.Diagnostics.Stopwatch sw; sw = new System.Diag…

C# (dotnetcore) Microsoft.Data.Sqlite と System.Data.SQLite を利用してみる

NuGetでSystem.Data.SQLite.Coreを検索するとMicrosoft.Data.Sqlite と System.Data.SQLiteが現れた System.Data.SQLite.CoreをNuGetで検索 Download数をみると、Microsoft.Data.Sqliteの方が圧倒的に多い。 どっち使えばいいんだろ? ということでどっちも…

C# (dotnetcore)で標準出力を利用して進行中のスピナーを作る (6:完)

Console用のスピナー用の部品を作ろうという連載を初めて6記事目。 Console用のスピナー用の部品の開発は、今回を持って一旦終了とします。 前回の記事 mitsugeek.net Stepの実装を修正 ProgressBar.Step プロパティ をみても、特に何もしていなさそう。こ…

C# (dotnetcore) ディレクトリを指定してZIPファイルを解凍

前回の記事 mitsugeek.net 今回は解凍 前回の記事で圧縮したZIPファイルを解凍します。 今回も、System.IO.Compression を使います。 docs.microsoft.com ソースを記述 using System; namespace ZipArchiveExample { class Program { static void Main(strin…

C# (dotnetcore) ディレクトリを指定してZIPファイルを作成

System.IO.Compression を使います。 docs.microsoft.com 早速やっていきましょう。 テスト用のフォルダ・ファイルを作る mkdirコマンドでディレクトリを作成 mkdir /tmp/test/日本語フォルダ mkdir /tmp/test/日本語フォルダ/test mkdir /tmp/test/日本…

C# (dotnetcore)で標準出力を利用して進行中のスピナーを作る (5)

前回の記事 mitsugeek.net 課題 Consoleへの操作部分のテストをどうするか。 一つの解決策 Console.SetOutを利用して、Console.Outの出力先を変えてしまう。 [Fact] public void ConsoleTest() { var output = new System.IO.StringWriter(); Console.SetOut…

C# (dotnetcore) yield returnイテレーターは使った方が良いのか?

Mac Book Prodの dotnetcore3.1 で確認しました。 結論 結論からいうと、yield returnイテレーターを利用すると、メモリが節約され、若干時間が早くなった。 今回、指定したフォルダ配下のファイルを抽出する関数を、 Listと、IEnumerableでそれぞれ作成し、…

C# (dotnetcore)で標準出力を利用して進行中のスピナーを作る (4)

前回の記事 mitsugeek.net 課題 (updateメソッドの分解(メソッドが長い)) updateメソッドが長い、コメントなしでロジックが16行。コメント等入れて36行。 そんなに長いメソッドではないが、メソッドの内容にいろいろな物が含まれているため、 分別する。 描…

C# (dotnetcore)で標準出力を利用して進行中のスピナーを作る (3)

前回の記事 mitsugeek.net 前回見つけた矛盾を修正する 前回見つけた矛盾、 Value設定後に、Maximum、Minimumに値を設定すると不整合になる可能性を潰す。 Maximumを設定した際に、Maximum < Valueの場合、ValueにMaximumを設定 Minimumを設定した際に、Mini…

C# (dotnetcore)で標準出力を利用して進行中のスピナーを作る (2)

前回の記事 mitsugeek.net 前回は、Minimumプロパティの実装まで実施しました。 Maximumプロパティの実装 ProgressBar.Maximum を参考に。 ひとまずは、Minimumと似たような実装で大丈夫そうです。 違いは既定値が100というところ。 private int maximum = 1…

C# (dotnetcore)で標準出力を利用して進行中のスピナーを作る (1)

どんなものか コンソールでくるくる回って、進捗りつ表示するアニメーションです。 スピナー gifアニメにしてみたんですが、少しわかりにくいですね・・・ youtubeにしてみた youtu.be 単純に出力するプログラム using System; namespace example_Spinner { …

C# (dotnetcore)で標準出力と標準エラー出力 (c#でもUNIX文化のパイプを利用したい)

プロセス間通信の一つである、パイプを利用する方法(標準入力)をC#で前回やりました。 mitsugeek.net 今回は、標準出力、標準エラー出力についてのエントリです。 標準出力 はい。Visual Studio 2019 for Macでコンソールアプリを新規作成した際の状態が、…

c# ( dotnetcore ) の OS確認をMac Book ProでやってみたらUnix 19.5.0.0って出た

プログラム作る using System; namespace example_OSVersion { class Program { static void Main(string[] args) { //OSの情報を表示する Console.WriteLine(System.Environment.OSVersion.ToString()); } } } 実行する Unix 19.5.0.0 sw_versコマンドの結…

c# ( dotnetcore ) で 環境変数を書き込む は利用しない方が良い

前回の記事 前回の記事では環境変数を読み込む方法をエントリしました。 mitsugeek.net 今回は環境変数を書き込む方法をエントリなんですが、環境変数はOSに依存するため、利用しない方が良いようです。 そもそも環境変数はどのような時に使うのでしょうか?…

c# ( dotnetcore ) で 環境変数を読み込む

環境変数の読み込みに対して、特にNuGetでのパッケージのインストールは必要ありませんでした。 環境変数を読み込むプログラム using System; using System.Collections; namespace example_get_environment { class Program { static void Main(string[] ar…

c# ( dotnetcore ) で Microsoft.Extensions.Configuration.Iniを利用して iniファイルを読み込む

The Art of UNIX Programming (アスキードワンゴ)の第5章にある、「テキスト形式 :優れたプロトコルが優れた実践を生む」> 「5.2データファイルメタフォーマツト」>「5.2.6 WindowsINIフォーマット」(P.151)をC#でも読み込みたい。 MacではWin32APIは使え…

c# ( dotnetcore ) で OpenPop.NET を利用して、POP3(Post Office Protocol)を操作してgmailを受信してみる

The Art of UNIX Programming (アスキードワンゴ)の第5章にある、「テキスト形式 :優れたプロトコルが優れた実践を生む」> 「アプリケーションプロトコルの設計」>「ケーススタディ:POP3(Post Office Protocol)」(P.157)をC#でもやりたい。 c#のレッスンで…

C# (dotnetcore)で標準入力 (c#でもUNIX文化のパイプを利用したい)

The Art of UNIX Programming (アスキードワンゴ)にある、 Unixのインターフェイス設計のパターンのフィルタバターン(P.299)をC#でもやりたい。 c#のレッスンで、やり残した課題です。 標準入力を使おうとするとプログラムが止まってしまって困る。 どうやっ…