Feed aggregator

[Перевод] Отправка метрик Pi-Hole в Graylog с помощью Zabbix

Habr.com - Wed, 11/20/2024 - 20:02

В начале 2021 года я написал статью, посвященную сбору детальных метрик Pi-Hole с помощью telegraf и influxdb с последующим отображением на дашбордах Grafana. Прошло несколько лет и я перешел на Graylog (для логирования) и Zabbix (для контроля за ошибками и производительностью).

В связи с этим я решил пересмотреть свою старую реализацию и перенести весь функционал с оригинального TIG-стека в Graylog, используя агент Zabbix для мониторинга и инициации загрузки данных.

Читать далее

Сено, чанки, два промпта: кто такой MarkUp-инженер и как его обучать

Habr.com - Wed, 11/20/2024 - 19:45

В работе над смарт-системой на базе AI нам понадобились специалисты по разметке данных — MarkUp-инженеры. Рынок труда быстро трансформируется, и новые позиции не всегда можно закрыть готовыми специалистами, поэтому мы сосредоточились на формировании навыков внутри команды. Мы поняли, что навыки QA-инженеров пересекаются с компетенциями, необходимыми для работы с данными в AI-системах, и решили организовать производственное обучение внутри команды. Рассказываем о том, кто такие разметчики, как тестировщики осваивали MarkUp, и что из этого вышло.

Читать далее

Внедрение ГОСТ-шифрования канала передачи данных с ЦБ РФ

Habr.com - Wed, 11/20/2024 - 19:28

Добрый день! Мы – команда сопровождения банковских телекоммуникаций Национального Расчетного Депозитария (Группа «Московская Биржа»). В НРД мы отвечаем за сопровождение информационных сервисов, которые используются на ежедневной основе при отправке платежей/сообщений через каналы SWIFT и СПФС, сдачи отчетности, взаимодействию со Федеральными органами исполнительной власти и других не менее важных направлений.

В этой статье расскажем о тех изменениях, которые затронули все банки, работающие через Транспортный Шлюз Банка России (ТШ БР), и как удалось найти альтернативное решение там, где это казалось невозможным.

Читать далее

[Перевод] Preview сложных элементов в Compose

Habr.com - Wed, 11/20/2024 - 19:17

Поскольку все больше разработчиков Android переходят на Jetpack Compose из-за его декларативного подхода к пользовательскому интерфейсу, ему необходимо быстро просматривать сложные макеты. Однако не так-то просто отображать изображения с URL-адреса в Preview Jetpack Compose, поскольку редактор дизайна Android Studio не поддерживает сетевые вызовы. В этой статье я рассмотрю некоторые стратегии по преодолению ограничений; уделив особое внимание реальным решениям для улучшения рабочего процесса разработки.

Читать далее

Использование Redis в Go

Habr.com - Wed, 11/20/2024 - 19:15

Redis — хранилище из семейства нереляционных (NoSQL) баз данных. Redis является очень быстрым хранилищем данных благодаря своей архитектуре in-memory. Он идеально подходит для задач, требующих быстрого доступа к данным, таких как кэширование, очереди сообщений, сессионная информация и многое другое. Go также известен своей высокой производительностью за счет компиляции в машинный код и эффективного управления памятью.

Читать далее

Как общаться с руководителем

Habr.com - Wed, 11/20/2024 - 19:08
Напишу несколько простых и избитых правил общения между руководителем и подчинёнными. Вы могли их видеть так или иначе много раз, но иногда, в моменты грусти по поводу собственного коллектива (такие моменты бывают у абсолютно всех руководителей!) хочется порефлексировать, конкретизировать и положить на бумагу мысли по этому поводу.

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


Читать дальше →

Вернер Бухгольц. Байт на Stretсh

Habr.com - Wed, 11/20/2024 - 19:05

В феврале 1977 года, во втором выпуске журнала с говорящим названием «Байт» было опубликовано письмо некоего Вернера Бухгольца, который приоткрыл тайну появления этого термина. Почему? Потому что именно он стоял у его основ и вспомнил, что первое применение термина было в далёком 1955 году, в первые дни разработки IBM 7030 Stretch. Через год из многих вариантов «стандартным» стал восьмибитный байт, но эта информация содержалась во внутренних документах для IBM 7030 Stretch и в статье «система связей», которая предназначалась для внутреннего пользования. Именно Вернер решил использовать написание byte, чтобы не допустить случайной путаницы с bit. Лишь в июне 1959 года, в статье «Обработка данных по частям», термин официально «родился» во всем привычном значении и «ввёл» Вернера Бухгольца в историю информационных технологий. Ключевую роль в этом сыграл успех и провал суперкомпьютера Stretсh.

Читать далее

Размер имеет значение: как исторические данные помогают на этапе дизайна A/B-теста

Habr.com - Wed, 11/20/2024 - 18:51

Метод CUPED уже давно завоевал популярность в анализе A/B-тестов, предоставляя возможность выявлять эффекты меньших размеров. В этой статье мы подробно рассмотрим применение данного подхода на этапе дизайна эксперимента. Мы исследуем, как можно сократить размеры выборок, не теряя при этом в статистической мощности теста.

Читать далее

Что делать, если WAF не позволяет создать кастомное правило для JSON: готовое решение

Habr.com - Wed, 11/20/2024 - 18:40

Сегодня расскажем вам о нестандартном подходе к защите веб-приложений
с помощью PTAF PRO. Мы с коллегами столкнулись с интересной задачей:
как защитить уязвимое приложение от вредоносных JSON-запросов, если WAF официально не поддерживает их обработку в пользовательских правилах?

В этой статье пройдем путь от постановки проблемы до ее решения, используя регулярные выражения и нестандартные настройки PTAF PRO. Руслан Ануфренка, инженер в группе технической поддержки информационной безопасности
в К2 Кибербезопасность
расскажет, как:

1. Настроить систему для работы с внешним агентом PT AF PRO;
2. Закрыть уязвимость Zero Stars в Juice Shop;
3. Создать и применить пользовательское правило с помощью регулярных выражений;
4. Оценить эффективность и ограничения такого решения.

Статья будет полезна специалистам по информационной безопасности, разработчикам и всем, кто интересуется тонкостями настройки WAF и защиты веб-приложений.

Читать далее

Как мы измерили качество сервисов передачи данных беспроводного интернета на M8 «Холмогоры»

Habr.com - Wed, 11/20/2024 - 18:28

В начале лета 2024 года мы получили предложение от правительства Ярославской области проверить качество сервисов передачи данных, предоставляемых сотовыми операторами, на автотрассе М8 «Холмогоры». Выражаясь на профессиональном сленге – провести драйв-тест в границах области.

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

Стандартно подобный измерительный комплекс состоит из следующих компонентов:

специализированного программного обеспечения, позволяющего собирать, синхронизировать и сохранять измерения;

измерительного приемника – сканера, при помощи которого оценивают покрытие сотовой сети;

измерительных терминалов, которые позволяют оценить предоставляемые сервисы – качество голосовой связи, скорость передачи данных и прочее;

GPS-приемника, осуществляющего геопривязку измерений.

У нас в наличии не было главного – измерительного терминала. Как правило, это смартфон или сотовый модем, чаще всего определенной модели со специализированной прошивкой, совместимой с измерительным ПО. Обычно их продают те же компании, что и производят измерительное ПО. Но вот беда - после известных событий 2022 года эти компании официально ушли с российского рынка и покупка их продукции стала если и не невозможной, то очень долгой и затратной. При таких вводных предстояло придумать обходной путь, чем мы и занялись.

Читать далее

Версионирование эндпоинтов — это просто

Habr.com - Wed, 11/20/2024 - 18:19

Команда Spring АйО перевела и адаптировала доклад "Endpoint versioning made simple" Бауке Найхаус (Bouke Nijhuis) с последнего Devoxx Belgium. 

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

Читать далее

Честный взгляд на Spring Data JPA

Habr.com - Wed, 11/20/2024 - 18:16

Spring Data JPA считается швейцарским ножом для работы с БД в Java. Однако Spring Data JPA не заслуживает своего триумфа и вот почему...

Читать далее

[Перевод] Учёные нашли на трёхмерной карте Млечного пути «туннель для побега» из местного пузыря

Habr.com - Wed, 11/20/2024 - 18:12

Используя данные всепланетного обзора eROSITA, астрономы создали 3D-карту низкоплотного пузыря рентгеновского излучения, состоящего из горячего газа с температурой в миллион градусов, который окружает Солнечную систему.

Исследование выявило крупномасштабный температурный градиент внутри этого т.н. местного горячего пузыря (МГП) — то есть в нём есть как горячие, так и холодные области. Команда подозревает, что этот температурный градиент мог быть вызван превращением массивных звёзд в сверхновые, что привело к повторному нагреву пузыря. Такое нагревание должно было привести к расширению кармана с газом низкой плотности.

Читать далее

Ransomware: not-a-virus, или Почему антивирус — не панацея при атаке шифровальщиков

Habr.com - Wed, 11/20/2024 - 18:02

Разбирая очередной инцидент, связанный с атакой шифровальщика, и услышав в очередной раз вопрос «как же так, ведь у нас есть антивирус!?», мы решили поделиться с комьюнити информацией о возобновившейся активности группировки DсHelp.

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

Читать далее

[Перевод] Реверс-инжиниринг новой функции iOS Inactivity Reboot

Habr.com - Wed, 11/20/2024 - 18:01

В iOS 18 появилась новая функция безопасности: перезагрузка бездействия (inactivity reboot). От чего она защищает и как работает? В этом посте мы рассмотрим все подробности вплоть до расширения ядра и Secure Enclave Processor.

Безопасность до и после первой разблокировки
А вы знали, что первый ввод пароля после включения телефона сильно отличается от его дальнейшего ввода для разблокировки телефона?

При первом вводе пароля разблокируется хранилище ключей в Secure Enclave Processor (SEP), шифрующем пользовательские данные на iPhone.

Состояние до первого ввода пароля называется Before First Unlock (BFU). Из-за шифрования пользовательских данных iPhone ведёт себя немного иначе при последующих разблокировках. Вы увидите, что Face ID и Touch ID не работают, и требуется ввод пароля. Но можно заметить и более тонкие отличия: поскольку пароли Wi-Fi зашифрованы, iPhone не будет подключаться к сетям Wi-Fi. Если SIM не защищена PIN-кодом, то iPhone сможет подключаться к сотовым сетям. Это означает, что вы сможете получать телефонные вызовы. Однако при получении вызова, даже если номер есть в контактах, имя контакта не будет отображаться, потому что контакты ещё не дешифрованы. Аналогично, при получении уведомлений о новых сообщениях вы увидите, что получили сообщения, но их предпросмотр будет недоступен. Можете попробовать сами! Читать дальше →

Huawei уходит от Android. Придётся ли бизнесу делать приложения для HarmonyOS Next

Habr.com - Wed, 11/20/2024 - 18:00

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

Меня зовут Сергей, я техлид Android-разработки в Surf. В статье расскажем, чего ожидать владельцам приложений в России, стоит ли готовиться к очередной разработке на новой ОС и как это сделать.

Читать дальше

Паттерны проектирования на языке Kotlin (часть 2)

Habr.com - Wed, 11/20/2024 - 17:57

Паттерны проектирования на языке Kotlin

Это вторая часть статьи. Первая её часть здесь.

Поведенческие паттерны

13. Chain of Responsibility (Цепочка обязанностей)

Описание: Позволяет передавать запросы последовательно по цепочке обработчиков.

Когда использовать: Когда есть более одного объекта, который может обработать запрос.

Пример кода:

abstract class Handler(private val next: Handler?) { open fun handle(request: String) { next?.handle(request) } } class AuthenticationHandler(next: Handler?) : Handler(next) { override fun handle(request: String) { if (request.contains("auth")) { println("Аутентификация прошла") super.handle(request) } else { println("Аутентификация не удалась") } } } class LoggingHandler(next: Handler?) : Handler(next) { override fun handle(request: String) { println("Логирование запроса: $request") super.handle(request) } } fun main() { val handler = AuthenticationHandler(LoggingHandler(null)) handler.handle("auth: запрос к ресурсу") }

14. Command (Команда)

Описание: Инкапсулирует запрос как объект, позволяя параметризовать клиентов с разными запросами.

Когда использовать: Когда нужно параметризовать объекты выполняемым действием.

Пример кода:

interface Command { fun execute() } class Light { fun turnOn() = println("Свет включен") fun turnOff() = println("Свет выключен") } class TurnOnCommand(private val light: Light) : Command { override fun execute() = light.turnOn() } class TurnOffCommand(private val light: Light) : Command { override fun execute() = light.turnOff() } class RemoteControl { private val commands = mutableListOf<Command>() fun addCommand(command: Command) = commands.add(command) fun executeCommands() = commands.forEach { it.execute() } } fun main() { val light = Light() val turnOn = TurnOnCommand(light) val turnOff = TurnOffCommand(light) val remote = RemoteControl() remote.addCommand(turnOn) remote.addCommand(turnOff) remote.executeCommands() }

15. Iterator (Итератор)

Описание: Предоставляет способ последовательного доступа к элементам агрегатного объекта без раскрытия его внутреннего представления.

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

Пример кода:

class Notification(val message: String) class NotificationCollection { private val notifications = mutableListOf<Notification>() fun addNotification(notification: Notification) = notifications.add(notification) fun iterator(): Iterator<Notification> = notifications.iterator() } fun main() { val collection = NotificationCollection() collection.addNotification(Notification("Уведомление 1")) collection.addNotification(Notification("Уведомление 2")) collection.addNotification(Notification("Уведомление 3")) val iterator = collection.iterator() while (iterator.hasNext()) { val notification = iterator.next() println(notification.message) } }

16. Mediator (Посредник)

Читать далее

Задача о банкомате

Habr.com - Wed, 11/20/2024 - 17:38

Рассмотрим одну задачу, которая на leetcode маркирована как "medium", хотя на самом деле это невероятно сложная задача. Примечательна она тем, что допускает в разной степени оптимальные решения, самые упрощённые из которых действительно весьма просты, а самые оптимальные ещё не найдены современной наукой. В этой задаче ценно то, что на её примере можно изучать целый ряд техник программирования.

Читать далее

[Перевод] Как я получил грин-карту EB-1A по программе талантов

Habr.com - Wed, 11/20/2024 - 17:30

Всё, что я делал после одобрения петиции по программе талантов EB-1A и до въезда в США в статусе резидента. Все формы, которые я заполнял. Каждый полученный ответ и каждый скриншот на пути.

Читать далее

Удачный дизайн в советских товарных знаках

Habr.com - Wed, 11/20/2024 - 17:30

Настоящий рассвет в дизайне советских товарных знаков наступил после принятия одноименного Постановления Совета Министров СССР в 1962 году.

Читать далее

Who's online

There are currently 1 user and 1 guest online.
Syndicate content