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

開始ー終了、あるいは、from-to などのリストの連続性を確認する

任意のfrom-toを表現するオブジェクトとして、 import lombok.Data; @Data public class Route{ private Integer from; private Integer to; } こんなクラスがあったとする。これのリストのパターンとして、 想定している Route のリスト、連続性が成立して…

DBeaver のSQL書式設定

DBeaverを使っているのですが、 select などの文字を大文字にするか、小文字にするか、 これら、SQLの句を圧倒的に小文字に書く人が多いのですが、 個人的には、大文字派です。 DBeaverで自動で補完入力する時、小文字が厭で大文字にするなら、 「設定」画面…

Spring DATA JPA Specification

org.springframework.data.jpa.repository.JpaSpecificationExecutorSpecification を使って以下のメソッドで動的クエリを生成できる。 long count(Specification<T> spec) boolean exists(Specification<T> spec) List<T> findAll(Specification<T> spec) Page<T> findAll(</t></t></t></t></t>…

CSV形式の1行分の文字列からList<String>への変換をinterface method にする。

先日書いた、CSV形式の1行分の文字列からList<String>への変換 - Oboe吹きプログラマの黙示録 を単純に、interface のメソッドにする。 import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.List; import ja</string>…

GROUP_CONCAT からCSVにする。

SQL

MySQL の GROUP_CONCAT あるいは、PostgreSQL の STRING_AGG から、CSV1行を作る。 作ってSELECTした文字列は、先日書いた原始的なメソッド CSV形式の1行分の文字列からList<String>への変換 - Oboe吹きプログラマの黙示録 を使って、List<String> を取得する。任意の列で</string></string>…

CSV形式の1行分の文字列からList<String>への変換

RFC4180準拠、カンマ区切り、括り文字はダブルクォーテーションの1行分の文字列 から、List<String> に変換する原始的なロジックで書いたメソッドを ある目的の為に書きました。 Java8以上のコードではなく、見にくくても敢えて原始的なロジックで書いています。 ",</string>…

String の replaceAll で IllegalArgumentException

"\"バックスラッシュへの変換や、"$" 文字を含む replacement への変換を String の replaceAll で実行すると、 IllegalArgumentException: Illegal group reference になるので、注意! しかもこの例外は、replaceAll(String regex, String replacement) の…

MySQL 照合順序の指定エラー Error Code: 1253

SQL

collate utf8_unicode_ciutfbm4 のキャラクタコードに対してこの collate を指定するとエラーになる、 Error Code: 1253. COLLATION 'utf8_unicode_ci' is not valid for CHARACTER SET 'utf8mb4' 以下でデーターベースがどうなっているか確認する SHOW VARI…

日付時刻の最小値最大値とMySQL

Java8 以降、java.time.LocalDate と java.time.LocalDateTime の最小値/最大値は、 LocalDate.MIN → -999999999-01-01 LocalDate.MAX → +999999999-12-31 LocalDateTime.MIN → -999999999-01-01T00:00 LocalDateTime.MIN → +999999999-12-31T23:59:59.9999…

サクラエディタ マークダウン表を作成するマクロ

マークダウン表を作る場合、オンラインの以下も便利なのですが、、 https://www.tablesgenerator.com/markdown_tables下記、紹介の引用です。 たいへん有難い。 [小ネタ]backlogテキスト整形のルール~表の生成技~ ヌーラボの backLog の表を作成する場合で…

サクラエディタ ユニコード変換マクロ

ユニコードのままの文字列を元の2byte文字に変換するマクロunicodeEscape.js var cnt = GetLineCount(0); var result = ''; for (var i = 1; i <= cnt; i++) { // i行目を取得 var str = GetLineStr(i); // \u.... の文字列の配列で取得、大文字小文字は問わ…

サクラエディタのマクロで JSON を整形する

JSON整形をブラウザでオンラインツールなどで行うなら、過去に紹介した JSON Editor の紹介 - Oboe吹きプログラマの黙示録 を使えば良いが、 サクラエディタのマクロに登録しておくものがある。 しかし、ネットで紹介されてるマクロは、複数の項目 or 値があ…

APIのテストには、Insomnia

APIのテストに、curl コマンドばかり使っていたが、 Insomnia という便利なツールがあるんです。https://insomnia.rest/Insomnia Docshttps://docs.insomnia.rest/insomnia/get-startedいろんな開発者に出会ったけど、curl コマンドを使うことに変なプライド…

SourceTree における変更の破棄

Windows環境では SourceTreeをアップデートしてもツールバーの破棄ボタン、 あるいは、変更ソースを右クリックして表示されるコンテキストメニューで 破棄は消えていないが、 Mac環境にインストールした SoureceTree ではこの「破棄」が存在しない。 GITコマ…

TSVを総称型指定のクラスで読込み

昔作成して公開している CSVの読み書き、 GitHub - yipuran/yipuran-csv: Java CSV read and write の中の csvobject · yipuran/yipuran-csv Wiki · GitHub から、CsvObject を継承して、TSV を総称型指定のクラスで読込む。 変更点は、 org.yipuran.csv4j.C…

TSVの書き込み

読込みと同じ方法で対応できる。 oboe2uran.hatenablog.comTSVの書き込みの場合の継承元は、yipuran-csv の Wiki - CSV書き込みを参照 CsvCreator と同じ方法の interface TsvCreator CsvwriteArrayStream と同じ方法の interface TsvwriteArrayStream Csvwr…

TSVの読込み

昔作成して公開している CSVの読み書き、 GitHub - yipuran/yipuran-csv: Java CSV read and write これは、TSV ファイルで使用することを目的にしていなかった。 長いこと開発をしていて、なかなかTSVファイルを対象にすることが少なかった。 この yipuran-…

ATOM後継の Zed editor の Windows版が、なかなか出てこない

ATOM エディタ開発終了になってしまってからかなり時間が経つけど、 後継の Zed editor は、なかなか、Windows版が出てこない。https://github.com/zed-industries/zed/issues/5394

JsonNode を複製した操作に気をつける。

うっかり shallow copy のまま操作してしまうのを注意したい。 サンプル { "A" : "a", "B" : { "B01" : "b01-01234", "B02" : { "detail" : "test_sample", "name" : { "type" : "merge", "len" : 12 } } }, "C" : [ 100, 160, 300 ] } この JSONを表すStrin…

MySQL のJSON型の path書式

SQL

PostgreSQL とは違って、ルートを$文字で指定して、"->" による連結ではなく JSON列名 -> path あるいは、 JSON列名 ->> path で、文字列とての参照になる。 path 部分が、$から始まってJSONキーを '.' ピリオド区切り文字で指定する。例) jdataという列…

MySQL の JSON_SET関数

SQL

PostgreSQL の JSON_SET/JSONB_SET と同じ要領で使うと失敗する。 JSON_SET(json_doc, path, val[, path, val] ...) path の指定は、JSONルートの $ から、区切り文字 '.' ピリオドで指定する。 PostgreSQL のようにキーが存在しなかったらセットする/しな…

JSON の一部の key value を削除する ( Jackson JsonNode )

巨大なJSON、階層が深かったり値の文字列がとても長かったりする時は、整形したとしても とても見にくく目視確認に困る。 確認しなくても済むものは、取り除いてしまいたい。 以下、そんなに大きくないJSON でそういう場合の方法、Jacksonライブラリの JsonN…

PostgreSQL mybatis JSONB型があるテーブルへの insert

例)jbooks というテーブルの列名=jdata が JSONB型だとする。ObjectMapper の writeValueAsString に頼る方法 SQLMap XML で bindタグで、writeValueAsString が働くようにする。 <insert id="insertJbook"> <bind name="jdata" value="objectMapper.writeValueAsString(object)" /> INSERT INTO jbooks (id, title, jdata) VALUES(#{id}, #{title}, '${jda</bind></insert>…

PostgreSQL JSONB 抽出時に出力したくないキー、値を指定する

SQL

例) 列名 jdata というJSONB列に以下の json データが入っているとする。 { "fr": 11, "key": "E", "pub": "ara", "item": { "name": "orange", "group": { "x01": "AX193", "x02": "AX248", "c923": "A_982" }, "price": 231, "oprion": " " }, "point": 1…

コンテナにファイルをコピー/ダウンロード

OpenShift のコマンドのメモ oc rsync <source> <destination> [-c <container>]/home/user/source をコンテナ内 /src にコピー $ oc rsync /home/user/source devpod1234:/srcこれの逆 $ oc rsync devpod1234:/src /home/user/source</container></destination></source>

2つのログファイルをマージする

2つのログファイルをマージするツールを Python で作りました。 【作った理由】 ・Windows にダウンロードしたりしたログファイルを簡単にドラッグアンドドロップの操作で ログ出力のログのタイムラインに沿ってマージしたい。 → パラメータで2個のログフ…

JSONB のキーと他のキーの複合キー(by PostgreSQL)

SQL

先日書いた JSONB の primary key を作る ( by PosetgreSQL ) - Oboe吹きプログラマの黙示録 これでは、目的の主キーとして、任意の列とJSONB型のJSON内の値のキーとする場合の CONSTRAINT を2つ書けない制約でUPSERT文 (ON CONFLICT~DO UPDATE)を思うよ…

JSONB の primary key を作る ( by PosetgreSQL )

SQL

単純に CREATE TABLE の PRIMARY KEY で指定してもエラーになる。 CREATE TABLE public.jsample ( id int4 NOT NULL, title varchar(60) NOT NULL, jdoc jsonb not NULL, PRIMARY KEY (id, jdoc->'item'->>'id') ); SQLエラー [42601]: ERROR: "->"またはそ…

json_set/jsonb_set で NULL をセットする時の注意

SQL

PostgreSQL でのことである。 あるテーブルの JSONB型に、以下のようなJSON値があるとする。 { "a":{ "a1": "Apple", "a2": "Lemon" } } このJSONの"a1" を null にする場合、シングルクォートで括った 文字列 ' null' 指定した以下なら成功する。 UPDATE jb…

PostgreSQL JSON演算子による JSON null の扱い

SQL

JSON型、JSONB型、の JSON の null の扱い まずは JSON演算子の基本から、 "b" 配列の1番目 SELECT '{"a":{"b":[{"c":1},{"c":2},{"c":null}]}}'::jsonb->'a'->'b'->1->>'c' 結果は 文字型で 2 "b" 配列の2番目 SELECT '{"a":{"b":[{"c":1},{"c":2},{"c":n…