Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Реалистичный симулятор игры бильярд. Играйте в Бильярд 3D: Русский бильярд, как в настоящей бильярдной!

Бильярд 3D: Русский бильярд

Симуляторы, Спорт, Настольные

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Rust

С этим тегом используют

Игры Steam Компьютерные игры Юмор YouTube Выживание VLDL на русском Все
670 постов сначала свежее
Ghost687
Ghost687
10 месяцев назад
Юмор для всех и каждого

Когда не вкачал красноречие⁠⁠

Юмор Rust Видео
0
2
Proglib
Proglib
11 месяцев назад
Серия Итоги недели в мире бэкенда, обзоры новых сервисов

Итоги недели в мире бэкенда и обзоры новых сервисов: 18 основных паттернов микросервисной архитектуры⁠⁠

Итоги недели в мире бэкенда и обзоры новых сервисов: 18 основных паттернов микросервисной архитектуры Программирование, IT, Микросервисы, Python, Golang, Rust, Длиннопост, Разработка

📲 Что такое Backends for Frontends и когда стоит его использовать

Backends for Frontends – это паттерн, который предполагает разработку отдельных бэкенд-сервисов, оптимизированных под фронтенд конкретных приложений (веб, мобильные, IoT и т. д.). Каждый BFF создает API, идеально подходящий для своего клиента. BFF можно рассматривать как развитие концепции API Gateway, однако между ними есть несколько ключевых отличий:

  • API Gateway обычно предоставляет единую точку входа для всех клиентов, а BFF создает отдельные шлюзы для каждого типа клиента (веб, мобильный и т. д.).

  • BFF более специализирован и ориентирован на конкретные нужды разных типов фронтендов, а API Gateway более универсален и может обслуживать разные клиенты без специфической оптимизации.

  • BFF больше фокусируется на оптимизации взаимодействия между конкретным фронтендом и бэкендом, в то время как API Gateway часто используется для общих задач (маршрутизация, аутентификация, балансировка нагрузки).

Как работает BFF:

  • API Gateway перенаправляет запросы на соответствующий BFF.

  • BFF взаимодействует с нужными микросервисами (например, Products, Orders, Cart).

  • BFF обрабатывает и оптимизирует данные для конкретного клиента.

Итоги недели в мире бэкенда и обзоры новых сервисов: 18 основных паттернов микросервисной архитектуры Программирование, IT, Микросервисы, Python, Golang, Rust, Длиннопост, Разработка

Универсальный API vs BFF для каждого типа клиента

Паттерн появился в 2015 году, приобрел широкую известность к 2021-му и с тех пор остается одним из самых популярных подходов в разработке микросервисов. На это есть веские причины:

  • Оптимизация производительности – BFF позволяет настроить потоки данных и форматы ответов для каждого фронтенда, повышая скорость работы приложений.

  • Улучшенная безопасность – изоляция фронтендов дает возможность реализовать меры безопасности, учитывающие специфику каждого клиента.

  • Гибкость разработки – фронтендеры и бэкендеры могут работать более независимо, в отдельных командах, ускоряя процесс создания и обновления продукта.

  • Упрощение фронтенд-разработки – BFF предоставляет именно те данные, которые нужны конкретному интерфейсу, избавляя от лишней обработки на клиенте.

  • Упрощение поддержки и модификации API для каждого отдельного фронтенда.

Когда стоит использовать BFF:

  • Когда у сервиса несколько типов клиентов с разными потребностями в данных.

  • Если необходима серьезная оптимизация производительности для конкретных интерфейсов.

Например, BFF будет оптимальным выбором для:

  • E-commerce платформ – отдельные BFF для веб-сайта, мобильных приложений и умных устройств будут обрабатывать специфические потоки данных и действия пользователей.

  • Финансовых сервисов – специализированные BFF для веб- и мобильного банкинга обеспечат более удобное и безопасное использование сервиса.

  • CMS – паттерн упростит адаптивную доставку контента для разных устройств.

✍️ Как написать HTTP-сервер на Go

Платформа CodeCrafters предлагает практичный подход к обучению – разработчики там учатся и совершенствуют навыки в процессе создания реальных, готовых к использованию приложений. Например, одно из заданий – разработка HTTP-сервера. Студент успешно выполнил задание на Go без использования сторонних библиотек и рассказал о процессе работы в этом пошаговом туториале.

Основные характеристики и функциональность сервера:

  • Базовый TCP-сервер, слушающий порт 4221.

  • Обрабатывает HTTP-запросы и отправляет соответствующие ответы.

  • Поддерживает разные маршруты и HTTP-методы.

  • Обрабатывает параметры URL и заголовки запросов.

  • Поддерживает отправку файлов в ответ на запросы.

  • Предусматривает конкурентную обработку нескольких соединений.

Итоги недели в мире бэкенда и обзоры новых сервисов: 18 основных паттернов микросервисной архитектуры Программирование, IT, Микросервисы, Python, Golang, Rust, Длиннопост, Разработка

Для каждого нового соединения запускается отдельная горутина

Этот проект отлично подходит для начинающих разработчиков – помогает понять, как работают веб-серверы под капотом, без абстракций, предоставляемых высокоуровневыми фреймворками. Процесс создания аналогичного сервера на Python подробно рассмотрен здесь.

💻 Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека программиста»

☢️ Почему не стоит использовать as в Rust

