Как стать автором
Обновить

Комментарии 11

С радостью выслушаю мнения

По поводу чего? А то у меня сейчас в голове лишь два вопроса: "зачем?" и "зачем?".

1. Зачем это вообще надо?
2. Зачем это опубликовано на хабр?

Дам немного пояснений. Более или менее "наукообразный" текст следует (явно или неявно) следующей структуре:

  1. Обозначение проблемы. Неплохо бы описать какая проблема у вас есть и почему вы хотите её решить.

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

  3. Собственно, описание вашего решения

  4. Сравнение ваших результатов с имеющимися решениями из п.2. Если аналогов нет, то неплохо бы описать просто результаты, примеры приложения вашей технологии к реальному миру, возможности к расширению. В общем всё, что будет доказываться, что вы придумали что-то нужное.

  5. Инструкции по воспроизведению результатов

  6. Выводы, вопросы к комьюнити, шутеечки и всё прочее.

Судя по тому, что я вижу в статье, у вас сейчас есть п.3 и немножечко п.5. Об чём нам разговаривать?

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

Зачем Вы указываете кодировку? Это имело смысл для Python 2.7, и то я не уверен, что это не пофиксили сегодня. Любые файлы с кодом в наше время должны быть по умолчанию в Unicode, и если какой-то софт имеет с этим проблемы, то этот софт - говно (c).

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

Вы то импортируете inkex целиком, то выдергиваете из него классы. Не понял, зачем.

Глобальные переменные - зло, особенно так, как это делаете Вы:

FntSz = 3.175    # будем выводить текст - так вот это размер текста

Что за FntSz? В интернете СТОЛЬКО статей, книг, лекций про "называйте переменные так, чтобы по названию было понятно назначение". Вы специально шифруете? Почему переменная названа с большой буквы? В CamelCase форме? В Python так делают только для имен классов. Хорошо, что есть очень понятный комментарий. Размер текста. В попугаях размер текста?

Что это за sxA, sxB, ar23A? Я ничего не могу понять по именам переменных.

# ну что сказать... 

Шикарный комментарий. Допишите остальную часть припева.

В Python методы визуально отделяются друг от друга пустыми строками, а не комментариями с дефисами.

Впервые вижу, чтобы отступы были длиной в 1 пробел.

Спасибо, что используете менеджеры контекста при чтении из файла, без сарказма! Только про DRY Вы ничего не знаете, да?

Добавлять "\n" в str.split() необязательно, это дефолтный аргумент. И вообще, лучше использовать str.splitlines(), не везде разделитель строк "\n".

range(0, len(ar23A))

Почему нельзя написать так?

enumerate(ar23A)

Я устал. Я не могу это читать. Простите за токсичную критику, накипело.

В pycharm так написать будет сложно. Разве что принципиально не обращать внимания на warningи.

Ну что Вы, я очень рад Вашей информации. Времени не хватает на изучение всех программистских "поняток". А тут прямо череда конструктивных советов. В ближайшее время подправлю текст скрипта. Про DRY (на данный момент) ничего не знаю. Погуглю по дороге из мастерской.

Мне нравится изучать исходники известных проектов, стиль, подходы.. Недавно рассматривал исходники библитекаря Calibre, и был немало удивлен обилием инструкций import внутри тел процедур, if-ов... Так как не считаю себя знатоком python, решил что если уж таких проектах так делают, то почему бы и нет..

если уж таких проектах так делают

Говнокоду найдётся место в любом проекте и на любом языке ;)

Font size наглядно понятно что там

Статья понравилась. Не кодом, который почти что ужасен, а темой макросов в графических пакетах. И вангую рост потребности в них, геометрический. Видел воочию сколько кода на VBA в CorelDraw в немецких дизайн-студиях и рекламных агентствах. Его там много (в наших нет, можно сказать, вообще). Это GUI-утилиты полезняшки, в основном реализующие компоновочные решения при верстке, а также пакетные операции с фото, символами строк итп.

Доля Корела в Германии высока, примерно 40% (остальное условно назовем AI, и это искусственный интеллект, а Adobe Illustrator). В нашей стране официально за CorelDraw не более 25%, но много пиратки в регионах, в каждой студии он имеется (дистр корела легко и бесследно прячется, в отличие от продукции Adobe). Не могу сказать про госструктуры, но на пиратке-кореле там тоже активно рисуют, видел в около-выставочном окружении двух наших главных мероприятий в стране. В условии цейтнота и оргсуматохи ам и не такое можно увидеть.

Так вот, в труде граф. дизайнера оказалось неожиданного много около-текстовой рутины, которую VBA или Python могут взять на себя. Так как горячие клавиши недоступны части особо гордых людей - то только макросы могут повысить производительность труда до приемлемого европейского уровня. Да, он там выше. Я не видел в Германии дизайнеров, не умеющих печать вслепую или просто быстро. Ctrl+D они умеют все.

InkScape - наиболее импортозамещающий свободный пакет из всей векторной графики. Дивизионы Corel и Adobe в РФ хвалились десятками миллионов и даже миллиардом выручки в долларах, так что вопрос не праздный. Python в InkScape, расширения на нем - позволяют делать очень многое, и скорее всего обеспечат технологическое лидерство тем компаниям, которые их освоят, а не будут продолжать платить по 1 млн. руб. за рабочее место на инструментах Adobe. Данная статья - хороший старт, чтобы знать что оно вообще возможно и даже работает.

Да, Вы совершенно правы - эта заметка - про "макросы в графических пакетах". Связка Inkscape-Python заслуживает внимания. Я не люблю Inkscape (который очень уступает CorelDraw по удобству использования) и я не люблю вездессущий Python (многовато плясок вокруг empty spaces) но эти инструменты доступны сейчас и вряд ли перестанут быть доступными...

Целевая аудитория для этой заметки мне и самому не понятна - кодеры не рисуют (особенно в Inkscape), дизайнеры не программируют (и тоже не используют Inkscape).

У меня не получилось сходу забраться в эту несложную тему "Python-макросов для Inkscape". Пришлось много гуглить и сердиться :). Надеюсь что кому-нибудь этот неидеальный, кое-как работающий код сэкономит время и поможет сделать свой "генератор актуальной инфографики".

В общем - спасибо Вам за понимание - зачем эта заметка вообще написана.

А насколько сложно отлаживать такие расширения?

По моему опыту - может быть самая дурная часть всей работы.

У меня встречный вопрос - а какие действия подразумевает под собой "отладка"?
(предположим - у нас есть некоторый код. Если в запускаемом коде синтаксические ошибки - в графической среде выскочит окно с извещением об ошибке. Вроде у питонских интерпретаторов приемлемые отчёты об ошибках - номер строки.. имёна функций и прочее.

Или Вы имеете в виду "возможность пошаговой отладки с real time monitoring of variables"?)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории