Можно ли в 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
🚀🚀 Another massive profit made in Premium Group and this time it is#IP/USDT which crossed All the Profit Targets for an humongous gain of 420%
🗨Contact @futurechief to enter the Binance Futures/Bybit/Kucoin/OKX Premium Signal Group & Receive daily high quality signals by being in the Premium Group
Абз. 1 п. 1 ст. 1245 ГК:
Авторам, исполнителям, изготовителям фонограмм и аудиовизуальных произведений принадлежит право на вознаграждение за свободное воспроизведение фонограмм и аудиовизуальных произведений исключительно в личных целях. Такое вознаграждение имеет компенсационный характер и выплачивается правообладателям за счет средств, которые подлежат уплате изготовителями и импортерами оборудования и материальных носителей, используемых для такого воспроизведения.
В современном мире, будто бы, требуется пересмотр подхода к свободному использованию интеллектуальной собственности.
Так, в тг можно через команду @song найти множество песен. Отчисляет ли кому-то тг вознаграждение? Сомневаюсь.
UPD. Короче там другое. Ща разберёмся. Не ставьте дизлайки, мне и так тошно.
UPD 2. Я кажется понял. Воспроизведение в личных целях никак нельзя контролировать. Оно "не приводит к вовлечению оригинала или экземпляров в оборот, поэтому его нельзя признать авторско-правовым использованием произведения" (учебник ИЦЧП, С. 123). Об этом написано в ст. 1273 ГК. Статья же 1245я говорит про другое. "Вознаграждение поступает авторам и иным правообладателям не непосредственно от пользователей, а от изготовителей и импортёров оборудования и материальных носителей, которые могут использоваться для целей воспроизведения аудиовизуальных произведений и фонограмм в личных целях" (учебник ИЦЧП, С. 427).
#ip
Абз. 4 п. 2 ст. 1295 ГК:
Право на вознаграждение за служебное произведение неотчуждаемо и не переходит по наследству, однако права автора по договору, заключенному им с работодателем, и не полученные автором доходы переходят к наследникам.
IP+наследственное+трудовое. Гремучая смесь, не иначе. Ну и как и с моральным вредом неясно, почему такое требование не переходит по наследству, ведь оно денежное. Связь с личностью нужно искать не в основании возникновения обязательства, а в его содержании.
#ip
Сижу в общаге в тёплой пижаме и шерстяных носках. Чай пью, IP читаю. Пока готовлюсь к сессии на канале будут всякие сумбурные посты.
И начну с довольно странной позиции кодекса не признавать наименование некоммерческой организации в качестве интеллектуальной собственности. Показательно подсвечивает проблему спор между фондом "Подари жизнь" и его клоном. Давно слышал об этом деле (кажется, Александр Николаевич в лекции упоминал). Сейчас нашёл заметку на zakon.ru.
https://zakon.ru/discussion/2017/07/11/nekommercheskim_organizaciyam_dali_shans_na_zaschitu_naimenovaniya__grazhdanskaya_kollegiya_vs_rassm
В ПП ВС №10 от 23.04.2019 говорится следующее:
147. В силу пункта 4 статьи 54, пункта 1 статьи 1473 ГК РФ право на фирменное наименование возникает только у юридического лица, являющегося коммерческой организацией.
Наименования некоммерческих организаций (статья 4 Федерального закона "О некоммерческих организациях") не являются средством индивидуализации юридических лиц в смысле положений части четвертой ГК РФ, на них не распространяется правовая охрана, установленная параграфом 1 главы 76 ГК РФ.
Ввиду этого правила, предусмотренные статьей 1473 ГК РФ, в том числе запреты, содержащиеся в пункте 4 этой статьи, на некоммерческие организации не распространяются.
Вместе с тем право на наименование некоммерческой организации может быть защищено от действий третьих лиц, являющихся актом недобросовестной конкуренции или злоупотреблением правом, на основании положений статьи 10 ГК РФ, Федерального закона "О защите конкуренции", статьи 10.bis Парижской конвенции. Кроме того, наименованию некоммерческой организации может быть предоставлена правовая охрана как коммерческому обозначению в случаях, предусмотренных параграфом 4 главы 76 ГК РФ.
Не относятся к фирменным наименованиям в смысле положений ГК РФ наименования не являющихся юридическими лицами объединений юридических лиц.
То есть ВС буквально говорит, что защита наименованию НКО предоставляется, но защита иная (только в случаях недобросовестной конкуренции или злоупотреблением правом, а также когда НКО осуществляет коммерческую деятельность охраняется коммерческое обозначение (ст. 1538 ГК и далее)).
#ip
Python 3 has a std lib module for working with #IP addresses:
»> import ipaddress
»> ipaddress.ip_address('192.168.1.2')
IPv4Address('192.168.1.2')
»> ipaddress.ip_address('2001:af3::')
IPv6Address('2001:af3::')
Learn more here:
https://docs.python.org/3/library/ipaddress.html
🇺🇸Universal Settles with AI Music Platform Udio
Universal Music Group settled its copyright lawsuit against AI music generator Udio and announced a new joint venture to launch a licensed AI music platform in 2026.
The deal includes a financial settlement and licensing for UMG's catalog, with the future platform allowing users to remix songs and create in artists' styles. Artists who opt in to the coming platform will be compensated for both model training and when their songs are remixed.
#AI#IP