Skip to content

Instantly share code, notes, and snippets.

View zmts's full-sized avatar
🇺🇦
russian warship go f*uck yourself

Sasha Zmts zmts

🇺🇦
russian warship go f*uck yourself
View GitHub Profile
@zmts
zmts / tokens.md
Last active May 8, 2024 18:59
Про токены, JSON Web Tokens (JWT), аутентификацию и авторизацию. Token-Based Authentication

Про токены, JSON Web Tokens (JWT), аутентификацию и авторизацию. Token-Based Authentication

Last major update: 25.08.2020

  • Что такое авторизация/аутентификация
  • Где хранить токены
  • Как ставить куки ?
  • Процесс логина
  • Процесс рефреш токенов
  • Кража токенов/Механизм контроля токенов
@zmts
zmts / aboutNodeJsArchitecture.md
Last active May 7, 2024 15:27
A little bit about Node.js API Architecture

A little bit about Node.js API Architecture (Архитектура/паттерны организации кода Node.js приложений)

node.js

TL;DR

code: https://github.com/zmts/supra-api-nodejs

Предисловие

Одной из болезней Node.js комьюнити это отсутствие каких либо крупных фреймворков, действительно крупных уровня Symphony/Django/RoR/Spring. Что является причиной все ещё достаточно юного возраста данной технологии. И каждый кузнец кует как умеет ну или как в интернетах посоветовали. Собственно это моя попытка выковать некий свой подход к построению Node.js приложений.

@zmts
zmts / merge_objects.md
Created March 7, 2024 15:02
merge objects

Merge objects in JavaScript (lodash)

const mergeWith = require('lodash/mergeWith')
const isArray = require('lodash/isArray')

function mergeObjects(obj1, obj2) {
  return mergeWith(obj1, obj2, (objValue, srcValue) => {
    if (isArray(objValue) && isArray(srcValue)) {
 return objValue.concat(srcValue);
@zmts
zmts / permissions.md
Last active April 23, 2024 16:00
Управление правами/ролями в Node.js приложениях (Permissions/ACL)

Управление правами/ролями в Node.js приложениях (Permissions/ACL)

Допустим у наc есть такой CRUD и мы хотим проверять права доступа к каждому екшену.

class PostsController extends BaseController {
  static get router () {
    router.get('/', actionRunner(actions.ListAction))
    router.get('/:id', actionRunner(actions.GetByIdAction))
    router.post('/', actionRunner(actions.CreateAction))
    router.patch('/', actionRunner(actions.UpdateAction))
@zmts
zmts / telegramChannelBot.md
Last active April 23, 2024 16:00
Используем Telegram канал в качестве системы оповещения

Используем Telegram канал в качестве системы оповещения

  • Создаем бота через глобального бота телеграма @BotFather
  • Создаем публичный канал через обычный клиент(desktop/mobile) с публичным именем
  • Добавляем бота в администраторы канала (с правами отправлять сообщения)
  • Отправляем тестовое сообщение в канал от имени только что созданного бота
#POST: https://api.telegram.org/bot<token>/sendMessage
{
  "chat_id": "@mysuperchannel",
@zmts
zmts / A Nuxt.js VPS production deployment.md
Created December 6, 2018 15:19 — forked from DreaMinder/A Nuxt.js VPS production deployment.md
Deployment manual for a real-world project built with nuxt.js + koa + nginx + pm2

Example of deployment process which I use in my Nuxt.js projects. I usually have 3 components running per project: admin-panel SPA, nuxt.js renderer and JSON API.

This manual is relevant for VPS such as DigitalOcean.com or Vultr.com. It's easier to use things like Now for deployment but for most cases VPS gives more flexebillity needed for projects bigger then a landing page.

UPD: This manual now compatible with nuxt@2.3. For older versions deployment, see revision history.


Let's assume that you have entered fresh installation of Ubuntu instance via SSH. Let's rock:

@zmts
zmts / docker.md
Last active March 13, 2024 07:21
Docker, TypeScript, Node.js

Docker, TypeScript, Node.js

Preconditions:

  • TS application listening port: 7777
|-- dist
|-- src
|-- .dockerignore
|-- Dockerfile

Convert .env file to object

const isNumber = (value) => {
  return !isNaN(Number(value))
}

const getValue = (value) => {
  if (value === '') return value
  if (['true', 'false'].includes(value)) return JSON.parse(value)
@zmts
zmts / single_quotes.md
Last active January 5, 2024 16:15
Webstorm: auto import with single quotes

Webstorm: auto import with single quotes and spases between braces

Preferences --> Editor --> Code Style --> Typescript/JavaScript --> Punctuation [Tab] --> Use [Single] quotes in [New Code]

Preferences --> Editor --> Code Style --> Typescript/JavaScript --> Spaces [Tab] --> Scroll to section "Within" and check ES6 import/export braces

@zmts
zmts / debian_do.md
Last active December 16, 2023 10:31
Первичная настойка Debian Linux/Разворачиваем серверную инфраструктуру на Digital ocean

Первичная настойка Debian Linux/Разворачиваем серверную инфраструктуру на Digital ocean

Для проектов среднего и небольшого размера не всегда оправданно использовать AWS/Kubernetes подобную технологию. Для проектов нуждающихся в нескольких серверах отлично подходит Digital ocean. Который к тому же предоставляет средства вертикального скейлинга(увеличение производительной мощности уже существующих серверов).

SSH cертификат

Создаем сертификат под которым будем логинится на сервера нашего проекта (на локальной машине)

ssh-keygen -t rsa -b 4096 -f /Users/alex/.ssh/myproject_test -C "myproject comment"

Не забываем сделать его бекап