技術とか戦略とか

証券レガシーシステムを8年いじってから転職した普通の文系SEによるブログ。技術のみではなく趣味の戦略考察についても。

NuGetとは

「NuGetって何ができるの?」と聞かれることが少なくないので、何ができるのか簡単にまとめました。一言で言うと、Mavenの.Net版のようなものです。C++やC#のプログラムを開発する時によく使います。 NuGetでは以下のようなことができます。 ・パッケージ(…

C#:Visual Studioで作成したプログラムの著作権表示について

C#

C#で作成した実行ファイルについて、プロパティ > 詳細タブ を確認すると、著作権表示が下記のようになっています。 ・コマンドラインからビルドした場合(コマンド:csc.exe hoge.cs)・Visual Studioでビルドした場合 コマンドラインからビルドした場合は…

html・jsp:submit(ボタン)で画面遷移できない→スペルミスかも

jsp

formをfromとタイプミスしただけでボタン押下で画面遷移できなくなりました…。jspでhtmlコードを生成する場合はEclipse上ではエラーとして検出されず、その上ボタンは表示されてしまうので、原因の特定に時間がかかりました…。 【誤】<%@ page language="jav…

オブジェクト指向言語で良く言われる「委譲」とは

javaやC#といったオブジェクト指向言語のプログラミングの話をしている時に、「委譲」という言葉が出てくる時があります。「委譲」には色々な意味があるのですが、このようなケースでは「具体的な処理が実装されている他のクラスのメソッドを呼び出す」とい…

The transaction log for database (Database_name) is full due to 'LOG_BACKUP'が出た場合の対処法

表題のエラーについて、日本語のサイトの対処法がわかりにくかったり、英語のサイトが引っかかったりするので、日本語でわかりやすい対処法を記事に残します。 表題のエラーはSQLServerのエラーで、簡単に言うと「ログが一杯になりトランザクションが失敗し…

Excel・VBA:表のデータの部分のみ選択する

このように、項目名とデータに分かれている表が存在している場合に データの部分だけ選択するマクロの紹介です。 データの部分だけ消したいような場合に使えます。 マクロの記述は以下の通りです。記述内容は7行のみですが、内容を理解すれば類似処理(最終…

Windowsバッチの動きがおかしい場合に見直すポイント(文字コード、改行コード)

Windowsのバッチファイルは、特定の文字コードや改行コードを使用しないと上手く動きません。具体的には、以下の文字コードや改行コードを用いる必要があります。 ・文字コードは「SJIS」を使用する(chcpコマンドで文字コードを変更しない場合)・改行コー…

C#:try-catch-finally句内のreturnの仕様

C#

表題についてjavaでは調査している記事が別にあったのですが、C#だと調査している記事が見つからなかったので、調査してみました。 C#でも、try句やcatch句の中でreturnを行った場合、returnする直前にfinally句が実行されるという挙動となります。これはjav…

初めてのWindowsバッチ

Windowsバッチを作ったことが無い方向けに、Windowsバッチの用途や使い方を書いた入門的な記事です。詳しいコマンドの使い方は記載しませんので、必要に応じて調べてみて下さい。 【Windowsバッチとは】WindowsOSに標準で用意されている実行ファイル形式であ…

マークダウン記法とは

【マークダウン記法とは】マークダウン記法とは、簡単に言うとマークアップ記法(HTML等)を簡略化したものです。タグを用いることなく、簡単な記法で文書の整形を行うことができます。Wordに代表される文書作成ツールやマークアップ記法の文書よりも簡単に…

Eclipse + Maven で Apache POI を用いてExcelファイルを出力する環境の構築(HelloWorldまで)

Apache POI を用いることで、javaでExcelファイルを出力するプログラムを作成することができるようになります。今回は、環境設定を行い、HelloWorldを試す所まで記事にしました。ライブラリを落としてきたりパスの設定をするのに手間がかかるので、今回は Ec…

C#:await・asyncの簡単なサンプルコード

C#

C#のawait・asyncは非同期処理のために用意された文法なのですが、Webで調べてみても難しく書かれていることが多く、そもそも何のための処理なのか理解するのが難しい感があります。await・asyncを用いて関数を呼び出しても、その関数の処理が終わるまで待つ…

java:walkFileTreeメソッドの使い方

walkFileTreeメソッドとは、ディレクトリ構造を再帰的に走査するメソッドです。Java7で追加されたFilesクラスが提供するメソッドの一つであり、比較的新しいメソッドです。(このメソッドの提供により、ディレクトリ構造については自力でCompositeパターンを…

シーケンス図を書いてマルチスレッドプログラムを整理する

マルチスレッドプログラムを開発していると、どの処理がいつ動くのか把握し辛くなることがあります。そこでシーケンス図を書くと、ややこしいスレッド間の関連をわかりやすく整理することができます。 シーケンス図とは、UMLの一種であり、クラスやオブジェ…

リスコフの置換原則とは

リスコフの置換原則とはオブジェクト指向の設計の原則の一つであり、「基本クラスをにサブクラスに入れ替えても問題なく動かなけらばならない」という原則です。もしサブクラスに入れ替えると正しく動かなくなるのであれば、クラスを利用する側はサブクラス…

単一責任の原則とは

オブジェクト指向の設計ではいくつかの原則があります。その中でも有名な原則の一つが「単一責任の原則」です。 この原則は、その名の通り「一つのクラスに持たせる責任は一つにする」という原則です。この原則が何のために用いられるのかと言うと、複数の理…

C#:セマフォを用いた排他制御

C#

排他制御の仕組みとして先日Mutexを取り上げました(https://akira2kun.hatenablog.com/entry/2020/04/12/170559)。今回は、同じく排他制御で使われるセマフォについて取り上げます。 セマフォがMutexと異なる点は、複数のプロセス・スレッドが資源を取得す…

C言語にはないC++独自の文法の簡単な列挙

C++はC言語を拡張して開発された言語であり、C++ではオブジェクト指向をサポートする文法が追加されています。基本的にC言語で使用していた文法はC++でも使用できるので、学習という面で見るとC言語を扱える方であればC++で追加された文法を覚えればC++も扱…

C#:共有メモリで可変長データを繰り返し送受信する

C#

共有メモリは、同一メモリ上で実行されるプロセス間でデータをやりとりする場合に使用する仕組みです。通常、プロセスで確保しているメモリは他のプロセスから参照することができないのですが、プロセス間で予め共有メモリとして使用するメモリのアドレスを…

WPFでSelectedItemが同期されない→ItemsSourceを先に設定してしまっているからかも

C#

表題の通りです。 XAMLで定義した画面上のリストで特定の行を選択した際、選択した行と結びついているオブジェクトを取得できないことがありハマっていたのですが、SelectedItemを先に定義してからItemsSourceを定義するようにしたら上手く取得できるように…

半角カナの文字コードに関する注意

0x00~0x7FのASCIIコード(半角英数記号やNUL・改行等の特殊な文字)に関しては文字コードセットの違いを気にする必要がないのですが、日本語の文字に関しては複数の文字コードセットが存在し、違いを気にする必要があります。半角カナについても例外ではな…

C#:イベントハンドラとは

C#

イベントハンドラとはC#で標準で用意されている文法であり、イベント送受信の処理を記述するために用意されています。 クラスAでボタンのクリック等のイベントを発行する↓クラスBはクラスAからイベントを受け取り業務処理を行う↓クラスBは業務処理終了時にク…

DLLから別のDLLを呼び出しているかも→「エラー:ファイルまたはアセンブリ 'hoge.dll'、またはその依存関係の1つが読み込めませんでした。指定されたモジュールが見つかりません。」

表題の通りです。DLLから更に別のDLLを呼び出している場合があり、その「別のDLL」はエラーメッセージには出力されません。そのため、必要だと思っているDLLを全て揃えているとしても、エラーメッセージに出力されている'hoge.dll'をexeと同じフォルダに置い…

C#:Mutexでの排他制御

C#

2020/04/18 追記実務でコピペするとAbandonedMutexExceptionが発生し得る若干行儀の悪いサンプルコードだったので、書き直しました。 ----------------------- 排他制御の方法の一つとして、C#にはMutexと呼ばれる機能が用意されています。何れか一つのスレ…

C#:WPFでのHelloWorld

C#

以前の記事では、WindowsFormでのHelloWorld(https://akira2kun.hatenablog.com/entry/2020/03/01/184434)を試しました。今回の記事では、WPFでのHelloWorldを試してみます。 WPFはWindowsFormの後発にあたるWindows向け画面アプリの形式であり、画面がXAM…

java:並行開発を行うためのテクニック

何も考えずにクラス分割を行いクラス毎に開発者を割り当てると、未完成のクラスを取り込むことができず、他のクラスが完成するのを待つ必要が出てきてしまいます。今回は、他のクラスが完成するのを待たずに並行開発するテクニックを、javaの例を用いて説明…

C#:デリゲートの説明(Action・Func、マルチキャストデリゲート含む)

C#

C#のデリゲートの解説は既に色々と出回っていますが、わかりにくい概念であり、色々な人が異なる切り口で説明した方が良いと思うので、私の方でも記事にします。 ---------------------------------------- デリゲートとは、一言で言えば「関数を変数として…

Neutral Face Emoji Tools(Bulk Emoji Uploader)で一括アップロード画面が出てこない件

色々調べてみると、2018~2019年頃にSlack側で絵文字アップロード画面のインターフェースが変わったように見えます。そのため、最新のツールを落とさないと一括アップロード画面が出てきません。 2020/04/04時点の最新は以下で、先ほど試して一括アップロー…

C#:数値リテラル一覧

C#

javaでは数値リテラルの扱いに注意が必要になることがあります。C#の仕様も気になったので、一覧にまとめてみました。 javaとの違いは以下の通りです。・整数型に符号無し(u)、実数型にdecimal型(m)も指定できる ※decimal型は丸め誤差が発生しない実数型、ja…

java:WEBからHTMLファイルを取得するサンプルプログラム

行きつけのサイトのログ(HTMLファイル)を定期的に取得しているのですが、その時に使用しているサンプルプログラムを公開します。Javaの実行環境が整っているWindowsOSで、LogGet.java と LogGet.bat を同じディレクトリに置き、LogGet.bat を実行すると、…