diff --git a/links/README.md b/links/README.md index 2a3d80a..65749b2 100644 --- a/links/README.md +++ b/links/README.md @@ -1,52 +1,6 @@ -# Short links for URLs in the book +This file is deployed as `.htaccess` to the FPY.LI domain +to map short URLs in Fluent Python to the original URLs. -## Problem: link rot +To update it, I use tools in this other repo: -_Fluent Python, Second Edition_ has more than 1000 links to external resources. -Inevitably, some of those links will rot as time passes. -But I can't change the URLs in the print book... - -## Solution: indirection - -I replaced almost all URLs in the book with shortened versions that go through the `fpy.li` site which I control. -The site has an `.htaccess` file with *temporary* redirects. - -When I find out a link is stale, I can thange the redirect in `.htaccess` to a new target, -which may be a link to copy in the Internet Archive's -[Wayback Machine](https://archive.org/web/) -o the link in the book is back in service through the updated redirect. - - -## Help wanted - -Please report broken links as bugs in the [`FPY.LI.htaccess`](FPY.LI.htaccess) file. -Also, feel free to send pull requests with fixes to that file. -When I accept a PR, I will redeploy it to `fpy.li/.htaccess`. - - -## Details - -Almost all URLs in the book are replaced with shortened versions like -[`http://fpy.li/1-3`](http://fpy.li/1-3)—for chapter 1, link #3. - -There are also custom short URLs like -[`https://fpy.li/code`](https://fpy.li/code) which redirects to the example code repository. -I used custom short URLs for URLs with 3 or more mentions, or links to PEPs. - -Exceptions: - -- URLs with `oreilly` in them are unchanged; -- `fluentpython.com` URL (with no path) is unchanged; - -The `custom.htaccess` file contains redirects with custom names -plus numbered URLs generated from the links in each chapter in -the Second Edition in English. - -`short.htaccess` has redirects made by `short.py`, starting -with the Second Edition in Brazilian Portuguese. - -```shell -cat custom.htaccess short.htaccess > FPY.LI.htaccess -``` - -`FPY.LI.htaccess` is deployed at the root folder in `http://fpy.li`. +https://github.com/pythonfluente/pythonfluente2e diff --git a/links/custom.htaccess b/links/custom.htaccess deleted file mode 100644 index cc779db..0000000 --- a/links/custom.htaccess +++ /dev/null @@ -1,1072 +0,0 @@ -ErrorDocument 404 /404.html - -# main resources -RedirectTemp /book https://www.oreilly.com/library/view/fluent-python-2nd/9781492056348/ -RedirectTemp /code https://github.com/fluentpython/example-code-2e -RedirectTemp /home https://www.fluentpython.com/ - -# URLs mentioned at least three times -RedirectTemp /bisect https://www.fluentpython.com/extra/ordered-sequences-with-bisect/ -RedirectTemp /cardxvi https://www.python.org/dev/peps/pep-0484/#the-numeric-tower -RedirectTemp /collec https://docs.python.org/3/library/collections.html -RedirectTemp /dask https://dask.org/ -RedirectTemp /dtmodel https://docs.python.org/3/reference/datamodel.html -RedirectTemp /descr101 https://www.python.org/download/releases/2.2.3/descrintro/ -RedirectTemp /descrhow https://docs.python.org/3/howto/descriptor.html -RedirectTemp /doctest https://docs.python.org/3/library/doctest.html -RedirectTemp /effectpy https://effectivepython.com/ -RedirectTemp /fmtspec https://docs.python.org/3/library/string.html#formatspec -RedirectTemp /gunicorn https://gunicorn.org/ -RedirectTemp /hashint https://www.fluentpython.com/extra/internals-of-sets-and-dicts/ -RedirectTemp /hattingh https://www.oreilly.com/library/view/using-asyncio-in/9781492075325/ -RedirectTemp /httpx https://www.python-httpx.org/ -RedirectTemp /initvar https://docs.python.org/3/library/dataclasses.html#init-only-variables -RedirectTemp /mypy https://mypy.readthedocs.io/en/stable/ -RedirectTemp /norvigdp http://norvig.com/design-patterns/ -RedirectTemp /nsphere https://en.wikipedia.org/wiki/N-sphere -RedirectTemp /oldcoro https://www.fluentpython.com/extra/classic-coroutines/ -RedirectTemp /pandas https://pandas.pydata.org/ -RedirectTemp /pycook3 https://www.oreilly.com/library/view/python-cookbook-3rd/9781449357337/ -RedirectTemp /pynut3 https://www.oreilly.com/library/view/python-in-a/9781491913833/ -RedirectTemp /pypydif https://doc.pypy.org/en/latest/cpython_differences.html#subclasses-of-built-in-types -RedirectTemp /shed4051 https://github.com/python/typeshed/issues/4051 -RedirectTemp /specattr https://docs.python.org/3/library/stdtypes.html#special-attributes -RedirectTemp /typecoro https://docs.python.org/3.10/library/typing.html#typing.Coroutine -RedirectTemp /typing https://docs.python.org/3/library/typing.html -RedirectTemp /weakref https://www.fluentpython.com/extra/weak-references/ - -# URL added during QA of the Second Edition -RedirectTemp /bdfl https://www.artima.com/weblogs/viewpost.jsp?thread=235725 - -# Python Enhancement Proposals -RedirectTemp /pep218 https://www.python.org/dev/peps/pep-0218/ -RedirectTemp /pep227 https://www.python.org/dev/peps/pep-0227/ -RedirectTemp /pep255 https://www.python.org/dev/peps/pep-0255/ -RedirectTemp /pep342 https://www.python.org/dev/peps/pep-0342/ -RedirectTemp /pep343 https://www.python.org/dev/peps/pep-0343/ -RedirectTemp /pep357 https://www.python.org/dev/peps/pep-0357/ -RedirectTemp /pep362 https://www.python.org/dev/peps/pep-0362/ -RedirectTemp /pep371 https://www.python.org/dev/peps/pep-0371/ -RedirectTemp /pep380 https://www.python.org/dev/peps/pep-0380/ -RedirectTemp /pep393 https://www.python.org/dev/peps/pep-0393/ -RedirectTemp /pep412 https://www.python.org/dev/peps/pep-0412/ -RedirectTemp /pep442 https://www.python.org/dev/peps/pep-0442/ -RedirectTemp /pep443 https://www.python.org/dev/peps/pep-0443/ -RedirectTemp /pep448 https://www.python.org/dev/peps/pep-0448/ -RedirectTemp /pep455 https://www.python.org/dev/peps/pep-0455/ -RedirectTemp /pep456 https://www.python.org/dev/peps/pep-0456/ -RedirectTemp /pep461 https://www.python.org/dev/peps/pep-0461/ -RedirectTemp /pep465 https://www.python.org/dev/peps/pep-0465/ -RedirectTemp /pep467 https://www.python.org/dev/peps/pep-0467/ -RedirectTemp /pep482 https://www.python.org/dev/peps/pep-0482/ -RedirectTemp /pep483 https://www.python.org/dev/peps/pep-0483/ -RedirectTemp /pep484 https://www.python.org/dev/peps/pep-0484/ -RedirectTemp /pep487 https://www.python.org/dev/peps/pep-0487/ -RedirectTemp /pep492 https://www.python.org/dev/peps/pep-0492/ -RedirectTemp /pep519 https://www.python.org/dev/peps/pep-0519/ -RedirectTemp /pep525 https://www.python.org/dev/peps/pep-0525/ -RedirectTemp /pep526 https://www.python.org/dev/peps/pep-0526/ -RedirectTemp /pep528 https://www.python.org/dev/peps/pep-0528/ -RedirectTemp /pep529 https://www.python.org/dev/peps/pep-0529/ -RedirectTemp /pep530 https://www.python.org/dev/peps/pep-0530/ -RedirectTemp /pep544 https://www.python.org/dev/peps/pep-0544/ -RedirectTemp /pep554 https://www.python.org/dev/peps/pep-0554/ -RedirectTemp /pep557 https://www.python.org/dev/peps/pep-0557/ -RedirectTemp /pep560 https://www.python.org/dev/peps/pep-0560/ -RedirectTemp /pep561 https://www.python.org/dev/peps/pep-0561/ -RedirectTemp /pep563 https://www.python.org/dev/peps/pep-0563/ -RedirectTemp /pep570 https://www.python.org/dev/peps/pep-0570/ -RedirectTemp /pep572 https://www.python.org/dev/peps/pep-0572/ -RedirectTemp /pep584 https://www.python.org/dev/peps/pep-0584/ -RedirectTemp /pep585 https://www.python.org/dev/peps/pep-0585/ -RedirectTemp /pep586 https://www.python.org/dev/peps/pep-0586/ -RedirectTemp /pep589 https://www.python.org/dev/peps/pep-0589/ -RedirectTemp /pep591 https://www.python.org/dev/peps/pep-0591/ -RedirectTemp /pep593 https://www.python.org/dev/peps/pep-0593/ -RedirectTemp /pep604 https://www.python.org/dev/peps/pep-0604/ -RedirectTemp /pep612 https://www.python.org/dev/peps/pep-0612/ -RedirectTemp /pep613 https://www.python.org/dev/peps/pep-0613/ -RedirectTemp /pep616 https://www.python.org/dev/peps/pep-0616/ -RedirectTemp /pep617 https://www.python.org/dev/peps/pep-0617/ -RedirectTemp /pep618 https://www.python.org/dev/peps/pep-0618/ -RedirectTemp /pep634 https://www.python.org/dev/peps/pep-0634/ -RedirectTemp /pep635 https://www.python.org/dev/peps/pep-0635/ -RedirectTemp /pep636 https://www.python.org/dev/peps/pep-0636/ -RedirectTemp /pep638 https://www.python.org/dev/peps/pep-0638/ -RedirectTemp /pep645 https://www.python.org/dev/peps/pep-0645/ -RedirectTemp /pep646 https://www.python.org/dev/peps/pep-0646/ -RedirectTemp /pep647 https://www.python.org/dev/peps/pep-0647/ -RedirectTemp /pep649 https://www.python.org/dev/peps/pep-0649/ -RedirectTemp /pep654 https://www.python.org/dev/peps/pep-0654/ -RedirectTemp /pep655 https://www.python.org/dev/peps/pep-0655/ -RedirectTemp /pep661 https://www.python.org/dev/peps/pep-0661/ -RedirectTemp /pep3099 https://www.python.org/dev/peps/pep-3099/ -RedirectTemp /pep3102 https://www.python.org/dev/peps/pep-3102/ -RedirectTemp /pep3104 https://www.python.org/dev/peps/pep-3104/ -RedirectTemp /pep3106 https://www.python.org/dev/peps/pep-3106/ -RedirectTemp /pep3107 https://www.python.org/dev/peps/pep-3107/ -RedirectTemp /pep3115 https://www.python.org/dev/peps/pep-3115/ -RedirectTemp /pep3118 https://www.python.org/dev/peps/pep-3118/ -RedirectTemp /pep3119 https://www.python.org/dev/peps/pep-3119/ -RedirectTemp /pep3129 https://www.python.org/dev/peps/pep-3129/ -RedirectTemp /pep3132 https://www.python.org/dev/peps/pep-3132/ -RedirectTemp /pep3141 https://www.python.org/dev/peps/pep-3141/ -RedirectTemp /pep3148 https://www.python.org/dev/peps/pep-3148/ -RedirectTemp /pep3155 https://www.python.org/dev/peps/pep-3155/ -RedirectTemp /pep3333 https://www.python.org/dev/peps/pep-3333/ - -# Remaining URLs by chapter - -############################################################ p -RedirectTemp /p-1 https://mail.python.org/pipermail/python-list/2002-December/134521.html -RedirectTemp /p-2 https://docs.python.org/3.10/tutorial/ -RedirectTemp /p-3 https://docs.python.org/3/tutorial/ -RedirectTemp /p-4 https://www.oreilly.com/library/view/fluent-python-2nd/9781492056348/ -RedirectTemp /p-5 https://www.oreilly.com/online-learning/try-now.html -RedirectTemp /p-6 https://www.oreilly.com/library/view/fluent-python-2nd/9781492056348/ -RedirectTemp /p-7 https://stackoverflow.com/users/95810/alex-martelli -RedirectTemp /p-8 https://pythonpro.com.br -RedirectTemp /p-9 https://groups.google.com/g/python-brasil -RedirectTemp /p-10 https://www.coffeelab.com.br/ -RedirectTemp /p-11 https://garoa.net.br/wiki/P%C3%A1gina_principal -############################################################ a -RedirectTemp /a-1 https://groups.google.com/forum/#!topic/python-tulip/Y4bhLNbKs74 -RedirectTemp /a-2 https://docs.python.org/3/library/asyncio-eventloop.html#executor -RedirectTemp /a-3 https://www.youtube.com/watch?v=x-kB2o8sd5c -RedirectTemp /a-4 https://www.youtube.com/watch?v=OSGv2VnC0go -RedirectTemp /a-5 https://mail.python.org/pipermail/python-ideas/2015-March/032557.html -RedirectTemp /a-6 https://pypi.org/project/pep8/ -RedirectTemp /a-7 https://pypi.org/project/flake8/ -RedirectTemp /a-8 https://pypi.org/project/pyflakes/ -RedirectTemp /a-9 https://pypi.org/project/mccabe/ -RedirectTemp /a-10 https://google.github.io/styleguide/pyguide.html -RedirectTemp /a-11 https://flask.palletsprojects.com/en/1.1.x/styleguide/ -RedirectTemp /a-12 https://docs.python-guide.org/ -RedirectTemp /a-13 https://david.goodger.org/projects/pycon/2007/idiomatic/handout.html -RedirectTemp /a-14 https://docs.mongodb.com/manual/about/#about-the-documentation-process -RedirectTemp /a-15 https://blog.startifact.com/posts/older/what-is-pythonic.html -RedirectTemp /a-16 https://mail.python.org/pipermail/tutor/2003-October/thread.html#25930 -RedirectTemp /a-17 https://mail.python.org/pipermail/python-list/2003-April/192027.html -RedirectTemp /a-18 https://www.python.org/doc/essays/ -############################################################ 01 -RedirectTemp /1-1 http://hugunin.net/story_of_jython.html -RedirectTemp /1-2 https://www.oreilly.com/library/view/jython-essentials/9781449397364/ -RedirectTemp /1-3 https://docs.python.org/3/reference/lexical_analysis.html#reserved-classes-of-identifiers -RedirectTemp /1-4 https://docs.python.org/3.10/library/string.html#format-string-syntax -RedirectTemp /1-5 https://stackoverflow.com/questions/1436703/what-is-the-difference-between-str-and-repr -RedirectTemp /1-6 https://docs.python.org/3/library/stdtypes.html#truth -RedirectTemp /1-7 https://docs.python.org/3/tutorial/controlflow.html#unpacking-argument-lists -RedirectTemp /1-8 https://www.python.org/doc/humor/#the-zen-of-python -RedirectTemp /1-9 https://stackoverflow.com/users/95810/alex-martelli -RedirectTemp /1-10 https://en.wikipedia.org/wiki/Object_model -RedirectTemp /1-11 https://www.dourish.com/goodies/jargon.html -RedirectTemp /1-12 https://zopeinterface.readthedocs.io/en/latest/ -RedirectTemp /1-13 https://plone.org/ -############################################################ 02 -RedirectTemp /2-1 https://github.com/fluentpython/example-code-2e/blob/master/02-array-seq/listcomp_speed.py -RedirectTemp /2-2 https://www.python.org/dev/peps/pep-3132/ -RedirectTemp /2-3 https://stackoverflow.com/questions/68630/are-tuples-more-efficient-than-lists-in-python/22140115#22140115 -RedirectTemp /2-4 https://docs.python.org/3/whatsnew/3.5.html#pep-448-additional-unpacking-generalizations -RedirectTemp /2-5 https://docs.python.org/3/whatsnew/3.5.html#pep-448-additional-unpacking-generalizations -RedirectTemp /2-6 https://docs.python.org/3.10/whatsnew/3.10.html#pep-634-structural-pattern-matching -RedirectTemp /2-7 https://docs.python.org/3.10/whatsnew/3.10.html -RedirectTemp /2-8 https://en.wikipedia.org/wiki/Switch_statement#Fallthrough -RedirectTemp /2-9 https://en.wikipedia.org/wiki/Dangling_else -RedirectTemp /2-10 https://github.com/gvanrossum/patma/blob/3ece6444ef70122876fd9f0099eb9490a2d630df/EXAMPLES.md#case-6-a-very-deep-iterable-and-type-match-with-extraction -RedirectTemp /2-11 https://github.com/fluentpython/lispy/blob/main/original/norvig/lis.py -RedirectTemp /2-12 https://norvig.com/lispy.html -RedirectTemp /2-13 https://numpy.org/doc/stable/user/quickstart.html#indexing-slicing-and-iterating -RedirectTemp /2-14 https://pythontutor.com/ -RedirectTemp /2-15 https://en.wikipedia.org/wiki/Fluent_interface -RedirectTemp /2-16 https://docs.python.org/3/library/bisect.html#bisect.insort -RedirectTemp /2-17 https://stackoverflow.com/questions/4845418/when-should-a-memoryview-be-used/ -RedirectTemp /2-18 https://www.fluentpython.com/extra/parsing-binary-struct/ -RedirectTemp /2-19 http://www.netlib.org -RedirectTemp /2-20 https://pandas.pydata.org/ -RedirectTemp /2-21 https://scikit-learn.org/stable/ -RedirectTemp /2-22 https://docs.python.org/3/howto/sorting.html -RedirectTemp /2-23 https://www.python.org/dev/peps/pep-3132/ -RedirectTemp /2-24 https://bugs.python.org/issue2292 -RedirectTemp /2-25 https://docs.python.org/3.10/whatsnew/3.10.html#pep-634-structural-pattern-matching -RedirectTemp /2-26 https://docs.python.org/3.10/whatsnew/3.10.html -RedirectTemp /2-27 https://www.python.org/dev/peps/pep-0636/#appendix-a-quick-intro -RedirectTemp /2-28 https://eli.thegreenplace.net/2011/11/28/less-copies-in-python-with-the-buffer-protocol-and-memoryviews/ -RedirectTemp /2-29 https://jakevdp.github.io/PythonDataScienceHandbook/ -RedirectTemp /2-30 https://www.oreilly.com/library/view/python-for-data/9781491957653/ -RedirectTemp /2-31 https://www.labri.fr/perso/nrougier/from-python-to-numpy/ -RedirectTemp /2-32 https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html -RedirectTemp /2-33 http://www.fonts101.com/fonts/view/Uncategorized/34398/Dijkstra -RedirectTemp /2-34 https://docs.python.org/3/reference/datamodel.html#objects-values-and-types -RedirectTemp /2-35 https://en.wikipedia.org/wiki/Timsort -RedirectTemp /2-36 http://www.groklaw.net/pdf3/OraGoogle-1202.pdf -RedirectTemp /2-37 https://www.python.org/doc/humor/#id9 -############################################################ 03 -RedirectTemp /3-1 https://www.python.org/dev/peps/pep-0584/#motivation -RedirectTemp /3-2 https://docs.python.org/3.10/c-api/typeobj.html#Py_TPFLAGS_MAPPING -RedirectTemp /3-3 https://docs.python.org/3/glossary.html#term-hashable -RedirectTemp /3-4 https://docs.python.org/3/glossary.html#term-hashable -RedirectTemp /3-5 http://www.aleax.it/Python/accu04_Relearn_Python_alex.pdf -RedirectTemp /3-6 https://github.com/pingo-io/pingo-py -RedirectTemp /3-7 https://github.com/fluentpython/example-code-2e/blob/master/03-dict-set/missing.py -RedirectTemp /3-8 https://docs.python.org/3/library/collections.html#collections.ChainMap -RedirectTemp /3-9 https://docs.python.org/3/library/collections.html#collections.Counter -RedirectTemp /3-10 https://docs.python.org/3/library/shelve.html -RedirectTemp /3-11 https://docs.python.org/3/library/dbm.html -RedirectTemp /3-12 https://docs.python.org/3/library/pickle.html -RedirectTemp /3-13 https://nedbatchelder.com/blog/202006/pickles_nine_flaws.html -RedirectTemp /3-14 https://github.com/python/cpython/blob/0bbf30e2b910bc9c5899134ae9d73a8df968da35/Lib/_collections_abc.py#L813 -RedirectTemp /3-15 https://mail.python.org/pipermail/python-dev/2015-May/140003.html -RedirectTemp /3-16 https://bugs.python.org/issue18986 -RedirectTemp /3-17 https://github.com/fluentpython/example-code-2e/blob/master/03-dict-set/transformdict.py -RedirectTemp /3-18 http://gandenberger.org/2018/03/10/ordered-dicts-vs-ordereddict/ -RedirectTemp /3-19 https://www.pypy.org/ -RedirectTemp /3-20 https://morepypy.blogspot.com/2015/01/faster-more-memory-efficient-and-more.html -RedirectTemp /3-21 https://www.npopov.com/2014/12/22/PHPs-new-hashtable-implementation.html -RedirectTemp /3-22 https://www.youtube.com/watch?v=66P5FMkWoVU -RedirectTemp /3-23 https://pyvideo.org/video/276/the-mighty-dictionary-55/ -RedirectTemp /3-24 https://www.youtube.com/watch?v=p33CVV29OG8 -RedirectTemp /3-25 https://docs.python.org/3/whatsnew/3.6.html#new-dict-implementation -RedirectTemp /3-26 https://github.com/python/cpython/blob/cf7eaa4617295747ee5646c4e2b7e7a16d7c64ab/Objects/dictobject.c -RedirectTemp /3-27 https://github.com/python/cpython/blob/cf7eaa4617295747ee5646c4e2b7e7a16d7c64ab/Objects/dictnotes.txt -RedirectTemp /3-28 https://www.youtube.com/watch?v=tGAngdU_8D8 -RedirectTemp /3-29 https://speakerdeck.com/ramalho/python-set-practice-at-pycon -RedirectTemp /3-30 https://github.com/standupdev/uintset -RedirectTemp /3-31 https://spectrum.ieee.org/hans-peter-luhn-and-the-birth-of-the-hashing-algorithm -RedirectTemp /3-32 http://www.json.org/fatfree.html -RedirectTemp /3-33 https://twitter.com/mitsuhiko/status/1229385843585974272 -############################################################ 04 -RedirectTemp /4-1 https://www.slideshare.net/fischertrav/character-encoding-unicode-how-to-with-dignity-33352863 -RedirectTemp /4-2 https://pyvideo.org/video/2625/character-encoding-and-unicode-in-python/ -RedirectTemp /4-3 https://www.fluentpython.com/extra/parsing-binary-struct/ -RedirectTemp /4-4 https://www.fluentpython.com/extra/multi-character-emojis/ -RedirectTemp /4-5 https://w3techs.com/technologies/overview/character_encoding -RedirectTemp /4-6 https://docs.python.org/3/library/codecs.html#codecs.register_error -RedirectTemp /4-7 https://docs.python.org/3/library/stdtypes.html#str.isascii -RedirectTemp /4-8 https://pypi.org/project/chardet/ -RedirectTemp /4-9 https://docs.python.org/3/library/codecs.html#encodings-and-unicode -RedirectTemp /4-10 https://nedbatchelder.com/text/unipain/unipain.html -RedirectTemp /4-11 https://devblogs.microsoft.com/commandline/windows-command-line-unicode-and-utf-8-output-text-buffer/ -RedirectTemp /4-12 https://docs.python.org/3/using/cmdline.html#envvar-PYTHONIOENCODING -RedirectTemp /4-13 https://docs.python.org/3/using/cmdline.html#envvar-PYTHONLEGACYWINDOWSSTDIO -RedirectTemp /4-14 https://docs.python.org/3/library/locale.html#locale.getpreferredencoding -RedirectTemp /4-15 http://www.w3.org/TR/charmod-norm/ -RedirectTemp /4-16 https://docs.python.org/3/library/locale.html?highlight=strxfrm#locale.strxfrm -RedirectTemp /4-17 https://pypi.org/project/pyuca/ -RedirectTemp /4-18 https://github.com/jtauber/pyuca -RedirectTemp /4-19 http://www.unicode.org/Public/UCA/6.3.0/allkeys.txt -RedirectTemp /4-20 https://pypi.org/project/PyICU/ -RedirectTemp /4-21 https://docs.python.org/3.10/library/stdtypes.html#str.isalpha -RedirectTemp /4-22 https://en.wikipedia.org/wiki/Unicode_character_property#General_Category -RedirectTemp /4-23 https://en.wikipedia.org/wiki/Unicode_character_property -RedirectTemp /4-24 https://github.com/microsoft/terminal -RedirectTemp /4-25 https://docs.python.org/3/library/unicodedata.html -RedirectTemp /4-26 https://docs.python.org/3/reference/lexical_analysis.html#string-literal-concatenation -RedirectTemp /4-27 https://docs.python.org/3/library/re.html -RedirectTemp /4-28 https://nedbatchelder.com/text/unipain.html -RedirectTemp /4-29 https://www.slideshare.net/fischertrav/character-encoding-unicode-how-to-with-dignity-33352863 -RedirectTemp /4-30 https://pyvideo.org/video/2625/character-encoding-and-unicode-in-python/ -RedirectTemp /4-31 https://regebro.wordpress.com/2011/03/23/unconfusing-unicode-what-is-unicode/ -RedirectTemp /4-32 https://docs.python.org/3/howto/unicode.html -RedirectTemp /4-33 https://diveintopython3.net/strings.html -RedirectTemp /4-34 https://diveintopython3.net/ -RedirectTemp /4-35 https://finderiko.com/python-book -RedirectTemp /4-36 https://docs.python.org/3.0/whatsnew/3.0.html#text-vs-data-instead-of-unicode-vs-8-bit -RedirectTemp /4-37 https://lucumr.pocoo.org/2013/7/2/the-updated-guide-to-unicode/ -RedirectTemp /4-38 http://python-notes.curiousefficiency.org/en/latest/python3/binary_protocols.html -RedirectTemp /4-39 http://python-notes.curiousefficiency.org/en/latest/python3/text_file_processing.html -RedirectTemp /4-40 https://docs.python.org/3/library/codecs.html#standard-encodings -RedirectTemp /4-41 https://github.com/python/cpython/blob/0bbf30e2b910bc9c5899134ae9d73a8df968da35/Tools/unicode/listcodecs.py -RedirectTemp /4-42 https://www.oreilly.com/library/view/unicode-explained/059610121X/ -RedirectTemp /4-43 https://www.informit.com/store/unicode-demystified-a-practical-programmers-guide-to-9780201700527 -RedirectTemp /4-44 https://unicodebook.readthedocs.io/index.html -RedirectTemp /4-45 https://www.w3.org/International/wiki/Case_folding -RedirectTemp /4-46 http://www.w3.org/TR/charmod-norm/ -RedirectTemp /4-47 http://unicode.org/reports/tr15/ -RedirectTemp /4-48 http://www.unicode.org/faq/normalization.html -RedirectTemp /4-49 http://www.unicode.org/ -RedirectTemp /4-50 http://www.macchiato.com/unicode/nfc-faq -RedirectTemp /4-51 https://stories.moma.org/the-original-emoji-set-has-been-added-to-the-museum-of-modern-arts-collection-c6060e141f61?gi=c403f5a840a5 -RedirectTemp /4-52 https://emojipedia.org/ -RedirectTemp /4-53 https://blog.emojipedia.org/correcting-the-record-on-the-first-emoji-set/ -RedirectTemp /4-54 http://emojitracker.com/ -RedirectTemp /4-55 http://www.unicode.org/glossary/#plain_text -RedirectTemp /4-56 http://www.methods.co.nz/asciidoc/ -RedirectTemp /4-57 https://atlas.oreilly.com/ -############################################################ 05 -RedirectTemp /5-1 https://docs.python.org/3/library/typing.html#typing.TypedDict -RedirectTemp /5-2 https://docs.python.org/3.10/library/inspect.html#inspect.get_annotations -RedirectTemp /5-3 https://docs.python.org/3/library/typing.html#typing.get_type_hints -RedirectTemp /5-4 https://docs.python.org/3.8/library/collections.html#collections.somenamedtuple._asdict -RedirectTemp /5-5 https://www.jetbrains.com/pycharm/ -RedirectTemp /5-6 https://www.python.org/dev/peps/pep-0484/#acceptable-type-hints -RedirectTemp /5-7 https://docs.python.org/3/library/dataclasses.html#dataclasses.dataclass -RedirectTemp /5-8 https://docs.python.org/3/library/dataclasses.html#dataclasses.dataclass -RedirectTemp /5-9 https://docs.python.org/3/library/dataclasses.html -RedirectTemp /5-10 https://docs.python.org/3/library/dataclasses.html#inheritance -RedirectTemp /5-11 https://www.python.org/dev/peps/pep-0526/#class-and-instance-variable-annotations -RedirectTemp /5-12 https://dublincore.org/specifications/dublin-core/ -RedirectTemp /5-13 https://en.wikipedia.org/wiki/Dublin_Core -RedirectTemp /5-14 https://martinfowler.com/bliki/CodeSmell.html -RedirectTemp /5-15 https://martinfowler.com/books/refactoring.html -RedirectTemp /5-16 https://www.python.org/dev/peps/pep-0634/#class-patterns -RedirectTemp /5-17 https://docs.python.org/3/library/dataclasses.html -RedirectTemp /5-18 https://www.python.org/dev/peps/pep-0557/#id47 -RedirectTemp /5-19 https://www.python.org/dev/peps/pep-0557/#id48 -RedirectTemp /5-20 https://www.python.org/dev/peps/pep-0557/#id33 -RedirectTemp /5-21 https://realpython.com -RedirectTemp /5-22 https://realpython.com/python-data-classes/ -RedirectTemp /5-23 https://www.youtube.com/watch?v=T-TwcmT6Rcw -RedirectTemp /5-24 https://www.attrs.org/en/stable/ -RedirectTemp /5-25 https://glyph.twistedmatrix.com/2016/08/attrs.html -RedirectTemp /5-26 https://www.attrs.org/en/stable/why.html -RedirectTemp /5-27 https://github.com/dabeaz/cluegen -RedirectTemp /5-28 https://refactoring.guru/ -RedirectTemp /5-29 https://refactoring.guru/smells/data-class -RedirectTemp /5-30 https://web.archive.org/web/20190204130328/http://catb.org/esr/jargon/html/G/Guido.html -RedirectTemp /5-31 https://web.archive.org/web/20190211161610/http://catb.org/esr/jargon/html/index.html -RedirectTemp /5-32 https://www.attrs.org/en/stable/ -############################################################ 06 -RedirectTemp /6-1 https://www.olin.edu/faculty/profile/lynn-andrea-stein/ -RedirectTemp /6-2 https://docs.python.org/3/reference/datamodel.html#objects-values-and-types -RedirectTemp /6-3 https://pythontutor.com/ -RedirectTemp /6-4 https://docs.python.org/3/library/copy.html -RedirectTemp /6-5 https://en.wikipedia.org/wiki/Principle_of_least_astonishment -RedirectTemp /6-6 https://docs.python.org/3/reference/datamodel.html#object.%5C_%5C_del__ -RedirectTemp /6-7 https://emptysqua.re/blog/pypy-garbage-collection-and-a-deadlock/ -RedirectTemp /6-8 https://www.youtube.com/watch?v=HHFCFJSPWrI&feature=youtu.be -RedirectTemp /6-9 http://pymotw.com/3/copy/ -RedirectTemp /6-10 http://pymotw.com/3/weakref/ -RedirectTemp /6-11 https://docs.python.org/3/library/gc.html -RedirectTemp /6-12 https://devguide.python.org/garbage_collector/ -RedirectTemp /6-13 https://devguide.python.org/ -RedirectTemp /6-14 https://www.python.org/dev/peps/pep-0442/ -RedirectTemp /6-15 https://en.wikipedia.org/wiki/String_interning -RedirectTemp /6-16 https://en.wikipedia.org/wiki/Haddocks%27_Eyes -RedirectTemp /6-17 https://thp.io/2012/python-gc/python_gc_final_2012-01-22.pdf -############################################################ 07 -RedirectTemp /7-1 http://python-history.blogspot.com/2009/04/origins-of-pythons-functional-features.html -RedirectTemp /7-2 https://www.fluentpython.com/extra/function-introspection/ -RedirectTemp /7-3 https://docs.python.org/3/library/functions.html#map -RedirectTemp /7-4 https://en.wikipedia.org/wiki/Functional_programming -RedirectTemp /7-5 https://docs.python.org/3/howto/functional.html -RedirectTemp /7-6 https://docs.python.org/3/reference/datamodel.html#the-standard-type-hierarchy -RedirectTemp /7-7 https://docs.python.org/3/whatsnew/3.8.html#positional-only-parameters -RedirectTemp /7-8 https://docs.python.org/3/whatsnew/3.8.html#positional-only-parameters -RedirectTemp /7-9 https://github.com/python/cpython/blob/0bbf30e2b910bc9c5899134ae9d73a8df968da35/Lib/functools.py#L341 -RedirectTemp /7-10 https://docs.python.org/3/reference/datamodel.html#the-standard-type-hierarchy -RedirectTemp /7-11 https://docs.python.org/3/howto/functional.html -RedirectTemp /7-12 https://stackoverflow.com/questions/3252228/python-why-is-functools-partial-necessary -RedirectTemp /7-13 https://speakerdeck.com/ramalho/beyond-paradigms-berlin-edition -RedirectTemp /7-14 https://www.youtube.com/watch?v=bF3a2VYXxa0 -RedirectTemp /7-15 http://cs.brown.edu/~sk/Publications/Papers/Published/sk-teach-pl-post-linnaean/ -RedirectTemp /7-16 http://python-history.blogspot.com/2009/04/origins-of-pythons-functional-features.html -RedirectTemp /7-17 https://raw.githubusercontent.com/python/cpython/main/Misc/HISTORY -RedirectTemp /7-18 http://neopythonic.blogspot.com/2009/04/tail-recursion-elimination.html -############################################################ 08 -RedirectTemp /8-1 https://www.python.org/dev/peps/pep-0484/#non-goals -RedirectTemp /8-2 https://github.com/python/typing/issues/182 -RedirectTemp /8-3 https://github.com/python/mypy/issues/731 -RedirectTemp /8-4 https://github.com/google/pytype -RedirectTemp /8-5 https://github.com/Microsoft/pyright -RedirectTemp /8-6 https://pyre-check.org/ -RedirectTemp /8-7 https://mypy.readthedocs.io/en/stable/introduction.html -RedirectTemp /8-8 https://mypy.readthedocs.io/en/stable/config_file.html -RedirectTemp /8-9 https://pypi.org/project/flake8/ -RedirectTemp /8-10 https://pypi.org/project/blue/ -RedirectTemp /8-11 https://pypi.org/project/black/ -RedirectTemp /8-12 https://wefearchange.org/2020/11/steeringcouncil.rst.html -RedirectTemp /8-13 https://docs.python.org/3/library/collections.abc.html#collections-abstract-base-classes -RedirectTemp /8-14 https://en.wikipedia.org/wiki/Barbara_Liskov -RedirectTemp /8-15 https://en.wikipedia.org/wiki/Behavioral_subtyping -RedirectTemp /8-16 https://www.python.org/dev/peps/pep-0585/#implementation -RedirectTemp /8-17 https://docs.python.org/3/library/typing.html#module-contents -RedirectTemp /8-18 https://en.wikipedia.org/wiki/Geohash -RedirectTemp /8-19 https://en.wikipedia.org/wiki/Inverted_index -RedirectTemp /8-20 https://docs.python.org/3/library/typing.html#typing.List -RedirectTemp /8-21 https://docs.python.org/3/library/typing.html#typing.Dict -RedirectTemp /8-22 https://docs.python.org/3/library/typing.html#typing.Set -RedirectTemp /8-23 https://www.python.org/dev/peps/pep-0585/#implementation -RedirectTemp /8-24 https://docs.python.org/3/library/numbers.html -RedirectTemp /8-25 https://docs.python.org/3/library/typing.html#typing.List -RedirectTemp /8-26 https://github.com/python/typeshed -RedirectTemp /8-27 https://github.com/python/typeshed/blob/66cd36268a6a667714efaa27198a41d0d7f89477/stdlib/2and3/math.pyi#L45 -RedirectTemp /8-28 https://docs.python.org/3/library/statistics.html#statistics.mode -RedirectTemp /8-29 https://github.com/python/cpython/blob/822efa5695b5ba6c2316c1400e4e9ec2546f7ea5/Lib/statistics.py#L534 -RedirectTemp /8-30 https://github.com/python/typeshed/blob/e1e99245bb46223928eba68d4fc74962240ba5b4/stdlib/3/statistics.pyi -RedirectTemp /8-31 https://docs.python.org/3/library/statistics.html#statistics.mode -RedirectTemp /8-32 https://github.com/python/typeshed/blob/a8834fcd46339e17fc8add82b5803a1ce53d3d60/stdlib/3/statistics.pyi#L32 -RedirectTemp /8-33 https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/ -RedirectTemp /8-34 https://docs.python.org/3/library/typing.html#typing.Callable -RedirectTemp /8-35 https://pypi.org/project/blue/ -RedirectTemp /8-36 https://www.python.org/dev/peps/pep-0484/#id38 -RedirectTemp /8-37 https://docs.google.com/document/d/1aXs1tpwzPjW9MdsG5dI7clNFyYayFBkcXwRDo-qvbIk/preview -RedirectTemp /8-38 https://www.oreilly.com/library/view/the-best-software/9781590595008/ -RedirectTemp /8-39 https://www.youtube.com/watch?v=YFexUDjHO6w -RedirectTemp /8-40 https://www.youtube.com/watch?v=YFexUDjHO6w&t=13m40s -RedirectTemp /8-41 https://bernat.tech/posts/the-state-of-type-hints-in-python/ -RedirectTemp /8-42 https://realpython.com/python-type-checking/ -RedirectTemp /8-43 https://cjolowicz.github.io/posts/hypermodern-python-04-typing/ -RedirectTemp /8-44 https://mypy.readthedocs.io/en/stable/index.html -RedirectTemp /8-45 https://mypy.readthedocs.io/en/stable/cheat_sheet_py3.html -RedirectTemp /8-46 https://mypy.readthedocs.io/en/stable/common_issues.html -RedirectTemp /8-47 https://github.com/typeddjango/awesome-python-typing -RedirectTemp /8-48 https://docs.python.org/3/library/functions.html#max -RedirectTemp /8-49 https://en.wikipedia.org/wiki/Linguistic_relativity -RedirectTemp /8-50 https://pypistats.org/top -RedirectTemp /8-51 https://github.com/psf/requests/issues/3855 -RedirectTemp /8-52 https://lwn.net/Articles/643399/ -RedirectTemp /8-53 https://docs.python-requests.org/en/master/api/#requests.request -RedirectTemp /8-54 https://queue.acm.org/detail.cfm?id=1039523 -############################################################ 09 -RedirectTemp /9-1 https://docs.python.org/3/library/dis.html -RedirectTemp /9-2 https://en.wikipedia.org/wiki/Memoization -RedirectTemp /9-3 https://numpy.org/doc/stable/user/basics.types.html -RedirectTemp /9-4 https://docs.python.org/3/library/functools.html#functools.singledispatch -RedirectTemp /9-5 https://github.com/GrahamDumpleton/wrapt/blob/develop/blog/README.md -RedirectTemp /9-6 https://github.com/GrahamDumpleton/wrapt/blob/develop/blog/01-how-you-implemented-your-python-decorator-is-wrong.md -RedirectTemp /9-7 https://wrapt.readthedocs.io/en/latest/ -RedirectTemp /9-8 https://www.oreilly.com/library/view/python-cookbook-3rd/9781449357337/ch09.html -RedirectTemp /9-9 https://pypi.org/project/decorator/ -RedirectTemp /9-10 https://wiki.python.org/moin/PythonDecoratorLibrary -RedirectTemp /9-11 http://web.archive.org/web/20201109032203/http://effbot.org/zone/closure.htm -RedirectTemp /9-12 https://www.python.org/dev/peps/pep-3104/ -RedirectTemp /9-13 https://www.python.org/dev/peps/pep-0227/ -RedirectTemp /9-14 https://www.python.org/dev/peps/pep-0443/ -RedirectTemp /9-15 https://www.artima.com/weblogs/viewpost.jsp?thread=101605 -RedirectTemp /9-16 https://reg.readthedocs.io/en/latest/ -RedirectTemp /9-17 https://morepath.readthedocs.io/en/latest/ -RedirectTemp /9-18 https://www.gnu.org/software/emacs/manual/html_node/elisp/Dynamic-Binding.html -RedirectTemp /9-19 http://www.paulgraham.com/rootsoflisp.html -RedirectTemp /9-20 http://www-formal.stanford.edu/jmc/recursive/recursive.html -RedirectTemp /9-21 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this -############################################################ 10 -RedirectTemp /10-1 https://en.wikipedia.org/wiki/Software_design_pattern -RedirectTemp /10-2 https://en.wikipedia.org/wiki/Iterator_pattern -RedirectTemp /10-3 https://github.com/python/mypy/issues/9397 -RedirectTemp /10-4 http://www.norvig.com/design-patterns/index.htm -RedirectTemp /10-5 https://pyvideo.org/video/1110/python-design-patterns/ -RedirectTemp /10-6 http://www.aleax.it/gdd_pydp.pdf -RedirectTemp /10-7 https://perl.plover.com/yak/design/ -RedirectTemp /10-8 https://en.wikipedia.org/wiki/Turtles_all_the_way_down -############################################################ 11 -RedirectTemp /11-1 https://blog.startifact.com/posts/older/what-is-pythonic.html -RedirectTemp /11-2 https://julien.danjou.info/guide-python-static-class-abstract-methods/ -RedirectTemp /11-3 https://docs.python.org/3/library/string.html#formatspec -RedirectTemp /11-4 https://docs.python.org/3/reference/lexical_analysis.html#f-strings -RedirectTemp /11-5 https://docs.python.org/3/library/string.html#format-string-syntax -RedirectTemp /11-6 https://docs.python.org/3/library/string.html#formatspec -RedirectTemp /11-7 https://docs.python.org/3/reference/datamodel.html#object.__hash__ -RedirectTemp /11-8 https://web.archive.org/web/20161025185040/http://pythonpaste.org/StyleGuide.html -RedirectTemp /11-9 https://docs.python.org/3/tutorial/modules.html#more-on-modules -RedirectTemp /11-10 https://docs.python.org/3/library/gettext.html#gettext.NullTranslations -RedirectTemp /11-11 https://github.com/fluentpython/example-code-2e/blob/master/11-pythonic-obj/mem_test.py -RedirectTemp /11-12 https://docs.python.org/3/reference/datamodel.html#basic-customization -RedirectTemp /11-13 http://esug.org/data/HistoricalDocuments/TheSmalltalkReport/ST07/04wo.pdf -RedirectTemp /11-14 https://www.artima.com/articles/the-simplest-thing-that-could-possibly-work#part3 -RedirectTemp /11-15 https://docs.oracle.com/javase/tutorial/essential/environment/security.html -RedirectTemp /11-16 https://github.com/fluentpython/example-code-2e/blob/master/11-pythonic-obj/private/Expose.java -RedirectTemp /11-17 https://docs.oracle.com/javase/tutorial/essential/environment/security.html -############################################################ 12 -RedirectTemp /12-1 https://en.wikipedia.org/wiki/Vector_space_model -RedirectTemp /12-2 https://pypi.org/project/gensim/ -RedirectTemp /12-3 https://docs.python.org/3/library/functions.html#enumerate -RedirectTemp /12-4 https://mathworld.wolfram.com/Hypersphere.html -RedirectTemp /12-5 https://en.wikipedia.org/wiki/Fold_(higher-order_function) -RedirectTemp /12-6 https://docs.python.org/2.5/whatsnew/pep-357.html -RedirectTemp /12-7 https://docs.python.org/3/reference/datamodel.html#special-method-names -RedirectTemp /12-8 https://en.wikipedia.org/wiki/KISS_principle -RedirectTemp /12-9 https://mail.python.org/pipermail/python-list/2000-July/046184.html -RedirectTemp /12-10 https://en.wikipedia.org/wiki/Duck_typing -RedirectTemp /12-11 https://mail.python.org/mailman/listinfo/python-list -RedirectTemp /12-12 https://mail.python.org/pipermail/python-list/2003-April/218568.html -############################################################ 13 -RedirectTemp /13-1 https://docs.python.org/3/c-api/index.html -RedirectTemp /13-2 https://docs.python.org/3/c-api/sequence.html -RedirectTemp /13-3 https://github.com/python/cpython/blob/31ceccb2c77854893f3a754aca04bedd74bedb10/Lib/_collections_abc.py#L870 -RedirectTemp /13-4 https://en.wikipedia.org/wiki/Monkey_patch -RedirectTemp /13-5 https://www.gevent.org/api/gevent.monkey.html -RedirectTemp /13-6 https://docs.python.org/3/library/random.html#random.shuffle -RedirectTemp /13-7 https://docs.python.org/3/reference/datamodel.html#emulating-container-types -RedirectTemp /13-8 https://docs.python.org/3/library/collections.html#collections.namedtuple -RedirectTemp /13-9 https://github.com/python/typeshed/blob/24afb531ffd07083d6a74be917342195062f7277/stdlib/collections/__init__.pyi -RedirectTemp /13-10 https://docs.python.org/3/glossary.html#term-abstract-base-class -RedirectTemp /13-11 https://en.wikipedia.org/wiki/Duck_typing#History -RedirectTemp /13-12 http://ptgmedia.pearsoncmg.com/images/020163371x/items/item33.html -RedirectTemp /13-13 https://docs.python.org/3/library/bisect.html#bisect.bisect -RedirectTemp /13-14 https://github.com/python/cpython/blob/main/Lib/_collections_abc.py -RedirectTemp /13-15 https://github.com/python/cpython/blob/main/Lib/abc.py -RedirectTemp /13-16 https://docs.python.org/3/library/collections.abc.html#collections-abstract-base-classes -RedirectTemp /13-17 https://docs.python.org/3/library/collections.abc.html#collections.abc.Iterable -RedirectTemp /13-18 https://docs.python.org/3/library/abc.html -RedirectTemp /13-19 https://docs.python.org/dev/library/abc.html#abc.abstractmethod -RedirectTemp /13-20 https://docs.python.org/dev/library/abc.html -RedirectTemp /13-21 https://docs.python.org/3/library/os.html#os.urandom -RedirectTemp /13-22 https://github.com/python/mypy/issues/2922 -RedirectTemp /13-23 https://docs.python.org/3/library/stdtypes.html#truth -RedirectTemp /13-24 https://github.com/python/cpython/blob/0bbf30e2b910bc9c5899134ae9d73a8df968da35/Lib/_collections_abc.py -RedirectTemp /13-25 https://github.com/python/cpython/blob/0fbddb14dc03f61738af01af88e7d8aa8df07336/Lib/_collections_abc.py#L369 -RedirectTemp /13-26 https://github.com/python/cpython/blob/c0a9afe2ac1820409e6173bd1893ebee2cf50270/Lib/abc.py#L196 -RedirectTemp /13-27 https://bugs.python.org/issue31333 -RedirectTemp /13-28 https://github.com/python/cpython/blob/3635388f52b42e5280229104747962117104c453/Modules/_abc.c#L605 -RedirectTemp /13-29 https://github.com/python/cpython/blob/0fbddb14dc03f61738af01af88e7d8aa8df07336/Lib/_collections_abc.py#L881 -RedirectTemp /13-30 https://docs.python.org/3/library/typing.html#protocols -RedirectTemp /13-31 https://github.com/python/cpython/blob/3635388f52b42e5280229104747962117104c453/Lib/typing.py#L1751 -RedirectTemp /13-32 https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/ -RedirectTemp /13-33 https://martinfowler.com/bliki/RoleInterface.html -RedirectTemp /13-34 https://en.wikipedia.org/wiki/Interface_segregation_principle -RedirectTemp /13-35 https://github.com/python/typeshed/blob/master/CONTRIBUTING.md -RedirectTemp /13-36 https://gist.github.com/asukakenji/ac8a05644a2e98f1d5ea8c299541fce9 -RedirectTemp /13-37 https://www.python.org/dev/peps/pep-0544/#runtime-checkable-decorator-and-narrowing-types-by-isinstance -RedirectTemp /13-38 https://www.python.org/dev/peps/pep-0544/#merging-and-extending-protocols -RedirectTemp /13-39 https://numpy.org/devdocs/user/basics.types.html -RedirectTemp /13-40 https://github.com/python/typeshed/blob/master/stdlib/statistics.pyi -RedirectTemp /13-41 https://bugs.python.org/issue41974 -RedirectTemp /13-42 https://glyph.twistedmatrix.com/2020/07/new-duck.html -RedirectTemp /13-43 https://glyph.twistedmatrix.com/2021/03/interfaces-and-protocols.html -RedirectTemp /13-44 https://plone.org/ -RedirectTemp /13-45 https://trypyramid.com/ -RedirectTemp /13-46 https://twistedmatrix.com/trac/ -RedirectTemp /13-47 https://www.artima.com/articles/contracts-in-python -RedirectTemp /13-48 https://martinfowler.com/bliki/DynamicTyping.html -RedirectTemp /13-49 https://martinfowler.com/bliki/RoleInterface.html -RedirectTemp /13-50 https://mypy.readthedocs.io/en/stable/protocols.html -RedirectTemp /13-51 https://pymotw.com/3/abc/index.html -RedirectTemp /13-52 https://www.python.org/dev/peps/pep-3119/ -RedirectTemp /13-53 https://www.python.org/dev/peps/pep-3141/ -RedirectTemp /13-54 https://docs.python.org/3/library/numbers.html -RedirectTemp /13-55 https://github.com/python/mypy/issues/3186 -RedirectTemp /13-56 https://stackoverflow.com/questions/69334475/how-to-hint-at-number-types-i-e-subclasses-of-number-not-numbers-themselv/69383462#69383462 -RedirectTemp /13-57 https://github.com/python/mypy/issues/3186 -RedirectTemp /13-58 https://martinfowler.com/articles/lean-inception/ -RedirectTemp /13-59 https://martinfowler.com -RedirectTemp /13-60 https://www.jetbrains.com/pycharm/ -RedirectTemp /13-61 https://wingware.com/ -RedirectTemp /13-62 https://code.visualstudio.com/ -############################################################ 14 -RedirectTemp /14-1 http://worrydream.com/EarlyHistoryOfSmalltalk/ -RedirectTemp /14-2 https://docs.python.org/3/tutorial/classes.html -RedirectTemp /14-3 https://docs.python.org/3/library/collections.html#ordereddict-examples-and-recipes -RedirectTemp /14-4 https://discuss.python.org/t/is-it-time-to-deprecate-unbound-super-methods/1833 -RedirectTemp /14-5 https://doc.pypy.org/en/latest/cpython_differences.html#subclasses-of-built-in-types -RedirectTemp /14-6 https://docs.python.org/3/library/collections.html -RedirectTemp /14-7 https://github.com/fluentpython/example-code-2e/blob/master/14-inheritance/strkeydict_dictsub.py -RedirectTemp /14-8 https://doc.pypy.org/en/latest/cpython_differences.html#subclasses-of-built-in-types -RedirectTemp /14-9 https://en.wikipedia.org/wiki/Breadth-first_search -RedirectTemp /14-10 https://www.python.org/download/releases/2.3/mro/ -RedirectTemp /14-11 https://github.com/fluentpython/example-code-2e/blob/master/14-inheritance/uppermixin.py -RedirectTemp /14-12 https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html -RedirectTemp /14-13 https://docs.python.org/3/library/collections.abc.html -RedirectTemp /14-14 https://github.com/python/cpython/blob/8ece98a7e418c3c68a4c61bc47a2d0931b59a889/Lib/collections/__init__.py#L1084 -RedirectTemp /14-15 https://docs.python.org/3/library/http.server.html -RedirectTemp /14-16 https://github.com/python/cpython/blob/17c23167942498296f0bdfffe52e72d53d66d693/Lib/http/server.py#L144 -RedirectTemp /14-17 https://github.com/python/cpython/blob/699ee016af5736ffc80f68359617611a22b72943/Lib/socketserver.py#L664 -RedirectTemp /14-18 https://docs.python.org/3/library/socketserver.html#socketserver.ForkingMixIn -RedirectTemp /14-19 https://docs.python.org/3/library/os.html#os.fork -RedirectTemp /14-20 https://en.wikipedia.org/wiki/POSIX -RedirectTemp /14-21 http://ccbv.co.uk/ -RedirectTemp /14-22 https://github.com/django/django/tree/main/django/views/generic -RedirectTemp /14-23 https://en.wikipedia.org/wiki/Template_method_pattern -RedirectTemp /14-24 https://docs.python.org/3/library/tkinter.html -RedirectTemp /14-25 https://docs.python.org/3/library/tkinter.ttk.html -RedirectTemp /14-26 https://docs.oracle.com/javase/10/docs/api/java/awt/package-tree.html -RedirectTemp /14-27 https://docs.oracle.com/javase/10/docs/api/javax/swing/package-tree.html -RedirectTemp /14-28 https://squeak.org/ -RedirectTemp /14-29 https://github.com/django/django/blob/b64db05b9cedd96905d637a2d824cbbf428e40e7/django/views/generic/list.py#L194 -RedirectTemp /14-30 https://github.com/python/cpython/blob/8ed183391241f0c73e7ba7f42b1d49fc02985f7b/Lib/tkinter/__init__.py#L2618 -RedirectTemp /14-31 https://docs.python.org/3/library/socketserver.html -RedirectTemp /14-32 https://docs.python.org/3/library/socketserver.html#socketserver.BaseServer -RedirectTemp /14-33 https://github.com/python/cpython/blob/699ee016af5736ffc80f68359617611a22b72943/Lib/socketserver.py#L153 -RedirectTemp /14-34 https://docs.python.org/3/library/typing.html#typing.final -RedirectTemp /14-35 https://docs.python.org/3/library/typing.html#typing.Final -RedirectTemp /14-36 https://docs.python.org/3/library/collections.abc.html -RedirectTemp /14-37 https://hynek.me/articles/python-subclassing-redux/ -RedirectTemp /14-38 https://www.oreilly.com/library/view/python-cookbook-3rd/9781449357337/ch08.html#super -RedirectTemp /14-39 https://rhettinger.wordpress.com/2011/05/26/super-considered-super/ -RedirectTemp /14-40 https://fuhm.net/super-harmful/ -RedirectTemp /14-41 https://stackoverflow.com/questions/30190185/how-to-use-super-with-one-argument/30190341#30190341 -RedirectTemp /14-42 https://www.artima.com/weblogs/viewpost.jsp?thread=246488 -RedirectTemp /14-43 https://www.artima.com/weblogs/viewpost.jsp?thread=281127 -RedirectTemp /14-44 https://www.artima.com/weblogs/viewpost.jsp?thread=246341 -RedirectTemp /14-45 https://www.artima.com/weblogs/viewpost.jsp?thread=246483 -RedirectTemp /14-46 https://www.artima.com/weblogs/viewpost.jsp?thread=236275 -RedirectTemp /14-47 https://www.artima.com/weblogs/viewpost.jsp?thread=236278 -RedirectTemp /14-48 https://www.artima.com/weblogs/viewpost.jsp?thread=237121 -RedirectTemp /14-49 https://python-patterns.guide/gang-of-four/composition-over-inheritance/ -RedirectTemp /14-50 https://python-patterns.guide/ -RedirectTemp /14-51 https://www.youtube.com/watch?v=3MNVP9-hglc -RedirectTemp /14-52 http://worrydream.com/EarlyHistoryOfSmalltalk/ -RedirectTemp /14-53 https://en.wikipedia.org/wiki/Polymorphism_(computer_science) -############################################################ 15 -RedirectTemp /15-1 https://www.youtube.com/watch?v=csL8DLXGNlU&t=92m5s -RedirectTemp /15-2 https://github.com/python/typeshed/blob/a8834fcd46339e17fc8add82b5803a1ce53d3d60/stdlib/2and3/builtins.pyi#L1434 -RedirectTemp /15-3 https://github.com/python/typeshed/blob/a8834fcd46339e17fc8add82b5803a1ce53d3d60/stdlib/2and3/builtins.pyi -RedirectTemp /15-4 https://twitter.com/gwidion/status/1265384692464967680 -RedirectTemp /15-5 https://pypi.org/project/pydantic/ -RedirectTemp /15-6 https://google.github.io/pytype/faq.html -RedirectTemp /15-7 https://google.github.io/pytype/faq.html -RedirectTemp /15-8 https://lxml.de/ -RedirectTemp /15-9 https://docs.python.org/3/library/xml.etree.elementtree.html -RedirectTemp /15-10 https://mypy.readthedocs.io/en/stable/common_issues.html -RedirectTemp /15-11 https://mypy.readthedocs.io/en/stable/common_issues.html#types-of-empty-collections -RedirectTemp /15-12 https://github.com/python/typing/issues/182 -RedirectTemp /15-13 https://pypi.org/project/pydantic/ -RedirectTemp /15-14 https://mypy.readthedocs.io/en/stable/type_narrowing.html#casts -RedirectTemp /15-15 https://github.com/python/cpython/blob/bee66d3cb98e740f9d8057eb7f503122052ca5d8/Lib/typing.py#L1340 -RedirectTemp /15-16 https://www.python.org/dev/peps/pep-0484/#casts -RedirectTemp /15-17 https://github.com/python/typeshed/issues/5535 -RedirectTemp /15-18 https://docs.python.org/3/library/asyncio-stream.html#tcp-echo-server-using-streams -RedirectTemp /15-19 https://github.com/python/cpython/blob/b798ab06937f8bb24b444a49dd42e11fff15e654/Lib/test/test_asyncio/test_server.py#L55 -RedirectTemp /15-20 https://en.wikipedia.org/wiki/Code_smell -RedirectTemp /15-21 https://mail.python.org/archives/list/typing-sig@python.org/message/5LCWMN2UY2UQNLC5Z47GHBZKSPZW4I63/ -RedirectTemp /15-22 https://mypy.readthedocs.io/en/stable/error_codes.html#error-codes -RedirectTemp /15-23 https://github.com/fluentpython/example-code-2e/blob/master/15-more-types/clip_annot.py -RedirectTemp /15-24 https://docs.python.org/3/library/typing.html#introspection-helpers -RedirectTemp /15-25 https://docs.python.org/3.10/library/inspect.html#inspect.get_annotations -RedirectTemp /15-26 https://www.python.org/dev/peps/pep-0563/#abstract -RedirectTemp /15-27 https://mail.python.org/archives/list/python-dev@python.org/message/ZBJ7MD6CSGM6LZAOTET7GXAVBZB7O77O/ -RedirectTemp /15-28 https://docs.python.org/3.10/howto/annotations.html -RedirectTemp /15-29 https://docs.python.org/3/library/typing.html#user-defined-generic-types -RedirectTemp /15-30 https://github.com/python/typeshed/blob/bfc83c365a0b26ab16586beac77ff16729d0e473/stdlib/builtins.pyi#L743 -RedirectTemp /15-31 https://docs.python.org/3.10/library/typing.html#typing.FrozenSet -RedirectTemp /15-32 https://docs.python.org/3.10/library/typing.html#typing.Generator -RedirectTemp /15-33 https://docs.python.org/3.10/library/typing.html#typing.AsyncGenerator -RedirectTemp /15-34 https://github.com/python/cpython/blob/46b16d0bdbb1722daed10389e27226a2370f1635/Lib/typing.py#L1786 -RedirectTemp /15-35 https://github.com/python/typeshed/blob/2a9f081abbf01134e4e04ced6a750107db904d70/stdlib/builtins.pyi#L239 -RedirectTemp /15-36 https://www.oreilly.com/library/view/robust-python/9781098100650/ -RedirectTemp /15-37 https://www.python.org/dev/peps/pep-0484/#covariance-and-contravariance -RedirectTemp /15-38 https://mypy.readthedocs.io/en/stable/generics.html#variance-of-generic-types -RedirectTemp /15-39 https://mypy.readthedocs.io/en/stable/common_issues.html#variance -RedirectTemp /15-40 https://www.artima.com/weblogs/viewpost.jsp?thread=85551 -RedirectTemp /15-41 https://dl.acm.org/action/cookieAbsent -RedirectTemp /15-42 http://bracha.org/pluggableTypesPosition.pdf -RedirectTemp /15-43 https://www.researchgate.net/publication/213886116_Static_Typing_Where_Possible_Dynamic_Typing_When_Needed_The_End_of_the_Cold_War_Between_Programming_Languages -RedirectTemp /15-44 https://www.atomickotlin.com/atomickotlin/ -RedirectTemp /15-45 https://www.informit.com/store/effective-java-9780134685991 -RedirectTemp /15-46 https://www.manning.com/books/programming-with-types -RedirectTemp /15-47 https://www.oreilly.com/library/view/programming-typescript/9781492037644/ -RedirectTemp /15-48 https://www.informit.com/store/dart-programming-language-9780321927705 -RedirectTemp /15-49 https://www.yodaiken.com/2017/09/15/bad-ideas-in-type-theory/ -RedirectTemp /15-50 https://www.yodaiken.com/2017/11/30/types-considered-harmful-ii/ -RedirectTemp /15-51 https://web.archive.org/web/20071010002142/http://weblogs.java.net/blog/arnold/archive/2005/06/generics_consid_1.html -RedirectTemp /15-52 https://github.com/python/cpython/blob/3e7ee02327db13e4337374597cdc4458ecb9e3ad/Lib/asyncio/trsock.py#L5 -RedirectTemp /15-53 https://www.python.org/dev/peps/pep-0484/#covariance-and-contravariance -############################################################ 16 -RedirectTemp /16-1 http://www.gotw.ca/publications/c_family_interview.htm -RedirectTemp /16-2 https://docs.python.org/3/reference/expressions.html#unary-arithmetic-and-bitwise-operations -RedirectTemp /16-3 https://docs.python.org/3/reference/datamodel.html#object.__neg__ -RedirectTemp /16-4 https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#boolean-indexing -RedirectTemp /16-5 https://docs.python.org/3/library/collections.html#collections.Counter -RedirectTemp /16-6 https://docs.python.org/3/reference/datamodel.html#emulating-container-types -RedirectTemp /16-7 https://docs.python.org/3/library/numbers.html#implementing-the-arithmetic-operations -RedirectTemp /16-8 https://www.fluentpython.com/lingo/#fail-fast -RedirectTemp /16-9 https://github.com/python/cpython/blob/0bbf30e2b910bc9c5899134ae9d73a8df968da35/Objects/typeobject.c#L4598 -RedirectTemp /16-10 https://neopythonic.blogspot.com/2019/03/why-operators-are-useful.html -RedirectTemp /16-11 https://treyhunner.com/2019/03/python-deep-comparisons-and-code-readability/ -RedirectTemp /16-12 https://docs.python.org/3/library/numbers.html#implementing-the-arithmetic-operations -RedirectTemp /16-13 https://docs.python.org/3/library/pathlib.html -RedirectTemp /16-14 https://pypi.org/project/scapy/ -RedirectTemp /16-15 https://scapy.readthedocs.io/en/latest/usage.html#stacking-layers -RedirectTemp /16-16 https://docs.python.org/3/library/functools.html#functools.total_ordering -RedirectTemp /16-17 https://wiki.illinois.edu//wiki/download/attachments/273416327/ingalls.pdf -RedirectTemp /16-18 https://wiki.illinois.edu//wiki/download/attachments/273416327/double-dispatch.pdf -RedirectTemp /16-19 http://www.gotw.ca/publications/c_family_interview.htm -RedirectTemp /16-20 http://www.gotw.ca/publications/c_family_interview.htm -RedirectTemp /16-21 https://doc.rust-lang.org/std/ops/index.html -RedirectTemp /16-22 https://www.fluentpython.com/lingo/#lazy -############################################################ 17 -RedirectTemp /17-1 http://www.paulgraham.com/icad.html -RedirectTemp /17-2 https://en.wikipedia.org/wiki/Sentinel_value -RedirectTemp /17-3 https://docs.python.org/3.10/library/functions.html#iter -RedirectTemp /17-4 https://docs.python.org/3.10/library/functions.html#iter -RedirectTemp /17-5 https://github.com/python/cpython/blob/b1930bf75f276cd7ca08c4455298128d89adf7d1/Lib/_collections_abc.py#L271 -RedirectTemp /17-6 https://github.com/python/cpython/blob/main/Lib/types.py#L6 -RedirectTemp /17-7 https://en.wikipedia.org/wiki/CLU_(programming_language) -RedirectTemp /17-8 https://docs.python.org/3/glossary.html -RedirectTemp /17-9 https://docs.python.org/3/glossary.html#term-generator-iterator -RedirectTemp /17-10 https://docs.python.org/3/glossary.html#term-generator-expression -RedirectTemp /17-11 https://marc.info/?l=python-list&m=141826925106951&w=2 -RedirectTemp /17-12 https://docs.python.org/3/library/os.html#os.walk -RedirectTemp /17-13 https://docs.python.org/3/library/itertools.html -RedirectTemp /17-14 https://docs.python.org/3/library/exceptions.html#exception-hierarchy -RedirectTemp /17-15 https://en.wikipedia.org/wiki/Depth-first_search -RedirectTemp /17-16 https://docs.python.org/3.10/library/typing.html#typing.TypeAlias -RedirectTemp /17-17 https://docs.python.org/3/library/typing.html#typing.Generator -RedirectTemp /17-18 http://www.dabeaz.com/coroutines/Coroutines.pdf -RedirectTemp /17-19 http://www.dabeaz.com/coroutines/Coroutines.pdf -RedirectTemp /17-20 https://mail.python.org/pipermail/python-ideas/2009-April/003841.html -RedirectTemp /17-21 https://mail.python.org/pipermail/python-ideas/2009-April/003912.html -RedirectTemp /17-22 https://docs.python.org/3/library/exceptions.html#StopIteration -RedirectTemp /17-23 https://docs.python.org/3/reference/expressions.html#yield-expressions -RedirectTemp /17-24 https://docs.python.org/3/reference/index.html -RedirectTemp /17-25 https://github.com/python/cpython/blob/6f743e7a4da904f61dfa84cc7d7385e4dcc79ac5/Lib/typing.py#L2060 -RedirectTemp /17-26 http://catb.org/~esr/jargon/html/G/grok.html -RedirectTemp /17-27 https://docs.python.org/3/reference/expressions.html#yieldexpr -RedirectTemp /17-28 https://docs.python.org/3/library/itertools.html -RedirectTemp /17-29 https://docs.python.org/3/library/itertools.html#itertools-recipes -RedirectTemp /17-30 https://more-itertools.readthedocs.io/en/stable/index.html -RedirectTemp /17-31 https://rittau.org/2006/11/java-iterators-are-not-iterable/ -RedirectTemp /17-32 https://docs.python.org/3/whatsnew/3.3.html#pep-380-syntax-for-delegating-to-a-subgenerator -RedirectTemp /17-33 http://www.dabeaz.com/generators/ -RedirectTemp /17-34 http://www.dabeaz.com/coroutines/ -RedirectTemp /17-35 https://archive.org/details/pyvideo_213___pycon-2009-a-curious-course-on-coroutines-and-concurrency-part-1-of-3 -RedirectTemp /17-36 https://archive.org/details/pyvideo_215___pycon-2009-a-curious-course-on-coroutines-and-concurrency-part-2-of-3 -RedirectTemp /17-37 https://archive.org/details/pyvideo_214___pycon-2009-a-curious-course-on-coroutines-and-concurrency-part-3-of-3 -RedirectTemp /17-38 http://www.dabeaz.com/finalgenerator/ -RedirectTemp /17-39 https://web.archive.org/web/20200218150637/http://seriously.dontusethiscode.com/2013/05/01/greedy-coroutine.html -RedirectTemp /17-40 https://effectivepython.com/ -RedirectTemp /17-41 https://effectivepython.com/2015/03/10/consider-coroutines-to-run-many-functions-concurrently -RedirectTemp /17-42 https://en.wikipedia.org/wiki/Conway's_Game_of_Life -RedirectTemp /17-43 https://gist.github.com/ramalho/da5590bc38c973408839 -RedirectTemp /17-44 https://gist.github.com/ramalho/da5590bc38c973408839 -RedirectTemp /17-45 https://journal.code4lib.org/articles/4893 -RedirectTemp /17-46 https://github.com/fluentpython/isis2json -RedirectTemp /17-47 https://github.com/fluentpython/isis2json/blob/master/README.rst -############################################################ 18 -RedirectTemp /18-1 https://pyvideo.org/video/1669/keynote-3/ -RedirectTemp /18-2 https://docs.python.org/3/library/sqlite3.html#using-the-connection-as-a-context-manager -RedirectTemp /18-3 https://docs.python.org/3/library/threading.html#using-locks-conditions-and-semaphores-in-the-with-statement -RedirectTemp /18-4 https://docs.python.org/3/library/decimal.html#decimal.localcontext -RedirectTemp /18-5 https://docs.python.org/3/library/unittest.mock.html#patch -RedirectTemp /18-6 https://docs.python.org/3/library/contextlib.html#contextlib.redirect_stdout -RedirectTemp /18-7 https://docs.python.org/3/library/sys.html#sys.exc_info -RedirectTemp /18-8 https://en.wikipedia.org/wiki/LL_parser -RedirectTemp /18-9 https://docs.python.org/3/library/contextlib.html -RedirectTemp /18-10 https://github.com/python/cpython/blob/8afab2ebbc1b343cd88d058914cf622fe687a2be/Lib/contextlib.py#L123 -RedirectTemp /18-11 https://www.zopatista.com/python/2013/11/26/inplace-file-rewriting/ -RedirectTemp /18-12 https://docs.python.org/3/library/fileinput.html#fileinput.input -RedirectTemp /18-13 https://www.zopatista.com/python/2013/11/26/inplace-file-rewriting/ -RedirectTemp /18-14 https://en.wikipedia.org/wiki/Euclidean_algorithm -RedirectTemp /18-15 https://github.com/fluentpython/example-code-2e/tree/master/18-with-match/lispy/py3.10/ -RedirectTemp /18-16 https://github.com/fluentpython/example-code-2e/blob/master/18-with-match/lispy/original/lispy.py -RedirectTemp /18-17 https://github.com/fluentpython/example-code-2e/blob/6527037ae7319ba370a1ee2d9fe79214d0ed9452/18-with-match/lispy/py3.10/lis.py#L35 -RedirectTemp /18-18 https://github.com/fluentpython/example-code-2e/blob/master/18-with-match/lispy/py3.10/examples_test.py -RedirectTemp /18-19 https://github.com/python/typeshed/issues/6042 -RedirectTemp /18-20 https://github.com/fluentpython/lispy/tree/main/mylis -RedirectTemp /18-21 https://github.com/fluentpython/example-code-2e/blob/00e4741926e1b771ee7c753148b1415c0bd12e39/02-array-seq/lispy/py3.10/examples_test.py -RedirectTemp /18-22 https://mitpress.mit.edu/sites/default/files/sicp/index.html -RedirectTemp /18-23 https://github.com/fluentpython/example-code-2e/blob/master/18-with-match/lispy/py3.10/examples_test.py -RedirectTemp /18-24 https://github.com/fluentpython/example-code-2e/blob/master/18-with-match/lispy/py3.10/lis.py -RedirectTemp /18-25 https://www.python.org/dev/peps/pep-0634/#or-patterns -RedirectTemp /18-26 https://en.wikipedia.org/wiki/Lambda#Character_encodings -RedirectTemp /18-27 https://docs.python.org/3/reference/compound_stmts.html -RedirectTemp /18-28 https://docs.python.org/3/glossary.html#term-eafp -RedirectTemp /18-29 https://speakerdeck.com/pyconslides/pycon-keynote-python-is-awesome-by-raymond-hettinger?slide=21 -RedirectTemp /18-30 https://docs.python.org/3/reference/compound_stmts.html -RedirectTemp /18-31 https://stackoverflow.com/questions/16138232/is-it-a-good-practice-to-use-try-except-else-in-python -RedirectTemp /18-32 https://docs.python.org/3/library/stdtypes.html#typecontextmanager -RedirectTemp /18-33 https://docs.python.org/3/reference/datamodel.html#with-statement-context-managers -RedirectTemp /18-34 https://speakerdeck.com/pyconslides/pycon-keynote-python-is-awesome-by-raymond-hettinger?slide=21 -RedirectTemp /18-35 https://speakerdeck.com/pyconslides/transforming-code-into-beautiful-idiomatic-python-by-raymond-hettinger-1?slide=34 -RedirectTemp /18-36 https://preshing.com/20110920/the-python-with-statement-by-example/ -RedirectTemp /18-37 https://www.rath.org/on-the-beauty-of-pythons-exitstack.html -RedirectTemp /18-38 https://norvig.com/lispy.html -RedirectTemp /18-39 https://norvig.com/lispy2.html -RedirectTemp /18-40 https://github.com/norvig/pytudes -RedirectTemp /18-41 https://github.com/fluentpython/lispy -RedirectTemp /18-42 https://racket-lang.org/ -RedirectTemp /18-43 https://pyvideo.org/video/1669/keynote-3/ -RedirectTemp /18-44 https://en.wikipedia.org/wiki/Tail_call -RedirectTemp /18-45 https://2ality.com/2015/06/tail-call-optimization.html -RedirectTemp /18-46 https://github.com/fluentpython/example-code-2e/blob/master/18-with-match/lispy/original/lis.py -RedirectTemp /18-47 https://github.com/fluentpython/example-code-2e/blob/master/18-with-match/lispy/original/lispy.py -RedirectTemp /18-48 http://neopythonic.blogspot.com/2009/04/final-words-on-tail-calls.html -RedirectTemp /18-49 https://webkit.org/blog/6240/ecmascript-6-proper-tail-calls-in-webkit/ -RedirectTemp /18-50 http://kangax.github.io/compat-table/es6/ -RedirectTemp /18-51 https://world.hey.com/mgmarlow/what-happened-to-proper-tail-calls-in-javascript-5494c256 -RedirectTemp /18-52 http://neopythonic.blogspot.com/2009/04/tail-recursion-elimination.html -RedirectTemp /18-53 https://github.com/fluentpython/lispy/blob/main/mylis/mylis_2/lis.py -RedirectTemp /18-54 https://github.com/fluentpython/lispy/tree/main/mylis -############################################################ 19 -RedirectTemp /19-1 https://go.dev/blog/waza-talk -RedirectTemp /19-2 https://en.wikipedia.org/wiki/Graphics_processing_unit -RedirectTemp /19-3 https://docs.python.org/3/library/sys.html#sys.getswitchinterval -RedirectTemp /19-4 https://docs.python.org/3/library/sys.html#sys.setswitchinterval -RedirectTemp /19-5 https://en.wikipedia.org/wiki/System_call -RedirectTemp /19-6 https://mail.python.org/pipermail/python-dev/2009-October/093356.html -RedirectTemp /19-7 http://www.dabeaz.com/finalgenerator/ -RedirectTemp /19-8 https://docs.python.org/3/library/threading.html#thread-objects -RedirectTemp /19-9 https://www.pypy.org/ -RedirectTemp /19-10 https://mail.python.org/pipermail/python-list/2009-February/675659.html -RedirectTemp /19-11 https://en.wikipedia.org/wiki/Braille_Patterns -RedirectTemp /19-12 https://docs.python.org/3/library/multiprocessing.shared_memory.html -RedirectTemp /19-13 https://docs.python.org/3/library/multiprocessing.shared_memory.html#multiprocessing.shared_memory.ShareableList -RedirectTemp /19-14 https://greenlet.readthedocs.io/en/latest/ -RedirectTemp /19-15 https://docs.sqlalchemy.org/en/14/changelog/migration_14.html#asynchronous-io-support-for-core-and-orm -RedirectTemp /19-16 https://docs.sqlalchemy.org/en/14/orm/extensions/asyncio.html -RedirectTemp /19-17 http://www.gevent.org/ -RedirectTemp /19-18 https://github.com/gevent/gevent/wiki/Projects -RedirectTemp /19-19 https://docs.python.org/3/library/concurrent.futures.html#processpoolexecutor-example -RedirectTemp /19-20 https://github.com/python/asyncio/issues/284 -RedirectTemp /19-21 https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.loop.run_in_executor -RedirectTemp /19-22 https://mail.python.org/archives/list/python-dev@python.org/message/JBYXQH3NV3YBF7P2HLHB5CD6V3GVTY55/ -RedirectTemp /19-23 https://docs.python.org/3/library/queue.html#queue.SimpleQueue.get -RedirectTemp /19-24 https://en.wikipedia.org/wiki/Race_condition -RedirectTemp /19-25 https://github.com/fluentpython/example-code-2e/commit/2c1230579db99738a5e5e6802063bda585f6476d -RedirectTemp /19-26 https://github.com/fluentpython/example-code-2e/blob/master/19-concurrency/primes/README.md -RedirectTemp /19-27 https://github.com/fluentpython/example-code-2e/blob/master/19-concurrency/primes/threads.py -RedirectTemp /19-28 https://en.wikipedia.org/wiki/Context_switch -RedirectTemp /19-29 http://www.gotw.ca/publications/concurrency-ddj.htm -RedirectTemp /19-30 https://www.ansible.com/ -RedirectTemp /19-31 https://saltproject.io/ -RedirectTemp /19-32 https://www.fabfile.org/ -RedirectTemp /19-33 https://engineering.fb.com/2016/05/27/production-engineering/python-in-production-engineering/ -RedirectTemp /19-34 https://jupyter.org/ -RedirectTemp /19-35 https://docs.bokeh.org/en/latest/index.html -RedirectTemp /19-36 https://www.tensorflow.org/ -RedirectTemp /19-37 https://pytorch.org/ -RedirectTemp /19-38 https://www.oreilly.com/radar/where-programming-ops-ai-and-the-cloud-are-headed-in-2021/ -RedirectTemp /19-39 https://www.youtube.com/watch?v=ods97a5Pzw0 -RedirectTemp /19-40 https://www.thoughtworks.com/radar/techniques/high-performance-envy-web-scale-envy -RedirectTemp /19-41 https://modwsgi.readthedocs.io/en/master/ -RedirectTemp /19-42 https://uwsgi-docs.readthedocs.io/en/latest/ -RedirectTemp /19-43 https://unit.nginx.org/ -RedirectTemp /19-44 https://www.techatbloomberg.com/blog/configuring-uwsgi-production-deployment/ -RedirectTemp /19-45 https://www.youtube.com/watch?v=p6R1h2Nn468 -RedirectTemp /19-46 https://asgi.readthedocs.io/en/latest/index.html -RedirectTemp /19-47 https://docs.celeryproject.org/en/stable/getting-started/introduction.html -RedirectTemp /19-48 https://python-rq.org/ -RedirectTemp /19-49 https://docs.celeryproject.org/en/stable/faq.html#what-kinds-of-things-should-i-use-celery-for -RedirectTemp /19-50 https://redis.io/ -RedirectTemp /19-51 https://realpython.com/intro-to-python-threading/ -RedirectTemp /19-52 https://pymotw.com/3/concurrency.html -RedirectTemp /19-53 https://www.pearson.com/us/higher-education/program/Hellmann-Python-3-Standard-Library-by-Example-The/PGM328871.html -RedirectTemp /19-54 https://docs.python.org/3/library/multiprocessing.html#programming-guidelines -RedirectTemp /19-55 https://docs.python.org/3/library/multiprocessing.html -RedirectTemp /19-56 https://www.oreilly.com/library/view/high-performance-python/9781492055013/ -RedirectTemp /19-57 https://link.springer.com/book/10.1007/978-1-4842-5793-7?error=cookies_not_supported&code=2ed5d61d-ae9f-4f3d-94ac-0f68cf45ea4f -RedirectTemp /19-58 https://www.packtpub.com/product/parallel-programming-with-python/9781783288397 -RedirectTemp /19-59 https://greenteapress.com/wp/semaphores/ -RedirectTemp /19-60 https://docs.python.org/3/c-api/init.html#thread-state-and-the-global-interpreter-lock -RedirectTemp /19-61 https://docs.python.org/3/faq/library.html#can-t-we-get-rid-of-the-global-interpreter-lock -RedirectTemp /19-62 https://www.artima.com/weblogs/viewpost.jsp?thread=214235 -RedirectTemp /19-63 http://jessenoller.com/blog/2009/02/01/python-threads-and-the-global-interpreter-lock -RedirectTemp /19-64 https://realpython.com/products/cpython-internals-book/ -RedirectTemp /19-65 http://www.dabeaz.com/GIL/ -RedirectTemp /19-66 http://www.dabeaz.com/python/UnderstandingGIL.pdf -RedirectTemp /19-67 https://bugs.python.org/issue7946#msg223110 -RedirectTemp /19-68 https://bugs.python.org/issue7946 -RedirectTemp /19-69 https://www.fullstackpython.com/ -RedirectTemp /19-70 https://www.oreilly.com/library/view/high-performance-python/9781492055013/ -RedirectTemp /19-71 https://www.packtpub.com/product/parallel-programming-with-python/9781783288397 -RedirectTemp /19-72 https://www.packtpub.com/product/distributed-computing-with-python/9781785889691 -RedirectTemp /19-73 https://towardsdatascience.com/python-performance-and-gpus-1be860ffd58d?gi=a7d537cc2fb4 -RedirectTemp /19-74 https://instagram-engineering.com/web-service-efficiency-at-instagram-with-python-4976d078e366?gi=12a441991c88 -RedirectTemp /19-75 https://www.oreilly.com/library/view/architecture-patterns-with/9781492052197/ -RedirectTemp /19-76 https://www.cosmicpython.com/ -RedirectTemp /19-77 https://pypi.org/project/lelo/ -RedirectTemp /19-78 https://github.com/npryce/python-parallelize -RedirectTemp /19-79 https://github.com/ericsnowcurrently/multi-core-python/wiki -RedirectTemp /19-80 https://gist.github.com/markshannon/79cace3656b40e21b7021504daee950c -RedirectTemp /19-81 https://mail.python.org/archives/list/python-dev@python.org/message/YOOQZCFOKEPQ24YHWWLQSJ3RCXFMS7D7/ -RedirectTemp /19-82 https://en.wikipedia.org/wiki/Communicating_sequential_processes -RedirectTemp /19-83 https://github.com/stackless-dev/stackless/wiki -RedirectTemp /19-84 https://www.eveonline.com -RedirectTemp /19-85 https://www.ccpgames.com/ -RedirectTemp /19-86 https://stackless.readthedocs.io/en/3.6-slp/stackless-python.html#history -RedirectTemp /19-87 https://doc.pypy.org/en/latest/stackless.html -RedirectTemp /19-88 https://greenlet.readthedocs.io/en/latest/ -RedirectTemp /19-89 http://www.gevent.org/ -RedirectTemp /19-90 http://thespianpy.com/doc/ -RedirectTemp /19-91 https://pykka.readthedocs.io/en/latest/ -RedirectTemp /19-92 https://www.manning.com/books/rabbitmq-in-action -RedirectTemp /19-93 https://pragprog.com/titles/pb7con/seven-concurrency-models-in-seven-weeks/ -RedirectTemp /19-94 https://en.wikipedia.org/wiki/OpenCL -RedirectTemp /19-95 https://media.pragprog.com/titles/pb7con/Bonus_Chapter.pdf -RedirectTemp /19-96 https://martinfowler.com/ -RedirectTemp /19-97 https://martinfowler.com/articles/patterns-of-distributed-systems/ -RedirectTemp /19-98 https://www.oreilly.com/library/view/designing-data-intensive-applications/9781491903063/ -RedirectTemp /19-99 https://www.oreilly.com/library/view/oscon-2016-video/9781491965153/video247021.html -RedirectTemp /19-100 https://www.oreilly.com/library/view/designing-for-scalability/9781449361556/ -RedirectTemp /19-101 https://www.thoughtworks.com/radar/techniques/high-performance-envy-web-scale-envy -RedirectTemp /19-102 https://en.wikipedia.org/wiki/KISS_principle -RedirectTemp /19-103 https://www.usenix.org/conference/hotos15/workshop-program/presentation/mcsherry -############################################################ 20 -RedirectTemp /20-1 https://www.artima.com/weblogs/viewpost.jsp?thread=299551 -RedirectTemp /20-2 https://docs.python.org/3/library/http.server.html -RedirectTemp /20-3 https://www.youtube.com/watch?v=A9e9Cy1UkME -RedirectTemp /20-4 https://www.cia.gov/the-world-factbook/ -RedirectTemp /20-5 https://docs.python-requests.org/en/latest/ -RedirectTemp /20-6 https://docs.python.org/3.10/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor -RedirectTemp /20-7 https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.as_completed -RedirectTemp /20-8 https://docs.python.org/3/library/concurrent.futures.html -RedirectTemp /20-9 https://docs.python.org/3.10/library/concurrent.futures.html#concurrent.futures.Executor -RedirectTemp /20-10 https://github.com/fluentpython/example-code-2e/blob/master/20-executors/getflags/flags2_common.py -RedirectTemp /20-11 https://github.com/noamraph/tqdm -RedirectTemp /20-12 https://www.youtube.com/watch?v=M8Z65tAl5l4 -RedirectTemp /20-13 https://github.com/noamraph/tqdm/blob/master/README.md -RedirectTemp /20-14 https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.as_completed -RedirectTemp /20-15 https://docs.python.org/3/library/asyncio-task.html#asyncio.as_completed -RedirectTemp /20-16 https://www.cloudflare.com/ -RedirectTemp /20-17 https://github.com/fluentpython/example-code-2e/tree/master/20-executors/getflags -RedirectTemp /20-18 https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/418 -RedirectTemp /20-19 https://en.wikipedia.org/wiki/Embarrassingly_parallel -RedirectTemp /20-20 https://pyvideo.org/video/480/pyconau-2010--the-future-is-soon/ -RedirectTemp /20-21 http://www.dabeaz.com/coroutines/ -RedirectTemp /20-22 https://en.wikipedia.org/wiki/POSIX_Threads -RedirectTemp /20-23 https://en.wikipedia.org/wiki/C_dynamic_memory_allocation -RedirectTemp /20-24 https://pragprog.com/titles/pb7con/seven-concurrency-models-in-seven-weeks/ -RedirectTemp /20-25 https://hexdocs.pm/ecto/getting-started.html -############################################################ 21 -RedirectTemp /21-1 https://docs.python.org/3/library/asyncio.html -RedirectTemp /21-2 https://bugs.python.org/issue43216 -RedirectTemp /21-3 https://bugs.python.org/issue36921 -RedirectTemp /21-4 https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.loop.getaddrinfo -RedirectTemp /21-5 https://docs.python.org/3/library/socket.html#socket.getaddrinfo -RedirectTemp /21-6 https://docs.python.org/3.10/library/asyncio-eventloop.html#asyncio.get_event_loop -RedirectTemp /21-7 https://www.python.org/dev/peps/pep-0492/#await-expression -RedirectTemp /21-8 https://www.fluentpython.com/extra/classic-coroutines/#yield_from_meaning_sec -RedirectTemp /21-9 https://github.com/fluentpython/example-code-2e/tree/master/20-executors/getflags -RedirectTemp /21-10 https://magicstack.github.io/asyncpg/current/ -RedirectTemp /21-11 https://magicstack.github.io/asyncpg/current/api/index.html#transactions -RedirectTemp /21-12 https://magicstack.github.io/asyncpg/current/api/index.html#transactions -RedirectTemp /21-13 https://github.com/MagicStack/asyncpg/blob/4d39a05268ce4cc01b00458223a767542da048b8/asyncpg/transaction.py#L57 -RedirectTemp /21-14 https://magicstack.github.io/asyncpg/current/usage.html#connection-pools -RedirectTemp /21-15 https://gist.github.com/jboner/2841832 -RedirectTemp /21-16 https://en.wikipedia.org/wiki/Network-attached_storage -RedirectTemp /21-17 https://en.wikipedia.org/wiki/Semaphore_(programming) -RedirectTemp /21-18 https://en.wikipedia.org/wiki/Semaphore_(programming) -RedirectTemp /21-19 https://groups.google.com/forum/#!msg/python-tulip/PdAEtwpaJHs/7fqb-Qj2zJoJ -RedirectTemp /21-20 https://web.archive.org/web/20151209151711/http://tritarget.org/blog/2012/11/28/the-pyramid-of-doom-a-javascript-style-trap -RedirectTemp /21-21 https://stackoverflow.com/questions/53701841/what-is-the-use-case-for-future-add-done-callback/53710563 -RedirectTemp /21-22 https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.loop.run_in_executor -RedirectTemp /21-23 https://motor.readthedocs.io/en/stable/ -RedirectTemp /21-24 https://emptysqua.re/blog/response-to-asynchronous-python-and-databases/ -RedirectTemp /21-25 https://docs.python.org/3/library/asyncio-stream.html#tcp-echo-server-using-streams -RedirectTemp /21-26 https://en.wikipedia.org/wiki/Phaistos_Disc -RedirectTemp /21-27 https://en.wikipedia.org/wiki/Inverted_index -RedirectTemp /21-28 https://fastapi.tiangolo.com/ -RedirectTemp /21-29 https://swagger.io/specification/ -RedirectTemp /21-30 https://asgi.readthedocs.io/en/latest/implementations.html -RedirectTemp /21-31 https://pydantic-docs.helpmanual.io/ -RedirectTemp /21-32 https://doc.traefik.io/traefik/ -RedirectTemp /21-33 https://fastapi.tiangolo.com/project-generation/ -RedirectTemp /21-34 https://fastapi.tiangolo.com/tutorial/response-model/ -RedirectTemp /21-35 https://docs.python.org/3/library/asyncio-stream.html#asyncio.start_server -RedirectTemp /21-36 https://github.com/python/typeshed/issues/5535 -RedirectTemp /21-37 https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.Server.serve_forever -RedirectTemp /21-38 https://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamWriter.close -RedirectTemp /21-39 https://docs.python.org/3/library/asyncio-stream.html#streamwriter -RedirectTemp /21-40 https://docs.python.org/3/library/asyncio-stream.html -RedirectTemp /21-41 https://docs.python.org/3/library/asyncio-protocol.html -RedirectTemp /21-42 https://docs.python.org/3/library/asyncio-protocol.html#tcp-echo-server -RedirectTemp /21-43 https://github.com/aio-libs/aiopg -RedirectTemp /21-44 https://docs.python.org/3/whatsnew/3.8.html#asyncio -RedirectTemp /21-45 https://datatracker.ietf.org/doc/html/rfc6761 -RedirectTemp /21-46 https://docs.python.org/3/library/contextlib.html#contextlib.asynccontextmanager -RedirectTemp /21-47 https://docs.python.org/3/library/contextlib.html#contextlib.asynccontextmanager -RedirectTemp /21-48 https://docs.python.org/3/library/asyncio-task.html#asyncio.gather -RedirectTemp /21-49 https://curio.readthedocs.io/en/latest/index.html -RedirectTemp /21-50 https://curio.readthedocs.io/en/latest/reference.html#task-groups -RedirectTemp /21-51 https://en.wikipedia.org/wiki/Structured_concurrency -RedirectTemp /21-52 https://mail.python.org/archives/list/python-dev@python.org/thread/2ORDAW74LGE3ZI2QETPJRT2ZL7MCCPG2/ -RedirectTemp /21-53 https://www.python.org/dev/peps/pep-0654/#motivation -RedirectTemp /21-54 https://curio.readthedocs.io/en/latest/reference.html#AWAIT -RedirectTemp /21-55 https://www.python-httpx.org/async/#curio -RedirectTemp /21-56 https://github.com/dabeaz/curio/tree/78bca8a6ad677ef51e1568ac7b3e51441ab49c42/examples -RedirectTemp /21-57 https://datatracker.ietf.org/doc/html/rfc8305 -RedirectTemp /21-58 https://trio.readthedocs.io/en/stable/ -RedirectTemp /21-59 https://www.youtube.com/watch?v=M-sc73Y-zQA -RedirectTemp /21-60 https://en.wikipedia.org/wiki/Technical_debt -RedirectTemp /21-61 https://www.youtube.com/watch?v=E-1Y4kSsAFc -RedirectTemp /21-62 https://github.com/dabeaz/curio -RedirectTemp /21-63 https://trio.readthedocs.io/en/stable/ -RedirectTemp /21-64 https://curio.readthedocs.io/en/latest/#curio-university -RedirectTemp /21-65 https://vorpus.org/blog/some-thoughts-on-asynchronous-api-design-in-a-post-asyncawait-world/ -RedirectTemp /21-66 https://vorpus.org/blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/ -RedirectTemp /21-67 https://stackoverflow.com/questions/49482969/what-is-the-core-difference-between-asyncio-and-trio -RedirectTemp /21-68 https://docs.python.org/3/library/asyncio.html -RedirectTemp /21-69 https://bugs.python.org/issue33649 -RedirectTemp /21-70 https://docs.python.org/3/library/asyncio-dev.html -RedirectTemp /21-71 https://www.youtube.com/watch?v=iG6fr81xHKA -RedirectTemp /21-72 https://www.youtube.com/watch?v=F19R_M4Nay4 -RedirectTemp /21-73 https://asherman.io/projects/unsync.html -RedirectTemp /21-74 https://pyladies.com/ -RedirectTemp /21-75 https://www.youtube.com/watch?v=sW76-pRkZk8 -RedirectTemp /21-76 https://www.youtube.com/watch?v=Xbl7XjFYsN4 -RedirectTemp /21-77 https://www.youtube.com/watch?v=02CLD-42VdI -RedirectTemp /21-78 https://micropython.org/ -RedirectTemp /21-79 https://docs.micropython.org/en/latest/library/uasyncio.html -RedirectTemp /21-80 https://www.encode.io/articles/python-async-frameworks-beyond-developer-tribalism -RedirectTemp /21-81 https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/ -RedirectTemp /21-82 https://vorpus.org/blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/ -RedirectTemp /21-83 https://github.com/MagicStack/uvloop -RedirectTemp /21-84 http://magic.io/blog/uvloop-blazing-fast-python-networking/ -RedirectTemp /21-85 https://github.com/MagicStack/httptools -RedirectTemp /21-86 https://docs.aiohttp.org/en/stable/ -RedirectTemp /21-87 https://github.com/wg/wrk -RedirectTemp /21-88 https://twistedmatrix.com/trac/ -############################################################ 22 -RedirectTemp /22-1 https://github.com/fluentpython/example-code-2e/blob/master/22-dyn-attr-prop/oscon/data/osconfeed.json -RedirectTemp /22-2 https://pypi.org/project/attrdict/ -RedirectTemp /22-3 https://pypi.org/project/addict/ -RedirectTemp /22-4 https://github.com/ActiveState/code/tree/master/recipes/Python/52308_simple_but_handy_collector_bunch_named_stuff -RedirectTemp /22-5 https://docs.python.org/3/library/types.html#types.SimpleNamespace -RedirectTemp /22-6 https://docs.python.org/3/library/argparse.html#argparse.Namespace -RedirectTemp /22-7 https://docs.python.org/3/library/multiprocessing.html#multiprocessing.managers.Namespace -RedirectTemp /22-8 https://github.com/fluentpython/example-code-2e/blob/master/22-dyn-attr-prop/oscon/schedule_v2.py -RedirectTemp /22-9 https://docs.python.org/3/library/functools.html#functools.cached_property -RedirectTemp /22-10 https://docs.python.org/3/library/functools.html#functools.cached_property -RedirectTemp /22-11 https://bugs.python.org/issue42781 -RedirectTemp /22-12 https://docs.python.org/3/howto/descriptor.html -RedirectTemp /22-13 https://github.com/python/cpython/blob/e6d0107e13ed957109e79b796984d3d026a8660d/Lib/functools.py#L926 -RedirectTemp /22-14 https://docs.python.org/3/library/threading.html#rlock-objects -RedirectTemp /22-15 https://docs.python.org/3.10/library/functools.html#functools.cached_property -RedirectTemp /22-16 https://www.wsj.com/articles/SB10001424052970203914304576627102996831200 -RedirectTemp /22-17 https://www.youtube.com/watch?v=s35rVw1zskA&feature=youtu.be -RedirectTemp /22-18 https://docs.python.org/3/library/functions.html#dir -RedirectTemp /22-19 https://github.com/python/cpython/blob/19903085c3ad7a17c8047e1556c700f2eb109931/Lib/cmd.py#L214 -RedirectTemp /22-20 https://docs.python.org/3/library/functions.html#hasattr -RedirectTemp /22-21 https://docs.python.org/3.10/reference/datamodel.html#special-method-lookup -RedirectTemp /22-22 https://docs.python.org/3/library/functions.html -RedirectTemp /22-23 https://docs.python.org/3/reference/datamodel.html#customizing-attribute-access -RedirectTemp /22-24 https://docs.python.org/3/reference/datamodel.html#special-method-lookup -RedirectTemp /22-25 https://docs.python.org/3/library/stdtypes.html#special-attributes -RedirectTemp /22-26 http://wiki.c2.com/?WelcomeVisitors -RedirectTemp /22-27 http://wiki.c2.com/?UniformAccessPrinciple -RedirectTemp /22-28 https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html -RedirectTemp /22-29 http://www.pingo.io/docs/ -RedirectTemp /22-30 https://www.drdobbs.com/javas-new-considered-harmful/184405016 -RedirectTemp /22-31 https://www.python.org/dev/peps/pep-0008/#class-names -############################################################ 23 -RedirectTemp /23-1 http://www.aleax.it/goo_pydp.pdf -RedirectTemp /23-2 https://docs.python.org/3.10/reference/datamodel.html#implementing-descriptors -RedirectTemp /23-3 https://docs.python.org/3/howto/descriptor.html -RedirectTemp /23-4 https://docs.python.org/3/howto/ -RedirectTemp /23-5 http://www.aleax.it/Python/nylug05_om.pdf -RedirectTemp /23-6 https://www.youtube.com/watch?v=VOzvpHoYQoo -RedirectTemp /23-7 https://www.python.org/dev/peps/pep-0487/#trait-descriptors -RedirectTemp /23-8 https://dreamsongs.com/RiseOfWorseIsBetter.html -RedirectTemp /23-9 http://web.archive.org/web/20031002184114/www.amk.ca/python/writing/warts.html -RedirectTemp /23-10 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this -RedirectTemp /23-11 http://python-history.blogspot.com/2009/02/adding-support-for-user-defined-classes.html -############################################################ 24 -RedirectTemp /24-1 https://docs.python.org/3/library/stdtypes.html#special-attributes -RedirectTemp /24-2 https://docs.djangoproject.com/en/3.2/topics/db/models/#meta-options -RedirectTemp /24-3 https://www.python.org/dev/peps/pep-3155/ -RedirectTemp /24-4 https://github.com/python/cpython/blob/3.9/Lib/collections/__init__.py -RedirectTemp /24-5 https://en.wikipedia.org/wiki/Tony_Hoare#Apologies_and_retractions -RedirectTemp /24-6 https://go.dev/tour/basics/12 -RedirectTemp /24-7 https://bugs.python.org/issue42102 -RedirectTemp /24-8 https://docs.python.org/3/reference/datamodel.html#object.__init_subclass__ -RedirectTemp /24-9 https://www.python.org/dev/peps/pep-0557/#abstract -RedirectTemp /24-10 https://github.com/python/cpython/blob/3.9/Lib/dataclasses.py -RedirectTemp /24-11 https://docs.python.org/3/reference/datamodel.html#creating-the-class-object -RedirectTemp /24-12 https://mail.python.org/pipermail/python-list/2002-December/134521.html -RedirectTemp /24-13 https://mail.python.org/pipermail/python-list/2002-July/162558.html -RedirectTemp /24-14 https://github.com/fluentpython/example-code/tree/master/21-class-metaprog/bulkfood -RedirectTemp /24-15 https://en.wikipedia.org/wiki/Principle_of_least_astonishment -RedirectTemp /24-16 https://docs.python.org/3/reference/datamodel.html#object.__class_getitem__ -RedirectTemp /24-17 https://en.wikipedia.org/wiki/Trait_(computer_programming) -RedirectTemp /24-18 https://en.wikipedia.org/wiki/Aspect-oriented_programming -RedirectTemp /24-19 https://dhh.dk/arc/000416.html -RedirectTemp /24-20 https://github.com/cjrh/autoslot -RedirectTemp /24-21 https://docs.python.org/3/reference/datamodel.html#customizing-class-creation -RedirectTemp /24-22 https://docs.python.org/3/library/functions.html#type -RedirectTemp /24-23 https://docs.python.org/3/library/stdtypes.html#special-attributes -RedirectTemp /24-24 https://docs.python.org/3/library/types.html -RedirectTemp /24-25 https://www.python.org/dev/peps/pep-3129/ -RedirectTemp /24-26 https://www.youtube.com/watch?v=cAGliEJV9_o -RedirectTemp /24-27 https://docs.python.org/3/library/functools.html#functools.total_ordering -RedirectTemp /24-28 https://www.python.org/download/releases/2.2.3/descrintro/ -RedirectTemp /24-29 https://github.com/lihaoyi/macropy -RedirectTemp /24-30 https://people.eecs.berkeley.edu/~bh/ss-toc2.html diff --git a/links/deploy.sh b/links/deploy.sh deleted file mode 100755 index ced9bd9..0000000 --- a/links/deploy.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -scp FPY.LI.htaccess dh_i4p2ka@fpy.li:~/fpy.li/.htaccess diff --git a/links/sample-urls.txt b/links/sample-urls.txt deleted file mode 100644 index 9eac47c..0000000 --- a/links/sample-urls.txt +++ /dev/null @@ -1,47 +0,0 @@ -https://www.oreilly.com/library/view/fluent-python-2nd/9781492056348/ -https://dask.org/ -http://example.com/1572039572038573208 -http://www.unicode.org/ -https://www.techcrunch.com/2024/startup-funding-trends -https://blog.medium.com/writing-tips-for-beginners -https://github.com/microsoft/typescript -https://stackoverflow.com/questions/javascript-async-await -https://www.reddit.com/r/programming/hot -https://docs.google.com/spreadsheets/create -https://www.youtube.com/watch?v=dQw4w9WgXcQ -https://www.amazon.com/dp/B08N5WRWNW -https://support.apple.com/iphone-setup-guide -https://www.wikipedia.org/wiki/Machine_Learning -https://www.linkedin.com/in/johndoe123 -https://www.instagram.com/p/CxYz123AbC/ -https://twitter.com/elonmusk/status/1234567890 -https://www.facebook.com/events/987654321 -https://drive.google.com/file/d/1AbCdEfGhIjKlMnOp/view -https://www.dropbox.com/s/qwerty123/document.pdf -https://zoom.us/j/1234567890?pwd=abcdef -https://calendly.com/janedoe/30min-meeting -https://www.shopify.com/admin/products/new -https://stripe.com/docs/api/charges/create -https://www.paypal.com/invoice/create -https://mailchimp.com/campaigns/dashboard -https://analytics.google.com/analytics/web/ -https://console.aws.amazon.com/s3/buckets -https://portal.azure.com/dashboard -https://www.figma.com/file/AbCdEf123456/design-system -https://www.notion.so/workspace/project-notes -https://trello.com/b/AbCdEfGh/marketing-board -https://slack.com/app_redirect?channel=general -https://discord.gg/AbCdEfGh123 -https://www.twitch.tv/streamername/videos -https://www.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M -https://www.netflix.com/browse/genre/83 -https://www.hulu.com/series/breaking-bad-2008 -https://www.airbnb.com/rooms/12345678 -https://www.booking.com/hotel/us/grand-plaza.html -https://www.expedia.com/flights/search?trip=roundtrip -https://www.uber.com/ride/request -https://www.doordash.com/store/pizza-palace-123 -https://www.grubhub.com/restaurant/tacos-el-rey-456 -https://www.zillow.com/homes/for_sale/San-Francisco-CA -https://www.craigslist.org/about/sites -https://www.python.org/dev/peps/pep-0484/ \ No newline at end of file diff --git a/links/short.htaccess b/links/short.htaccess deleted file mode 100644 index 86fe3e2..0000000 --- a/links/short.htaccess +++ /dev/null @@ -1,14 +0,0 @@ -# content of short.htaccess file created and managed by short.py - -# appended: 2025-05-23 15:12:13 -RedirectTemp /22 https://pythonfluente.com/2/#pattern_matching_case_study_sec -RedirectTemp /23 https://pythonfluente.com/2/#how_slicing_works -RedirectTemp /24 https://pythonfluente.com/2/#sliceable_sequence -RedirectTemp /25 https://pythonfluente.com/2/#virtual_subclass_sec -RedirectTemp /26 https://pythonfluente.com/2/#environment_class_ex -RedirectTemp /27 https://pythonfluente.com/2/#subclass_builtin_woes -RedirectTemp /28 https://pythonfluente.com/2/#slots_section -RedirectTemp /29 https://pythonfluente.com/2/#typeddict_sec -RedirectTemp /2a https://pythonfluente.com/2/#problems_annot_runtime_sec -RedirectTemp /2b https://pythonfluente.com/2/#legacy_deprecated_typing_box -RedirectTemp /2c https://pythonfluente.com/2/#positional_pattern_implement_sec diff --git a/links/short.py b/links/short.py deleted file mode 100755 index d67c71d..0000000 --- a/links/short.py +++ /dev/null @@ -1,95 +0,0 @@ -#!/usr/bin/env python3 - -""" -short.py generates unique short URLs. - -This script reads lines from stdin or files named as arguments, then: - -1. retrieves or creates new short URLs, taking into account existing RedirectTemp - directives in custom.htaccess or short.htaccess; -2. appends RedirectTemp directives for newly created short URLs to short.htaccess; -3. outputs the list of (short, long) URLs retrieved or created. - -""" - -import fileinput -import itertools -from collections.abc import Iterator -from time import strftime - -HTACCESS_CUSTOM = 'custom.htaccess' -HTACCESS_SHORT = 'short.htaccess' -HTACCESS_FILES = (HTACCESS_CUSTOM, HTACCESS_SHORT) -BASE_DOMAIN = 'fpy.li' - - -def load_redirects() -> tuple[dict, dict]: - redirects = {} - targets = {} - for filename in HTACCESS_FILES: - with open(filename) as fp: - for line in fp: - if line.startswith('RedirectTemp'): - _, short, long = line.split() - short = short[1:] # Remove leading slash - assert short not in redirects, f'{filename}: duplicate redirect from {short}' - # htaccess.custom is live since 2022, we can't change it remove duplicate targets - if filename != HTACCESS_CUSTOM: - assert long not in targets, f'{filename}: duplicate redirect to {long}' - redirects[short] = long - targets[long] = short - return redirects, targets - - -SDIGITS = '23456789abcdefghjkmnpqrstvwxyz' - - -def gen_short(start_len=1) -> Iterator[str]: - """Generate every possible sequence of SDIGITS, starting with start_len""" - length = start_len - while True: - for short in itertools.product(SDIGITS, repeat=length): - yield ''.join(short) - length += 1 - - -def gen_unused_short(redirects: dict) -> Iterator[str]: - """Generate next available short URL of len >= 2.""" - for short in gen_short(2): - if short not in redirects: - yield short - - -def shorten(urls: list[str]) -> list[tuple[str, str]]: - """Return (short, long) pairs, appending directives to HTACCESS_SHORT as needed.""" - redirects, targets = load_redirects() - iter_short = gen_unused_short(redirects) - pairs = [] - timestamp = strftime('%Y-%m-%d %H:%M:%S') - with open(HTACCESS_SHORT, 'a') as fp: - for long in urls: - assert BASE_DOMAIN not in long, f'{long} is a {BASE_DOMAIN} URL' - if long in targets: - short = targets[long] - else: - short = next(iter_short) - redirects[short] = long - targets[long] = short - if timestamp: - fp.write(f'\n# appended: {timestamp}\n') - timestamp = None - fp.write(f'RedirectTemp /{short} {long}\n') - pairs.append((short, long)) - - return pairs - - -def main() -> None: - """read URLS from filename arguments or stdin""" - urls = [line.strip() for line in fileinput.input(encoding='utf-8')] - for short, long in shorten(urls): - print(f'{BASE_DOMAIN}/{short}\t{long}') - - -if __name__ == '__main__': - main()