bueller.ca

the digital workshop of Matt Ferris

Linux ACLs

Feb 26, 2016

When basic unix permissions can't express the access requirements you need to impose on a filesystem, you need to turn to the more powerful Access Control List (ACL). Enabled by default on most filesystems in most Linux distributions these days, ACLs provide a rich toolset for handling complex permissions. While they may be intimidating at first, they are actually quite easy to understand.

Continue reading ›

Introducing Auth, and updates to DI and HttpRouting

Oct 21, 2015

Auth is an extensible authentication library for PHP. It offers a decoupled approach to authentication with a request/handler based architecture. It's still in alpha with version 0.1 just being made available.

Other PHP packages that have been updated are:

  • DI version 0.3, now supports bundled service definitions
  • HttpRouting version 0.4.1
    • Heavily refactored to represent routes as objects and provide extensible route matching
    • Dispatcher now provides helper methods for adding routes for specific HTTP methods (get(), post(), put(), etc.)

Introducing DI, Events, and HttpRouting

May 4, 2015

Three new PHP libraries are available. DI is a dependency injection container. Events is an event dispatching/handling/logging library. HttpRouting is an HTTP request routing library. They are all available for installation via composer as mattferris/di, mattferris/events, and mattferris/http-routing respectively.

aims version 2.1 released

May 15, 2014

This minor release of aims is now available for download as a tgz and a .deb.

Changes in this release:

  • ability to use custom chains
  • negated filtering on interfaces, hosts and protocols
  • new "any" clause for better readability

snappify version 0.2 released

October 29, 2013

Snappify version 0.2 is now available for download. Changes in this version include:

  • status now shows new and deleted symlinks
  • diff now works on new files
  • updated readme

aims version 2.0 released

September 15, 2013

The second major release of aims is now available for download as a tgz and a .deb.

This major version release brings many new changes:

  • incorporates a robust new parser called mexpar
  • streamlined rule structure and syntax
  • intelligent rule checking
  • new and improved API
  • simplified command line syntax

Check out the all-new online documentation.

snappify version 0.1 released

Febrary 25, 2013

The first release of snappify is now available for download. snappify is a *nix snapshot management utility.

Formation version 0.1 released

January 31, 2013

The first release of Formation is now available for download. Formation is a PHP libary that makes validating form data easier.

Defining Aggregates for an Expressive Domain Model

January 27, 2013

When I started to apply the concepts of Domain-Driven Design to my projects, the decision of what entity to choose as the root of an aggregate seemed to be relatively straightforward. On smaller projects with simple domain models the choice can be fairly obvious, but on large projects or those with more complex domain models the choice is a lot less clear. Most likely, your aggregate roots will change along with refactoring of your model as you understanding of the domain improves.

Continue reading ›

LiveEdit version 0.2 released

January 20, 2013

LiveEdit version 0.2 is now available for download. Changes in this version are:

  • New send data type
  • Ability to override options using HTML attributes
  • Bug fixes

aims version 1.2 released

December 23, 2012

aims version 1.2 is now available for download as a tgz and a .deb.

Changes in this version are:

  • unload mode to flush rules (aims -m unload)
  • -V option to print the version
  • example rulesets

As part of the 1.2 release, there is now online documentation for aims as well as new documentation for the aims module API.

Virtual Getters vs Actual Getters

December 15, 2012

Writing getters and setters sucks, especially if you have a lot of properties in your classes. A method I've used in the past is to create a Base class from which all other classes are extended. This base class uses the magic method __call() to provide virtual getters and setters.

Continue reading ›