Оператор as используется для приведения типов: позволяет преобразовывать значения одного типа в другой. Но, как пишет опытный Rust-разработчик, использование as может привести к неожиданному поведению при преобразовании в меньший тип данных: если значение не помещается в целевой тип, происходит усечение без предупреждения – это приводит к появлению трудноотслеживаемых ошибок в больших проектах. Например, у нас есть число 288, которое мы хотим преобразовать в тип u8 (8-битное беззнаковое целое число). Тип u8 может хранить значения от 0 до 255. Очевидно, 288 не помещается в этот диапазон. При использовании as для преобразования вместо ожидаемой ошибки или предупреждения Rust выполняет усечение значения. В этом случае результат будет равен 32:

  • 288 в двоичном виде: 100100000.

  • При преобразовании в u8 Rust берет только 8 младших битов (справа налево): 00100000.

  • 00100000 в десятичной системе равно 32.

Это поведение станет полной неожиданностью для программистов, переключившихся на Rust с языков высокого уровня, где подобные преобразования всегда вызывают ошибки или предупреждения. Лучшее решение этой проблемы – использовать трейт TryFrom вместо as. Этот подход требует чуть больше кода, но это один из тех немногих случаев, когда отказ от стандартного приема действительно оправдан:

Итоги недели в мире бэкенда и обзоры новых сервисов: 18 основных паттернов микросервисной архитектуры Программирование, IT, Микросервисы, Python, Golang, Rust, Длиннопост, Разработка
Итоги недели в мире бэкенда и обзоры новых сервисов: 18 основных паттернов микросервисной архитектуры Программирование, IT, Микросервисы, Python, Golang, Rust, Длиннопост, Разработка

TryFrom явно обрабатывает случаи, когда значение не помещается в целевой тип данных

🐍 Как создать инвертированный индекс на Python

Инвертированный индекс – это структура данных, которая позволяет быстро находить документы, содержащие определенное слово или фразу. Главные преимущества инвертированного индекса:

  • Высокая скорость – поиск по индексу значительно быстрее, чем полный просмотр всех документов.

  • Эффективность для больших объемов данных – индекс позволяет эффективно обрабатывать большие коллекции документов.

Вместо того, чтобы просматривать каждый документ целиком, индекс хранит информацию о том, в каких документах встречается каждое слово. Для этого он использует хэш-таблицу (словарь в случае Python), где ключами являются слова, а значениями – списки идентификаторов документов, содержащих эти слова. Общий принцип построения индекса выглядит так:

Подготовка данных

  • Определяется структура документов (например, название и текст статьи).

  • Создается список документов.

Для каждого документа:

  • Преобразуется текст – переводится в нижний регистр, удаляются знаки препинания.

  • Обработанный текст разбивается на слова.

Для каждого слова:

  • Если слово еще не в индексе, создается запись с пустым списком документов.

  • Добавляется идентификатор текущего документа в список для данного слова.

Алгоритм поиска по индексу включает в себя:

Преобразование запроса

  • Запрос приводится к нижнему регистру и очищается от знаков препинания.

  • Преобразованный запрос разбивается на слова.

Поиск по индексу

Для каждого слова в запросе:

  • Находится список документов для этого слова в индексе.

  • Объединяются списки документов для всех слов запроса.

Получение результатов

  • По идентификаторам из объединенного списка находятся соответствующие документы.

Пример реализации простейшего инвертированного индекса на Python подробно описан здесь.

Итоги недели в мире бэкенда и обзоры новых сервисов: 18 основных паттернов микросервисной архитектуры Программирование, IT, Микросервисы, Python, Golang, Rust, Длиннопост, Разработка

Сравнение скорости выполнения 20 запросов по 15 000 документов

🐍 Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека питониста»

🛠️ 18 основных паттернов микросервисной архитектуры

В этой статье подробно рассказано о паттернах, которые представляют собой набор проверенных решений типичных проблем и задач в микросервисной архитектуре. Их правильное применение может значительно улучшить масштабируемость, надежность и гибкость системы.

1. Service Registry (Реестр сервисов)

Этот паттерн решает проблему обнаружения сервисов в распределенной системе. Каждый микросервис регистрирует себя в центральном реестре (например, Netflix Eureka или Consul). Когда одному сервису нужно взаимодействовать с другим, он обращается к реестру, чтобы узнать текущий адрес нужного сервиса. Это позволяет сервисам динамически обнаруживать друг друга без жесткой привязки к конкретным адресам.

2. API Gateway (API-шлюз)

API Gateway действует как единая точка входа для всех клиентских запросов. Он принимает запросы от клиентов и перенаправляет их соответствующим микросервисам. API Gateway может также выполнять такие задачи, как аутентификация, авторизация и балансировка нагрузки. Это упрощает взаимодействие клиентов с системой, скрывая сложность внутренней архитектуры.

3. Circuit Breaker (Предохранитель)

Этот паттерн предотвращает каскадные сбои в системе. Когда один сервис начинает давать сбои, Circuit Breaker временно блокирует запросы к этому сервису, предотвращая перегрузку и позволяя системе восстановиться. Это повышает устойчивость системы и помогает избежать полного отказа всей системы из-за проблем с одним сервисом.

4. Bulkhead (Отсек)

Паттерн Bulkhead изолирует компоненты системы друг от друга, чтобы сбой в одной части не повлиял на другие. Например, для разных сервисов могут использоваться отдельные пулы потоков или базы данных. Это повышает устойчивость системы и ограничивает распространение сбоев.

