Skip to content

Instantly share code, notes, and snippets.

View mfukar's full-sized avatar

Michael Foukarakis mfukar

View GitHub Profile
@mfukar
mfukar / epic_fail_2.cpp
Created March 1, 2014 18:25
This is how you don't code game rules.
#include <iostream>
enum stuff {
laugh,
strike,
slap,
};
struct true_ {};
struct false_ {};
@mfukar
mfukar / lisp.cpp
Last active August 29, 2015 14:07
C++ generic lambdas turn it into Lisp!
/**
* Compile with GCC 4.9:
* g++ -std=c++1y lisp.cpp
*/
#include <iostream>
#include <stdio.h>
auto terminal = [] (auto stream) {
return [=] (auto func) {
return func (stream);
function Send-NetworkData {
[CmdletBinding()]
param (
[Parameter(Mandatory)]
[string]
$Computer,
[Parameter(Mandatory)]
[ValidateRange(1, 65535)]
[Int16]
#!/usr/bin/env python
# Useful common polynomials:
#POLY = 0x82F63B78 # CRC-32C (Castagnoli)
#POLY = 0xEB31D82E # CRC-32K (Koopman)
#POLY = 0xD5828281 # CRC-32Q
class CRCForger():
def __init__(self, *args, **kwargs):
@mfukar
mfukar / epic_fail_3.java
Created November 20, 2014 10:30
How not to filter untrusted input.
private InputFilter getCharactersLimited() {
// Limit characters input
InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter(){
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
if (end > start) {
char[] acceptedChars = new char[]{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
@mfukar
mfukar / idontknow.c
Created May 13, 2015 09:54
Just some random interview question + solution, I don't even remember from where any more
/**
* The array contains a set of unsorted numbers. All numbers appear an even number of
* times. The exception is two numbers, call them M and N, which appear an odd number of
* times. Find M and N.
*
* This solution is O(n), where n is the size of the array. It requires two passes over
* the array.
*
* The generalised version of this problem (N elements, one number repeats K times) can
* be reduced to solving the linear system of equations:
@mfukar
mfukar / memoizer.cpp
Created November 17, 2015 09:44
A generic memoizer class for C++14 functions
/**
* A memoizer (Y-combinator), with a cache on operator().
*
* The type of the function that can be memoized is (((Args...)->R), Args...) -> R, which
* makes the memoizer of type ( (((Args...) -> R), Args...) -> R ) -> ((Args...) -> R).
*
* WARNING: If the memoized function modifies its arguments, the results will not be
* cached correctly.
*/
@mfukar
mfukar / mach_msg_hook.c
Last active March 21, 2018 03:34
Hook mach_msg and print message contents
/*
* View the contents of messages sent/received via `mach_msg`.
*
* Compile with:
* clang -arch x86_64 -arch i386 -Wall -o mach_msg_hook.dylib -dynamiclib mach_msg_hook.c
*
* and run as:
* DYLD_FORCE_FLAT_NAMESPACE=1 DYLD_INSERT_LIBRARIES=mach_msg_hook.dylib [COMMAND]
*
* Have fun.
@mfukar
mfukar / bitbuffer.py
Created December 3, 2015 10:52
A buffer of bits
import struct
class bitbuffer:
# TODO: need reader?
def __init__(self):
self.buffer = b''
self.byte = 0
self.bit_pos = 7
def append(self, value, nbits):
@mfukar
mfukar / nuke-noscript.user.js
Last active March 24, 2016 07:09
Nuke <noscript> tags
// ==UserScript==
// @name nuke noscript
// @namespace https://gist.github.com/mfukar/d1dd369deaa7c3941fde
// @version 0.2
// @description Remove all <noscript> tags in every document
// @author mfukar
// @grant none
// ==/UserScript==
/* jshint -W097 */
'use strict';