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

LLVM оптимизирует суммы степеней, например:

int sum(int count)
{
  int result = 0;

  for (int j = 0; j < count; ++j)
    result += j*j;

  return result;
}

генерируя код, вычисляющий результат без цикла (godbolt):

sum(int):
        test    edi, edi
        jle     .LBB0_1
        lea     eax, [rdi - 1]
        lea     ecx, [rdi - 2]
        imul    rcx, rax
        lea     eax, [rdi - 3]
        imul    rax, rcx
        shr     rax
        imul    eax, eax, 1431655766
        add     eax, edi
        shr     rcx
        lea     ecx, [rcx + 2*rcx]
        lea     eax, [rax + rcx]
        add     eax, -1
        ret
.LBB0_1:
        xor     eax, eax
        ret

Также обрабатываются более сложные случаи (godbolt) – то есть оптимизация здесь не просто сравнивает паттерны. В этом посте мы рассмотрим, как выполняется эта оптимизация.
Читать полностью »

На днях мне пришло сообщение от портала Госуслуги с предложением поучаствовать в тестировании дистанционного электронного голосования (ДЭГ). Стало интересно, начал гуглить и поисковик сразу же выдал ссылку на хабровскую статью «Обзор системы дистанционного электронного голосования ЦИК РФ». Ознакомился…и…после прочтения, испытал противоречивые чувства, которые вылились в эту статью, созданную на базе идеи, описанной мной еще в 2018 году на сайте change.org.

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

Тихая революция и новый дикий запад в ComputerVision - 1

Казалось бы, революция с Computer Vision уже была. В 2012 году выстрелили алгоритмы основанные на сверточных нейронных сетях. Года с 2014 они дошли до продакшна, а года с 2016 заполонили всеЧитать полностью »

Продолжение. К предыдущим постам и карте цикла.

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

Какие бы вы предложили принципы для современной разработки программного обеспечения?

На прошлом виртуальном митапе Extreme Tuesday Club мы обсуждали, не устарели ли SOLID принципы. Не так давно я толкнул шутливую речь на эту тему, так что один из организаторов митапа спросил у меня - раз я несогласен с SOLID, чем бы я его заменил. Так получилось, что я уже думал об этом какое-то время, так что я решил предложить пять своих принципов, из которых получился акроним CUPID.

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

В общем, задумал я однажды придумать свою автоматическую коробку передач. Так чтобы не хуже других получилась. Не хуже - это чтобы были настраиваемые (желательно программно) передачи, обязательно наличие заднего хода, сама конструкция, в плане механики, была бы как можно проще, и при этом отсутствовали внутренние пробуксовки (как в вариаторе и гидротрансформаторе традиционной АКПП). Область применения: в качестве коробки передач в легковых авто, в качестве редукторов в промышленном оборудовании. НахренаЧитать полностью »

Архитектура архитектуры архитектора - 1

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

Многие сталкивались с нерелятивистскими искажениями времени разработки крупных проектов. Кажется, что выполнение задачи должно занять один-два дня, а на самом деле требуется две-три недели. Это вызывает вопросы, однако существует красивая метафора для иллюстрации происходящего. Разумеется, как любая метафора, она упрощает ситуацию, поэтому на самом деле ничего не объясняет, но всё же демонстрирует некоторые любопытные механики.

Почему чтобы переместить кнопку, нужно две недели - 1

Допустим, мы строим пирамиду из кирпичиков Lego размером 2x2 блока. Сколько потребуется времени на создание MVP (minimum viable product) пирамиды? Столько, сколько требуется для установки одного кирпичика! Допустим, это 1 секунда. То есть мы создали MVP пирамиды за 1 с. Сколько потребуется времени на реализацию v1? Нам нужно установить ещё три детали на уровне 0 и одну на уровне 1. Ещё 4 детали, то есть ещё 4 секунды. А для версии v2? Ещё пять деталей на уровне 0, три детали на уровне 1 и одна на уровне 2 — суммарно девять деталей и ещё девять секунд.
Читать полностью »

В этой статье я хотел бы проанализировать основные проблемы молодежной науки в России. Я выделил следующие:

  • слабая связность системы высшего образования при низком уровне гибкости

  • отсутствие науки как таковой в провинциальных ВУЗах

  • плохое техническое оснащение

  • проблемное и недостаточное финансирование

  • преобладание государственного финансирования

  • избыток “научных сотрудников”, ригидность мышления профессоров и низкое качество публикаций

  • слабая обратная связь

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

Однажды, в качестве тестового задания на позицию PHP разработчика была предложена задача реализации сервиса проверки номеров паспортов граждан РФ на предмет нахождения в списке недействительных. Текст задания был лаконичным: «Пользовательская база 10 миллионов, время ответа 1 миллисекунда, аптайм 99%».

Входные данные

Для начала посмотрим, в каком виде представлены записи в списке недействительных паспортов. На сайте МВД РФ можно скачать bzip2-архив размером около 460 МБ, внутри которого CSV-файл с двумя колонками PASSP_SERIES,PASSP_NUMBERЧитать полностью »


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