Skip to content

Instantly share code, notes, and snippets.

View jlcarvalho's full-sized avatar

Jean Lucas de Carvalho jlcarvalho

View GitHub Profile
@jlcarvalho
jlcarvalho / getKLDivergence.ts
Created October 27, 2022 03:52
Get KL Divergence from Normal Distribution
export function getKLDivergence(d1: Array<number>, d2: Array<number>) {
const [mu1, sigma1] = d1;
const [mu2, sigma2] = d2;
const eq1 = Math.log(sigma2) / Math.log(sigma1);
const eq2 = (sigma1 ** 2 + (mu1 - mu2) ** 2) / (2 * sigma2) ** 2;
return eq1 + eq2 - 1 / 2;
}
@jlcarvalho
jlcarvalho / overlapArea.ts
Created October 27, 2022 00:57
Calculates the overlapping area between normal distributions
import NormalDistribution from "normal-distribution";
type TDistribution = Array<number>;
export function overlapArea(rating1: TDistribution, rating2: TDistribution) {
const [mean1, sd1] = rating1;
const [mean2, sd2] = rating2;
const normalDistribution1 = new NormalDistribution(mean1, sd1);
const normalDistribution2 = new NormalDistribution(mean2, sd2);
@jlcarvalho
jlcarvalho / part1.md
Created August 31, 2022 02:53 — forked from vlandham/part1.md
Feature Branches and Pull Requests : Walkthrough

Here's a little walkthrough of how Yannick and I are using feature branches and pull requests to develop new features and adding them to the project. Below are the steps I take when working on a new feature. Hopefully this, along with watching the process on Github, will serve as a starting point to having everyone use a similar workflow.

Questions, comments, and suggestions for improvements welcome!

Start with the latest on master

When starting a new feature, I make sure to start with the latest and greatest codebase:

git checkout master
@jlcarvalho
jlcarvalho / conventional_commits.md
Last active August 31, 2022 02:49 — forked from ivanrosolen/conventional_commits.md
Guia para mensagens de commits

Guia para mensagens de commits

TLDR;

Nós utilizamos o Conventional Commits para padronizar as mensagens de commit, esse documento descreve o funcionamento desse padrão.

No entanto, para facilitar a nossa vida nós também usamos o Commitizen. Essa ferramenta nos ajuda a seguir a padronização através de uma CLI para realizar commits que pode ser acessado através do comando:

npm run commit
@jlcarvalho
jlcarvalho / deploy.yml
Last active January 22, 2022 23:39
Post: Exemplos de como realizar deploy de uma aplicação Next.js no GH Pages
name: Deploy
on:
push:
branches:
- master
jobs:
ci:
runs-on: ubuntu-latest
steps:
- name: Check out repository code

Algum tempo atrás eu publiquei um artigo que ensinava como desempacotar aplicativos da Google Play para auxiliar no aprendizado através de engenharia reversa. No artigo eu busquei deixar claro que o objetivo era fazer com que "mais pessoas sejam capazes de otimizar seus aplicativos através das descobertas proporcionadas pela técnica".

E muita gente entendeu isso, mas ainda assim rolou bastante polêmica. Muita gente acredita que esse tipo de conhecimento não pode ser propagado. Talvez por medo ou algo do tipo. A questão é que eu acredito que só através do conhecimento nós seremos capazes de melhorar nossos aplicativos. Inclusive a engenharia reversa pode nos ajudar em diversas áreas, como segurança, performance, tooling, usabilidade, etc.

Enfim, eu poderia me estender mais, falando das questões éticas e morais do tema, mas já fiz isso no meu artigo anterior então vamos ao que interessa.

Espiando os aplicativos

É importante ressaltar que para realizar os passos a seguir é necessário possuir um Mac e um d

@jlcarvalho
jlcarvalho / SCSS.md
Created August 11, 2017 00:36 — forked from jareware/SCSS.md
Advanced SCSS, or, 16 cool things you may not have known your stylesheets could do

⇐ back to the gist-blog at jrw.fi

Advanced SCSS

Or, 16 cool things you may not have known your stylesheets could do. I'd rather have kept it to a nice round number like 10, but they just kept coming. Sorry.

I've been using SCSS/SASS for most of my styling work since 2009, and I'm a huge fan of Compass (by the great @chriseppstein). It really helped many of us through the darkest cross-browser crap. Even though browsers are increasingly playing nice with CSS, another problem has become very topical: managing the complexity in stylesheets as our in-browser apps get larger and larger. SCSS is an indispensable tool for dealing with this.

This isn't an introduction to the language by a long shot; many things probably won't make sense unless you have some SCSS under your belt already. That said, if you're not yet comfy with the basics, check out the aweso

Trabalhando com Queries no PouchDB

#artigo

Como uma continuidade do último post sobre PouchDB, nesse artigo iremos aprofundar nas formas de realizar queries no banco de dados. Basicamente existem três formas de realizarmos consultas no PouchDB, uma é através da API allDocs() e as outras duas são através da API query(), onde temos as queries temporárias e as queries persistentes.

allDocs()

Utilizando a API allDocs() sem passar parâmetros nós basicamente estamos buscando por todos os registros de nosso banco de dados. Porém, embora pareça simples, essa API é bastante poderosa, pois ela nos fornece algumas opções para realizar nossas consultas. Dentre elas as que eu mais utilizo são:

  • include_docs: caso não seja especificada todos os documentos serão retornados apenas com _id e _rev;
  • startkey & endkey: busca os documentos cudo IDs estão inclusos no intervalo especificado por essas opções;
#lo sauer, 2013 - www.lsauer.com
#see: http://www.lsauer.com/2013/05/mysql-fuzzy-searching-fulltext-queries.html
#Note: In MySQL SUBSTRING, the string-index starts at position 1
SELECT * FROM tablename
WHERE SOUNDEX(tablename_field)
LIKE CONCAT('%',SUBSTRING(SOUNDEX('Fuzti serch derm'),2),'%');

30 de outubro

PDF

  • Austar tamanhos de fonte para ficar parecido com o doc original
  • Ajustar espaçamentos
  • Adicionar @ecopowergoias no rodapé da última página
  • Quantidade de painéis está fixo na página 4
  • Testar nome de cliente muito grande no PDF

Outros