2025-01-01から1年間の記事一覧

SQL JOIN で展開されるカウントをクエリ内で使う方法

SQL

結合しない対象テーブル1個だけなら、GROUP BY 句と COUNT関数を使うが、 JOIN で結合したときの展開されるレコード数を求めるあるいは使用した クエリはどうずれば良いか? 目的が、 結合元テーブルの任意カラムの数値 / 結合したときの展開されるレコー…

PlantUML Activity repeat backward にサブダイアグラムを使う

先日、Swim Lane を使用した PlantUML Activity で悩んだ。 oboe2uran.hatenablog.comこの時のもう1つの解としてサブダイアグラムで前のレーンで実行することを 表現したらどうであろう。 @startuml |User| start :新規作成; |システム| repeat backward:{{…

VScode の markdown で表の罫線を出したい

VScode で markdown 表(Table)のプレビューで罫線が出ないのが標準のようである。 使用している拡張機能は、Markdown All in One CSS で table タグのスタイルを指定させて解決する。VScode ワークスペースを使用していることが前提で、 ワークスペースの設…

OpenIconic を使うときのサイズ

PlantUML いろんな場面で、名称、ワードの書き込みで、OpenIconic を使う。 https://plantuml.com/ja/openiconic @startuml listopeniconic @enduml で、使用できるアイコンの一覧を参照できる。 アイコンのサイズを指定しないデフォルトの描画は小さい @sta…

業務フローでよく使われるスイムレーンの悩ましいところ

PlantUML アクティビティ図で描画する業務フローは、差戻しの処理を前のレーンで描画するケース repeat の backward を前のレーンで書くと @startuml |A| start :新規作成; |B| repeat |A| backward :修正; |B| repeat while (検証?) is (差戻し) :登録; end…

PlantUML アクティビティ図で note 以外の注釈

処理の導線に短い説明を付けるのに note で書きたくない場合、 if 文や、repeat 文は、以下のように、( ) 内に簡単なワードで表現することが多い if (条件) then (Yes) else (No) repeat repeat while (条件) is (戻る) while while (条件1) is (Yes) :処理B…

VScode PlantUML の画像エクスポートファイル名

VScode PlantUML の画像エクスポートファイル名は、PlantUML ファイル名でなく @startuml 行で付けた文字列+”."+画像拡張子 になる。 VScodeでは、 PNG形式出力は aaa.pu ⇒ aaa.png にはならない。 @startuml aaa と書いて aaa.png になる。しかも、最新の…

PlantUML で業務フロー図(2)

アクティビティ図で書く業務フローは、repeate 、while を書く時にレーンを書く時に気をつけないと 崩れてしまう。 片側のレーンだけに寄せた描画の例 repeat @startuml |A| start :処理A; |B| repeat:処理B; :処理C; backward :処理D; repeat while(条件1) …

AWSアイコンで書くC4モデルのPlantUML

C4モデル ・コンテキスト(context) ・コンテナ(containers) ・コンポーネント(components) ・コード(code) これらソフトウェアアーキテクチャを記述する方法としてのUMLを書く、 plantUML で書くためのツール github.com使用方法は、 https://raw.gi…

PlantUML で業務フロー図(1)

PlantUML アクティビティ図で業務フローを書く。 @startuml title 業務フロー |__顧客__| :注文; |#mintcream|__営業__| :在庫を確認; :出荷を要求; |__配送__| :出荷; note right:(注)ノート\n(1)AAA\n(2)BBB fork :出荷通知; |#papayawhip|__経理__| :請…

VScode PlantUMLで作成するUML画像の出力先を設定する。

VScode の拡張で PlantUMLを使用して生成するPlantUML のUML画像出力先は デフォルトだと開いているプロジェクトフォルダの下に、out というフォルダを作って その下、あるいは out の下にmarkdown を書いたフォルダと同じフォルダツリーを作成して その下に…

PostgreSQL テーブル列の定義とコメント一覧を抽出

SQL

先日、PostgreSQL テーブルのコメント一覧を抽出 - Oboe吹きプログラマの黙示録 を書いたので、 今度は、テーブルの列の定義とコメント一覧を抽出 任意のスキーマ、テーブルを指定して次のSQLで求める。スキーマ名='public' テーブル名='t_items' SELECT a…

PlantUML で ER図

ER図作成というと、ちょっと前は、draw.ioや、古いけど Eclpse プラグインERMaster あるいは、DBeaber を使っているなら、その中のER図作成ツールなど、、、 あるけど、エンティティを表現するスクリプトをインクルード文法で使い回せるというので PlantUML …

PostgreSQL テーブルのコメント一覧を抽出

SQL

設計者がつけるテーブルの論理名もしくはコメントの一覧を抽出する方法CREATE TABLE 文で設計者が命名するテーブル論理名を付けるのは見たことがなく COMMENT ON TABLE 対象テーブル IS 'コメント’ ; でコメントを付与しているであろう。 テーブル名とコメン…

apache poi Excel 列の挿入

以下、B列をC列にシフトする操作 Sheet のメソッド shiftColumns(int startColumn, int endColumn, int n) startColumn = シフト対象列開始位置のメソッド shiftCendColumn = シフト対象列終了位置 n = シフトする列数 を使って実行すると、 shiftColum…

apache poi Excel 行の挿入

久しぶりに apache poi の Excel 操作の投稿です。 簡単な数式を含む Excel シートに、行を追加した時に数式も再計算させる例です。 以下のような Excel シートがあります。 これに、4行目と5行目の間に行を挿入して、値を追加しても 最終行の SUM関数が自動…

SQLAlchemy クエリ SELECT結果受け取り方法の整理

SELECT結果⇒クラス定義した任意Objectのリストとして受け取る。query() でSELECT結果にあてはまるObjectクラスを指定、from_statement で、 SQLステートメントを渡してall() で結果を受け取る。 session.query(Objectクラス).from_statement(text(完成したSQ…

SQLAlchemy における snake case と camel case

Java では、テーブルカラム名が snake case に対して マッピングする Java Object を camel case とする約束に 拘ることが多いが、Python で拘っているのを見かけない。 それでも、テーブルカラム:snake case ・・・ Pythonの オブジェクト:camel case に …

メッセージ curly brackets Number をPythonでも

curly brackets Number 中括弧 { } で囲んだ番号を 任意の文字列で置換する処理を Java では、 oboe2uran.hatenablog.com を書いた。同様の処理を Python で書いてみた。 正規表現のメソッド re.sub(pattern: str, repl: str, string: str) の repl で lambd…

snake case ⇔ camel case

Python で、snake case 文字列と camel case 文字列の相互変換 import re # snake case -> camel case snakestr = 'a_sde_k_abc_def' result = re.sub('_(.)', lambda x:x.group(1).upper(),snakestr) print(f'{snakestr} -> {result}') # camel case -> sna…

デコレータ dataclass

Pythonクラスを定義作成する時に要素を __init__() で初期化定義の記述は、なかなか面倒くさい。 標準のライブラリ dataclasses からデコレータ dataclassを使用すれば、 __init__の省略のみならず、__repr__ の実装で要素の値を出力してくれて 開発・デバッ…

PostgreSQL GENERATED AS IDENTITY

PosetgreSQL 10以降では、serial の代わりに GENERATED AS IDENTITY が使える。 CREATE TABLE user( id BIGINT GENERATED ALWAYS AS IDENTITY, -- 以降省略 -- シーケンス値の開始から省略せずに書くなら id BIGINT GENERATED ALWAYS AS IDENTITY( INCREMENT…

PlantUML シーケンス図(4)

長めのサンプル @startuml actor ユーザ as User participant main as Main <<Main>> participant Alpha #87CEFA User -> Main : 注文Request activate Main Main -> Alpha : start() activate Alpha #87CEFA Alpha -> Beta : req() activate Beta Beta -> Beta: p</main>…

PlantUML シーケンス図(3)境界線

境界線は、== で題目を囲んだ1行を任意の場所に記述することで表現する。 @startuml participant 処理A as a participant 処理B as b participant 処理C as c a -> b activate b b --> a deactivate b == Initialized == b -> b create c activate b b -> c…

PlantUML シーケンス図(2)if文

if文 then のみ @startuml participant 処理A as a participant 処理B as b participant 処理C as c ||| activate a a -> b activate b b --> a deactivate b opt value > 0 a -> c activate c c --> a deactivate c end ||| @enduml if~else文 @startuml p…

PlantUML シーケンス図(2)loop

ループの書き方 @startuml participant 処理A as a participant 処理B as b activate a ||| loop 1~20 a -> b :call A activate b b --> a deactivate b end ||| deactivate a @enduml シーケンス図における Tips ||| を書くと、間隔を伸ばすことができる。…

PlantUML シーケンス図(1)

PlantUML シーケンス図の簡単なサンプルを改めて書いておく。 マニュアルは、 plantuml.com を参照 @startuml skin rose skinparam shadowing false actor ユーザー as user participant Main as main <<メイン>> participant 処理A as A <<func>> database Databa</func>…

PlantUML 状態遷移図のサンプル

シンプルな例 @startuml skin rose state A state B [*]--> A :開始 A->B :call B B->A :back B-->[*] :終了 @enduml 影(shadow)を取り除き、セルを簡易表示 @startuml skin rose skinparam shadowing false hide empty description state A state B [*]--> …

PlantUML 状態遷移図を書く時は、state 宣言を省略しないように

PlantUML statement diagram を書く時の注意として、 state の宣言を書かず、start [*] からの開始を書かないと @startuml skin rose skinparam shadowing false hide empty description A -> B:call B B -[dashed]> A:call A @enduml 想定する状態遷移図で…

PlantUMLのコメント

1行のコメントは、シングルクォートを先頭に書く ' 1行コメント 複数行のコメントは、/' ~ '/ で囲んで書く /' コメント1 コメント2 ’/