2020-03-01から1ヶ月間の記事一覧
Basic認証、Digest認証、Bearer認証、OAuth認証方式はRFCで標準化されている認証方式の中で最もよく目にする方式だろう。 Basic認証とDigest認証は多くのサーバ、クライントで実装されており導入障壁が低い認証方式だ。 機密性の高いデータを扱うサービスで…
Web API認証の混沌 混沌を整理する 認証とはなにか 1. 標準化されたHTTP認証方式 2. APIキー認証 3. Form認証、アクセストークン認証 Web API認証の混沌 認証に成功しないとWeb APIを叩くことはできない。まずは認証である。 認証方法がWebサービスによって…
REST APIなどを使っているとPOST、PUT、PATCHの使い方に悩むことがある。特にPUTとPATCHの違いはわかりずらい上に実際の挙動を見て戸惑うこともある。 REST APIで各HTTPメソッドがどのように振る舞うかは実装依存なのでケースバイケースで調査する必要がある…
WebAPIを取り扱う上で欠かせないURLの構造と各要素の呼び方についてまとめる。 ①スキーム 通信手段 ②ホスト名 主にFQDN IPアドレスのこともある ③ポート番号 TCPポート番号 デフォルトは80番 ④リソースパス ディレクトリとファイル名で構成される ⑤クエリ文…
アーキテクチャ で結局なにを検討するの? アーキテクチャパターン これまで3回に渡ってコードの分割、分割したコードの結合、そしてグループ化について見てきた。 グループ化してリリースされたコードは他のパッケージやライブラリ、外部システムと組み合…
凝集度 原則 分類 これまでコードの分割の仕方と、分割したコードの組み合わせ方を見てきた。今回はグループ化について見てみよう。 クラス同士を組み合わせたらそのまま単一のパッケージとしてリリースしてよいのだろうか? 1つのパッケージでリリースした…
依存関係 1. 非循環式依存関係の原則 2. 安定依存の原則 3. 安定度・抽象度等価の原則 結合度 指標 分類 前回はコードをコンポーネントに分割することについて学んだ。 分割されたコンポーネントは単体では意味をなさない。コードをコンポーネントに分割した…
分割の単位 関数 メソッド クラス モジュール パッケージ ライブラリ マジックメソッド 分割の指針 コードを短時間で書き終えることが目的なら細かく分割せずに1つのコンポーネントにまとめて書いた方が楽だ。 すると後で困る。満足な試験できなくてバグに…
前提 1. Create a merge commit 2. Squash and merge 3. Rebase and merge 比較 まとめ GitのWebUIからブランチをマージしようとするには3つの選択肢が出てくる。 Create a merge commit Squash and merge Rebase and merge 前提 ブランチAをブランチBへマー…
コードレビューの目的 確認すること 所要時間 コードレビューの単位 コミット単位 複数のコミットに対するレビュー ブランチ単位 形式 インスペクション チームレビュー ウォークスルー ペアレビュー パスアラウンド アドホック レビュータイミング プレコミ…
ウォーターフォール うまくいく条件 利点 欠点 批判 IT市場の競争激化 Lean開発という思想 競合の登場 現状 参考 「アジャイル」「アジャイル」とよく耳にする今日このごろ。 では「ウォーターフォール」はどうなったのだろう?そもそもなんでこんなにウォー…
システム開発の現場には自分が書いているコードの脆弱性を気にしない人が結構いる。 「パブリックに公開されないシステムだから」ということだ。気持ちはわからないでもない。確かに非公開サービスが攻撃される可能性は低い。 しかしこれからのセキュリティ…
オーケストレーションツール 構成管理ツール 連携 Chef Puppet Ansible SaltStack Terraform エージェント型とエージェントレス型 エージェント型 エージェントレス型 宣言型と手続き型 宣言型 手続き型 システムの実行を支えるインフラ。サーバ、OS、ミドル…
メリット 1. 起動が早い 2. イメージが軽い 3. 処理が少し早い デメリット 1. OSが選べない 2. カスタマイズ性が低い 3. HW障害やHW交換に弱い 4. ロールバック機能がない 考察 ソフトウェアの実行環境には以下の3つの選択肢がある。 物理サーバ 仮想マシン …
chroot control groups LXC Docker 現在 今のご時世はなんでもコンテナだ。docker、kubernetesは必須知識となった。 しかしコンテナは技術的には新しいものではない。 そんな雑学をひけらかすとユーザから変に信頼されたりたりするので知っておくとよいだろ…
イメージ管理 docker search <image> docker pull <image>:<tag> docker image ls docker image rm <image> docker image build -t <tag> . docker image history <image> docker commit <container> <image> コンテナ管理 docker run <option> <image>:<tag> オプション コマンド 複雑な実行例 参考 dock</option></image></container></image></tag></image></image>…
XMLのnamespace Pythonでのnamespaceの扱い方 XMLのnamespace XMLでは同姓同名の要素に対して異なるnamespaceを割り当てることで名前の衝突を避けることができる。 例えばプログラミング言語のPythonを表す要素pythonと蛇のパイソンを表す要素pythonは以下の…
インストール import 読み込み Iterate 要素へのアクセス minidomはDOMの最小実装でありPython標準モジュールの一部だ。 Python標準ライブラリでXMLを処理するならばElement Treeで十分であり、minidomを積極的に利用する場面は思い浮かばない。しかし標準ラ…
XML処理をする選択肢 インストール import 読み込み 書き込み Iterate 要素へのアクセス XML処理をする選択肢 PythonでXMLを処理するライブラリは多数ある。以下に有名なものを3つ紹介する。 ライブラリ 標準ライブラリ 説明 minidom o 最小のDOM実装 Elemen…
インストール import ファイルから読み込む strオブジェクトをJSON形式で読み込む ファイルへ書き込む strオブジェクトを作成 Iterate 要素へのアクセス PythonでJSONを取り扱うならjson一択だ。 簡単な使い方ならPyYAMLやruamel.yamlと大差ない。しかしJSON…
ruamel.yamlとPyYAML 比較 YAML 1.2対応 インストール import 読み込む 書き込む Iterate 要素へのアクセス ruamel.yamlとPyYAML PythonでYAMLを扱うには選択肢が2つある。 PyYAML ruamel.yaml 今日時点で有名なのはPyYAMLの方だがアップデートが収束しつつ…
インストール 使い方 トラブルシュート 引き続きPythonの実行環境構築についてまとめてみる。 ここまでPythonのバージョン管理、ライブラリ管理の必要性とそれらを実現するpyenv、そしてvirtualenvをみてきた。 architecting.hateblo.jp architecting.hatebl…
基本情報 インストール 使い方 引き続きPythonの実行環境構築についてまとめてみる。 前回はPythonバージョン管理ツール pyenvを紹介した。 Pythonで書かれたツールを実行したり、Pythonで開発する上でPythonのバージョンを切り替えることが重要なことは前回…
基本情報 インストール 使い方 トラブルシュート Pythonは人気が上昇している言語だ。Python製のツールを実行したい、Pythonでなにかを書きたい、ということは珍しくないだろう。このときPythonのバージョンが大事になる。 Pythonに限らずどんな言語で開発さ…
Gitの作業空間は4つある。 RemoteRepository LocalRepository Staging Area Working Directory Gitで作業をしていてこの4つ作業空間で迷子になったことはないだろうか? 「この空間の変更を戻すにはどうするんだっけ?」 「このdiffコマンドはどことどこの差…
管理、設定 git init git config 差分管理 git status git add git commit git rm git stash git stash pop Remote Repositoryとの連携 git remote add origin git push git pull git fetch git clone 取り消し git rm --cached git reset git revert ブラン…
基本情報 特徴 YAMLとの比較 オブジェクト 配列 値 JSONはシステム間のデータの交換によく使われるデータフォーマットだ。 YAMLとの違いを理解して状況に応じて適切な選択、データ構造設計、データ処理ができるようになろう。 YAMLについてはこちらで触れて…
基本情報 特徴 シーケンス マッピング 配列とハッシュの組み合わせ スカラ 複数行文字列の扱い アンカーとエイリアス マージ セパレータ フロースタイル 練習問題 YAML JSON YAMLはシステム間のデータ交換や設定ファイルに使われているデータフォーマットだ…
1. Single Responsibility Principle:単一責任の原則 2. Open/Closed Principle:オープン/クロースドの原則 3. Liskov Substitution Principle:リスコフの置換原則 4. Interface Segregation Principle:インターフェース分離の原則 5. Dependency Invers…
どんなときに使うの? リソースの作成、後処理をクライアントコードに任せずに基盤コード側で実行、制御したいとき。 他のインジェクション方式との比較 コンストラクタインジェクションやセッターインジェクションではリソースの作成、後処理がクライアント…