Older blog entries for mglazer (starting at number 345)

Screenshot of the new user friendly PHPortal management interface.

That is not new as in replacing but rather new as in in addition to.

This version is geared towards editors and managers not developers as the default PHPortal managment interface is.

3 Things

1. Concept Creation (pre-code)
Storyline, storyboard, visual written concept creation process.

2. Application Building (code-generation)
Auto-code creation based on recursive model array struct from above visual concept.

3. Deployment practices / services (code-distribution usage).

Growth Applications

The importance of storyboards or storylines in application structures.

Imagine an array of classnames, methods, arguments, and method events that is written as an application storyline.

Array models that are run by a controller to call independent programs and syncrhonize them.

It is like a musical performace of disparate musisicans and their maestro brought together to demonstrate a peice of music.

PHP Template Scripts aren't that at all.

They are more like a PHP parse layer than a templating engine.

A true templating engine wouldn't even have dynamic blocks let alone all the other PHP emulation crap you see these days.

Templating is the removal of all code and logic not the infusion of it. A real template only contains placeholders and the template engine only does variable interpolations for the placeholders. Everything else must be handled by the programmer.

Three new things

1. Database recordSet caching.

This is a different type of caching engine. It stores multiple internal script variables not URI based html output. The engine updates the cache independently of a timed limit.

We only cache select statement results.

Each cache contains the unqiue query we used.

On a Insert statement we delete all cached queries with the tablename and no WHERE clause.

On a Update or Delete statement we delete all cached queries that contain a Where clause with a single tablename.fieldname value that is equal to one of the Where Clause tablename.fieldname values from the Update or Delete statements.

If a query recorSet is cached we use it.

If a query recordSet is not cached we cache it then use it.

If a query recordSet has been altered by a Insert, Udpate, or Delete statement we delete the queries that are cached and affected by those statments i.e. same tablename no WHERE clause on a insert for the Update and Delete we seek cached queries with same tablename and where clauses that contain the field value of the ones updated or deleted, if found we then delete that query cache.

2. PHP template compiler.

Simple class that compiles templates into native PHP scripts. This is not a smart template replication. This is much simpler, and faster. This is not caching output.

The template placeholders are still manipulatable via your scripts but not as static placeholders instead as dynamic PHP variables. This enables quicker loading while retaining the templating goal of separation of content, code and design but now with enhanced performance.

For a compiled template with a table with 200 rows and 8 columns I benchmarked it at 0.01 ms. From the same computer acting as client and server.

3. Growth Applications controller.

Number 3 is the only I haven't touched on here yet so here goes.

Growth applications are a bit different than just extends and what most are used to in PHP.

The idea is to automatically allow for base classes to be built upon without any muss or fuss from within the base class itself.

Obviously this requires a controller to handle things.

At this point a base class such as 'form' with two methods 'show' and 'send' can grow with another class 'formDisplay' in a sort of plugin event based programming.

We plugin extended classes to the base class via the controller class using a PRE and POST logic for each method call. If a 'on_show' class exists for our 'form' base class method 'show' we load it PRE the 'show' method call. If a 'onUn_show' class exists it will load POST the 'show' method call.

As of now pretty simple just the way I like it. But the concept behind 'growth applications' is profound, important, and highly necessary.

A base class should only have to be edited not added to itself.

A child or extends class for the base needs to be able to maniuplate a parent instance method in a portable plugin manner that doesn't rely on the parent knowing it even exists.

Extending a base class needs to grow the applciation in a freehand and independent manner that relies on nothing but brings it all together and makes it all available.

1. Class independence. 2. Object Self-Reliance. 3. Growing Applications from otuside applications in a portable, plugin, event based manner each being onto themselves.

"Open source has penetrated European government and corporate institutions."

The headline blairs.. goes onto say that used to be only universities now in Europe slowly showing up in European governments uses.

Then I thought to myself isn't that the same? Universities and european governments I mean, aren't that like siblings. From Socialist studies to Socialist realities, right?

Is that a big gain really?

When large American captialist Corproations begin using open source software for their propietary programs then their will be something to crow about and hopefully more jobs for us all!

It can happen at anytime, they just have to be 'sold' on it.

PHPortal Version 0.2.7 Final ToDos

  1. Local Centralized Help system that uses association instead of the standard PHPortal object referncign to use data stored elsewhere. Referencign is still takes up an entire row even if the value column is empty. With association you do not have to create a new row for each referenced object. There are some drawbacks but when you have a lot of, management view only, data such as the help system its worthwhile.
  2. new Object type 'vhost' allows you to host anotehr domain in an existing PHPortal management interface. This allows for more centralized PHPortal website management. Prior you had to login and use independent management interfaces for each PHPortal domain, not anymore. With the new object 'vhost' you can define a directory as the 'root' for a specifc domain.
  3. A small number of important fixes and more testing for windows users.
3 template type user type views
  1. manager
    1. form based template editing
  2. designer
    1. strict html only placeholders code view
  3. developer
    1. template view and component view JSP-like

I want to create a function to automatically convert any depth tree array into its string counterpart for storage within a file but not as serialied data.

What is the difference between:

Plugins, Modules, Apps, Components, and libs?

Components are a standard way to call a library. usually via the same interface and are dependent on the interface environment to run, in others words they are pretty useless independently.

Modules, libs, or apps are full software that are all accessed via the same interface and are all individually full fledged programs that would work fine by themselves.

Plugins are smaller bits of code dependent on their use and hooked into events run by a specifc program.

Such as onSearchRequest run this plugin or make available this plugin via these parameters at that point.

Five types of web users:

1. Software Engineers.

2. Developers.

3. Editors.

4. Designers /Programmers.

5. Users.

The main difference is between 3, 4, and 5.

The software engineer creates everything for everyone. While the difference between the developer, editor, and designer can be best explained by their individual use of templates.

A developers templates would be similar to JSP Custom tags utilizing Java Beans.

A Editor's templates would be absolutely no html code and all form template driven. They only edit values that are reflected in templates by forms they never see any code or event he tempaltes themselves only the placeholders name and values via forms.

lastly, the designer or programmers template are closer to the developer's except they are pure html style templates not JSP like with hook ins to actual server side code only client-side code. There is absolutely no logic within their templates instead only placeholders are used that are replaced with dynamic content or thier own custom text values.

336 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!