Skip to content

Instantly share code, notes, and snippets.

View vladmeh's full-sized avatar

VladMeh vladmeh

View GitHub Profile
@vladmeh
vladmeh / wsl error
Last active March 20, 2025 20:40
wsl Error code: Wsl/0x80070422
## Не запускается wsl - Error code: Wsl/0x80070422
> wsl
> Служба не может быть запущена, либо потому что она отключена, либо потому что с ней не связано ни одно включенное устройство.
Error code: Wsl/0x80070422
## Решение
## PowerShell (Admin)
> sc.exe config wslservice start=demand
[SC] ChangeServiceConfig: успех
> wsl
@vladmeh
vladmeh / deploy.sh
Last active February 8, 2025 15:43
#!/bin/sh
set -e # Остановить скрипт при наличии ошибок
IMAGE="<username>/<repository>" # Образ Docker
GIT_VERSION=$(git describe --always --abbrev --tags --long) # Git-хэш и теги
# Сборка и тегирование образа
docker build -t ${IMAGE}:${GIT_VERSION} .
docker tag ${IMAGE}:${GIT_VERSION} ${IMAGE}:latest
from functools import wraps
from async_fastapi_jwt_auth import AuthJWT
from fastapi import Depends, Request, status
from fastapi.security import HTTPBearer
from sqlalchemy.ext.asyncio import AsyncSession
from db.db import get_session
from helpers.auth_request import AuthRequest
from helpers.exceptions import AuthException
@vladmeh
vladmeh / permissions.md
Created April 23, 2024 16:00 — forked from zmts/permissions.md
Управление правами/ролями в 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))
@vladmeh
vladmeh / telegramChannelBot.md
Created April 23, 2024 16:00 — forked from zmts/telegramChannelBot.md
Используем Telegram канал в качестве системы оповещения

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

  • Создаем бота через глобального бота телеграма @BotFather
  • Создаем публичный канал через обычный клиент(desktop/mobile) с публичным именем
  • Добавляем бота в администраторы канала (с правами отправлять сообщения)
  • Отправляем тестовое сообщение в канал от имени только что созданного бота
#POST: https://api.telegram.org/bot<token>/sendMessage
{
  "chat_id": "@mysuperchannel",
@vladmeh
vladmeh / tokens.md
Created April 23, 2024 09:58 — forked from zmts/tokens.md
Про токены, JSON Web Tokens (JWT), аутентификацию и авторизацию. Token-Based Authentication

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

Last major update: 25.08.2020

  • Что такое авторизация/аутентификация
  • Где хранить токены
  • Как ставить куки ?
  • Процесс логина
  • Процесс рефреш токенов
  • Кража токенов/Механизм контроля токенов
@vladmeh
vladmeh / ssl_sertificate.md
Last active May 5, 2024 09:08
Получение и настройка SSL-сертификата

Получение и настройка SSL-сертификата.

Шаг 1. Установка certbot. (https://certbot.eff.org/)

Чтобы установить certbot, вам понадобится пакетный менеджер snap.

sudo apt install snapd

Установка и обновление зависимостей для пакетного менеджера snap.

@vladmeh
vladmeh / gunicorn.service
Created August 1, 2023 10:40
Настройка Gunicorn
[Unit]
# Это текстовое описание юнита, пояснение для разработчика.
Description=gunicorn daemon
# Условие: при старте операционной системы запускать процесс только после того,
# как операционная система загрузится и настроит подключение к сети.
# Ссылка на документацию с возможными вариантами значений
# https://systemd.io/NETWORK_ONLINE/
After=network.target
@vladmeh
vladmeh / encrypt_decrypt_signature_pscb.py
Created May 17, 2023 16:24
Пример расшифровки запроса "Оповещения магазина" ПСКБ на python3
import base64
import hashlib
import json
from hashlib import sha256
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
def _base64_message(message: str) -> str:
// vscode editor
$ git config --global core.editor "code --wait"
// checkout
$ git config --global alias.co checkout
$ git config --global alias.ch checkout
// branch
$ git config --global alias.br branch
$ git config --global alias.curb "rev-parse --abbrev-ref HEAD"