Wednesday, December 2, 2015

PHLY

opl-small

'PHLY' is an elegant and versatile launching soon HTML template for your next idea. The minimal One Page template comes with 22 layout variations including effects for rain, moving clouds, snow and more. Also worth mentioning multiple map markers, countdown timers, SASS files, 24/7 support and AJAX integration into your MailChimp lists, nice.

by Rob Hope via One Page Love

Using the RulerZ Rule Engine to Smarten up Playlist Building

I can give iTunes a few rules, and it will update the list of playlist tracks based on those rules, without me having to think about how it is doing that.

Smart playlist

But how does it do this? How does it build my simple rules into a filter for tracks? When I tell it things like; “give me everything from The Glitch Mob, produced before 2014, where plays count is less than 20”, it understands what I mean.

Now, we could make these Smart Playlists with many conditionals. If you’re anything like me though, you just cringed at that thought.

Enter RulerZ

RulerZ is a rule engine. It’s an implementation of the Specification pattern. You know where else you’ve seen the Specification pattern? In database abstraction layers like Eloquent and Doctrine!

The basic idea is that you start with some sort of list. It could be users in a database, or expenses in a CSV file. Then you read them into memory (or even filter before that) and filter them according to some chain-based logic. You know the kind:

$list
    ->whereArtist("The Glitch Mob")
    ->whereYearLessThan(2015)
    ->wherePlayCountLessThan(20)
    ->all();

In database abstraction layers this is usually done by generating SQL. We send that SQL to the database server, where the records are brought into memory and then filtered. What we get is the already-filtered list, but the idea is still the same.

We wouldn’t want to make those filters as conditionals, through PHP. The Specification pattern (and by extension SQL) are great for applying this boolean logic.

Let’s take a look at how to use RulerZ:

use RulerZ\Compiler;
use RulerZ\Parser;
use RulerZ\RulerZ;

$compiler = new Compiler\EvalCompiler(
    $parser = new Parser\HoaParser()
);

$rulerz = new RulerZ(
    $compiler, [
        $visitor = new Compiler\Target\ArrayVisitor(),
    ]
);

$tracks = [
    [
        "title"  => "Animus Vox",
        "artist" => "The Glitch Mob",
        "plays"  => 36,
        "year"   => 2010
    ],
    [
        "title"  => "Bad Wings",
        "artist" => "The Glitch Mob",
        "plays"  => 12,
        "year"   => 2010
    ],
    [
        "title"  => "We Swarm",
        "artist" => "The Glitch Mob",
        "plays"  => 28,
        "year"   => 2010
    ]
    // ...
];

$filtered = $rulerz->filter(
    $tracks,
    "artist = :artist and year < :year and plays < :plays",
    [
        "artist" => "The Glitch Mob",
        "year"   => 2015,
        "plays"  => 20
    ]
);

In this example, we have a list of tracks. This could be something we export from iTunes…

We create a rule compiler, and a new RulerZ instance. We can then use the RulerZ instance of filter our track list. We combine the textual rules with the parameter list to create the boolean filter logic.

Like SQL but in PHP, against records stored in memory. It’s simple and elegant!

Building Smart Playlists

Let’s put this knowledge to use! We’ll begin by extracting an iTunes library:

Open iTunes, click “File” → “Library” → “Export Library…”

Exporting a library from iTunes

Save the XML file as library.xml, in your working directory.

Saving a library to XML

Depending on the size of your library, this file may be large. My library.xml file is about 46k lines long…

Continue reading %Using the RulerZ Rule Engine to Smarten up Playlist Building%


by Christopher Pitt via SitePoint

Athena Partenos

Athena Partenos, the art of translation


by csreladm via CSSREEL | CSS Website Awards | World best websites | website design awards | CSS Gallery

FastEx Logistics WordPress Theme

Transport & Logistics WordPress Theme for logistics, warehouse, transportation businesses.


by csreladm via CSSREEL | CSS Website Awards | World best websites | website design awards | CSS Gallery

Harmogram

Harmogram is an audiovisual multisensory platform that enables its users to enjoy music of various categories including electronic, hip-hop, indie, rap, experimental, mixtape, rock, pop, and more.


by csreladm via CSSREEL | CSS Website Awards | World best websites | website design awards | CSS Gallery

hair&life design TREE

hair&life design TREE is hair salon in japan ginza


by csreladm via CSSREEL | CSS Website Awards | World best websites | website design awards | CSS Gallery

re.create

A community of super talented creatives who help each other to develop and grow.


by csreladm via CSSREEL | CSS Website Awards | World best websites | website design awards | CSS Gallery