Матрица компетенций системного аналитика
Сделали единую карту компетенций системного аналитика на основе данных из открытых и закрытых источников.
Ссылки на матрицу:
💩Mind Map
💩Табличная версия (можно оставлять комментарии)
Все навыки разбиты на несколько групп компетенций:
1️⃣Инженерия требований
2️⃣Системное проектирование
3️⃣Интеграция систем и сервисов
4️⃣Моделирование бизнеса и домена
5️⃣Процесс разработки
6️⃣Общие компетенции
7️⃣Смежные навыки
8️⃣Soft Skills
Это не финальная версия, поэтому призываем всех активно критиковать и предлагать изменения (желательно в гугл-доке). Давайте совместными усилиями сделаем понятный перечень навыков, чтобы каждый аналитик знал, что ему нужно развивать.
P.S. Хотя и есть профстандарт системного аналитика, от компании к компании ожидания от СА сильно разнятся. Наша матрица — попытка привести ожидания от навыков системного аналитика к одному знаменателю.
Ссылки на источники
1. Матрица компетенций SE
2. Профессиональные навыки аналитика от Сообщества аналитиков СПБ
3. Что нужно знать системному аналитику уровня Middle и Senior: план развития Hard Skills
4. Матрица компетенций аналитика для самурая в запасе
5. Кто такой системный аналитик? Профессия, требования, зарплата — Денис Бесков
6. Программа курса Системный аналитик. Advanced
7. Программа курса Системный аналитик. Team Lead
8. Матрицы IT-компетенций (и около)
9. Статистика требований к аналитику на HH
10. System Analyst Roadmap или что нужно знать системному аналитику
Сделали единую карту компетенций системного аналитика на основе данных из открытых и закрытых источников.
Ссылки на матрицу:
💩Mind Map
💩Табличная версия (можно оставлять комментарии)
Все навыки разбиты на несколько групп компетенций:
1️⃣Инженерия требований
2️⃣Системное проектирование
3️⃣Интеграция систем и сервисов
4️⃣Моделирование бизнеса и домена
5️⃣Процесс разработки
6️⃣Общие компетенции
7️⃣Смежные навыки
8️⃣Soft Skills
Это не финальная версия, поэтому призываем всех активно критиковать и предлагать изменения (желательно в гугл-доке). Давайте совместными усилиями сделаем понятный перечень навыков, чтобы каждый аналитик знал, что ему нужно развивать.
P.S. Хотя и есть профстандарт системного аналитика, от компании к компании ожидания от СА сильно разнятся. Наша матрица — попытка привести ожидания от навыков системного аналитика к одному знаменателю.
Ссылки на источники
1. Матрица компетенций SE
2. Профессиональные навыки аналитика от Сообщества аналитиков СПБ
3. Что нужно знать системному аналитику уровня Middle и Senior: план развития Hard Skills
4. Матрица компетенций аналитика для самурая в запасе
5. Кто такой системный аналитик? Профессия, требования, зарплата — Денис Бесков
6. Программа курса Системный аналитик. Advanced
7. Программа курса Системный аналитик. Team Lead
8. Матрицы IT-компетенций (и около)
9. Статистика требований к аналитику на HH
10. System Analyst Roadmap или что нужно знать системному аналитику
🔥91👍32❤12👏5🤡2😱1
Критерии приемки (Acceptance Criteria, AC) — это набор условий, которым должна удовлетворять пользовательская история (User Story), чтобы её считали выполненной.
Критерии приёмки уникальны для каждой User Story (US) и являются основой для тестирования.
❓Для чего нужны
Критерии приемки должны:
1. Сценарно-ориентированный подход (Scenario-based acceptance criteria)
2. Свод правил или чек-лист (Rule-based acceptance criteria)
Соответствует формату Дано/Когда/Тогда (Given/When/Then):
Также можно дополнительно использовать:
Пример US: Как пользователь, я хочу иметь возможность восстановить пароль от своей учетной записи, чтобы если я забыл пароль, мог получить доступ к своей учетной записи.
Это простой список правил о том, как всё должно работать после реализации требования.
Например:
1. Все кнопки должны иметь скругленные углы радиуса 10
2. Пользователь может выбирать способ авторизации с паролем или через получение OTP
3. В случае неправильного ввода пароля два раза подряд система отображает пользователю капчу
AC 🆚 DoR 🆚 DoD
Например, реализация соответствует ТЗ, выполнены AC, пройдены все тест-кейсы, составлена документация, одобрения получены и т.д
Главная разница
⚒️ Использование Gherkin
Gherkin — сценарно-ориентированный язык, который легко читается бизнесом и используется для описания функциональности программного обеспечения. Пример (картинка)
Применяется для:
➖ Документирования пользовательских сценариев
➖ Написания автоматизированных тестов
⭐️ Подборки материалов по этой и другим темам доступны в базе знаний по системному анализу
#требования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍47❤11💩10🔥7
Forwarded from Библиотека Системного Аналитика
💾 Сохраняйте к себе и делитесь с коллегами
1. Изучаем SQL. — А. Болье
2. SQL для чайников — Аллен Тейлор
3. SQL. Сборник рецептов — М. Энтони, де Грааф Роберт
4. SQL для анализа данных — К. Танимура
5. PostgreSQL. Основы языка SQL — Е.П. Моргунов
1. Большая подборка полезных материалов по основам баз данных
2. Памятка по SQL
3. Список бесплатных онлайн-курсов по базам данных и SQL
4. Основные понятия баз данных. Главное
5. Типы связей в БД. Нормализация
6. SQL vs NoSQL: отличие реляционных и нереляционных БД
7. Виды нереляционных БД. Какие бывают NoSQL базы данных
8. Шпаргалка по выбору правильной СУБД
#бд #sql
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🔥11❤5🎉2
✍️ Постановка задачи на разработку: этапы, отличие от ТЗ
Понятия постановки задачи на разработку и техническое задание часто путают меду собой, но это разные вещи.
🔸Техническое задание — это документ, который определяет, что должно быть реализовано и как это должно работать (функциональные требования) и насколько это должно быть быстро/безопасно/отказоустойчиво/дружелюбно/отслеживаемо (нефункциональные требования). ТЗ возникает как результат обработки бизнес-требований, и их перевода на системный уровень.
🔹Постановка задачи на разработку — описание конкретных задач, которые должны быть выполнены разработчиками для реализации ТЗ.
Когда постановка задачи должна быть представлена как отдельный артефакт
Постановка задачи на разработку нужна всегда, но не всегда должна быть оформлена как отдельный артефакт. Иногда достаточно ТЗ, если оно содержит нужные детали для разработки.
Случаи, когда необходимо описать постановку задачи отдельно:
💩 Когда задача на доработку, а не на разработку с нуля. Есть одна большая спецификация на кусок функционала, и в это ТЗ дописываются требования по доработкам. ПЗ помогает выделить и описать конкретные изменения, которые нужно внести в существующую систему.
💩 Когда задача составная и требует декомпозиции. В постановке можно разбить задачу на более простые подзадачи, тогда как ТЗ описывает реализацию функционала в целом без привязки на то, в рамках каких конкретных задач на разработку это будет реализовываться, сколько будет таких задач, кто их будет делать, какова оценка трудозатрат и т.д.
Постановка задачи на разработку может содержать следующие пункты:
💩 Введение, цель: Необходимо описать бизнес-контекст, почему задача возникла. Например, компания столкнулась с проблемой неэффективного учета заказов и хочет улучшить этот процесс.
💩 Описание решения: способ и границы реализации (ТЗ, Use Case, статусные модели, макеты UX/UI, описание интеграций)
💩 Ключевые источники информации: спецификации API, HLD, глоссарий, стандарты и т.д.
💩 Диаграммы: например, UML sequence, activity, бизнес-процесс в BPMN, схемы данных
💩 Заинтересованные стороны: перечень людей, влияющие на принятие решений
💩 Критерии приемки: критерии, по которым будет оцениваться успешное завершение проекта.
💩 НФТ и ограничения решения: производительность, масштабируемость, доступность и т.д.
🆚 Отличие постановки задачи на разработку (ПЗ) от ТЗ
💩 (утрируя) ТЗ — это текст в Confluence, ПЗ — описание в Jira
💩 ТЗ описывает требования к функциональности в целом, а постановка направлена на реализацию функционала в рамках конкретных задач
💩 Одно ТЗ может быть декомпозировано на несколько задач, при этом каждая может иметь свою постановку на разработку
💩 Иногда в ТЗ уже содержится и постановка задачи, но лучше понятия не смешивать и всё равно прописывать постановку задачи отдельно
⭐️ Подборки материалов по этой и другим темам доступны в базе знаний по системному анализу
#требования
Понятия постановки задачи на разработку и техническое задание часто путают меду собой, но это разные вещи.
🔸Техническое задание — это документ, который определяет, что должно быть реализовано и как это должно работать (функциональные требования) и насколько это должно быть быстро/безопасно/отказоустойчиво/дружелюбно/отслеживаемо (нефункциональные требования). ТЗ возникает как результат обработки бизнес-требований, и их перевода на системный уровень.
🔹Постановка задачи на разработку — описание конкретных задач, которые должны быть выполнены разработчиками для реализации ТЗ.
Когда постановка задачи должна быть представлена как отдельный артефакт
Постановка задачи на разработку нужна всегда, но не всегда должна быть оформлена как отдельный артефакт. Иногда достаточно ТЗ, если оно содержит нужные детали для разработки.
Случаи, когда необходимо описать постановку задачи отдельно:
Постановка задачи на разработку может содержать следующие пункты:
🆚 Отличие постановки задачи на разработку (ПЗ) от ТЗ
⭐️ Подборки материалов по этой и другим темам доступны в базе знаний по системному анализу
#требования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53🔥13❤6👏2
Инфраструктура открытых ключей (Public Key Infrastructure, PKI) — набор правил, который использует цифровые сертификаты и ключи для обеспечения безопасности в сети, включая аутентификацию, шифрование и цифровые подписи
-- Цифровые подписи в ПО
-- Ограниченный доступ к корпоративным интранетам и VPN
-- Бесплатный доступ к Wi-Fi без пароля в зависимости от владельца устройства
-- Шифрование эл. почты и данных
В HTTPS PKI используется для обеспечения безопасности соединения между клиентом и сервером. Достигается с помощью SSL/TLS протоколов, использующие сертификаты для аутентификации сервера и шифрования данных.
В основе PKI лежит асимметричная криптография, использующая пары ключей: открытый и закрытый (приватный).
— Открытый используется для шифрования и проверки подписи
— Закрытый для дешифрования и создания подписи
Ключи связаны математически так, что сообщение, зашифрованное с помощью открытого ключа, может быть расшифровано только с помощью соответствующего закрытого ключа.
Подпись — цифровая подпись, созданная с использованием закрытого ключа. Привязывается к определенным данным или сообщению и служит для подтверждения подлинности и целостности этих данных. Может быть проверена с помощью открытого ключа.
Сертификат — цифровой документ, связывающий открытый ключ с владельцем. Содержит информацию о владельце, открытом ключе, алгоритмах шифрования, сроке действия и информацию о центре сертификации.
— X.509 для формата сертификатов
— SSL/TLS для безопасного обмена информацией, наиболее распространенная реализация PKI
—протоколы OCSP и CRL для проверки отзыва сертификатов
⭐️ Подборки материалов по этой и другим темам доступны в базе знаний по системному анализу
#безопасность
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍9❤8
Основы ООП
Объектно-ориентированное программирование (ООП) — методология или стиль программирования, при котором код организуется в логически связанные объекты с четкими интерфейсами и поведением. Это помогает создавать программы, которые легко понять, изменять и масштабировать
⚪️ Когда эффективно?
Когда система содержит схожие объекты, имеет сложную структуру данных и требует модульности и расширяемости. ООП подходит для проектов, где важно переиспользование кода и управление сложностью системы.
За счет чего эффективно?
— облегчения понимания и обслуживания кода благодаря модульной структуре
— улучшения переиспользование кода и уменьшения дублирования
— увеличения гибкости системы и возможности расширения функциональности без изменения существующего кода
▫️ Основные принципы ООП
😈 Инкапсуляция: скрытие реализации внутри класса.
Позволяет скрыть детали реализации и предоставить интерфейс для взаимодействия с объектом➡️ обеспечивает безопасность и упрощает использование объекта другими частями программы
⚪️ Класс Animal содержит
— приватную переменную weight
— публичный метод feed()
Переменная weight скрыта от прямого доступа извне класса➡️ предотвращает непреднамеренное изменение их значений.
Вместо этого доступ к ним осуществляется через методы класса➡️ есть контроль доступа к данным.
😈 Наследование: создание новых классов на основе существующих.
Подклассы наследуют свойства и методы родительского класса➡️ можно повторно использовать код и упростить разработку.
Подклассы могут расширять функциональность родительского класса, добавляя новые методы или изменяя существующие.
⚪️ Рассмотрим классы Animal и Mammal
Класс Mammal -- подкласс Animal. Т.е. можно наследовать от него его свойства и методы, такие как move() или eat().
Класс Mammal может добавлять собственные методы, например, milkfeeding(), расширяя функциональность базового класса Animal.
😈 Полиморфизм: способность объектов разных типов использовать общий интерфейс для выполнения различных действий.
Проявляется в том, что разные объекты могут реагировать на одну и ту же команду по-разному в зависимости от их типа
⚪️ У нас есть классы Dog и Cat, оба имеют метод makesound()
Когда вызывается метод makesound() для объекта класса Dog, он издаёт лай, а для объекта класса Cat - мяукание
😈 Абстракция: позволяет отделить концепцию от её реализации.
Уровень абстракции скрывает сложные детали реализации и предоставляет простой интерфейс для использования объекта➡️ помогает сосредоточиться на важных аспектах объекта, игнорируя незначительные детали.
⚪️ Класс 4legs абстрактный и имеет метод без реализации walk(). Класс является абстракцией (робот или насекомое тоже может иметь 4 ноги). Объект такого класса невозможно создать.
Но можно наследовать потомков.
Dog наследует класс 4legs и реализует метод walk()
💡 Зачем ООП аналитику?
Поможет структурировать требования в соответствии с требованиями бизнеса:
— выделить объекты
— определить их атрибуты
— методы и взаимосвязи между ними
⚪️ Нужно описать систему управления библиотекой.
Можно представить систему как совокупность объектов, таких как "книга", "автор" и "читатель", каждый из которых имеет свои атрибуты и методы.
*️⃣ Также понимание ООП поможет:
— спроектировать архитектуру приложения: используя принципы наследования, инкапсуляции и полиморфизма разделить функционал на компоненты
— в определении общих интерфейсов и абстракций, которые позволят разным частям системы взаимодействовать между собой
*️⃣ Существуют объектно-ориентированные методы системного анализа (ООМСА).
Это подход к анализу, проектированию и моделированию систем, основанный на принципах ООП
Основные методы:
— моделирования объектов и классов
— анализа взаимодействия объектов
— проектирования классов и иерархий
— анализа наследования и агрегации
⭐️ Подборки материалов по этой и другим темам доступны в базе знаний по системному анализу
#проектирование
Объектно-ориентированное программирование (ООП) — методология или стиль программирования, при котором код организуется в логически связанные объекты с четкими интерфейсами и поведением. Это помогает создавать программы, которые легко понять, изменять и масштабировать
Когда система содержит схожие объекты, имеет сложную структуру данных и требует модульности и расширяемости. ООП подходит для проектов, где важно переиспользование кода и управление сложностью системы.
За счет чего эффективно?
— облегчения понимания и обслуживания кода благодаря модульной структуре
— улучшения переиспользование кода и уменьшения дублирования
— увеличения гибкости системы и возможности расширения функциональности без изменения существующего кода
Позволяет скрыть детали реализации и предоставить интерфейс для взаимодействия с объектом
— приватную переменную weight
— публичный метод feed()
Переменная weight скрыта от прямого доступа извне класса
Вместо этого доступ к ним осуществляется через методы класса
Подклассы наследуют свойства и методы родительского класса
Подклассы могут расширять функциональность родительского класса, добавляя новые методы или изменяя существующие.
Класс Mammal -- подкласс Animal. Т.е. можно наследовать от него его свойства и методы, такие как move() или eat().
Класс Mammal может добавлять собственные методы, например, milkfeeding(), расширяя функциональность базового класса Animal.
Проявляется в том, что разные объекты могут реагировать на одну и ту же команду по-разному в зависимости от их типа
Когда вызывается метод makesound() для объекта класса Dog, он издаёт лай, а для объекта класса Cat - мяукание
Уровень абстракции скрывает сложные детали реализации и предоставляет простой интерфейс для использования объекта
Но можно наследовать потомков.
Dog наследует класс 4legs и реализует метод walk()
Поможет структурировать требования в соответствии с требованиями бизнеса:
— выделить объекты
— определить их атрибуты
— методы и взаимосвязи между ними
Можно представить систему как совокупность объектов, таких как "книга", "автор" и "читатель", каждый из которых имеет свои атрибуты и методы.
— спроектировать архитектуру приложения: используя принципы наследования, инкапсуляции и полиморфизма разделить функционал на компоненты
— в определении общих интерфейсов и абстракций, которые позволят разным частям системы взаимодействовать между собой
Это подход к анализу, проектированию и моделированию систем, основанный на принципах ООП
Основные методы:
— моделирования объектов и классов
— анализа взаимодействия объектов
— проектирования классов и иерархий
— анализа наследования и агрегации
⭐️ Подборки материалов по этой и другим темам доступны в базе знаний по системному анализу
#проектирование
Please open Telegram to view this post
VIEW IN TELEGRAM
❤29👍20🔥13😁2⚡1
Forwarded from Библиотека Системного Аналитика
Apache_Kafka_Потоковая_обработка_и_анализ_данных.pdf
8.2 MB
Apache Kafka. Потоковая обработка и анализ данных
✍️ Авторы: Гвен Шапира, Тодд Палино, Раджини Сиварам, Крит Петти
🗓 Год издания: 2023
🔤 Язык: русский
📚 Объём: 512 стр.
Второе издания бестселлера о Kafka.
При работе любого корпоративного приложения образуются данные: файлы журналов, показатели, информация об активности пользователей, исходящие сообщения и другие. Правильное управление этими данными не менее важно, чем сами данные. Если вы архитектор, разработчик или инженер-технолог, но вы пока не знакомы с Apache Kafka, то из этой обновленной книги вы узнаете, как работать с потоковой платформой Kafka, позволяющей обрабатывать потоки данных в реальном времени. Дополнительные главы посвящены API AdminClient от Kafka, транзакциям, новым функциям безопасности и изменениям в инструментарии.
Инженеры из Confluent и LinkedIn, ответственные за разработку Kafka, объясняют, как с помощью этой платформы развертывать производственные кластеры Kafka, писать надежные управляемые событиями микросервисы и создавать масштабируемые приложения для потоковой обработки данных. На подробных примерах вы изучите принципы проектирования Kafka, гарантии надежности, ключевые API и детали архитектуры.
5 причин добавить эту книгу в свою библиотеку:
1. Авторы — разработчики Kafka.
2. Лучшие практики развертывания и настройки Kafka.
3. Шаблоны и требования для обеспечения надежной доставки данных.
4. Паттерны построения конвейеров данных и приложений с помощью Kafka.
5. Правильные мониторинг, настройка и обслуживание Kafka в рабочей среде.
#интеграции
✍️ Авторы: Гвен Шапира, Тодд Палино, Раджини Сиварам, Крит Петти
🗓 Год издания: 2023
🔤 Язык: русский
📚 Объём: 512 стр.
Второе издания бестселлера о Kafka.
При работе любого корпоративного приложения образуются данные: файлы журналов, показатели, информация об активности пользователей, исходящие сообщения и другие. Правильное управление этими данными не менее важно, чем сами данные. Если вы архитектор, разработчик или инженер-технолог, но вы пока не знакомы с Apache Kafka, то из этой обновленной книги вы узнаете, как работать с потоковой платформой Kafka, позволяющей обрабатывать потоки данных в реальном времени. Дополнительные главы посвящены API AdminClient от Kafka, транзакциям, новым функциям безопасности и изменениям в инструментарии.
Инженеры из Confluent и LinkedIn, ответственные за разработку Kafka, объясняют, как с помощью этой платформы развертывать производственные кластеры Kafka, писать надежные управляемые событиями микросервисы и создавать масштабируемые приложения для потоковой обработки данных. На подробных примерах вы изучите принципы проектирования Kafka, гарантии надежности, ключевые API и детали архитектуры.
5 причин добавить эту книгу в свою библиотеку:
1. Авторы — разработчики Kafka.
2. Лучшие практики развертывания и настройки Kafka.
3. Шаблоны и требования для обеспечения надежной доставки данных.
4. Паттерны построения конвейеров данных и приложений с помощью Kafka.
5. Правильные мониторинг, настройка и обслуживание Kafka в рабочей среде.
#интеграции
👍39❤11🔥6👏3⚡2
Хранимые процедуры и пользовательские функции в БД
📌 Кратко
Хранимые процедуры предназначены для выполнения действий, а пользовательские функции - для вычислений и возврата значений.
✔️ Хранимые процедуры
Это набор инструкций, которые выполняют любые операции с данными, сложную логику или задачи на стороне сервера БД
🟡 компилируются один раз и хранятся на сервере
🟡 могут содержать циклы, условные операторы
🟡 как в обычном коде в языках программирования, можно реализовать логику работы с данными
🟡 могут принимать параметры и возвращать результаты, но могут и не возвращать
Как используются?
🔘 выполнение сложных операций (сортировка, фильтрация и агрегация), сложной бизнес-логики
🔘 могут включать несколько операций, которые выполняются как одна транзакция
🔘 последовательное выполнение нескольких SQL-команд
🔘 регулярно выполняющихся операций, требующих быстрого повторного исполнения
🔘 обеспечивают защиту, выполняясь на стороне сервера БД, а также контролируют доступ и выполнение операций. С помощью процедур можно реализовать логику доступа, проверки прав и аутентификации пользователей
Примеры
⏩ процедура принимает ID сотрудника в качестве входного параметра и возвращает его имя из таблицы Employees
⏩ процедура принимает данные о новом заказе (например, клиент, товары, количество) и добавляет соответствующую запись в базу данных.
⏩ входной параметр -- ID заказа, процедура извлекает информацию о товарах в заказе и вычисляет стоимость всех товаров.
〰️ Минусы
💩 когда сложны, тяжело поддерживаемы, возникают проблемы с рефакторингом
💩 могут создавать зависимость от конкретной СУБД — затрудняет масштабирование
💩 хранение бизнес-логики в PLSQL ведет к созданию монолита. Его дальнейшее разбиение затрудняется
💩 отладка не всегда удобна, логирование и обработка ошибок выполняется вручную
✅ Пользовательские функции
Это фрагменты кода, предназначенные для выполнения конкретных операций или вычислений над данными
🔵 принимают входные параметры, выполняют определенные вычисления и всегда возвращают результат
🔵 не предназначены для изменения данных или выполнения транзакций
Как используются?
🔘 для сложных логических или арифметических операций
🔘 возвращаемые значения используются в др. запросах / выражениях
🔘 для использования операторах SQL (SELECT, WHERE и тд) для вычисления значений
🔘 фильтрации данных, поиска определенных значений или обработки данных по заданными условиями
🔘 для работы с текстовыми данными (разбиение строк, поиск подстрок, замена символов и тд)
Пример:
⏩ преобразование даты в определенный формат или вычисление дополнительных параметров на основе входных данных.
⏩ входные параметры -- ID пользователя и ID ресурса, в ответе булевое значение, указывающее, имеет ли пользователь доступ к этому ресурсу
〰️ Минусы
💩 не эффективны в сложных запросах
💩 на больших объемах данных могут привести к низкой производительности
💩 отладка может быть трудной из-за изоляции от основного кода
💩 могут зависеть от контекста сессии или окружения, что может привести к неожиданным результатам
✔️ Основные различия
Назначение
🟡 процедуры -- для выполнения последовательности операций и изменения данных в БД
🔵 функции -- для выполнения вычислений и возвращения результата
Возвращаемые значения
🟡 процедуры могут возвращать 0 или более значений или изменять состояние БД
🔵 функции возвращают только одно значение
Типы вызовов
🟡 процедуры -- как отдельными операторами SQL, так и из других процедур и функций.
🔵 функции -- вызываются обычно внутри запросов SQL или в выражениях, где нужно вычислить значения
ХП и пользовательские функции могут использоваться не только в БД, а еще в:
🟣 приложениях на стороне сервера: могут быть частью серверных приложений, написанных на Java, C#, Python и др. Используются для обработки данных на сервере перед отправкой их клиенту.
🟣 интеграциях в веб
🟣 интеграциях с внешними системами, такими как API, сервисы и внешние БД, чтобы обрабатывать данные и для взаимодействия между приложениями и платформами.
⭐️ Подборки материалов по этой и другим темам доступны в базе знаний по системному анализу
#бд
Хранимые процедуры предназначены для выполнения действий, а пользовательские функции - для вычислений и возврата значений.
Это набор инструкций, которые выполняют любые операции с данными, сложную логику или задачи на стороне сервера БД
Как используются?
Примеры
Это фрагменты кода, предназначенные для выполнения конкретных операций или вычислений над данными
Как используются?
Пример:
Назначение
Возвращаемые значения
Типы вызовов
ХП и пользовательские функции могут использоваться не только в БД, а еще в:
⭐️ Подборки материалов по этой и другим темам доступны в базе знаний по системному анализу
#бд
Please open Telegram to view this post
VIEW IN TELEGRAM
👍37❤16🔥8👏3🤡3
Ранее мы рассказывали про нормализацию в БД, рассмотрим обратный процесс.
Денормализация — внесение избыточности в БД путём объединения таблиц, чтобы упростить структуру и ускорить чтения данных
Отличие от нормализации
Нормализация нужна для устранения избыточности данных; для разделения информации по отдельным таблицам, чтобы обеспечать целостность и упростить обслуживания БД
Денормализация, наоборот, вводит избыточность обратно в БД, объединяя таблицы и дублируя информацию
— избыточность данных может привести к проблемам с их согласованностью, когда изменение информации в одном месте потребует её обновления и во всех остальных денормализованных таблицах. Это увеличивает сложность поддержки и может привести к ошибкам
— увеличивается объём хранимых данных
— замедление других операций, может замедлить процессы вставки, изменения и удаления данных
Используйте денормализацию целенаправленно, не применяйте как универсальное решение. Важно создать механизм обновления избыточных данных, чтобы поддерживать их актуальность и согласованность.
⭐️ Подборки материалов по этой и другим темам доступны в базе знаний по системному анализу
#бд
Please open Telegram to view this post
VIEW IN TELEGRAM
👍36❤7🔥6👏2
🔄 CI/CD: Краткий обзор
Continuous Integration/Continuous Delivery (непрерывная интеграция и доставка) — подход к разработке приложений, который обеспечивает автоматизацию процессов сборки, тестирования и доставки кода.
Код интегрируется и доставляется пользователю итерационно, как можно чаще. Ценность CI/CD кроется в автоматизации всех этапов интеграции и развёртывания кода.
💩 CI — практика интеграции кода от разных разработчиков в общий репозиторий. Разработчики как можно чаще сливают изменения в основную ветку, используя систему контроля версий (например, Git). При этом, любые изменения проходят через автоматические тесты.
💩 CD — автоматизация развёртывания (доставки) кода в "прод" после успешной интеграции и тестирования.
✔️ Этапы CI/CD
1️⃣ Код. Разработка создает код, исправляет ошибки или делает доработки, выполняет тесты, а затем отправляет в ветку master с актуальной сборкой продукта. Несколько команд могут отправить любое количество модулей в master.
2️⃣ Сборка. Старт автоматической сборки и авто-тестов. Критерии запуска системы управления версиями и начала сборки настраиваются заранее.
3️⃣ Тестирование. После авто-тестов выкатываемой версии проекта, можно приступать к ручной проверке.
4️⃣ Релиз. После успешных тестов, разработчики вносят исправления и выпускают новую версию продукта.
5️⃣ Развёртывание. Отправка финальной версия кода на боевой сервер. Взаимодействие пользователя с сервисом
6️⃣ Поддержка и мониторинг. Разработка мониторит работу продукта, отслеживая и анализируя пользовательский опыт.
7️⃣ Планирование. На основе мониторинга и анализа, формулируются идеи новых доработок и улучшений. Цикл начинается заново - написание кода.
Плюсы CI/CD
+ Сокращение времени поставки (Time to Market): автоматизация процессов позволяет быстрее и чаще доставлять новые функции и исправления.
+ Качество кода: автотесты обеспечивают высокое качество кода, а регулярные интеграции помогают выявлять проблемы на ранних этапах.
+ Легкость масштабирования: Автоматизированные процессы легко масштабируются с увеличением объемов работы.
+ Однородная среда разработки: все члены команды работают в однородной среде - упрощает совместную разработку.
Минусы CI/CD
— Сложность внедрения: Реализация CI/CD требует времени и усилий для внедрения в существующие процессы разработки. обслуживания. Сложные системы CI/CD могут требовать значительных ресурсов для обслуживания
— Трудность согласования изменений: в больших командах интеграция изменений может быть сложной.
— Безопасность: неправильная настройка CI/CD может стать источником уязвимостей.
— Не всегда применимо: когда проект слишком маленький или слишком сложный для автоматизации всех процессов.
🖥 Программы для CI/CD:
Jenkins: Один из самых популярных и распространенных инструментов для CI/CD.
GitLab CI/CD: Встроенная система CI/CD в GitLab, интегрированная с GitLab репозиториями.
Travis CI: Облачный сервис CI/CD, легко настраиваемый для проектов на GitHub.
CircleCI: Облачная CI/CD-платформа с широкими возможностями конфигурации.
TeamCity: Мощный и гибкий инструмент CI/CD от JetBrains.
⭐️ Подборки материалов по этой и другим темам доступны в базе знаний по системному анализу
#devops
Continuous Integration/Continuous Delivery (непрерывная интеграция и доставка) — подход к разработке приложений, который обеспечивает автоматизацию процессов сборки, тестирования и доставки кода.
Код интегрируется и доставляется пользователю итерационно, как можно чаще. Ценность CI/CD кроется в автоматизации всех этапов интеграции и развёртывания кода.
Плюсы CI/CD
+ Сокращение времени поставки (Time to Market): автоматизация процессов позволяет быстрее и чаще доставлять новые функции и исправления.
+ Качество кода: автотесты обеспечивают высокое качество кода, а регулярные интеграции помогают выявлять проблемы на ранних этапах.
+ Легкость масштабирования: Автоматизированные процессы легко масштабируются с увеличением объемов работы.
+ Однородная среда разработки: все члены команды работают в однородной среде - упрощает совместную разработку.
Минусы CI/CD
— Сложность внедрения: Реализация CI/CD требует времени и усилий для внедрения в существующие процессы разработки. обслуживания. Сложные системы CI/CD могут требовать значительных ресурсов для обслуживания
— Трудность согласования изменений: в больших командах интеграция изменений может быть сложной.
— Безопасность: неправильная настройка CI/CD может стать источником уязвимостей.
— Не всегда применимо: когда проект слишком маленький или слишком сложный для автоматизации всех процессов.
🖥 Программы для CI/CD:
Jenkins: Один из самых популярных и распространенных инструментов для CI/CD.
GitLab CI/CD: Встроенная система CI/CD в GitLab, интегрированная с GitLab репозиториями.
Travis CI: Облачный сервис CI/CD, легко настраиваемый для проектов на GitHub.
CircleCI: Облачная CI/CD-платформа с широкими возможностями конфигурации.
TeamCity: Мощный и гибкий инструмент CI/CD от JetBrains.
⭐️ Подборки материалов по этой и другим темам доступны в базе знаний по системному анализу
#devops
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29👍17❤8
Kanban vs Scrum: сравнение методологий
Kanban и Scrum — методологии гибкого управления проектами, используемые для реализации принципов Agile и DevOps при разработке.
Kanban — подход к управлению процессом разработки, который включает следующие практики:
💩 Визуализация задач и прогресса с помощью канбан-доски, установление приоритетов задачам
💩 Ограничение количества задач со статусом "В работе", или WIP (work in progress). Если лимит превышен, то команда не может взять новую задачу в работу, пока не будет завершена одна из текущих
💩 Управление потоком: отслеживание метрик, таких как скорость движения задач между статусами, для устранения «бутылочных горлышек», где процесс замедляется
💩 Проведение каденций — встреч членов команды по процессу разработки. Всего выделяют 7 видов встреч. Главная цель — объяснение правил для всех участников команды и сбор обратной связи
💩 Непрерывное улучшение процесса на основе обратной связи и анализа метрик
Что общего между Kanban и Scrum
➖ Обе методологии относятся к Agile
➖ Важна визуализация работы для прозрачности и оценки текущего состояния задач.
➖ Имеют итерационный подход к работе, даже если длительность итераций различается.
➖ Имеют механизмы для определения и управления приоритетами задач.
➖ Акцентируют внимание на командной работе и взаимодействии между участниками
Различие подготовили в сравнительной таблице постом выше.
✅ Когда лучше применять
Kanban:
💩 в проектах с типовыми повторяющимися задачами, например, техническая поддержка, где задачи обрабатываются по мере поступления и приоритеты могут меняться в зависимости от срочности
💩 команда не является кросс-функциональной
💩 в проектах с высокой степенью неопределенности, где требования часто меняются или неизвестны заранее. Kanban позволяет вносить изменения в любое время без нарушения цикла работы
Scrum:
💩 важен строгий контроль сроков и структура
💩 требуется четкое определение целей и результатов
💩 команда является кросс-функциональной
Пример: Разработка новой версии продукта с фиксированным релизным циклом, например, каждые 3 месяца.
❌ Когда не подойдет
Kanban
💩 в проектах, где необходимо строго соблюдать сроки
💩 в кросс-функциональных командах
💩 когда требуется постоянная обратная связь от клиентов
Scrum
💩 продукт нужен целиком, итерации невозможны
💩 когда нет сплочённой, самоорганизованной и кросс-функциональной команды
💩 для слишком маленьких групп из 1–2 человек, или, наоборот, больших лучше заменить другими методами — SAFe, LeSS.
☯️ Гибрид ScrumBan
Используется в средах, где необходимо управление проектом в условиях неопределенности и частых изменений. ScrumBan легче внедрить, чем Scrum
💩 от Scrum: сохраняет ключевые элементы Scrum: спринты, роли (Product Owner, Scrum Master, и команда разработки) и основные события (планирование, ревью, ретроспектива).
💩 от Kanban: заимствует концепцию визуализации процесса на доске, ограничения рабочего объема, адаптацию к изменениям в реальном времени и фокус на поток задач.
⭐️ Подборки материалов по этой и другим темам доступны в базе знаний по системному анализу
#управление_проектами
Kanban и Scrum — методологии гибкого управления проектами, используемые для реализации принципов Agile и DevOps при разработке.
Kanban — подход к управлению процессом разработки, который включает следующие практики:
Что общего между Kanban и Scrum
Различие подготовили в сравнительной таблице постом выше.
✅ Когда лучше применять
Kanban:
Scrum:
Пример: Разработка новой версии продукта с фиксированным релизным циклом, например, каждые 3 месяца.
❌ Когда не подойдет
Kanban
Scrum
☯️ Гибрид ScrumBan
Используется в средах, где необходимо управление проектом в условиях неопределенности и частых изменений. ScrumBan легче внедрить, чем Scrum
#управление_проектами
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25👍17❤8👎4
UX/UI: краткий обзор
💙 UX (User Experience — «пользовательский опыт») отвечает за то, как интерфейс работает
💙 UI (User Interface — «пользовательский интерфейс») отвечает за то, как интерфейс выглядит
Цели UI/UX дизайна
💙 UX: обеспечить позитивный опыт пользователя при взаимодействии с продуктом с учетом его потребностей, ожиданий и контекста использования
💙 UI: сделать интерфейс интуитивно понятным и легким в использовании, а также привлекательным визуально
💙 UX
Примеры UX-анализа
💙 Исследование пользовательского поведения: взаимодействие с веб-сайтом или приложением, анализ переходов между страницами, время пребывания на страницах, клики на элементы и т. д.
💙 Тестирование пользовательского интерфейса: удобство использования, понятность и эффективность. Например, тесты сценариев использования или а/б-тестирования
💙 Сбор обратной связи от пользователей: анализ отзывов о продукте, определение их потребности и предпочтения, выявление проблем, с которыми пользователи сталкиваются
Основные принципы UX
💙 Продукт решает реальные проблемы и удовлетворяет основные потребности пользователей
💙 Пользователи легко понимают, как использовать продукт и что от него ожидать
💙 Пользователи доверяют продукту, его функциональности и безопасности
💙 Продукт вызывает положительные эмоции и удовлетворение у пользователей
💙 Продукт позволяепт пользователям достигать своих целей с минимальными усилиями и временем
💙 Продукт адаптируется под разные устройства и контексты использования для удобства пользователя
Usability ≠ UX
Usability - лишь часть хорошего UX
💙 Usability - удобство и легкость взаимодействия пользователя с продуктом
Цель: сделать задачу легко, интуитивно и быстро
💙 Достиг ли пользователь цели максимально удобным способом?
💙 UX - опыт взаимодействия пользователя. Восприятие и совокупность эмоций, возникающих в результате использования продукта
Цель: сделать пользователя счастливым до, во время и после использования продукта
💙 Был ли опыт пользователя максимально положительным?
💙 UI
Примеры UI -анализа
⤵️ Анализ дизайна и компоновки: изучение дизайна интерфейса, например, расположение элементов на странице
⤵️ Изучение цветовой гаммы и шрифтов: анализ и оценка их соответствие бренду, легкость восприятия и читаемость.
⤵️ Проверка совместимости с устройствами: как интерфейс отображается на устройствах и разрешениях экрана, рекомендации по адаптивной верстке для оптимального пользовательского опыта.
Основные принципы UI
💙 Элементы интерфейса имеют одинаковый стиль и поведение на всех страницах и экранах приложения.
💙 Доступность интерфейса для всех пользователей, включая людей с ограниченными возможностями
💙 Использование цветов, шрифтов, изображений и прочих элементов дизайна для создания привлекательного внешнего вида интерфейса.
🟣 Адаптивная верстка
Это подход к созданию веб-страниц, при котором страницы адаптируются к различным устройствам и разрешениям экрана.
⏩ Этапы разработки UX/UI
🟢 Исследование и анализ: исследование аудитории и их потребностей, изучение рынка и конкурентов
🟢 Проектирование: создается структура и навигация, выбирается цветовая гамма и шрифты
🟢 Прототипирование: создаются прототипы интерфейса для проверки удобства использования
🟢 Тестирование и итерации: прототипы тестируются среди пользователей
🟢 Разработка и реализация: на основе утвержденных прототипов
🟢 Мониторинг и оптимизация: После запуска продукта сбор аналитики для оптимизации интерфейса
⭐️ Подборки материалов по этой и другим темам доступны в базе знаний по системному анализу
#развитие #uxui
Цели UI/UX дизайна
Примеры UX-анализа
Основные принципы UX
Usability ≠ UX
Usability - лишь часть хорошего UX
Цель: сделать задачу легко, интуитивно и быстро
Цель: сделать пользователя счастливым до, во время и после использования продукта
Примеры UI -анализа
Основные принципы UI
Это подход к созданию веб-страниц, при котором страницы адаптируются к различным устройствам и разрешениям экрана.
#развитие #uxui
Please open Telegram to view this post
VIEW IN TELEGRAM
❤28👍15🔥7💩2🤔1🎉1
GRASP: краткий обзор
Проектирование ПО начинается с определения архитектуры высокого уровня (HLA - High Level Architecture). В HLA надо определить объекты или процессы, для чего создаём приложение. Существуют подходы:
1⃣ Функциональный (структурный)
2⃣ Объектно‑ориентированный
〰 Включает принципы GRASP
〰 Может быть реализован с помощью DDD
🔵 В функциональном подходе выделют компоненты системы, их функции и способы взаимодействия, без привязки к объектам
➡️ Выделяем модули для управления товарами (добавление, удаление), обработки заказов (создание, обработка оплаты). Модуль управления товарами может вызывать функции модуля обработки для оформления заказа
🔵 ОО основан на моделировании системы в виде взаимосвязанных объектов, у которых есть свойства и поведение, а также учитывает принципы объектно-ориентированного программирования
Класс — шаблон, который определяет структуру и поведение объектов. Содержит атрибуты (данные) и методы (функции)
Объект — конкретный экземпляр класса, содержащий значения атрибутов и способный выполнять определённые методы
➡️ Рассматриваем систему как набор объектов (Задача, Пользователь), каждый из которых имеет свои свойства и методы, и взаимодействует через них
✳️ GRASP
GRASP (General Responsibility Assignment Software Patterns) — набор рекомендаций и принципов проектирования ПО для определения архитектуры и отношений между объектами
— сфокусирован не на решении прикладных задач, а на распределении какому объекту назначить то или иное поведение
— GRASP может рассматриваться в рамках объектно-ориентированного проектирования, помогает в реализации его принципов
— применяется в веб-разработке и мобильной разработке, автоматизации процессов и т. д.
— может использоваться в сочетании с различными типами паттернов проектирования
Например, чтобы определить, какие объекты будут создавать методы / определить роли классов в компонентах
✳️ Зачем GRASP аналитику?
⚪ помогает разрабатывать четкие, понятные структуры системы
⚪ определять обязанности каждого объекта и устанавливать связи между ними
✳️ Паттерны GRASP
Используются для:
🔵 создания объектов
🔵 определения ответственностей классов
🔵 управления связями между объектами и др
Сначала определяют бизнес-правила и требования к системе➡️ После выбираются подходящие паттерны для реализации этих требований
Каждый паттерн решает конкретную проблему проектирования и имеет свои рекомендации по применению
Популярные принципы GRASP:
1⃣ Controller (Контроллер): координирует работу между объектами и обрабатывает внешние запросы. Объект, который принимает пользовательский ввод, делегирует его другим объектам для выполнения операций
➡️ контроллер веб-приложения обрабатывает запросы от клиентов и вызывает методы для выполнения бизнес-логики
2⃣ Creator (Создатель): отвечает за создание экземпляров других классов
➡️ если есть класс Order, который создает экземпляры Item, то метод создания объекта Item должен быть внутри класса Order
3⃣ Expert (Эксперт): объект, больше всех знает, как выполнить определенную операцию, должен быть ответственным за её выполнение
➡️ класс управления заказами может быть экспертом по созданию и обработке заказов
4⃣ High Cohesion (Высокая связность): класс выполняет только одну задачу / ответственность. Каждый класс должен быть организован вокруг единой цели
➡️ класс EmailSender должен заниматься только отправкой электронных писем, а класс PaymentProcessor - только обработкой платежей
5⃣ Low Coupling (Низкая связность): классы должны быть слабо связаны друг с другом. Изменения в одном классе не должны приводить к изменениям в другом классе
➡️ если меняется способ оплаты в классе PaymentProcessor, класс Order и Customer не должны быть затронуты
6⃣ Pure Fabrication (Чистая фабрикация): для создания объектов, которые не имеют аналога в предметной области, но служат для снижения связанности и увеличения гибкости системы
➡️ класс Logger для записи логов, не является объектом из реального мира, но играет важную роль в системе для логирования
⭐️ Подборка материалов доступна в базе знаний по системному анализу
#проектирование
Проектирование ПО начинается с определения архитектуры высокого уровня (HLA - High Level Architecture). В HLA надо определить объекты или процессы, для чего создаём приложение. Существуют подходы:
Класс — шаблон, который определяет структуру и поведение объектов. Содержит атрибуты (данные) и методы (функции)
Объект — конкретный экземпляр класса, содержащий значения атрибутов и способный выполнять определённые методы
GRASP (General Responsibility Assignment Software Patterns) — набор рекомендаций и принципов проектирования ПО для определения архитектуры и отношений между объектами
— сфокусирован не на решении прикладных задач, а на распределении какому объекту назначить то или иное поведение
— GRASP может рассматриваться в рамках объектно-ориентированного проектирования, помогает в реализации его принципов
— применяется в веб-разработке и мобильной разработке, автоматизации процессов и т. д.
— может использоваться в сочетании с различными типами паттернов проектирования
Например, чтобы определить, какие объекты будут создавать методы / определить роли классов в компонентах
Используются для:
Сначала определяют бизнес-правила и требования к системе
Каждый паттерн решает конкретную проблему проектирования и имеет свои рекомендации по применению
Популярные принципы GRASP:
#проектирование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤5🔥2🤔2
Forwarded from Библиотека Системного Аналитика
Формализация_требований_на_практике.pdf
780.3 KB
Формализация требований на практике
✍️ Авторы: В. В. Кулямин, Н. В. Пакулин, О. Л. Петренко, А. А. Сортов, А. В. Хорошилов
🗓 Год издания: 2006
🔤 Язык: русский
📚 Объём: 69 стр.
Подробное руководство по методам обеспечения адекватного понимания потребностей пользователей и их отражения в формальных моделях. Авторы рассматривают ключевые аспекты работы с требованиями и предлагают эффективные методы их формализации.
О чём книга
✔️ Улучшение процесса сбора требований: Методы и техники для точного выявления и описания задач, которые должно решать программное обеспечение. Книга поможет лучше понимать потребности пользователей и формализовать их.
🚫 Анализ и сравнение методов работы с требованиями: Обзор и сравнение различных подходов, таких как RUP, DOORS, CORE, SSM, RAISE.
📐 Формальные модели: Примеры использования формальных моделей для представления требований и методов их решения.
✏️ Как использовать формальные модели для улучшения взаимодействия между командами разработчиков и заказчиками.
📝 Процесс формализации требований FOREST: Детальное описание процесса формализации требований, включая этапы и техники.
#требования
✍️ Авторы: В. В. Кулямин, Н. В. Пакулин, О. Л. Петренко, А. А. Сортов, А. В. Хорошилов
🗓 Год издания: 2006
🔤 Язык: русский
📚 Объём: 69 стр.
Подробное руководство по методам обеспечения адекватного понимания потребностей пользователей и их отражения в формальных моделях. Авторы рассматривают ключевые аспекты работы с требованиями и предлагают эффективные методы их формализации.
О чём книга
📐 Формальные модели: Примеры использования формальных моделей для представления требований и методов их решения.
#требования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍34❤9🔥5🤔3🎉1
Оконные функции
Оконные функции — функции, которые выполняют вычисления внутри заданного набора данных или "окна" в таблице БД
Принцип работы
1⃣ Оконная функция (ОФ) определяет "окно" данных, на которых будет выполняться вычисление (несколько строк или диапазон значений столбца)
2⃣ Если требуется, данные внутри окна упорядочиваются по одному/нескольким столбцам
3⃣ Применяются вычисления, заданные в ОФ (сумма, среднее значение, ранжирование и тд)
5⃣ Если требуется, результаты группируются по столбцам или выражениям
5⃣ Возврат результатов
Упрощенный синтаксис
➡️
где имя функции = имя оконной функции
окно = выражение, описывающее набор строк для обработки и порядок обработки
Характеристики
🟠 в отличие от агрегатных функций, оконные могут вычислять значения для каждой строки в результате запроса. Агрегатные работают над всем набором данных
🟠 это не то же самое, что GROUP BY. ОФ не уменьшают количество строк, а возвращают столько значений, сколько получили на вход
🟠 в отличие от GROUP BY, OVER может обращаться к другим строкам
Как используются?
⭕️ для определения порядка строк и их ранжирования в рамках группы данных
Например, можно выделить наиболее ранний или поздний заказ для каждого клиента
🟢 применение фильтров к результирующему набору данных по условиям внутри функции
🟢 для выполнения вычислений на группах данных. Не нужно создавать временные таблицы или подзапросы
🟢 обращения к данным из других строк в пределах окна. Полезно для сравнения значений или расчета разницы между значениями
Виды
⏺ Агрегатные — вычисляют агрегированные значения по группам строк в окне. Например, среднее значение или сумма всех значений в окне
⏺ Ранжирующие — назначают ранг каждой строке в пределах окна в соответствии с заданными критериями сортировки. Например, можно ранжировать товары по его цене в каждой категории.
Под ключевым словом OVER обязательным идёт условия ORDER BY, по которому будет происходить сортировка ранжирования
➡️ ROW_NUMBER — возвращает номер строки, используется для нумерации;
➡️ RANK — возвращает ранг каждой строки
⏺ Смещения — позволяют перемещаться и обращаться к разным строкам в окне, относительно текущей строки, а также к значениям в начале или в конце окна
➡️ LAG — обращается к данным из предыдущих строк окна
➡️ LEAD — обращается к данным из следующих строк. Аналогично LAG имеет 3 аргумента
Примеры
➡️ Ранжирование данных
➡️ Вычисление среднего значения по группам
Окно vs Партиция в оконных функциях
✨ Окно — набор строк внутри результата запроса, на котором выполняется операция агрегации или аналитическая функция
➡️ Таблица с данными о студентах и их оценках за тесты.
Нужно вычислить средний балл каждого студента по последним трем тестам.
ОФ определит "окно", которое охватывает последние три записи для каждого студента, и вычислит средний балл только в этом окне данных.
✨ Партиция (оператор PARTITION BY) — подмножество строк, выделенное для ОФ по одному/нескольким столбцам в таблице.
Задает условие, по которому эти строки группируются для вычисления функций.
➡️ Есть таблица с данными о продажах,.
ОФ помогут вычислить суммы продаж в каждом регионе отдельно.
Партиция разделит данные на группы по регионам, после чего сумма продаж вычисляется в каждой группе отдельно.
💡 Окно определяет, где выполняется функция,
а партиция - как данные группируются для выполнения этой функции
Недостатки оконных функций
🟢 не все СУБД их поддерживают
🟢 производительность может ухудшаться из-за их влияния на выполнение запроса
🟢 отладка также может быть затруднительна
⭐️ Подборки материалов по этой и другим темам доступны в базе знаний по системному анализу
#бд #sql
Оконные функции — функции, которые выполняют вычисления внутри заданного набора данных или "окна" в таблице БД
Принцип работы
Упрощенный синтаксис
<имя функции> OVER (<окно>)где имя функции = имя оконной функции
окно = выражение, описывающее набор строк для обработки и порядок обработки
Характеристики
Как используются?
Например, можно выделить наиболее ранний или поздний заказ для каждого клиента
Виды
Под ключевым словом OVER обязательным идёт условия ORDER BY, по которому будет происходить сортировка ранжирования
Примеры
SELECT student_id, test_score,
RANK() OVER (ORDER BY test_score DESC)
AS rank
FROM student_scores;
SELECT region, sales_amount,
AVG(sales_amount) OVER (PARTITION BY region)
AS avg_sales_per_region
FROM sales_data;
Окно vs Партиция в оконных функциях
Нужно вычислить средний балл каждого студента по последним трем тестам.
ОФ определит "окно", которое охватывает последние три записи для каждого студента, и вычислит средний балл только в этом окне данных.
Задает условие, по которому эти строки группируются для вычисления функций.
ОФ помогут вычислить суммы продаж в каждом регионе отдельно.
Партиция разделит данные на группы по регионам, после чего сумма продаж вычисляется в каждой группе отдельно.
а партиция - как данные группируются для выполнения этой функции
Недостатки оконных функций
#бд #sql
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍18❤8⚡2
В результате возникает хеш (hash) — отображение данных в виде уникальной строки
Хэш-функция — алгоритм, который принимает входные данные любого размера и возвращает хэш фиксированного размера
Результат хеш-функции называется «хеш-суммой»\«хеш», а входные данные — «сообщением»
Исходное сообщение -> [Хэш-функция] -> Хэш
Когда хэши совпадают — это коллизия. Это небезопасно, т.к. позволяет подменить данные.
Как работает хеш-функция
По шагам:
Функция должна быть криптостойкой, т.е. ее результат практически невозможно вскрыть
Это делается, чтобы предотвратить атаки по радужным таблицам и сделать каждый хэш уникальным, даже для одинаковых исходных данных
Основные характеристики хэш-функций
Для чего используется хэширование
Примеры хэширования
Популярные алгоритмы хэширования
Шифрование — преобразование данных в вид, который нельзя прочитать без специального ключа
Как работает шифрование
Вводятся данные и используется ключ для шифрования.
Данные преобразуются алгоритмами в зашифрованный формат, который может быть расшифрован только с использованием соответствующего ключа
Основные типы
Для чего используется
Примеры использования
Популярные алгоритмы
#безопасность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🔥16❤12
Forwarded from Библиотека Системного Аналитика
Please open Telegram to view this post
VIEW IN TELEGRAM
Нужна, чтобы упорядочить данные по определённому критерию
Алгоритм работы
Примеры параметров
GET /products?sort=price&order=desc
сортировка по цене в порядке убыванияGET /products?sort=price&order=desc — сортировка по цене в порядке убыванияsort=field1,field2 sort = field1,field2: указание несколько полей для сортировки
GET /products?sort=price,name — сначала сортировка по цене, затем по имениGET /products?custom_sort=popularity — сортировка по популярности, где popularity — кастомный критерийGET /products?sort=price&nulls=last — значения null идут последнимиПримеры использования
Используется для отбора данных по заданным критериям
Работает по аналогичному алгоритму, как и сортировка
В URL, используются параметры строки запроса для условий фильтрации
Каждый параметр имеет формат field=value, несколько параметров разделяются символом "&"
Методы
GET /api/items?status=active — фильтрует все элементы, у которых статус = activeGET /api/items?price[gte]=10&price[lte]=50 — элементы с ценой в диапазоне от 10 до 50GET /api/items?name[like]=%book% — элементы со словом book в названииGET /api/items?category=in:(books,electronics) — элементы с категорией books или electronicsПримеры использования
Для ускорения запросов — использовать индексы на колонках, которые часто фильтруются
При пагинации происходит разделение данных на страницы для удобства просмотра и ускорения ответов
Алгоритм работы
Методы
GET /items?limit=10&offset=20 — возвращает 10 элементов, начиная с 21-го элемента (т.к. offset=20)GET /items?page=3&page_size=10 — 10 элементов, начиная с третьей страницыGET /items?cursor=abc123&limit=10 — 10 элементов, начиная с позиции, определенной курсором abc123Примеры использования
Для больших наборов данных лучше использовать курсорную пагинацию
Параметры в URL указываются в любом порядке, сервер должен обрабатывать их в логической последовательности:
Фильтрация
#api
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43❤16🔥8
Интернет — это глобальная сеть систем, которые связаны друг с другом для хранения и передачи данных.
Структура интернета
172.217.18.0), которые используются для маршрутизации данных в интернетеИнтернет работает на базе набора протоколов TCP/IP, которые реализовывают 3, 4 и 7 уровни модели OSI:
Подробнее про OSI — в наших постах (ссылки в материалах)
Доменная система имен (DNS). Включает:
Пример: Один из корневых серверов — A.ROOT-SERVERS.NET, управляемый организацией VeriSign.
Пример: Для домена .com существует множество TLD серверов, например, a.gtld-servers.net.
Пример: Если запрос касается домена example.com, авторитетный сервер для google.com может быть ns1.google.com.
Интернет централизован?
Нет. Интернет состоит из множества автономных систем и сетей, которые управляются разными организациями и компаниями по всему миру. Поэтому интернет работает даже при сбоях в отдельных сегментах, так как нет центральной точки отказа.
Однако существует координационный орган — ICANN (Internet Corporation for Assigned Names and Numbers). ICANN отвечает за распределение IP-адресов, управление доменными зонами и поддержание стабильности работы сети.
ICANN координирует распределение IP-адресов и доменных зон верхнего уровня (.com, .org и т.д.), т.е. обеспечивает работу корневых DNS-серверов. ICANN не управляет содержимым сайтов и интернет-провайдерами, а лишь поддерживает техническую инфраструктуру. Хотя ICANN не может физически отключить интернет в стране, но может прекратить обслуживание доменных зон.
Что происходит, когда мы вводим в браузере google.com?
Автор: Виталия Малютина
#сети
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥50👍24❤10