Можно ли в Python создавать бинарные файлы? Конечно можно.
Для этого в Python есть следующие инструменты:
▫️ тип данных bytes и bytearray
▫️ открытие файла в режиме wb (write binary) или rb (read binary)
▫️ модуль struct
Про модуль struct поговорим в первую очередь.
Файл в формате JSON или Yaml внутри себя содержит разметку данных. Всегда можно определить где список начался а где закончился. Где записана строка а где словарь. То есть формат записи данных содержит в себе элементы разметки данных.
В binary-файле данные не имеют визуальной разметки. Это просто байты, записанные один за другим. Правила записи и чтения находятся вне файла.
Модуль struct как раз и помогает с организацией данных в таком файле с помощью определения форматов записи для разных частей файла.
Модуль struct преобразует Python-объекты в массив байт, готовый к записи в файл и имеющий определённый вид.
Для этого всегда следует указывать формат преобразования (или, как оно здесь называется - запаковки).
Формат нужен для того, чтобы выделить достаточное количество байт для записи конкретного типа объекта. В последствии с помощью того же формата будет производиться чтение.
При этом следует помнить что мы говорим о типах языка С а не Python.
Именно формат определяет, что записано в конкретном месте файла, число, строка или что-то еще.
Вот какие токены формата у нас есть.
Помимо этого, первым символом можно указать порядок байтов. На разных системах одни и те же типы данных могут записываться по-разному, поэтому желательно указать конкретный способ из доступных. Если этого не сделать, то используется символ '@', то есть нативный для текущей системы.
В строке формата мы пишем в каком порядке и какие типы собираемся преобразовать в байты.
Запакуем в байты простое число, токен "i".
>>> import struct
>>> struct.pack('=i', 10)
b'\n\x00\x00\x00'
Теперь несколько float, при этом нужно передавать элементы не массивом а последовательностью аргументов.
>>> struct.pack('=fff', 1.0, 2.5, 4.1)
b'\x00\x00\x80?\x00\x00 @33\x83@'
Вместо нескольких токенов можно просто указать нужное количество элементов перед одним токеном, результат будет тот же.
>>> struct.pack('=3f', 1.0, 2.5, 4.1)
b'\x00\x00\x80?\x00\x00 @33\x83@'
Теперь запакуем разные типы
>>> data = struct.pack('=fiQ', 1.0, 4, 100500)
я запаковал типы float, int и unsigned long long (очень большой int, на 8 байт)
b'\x00\x00\x80?\x04\x00\x00...'
Распаковка происходит аналогично, но нужно указать тот же формат, который использовался при запаковке. Результат возвращается всегда в виде кортежа.
>>> struct.unpack('=fiQ', data)
(1.0, 4, 100500)
Как видите, ничего страшного!
#lib#basic
Соскучились по паттернам? У нас тут как раз есть новые выпуски 💻
В этот раз обсуждаем поведенческие паттерны:
1️⃣Strategy (Стратегия) и State (Состояние). Один из них инкапсулирует алгоритмы или поведение в специальные классы, второй — проверки состояния объекта для изменения его поведения;
2️⃣Command и Mediator. Идея Команды в том, чтобы отделить объект, инициирующий операцию, от объекта, который «знает», как её выполнить. Посредник же отвечает за координацию взаимодействий между группой объектов;
3️⃣Observer (Наблюдатель) и Chain Of Responsibility (Цепочка обязанностей) — паттерны, один из которых оповещает при изменении состояния системы, второй — отделяет инициатора от получателя передачей операции;
4️⃣Memento и Template Method. Хранитель фиксирует внутреннее состояние объекта, а Шаблонный метод — описывает алгоритм действий, реализуемый через наследование и абстрактные методы.
Посмотреть все четыре выпуска можно в удобном формате на сайте.
#backend
Продолжаем разбираться в паттернах! На очереди — порождающие🚀
В новом выпуске рассмотрим первые два Builder (Строитель) и Factory Method (Фабричный метод) — паттерны, задача которых скрывать детали создания объектов в абстракциях.
🔍 В выпуске рассказали про подводные камни использования, их назначение, плюсы и минусы. А ещё объяснили, откуда взялся паттерн фабрика и почему паттерны — не аксиомы:
📺YouTube
🔵 VK Видео
💻Rutube
#backend
Секунду… Это что, новый курс от команды разработчиков? 🚀
Так точно! Наш бэкенд-инженер Юра Афанасьев создал обучающий курс по паттернам и практикам написания кода. В нём он разбирает порождающие, структурные и поведенческие паттерны, историю их создания и методы в основе.
Ещё из плюсов: простая и понятная подача, короткие и насыщенные информацией материалы, курс подходит как начинающим инженерам, так и миддлам.
Кратко о Юре:
⚡️ Больше 15 лет в коммерческой разработке;
⚡️ Больше 6 лет в Авито (сейчас в департаменте монетизации);
⚡️ 12 лет писал на Php и 4 — на Golang;
⚡️ Организатор внутреннего коммьюнити в Авито.
В первой части — про историю создания паттернов. Выбирайте удобный формат и смотрите:
📺YouTube
🔵VK Видео
💻Rutube
#backend
#вакансия#backend#python
Senior/Middle Backend developer
Формат: удаленно по всему миру
Наш часовой пояс: UTC+3
Занятость: full-time/part-time на проект
Оплата: до 350 000₽ или почасовая
(уточняется при собеседовании)
Мы ищем опытного Backend-разработчика на проектную деятельность в команду Subscale AI для реализации собственного AI-сервиса
Стек технологий:
- Язык: Python(Django, Flask)
- Базы данных: PostgreSQL, MySQL, MongoDB, Redis
- API: REST, GraphQL
- Docker, Kubernetes
- AWS, Google Cloud, Azure
Задачи и навыки:
- Разработка и интеграция с API различных сервисов
- Реализация логики тарифных планов и ограничения запросов
- Управление базами данных пользователей и их запросов
- Работа с контейнерами и оркестраторами для развертывания и управления микросервисами
- Понимание принципов масштабируемости и высоконагруженных систем
- Умение работать в команде и решать сложные задачи
Индивидуальные требования:
- Часовой пояс в пределах +-3 часов от UTC+3
- Свободное владение Русским языком
- Владение Английским языком
Мы предлагаем:
- Интересные проекты с возможностью творческой реализации
- Возможность принять участие в выводе продуктов и сервисов бренда на международный рынок
- Карьерный рост до Team Lead
- Отсутствие привязки к месту и возможность оплаты труда в любую точку мира
- Свобода мысли и принятия решений при реализации проектов
Кого мы хотим видеть:
- амбициозных, инициативных и талантливых разработчиков, желающих достигать новых высот, которые легко вольются в нашу молодую команду
Сразу отправляйте резюме/CV: @subscale_ai
«Знаете, что звучит ещё круче, чем AvitoTech?
AvitoTechno!»🔥
Подумали мы, и собрали мега крутую, верховную онлайн-вечеринку уходящего рабочего 2025 для всего ИТ-комьюнити!
В последнюю рабочую пятницу 26 декабря выдыхаем, собираем коллег и врываемся к нам на стрим AvitoTechno!
В лайн-апе:
🕚сеты от разработчиков Dj команды AvitoTech;
🕚крышесносное выступление BÖRIS REDWÄLL;
🕚и девчонок из LAVBLAST.
А ещё во время вечеринки проведём розыгрыш лимитированного AvitoTechno-бокса (внутри свитер, снежный шар с нашим котиком Б/У, шапка и обвес).
Главный вопрос: как попасть на AvitoTechno и поучаствовать в розыгрыше?
Бегом в бот за бесплатным билетом и ссылками на стрим!
И коллегам не забудьте отправить этот пост.
🚀 Затусим вместе на AvitoTechno!
#tl#backend
Открыта регистрация на .NET School!
Курс по бэкенд-разработке даст все необходимые знания и навыки для позиции Junior.
✅Нет входного тестирования | 👨💻Онлайн | ☺️ Бесплатно
❓Хотите получить первый кейс для портфолио? 💥На курсе вы пройдете полный цикл разработки WebAPI от проектирования БД до CI/CD и напишете работающее веб-приложение на C#.
Преимущества:
👉🏻полностью бесплатное обучение;
👉🏻преподаватели курса — опытные веб-разработчики;
👉🏻самых талантливых пригласим на собеседование.
Что нужно, чтобы успешно пройти курс:
📌базовые знания С#;
📌базовые навыки программирования в Visual Studio;
📌интерес к разработке веб-приложений;
Формат:
💻 онлайн: лекции + практические занятия + курсовой проект.
💬Подробности и регистрацияпо ссылке.
#DSRCorporation#DoingSoftwareRight#DSR_courses#backend
#backend#laravel
11-Dars | Saytni Ko'p Tilli Qilish
Ushbu darsda Saytdagi Statik va dinamik ma’lumotlarni ko’p tilli qilishni o'rganishingiz mumkin
🖤Darsni ko'rish uchun: link
💻@dasturlash_hayoti— dasturchilar va dasturlash hayotini yoritib boradigan loyiha!
#удаленка#backend#python
Привет. Я владелец продукта в компании Гринатом (компания входит в Росатом) и мне в отдел очень нужны Backend-middle/senior'ы. В данный момент мы разрабатываем собственное OCR-решение, направленное на автоматизацию документопотока как внутри всего Росатома, так и для внешних клиентов. Решение разрабатывается под серьезную нагрузку (до 40 тысяч документов в час) и под разные цели, начиная от распознавания паспортов и заканчивая сложными, неструктурированными документами. В центре продукта лежит собственная сетка по распознаванию, которая уже делает на 70% меньше ошибок, чем Tesseract V5.
🧠 Обязанности:
• Разработка системы OCR с использованием open source решений (backend);
• Написание высоконагруженных приложений и микросервисов на Python;
• Участие в разработке уже имеющихся приложений в составе команды Data Science;
• Взаимодействие с аналитиками, DataScience-специалистами;
• Участие в принятии архитектурных решений по проекту;
• Поддержка и развитие созданных решений;
• Написание unit-тестов на pytest.
🧠 Требования:
• Опыт разработки серверных приложений – от 2-х лет;
• Уверенное знание Python 3+, SQL;
• Знание фреймворков FastAPI/Flask;
• Знание базовых алгоритмов и структур данных;
• Опыт разработки нагруженных отказоустойчивых систем;
• Умение работать с серверной инфраструктурой: Nginx, Docker и т.п.
• Опыт работы с базами данных: PostgreSQL, MongoDB, Redis;
• Опыт работы с RabbitMQ;
• Опыт работы с объектным хранилищем: s3, Minio;
• Опыт работы с GIT, знание CI/CD;
• Опыт работы с Linux.
🧠 Будет большим плюсом:
• Опыт работы с OCR системами;
• Опыт интеграционных и системных тестов;
• Опыт работы с высоконагруженными системами
🧠 Будет плюсом:
• Понимание микросервисной архитектуры;
• Знание методологии Scrum;
• Опыт работы с Open Project;
• Опыт тестирования клиент-серверных запросов;
• Опыт наставничества и codereview.
✍️Да, мы «госуха», но у нас нет проблем ни с выездом заграницу, ни с оплатой труда. Работаем полностью удаленно, поэтому в офис можешь не ходить или работать хоть из тайги. Есть классный ДМС и разные отсрочки.
✍️В отделе уже более 50 человек: бэки, фронты, ds, аналитики, разметчики, дизайнеры и много кто еще. С большими проектами работаем по скраму. С малыми в более упрощенном режиме.
💵Оклад: 150-350 на руки + до 1 млн. рублей годовой бонус
Писать: @MoveSlowAttackFaster или [email protected]