Re: an outsiders view
"Wim Niemans" <[email protected]> Mon, 19 Dec 2005 12:42:22 +0100
| Newsgroups | gmane.comp.lib.binarycloud.devel |
|---|---|
| Organization | Pb Solo |
| Message-ID | <43A6AAAE.6875.8BF410@localhost> |
--===============1189654493==
Content-type: text/html; charset=US-ASCII
Content-transfer-encoding: 7BIT
Content-description: Mail message body
<?xml version="1.0" ?><html>
<head>
<title></title>
</head>
<body>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New" color="#7f0000"><span style="font-size:10pt">> one could do:</span></font></div>
<div align="left"><font face="Courier New" color="#7f0000"><span style="font-size:10pt">></span></font></div>
<div align="left"><font face="Courier New" color="#7f0000"><span style="font-size:10pt">> $related_node = $this->getRelatedNode('../someid');</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">Wim, do you have any input here?</span></font></div>
<div align="left"><br/></div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">Well, yes. I could have something to say.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">As we discussed, Bas, I've got a version of Node where all
redundant code is removed: Caching, Navigating, Creating.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-: I deleted Caching since it is a bare copy of Smarty Caching.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-: I've developed a NodeFactory to encapsulate the tree creating
process. Nodes are created using a NodeCreator Object.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-: Nodes are equipped now with a 'pivot', meaning that all
referencing to an UpperNode or a Sibling goes through it's Pivot.</span></font></div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">This frees Nodes from traversing, since the pivot is 'visiting' a
Node on preOrder and postOrder traversal. Yes, it works clean and
efficient.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-: To locate a Node in the tree, I don't think one should use the
naming ID's, since BC creates a Top node everywhere with the same
name. Alternatives are position (in the tree, horizontally) and
level (in the tree, vertically). However the need to do something
like that is merely a symptom of bad design.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-: I came to the conclusion that a Node belongs to a Tree and
points to its Top (I'm naming that a 'trunk'), and has some
important anchestor (like form and its inputs). It's amazing how
clean and easy the code can find them using the className or
attached Interface (I am using Interfaces): isInstanceOf.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-: Well, the proposed methode of locating a Node using a
slashed_path could be easily added to the pivot concept. Must
evaluate that. :-]</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">To disclose some more on my private efforts:</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-/ I didn't cope with translation, yet. It seems to me that using
Flexy rather than Smarty will do the job, without extending the
code or caching zillion translation files.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-/ I stuck with Phing, which runs pretty smooth under PHP5. I do
think Phing is indispensable. I've introduced a three level
nameSpaceSystem: farm --> crop --> work.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-/ I've redone the 'project' into an Application Tree. I'm
supporting now plain Static, traditional BC, MVC, ActionFacade,
AJAX, Hamlet and Portal. These applicationtypes can be mixed
freely and may process in parallel. I'm calling this the Staging.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-/ I've always had my own 'conf', but it's a component of a
Mapping system: plain Map, Object Map, Parameter Map, Tensor Map,
Context Map. So, Children in Node is an ObjectMap and Conf is a
TensorMap. Parameters, Definition etc. are straight parameter
maps. Mapping is eliminating all those messy isset statements
everywhere.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">In order to comment on the outsiders view:</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-- I think having conf as a main component of any Node is right.</span></font></div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">I've implemented that in my NodeConstructorObject. It adds the
feature of 'configurable' nodes.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-- To integrate conf and params is however wrong. There is a
conceptual difference between conf and params. Whilst there are
preferences as well, needing a whole different interface.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-- The event system is oke, but lacks registering and calling
runtime Objects. This comes into play when accessing Event from
already created Nodes. As said, the navigation into the Tree is a
separated class. It means also, that the Node itself *only*
contains hooks for 'Input', 'Processing' and 'Output'. The
'Hierarchy is the Tree, and it's an elegant copy of HIPO,
introduced by IBM in the (19)seventies.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-- Since BCNode has a 'preInput' and 'postInput' method, several
surrounding methods of 'Process' and 'Output', well, honestly,
they can *and* must be replaced by an Event like 'onTreeInput',
'onTreeProcess' etc. Node may register to Event for these events
and process when fired.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-- Example: I've defined an AccessDenied Event in Rbac. Several
Nodes listen to this and do something on firing. Works elegant.</span></font></div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">No need to bail with an errormessage or such.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">Actually, there is so much more to exploit in this type of
framework. It's a pity that some key people fled the team with
priorities that do not match the key-purpose of the framework.</span></font></div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">To me, personally, their reasons to abandon BC have to do with
fatigue and the need for quick results. Off course, their new
home is trendy, exciting and thrilling. However, the innovating
thinking was already done at Rails. I compare the enthousiastic
stories about Rails with the ones emitted when Alfa-four and/or
C-scape hit the streets. You may think 'alfa-what'? Exactly. It's
gone.</span></font></div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">FYI: My very personal feeling is that Rails compares to
professional frameworks as DBASEIV does to Oracle. A matter of
taste.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">Enough said about the 'empty' mindSpace. Thoughts as Nathan
expressed are truly proof of concept. I agree with quite a lot of
them. Also because they came on my mind as well :-) and some of
them are worked out already. See my roadMap:</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-] Currently I'm working on the entity concept and shortly
(thanks, Jason), I've got an Eureka feeling about that.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-] Creole and Jargon are installed in my version, but my system
is still clashing with Propel. Entities can be build with an IOC
container, which resembles a NodeTree (well, not really, but the
code does). There is a strong relation with the propel-schema in
XML, the Form-node and CRUD forms (compare scaffolding). In fact
one may distinguish the physical database, the scheme describing
it and the FormNodes using it. It's just a matter of which comes
first. I think I can build a system utilizing one of them at
will, in order to generate the other ones. This in effect means
the availability of an iterative system for developing.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-] Such thing is done before, and is still available in legacy
environments.</span></font></div>
<div align="left"><br/></div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">-] IOC: Inversion of Control; see picoContainer.</span></font></div>
<div align="left"><br/></div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">Anyway, a lot of things to explore further. For the moment I'm
doing that in a lone environment. Don't know if contributing will
get it faster ahead. </span></font></div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">My project is called Okklusion and consists of a few independent
components (some prefer saying 'packages'). It's my intention to
go commercial, and/or using a Creative Commons License.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">Cheers,</span></font></div>
<div align="left"><font face="Courier New"><span style="font-size:10pt">wim niemans</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><br/>
</div>
<div align="left"></div>
</body>
</html>
--===============1189654493==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
dev mailing list
dev-PnctHDZWAvB/Cz2I37pSEPZ4XP/[email protected]
http://lists.binarycloud.com/mailman/listinfo/dev
--===============1189654493==--