- Installation
- OSI Layers - fundamentals
- Layer 1 - Physical
- Layer 2 - Data Link
- Hub vs. Router
- IPv4 vs. IPv6
- Local Network vs. Wide Area Network
- Layer 3 - NETWORK
- Binary -> Decimal conversion
- Decimal -> Binary conversion
- Private IPv4 address classes - class A, class B, class C
- Subnet masking - subnet division
- Route Tables
- ARP address resolution protocol
- IP Routing on Layer 3
- Layer 3 problems
- Layer 4 - Transport
- TCP vs. UDP
- TCP segments
- TCP 3 ways handshakes
- VSCode navigation & shortcut tutorials
- Markdown
- Encryption types & concept: Plaintext, Algorithm, Key (Symmetric, Public, Private), Ciphertext
- Symmetric Encryption
- Assymetric Encrytion
- Signing & Digital Signature
- Hashing
- Hashing vs. Symmetric Encryption
- Hashing Collision
- Weak Hashing vs. Strong Hashing
- Digital Signature of Hash Digest
- Data Keys, Master Key and key rotation
- Envelop Encryption
- End-to-End Encryption
- Git fundamental
git init
,git add .
,git commit -m "message"
,git log
,git checkout [commit hash]
- Gitlense as VSCode extension
git diff [commit hash]
to compare the current with past commitsgit tag "vX.Y.Z"
- to change tag
git tag [new name] [old name]
thengit tag -d [old tag]
- to list all tags
git tag -l
git checkout tags/[tag]
git checkout [branch]
- create branch
git branch [branch name]
git checkout [branch name]
, but before that you have to commit unstaged/staged changesgit merge [branch name]
, usually frommain
branch to pull changes tomain
git branch -a --merged
to see past merged branchesgit branch -d [branch name]
, to do delete branches, but this is not recommended- Create Repo on Github > Clone to local > make local commit > push changes with
git push
- Python in REPL mode
- variable & value assignment
- integer
int
/float typefloat
/string typestr
/boolean typeBoolean
- checking type of variables/values via
type(var)
- getting user input via prompt or terminal waiting via
input("input message")
- string
my_str.upper()
andmy_str.lower()
function - in place - list and nested list
[]
- access item/item of lists
- check length of list/string via
len(my_list)
orlen(my_str)
- list in place functions
my_list.append()
,my_list.insert()
,my_list.pop(index=0)
my_list.sort()
(in-place) vssorted(my_list)
(copy)- casting types
int(my_string)
orstr(my_float)
- type hinting via type assignment
- no true constant problem in Python
tupple
type similar tolist
but it is immutablesets
type, theory of how git works withmy_set.intersection(other_set)
&my_set.difference(other_set)
- dictionary
dict
type,dict()
initialization open()
to open filesboolean
type and logic evaluationif elif else
flow controlwhile/break
loop
match/case
flow controlEnum
class via importfrom enum import Enum
match/case
andEnum
combination for clean flow controlfor
loop withrange(x)
for
loop to iterate over alist
list
comprehension, quickly transform individual items of alist
and put into a newlist
for
loop with access to bothindex
anditem
of alist
withfor index,item in enumerate(my_list):
for
loop with access tokey
andvalue
of adict
withfor k,v in my_dict.items():
- simple Queue data structure implementation via
list
functions
, pure and impure functions, input/output, side effects- in scope and out of scope
Exception
basicsassert
- simple unit testing with
assert
try/except
flow- assign
Exception
into variable for further actionsexcept Exception as e
- multiple
try/except
flows try/except/else
flow
class
andobject
concepts- creating
class
andobject
class
: property, method,__dict__
representation- simple inheritance
- inheritance with custom property and method override
- sub-modules
- data transfer object theory (
DTO
) dataclasses
Pydantic
packagedataclasses
vs.Pydantic
@classmethod
- Regex, Regex visualizer, Regex testing
- Integration theory: messaging, file sharing, RPC (includes
REST API
&gRPC
) OSI Layers
revisionJSON
serialization &JSON
parsingPostman API Client
- Testing some public API such as
http.cat
- API theory:
Data Transfer Object
orDTO
- Building API on top of
Pydantic Schema
classes HTTP Codes
FastAPI input auto-parser
via Pydantic classesPUT
API buildingGET
API building- Distinguish 4 ways to provide data:
Header
,Body
,Path Parameters
,Query Parameters
API auto-docs
API auto-docs
best practices - including always type hint your API returns- Adding basic persistence for API
- Continuation with API:
PUT
,GET
,DELETE
, andGET
multiple items
- VSCode debugger setup
- Debugging techniques
- Dependency injection theory
- Testing theory: unit testing, integration testing, end-end testing, smoke testing, regression testing...
- Pytest unit testing
pytest
,pytest -s
,pytest --vl
- FastAPI TestClient
from fastapi.testclient import TestClient
- unit testing API
- Pytest Fixture
- Using
@pytest.fixture
to create new instance of API Client for each test, or set default data - Parametizing test functions
@pytest.mark.parametrize
- Data Access Object theory
DAO
- Install DB client within VSCode
- Installing SQLite
- Playing with Sakila.db
- SQL
SELECT
,COUNT
,DISTINCT
,GROUP BY
,WHERE
,LIMIT
,OFFSET
with logic operators - SQL
JOIN
- SQL
INSERT INTO ... VALUES
- SQL
UPDATE
- More SQL
UPDATE
- Python virtual environment
venv
- SQLModel - as a Relational Object Mapping tool (ORM)
- Revisit DTO, DAO theory
- Building simple SQL model
- Building simple API with automatic DTO <-> DAO conversion
- SQL
primary key
vsindex key
vscompound index key
- SQL
foreign key
constraint - Building APIs with SQLModel ORM
- Learning why we should have dedicated DTO & DAO layers, shouldn't rely on automatic conversion
- Mainly to discuss Assignment 1
- Intro to Cloud Computing
IaaS
vs.PaaS
vs.SaaS
- Platform engineering responsibility
- Advantages of Cloud Computing
- What is AWS?
- AWS Pricing Model and unit cost charges
- FinOps
- Total Cost of Ownership comparison
- AWS
API
vs.Management Console
vs.CLI
vs.SDK
- AZ, and why use 3 AZs
- Region
- Local services vs. Global services (domain name services DNS, IAM, CDN)
- POP = Edge Locations + Edge Caches
- CDN
- Storage Services overview
- Networking Services overview
- Security Services overview
- Management Services overview - Landing Zone and why split AWS accounts
- Integration Services overview
- Shared responsibility model examples (Self managed DB vs. RDS)
- S3 Service concepts
- S3 Tiers
- S3 DNS overview
- S3 Cost charges model
- EC2 recommended usecases
- Create EC2 instance
- AMI & Golden Image practice
- Instance Type, Instance family & size
- Network settings, high availability setups
- IAM Role, Instance profile
- User data script
- Instance Store vs. EBS drives
- Tag & ABAC
- TBC...