Skip to content

Instantly share code, notes, and snippets.

Avatar

David Eriksson twogood

View GitHub Profile
View docker-compose@.service
[Unit]
Description=%i service with docker compose
Requires=docker.service
After=docker.service
[Service]
SyslogIdentifier=%i
Restart=always
WorkingDirectory=/etc/docker/compose/%i
@twogood
twogood / ScopeFunctions.cs
Last active May 4, 2020 06:55
Kotlin Scope Functions (Also, Let, Run) in C# .NET Core
View ScopeFunctions.cs
public static class ScopeFunctions
{
public static T Also<T>(this T self, Action<T> action)
{
action(self);
return self;
}
public static TResult Let<T, TResult>(this T self, Func<T, TResult> func) => func(self);
@twogood
twogood / DaggerViewModelFactory.kt
Created January 25, 2019 22:32
Android Jetpack ViewModel, Dagger 2, Kotlin coroutines
View DaggerViewModelFactory.kt
package example
import android.arch.lifecycle.ViewModel
import android.arch.lifecycle.ViewModelProvider
import dagger.Binds
import dagger.MapKey
import dagger.Module
import javax.inject.Inject
import javax.inject.Provider
import kotlin.reflect.KClass
@twogood
twogood / transformAsyncPair.kt
Created November 14, 2017 13:56
Create ListenableFuture<Pair<A, B>> from ListenableFuture<A> and ListenableFuture<B>
View transformAsyncPair.kt
fun <A, B> transformAsyncPair(futureA: ListenableFuture<A>, futureB: ListenableFuture<B>, executor: Executor): ListenableFuture<Pair<A, B>> {
return Futures.transformAsync(futureA, AsyncFunction<A, Pair<A, B>> { a ->
Futures.transformAsync(futureB, AsyncFunction<B, Pair<A, B>> { b ->
Futures.immediateFuture(Pair<A, B>(a!!, b!!))
}, executor)
}, executor)
}
@twogood
twogood / studio.sh
Created October 20, 2017 20:55
Android studio 3 beta fix
View studio.sh
LC_NUMERIC="en_US.UTF-8"
@twogood
twogood / LocalDateColumnMapper.java
Created June 13, 2017 13:26
Using LocalDate fields with BeanMapper in JDBI
View LocalDateColumnMapper.java
//
// USAGE:
//
// jdbi.registerColumnMapper(new LocalDateColumnMapper());
//
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDate;
@twogood
twogood / LocalDateArgumentFactory.java
Created June 13, 2017 13:23
ArgumentFactory to support LocalDate with @BindBean in JDBI
View LocalDateArgumentFactory.java
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Types;
import java.time.LocalDate;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.Argument;
import org.skife.jdbi.v2.tweak.ArgumentFactory;
View AsyncTaskResult.java
package com.claimtowers.common.asynctask;
public class AsyncTaskResult<T> {
private T result;
private Exception exception;
public AsyncTaskResult(T result) {
this.result = result;
}
View sendgrid-webhook.js
var express = require('express');
var multer = require('multer');
var app = express();
app.configure(function(){
app.set('port', process.env.PORT || 3000);
});
app.post('/parse', multer().any(), function (req, res) {
var from = req.body.from;
@twogood
twogood / Secure Sessions Howto
Created February 23, 2016 21:39 — forked from nikmartin/A: Secure Sessions Howto
Secure sessions with Node.js, Connect, and Nginx as an SSL Proxy
View Secure Sessions Howto
Secure sessions are easy, but it's not very well documented, so I'm changing that.
Here's a recipe for secure sessions in Node.js when NginX is used as an SSL proxy:
The desired configuration for using NginX as an SSL proxy is to offload SSL processing
and to put a hardened web server in front of your Node.js application, like:
[NODE.JS APP] <- HTTP -> [NginX] <- HTTPS -> [CLIENT]
To do this, here's what you need to do: