C# 非同期Begin/End(APM)

対応している型

System.IO.Stream
System.IO.Ports.SerialPort
System.Net.Dns
System.Net.Sockets.Socket
System.Net.WebRequest
System.Data.SqlClient.SqlCommand

C# Parallel.For, lock文 メモ

 

C# ショートコードプログラミング・Effective C#

C# ショートコードプログラミングをサラっと読んでみて気になった部分のみメモしておく。

・使っていない引数を削除する。

・少ない利用ならusing宣言を削除する。

・不要な改行を削除し1行にまとめる。

・メソッドを式化する。

・オーバーロードを引数のデフォルト値で置き換える。

・TryParseと三項演算子
int.TryParse(“a”, out int result) ? result : 99)

・null合体演算子を複数使う。
a ?? b ?? c ?? d

・null合体演算子
左辺がnullでない場合は左辺を返す。
左辺がnullである場合は右辺を返す。
??

・null条件演算子
左辺がnullである場合はnullを返す。
左辺がnullでない場合は右辺を評価する。
?.
?[]

・null合体演算子と条件演算子
string n = user?.Name ?? “名無し”

・型判定と型変換を同時に行う。パターンマッチング。
キャストが可能か判断し可能なら右辺の変数に代入される。
if(x is int y){}
switch(x) {case int i}

・配列の縮小・拡大
Where().ToArray()
Concat().ToArray()
Append().ToArray()
Prepend().ToArray()

・コレクションの間に挿入
x.Take().Append().Concat(x.Skip())

・例外フィルタ
try{} catch() when(){}

・名前が必要ない型はタプル

・string.Formatから文字列補完式
$”{}”

Effective C#の第一章(C#言語イディオム)を読んで一言。

・ローカル変数でvarを利用

・constよりreadonlyを利用

・キャストは()よりisかasを利用

・string.Format()より補完文字列を利用

・シンボルの文字列リテラルはnameofで取得

・クラス間のやりとりにデリゲートを利用

・null条件演算子を利用

・ボックス化、ボックス化解除を避ける。値型>参照型(ボックス化)

・継承したメソッドを再定義しない

C# LINQ メモ

基本

 

VBA 表から行

特定の範囲のデータをリスト化する場合、定番なのは行と列のループをネストさせる方法。

行の変数(r)と列(c)の変数をCellsで利用すればOK。見出し等は行や列の数値を固定にする。

PHP+JavaScript(Vue.js) メモプログラム

何かメモを取る場合、テキストファイルにパッと書くことが多いので、ブラウザに書けたらどうだろうと思い作成してみた。

普段からブラウザは開いているし、レンサバに設置すれば外でも見れるので、テキストファイルより便利になりそうと思っていたが、しばらく使ってみて、やっぱりテキストファイルに戻ってしまった。

C#+JavaScript(Vue.js) 工数管理プログラム

製造業では作業時間(工数)の集計は必須。しかし中小企業では作業者が紙に書いて、後々エクセル上で集計というパターンが結構ある。

今回はタブレットを使って作業時間を作業者が直接入力することを想定したプログラムを作成してみた。

タブレットなのでWebインターフェースを採用。専用サーバーを保有していない場合を想定し、C#内蔵の簡易サーバーでリクエストを処理。普通のPCでもソフトを立ち上げておけば処理できる。

書き出しもDBではなく、フォルダ+テキストファイルとして、管理者のPCの知識が少なくても何とか対応できる環境にした。

C#のサーバーVer2

最初はTask.Runで非同期にしてWhileで待受していた。BeginGetContext/EndGetContextを利用する場合。

C# サーバー

最低限の動作。

あるいはこんな書き方

フォームを使う場合

 

LINE WORKSインストール

有料版と無料版で同じプログラムなのか不明だが、手抜きなのか?と思うほど不安定。直近でPC数台にインストールして発生した問題。

・連絡先から新規トーク送信時(トークルーム作成時)によく落ちる。ほんと頻繁に落ちる。クラッシュレポートを呼んでストンと落ちて固まったりしないからいいんだけど。

・連絡先から新規トーク送信時に出てくる新しいウィンドウと本体のウィンドウのサイズが違う。まぁ、サイズの違いはいいとしても…本体をデスクトップの下側に置いておくと新しいウィンドウがデスクトップからはみ出る。新しいウィンドウが画面からはみ出るのはどうかと。

・一度設定するとプロフィール写真が消せない。トークでは表示されていないようだけど、マイプロフィールからは消えない。

・インストール完了後、起動しない。エラーレポートを見るとig75icd32.dllが原因と出てるので、Intelグラフィックドライバーをメーカーサイトから落として更新すると起動できた。この程度軽量のアプリでドライバーの影響で落ちるのはどうなんだろう。

・インストール時にパスを選べるがアンインストールは選んだパスでアンインストールの処理をしないっぽい。それにインストールのパスを変えると、全ての文字が化けて動作がおかしくなる。

最後の2つはライブラリの影響かと思うけど、ビジネスユースでこのクオリティは酷い。導入実績がすごい数あるけど、絶対問題出ているだろうと思う。

・追記(数カ月後)

PC版の更新が来て、落ちることはほぼなくなった。

iOS/Androidスマホ、Androidタブレットにも数台インストールしてみた。

・スマホは特に大きな問題は発生していない。

・Androidタブレットは酷い。トークが届くまで遅い。忘れたころに届く。最悪届かない…こりゃ酷い。

・同じアカウントの、PC、スマホ、タブレットのトークがしっかり同期しない。アプリで更新のボタンをおしたり、端末を再起動しても同期しない。

何というか、全体的に不安定。同期しないとか届かないとか。導入実績がすごい数あるんだから、絶対クオリティについて把握してると思うんだけど、まぁアプリのコメントを読んでみると問題がないという評価は多いけど、一定数通知が出ないとか不安定という評価があるし、現時点でも放置ということは対応するつもりがないんだろうな。

現状オススメできないかな。こういうサービスは一度導入すると他への移行も大変だし止めたほうがいい。

・追記(一年近く使って)

PCはある程度安定しているが、どうもAndroidのタブレットはダメっぽい。届くのが遅いというの部分は、結局解決しなかった。

数台のPC(スマホやタブレットの利用はなし)で実際の業務に利用していて、利用者からはわりと好評。ビジネス向けのチャットサービスはいくつかあるけどUIが慣れたLINEというのがいいのだろう。

情シスがない規模の中小企業で、まだメールがメインって状況なら入れてもいいかもしれない。

通常のLINEと同じようなUIなのでPCに詳しくない人でも使いやすい。

C# Excel操作③