Программист-прагматик

Введение В данной статье я хочу поделиться основными мыслями, которые я почерпнул из книги “Программист прагматик” (авторы Эндрю Хант, Дэвид Томас). Книга помогла мне ответить на ряд немых внутренних вопросов, на которые раньше я не мог дать себе ответа, а также выделила и структурировала в вопросы то, что раньше самостоятельно формализовать не получалось. Прагматическая философия для несостоятельных или трудных задач следует предлагать варианты решения, а не варианты отговорок одноразовое допущение беспорядка порождает глобальный процесс ухудшения качества кода и приложения в целом (“теория разбитого окна”) масштабные изменения следует предлагать небольшими шагами, вовлекая узкий круг лиц нужно следить за общей картиной проекта, чтобы не пропустить вялотекущих, но деструктивных изменений (“вареная лягушка”) решение в пользу качества почти всегда наиболее приоритетно портфель собственных знаний - важная инвестиционная составляющая профессии, требует регулярного пересмотра и реинвестирования чтобы получить ответ, вопрос нужно сформулировать максимально четко и прозрачно нужно учитывать способ и канал коммуникации, формировать стиль сообщения и общения так, чтобы это было удобно собеседнику и отвечало тематике общения. [Далее]
book 

Насколько "быстро" можно вставить в twig-шаблоны виджет

Введение В данной статье речь пойдет о том, как организовать код так, чтобы иметь возможность вставлять в разных twig-шаблонах одинаковые блоки (виджеты). Рассмотрим несколько вариантов реализации такого механизма. WidgetController Данный способ предполагает, что виджеты являются методами контроллера. Пример <?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; class WidgetController extends AbstractController { public function widget(): Response { return $this->render('widget.html.twig', ['number' => rand()]); } } В шаблоне блок можно отрисовать так: {{ render(controller('App\\Controller\\WidgetController:widget')) }} [Далее]

Highloadcup 2018

Введение В данной статье я хочу рассказать о своем опыте участие в конкурсе Highloadcup 2018 от Mail.ru. О конкурсе я узнал из поста на хабре, а изначальной мотивацией принять участие было желание более опытных коллег посоревноваться. В рамках конкурса нужно было спроектировать и упаковать в Docker приложение, которое реализовывает несложное, но объемное по бизнес-логике REST API. Требуется реализовать 4 GET-запроса и 3 POST-запроса. Затем решение нужно отправить в docker-registry, после оно будет обстрелено с помощью yandex-tank разными профилями обстрела. [Далее]

Использование аннотаций в PHP Storm

Хочу поделиться с вами таким полезным функционалом, как аннотации. Чтобы проникнуться всей полезностью аннотаций, нужно чтобы: проект находился в контроле версий сообщение каждого коммита было выдержано в определенной нотации или хотя бы содержало ссылку на трекер (например, задача в JIRA). Чтобы показать аннотации, нужно нажать слева от рабочий области текстового редактора PHP Storm. Теперь мы видим авторов последних изменений каждой строки в файле, а при двойном клике на область аннотации мы увидим во всплывающем окне файлы, которые изменились вместе с изменениями текущей строки. [Далее]
vcs  ide 

Практические советы по разработке на 1С-Битрикс

Введение В данной статье я хочу отразить ряд советов и подсказок по работе с 1С-Битрикс, а также оградить читателя от подводных камней, с которыми я сталкивался сам или сталкивалась команда. Важно заметить, что разработка на 1С-Битрикс имеет свою специфику, которую в данной статье я не подвергаю критике. Это всего лишь еще один инструмент для бизнеса, основанного на веб-разработке, и нужно попробовать использовать его на максимум. Агенты в 1С-Битрикс В 1С-Битрикс существует система внутреннего менеджера фоновых задач. [Далее]
php  bitrix  devops  vsc 

Разбор интересного задания на PHP

Введение На одном собеседовании на должность php-разработчика было предоставлено своеобразное задание. Условие было поставлено следующее. Дан фрагмент кода: <?php class A { private $x = 5; } $a = new A; Требуется предложить как можно больше способов, которыми можно получить значение $x. Решение Некоторые решения показались нестандартным и интересным. Предлагаю следующие варианты: Способ 1. Reflection API <?php $reflectionClass = new ReflectionClass($a); $property = $reflectionClass->getProperty('x'); $property->setAccessible(true); var_dump($property->getValue($a)); Способ 2. [Далее]