Как стать автором
Обновить
1
0
Денис Давыдов @DiveSlip

Архитектор ПО

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

Матрица уровней дата инженеров Amazon

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

Матрица показывает, как меняются профессиональные навыки специалистов от уровня к уровню. Сюда не включены Принципы Лидерства Amazon (https://www.amazon.jobs/en/principles), поскольку они едины для всех и не зависят от уровня сотрудника.

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

С чем работают дата инженеры?

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

Bash Auto Completion в Linux

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

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

Однако в Linux предусмотрена удобная функция автодополнения для Bash. Этот инструмент, с которым знакомятся на начальных этапах изучения Linux, значительно ускоряет и упрощает процесс ввода команд. Он автоматически дополняет имена файлов, каталогов или опции команд, когда вы вводите их в командной строке.

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

Читать далее
Всего голосов 33: ↑31 и ↓2+29
Комментарии6

Работа с процессами в Linux

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

Управление процессами является неотъемлемой частью администрирования серверных систем под управлением ОС Linux. В этой практической статье мы рассмотрим примеры решения различных задач по управлению процессами.

Вообще, процесс, как и файл является фундаментальной абстракцией ОС Linux. То есть, без процессов невозможно функционирование данной (как, впрочем, и любой другой) операционной системы.     

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

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

Как сделана Atari 2600: извлечь нечто (почти) из ничего

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


Atari Combat, 1977


Atari 2600 не была первой домашней игровой видеоприставкой со сменой игр, однако она первой получила громкий успех. Представленная в 1977 году как Atari VCS (Video Computer System), а в 1982 году переименованная в Atari 2600, она была продана в количестве более 30 миллионов экземпляров и создала новый рынок, который до сих пор удерживают PlayStation и Xbox. До появления 2600-й большинство видеоприставок были либо монетоприёмниками, например в барах, либо устройствами с фиксированными функциями, ограниченными несколькими встроенными играми, такими как Pong. Первая домашняя система Atari стала началом новой эры.

Читать дальше →
Всего голосов 26: ↑25 и ↓1+24
Комментарии30

Глубокое погружение в Java Memory Model

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


Я провел в изучении JMM много часов и теперь делюсь с вами знаниями в простой и понятной форме.


В этой статье мы подробно разберем Java Memory Model (JMM) и применим полученные знания на практике. Да, в интернете накопилось достаточно много информации про JMM/happens-before, и, кажется, что очередную статью про такую заезженную тему можно пропускать мимо. Однако я постараюсь дать вам намного большее и глубокое понимание JMM, чем большинство информации в интернете. После прочтения этой статьи вы будете уверенно рассуждать о таких вещах как memory ordering, data race и happens-before. JMM — сложная тема и не стоит верить мне на слово, поэтому большинство моих утверждений подтверждается цитатами из спеки, дизассемблером и jcstress тестами.

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

Блеск и нищета модели предметной области

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


Мартин Фаулер в книге «Patterns of Enterprise Application Architecture» описывает «Модель предметной области (Domain Model)» как сложный подход к организации бизнес-логики. Метод заключается в создании классов, соответствующих объектам предметной области из реального мира как с точки зрения структуры данных, так и поведения. При этом технические аспекты, такие как хранение данных, аутентификация и авторизация, управление транзакциями, выносится за пределы слоя бизнес-логики. Паттерн реализуется одним из двух способов:

  1. Богатая (насыщенная) модель — данные и поведение инкапсулируются внутри объектов предметной области.
  2. Анемичная модель — в объектах предметной области инкапсулируются только данные, поведение (методы) выносится в отдельный слой сервисов.

Фаулер и Эванс считают анемичную модель анти-паттерном. Однако многие кодовые базы, с которыми мне доводилось работать, реализованы именно в стиле «анемичной» модели. Под катом расшифровка и видео моего доклада с DotNext 2019 Moscow, посвященного сравнению сильных и слабых сторон обоих подходов и не очевидным деталям реализации модели предметной области в парадигме ООП и в функциональном стиле.
Читать дальше →
Всего голосов 49: ↑47 и ↓2+45
Комментарии46

JPoint 2022: что было, что будет и какие доклады уже открыты для всех

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

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

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

— Порадовать Хабр этими Java-докладами без регистрации и смс 
— Написать, что ещё было в онлайновой части
— И рассказать, что будет в офлайне

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

Видео докладов потока Agile. Конференция BeeTech 2.0

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

Я завершу серию публикаций с видео и презентациями после конференции BeeTech 2.0 выступлениями и презентациями спикеров Agile-стрима. Поток Engineering тут, Management тут, BigData тут

Сразу подготовила общую ссылку на плейлист с видео Agile-стрима, в дополнение — даем презентации спикеров в статье. Если хотите выступить на конференции в следующем году, напишите об этом в комментариях или мне в личные сообщения на Хабре. 

Узнать всё про Agile-стрим
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

Как я разрабатывал плагин для Pidgin 2

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

Будучи поклонником многопротокольных IM-клиентов, я довольно долго пользовался Miranda NG. Но кривоватая поддержка некоторых современных протоколов вроде Discord мешала пользоваться только ей, хотя возможности кастомизации у неё очень широкие. В конце-концов практичность взяла верх над перфекционизмом, и я установил Pidgin 2.14. Несмотря на некоторую страшноватость, программа оказалось весьма практичной. Однако была и ложка дёгтя.

Как выяснилось, трёхуровневая иерархия Discord (сервер - категория - канал) скверно ложится на двухуровневую иерархию списка контактов (группа - контакт), и соответствующил плагин решил эту коллизию просто - каждая категория была группой, чьё имя содержало префикс сервера. Разумеется, это привело к тому, что даже при моём скромном круге общения в контакт-листе образовалось 30+ групп - помимо групп из других протоколов. Ориентироваться в этом было не слишком удобно - хотелось иметь возможность устроить какую-то иерархию, например, сделать над-группы.

Однако быстрый поиск вывел на старый баг-трекер Pidgin, где такая возможность была упомянута... и отмечена как wont-fix. Упс. Ну что ж, где наша не пропадала - сделаю имитацию сам!

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

Пожалуйста, начните использовать pnpm

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

Я думаю, все, кто использует node.js, понимает про что эта картинка.

npm - это ужасный менеджер пакетов. В этом признавался даже сам создатель node.js. Npm для каждого вашего проекта создает папку node_modules, в которую он качает из интернета и сохраняет на диске каждый пакет из всей иерархии зависимостей.

Если у вас 100 проектов с одними и теми же зависимостями, то npm 100 раз скачает из интернета и сохранит на диске 100 копий одних и тех же пакетов. Ему плевать. Популярный yarn, к сожалению, делает то же самое.

Читать далее
Всего голосов 104: ↑96 и ↓8+88
Комментарии120

Задачи с чемпионата мира по программированию ICPC 2021

Время на прочтение3 мин
Количество просмотров19K
В 2021 году финал чемпионата мира по программированию среди университетских команд ICPC (International Collegiate Programming Contest) прошел в Москве в начале октября.

Участникам нужно было решить 15 задач на трёх компьютерах (раньше было меньше задач и 1 компьютер).

image Золото
1) ННГУ (Нижний Новгород)
2) Seoul National University (Корея)
3) ИТМО (Санкт-Петербург)
4) МФТИ (Москва)

