Skip to content

Instantly share code, notes, and snippets.

@jhorstmann
jhorstmann / ConstantTracker.java
Created September 7, 2011 22:01
Extract constant arguments to `PrintStream#println(String)` from a Java class file using the ASM bytecode framework
import org.objectweb.asm.tree.MethodNode;
import java.util.Iterator;
import org.objectweb.asm.tree.analysis.Analyzer;
import java.io.IOException;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.tree.ClassNode;
import java.io.InputStream;
import java.util.List;
import org.objectweb.asm.Type;
@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 / jiffybox-android-x86.txt
Created January 8, 2012 10:59
Setup an android-x86 build environment on a JiffyBox cloud server by domainFACTORY
Setup a JiffyBox by following the instructions, using Ubuntu 10.04 as the operating system. I created a CloudLevel 4 server with 16GB swap but it seems a smaller one would also be sufficient.
Login as root and create a normal user with sudo rights, as in a normal Ubuntu installation. Working as root should be really discouraged.
$ adduser jh
$ adduser jh adm sudo
Logout and login as the user you created above. Install a nicer editor, vim in my case.
$ sudo apt-get install vim
@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 / RecurseiveParsingWithJsonBuilder.java
Created November 12, 2012 22:41
Getting familiar with the JsonBuilder API of JSR 353
package net.jhorstmann.jsonp;
import java.io.IOException;
import java.io.PushbackReader;
import java.io.StringReader;
import javax.json.JsonArray;
import javax.json.JsonArrayBuilder;
import javax.json.JsonBuilder;
import javax.json.JsonBuilder.JsonBuildable;
import javax.json.JsonObject;
@jhorstmann
jhorstmann / RecurseiveParsingWithCollections.java
Created November 12, 2012 22:43
Using java collections instead of JsonBuilder
package net.jhorstmann.jsonp;
import java.io.IOException;
import java.io.PushbackReader;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
package org.modelmapper;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.modelmapper.spi.MappingContext;
import org.modelmapper.spi.MappingEngine;
import org.testng.Assert;
@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;
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);
@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