Skip to content

Instantly share code, notes, and snippets.

View nipafx's full-sized avatar

Nicolai Parlog nipafx

View GitHub Profile
@nipafx
nipafx / .gitconfig
Created August 8, 2023 15:04
My Git aliases
View .gitconfig
[alias]
st = status --branch --short
look = log --graph --pretty='%C(red)%h%Creset %C(green)%ad%Creset %C(yellow)%<(15,trunc)%an%Creset %s %C(bold blue)%D%Creset' --date=format-local:'%d.%m.%Y %H%M'
look-close = log --graph --pretty='%C(red)%h%Creset %C(green)%cd%Creset %C(yellow)%<(15)%cn%Creset %C(bold blue)%D%Creset%n %C(dim green)%ad%Creset %C(dim yellow)%<(15)%an%Creset %s' --date=format-local:'%d.%m. %H%M'
hist = log --pretty='%C(red)%h%Creset %C(green)%cd%Creset %C(yellow)%<(12,trunc)%an%Creset %s %C(auto)%D%Creset' --date=format-local:'%Y-%m-%d %H:%M'
wat = !git look -15
cd = checkout
patch = -c interactive.diffFilter='diff-highlight | less -FRX --tabs=4' add --patch
unstage = reset HEAD --
unstage-patch = reset HEAD --patch
@nipafx
nipafx / Store.java
Last active May 18, 2022 10:00
Non-asyncronous EA Async example
View Store.java
// Two examples [1, 2] from EA Async written without async/await or
// (Completable)Futures as straight-forward blocking code. If the
// callers want to do something concurrently to `Store::buyItem`,
// they just put that call into a new virtual threads.
public class Store {
private final Bank bank = new Bank();
private final Inventory inventory = new Inventory();
@nipafx
nipafx / Tree.java
Last active July 9, 2021 11:04
Counting Red Nodes in a Colored Tree
View Tree.java
import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.Stream;
// implementation of https://twitter.com/peterzllr/status/1413216826708877318
public class Tree {
public static void main(String[] args) {
var tree = new Red(
new Black(
@nipafx
nipafx / multilines.md
Last active February 21, 2024 16:58
Creating multiline strings in JS, Groovy, Kotlin, and Java
View multilines.md

#1 Split "one", "two" across two lines

Goal:

one\n
two

Onboard JavaScript requires us to break the code formatting.

@nipafx
nipafx / Lab.java
Created May 27, 2020 07:49
Optional vs null && Stream vs loop
View Lab.java
package org.codefx.lab;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
import java.util.function.Function;
import java.util.function.UnaryOperator;
import java.util.stream.Stream;
class Lab {
@nipafx
nipafx / example.xml
Created April 30, 2020 08:53
Configuring Maven's copy-dependencies MOJO
View example.xml
<!-- executed during build -->
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version><!-- currently 3.1.2 --></version>
<executions>
<execution>
<!-- with this ID, the command above picks up the config -->
<id>default-cli</id>
<!-- if `process-sources` doesn't match your needs -->
<phase>package</phase>
@nipafx
nipafx / maturity-model.md
Last active August 16, 2019 12:02
JPMS Maturity Model
View maturity-model.md

Maturity Model

Libraries, frameworks, and tools (IDEs, build tools) have widely varying support for the JPMS. I would like to create a model that makes it easy to judge a project for what it can and can't (yet) do - both for users and maintainers.

Conditions can usually be split into those for libraries/frameworks and those for tools, but that's not clear cut. Bytecode analysis tools, for example, may fall into both categories. So always look at both categories, and check which conditions apply to a given project.

This is work in progress - feedback welcome!

Level 0 - Denial: Don't break!

@nipafx
nipafx / GridDemoTest.kt
Last active August 21, 2018 14:00
Running Selenium tests once per grid node
View GridDemoTest.kt
@SeleniumGridConfiguration(url = "http://0.0.0.0:4444")
class GridDemoTest {
@SeleniumGridTest
fun demo(driver: WebDriver) {
driver.get("https://blog.codefx.org")
val homeUrl = driver.findElement(By.className("img-hyperlink")).getAttribute("href")
assertThat(homeUrl).contains("blog.codefx.org")
}
@nipafx
nipafx / #1-services-uses
Last active January 12, 2018 15:51
All services used by JDK 9.0.1
View #1-services-uses
com.oracle.tools.packager.Bundler
com.oracle.tools.packager.Bundlers
com.sun.jdi.connect.Connector
com.sun.jdi.connect.spi.TransportService
com.sun.net.httpserver.spi.HttpServerProvider
com.sun.source.util.Plugin
com.sun.tools.attach.spi.AttachProvider
com.sun.tools.internal.ws.wscompile.Plugin
com.sun.tools.internal.xjc.Plugin
com.sun.tools.javac.platform.PlatformProvider
@nipafx
nipafx / JavaVersionSniffer.java
Last active November 30, 2017 10:06
Get the major Java version on Java 8 and earlier and on Java 9 and later
View JavaVersionSniffer.java
/*
* RELEASED UNDER CC-0 (https://creativecommons.org/publicdomain/zero/1.0/):
*
* You can copy, modify, distribute and perform the work, even for commercial
* purposes, all without asking permission.
*/
import java.lang.reflect.Method;
public class JavaVersionSniffer {