All streams
Search
Write a publication
Pull to refresh
12
0
Александр Шатилов @alexbraun

Tech Lead using Angular & .net

Send message

Йога глазами дата-сайентиста: как мы строили computer vision в мобильном приложении

Reading time10 min
Views14K

Привет! Я Денис Соколов, руковожу R&D в Zenia Yoga — первом приложении для йоги на основе ИИ. В этой статье я расскажу, из чего состоит современная система, работающая с компьютерным зрением: как влияет каждый элемент пайплайна на конечный результат, который видит пользователь. Мы пошагово разберем создание модели для human pose estimation и сравним ее с готовыми «коробочными» решениями от производителей мобильных платформ, а также открытыми аналогами.

Читать далее

Разбираем алгоритмы компьютерной графики. Часть 1 — «Starfield Simulation»

Reading time7 min
Views18K

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

Действовать буду по следующему принципу: беру какой-либо графический эффект (из демо, программы, игры – не важно) и пытаюсь реализовать этот же эффект максимально простым и понятным способом, разъясняя что, как и почему сделано именно так.

В качестве основы для вывода графики будет использован язык Python и библиотека PyGame. Этим набором можно очень просто что-то выдать на экран, сделать анимацию и т.п. не отвлекаясь на технические детали реализации.

Читать далее

Когнитивные искажения, о которых стоит помнить

Reading time15 min
Views99K

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

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

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

Читать далее

Полное понимание асинхронности в браузере

Reading time24 min
Views145K
Про асинхронность JavaScript написано много статей, документации и книг. Но вся информация сильно распределена по интернету, поэтому сложно быстро и полностью разобраться, что к чему, и составить цельную картину в голове. Не хватает одного исчерпывающего гайда. Именно эту потребность я и хочу закрыть своей статьёй.

Читать дальше →

Micro Frontend Архитектура на примере Angular

Reading time13 min
Views21K
В наше цифровое время веб-приложения становятся все более масштабней и сложней. Такие веб-приложения могут быть разделены на несколько модулей, разработанных отдельными командами, которые удобно запускать в производство по отдельности.

По мере того, как приложения со временем усложняются, требуя масштабируемости «на лету» и высокой скорости реагирования, архитектура микро-фронтенд, основанная на компонентах Angular, становится все более эффективным решением для сложных веб-приложений.

Микро-фронтенд — это архитектура, которая рассматривает веб-приложение как набор приложений, разрабатываемых отдельными командами. Каждая команда специализируется на определенной области бизнеса или цели. Такая кросс-функциональная команда создает функциональность сверху донизу, от сервера до пользовательского интерфейса.

Плюсы микро-фронтенд архитектуры


  • Автоматизация CI /CD. Поскольку каждое приложение интегрируется и развертывается независимо, это упрощает CI/CD. Так как все модули разделены, то не нужно беспокоиться обо всем приложении при внедрении нового модуля. Если в коде модуля есть ошибка, CI/CD прервет весь процесс сборки.
    Гибкость команд разработчиков. Многочисленные команды могут разрабатывать и развивать информационные системы, работая по отдельности.
  • Единая ответственность. Каждая команда микро-фронтеда на 100% фокусируется на функциональности своего микро-фронтенд приложения.
  • Возможность повторного использования. Микро-фронтенд приложение может быть повторно использовано несколькими командами в разных системах.
  • Технологический агностицизм. Архитектура микро-фронтенд не зависит от технологии. Возможно использовать компоненты, разработанные на разных фреймворков веб-разработки (React, Vue, Angular и т.д.).
  • Простой порог входа в систему. Небольшие модули легче изучать и понимать новым разработчикам, входящим в команды, чем монолитную архитектуру с огромной структурой кода.

Читать дальше →

Мой опыт с Webpack 5 Module Federation

Level of difficultyMedium
Reading time11 min
Views18K

Всем привет. Меня зовут Михаил, я - фронтенд-разработчик в Лиге Цифровой Экономики.

В последнее время я пробую себя в должности руководителя направления фронтенд-разработки, однако я хочу с вами поделиться опытом разработки приложения с применением Webpack Module Federation, о том, какие задачи приходилось решать и проблемы, которые возникли на этом пути. Не буду вдаваться в теорию о микрофронтах и module federation, об этом уже много написано и предполагается, что вы знакомы с базовой настройкой. Мы же поговорим о самом «вкусном», некоторые моменты будут опущены в целях сосредоточения на деталях.

Читать далее

Пакуем приложения ASP.NET Core с помощью Docker

Reading time11 min
Views125K

Приложения ASP.NET Core по-настоящему кросс-платформенны и могут запускаться в «никсах», а соответственно, и в Docker. Посмотрим, как их можно упаковать, чтобы развертывать на Linux и использовать в связке с Nginx. Подробности под катом!


Читать дальше →

Три кризиса подряд с 24 февраля: блокировки видео, баны русских аккаунтов и опенсорс-зловреды

Reading time6 min
Views11K

Период скачка проблем с видео

26 февраля у нас начались серьёзные проблемы с видеосвязью. Роскомнадзор начал замедлять трафик для Facebook (запрещённой в России организации). Если вы помните, как они блокировали Телеграм, когда из нормально работающих сервисов остался только он, то вот получилось примерно то же самое. Конкретно, как мы предполагаем, они закрывали целые подсети, и наши Янус-сервера для видео тоже попали под эти баны. Также, похоже, применялась какая-то маска по пакетам, потому что в Хроме видео отвалилось почти сразу, а вот в Firefox ещё работало. Проблемы были у всего WebRTC-сообщества.

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

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

Ну и дополнительным приятным аккордом стало то, что опенсорс-библиотеки были дискредитированы, и просто включать их, как раньше, было нельзя: некоторые контрибьютеры контаминировали их.

Пришлось заняться большой уборкой, заменой вендоров и вообще масштабно рассмотреть все возможные риски.
Читать дальше →

От Skype до WebRTC: как мы организовали видеосвязь через веб

Reading time7 min
Views19K


Видеосвязь — основной способ общения преподавателя и студента на платформе Vimbox. Мы давно отказались от Skype, перепробовали несколько сторонних решений и в итоге остановились на связке WebRTC — Janus-gateway. Некоторое время нас все устраивало, но все же некоторые негативные моменты продолжали вылезать. В итоге было создано отдельное направление по видео.


Я попросил Кирилла Рогового, руководителя нового направления, рассказать об эволюции видеосвязи в Skyeng, обнаруженных проблемах, решениях и костылях, которые мы в итоге применяли. Надеемся, статья будет полезна для компаний, также поднимающих своими силами видео через веб-приложение.

Читать дальше →

Выжимаем все соки из WebRTC для стриминга камер на примере go2rtc

Level of difficultyMedium
Reading time10 min
Views23K

Go2rtc — это open source приложение для стриминга видео в реальном времени. Оно весит всего 5 мегабайт, не имеет внешних зависимостей и работает на всех популярных ОС. Поддерживает технологии ​​RTSP, RTMP, DVRIP, HTTP-FLV, WebRTC, MSE, HLS, MJPEG, HomeKit и многие другие. Последний релиз получился настолько масштабным, что все нововведения пришлось оформлять в статью на Хабре.

Читать далее

Разработка приложения для потокового вещания с помощью Node.js и React

Reading time21 min
Views54K
Автор материала, перевод которого мы сегодня публикуем, говорит, что работает над приложением, которое позволяет организовывать потоковое вещание (стриминг) того, что происходит на рабочем столе пользователя.

image

Приложение принимает от стримера поток в формате RTMP и преобразует его в HLS-поток, который может быть воспроизведён в браузерах зрителей. В этой статье будет рассказано о том, как можно создать собственное стриминговое приложение с использованием Node.js и React. Если вы привыкли, увидев заинтересовавшую вас идею, сразу же погружаться в код, можете прямо сейчас заглянуть в этот репозиторий.
Читать дальше →

Единая точка входа с Keycloak и Яндекс в условиях большого переезда

Reading time20 min
Views21K

Так же, как и многие другие компании, мы долго и счастливо использовали целый стек популярных облачных сервисов (Github, Slack, Jira, Confluence и т.д.) и связывал это все Google Workspace, который выступал в том числе и как SSO для всех используемых сервисов.

В связи с последними событиями нам пришлось достаточно быстро искать и реализовывать альтернативу из отечественных сервисов и open source продуктов. При этом одним из требований стало использование общей с «офисными»
и почтовыми сервисами точки аутентификации.

В этой статье я расскажу о том, как мы решали задачу создания SSO поверх выбранного поставщика почтового и «офисных» сервисов для используемых нами приложений с помощью Keycloak и с какими проблемами мы при этом столкнулись.

Читать далее

Цикл постов про Keycloak. Часть первая: Внедрение

Reading time18 min
Views89K

Цикл постов про Keycloak (часть 1): Внедрение.

О чем речь?

Это первая часть серии статей о переходе на Keycloak в качестве SSO в условиях кровавого enterprise.

Читать далее

KeyCloak и микро-сервисы. Как облегчить жизнь программисту

Level of difficultyMedium
Reading time12 min
Views24K

Привет! Если ты так же как и я решил использовать keycloak для аутентификации и авторизации в своей микро‑сервисной архитектуре, то я расскажу вам как правильно настроить сам keycloak, его рабочую среду а в конце мы подключим Active Directory к нашему приложению.

Читать далее

Анонсы конференции OpenAI Dev Day: быстрее, дешевле, умнее

Reading time7 min
Views4.4K

Не так давно все с нетерпением ждали новинок от Apple, однако сегодня внимание мира приковано к другому событию – OpenAI Dev Day, презентации последних разработок ChatGPT. Несмотря на скромную подачу, в стиле “от разработчиков к разработчикам” ее влияние на будущее технологий стало масштабным с первого дня.

