Рубрика «Анализ и проектирование систем» - 78

Скриптуем на WebAssembly, или WebAssembly без Web - 1

Представлять WebAssembly не нужно — поддержка уже есть в современных браузерах. Но технология годится не только для них.

WebAssembly — кроссплатформенный байткод. Значит, этот байткод можно запустить на любой платформе, где есть его виртуальная машина. И для этого вовсе не нужен браузер и Javascript-движок.

Далее — проверка концепции на прочность, инструментарий и первый скриптовый модуль.

Читать полностью »

Торговля под присмотром: пример системы бизнес-мониторинга - 1

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

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

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

Один из моих читателей спросил меня:

Вернон, в своей книге «Implementing DDD» много говорит об архитектуре Порты и Адаптеры, как о более продвинутом уровне Слоистой Архитектуры. Хотелось бы услышать ваше мнение на этот счёт.

Если не вдаваться в детали, то в своей книге я описываю именно этот архитектурный паттерн, хотя никогда не называю его этим именем.

TL;DR Если применить принцип инверсии зависимостей к слоистой архитектуре, то в конечном счете получим Порты и Адаптеры.
Читать полностью »

React — это один из ведущих фронтенд-фреймворков не только потому, что за ним стоит Facebook, но и благодаря его высокой производительности. Виртуальный DOM React известен благодаря эффективному рендерингу компонентов. Но как быть, если эти компоненты внезапно становятся не такими уж и быстрыми? Куда стоит посмотреть? Как это исправить?

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

Анализ производительности React 16 приложений с помощью инструментов разработчика Chrome - 1
Читать полностью »

Подарки от М.Видео: что под капотом? - 1

Вместо введения

Эта история началась в декабре далекого 2007 года. Я был аспирантом МГТУ им. Н.Э. Баумана, и устроился на работу в маленькую компанию, где только что запустили проект под непонятным мне тогда названием — «Процессинг подарочных карт М.Видео». Как мне объяснили на кратком инструктаже в первый рабочий день, процессинг — это такая система, в которой хранятся данные о подарочных картах, и с ними можно осуществлять разные операции. Ещё мне сказали, что почти никаких наработок нет, но создать такую систему совершенно несложно. В связи с этим выход в продуктив был предварительно запланирован через пару месяцев. «Понятно», ответил я, и с головой погрузился в творческий процесс, из которого не вынырнул до сих пор.

Эта статья о том, насколько важно принимать правильные решения в отношении технологий и архитектуры будущего продукта. О том, как их нужно принимать. И о том, что бывает, когда принятые решения оказываются ошибочными. Если бы в декабре 2007-го я имел за плечами опыт, который имею сейчас, процессинг подарочных карт М.Видео развивался бы гладко и размеренно. Не было бы множества бессонных ночей и цейтнотов без выходных, с завтраками, обедами и ужинами перед монитором. Но, в то же время, не было бы такого яростного драйва при работе над продуктом.
Читать полностью »

Как мы расписание общественного транспорта в 2ГИС добавляли - 1

2ГИС помогает ориентироваться в городе. Открываешь приложение, вводишь в поиск название улицы или организации, находишь, радуешься. После того, как нужная организация найдена, возникает резонный вопрос: как же туда добраться? И если автомобильным сценариям мы в последнее время уделяли значительное внимание, то поиск проезда на общественном транспорте оказался немного подзабыт. Я расскажу про то, как создавался поиск проезда, поделюсь тонкостями сбора и обработки информации.
Читать полностью »

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

19 октября 2017 года команда Deepmind опубликовала в Nature статью, краткая суть которой сводится к тому, что их новая модель AlphaGo Zero не только разгромно обыгрывает прошлые версии сети, но ещё и не требует никакого человеческого участия в процессе тренировки. Естественно, это заявление произвело в AI-коммьюнити эффект разорвавшейся бомбы, и всем тут же стало интересно, за счёт чего удалось добиться такого успеха.

По мотивам материалов, находящихся в открытом доступе, Семён sim0nsays записал отличный стрим:

А для тех, кому проще два раза прочитать, чем один раз увидеть, я сейчас попробую объяснить всё это буквами.

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

Ну, поехали.
Читать полностью »

Введение

На очередном собеседовании меня спросили о недостатках модели данных EAV (Entity Attribute Value), я не нашёл что сказать, на мой взгляд это идеальный способ хранения произвольных данных. После короткого раздумья, я сказал что единственная проблема это невозможность построить индексы для выборок.
После собеседования я озадачился этим вопросом на несколько дней, пришёл к каким то выводам, для очистки совести чуть чуть погуглил. Нагуглил подтверждения своим мыслям, но этого мне было мало — захотелось реализации с подтверждением цифрами.
Если и вам интересно к каким выводам я пришёл и какой выигрыш от оптимизации можно получить, то добро пожаловать под кат.
Читать полностью »

DevDay про микросервисы. Запись лучших докладов - 1

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

Мы здесь в Spotify серьёзно относимся к фидбеку от пользователей. Какое-то время назад мы заметили, что пользователи жалуются на то, что при включенном режиме случайного перемешивания плейлиста порядок песен на самом деле не случаен — например, несколько песен одного и того же исполнителя могут быть воспроизведены одна за другой, при том, что в плейлисте множество песен разных исполнителей. Пользователи спрашивали неужели мы не способны сделать такую простую вещь, как случайный порядок воспроизведения треков? Мы отвечали «Он правда-правда случаен! Мы проверяли!»

Так кто же был прав — мы или пользователи? Как оказалось — и мы, и они. Ну и вообще дело обстояло значительно серьёзнее, чем казалось на первый взгляд.

Наш точка зрения

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

image
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js