Московский политех 2021
Тема диссертации: «Управление рисками в высокотехнологичном производстве»"}],"skills":[{"class":"message-end","text":"Технологии?"},{"class":"message-start","text":"Основное: Python 3.11, FastAPI, Flask, SQLAlchemy
Базы данных: Postgres, Redis, Kafka, Pandas
Облако: AWS (EC2, S3, Lambda), Docker, K8s
MLOps: MLflow, Airflow, PyTorch, TensorFlow"}],"contacts":[{"class":"message-end","text":"Как связаться?"},{"class":"message-start","text":"Буду рад контакту с вами!
Почта: nikita@nazarov.dev
Телеграм: @nananazarov
Линкедин: @nananazarov
Сейчас я живу в Дананге, Вьетнам 🇻🇳"}],"career":[{"class":"message-end","text":"Карьера?"},{"class":"message-start","text":"Mazars - Москва, Аналитик (2019-2021)
• Анализ финансовых данных
• Построение отчетов
• Автоматизация процессов
"},{"class":"message-start","text":"Ipsos - Москва, Старший аналитик / Разработчик (2021-2024)
• Разработка BI-систем
• Автоматизация процессов
• Поддержка и развитие системы
"},{"class":"message-start","text":"Digital Finance International - Хошимин, Риск-технолог (2024-настоящее время)
• Разработка решений для рисков
• Автоматизация процессов
• Поддержка и развитие системы
"}],"one-more-thing":[{"class":"message-start","text":"Попался!"},{"class":"message-start","text":""}]};
const clickedChips = new Set();
async function makeOneMoreThingVisible() {
if (clickedChips.size == 4) {
const button = document.getElementById("one-more-thing");
button.style.display = "block";
}
}
async function showMessageWithDelay(message, delayMillis = 100) {
return new Promise((resolve) => {
setTimeout(function () {
const messageElement = document.createElement("div");
messageElement.classList.add("message", message.class);
messageElement.innerHTML = `
${message.text}
`; document.querySelector(".messenger").appendChild(messageElement); resolve(); }, delayMillis); }); } async function showNextMessages(id) { const messages = dialogMessages[id]; if (!messages) { return; } for (const message of messages) { if (message.class == "message-end") { await showMessageWithDelay(message); } else { await showMessageWithDelay(message, 800); } } } async function handleClick(event) { const { target } = event; if (target.classList.contains("message-input-chip")) { target.style.display = "none"; messageChips.removeEventListener("click", handleClick); await showNextMessages(target.id); messageChips.addEventListener("click", handleClick); clickedChips.add(target.id); await makeOneMoreThingVisible(); } } const messageChips = document.getElementById("message-input-list"); messageChips.addEventListener("click", handleClick); })();