Editing User:Neildhruva

From BRL-CAD

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 17: Line 17:
 
=== Contact ===
 
=== Contact ===
 
*IRC : ''Neil'' / ''Neil_'' / ''Neil__'' etc.
 
*IRC : ''Neil'' / ''Neil_'' / ''Neil__'' etc.
*E-mail:  
+
*E-mail: [mailto:neildhruva@gmail.com neildhruva@gmail.com]
*Website:  
+
*Website: [http://neildhruva.in neildhruva.in]
  
 
== BRL-CAD Tentative Proposal ==
 
== BRL-CAD Tentative Proposal ==
Line 58: Line 58:
 
* '''Server Files''': The files on the server will include images uploaded by users like profile pictures. If user profiles are going to be their BRL-CAD wiki pages, then this mechanism is already provided for in [1]. Apart from this, all the PHP, JavaScript, CSS, and Cache files will lie on the server. The XML and other documents generated on the fly can be made available to the user in two ways. Currently, XML is generated on the fly and it is output as an XML document to the browser directly. However, I feel there should be a directory dedicated to XML documents generated by different users. There can be an upper limit on the number of XML documents stored in this folder and can be replaced there after. Whenever a user generates an XML, it is stored in the folder and a link is provided for download. The links to the paths of these files can be stored in the database corresponding to the user ID for future reference.
 
* '''Server Files''': The files on the server will include images uploaded by users like profile pictures. If user profiles are going to be their BRL-CAD wiki pages, then this mechanism is already provided for in [1]. Apart from this, all the PHP, JavaScript, CSS, and Cache files will lie on the server. The XML and other documents generated on the fly can be made available to the user in two ways. Currently, XML is generated on the fly and it is output as an XML document to the browser directly. However, I feel there should be a directory dedicated to XML documents generated by different users. There can be an upper limit on the number of XML documents stored in this folder and can be replaced there after. Whenever a user generates an XML, it is stored in the folder and a link is provided for download. The links to the paths of these files can be stored in the database corresponding to the user ID for future reference.
  
* '''Apache''': I am reading a lot about server management and performance optimization. One of the things we can incorporate is a Reverse Proxy or an HTTP accelerator. I am not sure about this approach because it is meant for very high traffic sites and I'm still reading about it. <br> There are a lot of techniques involved in maximizing PHP processing of scripts. I'll be using output buffering with ob_start() etc.; or a simple output_buffering=on in .ini file to decrease errors. The buffered data can then be flushed to the user. Also, since we are using individual pages for user profiles and each material, I suppose flat-file caching would be a good option to cache recently generated HTML, especially when the materials pages are viewed because there will rarely be changes in these pages. I am also reading about the mod_rewrite facility of Apache that should be greatly helpful in managing cache files. Managing cache files can be a bit tricky, given the uncertainty about user traffic, when to replace certain cache files etc. Hence, I will try to incorporate this feature towards the end of the project. <br> Also, I will be relying on .htaccess and other methods for directory security.
+
* '''Apache''': I am reading a lot about server management and performance optimization. One of the things we can incorporate is a Reverse Proxy or an HTTP accelerator. I am not sure about this approach because it is meant for very high traffic sites and I'm still reading about it. <br> There are a lot of techniques involved in maximizing PHP processing of scripts. I'll be using output buffering with ob_start() etc. for some temporary server side caching. The buffered data can then be flushed to the user. Also, since we are using individual pages for user profiles and each material, I suppose flat-file caching would be a good option to cache recently generated HTML, especially when the materials pages are viewed because there will rarely be changes in these pages. I am also reading about the mod_rewrite facility of Apache that should be greatly helpful in managing cache files. Managing cache files can be a bit tricky, given the uncertainty about user traffic, when to replace certain cache files etc. Hence, I will try to incorporate this feature towards the end of the project.
  
 
* '''Generating XML on the fly''': XML is generated whenever a user wants a list of materials along with selected properties. This is done by pulling the desired data from the materials database tables. A script already exists that accomplishes this. It is currently [2]. However, there will be a lot more materials that the user can choose from once the website is in frequent use. I suggest providing the user with a table of all materials to choose from. A small segment at the top of the page can indicate all the materials the user has already chosen to be included in the XML (JQuery can be used for this). This can also be accomplished by JavaScript through a pop-up window. Once the user chooses the materials, the XML is then generated by pulling the required resources from the database.  
 
* '''Generating XML on the fly''': XML is generated whenever a user wants a list of materials along with selected properties. This is done by pulling the desired data from the materials database tables. A script already exists that accomplishes this. It is currently [2]. However, there will be a lot more materials that the user can choose from once the website is in frequent use. I suggest providing the user with a table of all materials to choose from. A small segment at the top of the page can indicate all the materials the user has already chosen to be included in the XML (JQuery can be used for this). This can also be accomplished by JavaScript through a pop-up window. Once the user chooses the materials, the XML is then generated by pulling the required resources from the database.  
Line 66: Line 66:
 
* ''' Error Handling ''': Error handling has to be accomplished in order to keep track of various errors encountered by users. This can be done by creating a directory for error handling and using PHP functions like error_log() to tackle the errors generated. The administrator can also be notified by mail if the error is serious.
 
* ''' Error Handling ''': Error handling has to be accomplished in order to keep track of various errors encountered by users. This can be done by creating a directory for error handling and using PHP functions like error_log() to tackle the errors generated. The administrator can also be notified by mail if the error is serious.
  
Apart from these, I have also uploaded a basic architecture diagram of the web server process along with a a website flowchart at [3]. I have also provided the basic flow of the website as I see it presently, along with possible database tables and files on the server at [4]. Apart from this, a basic mock-up of the website can be found at [5] and the initial SQL schema at [6].
+
Apart from these, I have also uploaded a basic architecture diagram of the web server process along with a a website flowchart at [3]. I have also provided the basic flow of the website as I see it presently, along with possible database tables and files on the server at [4].
  
I will come up with a lot more ideas as the project moves along. I had developed a CMS last year for a project at an Information and Library Network in my hometown under their open source and software development wing. It was based on allowing the employees order inventory and office supplies via an online portal. I have uploaded a few snapshots of the same here [7].  
+
I will come up with a lot more ideas as the project moves along. I had developed a CMS last year for a project at an Information and Library Network in my hometown under their open source and software development wing. It was based on allowing the employees order inventory and office supplies via an online portal. I have uploaded a few snapshots of the same here [5].  
  
 
The project will be very useful for all the users of BRL-CAD and I hope I can contribute to the same.
 
The project will be very useful for all the users of BRL-CAD and I hope I can contribute to the same.
  
[1] - http://brlcad.org/wiki/Special:Upload <br> [2] - http://mater.brlcad.org/xml/generate.php <br> [3] - http://brlcad.org/w/images/4/4d/Arch_diagram3.pdf <br> [4] - http://brlcad.org/w/images/8/89/Website_flow.pdf <br> [5] - http://brlcad.org/wiki/Image:Mock_up.pdf <br> [6] - http://brlcad.org/wiki/Image:SQL_schema.pdf <br> [7] - http://brlcad.org/wiki/Image:Cms_snapshots.pdf <br>
+
[1] - http://brlcad.org/wiki/Special:Upload <br> [2] - http://mater.brlcad.org/xml/generate.php <br> [3] - http://brlcad.org/w/images/0/0e/Arch_diagram_new.pdf <br> [4] - http://brlcad.org/w/images/8/89/Website_flow.pdf <br> [5] - http://brlcad.org/wiki/Image:Cms_snapshots.pdf <br>
  
  

Please note that all contributions to BRL-CAD may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see BRL-CAD:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)