Официальный сайт PHP-разработчика и DevOps инженера Ray Icemont

Обо мне и сайте

Привет! Меня зовут Ray (Юрий) Icemont. Я PHP Backend Developer, DevOps Engineer и Linux-энтузиаст.

Уже более 15 лет я занимаюсь разработкой на PHP, а также проектированием и сопровождением ИТ-инфраструктуры, в том числе для высоконагруженных проектов, требующих высокой доступности.

Я интроверт и, наверное, поэтому все это время у меня не было личного сайта, я не вел аккаунтов в социальных сетях. Но интернет это не только "среда социализации", но и "институт социализации". И вот с началом нового этапа в жизни у меня появился аккаунт GitHub, затем аккаунт в LinkedIn и теперь даже личный сайт. Я искренне надеюсь, что это принесет пользу и мне и социуму.

Этот сайт работает на мини CMS написанной мною на PHP. Из сторонних компонентов используются Twig для шаблонизации и gettext для интернационализации. Для фронтенда (не моя сильная сторона) используется Bootstrap.

Подробнее обо мне и сайте

IT и разработка

В категории PHP я буду публиковать статьи про PHP, про скрипты, различные решения, заметки и т.п. В категории Linux планирую размещать публикации, руководства и делиться личным опытом. Так как мой родной язык русский, то в первую очередь все публикации будут в версии сайта на русском языке, а позже я постараюсь переводить их на английский.

Хобби

Моё хобби это разработка, сборка и отладка различных электронных устройств. Схемотехникой я увлекаюсь еще с детства, лет с 6 — сначала перелистывая страницы популярных изданий по радиотехнике, а затем подружившись с паяльником собирал простейшие устройства по схемам опубликованным в этим журналах и книгах.

Sling - Простой генератор инвойсов на Laravel

Мои скрипты 20:05 / 06.02.2022

Sling - Simple Laravel Invoice Generator.
Это веб-приложение с открытым исходным кодом, которое помогает создавать инвойсы и отслеживать доходы. Sling основан на PHP-фреймворке Laravel.

Sling

Sling изначально был создан для личного пользования, для удобного учета доходов и генерации инвойсов для ИП со статусом "Малый бизнес" в Грузии (налог платится ежемесячно с общего оборота). Это приложение будет полезно для предприятий и частных лиц с аналогичной системой налогообложения, или просто для генерации инвойсов и учета доходов.

Особенности

  • Учет клиентов.
  • Отдельный префикс номеров инвойсов для каждого клиента с возможностью установки начального индекса номера.
  • Создание инвойсов & Скачивание инвойсов в формате PDF.
  • Модель выставления счетов: "один счет = одна услуга"
  • Одна основная валюта для учета с возможностью выставления инвойсов в других валютах. Если инвойс выставлен в неосновной валюте, можно получить обменный курс от поставщика обменных курсов на дату оплаты инвойса. На данный момент доступен только провайдер обменных курсов для грузинского лари, но провайдеры для других валют могут быть легко добавлены.
  • Можно создать неограниченное количество способов оплаты. Для каждого инвойса может быть выбран свой метод оплаты. Информация о выбранном способе оплаты будет добавлена в сгенерированный инвойс.
  • Формирование отчетов за выбранный период с группировкой по клиентам.

458

Docker: Nexcloud + PHP FPM + Let's Encrypt

Docker 13:09 / 15.07.2021

В официальный образ Nextcloud для Docker уже включены возможности для автоматического получения сертификата от Let's Encrypt – для этого достаточно определить в Docker Compose файле переменные окружения LETSENCRYPT_HOST и LETSENCRYPT_EMAIL. Но для версии образа с PHP-FPM такой возможности по очевидным причинам нет. Конечно все можно решить с помощью контейнера с proxy, например nginx-proxy, но если Nextcloud необходимо поднять быстро для того, чтобы просто познакомиться с функционалом, а SSL для большей части функциональности обязателен, то возможно более простое решение (но возможно не совсем правильное).

Nexcloud

Предлагаю ознакомиться с моим решением для поднятия полностью работоспособного экземпляра Nextcloud на Docker, на базе образа с PHP-FPM, и с SSL от Let's Encrypt.

488

Нижний колонтитул для картинки или фото с помощью ImageMagick

Сниппеты 20:09 / 05.07.2021

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

Вкратце задача выглядела так: необходимо написать скрипт, который с помощью ImageMagick будет добавлять нижний колонтитул (футер) на фото или картинку. Причем этот колонтитул не должен накладываться на первоначальное изображение, а добавляться внизу по ширине обрабатываемого изображения. На колонтитуле (черном) должны быть логотип (статический) и две надписи (белые) с возможностью выбора произвольных шрифтов для этих надписей.

Ранее я никогда не имел опыта с ImageMagick для PHP, так как для моих задач мне вполне хватало возможностей библиотеки GD. Мне захотелось решить эту задачу, и с готовым решением я делюсь в этой публикации.

454

Новая версия CurlWrapper (v1.1.0) - ООП-обертки для cURL

Мои скрипты 15:51 / 05.07.2021

Почитать подробнее о CurlWrapper, маленькой и простой ООП-обёртке для PHP cURL без излишеств, можно в этой публикации.

В новой версии (v1.1.0) добавлен функционал для настройки основных параметров конфигурации:

  • User-Agent
  • Таймаут
  • Referer

407

CurlWrapper - простейшая ООП-обертка для cURL

Мои скрипты 16:00 / 10.06.2021

О библиотеке CurlWrapper

CurlWrapper – это маленькая и простая ООП-обертка для PHP cURL без излишеств.
Предназначена для тестирования и работы с простыми RestFull и JSON API и выполнения простых запросов.

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

502