手軽にWebサイトの負荷試験をする

概要 シナリオをきっちり作ってクラスタ立ててやるほどでもなく、でも単一URLにだけリクエストおくるほど単純でもなく、 Webページに同時にn人接続した場合の負荷を調べる程度のテストをしたいときにやったことです。 手順 1. Siegeのインストール Siegeとい…

APIを雑にモックするサービスを作った

概要 EASY API MOCKER 開発をしてるときにAPIのモックがほしいな〜というときが時々あると思いますが、その時に『このパスにこのメソッドとこのパラメーター投げたらこのステータスコードとレスポンス返してね』という設定をしたらそのとおりに動いてくれる…

TypeScriptでfirebase-admin sdkを使う

Node.jsだと公式ドキュメントの通り const admin = require('firebase-admin'); var serviceAccount = require('path/to/serviceAccountKey.json'); admin.initializeApp({ credential: admin.credential.cert(serviceAccount) }); var db = admin.firestore…

Lambda(Node.js)の開発、テスト、デプロイ

概要 Lambda(Node.js)関数を作成するには、手元でコードを書き、zipにまとめてコンソールでアップするとドキュメントにも書かれていますが、実際の開発のときにはもうちょっと手間のかからないデプロイのやり方が必要です。また、デプロイの前には手元で動…

2018年にやったこと[ソフトウェアエンジニアリング関連]