5. Saga Pattern (Сага)

Saga используется для управления распределенными транзакциями в микросервисной архитектуре. Длительная бизнес-операция разбивается на серию меньших, локальных транзакций. Каждый сервис выполняет свою часть транзакции и публикует событие, которое запускает следующий шаг. Если что-то идет не так, выполняются компенсирующие действия для отмены изменений.

Итоги недели в мире бэкенда и обзоры новых сервисов: 18 основных паттернов микросервисной архитектуры Программирование, IT, Микросервисы, Python, Golang, Rust, Длиннопост, Разработка

Принцип работы паттерна Сага

6. Event Sourcing (Источник событий)

Вместо хранения только текущего состояния этот паттерн сохраняет все события, которые привели к этому состоянию. Это обеспечивает надежный аудиторский след и позволяет восстановить состояние системы на любой момент времени. Особенно полезен в системах, где важна история изменений и возможность отката.

7. Command Query Responsibility Segregation (CQRS, Разделение команд и запросов)

CQRS разделяет операции чтения и записи в приложении. Используются разные модели для обновления информации (команды) и чтения информации (запросы). Это позволяет оптимизировать каждую сторону независимо, что может значительно улучшить производительность и масштабируемость.

8. Data Sharding (Шардинг данных)

Этот паттерн используется для распределения нагрузки на базу данных. Данные разделяются на несколько баз данных или экземпляров базы данных. Каждый микросервис может обрабатывать подмножество данных или определенные типы запросов. Это помогает избежать узких мест в работе с данными и улучшает масштабируемость.

9. Polyglot Persistence (Многовариантное хранение)

Этот подход позволяет использовать разные технологии баз данных для разных микросервисов, исходя из их конкретных потребностей. Например, один сервис может использовать реляционную БД, другой – NoSQL, третий – графовую БД. Это оптимизирует хранение, извлечение и обработку данных для каждого сервиса.

Итоги недели в мире бэкенда и обзоры новых сервисов: 18 основных паттернов микросервисной архитектуры Программирование, IT, Микросервисы, Python, Golang, Rust, Длиннопост, Разработка

Реализация многовариантного хранения в Azure

10. Retry (Повторная попытка)

Обеспечивает повторение операции при возникновении временного сбоя – вместо немедленного отказа. Может применяться на разных уровнях: от взаимодействия между сервисами до работы с базой данных. Помогает справиться с кратковременными проблемами в сети или сервисах.

11. Sidecar (Вспомогательный сервис)

Этот паттерн предполагает присоединение вспомогательного сервиса (sidecar) к основному микросервису для обеспечения дополнительной функциональности, такой как логирование, безопасность или коммуникация с внешними сервисами. Позволяет основному сервису сосредоточиться на своей основной функции.

12. Backends for Frontends (BFF, Бэкенды для фронтендов)

BFF предполагает создание отдельных бэкенд-сервисов для каждого типа клиента (веб, мобильный и т. д.). Это позволяет оптимизировать API под конкретные нужды каждого клиента, улучшая производительность и упрощая разработку клиентской части.

13. Shadow Deployment (Теневое развертывание)

Этот паттерн предполагает отправку копии (тени) производственного трафика к новой версии микросервиса без влияния на реальный пользовательский опыт. Это позволяет проверить производительность и корректность новой версии в реальных условиях, не подвергая риску текущих пользователей.

14. Consumer-Driven Contracts (Контракты, определяемые потребителем)

В этом подходе потребители сервисов определяют свои ожидания от поставщиков сервисов. Это помогает обеспечить более надежные и согласованные изменения в системе. Каждый сервис-потребитель описывает, какой именно функционал и в каком формате он ожидает от сервиса-поставщика.

15. Smart Endpoints, Dumb Pipes (Умные конечные точки, глупые каналы)

Этот паттерн рекомендует размещать бизнес-логику в самих микросервисах (умные конечные точки), а не полагаться на сложное промежуточное ПО. Инфраструктура коммуникаций (каналы) должна быть простой и заниматься только маршрутизацией сообщений. Это упрощает систему и делает ее более гибкой.

16. Database per Service (База данных для каждого сервиса)

В этом паттерне каждый микросервис имеет свою собственную базу данных, и сервисы общаются через четко определенные API. Это обеспечивает изоляцию данных и независимость сервисов, но требует тщательного подхода к обеспечению согласованности данных между сервисами.

17. Async Messaging (Асинхронный обмен сообщениями)

Вместо синхронного взаимодействия между микросервисами этот паттерн предполагает использование очередей сообщений для асинхронной коммуникации. Это может улучшить отзывчивость системы и ее масштабируемость, так как сервисы не блокируются в ожидании ответа друг от друга.

18. Stateless Services (Сервисы без состояния)

Проектирование микросервисов как stateless (без сохранения состояния) упрощает масштабирование и повышает устойчивость. Каждый сервис обрабатывает запрос независимо, не полагаясь на сохраненное состояние – это облегчает горизонтальное масштабирование.

🤖 Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека Data scientist’а»

Автор рассылки: Наталья Кайда

Показать полностью 7
Программирование IT Микросервисы Python Golang Rust Длиннопост Разработка
1
2
Proglib
Proglib
11 месяцев назад
Серия Итоги недели в мире Python и обзоры новых сервисов

