DeveloperGuidelines ---- ==== Python debugging ==== * use Web2Py shell: http://www.vimeo.com/879939 * use [http://ipython.scipy.org/moin/ IPython] for interactive exploration * Debug Tools: http://docs.python.org/library/debug.html * winpdb: http://groups.google.com/group/web2py/msg/ee46125b7c93fdd4 * WingIDE: http://www.wingware.com/ * Using with Web2Py: http://www.wingware.com/doc/howtos/web2py ==== CSS & Javascript debugging ==== * use Firebug: http://code.google.com/support/bin/answer.py?answer=77412&topic=12044 * http://pastebin.me (allows edits of HTML & previews) ==== Web2Py ==== * http://web2py.com/examples/default/docs * HTML Helpers: http://www.web2py.com/AlterEgo/default/show/217 * Arbitrary HTML tags using TAG, e.g. TAG.LEGEND('a','b',_c='d') * HTML Helpers can be navigated/manipulated like the DOM: http://groups.google.com/group/web2py/browse_thread/thread/ac045f3b1d3846d9 * https://mdp.cti.depaul.edu/web2py_wiki/default/wiki/tips * https://mdp.cti.depaul.edu/web2py_wiki/default/wiki/widgets * New syntax for low-level database record create/update/delete: http://groups.google.com/group/web2py/browse_thread/thread/d79a6e52824d4221 * Default field values with crud.create(): http://groups.google.com/group/web2py/browse_thread/thread/717e2349f0f8e93d * Edit multiple records at once: http://groups.google.com/group/web2py/browse_thread/thread/401b4c192871194c/a96cc8c7923a8565# * Prevent multiple concurrent logins: http://groups.google.com/group/web2py/browse_thread/thread/4e1c62a0d9255160 * THIS_NOT_IN_DB custom validator: http://groups.google.com/group/web2py/browse_thread/thread/27b14433976c0540?pli=1 * Custom Forms - less retyping of code in view using SQLFORM extensions: * http://groups.google.com/group/web2py/browse_thread/thread/2d8cc57352d158bd * Alternate approach: http://www.wellbehavedsystems.co.uk/web2py/examples/ * Helper field2html(): http://groups.google.com/group/web2py/browse_thread/thread/1012c11c977aa05e * Multiple per page: http://groups.google.com/group/web2py/browse_thread/thread/57e452d186d48fa4 * Values retrieved from DB are stored for re-referencing: http://mdp.cti.depaul.edu/AlterEgo/default/show/205 * Summary of MVC options: http://groups.google.com/group/web2py/browse_thread/thread/7da38e0d32d01076 * Lambda tricks: http://p-nand-q.com/python/stupid_lambda_tricks.html * IS_IN_DB (...,order_by=...): http://groups.google.com/group/web2py/browse_thread/thread/5fe6e343d115590d/2a8c38fccb2cf3cf#2a8c38fccb2cf3cf * CGI co-existence: http://groups.google.com/group/web2py/browse_thread/thread/1520b84d144f0b0c * Inline Images in T2 CRUD: http://groups.google.com/group/web2py/browse_thread/thread/d954bf883baf7adc/3b55a819b425a741 * Download Images with original filename: * http://groups.google.com/group/web2py/browse_thread/thread/484a2d04bdd7606f * http://groups.google.com/group/web2py/browse_thread/thread/1df80dbf52d401fb * nicEdit integration: http://groups.google.com/group/web2py/msg/ff491af9382f6c39 * Multi-column unique constraint: http://groups.google.com/group/web2py/browse_thread/thread/f5ab94cc7d511e0b * Modified preorder Tree Traversal (for large Hierarchical trees): http://groups.google.com/group/web2py/browse_thread/thread/70efddab62dfe73 * Hierarchical References: http://groups.google.com/group/web2py/browse_thread/thread/a4f57635d4a05f83 * JSON datetime serialization: https://mdp.cti.depaul.edu/web2py_wiki/default/wiki/JSONdatetime * EPB: http://groups.google.com/group/web2py/browse_thread/thread/c090560680b65db2 * Auto-complete (for when Dropdowns get too long): * http://groups.google.com/group/web2py/browse_thread/thread/e1034df0091b5bfd * http://groups.google.com/group/web2py/browse_thread/thread/f6e0170273b14241 * http://www.pengoworks.com/workshop/jquery/autocomplete.htm * http://plugins.jquery.com/project/autocompletex * http://plugins.jquery.com/project/YA_AutoComplete * Configuring Eclipse/PyDev for Web2Py: http://kollerie.wordpress.com/2009/04/07/setting-up-your-ide-for-web2py-development/ ==== !JavaScript ==== * http://trac.openlayers.org/wiki/Documentation#BeforeGettingStarted--TheTechnologiesBehindOpenLayers * http://eloquentjavascript.net ===== jQuery ===== * http://www.tvidesign.co.uk/blog/improve-your-jquery-25-excellent-tips.aspx * http://james.padolsey.com/javascript/things-you-may-not-know-about-jquery/ * http://15daysofjquery.com/ * http://jqueryfordesigners.com/jquery-tabs/ * http://devsnippets.com/reviews/using-jquery-to-style-design-elements-20-impressive-plugins.html * http://www.mapbender.org/JavaScript_pitfalls:_null,_false,_undefined,_NaN * Web2Py HTML Helper: http://groups.google.com/group/web2py/browse_thread/thread/ec63ee9af3ee659f * jqGrid in Web2Py: http://groups.google.com/group/web2py/browse_thread/thread/2caa0e4e0161bb8d ===== Ext ===== * http://extjs.com/learn/Tutorial:Introduction_to_Ext_2.0 * http://extjs.com/learn/Manual:Basic_Application_Design * http://extjs.com/forum/showthread.php?t=26728 * http://extjs.com/learn/Ext_FAQ_Debugging ==== HTML/CSS ==== * http://enhance.qd-creative.co.uk/2008/06/28/the-misunderstood-div/ * http://enhance.qd-creative.co.uk/2008/10/14/7-things-you-can-do-so-your-users-wont-leave/ * Progressive Enhancement (better than Graceful Degradation): * http://developer.yahoo.com/yui/articles/gbs/ * http://accessites.org/site/2007/02/graceful-degradation-progressive-enhancement/ * http://www.alistapart.com/articles/understandingprogressiveenhancement * http://www.alistapart.com/articles/progressiveenhancementwithcss * http://www.alistapart.com/articles/progressiveenhancementwithjavascript * http://webtips.dan.info/graceful.html ==== Misc ==== * Bugmail add-on for Thunderbird: https://addons.mozilla.org/en-US/thunderbird/addon/9584 * Especially useful for USB (minimise disk access): http://web.utk.edu/~jplyon/sqlite/SQLite_optimization_FAQ.html ==== SQL design ==== * http://www.sqlteam.com/article/database-design-and-modeling-fundamentals * http://www.tomjewett.com/dbdesign/dbdesign.php?page=intro.html * http://www.w3schools.com/Sql/sql_join.asp * http://www.plus2net.com/sql_tutorial/sql_linking_table.php ---- DeveloperGuidelines