Точка входа в программирование
Фундаментальные знания по основам программирования Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/zrgj
إظهار المزيد📈 نظرة تحليلية على قناة تيليجرام Точка входа в программирование
تُعد قناة Точка входа в программирование (@prog_point) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 18 041 مشتركاً، محتلاً المرتبة 7 040 في فئة التكنولوجيات والتطبيقات والمرتبة 36 272 في منطقة روسيا.
📊 مؤشرات الجمهور والحراك
منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 18 041 مشتركاً.
بحسب آخر البيانات بتاريخ 16 سبتمبر, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -111، وفي آخر 24 ساعة بمقدار -6، مع بقاء الوصول العام مرتفعاً.
- حالة التحقق: غير موثّقة
- معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 7.84%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 3.69% من ردود الفعل نسبةً إلى إجمالي المشتركين.
- وصول المنشورات: يحصل كل منشور على متوسط 1 415 مشاهدة. وخلال اليوم الأول يجمع عادةً 666 مشاهدة.
- التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 2.
- الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل docker, javascript, kubernetes, браузер, контейнер.
📝 الوصف وسياسة المحتوى
يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
“Фундаментальные знания по основам программирования
Разместить рекламу: @tproger_sales_bot
Правила общения: https://tprg.ru/rules
Другие каналы: @tproger_channels
Сайт: https://tprg.ru/site
Регистрация в перечне РКН: https://tprg.ru/zrgj”
بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 17 سبتمبر, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.
جاري تحميل البيانات...
| التاريخ | نمو المشتركين | الإشارات | القنوات | |
| 17 سبتمبر | +3 | |||
| 16 سبتمبر | 0 | |||
| 15 سبتمبر | +4 | |||
| 14 سبتمبر | +1 | |||
| 13 سبتمبر | +4 | |||
| 12 سبتمبر | +1 | |||
| 11 سبتمبر | +3 | |||
| 10 سبتمبر | +2 | |||
| 09 سبتمبر | +2 | |||
| 08 سبتمبر | +8 | |||
| 07 سبتمبر | +2 | |||
| 06 سبتمبر | +3 | |||
| 05 سبتمبر | +1 | |||
| 04 سبتمبر | +4 | |||
| 03 سبتمبر | +3 | |||
| 02 سبتمبر | +2 | |||
| 01 سبتمبر | +4 |
| 2 | Как нарисовать CSS-треугольник коническим градиентом
Конический градиент conic-gradient() раскрашивает фон секторами вокруг выбранной точки. Если поставить соседние цвета на одной угловой отметке, переход станет резким, а сектор внутри прямоугольного элемента превратится в треугольник.
Для тренировки задайте центр градиента в левом верхнем углу, начало направьте вправо, а границу цветов поставьте на 45 градусов. Меняйте угол и наблюдайте за фигурой: так связь между градусами и формой видна сразу.
В статье Master.dev Blog этим способом делают крупные треугольники навигации и меняют их углы при наведении. Затем сравните результат с линейным градиентом linear-gradient(): он тоже справится, но конический вариант позволяет описывать форму через угол сектора. | 309 |
| 3 | Как f-строки помогают отлаживать Python
Обычный print(answer) может скрыть ошибку: строка '5' и число 5 выглядят одинаково. В примере программа сравнивает результат input() с произведением двух чисел и каждый раз считает ответ неверным.
Добавьте = после выражения внутри f-строки, то есть строки, куда Python подставляет значения: print(f"{answer = }"). Python выведет имя переменной, а строковое значение оставит в кавычках: answer = '18'. У числа кавычек не будет: expected = 18. Так видно, почему сравнение не сработало.
Повторите пример Python Morsels, затем преобразуйте ввод в число через int(input(...)). Приём работает с любым выражением внутри фигурных скобок и показывает его вместе с результатом. | 394 |
| 4 | Космический хакатон. Санкт-Петербург, Красноярск или онлайн из любой точки страны.
Старт 18 сентября.
Для разных городов разные задачи, а за выходные участники должны представить рабочие решения.
Санкт-Петербург. К 2035 году над Землёй должен работать топливный узел, у которого заправляются корабли, и откуда он будет получать топливо — с Земли, с Луны или из резерва — пока не решил никто. Команде предстоит собрать схему поставок, посчитать резервы и решить, во что вкладываться сразу. Призовой фонд 1,2 млн ₽.
Красноярск. Спутник видит горящий лес раньше любого наземного поста, но вместе с пожаром ловит нагретые крыши, факелы на месторождениях и блики на воде. Команде предстоит научить сервис отличать настоящий очаг от шума, обвести гарь и выдать площадь в гектарах. Призовой фонд 600 тыс. ₽.
Лучшие забирают приз на площадке и билет в финал в Москве, 25–27 сентября, где разыграют ещё 2,4 млн рублей.
Команда 3–5 человек, недостающих можно найти на платформе.
Регистрация по ссылке — космохакатон.рф | 382 |
| 5 | Как устроена игра с динозавром в Chrome и чему учит её код
В разборе freeCodeCamp видно, зачем игровому движению нужен учёт времени. Если сдвигать объект на одинаковое число пикселей при каждом кадре, на мониторе с 144 Гц он побежит быстрее, чем при 40 Гц. Игра умножает скорость на время с прошлого кадра, поэтому темп не зависит от частоты обновления.
Сложность тоже заложена в правилах. Широкие группы кактусов появляются лишь тогда, когда динозавр уже может их перепрыгнуть. С ростом скорости увеличиваются и промежутки между препятствиями.
Повторите первый механизм: нарисуйте квадрат в canvas, HTML-элементе для рисования, и вызывайте requestAnimationFrame, чтобы браузер готовил следующий кадр. Сдвиг вычисляйте по прошедшему времени. Затем снизьте частоту кадров и проверьте, сохранилась ли скорость. Это небольшая, но наглядная тренировка анимации на JavaScript. | 370 |
| 6 | Почему проверка ключа через [] незаметно меняет unordered_map
В C++ контейнер unordered_map хранит значения по ключам. Но выражение mp[key] не просто ищет ключ: если его нет, контейнер создаёт новую запись со значением 0. Поэтому условие if (mp[complement]) в задаче Two Sum формально работало с индексами от единицы, однако каждый неудачный поиск раздувал таблицу лишними записями.
Автор разбора на DEV Community заменил квадратные скобки на find(): в его замере время сократилось с 3 до 0 мс. Этот метод возвращает признак отсутствия ключа и не добавляет запись. В C++20 для простой проверки наличия есть contains().
Попробуйте повторить пример и вывести размер таблицы после нескольких промахов. Если вопрос к контейнеру меняет его размер, для проверки ключа нужны find() или contains(). | 419 |
| 7 | Почему type="number" возвращает строку в JavaScript
Введите 5 в числовое поле, прочитайте input.value и прибавьте 1. Получится 51: свойство вернуло строку «5», а JavaScript склеил текст. Тип поля включает проверку значения, клавиатуру смартфона и кнопки со стрелками, но value остаётся строкой.
Для числа можно читать valueAsNumber. Пустое или некорректное значение даст NaN, то есть «не число», поэтому проверьте его через Number.isNaN. У Number(value) другая ловушка: пустая строка превращается в ноль. Для флажка используйте checked, если нужен ответ «отмечен или нет».
Повторите эти случаи в консоли и сравните результаты. В статье на сайте John Kavanagh также разобраны выпадающие списки, переключатели и FormData, который собирает поля формы перед отправкой. | 495 |
| 8 | Как устроена база данных: собираем клон SQLite на C
Это обстоятельная серия для тех, кому знаком SQL, но путь данных от запроса до файла скрыт за интерфейсом СУБД. Автор строит клон SQLite с нуля на C и документирует каждый слой. Всего 15 частей: маршрут идёт от цикла чтения команд и компилятора SQL к многоуровневому B-дереву.
Сначала появляются цикл чтения команд, простейший компилятор SQL и виртуальная машина. Затем одна таблица в памяти получает тесты, сохранение на диск и курсор для обхода записей. Дальше автор разбирает формат узлов B-дерева, двоичный и рекурсивный поиск, разделение узлов и обновление их родителей.
В серии How Does a Database Work? удобно идти по порядку и смотреть, как знакомые операции превращаются в структуры данных. Читать стоит разработчикам, которые работают с SQL и хотят разобраться в индексах, полном сканировании таблицы и границе между памятью и диском. | 503 |
| 9 | Как отправлять GET и POST через Fetch API и обрабатывать ошибки
fetch() возвращает промис, то есть обещание получить результат позже. Этим результатом будет объект Response, а не готовый JSON: тело нужно отдельно прочитать через response.json().
Статусы 404 и 500 не отклоняют промис. Проверяйте response.ok и сами выбрасывайте ошибку. Сетевой сбой промис отклонит, а try...catch поможет обработать обе ситуации.
Для тренировки напишите две функции. Первая делает GET-запрос, проверяет статус и структуру списка товаров. Вторая отправляет товар методом POST, превращает объект в JSON через JSON.stringify() и добавляет заголовок Content-Type: application/json. Примеры каждого шага есть в статье о Fetch API. | 514 |
| 10 | Поймайте паузу в движении мыши одним таймером
Когда пользователь двигает мышь, прокручивает страницу или меняет размер окна, браузер создаёт десятки событий в секунду. Если на каждое отправлять запрос или менять элементы страницы, приложение может работать менее плавно. Дебаунс — приём, который ждёт паузу: новый сигнал отменяет прежний таймер и запускает его заново.
const debounce = (callback, wait) => {
let timer;
return (...args) => {
clearTimeout(timer);
timer = setTimeout(
() => callback(...args), wait
);
};
};
const onMove = debounce(
event => console.log(event.clientX), 250
);
window.addEventListener('mousemove', onMove);
Запустите пример, поводите мышью и остановитесь. Обработчик сработает после паузы. Затем уберите debounce и сравните число строк в консоли. Исходный вариант функции и пояснения есть в сниппете Josh W. Comeau. | 511 |
| 11 | Добавьте номера к элементам списка без отдельного счётчика
Когда в цикле нужны и значение, и его номер, легко завести отдельную переменную и обновлять её вручную. Функция enumerate() выдаёт их парой на каждом шаге:
names = ["Аня", "Борис", "Вера"]
for number, name in enumerate(names, start=1):
print(number, name)
Аргумент start=1 начинает нумерацию с единицы. Программа напечатает номер рядом с каждым именем, а вам не придётся следить за отдельным счётчиком.
В разборе Real Python тот же приём применяют к действиям на выбранном шаге, каждому второму элементу и номерам строк в файле. Скопируйте пример, запустите его, затем уберите start=1 и сравните вывод: так сразу станет видно, с какого числа функция считает по умолчанию. | 480 |
| 12 | Почему блок не центрируется и как освободить место для отступов
Вы добавили автоматические отступы, а блок остался на месте. Обычно он уже занимает всю доступную ширину, поэтому свободного места по бокам нет. Сначала ограничьте его размер:
.element {
max-width: fit-content;
margin-left: auto;
margin-right: auto;
}
Значение fit-content не даёт блоку стать шире содержимого. Затем автоматические отступы занимают свободное место слева и справа, и блок оказывается по центру.
В гайде Josh W. Comeau этот приём показан с изменяемой шириной контейнера. Повторите опыт: сузьте контейнер и сравните max-width: fit-content с фиксированной шириной width: 200px. В первом случае блок сможет сжаться, во втором может выйти за границы контейнера. | 472 |
| 13 | Научите страницу помнить данные после закрытия браузера
Форма или настройка сбрасывается после обновления страницы? Для первого упражнения возьмите localStorage: это хранилище в браузере, где данные лежат парами «ключ — значение» и остаются после обновления, закрытия вкладки или браузера.
Сохраните небольшое значение, обновите страницу и прочитайте его обратно. Затем удалите запись и повторите проверку. Так вы увидите полный цикл: добавить данные, получить их и очистить, а не просто запомните названия методов.
В разборе freeCodeCamp localStorage сравнивают с sessionStorage, данные которого исчезают после закрытия вкладки и доступны только в ней. После упражнения замените значение настройкой темы или содержимым поля формы и найдите сохранённую запись в инструментах разработчика браузера. | 478 |
| 14 | Два файла помогают перестать путаться в HEAD и ветках Git
Когда похожие термины Git сливаются в одно, сообщения программы трудно читать. Для начала хватит простой модели: heads называют ветки, а HEAD обозначает текущую ветку. Ветки хранятся в каталоге .git/refs/heads, указатель на текущую ветку лежит в файле .git/HEAD. У модели есть исключения, поэтому это отправная точка, а не полное определение.
Проверьте её в учебном репозитории: посмотрите файл .git/HEAD и содержимое каталога .git/refs/heads. Цель упражнения: увидеть две разные роли за почти одинаковыми именами. После этого сообщения Git проще разбирать по частям, а не запоминать целиком.
В разборе запутанных терминов Git собраны варианты записи HEAD с символами ^ и ~, а также похожие команды reset, revert и restore. Выберите сообщение, которое уже ставило вас в тупик, и разберите его следующим. | 528 |
| 15 | Хочешь стать аналитиком? Подай заявку на олимпиаду DANO
Попробуй себя в роли аналитика на олимпиаде НИУ ВШЭ и Т-Банка. Тебя ждут:
— Тест-драйв профессии до поступления.
— Задания, составленные на реальных данных.
— Командная работа, как в настоящих исследованиях и аналитических отделах.
— Выездной проектный тур для финалистов.
— Упрощенный отбор на стажировку в Т-Банке для победителей.
Не страшно, если нет опыта в анализе данных. Хватит школьных знаний по математике и логике. Перед каждым этапом будет обучающий модуль.
Подай заявку до 5 октября по ссылке | 500 |
| 16 | Как устроены хеш-функции и зачем им равномерное распределение
Статья с интерактивными визуализациями показывает превращение строки в число и способы оценить результат. Коллизии неизбежны: если диапазон содержит 8 значений, среди 9 разных входов хотя бы два дадут одинаковое число.
Хорошая функция равномерно распределяет результаты и создаёт лавинный эффект: при изменении одного входного бита в среднем меняется 50% выходных. murmur3 сравнивают с функцией, которая суммирует коды символов по модулю 1 000 000. На случайных строках разница почти незаметна, но числа от 1 до 1 000 образуют у простой функции узоры.
Затем автор собирает на JavaScript хеш-таблицу из корзин: хеш ключа выбирает корзину, а поиск перебирает её элементы до совпадения. Статья Hashing связывает знакомый Map с распределением данных и показывает, почему хеш-функцию нельзя оценивать только на случайном вводе. | 494 |
| 17 | Потренируйте CSS-селекторы на предметах виртуального стола
Селектор — часть CSS-правила, которая выбирает элементы для оформления. Например, в правиле p { margin-bottom: 12px; } селектор p выбирает все абзацы, а правило добавляет им нижний отступ.
В CSS Diner вместо конспекта сразу дают задачу: ввести селектор и выбрать нужные предметы на столе. Если ответ верный, откроется следующий уровень. Наведите курсор на предмет, чтобы увидеть его HTML-разметку, то есть запись этого предмета в коде страницы. Подсказки по селекторам находятся справа.
Пройдите первые уровни и после каждого объясните себе, почему селектор выбрал именно эти элементы. Так вы проверите не память на готовые записи, а понимание связи между HTML-разметкой и CSS-правилом. | 533 |
| 18 | Соедините две SQL-таблицы и получите один ответ
Когда сведения об одном объекте разнесены по таблицам, запрос к одной таблице показывает только часть картины. Такое хранение уменьшает повторы и позволяет расширять наборы данных независимо друг от друга.
INNER JOIN сопоставляет строки двух таблиц по общему уникальному ключу, то есть значению, которое однозначно обозначает объект. Условие ON указывает, какие ключи сравнить, а фильтрация, сортировка и ограничение числа строк выполняются уже после соединения.
В шестом уроке SQLBolt это можно потренировать на базе Pixar: к ней добавили таблицу BoxOffice с рейтингами и продажами. Соберите запрос и проверьте, какие данные оказались в одной строке. Если связь не складывается, сначала сравните поля по обе стороны ON. | 558 |
| 19 | Проверяйте раскрывающиеся кнопки по контексту, а не по одному атрибуту
Кнопка показывает дополнительный текст, и зрячий пользователь просто нажимает её. У человека со вспомогательной технологией та же кнопка может восприниматься иначе: переданная ей информация зависит от контекста.
Поэтому наличие aria-expanded ещё не доказывает, что разметка верна. Для тренировки задайте три вопроса: к какому типу относится элемент, уместен ли здесь атрибут и можно ли заменить его встроенным элементом HTML.
Стив Френзель разбирает сворачиваемые разделы и интерактивные элементы: аккордеон, отдельный раскрывающий блок и похожие случаи, где контент скрывается без aria-expanded. Возьмите знакомую страницу, определите тип кнопки и сверьте решение с примерами. Образцы из ARIA Authoring Practices Guide автор советует тщательно тестировать: это демонстрации, а не готовый код. | 622 |
| 20 | Запоминаем и применяем в работе | 10 473 |
