Skip to content

Instantly share code, notes, and snippets.

View alxpsr's full-sized avatar

alxpsr alxpsr

  • Artsofte
  • 🇷🇺 Russia
View GitHub Profile
const User = {
id: 123,
username: 'John',
email: 'john@mail.com',
addons: [
{ name: 'First addon', id: 1 },
{ name: 'Second addon', id: 2 }
]
}
//== Wrong way
export class User {
name: string;
age: number;
accessToken: string;
constructor(options: {
age: number;
name: string;
accessToken?: string;
@alxpsr
alxpsr / gist:b2f891fe234f0ff44353f8a5ad6e04a1
Last active November 14, 2022 14:11
Typescript Generic with Constraints
interface INestable<T> {
nestedList?: T[];
}
interface Item extends INestable<Item> {
id: number;
nestedList?: Item[];
}
const recursiveStructure: Item[] = [
@alxpsr
alxpsr / task.rxjs.md
Last active May 21, 2021 07:49
switchMap vs flatMap/concatMap usage

Условия

  • Есть массив ссылок
const URLS = [
  'https://jsonplaceholder.typicode.com/todos/1',
  'https://jsonplaceholder.typicode.com/todos/2',
  'https://jsonplaceholder.typicode.com/todos/10',
  'https://jsonplaceholder.typicode.com/todos/11',
  'https://jsonplaceholder.typicode.com/todos/23',
]
@alxpsr
alxpsr / sparse-checkout.md
Last active May 4, 2020 07:57
Git sparse-checkout

GIT SPARSE-CHECKOUT

  1. cd <YOUR_REPO>
  2. git sparse-checkout init
  3. git sparse-checkout set <PATTERN>, where is pattern like gitignore-pattern
  4. Then git will create file at path YOUR_REPO/.git/info/sparse-checkout
  5. Your might edit this file with git sparse-checkout set or IDE, or via cli - echo !program.ts' > .git/info/sparse-checkout
  6. The logic of sparse-checkout file is the opposite of .gitignore - in sparse-checkout you should set folders that will be ENABLED (in other hand in .gitignore you should set folders that will be DISABLED)
  7. sparse-checkout will be apply ONLY for local repo (in other hand .gitignore will be apply to remote repo)

EXAMPLE

@alxpsr
alxpsr / Port 2.flmapping
Created April 6, 2020 18:05
FL-STUDIO Generic mapping
<?xml version="1.0"?>
<flcontrolmap version="1">
<link>
<ctrlparam>13</ctrlparam>
<window><![CDATA[Fruity Wrapper - SH-101]]></window>
<windowparam>0</windowparam>
<windowid>3</windowid>
<channel>0</channel>
<smoothing>0</smoothing>
<smoothspeed>469</smoothspeed>
@alxpsr
alxpsr / terminal-colors-branch
Created March 30, 2020 07:04 — forked from danielalvarenga/terminal-colors-branch.sh
Show branch in terminal Ubuntu
# Add in ~/.bashrc or ~/.bash_profile
function parse_git_branch () {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
RED="\[\033[01;31m\]"
YELLOW="\[\033[01;33m\]"
GREEN="\[\033[01;32m\]"
BLUE="\[\033[01;34m\]"
NO_COLOR="\[\033[00m\]"
@alxpsr
alxpsr / tokens.md
Created December 1, 2019 15:50 — forked from zmts/tokens.md
Про токены, JSON Web Tokens (JWT), аутентификацию и авторизацию. Token-Based Authentication

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

Last major update: 21.10.2019

Основы:

Аутентификация(authentication, от греч. αὐθεντικός [authentikos] – реальный, подлинный; от αὐθέντης [authentes] – автор) - это процесс проверки учётных данных пользователя (логин/пароль). Проверка подлинности пользователя путём сравнения введённого им логина/пароля с данными сохранёнными в базе данных.

Авторизация(authorization — разрешение, уполномочивание) - это проверка прав пользователя на доступ к определенным ресурсам.

Например после аутентификации юзер sasha получает право обращатся и получать от ресурса "super.com/vip" некие данные. Во время обращения юзера sasha к ресурсу vip система авторизации проверит имеет ли право юзер обращатся к этому ресурсу (проще говоря переходить по неким разрешенным ссылкам)

@alxpsr
alxpsr / tsconfig.json
Created November 24, 2019 08:24 — forked from KRostyslav/tsconfig.json
tsconfig.json с комментариями.
// Файл "tsconfig.json":
// - устанавливает корневой каталог проекта TypeScript;
// - выполняет настройку параметров компиляции;
// - устанавливает файлы проекта.
// Присутствие файла "tsconfig.json" в папке указывает TypeScript, что это корневая папка проекта.
// Внутри "tsconfig.json" указываются настройки компилятора TypeScript и корневые файлы проекта.
// Программа компилятора "tsc" ищет файл "tsconfig.json" сначала в папке, где она расположена, затем поднимается выше и ищет в родительских папках согласно их вложенности друг в друга.
// Команда "tsc --project C:\path\to\my\project\folder" берет файл "tsconfig.json" из папки, расположенной по данному пути.
// Файл "tsconfig.json" может быть полностью пустым, тогда компилятор скомпилирует все файлы с настройками заданными по умолчанию.
// Опции компилятора, перечисленные в командной строке перезаписывают собой опции, заданные в файле "tsconfig.json".
@alxpsr
alxpsr / launch.json
Created February 23, 2019 12:57
Debug Custom TSLint rule with vscode
{
"name": "Debug TSLint Rule",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}/my-rules/myCustomRule.ts",
"stopOnEntry": false,
"cwd": "${workspaceRoot}",
"runtimeExecutable": null,
"runtimeArgs": [
"--nolazy"