Метка: php

  • Как экспортировать коллекции из Postman и сконвертировать в http/curl/wget

    Привет. Перед прочтением этой статьи настоятельно рекомендую надеть резиновые перчатки, респиратор и что-нибудь на глаза, чтобы не забрызгало.

    Мы будем трогать постман.

    Пользователь Postman каждый день

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

    Пост пропитан лютой ненавистью к этому ржавому глюкавому дерьмодемону.

    (далее…)
  • Деревья без рекурсии

    Привет. Статья расчитана на разработчика до мидла включительно, но в целом может оказаться полезной и другим. Так, для разминки.

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

    Есть как минимум три относительно простые задачи, которые связаны с деревьями:

    • как узнать всех родителей некоего элемента в плоском связном списке (иными словами, восстановить иерархию без построения дерева; узнать путь до элемента);
    • как построить иерархическую структуру, имея на руках только плоский связный список его узлов;
    • как вывернуть эту иерархию обратно в плоский связный список.

    Возможно, ты удивишься, но для решения всех трёх задач рекурсия не нужна. Ниже будут их решения. Они элементарны, но неочевидны (хотя казалось бы).

    (далее…)
  • Быстродействие коллекций Laravel

    Photo by Bruno Guerrero on Unsplash

    Привет. Это небольшой пост-шпаргалка. В нём речь пойдёт о классах Illuminate\Support\{Collection, LazyCollection}.

    Я обожаю коллекции Laravel. Они очень гибки и комфортны в использовании при обработке массивов данных. Однако это балует и расслабляет разработчика. Более того, вся философия Laravel и good practices вертятся вокруг гибкости и простоты написания кода. Всё это может плохо сказаться (и в итоге сказывается) на производительности бекенда.

    Ниже рассмотрим несколько конкретных случаев, на которые следует обратить внимание.

    (далее…)
  • Отладка cli-скриптов на php из docker-контейнера в NetBeans штатными средствами

    Привет. Я тут на досуге написал скрипт, которым подменил php-интерпретатор в NetBeans.

    Об установке и настройке этой IDE я подробно рассказывал в этой статье: Настройка среды php-разработки с нуля на NetBeans + php + docker + xdebug3. Она тоже будет тебе полезна, часть информации по отладке ты можешь черпануть оттуда. Здесь я буду запускать скрипты штатными средствами.

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

    В прошлом посте я придумал простейший скрипт, который в этом немного помог. Вот его исходный вид:

    #!/bin/bash
    docker exec test-php php \
        -dxdebug.mode=debug \
        -dxdebug.start_with_request=1 \
        `basename ${BASH_ARGV[0]}` \
        "${@:1:$#-1}"

    Но он был неуниверсальным и грубым. Он не учитывал много чего, что можно настроить в разделе ‘Run Configuration’ окна ‘Project Properties’:

    (далее…)
  • Laravel: скаляры в замыканиях маршрутов и контроллерах

    Привет. Для начала небольшое предисловие и контекст.

    Это мой перевод оригинальной заметки «Primitive Types in Controllers and Closure Routes» от Paul Redmond (кеш). Я нашёл её когда пытался разобраться с одной маленькой проблемой при работе с маршрутами и их параметрами в Laravel.

    Суть заключена в трёх символах и одном пробеле, а случай не такой уж частый.

    (далее…)
  • Настройка среды php-разработки с нуля на NetBeans + php + docker + xdebug3

    Привет. Это здоровенный мануал-шпаргалка по настройке этой IDE для php-разработки. Здесь будет много текста и картинок.

    Полагаю, он больше сгодится для российских и белоруских разработчиков, переходящих c PhpStorm, ибо есть повод. В этом контексте было решено построить себе запасной инструментарий. А ещё я всё-таки закрыл гештальт и познакомился с Netbeans, как давно хотел.

    На деле эта IDE во многих отношениях проще шторма, но местами и переусложнена. Будь готов многого лишиться. Постараюсь раскрыть здесь это поподробнее. Поэтому статья иногда будет дополняться и корректироваться.

    Версия Netbeans на сию секунду — 24.

    В этой статье я установлю NB, настрою его, разверну тестовый проект с php8.3 и xdebug3 на контейнерах и настрою отладку php-скриптов в разных позах.

    Я обкатал стек на двух ПК, так что сетап проверен.

    (далее…)
  • Почему Laravel пытается подключиться к БД при инициализации?

    assorted electric cables
    Photo by John Barkiple on Unsplash

    Столкнулся на работе с занятной проблемой на Laravel 9.

    Однажды, я, прогоняя тесты phpunit, никак не мог добиться их удачного выполнения: они постоянно падали, но написаны гарантированно верно, вчера их запускал. Через какое-то всё прошло. Я не был удивлён: на БД-песочнице проводились работы, вскоре она была перезапущена и я таки прогнал тесты с успехом.

    Но осознав произошедшее меня обдало ледяным потом — стоп, а какого хуя? В моих тестах нет подключения к БД!

    (далее…)
  • Сбросить пароль пользователя MediaWiki

    Пользователь MediaWiki потерял пароль от учётной записи, требуется восстановить доступ.

    (далее…)
  • Мои обновления

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

    (далее…)
  • Telegram-бот Гастролог — справочник по первой диете (ака стол №1)

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

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

    Знакомься, бот Гастролог — @gastrologbot

    Пишешь ему напиток, продукт или блюдо, а он говорит можно его или нельзя в рамках диеты №1.

    (далее…)