技術とか戦略とか

IT技術者が技術や戦略について書くブログです。

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

無名クラスとは

javaやC#では、インスタンス変数をnewする際に、後ろに中かっこを記述し定義を行うことができます。ここで定義されるものは「無名クラス(匿名クラス)」と呼ばれ、クラス名を新たに定義することなく、インスタンス変数のクラス・インターフェースを継承・実…

動的計画法を試してみた

動的計画法とは、再帰的なロジックを、計算結果を都度記録するロジックで代替することで、計算速度を向上させるテクニックです。競技プログラミングのテクニックの一つなのですが、高度なアルゴリズムを実装する開発だけではなく普通の業務システム開発にも…

続・singletonとstaticの違い

こちらの記事について社内外でちょっとした議論になったので、その内容をまとめてみました。Singletonパターンを利用する理由は「外部からnewさせたくないから」だと思っていましたが、「そう書いた方がわかりやすいから」「staticではないメソッドも利用可…

O/Rマッピングの簡単な説明

今更ですが、O/Rマッピングについて、背景にある考え方や必要な機能、問題点を簡単にまとめました。ちなみに、私も性能問題の対応案件でO/Rマッパーを少し使ったことがあります。その時の体験も元にしてまとめます。 【O/Rマッピングが生まれた背景】O/Rマッ…

SpringFrameworkのAOPとは

AOPとは、「アスペクト指向プログラミング(Aspect Oriented Programming)」の略称です。「アスペクト」を日本語に直訳すると「相」ですが、プログラミングの世界では「オブジェクト指向ではうまく分離できない横断的な機能」のことを指します。代表例とし…

型推論とは

型推論とは、メソッド内のローカル変数を初期値付きで(右辺がある状態で)宣言する際に、通常の型宣言の代わりに"var"という仮の型を使用できるという文法です。"var"を用いた際は、コンパイル時に自動で型を判断し、その型への置き換えが行われます。 C#で…

ソースコード修正の競合と統合

複数の案件が同時に動いており、1つのソースコードを複数の案件で修正する場合、ソースコード修正の競合(コンフリクト)の統合(マージ、差分取り込み)が必要になります。統合には、全体のロジックの整合性や案件のリリース時期の違いを考慮する必要があ…

C#・WPF:DatePickerの日付フォーマットを変更する

C#

DatePickerのSelectedDateFormatプロパティで表示される日付のフォーマットを変更できます。Longを指定するとToLongDateString()メソッドの戻り値、Shortを指定するとToShortDateString()メソッドの戻り値が表示されます。 更に、ToLongDateString()メソッド…

情報処理技術者試験対策「スタック・キュー」

データをメモリに一時的に保持する仕組みとして、スタックとキューがあります。今回はスタックとキューについて説明します。 スタックは先入れ後出し、キューは先入れ先出し方式でデータを保持します。例えば、a,b,cの順番でデータを投入する場合、スタック…

Windows環境でツールを入れずにMySQLのUTF-8の日本語項目を操作する

Windows環境でMySQLを使う場合、UTF-8の日本語項目の操作が難しいです。というのも、コマンドプロンプトでMySQLを操作する場合、chcpコマンドでコードをUTF-8(65001)に設定してしまうと日本語が扱えなくなってしまうためです。(コマンドプロンプトでUTF-8に…

フィボナッチ数列と見積もりへの応用

フィボナッチ数列とは、0,1,…から始まる数列であり、左の2項を足し合わせた数が続く数列のことです。続きを書くと、0,1,1,2,3,5,8,13,21,34,55…となります。 フィボナッチ数列は、「ストーリーポイント」と呼ばれる見積もり手法で用いられる数字です。スト…

C#:MissingMethodException(メソッドが見つかりません)←ビルド時に読み込むLIBと実行時に読み込むDLLのバージョンの違いかも

C#

表題の通りです。実行環境にあるDLLファイルのバージョンが誤っていたので、正しいバージョンのDLLファイルに入れ替えたらエラー解消しました。(PDBファイルも入れ替えました) デバッグ実行している時に、ソースファイルが変更されている旨のポップアップ…

java:実務で使うテクニックでfizzbuzzを解いてみた

10年ほど前に流行ったプログラミングの問題として、fizzbussと呼ばれる問題があります。この問題は、応募者のプログラミング経験の有無を見極める問題であり、問題の内容は以下の通りです。・1から100までの数を出力する。・3の倍数の時は代わりに"fizz"と…

プログラミングにおけるトランザクションの基本的な考え方

情報処理技術者試験では「トランザクション」はデータベースにおける考え方の一つとして取り上げられていますが、実際にプログラミングを行う際にもトランザクションを意識することは重要になります。画面でもバッチでも重要になります。 例えば銀行システム…

Word:勝手に番号が割り振られないようにする(設定を変えずにWordの良さも殺さずに)

Wordを使っていて思い通りに文書が書けないことは良くあります。良くある悩みの一つは、「勝手に番号が振られてしまう」というものです。 例えば、「1.ほげ」と入力して、Enterを押下すると、以下のように勝手に番号が振られます。 これは、「1.」と入力…

TortoiseSVNのアイコンのマーク(オーバーレイ)が表示されない→再起動しただけで直るかも

SVN

TortoiseSVNをインストールしたのですが、アイコンのマーク(オーバーレイ)が表示されませんでした。表題の通り、再起動したら表示されました。 オーバーレイの設定はレジストリを変更して行われているようで、その設定を読み込むには再起動が必要なようで…

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の一種であり、クラスやオブジェ…