Как реализовать функциональность перетаскивания с помощью React Beautiful Dnd
Овладейте искусством создания бесшовных и визуально привлекательных взаимодействий с перетаскиванием в React-приложениях с помощью библиотеки React Beautiful Dnd.
Визуальная иерархия в дизайне
Что такое визуальная иерархия, и почему она так важна? Подробно опишем способы ее создания и поделимся советами.
Применение пустого пространства в UI-дизайне
Хороший UI-дизайн — это продуманное применение пустого пространства во всех масштабах интерфейса: от элемента до страницы. Если пустое пространство правильно использовано, в результате получается...
Веб-скрейпинг с помощью Python и BeautifulSoup
Получение данных из Всемирной паутины может оказаться трудоемким и времязатратным процессом. Но подобные задачи можно легко автоматизировать с помощью технологии веб-скрейпинга. Поговорим о том, как извлекать данные с сайтов с помощью Python и библиотеки BeautifulSoup.
Руководство бэкенд-разработчика по тестированию компонентов на Vue.js
Мне как бэкенд-разработчику, использующему Vue, быстро стало понятно: модульное тестирование сыграет решающую роль в успехе продукта. Разработка пользовательского интерфейса казалась похожей на игру “поймай...
Как использовать дизайн-токены в React — опыт команды Bit
Использование дизайн-токенов в проектируемой системе компонентов React дает разработчикам как минимум два бонуса - идеальную согласованность пользовательского интерфейса и продуктивное сотрудничество с командой дизайнеров.
Как использовать JavaScript для сокращения HTML-кода
Как написать эффективный и легкий для отладки код? Это задача, над которой бьются многие программисты. Одним из ее решений является использование JavaScript. Посмотрите, как это можно сделать, на примере создания сайта-блога.
Как JavaScript повзрослел и стал настоящим языком
Мало кто представлял себе, что этот язык превратится в профессиональную платформу
Если ещё лет 20 назад вы бы сказали, что JavaScript станет одним из самых...
Как очистить код с помощью SASS
Итак, давайте знакомиться с SASS
SASS (Syntactically Awesome StyleSheets — Синтаксически потрясающие таблицы стилей) является препроцессорным скрипт-языком, код которого компилируется в CSS, чтобы быть понятым браузерам. У SASS...
Оптимизация размера Angular bundle за 4 шага
Вам доводилось получать жалобы на слишком медленную загрузку веб-приложения или получать задачу “оптимизировать производительность” медленного приложения? Множество тем посвящено производительности приложений: отложенная загрузка, отслеживание...
Улучшите производительность с помощью веб-воркеров
Введение
В этой статье мы рассмотрим, как использовать веб-воркеры для повышения производительности при запуске. Примеры будут в приложении Angular 8 — с ним проще начать работать с...
4 главных тренда в веб-хостинге в этом году
Самый важный шаг сделан: вы вступили на тропу предпринимательства и открыли собственный бизнес, теперь вы сам себе начальник. Но подождите, кое-что вы все-таки забыли!...
Проект инженерии данных с DAG Airflow «от и до». Часть 1
В реальном проекте валидации электронной почты проиллюстрируем потоковую передачу данных с отправителем и получением сообщений в теме Kafka для Cassandra и MongoDB. Наличие почты и пароля определим с помощью получателя и проверки данных.
Платформы Angular в деталях. Часть 2. Процесс начальной загрузки приложения
Часть 1, Часть 2
Фреймворк Angular был задуман платформенно-независимым. Такой подход позволяет запускать Angular-приложения в разных средах: в браузере, сервере, веб-воркере и даже на мобильных...
Запускаем ваш первый веб-сайт на Rails + React
Поздравляем, вы создали свое первое full-stack веб-приложение и теперь хотите выложить его в Интернет, чтобы показать своим друзьям, семье и будущим работодателям. С помощью...
Создание компонента Timeline с React
При работе над новой страницей своего веб-сайта я решил добавить Timeline, чтобы показать свои профессиональные достижения за последние годы. С помощью временной шкалы можно...
6 проверенных методов повышения безопасности Node.js
Беспокоитесь о том, как защитить приложения от рисков вредоносных атак? Предлагаем ознакомиться с шестью надежными способами повышения безопасности Node.js.
Почему каркасы бесполезны?
Мы никогда не были большими фанатами каркасов, поэтому распрощаться с ними не было для нас проблемой. Мы избавились от них раз и навсегда, когда...
Автоматизация и масштабирование инфраструктуры приложений с Docker Swarm и AWS
Выполним оркестрацию и развертывание высокодоступной, отказоустойчивой 3-уровневой архитектуры веб-приложения с Docker Swarm и тремя службами. Добавим четвертую службу и смоделируем сбой рабочего узла.
Как создать простую функцию AWS Lambda с помощью TypeScript
Для написания функции Lambda обычно используется Node.js. Однако JavaScript вызывает сложности из-за отсутствия проверки типов и отладки кода. Чтобы их избежать, научимся писать функции AWS Lambda, применяя TypeScript.
Как разработать логотип: руководство для новичков
Логотип является неотъемлемой частью любого бренда и оказывает существенное влияние на то, как клиенты будут воспринимать ваш бренд. Поэтому, когда дело доходит до создания...
Структура UX-дизайна: рабочий процесс и штат сотрудников
Как проходит процесс создания UX-дизайна? Подробно расскажем о функциях каждого специалиста и основных этапах работы.
Airflow и Kubernetes - лучшее решение для конвейеров данных Geoblink
Конвейеры данных в Geoblink
Кто в Geoblink не любит видео игры! И нет смысла отрицать. Мы любим их настолько, что каждый раз называем в их честь...
Отложенная загрузка изображений с помощью Intersection Observer API
Изображения составляют огромный процент содержания веб-страниц. Однако чем больше изображений, тем медленнее загружается страница.
Большое количество изображений на сайте значительно влияет на его производительность. Отложенная...
Прототипирование с веб-компонентами: создание RSS Reader
Приготовьтесь отправиться в путешествие по изучению прототипирования приложения с помощью веб-компонентов, модулей es6, event target, bit cli и т. д. Вместе мы узнаем, как...
Почему стоит избегать динамических ссылок
Превращаем динамичные ссылки в хорошо продвигаемые статические ссылки
Так называемые “SEO-friendly” ссылки созданы для того, чтобы удовлетворить нужды поисковиков и пользователей. В мире, где правят...
Понимание врапперов в Swift
Наряду со многими новыми функциями, которые появились в Swift 5.1, одна из самых интересных — это врапперы свойств. По сути врапперы находятся между поведением свойств...
Веселимся с Angular и трансформаторами в TypeScript
Вам знакома проблема обработки подписок на RxJs вручную? Помните, как забыли одну? Или однажды подумали, что использование AsyncPipe в шаблоне будет безопасно, но...
Безопасность Node.js в продакшене: экспертные рекомендации для разработчиков
Подробно разберем передовые методы обеспечения безопасности, дадим идеи для их реализации. Попробуем выстроить многоуровневую линию обороны.
Как оптимизировать приложения на Angular
Angular — это наиболее популярный и предпочитаемый большинством фреймворк для создания одностраничных приложений. Хотя я и упомянул только про одностраничные приложения, это вовсе не означает, что...
Повторные попытки HTTP-запросов в Angular
Доступ к данным из бэкенда — основа почти каждого одностраничного приложения. Весь динамический контент загружается с сервера.
В большинстве случаев HTTP-запросы работают хорошо и возвращают желаемый результат....
Компиляция TypeScript в нативный код
Представляем Static Hermes - новое поколение движков JavaScript. Ключевой особенностью его является опциональная компиляция JavaScript с указанием типов в нативный код, обеспечивающая предсказуемую производительность на уровне C и C++.
Использование лямбда-авторизатора с AWS WebSocket
Вторая статья из серии про работу с WebSocket. Здесь мы реализуем аутентификацию, обезопасив наш WebSocket и открыв ряд дополнительных возможностей.
Kubernetes: преимущества простых кластеров
Какими же сложными стали со временем Kubernetes и облачная экосистема! Не надо далеко ходить за примером, достаточно лишь вспомнить ландшафт CNCF Landscape, на текущий...
Создание простого веб-скрейпера на Ruby
Введение
Один из лучших способов доступа к данным сайта — через его API (интерфейс прикладного программирования). Но что, если у сайта нет API? Тогда стоит...
7 самых популярных библиотек React
Оптимизируйте разработку с помощью наиболее востребованных библиотек React. По количеству звезд на GitHub они опережают остальные библиотеки, а значит на них стоит обратить внимание.
Тестирование производительности приложения в браузере Chrome
Введение
В процессе разработки часто возникает потребность протестировать в браузере производительность приложения. Такое тестирование способствует обнаружению потенциальных ошибок, замедляющих его работу. В данной статье вашему...
7 советов по очистке кода React
В этой статье собраны семь практических рекомендаций, помогающих создавать чистый и поддерживаемый код React.
Новые API интернационализации в JavaScript
Intl — глобальный объект для форматирования строк, чисел и дат с учётом языка пользователя. Он работает над отображением зависящей от языка информации.
Интернационализация — способ...
6 советов, как улучшить работу UX-дизайнера
За последнее время я помогла многим друзьям найти свое место в области дизайна пользовательского опыта. В ходе наших бесед, я вспомнила, как 10 лет...
Самые значимые психологические исследования в UX-дизайне
В этой статье будут представлены психологические исследования, которые являются ключами к пониманию человеческого познания и поведения, а также основой понимания дизайна.
Обновления в Nuxt JS 2.8.0
Nuxt JS
Nuxt — это фреймворк для создания одностраничных, статических и универсальных приложений Vue. С его помощью можно с легкостью создавать приложения на стороне сервера, поскольку в...
Представляем SafeTest: новый подход к тестированию фронтенда
Традиционные тесты пользовательского интерфейса сопряжены с определенным компромиссом. В этой статье мы поговорим о SafeTest, революционной библиотеке, которая предлагает новый взгляд на E2E-тесты для веб-приложений с пользовательским интерфейсом (UI).
React: плюсы и минусы популярной библиотеки JavaScript
React - широко используемая и мощная библиотека JavaScript для создания пользовательских интерфейсов. Рассмотрим преимущества и недостатки этой библиотеки, которые стоит учитывать, прежде чем внедрять ее в проект.
Мы забываем основы фронтенд-разработки
Почему, увлекаясь новыми подходами, мы пренебрегаем основами разработки? Может ли следование лучшим практикам лишить критического мышления? Всегда ли стоит все усложнять и оптимизировать? Поразмыслим над этими вопросами, анализируя фрагменты кода из реальных проектов.
Предложение по стандартизации сигналов для TC39
Энтузиасты JavaScript-сообщества разработали предложение по стандартизации сигналов для рассмотрения в TC39. Каждый из вас может не только ознакомиться с этим предложением, но и внести свой вклад в стандарт сигналов, тем самым расширив возможности JS-разработки.
Использование компонентов между фреймворками
Микрофронтенды становятся популярнее с каждым днем. Одна из причин заключается в том, что они предлагают способ выйти за рамки фреймворков. Однако это не единственная...
Обзор синтаксиса PHP
Данный раздел даст вам представление об основах синтаксиса PHP. Он очень важен для понимания базовых особенностей языка.
Даты-заглушки в модульных тестах на JavaSсript
Тестирование наших приложений может быть утомительным и трудоемким делом. Вот почему мы пишем автоматизированные тесты: ради того, чтобы убедиться, что наш код работает, и...
Preact вместо ручной оптимизации React-приложения
Preact предлагает оптимизацию производительности по умолчанию. Благодаря сокращению объема библиотеки и увеличению скорости, Preact позволяет сосредоточиться на разработке функций, а не на ручной оптимизации, как React.
Осторожно! Angular крадет ваше время
Angular может все — ну или почти все. Но иногда это «почти» заставляет вас тратить время на написание обходных решений или на попытки понять,...
Ускоренный запуск системы “Аутентификации + база данных” (React.js и Firebase)
Настройка интегрированной системы аутентификации и базы данных отнимает много времени у разработчиков полного цикла. Предлагаем руководство по ускоренному (и бесплатному) запуску системы React.js и Firebase (хотя оно подойдет и для разработки Next.js-приложений).
Relay для Angular
Всем привет! Сегодня я представлю вашему вниманию relay-angular, молодую инновационную библиотеку, которая доказала свою стабильность в процессе создания библиотек react-relay-offline и relay-hooks.
Признаюсь, что не...
AWS WebSocket: написание документации с помощью Async API Spec
Третья статья из серии AWS WebSocket. В ней мы напишем познакомимся с удобным написанием необходимой документации для нашего WebSocket.
Разработка веб-дэшбордов с использованием React, Material UI, Tailwind CSS и Nivo. Часть 1
Представляем вашему вниманию серию статей, посвященных визуализации и ее применению в современном IT-ландшафте. В первой части цикла расскажем, как создать динамичное и отзывчивое приложение с использованием React, Material UI, Tailwind CSS и Nivo.
5 советов по оптимизации производительности приложения NodeJS
Как оптимизировать производительность приложения NodeJS, чтобы максимально улучшить пользовательский опыт? Это один из самых частых вопросов на собеседовании. Ответить на него правильно помогут советы опытного бэкенд-инженера.
Пишите React-компоненты на профессиональном уровне
Профессионалы пишут компоненты, которые можно легко понять, удобно обслуживать и повторно использовать. Научитесь создавать такие компоненты с помощью шаблонов HOC и хуков - и ваша кодовая база выдержит испытание временем.
Проблема устаревших замыканий и способы ее решения в React. Часть 2
В этой части руководства вы узнаете, как не угодить в ловушку устаревших замыканий в распространенных скриптах React, таких как useCallback, React.memo, Ref.
Продвинутые техники PHP. Часть 2
Рассмотрим стратегии эффективной обработки ошибок, профессиональной отладки и возможностей PHP-фреймворков для быстрой разработки. Раскроем еще больше секретов PHP и пополним багаж знаний.
Основы разработки приложений: уровень клиента
Современное веб-приложение - сложный программный продукт. Обратившись к эволюции веб-приложения, в процессе которой значительно повысилось качество этого продукта, можно лучше понять принципы его работы на уровне клиента.
Nexus — новый визуализатор дерева компонентов для Next.js
Познакомимся с мощным фреймворком для разработки полного цикла от лица его создателей. Выясним его основные характеристики, принцип работы с кодовой базой и многое другое, а также узнаем, какой функционал планируется реализовать в будущем.
Как эффективно использовать TDD в React
Представляем пошаговую методику разработки кода на основе тестирования (Test-Driven Development). Эти 5 простых шагов помогут вам воспользоваться преимуществами TDD.
Три нашумевших диаграммы. Исследование JavaScript в 2018
Вы думали статистика и графики — это скука? Подумайте ещё раз…
Нашумевший — это буквально самое заезженное слово в интернете, если не считать слово «буквально». Но в этот раз — это...
Инкапсуляция состояния в JavaScript без использования классов в 2019 году (с приватными полями!)
По возможности я стараюсь избегать использования классов в Javascript, поскольку для меня более предпочтителен функциональный стиль, а не объектно-ориентированный. Однако существует одна вещь, которую...
Как не лажать с JavaScript. Часть 3
Часть 1, Часть 2, Часть 3
Изменяемое состояние
Что такое состояние? Говоря простым языком, состояние — это любые временные данные, хранящиеся в памяти. Например, это могут быть переменные...
Как загрузить 3D-модель с помощью PyWeb3D
Познакомимся с библиотекой three.js с синтаксисом Python и научимся загружать 3D-модели, используя PyWeb3D.
Как создать двойной слайдер для переключения между формой входа и формой регистрации
Описание проекта
Прежде чем мы приступим к написанию кода, я хотел бы разбить нашу главную задачу на отдельные компоненты. Это поможет сделать код более понятным.
У...
Wasp — DSL-язык для современных веб-приложений
Получив специальный доступ к альфа-версии незнакомого языка, любопытный программист сразу же начнет его тестировать. Вот что рассказывает один из разработчиков, опробовавших функционал нового языка Wasp.
Как добавить аутентификацию Supabase к приложению на Vue
Supabase - достаточно популярный аналог Firebase, который становится все более востребованным. Разберем по шагам настройку аутентификации в веб-приложении c использованием этого серверного инструмента.
Размеченные объединения в TypeScript
TypeScript предоставляет специалистам продвинутые возможности для эффективной разработки. Одной из таких функций являются размеченные объединения. Поговорим об их преимуществах и о том, как их реализовать на практике.
UI/UX дизайн прайс-листа и таблицы тарифных планов
10 лучших советов по оформлению тарифной сетки: согласованность цен с характеристиками, легкость визуального сканирования и другие практики.
Построение архитектуры данных реального времени с помощью Apache Kafka, Flink и Druid
Обработка пакетных данных в режиме реального времени - одна из наиболее сложных задач. Каждый этап, от доставки и обработки данных до их анализа, занимает определенное время. К счастью, для устранения этих задержек есть такие инструменты, как Apache Kafka, Flink и Druid.
Как работает маршрутизация Express
Как в приложении Node.js происходит обработка клиентских запросов? Какая функция помогает обрабатывать тот или иной запрос? Чтобы ответить на эти вопросы, заглянем в "закулисье" маршрутизации фреймворка Express.
Layout для Material-UI
Material-UI — одна из самых популярных библиотек компонентов react. Однако невозможно найти ни одной инструкции или статьи о том, как создать layout на основе этих...
Прототипирование без API
Я из тех, кто обычно очень нетерпелив, когда менеджер раскрывает функции нового продукта. После спринта я задаю этот ужасающий, трепещущий вопрос:
… API уже готов?..
И ответ...
Kubernetes: сэкономьте до 50% с вытесняемыми объектами
Контейнеры существуют долгое время и Kubernetes меняет не только технологический ландшафт, но и организационное мышление. Все больше компаний переходят к облачным технологиям и спрос...
Топ-8 инструментов для Angular-разработки в 2023 году
Предлагаем обзор самых продвинутых инструментов для современной Angular-разработки, включая Bit, PrimeNG, RxJS, NgRx. Они помогут проектировать более масштабируемые и надежные приложения Angular.
Маршрутизация 101 в Angular 9+
Чему мы научимся?
Показывать и скрывать компоненты, используя вместо свойств input/output маршруты.Поддерживать взаимосвязь этих компонентов, передавая по маршруту данные.Настраивать маршруты в модуле маршрутизации.Использовать routerLink для...
Разделение кода в Next JS
Приложение слишком долго загружается? Узнайте о решении этой проблемы с помощью разделения кода в Next JS, и ваша загрузка будет проходить значительно быстрее.
Спасение жизней с помощью Scrum
Историки могут пересмотреть прогресс человечества и обозначить чёткую линию между временем “до появления Scrum” и “после появления Scrum”.
Это первая из двух статей, которую я...
Оптимизация ресурсов в Node.js
Ресурсы приложения - вещь дефицитная. Узнайте, как оптимизировать их работу, чтобы повысить стабильность, производительность и эффективность системы. Научитесь использовать потенциал Node.js по максимуму!
Управление состоянием в React: обзор
Разберемся, какие проблемы решаются управлением состояния, а также нужна ли продвинутая библиотека для структурирования кода или инструментов React достаточно для комфортной работы.
Kubernetes: безопасное управление секретами с GitOps
GitOps — это модное словечко в последнее время на слуху. Обозначает оно, по сути, декларативное управление ресурсами для такого представления текущего состояния, чтобы в...
Реальные возможности WASM
Длительное и настойчивое изучение WASM убеждает в удивительных возможностях этой технологии. Ознакомьтесь с исследованиями разработчика, которого WASM заставил перейти от скепсиса к восторгу, вызванному прежде всего 40-кратным ускорением бэкенд-систем.
Как использовать React в приложениях Angular
Если вы программист, будьте готовы столкнуться с самыми разнообразными кейсами в своей практике. Может случиться, что вам нужно будет воспользоваться React в приложении Angular. Сегодня расскажем, как это сделать.
Меняем Async/Await на Promises.allSettled() для ускорения API-вызовов в Node.JS
Узнаем, откуда берется замедление при одновременном изменении более 50 записей и как в 10 раз ускорить операцию массового редактирования записей. Используем promise, чтобы не ждать возвращения каждого запроса на изменение, прежде чем делать следующий, и сэкономить много времени.
Совместное использование кода в микросервисах и микрофронтендах: в чем разница
Принцип совместного использования кода сегодня активно используется при разработке как клиентской, так и серверной части приложений. Разбираемся в преимуществах, недостатках и особенностях такого подхода.
Создание кастомного навигационного представления в SwiftUI
Зададим собственное навигационное представление с помощью двух generic-типов. Первый тип — Content, который применяется для передачи представлений внутри кастомного навигационного представления. Второй тип — ...
Почему лучше использовать const, а не let в TypeScript
Чем больше проект, тем сложнее разобраться в его коде. Как же сохранить чистоту кода, если одна переменная многократно перезаписывается? Используйте проверенную практику, выбирая const вместо let в TypeScript.
Программирование будущего: беспилотный автомобиль, управляемый JavaScript и ИИ
Пытаетесь разгадать магию беспилотных автомобилей? Присоединяйтесь к программистам, увлекающимся автоматизированными транспортными средствами. Они помогут написать код, превращающий автомобиль в самоуправляемое чудо техники.
Как структурировать API-вызовы при автоматизированном тестировании с Playwright и JavaScript
Разберемся, как наилучшим образом настроить авторизацию и другие предварительные шаги, которые повторяются сразу в нескольких тестах - и при этом сохранить читаемость и ясность кода.
Дизайн-система: иконки
В данной статье автор делится своим опытом разработки дизайн-системы и предлагает идеи для автоматизации различных процессов проектирования. Особое внимание будет уделено простой, но очень...
Как укорачиваются ссылки на TinyURL и Bit.ly?
Полное руководство по проектированию систем с рукописными матрасчетами. Разберем функциональность, архитектуру, проблемы, масштабируемость, системные API-интерфейсы, производительность и оценку ресурсов с данными для аналогичных проектов в реальных сценариях.
История создания одного бессерверного приложения рассылки с открытым ПО
Когда не удается найти готовое решение - следует его создать. К такому выводу пришел автор статьи, и самостоятельно разработал бессерверное приложение для информационной рассылки со всеми необходимыми функциональностями. Расскажем, все как было!
Нововведения в Apache Airflow 2.0: смогут ли они удовлетворить текущие потребности инженерии данных
Преимущества Airflow 2.0 по сравнению с предыдущими версиями
Пользовательский интерфейс
Интерфейс Airflow 2.0 выглядит свежим и современным по сравнению с предыдущими версиями. Его основное преимущество заключается...
Уменьшаем размер образа Docker для приложения Next.js
Как избавиться от ненужных файлов в образе докера? Выполним контейнеризацию приложения и простую оптимизацию размеров образа Docker.
Создание пользовательских уведомлений с помощью AWS WebSockets
Четвертая часть серии статей по WebSocket. Здесь мы узнаем, какие бывают типы пользовательских уведомлений и реализуем их в своем проекте.
Пишем кастомные React-хуки для GraphQL
Примечание: на данный момент хуки в React являются экспериментальными
Недавно на React Conf 2018 был представлен выпуск новых API для React, что повлекло за собой...
WebAssembly: секретное оружие в разработке высокооптимизированных и безопасных веб-приложений
Многие эксперты связывают будущее эффективных и безопасных вычислений с WebAssembly. Узнайте, в чем заключаются достоинства этого секретного оружия веб-разработчика и почему оно заслуживает вашего внимания.
5 типичных ошибок веб-разработчиков
Учиться лучше на чужих ошибках. Изучите подборку из 5 частых ошибок разработчиков - это лучший способ избежать их в собственной практике.
Что такое сервер TURN?
С помощью TURN можно запускать приложения видео- и голосовой связи, обмена сообщениями и других интерактивных онлайн-коммуникаций. Узнайте о возможностях TURN, его провайдерах, а также о том, как создать и настроить собственный TURN-сервер.
Как запустить ИИ-генератор Stable Diffusion
Stable Diffusion - ИИ-генератор изображений от StabilityAI, который может работать на стандартных видеокартах. Изучим его потенциал на практике. Чтобы использовать это руководство, не нужен даже опыт в программировании.
Как объединить несколько CSV файлов через 8 строчек кода
Зачем это нужно?
Копипаст вручную — это, может, и не самый плохой вариант для небольшого количества файлов.
Но представьте, что вам нужно объединить 100+ файлов… готовы ли вы сделать...
Интеграция Google Maps в приложение Jetpack Compose
Научимся интегрировать Google Maps в приложение Jetpack Compose с помощью библиотеки Maps Compose. В связи с этим рассмотрим ряд требуемых компонуемых функций и параметров.
Продвинутая генерация ответа, дополненная результатами поиска (RAG): от теории до реализации на LlamaIndex
Ознакомьтесь с концепцией продвинутой RAG, которая позволяет устранить ограничения простой RAG. Для практики предлагаем руководство по реализации простого и продвинутого RAG-пайплайнов с использованием LlamaIndex.