Graphs and Pathfinding

Graphs and Pathfinding

Pathfinding is a classic problem. It typically involves finding the shortest or cheapest path between two points. There are many algorithms to solve this problem, most of which are based on graphs with various modifications. Some algorithms are more effective than others, depending on the situation. Let's go through some of the most popular ones and discuss which algorithm is more effective in which scenario. We'll look at several commonly used algorithms: BFS, GBFS, Dijkstra, and A*.

Past and future of HTML Canvas. A brief overview of 2D, WebGL, and WebGPU

Past and future of HTML Canvas. A brief overview of 2D, WebGL, and WebGPU

What is Canvas?

Canvas is an HTML element designed for drawing using JavaScript. It acts as a container for drawing. Like other HTML elements, the Canvas has its own tag and is embedded on the page in the following way:

<canvas id="canvas">Canvas is not supported by your browser</canvas> 

All further operations with Canvas are done using JavaScript. First, we need to create a Canvas object:

const canvas = document.getElementById('canvas');

Then define the Context:

const context = canvas.getContext('2d');

Each Canvas can have only one Context. Multiple calls of getContext for the same Canvas will return a reference to the same Context.

How to create a PHP package. Part 2: PHPUnit

How to create a PHP package. Part 2: PHPUnit

This is the second part of a series on creating a PHP package.

In the previous part, we initialized a project using the composer and wrote the code itself. In this part, we will integrate the PHPUnit into our project and write tests.

Code should be covered with tests. This will help to avoid bugs when modifying the code. When we connect the CI to the repository, tests will run automatically as pull requests are created.

How to create a PHP package. Part 1: Composer

How to create a PHP package. Part 1: Composer

If you created a useful PHP library and want to share it with others or reuse it in your other projects, it will be convenient to pack it into a separate package. In this series of articles, we'll discover how to properly organize code into a reusable package, create a structure of the project, write unit tests, create an automatic code style check, implement CI using github actions, and much more. As an example, we will write step by step a small PHP library for syntax highlighting. It will accept text and return highlighted PHP code.

JavaScript Canvas Sprite Animation

JavaScript Canvas Sprite Animation

Sprite sheets have been used in game development for many years. In web development it allows you to reduce:

  • a number of HTTP requests for downloading many separate images,
  • webserver load as a result of fewer requests,
  • download time as a combined sprite sheet is smaller than the individual files.

I want to share the approach that I used in my games written with canvas and javascript. I think this is a reusable approach for animating different objects on a canvas.

To demonstrate it, I compiled a Sonic sprite sheet from the "Sonic the Hedgehog 3" game.

Using AWS Lambda Layers for PHP

Using AWS Lambda Layers for PHP

Until recently AWS Lambda did not support PHP, but with the advent of the runtime API and layers, now we able to implement an AWS Lambda runtime in any programming language including PHP. Each layer can contain libraries, a custom runtime, or other dependencies. You can create layers, or use layers published by AWS and other AWS customers.