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

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

実行中以外の全体ソースを参照できる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アドレスおよびポート番号を条…

NAT64とは

特殊なIPv6アドレスを利用することでIPv6アドレスを持つ端末から、IPv4アドレスのみを持つサイトへアクセスを可能とする技術です。 この技術により、混雑している従来のIPv4/PPPoE接続方式を使わず、IPv6/IPoE方式で大容量化されたネットワークに接続でき、…

スクラム勉強会

どうしたら、効率的に作業を進められるか? 見積もり 相対見積もり。ざっくりでもストーリーポイントを出すことが望ましい チームの目的によって取りうる選択が変わる ベロシティ(チームが作業を進める速度。開発効率)を上げたいのであれば、ストリートポイ…

ブラウザ操作でもvimっぽく扱う vimvim ショートカット

vim

以下のChrome拡張のショートカットで使いそうなものを記載しておきます。 chrome.google.com これ以外にもありますので、知りたい方はvimiumを追加した状態で?を入力してください。helpが表示されます。 Vimiumはコマンドの繰り返しをサポートしているため、…

Kotlin Coroutineの概念を理解する

以下でCoroutinの使い方をざっくり理解しました。 https://tamata78.hatenablog.com/entry/2021/09/06/174235 上記で理解を進める中でわからなかった概念を補足する情報を記載していきます。 CoroutineScope CoroutineScopeは、コルーチンビルダー関数である…

Javaバージョンを切り替えるjEnvの基本コマンド

jenvのインストール brewでインストール brew install jenv 設定 Bashを使っている場合 echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile echo 'eval "$(jenv init -)"' >> ~/.bash_profile Zshを使っている場合 echo 'export PATH="$HOME/.j…

Brewfile関連の基本コマンド

Mac OSの環境構築を自動化するツールの基本コマンドを記載していきます。 パッケージを探す brew search # caskのパッケージも探せる mas search パッケージのアップデート $ brew upgrade $ brew upgrade --cask $ mas upgrade インストール済みパッケージ…

Mac OS 開発環境初期設定

ターミナル brew install /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" brew install cask クライアントアプリ アプリランチャー、コピペアプリ、 エディタ、docker、メニューカレンダー表示、ブル…

Mybatis キャッシュ設定

Mybatis キャッシュ設定 同じクエリを複数回呼ぶ場合、キャッシュ設定を入れると高速に処理できる可能性があります。 mybatis: configuration: cache-enabled: true # デフォルト有効だが、明示的に記載。 default-executor-type: reuse PreparedStatementを…

Kotlin Coroutineの使い方

以下を写経しつつ、理解をしていきます。 Kotlin の Coroutine を概観する - Qiita Coroutineとは? 軽量なThreadのようなもの 他の処理をブロックせずに並列処理を行える Threadは無視できないコストがかかるが、Coroutineは気にしなくてもよいレベルのコス…

MySQL ギャップロックとは?

現場でギャップロックという聞き慣れない用語を耳にしたので、 以下の記事を参考に理解する。 MySQLのギャップロックとネクストキーロック - 41から始めました MySQLロック ロックの種類 排他ロック DML実行時にトランザクションで最初に取得されるロック ロ…