From e159182e7a97c806a2a851fc2b350058b86c8d7e Mon Sep 17 00:00:00 2001 From: Mark Pilgrim Date: Wed, 15 Jul 2009 01:57:28 -0400 Subject: [PATCH] about page fiddling --- about.html | 25 ++++++++---------- diveintopython3.org | 47 ++++++++++++---------------------- i/this-book-belongs-to.png | Bin 0 -> 36225 bytes iterators-and-generators.html | 14 +++++++++- 4 files changed, 41 insertions(+), 45 deletions(-) mode change 100644 => 100755 about.html create mode 100755 i/this-book-belongs-to.png mode change 100644 => 100755 iterators-and-generators.html diff --git a/about.html b/about.html old mode 100644 new mode 100755 index 230e1bb..5526162 --- a/about.html +++ b/about.html @@ -5,6 +5,10 @@ @@ -13,19 +17,12 @@ h1:before{content:''}
 

You are here: Home Dive Into Python 3

About The Book

+
+

The text of Dive Into Python 3 is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. -

The chardet library referenced in Case study: porting chardet to Python 3 is licensed under the LGPL 2.1 or later. The alphametics solver referenced in Advanced Iterators is based on Raymond Hettinger's solver for Python 2, which he has graciously relicensed under the MIT license so I could port it to Python 3. Advanced Classes and Special Method Names contain snippets of code from the Python standard library which are released under the Python Software Foundation License version 2. All other example code is my original work and is licensed under the MIT license. Full licensing terms are included in each source code file. -

The dynamic highlighting effects in the online edition are built on top of jQuery, which is dual-licensed under the MIT and GPL licenses. Color syntax highlighting is provided by prettify.js, which is licensed under the Apache License 2.0. -

The online edition loads as quickly as it does because -

    -
  1. HTML is compressed. -
  2. Scripts and stylesheets are minimized by YUI Compressor. -
  3. Scripts are combined to reduce HTTP requests. -
  4. Stylesheets are combined and inlined to reduce HTTP requests. -
  5. Unused CSS selectors and properties are removed on a page-by-page basis with pyquery. -
  6. HTTP caching and other server-side options are optimized based on advice from YSlow and Page Speed. -
  7. The text uses Unicode characters in place of graphics wherever possible. -
  8. The entire book was lovingly hand-authored in HTML 5 to avoid markup cruft. -
-

Send corrections and feedback to mark@diveintomark.org. +

The chardet library is licensed under the LGPL 2.1 or later. The alphametics solver is a port of Raymond Hettinger’s version, which was released under the MIT license. Advanced Classes and Special Method Names contain code from the Python standard library, released under the PSF License 2.0. All other example code is my original work and is licensed under the MIT license. +

The online edition uses jQuery, released under the MIT and GPL licenses. Color syntax highlighting is provided by prettify.js, released under the Apache License 2.0. +

Corrections and feedback to mark@diveintomark.org +

+

© 2001–9 Mark Pilgrim diff --git a/diveintopython3.org b/diveintopython3.org index b10fdb5..274626a 100755 --- a/diveintopython3.org +++ b/diveintopython3.org @@ -1,40 +1,26 @@ * Installing Python * Your First Python Program -* TODO mention why from module import * is only allowed at module level +** TODO mention why from module import * is only allowed at module level * Native Datatypes * Strings * Regular Expressions * Closures & Generators * Classes & Iterators -* Advanced Iterators -** TODO 2nd draft -* Unit Testing -** TODO 2nd draft -* Advanced Unit Testing -** TODO 1st draft -* Refactoring -** TODO 2nd draft -* Advanced Classes -** TODO 1st draft -* Files -** TODO 1st draft -* XML -** TODO 2nd draft -* Serializing Python Objects -** TODO 1st draft -* HTTP Web Services -** TODO 2nd draft -* Threading & Multiprocessing -** TODO 1st draft -* Packaging Python libraries -** TODO 1st draft -* Case Study: Porting chardet to Python 3 -** TODO 2nd draft +* TODO 2nd draft Advanced Iterators +* TODO 2nd draft Unit Testing +* TODO 1st draft Advanced Unit Testing +* TODO 2nd draft Refactoring +* TODO 1st draft Advanced Classes +* TODO 1st draft Files +* TODO 2nd draft XML +* TODO 1st draft Serializing Python Objects +* TODO 2nd draft HTTP Web Services +* TODO 1st draft Threading & Multiprocessing +* TODO 1st draft Packaging Python libraries +* TODO 2nd draft Case Study: Porting chardet to Python 3 * Where to go from here -* Porting Code to Python 3 with 2to3 -** TODO 2nd draft -* Special Method Names -** TODO 2nd draft +* TODO 2nd draft Porting Code to Python 3 with 2to3 +* TODO 2nd draft Special Method Names * Bits to add somewhere ** TODO section on tuples ** TODO section (chapter?) on comprehensions @@ -52,4 +38,5 @@ they update when the dictionary changes * Meta ** TODO generate HTML ** TODO generate PDF -** TODO all

 blocks without numbers should be marked class=nd
+** DONE all 
 blocks without numbers should be marked class=nd
+   CLOSED: [2009-07-14 Tue 20:55]
diff --git a/i/this-book-belongs-to.png b/i/this-book-belongs-to.png
new file mode 100755
index 0000000000000000000000000000000000000000..9a86ad4e8a440073b56c567c95abbe39a643012d
GIT binary patch
literal 36225
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
 
 
-