В соцсетях царили предположения о релизах API для новых моделей и снижении стоимости GPT-4, о чем Сэм Альтман, CEO OpenAI, говорил еще летом. И предвкушение оправдалось – результаты превысили ожидания кратно.

Начнём с того, что не было на конференции: GPT-5 не анонсировали, так что завтра Скайнет нас ещё не захватит — можно вздохнуть свободнее. А теперь — к тому, что было представлено и что это значит для нас всех?

GPT-4-turbo c большим контекстом
Старые модели стали еще доступней
Обновление знаний до апреля 2023 года
Whisper v3 и синтез речи
Ассистенты, маркетплейс

Под КАТом больше деталей и новостей.

Читать далее

ChatGPT для разработчиков: API, лимиты, как втягивать в него базу знаний, что нельзя сделать, что лучше делать осторожно

Reading time12 min
Views38K
image

Мы с командой вернулись тут с Хайлоада, и там даже CTO крупных компаний задают много вопросов про разработку с LLM. Наша компания занимается прикладной разработкой всего того, что касается GPT/LLM.

Расскажу про очевидные вещи, о которых у меня там спрашивали CTO и разработчики.

Самый частый вопрос: можно ли подключать свою базу документов и можно ли по ней нормально работать?

Можно. Для этого нужно две вещи:

  1. OpenAI может работать с вашей базой, например, вики техподдержки, но её надо векторизовать. Получится, что модель только ищет по ней и может отвечать фрагментом исходника, но может его обрабатывать как текст (то есть сравнивать, анализировать и тому подобное).
  2. Дальше можно использовать подход QA Retrieval Chain для работы с векторной базой. Работает это так: задаём вопрос, LLM формируют запрос к векторной базе, мы вынимаем из неё данные, подкладываем их в вопрос как контекст и передаём в LLM, а они формируют ответ.

Но давайте начнём сначала. Основное:

  1. Какого размера промпты могут быть, сколько, какие лимиты, как их частично обходить.
  2. Как подключается база, как закидывать реально большие документы, как эмбеддится вектор, на каких языках это происходит и тому подобное.
  3. Разные API.
  4. Агентная модель GPT Engineer и АutoGPT.
  5. Фреймворк лангчейн (построение цепочек запросов и разбиение макрозапроса на сотни).

Поехали!
Читать дальше →

Реализация моделей seq2seq в Tensorflow

Reading time20 min
Views13K

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


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

Читать дальше →

Работа с геолокациями в режиме highload

Reading time6 min
Views61K
При разработке ПО часто возникают интересные задачи. Одна из таких: работа с гео-координатами пользователей. Если вашим сервисом пользуются миллионы пользователей и запросы к РСУБД происходят часто, то выбор алгоритма играет важную роль. О том как оптимально обрабатывать большое количество запросов и искать ближайшие гео-позиции рассказано под катом.

image
Читать дальше →

Ломаем и чиним etcd-кластер

Reading time7 min
Views63K

etcd — это быстрая, надёжная и устойчивая к сбоям key-value база данных. Она лежит в основе Kubernetes и является неотъемлемой частью control-plane, именно поэтому критически важно уметь бэкапить и восстанавливать работоспособность как отдельных нод, так и всего etcd-кластера.

В предыдущей статье мы подробно рассмотрели перегенерацию SSL-сертификатов и static-манифестов для Kubernetes, а также вопросы связанные c восстановлением работоспособности Kubernetes-кластера. Эта статья будет посвящена целиком и полностью восстановлению etcd.

Поехали! ┬─┬ ノ( ゜-゜ノ)

Как работает ViewEncapsulation и ng-deep в Angular

Reading time6 min
Views17K

Перевод (а точнее оригинал) моей статьи опубликованной здесь

Многие Angular разработчики и верстальщики, пишущие CSS/SCSS код в Angular-приложениях сталкивались с ситуацией, когда надо применить стили к компоненту вложенному в текущий и не до конца разобравшись как это работает, выключали инкапсуляцию стилей или добавляли ng-deep, при этом не учитывая некоторых нюансов, что в последствии приводит к проблемам. В данной статье я попытаюсь максимально просто и сжато изложить все детали.

Когда у компонента включена инкапсуляция стилей (по умолчанию она включена и в большинстве случаев стоит оставить ее включенной), стили содержащиеся в файле\файлах стилей компонента будут применяться только к элементам этого компонента. Это очень удобно, вам не нужно следить за уникальностью селекторов, не нужно использовать БЭМ или придумывать длинные имена классов и следить за их уникальностью, хотя вы по-прежнему можете это делать, если хотите. Во время компиляции проекта Angular сам добавит к каждому элементу уникальный атрибут, например, _ngcontent-ool-c142 и заменит ваш класс .my-class на .my-class[_ngcontent-ool-c142] (это в случае ViewEncapsulation.Emulated, которая включена по умолчанию, если вы укажете `ViewEncapsulation.ShadowDom`, поведение будет другое, но результат тот же).

Теперь давайте представим, что у нас есть компонент ComponentA

Читать далее

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity