Skip to content

Instantly share code, notes, and snippets.

View juliobetta's full-sized avatar
🎧

Julio Betta juliobetta

🎧
View GitHub Profile
@juliobetta
juliobetta / maybe.py
Last active June 22, 2022 19:02
Maybe Monad in Python (naive approach)
from abc import ABC
from typing import Callable, TypeVar, Generic
T = TypeVar('T')
class Maybe(Generic[T], ABC):
def __init__(self, value: T | None):
self.value = value
@juliobetta
juliobetta / gist:59269eb8d48219db627315cfefd6f021
Created September 10, 2019 16:58
remove a file from history after added to .gitignore
git update-index --skip-worktree <filepath>
@juliobetta
juliobetta / firestoreIterator.js
Last active May 24, 2018 13:44
Transform a Firebase.Firestore.QuerySnapshot into an iteratable
function fetchAll() {
return firebase.firestore().collection('objects').get().then(snapshot => (
{
[Symbol.iterator]: function iterator() {
const { docs } = snapshot;
return {
next() {
return {
done: docs.length === 0,
@juliobetta
juliobetta / firstDuplicate.js
Last active April 9, 2018 02:23
Find first duplicate in a string using RxJS
const str = `Mussum Ipsum, cacilds vidis litro abertis. Si u mundo tá muito paradis?
Toma um mé que o mundo vai girarzis! Viva Forevis aptent taciti sociosqu ad litora torquent.
Aenean aliquam molestie leo, vitae iaculis nisl.
Leite de capivaris, leite de mula manquis sem cabeça.
Posuere libero varius. Nullam a nisl ut ante blandit hendrerit. Aenean sit amet nisi.
Delegadis gente finis, bibendum egestas augue arcu ut est. Admodum accumsan disputationi eu sit.
Vide electram sadipscing et per. Sapien in monti palavris qui num significa nadis i pareci latim.
Interagi no mé, cursus quis, vehicula ac nisi. Manduma pindureta quium dia nois paga.
Mais vale um bebadis conhecidis, que um alcoolatra anonimis. Si num tem leite então bota uma pinga aí cumpadi!`;
@juliobetta
juliobetta / NoVNC_Paste.js
Created December 12, 2017 12:12 — forked from byjg/NoVNC_Paste.js
How to Paste code to NoVNC.
// This will open up a prompt for text to send to a console session on digital ocean
// Useful for long passwords
(function () {
window.sendString = function (str) {
f(str.split(""));
function f(t) {
var character = t.shift();
var i=[];
var code = character.charCodeAt();
var needs_shift = character.match(/[A-Z!@#$%^&*()_+{}:\"<>?~|]/);
@juliobetta
juliobetta / package.json
Last active October 15, 2017 00:00
Base package.json [React, Redux, React-Router, React-Toolbox, Webpack, PouhchDB, etc...]
{
"name": "<project-name>",
"version": "0.0.1",
"productName": "<Product Name>",
"main": "<entrypoint>",
"repository": {
"type": "git",
"url": "<repo-url>"
},
"author": {
const hasDebutIn90s = character => character.debut >= 1990;
const getName = character => character.name;
console.log(characters.filter(hasDebutIn90s).map(getName));
// [
// "Captain Falcon",
// "Fox",
// "Kirby"
// ]
const result = (
characters
.filter(character => character.debut >= 1990)
.map(character => character.name)
);
// [
// "Captain Falcon",
// "Fox",
// "Kirby"
const hasDebutAfter1980 = character => character.debut > 1980;
const withFind = characters.find(hasDebutAfter1980);
const withReduce = characters.reduce((accumulator, character) => {
if(hasDebutAfter1980(character) && !accumulator) {
return character;
}
return accumulator;
const hasDebutAfter1980 = character => character.debut > 1980;
const withEvery = characters.every(hasDebutAfter1980);
const withReduce = characters.reduce((accumulator, character) => {
if(hasDebutAfter1980(character)) {
return true;
}
return accumulator && hasDebutAfter1980(character);