Skip to content

Instantly share code, notes, and snippets.

View midnightcodr's full-sized avatar
💭
A

Rico Chen midnightcodr

💭
A
View GitHub Profile
@midnightcodr
midnightcodr / server.js
Created April 3, 2019 19:33
hapijs-18-catbox-example.js
serverOptions.cache = [
{
name: 'redisCache',
provider: {
constructor: require('catbox-redis'),
options: {
url: process.env.REDIS_URL
}
}
}
@midnightcodr
midnightcodr / Input.js
Last active April 10, 2019 13:22
material design text input with styled-components
import React from 'react'
import styled from 'styled-components'
const Wrapper = styled.div`
position: relative;
width: 100%;
padding-bottom: 2rem;
input:focus ~ label,
input:valid ~ label {
@midnightcodr
midnightcodr / .babelrc
Last active May 2, 2019 19:48
parcel bundler for a simple project with rebass/styled-components
{
"presets": [
"env",
"react"
],
"plugins": [
"transform-object-rest-spread",
"transform-class-properties"
]
}
@midnightcodr
midnightcodr / async-await-abuse-example.js
Created May 18, 2019 02:06
Showing a simple example of abusing async/await in javascript
const asyncJob = () => {
console.time('asyncJob')
return new Promise(resolve => {
return setTimeout(() => {
console.timeEnd('asyncJob')
return resolve('result from asycJob')
}, 1000)
})
}
// Based on https://stackoverflow.com/questions/48720942/node-js-joi-how-to-display-a-custom-error-messages
const Hapi = require('@hapi/hapi')
const Joi = require('@hapi/joi')
const Boom = require('@hapi/boom')
const server = Hapi.Server({
port: 3000,
routes: {
validate: {
// credit: https://hackernoon.com/functional-javascript-resolving-promises-sequentially-7aac18c4431e
const N = 5
const promiseSerial = funcs =>
funcs.reduce(
(promise, func) =>
promise.then(result => func().then(Array.prototype.concat.bind(result))),
Promise.resolve([])
)
@midnightcodr
midnightcodr / write-two-millio-rows-of-csv-data-with-node-cluster.js
Last active September 3, 2023 03:55
How to write two million rows of csv data using faker.js and node cluster
const faker = require('faker')
// const N = 30
const N = 2000000
const fs = require('fs')
const record = () => {
// faker.fake(
// '{{name.lastName}},{{name.lastName}},{{address.city}},{{address.county}},{{address.zipCode}},{{hacker.adjective}}\n'
return [
faker.name.firstName(),
faker.name.lastName(),
@midnightcodr
midnightcodr / hapi-js-file-upload-with-content-type-detection-demo.js
Created September 14, 2019 18:50
hapi-js-file-upload-with-content-type-detection-demo.js
const Hapi = require('@hapi/hapi')
const Joi = require('@hapi/joi')
const fileType = require('file-type')
const stream = require('stream')
const Readable = stream.Readable
const port = 5000
const server = Hapi.server({
port
})
@midnightcodr
midnightcodr / Hapijs-uploads-basic-and-advanced-examples.md
Last active May 23, 2020 17:51
hapijs uploads: basic and advanced (with virus scanning) examples

Setup

npm i

Use this docker image to setup the scanner

 docker run --name clamav -d -p 3310:3310 mkodockx/docker-clamav
@midnightcodr
midnightcodr / .env.example
Created December 26, 2020 18:17
ssh2-sftp-client reconnect on error demostration
SFTP_USER=
SFTP_HOST=127.0.0.1
SFTP_PORT=22
SFTP_PASSWORD=