Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

View greenrobot's full-sized avatar

Markus Junginger greenrobot

View GitHub Profile
@greenrobot
greenrobot / AsyncTaskExecutionHelper.java
Created May 23, 2012 08:26
Helper bringing back parallel execution for AsyncTask (you are no serial execution and pseudo threading wimp, right?). Uses level 11 APIs when possible.
package de.greenrobot.util;
import java.util.concurrent.Executor;
import android.os.AsyncTask;
import android.os.Build;
/**
* Uses level 11 APIs when possible to use parallel/serial executors and falls back to standard execution if API level
* is below 11.
@greenrobot
greenrobot / convert2utf8.sh
Created February 18, 2014 13:35
Bash script to convert Java sources to UTF-8 recursively
#!/bin/sh
# For Windows: http://gnuwin32.sourceforge.net/packages/libiconv.htm
PATH=$PATH:/c/Program\ Files\ \(x86\)/GnuWin32/bin/
for file in $(find -name "*.java")
do
echo $file
iconv -f ISO-8859-1 -t UTF-8 "$file" >"${file%}.tmp"
mv "$file.tmp" "$file"
@greenrobot
greenrobot / ios2android.sh
Created November 5, 2014 14:15
Prepares iOS picture files for Android: images are renamed to conform with Android naming rules, and puts them into the correct drawable folder (-mdpi, -xhdpi, or -xxhdpi)
#!/bin/sh
mkdir drawable-mdpi
mkdir drawable-xhdpi
mkdir drawable-xxhdpi
shopt -s nocaseglob
for iosFile in *.{png,jpeg,gif}; do
if [[ ! -f $iosFile ]]
then
continue
fi
@greenrobot
greenrobot / gist:8feae5738d37231988b2
Created April 14, 2015 18:48
WordPress DB script to update references to uploaded files (pictures)
SELECT meta_value, SUBSTRING(meta_value FROM 9) meta_value FROM `wp_postmeta` where meta_key = '_wp_attached_file' AND meta_value like '2014/%'
# UPDATE wp_postmeta SET meta_value = SUBSTRING(meta_value FROM 9) where meta_key = '_wp_attached_file' AND meta_value like '2014/%'
@greenrobot
greenrobot / MultithreadedRelationTest.java
Last active February 28, 2017 14:41
ObjectBox MultithreadedRelationTest
package io.objectbox.relation;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.File;
import java.util.List;
import java.util.Random;
import java.util.concurrent.CountDownLatch;
@greenrobot
greenrobot / CircularStaticDependencies.java
Created May 3, 2017 15:49
(Almost) Circular class dependencies in Java. What does this print?
package org.greenrobot;
import java.util.concurrent.atomic.AtomicInteger;
public class CircularStaticDependencies {
static AtomicInteger count = new AtomicInteger(1);
static class A {
static String a1 = "a" + count.getAndIncrement();
static String a2 = "a" + count.getAndIncrement() + B.b1;
@greenrobot
greenrobot / ObjectBoxLiveData.java
Created November 1, 2017 10:15
ObjectBox Android sources
/*
* Copyright 2017 ObjectBox Ltd. All rights reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@greenrobot
greenrobot / removeAllMultiTx.java
Created March 26, 2018 15:23
A "rescue" version of Box.removeAll() for DBs that reached their size limit.
/**
* A "rescue" version of Box.removeAll() for DBs that reached their size limit.
* Removes data in multiple transactions of increasing size to minimize required additional disk space.
* <p>
* Note that this method is not transactional, so it might fail in between, with any number of objects removed.
* Thus, you should persistently track the state yourself, e.g. by setting a SharedPreferences flag to indicate
* that removal is in progress. If this methods fails, you can check this flag to retry at a later point.
* Only once this method succeeds, this flag should be cleared.
* <p>
* It's recommended to increase the max. DB size to ensure addition capacity is available for this method.
@greenrobot
greenrobot / Stresser.java
Created August 28, 2019 09:58
ObjectBox example: Cache query and multi-threaded usage of cached query
package io.objectbox.test.stress;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import io.objectbox.Box;
import io.objectbox.BoxStore;
import io.objectbox.query.Query;
@greenrobot
greenrobot / IntSortSpeed-64vs32bit.cpp
Created August 1, 2020 14:19
Sorting 32 bit vs 64 bit integers: mini performance benchmark
TEST_CASE("IntSortSpeed-64vs32bit") {
std::random_device rd;
std::mt19937_64 mt(rd());
std::uniform_int_distribution<uint32_t> int32Dist;
int count = 100000000;
std::vector<uint32_t> v32;
v32.reserve(count);
std::vector<uint64_t> v64;
v64.reserve(count);
StopWatch stopWatch;