• 5 способов деплоя PHP-кода в условиях хайлоада

      Если бы хайлоад преподавали в школе, в учебнике по этому предмету была бы такая задача. «У соцсети N есть 2 000 серверов, на которых 150 000 файлов объемом по 900 Мб PHP-кода и стейджинг-кластер на 50 машин. На серверы код деплоится 2 раза в день, на стейджинг-кластере код обновляется раз в несколько минут, а еще дополнительно есть „хотфиксы“ — небольшие наборы файлов, которые выкладываются вне очереди на все или на выделенную часть серверов, не дожидаясь полной выкладки. Вопрос: считаются ли такие условия хайлоадом и как в них деплоить? Напишите не менее 5 вариантов деплоя». Про задачник по хайлоаду можем только мечтать, но уже сейчас мы знаем, что Юрий Насретдинов (youROCK) точно бы решил эту задачу и получил «пятерку».


      На простом решении Юрий не остановился, а дополнительно провел доклад, в котором раскрыл тему понятия «деплой кода», рассказал про классические и альтернативные решения масштабного деплоя кода на PHP, проанализировал их производительность и презентовал самописную систему деплоя MDK.
      Читать дальше →
    • Acronis впервые открывает доступ к API для разработчиков

        Начиная с 25 апреля 2019 у партнеров появилась возможность получить ранний доступ (Early Access) к платформе Acronis Cyber Platform. Это первый этап реализации программы по формированию новой экосистемы решений, в рамках которой компании по всему миру смогут воспользоваться платформой Acronis для интеграции сервисов киберзащиты в свои продукты и решения, а также получают возможность предложить собственные услуги мировому сообществу через наш будущей маркетплейс. Как это работает? Читайте в нашем посте.


        Читать дальше →
      • Go Meetup в Acronis! (Москва, Физтехпарк)



          Друзья, привет!

          Приглашаем вас стать участниками Acronis Go Meetup, который состоится 28 февраля в офисе компании Acronis — в Физтехпарке (г. Москва, Долгопрудненское шоссе, д.3). Специально по этому случаю будет организован трансфер от станции метро Алтуфьево, а также возвращение в город после мероприятия.
          Читать дальше →
          • +24
          • 4,8k
          • 9
        • Новый взгляд на изучение и документирование исходного кода

            TL;DR Привет. Меня зовут Богдан и я изучаю проблемы чтения кода. Я только что закочнил первую рабочую версию «codecrumbs» — визуального инструмента для изучения исходного кода с помощью «хлебных крошек». Гитхаб репозиторий можно посмотреть тут.

            image

            Проблема


            Недавно я проводил опрос о главных проблемах с которыми мы сталкиваемся когда начинаем изучать исходный код большого проекта (если вы ещё не участвовали, то пройти опрос всё ещё можно тут).
            Читать дальше →
          • Работа с CouchDB на примере JavaScript приложения «Todo List»

            В какой-то промежуток времени мне пришлось работать с одной из документоориентированных СУБД — Apache CouchDB, но у меня возникли трудности с поиском документации. В этой статье хочу рассказать о том, как же работать в этой СУБД из JavaScript на примере небольшого приложения «Todo List». Так как статья ориентирована на ApacheCouchDB – я не буду показывать и рассказывать о том, как работает приложение в полной мере.
            Читать дальше →
          • PHP 7.1.1 FPM vs Node.js 7.4.0 в качестве web backend сервера

            Всем привет, решил поделиться с вами результатами синтетического теста производительности свежих версий PHP и Node.js.

            Конфигурация сервера:

            Простой VDS — 1 ядро процессора 2ГГц, 1Гб оперативы, 10Гб SSD.
            ОС: Debian 8.6.
            Так же произведены базовые настройки ядра, чтобы сервер в принципе мог обрабатывать большое кол-во соединений.

            Испытуемые:

            — PHP 7.1.1 FPM
            — Node.js 7.4.0

            Первый этап:

            Тут операции, которые в основном использует backend. А именно: склеивание строк, сетевой ввод-вывод, арифметика и работа с массивами.
            Читать дальше →
          • Symfony — загрузка файлов в MongoDB GridFS

            GridFS — это спецификация MongoDB для хранения больших файлов. В этой статье я расскажу как можно легко загружать файлы в GridFS, а затем извлекать их из базы данных и отображать в браузере.
            Читать дальше →
          • Обзор расширения OPCache для PHP

            • Перевод


            PHP — это скриптовый язык, который по умолчанию компилирует те файлы, которые вам нужно запустить. Во время компилирования он извлекает опкоды, исполняет их, а затем немедленно уничтожает. PHP был так разработан: когда он переходит к выполнению запроса R, то «забывает» всё, что было выполнено в ходе запроса R-1.

            Очень маловероятно, что на production-серверах PHP-код изменится между выполнением нескольких запросов. Так что можно считать, что при компилированиях всегда считывается один и тот же исходный код, а значит и опкод будет точно таким же. И если извлекать его для каждого скрипта, то получается бесполезная трата времени и ресурсов.
            Читать дальше →
          • PHP-Дайджест № 92 – интересные новости, материалы и инструменты (29 августа – 11 сентября 2016)



              Предлагаем вашему вниманию очередную подборку со ссылками на новости и материалы.


              Приятного чтения!


              Читать дальше →
              • +47
              • 14,8k
              • 2
            • PHP-Дайджест № 90 – интересные новости, материалы и инструменты (1 – 14 августа 2016)



                Предлагаем вашему вниманию очередную подборку со ссылками на новости и материалы. Приятного чтения!
                Читать дальше →
              • Отчёт с Symfony Moscow Meetup 2 июня

                  image

                  В начале июня в офисе Mail.Ru Group прошла восьмая встреча сообщества Symfony Moscow Meetup — разработчиков на PHP/Symfony2. Здесь обсуждались вопросы разработки веб-приложений и смежные технологии, участники обменивались опытом и последними техническими новостями. Ну и, конечно, было много общения в неформальной обстановке. На встрече было представлено 4 доклада. Предлагаем ознакомиться с записями и презентациями выступлений.
                  Читать дальше →
                • Symfony и Command Bus

                  Уже больше года использую паттерн Command Bus в своих Symfony-проектах и наконец решил поделиться опытом. В концев концов обидно, что в Laravel это есть «из коробки», а в Symfony, из которого Laravel во многом вырос — нет, хотя самому понятию Command/Query Separation уже не менее 10 лет. И если с буквой «Q» из аббревиатуры «CQRS» еще понятно что делать (лично меня вполне устраивают custom repositories), то куда приткнуть букву «C» — неясно.

                  На самом деле, даже в банальных CRUD-приложениях Command Bus дает очевидные преимущества:

                  • контроллеры становятся «худыми» (редкий «экшен» занимает более 15 строк),
                  • бизнес-логика покидает контроллеры и становится максимально независимой от фреймворка (в результате ее несложно повторно использовать в других проектах, даже если они написаны не на Symfony),
                  • упрощается unit-тестирование бизнес-логики,
                  • сокращается дублирование кода (когда, например, необходимо реализовать «фичу» как через Web UI, так и через API).

                  КДПВ
                  Читать дальше →
                • Приглашаем на Symfony Moscow Meetup 2 июня

                    image

                    2 июня в московском офисе Mail.Ru Group пройдёт восьмая встреча сообщества Symfony Moscow Meetup — встреча разработчиков на PHP/Symfony2. Участники обсудят разработку веб-приложений и смежные технологии, обменяются опытом, последними техническими новостями и пообщаются в неформальной обстановке. На встрече будет представлено 4 доклада. Подробности читайте под катом.
                    Читать дальше →
                  • Цветовая азбука

                      Хочу показать вам прототип одного из своих некоммерческих проектов. Идея его проста — заменить буквы в словах на цветные квадраты. Ожидается, что человеческий мозг на распознавание цвета тратит существенно меньше времени чем на определение знака и такая система позволит увеличить скорость и упростит процесс чтения.
                      В качестве примера выбрана книга «Задача трех тел», автор — Лю Цысинь. Постепенно, с каждой прочитанной страницей, буквы в квадратах будут пропадать и к концу книги букв не останется вовсе.


                    • Опасный target="_blank"

                        Большинство создают внешние ссылки через target="_blank" и не знают одного интересного нюанса — страница, на которую мы попадем таким образом, получит частичный контроль над ссылающейся на нее страницей через js свойство window.opener.

                        Через window.opener.location мы сможем сделать редирект на, к примеру, фишинговую страницу. Это своего рода tabnabbing, только более продвинутый. Так как жертва меньше всего ожидает подмены страницы, в открытой ранее, доверенной вкладке браузера.
                        Читать дальше →
                      • Angular — это паттерн проектирования

                        • Перевод
                        Со стремительным приближением Angular 2.0, параллельно существующим с большим количеством других frontend-фреймворков, в воздухе витает множество волнений по поводу предстоящих затрат (как временных, так и денежных), связанных с переводом своих проектов на новую версию. Как вы думаете, есть ли у разработчиков желание изучить еще один новый фреймворк?

                        Давайте разбираться. Прошу под кат.
                        Читать дальше →
                      • DroidShoter — скриншоты приложения на разных разрешениях экрана, используя одно устройство и Adb

                          Как известно, Андроид устройств существует много… очень много. Это дает нам огромное число экранов, с различным сочетанием разрешения и плотности пикселей, что значительно усложняет разработку приложений. В определенный момент захотелось постараться упростить проверку приложения на разных экранах и избежать запуска на многих устройствах и эмуляторах. Анализ проблемы показал, что все необходимое для решения проблемы есть и, используя Adb, можно обойтись одним подключенным устройством. В итоге была разработана кроссплатформенная утилита для автоматического сохранения скриншотов приложения на разных параметрах экрана одного устройства, не требующая никаких дополнительных манипуляций с исходным кодом приложения (с эмуляторами также все работает). После работы утилиты получаются скриншоты приложения в том виде, в каком оно выглядит на различных устройствах. В дальнейшем, используя полученные скриншоты, можно выявлять артефакты отображения приложения и анализировать оптимальность лэйаутов.
                          Читать дальше →
                        • Математика на пальцах: методы наименьших квадратов

                          • Tutorial

                          Введение




                          Я математик-программист. Самый большой скачок в своей карьере я совершил, когда научился говорить:«Я ничего не понимаю!» Сейчас мне не стыдно сказать светилу науки, что мне читает лекцию, что я не понимаю, о чём оно, светило, мне говорит. И это очень сложно. Да, признаться в своём неведении сложно и стыдно. Кому понравится признаваться в том, что он не знает азов чего-то-там. В силу своей профессии я должен присутствовать на большом количестве презентаций и лекций, где, признаюсь, в подавляющем большинстве случаев мне хочется спать, потому что я ничего не понимаю. А не понимаю я потому, что огромная проблема текущей ситуации в науке кроется в математике. Она предполагает, что все слушатели знакомы с абсолютно всеми областями математики (что абсурдно). Признаться в том, что вы не знаете, что такое производная (о том, что это — чуть позже) — стыдно.

                          Но я научился говорить, что я не знаю, что такое умножение. Да, я не знаю, что такое подалгебра над алгеброй Ли. Да, я не знаю, зачем нужны в жизни квадратные уравнения. К слову, если вы уверены, что вы знаете, то нам есть над чем поговорить! Математика — это серия фокусов. Математики стараются запутать и запугать публику; там, где нет замешательства, нет репутации, нет авторитета. Да, это престижно говорить как можно более абстрактным языком, что есть по себе полная чушь.
                          Математика для программистов!