mirror of
https://github.com/linkedin/school-of-sre
synced 2026-01-12 03:28:03 +00:00
6261 lines
117 KiB
HTML
6261 lines
117 KiB
HTML
|
|
<!doctype html>
|
|
<html lang="en" class="no-js">
|
|
<head>
|
|
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
|
|
|
|
|
|
<link rel="canonical" href="https://linkedin.github.io/school-of-sre/level101/python_web/python-concepts/">
|
|
|
|
|
|
<link rel="prev" href="../intro/">
|
|
|
|
|
|
<link rel="next" href="../python-web-flask/">
|
|
|
|
|
|
<link rel="icon" href="../../../img/favicon.ico">
|
|
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.12">
|
|
|
|
|
|
|
|
<title>Some Python Concepts - School Of SRE</title>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../../../assets/stylesheets/main.7e359304.min.css">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
|
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../../../stylesheets/custom.css">
|
|
|
|
<script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
|
|
<body dir="ltr">
|
|
|
|
|
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
|
<label class="md-overlay" for="__drawer"></label>
|
|
<div data-md-component="skip">
|
|
|
|
|
|
<a href="#some-python-concepts" class="md-skip">
|
|
Skip to content
|
|
</a>
|
|
|
|
</div>
|
|
<div data-md-component="announce">
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<script async defer data-domain="linkedin.github.io" src="https://tracking.eskratch.com/js/plausible.js"></script>
|
|
<script>document.addEventListener("DOMContentLoaded", function() {
|
|
if (document.getElementById("nav-2").checked!=true && document.getElementById("nav-3").checked!=true && window.innerWidth>1220){
|
|
document.getElementById("nav-2").checked=true;
|
|
document.getElementById("nav-3").checked=true;
|
|
|
|
}
|
|
});</script>
|
|
|
|
|
|
|
|
<header class="md-header" data-md-component="header">
|
|
<nav class="md-header__inner md-grid" aria-label="header.title">
|
|
<a href="https://linkedin.github.io/school-of-sre/" title="School Of SRE" class="md-header__button md-logo" aria-label="School Of SRE">
|
|
|
|
<img src="../../../img/sos.png" alt="logo">
|
|
|
|
</a>
|
|
<!-- Button to open drawer -->
|
|
<label class="md-header__button md-icon" for="__drawer">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
|
|
</label>
|
|
<div class="md-header__title" data-md-component="header-title">
|
|
|
|
<div class="md-header__ellipsis">
|
|
<span class="md-header__topic md-ellipsis">
|
|
<a href="https://linkedin.github.io/school-of-sre/" title="School Of SRE" >
|
|
School Of SRE
|
|
</a>
|
|
</span>
|
|
<span class="md-header__topic md-ellipsis">
|
|
|
|
Some Python Concepts
|
|
|
|
</span>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<label class="md-header__button md-icon" for="__search">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
|
</label>
|
|
<div class="md-search" data-md-component="search" role="dialog">
|
|
<label class="md-search__overlay" for="__search"></label>
|
|
<div class="md-search__inner" role="search">
|
|
<form class="md-search__form" name="search">
|
|
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
|
<label class="md-search__icon md-icon" for="__search">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
|
</label>
|
|
<nav class="md-search__options" aria-label="Search">
|
|
|
|
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
|
|
</button>
|
|
</nav>
|
|
|
|
</form>
|
|
<div class="md-search__output">
|
|
<div class="md-search__scrollwrap" data-md-scrollfix>
|
|
<div class="md-search-result" data-md-component="search-result">
|
|
<div class="md-search-result__meta">
|
|
Initializing search
|
|
</div>
|
|
<ol class="md-search-result__list" role="presentation"></ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</nav>
|
|
</header>
|
|
|
|
<div class="md-container" data-md-component="container">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<main class="md-main" data-md-component="main">
|
|
<div class="md-main__inner md-grid">
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
|
|
<!-- Navigation -->
|
|
<nav
|
|
class="md-nav md-nav--primary"
|
|
aria-label="Navigation"
|
|
data-md-level="0"
|
|
>
|
|
|
|
<!-- Repository information -->
|
|
|
|
|
|
<!-- Navigation list -->
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../.." class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Home
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2"
|
|
checked
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2"
|
|
id="__nav_2_label"
|
|
tabindex=""
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Level 101
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="1"
|
|
aria-labelledby="__nav_2_label"
|
|
aria-expanded="true"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Level 101
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_1"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_1"
|
|
id="__nav_2_1_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Fundamentals Series
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_2_1_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_1">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Fundamentals Series
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_1_1"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_1_1"
|
|
id="__nav_2_1_1_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Linux Basics
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_2_1_1_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_1_1">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Linux Basics
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_basics/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_basics/command_line_basics/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Command Line Basics
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_basics/linux_server_administration/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Server Administration
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_basics/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_1_2"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_1_2"
|
|
id="__nav_2_1_2_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Git
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_2_1_2_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_1_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Git
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../git/git-basics/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Git Basics
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../git/branches/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Working With Branches
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../git/github-hooks/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Github and Hooks
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../git/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_1_3"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_1_3"
|
|
id="__nav_2_1_3_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Linux Networking
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_2_1_3_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_1_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Linux Networking
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_networking/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_networking/dns/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
DNS
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_networking/udp/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
UDP
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_networking/http/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
HTTP
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_networking/tcp/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
TCP
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_networking/ipr/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Routing
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_networking/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_2"
|
|
checked
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_2"
|
|
id="__nav_2_2_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Python and Web
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_2_2_label"
|
|
aria-expanded="true"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Python and Web
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item md-nav__item--active">
|
|
|
|
|
|
<!-- State toggle -->
|
|
<input
|
|
class="md-nav__toggle md-toggle"
|
|
type="checkbox"
|
|
id="__toc"
|
|
/>
|
|
|
|
<!-- Hack: see partials/toc.html for more information -->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Navigation link to table of contents -->
|
|
|
|
<label class="md-nav__link md-nav__link--active" for="__toc">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Some Python Concepts
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<a
|
|
href="./"
|
|
class="md-nav__link md-nav__link--active"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Some Python Concepts
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
|
|
<!-- Table of contents -->
|
|
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#python-functions" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Python Functions
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Python Functions">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#globals" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
globals
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#code" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
code
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#decorators" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Decorators
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#some-gotchas" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Some Gotchas
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<!-- Navigation item -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../python-web-flask/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Python, Web and Flask
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../url-shorten-app/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
The URL Shortening App
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../sre-conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_3"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_3"
|
|
id="__nav_2_3_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Data
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_2_3_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Data
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_3_1"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_3_1"
|
|
id="__nav_2_3_1_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Relational Databases
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_2_3_1_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_3_1">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Relational Databases
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/concepts/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Key Concepts
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/mysql/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
MySQL
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/innodb/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
InnoDB
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/backup_recovery/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Backup and Recovery
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/replication/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
MySQL Replication
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/operations/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Operational Concepts
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/select_query/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Select Query
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/query_performance/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Query Performance
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/lab/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Lab
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_3_2"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_3_2"
|
|
id="__nav_2_3_2_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
NoSQL
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_2_3_2_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_3_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
NoSQL
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_nosql/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_nosql/key_concepts/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Key Concepts
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_nosql/further_reading/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_3_3"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_3_3"
|
|
id="__nav_2_3_3_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Message Queue
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_2_3_3_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_3_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Message Queue
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../messagequeue/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../messagequeue/key_concepts/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Key Concepts
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../messagequeue/further_reading/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_3_4"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_3_4"
|
|
id="__nav_2_3_4_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Big Data
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_2_3_4_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_3_4">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Big Data
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../big_data/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../big_data/evolution/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Evolution and Architecture of Hadoop
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../big_data/tasks/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_4"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_4"
|
|
id="__nav_2_4_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Systems Design
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_2_4_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_4">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Systems Design
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../systems_design/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../systems_design/scalability/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Scalability
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../systems_design/availability/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Availability
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../systems_design/fault-tolerance/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Fault Tolerance
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../systems_design/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_5"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_5"
|
|
id="__nav_2_5_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Metrics and Monitoring
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_2_5_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_5">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Metrics and Monitoring
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../metrics_and_monitoring/introduction/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../metrics_and_monitoring/command-line_tools/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Command-line Tools
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../metrics_and_monitoring/third-party_monitoring/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Third-party Monitoring
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../metrics_and_monitoring/alerts/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Proactive Monitoring with Alerts
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../metrics_and_monitoring/best_practices/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Best Practices for Monitoring
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../metrics_and_monitoring/observability/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Observability
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../metrics_and_monitoring/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_6"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_6"
|
|
id="__nav_2_6_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Security
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_2_6_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_6">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Security
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../security/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../security/fundamentals/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Fundamentals of Security
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../security/network_security/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Network Security
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../security/threats_attacks_defences/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Threat, Attacks & Defences
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../security/writing_secure_code/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Writing Secure code
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../security/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3"
|
|
id="__nav_3_label"
|
|
tabindex=""
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Level 102
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="1"
|
|
aria-labelledby="__nav_3_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Level 102
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_1"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_1"
|
|
id="__nav_3_1_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Linux Intermediate
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_3_1_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_1">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Linux Intermediate
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/linux_intermediate/introduction/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/linux_intermediate/package_management/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Package Management
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/linux_intermediate/storage_media/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Storage Media
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/linux_intermediate/archiving_backup/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Archiving and Backup
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/linux_intermediate/introvim/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction to Vim
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/linux_intermediate/bashscripting/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Bash Scripting
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/linux_intermediate/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_2"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_2"
|
|
id="__nav_3_2_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Linux Advanced
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_3_2_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Linux Advanced
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_2_1"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_2_1"
|
|
id="__nav_3_2_1_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Containerization And Orchestration
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_3_2_1_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_2_1">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Containerization And Orchestration
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/containerization_and_orchestration/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/containerization_and_orchestration/intro_to_containers/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction To Containers
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/containerization_and_orchestration/containerization_with_docker/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Containerization With Docker
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/containerization_and_orchestration/orchestration_with_kubernetes/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Orchestration With Kubernetes
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/containerization_and_orchestration/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_2_2"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_2_2"
|
|
id="__nav_3_2_2_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
System Calls and Signals
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_3_2_2_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_2_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
System Calls and Signals
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_calls_and_signals/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_calls_and_signals/signals/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Signals
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_calls_and_signals/system_calls/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
System Calls
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_calls_and_signals/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_3"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_3"
|
|
id="__nav_3_3_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Networking
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_3_3_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Networking
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/networking/introduction/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/networking/security/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Security
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/networking/scale/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Scale
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/networking/rtt/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
RTT
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/networking/infrastructure-features/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Infrastructure Services
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/networking/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_4"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_4"
|
|
id="__nav_3_4_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
System Design
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_3_4_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_4">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
System Design
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_design/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_design/large-system-design/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Large System Design
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_design/scaling/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Scaling
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_design/scaling-beyond-the-datacenter/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Scaling Beyond the Data Center
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_design/resiliency/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Resiliency
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_design/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_5"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_5"
|
|
id="__nav_3_5_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
System Troubleshooting and Performance Improvements
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_3_5_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_5">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
System Troubleshooting and Performance Improvements
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_troubleshooting_and_performance/introduction/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_troubleshooting_and_performance/troubleshooting/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Troubleshooting
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_troubleshooting_and_performance/important-tools/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Important Tools
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_troubleshooting_and_performance/performance-improvements/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Performance Improvements
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_troubleshooting_and_performance/troubleshooting-example/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Troubleshooting Example
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_troubleshooting_and_performance/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_6"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_6"
|
|
id="__nav_3_6_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Continuous Integration and Continuous Delivery
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_3_6_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_6">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Continuous Integration and Continuous Delivery
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/continuous_integration_and_continuous_delivery/introduction/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/continuous_integration_and_continuous_delivery/introduction_to_cicd/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
What is CI/CD?
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/continuous_integration_and_continuous_delivery/cicd_brief_history/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Brief History
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/continuous_integration_and_continuous_delivery/continuous_integration_build_pipeline/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Continuous Integration
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/continuous_integration_and_continuous_delivery/continuous_delivery_release_pipeline/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Continuous Delivery and Deployment
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/continuous_integration_and_continuous_delivery/jenkins_cicd_pipeline_hands_on_lab/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
CI/CD Pipeline - Hands-on
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/continuous_integration_and_continuous_delivery/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../CONTRIBUTING/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Contribute
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../CODE_OF_CONDUCT/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Code of Conduct
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../sre_community/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
SRE Community
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#python-functions" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Python Functions
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Python Functions">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#globals" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
globals
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#code" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
code
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#decorators" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Decorators
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#some-gotchas" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Some Gotchas
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-content" data-md-component="content">
|
|
<article class="md-content__inner md-typeset">
|
|
|
|
|
|
|
|
|
|
<h1 id="some-python-concepts">Some Python Concepts</h1>
|
|
<p>Though you are expected to know python and its syntax at basic level, let us discuss some fundamental concepts that will help you understand the Python language better.</p>
|
|
<p><strong>Everything in Python is an object.</strong></p>
|
|
<p>That includes the functions, lists, dicts, classes, modules, a running function (instance of function definition), everything. In the CPython, it would mean there is an underlying <code>struct</code> variable for each object.</p>
|
|
<p>In Python's current execution context, all the variables are stored in a dict. It'd be a string to object mapping. If you have a function and a float variable defined in the current context, here is how it is handled internally.</p>
|
|
<pre><code class="language-python">>>> float_number=42.0
|
|
>>> def foo_func():
|
|
... pass
|
|
...
|
|
|
|
# NOTICE HOW VARIABLE NAMES ARE STRINGS, stored in a dict
|
|
>>> locals()
|
|
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'float_number': 42.0, 'foo_func': <function foo_func at 0x1055847a0>}
|
|
</code></pre>
|
|
<h2 id="python-functions">Python Functions</h2>
|
|
<p>Since functions too are objects, we can see what all attributes a function contains as following</p>
|
|
<pre><code class="language-python">>>> def hello(name):
|
|
... print(f"Hello, {name}!")
|
|
...
|
|
>>> dir(hello)
|
|
['__annotations__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__',
|
|
'__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__globals__', '__gt__',
|
|
'__hash__', '__init__', '__init_subclass__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__',
|
|
'__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__',
|
|
'__subclasshook__']
|
|
</code></pre>
|
|
<p>While there are a lot of them, let's look at some interesting ones.</p>
|
|
<h4 id="globals"><strong>globals</strong></h4>
|
|
<p>This attribute, as the name suggests, has references of global variables. If you ever need to know what all global variables are in the scope of this function, this will tell you. See how the function start seeing the new variable in globals</p>
|
|
<pre><code class="language-python">>>> hello.__globals__
|
|
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'hello': <function hello at 0x7fe4e82554c0>}
|
|
|
|
# adding new global variable
|
|
>>> GLOBAL="g_val"
|
|
>>> hello.__globals__
|
|
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'hello': <function hello at 0x7fe4e82554c0>, 'GLOBAL': 'g_val'}
|
|
</code></pre>
|
|
<h3 id="code"><strong>code</strong></h3>
|
|
<p>This is an interesting one! As everything in Python is an object, this includes the bytecode too. The compiled Python bytecode is a Python code object. Which is accessible via <code>__code__</code> attribute here. A function has an associated code object which carries some interesting information.</p>
|
|
<pre><code class="language-python"># the file in which function is defined
|
|
# stdin here since this is run in an interpreter
|
|
>>> hello.__code__.co_filename
|
|
'<stdin>'
|
|
|
|
# number of arguments the function takes
|
|
>>> hello.__code__.co_argcount
|
|
1
|
|
|
|
# local variable names
|
|
>>> hello.__code__.co_varnames
|
|
('name',)
|
|
|
|
# the function code's compiled bytecode
|
|
>>> hello.__code__.co_code
|
|
b't\x00d\x01|\x00\x9b\x00d\x02\x9d\x03\x83\x01\x01\x00d\x00S\x00'
|
|
</code></pre>
|
|
<p>There are more code attributes which you can enlist by <code>>>> dir(hello.__code__)</code>.</p>
|
|
<h2 id="decorators">Decorators</h2>
|
|
<p>Related to functions, Python has another feature called decorators. Let's see how that works, keeping <code>everything is an object</code> in mind.</p>
|
|
<p>Here is a sample decorator:</p>
|
|
<pre><code class="language-python">>>> def deco(func):
|
|
... def inner():
|
|
... print("before")
|
|
... func()
|
|
... print("after")
|
|
... return inner
|
|
...
|
|
>>> @deco
|
|
... def hello_world():
|
|
... print("hello world")
|
|
...
|
|
>>>
|
|
>>> hello_world()
|
|
before
|
|
hello world
|
|
after
|
|
</code></pre>
|
|
<p>Here <code>@deco</code> syntax is used to decorate the <code>hello_world</code> function. It is essentially same as doing</p>
|
|
<pre><code class="language-python">>>> def hello_world():
|
|
... print("hello world")
|
|
...
|
|
>>> hello_world = deco(hello_world)
|
|
</code></pre>
|
|
<p>What goes inside the <code>deco</code> function might seem complex. Let's try to uncover it.</p>
|
|
<ol>
|
|
<li>Function <code>hello_world</code> is created</li>
|
|
<li>It is passed to <code>deco</code> function</li>
|
|
<li><code>deco</code> create a new function<ol>
|
|
<li>This new function calls <code>hello_world</code> function</li>
|
|
<li>And does a couple other things</li>
|
|
</ol>
|
|
</li>
|
|
<li><code>deco</code> returns the newly created function</li>
|
|
<li><code>hello_world</code> is replaced with above function</li>
|
|
</ol>
|
|
<p>Let's visualize it for better understanding</p>
|
|
<pre><code> BEFORE function_object (ID: 100)
|
|
|
|
"hello_world" +--------------------+
|
|
+ |print("hello_world")|
|
|
| | |
|
|
+--------------> | |
|
|
| |
|
|
+--------------------+
|
|
|
|
|
|
WHAT DECORATOR DOES
|
|
|
|
creates a new function (ID: 101)
|
|
+---------------------------------+
|
|
|input arg: function with id: 100 |
|
|
| |
|
|
|print("before") |
|
|
|call function object with id 100 |
|
|
|print("after") |
|
|
| |
|
|
+---------------------------------+
|
|
^
|
|
|
|
|
AFTER |
|
|
|
|
|
|
|
|
"hello_world" +-------------+
|
|
</code></pre>
|
|
<p>Note how the <code>hello_world</code> name points to a new function object but that new function object knows the reference (ID) of the original function.</p>
|
|
<h2 id="some-gotchas">Some Gotchas</h2>
|
|
<ul>
|
|
<li>While it is very quick to build prototypes in Python and there are tons of libraries available, as the codebase complexity increases, type errors become more common and will get hard to deal with. (There are solutions to that problem like type annotations in Python. Checkout <a href="http://mypy-lang.org/">mypy</a>.)</li>
|
|
<li>Because Python is dynamically typed language, that means all types are determined at runtime. And that makes Python run very slow compared to other statically typed languages.</li>
|
|
<li>Python has something called <a href="https://www.dabeaz.com/python/UnderstandingGIL.pdf">GIL</a> (global interpreter lock) which is a limiting factor for utilizing multiple CPU cores for parallel computation.</li>
|
|
<li>Some weird things that Python does: <a href="https://github.com/satwikkansal/wtfpython">https://github.com/satwikkansal/wtfpython</a>.</li>
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</article>
|
|
</div>
|
|
|
|
|
|
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
|
</div>
|
|
|
|
</main>
|
|
|
|
<footer class="md-footer">
|
|
|
|
<div class="md-footer-meta md-typeset">
|
|
<div class="md-footer-meta__inner md-grid">
|
|
<div class="md-copyright">
|
|
|
|
<div class="md-copyright__highlight">
|
|
Copyright 2020 LinkedIn Corporation. All Rights Reserved. Licensed under the Creative Commons Attribution 4.0 International Public License
|
|
</div>
|
|
|
|
|
|
Made with
|
|
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
|
Material for MkDocs
|
|
</a>
|
|
|
|
</div>
|
|
|
|
<div class="md-social">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a href="https://github.com/linkedin/school-of-sre" target="_blank" rel="noopener" title="github.com" class="md-social__link">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
|
|
</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
</div>
|
|
<div class="md-dialog" data-md-component="dialog">
|
|
<div class="md-dialog__inner md-typeset"></div>
|
|
</div>
|
|
|
|
|
|
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.sections"], "search": "../../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
|
|
|
|
|
|
<script src="../../../assets/javascripts/bundle.c8d2eff1.min.js"></script>
|
|
|
|
|
|
</body>
|
|
</html> |