fa
Feedback

فریب کلاهبرداران را نخورید! تل‌متریو این کانال‌ها را شناسایی و برچسب‌گذاری می‌کند 👉 برای مشاهده برچسب، اشتراک تهیه کنید

Точка входа в программирование

Точка входа в программирование

رفتن به کانال در Telegram

Фундаментальные знания по основам программирования Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/zrgj

نمایش بیشتر

📈 تحلیل کانال تلگرام Точка входа в программирование

کانال Точка входа в программирование (@prog_point) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 17 873 مشترک است و جایگاه 7 280 را در دسته فناوری و برنامه‌ها و رتبه 36 734 را در منطقه روسيا دارد.

📊 شاخص‌های مخاطب و پویایی

از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 17 873 مشترک جذب کرده است.

بر اساس آخرین داده‌ها در تاریخ 03 نوامبر, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -119 و در ۲۴ ساعت گذشته برابر -9 بوده و همچنان دسترسی گسترده‌ای حفظ شده است.

  • وضعیت تأیید: تأیید نشده
  • نرخ تعامل (ER): میانگین تعامل مخاطب 3.48% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 2.20% واکنش نسبت به کل مشترکان کسب می‌کند.
  • دسترسی پست‌ها: هر پست به طور میانگین 622 بازدید دریافت می‌کند. در اولین روز معمولاً 393 بازدید جمع‌آوری می‌شود.
  • واکنش‌ها و تعامل: مخاطبان به‌طور فعال حمایت می‌کنند؛ میانگین واکنش به هر پست 2 است.
  • علایق موضوعی: محتوا بر موضوعات کلیدی مانند docker, javascript, kubernetes, браузер, контейнер تمرکز دارد.

📝 توضیح و سیاست محتوایی

نویسنده این فضا را محل بیان دیدگاه‌های شخصی توصیف می‌کند:
“Фундаментальные знания по основам программирования Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/zrgj”

به لطف به‌روزرسانی‌های پرتکرار (آخرین داده در تاریخ 04 نوامبر, 2026)، کانال همواره به‌روز و دارای دسترسی بالاست. تحلیل‌ها نشان می‌دهد مخاطبان به‌طور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامه‌ها تبدیل کرده‌اند.

