Обновить
5
1.1
Отправить сообщение

Звёздная болезнь: как научиться разбираться в ночном небе, чтоб пофлексить перед друзьями

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

Представьте: вы гуляете по ночному парку с прекрасной девушкой после романтического вечера в ресторане. Тут перед вами открывается полянка, а над ней — летнее небо, полное звезд. Вы невзначай говорите: “о, смотри, сейчас Плеяды особенно яркие”! Показываете на небо, девушка прижимается к вам поближе, чтобы разглядеть, куда же вы показываете, и…Ну дальше все в ваших руках. А вот не знали бы, где Плеяды — и все, так и пошли бы грустно по домам. В этом посте расскажу, как научиться различать созвездия, что можно наблюдать невооруженным взглядом, как выбрать первые девайсы и всякое такое.

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

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

Вперед, к звёздам!

Мониторинг Angie с Prometheus и Grafana

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

Контроль основных метрик веб‑сервера или балансировщика — основа надежной работы системы. Ранее мы разбирали работу с мониторингом через API и Angie Console Light, но это не единственный вариант, доступный в Angie. Использование встроенного экспортера Prometheus и визуализация через Grafana дают принципиально другие возможности. Итак, в этой статье мы запустим полноценную систему мониторинга Angie.

Читать далее

Мои личные скрипты для повседневной работы

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

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

Читать далее

Уровни изоляции транзакций: практическая механика и сравнение PostgreSQL, MySQL, Oracle, SQL Server и DB2

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

Транзакции — не про «магическое ACID», а про конкретную механику согласованного доступа к данным под нагрузкой.

Эта статья объясняет как реально работают уровни изоляции и чем отличаются популярные СУБД на практике.

Мы разберём:

Читать далее

Как быстро избавиться от лагов на сервере по методике RED S.O.S

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

Представьте: вы получаете алерт "сервер тормозит" или замечаете странные лаги в приложении. Отставить панику)) В этой статье мы разберем, как провести технический осмотр Linux-сервера и найти корень проблемы без углубления в тонны логов.

Сейчас расскажем вам про методику RED S.O.S. - структурированный подход, который превращает хаотичную проверку в системный диагноз. Это ваш чеклист для экстренного реагирования. Он не заменяет системы мониторинга (Prometheus, Zabbix), но дает моментальный снимок здоровья системы.

Фокус здесь на ключевых ресурсах: Resources (Ресурсы), Errors (Ошибки), Dependencies (Зависимости)

Читать далее

Как я лишился законного перерыва на кофе и заодно ускорил Selenium тесты в 40 раз

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

Однажды мне предложили попробовать написать автотест для этого проекта, чтобы понять, будет ли мой подход эффективнее. Я использовал базовый Page Object Pattern и немного модифицированные (ради стабильности) методы Selenium. В результате получился выигрыш в ~10–15%. То есть смысла переписывать тесты особо не было.

Это стало отправной точкой. С тех пор прошло около 10 месяцев: я сменил несколько проектов, и на последнем количество тестов перевалило за сотню, а время выполнения превысило час. В целом ничего критичного — приходишь утром, запускаешь тесты и… спокойно идешь делать кофе или чай. Возвращаешься, проверяешь статусы задач, почту, составляешь план на день и т. д.

Круто? Да. Вот только при росте количества тестов очевидно вырастет и время выполнения. Ещё пара сотен тестов — и я буду успевать сгонять за кофе на другой конец города и обратно. Так что нужно искать решение.

Читать далее

Про свёрла

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

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

Читать далее

10 треков, которые обязательно стоит запустить для проверки акустики

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

Салют, Хабр!

Я Артур, CPO умных колонок Sber. Я отвечаю за создание наших умных колонок, в том числе за предмет этой статьи — их звучание.

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

Чтобы оценить аудиосистему, нужны музыкальные треки, которые раскроют весь её потенциал и способность передавать разные аспекты музыки. Собрали 10 треков, которые используем в работе, оценивая любые колонки. Рассказываем, как проверяют звучание устройств и как мы тестируем его при разработке умных колонок; делимся плейлистом для проверки, насколько совершенно ваше аудиоустройство.    

Читать далее

База про юнит-тесты в C# на xUnit v3

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

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

Сегодня разберёмся с юнит‑тестами в C# на основе xUnit v3 — библиотеки, которая стала практически стандартом де‑факто в.NET‑среде.

Почему именно xUnit? Всё просто: его создали Джим Ньюкирк и Брэд Уилсон — разработчики NUnit. Они решили выкинуть всю архаику вроде [SetUp], [TearDown] и прочих рудиментов и построили фреймворк с нуля, строго под TDD. Весной вышла xUnit v3 2.0.2, в которой завезли Assert.MultipleAsync, полностью обновили сериализацию. А в.NET 9 уже штатно продвигается Microsoft.Testing.Platform (MTP) — сверхлёгкий тестовый рантайм, с которым xUnit v3 работает прямо из коробки. Короче говоря, это самый нативный выбор под.NET 9 на сегодня.

Читать далее

Агрессивный автовакуум —  ужасный to prevent wraparound, зачем он нужен и как держать его в узде

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

Привет! На связи Дмитрий Руденко из команды Databases Т-Банка.

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

Один из таких аспектов  —  процесс уборки мусора, — autovacuum, вычищающий мертвые версии строк таблиц. В статье рассмотрим причины возникновения одного из самых неприятных подвидов —  autovacuum: to prevent wraparound.

Читать далее

Автоматизация тестов в .NET: мой опыт со Storm Petrel

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

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

В этой статье мы рассмотрим Scand Storm Petrel — инструмент для .NET-разработчиков, который автоматизирует однотипную работу по формированию и обновлению ожидаемых значений в тестах. Это особенно актуально при большом количестве тестовых сценариев или сложной структуре тестируемых объектов, что является неотъемлемой частью разработки современных приложений.

Читать далее

Minimal API: Избавляемся от устаревающих контроллеров в ASP.NET Core

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

Я, думаю, многие уже слышали о появившихся в .NET 6 Minimal API - легковесной замене контроллеров/MVC. Кто-то уже успел ознакомиться и задался вопросом: "Ваше API в 3 строчки, это, конечно, здорово, но как это будет работать в реальном проекте с сотнями эндпоинтов, кучей фильтров, аттрибутов, расширениями OpenAPI/Swagger и прочих радостях?"

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

А забегая чуть вперед: если думаете, стоит ли переводить проект на Mini API, вот вам сразу полезная информация: они могут жить в проекте вместе, причем даже без дублирования инфраструктуры: не обязательно переводить все разом - подробнее под катом.

Бонусом, заменим SwaggerGen на реализацию OpenAPI от Microsoft.

Читать далее

Руководство по администрированию Linux для начинающих

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

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

Читать далее

Какие есть альтернативы Prometheus, если для метрик его стало недостаточно

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

Prometheus прекрасно подходит для краткосрочного мониторинга, но у этого решения есть свои ограничения по масштабу, и если вы столкнулись с высоким потреблением памяти/CPU, снижением скорости запросов или вам требуются уникальные лейблы вида user ID, то стоит подумать над внедрением альтернатив. На наш взгляд следующими после Prometheus в линейке стоят Thanos, Cortex, Mimir или VictoriaMetrics. Объективное, насколько это возможно, сравнение характеристик этих решений мы и проведем ниже.


СОДЕРЖАНИЕ


0. В каких случаях нужно задуматься о замене Prometheus
1. Обзор решений для долгосрочного хранения метрик
2. Сравнение решений: Thanos, Cortex, Mimir и VictoriaMetrics
3. Как выбрать подходящее решение
4. Миграция с Prometheus на долгосрочное хранилище
5. Сохранение алертов и дашбордов
6. Как избежать потери данных при миграции
7. Лучшие практики эксплуатации долгосрочного хранилища метрик
8. Высокая доступность и избыточность
9. Мониторинг состояния хранилища метрик
10. Обработка долгосрочных запросов и типовые ошибки

11. Обслуживание и обновления (Maintenance & Upgrades)
12. Итого. Как жить с продакшн-наблюдением

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

Переезд с Nginx на Angie. Пошаговая инструкция

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

Итак, вы решили использовать Angie как замену Nginx. С чего начать процесс? Какие аспекты нужно учитывать при переходе? Разберёмся со всем по порядку.

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

Начнём с подготовки системы к миграции.

Читать далее

