一人情シスのつぶやき

名古屋の中小企業で一人情シスをしている作者が、日々の業務で思うことをつぶやきます。

2019-01-01から1年間の記事一覧

WindowsFormでイベントを駆使して入力チェック等を行う場合のポイント

すべてのイベントハンドラを一括で登録、削除する関数を作成する すべてのイベントハンドラの最初で削除し、最後に再登録する イベントの多重起動(Leaveイベント内で別ControlのFocusを実行して再度Leaveが実行される、等)を防ぐにはこれが確実 関数のreturn…

DataRow.Field<int> とConvert.ToInt32 の違い

C#

DataRow.Field とConvert.ToInt32 の違いについて、 int がstringになった場合でも同様。 DataRowの値がDBNullかどうかで分ける場合に var val = (dr["name"] == DBNull.Value) ? "" : Convert.ToString(dr["name"]) とやっていたのだが、 var val = dr.Field<int?></int?>…

WindowsのMariaDBメジャーバージョンアップ後の運用の注意

WindowsのMariaDBを10.2 -> 10.4のようにメジャーバージョンアップする場合について。 バージョンアップ自体は公式サイトの手順に従って行えば良い。インストーラにより、上記の場合はバイナリはC:\Program Files\MariaDB 10.4、データはC:\Program Files\Ma…

Accessのレポート機能の活用

内製のシステムを、Accessベースから.Netに移行している。 その際に最大のネックになるのはレポート機能。 Accessのレポート機能は正直相当優秀だと思う。.Netの有償アプリで同等の機能を持つものを選定すると、開発者向けライセンスが100万レベルのものにな…

NuGetライブラリ整理直後に謎のエラー

NuGetで使用するライブラリをVisualStuidoの管理画面より変更(削除->追加)し、合わせて削除したライブラリに依存するライブラリを削除したところ、dllが存在しない旨を表すエラーが発生。 そのdllを見ると、削除したはずのdll。 App.configを見ると、その削…

Visual Studio 2017でReport Viewerの表示、編集ができない

Visual Studioで久しぶりにReport Viewerを編集しようとしたのだが、右クリックしても何も表示されない。 右上に右向きの矢印が表示されるはずなのだが、それもない... 新しいフォームを作ってReportViewerをドロップしたところ、何も表示されない。 stackov…

MySqlBulkLoaderでの取込結果が合わない

C#でMariaDBに接続する際にMySqlConnectorを利用している。 大量のデータを取り込む必要があったため、MySqlBulkLoaderで取り込んだところ、なんかゴミデータみたいのが入るうえに数字も合わない。 よくよく調べたところ、前段のCSV出力個所と、取込時の設定…

IEnumerableで受けてIReadOnlyListで返すなら

C#

tack41tu.hatenablog.com で記載した方針を受けて、最近はCollectionに関してはIEnumerableで受けて、IReadOnlyListで返す基本方針としている。 一方で、プロパティの変更による予期せぬ誤動作を防ぐために、POCOについてはコンストラクタで初期とを設定し、…

rm /* やってしまった

やってしまいました。 rm ${HOGE}/* HOGEが未定義のため、ルートディレクトリのファイルが全削除。 幸い、rfオプションは付けていなかったので、消されたのはファイルのみ。 CentOS7において、ルートディレクトリに存在するファイルは以下のシンボリックリン…

PowershellのToStringの書式指定ではまった

PowerShellのToStringで数値を書式指定で出力する際にはまった2点。どちらもエラーメッセージが適切ではなく、原因特定に苦労した。 PSVersion 5.1.14393.2969, Windows Server 2016上のISEで開発。Set-StrictMode -Version latest 書式#,#はダメ $num.ToStr…

.netで利用可能な帳票ツール

内製開発している.net(C#)で利用可能な帳票ツールについて調査した。結論としては、高いお金を出さないとまともなツールは手に入らないということ。 価格はすべて税抜き。 使えるが、高い Create!Form: 1帳票設計ライセンス200,000円、1WindowsServerランタ…

Get-ChildItemからのLengthプロパティでのファイル容量取得ではまる

PowerShellで特定のフォルダ配下に存在する一定容量以上のファイルをリストアップするスクリプトを作成。 Get-ChildItem -Recurse . | Where-Object{$_.Length -ge 10*1024*1024 } よくあるお題であちこちにサンプルがあるのだが、なぜかLengthプロパティが…

ClosedXMLにて印刷範囲が設定され、「(」を含むシート名を保存するとファイルが壊れる

ClosedXML 0.93.1, 0.94.2で確認。 印刷範囲を設定したファイルを開いて、「(」を含むシートを作成して保存すると、ファイルが壊れてしまいExcelでは開けなくなる。 workbook.xmlを見る限り、シート名をシングルクォーテーションでエスケープできていないの…

Form Load時にRadioButtonのCheckedChangedイベント発生

C#

C# WinFormにてForm Load時にRadioButtonのCheckedChangedイベントが発生する事態に遭遇。 LoadイベントではCheckedをFalseにしているだけだし、他に怪しいイベントも見当たらない。 原因はTabStopが設定された、最小のTabIndexを持つフォームがRadioButton…

C#でのCollection系オブジェクトの受け渡し指針

C#

C#でCollection系オブジェクト(IEnumerable, ICollection, IList等)の受け渡しをどうすべきか悩んでいた。 ListよりIList, EnumerableよりIEnumerableといった実装を含まないInterfaceが好ましいのは当然として、 あらゆるオブジェクトを想定してより抽象的…

CentOS 7のRedmine 4.0でrmagick build error.

CentOS7のDockerコンテナにてRedmineを構築中にrmagick buildにてエラー発生。 先週は動作したのだが... ログを見ると、rmagickのバージョンは3.0.0で要求するImageMagickは6.8.9以上。インストールされているのは6.7.8Q16のためエラーとなっている。 このrm…

MS Unit TestにおけるDeploymentItem

MS Unit Testにてテストファイルを配布してテストに利用する方法がようやくわかった。 ファイルをソリューションエクスプローラー上に登録して「出力ディレクトリにコピー」を「常にコピー」あたりにすればファイル名で参照できるのだが、ディレクトリは指定…

Ubuntuでmac方式のIME切り替え

macを使い始めて、IMEの切り替え方式をmac方式に切り替えています。Windows10ではIMEの設定をいじっていますが、近い将来mac方式が標準になるようです。 www.itmedia.co.jp Ubuntu 18.04でも変更することができました。 garabakos.sakura.ne.jp

C#におけるIEnumerable,IEnumerator

C#

IEnumerable(IEnumerator)はIListに比べると制約が多く、同じことをやろうとしても面倒、その分汎用性が高い、くらいに思ってました。 実際には、IEnumerableには要素の編集が一切できないのが最も大きな違いだと思います。 stackoverflow.com System.Linqを…