Skip to content

Instantly share code, notes, and snippets.

// https://gist.github.com/flisboac/6af02b5254088558362757593dc54f9c
import {
Abstract,
DynamicModule,
INestApplicationContext,
Type,
} from '@nestjs/common';
import { ContextId } from '@nestjs/core';
import {
import { ContextId } from '@nestjs/core';
import { Abstract, INestApplicationContext, Type } from '@nestjs/common';
import { Transform, TransformFnParams, TransformOptions } from 'class-transformer';
/**
* A class-based property transformer.
*
* Functionally, the call to `this.transform` is what substitutes the transformer
* function passed into the default `Transform` decorator. This means that it must
* return the correct value, and NOT be asynchronous. If you DO return promises, be
<!doctype html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
</head>
<body>
<div id="options">
<label for="cellSize">Cell size</label>
<input type="number" id="cellSize" name="cellSize" min="10" max="9999" step="5" value="20">
@flisboac
flisboac / CalculateFlywayChecksum.java
Last active March 22, 2020 09:14
Creates a new INSERT line for a Flyway SQL migration. Useful for patching migration information in the schema_version table (I won't judge, don't worry). Parts of this code were extracted from Flyway v6.1.4.
import java.io.BufferedReader;
import java.io.FileReader;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.zip.CRC32;
public class CalculateFlywayChecksum {
@flisboac
flisboac / ..parcel-class-self-ref.md
Last active January 29, 2020 03:26
Gist for a possible bug in parcel.js (report TBD)

Gist for a possible bug in parcel.js (report TBD)

O que segue é um breve resumo, aplicável a ambos C e C++, na medida do possível.

Em C e C++, há o conceito de translation unit (TU) (C, C++). Cada arquivo que vc compila para um arquivo-objeto (com extensao .o, ou no Windows com extensao .obj), é oriundo de uma TU.

Primeiro, sua TU é preprocessada -- é neste estágio que o seu arquivo externo é incluído, via diretiva de processador #include (C, C++). Uma vez preprocessada, sua TU é compilada para um arquivo-objeto. Ao contrário do Python, que considera "arquivos externos" como módulos, a inclusão de arquivos no C++ é feita no pré-processamento, e por isso é uma inclusão meramente textual.

Depois o linker une todos os arquivos-objeto em um único binário, seja executável ou não.

No C/C++, também é p

@flisboac
flisboac / crtp_template.cpp
Created August 16, 2019 05:20
Example of usage of CRTP for compile-time polymorphism. https://glot.io/snippets/ff2rlis81s
#include <iostream>
#include <string>
using namespace std;
// Utility class, mostly.
// The secret sauce is static_cast.
// as_subclass() is there only to help deduce when to const things.
template <typename TSubclass>
class crtp_template {
protected:

Uma breve explicação sobre repositórios locais e remotos

Repositórios Git são completamente independentes uns dos outros. Quando vc clona um repositório, vc está efetivamente copiando todo o repositório de origem para uma cópia local completamente independente da original. Ainda assim, é desejável ter um certo nível de sincronismo entre a "cópia de trabalho" e o repositório de origem (chamado de "upstream", ou "origin"). Por este motivo, existe um conceito chamado repositório remoto no git.

Seu repositório local pode ter quantos remotos forem necessários. Vc pode associar seus branches locais com branches de algum repositório remoto qualquer, e o Git te ajuda a manter os dois sincronizados através dos mecanismos de fetch (atualizar as referências/estado do repositório remoto no local, e.g. quais branches/refs existem no remoto, etc), push (envio de alterações/commits de um branch local para o repositório remoto) e pull (obtenção de alterações/commits remotos para um branch no repositório

/**
* Models a type guard function.
*/
export interface Guard<T> {
readonly name: string;
(value: any): value is T;
}
/**
import { Injectable } from '@angular/core';
import API, { graphqlOperation } from '@aws-amplify/api';
import * as Observable from 'zen-observable';
import { GraphQLResult } from '@aws-amplify/api/lib/types';
export type GqlOperationKind = 'query' | 'mutation' | 'subscription';
export type GqlKindFromOper<O extends GqlOperation<any>> = O extends GqlOperation<any> ? GqlOperation<any>['kind'] : never;
export type GqlResultFromOper<O extends GqlOperation<any>> = O extends GqlOperation<infer R> ? R : never;