Skip to content

Instantly share code, notes, and snippets.

View lmammino's full-sized avatar
🦁
Roar!

Luciano Mammino lmammino

🦁
Roar!
View GitHub Profile
@lmammino
lmammino / index.js
Last active July 19, 2017 20:02
Javascript getters/setters quick demo - expanded from Node.js Design Patterns (Second Edition) - https://www.nodejsdesignpatterns.com/
const person = {
name: 'George',
surname: 'Boole',
get fullname () {
console.log('** getting fullname')
return this.name + ' ' + this.surname
},
set fullname (fullname) {
console.log('** setting fullname to', fullname)
let parts = fullname.split(' ')
@lmammino
lmammino / README.md
Created October 10, 2017 21:19
Automated SMS notifications with AWS Lambda and Twilio APIs — Commented code

This is the code used the article Automated SMS notifications with AWS Lambda and Twilio APIs published on Twilio's blog

Here follows a detailed description of every part of the code:

  1. The first thing we do is to import the request-promise-native library.
  2. Then we declare our handler function by respecting the expected signature with event, context and callback as described previously.
  3. Inside the handler, we define some constants that we will use as configuration in the rest of the code. Be sure to fill in all the values that are specific to your account.
  4. At this point we are ready to perform the first API request to get the exchange rate from Fixer.io.
  5. Since request-promise-native returns a promise, we have to write a then and a catch method to handle the asynchronous control flow. Inside the then we have get the response data from the API call and we can use it to extract the current exchange rate. We also log the result, which is a go
@lmammino
lmammino / example.json
Created November 6, 2017 16:00
A sample message coming from SQS with a payload coming from SNS
{
"Messages": [
{
"Body": "{\n \"Type\" : \"Notification\",\n \"MessageId\" : \"abcdef01-2345-6789-0abc-defg123456783\",\n \"TopicArn\" : \"arn:aws:sns:eu-west-1:123456789012:ticketless-ticketPurchased\",\n \"Message\" : \"{\\\"ticket\\\":{\\\"id\\\":\\\"abcdef01-2345-6789-0abc-defg123456784\\\",\\\"createdAt\\\":1509980177897,\\\"name\\\":\\\"Alex Smith\\\",\\\"email\\\":\\\"[email protected]\\\",\\\"gig\\\":\\\"nirvana-cork-1991\\\"},\\\"gig\\\":{\\\"capacity\\\":2300,\\\"collectionPoint\\\":\\\"29 South Main Street, Centre, Cork City, Co. Cork, Ireland\\\",\\\"collectionTime\\\":\\\"13:00\\\",\\\"slug\\\":\\\"nirvana-cork-1991\\\",\\\"originalDate\\\":\\\"1991-08-20\\\",\\\"venue\\\":\\\"Cavern Club\\\",\\\"bandName\\\":\\\"Nirvana\\\",\\\"city\\\":\\\"Cork\\\",\\\"date\\\":\\\"2019-06-21\\\",\\\"image\\\":\\\"nirvana.jpg\\\",\\\"year\\\":\\\"1991\\\",\\\"collectionPointMap\\\":\\\"map-nirvana-cork-1991.png\\\",\\\"description\\\":\\\"Lorem Ipsum\\\",\\\"price\\\":\\\"1666.60\\\"}}\",\n \"
@lmammino
lmammino / gen_dkim.py
Created March 3, 2018 17:52
Generate dkim keys and a TXT record file for AWS Route 53
#!/usr/bin/env python
# Usage
# ./gen_dkim.py mail.yourdomain.tld
import sys
from subprocess import call
from os import devnull
if len(sys.argv) < 2:
@lmammino
lmammino / app-bundle.js
Created April 12, 2018 18:16
A sample webpacked bundle from http://poo.loige.co
This file has been truncated, but you can view the full file.
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
@lmammino
lmammino / README.md
Created October 7, 2018 18:28
Node.js design pattern: Asynchronous serial iteration over a collection using callbacks

This is an example of a very common Node.js design pattern: a serial asynchronous iteration over a collection (array) using callbacks.

If you are interested in learning more about common (and even less common!) Node.js design patterns, you should check out the book Node.js Design Patterns by Mario Casciaro and Luciano Mammino (spoiler alert: that's me :P):

https://www.nodejsdesignpatterns.com/


To run the example:

@lmammino
lmammino / example.go
Last active October 8, 2024 11:51
Ldap filter beautifier
package main
import (
"fmt"
"./ldap"
)
var filter = "(&(&(&(& (mailnickname=*) (| (&(objectCategory=person)(objectClass=user)(|(homeMDB=*)(msExchHomeServerName=*))) )))(objectCategory=user)(department=IT)(physicalDeliveryOfficeName=Amsterdam)))"
func main() {
@lmammino
lmammino / README.md
Created March 17, 2019 10:57
Pass arrays to shared libraries from python using C types

Pass arrays to shared libraries from python using C types

This example implements a simple shared library in C.

This library called libfifthy exposes a function called add_fifthy which takes an array of integers and modify it in place by adding 50 to all elements.

Then there's some code in python which builds an array and invokes the add_fifthy from the shared library and reads the altered array values.

Usage

@lmammino
lmammino / README.md
Last active May 7, 2019 16:40
Compile and run rust programs

Allows to compile and run a Rust program under unix systems:

./rrun <rust_file_name> <runtime_arguments>

For instance:

./rrun args 1 2 3 4 5
@lmammino
lmammino / example.js
Last active May 21, 2019 14:04
Readable stream that allows you to display a png in the terminal
'use strict'
const { readFileSync } = require('fs')
const PngTerm = require('./pngTerm')
const [,, filePath] = process.argv
const pngBuffer = readFileSync(filePath)
const image = new PngTerm(pngBuffer)