Точка входа в программирование
Фундаментальные знания по основам программирования Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/zrgj
Show more📈 Analytical overview of Telegram channel Точка входа в программирование
Channel Точка входа в программирование (@prog_point) in the Russian language segment is an active participant. Currently, the community unites 17 993 subscribers, ranking 7 066 in the Technologies & Applications category and 36 349 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 17 993 subscribers.
According to the latest data from 01 October, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -126 over the last 30 days and by 6 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 5.12%. Within the first 24 hours after publication, content typically collects 2.32% reactions from the total number of subscribers.
- Post reach: On average, each post receives 922 views. Within the first day, a publication typically gains 418 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 2.
- Thematic interests: Content is focused on key topics such as docker, javascript, kubernetes, браузер, контейнер.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Фундаментальные знания по основам программирования
Разместить рекламу: @tproger_sales_bot
Правила общения: https://tprg.ru/rules
Другие каналы: @tproger_channels
Сайт: https://tprg.ru/site
Регистрация в перечне РКН: https://tprg.ru/zrgj”
Thanks to the high frequency of updates (latest data received on 02 October, 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.
Data loading in progress...
| Date | Subscriber Growth | Mentions | Channels | |
| 02 October | +1 | |||
| 01 October | +8 |
| 2 | Как понять оси Flexbox и перестать путать выравнивание
Соберите контейнер с тремя блоками и добавьте ему display: flex. По умолчанию элементы стоят в строке: главная ось идёт по горизонтали, а поперечная по вертикали. Свойство justify-content выравнивает элементы вдоль главной оси, align-items вдоль поперечной.
Теперь переключите flex-direction с row на column и оставьте остальные правила прежними. Элементы начнут двигаться иначе, потому что главная ось станет вертикальной, а поперечная горизонтальной. Так проще увидеть, почему знакомое свойство иногда сдвигает блоки не в ту сторону, которую вы ожидали.
Меняйте по одному значению: попробуйте flex-start, center и space-between, затем сравните строку и столбец. Схема двух осей и готовые шаблоны Flexbox помогут закрепить результат на навигации, карточке с текстом и подвале страницы. | 256 |
| 3 | Как сделать прилипающие заголовки списка на CSS
Соберите список контактов, в котором буква группы остаётся сверху, пока имена прокручиваются под ней. Для заголовка достаточно position: sticky и top: 0, но его движение ограничивает родительский блок.
Оберните каждую группу вместе с заголовком в отдельный контейнер. Когда контейнер уйдёт за верхнюю границу, его заголовок освободит место следующему. Самому списку задайте высоту и вертикальную прокрутку. Непрозрачный фон не даст тексту просвечивать, а z-index разместит заголовок поверх строк.
В интерактивных примерах с HTML и CSS можно сравнить два варианта: заголовки сменяют друг друга или накапливаются сверху. Повторите оба и уберите обёртки групп: так сразу станет видно, как структура страницы задаёт границы position: sticky. | 412 |
| 4 | Как извлекать данные из объектов и массивов в JavaScript
Деструктуризация создаёт отдельные переменные из значений объекта или массива одной строкой. У объекта свойства выбираются по имени: const { name, age } = person. У массива важна позиция: const [first, second] = colours.
Попробуйте запустить оба примера и поменять исходные данные. Затем переименуйте переменную через { name: fullName } и задайте значение по умолчанию: { size = "medium" }. Оно пригодится, если свойства size в объекте нет.
Короткие примеры деструктуризации также показывают пропуск элементов массива, чтение свойств прямо в параметрах функции и работу с вложенными объектами. Последний вариант лучше оставлять неглубоким, иначе запись становится трудной для чтения. | 400 |
| 5 | Семь ошибок индексации PostgreSQL и как их проверить
Индекс помогает PostgreSQL быстрее находить строки, но при каждой вставке, правке и удалении база обновляет все индексы таблицы. Поэтому индексы «на всякий случай» замедляют запись. Ещё два частых промаха: индекс по полю с парой значений и неверный порядок колонок в индексе из нескольких полей.
Возьмите один медленный SELECT-запрос и запустите EXPLAIN ANALYZE: команда покажет реальный план, число прочитанных строк и затраченное время. Если большая таблица сканируется целиком ради малой выборки, проверьте, соответствует ли индекс условиям запроса. Разбор семи ошибок индексации даёт SQL-примеры, способы найти неиспользуемые или занявшие лишнее место индексы и варианты исправлений. | 436 |
| 6 | Сентябрь, учебный год, сессия не так далеко, как вы думаете. Это всё про вас? Тогда загляните в подборку подборок для студентов!
Подготовка к сессии
Полезные сервисы для студентов-технарей: от учёбы до стажировки
9 ИИ для презентаций | 408 |
| 7 | Как найти ошибку в Python с подсказкой ИИ, а не готовым ответом
Возьмите функцию вычисления среднего, которая делит сумму чисел на len(numbers) - 1. Для списка [80, 90, 70, 100] она получает 340 / 3 вместо ожидаемых 85.
Сначала запустите код и сравните фактический результат с ожидаемым. Затем попросите ИИ не исправлять функцию, а указать, какую часть вычисления стоит проверить. Найдите ошибку самостоятельно и добавьте проверки: среднее четырёх чисел равно 85, двух чисел равно 15, одного числа равно самому числу. После этого передайте пустой список: так обнаружится деление на ноль, которого первая правка не устранила.
Для других задач пригодится схема из пяти этапов: собрать контекст, поставить диагноз, получить подсказку, проверить исправление и объяснить причину ошибки. | 490 |
| 8 | Как посчитать книги по жанрам и не перепутать WHERE с HAVING
Возьмите таблицу из шести книг и получите по одной строке на каждый жанр. GROUP BY genre объединит книги одного жанра в группу, а COUNT(*) посчитает строки внутри неё:
SELECT genre, COUNT(*) AS total_books
FROM books
GROUP BY genre;
Затем замените подсчёт на SUM(price) или AVG(price), чтобы найти сумму или среднюю цену книг каждого жанра. Если нужно убрать отдельные книги до группировки, используйте WHERE. Для отбора уже посчитанных групп нужен HAVING, например HAVING COUNT(*) > 1.
В готовом наборе данных и запросов можно повторить примеры в PostgreSQL и проверить частую ошибку: обычное поле в SELECT должно входить в GROUP BY либо обрабатываться функцией вроде COUNT. | 452 |
| 9 | Как устроен разбор аргументов командной строки в Rust
Аргументы командной строки — это параметры, которые передают программе при запуске. С ними один и тот же инструмент может выбирать режим работы без правок в исходниках. Для новичка это следующий шаг после программы, которая всегда выполняет один сценарий.
Подход на базе getopts позволяет описывать команды и параметры вместо ручного разбора строки, добавлять вложенные опции и флаги, а при неверном вводе показывать подсказки. Статью стоит читать как обзор устройства такого решения, а не как пошаговый урок.
Для практики соберите небольшой прототип, запустите его с корректными и ошибочными параметрами и сравните вывод. Затем добавьте собственную опцию: так станет видно, как параметры запуска меняют поведение программы и где нужно обрабатывать ошибки. | 443 |
| 10 | Почему вложенный текст уменьшается с em и как это исправить
Задайте списку font-size: 0.9em и добавьте внутрь ещё три списка. Для размера шрифта единица em отсчитывается от шрифта родителя, поэтому каждый уровень умножает предыдущее значение на 0,9. При исходных 16 пикселях получатся 14,4, затем 12,96 и 11,66 пикселя.
Замените em на rem: эта единица зависит от размера шрифта корневого элемента html, поэтому вложенность больше не уменьшает текст.
Но em пригодится для отступов кнопки. У padding он зависит от шрифта самой кнопки: увеличите её текст, и отступы вырастут пропорционально. В разборе единиц CSS есть формулы перевода пикселей в em, обратный расчёт и готовые примеры. Повторите оба опыта рядом и сравните результат в браузере. | 506 |
| 11 | Как правильно сравнивать строки в Java
Запустите маленький эксперимент: создайте две строки с одинаковыми литералами и третью через new String(). Оператор == вернёт true для первых двух, но false для первой и третьей. Он проверяет, ссылаются ли переменные на один объект, а не совпадают ли символы.
Литералы Java хранит в строковом пуле, то есть в кеше одинаковых строк, поэтому две переменные могут получить ссылку на один объект. new String() всегда создаёт отдельный объект. Для сравнения содержимого используйте equals(): результат не будет зависеть от способа создания строки.
В разборе строк Java есть готовые примеры. После них проверьте "admin".equals(role) при role = null: выражение вернёт false, а не ошибку. Так вы закрепите и сравнение строк, и безопасную работу с пустой ссылкой. | 491 |
| 12 | Как потренировать map, filter и reduce на одном массиве JavaScript
Возьмите массив [1, 2, 3, 4, 5] и повторите короткий пример с тремя методами. map применит функцию к каждому числу и соберёт новый массив, filter оставит элементы, подходящие под условие, а reduce последовательно сведёт элементы к одному результату.
Сначала удвойте числа через map, затем выберите чётные через filter и посчитайте сумму через reduce. Получатся [2, 4, 6, 8, 10], [2, 4] и 15. После каждого шага выведите исходный массив: эти три метода его не изменяют.
Для проверки нюанса замените массив на пустой. Вызовите reduce с начальным значением 0, а потом без него. Второй вариант сломается, поэтому начальное значение лучше передавать всегда. | 480 |
| 13 | Как переносить длинный текст по заданной ширине в Python
Длинная справка для консольной программы читается лучше, когда строки не растягиваются на весь экран. Расставлять переносы вручную не нужно: модуль textwrap из стандартной библиотеки Python сделает это автоматически.
Возьмите один абзац и вызовите wrap(text, width=40). Функция вернёт список строк длиной не более 40 символов. Затем поставьте ширину 78 и сравните вывод. Так сразу видно, как параметр width меняет результат.
Если список не нужен, используйте fill(text, width=78): функция сразу вернёт готовую строку с переносами. Примеры работы wrap и fill помогут повторить этот приём и выбрать подходящий вариант для сообщений и справки в консоли. | 509 |
| 14 | Почему CSS-блок получается шире заданного width
Задаёте блоку width: 16rem, а он занимает 19,7rem. Причина в стандартной модели content-box: ширина относится только к содержимому, а внутренние отступы и рамки добавляются снаружи. При padding: 1.5rem и рамке 0,35rem расчёт такой: 16 + 3 + 0,7 = 19,7rem.
С border-box те же отступы и рамки уже входят в заданные 16rem. Браузер уменьшает область содержимого, поэтому внешний размер блока остаётся предсказуемым. Внешний отступ margin в эту ширину не входит: он разделяет соседние элементы.
В практическом сравнении двух моделей можно собрать одинаковые карточки, проверить схему размеров в инструментах разработчика и устранить горизонтальную прокрутку. Если полоса появилась у всей страницы, найдите элемент, вышедший за экран, и исправьте его ширину или перенос содержимого, а не скрывайте проблему через overflow-x: hidden. | 527 |
| 15 | Почему splitlines() надёжнее split('\n') в Python
Когда нужно разбить текст на строки, split('\n') кажется достаточным. Но данные из браузерной формы могут содержать переносы \r\n. Тогда после разделения символ \r останется в конце каждой строки. Ещё одна ловушка: если файл заканчивается переводом строки, split('\n') добавит в список лишний пустой элемент.
Метод splitlines() распознаёт разные виды переносов и не создаёт пустой элемент из завершающего перевода строки. При этом пустые строки внутри текста сохраняются. Сравнение методов на трёх коротких примерах показывает оба случая.
Попробуйте передать двум методам строки 'a\r\n\r\nb' и 'a\nb\n', а затем сравните списки. После такой проверки проще запомнить: для разбиения текста на строки используйте splitlines().
#python | 491 |
| 16 | Собираем браузерный компрессор изображений на JavaScript
Хороший следующий проект после первых скриптов: выбрать изображения, обработать их прямо в браузере и скачать одним архивом. Файлы не уходят на сервер, поэтому заодно видно, как клиентский код решает реальную задачу без бэкенда.
Сначала возьмите JPEG и сравните исходник с результатом при разных значениях качества. Canvas API, встроенный в браузер интерфейс для рисования и обработки изображений, отвечает за преобразование, а JSZip собирает несколько готовых файлов в один ZIP.
В пошаговом разборе с кодом есть зона перетаскивания, выбор нескольких файлов, стили состояний и встраиваемая разметка для CMS. Поддержку форматов и выигрыш в размере проверяйте на своих файлах: результат не гарантирован для каждого изображения. | 535 |
| 17 | Как обработать отсутствующий ключ в словаре Python
Если нужного ключа нет, метод get вернёт запасное значение и не изменит словарь. Например, quantities.get("blue", 0) даст 0, но ключ blue в словаре не появится.
Метод setdefault работает иначе: добавляет ключ со значением, если ключа ещё нет, а затем возвращает сохранённое значение. Поэтому предметы можно группировать по цвету одной строкой: groups.setdefault(color, []).append(item).
Запустите оба варианта и выведите словарь после каждого вызова. Так разница станет видна сразу: get подходит для безопасного чтения, а setdefault помогает одновременно создать значение и продолжить с ним работу. В сравнении способов задать значения по умолчанию есть короткие примеры для такой тренировки. | 547 |
| 18 | Как исправить command not found без переустановки программы
Оболочка не ищет программу по всему компьютеру. Она проверяет папки из PATH, переменной окружения со списком путей, и останавливается на первом совпадении. Поэтому ошибка может означать опечатку, отсутствие программы или то, что папка с ней не указана в PATH.
Начните с проверки имени команды. Затем выполните which python3: путь в ответе означает, что оболочка видит программу; пустой ответ оставляет три варианта: неверное имя, программа не установлена или лежит вне PATH. Команда echo $PATH покажет, какие папки проверяются.
Если нужного пути нет, добавьте его в ~/.bashrc или ~/.zshrc. После правки откройте новый терминал либо выполните source ~/.bashrc. Порядок диагностики помогает сначала найти причину, а уже потом менять установку. | 509 |
| 19 | Как подготовить репозиторий к пулреквестам от ИИ-агентов
Если ведёте учебный open source-проект, попробуйте вынести правила для ИИ-агентов в AGENTS.md. Положите файл рядом с кодом и кратко укажите, как запускать тесты, оформлять пулреквесты и какие ошибки недопустимы. Агенты ищут инструкции в текущей директории и на один-два уровня выше, поэтому отдельную вики могут не заметить.
Следующий шаг: добавьте шаблон пулреквеста с тест-планом и обязательные проверки CI, то есть автоматический запуск тестов перед слиянием кода. В разборе AutoGPT показано, как такие правила заставляют агентов проверять изменения и добиваться нужного покрытия тестами.
Начните с короткого файла и одного обязательного теста. Если инструкции ухудшают поведение агента, сократите их: перегруженный AGENTS.md засоряет контекст сильнее, чем помогает.
#ии #инструменты | 552 |
| 20 | Как тренировать интерфейсы с ИИ, не отдавая ему всю работу
Возьмите небольшой экран и сначала определите, для кого он и какое действие должен быть понятным. Это станет брифом: описанием цели и ограничений.
Повторите эксперимент с заданиями Daily UI: сделайте один вариант сами, второй с ИИ. Сравните, куда падает взгляд и понятно ли основное действие.
Покажите экран другому человеку. Если он не понял замысел, исправьте и проверьте снова. Так тренируются решения, которые делают интерфейс понятным. | 556 |
