Pull to refresh
-4
0
Артём @3263927

Инженер-программист

Send message

Мой опыт стажировки в Microsoft Redmond и получения офера

Reading time11 min
Views9.9K

перепечатка статьи "«Каждый год Microsoft получает 2 млн резюме». Разработчик из Минска — о 7-летнем пути в компанию (+Рекомендации и список книг)" с сайта dev.by.

Андрей Артемьев — Software Development Engineer в американском офисе Microsoft в Сиэтле, работает над операционной системой Windows. Его путь в компанию занял 7 лет, за плечами — пять подач резюме, одно проваленное интервью и летняя стажировка в Microsoft Redmond. Андрей делится своим опытом с читателями dev.by.

«Мой опыт говорит, что на большом интервале побеждает упорство, а не талант»


Попасть в Microsoft достаточно трудно, так как приём на работу неправильного человека может стоить компании дорого. Сюда входят не только затраты на релокейт, но и потенциальный ущерб компании от ошибок сотрудников, которые приводят к неприятным последствиям, будь то кража российскими хакерами письма кандидата в президенты Хиллари Клинтон, распространение вируса-вымогателя Petya, падение сервера базы данных о пациентах в японском госпитале или срыв контракта на $19 млн с производителем ноутбуков.

Microsoft ежегодно получает порядка 2 миллионов резюме, поэтому любое сомнение в кандидате влечёт отказ. Отказ во время финального собеседования означает, что следующая попытка будет только через 6 месяцев, но фактически — лишь через год. Мой опыт говорит, что на большом интервале побеждает упорство, а не талант.
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments20

Всё о ключевом слове auto в CSS

Reading time13 min
Views42K
В CSS есть ключевое слово auto, которое можно использовать при работе с различными свойствами элементов. Это — свойства, влияющие на позицию, высоту, ширину элементов. Это — свойства, предназначенные для настройки отступов элементов и других их характеристик. У меня появилось желание где-нибудь записать всё то, что я знаю об auto. Например — оформить это всё в виде материала, который мог бы стать справочником для тех, кто интересуется тонкостями использования этого ключевого слова.

Ключевое слово auto имеет особый смысл при использовании его с различными CSS-свойствами. Мы разберём особенности auto, касающиеся применения этого значения к различным свойствам.



Здесь, в первую очередь, нас будут интересовать технические детали работы auto. Поговорим мы и о том, как извлечь максимум пользы из применения этого свойства. Тут вы найдёте и заметки о сценариях использования auto, и примеры.
Читать дальше →
Total votes 46: ↑46 and ↓0+46
Comments5

Как перейти на gRPC, сохранив REST

Reading time8 min
Views91K

Многие знакомы с gRPC — открытым RPC-фреймворком от Google, который поддерживает 10 языков и активно используется внутри Google, Netflix, Kubernetes, Docker и многими другими. Если вы пишете микросервисы, gRPC предоставляет массу преимуществ перед традиционным подходом REST+JSON, но на существующих проектах часто переход не так просто осуществить из-за наличия уже использующихся REST-клиентов, которые невозможно обновить за раз. Нередко общаясь на тему gRPC можно услышать "да, мы у нас в компании тоже смотрим на gRPC, но всё никак не попробуем".


Что ж, этой проблеме есть хорошее решение под названием grpc-rest-gateway, которое занимается именно этим — автогенерацией REST-gRPC прокси с поддержкой всех основных преимуществ gRPC плюс поддержка Swagger. В этой статье я покажу на примере как это выглядит и работает, и, надеюсь, это поможет и вам перейти на gRPC, не теряя существующие REST-клиенты.


Читать дальше →
Total votes 12: ↑10 and ↓2+8
Comments16

CSS Grid: Верстаем адаптивный журнальный макет в 20 строк

Reading time12 min
Views60K

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

Самая простая часть задачи — получение списка постов и их эксцерптов (эксцерпт — вступительный текст до ката) с наших любимых RSS–фидов. Для этого мы воспользовались WordPress-плагином Feedzy lite, который умеет агрегировать несколько фидов в один список, отсортированный по времени — идеальное решение в нашем случае. Трудная же часть в том, чтобы сделать всё красиво.
Читать дальше →
Total votes 29: ↑28 and ↓1+47
Comments10

CSS: полное руководство по функции calc()

Reading time11 min
Views97K
В CSS есть особая функция calc(), применяемая для выполнения простых вычислений. Вот пример её использования:

.main-content {
  /* Вычесть 80px из 100vh */
  height: calc(100vh - 80px);
}

Здесь с CSS-кодом, в котором используется calc(), можно поэкспериментировать.



Автор статьи, перевод которой мы сегодня публикуем, хочет рассказать обо всём, что стоит знать об этой весьма полезной функции.
Читать дальше →
Total votes 25: ↑24 and ↓1+39
Comments9

Мониторинг в ЦОДе: как мы меняли старую BMS на новую. Часть 1

Reading time6 min
Views8K


Что такое BMS


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

Системы мониторинга BMS (Building Monitoring System) предлагают многие глобальные вендоры оборудования для ЦОДов. За время работы Linxdatacenter в России нам довелось познакомиться с разными системами и столкнуться с диаметрально противоположными подходами вендоров к эксплуатации этих систем. 

Рассказываем, как мы полностью обновили нашу систему BMS за последний год и почему.  
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments5

Монады как паттерн переиспользования кода

Reading time24 min
Views70K


В предыдущей статье мы обсуждали, почему функциональное программирование это совсем не то, что распиарено, и что оно совершенно не противоречит ООП, так, что даже сам "Дядя Боб" пишет про хороший ФП дизайн порождающий хороший ООП дизайн программы (и наоборот).


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


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


Дело в том, что все их (по крайней мере те что я читал) можно поделить условно на две категории: с одной стороны это статьи где вам объяснят что монада это моноид в категории эндофункторов, и что если монада T над неким топосом имеет правый сопряжённый, то категория T-алгебр над этой монадой — топос. На другой стороне располагаются статьи, где вам рассказывают, что монады — это коробки, в которых живут собачки, кошечки, и вот они из одних коробок перепрыгивают в другие, размножаются, исчезают… В итоге за горой аналогий понять что-то содержательное решительно невозможно.


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


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

Читать дальше →
Total votes 89: ↑85 and ↓4+100
Comments256

Решение нескольких задач от Microsoft на примере JavaScript

Reading time4 min
Views14K


Доброго времени суток, друзья!

Представляю вашему вниманию три задания по JS, предложенные участникам Microsoft’s Online Assessment 2019.

Microsoft’s Online Assessment — предварительный отбор кандидатов в разработчики. Тех, кто прошел предварительный отбор, приглашают на онлайн собеседование. Нашел в сети информацию, что на решение задач отводился ровно один час, но это не точно.

Предлагаю вам ознакомиться с вопросами и попробовать решить их самостоятельно. Развернутые комментарии приветствуются.

За решения огромное спасибо Matt Clark.

Итак, поехали.
Читать дальше →
Total votes 15: ↑12 and ↓3+15
Comments18

Создание карандашного эффекта в SVG

Reading time7 min
Views11K
Моя игра Dragons Abound создаёт карты в векторном графическом формате SVG. Векторная графика имеет множество особенностей (например, зум без потерь), что удобно для карт. Также векторная графика хороша для создания чётких линий, например, чернильных контуров:


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


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

Это достаточно серьёзное ограничение векторной графики, поэтому в SVG добавлены хитрости, позволяющие более эффективно воспроизводить некоторые из подобных эффектов текстур. Я исследую некоторые из этих функций SVG для создания эффекта, напоминающего карандашную линию. Разумеется, существует множество более сложных решений для воссоздания карандашных линий. Об этой теме написаны целые научные статьи. Но я просто надеюсь создать довольно простой фильтр, обеспечивающий приемлемый результат.
Читать дальше →
Total votes 66: ↑66 and ↓0+66
Comments9

Задачник.NET

Reading time3 min
Views119K
Этот пост предназначается всем любителям платформы .NET и языка C#. Думаю, многие встречали на просторах сети разнообразные задачки на понимание тех или иных особенностей платформы или языка. Я большой любитель подобных задачек и головоломок. Они помогают глубже понять определённые области и повысить собственные программистские навыки. Однажды я решил сделать подборку подобных задачек, чтобы можно было показывать другим людям и обсуждать нюансы работы с .NET/C#. Когда задачек накопилось достаточное количество, появилась новая мысль — оформить мою подборку в виде книжки. Вашему вниманию предоставляется текущий вариант этого сочинения под названием «Задачник.NET».

