Changeset 27:3e2691696828

Show
Ignore:
Timestamp:
02/19/07 10:28:59 (21 months ago)
Author:
Tarek Ziad?? <tarek@…>
Message:

new skin

Location:
PyCon07
Files:
60 added
9 modified

Legend:

Unmodified
Added
Removed
  • PyCon07/slides.txt

    r26 r27  
    7777  
    7878- Project developers, to... 
    79  - build a shared knowledge 
    80  - improve code quality 
     79 
     80  - build a shared knowledge 
     81  - improve code quality 
     82 
    8183- Community, to... 
    82  - facilitate participation (e.g. non developers) 
    83  - facilitate adoption and comprehension 
     84 
     85  - facilitate participation (e.g. non developers) 
     86  - facilitate adoption and comprehension 
    8487 
    8588Part 1 
     
    117120========================== 
    118121 
    119 -> let's do exercise #1 and #2 
     122|smile| let's do exercise #1 and #2 
    120123 
    121124Mastering reSTructuredText 
     
    141144Writing should be done in two stages (Elbow, 1980): 
    142145 
    143 - a free writing where ideas are written on the paper no matter the shape 
    144 - a review stage where things are shaped  
     146- a free writing where ideas are written on the paper no matter the shape. 
     147- a review stage where things are structured and reviewed. 
    145148 
    146149Each stage should take 50% of the time. 
     150 
     151|important| Split you writing time in two phase 
     152 
    147153 
    148154Targeted readership 
    149155=================== 
    150156 
    151 Focus on your target when you write a document (RÃŒping, 2003). Assume their  
    152 background knowledge to restrict the scope of the documentation 
     157Focus on your target when you write a document (RÃŒping, 2003).  
     158 
     159Assume their background knowledge to restrict the scope of the documentation. 
     160 
     161|important| A *prerequest* section can help a lot. 
    153162 
    154163Focused information 
    155164=================== 
    156165 
    157 A document is about a clear focus. A precise title for each section and 
    158 the document itself, and a summary can help. 
     166A document is about a clear focus.  
     167 
     168A precise title for each section and the document itself, and a summary  
     169can help. 
     170 
     171|important| If you cannot easily name the document or one of its section,  
     172there's a problem 
    159173 
    160174Realistic examples 
     
    162176 
    163177Drop the *foo* and *bar* habits. Examples must be real-life examples, and 
    164 usable as-is.  
     178usable as-is. 
     179 
     180Neh:: 
     181 
     182    >>> from package import graph 
     183    >>> foo = grahp.calculateSquare(1, 1, 1, 1) 
     184    >>> bar = stuff.renderSquare(foo) 
     185    
     186Better::  
     187 
     188    >>> from package import stuff 
     189    >>> square = stuff.calculateSquare(1, 7, 1, 10) 
     190    >>> square_view = stuff.renderSquare(square) 
    165191 
    166192"Light but sufficient" approach 
     
    168194 
    169195A working software is more important than the best documentation in the world 
    170 (Ambler, 2002). *Quality over Quantity* is the best rule. 
     196(Ambler, 2002).  
     197 
     198*Quality over Quantity* is the best rule. 
     199 
     200|important| Spending too much time to find something in the documentation is a  
     201bad sign. 
     202 
     203|important| Think documents like code: always limit the size of sections, and  
     204documents: modularized documentation is the key. 
    171205 
    172206Structured documents 
     
    180214- references 
    181215- glossary  
    182 - tables 
    183 - diagrams 
     216- tables and diagrams 
     217 
     218|important| Never write a document that doesn't have a template 
    184219 
    185220Writing techniques and tips 
    186221=========================== 
    187222 
    188 Distribution of tipsheet, let's do exercise #3 
    189  
     223Distribution of tipsheet, let's do exercise #3, and apply the laws |smile| 
     224 
     225Team writing 
     226============ 
     227 
     228Pair-writing ensures: 
     229 
     230- understandable documents 
     231- increased and homogeneous quality 
     232 
     233|important| The best pair is made with the end-user 
     234 
     235|important| Each document should have a champion, though.  
    190236 
    191237XXX 
     238 
    192239Using documents for TDD 
    193240======================= 
     
    201248 
    202249 
    203  
     250.. |smile| image:: media/smile.png 
     251.. |important| image:: media/important.png 
     252 
  • PyCon07/ui/default/framing.css

    r25 r27  
     1/* This file has been placed in the public domain. */ 
    12/* The following styles size, place, and layer the slide components. 
    23   Edit these if you want to change the overall slide layout. 
    34   The commented lines can be uncommented (and modified, if necessary)  
    4     to help you with the rearrangement process. */ 
     5   to help you with the rearrangement process. */ 
    56 
    67/* target = 1024x768 */ 
    78 
    89div#header, div#footer, .slide {width: 100%; top: 0; left: 0;} 
    9 div#header {top: 0; height: 3em; z-index: 1;} 
     10div#header {position: fixed; top: 0; height: 3em; z-index: 1;} 
    1011div#footer {top: auto; bottom: 0; height: 2.5em; z-index: 5;} 
    11 .slide {top: 0; width: 92%; padding: 3.5em 4% 4%; z-index: 2;  list-style: none;} 
     12.slide {top: 0; width: 92%; padding: 2.5em 4% 4%; z-index: 2;} 
    1213div#controls {left: 50%; bottom: 0; width: 50%; z-index: 100;} 
    1314div#controls form {position: absolute; bottom: 0; right: 0; width: 100%; 
    1415  margin: 0;} 
    15 #currentSlide {position: absolute; width: 10%; left: 45%; bottom: 1em; z-index: 10;} 
     16#currentSlide {position: absolute; width: 10%; left: 45%; bottom: 1em; 
     17  z-index: 10;} 
    1618html>body #currentSlide {position: fixed;} 
    1719 
  • PyCon07/ui/default/opera.css

    r25 r27  
     1/* This file has been placed in the public domain. */ 
    12/* DO NOT CHANGE THESE unless you really want to break Opera Show */ 
    23.slide { 
  • PyCon07/ui/default/outline.css

    r25 r27  
    1 /* don't change this unless you want the layout stuff to show up in the outline view! */ 
     1/* This file has been placed in the public domain. */ 
     2/* Don't change this unless you want the layout stuff to show up in the 
     3   outline view! */ 
    24 
    35.layout div, #footer *, #controlForm * {display: none;} 
     
    1012 
    1113#slide0 h1, #slide0 h2, #slide0 h3, #slide0 h4 {border: none; margin: 0;} 
    12 #slide0 h1 {padding-top: 1.5em;} 
    13 .slide h1 {margin: 1.5em 0 0; padding-top: 0.25em; 
    14   border-top: 1px solid #888; border-bottom: 1px solid #AAA;} 
    1514#toggle {border: 1px solid; border-width: 0 0 1px 1px; background: #FFF;} 
     15 
     16.outline {display: inline ! important;} 
  • PyCon07/ui/default/pretty.css

    r25 r27  
     1/* This file has been placed in the public domain. */ 
    12/* Following are the presentation styles -- edit away! */ 
    23 
    3 body {background: #FFF url(bodybg.gif) -16px 0 no-repeat; color: #000; font-size: 2em;} 
     4html, body {margin: 0; padding: 0;} 
     5body { 
     6    background: white; 
     7    color: black; 
     8    background: white url(gray-python-half-head.png) right 0 no-repeat; 
     9} 
     10/* Replace the background style above with the style below (and again for 
     11   div#header) for a graphic: */ 
     12/* background: white url(bodybg.gif) -16px 0 no-repeat; */ 
    413:link, :visited {text-decoration: none; color: #00C;} 
    514#controls :active {color: #88A !important;} 
    615#controls :focus {outline: 1px dotted #227;} 
    716h1, h2, h3, h4 {font-size: 100%; margin: 0; padding: 0; font-weight: inherit;} 
    8 ul, pre {margin: 0; line-height: 1em;} 
    9 html, body {margin: 0; padding: 0;} 
    1017 
    11 blockquote, q {font-style: italic;} 
    12 blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em; text-align: center; font-size: 1em;} 
     18blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em;} 
    1319blockquote p {margin: 0;} 
    14 blockquote i {font-style: normal;} 
    15 blockquote b {display: block; margin-top: 0.5em; font-weight: normal; font-size: smaller; font-style: normal;} 
    16 blockquote b i {font-style: italic;} 
    1720 
    1821kbd {font-weight: bold; font-size: 1em;} 
    1922sup {font-size: smaller; line-height: 1px;} 
    2023 
    21 .slide code {padding: 2px 0.25em; font-weight: bold; color: #533;} 
    22 .slide code.bad, code del {color: red;} 
    23 .slide code.old {color: silver;} 
    24 .slide pre {padding: 0; margin: 0.25em 0 0.5em 0.5em; color: #533; font-size: 90%;} 
    25 .slide pre code {display: block;} 
    26 .slide ul {margin-left: 5%; margin-right: 7%; list-style: disc;} 
    27 .slide li {margin-top: 0.75em; margin-right: 0;} 
    28 .slide ul ul {line-height: 1;} 
    29 .slide ul ul li {margin: .2em; font-size: 85%; list-style: square;} 
     24.slide pre {padding: 0; margin-left: 0; margin-right: 0; font-size: 90%;} 
     25.slide ul li {font-size: 110%; padding: 0.2em;} 
     26.slide ul ul li {list-style: square; font-size: 100%} 
    3027.slide img.leader {display: block; margin: 0 auto;} 
     28.slide tt {font-size: 90%;} 
    3129 
    32 div#header, div#footer {background: #005; color: #AAB; 
    33   font-family: Verdana, Helvetica, sans-serif;} 
    34 div#header {background: #005 url(bodybg.gif) -16px 0 no-repeat; 
    35   line-height: 1px;} 
     30div#header, div#footer {color: #AAB; font-family: sans-serif;} 
     31div#header {background: #000 url(afpy.png) 20px center no-repeat} 
     32div#footer {background: #000} 
     33/* background: #005 url(bodybg.gif) -16px 0 no-repeat; */ 
    3634div#footer {font-size: 0.5em; font-weight: bold; padding: 1em 0;} 
    37 #footer h1, #footer h2 {display: block; padding: 0 1em;} 
    38 #footer h2 {font-style: italic;} 
     35#footer h1 {display: block; padding: 0 1em;} 
     36#footer h2 {display: block; padding: 0.8em 1em 0;} 
    3937 
    40 div.long {font-size: 0.75em;} 
    41 .slide h1 {position: absolute; top: 0.7em; left: 87px; z-index: 1; 
    42   margin: 0; padding: 0.3em 0 0 50px; white-space: nowrap; 
    43   font: bold 150%/1em Helvetica, sans-serif; text-transform: capitalize; 
    44   color: #DDE; background: #005;} 
    45 .slide h3 {font-size: 130%;} 
     38.slide {font-size: 1.2em;} 
     39.slide h1 {position: absolute; top: 0.45em; z-index: 1; 
     40  margin: 0; padding-left: 80px; white-space: nowrap; 
     41  font: bold 150% sans-serif; color: #DDE;} 
     42.slide h2 {font: bold 120%/1em sans-serif; padding-top: 0.5em;} 
     43.slide h3 {font: bold 100% sans-serif; padding-top: 0.5em;} 
    4644h1 abbr {font-variant: small-caps;} 
    4745 
    4846div#controls {position: absolute; left: 50%; bottom: 0; 
    49   width: 50%; 
    50   text-align: right; font: bold 0.9em Verdana, Helvetica, sans-serif;} 
    51 html>body div#controls {position: fixed; padding: 0 0 1em 0; 
    52   top: auto;} 
     47  width: 50%; text-align: right; font: bold 0.9em sans-serif;} 
     48html>body div#controls {position: fixed; padding: 0 0 1em 0; top: auto;} 
    5349div#controls form {position: absolute; bottom: 0; right: 0; width: 100%; 
    5450  margin: 0; padding: 0;} 
    55 #controls #navLinks a {padding: 0; margin: 0 0.5em;  
    56   background: #005; border: none; color: #779;  
    57   cursor: pointer;} 
     51#controls #navLinks a {padding: 0; margin: 0 0.5em; 
     52        border: none; color: #779; cursor: pointer;} 
    5853#controls #navList {height: 1em;} 
    59 #controls #navList #jumplist {position: absolute; bottom: 0; right: 0; background: #DDD; color: #227;} 
     54#controls #navList #jumplist {position: absolute; bottom: 0; right: 0; 
     55  background: #DDD; color: #227;} 
    6056 
    61 #currentSlide {text-align: center; font-size: 0.5em; color: #449;} 
     57#currentSlide {text-align: center; font-size: 0.5em; color: #449; 
     58  font-family: sans-serif; font-weight: bold;} 
    6259 
    63 #slide0 {padding-top: 3.5em; font-size: 90%;} 
    64 #slide0 h1 {position: static; margin: 1em 0 0; padding: 0; 
    65    font: bold 2em Helvetica, sans-serif; white-space: normal; 
    66    color: #000; background: transparent;} 
    67 #slide0 h2 {font: bold italic 1em Helvetica, sans-serif; margin: 0.25em;} 
     60#slide0 {padding-top: 1.5em} 
     61#slide0 h1 {position: static; margin: 1em 0 0; padding: 0; color: #000; 
     62  font: bold 2em sans-serif; white-space: normal; background: transparent;} 
     63#slide0 h2 {font: bold italic 1em sans-serif; margin: 0.25em;} 
    6864#slide0 h3 {margin-top: 1.5em; font-size: 1.5em;} 
    6965#slide0 h4 {margin-top: 0; font-size: 1em;} 
     
    7167ul.urls {list-style: none; display: inline; margin: 0;} 
    7268.urls li {display: inline; margin: 0;} 
    73 .note {display: none;} 
    7469.external {border-bottom: 1px dotted gray;} 
    7570html>body .external {border-bottom: none;} 
    7671.external:after {content: " \274F"; font-size: smaller; color: #77B;} 
    7772 
    78 .incremental, .incremental *, .incremental *:after {color: #DDE; visibility: visible;} 
     73.incremental, .incremental *, .incremental *:after {visibility: visible; 
     74  color: white; border: 0;} 
    7975img.incremental {visibility: hidden;} 
    80 .slide .current {color: #B02;} 
     76.slide .current {color: #606;} 
    8177 
     78.slide-display {display: inline ! important;} 
    8279 
    83 /* diagnostics 
     80.huge {font-family: sans-serif; font-weight: bold; font-size: 150%;} 
     81.big {font-family: sans-serif; font-weight: bold; font-size: 120%;} 
     82.small {font-size: 75%;} 
     83.tiny {font-size: 50%;} 
     84.huge tt, .big tt, .small tt, .tiny tt {font-size: 115%;} 
     85.huge pre, .big pre, .small pre, .tiny pre {font-size: 115%;} 
    8486 
     87.maroon {color: maroon;} 
     88.red {color: red;} 
     89.magenta {color: magenta;} 
     90.fuchsia {color: fuchsia;} 
     91.pink {color: #FAA;} 
     92.orange {color: orange;} 
     93.yellow {color: yellow;} 
     94.lime {color: lime;} 
     95.green {color: green;} 
     96.olive {color: olive;} 
     97.teal {color: teal;} 
     98.cyan {color: cyan;} 
     99.aqua {color: aqua;} 
     100.blue {color: blue;} 
     101.navy {color: navy;} 
     102.purple {color: purple;} 
     103.black {color: black;} 
     104.gray {color: gray;} 
     105.silver {color: silver;} 
     106.white {color: white;} 
     107 
     108.left {text-align: left ! important;} 
     109.center {text-align: center ! important;} 
     110.right {text-align: right ! important;} 
     111 
     112.animation {position: relative; margin: 1em 0; padding: 0;} 
     113.animation img {position: absolute;} 
     114 
     115/* Docutils-specific overrides */ 
     116 
     117.slide table.docinfo {margin: 1em 0 0.5em 2em;} 
     118 
     119pre.literal-block, pre.doctest-block {background-color: transparent;} 
     120 
     121tt.docutils {background-color: transparent;} 
     122 
     123/* diagnostics */ 
     124/* 
    85125li:after {content: " [" attr(class) "]"; color: #F88;} 
    86  */ 
     126div:before {content: "[" attr(class) "]"; color: #F88;} 
     127*/ 
  • PyCon07/ui/default/print.css

    r25 r27  
    1 /* The following rule is necessary to have all slides appear in print! DO NOT REMOVE IT! */ 
     1/* This file has been placed in the public domain. */ 
     2/* The following rule is necessary to have all slides appear in print! 
     3   DO NOT REMOVE IT! */ 
    24.slide, ul {page-break-inside: avoid; visibility: visible !important;} 
    35h1 {page-break-after: avoid;} 
     
    1113#slide0 {margin-bottom: 3em;} 
    1214 
    13 h1 {border-top: 2pt solid gray; border-bottom: 1px dotted silver;} 
    14 .extra {background: transparent !important;} 
    15 div.extra, pre.extra, .example {font-size: 10pt; color: #333;} 
    16 ul.extra a {font-weight: bold;} 
    17 p.example {display: none;} 
    18  
    1915#header {display: none;} 
    20 #footer h1 {margin: 0; border-bottom: 1px solid; color: gray; font-style: italic;} 
     16#footer h1 {margin: 0; border-bottom: 1px solid; color: gray; 
     17  font-style: italic;} 
    2118#footer h2, #controls {display: none;} 
    2219 
    23 /* The following rule keeps the layout stuff out of print.  Remove at your own risk! */ 
     20.print {display: inline ! important;} 
     21 
     22/* The following rule keeps the layout stuff out of print. 
     23   Remove at your own risk! */ 
    2424.layout, .layout * {display: none !important;} 
  • PyCon07/ui/default/s5-core.css

    r25 r27  
    1 /* Do not edit or override these styles! The system will likely break if you do. */ 
     1/* This file has been placed in the public domain. */ 
     2/* Do not edit or override these styles! 
     3   The system will likely break if you do. */ 
    24 
    35div#header, div#footer, div#controls, .slide {position: absolute;} 
  • PyCon07/ui/default/slides.css

    r25 r27  
    1 @import url(s5-core.css); /* required to make the slide show run at all */ 
    2 @import url(framing.css); /* sets basic placement and size of slide components */ 
    3 @import url(pretty.css);  /* stuff that makes the slides look better than blah */ 
     1/* This file has been placed in the public domain. */ 
     2 
     3/* required to make the slide show run at all */ 
     4@import url(s5-core.css); 
     5 
     6/* sets basic placement and size of slide components */ 
     7@import url(framing.css); 
     8 
     9/* styles that make the slides look good */ 
     10@import url(pretty.css); 
  • PyCon07/ui/default/slides.js

    r25 r27  
    11// S5 v1.1 slides.js -- released into the Public Domain 
     2// Modified for Docutils (http://docutils.sf.net) by David Goodger 
    23// 
    3 // Please see http://www.meyerweb.com/eric/tools/s5/credits.html for information  
    4 // about all the wonderful and talented contributors to this code! 
     4// Please see http://www.meyerweb.com/eric/tools/s5/credits.html for 
     5// information about all the wonderful and talented contributors to this code! 
    56 
    67var undef; 
     
    89var snum = 0; 
    910var smax = 1; 
     11var slideIDs = new Array(); 
    1012var incpos = 0; 
    1113var number = undef; 
     
    8183 
    8284                var did = 'slide' + n.toString(); 
    83                 obj.setAttribute('id',did); 
     85                if (obj.getAttribute('id')) { 
     86                        slideIDs[n] = obj.getAttribute('id'); 
     87                } 
     88                else { 
     89                        obj.setAttribute('id',did); 
     90                        slideIDs[n] = did; 
     91                } 
    8492                if (isOp) continue; 
    8593 
     
    102110function currentSlide() { 
    103111        var cs; 
     112        var footer_nodes; 
     113        var vis = 'visible'; 
    104114        if (document.getElementById) { 
    105115                cs = document.getElementById('currentSlide'); 
     116                footer_nodes = document.getElementById('footer').childNodes; 
    106117        } else { 
    107118                cs = document.currentSlide; 
     119                footer = document.footer.childNodes; 
    108120        } 
    109121        cs.innerHTML = '<span id="csHere">' + snum + '<\/span> ' +  
     
    111123                '<span id="csTotal">' + (smax-1) + '<\/span>'; 
    112124        if (snum == 0) { 
    113                 cs.style.visibility = 'hidden'; 
    114         } else { 
    115                 cs.style.visibility = 'visible'; 
    116         } 
     125                vis = 'hidden'; 
     126        } 
     127        cs.style.visibility = vis; 
     128        for (var i = 0; i < footer_nodes.length; i++) { 
     129                if (footer_nodes[i].nodeType == 1) { 
     130                        footer_nodes[i].style.visibility = vis; 
     131                } 
     132        }                
    117133} 
    118134 
     
    120136        if (document.getElementById('slideProj').disabled || step == 0) return; 
    121137        var jl = document.getElementById('jumplist'); 
    122         var cid = 'slide' + snum; 
     138        var cid = slideIDs[snum]; 
    123139        var ce = document.getElementById(cid); 
    124140        if (incrementals[snum].length > 0) { 
     
    135151        } else 
    136152                snum = parseInt(jl.value); 
    137         var nid = 'slide' + snum; 
     153        var nid = slideIDs[snum]; 
    138154        var ne = document.getElementById(nid); 
    139155        if (!ne) { 
    140                 ne = document.getElementById('slide0'); 
     156                ne = document.getElementById(slideIDs[0]); 
    141157                snum = 0; 
    142158        } 
     
    290306                e = window.event; 
    291307        } else target = e.target; 
    292         if (target.getAttribute('href') != null || hasValue(target.rel, 'external') || isParentOrSelf(target, 'controls') || isParentOrSelf(target,'embed') || isParentOrSelf(target,'object')) return true; 
     308    if (target.href != null || hasValue(target.rel, 'external') || isParentOrSelf(target, 'controls') || isParentOrSelf(target,'embed') || isParentOrSelf(target, 'object')) return true;  
    293309        if (!e.which || e.which == 1) { 
    294310                if (!incrementals[snum] || incpos >= incrementals[snum].length) { 
     
    301317 
    302318function findSlide(hash) { 
    303         var target = null; 
    304         var slides = GetElementsWithClassName('*','slide'); 
    305         for (var i = 0; i < slides.length; i++) { 
    306                 var targetSlide = slides[i]; 
    307                 if ( (targetSlide.name && targetSlide.name == hash) 
    308                  || (targetSlide.id && targetSlide.id == hash) ) { 
    309                         target = targetSlide; 
    310                         break; 
    311                 } 
    312         } 
    313         while(target != null && target.nodeName != 'BODY') { 
    314                 if (hasClass(target, 'slide')) { 
    315                         return parseInt(target.id.slice(5)); 
    316                 } 
    317                 target = target.parentNode; 
     319        var target = document.getElementById(hash); 
     320&n