Lazy Diary @ Hatena Blog

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

Dan Abramovにビジネスロジックを開発させたらできそうなこと

Reactの共同開発者であるDan Abramovが「俺はなんでも知ってるわけじゃない」として書いたブログがある。 overreacted.io 「あれも知らない、これも知らない」という調子で書かれているのだが、じゃぁ(本人が専門分野だと言っているReactやJavaScript、忘れ…

システム開発に使用する言語の習得にかける時間の例

まったくの素人から平均的プログラマとなるまでの時間*1の他に、システム開発への採用可否を判断できるまでにはどれくらいの時間が必要か?というのもある。 全く見ず知らずの言語をシステム開発に採用するのはリスクが高い、一方で言語に完璧に精通してから…

アジャイル型ソフトウェア開発におけるmoving targetという語の初出

「アジャイル型ソフトウェア開発はmoving targetを撃つためのプロセスだ」と大学で習った覚えがあるんだが、初出がパッと出てこなかったので調べた。 まず検索に引っかかったのが、Koppensteiner, S. & Udo, N. (2003). Will agile development change the w…

情報システムにおける「排他処理」のバリエーション

一言で「排他処理」と言っても、Javaで実装したWebシステムで「排他」というキーワードに関連する処理を考えただけでもこれだけある。初学者はこれらがごっちゃになることも多いんじゃないかと思うのだけれど、こういう切り口でノウハウをまとめた書籍とかっ…

ソフトウェア工学分野における知識体系

satob.hatenablog.com 私が大学の頃に授業で紹介されていたComputing Curricula 1991 (CC91)は、その後2005年にComputing Curricula 2005 (CC2005)*1、2020年にComputing Curricula 2020 (CC2020)*2として改訂が行われている。内容も年を経るごとに大幅に拡…

Comparison of JavaScript libraries for QR code generation

# name URL License Last commit Stars 1 QR-Code-generator https://github.com/nayuki/QR-Code-generator MIT 2024/1/31 4640 2 node-qrcode https://github.com/soldair/node-qrcode MIT 2023/4/22 7036 3 qrcodejs https://github.com/davidshimjs/qrcod…

Access results to HTTP probe sites for captive potals

# Site note Chrome Firefox Edge IE iOS Safari 1 http://www.alwayshttp.com/ HTTP HTTP HTTP HTTP HTTP 2 http://neverssl.com HTTPS HTTP HTTPS HTTP HTTPS 3 http://example.com/ HTTP HTTP HTTP HTTP HTTP 4 http://www.msftconnecttest.com/connectte…

Computing Curricula 1991における12の頻出概念

ACMとIEEE-CSは、1991年に計算機分野における教育カリキュラム案「Computing Curricula 1991」*1を作成している。 この中では、コンピュータ・サイエンスにおける基本的発想が、12個の頻出概念(または再起概念、Recurring Concepts)という形でまとめられて…

ASCIIとLatin-1の各文字の文字タイプ

以下のスクリプトを実行し、ASCIIおよびLatin-1の各文字の文字タイプがUnicodeでどう定義されているか確認した。 # Compile a helper type with P/Invoke declarations for enabling / disabling VT support. # Note: This incurs a once-per-session peform…

音声出力デバイスによるビープ音出力の違い

qiita.com PowerShellで[Console]::Beep()でビープ音を出そうとした際、自分のPCではBIOSによるビープ音出力ではなく通常の音声デバイスによるビープ音出力が行われる。 そのため、PC本体ではなくその時に使用している音声デバイスからビープ音が出るわけだ…

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

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には…