Skip to content

Instantly share code, notes, and snippets.

Hraban Luyat hraban

Block or report user

Report or block hraban

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@hraban
hraban / get.ts
Last active Feb 28, 2018
Autonomous http(s) request lib for node, inspired by Tomas Dvorak
View get.ts
// copied from:
// https://www.tomas-dvorak.cz/posts/nodejs-request-without-dependencies/
// Licensed under: Attribution 4.0 International (CC BY 4.0)
// https://creativecommons.org/licenses/by/4.0/
// (note: there's some funky url parsing business which I didn't fully test; caveat emptor)
import * as http from "http";
import * as https from "https";
import * as url from "url";
@hraban
hraban / runtime-mixin.ts
Last active Feb 6, 2018
Typescript runtime mixins
View runtime-mixin.ts
// Inspired by:
// https://github.com/tc39/proposal-pipeline-operator/blob/37119110d40226476f7af302a778bc981f606cee/README.md#object-decorators
//
// Once pipe operator is implemented in TS, use this example to check if it
// survives type checking.
// Describe mixed in functionality
@hraban
hraban / carthesian.ts
Last active Nov 16, 2017
carthesian product in TypeScript
View carthesian.ts
function carthesian<T>(columns: T[][], f: (x: T[]) => void, stackOut: T[] = []): void {
if (columns.length === 0) {
f(stackOut)
} else {
const column = columns.shift()!;
column.forEach(entry => {
stackOut.push(entry);
carthesian(columns, f, stackOut);
stackOut.pop();
});
@hraban
hraban / output.txt
Last active Aug 23, 2017
(bash) Comparing $* and $@
View output.txt
$ /tmp/test.sh
$*: []
"$*": ['']
$@: []
"$@": []
$ /tmp/test.sh a b "c d"
$*: ['a', 'b', 'c', 'd']
@hraban
hraban / .travis.yml
Created May 24, 2017 — forked from hc2p/.travis.yml
This is a prove of concept for leveraging the travis directory caching for speeding up docker builds. It works by configuring the docker deamon to use a folder under current user's (travis) control. That way you have the privileges to use the caching feature of travis ci.
View .travis.yml
sudo: false
services:
- docker
before_script:
- sudo service docker stop
- if [ "$(ls -A /home/travis/docker)" ]; then echo "/home/travis/docker already set"; else sudo mv /var/lib/docker /home/travis/docker; fi
- sudo bash -c "echo 'DOCKER_OPTS=\"-H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock -g /home/travis/docker\"' > /etc/default/docker"
- sudo service docker start
@hraban
hraban / potential_json.go
Last active Jan 7, 2017
safe, human readable nested JSON encoding in Go
View potential_json.go
package main
import (
"encoding/json"
)
// PotentialJSON acts as a JSON encoding wrapper for []byte. The encoding is
// tentative:
//
// * if the contents already happen to be valid JSON, then it is represented
@hraban
hraban / watch.js
Last active Jul 2, 2018
Simple cross-platform change watcher
View watch.js
// Simplistic directory watcher
//
// example usage:
//
// $ node watch.js | while read line ; do echo compiling ... ; ( while read -r -t 0; do read -r ; done ) ; rm -rf build ; npm run build ; echo done ; done
//
var fs = require('fs');
@hraban
hraban / ensure-subset-type.ts
Last active Mar 24, 2017
Checked subset typing in TypeScript
View ensure-subset-type.ts
// Imagine you want to explicitly define which members of a public API
// interface your implementation actually uses. Example: you implement
// a web extension, but only use a few of the members on the argument
// to the onHeadersReceived handler. Explicitly typing this is useful
// when creating mocks in your unit tests.
//
// Here's now you could do it:
@hraban
hraban / vectorized-arrays.js
Last active Nov 10, 2016
Vectorized .all method on arrays to transparently access all members
View vectorized-arrays.js
Object.defineProperty(Array.prototype, 'all', {
get: function () {
return new Proxy(this, {
get: function(target, name, receiver) {
return target.map(x => x[name]);
},
set: function (target, name, value) {
target.forEach(x => x[name] = value);
},
// ... call:, etc.
@hraban
hraban / a.sh-session
Last active Aug 16, 2016
code snippets for Ravelin blog post
View a.sh-session
/tmp $ git clone -q github.com/unravelin/tomono
/tmp $ cat sub-repositories.txt
https://github.com/outr/scalarelational.git scalarelational
https://github.com/realph/gulp-zero.git zero
https://github.com/reaxis/mu µ
/tmp $ cat sub-repositories.txt | ./tomono/tomono.sh
… crunch crunch crunch
/tmp $ cd core
/tmp/core $ git branch
2.0.0
You can’t perform that action at this time.