Обновить

Разработка

Сначала показывать
Порог рейтинга
Сгенерировано AI
Сгенерировано AI

В предыдущем посте мы рассказали, как мы разработали решение NSR Specification для автоматизации экспертизы цифровых информационных моделей (ЦИМ).

🚆 Сегодня хотим поделиться, как мы смогли проверить работоспособность своих инструментов обработки требований в рамках пилотного проекта с РЖД!

•  Мы очень хотим выпустить универсальный инструмент, который действительно будет работать на практике. Именно поэтому нам важны пилотные проекты, в ходе которых мы дорабатываем свой функционал.

•  Вторая наша цель – весьма прозаическая. Давайте смотреть правде в глаза: мы занимаемся разработкой решения, пока не имеющего аналогов. И сталкиваемся с необходимостью доказывать свою эффективность.

В теории, конечно, возможность создания цифровых требований, которые смогут программировать ПО проектировать без ошибок, в соответствии со стандартами, – это очень круто.  А на практике – никто не знает, будет ли это работать.

🔈 Поэтому нам надо показывать и доказывать. Форсировать интерес, создавать спрос. И когда РЖД согласились показать нам свою ЦИМ, чтобы мы смогли попробовать применить наши сценарии проверки, это была фантастическая возможность! Спасибо коллегам!

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

Укрупненный список вызовов:

1️⃣ РЖД использует свой отраслевой классификатор для описания элементов ЦИМ. И он прекрасен, потому что позволяет обеспечить настоящую информационную полноту модели.

Решено было использовать только его и не добавлять новых атрибутов (обычно мы добавляем характеристики элементам, значения которых задаем на основе визуального осмотра, расчета на основе других значений, или запрашиваем информацию у заказчика).

2️⃣ ЦИМ была передана в формате ifc. А проверки решено было запускать в CADLIB Модель и Архив. Из-за этих факторов мы не смогли использовать некоторые структурные связи элементов.

3️⃣ Требований для пилота было отобрано немного. Всего четыре. Зато каких! Тут тебе и табличный формат, и заковыристые формулировки, и расчетные значения, которые нам надо было преобразовывать в формулы.

4️⃣ Одно из требований устанавливало минимальные расстояния в свету. Специально для таких случаев у CADLIB МиА есть функционал проверки минимального расстояния в плане. А вот у нас в Модуле семантического анализа требований не оказалось нужного инструмента для передачи данной особенности. Пришлось реализовывать!

И вот счастливый финал: мы показываем коллегам из РЖД результаты наших экспериментов...

И слышим в ответ, что мы не учли важный момент:

Нормативное требование устанавливает минимальное расстояние между осями трубопроводов, а CADLIB МиА измеряет расстояние между стенками труб. В самом требовании этот нюанс прямым текстом не озвучен. Но специалисты-то знают!

Нужно пересчитать.

О счастье, у нас получилось и это!
С костылями и молитвами (ибо прямого указания нет), но получилось!

СМОТРИТЕ ВИДЕО: RuTube, VK Видео, YouTube

Было невероятно приятно получить такой комментарий:

Гуменюк Алексей, заместитель начальника Центра компетенций по внедрению ТИМ, «РЖД»:

Когда на первой встрече нам продемонстрировали возможности разрабатываемой системы, мы не поверили своим глазам, это какое-то «шаманство», не иначе. И мы ушли думать какую задачку можно скормить этой машине. Вскоре вернулись с ТЗ, моделями и выдержками из нормативной документации, дополнили устными комментариями, что бы хотелось видеть по итогу. Спустя несколько недель коллеги вернулись с отчетной презентацией… и снова «шаманство», но уже с нашими моделями и под наши задачи.

Несмотря на то, что программа в активной стадии разработки, уже сейчас видны перспективы автоматизации проверки ЦИМ. Коллеги прекрасно справились с поставленными задачами и даже решили задачу со звездочкой. Понятно, что для того, чтобы машина заработала в полную силу, нужны качественные, выполненные по EIR модели и полный каталог машиночитаемых требований. Но это только начало, дальше – больше.

