Pull to refresh
3
0
Дмитрий Адов @dvadov

Технический директор

Send message

Как содержать пароли. Мой сетап

Level of difficultyMedium
Reading time7 min
Views51K

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

Меня интересовало, как я могу залогиниться туда, где многофакторная авторизация через телефон, в случае потери телефона. 

Или, как обезопасить себя от забывания мастер пароля от менеджера паролей? На моей практике я несколько раз забывал пин-код от банковской карты, состоящий из 4-ёх цифр, после ежедневного использования на протяжении многих месяцев. Мозг - странная штука. 

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

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

Хранение паролей: работа над ошибками

Level of difficultyEasy
Reading time9 min
Views12K

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

Но начнём мы с небольшого объяснения, почему система такая сложная. Вспомним суть:

1) Для логина на "не значимые" сайты (например в аккаунт очередного AI-продукта) мы используем уникальный пароль, который храним в программе хранения паролей (парольном менеджере)

2) Для логина на "более важные ресурсы" (например в аккаунт на github), мы используем уникальный пароль, который храним в парольном менеджере, плюс одноразовый пароль (TOTP - Time-based One-Time Password) который нам покажет специальное приложение на телефоне.

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

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

Как организовать систему оплаты в компаниях, занимающихся разработкой

Level of difficultyMedium
Reading time16 min
Views6.3K

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

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

Не платите за то, сколько людей под руководством или сколько строк кода они написали. Платите им за генерируемые результаты.

Эта философия сильна и наделяет свободой. Неважно, если вы сотрудник, вносящий индивидуальный вклад (individual contributor, IC), занимаетесь техническим руководством или управлением командой. Важно то, насколько ваш вклад влияет на прибыль бизнеса.

В этом посте предлагается многоуровневая система, которую можно применять к IC, техническим руководителям и руководителям команд.
Читать дальше →
Total votes 50: ↑46 and ↓4+42
Comments7

Нужен ли вам Делавэр, если хотите открыть компанию в США

Reading time11 min
Views3.1K

Делавэр — прекрасный штат. Меньше миллиона жителей, отличная природа, милые неторопливые люди… и при этом именно тут предпочли зарегистрироваться свыше 60% компаний из списка Fortune 500. Как и десятки тысяч менее удачливых компаний, пришедших по объявлению «компания в Delaware».

Эта статья для тех, кто только собирается открыть компанию в США, и ещё не задумывался над вопросом, почему все объявления о регистрации предлагают именно Делавэр. Неужели там рай для бизнеса и самые тучные единороги? Правда ли, что для нерезидента налог 0%? Действительно ли это офшорный анклав внутри США? И главный вопрос — нужен ли вам на самом деле именно этот штат?

Читать далее
Total votes 9: ↑6 and ↓3+3
Comments7

Чек-лист по добавлению новой базы данных в стек

Level of difficultyMedium
Reading time12 min
Views2.9K

Всем привет! Я Ильшат, занимаюсь базами данных в #CloudMTS. За свою карьеру работал с различными СУБД (PostgreSQL, MongoDB, ClickHouse, Redis, MySQL, MariaDB, GreenPlum, etcd) и со временем у меня созрела методика добавления СУБД в стек эксплуатации.

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

уже есть база в продуктиве, и ее нужно забрать к себе на администрирование;

нужно быстро разобраться в новом типе СУБД, с которой вы не работали ранее, но которая скоро будет использоваться в вашем проекте;

у вас «зоопарк» из СУБД, и нужно стандартизировать подход к развертыванию баз данных;

провести аудит инфраструктуры СУБД.

Статья пригодится не только DBA, но и тем, кто по долгу службы занимается поддержкой СУБД, например системным администраторам, а также инженерам, отвечающим за надежность инфраструктуры — DevOps и SRE.

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

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

Компилятор бизнес-правил на основе деревьев выражений

Reading time11 min
Views3.3K

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

К коду
Total votes 5: ↑5 and ↓0+5
Comments9

