Skip to content

Instantly share code, notes, and snippets.

View TerribleDev's full-sized avatar
🦄
Love Coffee

Tommy Parnell TerribleDev

🦄
Love Coffee
View GitHub Profile
@TerribleDev
TerribleDev / TargetLinkExtension.cs
Created January 22, 2019 00:15
A markdig extension so add target blank to absolute urls
public class TargetLinkExtension : IMarkdownExtension
{
public void Setup(MarkdownPipelineBuilder pipeline)
{
}
public void Setup(MarkdownPipeline pipeline, IMarkdownRenderer renderer)
{
var htmlRenderer = renderer as HtmlRenderer;
@TerribleDev
TerribleDev / notes.md
Last active August 20, 2022 12:59
some notes of components

Component Library:

css modules

```css` .button { width: 1em;

@TerribleDev
TerribleDev / a11y.js
Last active June 23, 2022 15:49
Use axe core to put ugly borders around elements that are not accessible
import axe from 'axe-core';
function debounce(fn, wait) {
let timeout = null;
return function (...args) {
const next = () => fn.apply(this, args);
clearTimeout(timeout);
timeout = setTimeout(next, wait);
};
}
@TerribleDev
TerribleDev / TargetLinkExtension.cs
Created February 26, 2022 22:17
A markdig extension to add norel and noopener to external links
public class TargetLinkExtension : IMarkdownExtension
{
public void Setup(MarkdownPipelineBuilder pipeline)
{
}
public void Setup(MarkdownPipeline pipeline, IMarkdownRenderer renderer)
{
var htmlRenderer = renderer as HtmlRenderer;
if (htmlRenderer != null)
@TerribleDev
TerribleDev / index.js
Created February 5, 2022 21:30
Dedupe
function dedupeWithDictionary(numbers) {
return Object.keys(numbers.reduce((accum, current) => {
accum[current] = true
return accum
}, {}))
}
function dedupeWithSet(numbers) {
return new Set(numbers).values()
@TerribleDev
TerribleDev / Main.cs
Created July 27, 2021 22:11
Calling Quala API from UnityWebRequest
using System.Collections;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
using UnityEngine.Networking;
public class Main
{
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
static void OnBeforeSceneLoadRuntimeMethod()
@TerribleDev
TerribleDev / createMarkedSelector.js
Last active July 16, 2021 14:53
Wrap reselect's createSelector with a function that measures how long selectors take to run
import {createSelector} from 'reselect';
const hasPerformanceApi =
window &&
window.performance &&
window.performance.measure &&
window.performance.mark;
const createFuncWithMark = (name, callback) => (...args) => {
const startMark = `${name}-Startmark`;
@TerribleDev
TerribleDev / setup-win10docker.ps1
Last active January 10, 2021 05:52
install hyper-v, containers, and beta docker on windows so you can use windows containers
# allow scripts to run
set-executionpolicy unrestricted -Force
Get-WindowsOptionalFeature -Online | where {$_.FeatureName -like "*Hyper*" -or $_.FeatureName -like "containers" } | Enable-WindowsOptionalFeature -Online -NoRestart
(new-object net.webclient).DownloadFile('https://download.docker.com/win/beta/InstallDocker.msi','docker.msi')
Start-Process 'docker.msi' /qn -Wait
@TerribleDev
TerribleDev / TimeReporterPlugin.js
Created November 7, 2019 14:16
Webpack 4 plugin to measure how long an entry takes to build
const { performance, PerformanceObserver } = require('perf_hooks');
const PluginName = "TimeReporterPlugin";
class TimeReporterPlugin {
constructor(filterPattern = /HtmlWebpackPlugin|mini-css-extract-plugin/i) {
this.FilterPattern = filterPattern;
}
apply(compiler) {
let _timeEvents = [];
@TerribleDev
TerribleDev / lazyLoadImages.js
Created May 23, 2019 15:16
Lazy load images :)
if(window.IntersectionObserver) {
document.addEventListener("DOMContentLoaded", function() {
var lazyImages = [].slice.call(document.querySelectorAll(".lazy"));
var lazyImageObserver = new IntersectionObserver(function(entries, observer) {
entries.forEach(function(entry) {
if (entry.isIntersecting) {
var lazyImage = entry.target;
if(lazyImage.dataset.src) {
lazyImage.src = lazyImage.dataset.src;
}