Skip to content

Instantly share code, notes, and snippets.

View TWiStErRob's full-sized avatar

Róbert Papp TWiStErRob

View GitHub Profile
@TWiStErRob
TWiStErRob / gist:45c8e9937c5483191ba5
Created August 31, 2014 21:47
Check if Java environment hangs on to File descriptors when using FileOutputStream
public static boolean isFOSHoldingOnToFile() {
return !canDeleteCreatedFile() || !canRenameCreatedFile();
}
public static boolean canDeleteCreatedFile() {
File temp = null;
try {
temp = File.createTempFile("canDeleteCreatedFile", null, Robolectric.application.getCacheDir());
if(!temp.delete()) {
return false;
@TWiStErRob
TWiStErRob / ExternalCacheDiskCacheFactory.java
Last active August 29, 2015 14:19
Glide DiskCache.Factory implementation to use the context-provided externalCacheDir
import java.io.File;
import android.content.Context;
import com.bumptech.glide.load.engine.cache.*;
public final class ExternalCacheDiskCacheFactory implements DiskCache.Factory {
private final Context context;
private final String diskCacheName;
private final int diskCacheSize;
public ExternalCacheDiskCacheFactory(Context context, int diskCacheSize) {
@TWiStErRob
TWiStErRob / DrawableDrawableResoureDecoder.java
Last active August 29, 2015 14:20
Glide 3.6.0 proof of concept for loading a Drawable as Drawable through Glide
class DrawableResoureDecoder implements ResourceDecoder<Drawable, Drawable> {
@Override public Resource<Drawable> decode(Drawable source, int width, int height) throws IOException {
return new DrawableResource<Drawable>(source) {
@Override public int getSize() { return 1; }
@Override public void recycle() { }
};
}
@Override public String getId() { return "DrawableDrawableResourceDecoder"; }
}
@TWiStErRob
TWiStErRob / LimitOutput.java
Created November 26, 2015 19:00
LeetCode helper methods for console debugging
static {
System.setOut(new java.io.PrintStream(new java.io.FilterOutputStream(System.out) {
int count = 10 * 1024;
@Override public void write(int b) throws IOException {
if (count > 0) {
super.write(b);
--count;
}
}
@Override public void write(byte[] b, int off, int len) throws IOException {
@TWiStErRob
TWiStErRob / TravelingSalesmanHeldKarpX.java
Last active December 31, 2015 01:36
Programmatic version of Tushar Roy's Held-Karp TSP video (https://www.youtube.com/watch?v=-JjA4BLQyqE)
package problems.tushar;
import java.util.*;
import java.util.function.Predicate;
import java.util.stream.*;
import static problems.tushar.TravelingSalesmanHeldKarpX.Algo.*;
import static problems.tushar.TravelingSalesmanHeldKarpX.Utils.*;
/**
@TWiStErRob
TWiStErRob / DrawableBitmapResourceDecoder.java
Last active October 24, 2016 15:15
Glide 3.6.0 proof of concept for loading a Drawable as Bitmap through Glide
class DrawableBitmapResourceDecoder implements ResourceDecoder<Drawable, Bitmap> {
private final BitmapPool pool;
public DrawableBitmapResourceDecoder(Context context) {
this(Glide.get(context).getBitmapPool());
}
public DrawableBitmapResourceDecoder(BitmapPool pool) {
this.pool = pool;
}
@Override public Resource<Bitmap> decode(Drawable drawable, int width, int height) throws IOException {
@TWiStErRob
TWiStErRob / README.md
Last active January 11, 2017 07:03
Zoom to fit

See SO answer.

You can pan (click background), zoom (mousewheel), drag nodes around. Middle click to add more nodes (at mouse).

@TWiStErRob
TWiStErRob / Example.java
Last active February 11, 2017 22:42
JUnit Jupiter extension for creating JFixture objects into tests
public class Example {
public static <T1, T2> Predicate<Pair<T1, T2>> expand(BiPredicate<? super T1, ? super T2> func) {
return objects -> func.test(objects.getValue0(), objects.getValue1());
}
}
@TWiStErRob
TWiStErRob / protractorAPICheatsheet.md
Last active October 27, 2017 21:25 — forked from ajambrovic/protractorAPICheatsheet.md
Protractor API Cheatsheet
@TWiStErRob
TWiStErRob / build.gradle
Created February 9, 2019 00:43
Automatically add `dagger.formatGeneratedSource` if `dagger-compiler` is present in `annotationProcessor` configuration.
allProjects { project ->
tasks.withType(JavaCompile).configureEach { JavaCompile task ->
task.doFirst {
// annotationProcessorPath is populated around afterEvaluate, but can't use that in configureEach
if (hasDagger(task.options.annotationProcessorPath)) {
task.options.compilerArgs += [
// disable formatting, why wait if it looks almost the same?!
'-Adagger.formatGeneratedSource=disabled'
]
}