Как стать автором
Обновить
6
0
Миронов Дмитрий @MironovDV

Разработчик

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

Подготовка к собеседованиям в IT-гиганты: как я преодолела проклятье алгоритмического собеседования

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

Дисклеймер:


Я не программирую с трёх лет, не знаю наизусть Кнута, не являюсь призёром олимпиад по информатике и чемпионатов по спортивному программированию, не училась в MIT. У меня за плечами образование по информатике и 6 лет опыта в коммерческой разработке. И до недавнего времени я не могла пройти дальше первого технического скрининга в IT-гиганты из FAANG (Facebook, Amazon, Apple, Netflix, Google и подобные), хотя предпринимала несколько попыток. 

Но теперь всё изменилось, я получила несколько офферов и хочу поделиться опытом, как можно к этому прийти. Речь пойдёт о позиции Software Engineer в европейских офисах перечисленных компаний.
Читать дальше →
Всего голосов 155: ↑150 и ↓5+191
Комментарии342

Обработка миллионов событий в сутки при помощи каскадов очередей

Время на прочтение8 мин
Количество просмотров7.8K
Под капотом нашего продукта крутятся сотни, тысячи, а в некоторых сервисах и миллионы очередей, через которые проходит огромное количество данных. Все это нужно каким-то магическим образом обрабатывать и не застрелиться. В данном посте я расскажу, какие архитектурные подходы мы используем у себя, имея достаточно скромный стэк технологий и не имея маленького дата-центра у себя в «кладовке».


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

Интернет вещей: Arduino в связке с облаком

Время на прочтение8 мин
Количество просмотров21K
В наш век многие задумывались о создании своего стартапа. Но разработать какой-то интересный и полезный продукт своими силами зачастую сложно. Отчасти для экономии сил, можно использовать облако. В частности, для проектов интернета вещей в облаке можно найти достаточное количество сервисов. Что же такое «Интернет вещей» и как его можно продуктивно использовать? Обо всём этом читайте под катом.

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

Где логика? Учимся мыслить системно. Часть 1

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

I Вступление


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

Эдгар Аллан По
Для людей, активно завоевывающих свое место в обществе, в помощь сейчас доступно достаточное количество литературы об ораторском искусстве, о проведении переговоров, о лидерстве и т.п. Но львиную долю этих трудов объединяет то, что в них во всех, авторы учат облюбованным ими методикам человеческих отношений, приемам влияния на людей и т.п. Это напоминает рецепты из поваренной книги: «отмерьте полстакана теории, сдобрите щепоткой логики, смешайте со смелостью по вкусу … подавать себя лучше слегка подогретым».

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

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

Итак, поехали…

Для проведения любого анализа, необходимо какая-то точка отсчета. А поскольку, на мой взгляд, стрежнем в отношениях людей все же является взаимопонимание, ну по крайней мере для успешных взаимоотношений, то давайте попробуем зацепиться именно за эту тему.
Читать дальше →
Всего голосов 21: ↑15 и ↓6+9
Комментарии13

Полное практическое руководство по Docker: с нуля до кластера на AWS

Время на прочтение39 мин
Количество просмотров1.7M



Содержание



Вопросы и ответы


Что такое Докер?


Определение Докера в Википедии звучит так:


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



Ого! Как много информации.

Читать дальше →
Всего голосов 125: ↑124 и ↓1+123
Комментарии44

Эволюция структур данных в Яндекс.Метрике

Время на прочтение17 мин
Количество просмотров45K
Яндекс.Метрика сегодня это не только система веб-аналитики, но и AppMetrica — система аналитики для приложений. На входе в Метрику мы имеем поток данных — событий, происходящих на сайтах или в приложениях. Наша задача — обработать эти данные и представить их в подходящем для анализа виде.



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