Исключения среди исключений в .NET

Reading time15 min
Views25K

В свое время я случайно узнал, что исключения в моём горячо любимом языке C# — и, как следствие, во всем .NET — не все ведут себя одинаково. Причём, что ещё гораздо интереснее, далеко не все и не всегда могут быть обработаны и перехвачены. Что, казалось бы, полностью противоречит интуитивному восприятию конструкции try-catch-finally

Изучая этот вопрос, я находил всё новые и новые исключения среди исключений, которые оказывались «сильнее», чем конструкция try-catch-finally. К тому моменту, когда мой список вырос до 7 пунктов, я внезапно осознал, что нигде не было такого места, где можно было бы найти их все сразу. Максимум — 2 или 3 случая, рассмотренных в одной статье. 

Это и подтолкнуло меня к написанию данной статьи. 

Читать далее
Total votes 84: ↑83 and ↓1+82
Comments19

Доступный дизайн компонентов на примерах. Дизайнеру про ARIA-атрибуты, порядок фокуса и другое

Reading time11 min
Views15K

В статье я расскажу о том, как разрабатывать дизайн доступных (т. е. отвечающих требованиям доступности) компонентов, об основных руководствах по доступности и о ключевых моментах, на которые стоит обратить внимание, а именно: о порядке фокуса, о клавиатурном взаимодействии и об ARIA-атрибутах.

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

Разработка системы тестирования SQL-запросов. Часть 2

Reading time13 min
Views7.7K

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

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

Техники обработки отказов сервиса в микросервисных архитектурах, или Альтернативы Circuit Breaker

Reading time11 min
Views8.9K

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

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

Как UX/UI-дизайнеру не потеряться в тысяче макетов в Figma: новый инструмент контроля версий

Reading time7 min
Views8.4K

Знакома история, когда забыл сохранить предыдущую версию рабочего макета — и считай её и вовсе не было? Система контроля версий поможет избежать подобных ситуаций. Я работаю UX/UI-дизайнером в крупном проекте, где создание интерфейсов и разработка идут одновременно. В таких проектах важно держать все изменения версий макетов не только в голове, но и в самом рабочем файле, чтобы вконец не запутать команду разработчиков.

В этой статье я расскажу о плюсах и минусах инструментов контроля версий, с которыми мне приходилось сталкиваться в работе: подход семантического версионирования; история версий в Figma и новый (пока в бета-версии) инструмент в Figma — Branching («ветвление»).

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

Создаём по-настоящему надёжные плагины на платформе Managed Add-In Framework

Reading time14 min
Views2.9K

Однажды мы поняли, что для качественной и быстрой реализации разносторонних требований пользователей нам срочно нужны плагины. Изучив разнообразие имеющихся платформ для их создания, мы выяснили, что наилучшим образом нам подойдет Managed Add-In Framework от Microsoft, потому что, во-первых, она позволяет создавать плагины на базе .NET Framework, во-вторых, даёт возможность обмена данными и пользовательским интерфейсом между плагином и приложением-хостом, и в-третьих, обеспечивает безопасность и версионность, что делает плагины надёжными.

Жизнь показала, что мы были правы — плагины работают, пользователи довольны, заказчик счастлив. Правда, у Managed Add-In Framework есть ещё одна проблема — недостаточное количество информации. Всё, что мы нашли — это скудная документация да несколько постов на StackOverflow. Но этот пробел я частично заполню, описав, как мы преодолевали те препоны, с которым столкнулись. Эта статья будет полезна в качестве быстрого старта для тех, кто тоже решит освоить MAF для создания плагинов на базе .NET Framework.

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

RBAC в Angular-приложениях

Reading time13 min
Views5.1K

«Каждый уважающий себя блогер должен написать статью о RBAC. Каждый уважающий себя читатель должен написать в комментарии, что всё равно ничего не понял». С этой фразы началось мое знакомство с RBAC. И я имел прекрасную возможность узнать, что всё так и есть.

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

