Skip to content

Instantly share code, notes, and snippets.

View jakzal's full-sized avatar

Jakub Zalas jakzal

View GitHub Profile
@jakzal
jakzal / Dockerfile
Last active January 2, 2022 22:10
MiTemperature2 / Home Assistant / MQTT
ARG PYTHON_VERSION=3.10
ARG BASE_IMAGE=python:${PYTHON_VERSION}-slim
ARG MITEMP_TARGET_DIR=/mitemp2
FROM ${BASE_IMAGE} AS builder
ARG MITEMP_TARGET_DIR
ENV PATH=$MITEMP_TARGET_DIR/bin:$PATH
RUN apt-get update && apt-get install -y --no-install-recommends build-essential gcc git libglib2.0-dev && rm -rf /var/lib/apt/lists/*
@jakzal
jakzal / 1-HOWTO.md
Last active March 8, 2025 14:16
Raspberry PI 4 / RaspBee II / Docker / Home Assistant

Raspberry Pi OS installation

Install Raspberry Pi OS Lite 64bit with the Raspberry Pi Imager.

Enable ssh with key authentication, change the host name, set the user password, the WiFi password. etc.

Configuration

  1. Boot the Pi.
@jakzal
jakzal / CertificateExtension.java
Created July 23, 2021 12:32
JUnit extension to generate certificates
package com.kaffeinelabs.test.extension;
import org.junit.jupiter.api.extension.AfterAllCallback;
import org.junit.jupiter.api.extension.BeforeAllCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;
@jakzal
jakzal / FooTest.java
Created May 19, 2021 09:47
JUnit extension for logger tests
package com.kaffeinelabs;
import com.kaffeinelabs.test.junit.extension.LoggerExtension;
import org.junit.jupiter.api.Test;
class FooTest {
@RegisterExtension
LoggerExtension loggerExtension = LoggerExtension.forLogger(Foo.class);
@Test
@jakzal
jakzal / EventBus.kt
Last active March 25, 2020 10:15
EventBus implementation in Kotlin
package pl.zalas.eventbus
interface EventBus<in E> {
fun publish(event: E)
}
@jakzal
jakzal / JacksonConfig.kt
Created January 10, 2020 15:31
Register Jackson subtypes automatically for a given list of parent classes
package pl.zalas.acme.config
import com.fasterxml.jackson.databind.Module
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import pl.zalas.jackson.module.subtype.SubTypeModule
@Configuration
class JacksonConfig {
@Bean
@jakzal
jakzal / build.gradle.kts
Created December 30, 2019 12:13
Run a Spring Boot application with the dev profile (Gradle Kotlin DSL)
tasks.register("bootRunDev") {
group = "application"
description = "Runs this project as a Spring Boot application with the dev profile"
doFirst {
tasks.bootRun.configure {
systemProperty("spring.profiles.active", "dev")
}
}
finalizedBy("bootRun")
}
@jakzal
jakzal / AuthTokenProvider.java
Last active December 18, 2022 13:09
Reload AWS RDS/Aurora token every x minutes in Spring Boot
package acme.aws;
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
import com.amazonaws.services.rds.auth.GetIamAuthTokenRequest;
import com.amazonaws.services.rds.auth.RdsIamAuthTokenGenerator;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.stereotype.Component;
@Component
@jakzal
jakzal / EnvironmentActiveProfileResolver.java
Created June 19, 2019 22:37
Overriding Spring Boot test configuration on the CI server
package acme.test;
import org.springframework.test.context.ActiveProfilesResolver;
public class EnvironmentActiveProfileResolver implements ActiveProfilesResolver {
@Override
public String[] resolve(Class<?> aClass) {
return new String[]{System.getenv("BUILD_ID") == null ? "test" : "test,ci"};
}
}
@jakzal
jakzal / DatabaseContainerExtension.java
Last active October 28, 2020 17:08
Test containers with Spring Boot
package acme.testcontainers;
import org.junit.jupiter.api.extension.BeforeAllCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.junit.jupiter.Testcontainers;
@Testcontainers
public class DatabaseContainerExtension implements BeforeAllCallback {
private final PostgreSQLContainer postgreSQLContainer = SharedPostgreSQLContainer.getInstance();