Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

Webアプリケーションにおける誤った悲観ロックの実装方法(Q&A形式)

※(2024/02/11 追記)本記事内で「悲観排他」「悲観ロック」と表記がゆれているが、いずれも悲観的ロック(optimistic locking)を使った排他制御(mutual exclusion)のことを意味している。 Q1: ググると「悲観排他の実装にはSELECT FOR UPDATEを使え」と書い…

Webアプリケーションにおける誤った楽観ロックの実装方法(Q&A形式)

Q1: 排他キーに時刻を使わないほうがいいのはなぜ? A1: 以下のようなケースで楽観ロックが働かず更新が後勝ちになってしまうため。 https://qiita.com/NagaokaKenichi/items/73040df85b7bd4e9ecfc でいう「同一秒に複数の操作」というのがこれにあたる。 最…

VB.NETのMy.Application.Logにはログローテーション機能がない

.NETでは標準でロガーインタフェース(ILogger)が定義されている。処理系組込みの実装としてConsole, Debug, EventSource, EventLogがある*1が、ローカルストレージ上のファイルにログを出力する実装はデフォルトでは提供されていない。 一方で、VB.NETには…

M/M/s(M/M/c)とM/D/s(M/D/c)の特性の違い

M/M/s(M/M/c)は以下の「M/M/s(∞) の諸元」を使用。こちらは解析解として算出。 www.kogures.com M/D/s(M/D/c)は以下のコードを手元で走らせた。こちらはシミュレーションによる解。 github.com yamlモジュールは以下でインストール。 python -m pip inst…

デジタル庁デザインシステムで氏名が必須入力になっている理由

デジタル庁で公開されているデザインシステムのテンプレートでは、個人情報入力時になぜか氏名が別々の入力項目になっていて、しかも両方が必須入力になっている。 www.figma.com 名前に氏がない地域*1や、名前が4つのパーツに分かれる地域(スペインとか)…

エンジニアリングの種別

ソフトウェア工学は工学たり得るか、という問題。 https://www.hillelwayne.com/post/are-we-really-engineers/ では他の「◯◯工学」はどうして工学足り得ると言えるのだろうか? たとえば、扱う対象がconcreteでstaticか、volatileでdynamic かで決まるもの…

ソフトウェア受注開発類型(ソース納品や著作権譲渡の有無の観点)

ソフトウェアの受注開発と一言で言ってもいろいろあるよなぁ、と思ったので、まずはソース納品や著作権譲渡の有無の観点で類型を列挙してみた。 # ベンダ既存ソース利用 ソース納品 ソースの著作権譲渡 改造部分 改造部分の著作権譲渡 コメント 1 しない し…

JavaVMがOOM Killerでkillされた際にヒープダンプは出力されない

JavaVM内でOutOfMemoryErrorが発生した場合は、当然オプションに従ってヒープダンプ(java_pid*.hprof)が出力される。 一方、Linux上で動作するJavaVMがOOM Killerでkillされた場合、同じオプションを指定していてもヒープダンプは出力されない。 以下のよ…

Downsides of JSR-303 Bean Validation

No guarantee of the order of validation in one field No guarantee of the order of fields to be validated No guarantee of the order of error messages Can't use the result of validation in business logic e.g. it will become a bottleneck to i…

Bing Chatによる情報集約はOSINTに利用できるか?

Bing Chatはいろいろなサイトから集めた情報を集約して質問に回答してくれるので、この能力をOSINTの際に複数の情報を集めて結びつけるのに使えないか?と考えて実験してみた。 たとえば、出入国・在留管理に関するシステムとしてFEISというのがあり、そのFE…

Output of jcmd GC.heap_dump is placed in the root directory of the application

Problem When you get a heap dump of a Java application with jcmd like: PS C:\home\satob> jcmd 18228 GC.heap_dump ./demo.hprof 18228: Heap dump file created You will not be able to find the heap dump on the current directory like: PS C:\hom…

英字姓をすべて大文字で書く風習の例 (2)

satob.hatenablog.com 同じ分野で国ごとの記載を比較すれば、分野ごとの違いを無視して国ごとの違いが分かるのでは?*1と考えて、UEFA所属の55カ国(+地域)について、トップリーグの選手名の表示を調べてみたところ、以下のような結果になった。 FIFA各国…

待ち行列理論とサーバサイジングのインピーダンスミスマッチ

待ち行列理論では、通常M/M/1待ち行列から始まってM/M/N待ち行列に進むわけだけど、どちらにしても到着間隔・サービス時間ともマルコフ過程に従うモデルになっている。 では一方で、Web APIを提供するアプリケーションサーバの非機能設計をすることを考える*…

Xから始まる名前の人の割合

知人が「Xから始まる名前の人っていったらだいたい中国人だよ」と言っていたことがあって(その人も中国出身)、いや他にもいるでしょギリシャの人とか、と思ったんだけど、じゃあ具体的にどれくらい「だいたい中国人」なのか。 すっごく雑に Xで始まる名前…

日本国内キャリアのSIMスワップ耐性調査ってないの

大手キャリアのeSIMで出そろい、電話番号を乗っ取る「SIMスワップ」がいよいよ対岸の火事では済まなくなってきました。SIMカードは、本人から直接盗む、店頭でなりすまし再発行、住所変更+再発行、中の人に協力者など乗っ取りのハードルが高かったのですが…

「本当にコンピュータに向いている人は50人にひとり」の出典

Knuthが何かで言ってた「本当にコンピュータに向いている人は50人にひとり」という話、ここに記載があった。 https://www.informit.com/articles/article.aspx?p=2213858&WT.rss_f=Article&WT.rss_a=Twenty%20Questions%20for%20Donald%20Knuth&WT.rss_ev=a …

Amazon RDSのマイナーバージョン自動アップグレード機能の有効・無効はDBMSエンジンごとにデフォルト値が異なる

Amazon RDSのマイナーバージョン自動アップグレードについてググると「デフォルトだと有効」という記載をしているページがいくつか見つかる*1*2。 実際にAmazon RDSのメニューから[データベースの作成]-[追加設定]-[マイナーバージョン自動アップグレードの…

SupabaseのPostgres-WASM環境にDBの初期データをロードする

やりたいこと SupabaseのPostgres-WASM環境に、PostgreSQLの教育用DBを構築したい。 問題(1) DDLを含むSQL文をPostgreSQL-WASM環境のコンソールにコピー&ペーストしようとすると、ある程度の分量(100kBくらい?もっと少ない?)までは問題なく実行できる。…

無線接続ヘッドフォンの再生周波数帯域

昔はヘッドフォンやイヤフォンのパッケージに必ず再生周波数帯域が書いてあったと思うんだけど、最近のヘッドフォンではこれが書かれていないケースがけっこうあるみたい。 そこで、手持ちのヘッドフォン・イヤフォンの再生周波数を動画を使って確認してみた…

コンボボックスとかドロップダウンリストとかプルダウンリストとか

コンボボックスとかドロップダウンリストとかプルダウンリストとか言われるものが何を指しているか、ドキュメントごとに違うように見えるので調べてみた。 ドロップダウンリストの例 Windows User Experience Interaction Guidelines *1 "standard list box"…

LINEの応答に句読点をつけないマニュアル

これ、けっこう深刻な問題で、自殺相談のような十代向けの対応をする機関では、「ツールはLINE」で、かつ、「親近感を出すために句読点をつけない」のがマニュアル化されていた。それくらい句読点に対する(年長者への)忌避感が若い世代にはある。 https://…

Parasoft DTPでソースの変更点にだけ静的解析をかける方法

ソースの変更点にだけ静的解析をかける機能ってないのかな?と思っていたんですが、あるんですね。 parasoft.techmatrix.jp ただし、ソースコードはGitリポジトリ上に格納されている必要あり。リポジトリの場所の指定方法は以下でいいのかな? docs.parasoft…

Parasoft DTPで指摘を抑止するコメントの構文

Parasoft DTP Engine 10.3.3だと// parasoft-suppress ALLというスタイルのコメント*1以外に、/* parasoft suppress item * line 10 */というスタイルのコメント*2がマニュアルに書いてある。 ところが、Parasoft DTP Engine 10.4.1だと// parasoft-suppress…

相談窓口にLINEを用いる根拠が示されてる資料がほしい

これ、けっこう深刻な問題で、自殺相談のような十代向けの対応をする機関では、「ツールはLINE」で、かつ、「親近感を出すために句読点をつけない」のがマニュアル化されていた。それくらい句読点に対する(年長者への)忌避感が若い世代にはある。 https://…

SQLite: Get the information of all tables as HTML

You can get the information of all tables as HTML with headers with a one-liner like this: for i in `sqlite3 AdventureWorks.db ".tables"`; do echo "<h3>$i</h3><table>"; sqlite3 -html -header AdventureWorks.db "PRAGMA table_info('$i');"; echo "</table>"; done Note…

SQLite: Count the number of records in multiple tables with a shell script

Background In SQLite, you can list the name of tables with the .tables command or the following SQL: SELECT name FROM sqlite_master WHERE type = 'table' and name NOT LIKE 'sqlite_%' Problem You can't list the number of columns of multiple …

Postgres-WASMの環境に日本語を入力できない

問題 Postgres-WASMをオンラインで試せるサイト、たとえばSupabaseのPostgres-WASMやCrunchy DataのPostgres-WASMを使ったチュートリアルでは、コンソールから日本語を入力しようとすると文字化けしてしまう。たとえば、Linkedin LearningのSQL基本講座の内…

EdgeのIEモードだとJavaScriptでCtrl-Nの入力をキャプチャできない

IEではCtrl-Nの入力に反応する処理をonkeydownイベントで実装できたんだけど、EdgeのIEモードではそれが使えなくなっているらしいので実験した。 準備 ReplitでこんなHTMLとJavaScriptを用意しておく。 <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>replit</title> </meta></meta></head></html>

Get a deep copy of an object with non-serializable fields with Jackson

Background When you want to get a deep copy of an object, you can use ObjectOutputStream/ObjectInputStream and serialize/deserialize the target object *1 ((Note that SerializationUtils.clone() in Spring Framework requires the class of the …

姓名の分割が行える形態素解析器

前提 姓・名にJIS第1・第2水準外の文字が含まれている日本人はどれくらいの割合でいるか?を調べるときのサンプルとして、国会議員名簿が都合がいい(PCで表示できない文字はその旨書いておいてくれているから)。 問題 姓名が区切りなしで書かれている場合…