keyem

ソフトウェアエンジニアバックエンド(Python)がメイン。その他最近Golang、少…

keyem

ソフトウェアエンジニアバックエンド(Python)がメイン。その他最近Golang、少しフロントエンド(React、Typescript)、AWS、Terraform、Ansibleなどなど学んだことのアウトプットに。

最近の記事

Cloud Monitoringによるアラート通知

GCPの監視サービスであるCloud Monitoringを用いたアラートの通知方法について概要をまとめます。 アラートの通知方法はアラートポリシーの定義、通知先の設定の2つのステップに分かれます。 アラートポリシーアラートポリシーとは通知を行うための条件が定義されたものになります。監視メトリクス(インスタンスのCPU使用率など)を元にして、期間、動作の仕方の監視を行います。条件には不在条件(特定の期間にメトリクスのデータがない)、閾値条件(特定の期間にメトリクスの値が一

    • Cloud Monitoringのまとめ

      GCPの監視サービスのCloud Monitoringでできることついて簡単にまとめます。 Cloud MonitoringはVMのCPU使用率、ログなどの指標を元にしてアラートを作成したり、グラフ、ダッシュボードを作成、稼働時間のチェックを行うことによりシステムの監視を行うことができるサービスになっています。 大きく分けて3種類の監視の手法があります。 - 稼働時間チェック - アラートの通知 - グラフ、ダッシュボードによる可視化 Cloud MonitoringではG

      • GCPのIAM

        GCPのIAM(Cloud Identity and Access Management)について概要をざっくりとまとめます。 GPCのIAMでは誰が(ID)がどのリソースに対してどのようなアクセス権を持つかを定義することができます。 誰がの部分はメンバー、アクセス権をまとめたものはロール、どのメンバーにどのロールを付与するかを定義したものをポリシーと呼びます。 リソースとはGCE、GCSなどGCPの各サービスのことでIAMの部分ではポリシーがリソースに結びつきます。認証さ

        • Pythonの関数(位置専用引数、キーワード専用引数)

          Pythonの関数の引数には普通に値を渡すだけでなく、特殊な操作も行えます。 位置専用引数関数の引数に「/」を入れると「/」の前の引数を位置引数としてのみ値を渡すことを宣言できます。 具体的には以下のように使用します。 def add(num1, num2, /, num3): return num1 + num2 + num3add(1, 2, num3=3) # 正常に動くadd(num1=1, 2, num3=3) # num1をキーワードで指定するとエラーに

        Cloud Monitoringによるアラート通知

          ASGI とは

          ASGIとはWSGIと呼ばれるPythonのWebサーバとWebアプリケーションが通信するためインタフェース定義の後継仕様となっており、WebSocketと非同期をサポートするように設計されているものです。 ASGI(Asynchronous Server Gateway Interface):非同期サーバーゲートウェイインターフェースです。 まずはWSGIとは以下のようになっています。 WSGIアプリケーションにはapplication関数を定義します。WSGIサーバから

          ASGI とは

          Pythonの型ヒント:基本的なもの

          Pythonの型ヒントの書き方について基本的なものをまとめます。 ・変数 変数の後に型を記載します。 number: int = 1flag: bool = True ・組み込み型 typingモジュールからimportして使用します。 from typing import List, Set, Dict, Tuple, Optional, Unionx: List[int] = [1, 2]x: Set[int] = {1, 2}x: Dict[str, int]

          Pythonの型ヒント:基本的なもの

          GCPのデータベースの種類

          GCPのデータベースにはいくつか種類があるため勉強も兼ねてそれぞれ簡単にまとめました(2020/11/13) GCPのコンソールのデータベースの項目にあるのは2020年11月13日現在以下の6種類となっているためこれらを対象とします。 - Bigtable - データストア - Firestore - Memorystore - Spanner - SQL 全体の概要の把握を目的としているためそれぞれのサービスの詳細についてはまた別の記事でまとめます。 BigtableN

          GCPのデータベースの種類

          PythonのData Classes

          PythonのdataclassはPython3.7からの機能となり、クラスを定義する際の__init__、__repr__、__eq__などの定義を自動で作成し省略できます。 使い方はクラス定義にdataclassデコレータをつけます。 from dataclasses import dataclass@dataclassclass Example: x: int = 0 y: int = 0 e = Example(x=1, y=2)e.x >> 1

          PythonのData Classes

          排他制御(楽観的ロックと悲観ロック)

          データに対して複数のアクセスが見込まれる場合に、同時アクセスにより不整合が発生することを防ぐため、あるトランザクションがデータにアクセスしている時は他トランザクションからはアクセスできないようにして直列に処理されるように制御すること。 具体的な方式としては楽観ロックと悲観ロックが代表的なものになる。 楽観的ロック楽観ロックとは他者との同時更新は起きないであろうという楽観的な前提の排他制御。更新対象のデータが、データの取得時点から更新されていないことを確認し更新を行うことで

          排他制御(楽観的ロックと悲観ロック)

          Pythonのクロージャ

          クロージャとは一言で説明すると関数内の変数の宣言がその関数が宣言されたスコープと同じものとなります。 具体的には下記のように変数xが関数addと同じスコープで定義されています。 def enclosure(x): def add(value): return x + value return add f = enclosure(2)print(f(1)) # 3 最終的な出力される値は3となりenclosureからreturnされたadd

          Pythonのクロージャ

          PythonのWSGI

          WSGIとはPEP333で定義されており、サーバとWebアプリケーションをつなぐ共通のインターフェースとなっています。 これはPythonにはDjango、Flaskなど様々なWebフレームワークがありますが、過去にフレームワークごとに利用可能なサーバが制限されてしまったりしていたためサーバとアプリケーションの間に共通のインターフェースを作成するということで定義されました。 WSGIに則り作成されたWebアプリケーション(WSGIアプリケーション)はWSGIに則り作成されたサ

          PythonのWSGI

          Dos攻撃・DDos攻撃

          Dos攻撃、DDos攻撃についてまとめます。 それぞれ以下のようなアルファベットとなっています。 Dos:Denial of Service attack DDos:Distributed Denial of Service attack ここからDos攻撃はサービス拒否攻撃、となりDDos攻撃は分散型サービス拒否攻撃という意味になります。 具体的にはDos攻撃とはサーバーにリクエストを多数送ることにより、サーバーに負荷をかける攻撃となります。これにより正規の利用者がアク

          Dos攻撃・DDos攻撃

          データベースのACID特性

          データベースのACID特性について簡単にまとめます。 ただその前にACID特性が必要な理由についてファイルシステムとデータベースの違いについて解説します。 データベースはそもそもファイルの集まりですが、ファイルシステムとの違いはデータが整理・統合され重複を省いた無駄のない集まりとなったものになります。 具体的なファイルシステムとの違いは複数のプログラムで共有されるデータであること、プログラムがデータのデータの形式(ファイル形式)、位置についてはプログラムが意識する必要がな

          データベースのACID特性

          SSL証明書の作り方(自己証明書)

          SSL証明書はSSL/TLS接続を行うときに必要になるものです。 TLSの中でサーバーが認証局に認証されたものであるという証明、通信の暗号化のための公開鍵の役割を持ちます。 そのための自己証明書の作り方です。 ローカルでの開発のためなどに使用します。 自己証明書:公開鍵を私有鍵で署名した公開鍵証明書 オレオレ証明書:自らが用意した認証局の秘密鍵で署名しようとするもの ちなみに大手認証局のルート証明書に関しても自己証明書になります。理由としてはルート認証局は最上位の認証局のた

          SSL証明書の作り方(自己証明書)

          Pythonのsocketモジュール

          PythonのsocketはBSDを元にしたOSのソケットインターフェースへのアクセスを提供するモジュールになります。OSのソケットAPIを呼び出すライブラリです。 そもそもソケットとはサーバとクライアントを結ぶ仮想的な接続となり、TCP/IPをプログラムから利用するための接続口となります。 基本的なサーバ、クライアントのソケット通信の処理は以下となります。 サーバ ・ソケットの作成 ・bindで通信のアドレスとポート番号を指定 ・listenでクライアントの

          Pythonのsocketモジュール

          認証・認可の規格(SSO、SAML)

          認証・認可の規格のSSOとSAMLについてまとめます。 シングルサインオン企業内での複数のシステム間のアカウント管理をバラバラに行わず、一度サインインしたら全システムがサインインした状態になるような仕組みです。 方法としてはウェブサービスでは、各サービスの前段にHTTPプロキシをおき、認証を代行する方法や、各サービスに認証を代行するエージェントを入れ、ログイン時に中央のサーバにアクセスしてログイン済みか確認する方法、認証サービスを使用する方法があります。 SAML(Sec

          認証・認可の規格(SSO、SAML)