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

Кратко про юнит-тесты в Rust

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

Привет!

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

Юнит-тесты в Rust обычно располагаются в том же файле, что и тестируемый код, в специальном модуле с именем tests, аннотированном #[cfg(test)]. Внутри этого модуля размещаются функции тестирования, каждая из которых также аннотируется как #[test].

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

Реверсинг прошивок микроконтроллеров

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

Сегодня мы поговорим о реверс инжиниринге, но не о реверсе софта, а о реверсинге железа. Как следует из термина, реверс-инжиниринг (обратная разработка) - это процесс разборки спроектированного продукта или устройства на его элементарные инженерные компоненты. Мотивация для такого действия может быть различной: от конкурентного анализа и выявления нарушений патентных прав до восстановления дизайна проекта, исходный код которого утерян. Тем не менее, все они включают в себя необходимость или желание понять, как был создан продукт или устройство. Слово “как” здесь используется в самом широком смысле, включая вопросы о том, “что было использовано для его создания”, “где находится каждый элемент”, “когда происходят определенные события” и т.д.

Реверс-инжиниринг в мире электроники может принимать самые разные формы: от программного обеспечения до аппаратного обеспечения, от "черного ящика" до интрузивного использования. Реверс-инжиниринг аппаратного обеспечения может быть таким же простым, как разборка изделия для идентификации внутренних компонентов и схем платы, или таким же сложным, как извлечение полупроводниковых схем и тестирование на месте.

Читать далее
Всего голосов 34: ↑11 и ↓23-8
Комментарии15

Модить или не модить: Пользовательский контент — это будущее игровой индустрии

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

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

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

Готовимся к собеседованию по Rust: 4 самых частых вопросов. Часть 1

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

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

Rust — язык программирования с акцентом на безопасность, скорость и параллелизм. Rust решает многие проблемы, с которыми сталкиваются на других ЯП, например, управление памятью без сборщика мусора.

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

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

Введение в оптику в Scala

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

На протяжении всего этого блога я неоднократно упоминал о преимуществах сильной системы типов. Я рассказывал об уточнении типов (type refinement) для проверки значений, о рассчитанном на новичков и продвинутом подходе к выведению классов типов (type-class derivation) или о типобезопасном подходе к обмену сообщениями с помощью pass4s.

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

В этом посте я расскажу об оптике.

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

Как инженеры GitHub используют GitHub Copilot: 4 способа

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


Узнаем, как GitHub Copilot повышает эффективность работы инженеров из GitHub, позволяя автоматизировать повторяющиеся задачи, сохранять концентрацию и многое другое.
Читать дальше →
Всего голосов 15: ↑11 и ↓4+11
Комментарии1

Кратко про микросервисы на Scala и Erlang

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

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

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

В статье рассмотрим два языка программирования, которые выделяются своим функциональным подходом и широким применением в микросервисной архитектуре: Scala и Erlang.

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

Интероперабельность с нативным кодом через платформу .NET

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

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

Часто некоторые проекты требуют от нас все более новых подходов к решению задач. Одна из таких задач - эффективное взаимодействие управляемого кода .NET с нативным кодом, которое позволяет по максимуму использовать ресурсы ОС и другого ПО, написанного не на .NET.

Интероперабельность необходима для использования уже существующих библиотек, написанных на C, C++ или других языках, которые выполняют важные или высокопроизводительные функции. Таким образом открывается возможность интеграции .NET-приложений с различными системными компонентами и устройствами, доступ к которым возможен только через нативные API.

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

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

Важные элементы при работе в Scrum

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

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

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

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

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

Компьютерное зрение в 2024 году: Главные задачи и направления

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

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

Рынок компьютерного зрения сейчас переживает бурный рост с прогнозируемым увеличением с 22 миллиардов долларов в 2023 году до 50 миллиардов к 2030 году при 21.4% совокупного годового прироста с 2024 по 2030 год.

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

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

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

В ClickHouse материализованные представления (materialized views) являются механизмом, автоматически выполняющим запросы к исходным таблицам при поступлении новых данных. 

Материализованное представление (МП) - это специальный тип таблицы, содержащей результат выполнения запроса к исходным данным. Этот результат фактически представляет собой кэшированное представление данных из исходных таблиц. Одной из ключевых особенностей МП в ClickHouse является их автоматическое обновление. При поступлении новых данных в исходные таблицы МП обновляется, автоматически пересчитываясь в соответствии с определенным запросом.

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

Роботы наступают. И это хорошо

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


В этом отрывке из новой книги «Сердце и чип: Наше светлое будущее вместе с роботами» (“The Heart and the Chip: Our Bright Future with Robots”) директор Лаборатории компьютерных наук и искусственного интеллекта при MIT (CSAIL) Даниэла Рус рассказывает о том, как роботы могут расширить возможности человека.
Читать дальше →
Всего голосов 14: ↑13 и ↓1+17
Комментарии4

Обеспечение безопасности загрузчика GRUB в Linux

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


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

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

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

Async iterator timeout в Python

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

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

В числе прочих задач, решаемых при реализации возможности стриминга, существует задача определения ситуации, в которой сервис, исполняющий запрос, упал с ошибкой, и больше не может продолжать стриминг ответов. В таком случае мы даже не можем понять что именно произошло - обработка и отдача очередной порции ответа будет, но задерживается, либо же передача прервалась, и нужно сообщить об ошибке “наверх”. В протоколе HTTP, например, для детерминирования корректной вычитки ответа может быть использован заголовок Content-Length. Достаточно посчитать количество вычитанных из сокета байт тела запроса\ответа, и сравнить со значением заголовка. Сходится - мы все получили, не сошлось и сокет закрыт - ошибка. Однако вариант решения с заранее заданным количеством данных в первой порции ответов не является универсальным, поскольку не во всех случаях можно точно понимать, сколько именно данных будет передано. Да и архитектура с использованием брокеров сообщений предполагает постоянное поддержание соединения, поэтому мы можем только знать, что из такой-то очереди поступают ответы на ранее сделанный запрос, и в каком-то из ответов будет метка окончания, как маркер того, что запрос обработан и ответ выслан и получен полностью, а если такого маркера еще не получено - остается продолжать ждать. Но ждать можно бесконечно.

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

Деплоим приложение в k8s через Jenkins+Helm3+ArgoCD

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

В мире современной разработки программного обеспечения Kubernetes (K8s) стал неотъемлемой частью инфраструктуры, предоставляя масштабируемость и гибкость в развертывании контейнеризированных приложений. В этой статье мы рассмотрим эффективный способ деплоя приложений в среде Kubernetes, используя мощные инструменты: Jenkins, Helm 3 и ArgoCD.

Jenkins, с его широким спектром возможностей для автоматизации процессов сборки и развертывания, становится основой нашего пайплайна разработки. Helm 3, в свою очередь, предоставляет инструменты для управления пакетами Kubernetes (чарта), упрощая установку и обновление приложений. Наконец, ArgoCD позволяет автоматизировать процесс развертывания и управления приложениями в Kubernetes-кластере, предоставляя возможность контролировать состояние и версионирование приложений.

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

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

Разбираемся в ROC и AUC

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

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

В машинном обучение очень важны метрики оценки эффективности моделей. Среди таких метрик есть: кривые ROC и показатель AUC. Они позволяют оценивать бинарные классификаторы.

В этой статье мы как раз и разберем их.

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

Небольшой туториал по полигруппам в Zbrush

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

Полигруппы (Polygroups) в Zbrush представляют из себя способ разделения уже существующей 3D-модели на группы полигонов с целью выполнения над ними различных видов работ. При создании каждой из этих групп полигонов ей назначается свой уникальный цвет, что помогает нам визуально различать их. Мы можем добавить секционирование на полигруппы в любую модель, просто включив в Zbrush опцию PolygFrame. Кроме того, они позволяют сделать процесс работы над моделью более гладким, так как мы можем скрыть или убрать ненужные в данный момент секции полигрупп с помощью простого сочетания клавиш.

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

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

Подглядывание в A/B тестах: как не потерять достоверность данных

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

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

A/B тестирование позволяет принимать обоснованные решения о том, какие функции или изменения наилучшим образом способствуют улучшению пользовательского опыта и повышению конверсии. Однако, несмотря на кажущуюся простоту проведения таких экспериментов, существует ряд подводных камней, которые могут серьезно исказить результаты. Один из самых заметных и опасных — это так называемая проблема peeking или подглядывания. Эта проблема возникает, когда аналитики и маркетологи начинают слишком рано анализировать данные теста, не дожидаясь его завершения. Такое поведение может привести к неверным выводам и решениям, которые, в свою очередь, могут нанести ущерб бизнесу.

В статье рассмотрим, что такое проблема подглядывания в контексте A/B тестирования как ее решить.

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

Как создать мультидокументный ридер и чат-бот с помощью LangChain и ChatGPT

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

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

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

Препарируем Wazuh. Часть 3: источники не из коробки

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

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

Однако, в реальности все бывает не так просто. Во многих организациях есть самописное или сильно кастомизированное ПО, логи с которых SIEM не умеет нормализовывать. То есть по факту он просто незнаком с данным видом источников. Если такой нестандартный источник передает события по Syslog, то в SIEM, скорее всего, мы увидим событие практически в сыром виде. То есть поля, которые обычно заполняются при нормализации, в данном случае не будут заполнены.

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

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

Информация

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