Skip to content

Instantly share code, notes, and snippets.

Avatar

Paul Damnhorns nodkz

View GitHub Profile
@nodkz
nodkz / user.js
Created Nov 8, 2017
Mongoose with flow example
View user.js
/* @flow */
/* eslint-disable func-names */
import { Schema } from 'mongoose';
import DB from 'schema/db';
import composeWithMongoose from 'graphql-compose-mongoose';
import composeWithRelay from 'graphql-compose-relay';
import crypto from 'crypto';
import bcrypt from 'bcrypt';
import type { $Request } from 'express';
@nodkz
nodkz / .babelrc.js
Last active Jan 10, 2021
Babel 7.0 with .babelrc.js DEPRECATED! This config was created when babel 7 was in beta
View .babelrc.js
/* eslint-disable prefer-template */
const path = require('path');
const aliases = require('./aliases');
// ///////////////////////////////////////////////////////////////
// ////////////////// PLUGINS ////////////////////////////////
// ///////////////////////////////////////////////////////////////
const commonPlugins = [
@nodkz
nodkz / apolloServer2019.ts
Last active Dec 6, 2020
GraphQL error tracking with sentry.io (ApolloServer 2019)
View apolloServer2019.ts
import express from 'express';
import { ApolloServer } from 'apollo-server-express';
import { ApolloServerPlugin } from 'apollo-server-plugin-base';
import * as Sentry from '@sentry/node';
Sentry.init({
environment: process.env.APP_ENV,
// see why we use APP_NAME here: https://github.com/getsentry/sentry-cli/issues/482
release: `${process.env.APP_NAME}-${process.env.APP_REVISION}` || '0.0.1',
dsn: process.env.SENTRY_DSN,
@nodkz
nodkz / readme.md
Created Nov 15, 2020
Что такое Стейт Менеджер для вас?
View readme.md

Что такое Стейт Менеджер для вас?

Чтоб вы поняли мою точку зрения, мне придется зайти с далека, чтобы вас ввести в свой контекст. Буду говорить просто и квадратно, и можно зацепиться за любое предложение и опровергнуть его.

Так вот начнем с далека. Человек изобрел транзистор. Из них собрали регистры, логичейские гейты AND, OR, XOR и пошла поехала булевая логика. Еще чутка напряглись и собрали калькуляторы и компьютеры. Поняли, что считает эта штука быстрее человека, и надо туда засовывать всё больше и больше вычислительной логики.

В 50-ых минули времена инструкций и чистого ассемблера, придумали языки программирования высокого уровня, типа Fortran, который позволял людям быстрее писать программы. Завезли туда переменные (VARIABLES) и начали писать безумные алгоритмы вычисления.

Так активно писали, что где-то в 60х запарились и придумали функции (FUNCTIONS), чтоб изолировать/инкапсулировать куски логики и алгоритмов. Привет функциональному подходу из 60х.

View connectionString.ts
export interface ConnectionStringHost {
host: string;
port?: number;
}
export interface ConnectionStringParameters {
scheme: string;
username?: string;
password?: string;
hosts: ConnectionStringHost[];
@nodkz
nodkz / 1-server-generate-sign-url.js
Last active Oct 20, 2019
Upload image to S3 with resizing using lambda functions via hooks
View 1-server-generate-sign-url.js
/* @flow */
/* eslint-disable no-param-reassign */
import express, { type $Request, type $Response } from 'express';
import uniqid from 'uniqid';
import aws from 'aws-sdk';
export type SignResult = {
publicUrl: string,
signedUrl: string,
@nodkz
nodkz / package.json
Created Nov 20, 2017
Ram disk via scripts
View package.json
{
"scripts": {
"ram": "yarn ram-check-disk && yarn ram-create-disk && yarn ram-link-node-modules && yarn ram-link-build && yarn install && yarn start",
"ram-check-disk": "[ -d /Volumes/npm_ram_disk ] && echo 'Disk already mounted!' && yarn build && exit 1 || exit 0",
"ram-create-disk": "diskutil erasevolume hfsx npm_ram_disk `hdiutil attach -nomount ram://1600000`",
"ram-link-node-modules": "mkdir /Volumes/npm_ram_disk/node_modules && rm -r -f ./node_modules && ln -s /Volumes/npm_ram_disk/node_modules ./node_modules",
"ram-link-build": "mkdir /Volumes/npm_ram_disk/build && rm -r -f ./build && ln -s /Volumes/npm_ram_disk/build ./build",
}
}
@nodkz
nodkz / fix-package-json.ts
Created Jun 6, 2019
Make fixed versions for packages in package.json according to installed packages (w/ Lerna support)
View fix-package-json.ts
import * as glob from 'glob';
import * as fs from 'fs';
import * as path from 'path';
async function changePackage(ppp: any) {
try {
const filesToUpdate: string[] = await new Promise((resolve, reject) => {
glob(ppp, function(err, files) {
if (err) return reject(err);
return resolve(files);
@nodkz
nodkz / server.js
Created Feb 7, 2017
Sentry/raven manual config
View server.js
import path from 'path';
import express from 'express';
import { merge } from 'lodash';
import graphqlHTTP from 'express-graphql';
import PrettyError from 'pretty-error';
import expressHttpProxy from 'express-http-proxy';
import bodyParser from 'body-parser';
import raven from 'raven';
import morgan from 'morgan';
import { PORT, PUBLIC_URL } from 'config';
@nodkz
nodkz / buildNodeImage.js
Created Dec 8, 2016
Building `node:slim` docker container with your node_modules via `node:build` container on Mac.
View buildNodeImage.js
/* eslint-disable no-use-before-define, camelcase */
import cp from 'child_process';
import fsExtra from 'fs-extra';
import hashFiles from 'hash-files';
import chalk from 'chalk';
import {
repositoryName,
rootDir,
buildEnv,