Можно ли в 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
#freelance
Всем привет!
Ищу специалиста для реализации проекта
Задача:
Имеется DWH на PosgreSQL.
Необходимо построить OLAP кубы. В сумме около 20 измерений.
ТЗ в виде готовых excel, которые напрямую вытягивают данные из БД.
Требование:
Опыт разработки OLAP с нуля;
Знание SSAS MD, MDX, DAX;
По оплате готов услышать ваши предложения.
Подробности в лс -@zxcv9009
Много новых людей пришло, расскажу ещё историю из бытия фрилансером.
Делали мы как-то с другом проект для одной большой конторы (в своей области самой крупной в городе, миллиардные обороты). И вот там на старте нужно было подписаться в техзадании. А техзадание это такая увесистая папка страниц на сто. И подписаться мне, как руководителю проекта, нужно было на каждой странице.
Когда проект запустился, ядро мы собрали быстро. Полный план был что-то типа полгода, но в конечном итоге заняло полтора, потому что после сборки ядра мы практически непрерывно занимались правками и замечаниями. Каждый месяц мы приезжали к заказчику и показывали, что сделали. А нам составляли список из 10-20 новых пунктов. За доработки доплачивали, но в какой то момент стало понятно, что мы в некотором смысле работаем на аутсорсе, хотя подписывались на один конкретный проект. А оставались мы работать, потому что проект не был введён в эксплуатацию, и бросать его без запуска не хотелось.
Заказчик в итоге не переставал заваливать правками, шли месяцы. Впоследствии директор компании сменился, новому проект был без надобности, он заплатил нам остаток, который должен был, и проект остался навечно похоронен.
Как так вышло: огромное и очень подробное техзадание, но всё равно непрерывные правки и замечания? Я позже рефлексировал этот момент и пришёл к таким выводам:
1. Заказчик описал в техзадании конечную систему, которую хотел бы видеть. Нам была нарисована практически каждая кнопка будущей софтины: очень детально и подробно. При этом результат, который требовался заказчику, был описан только в общих чертах (ещё и менялся по ходу дела). ТРИЗ учит нас обращать внимание на результат, а не на способ его достижения.
2. Заказчик не был готов ничего менять со своей стороны. Представьте, я прихожу в спортзал к тренеру и говорю, что вот вам деньги, а я хочу мускулистое тело. Мне тренер предлагает программу занятий. Но я заявляю, что нет, мне некогда, у меня нет времени и возможности ходить. Вообще для меня слишком дорого будет перестроить процессы в своей жизни. Так что нет, никаких походов на занятия. Я же плачу деньги, в конце-концов. Давайте, заплачу ещё больше, если требуется. Дам тренеру больше времени. Так же и тут: в компании были не готовы перестраивать процессы, обновлять софт и железо, обучать персонал. Поэтому новую систему пытались интегрировать со старой, а в интерфейсе использовать не лучшие решения, а привычные.
#dev#freelance
#freelance#ML#вакансия
ML инженер
О проекте
RedCat․ai — технологическая B2B-платформа для подбора недвижимости. Мы создаём ИИ-ассистента для риэлторов, который помогает автоматизировать процессы поиска и консультирования клиентов. Наш подход основан на мультиагентной архитектуре и современных методах работы с LLM.
Что предстоит делать
• Разрабатывать новых агентов в мультиагентной системе ассистента
• Проектировать и улучшать пайплайны на базе LLM
• Работать с RAG: улучшение поиска, оптимизация ответов
• Подключать источники данных и строить интеграции в систему агентов
• Вносить улучшения и правки в существующие модули ассистента
Мы ожидаем от вас
• Опыт коммерческих проектов с ML/LLM, желательно завершённых и внедрённых
• Глубокое понимание RAG-архитектур (FAISS/ElasticSearch + LLM)
• Навыки разработки и оркестрации мультиагентных систем или аналогичных пайплайнов
• Уверенное владение Python и современными ML-фреймворками (LangChain, HuggingFace, PyTorch или аналоги)
• Понимание принципов построения AI-сервисов для реальных пользователей
Формат работы
• Фриланс, частичная занятость
• Работа напрямую с продуктовой командой RedCat․ai
Будет плюсом
• Опыт в диалоговых системах, виртуальных ассистентах, чат-ботах
• Знание тонкостей работы с большим количеством внешних источников (API, базы знаний)
Что предлагаем
• Работа над реальным продуктом в сфере PropTech и AI
• Гибкий формат: фриланс, задачи по мере готовности команды
Откликнуться @julb57
#freelance#frontend
⚙️HTML va ⚙️ CSS’ni yaxshi bilsangiz ham daromad topishingiz mumkin!
👉 Oddiygina shablonlar tayyorlab, ularni maxsus marketplace’larda sotishingiz mumkin. Bunday platformalarda sizning ishlanmangiz dizaynerlar va dasturchilar tomonidan xarid qilinadi.
Eng mashhur bozorlar:
◾️ThemeForest – eng yirik va tajribali sotuvchilar uchun maydon
◾️TemplateMonster – yangi boshlovchilar uchun qulay variant
◾️Creative Market – minimalistik va estetik dizaynlar uchun mos joy
💡 Agar shabloningiz sotilmasa ham, siz o‘zingizga eng katta boylikni topasiz — amaliy tajriba va ko‘nikma.
❓Siz hozirgacha tayyorlagan ishlanmangizni sotishga uringanmisiz?
💻@dasturlash_hayoti— Dasturchilar hayotidan foydali maslahatlar
How BLC Market will grow
We do not use traditional advertising as the main channel.
Growth will be built through users.
Each participant will be able to:
— invite others
— build their own network
— participate in the development of the community
Details coming soon.
#freelance#community
FAQ | BUY
The early core of BLC Market users is now being formed.
These people will:
— be the first to see the working version
— gain access to testing
— be able to influence the product's development
Later, an open growth model through invitations will be implemented.
For now, only those who are already inside can get access.
#freelance#community
FAQ | BUY