Быстродействие коллекций Laravel

Photo by Bruno Guerrero on Unsplash

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

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

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

Опубликовано
В рубрике blog Отмечено ,

Резервное копирование фотографий со смартфона

a person holding a smart phone in their hand
Photo by Vitalii Khodzinskyi on Unsplash

Привет. Сегодня заметка о том, как я настроил бекапинг мобильных фоток. Механизм прост, обкатан и проверен месяцами работы, так что описываю как есть.

Всё базируется на нескольких простых вещах:

  • Syncthing;
  • inotify-tools;
  • демонизированный shell-скрипт.

На десктопе — Ubuntu, на смартфоне — Android. Базовые хотелки:

  • логирование;
  • конфигурирование;
  • копирование фоток из директории Syncthing в безопасное место;
  • обработка нескопированных вовремя фоток.

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

План понятен, погнали делать.

Домашний сервер на Ubuntu 22.04 LTS. Часть 1: покупка, настройка, старт

a hard drive being removed from a hard drive
Photo by Andrey Matveev on Unsplash

Привет. Вообще, я не хотел писать пост об этом сюда, потому что в сети уже навалом такого добра, повторяться не хочется. Да и в моём канале уже есть некоторые выкладки по хештегу #околоNAS. Там, скорее, поток мыслей и прикидки как бы сделать дома сервачок.

Но пока разбирался с сабжем, подумал — да чё нет-то? Возьму и запилю посты в блоге, с нормальной конкретикой. Я же пишу о том, как сам решаю свои проблемы, вот и будет кому-то ещё пища для размышлений. И себе будущему, чтобы не забыть.

Зачин, как я люблю, небольшой предысторией.

Я давно возжелал домой какой-нибудь сервачок. В сущности, варианта было два: Synology DS220+ или самосборка с авиты. Оба подхода валидны и жизнеспособны, однако мне хотелось гибкости, юзер-френдливости, кастомизируемости, да подешевше и чтоб компактно. Это, знаешь ли, сложно совместить.

Дома валялся еле живой ноутбук HP Pavilion G6, прикинул палец к носу, погонял думы… Однако, долго ли, коротко ли, купил я себе б/у системник Dexp Aquilon O111.

Как установить драйвер wi-fi адаптера Dexp WFA-601 (RTL8811AU) на Ubuntu (обновляемый пост)

Привет. Я тут прикупил вот такой девайс:

Зачем — рассказал здесь. Предполагаю когда-нибудь заменить его нормальным PCI-E или подвести витуху, а до тех пор сойдёт и он. На коробке заявлена поддержка Linux, ценник невысок, мои требования к нему пока тоже. Главное, чтобы он работал и была антенна.

Я не могу спокойно смотреть на USB wi-fi свистульки: на коробке заявляется до 600 Мбит/сек (чем, впрочем, формально не врут), но USB2.0 даже в режиме High-Speed не может пропускать выше 480. USB-не-3.* безальтернативно будет узким горлышком при передаче данных. Этот адаптер хотя бы пару стен пробьёт, а наносвистоперделки без антенн — это просто смешно.

Дома у меня почти все компы на убунтах, посему я ожидал некоторые приключения (можно сказать, знал на что шёл при покупке). И хотя они не были увлекательными, я их прошёл и ниже даю выкладки по результатам.

Этот способ у меня сработал на Ubuntu 22.* и 23.* с абсолютно разным железом, но на 24.04 пришлось вновь гуглить решение.

Отладка 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’: