Skip to content

Instantly share code, notes, and snippets.

Avatar
🛹

Halan Pinheiro halan

🛹
View GitHub Profile
View gist:567583fd8f7fb0219b8323ebca5eab62
{
"countries": [
{
"country": "Afghanistan",
"states": ["Badakhshan", "Badghis", "Baghlan", "Balkh", "Bamian", "Daykondi", "Farah", "Faryab", "Ghazni", "Ghowr", "Helmand", "Herat", "Jowzjan", "Kabul", "Kandahar", "Kapisa", "Khost", "Konar", "Kondoz", "Laghman", "Lowgar", "Nangarhar", "Nimruz", "Nurestan", "Oruzgan", "Paktia", "Paktika", "Panjshir", "Parvan", "Samangan", "Sar-e Pol", "Takhar", "Vardak", "Zabol"]
},
{
"country": "Albania",
"states": ["Berat", "Dibres", "Durres", "Elbasan", "Fier", "Gjirokastre", "Korce", "Kukes", "Lezhe", "Shkoder", "Tirane", "Vlore"]
},
@halan
halan / ca.md
Created Mar 25, 2021 — forked from soarez/ca.md
How to setup your own CA with OpenSSL
View ca.md

How to setup your own CA with OpenSSL

For educational reasons I've decided to create my own CA. Here is what I learned.

First things first

Lets get some context first.

@halan
halan / catamorphism.js
Created Mar 23, 2020
Catamorph structure
View catamorphism.js
Loop = (value, {x, y}) => ({
value: value,
cata: mapping =>
x > y
? value
: Loop(mapping(value, x), {x: x + 1, y})
.cata(mapping)
});
console.log(
@halan
halan / lens.js
Created Mar 23, 2020
A pure lens implementation strongly based on ramda implementation, made to teaching my internships at Codeminer42.com
View lens.js
o = { user: { name: 'foo' } }
const get = key => obj => obj[key]
const set = key => (x, obj) =>
({ ...obj, [key]: x })
Identity = v => ({
value: v,
@halan
halan / monads.js
Last active Mar 13, 2020
Example of monads to manage validations
View monads.js
// base
const Valid = x => ({
map: f => Valid(f(x)),
chain: f => f(x),
bimap: ({valid}) => Valid(valid(x)),
cata: ({valid}) => valid(x)
})
const Wrong = x => ({
@halan
halan / fantasyland.js
Last active Feb 21, 2020
Fantasy Land // based on the specs described here https://github.com/fantasyland/fantasy-land
View fantasyland.js
// Setoid
a.equals(a) === true // reflexivity
a.equals(b) === b.equals(a) // summetry
a.equals(b) && b.equals(c) == q.equals(c) // transitivity
// Ord
// must also implement the Setoid
a.lte(b) || b.lte(a) === true // totality
@halan
halan / accounting.sql
Created Aug 8, 2018 — forked from 001101/accounting.sql
Basic double-entry bookkeeping system, for PostgreSQL.
View accounting.sql
CREATE TABLE accounts(
id serial PRIMARY KEY,
name VARCHAR(256) NOT NULL
);
CREATE TABLE entries(
id serial PRIMARY KEY,
description VARCHAR(1024) NOT NULL,
amount NUMERIC(20, 2) NOT NULL CHECK (amount > 0.0),
-- Every entry is a credit to one account...
@halan
halan / decode.md
Created Mar 12, 2017 — forked from yang-wei/decode.md
Elm Json.Decode tutorial and cheatsheet
View decode.md

When receiving JSON data from other resources(server API etc), we need Json.Decode to convert the JSON values into Elm values. This gist let you quickly learn how to do that.

I like to follow working example code so this is how the boilerplate will look like:

import Graphics.Element exposing (Element, show)
import Task exposing (Task, andThen)
import Json.Decode exposing (Decoder, int, string, object3, (:=))

import Http
View elmhelloworld.elm
import Html
main = Html.text "Hello World"
@halan
halan / angular.controller.js
Created Mar 2, 2017 — forked from suissa/angular.controller.js
Exemplo de uma função em um controller em ng 1.6
View angular.controller.js
function ListController ( Service, $mdDialog ) {
const vm = this;
vm.list = true;
vm.MODULE_NAME = MODULE_NAME;
vm.PATH = MODULE_NAME.toLowerCase();
const hiddenFields= [
'active'
, 'password'
, 'automaticLogin'