Читать далее
Total votes 10: ↑9 and ↓1+8
Comments6

Стратегия тестирования краткосрочного проекта

Reading time11 min
Views11K

За пять лет работы в «Аркадии» — компании-разработчике программного обеспечения на заказ, где я работаю тестировщиком, — мне довелось поучаствовать в самых разных проектах. Большая часть из них была связана с веб-разработкой, меньшая — с мобильной. Некоторые проекты длились более года, другие были краткосрочными (полгода или даже пару месяцев). Менялся и размер команд: от трёх до трёх десятков человек.  

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

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

Фильтры действий, или Как просто улучшить читаемость кода

Reading time10 min
Views12K


Введение


В свободное от работы время я, как и многие другие разработчики, занимаюсь созданием своих приложений, чтобы опробовать самые последние технологии, создать что-то полезное для повседневного использования или просто открыть для себя что-то новое. Одним из таких проектов было веб-приложение, которое обрабатывало данные, введённые пользователем, и планировало выполнение задач, основанных на введённых данных. Так как личные проекты не ограничены во времени, то мне хотелось по возможности избавить проект от всех раздражающих моментов. И одним из таких моментов были повторяющиеся строчки кода в методах контроллера. Я начал искать решение этой проблемы и наткнулся на фильтры. Идея использования фильтров для поддержания чистоты кода показалась мне не только интересной и эффективной, но в то же время простой, поэтому я решил поделиться этой информацией с вами.
Читать дальше →
Total votes 8: ↑7 and ↓1+6
Comments3

Хранимые, отображаемые и DOM-based XSS: выявление и блокирование

Reading time13 min
Views15K

В статье расскажем про хранимые, отображаемы типы XSS и XSS в DOM-объектах, проведем обзор фреймворков для их поиска (XXSer и XXStrike) и узнаем, как точно Nemesida WAF Free блокирует попытки эксплуатации XSS.

<script>alert('Читать дальше')</script>
Total votes 10: ↑9 and ↓1+8
Comments9

В начале был “workflow”

Reading time9 min
Views5.1K

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

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

Эволюция процесса релиза LMS

Reading time12 min
Views1.8K


К чему вы стремитесь в работе? Мной всегда двигало желание быть причастным к чему-то, что действительно помогает людям решать важные задачи. Это стремление привело меня в проект онлайн-системы дистанционного обучения (Learning Management System, сокращённо LMS).

В силу масштаба, разработчикам часто приходится задумываться об аспектах, которые не вызывают трудностей в разработке небольших систем. Недавно мы писали о тонкостях тестирования LMS, а в этой статье я расскажу о том, как мы прошли долгий путь от редких, достаточно рискованных и весьма затратных релизов до частых и более предсказуемых.
Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments0

Про хороший и плохой дизайн для недизайнеров

Reading time13 min
Views19K

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

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

Делаем свой телеканал

Reading time7 min
Views28K


Вы, возможно, удивитесь, но телевидение всё ещё живо. Да, аудитория поредела и «состарилась», а технологии приумножились и помолодели (IPTV, SmartTV, различные приставки), но всё-таки жизнь есть не только в YouTube и TikTok. Мало того, сейчас сделать свой телеканал можно при достаточно небольших инвестициях времени и финансов. В 2017 году мой брат (Ruler-ufa) попросил меня о помощи с технической реализацией нового музыкального телеканала на башкирском и татарском языках. О том, что у нас получилось, и пойдёт речь в этой статье. Сразу оговорюсь, что нюансов подбора контента, оформления эфира и подобных тем здесь не будет, т.к. я занимался исключительно технической частью. Кроме того, задача была сделать все максимально просто и дёшево, т.к. бюджет был ограничен, поэтому некоторые вещи можно было сделать по-другому — правильнее, но гораздо дороже.
Total votes 26: ↑26 and ↓0+26
Comments15

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Works in
Date of birth
Registered
Activity