プログラミング初心者がアーキテクトっぽく語る

見苦しい記事も多数あるとは思いますが訂正しつつブログと共に成長していければと思います

private networkのEC2インスタンスに踏み台インスタンス経由でアクセスする

Private NetworkはInternet Gatewayがなく、Public IPアドレス割当もない、安全なSubnetです。 外部からのアクセスが必要ないEC2インスタンスはPrivate Networkに構築することが一般的です。 それらEC2インスタンスに管理上の理由で外部からアクセスしたい場…

AWSで安全なEC2インスタンスを立ち上げるための鉄則

EC2インスタンスをハッカーに攻撃されて乗っ取られたりしたら嫌ですよね。 でも不必要に怖がっていたらクラウドなんて使えないですよね。 必要なのは正しい知識です。 AWSからBest Practiceが提示されているので理解しておきましょう。 aws.amazon.com 管理…

Linux EC2インスタンスを起動してRemote Desktop接続する

前回はLinxu EC2インスタンスにSSHで接続する手順を紹介しました。 architecting.hateblo.jp しかしGUIを利用したいときもあるかと思います。 今回はAmazon LinuxのMATEというデスクトップ環境へRemote Desktopでアクセスする方法を紹介します。 この公式マ…

Linux EC2インスタンスを起動してSSH接続する

LinuxのEC2インスタンスを作成してSSH接続しましょう。 Step1 Security Groupを作成します 悪意のある攻撃を避けるため、EC2インスタンスに通信できるアドレスを制限します Outbound Ruleは最初から入力されているので必要に応じて変更してください Inbound …

AWSで管理作業用IAMユーザを作成する

AWSアカウントを作成したら最初に実施しておきたいことを紹介しています。 前回はBilling Alarmの有効化について取り上げました。 architecting.hateblo.jp 今回は管理用IAMユーザの作成について紹介します。 管理用IAMユーザの作成 AWSではRootユーザで作業…

AWSでBilling Alarmを有効にする

AWSアカウントを作成したら最初に実施しておきたいことを紹介しています。 前回はRootアカウントのMulti Factor Authentication(MFA)の有効化について取り上げました。 architecting.hateblo.jp 今回はBiling Alarmの設定について紹介します。 Billing Ala…

AWSのRootアカウントのMFAを有効にする

クラウドの勉強のためにAWSのFree Tierでアカウントを作成しました。 アカウントを作成した後、最初にやっておいた方がよいことをまとめます。 まずはRootアカウントのMulti Factor Authentication(MFA)の有効化です。 RootアカウントのMFA有効化 Rootアカ…

Ansibleの基礎