Итоги недели в мире Python и обзоры новых сервисов: история создания Python и лучшие практики разработки⁠⁠

Итоги недели в мире Python и обзоры новых сервисов: история создания Python и лучшие практики разработки Программирование, IT, Инновации, Python, C++, Rust, Видео, Длиннопост, YouTube, YouTube (ссылка), Разработка

🥳 Питону – 33 года!

В 2024 году Python исполняется 33 года. За это время он прошел невероятный путь – от пет-проекта до одного из самых универсальных и популярных языков. Все начинающие питонисты знают, что первую версию языка разработал голландский программист Гвидо ван Россум, а назван он в честь британского комедийного шоу, а не прожорливой змеи. Как развивались основные концепции языка, почему крупные ИТ-компании боялись, что автобус может переехать Гвидо, и когда на логотипе Python все-таки появились змеи – расскажет публикация на Хабре.

🏆 Лучшие практики разработки на Python

Знание и правильное применение лучших практик – один из самых важных навыков профессионального разработчика. Следование общепринятым правилам позволяет:

  • Повысить качество кода. Лучшие практики основаны на многолетнем опыте обширного сообщества разработчиков и направлены на минимизацию ошибок, улучшение читаемости и поддерживаемости кода. Это помогает создавать более надежные и долговечные системы.

  • Ускорить процесс разработки. Применение многократно опробованных шаблонов и подходов помогает быстрее писать типовой код и решать распространенные проблемы.

  • Упростить совместную работу, ревью кода и интеграцию изменений. Особенно в больших командах и опенсорсных проектах.

  • Обеспечить гибкость и масштабируемость проекта. Правильно организованный код легче адаптировать под новые требования и масштабы. Это снижает риск технического долга — ситуации, в которой изменения становятся слишком дорогостоящими или сложными для реализации.

Привет!

Всю неделю мы мониторим интернет, чтобы в воскресенье прислать тебе интересное письмо. Наша цель – держать читателей в курсе последних открытий и тенденций в мире Python. В еженедельных письмах ты найдешь:

  • Новые возможности в последних версиях Python

  • Работа с базами данных и SQL в Python.

  • Веб-разработка на Django и Flask.

  • Машинное обучение и анализ данных с помощью Python.

  • Автоматизация и работа с API на Python.

  • Тестирование и отладка кода на Python.

  • Задачи для новичков с решениями.

📧 Подпишись, чтобы быть в числе первых, кто получит дайджест

Вот что входит в набор общепринятых на данный момент правил:

  • Устанавливайте Python с поддержкой нескольких версий. Используйте mise или pyenv для установки Python – они дают возможность переключаться между разными версиями языка и позволяют обновлять интерпретатор без влияния на другие инструменты и проекты. Еще один отличный вариант – Development Containers.

  • Используйте последнюю версию Python. Для новых проектов выбирайте самую последнюю стабильную версию Python 3. Это обеспечивает наличие последних исправлений безопасности и максимальную производительность. Обязательно обновляйте проекты по мере выхода новых версий языка и забудьте про Python 2.

  • Используйте pipx для запуска приложений в среде разработки. Вместо установки пакетов с помощью pip или другого аналогичного метода используйте pipx для запуска инструментов в отдельной виртуальной среде.

  • Не используйте Poetry для новых проектов – в нем нестандартно реализованы некоторые ключевые функции. Лучше пользоваться PDM или Hatch.

  • Создавайте файл pyproject.toml в корневой директории каждого проекта – для хранения информации о конфигурации и используемых инструментах.

  • Используйте src-структуру для каталогов. Это требует использования редактируемых установок, но PDM и Hatch упрощают задачу.

  • Используйте виртуальные среды для разработки. Виртуальная среда изолирует проекты и наборы установленных для них пакетов – не будет никаких конфликтов.

  • Применяйте файлы requirements.txt для установки пакетов в среду – вместо использования команды pip. Либо используйте PDM или Hatch для управления пакетами.

  • Используйте инструмент для форматирования кода и линтер для проверки на ошибки. Самый популярный форматер Python-кода – Black, а самый известный линтер – flake8. Однако их с успехом можно заменить одним мощным и быстрым инструментом – Ruff.

  • Применяйте pytest для тестирования, а в ситуациях, где это невозможно – используйте стандартный модуль unittest.

  • Используйте PyInstaller для упаковки приложений в исполняемый файл. А свои пакеты публикуйте в виде wheel, чтобы другие разработчики могли загружать их с помощью pipx и pip-sync.

  • Используйте аннотации типов – особенно в важных приложениях и библиотеках. Для проверки вам пригодится mypy, а для интеграции этого инструмента с Pydantic – плагин.

  • Форматируйте строки с помощью f-строк, а не с использованием %, str.format() или str.Template().

  • Всегда используйте объекты datetime, которые знают о временных зонах. По умолчанию Python создает объекты datetime, которые не включают временную зону.

  • Применяйте enum или collections.namedtuple() для неизменяемых наборов пар «ключ-значение».

  • Создавайте классы данных для пользовательских объектов. Среди прочего это позволяет сократить количество кода, необходимого для определения классов, предназначенных для хранения значений. Экземпляры таких классов можно замораживать.

  • Используйте collections.abc для пользовательских типов коллекций. Абстрактные базовые классы в collections.abc реализованы на C и работают очень быстро.

  • Применяйте breakpoint() для отладки. Эта функция создает точки останова, которые могут использовать и встроенный отладчик, и внешние инструменты отладки.

  • Используйте журналирование для диагностических сообщений. Команда print() удобна для вывода отладочной информации, но в скрипты и приложения нужно включать логирование.

  • Применяйте формат TOML для конфигурационных файлов – если они предназначены для людей. Используйте формат JSON для данных, которые передаются между компонентами приложения.

  • Используйте async только там, где это необходимо. Асинхронные возможности Python позволяют одному процессу избегать блокировки на операциях ввода-вывода. Для запуска нескольких процессов нужно использовать контейнеры или сервер Gunicorn. Чтобы создать собственное приложения для управления многочисленными процессами, воспользуйтесь этим стандартным пакетом.

  • Обрабатывайте ввод из командной строки с argparse. Модуль argparse теперь является рекомендуемым способом обработки ввода вместо устаревших optparse и getopt.

  • Для указания путей к файлам и каталогам используйте pathlib, а не строки.

  • Используйте os.scandir() вместо os.listdir(). Функция os.scandir() значительно быстрее и эффективнее, чем os.listdir().

  • Запускайте внешние команды с subprocess. Модуль subprocess предоставляет безопасный способ запуска внешних команд. Используйте его вместо spawn, popen2 и popen3.

  • Используйте httpx для клиентских приложений. Пакет httpx поддерживает HTTP/2 и async и заменяет requests, который работает только с HTTP 1.1.

