<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: introspection</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/introspection.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2009-05-28T19:38:14+00:00</updated><author><name>Simon Willison</name></author><entry><title>optfunc</title><link href="https://simonwillison.net/2009/May/28/optfunc/#atom-tag" rel="alternate"/><published>2009-05-28T19:38:14+00:00</published><updated>2009-05-28T19:38:14+00:00</updated><id>https://simonwillison.net/2009/May/28/optfunc/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://github.com/simonw/optfunc"&gt;optfunc&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Command line parsing libraries in Python such as optparse frustrate me because I can never remember how to use them without consulting the manual. optfunc is a new experimental interface to optparse which works by introspecting a function definition (including its arguments and their default values) and using that to construct a command line argument parser. Feedback and suggestions welcome!


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/cli"&gt;cli&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/github"&gt;github&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/introspection"&gt;introspection&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/optfunc"&gt;optfunc&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/optparse"&gt;optparse&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/projects"&gt;projects&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;&lt;/p&gt;



</summary><category term="cli"/><category term="github"/><category term="introspection"/><category term="optfunc"/><category term="optparse"/><category term="projects"/><category term="python"/></entry><entry><title>peeping into memcached</title><link href="https://simonwillison.net/2009/Apr/20/peeping/#atom-tag" rel="alternate"/><published>2009-04-20T18:35:00+00:00</published><updated>2009-04-20T18:35:00+00:00</updated><id>https://simonwillison.net/2009/Apr/20/peeping/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://blog.evanweaver.com/articles/2009/04/20/peeping-into-memcached/"&gt;peeping into memcached&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
“Peep uses ptrace to freeze a running memcached server, dump the internal key metadata, and return the server to a running state”—you can then load the resulting data in to MySQL using LOAD LOCAL INFILE and analyse it using standard SQL queries.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/evanweaver"&gt;evanweaver&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/introspection"&gt;introspection&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/memcached"&gt;memcached&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mysql"&gt;mysql&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/peep"&gt;peep&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/performance"&gt;performance&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/scaling"&gt;scaling&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sql"&gt;sql&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/twitter"&gt;twitter&lt;/a&gt;&lt;/p&gt;



</summary><category term="evanweaver"/><category term="introspection"/><category term="memcached"/><category term="mysql"/><category term="peep"/><category term="performance"/><category term="scaling"/><category term="sql"/><category term="twitter"/></entry><entry><title>Django documentation bookmarklets</title><link href="https://simonwillison.net/2007/Nov/8/blist/#atom-tag" rel="alternate"/><published>2007-11-08T10:59:29+00:00</published><updated>2007-11-08T10:59:29+00:00</updated><id>https://simonwillison.net/2007/Nov/8/blist/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.b-list.org/weblog/2007/nov/07/bookmarklets/"&gt;Django documentation bookmarklets&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
James Bennett continues his month-long series of daily Django tutorials with documentation for one of Django’s best kept secrets: application introspection HTTP headers and bookmarklets that make use of them.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/bookmarklets"&gt;bookmarklets&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/introspection"&gt;introspection&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/james-bennett"&gt;james-bennett&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;&lt;/p&gt;



</summary><category term="bookmarklets"/><category term="django"/><category term="introspection"/><category term="james-bennett"/><category term="python"/></entry></feed>