Яндекс.Метрика работает с 2008 года — более семи лет. Каждый раз изменение подхода к хранению данных было обусловлено тем, что то или иное решение работало слишком плохо — с недостаточным запасом по производительности, недостаточно надёжно и с большим количеством проблем при эксплуатации, использовало слишком много вычислительных ресурсов, или же просто не позволяло нам реализовать то, что мы хотим.
Читать дальше →
Всего голосов 57: ↑55 и ↓2+53
Комментарии22

Архитектура open source-приложений: Как работает nginx

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


Мы в «Латере» занимаемся созданием биллинга для операторов связи и рассказываем на Хабре о разработке своего продукта, а также публикуем интересные технические переводные материалы. И сегодня мы представляем вашему вниманию адаптированный перевод одной из глав книги «Архитектура open-source-приложений», в которой описываются предпосылки появления, архитектура и организация работы популярного веб-сервера nginx.
Читать дальше →
Всего голосов 36: ↑31 и ↓5+26
Комментарии10

Сэм Альтман и Дастин Московитц: Как и зачем создавать стартап?

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


Cтэнфордский курс CS183B: How to start a startup. Стартовал в 2012 году под руководством Питера Тиля. Осенью 2014 года прошла новая серия лекций ведущих предпринимателей и экспертов Y Combinator:


Первая часть курса
Читать дальше →
Всего голосов 30: ↑26 и ↓4+22
Комментарии14

Action-Domain-Responder — доработка MVC под задачи веба

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

Цель


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

ADR

Предпосылки


Термин MVC испытывает некоторое семантическое размытие своего первоначального значения, особенно в контексте веба (см. видео Стефана Прибша для более подробного рассмотрения вопроса). В качестве средства устранения этого размытия предлагаю вашему вниманию описание паттерна Action-Domain-Responder, являющегося доработкой концепции MVC под нужды решения специфичных для веба задач.

Я считаю, что ADR значительно лучше соответствует тому, что мы на самом деле реализуем в процессе веб-разработки изо дня в день. К примеру, на создание этого паттерна меня частично вдохновило то, как мы решаем проблемы роутинга и диспетчеризации, ведь в общем случае при роутинге и диспетчеризации мы обращаемся не к классу контроллера per se, а к какому-то конкретному методу действия в этом классе контроллера.

Еще одной вскрывшейся проблемой является тот факт, что часто мы рассматриваем Представление (View) как шаблон (template), хотя в контексте веба, вероятно, более уместно было бы говорить о том, что Представлением является HTTP-ответ. Исходя из вышесказанного, я считаю, что ADR способен предоставить лучшее, чем MVC, разделение концепций для веб-приложений.
Читать дальше →
Всего голосов 15: ↑12 и ↓3+9
Комментарии7

Про модель, логику, ООП, разработку и остальное

Время на прочтение29 мин
Количество просмотров110K
Часто ли вы задумываетесь – почему что-то сделано так или иначе? Почему у вас микросервисы или монолит, двухзвенка или трехзвенка? Зачем вам многослойная архитектура и сколько у вас вообще слоев? Что такое бизнес-логика, логика приложения, презентационная логика и почему все так разделено? Посмотрите на свое приложение – как оно вообще спроектировано? Что в нем и где находится, почему это сделано именно так?
Потому что так написано в книжках или так говорят авторитетные личности? Какие ВАШИ проблемы решает тот или иной подход/паттерн?
Даже то, что на первый взгляд кажется очевидным, порой бывает очень сложно объяснить. А иногда, в попытке объяснения, приходит понимание того, что очевидные мысли были и вовсе ошибочны.
Давайте попробуем взять какой-нибудь пример и изучить на нем эти вопросы со всех сторон.
Читать дальше →
Всего голосов 55: ↑51 и ↓4+47
Комментарии34

Как вести переговоры о повышении: Cоветы ИТ-специалисту

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


Представьте, что вы просматриваете сайт с платежками вашей компании, и натыкаетесь на редактируемое поле ввода под названием «Рыночная ставка заработной платы». Вы прописываете для себя 10-кратное увеличение этого параметра (потому что вы, безусловно, этого заслуживаете) и потом проводите остаток дня как обычно.