Серебро
5) University of Wroclaw (Польша)
6) University of Cambridge (США)
7) Беларусский государственный университет (Минск)
8) University of Bucharest (Румыния)

Бронза
9) Massachusetts Institute of Technology (США)
10) ХНУРЭ (Харьков)
11) University of Illinois at Urbana-Champaign (США)
12) НИУ ВШЭ (Москва)

13) СПбГУ (Санкт-Петербург)
14) University of Warsaw (Польша)
15) Utrecht-Leiden University (Нидерланды)
16) Harvard University (США)
17) University of Central Florida (США)
18) National Taiwan University (Тайвань)
19) Питерский филиал ВШЭ (Санкт-Петербург)
20) МГУ (Москва)
Читать дальше →
Всего голосов 31: ↑30 и ↓1+29
Комментарии4

Архитектура PlayStation 3, часть 1: Cell

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

В 2006 году Sony выпустила долгожданную игровую консоль "следующего поколения". Это блестящая (хоть и тяжелая) машина, чья базовая аппаратная архитектура развивает идеи Emotion Engine из PS2, то есть фокусируется на векторных вычислениях для достижения высокой производительности, даже ценой сложности.

В то же время, их новый "суперпроцессор", Cell Broadband Engine, был разработан в эпоху кризиса инноваций. Он должен будет идти в ногу с развитием тенденций в области мультимедиа.

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

Введение в Облачные Вычисления для Всех от Инженера Microsoft, Ex-Amazon

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

Многие из вас слышали про мировой успех облачных компаний и таких компаний как Amazon Web Services, Microsoft Azure и Google Cloud Platform. Сейчас мы видим, как отечественное облако активно развивается – Яндекс Облака, Mail.ru облако и Сбербанк тоже работает в этом направлении.

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

Сам я занимаюсь задачами аналитики и инжиниринга данных, то есть работаю с buzz words – Big Data, Data Platform, Lakehouse, Data Lake, Data Science, Machine Learning (ML), AI и т. п., в крупных международных компаниях – Amazon, Microsoft, Xbox.  Про все эти дела я уже 3 года успешно пишу в своем телеграмм канале Инжиниринг Данных, где уже больше 10 тысяч подписчиков.

Я работаю с облаками с 2014 года, с 2016 по 2020 в Амазоне (почти 5 лет), где принимал участие в знаменитом проекте Rolling Stone по миграции on-premise инфраструктуры для аналитики в облако AWS.

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

Вычисляем на видеокартах. Технология OpenCL. Часть 1a. Как работает OpenCL

Время на прочтение7 мин
Количество просмотров13K
22 июня автор курса «Разработчик C++» в Яндекс.Практикуме Георгий Осипов провёл вебинар «Вычисляем на видеокартах. Технология OpenCL».



Мы подготовили для вас его текстовую версию, для удобства разбив её на смысловые блоки.

0. Зачем мы здесь собрались. Краткая история GPGPU.
1a. Как работает OpenCL.
1b. Пишем для OpenCL.
2. Алгоритмы в условиях массового параллелизма.
3. Сравнение технологий.

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

Есть мнение, что для написания эффективного кода для GPU программист обязан понимать архитектуру видеокарты. И это мнение не чьё-нибудь там, а NVIDIA (см. Лекции NVIDIA по GPGPU). Не будем спорить и разберём базовые принципы работы видеокарты.
Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии9

KODI: собираем удобный и функциональный медиацентр для дома. Часть 9. Spotify

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

Продолжаем тему интеграции в наш медиацентр онлайн-сервисов прослушивания музыки. Ранее мы уже «подружили» медиацентр KODI с сервисом Яндекс.Музыка. Сегодня на очереди не менее популярный сервис – Spotify.

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

BeeTech 2021: обзор докладов big-data, искусcтвенный интеллект, IT-архитектура, QA, Back-End

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

Вчера я выложила первую часть видео с конференции BeeTech, которую мы проводили в апреле. Сегодня — доклады двух оставшихся стримов.

Здесь от построения QA-отдела с нуля и изменении IT-архитектуры до DIY-решений в системной интеграции и разработки прототипа военного робота при помощи компьютерного зрения.

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

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

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

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

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

Читать далее
Всего голосов 30: ↑27 и ↓3+24
Комментарии3

Немного о том, как работает виртуальный DOM в React

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

image


Настоящий или реальный (real) DOM


DOM расшифровывается как Document Object Model (объектная модель документа). Проще говоря, DOM — это представление пользовательского интерфейса (user interface, UI) в приложении. При каждом изменении UI, DOM также обновляется для отображения этих изменений. Частые манипуляции с DOM негативно влияют на производительность.


Что делает манипуляции с DOM медленными?


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


Манипуляции с DOM являются сердцем современного интерактивного веба. К сожалению, они намного медленнее большинства JavaScript-операций. Ситуация усугубляется тем, что многие JavaScript-фреймворки обновляют DOM чаще, чем необходимо.


Допустим, у нас имеется список из 10 элементов. Мы изменяем первый элемент. Большинство фреймворков перестроят весь список. Это в 10 раз больше работы, чем требуется! Только 1 элемент изменился, остальные 9 остались прежними.


Перестроение списка — это легкая задача для браузера, но современные веб-сайты могут осуществлять огромное количество манипуляций с DOM. Поэтому неэффективное обновление часто становится серьезной проблемой. Для решения данной проблемы команда React популяризовала нечто под названием виртуальный (virtual) DOM (VDOM).

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

Линейная алгебра для Data Science и Machine Learning

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

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

Специально к новому старту курса математика и Machine Learning для Data Science делимся переводом статьи Бенджамина Оби Тайо — физика, кандидата наук и преподавателя Data Science — о том, что нужно знать, чтобы лучше понимать Data Science и Machine Learning.

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

«Новый физтех»: дайджест наших исследований

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

Представляем новую [первая] подборку избранных публикаций о научных работах и достижениях представителей Нового физтеха ИТМО. Обсуждаем, что к чему, и делимся информацией о проектах, которыми занимаются наши специалисты и научные сотрудники.

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

Информация

В рейтинге
Не участвует
Откуда
Genf, Genève, Швейцария
Дата рождения
Зарегистрирован
Активность