Skip to content

Instantly share code, notes, and snippets.

View Kasahs's full-sized avatar

Shasak Raina Kasahs

  • O4S
  • Gurugram, India
View GitHub Profile
@Kasahs
Kasahs / comment-regex.js
Created September 26, 2018 12:04
regex for matching lines that are c style comments
const regex = /^\/\/.*|\/\*(.|\s)*?\*\//gm;
const str = `/**
asdnajsndjk
*/
// asdaskdbjkasdasdasdbjk
asdasdasdasdbjhbcjahbhj
asdbhkbajkbkcbasdasdas
//asdnbakjnbjknbjkansd
/**
asdnjkanskjdbnkjbjkbdkbjkbjkabsd
@Kasahs
Kasahs / prng-collision-test.js
Last active August 24, 2018 11:32
Test your PRNG for collision frequency
var num = (len, rng) => Math.floor(10 ** (len - 1) + rng() * 9 * 10 ** (len - 1));
var test = (rng, times) => {
var map = {}
for(let i=0; i<times; i++){
let rn = rng()
map[rn] = map[rn] ? map[rn] + 1 : 1
}
let collisions = Object.values(map).filter(val => val > 1)
@Kasahs
Kasahs / tail-till.py
Created July 19, 2018 17:16
read lines from file in reverse order and write to stdout till match is found
import os
import sys
def readlines_reverse(filename):
with open(filename) as qfile:
qfile.seek(0, os.SEEK_END)
position = qfile.tell()
line = ''
while position >= 0:
qfile.seek(position)
next_char = qfile.read(1)
@Kasahs
Kasahs / proportional-selection.js
Last active January 13, 2018 13:24
sampling by relative frequency distribution
/**
* given a sorted list and a number to search returns the right insertion index to maintain sorted order
* @param list {number[]}
* @param x {number}
*/
const bisectRight = (list, x) => {
if(list.length === 0) {
return 0
}
let first = 0
@Kasahs
Kasahs / useful-docker-stuff.sh
Created November 14, 2017 13:56
some useful commands and comments on docker usage
# Docker useful commands:
# Build docker container with tag name using Docker (Dockerfile should be in current dir)
docker build -t <choose_image_name>
# Start container with required commands, (one’s specified in CMD tag in Dockerfile)
docker run <image_name>
# Start container with shell of choice
docker run -it o4s-transactions sh
@Kasahs
Kasahs / basic-nav-bar-behaviour.js
Created October 6, 2017 12:53
Implements basic ```navbar on click addclass``` behavior
const activateNavbars = (document, window) => {
let navs = document.querySelectorAll('.nav') || []
navs.forEach((nav) => {
let navItems = nav.querySelectorAll('.nav__item')
if(!navItems.length > 0 ) {
return
}
let selectedItem = null
@Kasahs
Kasahs / awesome.ts
Created August 12, 2017 14:03
Things I love about Typescript
/* strict typing extends to browser API which enables error free code at compile time.*/
// this won't work because querySelector returns type Element
let roomNameEl:HTMLElement = el.querySelector('.room-name')
// this solves the problem
let roomNameEl:Element = el.querySelector('.room-name')
// this will not work cause Element doesn't have value attr
let roomNameEl:Element = el.querySelector('.room-name')
roomNameEl.value // error no such attr
// this will work, also notice typecasting is possible
@Kasahs
Kasahs / angular-unload.js
Created March 14, 2016 11:03
Angular page unload prevention dialog
vm.unloadWatcher = $scope.$on('$locationChangeStart', function(event, next, current) {
if(!confirm("Are you sure you want to leave this page?")) {
event.preventDefault();
}
});
$scope.$on('$destroy', function(){
vm.unloadWatcher();
});
@Kasahs
Kasahs / mask.js
Last active March 1, 2016 09:03
mask all but last 4 characters of a string
// source: http://stackoverflow.com/a/27545357/2317794
var str = "1238127397812378"
str = str.replace(/\d(?=\d{4})/g, "*");
@Kasahs
Kasahs / english_prefix_list.py
Created January 28, 2016 08:36
A list of 4 letter(max) prefixes derived from a list of common words in English.
prefixes = ["", "&c", "'d", "'em", "'ll", "'m", "'mid", "'mon", "'pre", "'re", "'s", "'sbl", "'sbo", "'sde", "'sfo", "'she", "'shu", "'sli", "'sna", "'str", "'t", "'til", "'tis", "'twa", "'twe", "'twi", "'two", "'un", "'ve", "1080", "10th", "1st", "2", "2nd", "3rd", "4th", "5th", "6th", "7th", "8th", "9th", "a", "a'", "a's", "a/c", "a1", "aa", "aaa", "aah", "aahe", "aahi", "aahs", "aal", "aali", "aals", "aam", "aard", "aarg", "aaro", "aarr", "aas", "aasv", "ab", "aba", "abac", "abad", "abaf", "abai", "abak", "abal", "abam", "aban", "abap", "abar", "abas", "abat", "abau", "abav", "abax", "abay", "abaz", "abb", "abba", "abbe", "abbo", "abbr", "abby", "abc", "abce", "abci", "abco", "abd", "abda", "abde", "abdi", "abdo", "abdu", "abe", "abea", "abec", "abed", "abeg", "abei", "abel", "aben", "abep", "aber", "abes", "abet", "abev", "abey", "abfa", "abhe", "abhi", "abho", "abib", "abic", "abid", "abie", "abig", "abil", "abim", "abin", "abio", "abir", "abis", "abit", "abiu", "abje", "abjo", "abju", "abka", "abl", "ab