技術とか戦略とか

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

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 を実行すると、…

クラス図とjavaソースの対応一覧

クラス図とはUMLの一種で、以下のような形でクラスの定義と各クラスの関係を表す設計図のことです。 今回は、クラス図で使われる記法とjavaソースの対応について、一覧にしてみました。参考になれば幸いです。 【クラス定義】 【各クラスの関係】

javaでのCommandパターン

Commandパターンとはデザインパターンの一種で、1つ1つのコマンド(命令)をそのままオブジェクトとして表現するパターンです。コマンドをオブジェクトとして表現することで、コマンドの管理(追加・削除・実行)が可能になるというメリットがあります。 …

たまたま手元にあったもので立体マスクを作ってみた

無いなら作れば良い、ということで作ってみました。原材料すら入手困難という話もありますが、補修布として使っている古着+使い捨てマスクから切り取ったゴムでも十分作成できました。(ということで、特別に何か用意しなくても工夫次第で作成できると思い…

C#:オブジェクトの中身をコピーする方法(MemberwiseCloneメソッド実装)

C#

参照型変数(主に、自分で作成したクラスのオブジェクト)をコピーする場合、単純に「=」で代入するだけでは不十分な場合があります。参照型変数の中身は参照先(オブジェクトのメモリ領域を示すポインタ)です。「=」で代入するだけでは、参照先だけがコピ…

javaでのStateパターン

Stateパターンとはデザインパターンの一種で、1つ1つの状態をそのままクラスとして表現するパターンです。通常のコーディングだとIF文で状態毎の処理を記述させるためそれぞれの状態でどのような処理が行われるのか読み取りにくいのですが、このパターンを…

WindowsバッチでJavaScriptの関数の結果を標準出力で受け取る

表題の通りですが、WindowsバッチでJavaScriptの関数の結果を標準出力で受け取ることができます。標準出力なので、パイプやリダイレクトも可能です。 JavaScriptで書かれた処理を自動実行したい場合や、JavaScriptのちょっとした仕様調査を行いたい場合等に…

javaでのMediatorパターン

Mediatorパターンはデザインパターンの一つで、複雑に絡み合ったオブジェクト間の関係をMediator(調停者)が整理するパターンです。例えば、10個のオブジェクト間で連携を取る必要がある場合、オブジェクト同士で直接連携を取ると、「自分以外の9個のオブ…

javaでのChainOfResponsibilityパターン

Chain of Responsibilityパターンとは、その名の通り責任が連鎖する構造を表すためのパターンです。あるオブジェクトで解決できない問題を別のオブジェクトにたらい回すようにするのがツボで、そうすることで解決できなかった場合の処理を簡略化できます。 …

C#でのHelloWorld(フォームアプリ)

C#

今回は、C#のフォームアプリについて、HelloWorldを表示するアプリケーションを作成したいと思います。単純に手順通りにHelloWorldを表示させるだけだと今後の開発でつまずきかねないので、「Visual Studio Community」というIDEが何をしていてなぜ動くのか…

javaでのVisitorパターン

Visitorパターンは、Compositeパターンを派生させたパターンであり、入れ物・中身の構造に対して複数の処理を記述する必要がある時に適用します。Entryクラスとは別にVisitorクラスを作成し、Visitorクラスの方に処理を記述することで、構造と処理を分けるこ…

C#でのHelloWorld(コンソールアプリ)

C#

C#のコンソールアプリ(コンソール上で動くアプリケーション)をビルド(実行ファイルを作成)して実行手順をまとめてみました。IDEである Visual Studio Community を使う方法と、Windows OS に標準でついてくるコンパイラ csc.exe を使う方法を紹介します…

javaでのDecoratorパターン

Decoratorパターンは、その名の通りオブジェクトに次々とデコレート(飾りつけ)をし、機能を追加していくパターンです。Compositeパターンと同じように再帰的なクラス構成とすることで、冗長性を排除します。 今回は、じゃんけんの手を作成するサンプルコー…

javaでのCompositeパターン

Compositeパターンは、入れ物のクラスと中身のクラスを1つの抽象クラスでまとめ、同一視できるようにするパターンです。このパターンを取り入れることで、クラスを使う側から見て入れ物のクラスなのか中身のクラスなのかを意識する必要がなくなります。 フ…

javaでのBridgeパターン

Bridgeパターンは、機能のクラス階層と実装のクラス階層を橋渡しするパターンです。機能のクラス階層と実装のクラス階層を分けることで、実装毎に機能を書かなくて良くなりますし、その逆に機能毎に実装を書かなくて良くなります。結果として、重複した記述…

javaでのBuilderパターン

Builderパターンは、処理内容を定義するBuilderクラスと、処理順番を定義するDirectorクラスの2つに分けることで、柔軟に処理を変更できるようにするパターンです。Builderクラスの定義により処理内容が変わっても都度処理内容を記述する必要が無くなり、Di…

java:オブジェクトの中身をコピーする方法(cloneメソッド実装)

参照型変数(主に、自分で作成したクラスのオブジェクト)をコピーする場合、単純に「=」で代入するだけでは不十分な場合があります。参照型変数の中身は参照先(オブジェクトのメモリ領域を示すポインタ)です。「=」で代入するだけでは、参照先だけがコピ…

unix/linux:いつものログイン後画面と違う/いつもは使えるコマンドが使えない場合の対処→ホームディレクトリをls -la で確認する

サーバ管理者から提供されたLinuxの環境で開発している時に、もしかしたら ・ログインした後の左側の表示(プロンプト)が違う (いつもは [hoge]$ なのに bash4.1$ になってしまった、等) ・いつもは使えている(環境独自の)コマンドが使えなくなった と…

人的ミスを考慮した手順の作成

システムを運用する上で、手作業での運用作業は避けられないものです。例を挙げると、プログラムの不具合の対応でデータを補正する、自動的にデプロイできない特殊なプログラムをデプロイする、といった運用作業が発生します。 手作業での運用作業では、コマ…

ターン制・COMと1対1で対戦するブラウザゲームのサンプル

Javascriptのゲームエンジンである「enchant.js」で簡単なブラウザゲームをサンプルで作ってみましたので、ソースコードを公開します。ターン制で、COMと1対1で対戦するタイプのゲームのサンプルです。新しいゲームを作る時の雛形にする等の形でお役に立て…

java:Enumによりコード値に意味を持たせ可読性を向上させる

javaのEnum(列挙型)を使用するメリットとしては、一般的に「使用可能な定数を明確化できる」「定数を複数のクラスで使い回せる」といったメリットが挙げられます。実際に使用していて、コード値に意味を持たせられるというメリットもありそうだったので、…

プライバシーマーク取得企業で働く上での心がけ(一般社員向け)(2019年度版)

私が勤める会社でもプライバシーマークを取得しており、2019年度版の一般社員向けの研修があったので、内容を簡単にまとめます。研修テキストはネットに上げられませんし上げてもあまり意味はないので、一般論的なことを簡単にまとめるだけにします。詳細な…

javaでのAbstract Factoryパターン

Abstract FactoryパターンはFactory Methodパターンを発展させたもので、生成するオブジェクトの組み合わせを間違えないために、1つのFactoryクラスに複数のオブジェクトの生成処理を実装するようにしたものです。 今回は、RPGのキャラクター作成を模したサ…

エクスプローラ上でフォルダを任意の順番で並べる(レジストリ変更無し・フリーソフト未使用)

エクスプローラ上でフォルダを任意の順番で並べたい場合、多くの場合は「00_…」「01_…」のような形で番号を割り振り、名前で並び替えると思います。しかし、フォルダに番号を振らずに作業を進め、既に数多くのリンクが貼られてしまったような状況では、番号…

チェックリストの形骸化とその対策

バグの埋め込みを防ぐために、現場毎でチェックリストが設けられていることが多いです。そのチェックリストには過去のバグの経験則が書かれていることも多く、ある意味宝物のようなものです。 しかし、実際の開発では、そのチェックリストが形骸化することも…

人員追加は必ずしも悪とは限らない

IT業界では、「人員追加」という計画変更の方法はとにかく評判が悪いです。Webで検索すると、「炎上プロジェクトで人員を追加したらますます燃え上がった」という話をあちこちで目にしますし、炎上プロジェクトへの対応案としてはまるでアンチパターンかのよ…

net use によるネットワークドライブ割り当てで「このコマンドの構文は~」と言われる→ダブルクォーテーションで囲っていないのが原因かも

同じエラーで手が止まっている方向けに記事を起こします。 #> net use :z \\hoge\fuga(important)\piyo のようにしてZドライブにネットワーク割り当てを行おうと思った所、「このコマンドの構文は次のとおりです:」という要は「使い方間違ってるよ!」という…