Как стать автором
Обновить
11
0
Иван Белов @WhiteSteel

Head of Backend

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

Как мы построили свой лунапарк (с блекджеком, разумеется) или опыт внедрения системы управления ИТ-проектами

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

Привет, Хабр! На связи команда Проектного офиса НЛМК-ИТ.

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

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

Читать далее
Всего голосов 12: ↑11 и ↓1+10
Комментарии13

Аудит пользователей Spring Data JPA

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

Задача: в БД необходимо фиксировать кто создал сущность, кто её обновил, и кто её удалил.

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

Мне хотелось полностью делегировать это приложению, но погуглив, я не нашёл какого‑то явного решения. Сейчас расскажу, как мне удалось это сделать:

Читать далее
Всего голосов 12: ↑11 и ↓1+10
Комментарии18

Самообслуживание или как Dev- Fin- Sec- TestOps победил

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

Представьте, что вы запустили внутреннюю платформу сервисов для разработчиков и DevOps-команд: хранение кода, инструментарий для CI/CD, контейнеризация (или иной способ выполнения приложений), логирование, мониторинг и т.д. и т.п. и др. и пр.

Пошли потребители. 1, 2... 10-й... 20-й... Вы понимаете, что для их обслуживания вручную в приемлемые сроки вам не хватает "рук". Еще и пользователи создают заявки, используя человеческий язык запросов, трудно поддающийся автоматизации. Из-за спешки и стресса начали появляться сбои. Итог: вместо работы над улучшением платформы вы занимаетесь разборами жалоб и инцидентов.

Представили?
Всего голосов 17: ↑17 и ↓0+17
Комментарии0

Сахар для слоненка — быстрый старт c PostgreSQL для команд в НЛМК

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

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

В процессе общения с различными командами в НЛМК у меня появилась идея предложить им «преднастроенный PostgreSQL». Как в итоге сделали — под катом.

Читать далее
Всего голосов 25: ↑25 и ↓0+25
Комментарии5

Всё меняется, когда твой софт повышает безопасность производства

Время на прочтение8 мин
Количество просмотров16K
К нам из цеха пришли инженеры и попросили сделать ИТ-систему.

Если вы знакомы со спецификой «суровых производственных мужчин», то знаете, что от них это звучит примерно так же, как «тыквенный смузи и веганский стейк, пожалуйста», — ещё два года назад мы о таком проявлении доверия к ИТ со стороны производства даже мечтать не могли. А тут оказалось, что им нужен инструмент, чтобы контролировать износ сегментов УНРС (установки непрерывной разливки стали), потому что это не только убирает рутину, напрямую влияет на качество продукта — слитков стали, но и снижает потенциальный риск прорыва сегмента с расплавом.

Итак, знакомьтесь, вот один из ручьёв УНРС:



Сверху на УНРС приходит ковш, снизу выпадает огромный слиток стали — сляб. Если вы думаете, что достаточно просто залить сталь из ковша в формочку, то нет. Надо, чтобы всё это равномерно остыло, иначе внутри будут раковины, трещины и другие неприятности. Поэтому процесс такой: сверху буфер, бассейн-накопитель для жидкой стали, дальше каскад сегментов-обработчиков. Сталь проливается вниз, а каждый сегмент охлаждает её. В бассейн подаются ковши с расплавом, которые его наполняют.

Самое опасное в УНРС — не уследить за износом какого-то одного из сегментов, по которому идёт расплав, постепенно превращаясь в сляб. И оказалось, что можно свести такую вероятность к нулю, если избавиться от кучи отдельных бумажных документов и автоматизировать контроль.

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

Сейчас покажу результат.
Читать дальше →
Всего голосов 150: ↑150 и ↓0+150
Комментарии30

Собеседование наоборот: РТЛабс, МойОфис, Лига Цифровой Экономики, Контур, НЛМК, Nexign / часть 2

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

В ноябре на Хабр Карьере завершилась карьерная неделя бэкенда. Карьерная неделя — это что-то вроде дня открытых дверей, который длится всю неделю. В гонке за специалистами участвовали шесть компаний: РТЛабсМойОфисЛига Цифровой ЭкономикиКонтурНЛМК и Nexign

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