Работа с длинными строками в PostgreSQL

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

Если в таблицах БД PostgreSQL есть поля большого размера, при выгрузке часть строк таких таблиц может не выгружаться с выдачей ошибки ERROR: out of memory. Столкнуться с подобной ситуацией можно, например, при выгрузке утилитой pg_dump таблиц, в которых хранятся XML-документы, или при выгрузке таблицы public.config системы «1C:Предприятие». В статье рассматриваются причины возникновения подобных ошибок и способы решения проблемы.

Читать далее

Nerdlog: быстрый TUI-просмотрщик логов с удаленных хостов, с таймлайном, без сервера

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

(Или как я написал радикально простую альтернативу Graylog)

В 2022 году я и моя команда работали над сервисом, который выводил довольно большой объём логов с распределённого кластера из 20+ хостов — всего около 2–3 миллионов сообщений в час. Мы тогда использовали Graylog, и запрос логов за последний час выполнялся за 1–3 секунды — довольно быстро. Однако, инженеры по инфраструктуре хотели избавиться от Graylog — он требовал от них утомительного обслуживания, и в итоге было принято решение перейти на Splunk. Когда Splunk наконец внедрили, мне пришлось с удивлением обнаружить, что он работает невероятно, возмутительно медленно. Тот же запрос выполнялся не за секунды, а за минуты. В чем там было дело, и можно ли это улучшить - никто разбираться не хотел.

Мне это показалось абсурдным. 2–3 миллиона логов в час — это не так уж и много, и мне казалось, что с помощью старых добрых GNU утилит и обычных лог-файлов, без какого-либо централизованного сервера для логов, можно добиться примерно такой же скорости, как у Graylog (и по крайней мере, гораздо быстрее, чем Splunk), и этого было бы достаточно для большинства наших задач.

Так и начался проект: я не мог перестать об этом думать, взял отпуск на неделю и устроил себе личный хакатон, чтобы написать прототип: просмотрщик логов с простым но удобным TUI интерфейсом, включающим таймлайн-гистограмму. Он подключался к хостам по SSH и анализировал обычные лог-файлы с помощью GNU-утилит bash + tail + head + awk.

Читать далее

Ортодоксальный косплеер решает задачу Перельмана про демографию, проезжая мимо Вудстока

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

В мире существует множество фундаментальных дискуссионных вопросов с двумя непримиримыми группами сторонников. Кто лучше: коты или собаки, Windows или Linux, физики или лирики?

Одним из таких вопросов является спор консерваторов и прогрессистов.
У консерваторов к прогрессистам есть стереотипная и связанная со временем претензия: «Ваше ”прекрасное” всегда далёко. А если и когда оно всё‑таки становится актуальной реальностью, то оказывается не таким уж прекрасным». Далее может идти заход с козырей в виде Чернобыля. Или наоборот, что‑нибудь для утончённых ценителей, вроде талидомидовой катастрофы.

Однако и к основному консервативному тезису — «раньше было лучше» — можно также сформулировать универсальную претензию, связанную со временем.
Очевидно, что «раньше» Земля была раскалённым шаром. На ней определённо не было «лучше». Всё то, что консерваторами считается «лучшим» появилось сравнительно недавно. Но в консервативной парадигме история делится на её бо́льшую часть, когда некой защищаемой консерваторами сущности ещё не было, и меньшую часть, когда эта сущность уже начала разлагаться и деградировать. А между этими временными отрезками есть бесконечно малый интервал времени, взятый исключительно по вкусу конкретного консерватора, который как раз и «был лучше».

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

«Сделать как было раньше»

Коротко о DNS в NGINX

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

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

Сегодня рассмотрим, как NGINX работает с DNS и почему proxy_pass не резолвит домены на ходу.

Читать далее

Визуальное представление структуры btree индекса PostgreSQL

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

В статье визуализируется структура индекса и показывается, как меняется структура индекса типа btree в PostgreSQL. Это полезно для понимания, как выглядят индексы btree. Также рассматривается FILLFACTOR и пример исследования структуры индекса в целях определения, как перераспределяются индексные записи при включении в структуру индекса новых блоков (страниц). Создадим простую таблицу, индекс, вставим три строки:

Читать далее

Информация

В рейтинге
1 625-й
Зарегистрирован
Активность