The Official Site of the PHP Developer and DevOps Engineer Ray Icemont

About me and the site

Hi, my name is Ray (Yuri) Icemont. I'm a PHP Backend Developer, DevOps Engineer and Linux enthusiast.

I have more than 15 years of experience in PHP development, as well as design and maintenance of IT infrastructure, including high-load projects requiring high availability.

I am an introvert, which is probably why I haven't had a personal website or any social media accounts all this time. But the internet is not only a "socialization medium" but also an "institution of socialization". And so with the beginning of a new stage in my life I got a GitHub account, then a LinkedIn account and now even a personal website. I sincerely hope it benefits both me and the society.

This site is powered by a mini CMS written by me in PHP. The third party components are Twig for templating and gettext for internationalization. For the frontend (not my forte) Bootstrap is used.

More about me and the website

IT and Development

In the PHP category I will publish articles about PHP, about scripts, various solutions, notes, etc. In the Linux category I plan to post publications, tutorials and share my personal experience. As my native language is Russian, firstly all publications will be in Russian, then later I will translate them into English.

Hobby

My hobby is designing and assembling various electronic devices. I have been interested in electronics and circuitry since I was a child, from the age of 6. At first I flipped through the pages of popular publications on radio engineering, and then, after learning to use the soldering iron, I assembled simple devices according to circuit diagrams published in these magazines and books.

Sling - Simple Laravel Invoice Generator

My scripts 20:05 / 06.02.2022

Sling - Simple Laravel Invoice Generator.
It's an open-source web application that helps you create invoices and track income. Sling is based on the Laravel PHP framework.

Sling

Sling was originally created for personal use, for convenient accounting of income and invoice generation for Individual Entrepreneur with "Small Business" status in Georgia (tax is paid on total revenue every month). This application will be useful for businesses and individuals with a similar taxation system, or just for generating invoices and income accounting.

Features

  • Client Accounting.
  • Separate invoice number prefix for each customer with the ability to set the initial number index.
  • Generate invoices & Download invoices as PDF.
  • Invoicing model: "one invoice = one service"
  • One main currency for accounting with the ability to invoice in other currencies. If the invoice is billed in a non-primary currency, it is possible to get an exchange rate from an exchange rate provider for the invoice payment date. At the moment only exchange rate provider for GEL (Georgian Lari) is available, but providers for other currencies can be easily added.
  • Unlimited number of payment methods can be created. Different payment method can be selected for each invoice. Information about the selected payment method will be added to the generated invoice.
  • Reports generation for the selected period with grouping by clients

120

Docker: Nexcloud + PHP FPM + Let's Encrypt

Docker 13:09 / 15.07.2021

The official Nextcloud image for Docker already includes options to automatically obtain a certificate from Let's Encrypt – to do this, just define environment variables LETSENCRYPT_HOST and LETSENCRYPT_EMAIL in the Docker Compose file. But this is not possible for the PHP-FPM version of the image for obvious reasons. Of course, you can solve everything with the container proxy, for example nginx-proxy, but if you need to get Nextcloud up and running quickly just to get acquainted with its functionality and SSL is a must for most of the functionality, then perhaps a simpler solution (but maybe not quite right).

Nexcloud

Here is my solution for raising a fully functional Nextcloud instance on Docker, based on an image with PHP-FPM and with SSL from Let's Encrypt.

113

Footer for a picture or photo with ImageMagick

Snippets 20:09 / 05.07.2021

Recently in one of the chats a task on ImageMagick was discussed, which I found interesting, due to the fact that it was considered to be difficult and there were no ready similar solutions.

Briefly, the task was as follows: you need to write a script that will use ImageMagick to add a footer to a photo or image. And this footer should not overlap the original image, but be added at the bottom by the width of the processed image. The footer (black) should have a logo (static) and two labels (white) with the ability to choose any fonts for these labels.

I've never had any experience with ImageMagick for PHP before, as for my tasks I was satisfied with the capabilities of GD library. I wanted to solve this task, and with the ready solution I'm sharing in this publication.

124

New version of CurlWrapper (v1.1.0) - OOP wrapper for cURL

My scripts 15:51 / 05.07.2021

You can read more about CurlWrapper, a small and simple OOP wrapper for PHP cURL with no overhead, in this publication.

The new version (v1.1.0) adds functionality for setting basic configuration parameters:

  • User-Agent
  • Timeout
  • Referer

95

CurlWrapper - the simplest OOP wrapper for PHP cURL

My scripts 16:00 / 10.06.2021

About CurlWrapper library

CurlWrapper – the simplest OOP wrapper for PHP cURL with no overhead.
Designed to test and work with simple RestFull and JSON APIs and execute simple queries.

No advanced settings, just a minimum set of options needed to initialize cURL and perform simple queries with different headers. Writing similar code can be done in minutes, but sometimes you want to have a ready-made library for simple tests so you don't waste time.

95