17 873
مشترکین
-924 ساعت
-377 روز
-11930 روز
جذب مشترکین
نوامبر '26
نوامبر '260
در 0 کانال‌ها
اکتبر '26
+117
در 10 کانال‌ها
Get PRO
سپتامبر '26
+64
در 8 کانال‌ها
Get PRO
اوت '26
+63
در 6 کانال‌ها
Get PRO
ژوئیه '26
+23
در 4 کانال‌ها
Get PRO
ژوئن '26
+47
در 1 کانال‌ها
Get PRO
مه '26
+58
در 1 کانال‌ها
Get PRO
آوریل '26
+54
در 3 کانال‌ها
Get PRO
مارس '26
+55
در 5 کانال‌ها
Get PRO
فوریه '26
+64
در 4 کانال‌ها
Get PRO
ژانویه '26
+72
در 2 کانال‌ها
Get PRO
دسامبر '25
+115
در 5 کانال‌ها
Get PRO
نوامبر '25
+83
در 5 کانال‌ها
Get PRO
اکتبر '25
+140
در 3 کانال‌ها
Get PRO
سپتامبر '25
+81
در 4 کانال‌ها
Get PRO
اوت '25
+81
در 3 کانال‌ها
Get PRO
ژوئیه '25
+96
در 3 کانال‌ها
Get PRO
ژوئن '25
+148
در 8 کانال‌ها
Get PRO
مه '25
+96
در 3 کانال‌ها
Get PRO
آوریل '25
+76
در 3 کانال‌ها
Get PRO
مارس '25
+187
در 8 کانال‌ها
Get PRO
فوریه '25
+179
در 5 کانال‌ها
Get PRO
ژانویه '25
+153
در 3 کانال‌ها
Get PRO
دسامبر '24
+178
در 4 کانال‌ها
Get PRO
نوامبر '24
+136
در 5 کانال‌ها
Get PRO
اکتبر '24
+130
در 8 کانال‌ها
Get PRO
سپتامبر '24
+129
در 5 کانال‌ها
Get PRO
اوت '24
+145
در 4 کانال‌ها
Get PRO
ژوئیه '24
+94
در 2 کانال‌ها
Get PRO
ژوئن '24
+71
در 4 کانال‌ها
Get PRO
مه '24
+174
در 5 کانال‌ها
Get PRO
آوریل '24
+208
در 7 کانال‌ها
Get PRO
مارس '24
+131
در 4 کانال‌ها
Get PRO
فوریه '24
+127
در 1 کانال‌ها
Get PRO
ژانویه '24
+141
در 3 کانال‌ها
Get PRO
دسامبر '23
+106
در 5 کانال‌ها
Get PRO
نوامبر '23
+115
در 3 کانال‌ها
Get PRO
اکتبر '23
+108
در 1 کانال‌ها
Get PRO
سپتامبر '23
+134
در 0 کانال‌ها
Get PRO
اوت '23
+250
در 0 کانال‌ها
Get PRO
ژوئیه '23
+282
در 0 کانال‌ها
Get PRO
ژوئن '23
+360
در 0 کانال‌ها
Get PRO
مه '23
+475
در 0 کانال‌ها
Get PRO
آوریل '23
+543
در 0 کانال‌ها
Get PRO
مارس '23
+424
در 0 کانال‌ها
Get PRO
فوریه '23
+536
در 0 کانال‌ها
Get PRO
ژانویه '23
+1 067
در 0 کانال‌ها
Get PRO
دسامبر '22
+487
در 0 کانال‌ها
Get PRO
نوامبر '22
+564
در 0 کانال‌ها
Get PRO
اکتبر '22
+384
در 0 کانال‌ها
Get PRO
سپتامبر '22
+612
در 0 کانال‌ها
Get PRO
اوت '22
+494
در 0 کانال‌ها
Get PRO
ژوئیه '22
+587
در 0 کانال‌ها
Get PRO
ژوئن '22
+969
در 0 کانال‌ها
Get PRO
مه '22
+621
در 0 کانال‌ها
Get PRO
آوریل '22
+425
در 0 کانال‌ها
Get PRO
مارس '22
+773
در 0 کانال‌ها
Get PRO
فوریه '22
+1 309
در 0 کانال‌ها
Get PRO
ژانویه '22
+558
در 0 کانال‌ها
Get PRO
دسامبر '21
+353
در 0 کانال‌ها
Get PRO
نوامبر '21
+2 297
در 0 کانال‌ها
Get PRO
اکتبر '21
+1 689
در 0 کانال‌ها
Get PRO
سپتامبر '21
+324
در 0 کانال‌ها
Get PRO
اوت '21
+837
در 0 کانال‌ها
Get PRO
ژوئیه '21
+1 025
در 0 کانال‌ها
Get PRO
ژوئن '21
+627
در 0 کانال‌ها
Get PRO
مه '21
+769
در 0 کانال‌ها
Get PRO
آوریل '21
+2 906
در 0 کانال‌ها
Get PRO
مارس '21
+882
در 0 کانال‌ها
Get PRO
فوریه '21
+2 017
در 0 کانال‌ها
Get PRO
ژانویه '21
+9 289
در 0 کانال‌ها
تاریخ
رشد مشترکین
اشارات
کانال‌ها
03 نوامبر0
02 نوامبر0
01 نوامبر0
\n\nНажмите A и B: в консоли оба раза будет BUTTON menu. Нажатие на слово «Фон» даст DIV menu. target показывает, откуда пришло событие, currentTarget — чей обработчик сейчас работает. В этом примере логируем все клики. Для действия над кнопкой сначала проверьте цель. Если внутри кнопки появится span, целью может стать он. Механизм разобран на MDN.","datePublished":"2026-11-03T07:19:01Z","dateModified":"2026-11-03T07:19:01Z","author":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"publisher":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":323},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":1},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":1}]}},{"@type":"ListItem","position":2,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5238","url":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5238","mainEntityOfPage":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5238","headline":"zip может остановиться слишком рано Имена учеников и номера задач лежат в двух списках. zip собирает их в пар…","articleBody":"zip может остановиться слишком рано\n\nИмена учеников и номера задач лежат в двух списках. zip собирает их в пары, но без дополнительной проверки заканчивает на самом коротком списке. Лишнее имя легко потерять. В Python 3.10+ это можно заметить с помощью strict=True.\n\nnames = [\"Ada\", \"Lin\"]\nprint(list(zip(names, [1, 2], strict=True)))\npairs = zip(names, [1], strict=True)\nprint(\"created\")\ntry:\n print(list(pairs))\nexcept ValueError:\n print(\"ValueError\")\n\nПолучатся две пары, затем created и ValueError. Ошибка возникает при переборе, а не при создании zip. Если прочитать только первую пару, до несовпадения вы ещё не дойдёте. Это ленивый итератор: он берёт элементы по мере запроса. Подробности есть в документации Python.","datePublished":"2026-11-03T04:49:01Z","dateModified":"2026-11-03T04:49:01Z","author":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"publisher":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":390},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":1},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":1}]}},{"@type":"ListItem","position":3,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5237","url":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5237","mainEntityOfPage":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5237","headline":"Отменённый fetch попадает в обработчик ошибок Чтобы отменить fetch, создают AbortController и передают его si…","articleBody":"Отменённый fetch попадает в обработчик ошибок\n\nЧтобы отменить fetch, создают AbortController и передают его signal в параметры запроса. Вызов abort() сообщает об отмене. Отклонённый промис нужно обработать, иначе отмена может выглядеть как необработанная ошибка.\n\nВыполните пример с карточки в консоли современного браузера. Здесь сигнал отменён заранее, а запрос по адресу data: не обращается к внешнему серверу. Обработчик напечатает AbortError. Это проверка поведения отменённого сигнала, а не скорости сети.\n\nУже отменённый сигнал нельзя сбросить. Для нового запроса создайте новый контроллер. Отмена на стороне клиента не гарантирует откат действий сервера. Примеры использования — в документации MDN.","datePublished":"2026-11-02T07:03:01Z","dateModified":"2026-11-02T07:03:01Z","author":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"publisher":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"image":["https://n2.tlmtr.cc/p/_t5L2l_NbHVA9IbXOSqntu1gGLkP763HVueD-CV3rE-U?ty=l"],"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":485},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":2},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":4}]}},{"@type":"ListItem","position":4,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5236","url":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5236","mainEntityOfPage":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5236","headline":"Свойство может принадлежать прототипу JavaScript-объект может наследовать свойства, которых нет среди его соб…","articleBody":"Свойство может принадлежать прототипу\n\nJavaScript-объект может наследовать свойства, которых нет среди его собственных полей. Поиск идёт и по прототипу — объекту, от которого он наследует свойства. Поэтому оператор in и Object.hasOwn отвечают на разные вопросы.\n\nСоздайте const settings = Object.create({ theme: \"dark\" }) и задайте settings.size = 0. Проверка \"theme\" in settings даст true, а Object.hasOwn(settings, \"theme\") — false.\n\nПри этом Object.hasOwn(settings, \"size\") вернёт true: свойство со значением 0 остаётся собственным. Поменяйте значение на undefined и проверьте снова. Метод доступен в современных браузерах, детали — на MDN.","datePublished":"2026-11-02T04:46:01Z","dateModified":"2026-11-02T04:46:01Z","author":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"publisher":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"image":["https://n2.tlmtr.cc/p/_x30kjQRmXX_YWMf3N8VD9-sVFzCJV-koImc7M6MEWRQ?ty=l"],"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":472},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":3},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":2}]}},{"@type":"ListItem","position":5,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5235","url":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5235","mainEntityOfPage":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5235","headline":"Апостроф в имени не должен ломать SQL Имя O'Brien содержит апостроф. Если вставлять его прямо в текст SQL, ап…","articleBody":"Апостроф в имени не должен ломать SQL\n\nИмя O'Brien содержит апостроф. Если вставлять его прямо в текст SQL, апостроф может нарушить синтаксис запроса. В модуле Python sqlite3 передавайте значение отдельно: место для него обозначается ?.\n\nВ учебной базе с таблицей users(name TEXT) и таким именем выполните con.execute(\"SELECT name FROM users WHERE name = ?\", (name,)).fetchall(). Запрос найдёт запись с этим именем. Запятая в (name,) нужна: это кортеж с одним элементом.\n\nНе собирайте запрос из пользовательского ввода через f-строку или сложение строк. Параметры подставляют значения, а не имена таблиц или колонок. Полный пример на карточке работает в памяти и не сохраняет базу на диске. Об использовании параметров — в документации Python.","datePublished":"2026-11-01T07:14:01Z","dateModified":"2026-11-01T07:14:01Z","author":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"publisher":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":494},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":3},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":2}]}},{"@type":"ListItem","position":6,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5234","url":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5234","mainEntityOfPage":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5234","headline":"Пробел разделяет аргументы, пока нет кавычек В Bash записи report file и \"report file\" дают разное число аргу…","articleBody":"Пробел разделяет аргументы, пока нет кавычек\n\nВ Bash записи report file и \"report file\" дают разное число аргументов. Это важно, когда имя файла содержит пробел: программа должна получить одно имя целиком.\n\nДля проверки без создания и изменения файлов выполните printf '<%s>\\n' report file. Увидите две строки: и . Повторите с кавычками: printf '<%s>\\n' \"report file\". Теперь строка одна: .\n\nУгловые скобки здесь помогают увидеть границы аргументов. Двойные кавычки сохраняют пробел, но не делают всё содержимое буквальным: подстановка переменных внутри них работает. Другие оболочки могут отличаться. Детали — в руководстве Bash.","datePublished":"2026-11-01T05:01:01Z","dateModified":"2026-11-01T05:01:01Z","author":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"publisher":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"image":["https://n2.tlmtr.cc/p/_B-AdhSyBl-DQukfygz6sCQm34ZMR_GcshNsEh5veRfc?ty=l"],"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":446},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":1},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":2}]}},{"@type":"ListItem","position":7,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5233","url":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5233","mainEntityOfPage":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5233","headline":"Почему текст прыгает при загрузке картинки На видео из статьи web.dev текст под серой плашкой уезжает вниз, к…","articleBody":"Почему текст прыгает при загрузке картинки\n\nНа видео из статьи web.dev текст под серой плашкой уезжает вниз, когда загружается фотография. Браузер не знал заранее, какую высоту оставить под изображение. Такой сдвиг особенно мешает, если вы уже начали читать или нажимать ссылку.\n\nДля картинки 800 × 400 задайте \"...\". Верное соотношение сторон помогает зарезервировать место до загрузки. Чтобы картинка занимала всю ширину, добавьте отдельно img { width: 100% } и img { height: auto }.\n\nПроверьте страницу с замедленной загрузкой и сравните с вариантом без размеров. Соотношение сторон можно задавать и через aspect-ratio. Как задать размеры до загрузки, разобрано в статье web.dev.","datePublished":"2026-10-31T07:40:11Z","dateModified":"2026-10-31T07:40:11Z","author":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"publisher":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"image":["https://n3.tlmtr.cc/v/_kqXyK8f6GjUwjUmFKwZsOCrmjDUikmCFQvio72iCSNU?ty=x"],"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":478},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":1},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":1}]}},{"@type":"ListItem","position":8,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5232","url":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5232","mainEntityOfPage":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5232","headline":"Почему every возвращает true для пустого массива Метод every проверяет, соответствует ли каждый элемент услов…","articleBody":"Почему every возвращает true для пустого массива\n\nМетод every проверяет, соответствует ли каждый элемент условию. [3, 7].every(n => n > 0) вернёт true, а массив с -1 — false. Проверка прекращается при первом неподходящем элементе.\n\nТеперь выполните [].every(n => n > 0). Результат снова true: в пустом массиве нет элемента, который нарушил бы условие. Функция проверки при этом вообще не вызывается.\n\nЕсли по задаче нужен непустой список положительных чисел, проверяйте оба условия: values.length > 0 && values.every(n => n > 0). Подставьте пустой массив и сравните результаты. На MDN есть и другие особенности метода, включая пропуск пустых мест в разреженном массиве.","datePublished":"2026-10-31T05:01:01Z","dateModified":"2026-10-31T05:01:01Z","author":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"publisher":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":480},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":2},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":2}]}},{"@type":"ListItem","position":9,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5231","url":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5231","mainEntityOfPage":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5231","headline":"Что покажет git diff после git add Добавили файл через git add, а потом ещё раз его исправили? В индексе, или…","articleBody":"Что покажет git diff после git add\n\nДобавили файл через git add, а потом ещё раз его исправили? В индексе, или staging area, остаётся подготовленная версия. В рабочей папке уже могут быть новые правки.\n\nВ новом учебном репозитории создайте a.txt со строкой one и выполните git add a.txt. Затем замените строку на two. Команда git diff -- a.txt покажет замену one на two: это разница между рабочей папкой и индексом.\n\nА git diff --staged -- a.txt сравнит индекс с последним коммитом. До первого коммита она покажет добавленный файл со строкой one. Обе команды только показывают различия. Сверить режимы можно в документации Git.","datePublished":"2026-10-30T07:31:00Z","dateModified":"2026-10-30T07:31:00Z","author":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"publisher":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"image":["https://n3.tlmtr.cc/p/_wXGJLDklwP8Dr4Sbk8NjRxE7_D98mISI60GVbpaGOIQ?ty=l"],"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":560},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":1},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":2}]}},{"@type":"ListItem","position":10,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5230","url":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5230","mainEntityOfPage":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5230","headline":"Запятая внутри кавычек остаётся в CSV-поле Строка Ada,\"London, UK\",3 содержит три CSV-поля. Город записан в к…","articleBody":"Запятая внутри кавычек остаётся в CSV-поле\n\nСтрока Ada,\"London, UK\",3 содержит три CSV-поля. Город записан в кавычках, поэтому запятая внутри него не разделяет столбцы. Метод split(\",\") не учитывает кавычки и создаст четыре части.\n\nСравните оба способа на карточке. csv.reader([line]) из стандартной библиотеки Python вернёт ['Ada', 'London, UK', '3']. Последнее значение останется строкой: парсер не превращает число в int автоматически.\n\nВ учебном примере парсер читает список из одной строки. Если читаете CSV из файла, открывайте его с newline=\"\" и задавайте разделитель под его формат. Попробуйте поле с ещё одной запятой внутри кавычек. Правила и диалекты — в документации csv.","datePublished":"2026-10-30T05:17:01Z","dateModified":"2026-10-30T05:17:01Z","author":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"publisher":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":555},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":2},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":2}]}},{"@type":"ListItem","position":11,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5229","url":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5229","mainEntityOfPage":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5229","headline":"Рамка помогает найти кнопку без мыши Откройте страницу с двумя кнопками и нажимайте Tab. По рамке должно быть…","articleBody":"Рамка помогает найти кнопку без мыши\n\nОткройте страницу с двумя кнопками и нажимайте Tab. По рамке должно быть понятно, какая кнопка сработает при нажатии Enter. Если убрать outline без другого заметного индикатора, будет трудно понять, где находится фокус.\n\nПопробуйте button:focus-visible { outline: 4px solid #2463eb }. Селектор срабатывает, когда элемент в фокусе и браузер считает индикатор нужным. Для кнопки переход клавишей Tab обычно показывает рамку. :focus выбирает элемент в фокусе независимо от этого решения.\n\nСравните клик мышью и Tab в своём браузере. У других элементов поведение может отличаться: текстовое поле может показывать индикатор и после клика. Поведение и примеры разбираются на MDN.","datePublished":"2026-10-29T07:03:01Z","dateModified":"2026-10-29T07:03:01Z","author":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"publisher":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"image":["https://n2.tlmtr.cc/p/_-eTUZERj4FGIIQLHgf-I03jX9HhDTfZHOg_P462BBr0?ty=l"],"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":595},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":3},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":1}]}},{"@type":"ListItem","position":12,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5228","url":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5228","mainEntityOfPage":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5228","headline":"Номер строки и порядок выдачи — разные вещи В SQLite row_number() присваивает строкам номера. Порядок внутри…","articleBody":"Номер строки и порядок выдачи — разные вещи\n\nВ SQLite row_number() присваивает строкам номера. Порядок внутри OVER (...) определяет, какая строка получит номер 1. А внешний ORDER BY отдельно задаёт порядок, в котором вы увидите строки результата.\n\nВозьмите пары (1, 'aaa'), (2, 'ccc'), (3, 'bbb'). При row_number() OVER (ORDER BY y) номера идут по буквам. Если вывести результат с ORDER BY x, увидите номера 1, 3, 2. Они не обязаны идти по возрастанию на экране.\n\nЗапрос с карточки сохраняет все три строки. Запустите его в SQLite 3.25.0 или новее, затем замените внешний порядок на ORDER BY y. При равных значениях добавляйте уникальный ключ в порядок нумерации. Подробнее — в документации SQLite.","datePublished":"2026-10-29T05:02:01Z","dateModified":"2026-10-29T05:02:01Z","author":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"publisher":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"image":["https://n2.tlmtr.cc/p/_-rkVeptJ7VmYlGkZZk4fmgi8ejyUMq9In7iaF6oT6KQ?ty=l"],"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":529},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":1},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":1}]}},{"@type":"ListItem","position":13,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5227","url":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5227","mainEntityOfPage":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5227","headline":"Поле с подсказками разрешает свой вариант В HTML-поле можно предложить варианты без JavaScript. Атрибут list=…","articleBody":"Поле с подсказками разрешает свой вариант\n\nВ HTML-поле можно предложить варианты без JavaScript. Атрибут list=\"cities\" у input связывает его с datalist id=\"cities\". Значения option становятся подсказками при вводе.\n\nДобавьте два варианта, Moscow и Kazan, как на карточке. Затем введите Perm. Поле примет и этот текст: список предлагает значения, но сам по себе не запрещает другие. Если нужен строго заданный набор, это уже другая задача.\n\nПроверьте пример в нужных браузерах. Вид подсказок и поддержка различаются, есть ограничения для экранных дикторов и масштабирования. MDN описывает эти ограничения. Для реальной формы одной проверки внешнего вида недостаточно.","datePublished":"2026-10-28T07:24:01Z","dateModified":"2026-10-28T07:24:01Z","author":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"publisher":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":606},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":3},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":3}]}},{"@type":"ListItem","position":14,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5226","url":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5226","mainEntityOfPage":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5226","headline":"Counter посчитает повторения в списке В списке [\"red\", \"blue\", \"red\"] три элемента, но два разных цвета. Coun…","articleBody":"Counter посчитает повторения в списке\n\nВ списке [\"red\", \"blue\", \"red\"] три элемента, но два разных цвета. Counter из стандартной библиотеки Python хранит, сколько раз встретился каждый элемент. Так не придётся вручную хранить и увеличивать счётчик для каждого цвета.\n\nВыполните код с карточки. Для red получите 2, для отсутствующего green — 0. Вызов most_common(1) вернёт список с одной парой: [('red', 2)].\n\nДобавьте ещё два blue и снова найдите самый частый цвет. Здесь мы считаем готовые элементы списка. Чтобы считать слова в тексте, сначала придётся решить, как его разбивать. Подробнее о счётчике — в документации Python.","datePublished":"2026-10-28T05:18:01Z","dateModified":"2026-10-28T05:18:01Z","author":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"publisher":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"image":["https://n3.tlmtr.cc/p/_Xo97LHCtpEP-femtEsRCo6sQQ_NF14e4a__eldyCXBo?ty=l"],"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":593},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":3},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":2}]}},{"@type":"ListItem","position":15,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5225","url":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5225","mainEntityOfPage":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5225","headline":"Символы + и & внутри поискового запроса Хотите передать в адресе строку C++ & Python? Если просто приписать е…","articleBody":"Символы + и & внутри поискового запроса\n\nХотите передать в адресе строку C++ & Python? Если просто приписать её к ?q=, специальные символы могут изменить смысл параметров. URLSearchParams собирает строку параметров с нужным кодированием.\n\nСоздайте const params = new URLSearchParams({ q: \"C++ & Python\" }) и выведите params.toString(). Получится q=C%2B%2B+%26+Python: исходный плюс записан как %2B, пробел как +.\n\nПередавайте исходный текст, без предварительного кодирования. Вызов new URLSearchParams(params.toString()).get(\"q\") вернёт исходную строку. Конструктору нужен набор параметров, а не полный адрес. Примеры — в документации MDN.","datePublished":"2026-10-27T07:16:01Z","dateModified":"2026-10-27T07:16:01Z","author":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"publisher":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":637},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":5},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":4}]}},{"@type":"ListItem","position":16,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5224","url":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5224","mainEntityOfPage":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5224","headline":"Файл закроется, когда закончится блок with Открытый файл нужно закрыть после работы. В Python это удобно пору…","articleBody":"Файл закроется, когда закончится блок with\n\nОткрытый файл нужно закрыть после работы. В Python это удобно поручить with: при выходе из его блока файл закроется, даже если внутри возникнет исключение. Саму ошибку эта конструкция не перехватывает.\n\nВ отдельной учебной папке запустите пример с карточки. Он создаст note.txt с текстом hello и напечатает True. Режим \"w\" перезаписывает существующий файл, поэтому не используйте имя важного документа.\n\nПеренесите print(f.closed) внутрь блока: увидите False. А попытка чтения после закрытия даст ValueError. Подробнее о времени жизни файла — в учебнике Python.","datePublished":"2026-10-27T05:16:01Z","dateModified":"2026-10-27T05:16:01Z","author":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"publisher":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":641},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":6},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":3}]}},{"@type":"ListItem","position":17,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5223","url":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5223","mainEntityOfPage":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5223","headline":"Один знак в Bash решает, дописать файл или стереть старый текст Знак > отправляет обычный вывод команды в фай…","articleBody":"Один знак в Bash решает, дописать файл или стереть старый текст\n\nЗнак > отправляет обычный вывод команды в файл. Если файла нет, Bash создаст его, а существующий обнулит перед записью. У >> другое поведение: добавить в конец. Проверьте на новом файле notes.txt в отдельной учебной папке.\n\n1️⃣ Запишите первую строку, затем добавьте вторую:\nprintf 'first\\n' > notes.txt\nprintf 'second\\n' >> notes.txt\ncat notes.txt\ncat покажет first и second на отдельных строках. Сами команды printf отправили текст в файл, поэтому в терминале он появился только после cat.\n\n2️⃣ Повторите запись с одним знаком:\nprintf 'third\\n' > notes.txt\ncat notes.txt\nОстанется только third. Это пример для Bash с выключенной защитой noclobber: при включённой защите перезапись существующего обычного файла через > завершится ошибкой. Обе операции описаны в руководстве Bash.","datePublished":"2026-10-26T07:25:42Z","dateModified":"2026-10-26T07:25:42Z","author":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"publisher":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":656},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":4},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":2}]}},{"@type":"ListItem","position":18,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5222","url":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5222","mainEntityOfPage":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5222","headline":"Ноль может исчезнуть из-за значения по умолчанию Вы задали количество повторов 0, чтобы ничего не запускать.…","articleBody":"Ноль может исчезнуть из-за значения по умолчанию\n\nВы задали количество повторов 0, чтобы ничего не запускать. Но выражение 0 || 10 подставит десять. Оператор || выбирает правую часть, когда левая при проверке условия считается ложной. К таким значениям относятся и ноль, и пустая строка, и false.\n\nconsole.log(0 || 10) // 10\nconsole.log(0 ?? 10) // 0\nconsole.log(null ?? 10) // 10\n\nОператор ?? подставляет правую часть только вместо null или undefined. Поэтому для настройки, где ноль допустим, он сохраняет смысл значения. Пустую строку и false он тоже оставит. При этом ?? не проверяет правильность числа и не исправляет NaN.\n\nВ первых двух строках замените ноль на false, затем на undefined. В первом случае результаты разойдутся, во втором оба будут 10. Выбор оператора зависит от того, что вы считаете отсутствующим значением. В примерах MDN можно сравнить остальные случаи.","datePublished":"2026-10-26T05:03:01Z","dateModified":"2026-10-26T05:03:01Z","author":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"publisher":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":686},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":4}]}},{"@type":"ListItem","position":19,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5221","url":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5221","mainEntityOfPage":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5221","headline":"Три строки в таблице, но COUNT(email) возвращает два У одного пользователя есть адрес, у второго — NULL, то е…","articleBody":"Три строки в таблице, но COUNT(email) возвращает два\n\nУ одного пользователя есть адрес, у второго — NULL, то есть отсутствие значения, у третьего — пустая строка. Запустите этот запрос в SQLite. WITH здесь задаёт учебный набор строк для одного запроса:\n\nWITH users(email) AS (\n VALUES ('a@example.test'), (NULL), ('')\n)\nSELECT COUNT(*) AS rows_total,\n COUNT(email) AS emails_present\nFROM users\n\nПолучатся 3 и 2. По правилам COUNT в SQLite, COUNT(*) считает все строки, а COUNT(email) — только те, где значение не NULL. Пустая строка в SQLite считается значением, поэтому она тоже попала в счётчик. Это ещё не количество корректных почтовых адресов.\n\nПоменяйте ('') на (NULL): строк по-прежнему три, но второй счётчик станет равен одному. А если добавить в конец запроса WHERE 1 = 0, выборка будет пустой и оба счётчика вернут ноль.","datePublished":"2026-10-25T07:02:07Z","dateModified":"2026-10-25T07:02:07Z","author":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"publisher":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":647},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":4},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":1}]}},{"@type":"ListItem","position":20,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5220","url":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5220","mainEntityOfPage":"https://telemetr.io/fa/channels/1281185048-prog_point/posts/5220","headline":"lstrip может откусить часть нужного текста Из строки нужно убрать имя автора в начале. Кажется, что lstrip(\"A…","articleBody":"lstrip может откусить часть нужного текста\n\nИз строки нужно убрать имя автора в начале. Кажется, что lstrip(\"Arthur: \") подходит, но результат неожиданно короткий:\n\ntext = \"Arthur: three!\"\nprint(text.lstrip(\"Arthur: \")) # ee!\nprint(text.removeprefix(\"Arthur: \")) # three!\n\nАргумент lstrip — набор отдельных символов для удаления слева. Метод идёт до первого символа вне набора, поэтому после имени съедает ещё t, h и r. removeprefix удаляет ровно один совпавший префикс, то есть заданное начало строки. Он доступен с Python 3.9. Оба метода возвращают результат, исходная строка text не меняется.\n\nПередайте им просто \"three!\". Первый снова оставит \"ee!\", второй вернёт \"three!\", потому что нужного префикса нет. А из \"Arthur: Arthur: three!\" второй удалит только первое имя. Это различие разобрано в документации строк Python.","datePublished":"2026-10-25T04:42:01Z","dateModified":"2026-10-25T04:42:01Z","author":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"publisher":{"@type":"Organization","name":"Точка входа в программирование","url":"https://telemetr.io/fa/channels/1281185048-prog_point","image":"https://img.telemetr.io/c/1oHIKY/5213333739311067999?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":647},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":4},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":1}]}}]}
پست‌های کانال
Клик по кнопке можно обработать у родителя В списке две кнопки, а обработчик клика один. Он стоит на общем div, потому что событие от кнопки поднимается к родителю. Это называется делегированием событий. Сохраните пример в HTML-файл и откройте его в браузере.
<div id="menu">Фон <button>A</button><button>B</button></div>
<script>
const menu = document.querySelector("#menu")
menu.addEventListener("click", event => {
  console.log(event.target.tagName, event.currentTarget.id)
})
</script>
Нажмите A и B: в консоли оба раза будет BUTTON menu. Нажатие на слово «Фон» даст DIV menu. target показывает, откуда пришло событие, currentTarget — чей обработчик сейчас работает. В этом примере логируем все клики. Для действия над кнопкой сначала проверьте цель. Если внутри кнопки появится span, целью может стать он. Механизм разобран на MDN.

2
zip может остановиться слишком рано Имена учеников и номера задач лежат в двух списках. zip собирает их в пары, но без дополнительной проверки заканчивает на самом коротком списке. Лишнее имя легко потерять. В Python 3.10+ это можно заметить с помощью strict=True. names = ["Ada", "Lin"] print(list(zip(names, [1, 2], strict=True))) pairs = zip(names, [1], strict=True) print("created") try: print(list(pairs)) except ValueError: print("ValueError") Получатся две пары, затем created и ValueError. Ошибка возникает при переборе, а не при создании zip. Если прочитать только первую пару, до несовпадения вы ещё не дойдёте. Это ленивый итератор: он берёт элементы по мере запроса. Подробности есть в документации Python.
390
3
Отменённый fetch попадает в обработчик ошибок Чтобы отменить fetch, создают AbortController и передают его signal в параметры
Отменённый fetch попадает в обработчик ошибок Чтобы отменить fetch, создают AbortController и передают его signal в параметры запроса. Вызов abort() сообщает об отмене. Отклонённый промис нужно обработать, иначе отмена может выглядеть как необработанная ошибка. Выполните пример с карточки в консоли современного браузера. Здесь сигнал отменён заранее, а запрос по адресу data: не обращается к внешнему серверу. Обработчик напечатает AbortError. Это проверка поведения отменённого сигнала, а не скорости сети. Уже отменённый сигнал нельзя сбросить. Для нового запроса создайте новый контроллер. Отмена на стороне клиента не гарантирует откат действий сервера. Примеры использования — в документации MDN.
485
4
Свойство может принадлежать прототипу JavaScript-объект может наследовать свойства, которых нет среди его собственных полей.
Свойство может принадлежать прототипу JavaScript-объект может наследовать свойства, которых нет среди его собственных полей. Поиск идёт и по прототипу — объекту, от которого он наследует свойства. Поэтому оператор in и Object.hasOwn отвечают на разные вопросы. Создайте const settings = Object.create({ theme: "dark" }) и задайте settings.size = 0. Проверка "theme" in settings даст true, а Object.hasOwn(settings, "theme") — false. При этом Object.hasOwn(settings, "size") вернёт true: свойство со значением 0 остаётся собственным. Поменяйте значение на undefined и проверьте снова. Метод доступен в современных браузерах, детали — на MDN.
472
5
Апостроф в имени не должен ломать SQL Имя O'Brien содержит апостроф. Если вставлять его прямо в текст SQL, апостроф может нар
Апостроф в имени не должен ломать SQL Имя O'Brien содержит апостроф. Если вставлять его прямо в текст SQL, апостроф может нарушить синтаксис запроса. В модуле Python sqlite3 передавайте значение отдельно: место для него обозначается ?. В учебной базе с таблицей users(name TEXT) и таким именем выполните con.execute("SELECT name FROM users WHERE name = ?", (name,)).fetchall(). Запрос найдёт запись с этим именем. Запятая в (name,) нужна: это кортеж с одним элементом. Не собирайте запрос из пользовательского ввода через f-строку или сложение строк. Параметры подставляют значения, а не имена таблиц или колонок. Полный пример на карточке работает в памяти и не сохраняет базу на диске. Об использовании параметров — в документации Python.
494
6
Пробел разделяет аргументы, пока нет кавычек В Bash записи report file и "report file" дают разное число аргументов. Это важн
Пробел разделяет аргументы, пока нет кавычек В Bash записи report file и "report file" дают разное число аргументов. Это важно, когда имя файла содержит пробел: программа должна получить одно имя целиком. Для проверки без создания и изменения файлов выполните printf '<%s>\n' report file. Увидите две строки: <report> и <file>. Повторите с кавычками: printf '<%s>\n' "report file". Теперь строка одна: <report file>. Угловые скобки здесь помогают увидеть границы аргументов. Двойные кавычки сохраняют пробел, но не делают всё содержимое буквальным: подстановка переменных внутри них работает. Другие оболочки могут отличаться. Детали — в руководстве Bash.
446
7
Почему текст прыгает при загрузке картинки На видео из статьи web.dev текст под серой плашкой уезжает вниз, когда загружается
Почему текст прыгает при загрузке картинки На видео из статьи web.dev текст под серой плашкой уезжает вниз, когда загружается фотография. Браузер не знал заранее, какую высоту оставить под изображение. Такой сдвиг особенно мешает, если вы уже начали читать или нажимать ссылку. Для картинки 800 × 400 задайте <img src="photo.jpg" width="800" height="400" alt="...">. Верное соотношение сторон помогает зарезервировать место до загрузки. Чтобы картинка занимала всю ширину, добавьте отдельно img { width: 100% } и img { height: auto }. Проверьте страницу с замедленной загрузкой и сравните с вариантом без размеров. Соотношение сторон можно задавать и через aspect-ratio. Как задать размеры до загрузки, разобрано в статье web.dev.
478
8
Почему every возвращает true для пустого массива Метод every проверяет, соответствует ли каждый элемент условию. [3, 7].every
Почему every возвращает true для пустого массива Метод every проверяет, соответствует ли каждый элемент условию. [3, 7].every(n => n > 0) вернёт true, а массив с -1 — false. Проверка прекращается при первом неподходящем элементе. Теперь выполните [].every(n => n > 0). Результат снова true: в пустом массиве нет элемента, который нарушил бы условие. Функция проверки при этом вообще не вызывается. Если по задаче нужен непустой список положительных чисел, проверяйте оба условия: values.length > 0 && values.every(n => n > 0). Подставьте пустой массив и сравните результаты. На MDN есть и другие особенности метода, включая пропуск пустых мест в разреженном массиве.
480
9
Что покажет git diff после git add Добавили файл через git add, а потом ещё раз его исправили? В индексе, или staging area, о
Что покажет git diff после git add Добавили файл через git add, а потом ещё раз его исправили? В индексе, или staging area, остаётся подготовленная версия. В рабочей папке уже могут быть новые правки. В новом учебном репозитории создайте a.txt со строкой one и выполните git add a.txt. Затем замените строку на two. Команда git diff -- a.txt покажет замену one на two: это разница между рабочей папкой и индексом. А git diff --staged -- a.txt сравнит индекс с последним коммитом. До первого коммита она покажет добавленный файл со строкой one. Обе команды только показывают различия. Сверить режимы можно в документации Git.
560
10
Запятая внутри кавычек остаётся в CSV-поле Строка Ada,"London, UK",3 содержит три CSV-поля. Город записан в кавычках, поэтому
Запятая внутри кавычек остаётся в CSV-поле Строка Ada,"London, UK",3 содержит три CSV-поля. Город записан в кавычках, поэтому запятая внутри него не разделяет столбцы. Метод split(",") не учитывает кавычки и создаст четыре части. Сравните оба способа на карточке. csv.reader([line]) из стандартной библиотеки Python вернёт ['Ada', 'London, UK', '3']. Последнее значение останется строкой: парсер не превращает число в int автоматически. В учебном примере парсер читает список из одной строки. Если читаете CSV из файла, открывайте его с newline="" и задавайте разделитель под его формат. Попробуйте поле с ещё одной запятой внутри кавычек. Правила и диалекты — в документации csv.
555
11
Рамка помогает найти кнопку без мыши Откройте страницу с двумя кнопками и нажимайте Tab. По рамке должно быть понятно, какая
Рамка помогает найти кнопку без мыши Откройте страницу с двумя кнопками и нажимайте Tab. По рамке должно быть понятно, какая кнопка сработает при нажатии Enter. Если убрать outline без другого заметного индикатора, будет трудно понять, где находится фокус. Попробуйте button:focus-visible { outline: 4px solid #2463eb }. Селектор срабатывает, когда элемент в фокусе и браузер считает индикатор нужным. Для кнопки переход клавишей Tab обычно показывает рамку. :focus выбирает элемент в фокусе независимо от этого решения. Сравните клик мышью и Tab в своём браузере. У других элементов поведение может отличаться: текстовое поле может показывать индикатор и после клика. Поведение и примеры разбираются на MDN.
595
12
Номер строки и порядок выдачи — разные вещи В SQLite row_number() присваивает строкам номера. Порядок внутри OVER (...) опред
Номер строки и порядок выдачи — разные вещи В SQLite row_number() присваивает строкам номера. Порядок внутри OVER (...) определяет, какая строка получит номер 1. А внешний ORDER BY отдельно задаёт порядок, в котором вы увидите строки результата. Возьмите пары (1, 'aaa'), (2, 'ccc'), (3, 'bbb'). При row_number() OVER (ORDER BY y) номера идут по буквам. Если вывести результат с ORDER BY x, увидите номера 1, 3, 2. Они не обязаны идти по возрастанию на экране. Запрос с карточки сохраняет все три строки. Запустите его в SQLite 3.25.0 или новее, затем замените внешний порядок на ORDER BY y. При равных значениях добавляйте уникальный ключ в порядок нумерации. Подробнее — в документации SQLite.
529
13
Поле с подсказками разрешает свой вариант В HTML-поле можно предложить варианты без JavaScript. Атрибут list="cities" у input
Поле с подсказками разрешает свой вариант В HTML-поле можно предложить варианты без JavaScript. Атрибут list="cities" у input связывает его с datalist id="cities". Значения option становятся подсказками при вводе. Добавьте два варианта, Moscow и Kazan, как на карточке. Затем введите Perm. Поле примет и этот текст: список предлагает значения, но сам по себе не запрещает другие. Если нужен строго заданный набор, это уже другая задача. Проверьте пример в нужных браузерах. Вид подсказок и поддержка различаются, есть ограничения для экранных дикторов и масштабирования. MDN описывает эти ограничения. Для реальной формы одной проверки внешнего вида недостаточно.
606
14
Counter посчитает повторения в списке В списке ["red", "blue", "red"] три элемента, но два разных цвета. Counter из стандартн
Counter посчитает повторения в списке В списке ["red", "blue", "red"] три элемента, но два разных цвета. Counter из стандартной библиотеки Python хранит, сколько раз встретился каждый элемент. Так не придётся вручную хранить и увеличивать счётчик для каждого цвета. Выполните код с карточки. Для red получите 2, для отсутствующего green — 0. Вызов most_common(1) вернёт список с одной парой: [('red', 2)]. Добавьте ещё два blue и снова найдите самый частый цвет. Здесь мы считаем готовые элементы списка. Чтобы считать слова в тексте, сначала придётся решить, как его разбивать. Подробнее о счётчике — в документации Python.
593
15
Символы + и & внутри поискового запроса Хотите передать в адресе строку C++ & Python? Если просто приписать её к ?q=, специал
Символы + и & внутри поискового запроса Хотите передать в адресе строку C++ & Python? Если просто приписать её к ?q=, специальные символы могут изменить смысл параметров. URLSearchParams собирает строку параметров с нужным кодированием. Создайте const params = new URLSearchParams({ q: "C++ & Python" }) и выведите params.toString(). Получится q=C%2B%2B+%26+Python: исходный плюс записан как %2B, пробел как +. Передавайте исходный текст, без предварительного кодирования. Вызов new URLSearchParams(params.toString()).get("q") вернёт исходную строку. Конструктору нужен набор параметров, а не полный адрес. Примеры — в документации MDN.
637
16
Файл закроется, когда закончится блок with Открытый файл нужно закрыть после работы. В Python это удобно поручить with: при в
Файл закроется, когда закончится блок with Открытый файл нужно закрыть после работы. В Python это удобно поручить with: при выходе из его блока файл закроется, даже если внутри возникнет исключение. Саму ошибку эта конструкция не перехватывает. В отдельной учебной папке запустите пример с карточки. Он создаст note.txt с текстом hello и напечатает True. Режим "w" перезаписывает существующий файл, поэтому не используйте имя важного документа. Перенесите print(f.closed) внутрь блока: увидите False. А попытка чтения после закрытия даст ValueError. Подробнее о времени жизни файла — в учебнике Python.
641
17
Один знак в Bash решает, дописать файл или стереть старый текст Знак > отправляет обычный вывод команды в файл. Если файла нет, Bash создаст его, а существующий обнулит перед записью. У >> другое поведение: добавить в конец. Проверьте на новом файле notes.txt в отдельной учебной папке. 1️⃣ Запишите первую строку, затем добавьте вторую: printf 'first\n' > notes.txt printf 'second\n' >> notes.txt cat notes.txt cat покажет first и second на отдельных строках. Сами команды printf отправили текст в файл, поэтому в терминале он появился только после cat. 2️⃣ Повторите запись с одним знаком: printf 'third\n' > notes.txt cat notes.txt Останется только third. Это пример для Bash с выключенной защитой noclobber: при включённой защите перезапись существующего обычного файла через > завершится ошибкой. Обе операции описаны в руководстве Bash.
656
18
Ноль может исчезнуть из-за значения по умолчанию Вы задали количество повторов 0, чтобы ничего не запускать. Но выражение 0 || 10 подставит десять. Оператор || выбирает правую часть, когда левая при проверке условия считается ложной. К таким значениям относятся и ноль, и пустая строка, и false. console.log(0 || 10) // 10 console.log(0 ?? 10) // 0 console.log(null ?? 10) // 10 Оператор ?? подставляет правую часть только вместо null или undefined. Поэтому для настройки, где ноль допустим, он сохраняет смысл значения. Пустую строку и false он тоже оставит. При этом ?? не проверяет правильность числа и не исправляет NaN. В первых двух строках замените ноль на false, затем на undefined. В первом случае результаты разойдутся, во втором оба будут 10. Выбор оператора зависит от того, что вы считаете отсутствующим значением. В примерах MDN можно сравнить остальные случаи.
686
19
Три строки в таблице, но COUNT(email) возвращает два У одного пользователя есть адрес, у второго — NULL, то есть отсутствие значения, у третьего — пустая строка. Запустите этот запрос в SQLite. WITH здесь задаёт учебный набор строк для одного запроса: WITH users(email) AS ( VALUES ('a@example.test'), (NULL), ('') ) SELECT COUNT(*) AS rows_total, COUNT(email) AS emails_present FROM users Получатся 3 и 2. По правилам COUNT в SQLite, COUNT(*) считает все строки, а COUNT(email) — только те, где значение не NULL. Пустая строка в SQLite считается значением, поэтому она тоже попала в счётчик. Это ещё не количество корректных почтовых адресов. Поменяйте ('') на (NULL): строк по-прежнему три, но второй счётчик станет равен одному. А если добавить в конец запроса WHERE 1 = 0, выборка будет пустой и оба счётчика вернут ноль.
647
20
lstrip может откусить часть нужного текста Из строки нужно убрать имя автора в начале. Кажется, что lstrip("Arthur: ") подходит, но результат неожиданно короткий: text = "Arthur: three!" print(text.lstrip("Arthur: ")) # ee! print(text.removeprefix("Arthur: ")) # three! Аргумент lstrip — набор отдельных символов для удаления слева. Метод идёт до первого символа вне набора, поэтому после имени съедает ещё t, h и r. removeprefix удаляет ровно один совпавший префикс, то есть заданное начало строки. Он доступен с Python 3.9. Оба метода возвращают результат, исходная строка text не меняется. Передайте им просто "three!". Первый снова оставит "ee!", второй вернёт "three!", потому что нужного префикса нет. А из "Arthur: Arthur: three!" второй удалит только первое имя. Это различие разобрано в документации строк Python.
647