Привет. Перед прочтением этой статьи настоятельно рекомендую надеть резиновые перчатки, респиратор и что-нибудь на глаза, чтобы не забрызгало.
Мы будем трогать постман.
И здесь не будет скриншотов для кретинов о том, как нажимать кнопочки в его паршивой гуйне, чтобы экспортировать за раз целую 1 коллекцию или 1 запрос в curl. Мы же не животные.
Пост пропитан лютой ненавистью к этому ржавому глюкавому дерьмодемону.
Привет. Статья расчитана на разработчика до мидла включительно, но в целом может оказаться полезной и другим. Так, для разминки.
Ты наверняка знаешь что такое рекурсия. Она применяется в разных местах, но, как правило, это классические графовые алгоритмы (DFS, BFS, etc.), когда надо пройтись по веткам вширь, вглубь, туда, сюда и вообще. Однако рекурсия может обойтись дорого, учитывая, помимо прочего, ограничения стека и количество данных.
Есть как минимум три относительно простые задачи, которые связаны с деревьями:
как узнать всех родителей некоего элемента в плоском связном списке (иными словами, восстановить иерархию без построения дерева; узнать путь до элемента);
как построить иерархическую структуру, имея на руках только плоский связный список его узлов;
как вывернуть эту иерархию обратно в плоский связный список.
Возможно, ты удивишься, но для решения всех трёх задач рекурсия не нужна. Ниже будут их решения. Они элементарны, но неочевидны (хотя казалось бы).
Привет. Это небольшой пост-шпаргалка. В нём речь пойдёт о классах Illuminate\Support\{Collection, LazyCollection}.
Я обожаю коллекции Laravel. Они очень гибки и комфортны в использовании при обработке массивов данных. Однако это балует и расслабляет разработчика. Более того, вся философия Laravel и good practices вертятся вокруг гибкости и простоты написания кода. Всё это может плохо сказаться (и в итоге сказывается) на производительности бекенда.
Ниже рассмотрим несколько конкретных случаев, на которые следует обратить внимание.
Как известно, NetBeans сам не умеет запускать консольные скрипты, которые находятся внутри контейнера. Здесь же я покажу как я решил эту проблему и теперь запускаю скрипты не из терминала, а одной кнопкой в гуйне. В целом, как показывает практика, решение работает исправно.
В прошлом посте я придумал простейший скрипт, который в этом немного помог. Вот его исходный вид: