Пишем DNS сервер на python
Наша цель - реализовать игрушечный DNS сервер.
Что такое DNS сервер ? Это программа, которая умеет определять IP-адрес домена.
Вот как выглядит интерфейс командной строки сервера, который мы собираемся написать:
https://implement-dns.wizardzines.com/
Код https://github.com/jvns/dns-weekend
@BookPython
Наша цель - реализовать игрушечный DNS сервер.
Что такое DNS сервер ? Это программа, которая умеет определять IP-адрес домена.
Вот как выглядит интерфейс командной строки сервера, который мы собираемся написать:
$ python3 resolve.py example.com
93.184.216.34
https://implement-dns.wizardzines.com/
Код https://github.com/jvns/dns-weekend
@BookPython
Forwarded from GitHub Сообщество
🎨 Диаграмма как код для прототипирования архитектур облачных систем
Diagrams позволяет рисовать архитектуру облачной системы в коде на языке Python. Она была разработана для создания прототипов новой архитектуры системы без использования каких-либо инструментов проектирования. Кроме того, с помощью Diagrams можно описать или визуализировать существующую архитектуру системы. В настоящее время Diagrams поддерживает основных провайдеров, включая: AWS, Azure, GCP, Kubernetes, Alibaba Cloud, Oracle Cloud и т.д.. Также поддерживаются узлы On-Premise, SaaS и основные фреймворки и языки программирования.
https://github.com/mingrammer/diagrams
👉 @Githublib
Diagrams позволяет рисовать архитектуру облачной системы в коде на языке Python. Она была разработана для создания прототипов новой архитектуры системы без использования каких-либо инструментов проектирования. Кроме того, с помощью Diagrams можно описать или визуализировать существующую архитектуру системы. В настоящее время Diagrams поддерживает основных провайдеров, включая: AWS, Azure, GCP, Kubernetes, Alibaba Cloud, Oracle Cloud и т.д.. Также поддерживаются узлы On-Premise, SaaS и основные фреймворки и языки программирования.
https://github.com/mingrammer/diagrams
👉 @Githublib
Алгоритмы и структуры данных на Python с примерами кода + видео.
Алгоритм Кнута-Морриса-Пратта (КМП-алгоритм) | Алгоритмы на Python
Алгоритм Бойера-Мура-Хорспула | Алгоритмы на Python
Алгоритм Дейкстры (Dijkstra’s algorithm) | Алгоритмы на Python
Алгоритм Флойда (Floyd’s algorithm) | Алгоритмы на Python
Алгоритм Форда-Фалкерсона | Алгоритмы на Python
Алгоритм Краскала (Kruskal’s algorithm) | Алгоритмы на Python
Алгоритм Прима (ближайшего соседа) | Алгоритмы на Python
Сортировка выбором | Алгоритмы на Python
Сортировка вставками | Алгоритмы на Python
Сортировка пузырьком (метод всплывающего пузырька) | Алгоритмы на Python
Слияние двух упорядоченных списков | Алгоритмы на Python
Быстрая сортировка слиянием (merge sort) | Алгоритмы на Python
Быстрая сортировка Хоара | Алгоритмы на Python
Стек типа LIFO (Last-In-First-Out) | Алгоритмы на Python
Делаем очередь (queue) | Алгоритмы на Python
https://bookflow.ru/algoritmy-i-struktury-dannyh-na-python/
@BookPython
Алгоритм Кнута-Морриса-Пратта (КМП-алгоритм) | Алгоритмы на Python
Алгоритм Бойера-Мура-Хорспула | Алгоритмы на Python
Алгоритм Дейкстры (Dijkstra’s algorithm) | Алгоритмы на Python
Алгоритм Флойда (Floyd’s algorithm) | Алгоритмы на Python
Алгоритм Форда-Фалкерсона | Алгоритмы на Python
Алгоритм Краскала (Kruskal’s algorithm) | Алгоритмы на Python
Алгоритм Прима (ближайшего соседа) | Алгоритмы на Python
Сортировка выбором | Алгоритмы на Python
Сортировка вставками | Алгоритмы на Python
Сортировка пузырьком (метод всплывающего пузырька) | Алгоритмы на Python
Слияние двух упорядоченных списков | Алгоритмы на Python
Быстрая сортировка слиянием (merge sort) | Алгоритмы на Python
Быстрая сортировка Хоара | Алгоритмы на Python
Стек типа LIFO (Last-In-First-Out) | Алгоритмы на Python
Делаем очередь (queue) | Алгоритмы на Python
https://bookflow.ru/algoritmy-i-struktury-dannyh-na-python/
@BookPython
Управление производительностью с Python 3.12
В Python 3.12 появилась поддержка perf profiling. В этой статье увидим, как это помогает сократить время выполнения Python-скрипта с 36 секунд до 0,8. Мы рассмотрим Linux-инструмент perf, графики Flame Graph, посмотрим на дизассемблированный код и займемся поиском ошибок. Код из статьи можно посмотреть здесь.
https://www.petermcconnell.com/posts/perf_eng_with_py12/
@BookPython
В Python 3.12 появилась поддержка perf profiling. В этой статье увидим, как это помогает сократить время выполнения Python-скрипта с 36 секунд до 0,8. Мы рассмотрим Linux-инструмент perf, графики Flame Graph, посмотрим на дизассемблированный код и займемся поиском ошибок. Код из статьи можно посмотреть здесь.
https://www.petermcconnell.com/posts/perf_eng_with_py12/
@BookPython
Привязки Python для оптимизации производительности
В статье описываются методы ускорения кодовой базы Python путем раскрытия распараллеленных функций C++ с помощью PyBind. Затем анализируются результаты оптимизации, в ходе которой распараллеливание одной 40-строчной функции в 700-строчной программе дало до 3-кратного сквозного ускорения.
https://alexhagiopol.github.io/posts/2023/01/python-bindings/
@BookPython
В статье описываются методы ускорения кодовой базы Python путем раскрытия распараллеленных функций C++ с помощью PyBind. Затем анализируются результаты оптимизации, в ходе которой распараллеливание одной 40-строчной функции в 700-строчной программе дало до 3-кратного сквозного ускорения.
https://alexhagiopol.github.io/posts/2023/01/python-bindings/
@BookPython
Линейная алгебра в Python: обратные матрицы и метод наименьших квадратов.
Линейная алгебра является важной темой для различных предметов. Она позволяет решать задачи, связанные с векторами, матрицами и линейными уравнениями. В Python большинство процедур, связанных с этой темой, реализовано в scipy.linalg, который предоставляет очень быстрые возможности линейной алгебры.
В частности, линейные модели играют важную роль в различных реальных задачах, и scipy.linalg предоставляет инструменты для их эффективного вычисления.
https://realpython.com/python-linear-algebra/
@BookPython
Линейная алгебра является важной темой для различных предметов. Она позволяет решать задачи, связанные с векторами, матрицами и линейными уравнениями. В Python большинство процедур, связанных с этой темой, реализовано в scipy.linalg, который предоставляет очень быстрые возможности линейной алгебры.
В частности, линейные модели играют важную роль в различных реальных задачах, и scipy.linalg предоставляет инструменты для их эффективного вычисления.
https://realpython.com/python-linear-algebra/
@BookPython
Список вопросов с собеседований по Python
https://bookflow.ru/spisok-voprosov-s-sobesedovanij-po-python/
@BookPython
https://bookflow.ru/spisok-voprosov-s-sobesedovanij-po-python/
@BookPython
5 лайфхаков Python, которые сделают ваш код более читабельным и элегантным
В этой статье я продемонстрирую 5 трюков Python на понятных для новичков примерах, которые помогут вам писать более элегантный Python код в вашей повседневной работе.
1. Избегайте вложенных циклов с помощью product
2. Оператор морж (:=) или способ записывать данные в переменную о котором вы не знали
3. Самый легкий способ мерджить словари
4. Используем * для мерджа списка, кортежа и множества в одну строчку
5. Используем встроенные функции в Python для написания стандартной логики
Rus https://habr.com/ru/articles/714820/
Eng https://medium.com/techtofreedom/9-fabulous-python-tricks-that-make-your-code-more-elegant-bf01a6294908
@BookPython
В этой статье я продемонстрирую 5 трюков Python на понятных для новичков примерах, которые помогут вам писать более элегантный Python код в вашей повседневной работе.
1. Избегайте вложенных циклов с помощью product
2. Оператор морж (:=) или способ записывать данные в переменную о котором вы не знали
3. Самый легкий способ мерджить словари
4. Используем * для мерджа списка, кортежа и множества в одну строчку
5. Используем встроенные функции в Python для написания стандартной логики
Rus https://habr.com/ru/articles/714820/
Eng https://medium.com/techtofreedom/9-fabulous-python-tricks-that-make-your-code-more-elegant-bf01a6294908
@BookPython
Подборка CMS
django-cms - Корпоративная CMS с открытым исходным кодом на основе Django.
feincms - Одна из самых продвинутых систем управления контентом, построенная на Django.
indico - Многофункциональная система управления событиями, созданная в CERN.
Kotti - Высокоуровневый питонический фреймворк для веб-приложений, построенный на Pyramid.
mezzanine - Мощная, последовательная и гибкая платформа управления контентом.
plone - CMS, построенная на базе открытого сервера приложений Zope.
quokka - Гибкая, расширяемая, небольшая CMS на базе Flask и MongoDB.
wagtail - Система управления контентом на основе Django.
@BookPython
django-cms - Корпоративная CMS с открытым исходным кодом на основе Django.
feincms - Одна из самых продвинутых систем управления контентом, построенная на Django.
indico - Многофункциональная система управления событиями, созданная в CERN.
Kotti - Высокоуровневый питонический фреймворк для веб-приложений, построенный на Pyramid.
mezzanine - Мощная, последовательная и гибкая платформа управления контентом.
plone - CMS, построенная на базе открытого сервера приложений Zope.
quokka - Гибкая, расширяемая, небольшая CMS на базе Flask и MongoDB.
wagtail - Система управления контентом на основе Django.
@BookPython
Протоколы в Python
В Python 3.8. появилась новая примечательная возможность — протоколы (protocols). Протоколы — это альтернатива абстрактным базовым классам (abstract base classes, ABC). Они позволяют пользоваться структурной подтипизацией (structural subtyping), то есть — осуществлять проверку совместимости классов исключительно на основе анализа их атрибутов и методов. В этом материале мы поговорим о протоколах в Python и разберём практические примеры работы с ними.
Rus https://habr.com/ru/companies/wunderfund/articles/751424/
Eng https://towardsdatascience.com/protocols-in-python-110943832d98
@BookPython
В Python 3.8. появилась новая примечательная возможность — протоколы (protocols). Протоколы — это альтернатива абстрактным базовым классам (abstract base classes, ABC). Они позволяют пользоваться структурной подтипизацией (structural subtyping), то есть — осуществлять проверку совместимости классов исключительно на основе анализа их атрибутов и методов. В этом материале мы поговорим о протоколах в Python и разберём практические примеры работы с ними.
Rus https://habr.com/ru/companies/wunderfund/articles/751424/
Eng https://towardsdatascience.com/protocols-in-python-110943832d98
@BookPython
Python backend
Python - Архитектура кода
Python - Базы данных и миграции
Python - Тестирование
Python - Тестирование
Нагрузочное тестирование
Нагрузочное тестирование (лайвкодинг)
Девопс, деплой, CI/CD. Часть 1
Девопс, деплой, CI/CD. Часть 2
Архитектура распределенных систем
Python - Дебаг - логирование - профилирование
Код-ревью
Python - Асинхронное программирование. Часть 1
Python - Асинхронное программирование. Часть 2
Отбор в IT компанию
Лекция Практики разработчиков
Интенсив по алгоритмам. Введение
Интенсив по алгоритмам. Разбор ДЗ 2
Все видео доступны на youtube
@BookPython
Python - Архитектура кода
Python - Базы данных и миграции
Python - Тестирование
Python - Тестирование
Нагрузочное тестирование
Нагрузочное тестирование (лайвкодинг)
Девопс, деплой, CI/CD. Часть 1
Девопс, деплой, CI/CD. Часть 2
Архитектура распределенных систем
Python - Дебаг - логирование - профилирование
Код-ревью
Python - Асинхронное программирование. Часть 1
Python - Асинхронное программирование. Часть 2
Отбор в IT компанию
Лекция Практики разработчиков
Интенсив по алгоритмам. Введение
Интенсив по алгоритмам. Разбор ДЗ 2
Все видео доступны на youtube
@BookPython
Как имитировать разрыв соединения с базой данных для тестирования в Django
Я очень долго пытался понять, как имитировать разрыв соединения с базой данных в Django. Проблема заключается в том, что таймаут должен быть не только у необработанных курсоров, но и у всех моделей, обращающихся к базе данных.
Это означает, что где бы мы ни вызывали Model.objects.filter(), Model.objects.all() или connection.cursor(), операция должна завершиться неудачей.
https://neilkakkar.com/test-database-connection-django.html
@BookPython
Я очень долго пытался понять, как имитировать разрыв соединения с базой данных в Django. Проблема заключается в том, что таймаут должен быть не только у необработанных курсоров, но и у всех моделей, обращающихся к базе данных.
Это означает, что где бы мы ни вызывали Model.objects.filter(), Model.objects.all() или connection.cursor(), операция должна завершиться неудачей.
https://neilkakkar.com/test-database-connection-django.html
@BookPython
Neil Kakkar
How to simulate a broken database connection for testing in Django
Three different options for how to effectively test Django code accessing the database
Объект многоточие в Python
Как-то раз я наткнулся на такой фрагмент кода на Python:
Сначала я решил, что это просто какой-то псевдокод. В Python для заполнения тела пустой функции, которая еще не реализована, обычно используется ключевое слово pass. Я подумал: «здесь указано, что далее будет больше кода, но в этом месте код сокращен, чтобы просто понять идею». Следовательно, использование ключевого слова pass означало бы, что что-то еще не реализовано. Больше я об этом не задумывался, но иногда использовал сам, чтобы объяснить коллегам определенную концепцию.
https://florian-dahlitz.de/articles/what-is-pythons-ellipsis-object
@BookPython
Как-то раз я наткнулся на такой фрагмент кода на Python:
class CustomException(Exception):
...
Сначала я решил, что это просто какой-то псевдокод. В Python для заполнения тела пустой функции, которая еще не реализована, обычно используется ключевое слово pass. Я подумал: «здесь указано, что далее будет больше кода, но в этом месте код сокращен, чтобы просто понять идею». Следовательно, использование ключевого слова pass означало бы, что что-то еще не реализовано. Больше я об этом не задумывался, но иногда использовал сам, чтобы объяснить коллегам определенную концепцию.
https://florian-dahlitz.de/articles/what-is-pythons-ellipsis-object
@BookPython
Личный путь и опыт в становлении Python разработчиком
В этой статье, а точнее целой истории, я хотел бы поделиться своим путем становления в качестве разработчика на Python и рассказать о некоторых идеях и советах, которые я усвоил за это время.
Начиная с моих первых проектов и заканчивая моей текущей деятельностью, я поделюсь накопленным опытом и попробую осветить проблемы, с которыми я столкнулся на своем пути.
Кого-то данная статься вдохновит начать свой собственный путь в разработке, а кому-то будет интересно прочитать историю успешного кейса входа и закрепления в ИТ.
В любом случае, я надеюсь, что моя история покажет, что нет никаких преград в освоении и достижении определенного уровня даже в такой, казалось бы сложной области, как программирование, и что вы сможете отметить полезные моменты для себя.
https://habr.com/ru/articles/717424/
@BookPython
В этой статье, а точнее целой истории, я хотел бы поделиться своим путем становления в качестве разработчика на Python и рассказать о некоторых идеях и советах, которые я усвоил за это время.
Начиная с моих первых проектов и заканчивая моей текущей деятельностью, я поделюсь накопленным опытом и попробую осветить проблемы, с которыми я столкнулся на своем пути.
Кого-то данная статься вдохновит начать свой собственный путь в разработке, а кому-то будет интересно прочитать историю успешного кейса входа и закрепления в ИТ.
В любом случае, я надеюсь, что моя история покажет, что нет никаких преград в освоении и достижении определенного уровня даже в такой, казалось бы сложной области, как программирование, и что вы сможете отметить полезные моменты для себя.
https://habr.com/ru/articles/717424/
@BookPython
Хабр
Личный путь и опыт в становлении Python разработчиком
Привет, Хабр! В этой статье, а точнее целой истории, я хотел бы поделиться своим путем становления в качестве разработчика на Python и рассказать о некоторых идеях и советах, которые я усвоил за это...