• CRUDlex 0.9.10 Released

    94 commits later, CRUDlex 0.9.10 got released!

    This release comes with a big cleanup within the API making it not backward compatible, so take care!

    The main new thing beside the code itself is the new documentation which is based on Sphinx now. It combines the manual and the API documentation at a single place.

    A lot of fixes and cleanup happened along with some smaller new features. Mainly noted the switch to flatpickr as datetime picker and the support for RTL languages. Some events within the file handling have been added as well. And also the SimpleFilesystemFileProcessor is more configurable now.

    The input validation is now handed over to the shiny new library Valdi which got developed for this project. But more on that later.

    Here and there some IDs and classes for the CSS and the release is done.

    Here is the full changelog:

    • Attention: Removed the prefix “CRUD” from all classes as they live in their own namespace anyway
    • Attention: The data types “int” and “bool” got renamed to “integer” and “boolean”
    • Attention, API changes:
      • CRUDlex\Data -> CRUDlex\AbstractData
      • EntityDefinition::getInitialSortAscending() -> EntityDefinition::isInitialSortAscending()
      • ServiceProvider::getMangeI18N() -> ServiceProvider::isManagingI18n()
      • Show-Page: The id “crudEntityShowTable” is now a class
      • CRUDlex\EntityValidator changed its return structure to the one of Valdi: http://philiplb.github.io/Valdi/docs/html/0.9.0/manual/gettingstarted.html#validation
      • The date and datetime fields changed moved their classes to the input fields and changed their names to “crudDate” and “crudDateTime”
    • Attention: Fixed a security issue in the static file provider
    • Changed the entity validation to https://github.com/philiplb/Valdi
    • Changed the date and date time pickers to https://github.com/chmln/flatpickr
    • Replaced the markdown manual and the APIGen documentation with an unified Sphinx version
    • Added RTL support in the i18n system
    • Added file handling events
    • Made a base path configurable for the SimpleFilesystemFileProcessor
    • The ServiceProvider uses now static instantiation instead of calling his own class making it easier to override
    • Added some more IDs and classes in the HTML to be more tweakable
    • Fixed a crash if the table name of an entity is a MySQL keyword
    • Fixed a crash if the field name of an entity is a MySQL keyword
    • Fixed a crash if the sort field name of an entity is a MySQL keyword
    • Fixed a crash if non required reference fields where not given
    • Fixed a crash if referenced entities got soft deleted by a third party
    • Fixed the sort order being properly handled in the pagination buttons now
    • Fixed and refactored a lot of things revealed by static code analysis
  • Using Amazon S3 as Backend for the Blobstore of Flynn

    Again, quick, Flynn is a self hosted platform as a service which is easy to setup and operate.

    It stores the files of applications to deploy (along all releases for rollbacks) within a Flynn internal application called blobstore. It is a data store for large files and the underlying implementation uses the Large Object support of PostgreSQL.

    If you have an application of the size like 100MB, which is quite common with dependencies, this release history can grow quickly and your available hard drive space on your cluster servers can shrink in the same speed.

    And your backups grows with the same speed as well. It takes longer to backup and longer to restore which increases your downtime in case.

    With the release of the stable version v20160624.1, Flynn gained the ability to use Amazon S3 as storage system for the blobs solving the mentioned problems.

    This posting shows you how to migrate a Flynn cluster to S3.

    Read on...
  • Configuring ufw for Flynn

    This posting might be a bit niche but could be nice for someone facing the same problem. :)

    It is about how to configure your Uncomplicated Firewall (ufw) on machines running a Flynn cluster.

    Flynn is a self hosted platform as a service which is easy to setup and operate. So lets ease the firewall configuration a bit.

    We’ve choosen ufw as it is really rather uncomplicated. So the implementation sounds easy enough, but comes with a few gotchas which is why I write this article in order to complement the official documentation.

    Read on...
  • CRUDlex 0.9.9 Released

    CRUDlex 0.9.9 just got released.

    A lot of stuff happened since 0.9.8, exactly 120 commits. The most noticeable new feature is for sure the list view being sortable now.

    And there is now the possibility to use UUIDs instead of incrementing integers as IDs in the MySQL data provider.

    Also optimistic locking landed for situations where an entity might be edited by two persons in parallel.

    And finally, the generated timestamps (created_at, updated_at and deleted_at) are using UTC now. Existing timestamps are interpreted like that and should be migrated on CRUDlex update.

    Here is the full changelog:

    • Attention: From now on, the created_at and updated_at timestamps are stored as UTC values in the MySQL data provider
    • The list views can be sorted now
    • Added optimistic locking for editing an entity
    • CRUDMySQLData now offers an option to use UUIDs as primary key instead of an auto incremented value
    • Added a function to the service provider to get the available locales
    • Added a function to the service provider to get the name of the language of a locale
    • Generating the language picker based on the available translation files instead of being hard coded
    • Fixed and refactored a lot of things revealed by static code analysis
    • Updated dependencies:
      • Symfony-Components to the current LTS version 2.8
      • “symfony/…”: “~2.8” (current LTS version)
      • “phpunit/phpunit”: “~4.8”
      • “satooshi/php-coveralls”: “1.0.1”
      • “apigen/apigen”: “4.1.2”
      • Eonasdan/bootstrap-datetimepicker V4.17.37
      • Bootstrap 3.3.6
      • moment.js 2.11.2
      • jQuery 2.2.0
  • Configuration of a Symfony 2.7 Project via Environment Variables

    I’ve been struggling around recently with running a Symfony 2.7 project having it’s configuration coming from environment variables.

    I’d like to present my current solution in case of someone else might find it useful. Or someone else knows a better solution and would like to contact me so I can write a follow up.

    Read on...