🐍 Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека питониста»

📒 Google Colab или Jupyter Notebook: что лучше подойдет для новичка

Jupyter Notebook обладает массой очевидных достоинств:

  • Позволяет выполнять код по частям и мгновенно видеть результаты.

  • Поддерживает большинство популярных библиотек.

  • В блокнотах легко визуализировать данные и форматировать текст.

  • Устанавливается локально, работает без подключения к сети.

Облачный сервис Google Colab предоставляет похожую функциональность – код можно писать и выполнять в браузере – и несколько дополнительных преимуществ:

  • Использование GPU/TPU.

  • Удобное меню навигации по файлу.

  • Возможность совместной работы над проектом – настойка доступа и синхронизация работают точно так же, как в документах Google.

Итоги недели в мире Python и обзоры новых сервисов: история создания Python и лучшие практики разработки Программирование, IT, Инновации, Python, C++, Rust, Видео, Длиннопост, YouTube, YouTube (ссылка), Разработка

Подробнее о преимуществах и начале работы в Google Colab – в этой статье на Хабре

🕸️ Веб-разработка

«Как настроить уведомления в Django с помощью сигналов: пошаговое руководство» рассказывает обо всех тонкостях работы с сигналами, которые запускают выполнение нужных действий после совершения определенных манипуляций с моделями. Например, сигнал может:

  • Запустить автоматическое создание профиля пользователя после регистрации.

  • Отправить уведомление о заполнении формы, появлении нового отзыва, получении сообщения.

  • Обновить данные в связанных моделях.

  • Сделать запись об изменении статуса объекта.

«Создание собственного API на Python (FastAPI)» – простой и понятный туториал для начинающих.

Итоги недели в мире Python и обзоры новых сервисов: история создания Python и лучшие практики разработки Программирование, IT, Инновации, Python, C++, Rust, Видео, Длиннопост, YouTube, YouTube (ссылка), Разработка

API предоставляет данные о студентах

🧩🐍 Интересные задачи по Python для практики можно найти на нашем телеграм-канале «Библиотека задач по Python»

«Безопасность в Django: защита от распространенных угроз веб-приложений» – рассказывает о самых распространенных типах атак (SQL-инъекциях, межсайтовой подделке запросов, кросс-сайтовом скриптинге, DoS и DDoS) и очень подробно разбирает способы защиты от них.

Итоги недели в мире Python и обзоры новых сервисов: история создания Python и лучшие практики разработки Программирование, IT, Инновации, Python, C++, Rust, Видео, Длиннопост, YouTube, YouTube (ссылка), Разработка

Настройка nginx для защиты от DDoS

📈 Как улучшить производительность Python

Беспрецедентное развитие ИИ сделало Python суперпопулярным языком – и поставило исключительно сложную задачу перед ведущими инженерами: как увеличить скорость работы Питона, не жертвуя его простотой и гибкостью. Одним из решений проблемы стал перенос критически важных для производительности частей кода на более быстрые языки – C, C++ и Rust. Для упрощения совместного использования Python и Rust разработчик Дэвид Хьюитт создал PyO3. В этом интервью он подробно рассказал о сложностях разработки такого проекта и его впечатляющих возможностях.

Как преодолеть разрыв

Интеграция Python и Rust – нетривиальная задача, поскольку эти два языка имеют принципиально разные подходы к управлению памятью, потоками и обработке ошибок. Однако PyO3 решает эти проблемы, используя мощные возможности Rust и C-образную архитектуру интерпретатора Python.

В основе PyO3 лежит концепция сопоставления функций и структур Rust их аналогам в Python. Используя процедурные макросы, PyO3 генерирует необходимый код для создания совместимых с Python объектов и функций, позволяя разработчикам Python легко взаимодействовать с компонентами на базе Rust. Этот подход позволяет программистам на Python воспользоваться преимуществами производительности и безопасности Rust без необходимости глубоко погружаться в тонкости языка.

