Skip to content

Instantly share code, notes, and snippets.

@melfa
melfa / mid-backend-knowledge.md
Last active March 5, 2024 12:38
Теоретический минимум mid backend

Цель

Нужно иметь представление о полном цикле обработки HTTP-запроса, начиная от набор URL в адресной строке браузера, заканчивая запросом БД и чтением данных с диска. Потому что можно пользоваться абстракциями пока всё хорошо и ресурсов хватает, но как только наступает факап — нужно понимать как это всё устроено и где могло сломаться.

Применимо к backend программистам в стеке NodeJS, Linux, PostgreSQL, Redis.

По факту, сюда включены вещи которые я знаю и меня раздражает что их кто-то не знает. Сюда не включены вещи, которые я знаю, но они мне ни разу не пригодились (типа нормальной формы в реляционных БД, прочитал однажды ну и ладно). Сюда не включено то что относится к программированию вообще (ООП, паттерны, …), потому что это отдельная тема и нужна не только backend.

Нужно понимать на среднем уровне

@melfa
melfa / github_load_all_diffs.js
Last active March 29, 2019 13:59 — forked from juanca/github_load_all_diffs.js
Github PR bookmarklet: Load all file diffs
// Load first 50 diffs with only "Load Diff" button, without reason (this exclude large files, deleted files and so on)
javascript:
Array.from(document.querySelectorAll('.js-diff-load-button-container')).filter(container => !container.querySelector('.hidden-diff-reason')).slice(0, 50).forEach(container => container.querySelector('.load-diff-button').click())
// Load diffs with only "Load Diff" button, without reason (this exclude large files, deleted files and so on)
javascript:
Array.from(document.querySelectorAll('.js-diff-load-button-container')).filter(container => !container.querySelector('.hidden-diff-reason')).forEach(container => container.querySelector('.load-diff-button').click())
// Load all diffs
javascript:
@melfa
melfa / gist:49293d7c5e8b0b85a27c76f1eba3d03c
Created September 19, 2019 11:15
zeh load test with cache - top
top - 14:14:07 up 69 days, 15:51, 2 users, load average: 6.10, 2.75, 1.55
Tasks: 539 total, 10 running, 443 sleeping, 0 stopped, 0 zombie
%Cpu0 : 47.4 us, 21.0 sy, 0.0 ni, 27.8 id, 0.3 wa, 0.0 hi, 3.4 si, 0.0 st
%Cpu1 : 48.0 us, 18.8 sy, 0.0 ni, 29.2 id, 0.0 wa, 0.0 hi, 4.0 si, 0.0 st
%Cpu2 : 51.2 us, 18.6 sy, 0.0 ni, 27.8 id, 0.0 wa, 0.0 hi, 2.4 si, 0.0 st
%Cpu3 : 46.4 us, 21.5 sy, 0.0 ni, 28.3 id, 0.3 wa, 0.0 hi, 3.4 si, 0.0 st
%Cpu4 : 50.3 us, 16.1 sy, 0.0 ni, 28.5 id, 0.3 wa, 0.0 hi, 4.7 si, 0.0 st
%Cpu5 : 47.3 us, 20.5 sy, 0.0 ni, 28.9 id, 0.0 wa, 0.0 hi, 3.4 si, 0.0 st
%Cpu6 : 47.9 us, 19.0 sy, 0.0 ni, 29.2 id, 0.0 wa, 0.0 hi, 3.9 si, 0.0 st
%Cpu7 : 43.0 us, 22.5 sy, 0.0 ni, 29.7 id, 0.3 wa, 0.0 hi, 4.4 si, 0.0 st
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.acme</groupId>
<artifactId>optaplanner-quickstart</artifactId>
<version>1.0.0-SNAPSHOT</version>
<properties>
<compiler-plugin.version>3.8.1</compiler-plugin.version>
<maven.compiler.parameters>true</maven.compiler.parameters>