Skip to content

Instantly share code, notes, and snippets.

@wreulicke
wreulicke / OtelLauncherSessinListener.java
Last active March 24, 2025 02:57
JUnitでotelのセットアップするやつ
package com.github.wreulicke.otel;
import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.context.Scope;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.common.CompletableResultCode;
import io.opentelemetry.sdk.trace.SdkTracerProvider;
import io.opentelemetry.sdk.trace.data.SpanData;
@wreulicke
wreulicke / build.grale
Last active March 24, 2025 01:31
依存をrelocateするやつ + relocateしたやつでテストするやつ
tasks.named('shadowJar').configure {
dependsOn tasks.named('classes')
from sourceSets.main.runtimeClasspath.find { it.name.startsWith('hogehoge') }
archiveBaseName.set("hogehoge")
archiveClassifier.set("relocated")
relocate 'some.package', 'relocated.some.package'
dependencies {
exclude({ true })
}
}
@wreulicke
wreulicke / memo.md
Last active February 19, 2025 13:44
JavaのAPI/ABI Compatibilityをチェックするツール
@wreulicke
wreulicke / build.gradle
Last active January 22, 2025 13:32
gradleでライブラリ作ってる時にpom.xmlからbomを外す方法
publishing {
publications {
create<MavenPublication>("library") { // この行適当にコピペしてきたのでミスってたらごめん
from(components.java)
// delete BOM from pom.xml to avoid conflicts
pom {
withXml {
def pomNode = asNode()
if (pomNode.dependencyManagement.size() > 0) {
@wreulicke
wreulicke / build.gradle.kts
Last active November 12, 2024 00:46
scoped values 試したときのメモ
tasks.withType<JavaCompile> {
options.compilerArgs.add("--enable-preview")
}
// Apply a specific Java toolchain to ease working on different environments.
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(22))
}
}
@wreulicke
wreulicke / tyler.java
Last active November 5, 2024 16:44
jbangで標準入力から入ってきたxmlをlogback-tylerを処理してJavaコードを出力するやつ + google-java-formatでフォーマットしたやつを出力するやつ
//JAVA 21
//DEPS ch.qos.logback.tyler:tyler-base:0.9 com.google.googlejavaformat:google-java-format:1.24.0
//
//RUNTIME_OPTIONS --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
//RUNTIME_OPTIONS --add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
//RUNTIME_OPTIONS --add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
//RUNTIME_OPTIONS --add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
//RUNTIME_OPTIONS --add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
//RUNTIME_OPTIONS --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
@wreulicke
wreulicke / reporter.js
Last active November 7, 2024 13:42
node:testでJSON出力するreporterサンプル
module.exports = async function * customReporter(source) {
let roots = []
let currentSuite = null;
function startTest(event) {
const parent = currentSuite;
currentSuite = {
name: event.data.name,
nesting: event.data.nesting,
@wreulicke
wreulicke / java-logging.md
Last active October 17, 2024 05:39
2024-10-17 現在のJavaのロギング構成についてメモ書き

Javaでログのライブラリ、何を使ってますか? 今自分は、slf4j + logback を使っています。 ざっくばらんにログに関してまとめておこうと思います。

この記事ではロギングでどう出力すれば良いログになるかについては、話しません。

Spring Bootの構造化ロギングの話

自分が採用したログのライブラリの話をする前に、Spring Bootの構造化ロギングの話を少ししておきます。 Spring Boot 3.4では、Spring Boot標準で構造化ロギングの実装されており

@wreulicke
wreulicke / DelegatingMDCInheritableExecutorService.java
Last active April 24, 2024 17:25
ExecutorService/ScheduledExecutorServiceでMDC引き回すやつ
package com.github.wreulicke.mdc;
import org.slf4j.MDC;
import java.util.List;
import java.util.Map;
import java.util.concurrent.*;
public class DelegatingMDCInheritableExecutorService extends AbstractExecutorService {
@wreulicke
wreulicke / Main.java
Created March 31, 2023 17:49
slf4j経由でLog4j2を使う時のbuild.gradleとmain
import org.slf4j.bridge.SLF4JBridgeHandler;
public class Main {
public static void main(String[] args) {
// java.util.loggingのロガーをslf4jに入れ替えている
SLF4JBridgeHandler.removeHandlersForRootLogger();
SLF4JBridgeHandler.install();
}
}