Skip to content

Instantly share code, notes, and snippets.

View jonasraoni's full-sized avatar
☠️
Do what you want cause a pirate is free! You are a pirate!

Jonas Raoni Soares da Silva jonasraoni

☠️
Do what you want cause a pirate is free! You are a pirate!
View GitHub Profile
@jonasraoni
jonasraoni / localized-compare.js
Created March 15, 2021 12:13
Compare texts using another locale in JavaScript
const comparer = new Intl.Collator('ru', { numeric: true }).compare;
console.log(comparer('ф', 'в')); //returns -1, 0, 1
@jonasraoni
jonasraoni / chained-sum.js
Last active January 3, 2021 12:35
A chained sum function in JavaScript
//+ Jonas Raoni Soares Silva
//@ http://raoni.org
// Iteration 3: manually minified xD
const sum = (...args) => ((v, r = sum.bind(this, v)) => (r[Symbol.toPrimitive] = () => v, r))(args.reduce((a, b) => a + b, 0));
// Iteration 2: supports sum(1,2,3)
const sum = (...args) => {
const operation = (...args) => args.reduce((a, b) => a + b, 0);
let current = operation(...args);
@jonasraoni
jonasraoni / UrlBuilder.cs
Created December 23, 2020 08:44
Simple URL builder for C#
//+ Jonas Raoni Soares Silva
//@ http://raoni.org
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
namespace JonasRaoni
{
@jonasraoni
jonasraoni / valid-utf-8-regexp.txt
Created December 6, 2020 13:39
Regular expression to find valid UTF-8 characters (useful for filtering bad input which might break some applications)
[\x00-\x7F] # ASCII
|[\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
|\xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
|\xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
|\xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
|[\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
|\xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
@jonasraoni
jonasraoni / convert.js
Created October 29, 2020 10:39
Convert boolean to positive (1) negative (-1)
const condition = true;
// I don't know why, but adding an if here makes me sad since I started programming :L
condition ? 1 : -1;
// Alternative way 1
(-1) ** condition;
// Alternative way 2
2 * condition - 1;
@jonasraoni
jonasraoni / Lazy.php
Created June 10, 2020 22:16
Class to retrieve values lazily from a callback
<?php
//+ Jonas Raoni Soares Silva
//@ http://raoni.org
class Lazy {
private $_cache;
private $_handler;
public function __construct(callable $handler)
{
@jonasraoni
jonasraoni / regexp.js
Created June 1, 2020 17:43
RegExp techniques to split
//Split by nothing/position
'USDEUR'.split(/(?=\w{3}$)/); //["USD", "EUR"]
//Split without consuming/swallowing
'2020-10-10'.split(/(-)/); //["2020", "-", "10", "-", "10"]
@jonasraoni
jonasraoni / C# Version Cheat Sheet.md
Created May 28, 2020 12:48 — forked from Gutek/C# Version Cheat Sheet.md
Short cheat sheet of changes in C# language from version 6 to 9

CS 6

read-only auto properties

Small help with immutable types...

// private readonly int _age;
// public int Age { get { return _age; } }
public int Age { get; }
@jonasraoni
jonasraoni / vue-select-all-component.vue
Last active April 10, 2020 18:30
Generic component to select all checkboxes
//+ Jonas Raoni Soares Silva
//@ http://raoni.org
<template lang="pug">
span.field(@click.stop="")
input.is-checkradio(
v-bind="$attrs"
type="checkbox"
ref="checkbox"
:indeterminate.prop="status === null"
@jonasraoni
jonasraoni / .npmrc
Created August 16, 2019 08:54
Example of configuration to make yarn use many registries with authentication
registry=https://artifactory.example.com/api/npm/proxy_of_npm/
//artifactory.example.com/api/npm/proxy_of_npm/:_authToken=SUPER_SECRET_KEY
//artifactory.example.com/api/npm/proxy_of_npm/:always-auth=true
//artifactory.example.com/api/npm/YOUR_PERSONAL_REPOSITORY/:_authToken=SUPER_SECRET_KEY
//artifactory.example.com/api/npm/YOUR_PERSONAL_REPOSITORY/:always-auth=true