Вопросы подписчиков
Zen of Python поддерживает новоприбывших (и не только) в особой рубрике. Как это работает:
— Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов!
— Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте;
#вопросы_новичков
@zen_of_python
Zen of Python поддерживает новоприбывших (и не только) в особой рубрике. Как это работает:
— Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов!
— Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте;
#вопросы_новичков
@zen_of_python
Бэкроним — это в шутку неверная расшифровка аббревиатуры.
PEP — Please Explain Python
#кек
@zen_of_python
PEP — Please Explain Python
#кек
@zen_of_python
FlareSolverr | Обходим турникет Cloudflare
Фактически эта библиотека обеспечивает вас прокси-сервером для обхода антибот-защиты. Когда приходит запрос, она использует Selenium с undetected-chromedriver для открытия вкладки Chrome. URL с параметрами пользователя открывается, задача Cloudflare решается (или истекает время ожидания). Посмотрим, сколько времени у CF уйдет на «компенсацию» такого «эксплойта».
Цена: бесплатно
Репозиторий проекта
#инструмент
@zen_of_python
Фактически эта библиотека обеспечивает вас прокси-сервером для обхода антибот-защиты. Когда приходит запрос, она использует Selenium с undetected-chromedriver для открытия вкладки Chrome. URL с параметрами пользователя открывается, задача Cloudflare решается (или истекает время ожидания). Посмотрим, сколько времени у CF уйдет на «компенсацию» такого «эксплойта».
Цена: бесплатно
Репозиторий проекта
#инструмент
@zen_of_python
Краткий гайд про хэши для новичков
Хеширование — это фундаментальная концепция в Computer Science. В основе лежит идея односторонней функции, которая принимает на вход данные произвольного размера и возвращает выход фиксированной длины. Эта функция преобразует любые данные — будь то строка, число или файл — в уникальное значение фиксированной длины, называемое хешем. Это значение представляет собой последовательность битов, которая служит своего рода «отпечатком пальца» для исходных данных:
Зачем это нужно
— Проверка «девственности» передаваемых данных: при передаче данных по сети важно убедиться, что они не были изменены. Хеширование позволяет создать контрольную сумму, которая может быть использована для проверки целостности данных;
— Хранение паролей: вместо хранения оных в открытом виде их точно стоит обезопасить хешами;
— Хеширование используется для создания цифровых подписей, которые подтверждают подлинность и целостность сообщений или документов.
Многие из вас сталкивались с SSH-ключами для Git-репозиториев, причем с разными алгоритмами: MD5, SHA256. В отдельном посте поговорим об алгоритмах шифрования вроде RSA.
Когда мы создаем пару ключей (приватный + публичный), например с помощью:
То получаем приватный ключ, что хранится на локальной машине и используется для аутентификации. Также мы получаем публичный ключ и загружаем его на GitHub. Он не использует хеши для хранения или проверки самих публичных ключей, они проверяются напрямую, при помощи криптографических протоколов. Но вот где вступает в дело хеш:
GitHub (и SSH-клиенты в целом) используют хеши не для безопасности, а для удобной идентификации.
Когда мы смотрим отпечаток ключа, например:
То получаем:
Это и есть отпечаток ключа (fingerprint) — хеш публичного ключа. Он используется для подтверждения подлинности ключа.
#основы
@zen_of_python
Хеширование — это фундаментальная концепция в Computer Science. В основе лежит идея односторонней функции, которая принимает на вход данные произвольного размера и возвращает выход фиксированной длины. Эта функция преобразует любые данные — будь то строка, число или файл — в уникальное значение фиксированной длины, называемое хешем. Это значение представляет собой последовательность битов, которая служит своего рода «отпечатком пальца» для исходных данных:
import hashlib
hash = hashlib.sha256()
hash.update(b'hello')
hashed_string = hash.hexdigest()
print(hashed_string) # 2cf24d......8b9824
Зачем это нужно
— Проверка «девственности» передаваемых данных: при передаче данных по сети важно убедиться, что они не были изменены. Хеширование позволяет создать контрольную сумму, которая может быть использована для проверки целостности данных;
— Хранение паролей: вместо хранения оных в открытом виде их точно стоит обезопасить хешами;
— Хеширование используется для создания цифровых подписей, которые подтверждают подлинность и целостность сообщений или документов.
Многие из вас сталкивались с SSH-ключами для Git-репозиториев, причем с разными алгоритмами: MD5, SHA256. В отдельном посте поговорим об алгоритмах шифрования вроде RSA.
Когда мы создаем пару ключей (приватный + публичный), например с помощью:
ssh-keygen -t rsa -b 4096
То получаем приватный ключ, что хранится на локальной машине и используется для аутентификации. Также мы получаем публичный ключ и загружаем его на GitHub. Он не использует хеши для хранения или проверки самих публичных ключей, они проверяются напрямую, при помощи криптографических протоколов. Но вот где вступает в дело хеш:
GitHub (и SSH-клиенты в целом) используют хеши не для безопасности, а для удобной идентификации.
Когда мы смотрим отпечаток ключа, например:
ssh-keygen -lf ~/.ssh/id_rsa.pub
То получаем:
2048 SHA256:2f3b7A5Nk...xyz username@host (RSA)
Это и есть отпечаток ключа (fingerprint) — хеш публичного ключа. Он используется для подтверждения подлинности ключа.
#основы
@zen_of_python
Telegram
Zen of Python
Полный Дзен Пайтона в одном канале
Разместить рекламу: @tproger_sales_bot
Правила общения: https://tprg.ru/rules
Другие каналы: @tproger_channels
Сайт: https://tprg.ru/site
Регистрация в перечне РКН: https://tprg.ru/xZOL
Разместить рекламу: @tproger_sales_bot
Правила общения: https://tprg.ru/rules
Другие каналы: @tproger_channels
Сайт: https://tprg.ru/site
Регистрация в перечне РКН: https://tprg.ru/xZOL
Forwarded from Типичный программист
Лаконичная шпора из 12 базовых команд GIT на русском 🙂
Кратко, по делу, без лишнего — самые нужные команды для повседневной работы с репозиторием.
А если нужна более расширенная подборка — загляните в наш прошлый чит-лист. Возможно даже откроете для себя что-то новое
Кратко, по делу, без лишнего — самые нужные команды для повседневной работы с репозиторием.
А если нужна более расширенная подборка — загляните в наш прошлый чит-лист. Возможно даже откроете для себя что-то новое
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Код найма
Хватит искать работу в одиночку!
Ты крутой айтишник, но поиск работы превращается в квест: бесконечные резюме, где важны не навыки, а кейворды, десятки собеседований и постоянный стресс. Знакомо? Всё это выматывает и демотивирует. Мы тебя понимаем — и готовы поддержать!
Команда Tproger открывает первое реалити-шоу в Телеграм о поиске работы — «Код найма».
Вместе с опытными менторами ты пройдешь все этапы найма:
➡️ Прокачаешь резюме так, чтобы его заметили
➡️ Научишься проходить собеседования без волнения
➡️ Получишь честную обратную связь от рекрутеров
➡️ И, главное, дойдёшь до оффера в компании мечты!
Весь путь будет проходить на глазах у подписчиков канала — они тоже смогут давать советы и поддерживать тебя.
Хочешь стать героем нашего реалити и получить шанс найти работу мечты?
✍️ Заполняй анкету
Мы выберем трёх участников, которым поможем пройти весь путь до оффера.
Присоединяйся к «Коду найма» — и пусть твой следующий оффер станет началом новой жизни!
Ты крутой айтишник, но поиск работы превращается в квест: бесконечные резюме, где важны не навыки, а кейворды, десятки собеседований и постоянный стресс. Знакомо? Всё это выматывает и демотивирует. Мы тебя понимаем — и готовы поддержать!
Команда Tproger открывает первое реалити-шоу в Телеграм о поиске работы — «Код найма».
Вместе с опытными менторами ты пройдешь все этапы найма:
Весь путь будет проходить на глазах у подписчиков канала — они тоже смогут давать советы и поддерживать тебя.
Хочешь стать героем нашего реалити и получить шанс найти работу мечты?
✍️ Заполняй анкету
Мы выберем трёх участников, которым поможем пройти весь путь до оффера.
Присоединяйся к «Коду найма» — и пусть твой следующий оффер станет началом новой жизни!
Please open Telegram to view this post
VIEW IN TELEGRAM
Опрос про роль ИИ в вашей работе
Редакция Tproger проводит регулярное исследование об отношении айтишников к Искусственному интеллекту. Это небольшая анкета займет не более 5 минут, но очень поможет прояснить отношение разных групп к AI. Результатами обязательно поделимся.
#опрос
@zen_of_python
Редакция Tproger проводит регулярное исследование об отношении айтишников к Искусственному интеллекту. Это небольшая анкета займет не более 5 минут, но очень поможет прояснить отношение разных групп к AI. Результатами обязательно поделимся.
#опрос
@zen_of_python
This media is not supported in your browser
VIEW IN TELEGRAM
whatsonpypi | Ускоряем обновление зависимостей
Если при обновлении библиотек проекта вам неохота каждый раз посещать pypi.org, с помощью этой утилиты вы сможете вывести данные о крайней версии и совместимости с Python прямо в командную строку.
Репозиторий проекта
#инструмент
@zen_of_python
Если при обновлении библиотек проекта вам неохота каждый раз посещать pypi.org, с помощью этой утилиты вы сможете вывести данные о крайней версии и совместимости с Python прямо в командную строку.
Репозиторий проекта
#инструмент
@zen_of_python
Новый инструмент для отладки асинхронных процессов
С выходом Python 3.14 beta 2 появился новый CLI-инструмент для инспекции асинхронных задач:
Команда выводит табличный список активных корутин с их именами, стеком и зависимостями.
Сферы применения
— Telegram-боты;
— aiohttp и другие HTTP-серверах;
— await‑запросы к БД.
Теперь нет нужды вставлять логи или использовать профайлеры — диагностика идет вживую и позволит увидеть:
— какие запросы обрабатываются дольше всего;
— какие «вешают» бота;
— какие запросы ожидают своей очереди.
Документация
#факт
@zen_of_python
С выходом Python 3.14 beta 2 появился новый CLI-инструмент для инспекции асинхронных задач:
python -m asyncio ps 12345 # Табличный список задач для процесса с PID 12345
python -m asyncio pstree 12345 # Древовидное отображение взаимозависимых корутин
Команда выводит табличный список активных корутин с их именами, стеком и зависимостями.
Сферы применения
— Telegram-боты;
— aiohttp и другие HTTP-серверах;
— await‑запросы к БД.
Теперь нет нужды вставлять логи или использовать профайлеры — диагностика идет вживую и позволит увидеть:
— какие запросы обрабатываются дольше всего;
— какие «вешают» бота;
— какие запросы ожидают своей очереди.
Документация
#факт
@zen_of_python
Python.org
Python Release Python 3.14.0b2
The official home of the Python Programming Language
bandit | Насколько защищен ваш проект?
Инструмент найдет «секурные прорехи» в вашем проекте, включая запушенные ключи / токены и небезопасные участки кода. Внезапно проект OpenStack — опенсорсной облачной инициативы NASA.
Репозиторий проекта
#инструмент
@zen_of_python
Инструмент найдет «секурные прорехи» в вашем проекте, включая запушенные ключи / токены и небезопасные участки кода. Внезапно проект OpenStack — опенсорсной облачной инициативы NASA.
Репозиторий проекта
#инструмент
@zen_of_python
Несколько способов ускорить ваш код.
В реальных задачах — от обработки данных до веб-сервисов — скорость выполнения критична. Незаметные узкие места могут приводить к росту затрат на инфраструктуру и снижению качества обслуживания пользователей. Вашему вниманию эффективные способа ускорить Python — каждый из них помогает бороться с типичными источниками замедлений.
tuple вместо list
Кортежи неизменяемы: они создаются один раз, занимают фиксированную память и оптимизируются самим интерпретатором. Списки же — динамический тип: их память часто переранее выделяется, они имеют более сложную внутреннюю структуру.
Поэтому когда структура фиксирована и не требуется изменять элементы — используйте кортеж. Это существенно сэкономит память, когда речь идёт о больших объёмах данных.
set и dict вместо list при частых проверках и поисках
— Поиск x in my_list — линейная операция (O(n));
— Проверка присутствия через my_set или my_dict — это хеш-таблица (O(1));
Если вам нужна частая проверка вхождений (фильтрация или поиск), выбирайте сет или словарь. Первый предпочтителен для уникальных элементов, второй — когда нужен быстрый доступ по ключу и хранение значений.
Локальные переменные быстрее
Переменные локальной области видимости читаются быстрее, чем глобальные — это из-за особенностей функционирования интерпретатора. В циклах и функциях выносите глобальные объекты как список, словарь в локальные переменные — это ускоряет многократные обращения.
#основы
@zen_of_python
В реальных задачах — от обработки данных до веб-сервисов — скорость выполнения критична. Незаметные узкие места могут приводить к росту затрат на инфраструктуру и снижению качества обслуживания пользователей. Вашему вниманию эффективные способа ускорить Python — каждый из них помогает бороться с типичными источниками замедлений.
tuple вместо list
Кортежи неизменяемы: они создаются один раз, занимают фиксированную память и оптимизируются самим интерпретатором. Списки же — динамический тип: их память часто переранее выделяется, они имеют более сложную внутреннюю структуру.
Поэтому когда структура фиксирована и не требуется изменять элементы — используйте кортеж. Это существенно сэкономит память, когда речь идёт о больших объёмах данных.
set и dict вместо list при частых проверках и поисках
— Поиск x in my_list — линейная операция (O(n));
— Проверка присутствия через my_set или my_dict — это хеш-таблица (O(1));
Если вам нужна частая проверка вхождений (фильтрация или поиск), выбирайте сет или словарь. Первый предпочтителен для уникальных элементов, второй — когда нужен быстрый доступ по ключу и хранение значений.
Локальные переменные быстрее
Переменные локальной области видимости читаются быстрее, чем глобальные — это из-за особенностей функционирования интерпретатора. В циклах и функциях выносите глобальные объекты как список, словарь в локальные переменные — это ускоряет многократные обращения.
#основы
@zen_of_python
Telegram
Zen of Python
Полный Дзен Пайтона в одном канале
Разместить рекламу: @tproger_sales_bot
Правила общения: https://tprg.ru/rules
Другие каналы: @tproger_channels
Сайт: https://tprg.ru/site
Регистрация в перечне РКН: https://tprg.ru/xZOL
Разместить рекламу: @tproger_sales_bot
Правила общения: https://tprg.ru/rules
Другие каналы: @tproger_channels
Сайт: https://tprg.ru/site
Регистрация в перечне РКН: https://tprg.ru/xZOL
Создаём микросервис по выгодному обмену крипты
В статье вы узнаете, как создать микросервис, что анализирует предложения и подсказывает, где можно выгоднее обменять криптовалюту. Все это делается на Python, который делает запросы к API exnode.ru и сортирует результат по выгоде. Вы также увидите, как создается веб‑интерфейс + Telegram‑бот.
#api
@zen_of_python
В статье вы узнаете, как создать микросервис, что анализирует предложения и подсказывает, где можно выгоднее обменять криптовалюту. Все это делается на Python, который делает запросы к API exnode.ru и сортирует результат по выгоде. Вы также увидите, как создается веб‑интерфейс + Telegram‑бот.
#api
@zen_of_python