Beispiel #1
0
 <h2>Brian Warner &lt; warner @ lothar . com &gt; </h2>
 """,
 ),
 Slide(
     "Introduction",
     Bullet("Overview/definition of RPC"),
     Bullet("What is Perspective Broker?"),
     Bullet("How do I use it?"),
     Bullet("Security Issues"),
     Bullet("Future Directions"),
 ),
 Slide(
     "Remote Procedure Calls",
     Bullet(
         "Action at a distance: separate processes, safely telling each other what to do",
         SubBullet("Separate memory spaces"),
         SubBullet("Usually on different machines"),
     ),
     Bullet("Frequently called RMI these days: Remote Method Invocation"),
     Bullet("Three basic parts: Addressing, Serialization, Waiting"),
 ),
 Slide(
     "Addressing",
     Bullet(
         "What program are you talking to?",
         SubBullet("hostname, port number"),
         SubBullet("Some systems use other namespaces: sunrpc"),
     ),
     Bullet("Which object in that program?"),
     Bullet("Which method do you want to run?"),
     Bullet(
 ),
 # an event loop is efficient, doesn't waste time
 # event loop is also used for GUIs
 Slide(
     "The event driven waiter",
     Bullet("One waiter, serving all tables"),
     Bullet("Waiter takes orders from tables to kitchen"),
     Bullet("Waiter takes food from kitchen to tables"),
 ),
 # not accurate, but the problems are real. avoid threads if you can
 Slide(
     "Threads (a caricature)",
     Bullet(Bad("One waiter per table")),
     SubBullet(
         "Problems:",
         Bullet(Bad("Expensive")),
         Bullet(Bad("Waiters need to be careful not bump into each other")),
     ),
 ),
 # why threads are sometimes necessary
 Slide(
     "When do we want threads?",
     Bullet("Long running, blocking operations"),
     Bullet("Classic example: database access"),
 ),
 # today we will discuss only (parts of) twisted.internet
 Slide("Twisted: The Framework of Your Internet", Image("twisted-overview.png")),
 Slide(
     "Project Stats",
     Bullet("URL: ", URL("http://www.twistedmatrix.com")),
     Bullet("License: LGPL"),
Beispiel #3
0
          Bullet("Minimal host requirements: Python and Twisted"),
          Bullet("Released under the GPL"),
          ),

    # master and slaves
    # slaves can be behind a firewall if they can still do checkout
    Raw("Architecture",
        """<h2>Architecture</h2>
        <img src=\"../overview.png\" />
        """
        ),

    # design
    Slide("Starting the Build",
          Bullet("Changes come from the version control system",
                 SubBullet("CVSToys listener"),
                 SubBullet("Parse cvs-commit email"),
                 ),
          Bullet("Builders wait for tree to be stable"),
          Bullet("Builders can ignore some files which won't affect the build",
                 SubBullet("Documentation files"),
                 SubBullet("Example code"),
                 ),
          ),

    Slide("Running a Build",
          Bullet("Build class defines each kind of build process",
                 SubBullet("Quick vs. clobber"),
                 SubBullet("Optimized vs. debug"),
                 SubBullet("Different versions of python, gcc, etc"),
                 ),
Beispiel #4
0
     Bullet(
         "Use StudlyCaps for your classes and mixedCase for your columns"),
     Bullet(
         "SQLObject will map TableName to table_name and columnName to column_name"
     ),
     Bullet(
         "In the above example, class Person becomes table person with columns first_name, middle_initial and last_name"
     )),
 Slide(
     "Creating and Dropping Tables",
     Bullet(
         "Use the createTable class method to create the table, and two optional keyword arguments",
         SubBullet(
             Bullet(
                 "ifNotExists: only try to create the table if it doesn't exist"
             ),
             Bullet(
                 "createJoinTables: will create the intermediate tables for many-to-many relationships"
             ))),
     Bullet(
         "Conversely, use dropTable, passing in optional ifExists and dropJoinTables keyword arguments"
     )),
 Slide(
     "More on Column Syntax",
     Bullet("Columns are implemented as properties"),
     Bullet(
         "Columns supported: StringCol, IntCol, FloatCol, EnumCol, DateTimeCol, ForeignKey, DecimalCol, CurrencyCol"
     ), Bullet("The first argument is the column name"),
     Bullet(
         "Keyword arguments specify additional information (e.g. notNone, default, length, etc)"
     ), Bullet("SQLObject lets the database do type checking and coercion"),