User:Mstone/Tricks
Jump to navigation
Jump to search
This page contains pointers to a collection of idioms which I rely on to accomplish tasks quickly and with predictable results.
- verbose python tracebacks
- Just import nice_traces; if you're feeling fancy, then consider trace(sys.exc_info())
- verbosity controls on logging
- See trac_helper.py
- pythonic relations
- See my relation module and Alloy (which was my inspiration, though I've made nothing more than a poor knockoff).
- relational error logging
- See trac_helper.py and collect-pkgs.py.
- email-based error reporting
- See email_warnings.py.
- pdb
- from pdb import set_trace as debug ... debug()
- rpm makefiles
- See rpm-packaging as well as individual projects like olpc-netutils along with my Fedora packaging bibliography.
- pymeta parser-based controllers
- triagebot is based on a model-view-controller architecture where the controller object is assembled at runtime based on data collected with a metaclass.
- pymeta makes it easy to pick the right response to complicated input.
- python gdb macros
- http://wiki.python.org/moin/DebuggingWithGdb
- python memory profiling
- guppy + Tomeu's memory leak testing writeup.
- tree-based python context management
- puritan's main.py and contexts.py
- custom dbus decorators
- sds stub
- ipython for exploring interprocess communication
- IPython is wonderfully helpful for exploring xml-rpc and dbus interfaces.
- code to make pylint happy
- rainbow's inject.py can be automatically checked for many errors by pylint because it passes all data explicitly through function calls.
- C error handling
- nss-rainbow uses a dash of code-generation and a lot of convention to be very consistent about error detection and handling.
- C warning flags & Makefile tips
- nss-rainbow's Makefile gets a number of things right, though it can still be improved in several ways.
- scripts for user creation
- provision users on new machines in a scripted fashion.
- program with git
- Puritan and other parts of our build system show some silly things you can do with git if you are so inclined.