Как стать автором
Обновить
42
0
Олег Борзов @olegborzov

Техлид

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

PostgreSQL в «Тензоре» — публикации за год

Время на прочтение16 мин
Количество просмотров6.5K
Ровно год назад с рассказа о нашем сервисе визуализации планов запросов мы начали публикацию на Хабре серии статей, посвященных работе с PostgreSQL и его особенностям. Это уже пройденные нами «грабли», интересные наработки, накопившиеся рекомендации, применяемые в разработке «Тензора» — те вещи, которые помогают нам делать СБИС более эффективным.


СБИС — это система полного цикла управления бизнесом — от кадрового учета, бухгалтерии, делопроизводства и налоговой отчетности, до таск-менеджмента, корпоративного портала и видеокоммуникаций. Поэтому каждый из 1 500 000 клиентов-организаций находит что-то полезное для себя и использует наши сервисы на постоянной основе — что дает ежемесячно более миллиона активных клиентов.


И все их данные надо где-то хранить и эффективно извлекать. Поэтому еще в далеком 2012 году мы сделали ставку на PostgreSQL, и теперь это основное хранилище данных наших сервисов:

  • почти 9000 баз общим объемом 1PB
  • свыше 200TB данных клиентов
  • 1500 разработчиков работают с БД

Чтобы упорядочить накопившиеся знания, за минувший год мы опубликовали более 60 статей, в которых делимся своим реальным опытом, проверенным практикой «сурового энтерпрайза». Возможно, какие-то из них вы пропустили, поэтому под катом мы собрали дайджест, где каждый разработчик и DBA найдет что-то интересное для себя.

Для удобства все статьи разбиты на несколько циклов:

  • Анализ запросов
    Наглядно демонстрируем все тайны EXPLAIN [ANALYZE].
  • SQL Antipatterns и оптимизация SQL
    Понимаем как [не] надо решать те или иные задачи в PostgreSQL и почему.
  • SQL HowTo
    Пробуем подходы к реализации сложных алгоритмов на SQL для развлечения и с пользой.
  • DBA
    Присматриваем за базой, чтобы ей легко дышалось.
  • Прикладные решения
    Решаем с помощью PostgreSQL конкретные бизнес-задачи.
Читать дальше →

Анализ тональности текстов с помощью сверточных нейронных сетей

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


Представьте, что у вас есть абзац текста. Можно ли понять, какую эмоцию несет этот текст: радость, грусть, гнев? Можно. Упростим себе задачу и будем классифицировать эмоцию как позитивную или как негативную, без уточнений. Есть много способов решать такую задачу, и один из них — свёрточные нейронные сети (Convolutional Neural Networks). CNN изначально были разработаны для обработки изображений, однако они успешно справляются с решением задач в сфере автоматической обработки текстов. Я познакомлю вас с бинарным анализом тональности русскоязычных текстов с помощью свёрточной нейронной сети, для которой векторные представления слов были сформированы на основе обученной Word2Vec модели.

Статья носит обзорный характер, я сделал акцент на практическую составляющую. И сразу хочу предупредить, что принимаемые на каждом этапе решения могут быть неоптимальными. Перед прочтением рекомендую ознакомиться с вводной статьей по использованию CNN в задачах обработки естественных языков, а также прочитать материал про методы векторного представление слов.
Читать дальше →

Восемь интересных возможностей PostgreSQL, о которых вы, возможно, не знали

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

Привет, Хабр! Приглашаем на бесплатный Demo-урок «Параллельный кластер CockroachDB», который пройдёт в рамках курса «PostgreSQL». Также публикуем перевод статьи Тома Брауна — Principal Systems Engineer at EnterpriseDB.

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

Читать далее

Создание программного продукта и управление его развитием

Время на прочтение5 мин
Количество просмотров22K
Привет, Хабр! Сегодня мы начинаем публикацию серии практических материалов для продакт-менеджеров, основателей стартапов и всех остальных, кто хочет приобрести навыки менеджера по разработке программных продуктов. Этот и последующие посты былы подготовлен на основе лекций курса «Создание программного продукта и управление его развитием», который был организован с помощью компании Acronis.

image

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

Green Code и березки. Основные принципы зеленого кода в разработке

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


Всем привет. Меня зовут Стас, в компании Домклик я курирую разработку сервисов бек-офиса для ипотечного кредитования Сбербанка.

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

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

Тема стала достаточно «хайповой», и я решил прикинуть, как именно принципы «зеленого» могут быть отражены в WEB-разработке.
Читать дальше →

О растущей популярности Kubernetes

Время на прочтение7 мин
Количество просмотров4.9K
Привет, Хабр!

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



Приятного чтения!
Читать дальше →

Топ-10 Angular-приемов, выбранных сообществом

Время на прочтение4 мин
Количество просмотров13K
В течение июня Саша Инкин и я, Рома Седов, запилили в Твиттере челлендж.

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

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

Давайте начнем!


Неофициальный гайд по Active Admin

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

Статья про Ruby в блоге компании ДомКлик! Как так получилось, что в молодую компанию завезли мертвый язык? Секрет в том, что на Ruby можно быстро написать и протестировать бизнес-идею. И делается это не без помощи Rails и Active Admin — библиотеки, которая позволяет быстро создать админку с минимальными затратами сил и времени.



Часто можно встретить мнение, что Active Admin хорош только для 15-минутного блога. Мы в ДомКлик считаем (и доказываем на практике), что из этой библиотеки можно выжать намного больше.


Я расскажу про некоторые подходы, которые мы применяем при работе с Active Admin.

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

Дождались: вышел LibreOffice 7.0

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

В этом месяце случилось сразу два приятных сюрприза. Первый — релиз ядра Linux Kernel 5.8. Второй — выход офисного пакета LibreOffice 7.0. Уже готовы пакеты для разных ОС, включая Linux, Windows, MacOS.

В седьмой версии офисного пакета много изменений. 74% добавлены сотрудниками организаций вроде Collabora, Red Hat и CIB, все остальное — результаты труда независимых разработчиков.

Что нового?

Как подготовить хорошее резюме для  IT-специалиста

Время на прочтение10 мин
Количество просмотров95K
Если вы не зарегистрированы на hh.ru или подобных ресурсах, находите работу в профильных сообществах на Facebook, в Telegram и по «сарафанному радио», и у вас нет отбоя от предложений, вам не нужно резюме. Но обычно оно нужно тем, кто вас нанимает — с рекрутера или HR начинается первый контакт разработчика и работодателя. Они изучают резюме кандидата перед тем, как передать его техническим специалистам и нанимателю. Рекрутер и HR — это первый этап отбора во всех компаниях, начиная с провинциальной веб-студии и заканчивая Яндексом или Сбербанком. Важно быстро пройти этот этап, а чтобы это сделать и нужно хорошее резюме.



Мы в headz.io работали примерно с 5000 резюме тестировщиков, разработчиков, DevOps-инженеров и других IT-специалистов, чтобы помочь им устроиться на ту работу, которую они хотели. Поэтому можем рассказать, как подготовить резюме, чтобы быстро пройти рекрутера или HR и понравиться работодателю.
Читать дальше →

Kubernetes в ДомКлик: как спать спокойно, управляя кластером на 1000 микросервисов

Время на прочтение8 мин
Количество просмотров16K
Меня зовут Виктор Ягофаров, и я занимаюсь развитием Kubernetes-платформы в компании ДомКлик в должности технического руководителя разработки в команде Ops (эксплуатация). Я хотел бы рассказать об устройстве наших процессов Dev <-> Ops, об особенностях эксплуатации одного из самых больших k8s-кластеров в России, а также о DevOps/SRE-практиках, которые применяет наша команда.


Поехали!

Трюки с SQL от DBA. Небанальные советы для разработчиков БД

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

Когда я начинал свою карьеру разработчика, моей первой работой стала DBA (администратор базы данных, АБД). В те годы, ещё до AWS RDS, Azure, Google Cloud и других облачных сервисов, существовало два типа АБД:

  • АБД инфраструктуры отвечали за настройку базы данных, конфигурирование хранилища и заботу о резервных копиях и репликации. После настройки БД инфраструктурный администратор время от времени «настраивал экземпляры», например, уточнял размеры кэшей.
  • АБД приложения получал от АБД инфраструктуры чистую базу и отвечал за её архитектуру: создание таблиц, индексов, ограничений и настройку SQL. АБД приложения также реализовывал ETL-процессы и миграцию данных. Если команды использовали хранимые процедуры, то АБД приложения поддерживал и их.