Читать далее
Всего голосов 22: ↑22 и ↓0+22
Комментарии1

Собеседование наоборот: РТЛабс, МойОфис, Лига Цифровой Экономики, Контур, НЛМК, Nexign / часть 1

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

В ноябре на Хабр Карьере завершилась карьерная неделя бэкенда. Карьерная неделя — это что-то вроде дня открытых дверей, который длится всю неделю. В гонке за специалистами участвовали шесть компаний: РТЛабс, МойОфис, Лига Цифровой Экономики, Контур, НЛМК и Nexign

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

Читать далее
Всего голосов 25: ↑25 и ↓0+25
Комментарии0

Приемы для ускорения написания кода на ABAP

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

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

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

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

Читать далее
Всего голосов 18: ↑18 и ↓0+18
Комментарии1

Все полезные материалы о SRE в одном месте

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

Привет! Мы решили собрать для вас все статьи о Site reliability engineering (SRE) в одном месте.

В материалах ниже вы найдете информацию о внедрении SRE, вариантах применения отдельных практик, а также полезные кейсы от нескольких компаний.

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

Когда люди с трудом выиграли соревнование с алгоритмом — оптимальный раскрой листа металла

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


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

Правила игры такие:

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

То есть мы можем обрезать сталь по краям, если дефект попался у кромки, и получить узкий рулон без изъянов. Или вырезать участок с дефектом и получить широкий рулон, но со швами.

Задача — оптимально разложить заказанные рулоны примерно по 3,5 тонны в стендовой партии из рулонов по 9 тонн длиной 4,5-5 километров. Перевалка станины на разную ширину стоит денег, и часто это дороже, чем вернуть 200-300 метров стали назад в переплавку.

То есть задача сводится к тому, чтобы за минимум шагов получить максимум полезного металла. Мы называли это «Каждый сам себе Пикассо», потому что каждый мастер резал в соответствии со своей личной и сугубо субъективной картиной мира. Нам казалось, что до оптимизации там ой, как далеко.

В обычной истории мы бы полгода «бодались», потом придумали бы интеграцию и робот стал бы говорить «человекам», как раскраивать. Но тут всё пошло несколько иначе и началось странное.
Читать дальше →
Всего голосов 129: ↑129 и ↓0+129
Комментарии43

Package-lock.json: немного о файле для идеальных деревьев

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

Привет, всем!

Предполагаю, многие уже знакомы с «npm» (менеджер пакетов), файлом «package.json» и командой для установки пакетов «npm install». Тема моей на следующем шаге, когда после успешно выполненной команды «npm install» появляется файл «package-lock.json». Он создается для любых операций, в которых npm изменяет дерево «node_modules» или файл «package.json». Описывает точное дерево зависимостей, которое было сгенерировано, так что последующие установки могут генерировать идентичные деревья, независимо от промежуточных обновлений зависимостей.

О том, как это работает — мой туториал.

Читать далее
Всего голосов 20: ↑19 и ↓1+18
Комментарии3

Kafka как интеграционная платформа: от источников данных к потребителям и в хранилище (часть 1)

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

Привет! Меня зовут Илья Макаров, я работаю архитектором решений и в статье расскажу про архитектуру цифровой платформы НЛМК, из каких компонент, помимо Apache Kafka, она состоит, к каким соглашениям по именованию топиков и договоренностям по передаче данных мы пришли, как всем этим управляем.

А это сразу ссылка на часть 2.

Читать далее
Всего голосов 23: ↑23 и ↓0+23
Комментарии2

Кастомный отчет для Jira или как приключение затянулось

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

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

Но что, если я вам скажу, что это должна быть не какая-то новая система, а плагин для Jira. Все вышесказанное никуда не уходит, но добавляются нюансы. Вот о таких нюансах (и как не вылететь из-за них из всех разумных сроков) эта статья.

Читать далее
Всего голосов 9: ↑8 и ↓1+7
Комментарии0