Теги:
Всего голосов 3: ↑3 и ↓0+5
Комментарии0

Гипер Лингвист - это двусторонний нейросетевой переводчик между 27 языками мира. Им удобно переводить тексты туда-сюда между родным языком и иноземным, выбирая наиболее подходящие формулировки.

Под капотом у него разные версии GPT4, поставляемые через GitHub Models, завёрнутые в $mol_github_model, который балансирует запросы по разным моделям и токенам, чтобы расширить бесплатные лимиты.

Я там захардкодил десяток токенов, чего хватит на 6К запросов в день. Кому не сложно помочь проекту - насоздавайте ещё десяток токенов со своего аккаунта, чтобы кратно расширить лимиты, и сделайте PR пришлите их мне. Эти токены дают доступ только к запуску моделей и ничего более. Только уберите ограничение по времени их действия, чтобы они вдруг не протухли.

Теги:
Всего голосов 4: ↑3 и ↓1+5
Комментарии0

С 1 сентября 2025 года в России вступили новые правила: все смартфоны и планшеты, продающиеся в стране, должны иметь предустановленный магазин приложений RuStore. На iPhone реализовать подобное невозможно, из‑за чего ритейлеры нашли обходное решение.

Магазины начали отмечать iPhone специальными пометками. У большинства сетей используется маркировка «без RuStore», а некоторые компании добавляют уточнение, что устройство имеет «недостаток». Такая формулировка юридически приравнивает смартфон к «бракованному» и позволяет покупателю вернуть его в течение года.

Теги:
Всего голосов 3: ↑2 и ↓1+3
Комментарии7

API для получения прогнозов по крипторынку от обученных ML-моделей допиливается. Пока только одна пара будет, но зато подъедет и графоний. То что вы видите, скорее всего, пойдет в прод, мне нравится.

Теги:
Всего голосов 11: ↑10 и ↓1+11
Комментарии4

Genspark запустил AI Designer для автоматической генерации брендинга

Компания Genspark представила AI Designer — инструмент, который создает полную систему брендинга от логотипа до веб-сайта по одному текстовому запросу. Новинка интегрирована в экосистему Genspark Super Agent и доступна бесплатно через веб-интерфейс.

Архитектура и возможности

AI Designer работает через агентскую архитектуру Genspark, планируя задачи и распределяя их между специализированными модулями. Система создает согласованные дизайн-активы без необходимости ручной координации между различными инструментами.

Генерируемые материалы включают:

  • Логотипы и цветовые палитры

  • Дизайн интерьеров и упаковки

  • Веб-сайты и лендинги

  • Рекламные макеты

  • Контент для социальных сетей

Система объединяет несколько экспертных агентов и множество инструментов для выполнения процесса от начала до конца. Это позволяет избежать переключения между разными сервисами и сократить циклы правок.

Техническая реализация

Платформа Genspark использует девять специализированных больших языковых моделей и более 80 интегрированных инструментов, динамически распределяя задачи между ними. AI Designer расширяет этот подход на область визуального дизайна и брендинга.

Особенность системы — шаблоны, которые отличаются от стандартных решений типа Canva образца 2010-х годов. Алгоритм адаптирует дизайн под конкретную задачу, а не использует готовые шаблоны.

Практическое применение

Ранние тесты сообщества показали способность инструмента создавать полные бренды за несколько минут, включая фирменный стиль, упаковку, меню и веб-макеты. Это делает решение полезным для стартапов и малого бизнеса, которым нужен быстрый результат без привлечения дизайн-команды.

Целевая аудитория:

  • Основатели стартапов

  • Маркетологи

  • Малый и средний бизнес

  • Команды, требующие быстрого создания брендинга

Контекст и конкуренция

Genspark позиционируется как поисковая система нового поколения с ИИ-агентами, которые глубоко понимают намерения пользователя и выполняют задачи от планирования до создания мультимедиа. AI Designer — логичное развитие этой концепции в сторону автоматизации креативных процессов.

Решение конкурирует с такими сервисами как Midjourney для генерации изображений и Canva для дизайна, но предлагает комплексный подход к созданию брендинга.