Безопасность памяти и время жизни объектов

Одна из ключевых задач при объединении Python и Rust – обеспечение безопасности памяти. Система проверки заимствований и времени жизни объектов в Rust играет в этом отношении важную роль. PyO3 использует аннотации времени жизни Rust для управления владением и временем жизни объектов Python, гарантируя, что ссылки на объекты Python являются действительными, а доступ к памяти не осуществляется после ее освобождения. Это внимание к безопасности памяти является существенным преимуществом использования Rust в контексте оптимизации производительности Python. Обеспечивая эти гарантии во время компиляции, PyO3 помогает разработчикам избежать распространенных ошибок и уязвимостей, связанных с памятью, которые могут возникать при использовании привязок C/C++.

Обработка ошибок и производительность

Это одно из самых мощных преимуществ PyO3. Сопоставляя механизмы обработки ошибок Rust с системой исключений Python, PyO3 обеспечивает бесшовную интеграцию для программистов, работающих с обоими языками. Эта интеграция гарантирует правильную передачу ошибок, позволяя коду Python элегантно обрабатывать исключения, созданные в Rust. Что касается производительности, PyO3 стремится обеспечить производительность, близкую к нативной, за счет использования абстракций Rust. Хотя на границе между Python и Rust могут быть некоторые накладные расходы, прирост производительности, достигаемый внутри кода Rust, часто с лихвой компенсирует их. По мере развития проекта PyO3 команда активно работает над оптимизацией этих пограничных случаев для дальнейшего снижения влияния на производительность.

Потоки и асинхронность

Одна из самых сложных областей интеграции Python и Rust – обработка потоков и асинхронности. Асинхронная модель Rust с async/await и глобальная блокировка интерпретатора (GIL) Python представляют собой уникальные проблемы, которые команда PyO3 активно решает. Разработчики исследуют различные подходы к преодолению разрыва между моделями параллелизма Rust и Python, в том числе использование типов Rust Send и Sync для обеспечения безопасного обмена данными между потоками, а также обеспечение бесшовной совместимости между асинхронными средами выполнения Rust и циклами событий Python.

🐍💼 Подтянуть свои знания по Python вы можете на нашем телеграм-канале «Библиотека собеса по Python»

Автор рассылки: Наталья Кайда

📧 Подписаться на рассылку

Показать полностью 3 1
Программирование IT Инновации Python C++ Rust Видео Длиннопост YouTube YouTube (ссылка) Разработка
2
4
ProjectDobrograd
ProjectDobrograd
1 год назад

Rust⁠⁠

Rust
[моё] Rust Мемы Выживание Картинка с текстом
1
KinoEDoff
KinoEDoff
1 год назад

Выживание добрых Игусей!⁠⁠

Друзья, не едиными Дальнобойщиками живут южные Игуси, сегодня у нас в меня сурвивал Раст) Пойдем кашмарить ботов на нефтевышку 😈
Залетайте в гости 🦔
Стрим 18+ будьте готовы к эмоциям и великому и могучему Русскому Языку во всей его красе 💪😎

[моё] Rust Выживание Стрим Веселье Немое кино Видео YouTube
0
ProjectDobrograd
ProjectDobrograd
1 год назад

Rust⁠⁠

Rust
[моё] Rust Мемы Выживание Картинка с текстом
0
ProjectDobrograd
ProjectDobrograd
1 год назад

Rust⁠⁠

Rust
[моё] Rust Мемы Картинка с текстом
0

Попробовать мобильный офис

Перейти
Партнёрский материал Реклама
specials
specials

Мобильный офис до 100 тысяч рублей⁠⁠

Ноутбуки используют не только для работы: на них смотрят сериалы, редактируют фото, запускают игры и монтируют ролики. Поэтому теперь требования к устройству такие: быть легким для дороги, надежным для горящих дедлайнов и стильным, чтобы не прятать в переговорке. А еще — легко работать в связке с другими гаджетами.

Протестировали TECNO MEGABOOK K15S вместе со смартфоном TECNO CAMON 40 и наушниками TECNO в рабочих и бытовых сценариях от Zoom-звонков до перелета, а теперь рассказываем, как себя показала техника.

Первое впечатление от дизайна ноутбука

Первое, что заметно — это вес. При диагонали 15,6 дюйма и полностью металлическом корпусе K15S весит всего 1,7 кг. Это примерно на 15% меньше, чем аналоги. Устройство не обременяет ни в офисе, ни в такси. Ноутбук поместился в стандартный городской рюкзак, было удобно достать его в кафе за завтраком и по дороге в такси, чтобы быстро отработать клиентские правки.

1/4

Дизайн сдержанный, без ярких акцентов, с матовой поверхностью. Правда, на ней остаются следы от рук. Так что если приходится постоянно открывать ноутбук в присутствии клиентов или партнеров, лучше купить прозрачный кейс. Визуально и тактильно устройство ощущается надежно: не выскальзывает и не двигается по столу, благодаря специальным резиновым накладкам на задней части.

Шарнир работает мягко: чтобы открыть крышку даже одной рукой, не нужно придерживать корпус. Чтобы показать коллеге или клиенту презентацию, достаточно раскрыть экран на 180°. Это удобно и для работы лежа, и для подставок, которые требуют определенного угла обзора.

Также отметим 9 портов: USB-A, USB-C, HDMI, слот для карты памяти — можно забыть о переходниках.

