Pull to refresh
0
0
Send message

Как в eXpress достигали мгновенного рендера отправки сообщения: оптимизация локальной базы данных

Level of difficultyMedium
Reading time15 min
Views2.8K

Откройте eXpress, и отправьте в чат простое "Привет". Обратите внимание на то, сколько времени прошло между тем, как вы нажали на кнопку "отправить", и тем, как сообщение появилось в чате. Для человеческого глаза отображение отправленного сообщения в чате происходит мгновенно. Это современный стандарт - действия в чате должны происходить максимально быстро. В идеальном случае никаких задержек быть не должно.

Отправка сообщения, тем не менее - это сложная операция, которая требует проделать большой объем работы. Самая существенная её часть - это работа с локальной базой данных. eXpress спроектирован как offline-first, и много данных хранит локально. У одного пользователя могут быть тысячи активных чатов, и десятки/сотни тысяч сообщений, и работа со всеми ними должна оставаться быстрой.

Меня зовут Воронская Дарья, я работаю в Android Core команде eXpress и занимаюсь оптимизацией работы приложения. Я расскажу про подходы, которые мы использовали, чтобы довести скорость отправки и рендера сообщения до того самого идеального результата. 

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

Наш стек: Kotlin, Room, Coroutines, WebSocket, OkHttp.

Читать далее
Total votes 14: ↑13 and ↓1+15
Comments16

Создание списка выбора конфигураций 1С, опубликованных как веб-приложения

Level of difficultyEasy
Reading time3 min
Views2.1K

Новая задача, связанная с 1С. Дано: сервер 1С, на нём есть несколько конфигураций 1С, опубликованных как веб-приложения. Нужно создать удобный список для выбора той конфигурации, с которой пользователь будет работать.

Читать далее
Total votes 8: ↑7 and ↓1+8
Comments0

Почтовый сервер с нуля. Часть третья

Level of difficultyHard
Reading time17 min
Views12K

В этой заключительной статье мы подробно рассмотрим процесс настройки почтового сервера с использованием Docker и Exim4, Dovecot, PostfixAdmin и RainLoop. Наша цель — создать полностью функциональный и масштабируемый почтовый сервер, который легко управляется благодаря контейнеризации.

Давайте настраивать
Total votes 23: ↑23 and ↓0+26
Comments16

Технологии интеграции информационных систем. Часть 2. GraphQL, gRPC, WebSocket, webhook, брокеры сообщений

Level of difficultyEasy
Reading time17 min
Views11K

Эта статья ー вторая часть материала об интеграции информационных систем (ИС) и самых распространённых стилях и технологиях интеграции. 

Читать далее
Total votes 15: ↑13 and ↓2+13
Comments3

Google предложил рейтинг критически важных Open-source проектов

Reading time8 min
Views17K

О многих проектах говорят, что они крайне важны для какой-либо отрасли. Но как оценить их реальную значимость? Корпорация Google разработала специальный рейтинг для оценки открытых проектов — как раз по степени важности для отрасли.

Рейтинг создан не просто так — его предлагается использоваться для выделения важнейших проектов, от которых зависит развитие. Именно для этих проектов нужно выделять максимум ресурсов, для сопровождения, разработки и обеспечения безопасности. Рейтингом, по замыслу, будут пользоваться организации, которые могут выделить нужные проектам ресурсы.
Читать дальше →
Total votes 15: ↑12 and ↓3+11
Comments29

DevOps Challenge: восстановите работу MySQL и выиграйте крутой мерч

Level of difficultyMedium
Reading time2 min
Views6K

Привет! Я Саша Хренников, руководитель DevOps-юнита в KTS.

Наша команда дважды готовила для вас испытания. Сначала вы оживляли сломанное приложение, затем пробовали запустить k8s v0.1, и гардеробы счастливых победителей уже украшает наш мерч. Сегодня мы предлагаем вам пополнить их ряды: вас ждет новый челлендж и новое соревнование за место в списке достойнейших.

Вам предстоит восстановить работу экземпляра MySQL, запущенного с помощью MySQL-оператора. Подведем итоги 17 октября в 19:00, а десять самых быстрых участников получат футболки с Котзиллой по почте.

Читать далее
Total votes 23: ↑23 and ↓0+25
Comments3

Разработка Java-проекта с ChatGPT-4: от идеи до реализации

Level of difficultyMedium
Reading time13 min
Views6K

Как Java-методист с 15-летним опытом я решил проверить, как нейросеть ChatGPT-4 придумывает use cases, создает доменную модель и пишет программный код. Давайте посмотрим, способна ли эта большая языковая модель в ее текущей итерации заменить разработчика или, по крайней мере, упростить процесс разработки.

Привет, Хабр! Меня зовут Игорь Судакевич, я преподаватель-практик Учебного центра IBS по программированию на языке Java. В начале 2024 года мой коллега из IBS уже делился собственным опытом создания базовой программы с помощью ChatGPT. В том эксперименте использовалась бесплатная модель 3.5, и мы получили множество комментариев из серии «А вы бы тоже самое провернули на последней версии модели — она всё делает в разы лучше!» Мол, и разработчики скоро будут никому не нужны.

Читать далее
Total votes 10: ↑6 and ↓4+6
Comments4

«Синий» путь: инструменты, обучение и Open SOC

Level of difficultyEasy
Reading time10 min
Views11K

Всем привет! На связи Макар Ляхнов, аналитик по информационной безопасности в Innostage. Продолжаем наш цикл статей по глобальным направлениям ИБ. Сегодня мы погрузимся в мир blue team и посмотрим, как подготовиться защитнику, сделав упор на эффективные инструменты, обучение и создание открытого Security Operations Center (SOC).

Читать далее
Total votes 29: ↑29 and ↓0+29
Comments5

Спускаясь с облаков в ад: развёртывание Kubernetes на Astra Linux. Часть 1

Level of difficultyMedium
Reading time13 min
Views12K

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

Всем привет, на связи Пётр. Сегодня мы рассмотрим автоматическое развёртывание ванильного Kubernetes на Astra Linux через Kubespray + Helm.

Давайте разворачивать
Total votes 13: ↑11 and ↓2+13
Comments16

Как делать бэкапы без проводов: restic + MinIO (S3)

Level of difficultyEasy
Reading time5 min
Views12K

До недавнего времени я делал бэкапы своих устройств на внешний HDD. Такой способ меня устраивал потому, что бэкапил данные редко - раз в неделю. Когда задумался о ежедневных бэкапах, понял, что бегать с внешним HDD будет непрактично. Хочу рассказать про удобное (по крайней мере для меня) решение для ежедневных бекапов без проводов.

Читать далее
Total votes 9: ↑9 and ↓0+9
Comments18

Как Wazuh помог наладить круглосуточный мониторинг и реагирование на ИБ-события

Level of difficultyMedium
Reading time6 min
Views13K

Представим ситуацию. Вы хотите выстроить процесс реагирования на ИБ‑инциденты в компании. Для этого нужно вовремя фиксировать атаки на вашу инфраструктуру. Вы решаете собирать логи и мониторить все, до чего можете дотянуться: хосты, межсетевые экраны, антивирусы, пользовательские устройства. Логов много, они разные. В таком объеме данных сложно вычленить что‑то полезное даже самому опытному ИБ‑специалисту. А вам нужно, чтобы в нем могли разобраться дежурные администраторы (первая линия техподдержки), которые знают только базу, но зато на посту 24 на 7. Они должны фиксировать аномалии, реагировать на типовые угрозы по регламенту, а сложные кейсы дальше передавать профильным ИБ‑инженерам для купирования и расследования атак.

Именно с такой задачей мы имели дело, когда решили выстроить такую систему реагирования на ИБ‑угрозы в нашем облаке NGcloud. Меня зовут Иван, я занимаюсь защитой облачной инфраструктуры. Сегодня я расскажу, как мы организовали все вышеперечисленное при помощи Wazuh.

Почему выбрали Wazuh?

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments8

Разбираемся с Redis

Reading time19 min
Views306K

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

Читать далее
Total votes 46: ↑45 and ↓1+62
Comments7

Тюнинг производительности Zabbix — наш опыт

Level of difficultyMedium
Reading time6 min
Views5.7K

Всем привет! Мы занимаемся Zabbix и хотели бы поделиться своим опытом по настройке производительности Zabbix и тем, что мы видели при проведении аудитов инсталляций Zabbix. В этой статье постараемся помочь сэкономить ваше время на траблшутинг нестабильной работы Zabbix и показать направления для дебага. Пока не приступили к чтению, подпишитесь на наш телеграм-канал, посвященный исключительно Zabbix. Там ещё больше интересного материала по Zabbix.

Тюнинг производительности — обязательная часть работы администратора Zabbix. При росте количества узлов, количества собираемых элементов данных и снижению интервалов их сбора резко возрастает шанс столкнуться с бутылочными горлышками в производительности. Ключевые метрики, которые напрямую влияют на производительность — количество узлов (разумеется, с наполняемыми элементами данных) и количество новых значений в секунду. Чем их больше и чем меньше интервал сбора данных — тем больше нагрузка на инсталляцию Zabbix в целом. При этом, элементы данных типа Zabbix Trapper и SNMP-трап особого вклада в нагрузку не вносят. Подробности под катом.

Затюнить производительность
Total votes 9: ↑7 and ↓2+6
Comments1

Микросервисы в представлении среднего разработчика, и как всё на самом деле

Level of difficultyMedium
Reading time11 min
Views62K

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

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

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

погрузиться в микросервисы
Total votes 236: ↑232 and ↓4+260
Comments207

Тестируем UserGate Client. Взгляд сверху: функционал, базовая настройка и нюансы

Reading time19 min
Views4.5K

Компания UserGate давно разрабатывает собственный VPN-клиент. Ожидается, что новинку также можно будет использовать как решение NAC и даже EDR. 

Мы настроили нерелизную версию UserGate Client, протестировали ее и решили поделиться первыми впечатлениями на Хабре. Спойлер: в целом ок, но есть нюансы. 

Читать далее
Total votes 6: ↑6 and ↓0+7
Comments0

Собираем полноценный NAS с 4 NVME дисками размером с небольшую книгу

Level of difficultyEasy
Reading time6 min
Views28K

Увидев видео про эту плату, я подумал, что она по сути может быть полноценной медиа приставкой, файлопомойкой и торрентокачалкой одновременно и при этом занимать место размером с маленькую книгу формата А5 и кушать 5 ватт в простое, работая 24/7. Вкусно!

На самом деле несмотря на маркетинг, нормальная комплектация стоит порядка 175 долларов (а не 100, плюс доставка и растаможка) и диски, естественно не входят в эту цену. Речь идёт про плату CM3588 на базе системы на чипе RK3588. Маркетинговая страничкаспецификациявики. Комплектов на алике очень много вариантов (с корпусами и всякими доп. железками) - выбирайте очень аккуратно.

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

Что получилось, что не получилось?
Total votes 29: ↑26 and ↓3+29
Comments112

Почти все, что вы хотели бы знать про Docker

Level of difficultyEasy
Reading time11 min
Views61K

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

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

Читать далее
Total votes 65: ↑60 and ↓5+65
Comments57

Всё что вы хотели узнать об XDR в одном посте

Reading time5 min
Views32K

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

На днях мне посчастливилось поучаствовать тут (обойдемся ссылкой на запись, без прямой рекламы), где обсуждалась такая новая тема на рынке ИБ, как XDR.

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

Все что вы хотели узнать об XDR
Total votes 2: ↑0 and ↓2-2
Comments1

Держитесь подальше от холодных хранилищ Selectel

Level of difficultyMedium
Reading time15 min
Views32K

От любви до ненависти — один шаг, это история об этом. Если вы используете или планируете использовать холодное хранилище Selectel для бэкапа, выбросьте эту идею из головы НЕМЕДЛЕННО!

Я был привлечен дешевыми тарифами холодного хранилища Selectel и настроил на них архивацию данных из 1С.

Мне так понравилось холодное хранилище Selectel, что я рекомендовал его и настроил на него у трех своих клиентов архив 1С. Ничто не предвещало БЕДЫ.

Читать далее
Total votes 103: ↑82 and ↓21+100
Comments246

Блочные устройства QEMU

Reading time9 min
Views24K

image


В QEMU есть несколько способов подключить блочное устройство для виртуальной машины. Изначально это было реализовано следующим способом:


 -hda /dev/sda1

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

Разбираемся с подключением и форматами виртуальных дисков
Total votes 11: ↑10 and ↓1+9
Comments3

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity

Specialization

System Administration, DevOps