Ритм вашего сердца учащается, когда вы проверяете свой банковский счет в день начисления зарплаты: вы вполне уверены, что обнаружите стандартную сумму, которую вам обычно выплачивают… но в конце этого числа оказывается еще один ноль! Постойте-ка, что!?! Сработало, теперь вы богаты! Или скоро станете таковым, если эта схема добычи легких денег будет действовать и дальше. Как же долго это поле ввода находилось на сайте?

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

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


Читать дальше →
Всего голосов 33: ↑28 и ↓5+23
Комментарии36

N+4 полезных книг

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


Привет! В посте блиц-обзор книг, которые будут полезны IT-специалистам, бизнесменам и тем, кто просто любит читать интересные технические вещи. Рядом с каждой – пояснения, чем оно может быть нужно. Этот обзор, в отличие от других ежегодных, более технически-прикладной.

Начнём со «Справочника по инженерной психологии» Вудсона и Коновера.

«Справочник по инженерной психологии» — Вудсон, Коновер


Книга о том, какие бывают кнопки и рычаги, как на них нажимают люди. И как проектировать так, чтобы люди работали с системой эффективно. Радует тем, что рассматривает пользователя как базовую систему ввода-вывода, замеряя его среднюю скорость передачи информации (около 20 бит в секунду на кнопочные интерфейсы), скорости ввода и вывода.
Читать дальше →
Всего голосов 58: ↑55 и ↓3+52
Комментарии8

Дистанционная работа: Более 130 полезных источников

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


Данная подборка позволит вам разобраться с плюсами и минусами дистанционной работы, оценить затраты и возможную экономию, познакомиться с опытом коллег и взглянуть на целый спектр компаний, команды которых работают дистанционно.
Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии9

Нейропластичность в искусственных нейронных сетях

Время на прочтение17 мин
Количество просмотров53K
Привет, Хабр, давно не виделись. В этом посте мне хотелось бы рассказать о таком относительно новом понятии в машинном обучении, как transfer learning. Так как я не нашел какого-либо устоявшегося перевода этого термина, то и в названии поста фигурирует хоть и другой, но близкий по смыслу термин, который как бы является биологической предпосылкой к формализации теории передачи знаний от одной модели к другой. Итак, план такой: для начала рассмотрим биологические предпосылки; после коснемся отличия transfer learning от очень похожей идеи предобучения глубокой нейронной сети; а в конце обсудим реальную задачу семантического хеширования изображений. Для этого мы не будем скромничать и возьмем глубокую (19 слоев) сверточную нейросеть победителей конкурса imagenet 2014 года в разделе «локализация и классификация» (Visual Geometry Group, University of Oxford), сделаем ей небольшую трепанацию, извлечем часть слоев и используем их в своих целях. Поехали.
Читать дальше →
Всего голосов 58: ↑56 и ↓2+54
Комментарии38

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

Время на прочтение12 мин
Количество просмотров244K
Я был крайне удивлён, найдя мало статей про динамическое программирование (далее просто динамика) на хабре. Мне всегда казалось, что эта парадигма довольно сильно распространена, в том числе и за пределами олимпиад по программированию. Поэтому я постараюсь закрыть этот пробел своей статьёй.

# Весь код в статье написан на языке Python

Основы


Пожалуй, лучшее описание динамики в одно предложение, которое я когда либо слышал:

Динамическое программирование — это когда у нас есть задача, которую непонятно как решать, и мы разбиваем ее на меньшие задачи, которые тоже непонятно как решать. (с) А. Кумок.
Читать дальше →
Всего голосов 110: ↑100 и ↓10+90
Комментарии33

Динамическое программирование. Классические задачи

Время на прочтение8 мин
Количество просмотров326K
Здравствуй, Хабрахабр. В настоящий момент я работаю над учебным пособием по олимпиадному программированию, один из параграфов которого посвящен динамическому программированию. Ниже приведена выдержка из данного параграфа. Пытаясь объяснить данную тему как можно проще, я постарался сложные моменты сопроводить иллюстрациями. Мне интересно ваше мнение о том, насколько понятным получился данный материал. Также буду рад советам, какие еще задачи стоит включить в данный раздел.

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

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

Такие задачи решают методом динамического программирования, а под самим динамическим программированием понимают сведение задачи к подзадачам.
Читать дальше →
Всего голосов 105: ↑97 и ↓8+89
Комментарии72

Lock-free структуры данных. Concurrent maps: skip list

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

В предыдущих статьях (раз, два) мы рассматривали классический hash map с хеш-таблицей и списком коллизий. Был построен lock-free ordered list, который послужил нам основой для lock-free hash map.
К сожалению, списки характеризуются линейной сложностью поиска O(N), где N — число элементов в списке, так что наш алгоритм lock-free ordered list сам по себе представляет небольшой интерес при больших N.
Или все же представляет?..
Читать дальше →
Всего голосов 36: ↑36 и ↓0+36
Комментарии8

Искусственный интеллект как совокупность вопросов

Время на прочтение4 мин
Количество просмотров76K
image
Когда мы рассуждаем о сильном искусственном интеллекте, то мы понимаем, что это не изолированный вопрос, не вещь в себе, а вопрос ответ на который подразумевает объяснение всех явлений, которые связаны с мышлением человека. То есть, ответив на вопрос о природе интеллекта, мы неизбежно должны будем ответить на такие вопросы как:

  • Что есть информация?
  • Как мозг представляет знания?
  • Что такое язык?
  • Какова роль языка в мышлении?
  • Как совершаются поступки?
  • Как осуществляется планирование?
  • Какова природа фантазий и воспоминаний?
  • Что такое мотивация?
  • Какова природа эмоций?
  • Откуда берется многообразие эмоциональных оценок?
  • Что есть смысл?
  • Как рождается мысль и какова ее природа?
  • Что такое внимание?
  • Что есть любовь?
  • Что есть гармония и красота?

Читать дальше →
Всего голосов 57: ↑39 и ↓18+21
Комментарии55

Muse: управляем силой мысли

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


То, что мы ожидали увидеть через сотню лет, уже продается в соседнем магазине — именно эта мысль приходит в голову, когда в руках оказывается Muse от компании Interaxon.

Разработчики называют эту штуковину Brain Sensing Headband — что-то вроде «ободок для считывания сигналов мозга». В Рунете пока не определились с переводом названия — здесь можно найти и «повязку для чтения мыслей», и «гарнитуру для концентрации внимания», и «устройство для мысленного управления гаджетами»…
Читать дальше →
Всего голосов 34: ↑28 и ↓6+22
Комментарии16

Практический пример переиспользования кода, как повысить качество и ускорить разработку

Время на прочтение1 мин
Количество просмотров12K
Выкладываем доклад мобильного архитектора ТКС Банка Дмитрий Тарасова «Практический пример переиспользования кода. Как повысить качество и ускорить разработку» с конференции мобильных разработчиков #MBLTDev, которая прошла в конце октября.


Презентация

В разработке может сложиться ситуация, когда у вас есть несколько приложений с общей логикой и поведением интерфейса. Дмитрий Тарасов рассказывает о пути, по которому развивалась разработка мобильного банка и кошелька ТКС для Android. Откровенный рассказ о последствиях нетехнологичных решений в стиле copy-paste общего кода из приложения в приложение. Следующий шаг — общая библиотека. Как ее оформить? В виде jar? Оформив, как ее подтягивать в проекты? Grandle или subtree/submodule? Что делать с неравномерным развитием потребителей библиотеки? Решить этот вопрос выстраиванием правил ветвления? Как это вписать в стандартную связку bug tracker — code review — CI (в случае ТКС Jira + Stash + TeamCity)? Что будет, если к изначальным двум приложениям добавится еще два, причем у последнего будет другой backend? Смотрите видео выступления.
Читать дальше →
Всего голосов 22: ↑19 и ↓3+16
Комментарии0
1

Информация

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