It's been super rewarding diving back into C programming lately, and the main focus has been my little project, `csend`. It's a peer-to-peer chat application I've been tinkering with. The big idea is to get it running smoothly on different systems, specifically modern POSIX platforms like Linux, and, for a bit of a retro challenge, classic Mac OS.
Understanding the CakePHP Queue Plugin and Jobs
In this post, we look at how to use CakePHP's Queue Plugin to efficiently manage and execute background tasks. We'll explore the structure, implementation, and benefits of this approach, with a focus on the `src/Job` directory and related components of Willow CMS.
Migrations in CakePHP
Migrations are a tool in CakePHP for managing database schema changes. They provide a version-controlled way to modify your database structure, making it easier to track, share, and deploy changes across different environments or installations of your application. CakePHP has tools to generate snapshots of your database structure and migrations between them. Given that migrations can also execute query language statements on your database, they can also be used to modify data. Willow CMS has evolved through several releases since going live for this site, with some of those releases requiring changes to the database schema and data. In this post I'll talk you through some practical examples of how I handled this.
Rate Limiting and IP Blocking in Willow CMS
This blog post details the implementation of rate limiting and IP blocking within a Willow CMS, focusing on the key code components and their rationale. This information is intended for developers looking to implement similar security measures in their projects. Since putting Willow live for this site, it has been interesting to view the logs and see all the attempts from Singapore trying to find exploits!
Setting Up a Complete Development Environment with Docker for Willow CMS
This article provides a comprehensive breakdown of Docker Compose configuration for Willow CMS's development environment. The setup includes multiple containerized services: the main WillowCMS application server, MySQL database, phpMyAdmin, Jenkins for CI/CD, Mailpit for email testing, and Redis Commander for cache management. Each service is carefully configured with specific ports, volumes, and environment variables to ensure smooth integration and development workflow. The environment can be easily started using a custom setup script that handles initialization, database setup, and provides options for managing the development environment. The article concludes with a detailed explanation of the WillowCMS Dockerfile, covering everything from base image selection to service configuration and process management.