Cover
Читать online
Скачать PDF-версию
Исходные коды на GitHub
Читать дальше →
Total votes 55: ↑51 and ↓4+47
Comments23

DuoCode: транслируем C# в JavaScript

Reading time10 min
Views25K
Есть такой язык программирования, который называется C#. И есть очень много разработчиков, которым он очень нравится. А ещё есть такой язык программирования, который называется JavaScript. Как-то так сложилось, что он нравится далеко не всем C#-разработчикам. А теперь представьте ситуацию: есть заядлый C#-разработчик. Он очень любит C#, все-все проекты на нём пишет. Но судьба распорядилась так, что ему понадобилось написать клиентское веб-приложение. Знаете, такое, чтобы пользователю не нужно было себе ничего скачивать и устанавливать, чтобы он мог просто открыть любой браузер в любой операционной системе на любом устройстве — а приложение уже там. И вот тут у нашего лирического героя возникла проблема: вроде бы JavaScript идеально подходит для этой задачи, но вот писать на нём отчего-то не очень хочется. К счастью, в современном мире существует много языков, которые транслируются в JavaScript (всякие TypeScript, CoffeScript и тысячи других). Но наш разработчик оказался очень упрямым: он упорно не хочет изменять своему любимому C# с «вражескими» технологиями.

К счастью для него, счастливое будущее уже практически наступило. Есть такой проект, который называется DuoCode. Он умеет транслировать C#-код в JavaScript. Пока он в состоянии beta, но у него уже весьма неплохо получается: поддерживаются нововведения C# 6.0, Generic-типы, Reflection, структуры и LINQ, а отлаживать итоговый JavaScript можно на исходном C#. Давайте посмотрим внимательнее, что же представляет из себя продукт.

Читать дальше →
Total votes 25: ↑21 and ↓4+17
Comments54

Красно-чёрные деревья на javascript

Reading time2 min
Views9.1K
image

Привет Хабр! Изучал недавно красно-черные деревья. Попробовал визуализировать детали работы алгоритмов вставки и удаления на d3.js. Надеюсь, полученный результат поможет сэкономить немного времени тем, кто изучает алгоритмы на javascript. Посмотреть можно тут. Исходник реализации, от которой отталкивался тут . Под катом краткие подробности.
Читать дальше →
Total votes 11: ↑5 and ↓6+3
Comments6

INVESTMENT-READY

Reading time52 min
Views6.2K
Или что следует иметь в виду, создавая стартап.

image

//при чем здесь котик? Что за странный вопрос ??


ПРЕДИСЛОВИЕ

Прочел несколько постов от людей, которые провалили стартапы и давали советы на тему чего не следует делать (сорри, хотел дать на них линки, но потерял).

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

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

Как известно, опыт это то, что Вы получаете взамен того, что намеревались получить.

Кучу полезных советов и руководств вы сами найдете в сети.
Здесь я расскажу о важных «мелочах», которые, на мой взгляд, недостаточно освещены.

Возможно, статья пригодится тем, кто намерен создать свой стартап.

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

Вообще же, Здравый Смысл – это мерило всего, с чем Вы сталкиваетесь.



Читать дальше →
Total votes 20: ↑18 and ↓2+22
Comments10

Имитационная модель процесса обработки материала резанием на токарном станке с ЧПУ

Reading time43 min
Views25K

Введение


Методология разработки имитационных моделей и симуляторов по различным техническим дисциплинам в основном ориентирована на снижение уровня абстракции учебного материала. Наряду с теоретическим учебным материалом наглядное имитационное моделирование того или иного технологического процесса или операции позволяет учащемуся в более полной мере освоить преподаваемый материал с максимальным приближением к естественным условиям. При этом имитационные модели и симуляторы могут рассматриваться только как вспомогательный инструмент учебного процесса. Основное назначение данной категории образовательных ресурсов – базовое (начальное) ознакомление с принципами работы сложных технических объектов в условиях отсутствия возможности использования реального промышленного оборудования, либо в целях предварительного повышения компетенции учащегося перед прохождением производственной практики.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments54

Советы по использованию алгоритма коллапса волновой функции

Reading time7 min
Views12K
image

В последнее время я много экспериментировал с процедурной генерацией на основе ограничений. В частности, с алгоритмом Wave Function Collapse (WFC, коллапс волновой функции). Я даже написал собственную open source-библиотеку и ассет unity.

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

В этой статье я расскажу, чему научился и что сможет поднять генераторы на основе ограничений на новый уровень.
Total votes 36: ↑36 and ↓0+36
Comments4

Российское приборостроение: вертели мы ваш дизайн на пальцах

Reading time21 min
Views97K



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


— Нужно делать как нужно, а как не нужно делать не нужно!
Фраза из интернетов

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

Читать дальше →
Total votes 92: ↑90 and ↓2+113
Comments277

Студенты пишут Uart драйвер для STM32F411

Reading time13 min
Views17K


Доброго здравия всем!


Сегодня я хочу вам рассказать, как постепенно студенты учатся разрабатывать ПО для микроконтроллера на примере драйвера UART на STM32F411. Код и архитектуру с небольшими моими изменениями и доработками я попытаюсь привести здесь.


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


Данная статья не претендует на истину, а лишь показывает подход к реализации некоторых задач, в данном случае реализацию Uart драйвера на С++.

Читать дальше →
Total votes 16: ↑12 and ↓4+14
Comments48

Наилегчайший старт в STM через «одно место»

Reading time5 min
Views23K
Уже, наверное, прошло время религиозных войн AVR против STM, но нет-нет да наблюдаются вспышки столкновений двух лагерей. Практически у любой публикации на тему поделок на AVR обязательно будет каммент вроде «Да сколько уже можно лохматить бабушку, давно пора перейти на STM», дальше вариации на тему цены, количества ног и таймеров. Если STMщик более продвинут, обязательно будет указание, что DMA в AVR нет и не будет, по этому AVR должна умереть. Зачем простому блинку-вольтметру-градуснику DMA, гора 16 разрядных таймеров, 100 ног и 12 битный АЦП никто как правило не объясняет. Зачем нужен такой комбайн в устройстве, которое легко вывозит Tiny13, которая при этом не загружена даже на треть своих ресурсов никто не будет разбираться. Просто надо переходить на STM32, и баста. Ибо вот.

И надо сказать, есть у людей тяга к новизне. А действительно, может попробовать? А вдруг понравится? Вот только Референс Мануал на популярный STM32F103C8T6, на котором основана самая массовая Голубая таблетка в 1126 страниц что-то как-то не очень располагает к «быстрому старту». Даже отдельную утилиту, так ненавидимый аксакалами «калокуб», и ту надо изучать, что там к чему. Да и вникнув в Cube, стартовать за 5 минут вряд ли получится, генерируемая им портянка не самое доступное чтиво на ночь, просто «в лоб» врубиться, о чём там речь получится не у каждого.
Читать дальше →
Total votes 25: ↑24 and ↓1+30
Comments61

Как в ЦРУ десятилетиями читали зашифрованную переписку союзников и противников

Reading time33 min
Views78K

Более полувека правительства всех стран доверяли единственной компании сокрытие переписки, которую вели их шпионы, солдаты и дипломаты




Эта компания, Crypto AG, первого своего успеха добилась, заключив во время Второй Мировой войны контракт на создание кодирующих машин для пехоты армии США. Как следует заработав на этом, она на десятилетия стала доминирующим производителем шифровального оборудования, и шла на переднем крае технологий, переходя от механических шестерней к электронным схемам, и, наконец, к кремниевым чипам и программному обеспечению.

Эта швейцарская фирма заработала миллионы долларов, продавая оборудование в более чем 120 стран, не только в XX, но и в XXI веке. Среди её клиентов были правительство Ирана, военные хунты Латинской Америки, обладатели ядерного оружия и соперники Индия и Пакистан, и даже Ватикан.

Однако все эти клиенты не подозревали, что ЦРУ в рамках совершенно секретного партнёрства с западногерманской разведкой тайно владела Crypto. Эти разведывательные агентства подправляли устройства компании так, что легко могли взламывать коды, используемые странами для обмена зашифрованными сообщениями.

И теперь этот договор, длившийся несколько десятилетий, вместе с другими тщательно охраняемыми секретами Холодной войны, принадлежавшими обширной истории операций ЦРУ, был раскрыт благодаря материалам, полученным газетой The Washington Post и немецким СМИ ZDF.
Total votes 91: ↑88 and ↓3+110
Comments222

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity