Skip to content

Instantly share code, notes, and snippets.

View HeathHopkins's full-sized avatar

Heath Hopkins HeathHopkins

View GitHub Profile
* Reducing executable size:
http://developer.xamarin.com/guides/cross-platform/deployment,_testing,_and_metrics/memory_perf_best_practices/#Reducing_Executable_Size
* Use the linker (iOS [1], Android [2]) to remove unnecessary code from your assemblies
[1] https://developer.xamarin.com/guides/ios/advanced_topics/linker
[2] https://developer.xamarin.com/guides/android/advanced_topics/linking
* Reference third-party libraries judiciously
* Applying constraints to generics may reduce app size, since less code would need to be included (haven’t verified this)
@HeathHopkins
HeathHopkins / ControllerExtensions.cs
Created September 27, 2017 13:36
Strongly typed RedirectToAction in ASP.NET Core (work in progress)
// todo: get route values from action parameters?
public static RedirectToActionResult RedirectToAction<T>(this Controller controller, Expression<Action<T>> action, object routeValues) where T : Controller
{
if (!(action?.Body is MethodCallExpression body)) throw new ArgumentException("Expression must be a method call.");
if (body.Object != action.Parameters[0]) throw new ArgumentException("Method call must target lambda argument.");
string actionName = body.Method.Name;
var actionNameAttributes = body.Method.GetCustomAttributes(typeof(ActionNameAttribute), false);
if (actionNameAttributes.Length > 0)
@HeathHopkins
HeathHopkins / ValueConverterGroup.cs
Created February 23, 2018 13:37 — forked from QiMata/ValueConverterGroup.cs
Reuse converters by chaining them together with a custom converter.
public class ValueConverterGroup : List<IValueConverter>, IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return this.Aggregate(value, (current, converter) => converter.Convert(current, targetType, parameter, culture));
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
@HeathHopkins
HeathHopkins / ResizeWithSkia.cs
Created March 22, 2018 01:09 — forked from xoofx/ResizeWithSkia.cs
Resize an image and draw some overlay text with SkiaSharp
// You need to configure your C# project with x86 or x64 platform (Tools\Configuration Manager\Create new Platform on the project)
// otherwise the native libSkiaSharp.dll will not get copied
using System;
using System.IO;
using SkiaSharp;
namespace TestSkia
{
class Program
{
@HeathHopkins
HeathHopkins / test.js
Created June 4, 2018 19:35
Vue supported
var vueTest = ('__defineSetter__' in Object.prototype);
@HeathHopkins
HeathHopkins / test.js
Created June 4, 2018 19:35
Vue supported
var vueTest = ('__defineSetter__' in Object.prototype);
@HeathHopkins
HeathHopkins / bulk.cs
Created October 10, 2018 16:10 — forked from felipensp/bulk.cs
Oracle bulk insert for Dapper .NET
private static int OracleBulkExecuteImpl<T>(this IDbConnection cnn, ref CommandDefinition command)
{
object param = command.Parameters;
IEnumerable multiExec = GetMultiExec(param);
Identity identity;
CacheInfo info = null;
if (multiExec != null)
{
int total = 0;
bool wasClosed = cnn.State == ConnectionState.Closed;
@HeathHopkins
HeathHopkins / delete_all.sql
Created November 13, 2018 15:51 — forked from mmattozzi/delete_all.sql
Delete all objects in an Oracle Schema
BEGIN
FOR cur_rec IN (SELECT object_name, object_type
FROM all_objects
WHERE object_type IN ('TABLE', 'VIEW', 'PACKAGE', 'PROCEDURE', 'FUNCTION', 'SEQUENCE') AND
owner = '<schema_name>')
LOOP
BEGIN
IF cur_rec.object_type = 'TABLE' THEN
EXECUTE IMMEDIATE 'DROP ' || cur_rec.object_type || ' "' || cur_rec.object_name || '" CASCADE CONSTRAINTS';
ELSE
@HeathHopkins
HeathHopkins / README-tomcat-as-systemd-service.md
Created August 13, 2019 13:13 — forked from drmalex07/README-tomcat-as-systemd-service.md
An example configuration for Tomcat as systemd service. #tomcat #systemd #systemd.service

README

Let Tomcat is download and installed under /opt/tomcat. Also, let tomcat be a non-provileged user under which the server will be running.

We assume that we keep server's binaries under /opt/tomcat and we will create a server instance named foo under /var/tomcat/ (carrying its own conf, logs, webapps, work, lib directories). See also https://dzone.com/articles/running-multiple-tomcat.

Create a template service unit file at /etc/systemd/system/[email protected]:

@HeathHopkins
HeathHopkins / JS-LINQ.js
Created January 31, 2020 20:54 — forked from DanDiplo/JS-LINQ.js
JavaScript equivalents of some common C# LINQ methods. To help me remember!
// JS array equivalents to C# LINQ methods - by Dan B.
// Here's a simple array of "person" objects
var people = [
{ name: "John", age: 20 },
{ name: "Mary", age: 35 },
{ name: "Arthur", age: 78 },
{ name: "Mike", age: 27 },
{ name: "Judy", age: 42 },
{ name: "Tim", age: 8 }