misc.log

日常茶飯事とお仕事と

業務日誌.NET

NPOIで.NET Framework/C#からエクセルファイルの中身をテキストに吐き出す

大量のエクセルファイルの中身について精査したり文字列調査する必要がありそうだったので、以前使った.NET Framework用のExcelオブジェクト操作ライブラリー「NPOI」を使って、エクセルファイルの中身をテキストにする処理を書いてました。XLSX形式(Office…

ひとつの名称を複数の定数で呼ぶなよ……

久々にひどいコードに遭遇したので記録しておきます。 DBの列名を定数にしている データベースに格納された「製品名」の列を、C#のプログラム中では定数で定義しています。まぁこれ自体は理由があるならば良いと思うのですが、こんな感じです。 const string…

ASP.NETプロジェクトのApp_Codeフォルダー

自社内で誰もこのあたりきちんと新人とかに説明してないだろうから、ちょっとメモっておきます。ASP.NETの開発プロジェクトなどは近年結構変わってきているので、下記の情報はあくまで「ASP.NET Webサイト」タイプの古い開発プロジェクトの話です。最新のASP…

機能追加開発のASP.NETアプリソースが動かない

専門ではないし面倒くさいし環境も整ってないからやりたくないのですが、仕事なので。 現象 既存のASP.NET Webサイトの機能追加で、ソースは開発サーバーから持ってきた物をポイと渡された状態。使ってる.NET Frameworkや使うべきVisual Studioのバージョン…

C# モーダルとモードレスについて新人に伝えた話

今年はほんと、対面での講義や実習もほとんどない(6ヵ月で30日ちょい)という状況で、研修自体も遅れに遅れたのが9月で打ち切られたのでもう新人に何かを伝えることはありません……。ただ、Slackで指示したり伝えたことはメモしておけば誰かの役に立つでしょ…

C#での自作コントロールがツールボックスに出てこない場合の確認点

まぁ新人研修をやることももう当分ないでしょうが、自分でもまたハマったら嫌なので備忘録。自作のコントロールがVisual Studioのフォームデザイン画面左にあるツールボックスに出ないときの確認点。 コントロールクラスが「public Class」になってない場合…

C# StreamReaderでSJIS指定していてもUTF-8のファイルを自動判別することがある

新人研修で課題として作っていたサンプルでたまたま見つけた挙動、というか仕様。忘れないようにメモしておきます。 BOM付きUTF-8ファイルをSJIS指定のStreamReaderで開く 結論:開けます。下記のように、GetEncodingでShift-JISを指定したStreamReaderであ…

C#の設定ファイルが保存される場所はどうやってきまるか

備忘録。 C#で下記のように設定情報を保存した場合に保存される場所は、ユーザーフォルダの下です。が、そのフォルダ名にはハッシュ値のような英数字の羅列が入っています。そして、1つのアプリについて数個のフォルダができていることがあります。これ、な…

DataSource設定をnullにしたコンボボックスに白枠が残る

Visual Studio 2017 + .NET Framework 4.6.1 + C#で、コンボボックスにDataSourceを設定して数件の選択肢が表示された状態からDataSourceをnullに設定すると、ドロップダウン部分に入っていた選択肢分の空欄だけが表示されてしまうという状況が発生しました…

Dispose()メソッドに関するメモ

そろそろ新人研修の質疑応答やレビュー指摘で「Disposeメソッド」が出てくるので……。説明材料などになるものを集めておきます。dobon.netwww.atmarkit.co.jpreferencesource.microsoft.com Effective C# 6.0/7.0作者:BillWagner発売日: 2018/09/05メディア: …

C#でビルド後のファイルを1つに統合する(ILMergeを使う)

先に書いておきますが詳しい使い方とかじゃないです。極力簡単なやりかた。数年前に、客先でちょっとしたアプリを作ったのですが、顧客があまりPCとかに詳しい人では無かったので、成果物を1ファイルにしたいと言うことでILMergeを利用しました。これは、複…

プログラムのお仕事はロジックのストックが結構ものを言う

新人さんに少し伝えたところ感動されたのでメモしておきます……。 プログラミングを行う仕事をやっていると、「これ、以前もつくったよな……」というものに遭遇することが多々あります。もちろん完全に一致というわけではないのですが、なんとなく似てる、ちょ…

ポリモーフィズムを新人に説明するための自分用お勉強

全くIT系の勉強をしてきていない、文系の学部卒を抱えての新人研修で、6月以降も在宅でC#の本を読んでもらうことになりました。個人的には最初は横について、Visual Studio自体の使い方なども教えながら、きめこまかに教えて、ある程度のところで独習にする…

新人研修とVisual Studio

新人研修はどうやら6月いっぱいも在宅のまま進められることになりそうなので、残念ながら対面でのプログラミング研修はお預け。オンラインで、とも言われたのですが、全くの初心者相手、たとえばVisual Studioのような開発ツールの使い方も全く知らない人を…

GrapeCity製品のアクティベーション解除

備忘録。ネットに転がってる情報を少し束ねただけです。近年のGrapeCity製品(ってももう10年以上になる)はインストール時にオンラインでアクティベーションが実行され、GrapeCity社側でインストール本数などの管理が行われます。なので、不正にコピーをイ…

WebサービスをPOST、GETで呼び出せるようにしてみる

新人研修の一環で、ちょっと古いですがASP.NET Webサービス(拡張子 asmxのファイルが配置されるやつ)を作って、HTMLやPHPから呼んでみるというのをやってみたのですが、すこし上手くいかない部分があったので記録しておきます。どうせ来年またハマるだろう…

DataGridViewのコンボボックスセル、クリック一発でドロップダウンを表示させる

下記の内容に関連して、コンボボックスタイプのDataGridViewセルの挙動を改善する例です。 www.backyrd.net DataGridViewのセルをDataGridViewComboBoxDellに指定している場合、コンボボックス右端の逆三角をクリックしてもすぐにドロップダウンリストは表示…

DataGridViewのComboBoxCellで背景色をいい感じに変える

C#にて、DataGridViewのセルをコンボボックスに設定した際に、背景色を変更するとドロップダウンリスト(クリックなどで出てくる選択肢一覧)の背景もどぎつい色に変わってしまうという問題がおきます。これを回避するのに良い方法は無いのかと思ったのです…

Visual StudioのDataSet、クエリー設定でCase文+パラメータでエラーが出る

自分用メモ。詳細についてはまだ精査していないので突っ込みはご容赦を……。 研修課題用のプログラム、C#、Visual Studioで型付きデータセットを作る際に設定するクエリーに、CASE文と、CASE文中に「@」から始まるパラメーターを設定して登録しようとしたと…

DataGridViewのコンボボックスセル背景色を変えたい

自分用メモです。C#で、DataGridViewの列をコンボボックス列にした場合、セルの背景色を変えても無操作時の背景色は変わらず、ドロップダウン部分(下方などに展開される選択肢表示部分)だけに色が付いてしまう問題が発生。そういうものか……とおもいつつ調…

既に列定義されているDataGridViewへのデータバインド

個人用メモ。C#などで使うデータ表示用一覧表部品「DataGridView」で、列の見出しやセルタイプが既に定義されている状態に、DataGridView.DataSourceで表示用データをデータバインド設定する時の設定について触れているサイトがあったのでメモっておきます。…

64bit環境での整数型の選択

忘れないようにメモ。以下、研修で出した話。.NET Frameworkで登場する整数型は、 int …… 32bit 符号付き整数 long …… 64bit 符号付き整数 です。CPUとWindowsなどが64bitなら、64bit整数を使った方がいいのかな?と思いそうなところですが、実際の世の中の…

Visual Studio 2017にクラスデザイナーを追加する

研修でクラス図にちょっと触れたものの、ゼロから描くのも面倒だし、新しいツールを入れて試す時間もないのでVisual Studio自体にそういう機能ないんか?と思って調べたところありました。「クラスデザイナー」。呼び出すには、ソリューションエクスプローラ…

Visual Studioでビルドが行われずスキップされる

Visual Studio 2017で、研修用のサンプルソースをbinとobjフォルダを除外してZip圧縮、配布したところ、展開したソースが下記のエラーで動かないという問い合わせが来ました。プロジェクトをビルドしてからやり直してください……エラーエラーメッセージは「~…

OfficeやVisual Studioライセンスのこと

仕事で使うマイクロソフト Visual Studioのライセンスについて。ライセンス形態は難しいし結構変わるのでついて行くのも大変なのですが、かといって仕事をしていく、特にITの仕事をしていく技術者やマネージメント担当が疎かにしていいものではありません。…

ファイル指定とフォルダ指定の指針

業務アプリだと、データファイルを読み込んでデータベースに記録したり、画面に表示しているデータをファイルとして保存したりというような処理がちょくちょく登場します。そのような処理の設計や実装方針で非常にぶれているような場面があったので、その際…

C#でスコープの宣言を省略するとprivateになる(涙)

新人研修用の課題として、C#で継承クラスを作りカスタマイズ、DLLにして配布してみるというのをやろうとしたのですが……下記のソースでやってみたところ、クラスライブラリーのプロジェクトではフォームデザイナーのツールボックスにアイコンが出てくるのに、…

UTF-8かどうかの判定(C#)

別システムからのデータファイル取り込み処理で、文字コードが不明であった場合にどうするか、という話から、UTF-8かどうかのチェックができるのか?という話題になりました。 UTF-8の種類 UTF-8という文字コードには、BOM(Byte Order Mark)という情報があ…

Visual Studio 2017 でインストーラーを作る(準備)

Windows用に作ったアプリは、Webアプリで無ければPCにインストールしたり、どこかのフォルダにおいて使う必要があります。フォルダにおくだけの場合は別にそれでいいのですが、複雑な設定や、特別な置き場所におく必要があるといった場合は、一般的には「イ…

ハッシュ値を実際に作ってみる

「宅ふぁいる便」というオージス総研がやっていたサービスで、480万件のアカウント情報が流出した件、パスワード情報が平文*1で保管されていたという件が盛り上がっています。 internet.watch.impress.co.jp これで「パスワードが暗号化されていない」という…