Доступность

Инструмент запущен в веб-приложении Genspark с функцией мгновенного доступа. Сохраняется бесплатная модель использования, что выделяет сервис на фоне конкурентов с платной подпиской.

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии0

Представлен открытый проект abogen для превращения любой книги в аудиокнигу. Поддерживает много языков, качественные голоса от одной из лучших моделей KokoroTTS. Если никакой голос не подходит — можно создать свой. Простая установка.

Теги:
Всего голосов 5: ↑5 и ↓0+9
Комментарии2

Давно хотел это написать, но как будто не было триггера и вот в пятницу я его поймал. Объясняю. Хочу выразить благодарность, чуть-чуть извиниться перед разработчиками Intellij Idea и простить их. Вот прям от души.

Когда-то в детстве я 3 года отучился игре на фортепиано, но переходный возраст (пиво, футбол и девки) победил и я ушёл из музыкальной школы. К чему я.. я программист уже 8 лет и я не встречал ничего прекрасней чем Intellij Idea.. ты не разрабатываешь - ты играешь на рояле... это автодополнение или как его назвать, подсказки, я просто в шоке. Не всегда угадывает что я хочу, но часто. Триггер я поймал когда добавлял новый объект в enum вида ERROR_INFO("text") и пока строчил название объекта представлял как лезу в переводчик, чтобы точно грамотно написать на английском текст, а Идея предложила мне текст, который я хотел написать, причём не все слова были в названии объекта.. как итог я прям счастлив от такой супер приятной мелочи (не факт что мелочи) и вот спустя два дня строчу этот пост, т.к. я прям обязан это сделать, не знаю почему. Я понимаю, что нейросети, но один и тот же салат Цезарь каждый повар делает по разному.

То, от чего я прям балдею:

  • shift + f6, переименовывает всё и везде - просто песня

  • ctrl + shifr + backspace - показывает всё что я поменял в классе, а не я глазами ищу строчки

  • ctrl + e - показывает классы в порядке убывания по использованию, не ищешь в браузере слева

  • в браузере жмёшь на значок цели вверху и тебе показывается где класс лежит буквально

  • в разделе гита смотришь изменения класса, нажимаешь f4 и тебе открывается этот класс

  • супер поиск ctrl+shift+f или просто два шифта

  • работа с базами данных просто сказка (даже Дата Грип редко открываю, его тоже люблю)

  • офигенные приколы типа ctrl+d с добавлением ниже второй такой же строки, удалить строку со смещением наверх shift+del

  • быстрый переход с ошибки на следующую ошибку с помощью f2

  • ctrl+p показать все ожидаемые параметры в методе

  • ctrl+shift+вверх/вниз гоняет как строку, так и целый кусок :)

  • и ещё дофига всего!!

В общем я счастлив, что моё хобби и работа это одно и то же, а то что есть Идея счастье увеличивает. Извиниться хочу, что я ни разу не покупал подписку. Она мне досталась после прохождения какого-то курса по Java, а сейчас вообще не могу купить, т.к. технически это невозможно из РФ. Здесь я прощаю Jet Brains, без пафоса, понять можно наверное (и на царей жёны давили :) Как смогу - обязательно куплю подписку, потому что это охренеть какой труд и верх перфекционизма для меня как для такого же любителя прекрасного!! И я хотел бы знать - это один такой перфекционист у них всё таки, или целая команда (в плане, что Идея именно такая какая есть). Кто этот "фундамент" образа?

Кто скажет, что пост рекламный - вы не правы! Просто признался в любви IDE :)) и стало легче! Пашем дальше..

Теги:
Всего голосов 6: ↑5 и ↓1+6
Комментарии4

В центре Москвы стали отображаться сигналы светофоров в приложении «Яндекс Карт» — ранее технологию представили в России и тестировали в Казахстане. Официального релиза нововведения пока не было, но похоже такая опция ожидается совсем скоро.

Теги:
Всего голосов 3: ↑3 и ↓0+5
Комментарии0

Инженеры из Гонконга разработали робота‑прыгуна, способного прыгать с грузом в девять раз тяжелее себя. Устройство представляет собой квадрокоптер с закреплённой снизу ножкой, оснащённой пружиной. Двигатели коптера ускоряются по направлению к земле, что позволяет скакуну запасать больше энергии для прыжка. Благодаря этому робот массой всего 220 граммов может переносить на себе груз весом два килограмма. Чтобы робот не терял равновесие и не падал, его бортовой компьютер оснастили нейросетью. Она в реальном времени вычисляет, под каким углом и с какой ориентацией аппарату следует приземлиться.

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

Бывший топ-менеджер OpenAI и Facebook Питер Денг рассказал, что борьба за специалистов в сфере искусственного интеллекта ведет к все большему разрыву в зарплатах между исследователями и другими сотрудниками технологических компаний.

В подкасте Unsupervised Learning Денг пояснил, что компенсации ведущих специалистов растут стремительно, в то время как многие другие сотрудники, также вносящие значимый вклад в продукты и развитие компаний, получают существенно меньше. По словам Денга, «HR-отделам придётся в какой-то момент заняться этой проблемой».

Денг сравнил ведущих исследователей ИИ со спортивными звёздами, за которых IT-компании ведут ожесточённую борьбу. Подобные специалисты получают многомиллионные контракты и предложения от крупнейших игроков — OpenA, Anthropic, Perplexity, xAI и других. Аналогии со спортом звучат все чаще: вице-президент по ИИ в Databricks Навин Рао ранее называл таких учёных «Лебронами Джеймсами» мира технологий.

Однако за пределами «первой лиги» остаётся большое количество инженеров и специалистов, чьи доходы несопоставимы с уровнем ведущих исследователей. Это создаёт риск недовольства и дисбаланса внутри компаний.

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии0

ImageSorcery 01 - Как я свой open source вайбкодил

Скажу честно, я хотел написать статью, для того чтобы рассказать о своём проекте ImageSorcery MCP. Но не хотелось писать рекламный BS о том какой он крутой. Хотелось сделать месседж более личным и искренним. Так статья превратилась в серию постов-заметок о всех тех граблях инструментах и практиках, которые мне удалось попробовать на пути от идеи до 100+ звёзд на гитхабе и ~100 ежедневных установок с pypi. А так как я фанатик экономии, весь стек в основном бесплатный (включая LLM) и часто не самый популярный.

Рост звёзд на гитхабе
Рост звёзд на гитхабе

В компании где я работаю, у меня сложилась репутация, как это принято сейчас говорить, ИИ-энтузиаста. Из-за чего ко мне однажды обратилась Системный Аналитик, которая только начала внедрять RooCode и столкнулась с какой-то проблемой полнейшего тупняка ИИ. Бесплатная веб версия Claude на раз два превращала Верхнеуровневые Бизнес Требования заказчика в детально проработанное Техническое Задание. Но копировать туда-сюда - не продуктивно, а ещё лимиты эти… Решилась она попробовать рекомендованный мною RooCode с Gemini flash. Установила впервые IDE VSCode, запустила и поставила плагин RooCode, подключила Gemini модель и попыталась скормить ему ту же задачу, но в ответ получила какой-то откровенный бред. Вместе мы выяснили, что для адекватной работы RooCode (а ещё его предшественника Cline и, скорее всего, последователя Kilo Code) требуется не просто запустить VSCode, но ещё и создать в нём проект с соответствующей директорий где-то в системе. А если ещё и все материалы сложить в эту директорию - их можно не копипастить и даже не драгндропать, а меньшонить через @ что намного удобней. (Даже мне стало плохо от обилия англицизмов в этом предложении, извините). Кроме того, выяснилось, что промпт содержал помимо текста ещё ссылку на Figma дизайн. А RooCode, несмотря на то что может используя браузер, какую-то осмысленную деятельность с этой ссылкой вести. При наличии у него Figma MCP справляется гораздо эффективнее.

И теперь бесплатный Gemini flash под капотом RooCode засиял во всей красе. Промпты стали проще и читаемей. И благодаря доступу ко всем необходимым файлам (ВБТ и шаблон) и инструментам, RooCode ваншотом не просто создал качественное ТЗ в формате markdown (привет markdown preview плагин), но ещё и наполнил его нужными скриншотами прямо в теле документа, чего Claude не мог. 