В TECNO MEGABOOK K15S предустановлен Windows 11. Ноутбук готов к работе сразу после включения. Никаких лишних установок и обновлений. Все настроено и оптимизировано для вашей многозадачности.

Экран: яркая картинка и комфорт ночью

Экран — 15,6 дюйма, IPS-матрица с разрешением Full HD. Углы обзора отличные: изображение остается четким, даже если смотреть сбоку, цвета не искажаются. Есть антибликовое покрытие. Тестировали ноутбук при разном освещении: можно спокойно работать у окна. Когда солнце бьет прямо в экран, текст по-прежнему остается читаемым, картинки не искажаются. Это редкость в бюджетных моделях.

1/2

Неважно, работаете вы ночью или играете, выручит клавиатура с регулируемой четырехуровневой подсветкой. При среднем уровне в темноте все видно, глаза не устают. Из плюсов для тревожных людей: включали ноутбук в самолете и электричке, никто вокруг не жаловался на яркость. Все регулируется кнопками, не нужно лишний раз заходить в настройки.

Стеклокерамический крупный тачпад — 15 см. Он не залипает, не промахивается, срабатывает с первого касания. Не возникает дискомфорта, даже если несколько часов редактировать документы без мышки. После перехода с других устройств немного непривычно, что тачпад работает в двух направлениях: нижняя часть отзывается нажатием, верхняя — касанием.

В кнопку питания встроен сканер отпечатка пальцев. К нему можно быстро привыкнуть, особенно если сидишь в опенспейсе или работаешь в дороге. Один легкий тап пускает в систему даже с мокрыми руками. Безопасно, удобно и не нужно постоянно вводить пароли.

Производительность: рендерим видео, открываем вкладки

Ноутбук работает на AMD Ryzen 7 5825U (опционально можно выбрать версию техники Intel Core i5-13420H). Восьмиядерный AMD с поддержкой 16 потоков подходит для ресурсоемких операций вроде рендеринга или работы с большими массивами данных. Встроенная графика Radeon справляется с редактированием видео в Full HD или играми.

1/4

Во время монтажа 30-минутного ролика в DaVinci Resolve и параллельной работе в Photoshop с несколькими большими PSD-файлами система сохраняла стабильность. Не было ни зависаний, ни заметного падения производительности. Ноутбук уверенно держит в фоне 10 приложений одновременно. Если запущены браузер с 20 вкладками, видеозвонок в Telegram, Excel с объемной таблицей и софт для монтажа, система не тормозит и не перегревается. Переход между окнами остается плавным, ничего не «проседает», даже при одновременном скачивании файлов и редактировании видео.

Базовая комплектация включает 16 ГБ оперативной памяти в двух слотах. При необходимости можно легко увеличить этот показатель до 32 ГБ, заменив стандартные модули на более емкие. Помимо установленного SSD на 1 ТБ предусмотрен дополнительный слот, поддерживающий диски объемом до 2 ТБ.

Чтобы во время нагрузки системы охлаждения не выходили из строя, в ноутбук встроен эффективный вентилятор, способный рассеивать до 35 Вт тепла. Устройство не греется, его спокойно можно держать на коленях. Это решение дополнено тремя режимами работы, которые переключаются простой комбинацией клавиш Ctrl+Alt+T. Тихий режим идеален для работы ночью или в общественных местах, сбалансированный подходит для повседневных задач. Производительный, на котором запускали рендеринг видео и игры, практически не шумит.

Автономность: 15 часов без подзарядки

Протестили автономность MEGABOOK K15S в условиях, знакомых каждому деловому путешественнику. Утром перед вылетом зарядили ноутбук до 100% и взяли его в рейс Москва — Калининград. В зале ожидания провели созвон, потом три часа смотрели сериал и в дороге до отеля редактировали документы. К моменту приезда оставалось 40% заряда: хватило бы еще на пару часов продуктивной работы.

1/3

MEGABOOK K15S может автономно работать до 15 часов и позволяет не оглядываться на индикатор заряда. Заявленное время достигается при типичном офисном использовании: одновременная работа с документами в Word и Excel, ведение переписки, видеоконференции, веб-серфинг.

Если все же понадобится, за  час восполняется до 70% батареи. Компактный адаптер мощностью 65 Вт на базе нитрида галлия поместился даже в карман пиджака. Один блок питания заряжает и ноутбук, и смартфон, и наушники. Экономия места: не нужно никаких дополнительных проводов.

Звук, который реально слышно

В TECNO MEGABOOK K15S установлены два мощных динамика по 2.5 Вт. Звук с глубокими низами, без пластикового дребезжания, объемный. Благодаря DTS можно смотреть видео даже в шумном помещении. В тестах специально включали сцены с шагами и выстрелами: локализация настолько точная, что в наушниках нет необходимости.

Та же стабильность и в микрофоне. Благодаря AI-шумоподавлению голос передается чисто. Во время тестовых звонков из оживленного кафе собеседник не услышал ни разговоры за соседним столом, ни городской шум. И все это — на расстоянии до пяти метров.

Кстати, о созвонах. В ноутбуке встроена обновленная камера. Она отслеживает положение лица, а еще есть физическая шторка приватности. Например, можно закрыть шторку для комфортных видеоконференций.

Для тех, кто предпочитает гарнитуру, идеально подойдут беспроводные наушники TECNO FreeHear 1 из экосистемы бренда. Когда не хотелось делиться разговорами с окружающими, подключали их. Чистый звук с акцентом на средние частоты, 11-мм драйверы, которые выдают неожиданную детализацию. Музыку слушать приятно: и фоновый плейлист на телефоне, и вечерний сериал на ноутбуке. Автономно работают наушники 6 часов, с кейсом — до 30 часов. 

1/2

Bluetooth 5.4 обеспечивает стабильное соединение на расстоянии до 10 метров. Удобная C-образная форма разработана специально для длительного ношения — после восьмичасового рабочего дня в ушах не возникает дискомфорта. Наушники поддерживают одновременное подключение к ноутбуку и смартфону. Переключение между устройствами происходит быстро и без заминок.

Через фирменное приложение Welife можно выбрать один из четырех эквалайзеров и отследить местоположение гарнитуры в случае утери. А еще кастомизировать виджет для управления наушниками. Функция настройки персонализированного дизайна доступна для устройств на Android и позволяет гибко изменить внешний вид окна подключения: вплоть до установки фоновой картинки или собственного фото.

Первые пару использований может потребоваться время, чтобы привыкнуть к нестандартной форме вкладышей, но уже с третьего раза они надеваются вслепую за секунду. Что особенно приятно:  собеседники отмечают, что звук от микрофона более приятный и четкий, чем у дорогих известных моделей.

Бесшовная синхронизация со смартфоном

Благодаря функции OneLeap ноутбук синхронизируется со смартфоном TECNO. Подключение происходит за пару секунд: достаточно один раз подтвердить сопряжение. После этого открывается доступ к бесшовному переключению между устройствами — объединенному буферу обмена, дублированию экранов и передаче файлов без кабелей и пересылок в мессенджерах.

Функция выручила, когда нужно было открыть приложение, у которого нет веб-версии. Удобно работает и буфер обмена: скопировал текст на одном устройстве — вставил на другом. Например, код, полученный в сообщении на телефоне, вводится в браузере на ноутбуке. Экономит минуты, а иногда и нервы. А когда в дороге пропал Wi-Fi, ноутбук сам подключился к мобильному интернету через смартфон.

1/2

TECNO CAMON 40 и сам по себе — мощный рабочий инструмент.  Смартфон выделяется камерой высокого качества 50 Мп, ярким AMOLED-экраном 120 Гц и множеством функций, которые упрощают процесс мобильной съёмки и использование искусственного интеллекта TECNO AI.

Телефон работает на HIOS 15.0.1 на базе Android 15.В фирменную оболочку встроен искусственный интеллект:

  • Голосовой помощник Ella. Отвечает на вопросы, помогает с задачами и управлением устройством.

  • Решение задач. Наводите камеру на задачу, ИИ решает ее.

  • AI Редактор фотографий. Интеллектуальная обработка в одно касание.

  • Быстрый поиск. Находит адрес на экране и запускает навигацию, распознает объекты и события, автоматически добавляет их в календарь.

Технические характеристики

  • Процессор и память. 8 ядер, 16 потоков, Кэш L3 16 МБ, частота до 4.5 ГГц Графический процессор AMD Radeon™ graphics SSD 512 ГБ или 1 ТБ, М.2, 2280, PCle 3.0 Nvme DDR4 16 ГБ, 3200 МГц.

  • Дисплей. 15.6", TFT, Full HD (1920×1080), 16:9, 280нит, 45% NTSC, 16.7 млн цветов, 60 Гц, 141 ррі.

  • Веб-камера. 1 Мп, шторка приватности.

  • Порты. 9 портов: 1*TF Card (microSD), 1*HDMI 1.4, 1*USB-A 3.1,

    1*USB-A 3.2, 1*3.5mm аудиовход, *Ethernet RJ45 до 1 Гбит, 2*Туре-С (Full Function), 1*слот для замка Kensington.

  • Другое. Сканер отпечатка пальца в кнопке питания. Клавиатура с подсветкой (4 уровня яркости). Тачпад с поддержкой одновременно 4 касаний.

  • Батарея. 70 Вт∙ч (6150 мА∙ч), Li-Pol, 11.55 B 65 Вт Type-C GaN, 20 В, 3.25 А, кабель 1.8 м (Туре-С-Type-C).

  • Габариты. 17.3 мм (высота), 359.5 мм (ширина), 236 мм (глубина).

  • Вес. 1,7 кг.


Если хотите создать собственную экосистему, в которой технологии подстроятся под ритм дня, попробуйте технику TECNO. Мощный ноутбук, быстрый смартфон и наушники соединяются в единое пространство. Быстрое переключение между устройствами, синхронизация файлов и стабильное соединение без лишних настроек.

КУПИТЬ НОУТБУК TECNO

Реклама TECNO Mobile Limited, Юридический адрес: Flat N, 16/F., Block B, Универсальный промышленный центр, 19-25 Shan MeiStreet, Fotan, New Territories, Гонконг

Показать полностью 17
Электроника Гаджеты Ноутбук Длиннопост
sh1nkey
sh1nkey
1 год назад

Программистский мем⁠⁠

Программистский мем Картинка с текстом, Мемы, Юмор, Картинки, Программирование, Python, Rust, C++, Ожидание и реальность
Показать полностью 1
Картинка с текстом Мемы Юмор Картинки Программирование Python Rust C++ Ожидание и реальность
1
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии