• Янус: двуличность как симптом

      В 19 веке была популярна одна интересная городская легенда. Интересна она, прежде всего, с медицинской точки зрения. Максимального расцвета и освещенности легенда об Эдварде Мордаке достигла 8 декабря 1895 года, когда Бостон Пост опубликовала статью "Чудеса современной науки". В этой статье, за неимением более значимых научных новостей и в погоне за сенсацией, газета подробно рассказывала о таких существах, как женщина-рыба из Линкольна и человек-краб. В подборку с фриками попал и некий Эдвард с его дьявольским близнецом. Научной статья считалась потому, что журналист вел рассказ, опираясь на более чем авторитетный источник - архив Королевского научного общества.

      Читать далее
    • Мифы современной популярной физики

        Где-то в альтернативной вселенной, согласно MWI, я стал гениальным физиком. Но в этой вселенной просто подробно слежу за профессиональными публикациями в области физики, зарабатывая себе на хлеб развозкой пиццы базами данных. Как следствие чуть более глубоких знаний, я не могу смотреть никаких научно-популярных передач. Это как железом по стеклу — тут oversimplification, тут просто неверно, тут есть тонкости…

        Я решил сформировать список наиболее часто встречающихся неправд и полуправд. Итак, самое частое это…

        Большой взрыв


        Его изображают примерно так:


        Читать дальше →
      • Квантовая механика: конец войны интерпретаций

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

          Читать дальше →
        • Почему функциональное программирование такое сложное

          • Tutorial

          Я несколько раз начинал читать статьи из серии «Введение в функциональное программирование», «Введение в Теорию Категорий» и даже «Введение в Лямбда Исчисление». Причем и на русском, и на английском. Каждый раз впечатление было очень сходным: во-первых, много новых непонятных слов; во-вторых, много новых определений, которые возникают из ниоткуда; в-третьих, совершенно непонятно, как это использовать.


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


          Попытки использовать как-то в работе изученные концепции разбивались о полное непонимание, как применить полученное глубокое знание. Ведь, напомню, что парадигму ФП (где-то удобнее, где-то не очень, но) можно использовать практически в любом ЯП, совсем необязательно для этого изучать условный Хаскель.

          Читать дальше →
        • Любой, достаточно быстрый источник света, имеет красное доплеровское смещение

            Возможно для многих будет неожиданностью узнать, что по мере роста скорости приближающегося источника, его излучение сначала «синеет», а затем «краснеет». Это иллюстрируется рисунком ниже. Геометрическое место точек годографа скорости Источника при постоянном отношении длин волн Приёмника и Источника равном n представляет собой эллипсоид как на рисунке ниже.

            Вектор скорости β, направленный в целом вправо, по мере роста сначала пересекает эллипсоиды с сокращёнными длинами (n<1) волн света, а затем начинает пересекать эллипсоиды со всё более длинными (n>1) волнами.

            Автор будет признателен за замечания.

            Читать дальше →
          • Docker-образ для раздачи Single Page Application

            Single-page Application (SPA) – это набор статических JavaScript и HTML файлов, а так же картинок и других ресурсов. Поскольку они не изменяются динамически, опубликовать их в интернете очень просто. Для этого существует большое количество дешёвых и даже бесплатных сервисов, начиная с простого GitHub Pages (а для кого-то даже с narod.ru) и заканчивая CDN вроде Amazon S3. Однако мне нужно было другое.


            Мне нужен был Docker-образ с SPA, чтобы его легко можно было запустить как в продакшене в составе Kubernetes-кластера, так и на машине back-end разработчика, который понятия не имеет, что такое SPA.


            UPD 07.07.20: Посмотерть самому на то, что в итоге получилось, можно тут: https://github.com/alexxxnf/spa-docker-example


            Я для себя определил следующие требования к образу:


            • простота в использовании (но не в сборке);
            • минимальный размер как с точки зрения диска, так и с точки зрения RAM;
            • настройка через переменные окружения, чтобы образ можно было использовать в разных средах;
            • максимально эффективная раздача файлов.

            Сегодня я расскажу как:


            • выпотрошить nginx;
            • собрать brotli из исходников;
            • научить статические файлы понимать переменные окружения;
            • ну и конечно как собрать из всего этого Docker-образ.

            Цель этой статьи поделиться моим опытом и спровоцировать опытных участников сообщества на конструктивную критику.

            Читать дальше →
          • Как нетренированные мозги разрушают мир в эпоху коронавируса

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

              • О ложной дихотомии — карантины vs экономика
              • Настоящая цель моделей
              • О fake news, attention span и memory holes
              • Confirmation bias, или facts don't matter
              • Кризис и кто его предсказал
              • Skill stack
              • Когнитивные искажения и loserthink
              • О будущем


              Читать дальше →
            • Активация discard (TRIM) на Linux для SSD

              Современные накопители данных такие как SSD нуждаются в команде TRIM интерфейса ATA и для этого в ОС построенных на базе ядра Linux предусмотрено два метода управления на уровне файловых систем:


              • discard — устанавливается как опция монтировании файловой системы. Позволяет ядру Linux сразу отправлять команду TRIM на устройство, как только об этом сообщит файловая система.
              • fstrim — утилита которая запускается вручную или по расписанию как сервис ОС, отправляет список удаленных блоков с ФС для зачистки их на устройстве.

              Для включения fstrim достаточно активировать сервис fstrim.service в systemd, но лучше вместо сервиса, который будет висеть в памяти, использовать таймер fstrim.timer который будет запускать еженедельный TRIM.


              Пример включения сервиса:


              # Включение, старт и вывод статуса сервиса:
              systemctl enable fstrim.service && \
              systemctl start fstrim.service && \
              systemctl status fstrim.service

              Но этих мер недостаточно, если у вас файловые системы располагаются на томах LVM, а LVM в LUKS игла в яйце, яйцо в утке, утка в зайце:



              Читать дальше →
            • Подводные камни Terraform

                image

                Выделим несколько подводных камней, включая те, что связаны с циклами, выражениями if и методиками развертывания, а также с более общими проблемами, которые касаются Terraform в целом:

                • параметры count и for_each имеют ограничения;
                • ограничения развертываний с нулевым временем простоя;
                • даже хороший план может оказаться неудачным;
                • рефакторинг может иметь свои подвохи;
                • отложенная согласованность согласуется… с отлагательством.
                Читать дальше →
              • Да мой старый laptop в несколько раз мощнее, чем ваш production server

                  Именно такие претензии я услышал от наших девелоперов. Самое интересное, что это оказалось правдой, дав начало длительному расследованию. Речь пойдет про SQL servers, которые крутятся у нас на VMware.


                  Читать дальше →
                • CPU-лимиты и агрессивный троттлинг в Kubernetes

                  • Translation
                  Прим. перев.: эта поучительная история Omio — европейского агрегатора путешествий — проводит читателей от базовой теории до увлекательных практических тонкостей в конфигурации Kubernetes. Знакомство с такими случаями помогает не только расширять кругозор, но и предотвращать нетривиальные проблемы.



                  Доводилось ли вам сталкиваться с тем, что приложение «застревало» на месте, переставало отвечать на запросы о проверке состояния (health check'и) и вы не могли понять причину такого поведения? Одно из возможных объяснений связано с лимитом квот на ресурсы CPU. О нем и пойдет речь в этой статье.

                  TL;DR:
                  Мы настоятельно рекомендуем отказаться от CPU limit'ов в Kubernetes (или отключить квоты CFS в Kubelet), если используется версия ядра Linux с ошибкой CFS-квот. В ядре имеется серьезный и хорошо известный баг, который приводит к избыточному троттлингу и задержкам
                  .
                  Читать дальше →
                • Базовые возможности LXD — системы контейнеров в Linux


                  LXD — это системный менеджер контейнеров следующего поколения, так гласит источник. Он предлагает пользовательский интерфейс, похожий на виртуальные машины, но использующий вместо этого контейнеры Linux.


                  Ядро LXD — это привилегированный демон (сервис запущенный с правами root), который предоставляет REST API через локальный unix сокет, а также через сеть, если установлена соответствующая конфигурация. Клиенты, такие как инструмент командной строки поставляемый с LXD посылают запросы через этот REST API. Это означает, что независимо от того, обращаетесь ли вы к локальному хосту или к удаленному, все работает одинаково.


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

                  Читать дальше →
                • DeepFake своими руками [часть 1]

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

                    Меня данная технология заинтересовала недавно. Впервые о ней я узнал из доклада одного из спикеров на “AI Conference 2018”. Там демонстрировалось видео, в котором по аудиозаписи алгоритм сгенерировал видео с обращением Барака Обамы. Ссылка на подборку видео созданных с помощью этой технологии. Результаты меня сильно вдохновили, и мною было принято решение лучше разобраться с данной технологией, чтобы в будущем противодействовать ей. Для этого я решил написать DeepFake на языке C#. В итоге получил такой результат.

                    image

                    Приятного чтения!
                    Читать дальше →
                  • Как мы устраивали соревнование смен между рабочими производства (как в СССР)



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

                      У нас задача была чуть сложнее, потому что изначально нужно было не подстегнуть операторов линий, а дать каждому понять, успевает он выполнить план в нужном темпе работы или нет. То есть как-то визуализировать этот процесс. И тут вскрылась одна очень интересная особенность конкретного производства.

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