Вот только осталась одна проблема: он использовал скриншоты целых экранов, и не смог их порезать на кусочки для документирования соответствующих секций: шапка, меню т.п.

Фигня война! - сказал я, — наверняка есть MCP который это делает. 

Погуглив вместе минут 15 мы обнаружили, что такого нет. Но так как нарезка экранов на скриншоты - привычная для системного аналитика задача, она поблагодарила меня за получившийся результат и убежала на другой звонок. А я остался сидеть глядя в пустой монитор с непониманием, почему такая простая и очевидная задача ещё не решена.

Так появилась идея ImageWizard - взять ImageMagic и прикрутить к нему MCP протокол.

А почему сейчас проект и называется иначе и никакой связи с ImageMagic не имеет, расскажу в следующей серии.

Теги:
Всего голосов 3: ↑1 и ↓2+1
Комментарии0

AI-синхронизация губ: от Wav2Lip до коммерческих решений

Технологии автоматической синхронизации движений губ с аудио перешли от исследовательских проектов к готовым продуктам. Современные сервисы создают реалистичное видео за секунды, где персонаж произносит любой текст с сохранением деталей лица.

Ключевые прорывы

Wav2Lip (2020, IIT Hyderabad) стал первой моделью, работающей без предварительного обучения на конкретном человеке. Исследование показало возможность генерации синхронизированного видео на основе GAN-архитектуры с дискриминатором, обученным отличать реальные движения губ от синтетических.

FaceFormer от Microsoft Research (2022) применил трансформерную архитектуру. Модель использует 6-слойный Transformer для обработки MFCC-признаков аудио и генерирует 768 3D-точек лицевых landmarks с учетом временных зависимостей.

Коммерческие решения

Lipsync 2.0 от Sync Labs работает как zero-shot модель без настройки. Поддерживает обработку видео с несколькими говорящими в кадре.

D-ID Creative Reality Studio генерирует говорящие аватары из статичных фото, ограничен 5-минутными роликами в базовой версии.

Synthesia ориентирована на корпоративный сегмент с готовыми AI-аватарами. Стоимость от $30/месяц за 10 минут видео.

Технические характеристики

Производительность:

  • CPU Intel i7: 1 секунда видео за 30-45 секунд обработки

  • GPU RTX 3060: соотношение 1:3

  • GPU RTX 4090: близко к real-time (1:1.2)

Метрики качества:

  • LSE-D (точность синхронизации): лучшие модели <8.0

  • SSIM (сохранение деталей): целевое значение >0.85

  • FID (реалистичность): оценка качества генерации

Практические применения

Стриминговые платформы: Netflix автоматизирует дубляж сериалов, сокращая локализацию с 3-6 месяцев до 2-3 недель.

Образование: Coursera тестирует многоязычные версии курсов с автоматической синхронизацией губ преподавателей.

Соцсети: TikTok экспериментирует с автопереводом популярных роликов, YouTube Creator Studio планирует функцию автодубляжа к 2026 году.

Ограничения

Качество исходного материала: требует четкого видео минимум 256×256px с углом поворота головы ±30° от фронтального.

Языковые особенности: модели обучены на английском. Для агглютинативных языков (финский, турецкий) точность падает на 15-20%.

Детекция артефактов: современные детекторы находят AI-генерацию с точностью до 95% (FakeSpotter — 94.2%, Microsoft Video Authenticator — 91.8%).

Открытые инструменты

  • Wav2Lip GitHub — базовая модель с предобученными весами

  • FaceFormer — трансформерная архитектура

  • Google Colab notebooks для экспериментов без установки зависимостей

Следующее поколение моделей будет работать в реальном времени для видеозвонков и включать генерацию жестов, синхронизированных с речью.

Теги:
Всего голосов 2: ↑1 и ↓1+2
Комментарии0

