Ничего, ничего, ничего, ничего, 1851876449
Хотя во всех программах Адоба скрипты работают примерно одинаково, каждая программа делает что-то по-своему.
В Индизайне, например, все константы хранятся в специальных объектах (перечислениях), но их значения — огромные числа! Почему? Да просто решили так.
Если у чего-то не указан параметр, то возвращается обычно
Но если попробовать взять размер шрифта, который не указан в стиле, то вернётся как раз
Поэтому я почти с самого первого дня программирования для Адоба использую только тройное сравнение
Хотя во всех программах Адоба скрипты работают примерно одинаково, каждая программа делает что-то по-своему.
В Индизайне, например, все константы хранятся в специальных объектах (перечислениях), но их значения — огромные числа! Почему? Да просто решили так.
Если у чего-то не указан параметр, то возвращается обычно
undefined
. Например, если у стиля в Индизайне не указан шрифт, то будет как раз undefined
.Но если попробовать взять размер шрифта, который не указан в стиле, то вернётся как раз
NothingEnum.NOTHING
. И самое дурацкое, что при выводе в логах этого значения, будет указано значение этой константы, как на картинке.Поэтому я почти с самого первого дня программирования для Адоба использую только тройное сравнение
===
и проверяю typeof
регулярно. И вам советую.👍4
Forwarded from Дизайн-код Екатеринбурга (Паша Омелёхин)
Генератор адресных табличек — на Продакт-ханте!
Поддержите проект и нас, заходите по ссылке и жмите Upvote 🤚
https://www.producthunt.com/posts/yekaterinburg-address-plate-generator
Поддержите проект и нас, заходите по ссылке и жмите Upvote 🤚
https://www.producthunt.com/posts/yekaterinburg-address-plate-generator
Product Hunt
Yekaterinburg address plate generator: Generate printable PDF files directly in the browser | Product Hunt
The generator allows the creation of PDF files according to the design guidelines for address plates. The generator instantly creates 1 and 2-pages files in CMYK for production or preview. All texts are converted to curves.
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
Написал пост про создание генератора адресных табличек Екатеринбурга
Оценить работу, которую генератор моментально и без ошибок делает за дизайнера, можно по ссылке.
И важный момент: как поддерживать базу данных улиц? Ответ тоже есть в посте.
Оценить работу, которую генератор моментально и без ошибок делает за дизайнера, можно по ссылке.
И важный момент: как поддерживать базу данных улиц? Ответ тоже есть в посте.
🔥9⚡2
Сергей Турулин
Написал пост про создание генератора адресных табличек Екатеринбурга Оценить работу, которую генератор моментально и без ошибок делает за дизайнера, можно по ссылке. И важный момент: как поддерживать базу данных улиц? Ответ тоже есть в посте.
Картинки процесса, которые не прикрепились вместе с анимашкой :-(
🔥6⚡2
Элементы дизайна и барьеры
Проблема
Сейчас работаю над проектом, где надо генерить элементы по координатам. А ещё в этом проекте есть подписи списков, когда несколько элементов списка имеют один выносной заголовок. И в обоих этих случаях возможны наложения элементов друг на друга.
Пока эти случаи были единичными, я локально, то есть в самом месте рисования, смещал объекты на возможное расстояние. Но когда ситуация усложнилась (несколько «границ» в разных направлениях), появилось слишком много повторений кода, но с похожими действиями.
Поэтому сделал отдельный модуль «Элементы дизайна и барьеры». Уверен, что это не уникальная разработка, можно было бы нагуглить, но решил сделать свою, потому что в генерации дизайна она точно пригодится ещё не один раз.
Решение — новый модуль
Суть модуля простая: у документа, например pdf-файла, есть место, где возможно пересечение элементов. Я инициализирую модуль, передаю ему элементы дизайна (которые можно двигать), барьеры (которые нельзя двигать) и границы возможного смещения. Элементы дизайна, включая барьеры, не рисуются в этот момент, а как бы складываются в «память файла» — в кэш.
И когда все элементы дизайна созданы и переданы в модуль, выполняется главный метод — запустить смещения. Модуль перебирает все барьеры и элементы дизайна, определяет зоны пересечения. Согласно доступным границам и разрешённым направлениям смещения модуль сам решает, куда попытаться сместить элементы.
Если в результате смещения элементы дизайна всё равно не могут поместиться (например, находятся между двумя барьерами или близко от границы), то выполняется альтернативное (настраиваемое) решение. Зачастую это просто «Не рисовать объект», если разрешают правила дизайна. Но если надо обязательно отрисовать, то можно и сместить барьер, если у него выставлены свои границы смещения. Или «уместить» объект (такое можно делать с текстами — уменьшить размер шрифта).
И после этой всей логики мы рисуем объекты «из кэша». Готово.
Перспектива
Из интересных функций, которые удалось получить после создания модуля, стал механизм сортировки элементов дизайна по их пересечениям с барьерами. То есть чем больше пересекается элемент с барьером, тем раньше надо пытаться его смещать. И после удачного смещения превращать в барьер, чтобы уже следующие элементы не пересекали предыдущие.
В общем, очередная полезная функция, где сотня математических операций в циклах. Но главное — я сделал этот модуль универсальным. Можно запускать и в Адобе (Иллюстратор или Индизайн), и в браузерах. Потому что достаточно, чтобы у передаваемых элементов были свойства x, y, width, height и метод draw().
Проблема
Сейчас работаю над проектом, где надо генерить элементы по координатам. А ещё в этом проекте есть подписи списков, когда несколько элементов списка имеют один выносной заголовок. И в обоих этих случаях возможны наложения элементов друг на друга.
Пока эти случаи были единичными, я локально, то есть в самом месте рисования, смещал объекты на возможное расстояние. Но когда ситуация усложнилась (несколько «границ» в разных направлениях), появилось слишком много повторений кода, но с похожими действиями.
Поэтому сделал отдельный модуль «Элементы дизайна и барьеры». Уверен, что это не уникальная разработка, можно было бы нагуглить, но решил сделать свою, потому что в генерации дизайна она точно пригодится ещё не один раз.
Решение — новый модуль
Суть модуля простая: у документа, например pdf-файла, есть место, где возможно пересечение элементов. Я инициализирую модуль, передаю ему элементы дизайна (которые можно двигать), барьеры (которые нельзя двигать) и границы возможного смещения. Элементы дизайна, включая барьеры, не рисуются в этот момент, а как бы складываются в «память файла» — в кэш.
И когда все элементы дизайна созданы и переданы в модуль, выполняется главный метод — запустить смещения. Модуль перебирает все барьеры и элементы дизайна, определяет зоны пересечения. Согласно доступным границам и разрешённым направлениям смещения модуль сам решает, куда попытаться сместить элементы.
Если в результате смещения элементы дизайна всё равно не могут поместиться (например, находятся между двумя барьерами или близко от границы), то выполняется альтернативное (настраиваемое) решение. Зачастую это просто «Не рисовать объект», если разрешают правила дизайна. Но если надо обязательно отрисовать, то можно и сместить барьер, если у него выставлены свои границы смещения. Или «уместить» объект (такое можно делать с текстами — уменьшить размер шрифта).
И после этой всей логики мы рисуем объекты «из кэша». Готово.
Перспектива
Из интересных функций, которые удалось получить после создания модуля, стал механизм сортировки элементов дизайна по их пересечениям с барьерами. То есть чем больше пересекается элемент с барьером, тем раньше надо пытаться его смещать. И после удачного смещения превращать в барьер, чтобы уже следующие элементы не пересекали предыдущие.
В общем, очередная полезная функция, где сотня математических операций в циклах. Но главное — я сделал этот модуль универсальным. Можно запускать и в Адобе (Иллюстратор или Индизайн), и в браузерах. Потому что достаточно, чтобы у передаваемых элементов были свойства x, y, width, height и метод draw().
🔥4👏2👍1
Forwarded from Код Екатеринбурга (Паша Омелёхин)
💫 Запускаем карту Екатеринбурга!
Когда был построен ваш дом? Как много высоких зданий в центре? Сколько в городе объектов культурного наследия? Где чаще всего происходят ДТП? Чтобы ответить на эти и миллион других вопросов, мы разработали карту Екатеринбурга — сервис, где собраны и визуализированы все данные о городе.
У Екатеринбурга огромное количество интересных и открытых данных, о которых никто не знает. Раньше их было трудно найти, трудно пользоваться и трудно сделать из них выводы. А теперь они все в одном месте! Захо́дите на карту — и тут же попадаете в мир полезной и красивой картографии.
Какие фишки есть у сервиса:
— Скорость и производительность. Карта шустро работает с огромными объёмами данных и не падает.
— Легко добавить новые слои данных.
— Данные автоматически обновляются из источника.
— Красивая визуализация любых данных.
— Подробная карточка объекта.
— И всё это в 3D!
Какие планы
Сегодня мы запускаем бета-версию сервиса. В будущем мы планируем добавить новые слои данных, показывать сразу несколько слоёв, разработать API, визуализировать данные обо всех городах в мире и много чего ещё.
Самое важное
Проект является полностью открытым. Кто угодно может в него законтрибьютить или форкнуть. Заходите на гитхаб.
Итак, ссылка этого лета. Залипнуть на часок: 🗺️ map.ekaterinburg.city
Когда был построен ваш дом? Как много высоких зданий в центре? Сколько в городе объектов культурного наследия? Где чаще всего происходят ДТП? Чтобы ответить на эти и миллион других вопросов, мы разработали карту Екатеринбурга — сервис, где собраны и визуализированы все данные о городе.
У Екатеринбурга огромное количество интересных и открытых данных, о которых никто не знает. Раньше их было трудно найти, трудно пользоваться и трудно сделать из них выводы. А теперь они все в одном месте! Захо́дите на карту — и тут же попадаете в мир полезной и красивой картографии.
Какие фишки есть у сервиса:
— Скорость и производительность. Карта шустро работает с огромными объёмами данных и не падает.
— Легко добавить новые слои данных.
— Данные автоматически обновляются из источника.
— Красивая визуализация любых данных.
— Подробная карточка объекта.
— И всё это в 3D!
Какие планы
Сегодня мы запускаем бета-версию сервиса. В будущем мы планируем добавить новые слои данных, показывать сразу несколько слоёв, разработать API, визуализировать данные обо всех городах в мире и много чего ещё.
Самое важное
Проект является полностью открытым. Кто угодно может в него законтрибьютить или форкнуть. Заходите на гитхаб.
Итак, ссылка этого лета. Залипнуть на часок: 🗺️ map.ekaterinburg.city
🔥7👍1