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

Взлом на борту самолёта - 1

На протяжении 5 лет, которые я работаю в IOActive, мне довелось побывать во многих интересных местах за тысячи километров от дома. Поэтому полёт для меня стал обычным явлением. Можно подумать, что в этом нет ничего особенного, но не для меня, как человеку который боится летать. Не сказать, что мне удалось избавиться от этой фобии; после дюжины полётов ладони всё ещё потеют при взлёте, но я с этим смирился, даже, можно сказать, мне иногда нравится летать… и взламывать системы прямо с борта.
Читать полностью »

В данной статье будет описан только общий алгоритм на примере Facebook. Однако такой же подход можно использовать повсюду.

Задача

На основе существующего контента (за последние 30 дней) на данной странице Facebook определить какие записи потенциально будут более популярными.
Читать полностью »

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

О карте Мегафона — технические подробности - 1

Учитывая масштаб проекта, описать все тонкости в рамках одного поста не получится, поэтому начнем мы с рассказа о бэкенде системы ДБО (дистанционного банковского обслуживания). Задача бэкенда — обеспечить рабочую связку всех специализированных систем в рамках единой логики, а также функционирование множества фоновых процессов. А самое главное — удобный и функциональный личный кабинет для пользователей.
Читать полностью »

image

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

В этой части статьи собираюсь подробней описать, чем же adaptive BPM (aBPM) отличаются от normative BPM (nBPM) и от Adaptive Case Management (ACM), затем представить архитектуру получившейся aBPM системы.

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

Это перевод обзора статьи «MemC3: Compact and Concurrent MemCache with Dumber Caching and Smarter Hashing» Fan et al. в Proceedings of the 10th USENIX Symposium on Networked Systems Design and Implementation (NSDI’13), pdf тут

Чуваки (бывший гугловец, чувак из университета Карнеги Меллон и еще один из Интел лабс) сделали улучшенный Memcached-совместимый кеш (по факту просто допилили мемкеш), и у них классные результаты производительности. Мне очень понравился обзор этой статьи в блоге "The morning paper" — описание алгоритмов и прочее.

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

Add-on к Авито. Стартап или пример архитектуры - 1

Предыстория

Честно говоря, никогда ранее не покупал б/у вещи на досках объявлений. Но когда случился очередной экономический кризис и нужда заставила, пришлось обратить свое внимание на Авито.

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

Работая в компании, которая занимается системной интеграцией, мне приходилось много раз читать и дополнять документы типа ТКП, ТЗ по ГОСТу, Планы приемки и прочее. Проекты по автоматизации предприятий преследовали похожие цели и имели приблизительно одинаковый формат. Одни и те же фразы повторялись из документа в документ.

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

Список не универсальный. Буду рада, если кому-то это поможет при написании документов.

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

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

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

Использование паттерна SchedulableObject для выделения бизнес-логики в отдельный поток - 1

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

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

Паттерн SchedulableObject позволяет аккуратно реализовать третий сценарий. Под катом рассматриваются его части с примерами реализации на Swift, а также преимущества и недостатки по сравнению с первыми двумя подходами.
Читать полностью »

Функциональные языки в разработке аппаратуры - 1Функциональные языки, как правило, не слишком подходят для низкоуровнеого программирования, хотя и применяются для кодогенерации.

примеры проектов

генерация безопасного кода на C (используется в лаборатории Касперского) Ivory, поддержка реактивного программирования на Arduino, и так далее Atom, Ion

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

Асинхронная обработка запросов в СУБД в памяти, или как справиться с миллионом транзакций в секунду на одном ядре - 1

Привет! В двух моих последних статьях я говорил о том, как СУБД в оперативной памяти обеспечивают сохранность данных. Найти их можно здесь и здесь.

В этой статье я хотел бы затронуть проблему производительности СУБД в оперативной памяти. Давайте начнем обсуждение производительности с простейшего случая использования, когда просто изменяется значение по заданному ключу. Для еще большей простоты предположим, что серверная часть отсутствует, т.е. не происходит никакого клиент-серверного взаимодействия по сети (дальше будет понятно, зачем мы это сделали). Итак, СУБД (если ее можно так назвать) находится полностью в оперативной памяти вашего приложения.
Читать полностью »


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