Читаем Автостопом по Python полностью

Лицензия GPLv2 несовместима с Apache 2.0, поэтому код под лицензией GPLv2 нельзя объединять с кодом под лицензией Apache 2.0. Но проекты под этой лицензией могут быть использованы в проектах под лицензией GPLv3 (которые впоследствии тоже перейдут под лицензию GPLv3).

Лицензии, соответствующие критериям OSI, позволяют использовать код в коммерческих целях, модифицировать ПО и распространять его с разными ограничениями и требованиями. Все лицензии, перечисленные в табл. 4.5, ограничивают ответственность пользователя и требуют от него помнить об авторских правах и лицензии при любом распространении.

Таблица 4.5. Темы, рассматриваемые в популярных лицензиях

Семейство лицензий

Ограничения

Разрешения

Требования

BSD

Защитить торговую марку издателя (BSD 3-clause)

Дает гарантию (BSD 2-clause и BSD 3-clause)

MIT (X11 или Expat), ISC

Защитить торговую марку издателя (ISC и MIT/X11)

Разрешает сублицензирование под другой лицензией

Apache версии 2.0

Защитить торговую марку издателя

Разрешает сублицензирование, использование в патентах

Необходимо указывать изменения, вносимые в исходный код

GPL

Запрещает сублицензирование под другой лицензией

Дает гарантию и можно (только в GPLv3) использовать в патентах

Необходимо указывать изменения, вносимые в исходный код, и включать исходный код Лицензирование ресурсов

Книга Вана Линдберга (Van Lindberg) Intellectual Property and Open Source (издательство O’Reilly) — отличный ресурс, посвященный юридическим вопросам в отношении ПО с открытым исходным кодом. Эта книга поможет вам изучить лицензии и юридические тонкости, связанные с интеллектуальной собственностью (торговые марки, патенты, авторские права), а также их влияние на программы с открытым исходным кодом. Если вас не особо волнуют юридические моменты и вы хотите что-то быстро выбрать, вам могут помочь следующие сайты: • GitHub предоставляет удобное руководство (http://choosealicense.com/), где сравниваются все лицензии в рамках нескольких предложений; • на ресурсе TLDRLegal52 (http://tldrlegal.com/) перечислено, что можно и чего нельзя делать под каждой лицензией; • список лицензий, одобренных OSI (http://opensource.org/licenses), содержит полный текст всех лицензий, прошедших проверку на соответствие Open Source Definition (что позволит свободно использовать, модифицировать и распространять ПО).

36 Цитата изначально приведена Ральфом Уолдо Эмерсоном (Ralph Waldo Emerson) в эссе Self-Reliance. Присутствует в PEP 8 для того, чтобы подтвердить, что здравый смысл важнее руководства по стилю. Например, гармоничный код и существующие соглашения перевесят строгое следование PEP 8.

37 Разность — это утилита оболочки, которая сравнивает два файла и показывает отличающиеся строки.

38 В соответствии с PEP 8 это значение равно 80 символам. Согласно другим источникам — 100, а в вашем случае это значение зависит от того, что говорит ваш начальник. Ха! Честно говоря, любой, кто использовал консоль для отладки кода в полевых условиях, быстро оценит ограничение в 80 символов (при котором строка в консоли не переносится) и на деле будет использовать 75–77, чтобы можно было увидеть нумерацию строк в Vi.

39 Обратитесь к 14-му пункту «Дзена Питона». Гвидо, наш BDFL, — голландец.

40 Кстати, именно поэтому только хэшируемые объекты можно хранить во множествах или использовать как ключи для словарей. Чтобы ваши объекты Python стали хэшируемыми, определите функцию-член object.__hash__(self), которая возвращает целое число.

41 В этом случае метод __exit__() вызовет метод обертки для ввода/вывода close(), чтобы закрыть дескриптор файла. Во многих системах имеется максимальное количество открытых дескрипторов файлов, и хороший тон — освобождать их по завершении работы.

42 Если хотите, можете назвать файл my_spam.py, но даже нашим другом — нижним подчеркиванием — не следует злоупотреблять в именах модулей (нижнее подчеркивание наводит на мысль, что перед вами имя переменной).

43 Благодаря PEP 420 (https://www.python.org/dev/peps/pep-0420/), который был реализован в Python 3.3, существует альтернативный корневой пакет — пакет пространства имен. Такие пакеты не должны содержать файл __init__.py, могут быть разбиты по нескольким каталогам sys.path. Python соберет все фрагменты воедино и представит их пользователю как один пакет.

44 Инструкции по созданию собственных типов с помощью C предоставлены в документации Python по адресу https://docs.python.org/3/extending/newtypes.html.

45 Пример простого алгоритма хэширования — преобразование байтов объекта в целое число и взятие его суммы по какому-нибудь модулю. memcached (http://www.memca­ched.org/) распределяет ключи между несколькими компьютерами именно так.

Перейти на страницу:

Похожие книги

100 знаменитых харьковчан
100 знаменитых харьковчан

Дмитрий Багалей и Александр Ахиезер, Николай Барабашов и Василий Каразин, Клавдия Шульженко и Ирина Бугримова, Людмила Гурченко и Любовь Малая, Владимир Крайнев и Антон Макаренко… Что объединяет этих людей — столь разных по роду деятельности, живущих в разные годы и в разных городах? Один факт — они так или иначе связаны с Харьковом.Выстраивать героев этой книги по принципу «кто знаменитее» — просто абсурдно. Главное — они любили и любят свой город и прославили его своими делами. Надеемся, что эти сто биографий помогут читателю почувствовать ритм жизни этого города, узнать больше о его истории, просто понять его. Тем более что в книгу вошли и очерки о харьковчанах, имена которых сейчас на слуху у всех горожан, — об Арсене Авакове, Владимире Шумилкине, Александре Фельдмане. Эти люди создают сегодняшнюю историю Харькова.Как знать, возможно, прочитав эту книгу, кто-то испытает чувство гордости за своих знаменитых земляков и посмотрит на Харьков другими глазами.

Владислав Леонидович Карнацевич

Неотсортированное / Энциклопедии / Словари и Энциклопедии