Lazy Diary @ Hatena Blog

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

Entries from 2023-01-01 to 1 year

平均的プログラマとなるまでに必要な教育時間

satob.hatenablog.com このようなスキルレベルの指標を設けたとしよう。では、まったくの素人から、ある仕事に最低限求められるスキルレベル、たとえばレベル13~15あたりまで教育するにはどれくらいの時間が必要なのだろうか? 自分のエピソードとしては、…

HTTPメソッドのセマンティクスとビジネスロジックのインピーダンスミスマッチ

Webアプリケーションを実装する際に、各処理の実装のトリガとなるHTTPメソッドは何であるべきか?という話は議論の的になりやすいようだ。たとえばStackOverflowによる以下の議論など。 stackoverflow.com ここでは、特にエンタープライズアプリケーションの…

RDBMS製品ごとの特徴的な差異

RDBMS製品ごとの特徴的な差異をまとめた資料とかないんだろうか?たとえば以下。 # 項目 Oracle SQL Server PostgreSQL MySQL HiRDB 1 空文字列とNULLの区別 区別しない 区別する 区別する 区別する 区別する 2 DDLがロールバックできるか(トランザクション…

「できること」と「やっていいこと」の区別 ほか

PvPありのMMORPGにおけるPKやPKKは個々のプレイヤーの嗜好によるものかと思っていたんだけど、最近は「システム上できるようになっている」イコール「そういう風にプレイするもの」と認識しているプレイヤーが相当数いるんじゃないか、という気がしてきた。 …

日本国内におけるSIMスワップの事例

satob.hatenablog.com その後いくつか調べた結果、日本国内でも昨年からSIMスワップの事例が出ていたようだ。 www.yomiuri.co.jp 上記の例だと、氏名と生年月日の確認を行う際に運転免許証を使用したが、この免許証が偽造品だった模様。ということは、本人確…

ファイルのタイムスタンプつき存在証明

こういう、公正証書の電子版みたいなサービスがあってもいいんじゃないかと夢想している。 pic.twitter.com/NKQo4jOGjd— ロボ太 (@kaityo256) 2023年11月4日 面白そうなのでちょっと調べてみた。 公証役場の電子公証 既存のサービスとしてまず思いつくのは公…

2つのフォント定義で1つのフォントを構成できるか?

通常、TTC形式のファイルには複数のTTFフォントファイルが内包されており、それぞれのTTFファイルはOS上からは別々のフォントとして認識される。そのため、ファイルとしては1つだが、フォントとしてはバラバラに分かれて認識される(複数のTTFをインストール…

65535個以上のグリフを保存できるフォントファイルのフォーマット

65535個以上のグリフを保存できるフォントファイルのフォーマットは何か検証するため、Noto Sans CJK JPをもとに、グリフを8個ほど追加してみた。 もともと、FontForgeの[エンコーディング]-[グリフ順]で表示したときに番号0~65534までグリフがみっしり詰ま…

FontForgeスクリプトでフォントに含まれるすべてのグリフの情報を取得する

Noto Sans CJKフォントを開いたFontForgeののウィンドウの一番下を見てみると、ウィンドウ左上のIDが「66183」など65535を超える数値担っていることがわかる*1。一方で、グリフの名前は"Identity.65530"など最大65535個を表す数値のように見える。 そこで、F…

Noto Sans CJKフォント 言語ごとの実装内容の違い

Noto Sans CJKフォントは、複数の言語に対応したフォントが一つのTTCファイルとして提供されている。 github.com これは内部的には複数のTTFファイルでできていて、言語ごとに別れている。 各言語のフォントファイルは以下から取得できる。 github.com unite…

OpenClover 4.5.0リリース

Javaのコードカバレッジ取得ツールOpenCloverの新バージョン 4.5.0が2023年10月4日にリリースされました。 OpenClover - Java, Groovy and AspectJ code coverage tool OpenCloverのいいところは以下の記事にも書いたとおり、ソースコードレベルのC1カバレッ…

ChromeにおけるCSSでのフォント優先度指定とIVSの関係

以下のHTMLでテストした。 Test for Font Link and IVS on HTML · GitHub font-familyが指定されていない場合、ブラウザのデフォルトフォントが使用される デフォルトフォントにBase Characterがない文字は、OSの機能でフォールバックされる模様。\HKEY_LOCA…

submoduleとsubtreeの.gitディレクトリの違い

Git

submoduleの場合 コミットが1つもないリポジトリにはsubmoduleの追加はできない submoduleの先のオブジェクトは.gitディレクトリには保存されない $ git clone https://github.com/satob/main-submodule.git Cloning into 'main-submodule'... warning: You …

ITプロジェクトの失敗原因における「プロジェクトマネジメントに関する」の意味

ITプロジェクトの失敗原因のうち、いちばん多いのはプロジェクトマネジメントに関するもので全体の54%、純粋に技術的なものは3%だけ、という調査結果がある。*1 では、この「プロジェクトマネジメントに関する(attributed to project management)」という…

IE11 Compatibility of JSFiddle Equivalent

# Name URL IE11 1 JSFiddle https://jsfiddle.net/ NG Show error message 2 JS Bin https://jsbin.com/?html,output OK 3 JSitor https://jsitor.com/ NG Show error message 4 CodePen https://codepen.io/pen/ NG Show error message 5 Plunker https://…

System.currentTimeMillis()のOS・JavaVMごとの精度

動機 JavaのSystem.currentTimeMillis()の説明*1には以下のように書いてあるけど本当? System.currentTimeMillis()とSystem.nanoTime()で試してみた。 たとえば、多くのオペレーティング・システムでは、時間を10ミリ秒の単位で計測します。 方法 以下のプ…

PostgreSQLの教育にPostgres-WASMを使う

大量のデータをINSERTしようとするとエラーになる 600行くらいのINSERTを一気に実行しようとすると以下のエラーが出る。 psql:/mnt/test.sql:665: server closed the connection unexpectedly This probably means the server terminated abnormally before …

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を提供するアプリケーションサーバの非機能設計をすることを考える*…