Как html-парсер на php написать. Вводная часть — 07.07.2020

Введение Здесь и далее в статье будим называть документ, содержащий html просто «Документ». Dom дерево, находящееся в элементе, будет называться «Подмассив». Что должен делать парсер? Давайте сначала определимся, что должен делать парсер, чтобы в будущем отталкиваться от этого при разработке. А именно, парсер должен: Проектировать dom-дерево на основе документа Если ПОДРОБНЕЕ

C++/Qt: пора валить?. — 15.05.2020

За что многие любят связку С++ и Qt? За то, что она позволяет решать практически любые задачи без смены контекста. Язык, на котором можно писать быстрые программы, простая, единообразная и хорошо документированная структура, кроссплатформенность, и за всем этим – огромное сообщество. Давайте структурно декомпозируем разделим на части тот тип проектов. ПОДРОБНЕЕ

Как переиспользовать код с бандлами Symfony 5? Часть 2. Выносим код в бандл

Поговорим о том, как прекратить копипастить между проектами и вынести код в переиспользуемый подключаемый бандл Symfony 5. Серия статей, обобщающих мой опыт работы с бандлами, проведет на практике от создания минимального бандла и рефакторинга демо-приложения, до тестов и релизного цикла бандла. В предыдущей статье мы создали минимальный бандл из двух ПОДРОБНЕЕ

Как переиспользовать код с бандлами Symfony 5? Часть 1. Минимальный бандл

Поговорим о том, как прекратить копипастить между проектами и вынести код в переиспользуемый подключаемый бандл Symfony 5. Серия статей, обобщающих мой опыт работы с бандлами, проведет на практике от создания минимального бандла и рефакторинга демо-приложения, до тестов и релизного цикла бандла. В первой части: Зачем нужны бандлы Example Project: Calendar ПОДРОБНЕЕ

«Взломать» за 60 секунд или карантинное безумие

Небольшая история о неадекватном заказчике и нахождении уязвимости на сайте за 1 минуту. Не ожидал, что именно эта история станет моей первой статьей на Хабре. Пишу пока горячо! Все что Вы прочитаете далее — это не призыв к действию или попытка кого — либо скомпрометировать. 5 апреля 2020 г. Увидел ПОДРОБНЕЕ

Craftable — Laravel CRUD generator

Всем привет. Расскажу о CRUD генераторе для Laravel. Для студенческой работы мне надо было сделать много CRUD формочек, последний раз когда у меня была такая задача (в 2017), я использовал Yii2 и Gii. В этот раз я решил сделать решение на базе Laravel, но своего встроенного генератора для GUI в ПОДРОБНЕЕ

Doctrine ResultSetMapping на примерах

Doctrine ORM предоставляет разработчику удобные средства выборки данных. Это и мощный DQL для работы в объектно-ориентированном ключе, и удобный Query Builder, простой и понятный в использовании. Они покрывают большую часть потребностей, но иногда возникает необходимость использовать SQL запросы, оптимизированные или специфичные для конкретной СУБД. Для работы с результатами запросов в ПОДРОБНЕЕ

Spiral: высокопроизводительный PHP/Go фреймворк

Привет, Хабр. Меня зовут Антон Титов, CTO компании Spiral Scout. Сегодня я хотел бы рассказать вам про нашего PHP-слона. А точнее про вторую версию опен-сорсного full-stack PHP/Go фреймворка — Spiral. Spiral — это компонентный full-stack фреймворк, разрабатываемый нашей компанией более одиннадцати лет и обслуживающий под сотню реальных проектов. Программный пакет ПОДРОБНЕЕ

Временная локализация на Symfony 4 + Twig

Потребность во временной локализации продукта возникает, когда продукт вырастает до таких масштабов, при которых необходима работа в разных временных зонах (очевидность). Хочется описать вариант простой идеи решения этого кейса. Предыстория такова: разрабатывали нишевую CRM/ERP-систему, а потом нам сказали, что буквально завтра с этой системой будут работать по франшизе от Владивостока ПОДРОБНЕЕ

Хочешь стать веб-разработчиком? Учи Node.js, а не PHP

Один из самых частых вопросов, которые я слышу от своих учеников, звучит так: «Почему вы преподаете нам Node.js, а не PHP?» Ответ «Поверьте, я знаю, потому что работаю в этой индустрии» почему-то оказывается недостаточно убедительным. Потому я решил изложить здесь причины того, почему я преподаю именно Node.js и почему вы ПОДРОБНЕЕ