if(t==this){
 t.xxtree214.setDefer();
}else{
 t.xxtree214.setSubload();
 t.xxtree214.emptyNodes();
 t.xxtree214.setUndefer();
}
t.xxtree214.add(214,-1,'General presentation','');
t.xxtree214.add(217,214,'When it is complicated...','I had a difficulties when I had to maintain or develop programs with data designs like the one presented underneath:\n<br />\n<br />\n\n<div style="float:left">\n\n<a href="javascript:xxMypso.OpenOutWindow1(\'img/modmypitself.gif\',100,100,685,495)">\n<img hspace="0" src="img/modmypitself_s.gif" alt="" /><\/a>\n<\/div>\n\n<br />\n<span class=LISTTITLE>\nClick and look at the picture during 5 seconds, no more\n<\/span> Use the <img src="img/picto/13x13/quis.png" alt="" /> button on top of the new window to close it.\n<br />\n<br />\n\nIn general, you have seen boxes (data) and arrows which link them (connections between data). The problem was that this was becoming too complicated for me because the data and their connections were too numerous. \n<br />\n<br />\nIn this case, one calls colleagues and does big projects, costing a lot of time and the users often end unsatisfied. \n<br />\n<br />\nBut the user wants more because there is the permanent threat that customers will to go to the competitors if a strategic new function cannot be done, immediately.\n');
t.xxtree214.add(218,214,'... one find solutions ...','In this case one updates the programs and now, one can really start to enjoy the work because with the appreciation of what the designer understood, and the consideration of what the programer intended to program we have to tell the user that the job will be done in x days for a price of y$. This has always been, for me, a task between a probability level (It should fit in these constraints) and a mystic level (Hope it will work). \n<br />\n<br />\nSo, as I didn\'t like this situation, I started to develop a tool to help myself. \n<br />\n<br />\nI went on and as the program grew up, I reached the conclusion that one had to <span class=LISTTITLE>industrialize<\/span> the development of the programs. To do this, the design stage and the writing stage of the programs had to be industrialize. \n<br />\nAnd to do this, I reached the second conclusion that programs had to be able to be <span class=LISTTITLE>reverse-engineered by it\'s own means<\/span>. \n<br />\n<br />\nBut I had to find the way to do it. \n');
t.xxtree214.add(278,214,'... build them ...','As one is never better helped than by one self, I built MyPitSelf \n<img src="img/picto/13x13/myps.png" alt="" /> . \n\nAs the reverse-engineering is set up and the first program done with MyPitSelf is MyPitself, I think that the foundations are not too bad. \n\nThe data model you have seen above during 5 seconds is the MyPitSelf data design ! \n<br />\n<br />\nOnce I asked a teatcher in science history and science philosophy what was the limit of this development. He ansewered by the sentence you have read upper about unlimitted systems. \n<br />\n<br />\nPractically, the limit of the system is bordered by the computer speed and memory but at least, it is far enough now. ');
t.xxtree214.add(219,214,'... and talks about them!','Simple programs can be set up fast once one knows the development environment. But it\'s not all that obvious because it\'s different from what I have seen before. (You have been warned). \n<br />\n<br />\nOne can also make some more complicated things, for example MyPitSelf is not simple. It\'s a development environment which contains multi user access with rights, multilingual, multibase, with several environments ( development, tests, production), backups, documentation with screen copies, etc ... \n<br />\nI have used MyPitSelf to build programs with other users than myself and data designs that looked like these \n<br />\n<a href="javascript:xxMypso.OpenOutWindow1(\'img/modExemple001.gif\',250,100,440,295)" style="border:0;padding:0"><img src="img/modExemple001s.gif" alt="" /><\/a> \n<a href="javascript:xxMypso.OpenOutWindow1(\'img/modExemple002.gif\',250,100,390,265)" style="border:0;padding:0"><img src="img/modExemple002s.gif" alt="" /><\/a> \n<a href="javascript:xxMypso.OpenOutWindow1(\'img/modExemple003.gif\',250,100,390,265)" style="border:0;padding:0"><img src="img/modExemple003s.gif" alt="" /><\/a> \n<a href="javascript:xxMypso.OpenOutWindow1(\'img/modExemple004.gif\',250,100,380,260)" style="border:0;padding:0"><img src="img/modExemple004s.gif" alt="" /><\/a> \n<a href="javascript:xxMypso.OpenOutWindow1(\'img/modExemple005.gif\',250,100,430,350)" style="border:0;padding:0"><img src="img/modExemple005s.gif" alt="" /><\/a>\n.\n<br />\n\n<br />\nI started to use the reverse-engineering to maintain MyPitSelf: for example, I once defined the use of a function which was not very clean and I wanted to update all programs to change this. As I used this function very often, I wrote a program in the MyPitSelf language to do this. MyPitSelf can maintain MyPitSelf ! As this program has already been written, it will not be too complicated to update it, if I have to write a modification on an other function. \n<br />\nSome people also call this refactoring.  \n<br />\n<br />\nAn other example comes when one renames a field in the database. In this case, all function that use this field are treated to replace the old name by the new one.\n<br />\n<br />\nWhat follows on this web site is more serious stuff because I explain how all this works. These explanations can make you believe that I contemplated before I proceeded. As a matter of fact, in the whole process actions have preceded the thought process. I prefer a tool that works rather than a concept that does not work. \n<br />\n<br />There is still work to do, some parts are still dirty but now, I\'m not afraid to clean up, and I am sure I will be able to benefit from it.  \n<br />\n<br />\nActually, at the moment, I am setting up the environment to work with <span class="LISTTITLE">ajax<\/span>, you will see my first attempts <a class="ACTION" href="http://www.mypitself.com/ajax/" target="_blank">here<\/a>.\n<br />\n<br />\n<br />Now, let\'s go to work ! \n<br />\n');
t.xxtree214.add(220,214,'How ?','');
t.xxtree214.add(222,220,'The core','<div style="float:right">\n\n<a href="javascript:OpenOutWindow1(\'img/comparemps_2.gif\',200,100,500,330)">\n<img src="img/comparemps_s.gif" style="border:0;" alt="" /><\/a>\n\n<\/div>\n\nThe a part of the core is written in Php, the rest is written in the MyPitSelf language. \n<br />\n<br />\nThe programs written with MyPitSelf are done with the MyPitSelf design with : \n<br />\n<br />\n- A "system" database containing the description of your system (databases, functions ...)\n<br />\n<br />\n- One or more "data" databases with the datas of your program.\n<br />\n<br />\n');
t.xxtree214.add(221,220,'Define the data','<p>You start by defining a working environment ie databases (fields, tables, indexes, links between data ...) and other features (constants, user rights, menu ...). <br />\n<br />\nThen you generate simple SQL requests with the help of a tool that keeps the request parameters in the system (type of request, tables and fields of the request). <br />\n<br />\nSome request are used to see the data (SELECT of a certain value or SELECT of a list of values). <br />\n<br />\nOthers are translated to <span class="ECHO">functions<\/span> that you can use in the MyPitSelf language (SELECT, INSERT, UPDATE, DELETE). <br />\n<br />\nThis is where the database paradigme is resolved: as the access to the data is done with functions and these functions are used in the programs, there are no SQL request in the middle of the programs.<\/p>');
t.xxtree214.add(223,220,'Programs','A language based on function calls is used to write functions in source format. \nIt uses usual features of other languages (variables, tests, loops, files/IOs, ...)\n and the functions produced by the requests. \n<br />\n<br />\nThis language is compiled and interpreted for interactive programs.\n<br />\n<br />\nAfter source parsing, the system produces a table format.\n<br />\n<br />\nThe table format can be put in the database to be computed (reverse-engineered). Functions become data. \n<br />\n<br />\nThe system can regenerate the source format from the table format.\n<br />\n<br />\nOut of the table format, the system produces executable code (in php today).\n<br />\n<br />\n<br />\nThe difference with an other language is that the table format of the program\nwhich is the result of the parsing is available and can be treated with the means\nof the language.\n<br />\n<br />\nIt is like if you were the person who had written the compiler\nand so you would know how to write the parser, and, at the end of the parsing\nprocess, you would be able to rewrite the source.\n');
t.xxtree214.add(224,214,'So What ?','So, I think that MyPitSelf resolves ( and will resolve ) some problems in information technology:');
t.xxtree214.add(225,224,'Complex treatments','<u><strong>Problem:<\/strong><\/u>\n<br />\n<br />\nAn application evolves in two directions: data to maintain and function to give.\nToday one can add data ( for example if you have 50 or 100 emails in your email box doesn\'t change many things ) but to add a function is less evident ( for example the sum of mails from Paul and Jack )\n<br />\n<br />\nThe need of complexity requires an industrial treatment. If the code checking is done by humans, some bugs will probaly appear goes in the programs\n<br />\n<br />\n<br />\n<strong><u>Answer:<\/u><\/strong>\n<br />\n<br />\nWhen the basic functions on data are set up, the arrengement of these function to give more complex functions is easier to set up if we consider them as operations on data ( add the mails from Paul to the mails from Jack ). \n<br />\n<br />\nIf MyPitSelf, functions are transformed as organized as data in database and a data check is a current operation that can be done whith the right program.\n');
t.xxtree214.add(226,224,'Adaptation','<u><strong>Problème:<\/strong><\/u>\n<br />\n<br />\nThe data to manage are defined with a model and some rules that are justified during the primary design and according to the person who does the design.\n<br />\nBut the resultant system must evolve in the time because during it\'s use some new functions are neded.\n<br />\nAnd furthermore, some parts that were important during the primary design become less important and some new ones become more important. In this case, the primary design must evolve to adapt to these new parts. \n<br />\n<br />\nThe important point is not the primary design but its flexibility and the possibility to use the existing parts.\n<br />\n<br />\n<br />\n<strong><u>Réponse:<\/u><\/strong>\n<br />\n<br />\nThe first system done with MyPitSelf is itself. First there was only the core then data heve been added then functions on these data, then the core has been updated and so on. In othe words the first data and system design has evolved along its growing. Systems done with MyPitSelf grow with the same logical way. \n<br />\n<br />\nToday the data are enough for the development in the current version. The functions needed to build a development environment represent a good part of what one can imagine to build an information system, but some new needs like statistics or graphical outputs may be needed. Once they will be inserted in MyPitSelf, the other systems will be able to use them.\n');
t.xxtree214.add(227,224,'Conclusion','MyPitSelf is good enough even if it is only version 0.8 because the reverse-engineering is ready.\n<br />\nThis means that if MyPitSelf Evolves, programs built with older versions will follow the new versions.\n');
t.xxtree214.add(228,214,'Work frame','95 % of the developments are done via a web browser, with only the administrator having access to the server\n<br />\n<br />\nIt is multilingual at the system level, MyPitSelf is in English (well, my English) and in French\n<br />\n<br />\nIt is multilingual at the program level, the programs one develops can be seen in the languages the user selects\n<br />\n<br />\nThe functionnal documentation of your programs is facilitated due to the reverse-engineering and\n<ul>\n <li>Screen copies of the inputs while you use the program.<\/li>\n <li>creation of HTML documents based on the environment description.<\/li>\n<\/ul>\n<br />\nThe user rights management is in the core and can be extended to match your program specification : user rights on the menus, on the functions ...\n<br />\n<br />\nIt helps the conception of applications based on data designs with many links.\n<br />\n<u>Screen copies<\/u>\n<br />\n<br />\nThese screen copies come from the development example given under.\n<br />\nMyPitself lets you record the pages where one goes to, for example, create the software documentation.\n<br />\n<br />\nRequest generation: <a href="javascript:popup(\'Creerlapremiererequete\')"><img src="img/sc.gif" /><\/a>. \n<br />\n<br />\nFunction creation: <a href="javascript:popup(\'ajouterfonctauxtaches\')"><img src="img/sc.gif" /><\/a>.\n');
t.xxtree214.SetLoaded();