歴史 概要 基本設計理念 製品(OSS) 製品(有償) Dry-run機能 Orchestration機能 機器、ベンダごとのモジュールが必要 構成 module task play playbook inventory 基本的な使い方 実行方法 ansibleコマンド ansible-playbookコマンド 変数 変数(外部ファ…

SeleniumをPythonで使う

Seleniumとは Web ScrapingやWeb UIのテストで利用するブラウザ操作自動化ツールです。 Java、Python、C#、Ruby、JavaScript、Kotlinなどの言語で利用できます。 今回はPythonで利用します。 基本的にはテスト自動化ツール 基本的にはテスト自動化ツールと考…

簡単なPython配布パッケージの作り方

Pythonで書いたコードを利用するときどうしますか? 一番簡単な方法はpythonコマンドの引数として実行することでしょう。 python mycode.py でも実行するたびにコードがあるフォルダに移動したり、逆に実行したいフォルダにコードをコピーしたり、もしくはコ…

SSH接続の近代化 - 公開鍵認証 + コマンド入力簡略化 + 踏み台サーバ対応

目的 自分のPCからSSH接続する機会自体少ないので困ってることはありませんが、環境が旧世代的な感じがしたので改善することにしました。 まず最近、廃れ気味なパスワード認証をやめて公開鍵認証方式に統一します。 踏み台サーバを経由した多段接続では今ま…

テスト駆動開発(TDD)のコーディングの流れ

初学者がTDDでコーディングするとき疑問に思うことは多々あります。 「次はどんな試験書けばいいんだっけ?」 「この試験はどんなコードでパスさせるのが正解なんだろう?」 そこでTDDでコーディングする基本的な流れをまとめてみました。 (久し振りにTDDし…

IntelliJ IDEA + JUnit5のTDD環境セットアップ

IDEを起動してから最低限のTDD環境を整えるまでの手順を記します。 IntelliJ IDEAとJUnit5が前提です。 (久々にJavaを触ったら色々と忘れてたので備忘録として残しておきます) 手順 IntelliJ IDEAでプロジェクトを作成 テストクラスを新規作成 空のテスト…

Terraformの特性を知る

Terraformは優れたツールだ。 Ansibleにはない、純粋な宣言型の振る舞いを経験するとある種の感動を覚える。 しかし使い込んでいくとわかるが癖がある。 ツールを使いこなすにはそのツールの背景にある思想、設計、そして癖を理解することが重要だ。 ここで…

Terraformの基礎

TerraformはInfrastrcuture As Codeを支えるオーケストレーションツールの1つである。 クラウド/非クラウドに関わらずデータセンタ全体のインフラを横断的にコード管理できることから最近、注目度が高まっているようである。抑えておいて損はない。 このよ…

Ansbileは宣言型か?手続き型か?

Ansibleは宣言型だろうか?手続き型だろうか? ドキュメントによって見解が異なるので混乱しやすいポイントだ。 Ansible寄りのドキュメントでは宣言型と言われることが多い。 一方、Terraform、Puppet、Kuberenetesなど純粋な宣言型ツールの視点からはAnsibl…

Javaでprivateなフィールドやメソッドを使う

Javaで単体試験を書いているとPrivateなフィールドやメソッドにアクセスしたくなることがあります。 そんなときはコソッと修飾子をprivateからpackage privateやprotectedに変更したくなりますが絶対にやってはいけません。 危険なだけでなく、アクセス修飾…

pexpectの基本的な使い方

pexpectはTelnetやSSHで実施するような対話形式の作業を自動化するPythonのライブラリです。 pexpectでは、expectで指定する正規表現をうまく設計しないと思わぬ結果を招き、デバッグ作業に時間を取られることがあります。REST APIなどを利用したAPIベースの…

OpenPyXLの基本的な使い方

最強のお絵かきソフトExcelは色々なところで色々な用途で使われています。 このためExcelファイルをプログラムで処理する機会は多いです。 PythonでExcelファイルを処理する場合はOpenPyXLを使うことが多いでしょう。 今回はOpenPyXLの基本的な使い方を紹介…

ウォーターフォール開発の歴史

ウォーターフォール以前 1960年代まではシステム開発は各職人がそれぞれの勘と経験を頼りに行っていた。 しかし1970年代頃になると確立されたシステム開発手法の重要性が強く叫ばれるようになる。 初期のウォーターフォール ウォーターフォールの原型は1970…

Beans、DTO、Entityの違い

Beans、Data Transfer Object、Entity。 いずれもJavaにおいてデータを保持するためのクラスだ。 あまり深く考えず雰囲気で使い分けていた。 ビジネスを表現するデータは「Entity」、 その中でも小粒なものは「VO」。 それ以外でアプリケーションが処理しや…

Javaとスレッドセーフ

前回、メモリリークについて取り上げました。 メモリリークはプログラマ個々人の意識と技量に依存した扱いが難しい問題であることについて触れました。 メモリリークと同様に難しいのがスレッドセーフです。 スレッドセーフを試験で確認するのはメモリリーク…

Javaとメモリリーク

メモリリークは検出するのが難しい問題です。 プロファイラなどの助けを借りることも大事ですが、最大の防御線はプログラマ個々人の意識です。 今回はJavaのメモリリークについては取り上げます。 Javaとメモリ管理 Javaは基本的にメモリを意識しなくてよい…

TDDとファクトリ系のデザインパターン

ファクトリ関連のデザインパターンに関するポエムです。 まともな技術情報は含まれていません。 ファクトリ系のデザインパターン ファクトリ系のデザインパターンには複数種類があります。 GOFのデザインパターン本で紹介されているのは下記2つです。 Facto…

Singletonパターンは使わなくてもいい?

Singletonパターンに関するポエムです。 長文です。 Singletonパターン GOFデザインパターンの中でも最もわかりやすのがSingletonパターンです。 初心者が一番理解しやすいパターンだと思います。 私自身、初めてデザインパターンの本を読んだとき、唯一理解…

2021年にPython 2.7を書いてみた

正確にはPython 3.9で書いたコードをPython 2.7に変更しました。 そのとき感じたことを記録します。 はじまり 作業効率化のために簡単なツールをPythonで作ってみました。 自分の環境では問題なく動作したのですが実環境にうつしたらエラーが発生。 pathlib…

例外処理の設計

例外処理の構造について調べる機会があり、以下の3点について考えてみました。 例外が発生した場合の処理の仕方 エラーを検知したときの例外の発生させ方 例外のcatchの仕方 階層をまたぐ例外 1. 例外が発生した場合の処理の仕方 呼び出したメソッドが例外…

JavaScript ES6 + JestでTDD(fetch API Mock編)

前回、ブラウザ向けのJavaScript ES6コードにfetch APIを導入し、MockなしでTDDする方法を紹介しました。 architecting.hateblo.jp 今回は同じテストをMockで行う方法を紹介します。 なお今回はcar.js側の変更は一切ありません。変更されるのはテストだけで…

JavaScript ES6 + JestでTDD(fetch API Mockなし編)

前回、ブラウザ向けのJavaScript ES6コードをJestでTDDする方法を紹介しました。 architecting.hateblo.jp 今回はcar.jsにfetch APIを導入してテストします。 なぜMockしないのか? 単体試験する際は普通はfetch APIをMockすると思います。 fetch APIをMock…

JavaScript ES6 + JestでTDD(環境構築+基本編)

ブラウザ向けのコードをJavaScript ES6で書きましょう。 コードを書くならユニットテストをしながら書きたいですね。 今回はJavaScriptでTDD環境を整えます。ES6のimportが原因でエラーが出やすいので環境構築部分を詳細に書きました。(長文です) node.js…