Представлен сервис Kira.art, который позволяет редактировать картинки прямо в чате. Все просто: грузим картинку и описываем, что хотим получить. Никаких кистей, слоёв и прочих инструментов. Можно поменять оттенок глаз на фото, добавить или удалить фон и другие предметы, создать арт или стилизовать пикчу, например, в аниме. Внутри также есть встроенный апскейлер — бустануть качество фото можно в несколько раз. Никаких сложных промптов, диалог идёт на естественном языке.

Теги:
Всего голосов 3: ↑3 и ↓0+5
Комментарии1

Ближайшие события

Почему разработчикам опенсорсных приложений для Android может не потребоваться подтверждать свою личность

Недавно Google анонсировала, что скоро смартфоны на базе Android будут работать только с приложениями, чьи разработчики подтвердили свою личность непосредственно Google. Но как это будут проверять? Напрашивается проверка по ключам подписи, но погодите-ка…

Если вы более-менее интересуетесь опенсорсом, наверняка вы слышали про “магазин” F-Droid. Что примечательно в нём — все приложения в его главном (единственном по умолчанию) репозитории собираются из исходников и подписываются одной сущностью — F-Droid. Эта особенность делает данный источник приложений уникальным в своём роде — в Google Play или RuStore каждый разработчик собирает и подписывает приложение сам.

Если Google не передумает и действительно введёт блокировку на “анонимных” разработчиков, вполне возможно, что F-Droid просто создаст единый аккаунт для своего ключа подписи, и продолжит спокойно предоставлять приложения даже на “сертифицированных” Android-девайсах.

Но наверняка вы скажете, что там распространяются приложения, неугодные Google, и будете правы. Однако они и так ломаются каждый месяц самой же корпорацией ввиду открытых исходников этих приложений и способов парсинга контента без официального API. Так что, думаю, обойдётся.

Что думаете?

Теги:
Всего голосов 4: ↑4 и ↓0+7
Комментарии5

С учётом бурного роста популярности чат‑ботов вроде ChatGPT и того, что некоторые пользователи склонны слишком доверять информации, которую такие инструменты выдают, интересно посмотреть, откуда они её берут. Такие данные (по состоянию на июнь) есть у аналитиков Semrush по 150 тысячам цитирований.

В Visual Capitalist представили инфографику с ресурсами в сети Интернет, на которые чаще всего ссылаются ИИ‑модели вроде чат‑ботов ChatGPT. Некоторые пользователи склонны слишком доверять информации, которую такие инструменты выдают по запросу к ИИ-системам.

Самым популярным источником знаний для ИИ оказался Reddit — форум упоминается в 40% цитат. За ним с большим отрывом идёт «Википедия», дальше — YouTube и Google.

Оказалось, что ИИ-системы в основном модели полагаются на дискуссии на форумах и контент, курируемый сообществами модераторов, отмечают в Visual Capitalist. В связи с этим есть риск, что распространённые там взгляды, неточности и предвзятости могут перекочевать в ответы моделей и распространиться ещё шире.

Теги:
Всего голосов 3: ↑3 и ↓0+5
Комментарии1

ИБ-ДАЙДЖЕСТ INFOWATCH

Группировка Lab-Dookhtegan второй раз за год атаковала иранские танкеры — в результате была отключена связь на 64 судах.

У страховой компании Farmers Insurance утекли данные более 1 млн клиентов в результате кибератаки на одного из поставщиков.

Организатор автогонок NASCAR сообщил об утечке данных после кибератаки в апреле — пострадавшим клиентам предложили сервисы мониторинга кредитных отчетов на 1 или 2 года.

Власти Норвегии обвинили русских хакеров в кибератаке на плотину — после захвата управления шлюзом они устроили 4-часовой усиленный перелив воды в попытках вызвать наводнение.

В США обсуждают новую версию Закона о национальной обороне, а Евросоюз выпустил Индекс кибербезопасности ЕС с оценкой защищенности его государств-членов.

Группировка Warlock взломала ИТ-системы телеком-компании Orange в Бельгии и похитила данные 850 тыс. клиентов. А украденные данные Colt Technology Services опубликовала в дарквебе.

