Skip to content

Instantly share code, notes, and snippets.

View hakanai's full-sized avatar
⚔️
Battling i16n demons

Hakanai hakanai

⚔️
Battling i16n demons
View GitHub Profile
@hakanai
hakanai / Main.java
Created June 6, 2019 07:50
Small JxBrowser example for crash reproduction
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.io.File;
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
@hakanai
hakanai / example.groovy
Created May 28, 2019 05:59
Reusing file sets in Gradle builds
def commonCrap = copySpec {
from('dir1') {
include '**/*.jar'
}
from('dir2') {
include '**/*.dll'
}
}
task copy1(type: Copy) {
@hakanai
hakanai / Jenkinsfile-fragment.groovy
Last active May 24, 2019 06:40
Is it possible to do _this_ in Jenkins pipeline?
pipeline {
// ...
stages {
// ...
customMatrix {
matrix [name: 'debian', prettyName: 'Debian'],
[name: 'ubuntu', prettyName: 'Ubuntu'],
[name: 'centos', prettyName: 'CentOS'],
[name: 'macos', prettyName: 'macOS'],
[name: 'windows', prettyName: 'Windows']
@hakanai
hakanai / TootsExporter.py
Last active April 29, 2019 11:07
Another Mastodon Toots Exporter in Python 3.
#!/usr/bin/env python3
#
# TootsExporter.py
# - Another Mastodon Toots Exporter in Python 3.
#
# Dependency:
# - pip(3) install "requests[socks]"
#
# License: MIT
@hakanai
hakanai / Converter.java
Created March 28, 2019 05:33
Example usage of Guava's `TypeToInstanceMap` for maps of non-trivial types
public interface Converter<T>
{
String toString(T thing);
T fromString(String string);
}
@hakanai
hakanai / DistanceFunctions.cginc
Created March 8, 2019 23:56
Signed distance function for an arc
// Distance from a point in 2D space to an arc starting at arc_r on the X axis
// and rotating through arc_theta in the positive direction.
float sdArc(float2 p, float arc_r, float arc_theta)
{
float p_theta = atan2(p.y, p.x);
if (p_theta < 0.0)
{
p_theta += UNITY_TWO_PI;
}
@hakanai
hakanai / MilitaryZones.asciidoc
Created November 13, 2018 00:34
Helpful guide to single-letter time zone abbreviations

A

Alpha Time

UTC+1

B

Bravo Time

UTC+2

C

Charlie Time

UTC+3

D

Delta Time

UTC+4

E

Echo Time

UTC+5

F

Foxtrot Time

UTC+6

G

Golf Time

UTC+7

H

Hotel Time

UTC+8

I

India Time

UTC+9

@hakanai
hakanai / EvenMoreObjects.java
Last active October 31, 2018 04:20
I don't suppose there's a library like this out there somewhere already?
package magicutilities;
import java.util.Objects;
import java.util.function.Function;
import java.util.function.ToIntFunction;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class EvenMoreObjects {
.../MimeWalker.java:128: warning: [OperatorPrecedence] Use grouping parenthesis to make the operator precedence explicit
(contentType.startsWith("application/octet-stream")) &&
^
(see https://errorprone.info/bugpattern/OperatorPrecedence)
Did you mean '((contentType.startsWith("application/octet-stream")) &&'?
.../MimeWalker.java:128: warning: [UnnecessaryParentheses] Unnecessary use of grouping parentheses
(contentType.startsWith("application/octet-stream")) &&
^
(see https://errorprone.info/bugpattern/UnnecessaryParentheses)
Did you mean 'contentType.startsWith("application/octet-stream") &&'?
@hakanai
hakanai / run-on-all-slaves-example.groovy
Created October 9, 2018 04:33
Example of running a command on all slaves
import hudson.util.RemotingDiagnostics
Jenkins.instance.slaves
.findAll { node -> node.labelString.contains('debian') } // not production-safe
.each { slave ->
println slave.name
def channel = slave.channel
if (channel != null) {
println RemotingDiagnostics.executeGroovy("""