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

9 полезных крейтов в Rust

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

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

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

Крейты в Rust – это пакеты, которые можно использовать для расширения функциональности проектов.

Читать далее
Всего голосов 21: ↑16 и ↓5+11
Комментарии15

Модули ES6: Rollup

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

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

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

Многие при первой встречи с такими проблемами пытались разделить код на отдельные файлы и подключать через тег <script>. Но такое решение было очень далеко от идеала. Потом были попытки использовать различные библиотеки и инструменты, такие как RequireJS или Browserify, но каждый из них имел свои недостатки и ограничения.

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

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

Препарируем Wazuh. Часть 2: Подключаем источники

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

В первой статье мы начали рассмотрение решения с открытым кодом Wazuh. Мы развернули систему в конфигурации All In One, то есть все компоненты находятся на одном узле. В этой статье мы продолжим настройку нашего SIEM. Конечно, после установки он уже не совсем бесполезен, так как он собирает события из операционной системы, на которой развернут, поэтому если вы зашли в консоль и увидели какие-то алерты то в общем это нормально, так как события уже собираются, прав ила корреляции отрабатывают и алерты создаются. Но при промышленном использовании нам естественно необходимо подключать другие узлы в качестве источников событий. Этим мы сегодня и займемся.

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

Улучшаем технику серфинга с помощью компьютерного зрения

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

Привет, Хабр! На связи Рустем, и я — серфер. Я катаюсь на Тенерифе и углубленно изучаю мир серфинга. Моя страсть к волнам привела меня к исследованию того, как технологии могут помочь нам стать лучше в серфинге. Именно поэтому я решил создать проект, использующий компьютерное зрение для анализа стоек серферов и помогающий улучшить нашу технику.

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

Руководство по интеграции Flowable с Spring Boot

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

BPMN — это язык визуального моделирования бизнес-процессов, использующий графические блок-схемы. Это открытый стандарт, созданный консорциумом Object Management Group (OMG).

Процессный движок Flowable позволяет разворачивать процессы в соответствии с международным отраслевым стандартом BPMN 2.0. Каждый процесс BPM представляет собой последовательность объектов, связанных с действиями и имеющих стартовое и конечное события.

BPMN используется для автоматизации бизнеса — например, в управлении пользовательским/клиентским опытом или управлении мероприятиями. Он упрощает и ускоряет разработку, уменьшая количество ошибок.

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

Основные настройки для управления ресурсами в PostgreSQL: настройка памяти, CPU и I/O

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

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

При работе с PostgreSQL (да и в целом с любой БД) важно правильно настраивать и управлять ресурсами, такими как память, процессорное время и дисковые операции, и так далее для обеспечения лучшей производительности и стабильности работы БД.

В этой статье мы как раз и рассмотрим кратко о том, как управлять ресурсами в PostgreSQL.

Читать далее
Всего голосов 13: ↑13.5 и ↓-0.5+14
Комментарии17

13 инструментов для тестирования методом «чёрного ящика»

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

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

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

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

Как выбрать правильный стат тест для разных метрик

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

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

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

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

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

Автоматизированная торговля акциями с использованием глубокого обучения с подкреплением

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

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

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

Читать далее
Всего голосов 23: ↑20 и ↓3+17
Комментарии12

Анализ новостей с помощью сегментации и кластеризации временных рядов

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

В Отусе я прошла курс ML Advanced и открыла для себя интересные темы, связанные с анализом временных рядов, а именно, их сегментацию и кластеризацию. Я решила позаимствовать полученные знания для своей дипломной университетской работы по ивент-анализу социальных явлений и событий и описать часть этого исследования в данной статье.

Шаг 1. Сбор данных

В качестве источника данных я взяла информационно-новостной ресурс Лента.ру, так как с него легко парсить данные, новости разнообразны и пополняются в большом объеме ежедневно. Для теста я спарсила новости за последний год (март 2023 – март 2024) с помощью питоновских BeautifulSoup и requests.

В коде происходит процедура сбора заголовка, даты и тематики новостей:

Читать далее
Всего голосов 24: ↑22 и ↓2+20
Комментарии9

Beego в Golang для начинающих

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

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

Beego – это фреймворк для разработки веб-приложений на языке Go, ориентированный на быстрое развертывание и простоту использования. В его основе лежит идея создания полнофункциональных приложений с минимум усилиям на настройку и кодирование. Это достигается за счет широкого выбора инструментов, включая ORM, систему маршрутизации, интерфейс кмд и многое другое. Beego придерживается принципов RESTful и MVC.

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

План развития: не панацея развития, а инструмент

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

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

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

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

О преступлениях в ИТ простым языком

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

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

Для начала давайте посмотрим о каких статьях УК идет речь:

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

CRTP в C++

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

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

CRTP — это метод в C++, при котором класс наследуется от шаблона класса, используя себя в качестве параметра шаблона. Это выглядит примерно так: класс X наследуется от класса-шаблона Y<X>. Этот паттерн позволяет базовому классу напрямую обращаться к методам производного класса. С помощью CRTP можно можно обогатить интерфейс производного класса, внеся в него дополнительные методы через базовый класс-шаблон.

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

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

Синтетическое генерирование данных (SMOTE)

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

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

В далеком 2002 году, когда многие из нас еще тусовались на IRC и мечтали о широкополосном интернете, Нитеш Чавла и его команда представили миру SMOTE. Этот алгоритн решал реальную и больную проблему — несбалансированность классов в обучающих данных.

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

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

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

Тестирование баз данных

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

Тестирование баз данных включает в себя тестирование методом «чёрного ящика», «белого ящика» и набор требований ACID — атомарность, согласованность, изоляция и устойчивость. В этом руководстве я объясню все необходимые определения, расскажу, как оно проводится, и приведу примеры.

Читать далее
Всего голосов 19: ↑13 и ↓6+7
Комментарии3

В общих чертах про функциональное программирование в Rust

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

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

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

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

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

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

Кроме того, Rust имеет поддержку функций высшего порядка и замыканий.

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

Хранение загружаемых пользователями файлов

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

В самом начале своей карьеры я имел честь в одно лицо разрабатывать проект, предназначенный для массового пользователя. Надо сказать, что почти все основополагающие принципы того, как провалить проект, были соблюдены, однако, он до сих пор жив. Проект был предназначен для принудительного использования определенной категорией работников бюджетной сферы. Технического задания, аналитики, дизайн-документов, макетов в Фигме, лавандового смузи, и прочих этих ваших модных слов, без которых N лет назад строили БАМ и Траннсиб не было от слова совсем. Зато, были процессы “в бумаге”, которые требовалось оцифровать. Поэтому то, что можно было принять за ТЗ, выглядело как “Эти (работники) заполняют вот это (бумаги) потом несут тем (проверяющим) а дальше все это хранится, сделай чтобы они с компьютера могли загрузить и отправить, у нас тут целый этаж бумагами занят, пожар начнется - всему хана”. Используя весь свой багаж знаний и опыта в построении высоконагруженных систем (на этом месте я отошел от написания статьи сначала проржаться а потом поплакать), я приступил к реализации.

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

Кратко про алгоритм обучения Q-learning и как он реализуется в Python для новичков

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

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

Q-learning — это алгоритм обучения с подкреплением, который позволяет агенту оптимизировать свою стратегию действий в динамичной среде, стремясь максимизировать сумму будущих наград. Агент исследует среду, принимая решения, основанные на предыдущем опыте, а не на предварительной модели мира.

В этой статье мы и рассмотрим этот алгоритм.

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

Делаем макросы в Rust

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

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

Rust имеет два основных типа макросов: декларативные и процедурные. Каждый из этих типов служит различным целям и предоставляет различные возможности манипуляции с кодом.

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

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

В этой статье мы как раз и рассмотрим то, как их пишут на Rust.

Начнем с декларативных!

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

Информация

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