Как стать автором
Обновить
937.76
OTUS
Цифровые навыки от ведущих экспертов
Сначала показывать

Всё ещё используете If/else валидацию в Spring 6.0+ / SpringBoot 3.0+?

Время на прочтение 12 мин
Количество просмотров 1.2K

Чтобы избежать влияния несанкционированных параметров на ваш бизнес, в ваших веб-сервисах должна быть реализована проверка параметров на уровне контроллера! В большинстве случаев параметры запроса можно разделить на два следующих вида:

— POST и PUT-запросы, использующие requestBody для передачи параметров.
— GET-запросы, использующие requestParam/PathVariable для передачи параметров.

Читать далее
Всего голосов 12: ↑7 и ↓5 +2
Комментарии 5

10 распространённых рисков проекта и шаги по их устранению

Время на прочтение 7 мин
Количество просмотров 538

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

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

Читать далее
Всего голосов 18: ↑15 и ↓3 +12
Комментарии 0

Использование PKI для безопасности IoT

Время на прочтение 5 мин
Количество просмотров 431

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

Читать далее
Всего голосов 14: ↑10 и ↓4 +6
Комментарии 0

Тестирование без моков: язык паттернов. Часть 2

Время на прочтение 37 мин
Количество просмотров 542

Язык паттернов помогает избежать многих проблем: не использует широкие тесты, не использует моки, не игнорирует инфраструктуру и не требует архитектурных изменений. Он обладает мощью широких тестов, а также скоростью, надёжностью и удобством сопровождения, присущим модульным тестам. Хотя и не обошлось без компромиссов. В этой публикации подробнее рассмотрим паттерны инфраструктуры, паттерны Nullability и паттерны тестирования легаси-кода.

Читать далее
Всего голосов 16: ↑14 и ↓2 +12
Комментарии 0

Pgpool-II

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 2.7K

Привет, Хабр!

Pgpool-II позволяет юзерам PostgreSQL управлять пулами соединений БД, реализовывать репликацию данных между серверами БД. Pgpool-II работает как прокси-сервер между клиентскими приложениями и серверами PostgreSQL, перехватывая запросы от клиентов и направляя их к соответствующим серверам БД согласно настроенным правилам и политикам.

Pgpool-II также поддерживает множественные режимы репликации, включая репликацию на уровне строки и репликацию на уровне транзакций. Репликация на уровне строки позволяет синхронизировать изменения данных между серверами в реальном времени, в то время как репликация на уровне транзакций сосредотачивается на синхронизации транзакций целиком.

Читать далее
Всего голосов 14: ↑11 и ↓3 +8
Комментарии 2

CSS и безопасность данных

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 2.4K

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

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

В течение нескольких лет современные браузеры, такие как Chrome или Firefox, пытались защитить пользователей веб-приложений от различных атак, в том числе XSS. Они делали это с помощью XSS-фильтров, которые во многих случаях позволяли им блокировать такие атаки. Однако эти фильтры оказывались все менее и менее эффективными, и браузеры, такие как Chrome, постепенно отключают их в поисках альтернативных методов защиты. Принцип работы XSS-фильтров довольно прост. Когда ваш веб-браузер отправляет запрос на веб-сайт, его встроенный фильтр межсайтовых сценариев проверяет, есть ли в запросе исполняемый JavaScript, например, блок <script> или HTML-элемент со встроенным обработчиком событий. Также проверяется, есть ли исполняемый JavaScript в ответе от сервера

Теоретически это должно хорошо работать, но на практике это легко обойти, и также нет защиты на стороне клиента от XSS-атак.

Давайте посмотрим, как можно украсть конфиденциальные данные с помощью каскадных таблиц стилей (CSS).

Читать далее
Всего голосов 13: ↑9 и ↓4 +5
Комментарии 4

Анонс Asserts

Время на прочтение 8 мин
Количество просмотров 570

Представляем вам Asserts — платформу для анализа и отслеживания метрик. Сканируя метрики вашего приложения в любой совместимой с Prometheus базе данных временных рядов (time-series database, TSDB), Asserts в реальном времени: 

— создаёт карту архитектуры приложения и инфраструктуры, 
— строит дашборды, 
— отслеживает цели уровня обслуживания (service level objectives, SLOs) 
— и запускает автоматические проверки для выявления изменений и потенциальных проблем. 

Наша задача — снизить усталость от предупреждений и сократить время поиска первопричины.

Читать далее
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 1

Аналитика клиентского опыта: база

Уровень сложности Простой
Время на прочтение 8 мин
Количество просмотров 332

Привет, Хабр!

В последние годы понятие клиентского опыта стало чуть ли не мантрой в бизнесе, и ведь не зря. Пользовательский интерфейс частенько становится причиной успеха того или иного продукта, поэтому анализ клиентского опыта становится не просто nice to have, а must have для каждой компании, считающей себя современными.

Читать далее
Всего голосов 10: ↑8 и ↓2 +6
Комментарии 0

Кратко про протоколы взаимодействия в микроконтроллерах: SPI, IDC, UART, CAN

Уровень сложности Простой
Время на прочтение 10 мин
Количество просмотров 8.3K

Привет, Хабр!

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

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

В этой статье рассмотрим такие протоколы взаимодействия как SPI, IDC, UART, CAN

Читать далее
Всего голосов 34: ↑20 и ↓14 +6
Комментарии 63

Что не так с управлением поставками?

Время на прочтение 9 мин
Количество просмотров 634

Меня не покидают размышления — что на самом деле значит быть Delivery Manager-ом? И почему мой опыт в этой роли часто расходится с опытом и ожиданиями других?

Читать далее
Всего голосов 14: ↑12 и ↓2 +10
Комментарии 3

Модульность в JavaScript: CommonJS, AMD, ES Modules

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 2.9K

Привет, Хабр!

Начало истории в модульности в JavaScript положил хаос: глобальные переменные, конфликты имен и сложности с зависимостями. Со временем сообщество предложило несколько подходов для организации модулей, начиная от CommonJS, которое легло в основу Node.js, до AMD, предпочтительного для асинхронной загрузки кода в браузерах. И приближаясь к настоящему времени появился ES Modules стандартизированный и встроенный в язык механизма модулей, который стал частью ECMAScript в 2015 году.

В этой статье рассмотрим кратко про CommonJS, AMD, и наконец - как появился ES Modules.

Читать далее
Всего голосов 14: ↑10 и ↓4 +6
Комментарии 7

Разделение задач резервного копирования и удаления устаревших копий в PostgreSQL при помощи pgBackRest

Время на прочтение 11 мин
Количество просмотров 2.7K

Управление резервными копиями является одним из ключевых моментов в любой стратегии администрирования баз данных. Это гарантирует, что в случае сбоя или потери данных вы можете быстро восстановить всю информацию. pgBackRest — популярное решение для резервного копирования и восстановления PostgreSQL, которое предоставляет множество функций для управления резервными копиями. Тем не менее, по умолчанию стандартная конфигурация pgBackRest часто объединяет операции резервного копирования и удаления устаревших копий в одном процессе. 

Читать далее
Всего голосов 11: ↑9 и ↓2 +7
Комментарии 0

Работа со временем и датой в C# с применением библиотеки Humanizer

Время на прочтение 7 мин
Количество просмотров 3.8K

Цель этой статьи — показать вам, как использовать Humanizer, чтобы вывести работу со временем и датой в ваших C#-проектах на новый уровень. Я расскажу о том, как преобразовать объекты DateTime и TimeSpan в удобный для восприятия человеком вид, как настраивать параметры гуманизации и как объединять гуманизацию строк со временеме/датой. Мы также рассмотрим некоторые реальные сценарии использования и примеры того, как Humanizer может улучшить пользовательский опыт в отношении времени и даты.

Читать далее
Всего голосов 15: ↑11 и ↓4 +7
Комментарии 12

Новые горизонты баз данных: 8 тенденций в управлении информацией

Время на прочтение 14 мин
Количество просмотров 4K

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

Сегодня мы узнаем про перспективы развития баз данных — 8 тенденций управления информацией и рассмотрим 11 наглядных примеров.

Читать далее
Всего голосов 13: ↑9 и ↓4 +5
Комментарии 3

Тестирование без моков: язык паттернов. Часть 1

Время на прочтение 26 мин
Количество просмотров 3.1K

Автоматизированные тесты очень важны. Без них программистам приходится тратить огромное количество времени на ручную проверку и исправление кода. К сожалению, многие автотесты также тратят огромное количество времени. Простым и очевидным вариантом является создание широких тестов, которые являются автоматизированными версиями ручных тестов. Но они нестабильны и медленны.

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

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

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

Читать далее
Всего голосов 12: ↑10 и ↓2 +8
Комментарии 12

Нарратив и геймплей: создание согласованного игрового опыта

Уровень сложности Средний
Время на прочтение 11 мин
Количество просмотров 1.9K

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

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

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

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

Читать далее
Всего голосов 12: ↑8 и ↓4 +4
Комментарии 10

SQL инъекции для продолжающих: ломаем настоящий сайт

Время на прочтение 5 мин
Количество просмотров 15K

Про SQL-инъекции написано огромное количество статей. Все знаю про пресловутые ‘ OR 1 = 1 и аналогичные конструкции, но далеко не все реализовывали их на практике. В этой статье мы разберем на практике некоторые способы реализации SQL-инъекций на примере уязвимого сайта.

Статья предназначена для тех, кто хочет на практике разобраться с тем, что такое SQL-инъекции.

Читать далее
Всего голосов 22: ↑18 и ↓4 +14
Комментарии 7

В общих словах про ЯП Dart

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 5.4K

Привет, Хабр!

История Darth Vader началась в 2011 году. Целью создания Dart было предложить альтернативу JavaScript, которая позволила бы создавать более сложные, высокопроизводительные веб-приложения, облегчая при этом процесс разработки.

Со временем Dart претерпел множество апдейтов, но его основной рывок произошел с запуском Flutter — фреймворка для создания нативных интерфейсов для мобильных, веб- и настольных приложений из единой кодовой базы.

Язык поддерживает ООП с классами и множественным наследованием, а также функциональные возможности, такие как высшие порядки функций, замыкания и асинхронность и т.п.

Система типов в Dart поддерживает как статическую типизацию, так и типизацию во время выполнения.

Читать далее
Всего голосов 18: ↑10 и ↓8 +2
Комментарии 8

Обзор балансировщика traefik

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 6.8K

Привет, Хабр!

Traefik - современный и мощный балансировщик нагрузки.

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

Читать далее
Всего голосов 14: ↑10 и ↓4 +6
Комментарии 6

Мульти-тенант в Django

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 3.3K

Привет, Хабр!

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

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

В Django мульти-тенант реализовывается довольно часто и для этого есть библиотека django-multitenant.

Читать далее
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 1

Информация

Сайт
otus.ru
Дата регистрации
Дата основания
Численность
101–200 человек
Местоположение
Россия
Представитель
OTUS