Сравнение Quartz, kagkarlsson и кастомной реализации для запланированного задания в реактивном Spring Boot приложении

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

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

Читать далее
Всего голосов 22: ↑21 и ↓1+20
Комментарии0

Что делать неизвестным в вашем git репозитории

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

Всем привет! Предлагаю взглянуть на проблему, связанную с возникновением коммитов от «неизвестных» пользователей в вашем git репозитории. Такое может возникнуть, если один разработчик будет использовать несколько разных git конфигов. Расскажу, какие есть варианты избежать похожую ситуацию.

Читать далее
Всего голосов 38: ↑36 и ↓2+34
Комментарии5

Как «Алтай-Кокс» научился экономить на вагонах миллионы рублей в год

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

Помните задачу о рюкзаке, в который нужно сложить как можно больше ценных вещей при ограниченной вместимости? Подобные головоломки каждый день решают сотрудники «Алтай-Кокса» при загрузке вагонов, только факторов нужно учесть несравнимо больше: грузоподъёмность, фракцию груза, тарифные планы, тип маршрута и много чего ещё. Последний год в этом помогает математическая модель, завернутая в цифровой сервис - об этом (а еще о металлургическом коксе) речь под катом.

Читать далее
Всего голосов 55: ↑54 и ↓1+53
Комментарии27

Apache NiFi: как починить ошибки, которые не гуглятся

Время на прочтение16 мин
Количество просмотров8.9K
Настройка и запуск Apache NiFi и Zookeeper, настройка авторизации по LDAP и работа NiFi по HTTPS, настройка и запуск Apache NiFi Registry, пример запуска NiFi c Kerberos — вот темы, которые будут в этой статье.



Не вижу смысла полностью рассказывать, как настраивать NiFi и NiFi Registry — есть официальная документация и мануалы в сети. Я сосредоточился на ошибках, информации по которым нет, в том числе и на английском. При самостоятельном поиске решения, это реально масса времени. Я провел месяцы в режиме DEBUG и TRACE, чтобы понять, как всё сделать правильно. Готов поделится.
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии11

+250 новых вакансий

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

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

Сейчас для IT-сообщества появляется много новых возможностей. Например, Группа НЛМК открыла более 250 новых вакансий для разработчиков, тестировщиков, IT-архитекторов, инженеров, специалистов по информационной безопасности, UI/UX дизайнеров, аналитиков, руководителей IT-проектов и экспертов по широкому спектру информационных систем.

Читать далее
Всего голосов 32: ↑25 и ↓7+18
Комментарии37

Пишем умный контракт на Solidity. Часть 1 — установка и «Hello world»

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

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


Smart Contract & Gas


Если на пальцах, "умный контракт" — это некоторый код, живущий внутри блокчейна. Любой участник сети может его вызвать за небольшую плату. Эта плата и называется Gas, дословно "топливо". Зачем это нужно? Для защиты майнера от злоупотребления мошенником его ресурсов.


Немногие знают, но даже в биткоине есть возможность писать эти самые контракты, но в силу некоторых причин этим мало кто занимается. Одна из главных проблем — язык Script не Тьюринг-полный и написать что-то более менее серьезное непросто (чтобы вы понимали масштаб проблемы — нет даже возможности добавить цикл). В случае с Ethereum все чуть по другому, языки Тьюринг-полные, и есть риск, что кто-то напишет контракт вида


// Это псевдокод
foo = 0;
while (True) {
    foo++;
}

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

Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии16

Как мы дорабатывали оценку рабочих в Success Factors, попутно меняя разработку

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

Привет! Меня зовут Григорий, в Группе НЛМК я руководитель команды в отделе Backend-разработки. Примерно год назад мы доработали SAP SuccessFactors - автоматизировали расчет оценки сотрудников рабочих специальностей.

Параллельно с доработкой SAP SF наша компания внедряла Единую цифровую платформу (ЕЦП) - меняла подход к разработке через взаимную интеграцию удобных инструментов. Расскажу обо всем этом на примере нашего проекта.

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии5
1

Информация

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