• Становится ли веб медленнее со временем?

    • Translation


    В недавней истории на Hacker News утверждалось, что скорости веб-страниц не повышаются даже с увеличением скоростей Интернета.

    В своей статье я объясню, почему из исходных данных такого вывода сделать нельзя.

    Также мы рассмотрим изменения, произошедшие с устройствами и вебом на протяжении предыдущих десяти лет, и расскажем, как повлияли эти измерения на скорость веба.
    Читать дальше →
  • Я десять лет страдал от ужасных архитектур в C# приложениях — и вот нашел, как их исправить


      Я второй десяток лет участвую в разработке приложений для бизнеса на .NET и каждый раз вижу одни и те же проблемы — быдлокод и беспорядок. Месиво из сервисов, UoW, DTO-шек, классов-хелперов. В иных местах и прямой доступ в базу данных руками, логика в статических классах, километровые портянки конфигурации IoC.


      Когда я был молодым и резвым мидлом — я тоже так писал. Потом бил кулаком в стену с криками: "Хватит! В следующий раз сделаю по-другому". Следующий раз действительно начинался "по-другому" — с холодной головой и строгим подходом к архитектуре — а на выходе все равно получалась та же субстанция, лучше на пару миллиметров.


      Однако, эволюция — беспощадная штука: моя последняя система показалась мне более-менее близкой к идеалу. Сложность не сильно росла, скорость разработки не падала довольно долго, в систему худо-бедно въезжают новые сотрудники. Эти результаты я взял за основу, улучшил и теперь анонсирую вам свою новую разработку: Reinforced.Tecture.

      Читать дальше →
    • Grafana+Zabbix: Визуализация работы производственной линии

        В этой статья я хочу поделиться опытом использования open source систем Zabbix и Grafana для визуализации работы производственных линий. Информация может быть полезна тем, кто ищет быстрый способ визуального отображения или аналитики собранных данных в проектах промышленной автоматизации или IoT. Статья не является подробным руководством, это скорее концепция системы мониторинга, основанная на открытом программном обеспечении для производственного предприятия.

        Читать дальше →
        • +17
        • 12.4k
        • 7
      • Путеводитель по репликации баз данных

          Повторяться, но каждый раз по-новому – разве не это есть искусство?

          Станислав Ежи Лец, из книги «Непричёсанные мысли»

          Словарь определяет репликацию как процесс поддержания двух (или более) наборов данных в согласованном состоянии. Что такое «согласованное состояние наборов данных» – отдельный большой вопрос, поэтому переформулируем определение проще: процесс изменения одного набора данных, называемого репликой, в ответ на изменения другого набора данных, называемого основным. Совсем не обязательно наборы при этом будут одинаковыми.



          Поддержка репликации баз данных – одна из важнейших задач администратора: почти у каждой сколько-нибудь важной базы данных есть реплика, а то и не одна.

          Среди задач, решаемых репликацией, можно назвать как минимум

          • поддержку резервной базы данных на случай потери основной;
          • снижение нагрузки на базу за счёт переноса части запросов на реплики;
          • перенос данных в архивные или аналитические системы.

          В этой статье я расскажу о видах репликации и о том, какие задачи решает каждый вид репликации.
          Читать дальше →
        • Как сделать поиск по документам, накопленным почти за 100 лет. Опыт НПО Энергомаш и ABBYY

            Многие знают, что ABBYY занимается обработкой и извлечением данных из разных документов. Но у наших продуктов есть и другие интересные возможности. В частности, с помощью решения ABBYY Intelligent Search можно быстро и удобно искать информацию по смыслу в электронных документах из корпоративных систем. Этим уже пользуются крупные российские компании, например, производитель ракетных двигателей АО «НПО Энергомаш».

            Многолетняя практика показывает, что время вывода космических двигателей на рынок от момента начала работ составляет от 5 до 7 лет. В то же время для удержания лидирующих позиций необходимо сокращать сроки разработки и изготовления до 3 – 4 лет. Кроме того, усиление конкуренции привело к необходимости существенного снижения стоимости выпускаемых двигателей на 30 – 50%.

            Указанных показателей невозможно достигнуть без внедрения современных цифровых технологий. Наиболее передовые компании используют инновационные подходы не только на всех стадиях производства, но и на всех стадиях жизненного цикла их изделий. Чем больше компании уходят в цифру, тем острее становится вопрос: как использовать большие данные с максимальной для себя выгодой?

            За 90 лет работы НПО Энергомаш накопил вековой объем документов (как бумажных, так и электронных) с ценной информацией о наработках испытателей и конструкторов. Большая часть документов уже хранится в информационных системах компании (ИС). Согласно исследованию IDC, в среднем сотрудники крупных организаций пользуются 5-6 внутренними ИС. Около 36% времени в среднем уходит на поиск информации – в масштабах крупной компании это тысячи рабочих часов в день.

            Сегодня мы расскажем, как помогли НПО Энергомаш создать корпоративную интеллектуальную информационно-поисковую систему (КИИПС) на базе ABBYY Intelligent Search – такую же удобную и быструю, как популярные поисковики.
            Читать дальше →
          • Порядок вычисления в PHP

            • Translation

            Примечание переводчика. Никита Попов внёс и продолжает вносить огромный вклад в развитие языка PHP. Он очень хорошо понимает внутренности движка PHP и в данной статье он объясняет некоторые особенности работы PHP в плане порядка вычисления выражений, которые, пожалуй, особо нигде и не найти. Этой статье около 7 лет и она практически не потеряла актуальность, однако найти её довольно сложно, потому что её нет в блоге Никиты Попова, а она опубликована в его gist-ах на гитхабе. Думаю полезно будет представить её сообществу на русском языке.


            В своём любимом сообществе lolphp на реддит я наткнулся на пост, где люди удивляются результату следующего кода:


            <?php
            
            $a = 1;
            $c = $a + $a++;
            var_dump($c); // int(3)
            
            $a = 1;
            $c = $a + $a + $a++;
            var_dump($c); // int(3)

            Как вы видите, выражения ($a + $a++) и ($a + $a + $a++) дают одинаковый результат, что довольно неожиданно. Что же здесь происходит?

            Читать дальше →
          • Формульный движок с обратной польской нотацией на JavaScript

            Имеющиеся реализации расчетных движков на обратной польской нотации, которые можно найти в интернете, всем хороши, только вот не поддерживают функции, такие как round(), max(arg1; arg2, …) или if(условие; истина; ложь), что делает такие движки бесполезными с практической точки зрения. В статье представлена реализация формульного движка на обратной польской нотации, поддерживающего Excel-подобные формулы, который написан на чистом JavaScript в объектно-ориентированном стиле.
            Читать дальше →
          • Советы руководителю от руководителя

            Привет, Хабр! Я управляю командами разработки уже 10 лет.

            Недавно меня попросили поделиться на внутренней конференции «секретами управления» с другими руководителями. Поводом стала низкая текучка в моём подразделении и здоровый дух внутри команды — так было на всех моих работах. Я отказался, сославшись на то, что не делаю для этого ничего особенного. Сработала внутренняя установка «не будь выскочкой».

            Потом я вспомнил, что живу в мире пустозвонов, не стесняющихся нести «знания» в массы: бизнес-консультанты без бизнеса, карьерные консультанты без карьеры, коучи по чему угодно после двухмесячных курсов от таких же коучей. Неопытные умы, наслушавшись их, думают, что так мир и устроен, а потом огорчаются, что ничего не вышло. А опытные крутят у виска и отмалчиваются.

            Поэтому выключаю тумблер «не будь выскочкой» и делюсь «секретами».



            Тут не будет стандартных «делегируй», «налаживай процесс», «стой в правильной позе на стендапе» — об этом написано уже достаточно. Будет о другом.
            Читать дальше →
          • Уязвимости PHP-фреймворков


              10 июня компания Digital Security провела онлайн-встречу по информационной безопасности Digital Security ON AIR. Записи докладов можно посмотреть на Youtube-канале.


              По материалам докладов мы выпустим цикл статей, и первая из них — об уязвимостях PHP-фреймворков уже ждет под катом.

              Читать дальше →
            • Вы уверены, что пишете объектно-ориентированный код?

              • Translation

              Мы, PHP-разработчики, горды тем, что пишем на ООП-языке (можно легко здесь заменить PHP на C#, Java или другой ООП-язык). Каждая вакансия содержит требования про знание ООП. В каждом собеседовании спрашивают что-нибудь про SOLID или трех "китов" ООП. Но когда дело доходит до дела — мы получаем просто классы, наполненные процедурами. ООП проявляется редко, обычно в коде библиотек.


              Обычное веб-приложение — это классы ORM-сущностей, которые содержат данные из строки в базе данных и контроллеры(или сервисы — неважно), содержащие процедуры работы с этими данными. Объектно-ориентированное программирование — оно про объекты, которые владеют собственными данными, а не предоставляют их для обработки другому коду. Отличная иллюстрация этого — вопрос, который был задан в одном чате: "Как я могу улучшить этот код?"

              Читать дальше →
            • 7 open source альтернатив Skype

              • Translation
              image


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

              Все стало меняться в середине 2000-х годов, когда вебкамеры стали основным компьютерным оборудованием, а на рынок вышел Skype и похожие сервисы. Стоимость и сложность видео-конференций быстро снижались, поскольку все, у кого была вебкамера, быстрый интернет и недорогое программное обеспечение, могли общаться с коллегами, друзьями, членами семьи и даже незнакомцами прямо со своего домашнего или рабочего компьютера. Сейчас же при надежном мобильном интернете или WiFi-соединении и правильном программном обеспечение, видео-конференция может помещаться у вас на ладошке с помощью видео камеры вашего смартфона. Но большая часть этого программного обеспечения является коммерческой.
              К счастью, существует несколько отличных альтернатив видео-конференций с открытым кодом, которые повторяют функции Skype, Zoom, Google Hangouts и похожих приложений.
              Читать дальше →
            • Чего ожидать от бета-версии Proxmox Backup Server


                10 июля 2020 года австрийская компания Proxmox Server Solutions GmbH представила публичную бета-версию нового решения по резервному копированию.

                Мы уже рассказывали, как использовать штатные методы бэкапа в Proxmox VE и выполнять инкрементальный бэкап с помощью стороннего решения — Veeam® Backup & Replication™. Теперь же, с появлением Proxmox Backup Server (PBS) процесс резервного копирования должен стать удобнее и проще.
                Читать дальше →
              • Zimbra — Генерация HTML подписи на основе данных LDAP

                Введение


                В Веб-Админке Zimbra отсутствуют инструменты для генерации подписи к письмам. Перелопатив кучу мануалов — понял, что ни один из Них меня не устраивает.

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

                С моей же стороны это вклад в сообщество, за ранее использованные наработки.
                Читать дальше →
              • Зачем инженерам тратить время на перформанс

                  Привет, меня зовут Михаил Юдин, я Android-инженер в Авито. Хочу рассказать, в чём польза перформанса и как начать внедрять его в продукте. Осенью 2018 года у нас появилась команда перформанса — есть шаги и инструменты, которые нам помогли, поэтому пора делиться опытом.


                  Читать дальше →
                  • +21
                  • 5.1k
                  • 9
                • Архитектура — Декларативна. Реализация — Императивна. Все остальное — Бюрократия

                  Что такое Архитектура? Чем Архитектура отличается от Дизайна? Где граница между Архитектурой и Реализацией? Можно ли увидеть Архитектуру? Можно ли тестировать Архитектуру? Чем отличаются Инженерный и Эволюционный подходы к Архитектуре? Что такое Хорошая Архитектура? В чем состоит работа Архитектора? Чем она отличается от работы Разработчика? Какие инструменты доступны Архитектору? Можно ли менять Архитектуру отдельно от Реализации? Есть ли у Архитектуры ДНК?


                  Читать дальше →
                • Что такое CI (Continuous Integration)

                    CI (Continuous Integration) — в дословном переводе «непрерывная интеграция». Имеется в виду интеграция отдельных кусочков кода приложения между собой. Чем чаще мы собираем код воедино и проверяем:

                    • Собирается ли он?
                    • Проходят ли автотесты?

                    Тем лучше! CI позволяет делать такие проверки автоматически. Он используется в продвинутых командах разработки, которые пишут не только код, но и автотесты. Его спрашивают на собеседованиях — хотя бы понимание того, что это такое. Да, даже у тестировщиков.

                    Поэтому я расскажу в статье о том, что это такое. Как CI устроен и чем он пригодится вашему проекту. Если вы больше любите видео-формат, можно посмотреть мой ролик на youtube на ту же тему.


                    Читать дальше →
                  • Сайты для обучения программированию: Топ 100

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

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

                      Итак, сайты для обучения программированию онлайн, ТОП 100:
                      Читать дальше →
                    • 6 полезных привычек, которые, что удивительно, есть лишь у немногих программистов

                      • Translation
                      Если поразмышлять о том, какие качества характерны для того, кого можно назвать «хорошим программистом», то на ум тут же придут некоторые привычки. Такие привычки, которые, с чем согласится большинство разработчиков, иметь весьма полезно. Но, на самом деле, большинство таких разработчиков сами подобных привычек не имеют.

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



                      Предлагаю поговорить о шести привычках, которые стоит постараться сформировать у себя тому, кто хочет выделяться из серой толпы.
                      Читать дальше →
                    • Как мы обеспечивали рост Ситимобила

                      image

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