Backend Portal | Программирование
Присоединяйтесь к нашему каналу и погрузитесь в мир Backend-разработки Связь: @devmangx РКН: https://clck.ru/3FobxK
Show more📈 Analytical overview of Telegram channel Backend Portal | Программирование
Channel Backend Portal | Программирование (@backendportal) in the Russian language segment is an active participant. Currently, the community unites 16 151 subscribers, ranking 7 808 in the Technologies & Applications category and 40 674 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 16 151 subscribers.
According to the latest data from 07 September, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -161 over the last 30 days and by 5 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 8.09%. Within the first 24 hours after publication, content typically collects 4.95% reactions from the total number of subscribers.
- Post reach: On average, each post receives 1 307 views. Within the first day, a publication typically gains 799 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 0.
- Thematic interests: Content is focused on key topics such as sql, арендатор, строка, индекс, хак.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Присоединяйтесь к нашему каналу и погрузитесь в мир Backend-разработки
Связь: @devmangx
РКН: https://clck.ru/3FobxK”
Thanks to the high frequency of updates (latest data received on 08 September, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
JOIN ... ON, использовать уже существующие связи FOREIGN KEY как навигацию между таблицами.
Автор показывает, почему стандартный SQL до сих пор не умеет нормально использовать FK при построении JOIN, какие подходы уже существовали и как реализовать подобную навигацию в PostgreSQL уже сейчас — без патчей и новых расширений.
Отдельно рассматривается свежая инициатива 2026 года по добавлению key joins в PostgreSQL и проблема неоднозначности связей и неочевидного fan-out при 1:N JOIN.
https://habr.com/ru/articles/1065684/
👉 @BackendPortalRequest line: method, path и version Headers: вся информация о запросе, которая не является самим запросом Пустая строка Body: непосредственно данные, причём body отправляют только некоторые методыПустая строка Она выглядит просто как форматирование. Но именно она сообщает серверу, что headers закончились и следующие bytes — это уже payload. Больше ничто не обозначает эту границу. Content-Length После запроса соединение остаётся открытым, поэтому сервер не может определить окончание body просто по тому, что новые bytes перестали поступать. Он считывает ровно столько bytes, сколько указано в
Content-Length, и ни одним больше.
Укажите 25, но отправьте 20 — сервер будет ждать ещё пять bytes, которые так и не придут.
Укажите 25, но отправьте 34 — оставшиеся девять bytes останутся в buffer и могут быть прочитаны как начало следующего request.
В Django это не просто абстракция. DATA_UPLOAD_MAX_MEMORY_SIZE напрямую использует значение Content-Length и может вызвать RequestDataTooBig ещё до того, как выполнится ваш view. Значение по умолчанию — 2,5 МБ.
Если хотите увидеть весь HTTP request целиком, используйте curl -v.
👉 @BackendPortalБез этих протоколов не обходится ни одно сетевое взаимодействие. От передачи веб-страниц и синхронизации времени до защиты соединений и доставки писем это фундамент, на котором строится интернетСохраняй пригодится 🕵️♂️ 👉 @BackendPortal
Повторное использование уже установленного соединения позволяет не платить эту цену в виде latency снова.По этой же причине сервер хранит незавершённые попытки соединения в SYN backlog, пока ожидает финальный ACK. А заполнение этого backlog большим количеством SYN-запросов, которые никогда не завершают handshake, является реальным вектором атаки SYN flood. 👉 @BackendPortal
.com
• Серверы .com указывают на серверы, отвечающие за конкретный домен
• Последний сервер содержит нужный ответ, который затем возвращается обратно на устройство
Где появляется кеширование: на обратном пути ответ кешируется, причём каждый кеш хранит его в течение своего времени. Кеширование происходит не на каждом уровне, но обычно задействованы:
• Браузер и OS
• Локальный DNS forwarder, например домашний роутер
• Recursive resolver, используемый вашей сетью
У каждого из них есть свой TTL (Time to Live), который отсчитывается независимо.
Почему один и тот же домен может указывать на разные IP-адреса: поскольку кеши истекают в разное время, изменение DNS не доходит до всех пользователей одновременно. Каждый получает обновлённые данные только после того, как истекут кеши перед ним.
• После deploy у вас всё может работать, а у коллеги — нет: ваш кеш уже получил новый IP, а его ещё хранит старый
• Перед миграцией имеет смысл заранее уменьшить TTL: чем он меньше, тем быстрее истекает кеш и тем меньше пользователей продолжают получать старый ответ
Где это встречается на практике: при планировании миграций, разборе ситуаций «у меня работает, а у него нет», а также при понимании того, почему CDN может направлять один и тот же домен на разные серверы в зависимости от региона.
👉 @BackendPortalgit add - добавить изменения в индексStaging (Index) подготовительная область: Содержит изменения, которые будут добавлены в следующий коммит Команда:
git commit - зафиксировать изменения в локальном репозиторииLocal Repository локальный репозиторий: Хранит историю всех коммитов на вашем компьютере Команды:
git push - отправить коммиты в удалённый репозиторий git fetch - получить новые коммиты с удалённого репозитория без слияния git pull - получить и объединить изменения из удалённого репозиторияStash временное хранилище изменений: Используется, когда изменения нужно временно убрать, но не коммитить Команды:
git stash - сохранить незавершённые изменения git stash - apply применить изменения из stash, не удаляя их git stash pop - применить и удалить сохранённые измененияRemote Repository удалённый репозиторий: Общий сервер проекта GitHub, GitLab, Bitbucket Лайк если полезно ❤️ 👉 @BackendPortal
app.get(), представленный как объяснение routing. Здесь рассматривается весь процесс: от того, как сетевые пакеты находят нужный сервер, до того, как backend определяет нужный участок кода для обработки запроса.
Главная идея — не просто запоминать концепции backend-разработки, а понимать, что именно происходит под капотом и как все эти механизмы связаны между собой.
Вторая статья из серии: https://medium.com/@anuragdotdev/the-ultimate-guide-to-routing-from-network-packets-to-backend-handlers-64cc4f7fdbfa
👉 @BackendPortaljson.dumps() завершится с TypeError:
datetime, UUID, Decimal — в JSON нет соответствующих типов, поэтому их преобразуют, обычно в строки.
set, bytes — прямых аналогов тоже нет, поэтому вы сами выбираете способ представления: например, set как list, а bytes как base64.
tuple — незаметно превращается в array, а после десериализации возвращается уже как list.
Последний пример в миниатюре показывает суть проблемы. Вы сериализуете tuple, а десериализуете list. Данные сохранились, но тип — нет.
Объект, который вы получаете обратно, — уже не тот объект, который вы отправили. Round trip через JSON может приводить к потере информации. datetime уходит как string и остаётся string до тех пор, пока кто-то явно не распарсит его обратно. Decimal, если преобразовать его во float для совместимости с JSON, вернётся как float — и по пути может потерять точность.
Сериализация — это перевод на язык, в котором всего семь слов. Всё, для чего в нём есть подходящее «слово», сохраняется. Всё остальное зависит от соглашений между обеими сторонами — иначе оно просто не переживёт передачу.
В Python shell:
json.loads(json.dumps(("a", "b")))
вернёт: ["a", "b"] Round trip изменил тип данных, не сохранив различие между tuple и list.
👉 @BackendPortalnow() — это не «сейчас», а скорее «когда-то было сейчас».
На самом деле now() возвращает время начала текущей транзакции. Реальные часы продолжают идти, но каждый последующий вызов now(), CURRENT_TIMESTAMP, CURRENT_TIME и CURRENT_DATE внутри этой же транзакции всё равно возвращает одно и то же время.
В Postgres это называется transaction-frozen timestamp.
То есть INSERT на 10 000 строк с created_at DEFAULT now() получит один и тот же timestamp для всех строк, а не 10 000 слегка отличающихся значений.
Три варианта времени:
• now() — традиционный для Postgres вариант, хотя он есть и в других СУБД, но это не стандарт SQL. В стандарте SQL используется CURRENT_TIMESTAMP. В Postgres также есть transaction_timestamp(), который работает так же, как now(), но хотя бы честно говорит об этом своим названием.
• statement_timestamp() обновляется один раз на каждый SQL-запрос. Это полезно внутри длинной транзакции, когда вам нужно фиксировать время выполнения отдельных команд, но не переходить к реальному системному времени.
• clock_timestamp() — единственный timestamptz, который меняется даже во время выполнения одного SQL-запроса.
👉 @BackendPortalBackendPortal можно получить скидку на персональный билет
Купить билет
Реклама. ООО «Джуг Ру Груп». ИНН 7801341446