Pull to refresh
0
0

Пользователь

Send message

Эмуляция бэкенда: как разрабатывать изолированный фронтенд с помощью Mock Service Worker

Level of difficultyMedium
Reading time8 min
Views9.6K

Всем привет! Сегодня я хочу рассказать о Mock Service Worker — технологии, которая позволяет эмулировать поведение бэкенда в ситуациях, когда по каким-то причинам невозможно использовать реальный бэкенд для полноценной разработки фронтенда, а также когда необходимо изолированно протестировать различные пользовательские сценарии. Тем более, что совсем недавно вышла новая мажорная версия библиотеки msw, и в ней достаточно много важных обновлений.

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

SQL HowTo: TOP-N на субинтервалах

Level of difficultyEasy
Reading time3 min
Views5K

Периодически сталкиваюсь с однотипными задачами вида "показать TOP-N позиций на каждом из вложенных интервалов некоторого периода".

Это может быть "5 лучших по успеваемости студентов в каждом семестре за последний учебный год", или "помесячная динамика позиции 10 наиболее продающихся товаров", или, как у нас в сервисе визуализации PostgreSQL-планов explain.tensor.ru, "3 наиболее активных страны за каждый день":

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

Выбор СУБД: шпаргалка, чтобы не запутаться

Reading time6 min
Views32K

Вопрос выбора СУБД для российской компании или госоргана – вопрос не праздный, тем более сейчас – когда с момента ухода с рынка западных вендоров прошло уже полтора года и пора что-то решать. Но как не запутаться в номенклатуре СУБД и выбрать ту, которая лучше всего подходит? Без ложной скромности скажу: мы в «Кругах Громова» уже немного поднаторели в систематизации, поэтому надеемся, что наша шпаргалка для тех, кто хочет выбрать СУБД, окажется полезной.

Начнем с классики. СУБД делятся на несколько типов. Не будем описывать их подробно, остановимся только на их основном предназначении.

Читать далее
Total votes 22: ↑13 and ↓9+5
Comments10

Повышение эффективности SQL-запросов: советы и рекомендации

Level of difficultyMedium
Reading time12 min
Views18K

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

Читать далее
Total votes 19: ↑15 and ↓4+14
Comments7

PostgreSQL и временные таблицы

Level of difficultyMedium
Reading time9 min
Views36K

Мы много лет уже используем в качестве основной базы данных PostgreSQL. За это время он зарекомендовал себя быстрой и надежной СУБД. Однако, есть в PostgreSQL одна проблема, с которой приходится сталкиваться достаточно часто. К сожалению, реализация логики временных таблиц в нем имеет ряд недостатков, которые отрицательно сказываются на производительности системы.

Одним из свидетельств наличия проблемы является то, что для временных таблиц в Postgres Pro была добавлена специальная функция fasttrun, а в Postgres Pro Enterprise существенно доработана работа с ними (см. пункт 4). 

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

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

Читать далее
Total votes 43: ↑42 and ↓1+49
Comments45

JSONB и hstore: использование специальных типов данных PostgreSQL для работы с полуструктурированными данными

Reading time11 min
Views16K

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

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

Читать далее
Total votes 18: ↑14 and ↓4+12
Comments0

Организовываем свою активность, через пространства. Философия P.A.R.A. + Obsidian

Level of difficultyMedium
Reading time7 min
Views14K

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

Недавно я решил послушать на youtube, что говорят другие об организации своей активности. Подучиться, присмотреться и возможно внедрить. Мне попалось видео, где автор рассказывает, как организовать свои задачи используя концепцию PARA. Послушал, и ничего конечно же сам делать не стал.

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

И там появились пространства, ну и тут я  такой, оу – нужно посмотреть, разобраться зачем эту бесполезность прикрутили. И оказалось очень здорово. Я сел и на листке бумаги набросал свои пространства, вот что у меня получилось.

Читать далее
Total votes 15: ↑12 and ↓3+10
Comments14

Поднимаем кластер PostgreSQL в Docker и Testcontainers

Level of difficultyMedium
Reading time8 min
Views26K

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

Сегодня я покажу, как запустить уже целый кластер PostgreSQL в Docker, а также в тестах через Testcontainers, и как вручную инициировать смену мастер-хоста.

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

Разворачиваем веб-приложение в Kubernetes с нуля

Level of difficultyEasy
Reading time31 min
Views46K

Современные веб-приложения, даже простые на вид, часто подразумевают нетривиальную архитектуру, состоящую из многих компонент. В статье «Делаем современное веб-приложение с нуля» я рассказал, как она может выглядеть, и собрал для демонстрации простейшую реализацию на стеке из нескольких популярных технологий. В неё вошёл бэкенд, фронтенд, воркер для асинхронных задач и аж два хранилища данных — MongoDB как основная база и Redis как очередь задач. В «Делаем поиск в веб-приложении с нуля» я показал, как можно добавить полнотекстовый поиск, и подключил третье хранилище — Elasticsearch.

Всё это время для простоты разработки и отладки компоненты приложения запускались локально через Docker Compose. Но как развернуть такое приложение в настоящем продакшн-окружении? Как обеспечить горизонтальное масштабирование? Как раскатывать новые релизы без простоя? 

В этой статье мы разберёмся, как разворачивать многокомпонентное веб-приложение в кластере Kubernetes на примере его локальной реализации — minikube. Мы поднимем виртуальный кластер прямо на рабочем ноутбуке, разберёмся с основными сущностями Kubernetes, запустим и соединим между собой компоненты демо-приложения и обсудим, какие ещё возможности Kubernetes пригодятся нам в суровом энтерпрайзе. Если вы занимаетесь разработкой и слышали о Kubernetes, но ещё не имели возможности пощупать его руками — добро пожаловать под кат!

Скорее к YAML-инженерии
Total votes 38: ↑38 and ↓0+38
Comments10

Что о системном анализе и бизнес-анализе расскажут на Flow 2023

Reading time21 min
Views2.1K

В прошлом году мы впервые провели конференцию по системному и бизнес-анализу Flow. А теперь она возвращается, и в этот раз более масштабно. Flow 2023 будет идти целых четыре дня: 4–5 сентября в онлайне и 11–12 сентября в Москве (с возможностью удалённого подключения).

Нововведение этого года — экспериментальная секция про UX, подготовленная совместно с USABILITYLAB. А общие принципы программы остались прежними. Как и раньше, будут спикеры из известных компаний (Яндекса, Альфа-банка, VK, Магнита и других). Некоторым зрителям уже известны имена Александра Белина, Юрия Куприянова, Романа Бунина, Сергея Нужненко, Ирины Гертовской и многих других. 

Сейчас уже известно, о чём именно пойдёт речь в их докладах — и в этом посте рассказываем об этом вам.

Программа Flow 2023
Total votes 14: ↑14 and ↓0+14
Comments0

Как улучшить понимание английского на слух

Level of difficultyEasy
Reading time5 min
Views21K

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

Когда я начинал изучать иностранный язык, то наткнулся на простой совет: если ничего не понимаете, то значит, еще рано, аудио или видео слишком сложное. Нужно подобрать что-то полегче. И в этом, думается и есть главный успех прогресса в аудировании.

Читать далее
Total votes 10: ↑7 and ↓3+5
Comments14

11 полезных плагинов для kubectl

Level of difficultyEasy
Reading time4 min
Views8.3K

Kubectl (Kubernetes Control) — это по сути основной интерфейс для взаимодействия с Kubernetes-кластером. Сторонние разработчики сделали для него много полезных плагинов, которые в той или иной ситуации могут облегчить работу инженера и сэкономить время. В этой статье рассмотрим 11 удобных плагинов для расширения функционала kubectl.

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

Obsidian — Мой сетап

Level of difficultyMedium
Reading time13 min
Views55K

Вот я и дописал свою четвёртую статью на хабр (А ведь в начале года поставил себе цель написать хотя бы одну статью, а тут аппетит пришёл во время еды и вот четвёртая). Предыдущие раз, два и три.

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

Поэтому вот сразу ссылка на мой сетап хранилища Обсидиана на гитхабе (о котором и пойдёт речь в данной статье), можно сразу его качать и тыкаться самому и если что-то не понятно подглядывать в статью. (Надо распаковать zip-файл в папку, а потом открыть открыть обсидиан и при выборе хранилища выбрать эту папку, куда распаковали zip-файл. Если у вас одно хранилище, то тогда жмём в левом нижнем углу кнопку сейфа)

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

В этом хранилище используются 10 плагинов, основные:

- Calendar - для календаря справа.

- Dataview - для статистики и для проектов.

- Tasks - для задач.

- Templater - для шаблонов и чтобы нужные заметки с запросами создавались в нужных папках и с нужными данными в запросах.

