В блоге у компании Sentry нашел свежую и классную серию статей про Django Performance Improvements:
- Part 1: Database Optimizations
- Part 2: Code Optimization
- Part 3: Frontend Optimizations
- Part 4: Caching in Django Applications
- Part 1: Database Optimizations
- Part 2: Code Optimization
- Part 3: Frontend Optimizations
- Part 4: Caching in Django Applications
Как стать хорошим бэкенд-инженером?
Наткнулся на интересную статью от известного в узких кругах инженера Hussein Nasser про фундаментальные знания для бэкэнд-разработчика — How To Become a Good Backend Enginner. У автора более 18 лет опыта в разработке бэкенда и для себя он выделяет несколько основных фундаментов на которые опирается хорошее бэкенд-приложение:
- Протоколы транспортного уровня TCP и UDP. Самые популярные протоколы прикладного уровня так или иначе базируются либо на TCP либо на UDP.
- Нюансы работы веб-сервера, будь то nginx, apache httpd/tomcat и т.д. Я полностью согласен с автором, т.к. понимание как работает веб-сервер значительно упрощает решение проблем с производительностью приложения. У автора есть статья про разбор архитектуры nginx.
- Базы данных. Бесспорно база данных это сердце практически любого бэкенд-приложения. Понимание как работают индексы, что значит ACID Compliance, как база хранит данные на диске сделают вас лучшим инженером. От себя добавлю, что важно понимать плюсы и минусы той или иной БД, чтобы ваш выбор был максимально взвешенным и обоснованным. Чем с большим количеством баз вы столкнётесь на практике тем более взвешенным будет ваше решение о её выборе.
- Прокси-серверы. В эпоху микросервисной архитектуры появилось множество сервисов для проксирования запросов как транспортного уровня (например, HAProxy) так и прикладного (nginx http reverse-proxy, HAProxy HTTP). Область их применения разнообразная: балансировка нагрузки между серверами, кеширование, проверка авторизации/аутентификации и т.д.
- Системы обмена сообщениями (Messaging systems). Apache Kafka, RabbitMQ, Redis и многие другие популярные системы обмена сообщениями прочно вошли в нашу жизнь в эпоху распределённых приложений. Помимо преимуществ в масштабировании ваших сервисов, системы обмена сообщениями также значительно снижают связность между приложениями. Автор статьи рекомендует читателю разобраться в тонкостях той или иной системы, а именно в механизме создания и получения сообщения, нюансам доставки сообщений (at most once, at least once)
- Формат сообщений. XML, JSON, ProtoBuf, MessagePack и другие. Существует множество форматов кодирования информации для обмена между системами и у каждой есть свои минусы и плюсы (кроме XML, шутка). Если вы уменьшаете размер пересылаемой информации (например, выбирая сжатый формат), то не забывайте про накладные расходы CPU при десериализации сообщения.
- Безопасность. Знания об основах безопаности никогда не будут лишними. Для веб-разработчиков рекомендую ознакомиться с Топ-10 наиболее популярных уязвимостей в веб-приложениях: https://owasp.org/www-project-top-ten/
А что бы вы добавили от себя? Пишите в комментариях.
Наткнулся на интересную статью от известного в узких кругах инженера Hussein Nasser про фундаментальные знания для бэкэнд-разработчика — How To Become a Good Backend Enginner. У автора более 18 лет опыта в разработке бэкенда и для себя он выделяет несколько основных фундаментов на которые опирается хорошее бэкенд-приложение:
- Протоколы транспортного уровня TCP и UDP. Самые популярные протоколы прикладного уровня так или иначе базируются либо на TCP либо на UDP.
- Нюансы работы веб-сервера, будь то nginx, apache httpd/tomcat и т.д. Я полностью согласен с автором, т.к. понимание как работает веб-сервер значительно упрощает решение проблем с производительностью приложения. У автора есть статья про разбор архитектуры nginx.
- Базы данных. Бесспорно база данных это сердце практически любого бэкенд-приложения. Понимание как работают индексы, что значит ACID Compliance, как база хранит данные на диске сделают вас лучшим инженером. От себя добавлю, что важно понимать плюсы и минусы той или иной БД, чтобы ваш выбор был максимально взвешенным и обоснованным. Чем с большим количеством баз вы столкнётесь на практике тем более взвешенным будет ваше решение о её выборе.
- Прокси-серверы. В эпоху микросервисной архитектуры появилось множество сервисов для проксирования запросов как транспортного уровня (например, HAProxy) так и прикладного (nginx http reverse-proxy, HAProxy HTTP). Область их применения разнообразная: балансировка нагрузки между серверами, кеширование, проверка авторизации/аутентификации и т.д.
- Системы обмена сообщениями (Messaging systems). Apache Kafka, RabbitMQ, Redis и многие другие популярные системы обмена сообщениями прочно вошли в нашу жизнь в эпоху распределённых приложений. Помимо преимуществ в масштабировании ваших сервисов, системы обмена сообщениями также значительно снижают связность между приложениями. Автор статьи рекомендует читателю разобраться в тонкостях той или иной системы, а именно в механизме создания и получения сообщения, нюансам доставки сообщений (at most once, at least once)
- Формат сообщений. XML, JSON, ProtoBuf, MessagePack и другие. Существует множество форматов кодирования информации для обмена между системами и у каждой есть свои минусы и плюсы (кроме XML, шутка). Если вы уменьшаете размер пересылаемой информации (например, выбирая сжатый формат), то не забывайте про накладные расходы CPU при десериализации сообщения.
- Безопасность. Знания об основах безопаности никогда не будут лишними. Для веб-разработчиков рекомендую ознакомиться с Топ-10 наиболее популярных уязвимостей в веб-приложениях: https://owasp.org/www-project-top-ten/
А что бы вы добавили от себя? Пишите в комментариях.
Medium
How to Become a Good Backend Engineer (Fundamentals)
I have been a backend engineer for over 18 years and I witnessed technologies come and go but one thing always remain constant; The first…
Django 4.2 LTS
Вчера вышла LTS версия Django 4.2. Из значимых изменений:
— поддержка psycopg3 (асинхронный режим для работы с PostgreSQL)
— возможность добавлять комментарии к таблицам/моделям
— тёмный режим в админке Django
— асинхронный интерфейс для Related Managers
Вчера вышла LTS версия Django 4.2. Из значимых изменений:
— поддержка psycopg3 (асинхронный режим для работы с PostgreSQL)
— возможность добавлять комментарии к таблицам/моделям
— тёмный режим в админке Django
— асинхронный интерфейс для Related Managers
Django Project
Django 4.2 released
Posted by Mariusz Felisiak on April 3, 2023
Бесплатный курс об изучении языка Rust. Курс рассчитан на 12 полных недель. Каждую неделю открывается новый материал для изучения, сейчас доступен материал 1-й недели.
В сети появились долгожданные доклады с прошедшей в конце апреля конференции PyCon US 2023: https://bit.ly/3WLW0oG
Доклады с DjangoCon Europe 2023:
— Squeezing Django performance for 14.9 million users on WhatsApp
— Building and scaling a live event platform with django-channels
— Tuning PostgreSQL to work even better
— Good form: How Django’s form rendering improved during the 4.x series
Выше список наиболее интересных с моей т.з. докладов с прошедшей конференции. Полный список можно посмотреть тут.
— Squeezing Django performance for 14.9 million users on WhatsApp
— Building and scaling a live event platform with django-channels
— Tuning PostgreSQL to work even better
— Good form: How Django’s form rendering improved during the 4.x series
Выше список наиболее интересных с моей т.з. докладов с прошедшей конференции. Полный список можно посмотреть тут.
YouTube
DjangoCon Europe 2023 | Squeezing Django performance for 14.9 million users on WhatsApp
Squeezing Django performance for 14.9 million users on WhatsApp
by Rudi Giesler
https://pretalx.com/djangocon-europe-2023/talk/PYFUGF/
At the start of the pandemic, there was a large need for accurate information to combat misinformation. This is how we…
by Rudi Giesler
https://pretalx.com/djangocon-europe-2023/talk/PYFUGF/
At the start of the pandemic, there was a large need for accurate information to combat misinformation. This is how we…
ML Research Engineer
GOAT.Al
4.000 to 5.000 USD NET per month
Almaty Office
GOAT.Al is a research lab on Human <> AI engagement.
The team behind the popular app GoatChat.Al.
We are working on solving the problems of large language models, including hallucination, mode collapse, and context length limitations.
Responsibilities:
• Conduct cutting-edge research on large language models
• Write and publish academic papers describing new research
Requirements:
• Broad knowledge of academic research in the field of deep learning, with a focus on the latest trends and papers
• Experience with PyTorch and related frameworks like DeepSpeed and HuggingFace
• Knowledge of state-of-the-art training techniques, including mixed-precision training
• Proficiency in MLOps and experience with distributed training
Optional skills: Experience with natural language processing (NLP) or reinforcement learning (RL) is preferred, but not required.
Contacts:
📧 yerzat.d@goat.ai
@rempact
GOAT.Al
4.000 to 5.000 USD NET per month
Almaty Office
GOAT.Al is a research lab on Human <> AI engagement.
The team behind the popular app GoatChat.Al.
We are working on solving the problems of large language models, including hallucination, mode collapse, and context length limitations.
Responsibilities:
• Conduct cutting-edge research on large language models
• Write and publish academic papers describing new research
Requirements:
• Broad knowledge of academic research in the field of deep learning, with a focus on the latest trends and papers
• Experience with PyTorch and related frameworks like DeepSpeed and HuggingFace
• Knowledge of state-of-the-art training techniques, including mixed-precision training
• Proficiency in MLOps and experience with distributed training
Optional skills: Experience with natural language processing (NLP) or reinforcement learning (RL) is preferred, but not required.
Contacts:
📧 yerzat.d@goat.ai
@rempact
Спустя полтора года "молчания" в блоге, я таки написал небольшую заметку про тестирование RQ в Django с использованием fakeredis: Django, RQ и FakeRedis
Khashtamov
Django, RQ и FakeRedis
Я часто в своих проектах использую связку Django + RQ вместо Celery. RQ удобный и максимально простой инструмент среди популярных Task Queue решений в экосистеме Python. Пару месяцев назад возникла н…
Отличный гайд о работе процессора простым языком: https://cpu.land/
Putting the "You" in CPU
Curious exactly what happens when you run a program on your computer? Learn how multiprocessing works, what system calls really are, how computers manage memory with hardware interrupts, and how Linux loads executables.
Отличная новость. JetBrains выпустила отдельную IDE под язык Rust: https://blog.jetbrains.com/rust/2023/09/13/introducing-rustrover-a-standalone-rust-ide-by-jetbrains/
The JetBrains Blog
Introducing RustRover – A Standalone Rust IDE by JetBrains | The RustRover Blog
“When will there be a Rust IDE?” We get this question from our users quite frequently, and today we’re happy to announce that the day has arrived. Please welcome RustRover, our standalone IDE for R
Налетай, разбирай. В Ютубе появились доклады с прошедшей конференции EuroPython 2023: https://www.youtube.com/playlist?list=PL8uoeex94UhFcwvAfWHybD7SfNgIUBRo-
23 октября вышла первая бета Django 5.0: https://www.djangoproject.com/weblog/2023/oct/23/django-50-beta-1-released/
Django 5.0 будет поддерживать Python 3.10 и выше. Версия 4.2 это последняя ветка, которая поддерживала 3.8 и 3.9. Если планируете обновиться, то имейте это в виду. Чуть позже в блоге будет разбор новых фич. Финальный релиз запланирован на начало декабря 2023 года.
Django 5.0 будет поддерживать Python 3.10 и выше. Версия 4.2 это последняя ветка, которая поддерживала 3.8 и 3.9. Если планируете обновиться, то имейте это в виду. Чуть позже в блоге будет разбор новых фич. Финальный релиз запланирован на начало декабря 2023 года.
Django Project
Django 5.0 beta 1 released
Posted by Natalia Bidart on October 23, 2023
django-trix-editor
Написал интеграцию WYSIWYG-редактора Trix от 37signals для Django: django-trix-editor
Удобный и минималистичный редактор для вашего веб-приложения =) Накидайте звёздочек в репу, пожалуйста ⭐️⭐️⭐️⭐️⭐️
Написал интеграцию WYSIWYG-редактора Trix от 37signals для Django: django-trix-editor
Удобный и минималистичный редактор для вашего веб-приложения =) Накидайте звёздочек в репу, пожалуйста ⭐️⭐️⭐️⭐️⭐️
trix-editor.org
Trix: A rich text editor for everyday writing
Compose beautifully formatted text in your web application. Trix is an editor for writing messages, comments, articles, and lists—the simple documents most web apps are made of. It features a sophisticated document model, support for embedded attachments…
Github Copilot теперь и через командную строку: https://github.blog/changelog/2023-11-08-github-copilot-in-the-cli-now-in-public-beta/
От себя скажу, что пользуюсь Copilot практически с момента его появления, очень выручает в написании тестов =)
От себя скажу, что пользуюсь Copilot практически с момента его появления, очень выручает в написании тестов =)
The GitHub Blog
GitHub Copilot in the CLI now in public beta
Learn your way around the command line with GitHub Copilot by your side! We’re excited to announce the launch of a brand new GitHub CLI extension that’s now available as public beta — GitHub Copilot in the CLI. GitHub Copilot in the CLI brings GitHub Copilot…
Вводный гайд по работе с GitHub Copilot от Microsoft: https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming
GitHub
GitHub - microsoft/Mastering-GitHub-Copilot-for-Paired-Programming: A 7 Lesson course teaching everything you need to know about…
A 7 Lesson course teaching everything you need to know about harnessing GitHub Copilot and an AI Paired Programing resource. - microsoft/Mastering-GitHub-Copilot-for-Paired-Programming
Forwarded from DataEng
Всем привет!
Я сделал курс по Luigi бесплатным для всех, велком изучать — Введение в Data Engineering: дата-пайплайны
Luigi это компактный инструмент для построения зависимых между собой задач на базе нескольких сущностей: Task, Target. Он идеально подойдёт там, где Airflow кажется избыточным инструментом. В далёком 2017 году я писал небольшой обзорный пост на Luigi у себя в блоге: Строим Data Pipeline на Python и Luigi. С тех пор мало что изменилось в концепции инструмента, он по прежнему компактный и простой, именно в этом вся его прелесть.
Я сделал курс по Luigi бесплатным для всех, велком изучать — Введение в Data Engineering: дата-пайплайны
Luigi это компактный инструмент для построения зависимых между собой задач на базе нескольких сущностей: Task, Target. Он идеально подойдёт там, где Airflow кажется избыточным инструментом. В далёком 2017 году я писал небольшой обзорный пост на Luigi у себя в блоге: Строим Data Pipeline на Python и Luigi. С тех пор мало что изменилось в концепции инструмента, он по прежнему компактный и простой, именно в этом вся его прелесть.
Startdatajourney
Введение в Data Engineering: дата-пайплайны
Построение масштабируемых дата-пайплайнов на Python и Luigi
Forwarded from DataEng
Курс про Apache Airflow бесплатно
Решил выложить свой курс про Apache Airflow абсолютно бесплатно для всех: Apache Airflow 2.2: практический курс
За то время что существует курс, Apache Airflow успел обрасти множеством новых фич, которые только предстоит покрыть в будущем, возможно в виде отдельных роликов на Ютуб или в виде статей у себя в блоге.
В любом случае курс не потерял своей актуальности и может послужить неплохим введением для новичков и более опытных пользователей. Например, в курсе я подробно разбираю как развернуть у себя на сервере production-ready Airflow, а также настроить автодеплой дагов через GitHub Actions.
Велком!
Решил выложить свой курс про Apache Airflow абсолютно бесплатно для всех: Apache Airflow 2.2: практический курс
За то время что существует курс, Apache Airflow успел обрасти множеством новых фич, которые только предстоит покрыть в будущем, возможно в виде отдельных роликов на Ютуб или в виде статей у себя в блоге.
В любом случае курс не потерял своей актуальности и может послужить неплохим введением для новичков и более опытных пользователей. Например, в курсе я подробно разбираю как развернуть у себя на сервере production-ready Airflow, а также настроить автодеплой дагов через GitHub Actions.
Велком!
Startdatajourney
Apache Airflow 2.2: практический курс
Практический курс по основам Apache Airflow версии 2.2 и выше