![](https://webcf.waybackmachine.org/web/20220725185356im_/https://habrastorage.org/getpro/habr/upload_files/273/b14/9fc/273b149fcd1f4d536cc6637576764fd8.png)
В этой истории я расскажу Вам про мои попытки разгадать секрет женских портретов Модильяни, как при этом я пришел к проблемам визуального восприятия нами внешнего мира и познакомился с перцептивной геометрией.
В этой истории я расскажу Вам про мои попытки разгадать секрет женских портретов Модильяни, как при этом я пришел к проблемам визуального восприятия нами внешнего мира и познакомился с перцептивной геометрией.
Всем привет, я Вячеслав Жуйко – Lead команды разработки Audiogram в MTS AI.
При переходе от On-Cloud размещений ПО на On-Premises в большинстве случае перед вами неизбежно встанет задача защиты интеллектуальной собственности – и она особенно критична для рынка AI, где задействуются модели, обладающие высокой ценностью для компании. К тому же, в этой сфере широко используется интерпретируемый язык Python, ПО на котором содержит алгоритмы, являющиеся интеллектуальной собственностью компании, но фактически распространяется в виде исходных кодов. Это не является проблемой для On-Cloud решений, но в случае с On-Premises требует особой защиты как от утечек кода, так и самих данных.
Рассказываю реальную историю решения этой, казалось бы, не самой тривиальной задачи. И так, обо всем по порядку.
В прошлый раз мы отделили логику от инфраструктуры и разбили последнюю на четыре слоя: Server → Parser → Application → Repository. Классы инфраструктуры составляют основной фреймворк, который берет на себя всю рутинную работу, а нам предоставляет писать одну только логику.
Логика состоит из контроллеров, которые составляют пятый и пока что последний слой. Они полностью независимы не только от инфраструктуры (им доступно только хранилище), но и друг от друга. Контроллеры — это, на данный момент, базовые единицы бизнес-логики.
Если сильно обобщить, то контроллеры занимаются преобразованием одних команд в другие с сопутствующим изменением состояния приложения (Repository). В зависимости от команды и текущего состояния пользователя Application
выбирает соответствующий контроллер и передает ему ссылку на Repository
. Контроллер обрабатывает команду, изменяет состояние хранилища и возвращает другие команды, которые должны быть отправлены инфраструктурой по назначению. В общей схеме контроллеры занимают промежуточное место между движком и хранилищем:
... → Application → Controller → Repository.
Если размещать всю логику в одном классе контроллера, то это в большинстве случаев окажется большой класс. Большой класс — это много кода, а много кода, собранного в одном месте — это мешанина. Поэтому чтобы в ней не запутаться, вся логика будет разбиваться на различные классы. Одна задача — один класс. Классы, выполняющие сходные функции и способные заменять друг друга, будут группироваться в слои, как и в инфраструктуре.
В результате у нас появятся отдельные библиотеки для каждого жанра, а также библиотеки с базовыми классами для групп жанров. В отличие, от основного, инфраструктурного фреймворка, эти фреймворки будут сугубо "логические".
При такой организации кода отдельные игры — это лишь соответствующая настройка и использование классов из жанровой библиотеки. Идеальный проект тогда будет состоять вообще из одного main-скрипта в пару строк и yml-файла конфигурации.
О том, как писать классы такого уровня обобщения, чтобы исходный код проектов состоял всего из нескольких строк, как раз и пойдет речь в данной статье:
Стандартный логгер OpenFeign предоставляет весьма неудобный подход в логировании коммуникаций — он записывает запрос отдельно от ответа, причём каждый заголовок и тело - это отдельная строка логов.
Очень неудобно разбирать такие логи в приложении с высоким уровнем коммуникаций, особенно в многопоточной среде.
Решение ‘Normalized Logger’ нацелено исправить этот изъян - этот логгер собирает в одну запись будущего лога запрос и ответ - теперь они не будут разбросаны.
Шрифты — объект интеллектуальной собственности, о котором часто забывают, хотя они используются почти везде. Нарушение авторских прав на шрифт может притаиться где угодно — на этикетке макарон, книжной обложке и даже в оформлении телешоу. Недавно такой конфликт даже проявился в политике. В июне 2022 года площадь в Москве переименовали в площадь ДНР и украсили ее тематическими баннерами. Украинские дизайнеры Олесь Гергун и Евгений Анфалов заявили*, что в оформлении баннеров был незаконно использован их шрифт KTF Jermilov, разработанный специально в поддержку Украины.
В юридическом порядке отстоять свои права украинцы вряд ли смогут. Но если бы они находились в российском правовом пространстве или «дружественном» государстве, у них были бы все шансы на победу — в таких разбирательствах суды обычно встают на сторону дизайнеров. Рассказываем как защитить интеллектуальную собственность на свой шрифт и не нарушить чужие права вместе с сотрудницей «Онлайн Патента», патентной поверенной Еленой Купцовой и Сергеем Бобрышевым, коммерческим директором компании «ПараТайп», крупнейшего российского магазина шрифтов.
В детстве у меня была Mattel Auto Race — портативная игровая консоль со встроенным LED-экраном с красными светодиодами, элементами управления, одной игрой и динамиками. Почему-то я однажды о ней вспомнил и субботним вечером решил создать версию игры, используя p5.js. Сначала дела шли хорошо: я поработал над встречными автомобилями и логикой создания и удаления автомобилей. Затем я решил немного усложнить игру, добавив немного рандома в процесс появления автомобилей.
Вот тогда я столкнулся с проблемами. Что-то было не так с тем, как я управлял таймингом — я никак не мог заставить машины появляться в нужном мне порядке. Повозившись с разными вариантами, я так и не понял, что не так, и разочаровался. Прошло 2 дня, а я так и не могу вернуться к проекту, чтобы не сталкиваться с досадой и чувством разочарования.
Но оказалось, что так и должно быть.
Многие люди с помощью облачных сервисов делятся файлами с друзьями и близкими: загрузил один раз в облако, открыл доступ по публичной ссылке и рассылай её кому хочешь. Мы стремимся облегчить пользователям работу с Облаком и регулярно анализируем, какой информацией они делятся, какие форматы файлов загружают. Ежегодно пользователи создают больше 50 млн публичных ссылок, из которых около 13 млн — ссылки на папки с фотографиями. Если вам доводилось просматривать несколько сотен снимков с корпоратива или дружеской посиделки в поисках своего любимого лица, то вы знаете, какое это нудное занятие.
Мы — Сергей Тарасенко, менеджер продуктов Облако и Диск-О, и Арсений Зорин, руководитель группы бэкенд-разработки — расскажем о новом инструменте, который экономит время пользователей: автоматической сортировке фотографий внутри папки по лицам. Именно сортировке: вы можете быстро выбрать изображения с конкретными людьми, но не идентифицировать их.
Apple выпустила общедоступное обновление iOS и других систем, но удаляет некоторые игры из Apple Arcade, ещё компании присудили оборотный штраф от ФАС России, а также стало известно какие ещё чипы установлены в новом MacBook Air. Всё это и многое другое – в свежем дайджесте Apple Pro Weekly News, переходим к подробностям!
Протокол DNS (Domain Name System Protocol) является одним из важнейших инфраструктурных протоколов для поддержки сети Интернет и первоначально он разрабатывался для максимальной производительности и возможности распределенного хранения неограниченного числа доменных зон. DNS может функционировать поверх UDP-протокола и это уменьшает накладные расходы на установку соединения и избыточный трафик в сети. Но одной из важнейших проблем стала безопасность обмена данными, поскольку клиент в первоначальном варианте протокола не может проверить достоверность информации и это может приводить к подмене ip-адресов злоумышленниками с переадресацией клиента на фишинговый сайт.
Для решения этой проблемы были введены расширения DNSSEC для генерации цифровой подписи ответа. Но сам запрос и ответ при этом не шифровались, что могло быть использовано для ограничения доступа к определенным доменам или для получения на транзитных узлах статистики доступа к хостам. Частично эту проблему решило использование инкапсуляций DNS-over-TLS (DoT, использует TLS для шифрования UDP-дэйтаграмм) и DNS-over-HTTPS (DoH, передает запросы и ответы поверх HTTPS-подключения), которые функционируют поверх TCP. В первом случае запрос более компактный (но может быть обнаружен по анализу трафика), во втором DNS-диалог неотличим от подключения к сайту или веб-сервисам, но при этом существенно увеличивает избыточной трафик (даже при использовании HTTP/2), а также вынужденно добавляет заголовки (которые могут использоваться для трекинга и перехвата cookies). Но можно ли как-то объединить преимущества UDP и DoH? Встречаем DNS-over-QUIC, который был утвержден в RFC9250 как Proposed Standard.
В поисках продуктивности особое место занимает сон. Его можно использовать для глубокого и качественного отдыха, выделенного организму самой природой. А можно относиться к нему, как к инструменту для изучения психики.
Привет! На связи RISE: сообщество про ноотропы и личную продуктивность. И в этом материале погрузимся в осознанные сновидения, и как их можно использовать для личной продуктивности.
В последние годы растет популярность фреймворка для кроссплатформенной разработки приложений Flutter, а вместе с ним вторую жизнь получил и язык программирования Dart. Dart создавался как потенциальная замена JavaScript и мог бы занять нишу, которая сейчас принадлежит TypeScript, но по ряду причин он так и оставался длительное время "одним из проектов Google", который не был оценен ни для использования в web (после транспиляции в JavaScript), ни для создания серверных или десктопных приложений.
При этом компилятор Dart создает оптимизированный высокопроизводительный код для основных операционных систем и может также использоваться для компиляции в другие аппаратные архитектуры (например, для микроконтроллеров) и, в целом, Dart может использоваться как язык общего назначения для создания серверных приложений (Shelf, Aqueduct), устройств умного дома (с целевой платформой ARM и пакетом dart_periphery) и, конечно, десктопных, мобильных и веб-приложений (Flutter).
И все же язык обладает определенным набором особенностей, которые надо учитывать при реализации кода и использованию типовых паттернов проектирования. В этой статье мы рассмотрим примеры реализации самых часто используемых основных и порождающих шаблонов на языке Dart (будем использовать возможности наиболее актуальной версии Dart 2.17), а во второй части статьи будут рассмотрены более сложные структурные и поведенческие паттерны.
Лиды дорожают, многие идут в D2С. Какая рассылка эффективнее: старая добрая электронка или прямое сообщение в мессенджере?
Сравнил по таким критериям: открываемость письма, расходы, наличие интерактива, какой-нибудь анализ поведения и как быстро можно запустить.
Вы выехали из России и живете в другой стране. Признаем, что переезд за границу — это огромный выход из зоны комфорта. Раньше вас окружали привычные стены офиса, знакомые правила коммуникации, понятный рынок вакансий. Вы легко заполняли резюме и общались с работодателями и клиентами. А как найти комфортное место работы сейчас, проживая в другой стране?
Какие плюсы есть у SAST? Чем он отличается от DAST? Что такое IAST? Что значат все эти слова?! Об этом (и не только) расскажем в статье-разборе основных видов Application Security Testing (далее AST).
Сфера ИТ имеет свои отличительные особенности, которые государство старается учитывать для улучшения условий ведения бизнеса. Принят новый пакет мер, направленный на установление благоприятного фискального режима для успешной работы ИТ-компаний.
В XVII веке среди художников-живописцев большой популярностью пользовалась идея написания картин внутри картины. Ярким примером служит знаменитая серия полотен-кунсткамер Виллема ван Хахта. Здесь можно найти более сотни действительно существующих произведений, в том числе и знаменитейших шедевров. Любители искусства по сей день спорят о названиях и авторах нескольких картин и скульптур, не прошедших идентификацию.
От настолько кропотливого творения захватывает дух! Только представьте, какого труда и профессионализма требует воспроизведение сотни мировых шедевров в собственной картине. Но с появлением и развитием технологий создавать подобные картинные галереи не составит большой сложности. В САПР, например, это легко можно сделать с помощью видовых экранов – здесь главное не запутаться в масштабах.
Какие именно способы оформления чертежа существуют, как устроена система масштабирования в Платформе nanoCAD, а также где могут быть спрятаны масштабы разных объектов, мы узнаем далее.