Skip to content

Instantly share code, notes, and snippets.

View cerebrate's full-sized avatar

Alistair Young cerebrate

View GitHub Profile
@cerebrate
cerebrate / LifeSupport.cfg
Last active August 29, 2015 14:02
Convert TAC Life Support plugin to liters
Replace the GlobalSettings section with:
GlobalSettings
{
MaxDeltaTime = 86400
ElectricityMaxDeltaTime = 1
FoodResource = Food
WaterResource = Water
OxygenResource = Oxygen
CarbonDioxideResource = CarbonDioxide
@cerebrate
cerebrate / Adapter.cs
Last active August 29, 2015 14:04
Reflecting differently
public class FARAdapter : Adapter
{
private PropertyInfo instanceProp;
private FieldInfo machNumberField;
private FieldInfo qField;
public override void Plugin()
{
Type type = GetType("ferram4.FARControlSys");
@cerebrate
cerebrate / KSP.log
Created July 23, 2014 00:56
RealChute error logs
This file has been truncated, but you can view the full file.
Kerbal Space Program - 0.24.0.549 (WindowsPlayer) Steam
OS: Windows 8.1 (6.3.9600) 64bit
CPU: Intel(R) Core(TM) i3-3220 CPU @ 3.30GHz (4)
RAM: 8063
GPU: Intel(R) HD Graphics (912MB)
SM: 30 (Direct3D 9.0c [igdumdim64.dll 10.18.10.3412])
RT Formats: ARGB32, Depth, ARGBHalf, RGB565, ARGB4444, ARGB1555, Default, DefaultHDR, ARGBFloat, RGFloat, RGHalf, RFloat, RHalf, R8
@cerebrate
cerebrate / ksp.log
Created April 29, 2015 15:02
No life support resources
This file has been truncated, but you can view the full file.
Kerbal Space Program - 1.0.0.830 (WindowsPlayer) Steam
OS: Windows 8.1 (6.3.10061) 64bit
CPU: Intel(R) Core(TM) i5-4440S CPU @ 2.80GHz (4)
RAM: 8093
GPU: Intel(R) HD Graphics 4600 (4046MB)
SM: 30 (Direct3D 9.0c [igdumdim32.dll 10.18.15.4124])
RT Formats: ARGB32, Depth, ARGBHalf, RGB565, ARGB4444, ARGB1555, Default, DefaultHDR, ARGBFloat, RGFloat, RGHalf, RFloat, RHalf, R8
@cerebrate
cerebrate / gist:4707957
Created February 4, 2013 16:57
Checking for a dirty context using entity framework.
/// <summary>
/// Detect whether the context is dirty (i.e., there are changes in entities in memory that have
/// not yet been saved to the database).
/// </summary>
/// <param name="context">The database context to check.</param>
/// <returns>True if dirty (unsaved changes); false otherwise.</returns>
public static bool IsDirty(this DbContext context)
{
Contract.Requires<ArgumentNullException>(context != null);
@cerebrate
cerebrate / gist:4708009
Created February 4, 2013 17:04
Raising to a power using an extension method.
public static int Exp(this int x, int y)
{
int result = 1;
while (y > 0)
{
if ((y & 1) != 0)
{
result *= x;
}
y >>= 1;
@cerebrate
cerebrate / gist:5030215
Created February 25, 2013 14:40
The so-obvious-you-d-think-it'd-be-in-the-library value converter used in binding a control to something-a-specific-bit-less-than-the-size-of-its-parent.
public class SubtractConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
return (double)value - System.Convert.ToDouble(parameter);
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
return (double)value + System.Convert.ToDouble(parameter);
@cerebrate
cerebrate / gist:5219157
Created March 22, 2013 05:28
Forcing a WPF data-binding to refresh
BindingOperations.GetBindingExpressionBase(dependencyObject, dependencyProperty).UpdateTarget();
@cerebrate
cerebrate / CallMeMaybeAspect.cs
Created September 3, 2013 17:41
Testing with PostSharp: make a method just the right amount of unreliable.
/// <summary>
/// An aspect for use in testing of variable-reliability conditions, by succeeding in calling the
/// underlying method only part of the time, returning an exception the rest of the time.
/// </summary>
[Serializable]
public class CallMeMaybeAspect : MethodInterceptionAspect
{
private readonly Type exceptionType;
private readonly double probability;
@cerebrate
cerebrate / SingletonConstraint.cs
Created September 5, 2013 13:03
PostSharp: Doing Singletons Right
namespace ArkaneSystems.Arkane.Aspects
{
/// <summary>
/// A constraint which verifies that the class to which it is applied obeys the Singleton pattern
/// we use.
/// </summary>
/// <remarks>
/// The singleton pattern is as follows:
/// private static readonly Lazy{$CLASS$} lazy = new Lazy{$CLASS$} (() => new $CLASS$());
/// public static $CLASS$ Instance { get { return lazy.Value; } }