Skip to content

Instantly share code, notes, and snippets.

View twogood's full-sized avatar

David Eriksson twogood

View GitHub Profile
[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
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
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>
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
LC_NUMERIC="en_US.UTF-8"
@twogood
twogood / LocalDateColumnMapper.java
Created June 13, 2017 13:26
Using LocalDate fields with BeanMapper in JDBI
//
// 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
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;
package com.claimtowers.common.asynctask;
public class AsyncTaskResult<T> {
private T result;
private Exception exception;
public AsyncTaskResult(T result) {
this.result = result;
}
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
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: