Skip to content

Instantly share code, notes, and snippets.

@mitrofun
mitrofun / README.md
Created October 5, 2022 07:31 — forked from gjreasoner/README.md
Expand Ubuntu 20 Proxmox Disk
# Resize the file system in UI, under VM -> Hardware -> Click on the disk to resize, click "Resize disk" button

# Confirm increase in disk space (1TB in my case)
$ lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                         8:0    0    1T  0 disk
├─sda1                      8:1    0    1M  0 part
├─sda2                      8:2    0    1G  0 part /boot
└─sda3                      8:3    0    1T  0 part
@mitrofun
mitrofun / admin.py
Created July 30, 2022 18:07 — forked from noviluni/admin.py
Large Table Paginator for Django: Scale Django admin pages and avoid timeouts.
from django.contrib.admin import ModelAdmin
from .paginator import LargeTablePaginator
class MyTableAdmin(ModelAdmin):
...
paginator = LargeTablePaginator
show_full_result_count = False # Recommended to avoid another count()
...
@mitrofun
mitrofun / mock.methods.py
Created July 29, 2022 22:49 — forked from Sklavit/mock.methods.py
Mock examples
# @ https://cheat.readthedocs.io/en/latest/python/mock.html
obj.call_count # number of times it was called
obj.called == obj.call_count > 0
obj.call_args_list # a list of (args,kwargs), one for each call
obj.call_args # obj.call_args_list[-1] (args,kwargs from last call)
obj.return_value # set to what it should return
obj.side_effect # set to an exception class or instance that should be raised when its called
obj.assert_called() # doesn't work with autospec=True? just assert obj.called
obj.assert_called_with(*args, **kwargs) # last call was with (*args, **kwargs)
@mitrofun
mitrofun / logstash.conf
Created July 25, 2022 18:22 — forked from jclosure/logstash.conf
Logstash parsing json string fields, merging, and replacing event
# test as follows:
# 1. start logstash:
# logstash -f ~/logstash.conf --config.reload.automatic
# 2. send it data:
# echo '{"container": "/spiff", "bleh": "blah"}' | nc localhost 6060
input {
tcp {
@mitrofun
mitrofun / Dockerfile.slim
Created June 8, 2022 12:14 — forked from benosteen/Dockerfile.slim
A multistage Dockerfile to separate out the build and run deps for archesproject/arches
FROM ubuntu:16.04 as base
USER root
## Setting default environment variables
ENV WEB_ROOT=/web_root
# Root project folder
ENV ARCHES_ROOT=${WEB_ROOT}/arches
ENV WHEELS=/wheels
ENV PYTHONUNBUFFERED=1
@mitrofun
mitrofun / logger.py
Created June 6, 2022 17:39 — forked from impredicative/logger.py
Python json logging using structlog and stdlib logging
"""
Usage example:
from logger import get_logger
log = get_logger()
log.info('my_event', my_key1='val 1', my_key2=5, my_key3=[1, 2, 3], my_key4={'a': 1, 'b': 2})
List of metadata keys in each log message:
event
_func
from typing import Optional
import base64
from passlib.context import CryptContext
from datetime import datetime, timedelta
import jwt
from jwt import PyJWTError
from pydantic import BaseModel
@mitrofun
mitrofun / repository.md
Created September 9, 2021 13:04 — forked from maestrow/repository.md
Паттерн репозиторий

Паттерн репозиторий

Репозиторий - это слой абстракции, инкапсулирующий в себе всё, что относится к способу хранения данных. Назначение: Разделение бизнес-логики от деталей реализации слоя доступа к данным.

Паттерн Репозиторий стал популярным благодаря DDD (Domain Driven Design). В противоположность к Database Driven Design в DDD разработка начинается с проектирования бизнес логики, принимая во внимание только особенности предметной области и игнорируя все, что связано с особенностями базы данных или других способов хранения данных. Способ хранения бизнес объектов реализуется во вторую очередь.

Применение данного паттерна не предполагает создание только одного объекта репозитория во всем приложении. Хорошей практикой считается создание отдельных репозиториев для каждого бизнес-объекта или контекста, например: OrdersRepository, UsersRepository, AdminRepository.

Пример

@mitrofun
mitrofun / bash_strict_mode.md
Created July 30, 2021 09:13 — forked from mohanpedala/bash_strict_mode.md
set -e, -u, -o, -x pipefail explanation

set -e, -u, -o, -x pipefail

The set lines

  • These lines deliberately cause your script to fail. Wait, what? Believe me, this is a good thing.
  • With these settings, certain common errors will cause the script to immediately fail, explicitly and loudly. Otherwise, you can get hidden bugs that are discovered only when they blow up in production.
  • set -euxo pipefail is short for:
set -e
set -u
@mitrofun
mitrofun / review.md
Created June 18, 2021 09:01 — forked from gretchenfitze/review.md
Что проверять на code review
  • Ревью - задача с наивысшим приоритетом. Желательно приступать к ревью как можно скорее. Это поможет избежать массового мержа задач в конце спринта и не будет тратить время коллег, особенно если задачи взаимозависимы. Начинаем ревью задачи при первом стабильном билде.
  • Прежде всего нужно проверить соответствие указанного номера задачи, репозитория и версии указанным в Jira, а в ходе ревью обратить внимание, соответствуют ли внесенные изменения поставленной задаче.
  • Названия коммитов и PR пишутся с большой буквы, они должны содержать номер задачи, описывать внесенные изменения и быть обезличенными. Плохой пример: “сделал правки”, хороший пример: “UFSUI-1111 Исправлена работа скролла в Select при открытии вверх”.
  • На ревью обязательно нужно как посмотреть код, так и проверить корректность работы компонента с внесенными изменениями. Код стоит проверять досконально в каждом файле. При проверке работы нужно попытаться воспроизвести все возможные кейсы использования компонента. Не стоит пренебрегать одним из ш