developer's diary

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

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) DataTableをSerialize/Deserializeする(System.Xml.SerializationとProtoBuf.Dataを比較)

DataTableをシリアライズ /デシリアライズ してみます。 また、XmlSerializerと、protobuf-net-dataでシリアライズで作成されたファイルのサイズ比較、 シリアライズ 、デシリアライズ の速度比較を行ってみました。 用語 用語 英語 意味 シリアライズ Seria…

C# (dotnetcore) 異体字セレクタ(辻辻󠄀)、サロゲートペア文字(𠀋)、絵文字(💡)を扱ってみる。(Visual Studio for Mac環境)

日本語文字ってややこしいです。 「辻辻󠄀𠀋」なんて文字をc#で扱ってみました。 lengthが正しい文字数でないことをご確認ください。 Visual Studio for Mac環境だと文字化け 辻󠄀が文字化け Visual Studio Codeは惜しい 辻と辻󠄀の違いが分からない。 ソース u…

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

本エントリは以下の解答をもう一歩改善した内容 mitsugeek.net 前回の、「カンマを含められない」、「Main関数の行数が多い」を改善。 解答(ソース) 各項目の解説 解答(ソース) using System; using System.Collections.Generic; using System.Globaliza…

【解答】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 項)と、いずれを利用…

PHPでPDF出力 ~ dompdfを利用した「ええ感じ」のサンプル(htmlを利用)

php

tcpdfはこちら tcpdfバージョンのエントリは以下より。 mitsugeek.net dompdfの準備 プロジェクト用ディレクトリ作成 mkdir pdf-example2 ディレクトリに移動 mkdir pdf-example2 composerの準備 composer init dompdfのインストール composer require dompd…

PHPでPDF出力 ~ tcpdfを利用した「ええ感じ」のサンプル(htmlを利用)

php

dompdfはこちら dompdfバージョンのエントリは以下より。 mitsugeek.net tcpdfの準備 プロジェクト用ディレクトリ作成 mkdir pdf-example ディレクトリに移動 mkdir pdf-example composer初期化 composer init tcpdfインストール composer require tecnickco…

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でそれぞれ作成し、…

MacのGoogle chromeをコマンドラインから起動してみる。

なぜか一番アクセスの多い記事 なぜかこのエントリが当ブログで人気のようなので、Macでも同じことをやってみようと思った。 mitsugeek.net MacでChromeを起動する。 引数に、urlを指定すると指定したURLが起動する。 /Applications/Google\ Chrome.app/Cont…

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に依存するため、利用しない方が良いようです。 そもそも環境変数はどのような時に使うのでしょうか?…