気軽に楽しくプログラムと遊ぶ

自分が興味があってためになるかもって思う情報を提供しています。

Confluence PlantUML シーケンス図 ノートの表示位置調整

メッセージに付けるノートが思うように出力できなかったので、記載しておく note 【表示位置】 of 【起点の要素】 【表示位置】 :right left over 【起点の要素】:participantで定義した要素 参考ソースと画面イメージ @startuml participant Alice partic…

AWSやKubernetes周りのツール 概要

AWS App Runner ECRにコンテナイメージをpushまたは、GitHubにコードpushすると、自動デプロイしてくれる コンテナがデプロイされるとApp RunnerがマネージドのLBを設定してくれる コンテナ管理とかVPC周り、ALB,NLBとかscalingなどを隠蔽して提供してくれる…

サービスメッシュとIstio

マイクロサービスの課題 近年、マイクロサービスが大流行しているがネットワークに関係する課題がある トラッフィク管理、可観測性、セキュリティの3つ ネットワークに由来する課題解決のための機能 マイクロサービスシステムの運用には、分散システムのネ…

UUID, ULIDとは?

UUIDとは? 開発時にデータに一意なIDを割り振る際によく用いられる。 UUIDには複数のバージョンがあり、UUID v4がよく用いられている。 特徴 ビット幅は 128ビット(16バイト) で、文字列表現では16進法で以下のような形で表現する。 (32バイト+バウンダリ4…

New Relic アラートについて

New Relicのアラートのコンポーネント構成 アラート条件(Alert Condition)に定義した条件違反が検出されると、Incidentが作成される Incidentは、Alert Policyの設定にしたがってグルーピングされ、Issueとなる IssueがWorkflowをトリガーして、実際にユー…

Kotlin 処理実行時間をhh:mm:ssのフォーマットで出力する

バッチなどで経過時間をログ出力したいときに、ミリ秒表示などではなく時間形式で表示したい場合の処理を記載しておく。 fun main() { val begin = System.nanoTime() /*コードが始まります*/ //2秒間スリープします Thread.sleep(2000) /*コードは終了しま…

UTで現在時刻を扱うとき使う java.time.Clock

UTで現在時刻を扱う際の課題 現在時刻を取得するためにSystem.currentTimeMills()やLocalDateTime.now()などのstatic methodを呼び出して利用することが多いが、static methodを利用して現在時刻を取得するとテストで利用する際の時刻のスタブを用意しずらく…

Kotlin 変数、メソッドの宣言

トップレベル宣言 Javaではクラス内部の定義のみだが、Kotlinではクラスに属さないようにトップレベルに定義、アクセスできる。 インターフェース(sealed interface) クラス(data class/object/value class/sealed class/enum class) プロパティ 関数 type…

Mac Slack便利ショートカット

ショートカット一覧 説明 ショートカットキー チャンネル移動 ⌘+KもしくはT すべてのDMへ移動 ⌘+Shift+K スレッドを確認 ⌘+Shift+T ブックマーク ⌘+Shift+S 全未読画面を開く ⌘+Shift+A 次のワークスペースへ切り替え ⌘+Shift+[ 前のワークスペー…

Envoy Proxyについて

Envoyとは? Nginxと類似した機能を持つOSS マイクロサービスに対応するために、サービス間のネットワーク制御をライブラリとしてではなく、ネットワークプロキシとして提供するために開発された アーキテクチャ アプリケーションと同じホスト上にEnvoyを構…

実行中以外の全体ソースを参照できるPython デバッガー pudb

インストール $ pip install pudb 使い方 pythonのところをpudb に置き換えるだけ $ pudb sample.py コマンド n : 次の行へ (ステップオーバー) s :関数などの内部に入る (ステップイン) b :ブレークポイントを打つ ? : Help ウィンドウが表示 Ctrl + x : 下…

OpenTelemetryとは

OpenTelemetryとは 近年、様々な状況に対して強く、柔軟なシステムが求められ、その中で重要な要素として「Observability」(可観測性:オブザーバビリティ)が求められています。 OpenTelemetryは、Observabilityにおいて必要不可欠なシステムの状態を示す…

報連相の改善について

考えるキッカケ 以下のようなことを思って、少し今の報連相の課題について考えてみる 伝えることの漏れ、一度で伝わらないなどがある 相手の立場に立って、相手のことを考えてわかりやすい言葉を使う、事前情報を伝えるなどが必要と感じた 効率的な会話で時…

gRPCとは

gRPCの概要 RPC (Remote Procedure Call) を実現するためにGoogleが開発したプロトコルの1つ IDL(インターフェース定義言語)を使ってあらかじめAPI仕様を .proto ファイルとして定義し、.protoファイルからサーバー側&クライアント側に必要なソースコード…

クライアントサイド負荷分散 Armeria

CSLB(Client-side load balancing) 参考URL Client-side load balancing and service discovery — Armeria documentation

DB分割(シャーディング)時のMySQLのID採番について

ID採番方法 ✗ auto_increment idが重複する問題があり ◯ sequence tableの作成 ◯ UUIDカラムの追加 ◯ ULID(時系列な並びのID) ◯ UUIDv6, UUIDv7, UUIDv8も時系列順にソート可能 Seaquence データが大規模になると、シーケンス発行がボトルネックなりすい UUI…

Kotlin Coroutines 非同期処理

非同期処理で用いるコレクション Sequence val numberSeq = (1..3).asSequence() val resultSeq = numberSeq .map { println("1st map: $it"); it + 1 } .map { println("2nd map: $it"); it + 2 } .toList() println(resultSeq) Sequenceは、遅延リストのた…

Terraform moduleの構造と使い方

moduleとは? インフラ構成管理ツールのTerraformで共通処理を記述するファイル群 モジュールを呼び出すコード module "リソースの名前" { source = "モジュールを定義したフォルダのパス" パラメーター名 = "パラメーター値" } moduleの構造 入力:variable…

Terraformとは? 概要と参考URL

Terraformとは? IaC(Infrastructure as Code)を実現するためのツール オープンソースで、HashCorpにより、Go言語で開発された インフラ構成を構造化された構成ファイルによって、自動管理可能 コードを見るだけで構成内容が理解でき、コードはGit管理される…

Javaコードを手軽に確認するjshell

IntelliJ IDEA においては、以下操作で、jshellコンソールを開く事ができる メインメニューからツール | JShell コンソールを選択します。 正規表現がマッチするかどうかを確認する場合 Pattern p = Pattern.compile("^[a-zA-Z0-9_+-]+(.[a-zA-Z0-9_+-]+)*@(…

MWAAとは?

AWS

概要 Amazon Managed Workflows for Apache Airflow の略称。(AirflowのAmazonのManagedサービス) 利用メリット マネージドサービスで管理が楽 Dag、Pligin、RequirementsはS3バケットで管理 バッチの可視化が可能で、簡単にON/OFFや起動が可能 Apache AirFl…

コード提案 AIツール

コメントを書いたり、書きかけのソースを理解して、コード補完してくれるツールが2021年頃から話題になっているそう。 GitHub Copilot 料金 個人利用:月契約10 ドル、年契約1 年100 ドル 法人利用:1 か月 $19 (1ユーザー) 参考サイトでの利用所感 テストコ…

Oracle テーブル権限、スキーマ確認コマンド

多くのシステムが連携する場合かつ、一つのDBを参照する場合は、システムごとに DBアカウントを設け、アカウントごとの権限設定をしていたりする。 もしくは、アカウントごとにスキーマを用意して、そこにテーブル追加することで参照、更新可能なテーブルを…

設計、実装確認ポイント(Kotlin)

実装 思想 改修の場合、既存仕様や全体統一感に囚われ過ぎない。シンプル化、保守性向上を意識する 不要項目を含んだオブジェクトパラメータの是正 変数名が設定値と異なる名称であれば是正(影響範囲が広くなりすぎないかは判断) クラス構成 継承よりも移譲…

Oracle アカウントのスキーマへの指定テーブル、権限を確認する

スキーマを確認する -- スキーマ指定テーブルの確認 SELECT * FROM DBA_SYNONYMS WHERE OWNER = 'AAA_SERVICE'; -- スキーマ指定テーブルの確認(テーブル名の指定) --SELECT * FROM DBA_SYNONYMS WHERE OWNER = 'AAA_SERVICE' AND TABLE_NAME LIKE '%AVAI%';…

インフラ用語 WAFとCDN

WAF WAFとは、「Web Application Firewall」 Webサイトを保護する対策のひとつ 機能 「シグネチャ」と呼ばれる、不正な通信や攻撃パターンを識別するためのルールを設定することでWebアプリケーションにおける通信の中身をチェックし、不正な通信や通過させ…

Basic認証の認証情報をリクエストに設定する方法

Basic認証の認証情報をリクエストに設定する方法を簡単に記載しておきます。 Basic認証のフォーマット リクエストパラメータにAuthorizationを設定する Authorization="Basic ${Base64でエンコードした認証文字列}" # Base64でエンコードされた認証文字列 ${…

AWSのサブネット、セキュリティグループ、ネットワークACL

AWSで扱う概念について理解を深めるために記載してみる。 サブネット VPC内のアドレスレンジのこと ネットワーク内の小さな、サブのネット VPCに設定したCIDRブロック範囲に収まる小さなCIDRブロックを割り当てることができる 個々のサブネットは、仮想ルー…

インターネットゲートウェイとNATゲートウェイの違いと使い方

インターネットゲートウェイとNATゲートウェイは、AWSでセキュリティを担保したいAPIサーバーなどを立てる際に使うオブジェクトです。それぞれの大雑把な違いと使い方について参考URLの内容を引用しつつ、説明します。 インターネットゲートウェイとNATゲー…

ネットワーク用語_ACL、CIDR

ネットワーク関連で知らなかった用語をまとめておく ACL(Access Control List) システムやファイル、ネットワーク上のリソースなどへのアクセス可否の設定をリストとして列挙したもの。 ネットワークの場合 宛先と送信元のIPアドレスおよびポート番号を条…