Итальянское правительство подтвердило, что злоумышленник mydocs похитил ПДн тысяч людей, бронировавших номера в гостиницах летом 2025 г.

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии1

Валидация RAG с помощью RAGAS — доклад на IT-конференции GoCloud Tech 2025 ☁️

Retrieval-Augmented Generation — мощный инструмент, но вы уверены, что ваш RAG действительно работает? RAGAS — это метрика, которая даст ответ. По ходу доклада разберемся, как оценивать качество генерации, релевантность документов и достоверность ответов. Поговорим о метриках и пайплайнах, а также покажем, как найти слабые места в RAG-системе до того, как это сделает пользователь.

Трек: AI&ML — про AI-продукты нашей разработки и работу с GenAI. Узнаете, как устроены RAG-системы и мультиагентные ассистенты, а также, для чего они уже применяются и как начать их использовать. 

📅 Когда: 3 сентября в 12:00 мск

👉 Зарегистрироваться

Что еще интересного будет на GoCloud Tech, смотрите в программе конференции.

Теги:
Всего голосов 2: ↑1 и ↓1+2
Комментарии0

App Clip в деле: сделали расписание транспорта без установки приложения и лишних мегабайт

В 2ГИС мы любим эксперименты с технологиями. Когда Apple представила App Clips — мини-версии iOS-приложений, — мы начали думать, что ж сделать такое полезное, быстрое и удобное. Появилась идея: а что если показать расписание транспорта прямо на остановке, без установки приложения? Идеально для ситуации, когда нужно получить информацию в моменте.

Пилотный проект начали с Екатеринбурга — на остановках в центре города уже появились QR-коды, по которым можно мгновенно получить расписание автобусов, трамваев и троллейбусов.

Реализация: просто, но есть нюансы

У нас была цель — запустить всё быстро и без лишней сложности. Поэтому мы пошли по самому простому пути. Однако не обошлось без сюпризов: мы столкнулись с интересной особенностью сборки и дистрибуции через App Store.

Когда собирается билд, бинарь App Clip попадает в общий application bundle — вместе с ресурсами, ассетами и иконками. Мы переживали, что это увеличит размер основного приложения для пользователей.

Однако на этапе загрузки в App Store Connect происходит app thinning (slicing) — бинарь анализируется и оптимизируется на стороне App Store. Получается, что из финальной сборки, доступной пользователю, App Clip удаляется. В результате конечный IPA, который скачивает пользователь, не увеличивается в размере, несмотря на то, что в исходном проекте ресурсы App Clip действительно включены в общий bundle.

Чтобы убедиться в этом, мы проверили это на практике:

  1. Собрали билд, в котором бинарь App Clip действительно оказался в общем application bundle.

  2. Загрузили его в App Store Connect.

  3. После релиза скачали IPA напрямую из App Store и проанализировали содержимое.

Результат: в финальном бинаре bundle App Clip отсутствует. Пользователи получают приложение без дополнительного груза, а размер основного приложения не растёт. К слову, в официальной документации Apple этот момент описан довольно туманно, так что мы решили проверить всё на себе.

App Clips считаются не самой популярной фичей, но всё же было интересно покопаться, собрать, выкатить и посмотреть, как это работает в реальности.

Если вы пробовали App Clips — расскажите про свой опыт! Может, нашли нестандартные подходы или столкнулись с подводными камнями, о которых стоит знать другим?

Теги:
Всего голосов 7: ↑7 и ↓0+9
Комментарии0

Исследователи из Чикагского и Роттердамского университетов выяснили на базе изучения данных 67 тыс. собеседований, что при большой загрузке и текучке голосовые ИИ‑агенты более эффективно отбирают кандидатов на работу, чем люди.

Проблема человеческого фактора в рекрутинге — это усталость, предвзятость и непоследовательность.

Рекрутеры‑люди могут забывать задавать ключевые вопросы, особенно при массовом подборе. Исследование показало, что ИИ‑агенты, в отличие от людей, всегда придерживаются сценария, охватывая значительно больше важных тем. В результате у нанимающих менеджеров оказывается больше релевантной информации для принятия решения, а усталость, предвзятость и непоследовательность рекрутёров‑людей наоборот игнорируется с помощью ИИ.

