• Internal DSL & Expression Trees — динамическое создание функций serialize, copy, clone, equals (Часть I)


      Статья посвящена двойному применению API Expression Trees — для разбора выражений и для генерации кода. Разбор выражений помогает построить структуры представления (они же структуры представления проблемно-ориентированного языка Internal DSL), а кодогенерация позволяет динамически создавать эффективные функции — наборы инструкций задаваемые структурами представления.


      Демонстрировать буду динамическое создание итераторов свойств: serialize, copy, clone, equals. На примере serialize покажу как можно оптимизировать сериализацию (по сравнению с потоковыми сериализаторами) в классической ситуации, когда "предварительное" знание используется для улучшения производительности. Идея в том, что вызов потокового сериалайзера всегда проиграет "непотоковой" функции точно знающей какие узлы дерева надо обойти, при этом выписанной "не руками" а динамически, по заданным правилам. Inernal DSL и решает задачу компактного задания правила обхода дерева свойств (в общем случае: вычислений c проименованием узлов) . Бенчмарк сериализатора скромный, но он важен тем, что добавляет подходу, построенному вокруг применения конкретного Internal DSL Includes (диалект того Include/ThenInclude что из EF Core) и применению Internal DSL в целом, необходимой убедительности.

      Читать дальше →
    • Телекоммуникации стадиона «Екатеринбург Арена»: 20 километров толстенного кабеля



        Для того чтобы показать футбол в прямом эфире, нужно профессиональное оборудование. Увы, в телевизионной сфере оно по большей части аналоговое. Это значит, что связистов на каждом стадионе ждёт настоящий рай. При условии, конечно, что вы любите таскать тяжёлую каблу и гнуть толстый коаксиал.

        В случае Центрального стадиона в Екатеринбурге коаксиала было много. Очень много.

        По всему объекту стоят ТВ-боксы. Приходят телевизионщики, открывают бокс, а там оптические соединения и триаксиал — они втыкаются и передают свой контент на передвижную станцию. Передвижная станция — это машина с дуплексной спутниковой связью где-то за пределами чаши стадиона. Приезжает, на периметре раскрывается, оттуда выходят парни, например, с «Матч ТВ», подключаются к ТВ-боксу, и футбол летит по воздуху ко всем телевизорам страны. Есть аппаратная, которая может перенаправлять это в конференц-зал, пресс-центр. Жилы по всему стадиону, там просто бешеное количество кабельной массы.
        Читать дальше →
      • Зачем при наличии электропитания нужен старый добрый угольный котёл в вагоне



          Это преобразователь питания пассажирского вагона дальнего следования. В современном вагоне электричество нужно почти для всего, начиная от 5 Вольт в розетках USB, 220 В в розетках для пассажиров в каждом купе и на микроволновке у проводника, 110 В для системы управления. И ещё не считая таких мелочей, как насосы, водонагреватели, кондиционеры, обеззараживатели и моторы дверей.

          Без питания вагон не живёт. Вообще. Даже если сломать вагонный аккумулятор, ваш вагон сможет пользоваться аккумулятором соседнего — это есть в протоколе энергообмена (с точки зрения второго проводника, к нему подключится ещё один потребитель).

          И при этом всём даже на самые современные вагоны продолжают ставить угольные котлы.
          Читать дальше →
        • Исключения в Windows x64. Как это работает. Часть 3

            Опираясь на материал, описанный в первой и второй частях данной статьи, мы продолжим обсуждение темы обработки исключений в Windows x64.

            Описываемый материал требует знания базовых понятий, таких, как пролог, эпилог, кадр функции и понимания базовых процессов, таких, как действия пролога и эпилога, передача параметров функции и возврат результата функции. Если читатель не знаком с вышеперечисленным, то перед прочтением рекомендуется ознакомиться с материалом из первой части данной статьи. Также, если читатель не знаком со структурами PE образа, которые задействуются в процессе обработки исключения, тогда перед прочтением также рекомендуется ознакомиться с материалом из второй части данной статьи.
            Читать дальше →
          • [Перевод] Анемичная модель предметной области — не анти-шаблон, а архитектура по принципам SOLID

            От переводчика: На проекте, где я работаю, сейчас идет активное переписывание логики, ранее реализованной в виде богатой модели предметной области (с использованием Active Record и Unit of Work). Новый подход включает в себя классы сущностей без поведения и служб без состояния, взаимодействующих посредством интерфейсов — фактически, он представляет собой анемичную модель, с перспективой перехода в дальнейшем на микросервисную архитектуру. Наблюдая в режиме реального времени, как «макаронный монстр» из примерно полутора миллионов LOC постепенно обретает форму, как упрощаются тестирование, масштабирование и кастомизация системы под нуждый различных заказчиков, я был весьма удивлен, узнав, что такой подход часто рассматривается как архитектурный анти-шаблон. Пытаясь разобраться в причинах этого, я наткнулся на данную статью и размещаю здесь ее перевод, чтобы обсудить с сообществом плюсы и минусы подхода.


            Оригинал: The Anaemic Domain Model is no Anti-Pattern, it’s a SOLID design

            Читать дальше →
          • Договоры — это как отладка

              7.2. Как форс-мажор указана забастовка в отрасли и регионе, это лучше вычеркнуть, т.к. неясно, в какой отрасли и в каком регионе.

              Чтобы быть плохим юристом, не надо обладать специальными навыками: достаточно здравого смысла, чтобы разбираться в документах. Чтобы быть приемлемым юристом — ещё нужна хорошая память для того, чтобы помнить, что и где в нормативах и прецедентах. А чтобы быть отличным — ещё иметь огромную практику и нездоровое чувство юмора. Хотя последнее необязательно, конечно.

              Каждый наш договор страхует юрист-отладчик, который как брекпоинтами размечает точки рисков. Сейчас покажу пару примеров того, что он видит и чувствует.
              Читать дальше →
            • Как получить D-U-N-S number бесплатно

              • Tutorial


              D-U-N-S number — международный идентификатор юридических лиц. В России добровольно его добывают в одном случае: когда в AppStore нужно зарегистрировать компанию-разработчика.

              Расскажем, как добыть этот номер бесплатно и сэкономить 12 240.
              Читать дальше →
              • +34
              • 26k
              • 9
            • Внутренние механизмы V8 и быстрая работа со свойствами объектов

              • Перевод
              Этот материал посвящён тому, как внутренние механизмы V8 работают со свойствами JavaScript-объектов. Если рассматривать свойства с точки зрения JavaScript, то разные их виды отличаются друг от друга не так уж и сильно. Скажем, JS-объекты обычно ведут себя как словари со строковыми ключами и произвольными объектами в качестве значений. Однако, если почитать спецификацию языка, можно выяснить, например, что свойства разных видов по-разному ведут себя при их переборе. В других случаях поведение свойств различных видов, в основном, выглядит одинаково.

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

              image

              В этом материале мы хотим рассказать о том, как V8 добивается высокой производительности при обработке динамически добавляемых свойств объектов. Знание особенностей механизма работы со свойствами необходимо для понимания сущности способов оптимизации выполнения JavaScript в V8, таких, например, как встроенные кэши.
              Читать дальше →
              • +29
              • 13k
              • 8
            • Небезопасный cross-origin resource sharing

                image

                 
                Cross-origin resource sharing — технология современных браузеров, которая позволяет предоставить веб-странице доступ к ресурсам другого домена. В этой статье я расскажу об этой технологии, призванной обеспечить безопасность, или наоборот, поставить веб-приложение под удар.

                Читать дальше →
                • +18
                • 16,9k
                • 7
              • Проблема непрерывной защиты веб-приложений. Взгляд со стороны исследователей и эксплуатантов. Часть 2

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


                  Читать дальше →