技術とか戦略とか

SIerで証券レガシーシステムを8年いじってからSESに転職した普通の文系SEによる技術ブログ。

フローチャートを書く意義と書き方

フローチャートは、処理の流れを図に起こして整理するために使う技法です。フローチャートを起こすことで、他の人に処理の流れを伝えやすくなるので、設計書では良く用いられます。また、自分自身も処理の流れを理解しやすくなるので、複雑なプログラムを組…

java:重複を排除する方法3選

今回は、javaでListの重複排除を行う方法を3つ紹介します。 1つ目の方法は、for文で自力でアルゴリズムを記述して重複排除を行う方法です。記述が冗長になり、コーディングミスも起こりやすいことから、現在の実務ではこの方法で重複排除を行うことはない…

java:標準入出力の入力元・出力先を変更する

javaには・System.setIn・System.setOut・System.setErrの3つのメソッドが用意されており、これらのメソッドにより標準入出力の入力元・出力先を変更することができます。これらのメソッドを利用することで、標準入力や標準出力を使用している処理の立ち振…

「現行機能の踏襲」という要件定義のまずさと、苦し紛れの対応策

私自身は幸運なことに、要件が「現行機能の踏襲」であるプロジェクトに携わったことはないのですが、要件がこれに近いプログラムをプライベートで作成しているので、参考までにその経験を記事として残します。 -------------- 私が作成しているプログラムは…

java:関数を引数として渡す

C#では、こちらの記事のようにdelegateの仕組みを利用して関数を変数として扱うことができます。例えば、引数と引き渡してコールバック処理を実現することができます。 javaでも、8以降であれば関数型インターフェースを利用して関数を変数として扱うことが…

無名クラスとは

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:実務で使うテクニックでfizzbussを解いてみた

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に標準で用意されている実行ファイル形式であ…