Хотя ИИ‑агенты ускорили процесс назначения собеседований, рекрутерам‑людям требовалось в два раза больше времени на проверку результатов таких интервью. Выгода от использования ИИ в рекрутинге зависит от масштаба. Для крупных компаний с большим потоком кандидатов и высокими зарплатами рекрутеров экономия может быть значительной. Кроме того, более качественный подбор снижает текучесть кадров, что особенно важно в таких отраслях, как колл‑центры.

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии1

В продолжение темы серверного HTML рендеринга на Kotlin.

Если вы не читали статью, кратко напомню о чём речь: я написал небольшой можно сказать фреймворк для генерации HTML на стороне сервера на Kotlin. И поддержку строготипизированных routes для удобного создания ендпоинтов, ссылок на них и форм. Теперь Spring Views можно создавать на Kotlin и по крайней мере в моих проектах (а один из них очень большой - сотни отдельных страниц и десятки виджетов) это дало мне огромное удобство, уверенность, безопасность, рефакторо-пригодность, простое версионирование и переиспользование кода, например, теперь я точно не сделаю опечатку в URI или имени параметра и не смогу передать неверный тип данных на endpoint.

Одна из проблем которые до недавнего времени была в связи с использованием данного фреймворка - это CSS-стили. Приходилось либо инлайнить стили непосредственно для HTML элемента, либо мейнтейнить огромный (или несколько поменьше) CSS файл без возможности внятно следить за старыми более неиспользуемыми классами и селекторами. Кто создавал большие CSS файлы знает о чём я говорю - со временем количество классов накапливается и вычистить их не задев чего-то всё ещё нужного очень сложно. Вот так приходилось работать с CSS стилями раньше:

DIV("css-class-name") {...}
// или
DIV {
  style("color: red;")
  +"Hello World"
}

В принципе жить можно, но хотелось чего-нибудь:

  • что-то на подобии Styled-Components из ReactJS, но так же на Kotlin

  • по возможности поддержку JVM hot-reload в режиме отладки

  • как следствие кода на Kotlin - иметь возможность всегда отслеживать зависимости и удалять более неиспользующиеся CSS-правила.

Долго думал как это получше сделать, и пока что первая версия получила вот такой синтаксис:

@Component // Spring @Component
object MyCssClass : CssClass({
  style = "color: black;"
  hover = """
    color: red;
    text-decoration: underline;
  """
})

...

A(MyCssClass) {
  href(SomeUsefulRoute(param = 1))
  +"Click me"
}

То есть объявляем object который будет нести информацию о CSS свойствах элемента. И далее просто используем его в тех же местах где раньше можно было указать css-class-name. CssClass поддерживает массу "псевдоклассов" типа hover, active, firstOfType, before, after и так далее, так же можно добавлять media брейкпоинты и всякие другие штуки. Вот более насыщенный пример:

@Component
object Container : CssClass({
    style = "padding: 25px;"
    hover = "background: #eee;"

    add(">a", "color: green;")
    add(">a:hover", "text-decoration: underline;")

    media("max-width: 991px") {
        style = "padding: 10px;"
    }
})

Вы наверняка заметили двойные скобочки ({...}) - в конструктор я передаю функцию-инициализатор стилей. Это нужно для того, чтобы в дебаг режиме JVM можно было на лету менять свойства CSS класса без перезапуска приложения: код который генерирует сам css-файл может быть запущен в режиме dev-mode, когда на каждый запрос файла будут выполнены все функции-инициализаторы ещё раз и файл будет собран заново.

Если по какой-то причине вам не нравится object - можно просто объявить class и использовать его:

@Component
class Container : CssClass({...})
...
DIV(Container::class) { ... }

Теперь в проекте порядок с CSS стилями - нет давно умерших, всегда можно найти точки использования, стили лежат рядом с виджетами и т.п.

Смотрите исходники тут. Фидбэк приветствуется, всем хорошего дня.

Теги:
Всего голосов 4: ↑4 и ↓0+6
Комментарии4