Всем привет! Мы — Павел и Даниил, ведущие разработчики компании ITFB Group. У компании два собственных продукта — ЕСМ/CSP/BPM-платформа СИМФОНИЯ (документооборот, хранение контента, архив, портал) и система распознавания/обработки документов ITFB EasyDoc. Пару месяцев назад к нам прилетела задача интегрировать ряд функций распознавания из продукта ITFB EasyDoc и оформить их в отдельный модуль платформы СИМФОНИЯ, дабы пользователь всё делал в одном месте и не дрейфовал по разным системам. Однако возникла загвоздка: СИМФОНИЯ — на React, а ITFB EasyDoc — на Vue. Для решения вопроса посерчили различные источники информации и плавно ушли в собственное творчество, поскольку не обнаружили стоящих вариантов с вменяемой технической детализацией. В какой-то момент возникло острое желание поделиться нашими итоговыми наработками на Хабре и заполнить пробелы базы знаний в интернете по этому вопросу. Всем, кому интересно увидеть наше решение, добро пожаловать под кат)
Разработка
Новости
Вышел релиз GitLab 16.9 с расширенным доступом к бета-версии Duo Chat
Мы с радостью объявляем о релизе GitLab 16.9 с GitLab Duo Chat, доступном для Premium пользователей SaaS и в инстансах с самостоятельным управлением! Также появилась возможность запрашивать изменения в мерж-реквесте без блокировки мержа, улучшенный интерфейс страницы переменных CI/CD, новые настройки для автоматической отмены конвейеров и многие другие фичи!
Когда ни туда, ни сюда, или в поисках оптимальной границы Domain слоя
Слой Application - это не только про оркестрацию, но еще немного про бизнес-логику. Следует это простить и принять внутри себя. А иначе попытки продвинуться дальше в написании кода съедят программиста-перфекциониста живьем.
Можно долго искать решения, читать различные комментарии и книги про разделение бизнес-логики от приложения. И все равно ваша конкретная ситуация будет казаться вам уникальной, как будто ничего нельзя сделать либо надо снова переписывать Domain слой, дабы ни одно зернышко бизнес-логики не выпало за его пределы. А можно просто закрыть глаза на некоторые моменты, забыть об идеале и спать спокойно, рассчитывая, что все чудесным образом само разрулится.
KD+SM Uplift Modeling. Часть 2. T-Learner. Субпопуляции и Дивергенции
В предыдущей (вводной) статье мы дали определения и математическое описание базовым понятиям связанным с Uplift моделированием. Рассмотрели принцип работы популярных Uplift моделей и их недостатки, а так же установили, как мы рассчитываем итоговый инкремент , дали определения контрольной и тестовой группам. А так же условились, что же такое воздействие на пользователя .
Среди проблем с которыми сталкиваются современные Uplif модели, пожалуй, самая серьезная - counterfactual sample pairs problem, рассмотренная так же в предыдущей статье.
Данная статься посвящена как раз нивелированию данной проблемы. Так как мы используем архитектуру KDSM Uplift modeling, то первые две буквы аббревиатуры (KD - Knowledge Distillation) представляют собой название модели, задача которой является создание подмножеств генерального множества, таким образом чтобы минимизировать или же по крайней мери свести к минимуму влияния counterfactual sample pairs problem на результат и точность итоговой модели. Само по себе слово Distillation намекает, что мы будем стремиться стратифицировать множество таким образом, чтобы можно было найти “похожих” друг на друга пользователей и из и соответственно, объединить их в одно подмножество, чтобы в дальнейшем можно было сделать допущение, что и представляют из себя уже единого синтетического пользователя . Где пользователь вместе с его параметрами выполняет роль пользователя, с которым мы не взаимодействовали , а пользователь вместе с его параметрами выполняет роль пользователя , с которым мы провзаимодействовали .
Истории
Межсервисная авторизация в Авито PaaS
Антон Губарев, инженер в Avito PaaS, рассказал, как реализовать межсервисную авторизацию на 2500 сервисов и ничего не сломать.
Улучшаем свой код на Python
Жизнь — это бесконечное совершенствование. Считать себя совершенным — значит убить себя. (Георг Гегель)
Для кого статья:
• для начинающих специалистов - подглядеть пару конструкций
• для среднеопытных - порадовать свою самооценку
Странный и очень прибыльный мир конкурсов писателей-киберпреступников
Соревнования на форумах киберпреступников в Рунете обещают призовые до 80 тысяч долларов. Всё это происходит почти в открытую, а победителей потом хантят к себе хакерские сообщества. Слышали ли вы об этом секрете Полишинеля?
На всякий случай ссылки давать не буду. И заходить на эти сайты не рекомендую, если у вас нет хороших антивирусов. Но если кто-то об этой истории не знал, велком.
Простой учет оборудования в TeamDo: как проводить инвентаризацию не затратно
Какая еще «инвентаризация»? Это вот та самая инвентаризация, когда пересчитывают стулья в кабинете и наклеивают инвентаризационные номерки? Вы серьезно?! Да, коллеги, именно такая и, конечно, серьезно. Инвентаризация как один из факторов учета материальных и нематериальных активов и инвентаризация как организованный процесс.
В крупных торговых компаниях инвентаризация товарно-материальных ценностей проводится регулярно и никого не удивляет — это важная, значимая и даже обыденная часть работы кладовщиков, продавцов, линейных сотрудников и менеджеров. В небольших компаниях и особенно в ИТ-компаниях наоборот это уже совершенно забытое слово. И совершенно напрасно. Именно инвентаризация может порой дать самую точную картину по суммарной стоимости инфраструктуры компании, по совокупной стоимости офиса и тем самым может ощутимо дополнить общую финансовую картину для руководителей компании.
SwiftUI уроки (часть 2)
Если вы уже ознакомились с первой частью, то у вас есть базовое понимание что из себя представляет SUI и знаете как отобразить текстовый контент, в этой части давайте познакомимся с элементом отображающим изображения.
Оживляем контроллер машиниста от ушедшего в историю электропоезда
Пожалуй, самой желанной для меня железкой на транспортную тему был контроллер машиниста от какого-нибудь поезда. Но, как это часто бывает, достать такой экземпляр не так уж и просто.
И вот наконец в мои руки попал не просто какой-то контроллер, а очень примечательный экземпляр — от «концептуальной» электрички ЭМ2И, коих в наши дни уже не осталось.
Итак, в сегодняшней статье поговорим о том, как устроен такой контроллер и как его подключить. Традиционно будет много интересного.
Задача Эйнштейна. ChatGPT, YaGPT2, Gigachat, Mistral Large
Захотелось сравнить, как разные GPT-подобные системы справляются с задачкой из категории «сложновато».
Что такое СУБД Greenplum? Зачем она нужна в больших проектах DWH? Чем отличается от ClickHouse?
Ошибки в построении DWH возникают не только в результате того, что первоначально не были учтены возможные изменения в бизнес-процессах, потребностях и целях компании, но и из-за некорректного выбора стека технологий и СУБД.
Порядок хранения данных выбирается в соответствии с разными сценариями работы - запросами, разным объемом данных, количеством транзакций, необходимостью обновлений данных.
В статье читайте о СУБД Greenplum и о том, в каких случаях строить хранилища на ее основе.
На словах ты Лев Толстой, а на деле не можешь развернуть Nginx в Kubernetes
Как понять на собеседовании, что человек действительно умеет что-то делать руками, а не просто красиво говорит?
В статье расскажу, как мы сделали аналог онлайн-код-интервью для DevOps-инженеров, чтобы точно увидеть уровень навыков и заинтересовать инженеров интересными задачами.
Ближайшие события
Играем в ReactOS
Всем привет, дорогие друзья. В этой статье я хочу поделиться результатами тестов игр в ReactOS. Сразу отмечу, раз ReactOS, на данный момент стремится к совместимости с Windows Server 2003 (серверная версия Windows XP), то и игры, соответственно нужно тестировать той эпохи.
Тестирование я проводил в VirtualBox с установленным аудиодрайвером. Но как только у меня дойдут руки поставить ReactOS на реальную железку (у меня есть одна, на которую система ставится) я запущу все эти игры на ней.
Инструмент подбора оттенков для покраски миниатюр. Часть 1: теория
Эта короткая статья посвящена приблизительному описанию того, что происходит в моём инструменте для смешивания красок.
Инструмент предназначен для виртуального смешения красок, он содержит солвер, генерирующий рецепты для создания цвета из имеющихся красок. Инструмент поставляется с замеренными мной данными для красок Kimera. Он написан на Python 3; в репозитории есть все исходники, и если у вас есть дистрибутив Python, то его можно просто запустить. Также в репозитории есть исполняемый файл Windows, созданный при помощи PyInstaller (см. раздел Releases справа). Ещё я добавил версию для Mac; это файл .dmg и в нём что-то есть, а если нажать на него, инструмент запустится, так что, кажется, всё работает. Но, честно говоря, я редко пользуюсь Mac, поэтому мне сложно сказать, есть ли там всё нужное, или требуется что-то ещё...
Вы можете просто скачать инструмент и экспериментировать с ним. Развлекайтесь, надеюсь, он покажется вам хоть немного полезным.
Ниже представлено более-менее полное описание его работы (и условия, при которых он не работает).
(Не) безопасный дайджест: мегаутечки, дипфейк-созвон и атака шифровальщиков
Для нескучных выходных в традиционном дайджесте собрали подборку ИБ-факапов месяца. В февральской подборке рассказываем о том, как дипфейки развели финансиста транснациональной компании на миллионы долларов, сотрудник обанкротил издание с 40-летней историей, а данные чуть ли не каждого второго француза оказались в руках хакеров.
Путь от преподавателя английского к AI Product Manager
Всем привет, меня зовут Оля Шерстюк, раньше я была преподавателем английского языка, но начиная с 2023 года решила поменять свою деятельность и перейти в IT, сейчас я учусь в магистратуре AI Talent Hub. Хочу поделиться с вами своей историей.
В 2023 я зачеркивала дни в календаре, приходя с работы в Сверхновой школе в Питере. Несмотря на то, что это было самое лучшее из всех мест, где мне удалось поработать, всё сложилось так, что на 5-м году преподавания я уже просто выгорела. Работа учителя — это самая недооцениваемая и ресурсозатратная деятельность, которую только можно придумать.
Однажды я прочитала статью про применение искусственного интеллекта в декодировании языка животных в The New Yorker, одновременно всё большую популярность приобретал Chat GPT, и меня затянуло в новое и неизведанное.
Погуглив, я узнала, какой язык программирования нужен, чтобы прикоснуться к ИИ, посмотрела, какие есть курсы.
Начала с «Основ программирования» в учебном центре при ИТМО, курс понравился благодаря молодому и энергичному преподавателю, и я решила взяться за переквалификацию на Python-разработчика в этом же центре. Совмещать с работой было очень тяжело, ведь параллельно я ещё и проходила Nexign Bootcamp в надежде попасть к ним на стажировку, но, к сожалению, меня туда не взяли.
Из книг мне на тот момент помогли составить картину и приблизиться к IT вот эти две — «Говорят, в IT много платят» Елены Правдиной из Яндекса про изнанку жизни женщины-разработчика и «Разработка требований к программному обеспечению» Карла Вигерса.
Wasm vs Docker containers vs Kubernetes vs serverless: битва за первенство
В начале года на YouTube-канале DevOps Toolkit вышло видео с разбором WebAssembly. Автором ролика является Виктор Фарчич (Viktor Farcic) — developer advocate в Upbound, член CNCF Ambassadors, Google Developer Experts, CDF Ambassadors и GitHub Stars.
Мы перевели видео про WebAssembly в текстовый формат и адаптировали для лучшего понимания. В нём автор разбирает, что такое WebAssembly, стоит ли использовать его в браузерах и кластерах Kubernetes или вообще заменить Kubernetes и прочее.
REST API сервер на Bash с использованием сокетов и Apache
Всем привет! Ранее рассказывал о том, как создать REST API и Web-сервер на PowerShell для Windows, а также упоминал, что подобный сервер будет работать и в системе Linux, благодаря кроссплатформенной версии PowerShell Core. Безусловно, для подобных целей лучше используются специализированные серверные фреймворки или библиотеки, такие как Flask
или Django
в Python
, но меня не покидала идея реализации похожего сервера, где описание логики будет производиться на языке одного только Bash. Приведу примеры, с помощью которых можно создать такой сервер используя сетевые сокеты netcat
, socat
и ncat
, а также веб-сервера Apache
с использованием встроенных модулей.
Подмена функций стандартной библиотеки PHP с помощью xepozz/internal-mocker
Как в PHP заставить функции из стандартной библиотеки, например \time()
или \date()
выдать нужный результат?
С помощью инструмента xepozz/internal-mocker такое возможно сделать. Для этого необходимо выполнить несколько подготовительных шагов и можно запускать тесты в любом окружении.