このメモは、私(@ymmt2005)が長年にわたってソフトウェアプロダクト開発に関わってきて 2022年現在こうしたほうが良いと考えているベストプラクティスです。
科学的な分析等に基づくわけではない経験則であるため、今後も随時見直すことがありますし、 ここに書いてあることが常に正しいわけでもあらゆるソフトウェア開発に適するわけでもありません。
しかしながら、実務経験が豊富で、モダンな技術スタックに明るいエンジニアの経験則は一定の 役に立つのではないかと考えて記します。
特に何もやってあげてないのに他人(法人だけどさ)から何百万何千万のお金が何年もとめどなく注ぎ込まれてきたら、怖くないですか?
オープンソース・ソフトウェアの開発者だけで給料をもらうというのは、まさにこの現象が発生してくるわけ。それまでもこれからも、ずっとオープンソース・ソフトウェアの開発者はやってきたし、やっていくわけでしょう。そんなの会社があってもなくても、別にやることなんて変わらないじゃない。じゃあなんで、ある時から急にかなりの金額が振り込まれてきてしまうんだ?しかもあからさまに物価上昇を上回る結構なハイペースで昇給していく。やっていることは一切何も変わってないのに!
この状況に適応するまでにはいささかの時間を要しました。根が小心者なので。
.PHONY: clean | |
CFLAGS = -fPIC -g | |
LDFLAGS = -lpthread | |
CPPFLAGS = -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux | |
TARGETS = libdltest.so libdltest-jmm.so | |
all: $(TARGETS) | |
libdltest.so: deadlockDetector.o |
_hashCode java/lang/Object.hashCode()I | |
_getClass java/lang/Object.getClass()Ljava/lang/Class; | |
_clone java/lang/Object.clone()Ljava/lang/Object; | |
_dabs java/lang/Math.abs(D)D | |
_dsin java/lang/Math.sin(D)D | |
_dcos java/lang/Math.cos(D)D | |
_dtan java/lang/Math.tan(D)D | |
_datan2 java/lang/Math.atan2(DD)D | |
_dsqrt java/lang/Math.sqrt(D)D | |
_dlog java/lang/Math.log(D)D |
1 b java.lang.String::charAt (33 bytes) | |
2 b java.lang.Math::max (11 bytes) | |
3 b java.util.jar.Manifest$FastInputStream::readLine (167 bytes) | |
4 b sun.nio.cs.UTF_8$Decoder::decodeArrayLoop (553 bytes) | |
5 b java.util.Properties$LineReader::readLine (383 bytes) | |
6 b java.lang.String::hashCode (60 bytes) | |
7 b java.lang.String::indexOf (151 bytes) | |
8 b sun.nio.cs.ext.DoubleByteDecoder::decodeSingle (10 bytes) | |
9 b java.lang.String::lastIndexOf (156 bytes) | |
10 b java.lang.String::replace (142 bytes) |