Skip to content

Instantly share code, notes, and snippets.

@hraban
hraban / pobox.php
Created February 12, 2014 15:02
Write-only file uploads for PHP server
<?php
define("UPLOAD_DIR", "/tmp/pobox-uploads/");
define("CODE", "secretcodehere");
if ($_SERVER['REQUEST_METHOD'] == "POST") {
if ($_POST["code"] !== CODE) {
die("upload denied: illegal code");
}
if (!(is_dir(UPLOAD_DIR) || mkdir(UPLOAD_DIR, 0700))) {
"use strict";
// appended odd string to avoid shadowing existing vars
function chatroomwidget_88ed71a($) {
if ($ === undefined) {
throw "chatroomwidget.js requires jQuery";
}
// TODO: get from query string
if (chatroomwidgetServerUrl === undefined) {
throw "chatroomwidgetServerUrl must be defined";
@hraban
hraban / poc.js
Last active August 29, 2015 14:04
encode array of strings literal in js by length
// Copyright © 2014 Hraban Luyat <hraban@0brg.net>
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
@hraban
hraban / getrandomparagraph.scala
Created February 6, 2015 00:31
Get a random paragraph from a file
import scala.io
import scala.util.Random
object RandomQuote {
private def splitParagraphs(r: io.BufferedSource) =
r.mkString.split("\n\n")
private def getRandomElement[T](ar: Array[T]): Option[T] = ar.length match {
case 0 => None
case _ => Some(ar(Random.nextInt(ar.length)))
@hraban
hraban / test.c
Last active August 29, 2015 14:16
Memcpy vs pointer dereference
/**
* Memcpy demonstration. Try compiling with:
*
* $ gcc -Wall -Werror -pedantic -std=c99 -S test.c -o test-deref.s
* $ gcc -Wall -Werror -pedantic -std=c99 -S test.c -DMEMCPY -o test-memcpy.s
* $ diff -u test-deref.s test-memcpy.s
*
* And play with -O0 to -O3 flags to see the effect of optimizations.
*/
@hraban
hraban / config.guess
Last active August 29, 2015 14:20
Building opus with emscripten
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
# 2011, 2012 Free Software Foundation, Inc.
timestamp='2012-02-10'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@hraban
hraban / faviconchanger.html
Created July 7, 2015 11:48
animated favicon without gif
<!doctype html>
<html>
<head>
<link rel=icon id=favicon >
<script>
var i = 0;
setInterval(function () {
i=(i+1)%4;
@hraban
hraban / deploy-utils.sh
Last active August 29, 2015 14:27
Bash utils for deploy scripts
#!/bin/bash
# Copyright (c) Hraban Luyat 2015 <hraban@0brg.net>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
@hraban
hraban / coroutines.lisp
Created May 29, 2011 12:05 — forked from ryepup/coroutines in lisp
lisp coroutines using chanl (threads)
(defmacro make-coroutine ((&key (coroutine-done-value :done)) &body body)
(alexandria:with-gensyms ((thrfn "thread body")
(c "channel"))
`(let* ((,c (make-instance 'chanl:bounded-channel))
(,thrfn (lambda ()
(flet ((yield (&optional n)
(chanl:send ,c n)))
,@body
(yield ,coroutine-done-value)))))
(let ((alive-p T) val thr)
@hraban
hraban / mylock.cs
Created March 20, 2012 09:12
Custom C# locking interface and implementation
using System;
using System.Threading;
namespace Locking
{
internal interface IWaitableLock
{
/// <summary>
/// Acquire the lock.
/// </summary>