АБД приложений обычно были частью команд разработки. Они обладали глубокими познаниями по конкретной теме, поэтому обычно работали только над одним-двумя проектами. Инфраструктурные администраторы баз данных обычно входили в ИТ-команду и могли одновременно работать над несколькими проектами.
Читать дальше →

Обновление версий PostgreSQL, или Как не уронить базу при update?

Время на прочтение16 мин
Количество просмотров45K
Мы решили поделиться памяткой (чеклистом) нашей команды по обновлению PostgreSQL. В ней мы взяли за основу фичи, представленные в релизе официальной документации PostgreSQL, провели анализ на предмет нарушения совместимости и кому стоит обратить внимание на обновленную функциональность.

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

Пишем веб сервис на Python с помощью FastAPI

Время на прочтение17 мин
Количество просмотров129K
image

Знаю, знаю, наверное вы сейчас думаете «что, опять?!».

Да, на Хабре уже неоднократно писали о фреймворке FastAPI. Но я предлагаю рассмотреть этот инструмент немного подробнее и написать API своего собственного мини Хабра без кармы и рейтингов, зато с блэкджеком и с тестами, аутентификацией, миграциями и асинхронной работой с БД.
Читать дальше →

Lock-файлы npm

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

Lock-файлы npm


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

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

Об отслеживании социальных контактов и аппаратных жетонах

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


Во время пандемии ко мне обратилась Европейская Комиссия с предложением разработать жетон отслеживания социальных контактов с защитой приватности, о чём вы можете почитать на странице проекта Simmel. А вскоре Сингапур объявил о разработке жетона TraceTogether. В рамках этого события меня пригласили поучаствовать в обзоре их решения. Срочность ситуации с COVID-19 и значительная сложность создания цепочек поставок привели к тому, что мы оказались в ситуации выпущенных шасси самолёта, который коснулся посадочной полосы. Учитывая многочисленные проблемы, связанные с приватностью и технологиями, положение было сложным, его не получится описать в серии твитов. Поэтому опишу свои впечатления в виде коротких эссе. Поскольку мне удалось поработать с TraceTogether всего час, то по большей части буду рассказывать о контексте, в рамках которого дам оценку этому жетону.
Читать дальше →

Выбор зависимостей JavaScript

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

Выбор зависимостей JavaScript


Всем привет! В предыдущем посте мы подробно поговорили про добавление зависимостей в проект и про способы и стратегии их обновления.


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

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

Sktime: унифицированная библиотека Python для машинного обучения и работы с временными рядами

Время на прочтение7 мин
Количество просмотров15K
Всем привет. В преддверии старта базового и продвинутого курсов «Математика для Data Science», мы подготовили перевод еще одного интересного материала.






Решение задач из области data science на Python – это непросто


Почему? Существующие инструменты плохо подходят для решения задач, связанных с временными рядами и эти инструменты сложно интегрировать друг с другом. Методы пакета scikit-learn предполагают, что данные структурированы в табличном формате и каждый столбец состоит из независимых и одинаково распределенных случайных величин – предположений, которые не имеют ничего общего с данными временных рядов. Пакеты, в которых есть модули для машинного обучения и работы с временными рядами, такие как statsmodels, не особо хорошо дружат между собой. Более того, множество важных операций с временными рядами, такие как разбиение данных на обучающий и тестовый наборы по временным промежуткам, в существующих пакетах недоступны.

Для решения подобных задач и была создана sktime.
Читать дальше →

Установка и обновление зависимостей в JavaScript

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

Установка и обновление зависимостей JavaScript


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


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

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

Долгосрочное хранение данных в Elasticsearch

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


Меня зовут Игорь Сидоренко, я техлид в команде админов, поддерживающих в рабочем состоянии всю инфраструктуру Домклик.


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

Много грязных технических подробностей

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность