Как получить EntityManager через сервис-контейнер в Symfony 3.4

В Симфони (напоминаю, что это худший PHP фреймворк современности) нельзя просто так взять и вызвать:

$EntityManager = $this->getContainer()->get(EntityManager::class)
Потому что в ответ можно получить эксепшен Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException с таким текстом:
You have requested a non-existent service "Doctrine\ORM\EntityManager".
И что же делать честным программистам? (далее…)

Различия библиотек predis и phpredis для PHP

Для работы с Redis в PHP существует множество библиотек. Рассмотрим самые известные из них: phpredis/phpredis и predis/predis, также известную как nrk/predis. Phpredis это полноценное расширение (extension) для PHP написанное на языке C. На данный момент эта библиотека набрала на гитхабе 6 425 звёзд и 1 667 форков. Последнее обновление 25 апреля 2018. Так как это нативное расширение, оно должно работать быстрее и потреблять меньше памяти, что критично для highload-проектов. (далее…)

Highload для самых маленьких

Это скорее не статья, а так заметка, на которую следует ссылаться, если кто-то не думает о том что в проекте может быть записей больше, нежели в тестовой базе данных, а скорость интернета меньше нежели доступ по локальной сети в 100мбит. Исходя из моего опыта разработки (да и не только моего), зачастую, «бутылочным горлышком» вашего приложения является база данных, таким образом перво-наперво включаем slow query log (← это ссылка на гугло-поиск) и смотрим какой запрос у нас самый медленный, и думаем что с ним делать, если не можем вкурить проблему — зовём старших, пусть тоже повтыкают в EXPLAIN(← ссылка на документацию → на хабр) вашего чудо-запроса. (далее…)

Установка Selenium chromedriver

http://chromedriver.storage.googleapis.com/2.31/chromedriver_linux32.zip http://chromedriver.storage.googleapis.com/2.29/chromedriver_linux32.zip sudo apt-get install unzip wget -N http://chromedriver.storage.googleapis.com/2.10/chromedriver_linux64.zip -P ~/Downloads unzip ~/Downloads/chromedriver_linux64.zip -d ~/Downloads chmod +x ~/Downloads/chromedriver sudo mv -f ~/Downloads/chromedriver /usr/local/share/chromedriver Change the directory to /usr/bin/chromedriver sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver Now run the script and add the following in the environment file. (далее…)

Dive into Centrifugo

В предыдущей статье о Центрифуге я рассказывал, что сервер был переписан с Python на Go (код Centrifugo на github, описание на opensource.mail.ru). C тех пор прошло несколько месяцев, за это время Центрифуга успела получить версию 1.0.0 и даже уйти немного дальше (последняя версия на момент этого поста — 1.4.2). В этой статье нас ждет быстрый старт работы с Центрифугой, примеры реального использования, размышления о месте и предназначении Центрифуги в реалиях 2016 года, описание некоторых архитектурных особенностей/возможностей реал-тайм-сервера и примеры кода на Go, отвечающие за реализацию главных фич. Welcome aboard! (далее…)

Основы Android-приложения

Android - основанная на linux платформа для мобильных устройств использующая изменённую виртуальную машину Java построенную для учёта компактности файлов и энергоэффективности Dalvik. Из-за этого используется не Mobile Edition и тем более не Java SE, а свои библиотеки. Приложения соответсвенно пишутся на Java, либо же через обходные пути  — TitaniumAppInventorAdobe AIR. Интересно что из библиотек есть SQLite и OpenGL - не прийдётся изобретать велосипеды. Кроме того в системе есть менеджеры для обмена данными между приложениями, сенсорами и тп. (далее…)

Погружение в Sphinx. Часть 1

Серия статей о работе с поисковым движке sphinx на примере простого приложения на laravel. Поиск - важная составляющая любого сайта, которой стоит уделить большое внимание. От работы поиска зависит user experience составляющая вашего приложения, то сможет ли пользователь найти нужную ему информацию или просто уйдет, неудовлетворив свой интерес. (далее…)

Ускоряем Composer

Пакетный менеджер Composer при выполнении команды install или update обращается к файлу composer.json и последовательно обрабатывает указанные в нём пакеты. Если пакетов много, то эта процедура займёт довольно продолжительное время. Проблему могло бы решить распараллеливание процессов. И как раз для решения данной задачи чуть больше года назад был создан плагин Prestissimo. Он позволяет ускорить загрузку пакетов на порядок. (далее…)

Обучающие видео по программированию от Winderton

Winderton ведёт видеоблог на YouTube на тему программирования, разработки игр и Computer Science. Манера подачи материала у автора весьма специфическая, местами бывают грубости. Однако, в некоторых видео раскрываются довольно глубокие и редкие знания, о которых другие авторы молчат. Это один из немногих видео-блоггеров, которые вносят в IT сообщество дополнительную ценность. Рекомендую к просмотру!

Программирование и Computer Science

Объектно-ориентированное программирование

https://youtu.be/zqxVI_kEdq8 (далее…)