К такой настройке я шёл целый год используя обсидиан, постоянно дорабатывал её и искал "совершенство", в ней собраны разные подходы из разных статьей и книг (GTD, 7 навыков, Джедайские техники, Атомные привычки), данные подходы большинству могут быть знакомы. Но есть метод, до которого я дошёл сам и до этого я нигде его не встречал (возможно просто не попадался) - это метод одной задачи.

Disclaimer1: Мой сетап не претендует на "идеальность", в нём найдутся минусы и неудобности. Я выношу его на общее обсуждение в том числе для того, чтобы кто-то мог предложить ту или иную доработку тут в комментариях, а так же для того, чтобы новички могли сходу вкатиться в этот чудесный обсидиановый мир.
Disclaimer2: Обычно обсидиан ассоциируют с Zettelkasten, графами и прочими атомарными заметками. Я в своём подходе этого не использую, возможно еще не дорос, возможно мой подход немного про другое. В этой статье я пишу не про это.

Погнали вкатываться в обсидиановый мир
Total votes 20: ↑19 and ↓1+21
Comments40

Kafka за 20 минут. Ментальная модель и как с ней работать

Level of difficultyMedium
Reading time19 min
Views128K

Привет! Меня зовут Глеб Гончаров, и я руковожу подгруппой ИТ-инфраструктуры в СберМаркете. В работе мы широко используем Kafka как шину данных для микросервисов и не раз убедились на практике, что к инструменту важно подобрать правильный подход. Об этом сегодня и поговорим в двух частях — сначала обсудим основы, а в конце статьи будет ссылка на практические задания.

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

Работа Apache Kafka на примерах. Поднимаем Kafka Cluster используя docker-compose

Level of difficultyMedium
Reading time11 min
Views69K

В этой статье продемонстрирую и объясню работу Kafka, используя как можно меньше определений и больше практики. Мы рассмотрим 3 сценария работы с Kafka. Для последнего сценария мы поднимем Kafka Cluster в Docker и с помощью UI увидим, как происходит общение между сервисами.

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

Введение в GitHub Actions. Делаем пайплайн для деплоя Spring Boot проекта на VPS с помощью Docker

Level of difficultyEasy
Reading time4 min
Views13K

В этой статье я расскажу как построить простой пайплайн для деплоя Spring Boot проекта на сервере используя GitHub Actions и Docker.

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

Telegram Bot на Kotlin:… и в продакшн

Level of difficultyMedium
Reading time5 min
Views4.4K

Итак, в предыдущих статьях (Введение, Командуем, Дратути) мы уже разобрали многие аспекты написания бота: как начать писать бота, как делать плагины-расширения и как работать с непосредственно пользователем и создавать функционал. Однако, до сих пор мы не разобрали, как, куда и с помощью чего можно публиковать и запускать ботов в проде.

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

Шаблон Котлин-приложения

Level of difficultyEasy
Reading time9 min
Views7.3K

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

Необходимость шаблона сверх https://start.spring.io вызвана следующими типами доработок:

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

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

Reading time14 min
Views27K

В этой статье мы разберём несколько аномальных случаев высокой нагрузки в СУБД PostgreSQL. Что это такое? Обычно PostgreSQL хорошо показывает себя под нагрузкой и оправдывает ожидания в отношении производительности — она остаётся высокой. Но при определённых профилях нагрузки СУБД может вести себя не так, как мы ожидаем. Это и есть аномалии, на которых мы сосредоточимся в данной статье (для тех, кто предпочитает видео, эта информация доступна в виде записи доклада на HighLoad++).

Наша компания помогает обслуживать мультитерабайтные базы данных в крупных проектах, поэтому мой рассказ об аномалиях основан на реальном опыте промышленной эксплуатации СУБД в Postgres Professional — порой мы сталкиваемся с тем, что СУБД ведёт себя не так, как мы ожидали.

Также в рамках статьи мы рассмотрим следующее:

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

ChatGPT и Java Back-End Spring Boot

Level of difficultyEasy
Reading time5 min
Views6.3K

Ускорение Back-End Java Spring Boot разработки с помощью Chat GPT.

При создании обычного CRUD контроллера разработчик обычно делает несколько вещей.

1. Создает Entity

2. Пишет миграцию в БД

3. Создает DTO для Entity

4. Создает слой Repository

5. Создает слой Service

6. Создает слой Controller

Многие из этих вещей можно сделать автоматически с помощью ChatGPT. И так сразу к делу, и посмотрим на что способен ChatGPT. В качестве Entity будем использовать простой класс.

Читать далее
Total votes 11: ↑4 and ↓7-3
Comments2

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity