Skip to content

Instantly share code, notes, and snippets.

View PanJarda's full-sized avatar

Jaroslav Pernica PanJarda

  • Prague, Czech Republic
View GitHub Profile
@adrusi
adrusi / rpn.js
Created June 18, 2011 00:22
A full interpreter for an rpn-based language written in under 300 lines of javascript.
#!/usr/bin/env node
var input = require("fs").readFileSync(
require("path").join(process.cwd(), process.argv[process.argv.length - 1]),
"utf8"
);
var gvars = {};
function exec(input, fns, vars) {
(function findStrs() {
var inStr = false;
@cliffwoo
cliffwoo / simple-nginx-webdav.sh
Created November 6, 2012 06:47 — forked from dysinger/simple-nginx-webdav.sh
A simple nginx/webdav setup for use with things like mobile-org
#!/bin/sh
# on ubuntu: need some utils & dev libs
sudo apt-get install apache2-utils openssl libssl-dev libpcre3-dev
# compile nginx
cd /tmp
curl http://nginx.org/download/nginx-0.7.64.tar.gz | tar xz
cd nginx*
./configure --with-http_ssl_module --with-http_dav_module \
@RickCarlino
RickCarlino / gforth_cheat_sheet.md
Last active April 6, 2025 10:02
gforth cheat sheet

Math

  • .s - Show the stack
  • +, -, *, mod - Math operators
  • /mod - performs both / and mod

Stack manipulation

  • drop and 2drop - drop a stack item (once / twice)
  • dup - duplicate a stack item
  • rot - rotate the stack
@fdecampredon
fdecampredon / Contract.ts
Last active August 10, 2019 22:03
Contract programming with typescript and decorators
@In((a: string, b: string) => {
assert(typeof a === 'string');
assert(typeof b === 'string');
assert(a.length > 5);
assert(a.length > 7);
})
@Out((result: string) => {
assert(typeof result === 'string');
assert(a.length > 12);
})
@JamesMessinger
JamesMessinger / IndexedDB101.js
Last active April 14, 2025 16:34
Very Simple IndexedDB Example
// This works on all devices/browsers, and uses IndexedDBShim as a final fallback
var indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB || window.shimIndexedDB;
// Open (or create) the database
var open = indexedDB.open("MyDatabase", 1);
// Create the schema
open.onupgradeneeded = function() {
var db = open.result;
var store = db.createObjectStore("MyObjectStore", {keyPath: "id"});
@swlaschin
swlaschin / ConstrainedTypesExamples.fsx
Last active March 9, 2025 02:36
Examples of creating constrained types in F#
// General hints on defining types with constraints or invariants
//
// Just as in C#, use a private constructor
// and expose "factory" methods that enforce the constraints
//
// In F#, only classes can have private constructors with public members.
//
// If you want to use the record and DU types, the whole type becomes
// private, which means that you also need to provide:
// * a constructor function ("create").
@Dammmien
Dammmien / dfs.js
Last active February 22, 2022 11:37
Depth First Search (DFS) Graph Traversal in Javascript
const nodes = [
{
links: [ 1 ], // node 0 is linked to node 1
visited: false
}, {
links: [ 0, 2 ], // node 1 is linked to node 0 and 2
visited: false
},
...
];
@radum
radum / polyfill.document.createTreeWalker.js
Created May 16, 2017 10:30
polyfill.document.createTreeWalker.js
/* eslint no-param-reassign: 0 */
/**
* JavaScript implementation of W3 DOM4 TreeWalker interface.
*
* See also:
* - https://dom.spec.whatwg.org/#interface-treewalker
*
* Attributes like "read-only" and "private" are ignored in this implementation
* due to ECMAScript 3 (as opposed to ES5) not supporting creation of such properties.
@WebReflection
WebReflection / hyper-nitty-gritty.js
Last active May 30, 2023 06:09
hyperHTML, the nitty gritty
// used to retrieve template content
const templates = new WeakMap;
// used to retrieve node updates
const updates = new WeakMap;
// hyperHTML, the nitty gritty
function hyperHTML(chunks, ...interpolations) {
// if the static chunks are unknown
@PanJarda
PanJarda / toy-interpreter.js
Last active November 11, 2017 23:52
Toy - concatenative, functional, stack-based, truly postfix language.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let stack = [];
let consts = {
swapd: '[[swap] dip]',
popd: '[[pop] dip]',