2019年の年始の雰囲気も薄れてきた今になってようやく書く、2018年にやったこととそこから学んだことです。 リストアップしてみるとこうなります。 Lambda(Node.js) Lambdaの概要 test(mocha, chai, proxyquire) Deploy to S3(CodeBuild, CodePipeline, API …

LeetCode: Binary Tree-3

Solve Tree Problems Recursively ツリーの問題は、トップダウンもしくはボトムアップで再帰的に解くことができる。 トップダウンのアプローチでは、最初に探索したノードの子ノードを再帰的に探索する。つまり、このようなやり方になる。 対象ノードが空の…

LeetCode: Binary Tree-2

Level-order Traversal 概要 Breadth-First Search(幅優先探索)は、ツリーやグラフのようなデータ構造を探索するアルゴリズム。 探索はルートからはじまり、そのルート自身をまず訪問済みにする。次に、隣接している階層のノードを探索し、訪問済みとする…

LeetCode: Binary Tree-1

概要 LeetCodeを始めたのでその学習記録です。 Binary Tree まえがき 『ツリー』とは、階層木構造を表すデータ構造である。 ツリーの各ノードは、ルート(根)と、子ノードと呼ばれる他のノードへの参照リストを持つ。 グラフ理論でいえば、ツリーは連結され…

Coursera Service-Oriented Architecture Week3 REST Service

REST API設計の注意点 URIには名詞のみを使う 例えば、大学用のAPIを作るとしたら、/students/や/students/SID/coursesのように、名詞をURIに使う。 (ただしこれは厳密にRESTfulであるとはいえない。よいURIは、リソースを示し、クライアントがそれに容易に…

Coursera Service-Oriented Architecture Week1 Service-Oriented Architecture

Service-Oriented Architecture ソフトウェアは、外部のサービスを利用することができる。天気の情報がほしいときには、観測基地を建てるのではなく天気情報APIを使うなどである。 サービスとは、コンポーネントとは違い、外部(たいていは外部の会社のサー…

Coursera Software Architecture Week3 Analyzing and Evaluating an Architecture

システムアーキテクチャのデザインが、すべてのステークホルダーの関心を考慮したものかどうかをどう判断すればいいのか? デザインの標準ルール・ガイドラインに従うことで、アーキテクチャが基準を満たしたものになることを期待できる。 このレッスンでは…

Coursera Software Architecture Week3 Architectual Trade-offs

Quality Attributes 何がアーキテクチャの良し悪しを決めるのか? 品質をどのように評価するのか? 品質が改善されたかどうかということをどのように評価するのか? 開発プランと開発チーム構築の場面でアーキテクチャをどのように使用するのか? 開発コスト…

Coursera Software Architecture Week2 Learning Objectives-3

Data Flow Architecture Pipe and Filter Architecture Filter: データの変換 Pipe: データの通り道 Filterは『どのようなデータが入ってきて』『どのようなデータが出ていくのか』だけに集中することで、疎結合になる。 また、Filterの内部をブラックボック…

Coursera Software Architecture Week2 Learning Objectives-2

ちょっと体調を崩してしまい、中断していました。今日から再開します Database データを集中管理し、スケーラビリティを確保するため、データベースを使用することが一つの有益な方法である。 データベースを使用する際には、データベースの管理コンポーネン…

起動済みのEC2インスタンスでSystems Managerのセッションマネージャーを使えるようにする

AWS

dev.classmethod.jp dev.classmethod.jp こちらの記事を読んで、今すでに動かしているEC2インスタンスでセッションマネージャーを使えるようにしました。 参考にしたのは↓のドキュメントです。 docs.aws.amazon.com 1. IAMロールの付与 対象のEC2インスタン…

Coursera Software Architecture Week2 Learning Objectives-1

Abstract Data Type and Object-Oriented どのプログラミング言語を選ぶかは、システムの実装に大きな影響を及ぼす。システムに適したプログラミング言語を選ぶことが大切である。 オブジェクト指向の言語を選ぶことは、オブジェクト指向の原則、設計、デザ…

Coursera Software Architecture Week1 UML Architecture Diagram - 3

UML Deployment Diagram ソフトウェアを実際に実行するには、本体のコードだけでなくライブラリ、実行ファイル、インストーラー、設定ファイルなど様々なものが必要になる。 そのデプロイの詳細を図に表すものがUML Deployment Diagramである。 UML Deployme…

Coursera Software Architecture Week1 UML Architecture Diagram - 2

# Kruchten's 4 + 1 view model アーキテクチャの設計のときには、いくつかの観点から見ることが必要。 その『いくつかの観点』が、Kruchten's 4 + 1 view modelとしてまとめられている。 ## Logical View ソフトウェアにどのような機能があるのか? という…

Coursera Software Architecture Week1 UML Architecture Diagram - 1

概要 CourseraのSoftware Architectureコースをはじめました。 やったことを簡単に記録していく記事です。 (ほんとはこれシリーズになってて、この前のコースのObject-Oriented DesignとDesign Patternもやったんだけどちゃんと記録に残してない) Week1 Ov…

puppeteer on DockerでE2Eテストを書いた

要約 puppeteerでE2Eテストを書いたのでその記録です 動機 ショッピング機能のあるサイトを作成しているのですが、UIのちょっとした変更のたびに手動で購入プロセスを踏んでテストするのがとても面倒で自動化したいなと思ったのがきっかけです 選定 もともと…

Yaml比較ツールを作った

サマリー Yaml比較ツールを作りました 仕組み Yamlをまずオブジェクト化し、そのオブジェクトをキーでソートします(子の要素についてもソートします) その後オブジェクトを再度Yamlにし、比較します 構成 Vue.js + 一部JQuery(差分表示のdiff2htmlのため) …

Macでgitのcredential.helper=osxkeychainにアアアアアッてなって削除した話

git

きっかけ メインとサブ二つGithubのアカウントを持ってて、 あるリポジトリでサブのアカウントでpushしようとしてもうまくいかない(Permission denied hogehoge to main-account になる。) 確認 originはhttpsで設定してある。 git config --local user.na…

API Gateway+LambdaをCloudFormationでサクリとつくる

AWS

API Gateway + Lambda + CloudFormation サーバーレス(サーバレス? どっち?)でやるときにおなじみのこのサービス二つの組み合わせなのですが、 API Gateway周りの設定がけっこう面倒なんですよね…… なので一回テンプレートとしてCloudFormationでつくっ…

ゴムのアヒルちゃんとチャットできる Rubber Duck Chatを作成しました

ゴムのアヒルちゃんとお話することにより健康増進学業成就家内安全商売繁盛の効果があることは広く知られていますが、それをオンラインで行うことができる『Rubber Duck Chat』を作成しました。 作成手順は以下の通りです。 1, チャット風のCSSテンプレート…