Skip to content

Instantly share code, notes, and snippets.

@jhorstmann
jhorstmann / Main.java
Last active May 12, 2023 08:05
How to get the method name from a java 8 lambda using serialization hacks
package net.jhorstmann;
import java.io.*;
public class Main {
public static class SerializedLam implements Serializable {
private static final long serialVersionUID = 8025925345765570181L;
public Class<?> capturingClass;
public String functionalInterfaceClass;
@jhorstmann
jhorstmann / gist:1579903
Created January 8, 2012 22:15
How to modify android-x86 asus_laptop image to add rtl8192se wireless lan driver

The "intellibook" netbook contains a rtl8192se pci network chip that is not currently included in the android-x86 builds. I could not get a complete self-build image to work so I decided to add the neccessary drivers to the existing release from 20120101. This has the added benefit that the installation contains the google apps, which are not included in the source download. The image can be downloaded from http://www.android-x86.org/releases/build-20120101 (android-x86-4.0-asus_laptop-20120101.iso).

Extract the iso image and the contained squashfs image and mount the contained filesystem image as a loopback device.

$ bsdtar -C android-image -xf android-x86-4.0-asus_laptop-20120101.iso
$ cd android-image
$ unsquashfs system.sfs
$ sudo mkdir /mnt/iso
$ sudo mount ./squashfs-root/system.img /mnt/iso  -o loop
@jhorstmann
jhorstmann / mio-fuse-ble-setup.txt
Created February 7, 2016 20:25
MIO Fuse Buetooth LE Protocol
# alerts
0000 12 20 00 09 02 4a 00 5d 6f 82 94 a7 82 94 # 4a=5zone,2sec,novib ? end_rest end_zone1 end_zone2 end_zone3 end_zone4 end_zone2 end_zone3
0000 12 20 00 09 02 4b 00 5d 6f 82 94 a7 82 94 # 4b=1zone,2sec,novib
0000 12 20 00 09 02 8b 00 5d 6f 82 94 a7 82 94 # 8b=1zone,1sec,novib
0000 12 20 00 09 02 cb 00 5d 6f 82 94 a7 82 94 # cb=1zone,on,novib
0000 12 20 00 09 02 fb 00 5d 6f 82 94 a7 82 94 # fb=1zone,on,vib
0000 12 20 00 09 02 7b 00 5d 6f 82 94 a7 82 94 # 7b=1zone,2sec,vib
0000 12 20 00 09 02 bb 00 5d 6f 82 94 a7 82 94 # bb=1zone,1sec,vib
0000 12 20 00 09 02 ba 00 5d 6f 82 94 a7 82 94 # ba=5zone,1sec,vib
package net.jhorstmann.queryengine
import org.junit.jupiter.api.Test
import org.objectweb.asm.ClassVisitor
import org.objectweb.asm.ClassWriter
import org.objectweb.asm.Opcodes
import org.objectweb.asm.util.CheckClassAdapter
import java.io.FileOutputStream
import java.util.function.IntSupplier
import java.util.function.Supplier
import java.io.*;
public class ReadLineBenchmark {
long volume = 0;
static class StringSlice implements CharSequence {
private final String str;
private final int idx;
private final int end;
// https://en.wikipedia.org/wiki/Double_dabble
public class DoubleDabble {
static int bcd(int value, int bits) {
int res = value << (16 - bits);
res <<= 3;
for (int i = 3; i < bits; i++) {
// find bcd digits > 4 and incremented them 3
// either bit 4 is set or bit 3 and at least on of bits 2 or 1 is set
// bit 1 in mask ist set if digit > 4
// to get the add operand or the mask with mask<<1
@jhorstmann
jhorstmann / CartesianProduct.java
Last active May 22, 2018 21:02
Lazy Cartesian Product
package org.zuchini.examples.parallel;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Set;
import java.util.Spliterator;
@jhorstmann
jhorstmann / exporter.patch
Created December 1, 2011 12:53
Patch for Primefaces 3.0.M4 to use native excel formats instead of converting everything to strings
diff --git a/src/main/java/org/primefaces/component/export/CSVExporter.java b/src/main/java/org/primefaces/component/export/CSVExporter.java
index e5e8992..db0e981 100644
--- a/src/main/java/org/primefaces/component/export/CSVExporter.java
+++ b/src/main/java/org/primefaces/component/export/CSVExporter.java
@@ -20,6 +20,7 @@ import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.lang.reflect.Array;
+import java.util.ArrayList;
import java.util.Iterator;
@jhorstmann
jhorstmann / TestConversions.java
Created October 28, 2016 20:02
Investigating memory usage of exchange rate conversions in moneta
import org.javamoney.moneta.Money;
import javax.money.MonetaryAmount;
import javax.money.convert.CurrencyConversion;
import javax.money.convert.MonetaryConversions;
import java.math.BigDecimal;
public class TestConversions {
public static void main(String[] args) throws InterruptedException {
WITH n AS (SELECT 100 AS n)
SELECT COALESCE(fizz || buzz, fizz, buzz, i::text)
FROM n
CROSS JOIN LATERAL generate_series(1, n) AS i
LEFT JOIN LATERAL (SELECT i, 'fizz'::text AS fizz
FROM generate_series(0, n, 3) AS i) fizz USING(i)
LEFT JOIN LATERAL (SELECT i, 'buzz'::text AS buzz
FROM generate_series(0, n, 5) AS i) buzz USING(i);