Skip to content

Instantly share code, notes, and snippets.

View realdadfish's full-sized avatar

Thomas Keller realdadfish

View GitHub Profile
#!/usr/bin/perl
#
# ATTENTION: In addition to Net::Jabber you also need to apply
# this patch http://toroid.org/ams/etc/net-xmpp-virtualhost-support
# to let this script connect to a jabber server independent from
# the domain you gave it.
#
# Then, symlink this script in each git repository you want to
# receive notifications for (i.e. ln -s path/to/post-receive.pl repo.git/hooks/post-receive)
# and configure the branches (".*" as catch-all works) and chat ID
@realdadfish
realdadfish / OkHttpDownloader.java
Last active August 29, 2015 14:06
How to use OkHttp 2.0 API to download stuff on behalf of Picasso.
public class OkHttpDownloader implements Downloader
{
@Override
public Response load(Uri uri, boolean b) throws IOException
{
HttpClientProxy clientProxy = // create a HttpClient proxy that
// forwards stuff to a real OkHttpClient
// or some mocked class
Request request = new Request.Builder()
.url(uri.toString())
apply plugin: "sonar-runner"
sonarRunner {
sonarProperties {
// connectivity
property "sonar.host.url", "http://your.server/sonar"
property "sonar.jdbc.url", "jdbc:mysql://..."
property "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver"
property "sonar.jdbc.username", "..."
// project configuration
public class ChromeTint implements Parcelable
{
private int mToolbarColor;
private int mToolbarTitleColor;
private int mStatusbarColor;
public static ChromeTint createFromBitmap(Bitmap bm, int defaultToolbarColor, int defaultTitleColor, int defaultStatusbarColor)
{
Palette pal = Palette.generate(bm);
Palette.Swatch vibrant = pal.getVibrantSwatch();
public class ViewUtils
{
/**
* Starts animations inside a LayerDrawable
*
* @param drawable
*/
public static void startLayerAnimation(LayerDrawable drawable)
{
for (int i = 0; i < drawable.getNumberOfLayers(); ++i)
@realdadfish
realdadfish / filter.js
Last active August 29, 2015 14:23
JIRA Rapid View Exclusive Filter
// ==UserScript==
// @name Single-click filter selection
// @namespace http://thomaskeller.biz
// @version 0.1
// @description Exclusively selects a filter from the configured list of filters amongst the others (i.e. deselects the others).
// @author You
// @match https://your.jira.server/secure/RapidBoard.jspa?rapidView=*
// @grant none
// ==/UserScript==
@realdadfish
realdadfish / ActivityResultMatchers.java
Last active October 22, 2015 10:39
A pair of hamcrest matchers to check for activity results / intent data.
/**
* A pair of hamcrest matchers that expose the result code and intent data of activities.
*
* Usage:
*
* @RunWith(AndroidJUnit4.class)
* public class YourActivityTest extends ActivityTestBase {
* @Rule
* public final ActivityTestRule<YourActivity> mActivityTestRule = new ActivityTestRule<>(YourActivity.class);
*
StrictMode E A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
E java.lang.Throwable: Explicit termination method 'close' not called
E at dalvik.system.CloseGuard.open(CloseGuard.java:184)
E at android.database.CursorWindow.<init>(CursorWindow.java:168)
E at android.database.CursorWindow.<init>(CursorWindow.java:127)
E at android.database.AbstractWindowedCursor.generateNewWindowCursor(AbstractWindowedCursor.java:195)
E at android.database.AbstractWindowedCursor.clearOrCreateWindow(AbstractWindowedCursor.java:210)
E at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:165)
E at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:159)
java.lang.IllegalArgumentException: Cannot convert field of typeandroid.util.SparseArray<java.lang.String>
E at nl.qbusict.cupboard.internal.convert.ConverterRegistry.getFieldConverter(ConverterRegistry.java:242)
E at nl.qbusict.cupboard.Cupboard.getFieldConverter(Cupboard.java:202)
E at nl.qbusict.cupboard.convert.ReflectiveEntityConverter.getFieldConverter(ReflectiveEntityConverter.java:119)
E at nl.qbusict.cupboard.convert.ReflectiveEntityConverter.<init>(ReflectiveEntityConverter.java:79)
E at nl.qbusict.cupboard.convert.ReflectiveEntityConverter.<init>(ReflectiveEntityConverter.java:51)
E at nl.qbusict.cupboard.internal.convert.ConverterRegistry$1.create(ConverterRegistry.java:163)
E at nl.qbusict.cupboard.internal.convert.ConverterRegistry.getEntityConverter(ConverterRegistry.java:191)
E at nl.qbusict.cupboard.Cupboard.getEntityConverter(Cupboard.java:217)
E at nl.qbusict.cupboard.BaseCompartment.getConverter(BaseCompartment.java:28)
@realdadfish
realdadfish / Spinner
Created December 11, 2013 13:44
Idiom to preselect an item in an Android `Spinner` widget without firing its `OnItemSelectedListener` right away. Unfortunately the notification of item selection changes happens asynchronously and also the check whether a listener exists _at all_ is only executed the next time the main loop has time to process the `View`'s request to process th…
final Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setSelection(2);
spinner.post(new Runnable() {
@Override
public void run() {
spinner.setOnItemSelectedListener(new OnItemSelectedListener() { ... });
}
});