Python-100-Days - Python - 初心者からマスターまで100日間

(Python - 100天从新手到大师)

Created at: 2018-03-02 00:05:52
Language: Python

Python - 初心者からマスターまで100日間

著者:ロック

説明:プロジェクトがオンラインになってから8w+スターマークを取得するまで、基礎部分(最初の15日間のコンテンツ)は初心者にとってより困難であるというフィードバックを受けており、説明のためのコンパニオンビデオをお勧めします。 「Python-Core-50-Courses」というプロジェクトは、最近、初心者がフォローできるビデオ解説で、より簡単で一般的な方法で書き直されましたPython ベース ビデオが必要な場合は、"ステーション B" で "Python ゼロ ベース クイック スタート" を検索できます。 学習後、収穫を感じる小さなパートナーは、UPマスター(千前Python)をサポートするために「ワンクリック3連」することができます。 国内ユーザーが GitHub にアクセスするのが遅い場合は、上記の「Python をゼロから学習する」コラムが初心者に適しており、他のコラムも継続的に作成および更新されており、ご注目とコメントをお待ちしております。

創造的な困難は、個人的な消費(例えば、コーヒーの購入)ではなく、テンセントの公共財、米国グループ公共の福祉、水滴の準備などのプラットフォームを通じて、困っている人々に寄付する報酬サポートのおかげです(寄付について学ぶためにクリック)。 QQ学習グループに参加する必要があり、以下のQRコードをスキャンすることができ、3つのグループと1つを追加することができ、グループに繰り返し入力しないでください。 学習グループは、学習リソース質問への回答を提供し、Python体験クラス業界公開クラスがある場合は、事前にグループで通知し、参加を歓迎します。

プロジェクト「Day80~90」セクションは、著者が通常、ドキュメントを書くのにあまり時間をかけないので、まだ作成中であるため、更新のペースは比較的遅く、ご理解に感謝します。

Python アプリケーション領域とキャリア開発分析

簡単に言えば、Python は "エレガント"、"明確"、"単純" プログラミング言語です。

  • 学習曲線は低く、非専門家も始めることができます
  • 強力なエコシステムを持つオープンソースシステム
  • 説明言語、完璧なプラットフォーム移植性
  • オブジェクト指向プログラミングと関数型プログラミングをサポートする動的型指定言語
  • コード仕様は高く、読みやすさも高いです

Python は、次の領域で役立ちます。

  • バックエンド開発 - Python / Java / Go / PHP
  • DevOps - Python / Shell / Ruby
  • データ集録 - Python / C++ / Java
  • クオンタイズトレード - Python / C++ / R
  • データサイエンス - Python / R / ジュリア/ Matlab
  • 機械学習 - Python / R / C++ / Julia
  • 自動テスト - Python / シェル

Python 開発者として、個人の好みやキャリアプランに応じて、多くの雇用分野を選択できます。

  • Python バックエンド開発エンジニア (サーバー、クラウド プラットフォーム、データ インターフェイス)
  • Python 運用エンジニア (自動運用、SRE、DevOps)
  • Python データ アナリスト (データ分析、ビジネス インテリジェンス、デジタル オペレーション)
  • Pythonデータマイニングエンジニア(機械学習、ディープラーニング、アルゴリズムスペシャリスト)
  • Pythonクローラエンジニア
  • Python テスト エンジニア (自動テスト、テスト開発)

説明:現在、データ分析とデータマイニングは、インターネット業界と従来の産業の両方で大量のデータが蓄積されているため、データアナリストが既存のデータからより多くのビジネス価値を発見し、企業の意思決定をサポートする必要があるため、非常にホットな方向です。

初心者のためのいくつかのアドバイス:

  • Make English as your working language. (英語を作業言語にする)
  • Practice makes perfect. (熟成器)
  • All experience comes from mistakes. (すべての経験は、あなたが犯した間違いから生じます)
  • Don't be one of the leeches. (パーティーに手を伸ばすな)
  • Either outstanding or out. (優れたか、またはアウトか)

Day01~15 -Python 言語の基礎

Day01 - 初見Python

  • Python の概要 - Python の歴史 / Python の長所と短所 / Python の応用分野
  • プログラミング環境の構築 - Windows 環境 / Linux 環境 / MacOS 環境
  • ターミナルからPythonプログラムを実行する - Hello、 world /関数/ランプログラム
    print
  • IDLE - 対話型環境 (REPL) を使用する / 複数行コードを記述する / プログラムを実行する / IDLE を終了します
  • コメント - コメントの役割 / 単一行コメント / 複数行コメント

Day02 - 言語要素

  • プログラムと進数 - 命令とプログラム / フォンノイマンマシン / バイナリと小数点以下 10 進数 / オクテットと 16 進数
  • 変数と型 - 変数の名前付け/ 変数の使用 /関数 / 変数の型/型変換のチェック
    input
  • 数値と文字列 - 整数 /浮動小数点数/複素数/文字列/文字列基本操作/文字エンコーディング
  • 演算子 - 算術演算子 / 代入演算子 / 比較演算子 / 論理演算子 / ID 演算子 / 演算子の優先順位
  • ユースケース - 華氏温度を摂氏温度/入力円に変換する半径は、周長と面積/入力年を計算し、うるう年であるかどうかを判断します

Day03 - 分岐構造

  • 分岐構造のシナリオ - 条件/インデント/コードブロック/フローチャート
  • if ステートメント - 単純 /-構造体 /-- 構造体 /入れ子
    if
    if
    else
    if
    elif
    else
    if
  • アプリケーションケース - ユーザー認証/ インペリアル単位はメートル単位と交換 / サイコロを転がして何をすべきかを決定する / 百分率成績変換階層 / セグメント関数評価 / 入力 3 辺の長さは、三角形を構成する場合は、周囲と面積を計算します

Day04 - ループ構造

  • ループ構造のシナリオ - 条件/インデント/コードブロック/フローチャート
  • while ループ - 基本構造 /ステートメント /ステートメント/ステートメント
    break
    continue
  • for ループ - 基本構造 /型/ループ内の分岐構造 / 入れ子になったループ / プログラムの早期終了
    range
  • アプリケーションケース - 1〜100合計/判定素数/推測デジタルゲーム/プリントナインナインテーブル/プリント三角形パターン/サルは桃を食べる/百金百鶏

Day05 - プログラム ロジックを構築します

  • 古典的なケース:スイセン数/百ドル百鶏/クラップギャンブルゲーム
  • 練習トピック:フィボナッチ数列/完璧数/素数

Day06 - 関数とモジュールの使用

  • 関数の役割 - コードの悪い味/ 関数で汎用モジュールをカプセル化します
  • 関数の定義 - キーワード / 関数名 / 引数リスト / ステートメント / カスタム関数の呼び出し
    def
    return
  • 関数の呼び出し - Python 組み込み関数 / モジュールと関数のインポート
  • 関数の引数 - デフォルト引数 / 可変引数 / キーワード引数 / 名前付きキーワード引数
  • 関数の戻り値 - 戻り値なし / 単一の値を返す / 複数の値を返します
  • スコープの問題 - ローカル スコープ /入れ子になったスコープ/グローバル スコープ/組み込みスコープ/およびスコープ関連のキーワード
  • モジュール管理関数 - モジュールの概念 / カスタムモジュールで関数を管理する / 名前付けが競合した場合 (同じモジュールと異なるモジュール)

Day07 - 文字列と一般的なデータ構造

  • 文字列の使用 - 長さの計算 / 添字演算 / スライス / 一般的な方法
  • リストの基本的な使用法 - リストの定義 / 次の表を使用して要素にアクセスする / 下付き文字が境界を越える / 要素を追加 / 要素を削除する / 要素を変更する / スライス / ループトラバース
  • リストの一般的な操作 - 接続/コピー(要素とコピー配列のコピー)/長さ/ソート/反転/ルックアップ
  • リストの生成 - 数値リストの作成 / 式の生成 / ジェネレーターを使用します
    range
  • タプルの使用 - タプルの定義 / タプルの値の使用 / タプル変数の変更 / タプルとリスト変換
  • コレクションの基本的な使用法 - コレクションとリストの違い / コレクションの作成 / 要素の追加 / 要素の削除 / 空にします
  • コレクションの一般的な操作 - 交差/ 和セット / 差セット / 対称差 / サブセット / スーパーセット
  • 辞書の基本的な使用法 - 辞書の特徴 / 辞書の作成 / 要素の追加 / 要素の削除 / 値の取得 / 空にする
  • ディクショナリは、一般的な操作 - メソッド /メソッド /メソッド /メソッド /メソッドを使用します
    keys
    values
    items
    setdefault
  • 基本的な演習 - ランニングライト効果/ リストは、最大要素を見つける / テストのスコアの平均スコアをカウント / Fibonacci数列 / ヤンフイ三角形
  • 包括的なケース - 2色のボールの選択番号/井文字チェス

Day08 - オブジェクト指向プログラミングの基礎

  • クラスとオブジェクト - クラス /オブジェクト /オブジェクト指向の他の関連概念は何ですか
  • クラスの定義 - 基本構造/プロパティとメソッド/コンストラクタ/デストラクタ/メソッド
    __str__
  • オブジェクトの使用 - オブジェクトの作成 / オブジェクトにメッセージを送信します
  • オブジェクト指向の4つの柱 - 抽象/カプセル化/継承/ポリモーフィック
  • 基礎演習 - 学生クラスの定義 / クロッククラスの定義 / グラフィッククラスの定義 / 自動車クラスの定義

Day09 - オブジェクト指向のステップ

  • プロパティ - クラスプロパティ / インスタンスプロパティ / プロパティアクセサー / プロパティモディファイヤ / プロパティリムーバー / 使用
    __slots__
  • クラス内のメソッド - インスタンス メソッド / クラス メソッド / 静的メソッド
  • 演算子のオーバーロード -
    __add__
    /
    __sub__
    /
    __or__
    /
    __getitem__
    /
    __setitem__
    /
    __len__
    /
    __repr__
    /
    __gt__
    /
    __lt__
    /
    __le__
    /
    __ge__
    /
    __eq__
    /
    __ne__
    /
    __contains__
  • クラス (オブジェクト) 間の関係 - 関連付け/継承/依存関係
  • 継承とポリモーフィズム - 継承/継承の構文は何ですか / 親クラスメソッドの呼び出し / メソッドのオーバーライド / 型判定 / 多重継承 / ダイヤモンド継承 (ダイヤモンド継承) と C3 アルゴリズム
  • 包括的なケース - 給与決済システム/書籍自動割引システム/カスタムスコアクラス

Day10 - グラフィカルユーザーインターフェイスとゲーム開発

  • 開発 GUI プログラムを使用します
    tkinter
  • 三者ライブラリを使用してゲーム アプリを開発します
    pygame
  • "大きなボールは小さなボールを食べる"ゲーム

Day11 - ファイルと例外

  • ファイルの読み取り - ファイル全体/プログレッシブ読み取り/ファイルパスを読み取ります
  • ファイルの書き込み - 上書き書き / 追加書き込み / テキストファイル / バイナリ
  • 例外処理 - 例外メカニズムの重要性 /-コード ブロック /コード ブロック /コード ブロック /組み込み例外タイプ /例外スタック /ステートメント
    try
    except
    else
    finally
    raise
  • データ永続化 - CSV ファイルの概要 /モジュールの適用 /JSON データ形式/モジュールの適用
    csv
    json

Day12 - 文字列と正規表現

  • 文字列の高度な操作 - エスケープ文字 / 元の文字列 / 複数行文字列 / 演算子 / メソッド / メソッド / メソッド / 関連メソッド / モジュール / 不変文字列と可変文字列 / の使用
    in
    not in
    is_xxx
    join
    split
    strip
    pyperclip
    StringIO
  • 正規表現入門 - 正規表現の役割 / メタ文字 / エスケープ / 量詞 / グループ化 / ゼロ幅アサーション / 欲張りな一致と遅延マッチングの怠惰 / モジュールを使用した正規表現操作 (一致、検索、置換、キャプチャ)
    re
  • 正規表現 - モジュール /関数 /およびメソッド /メソッド /メソッド /およびメソッド /およびメソッド /メソッド /メソッドを使用します
    re
    compile
    group
    groups
    match
    search
    findall
    finditer
    sub
    subn
    split
  • ユース ケース - 正規表現を使用して入力文字列を検証します

Day13 - プロセスとスレッド

  • プロセスとスレッドの概念 - プロセス/スレッド/マルチスレッドのシナリオは何ですか
  • プロセス - 関数 /モジュール /プロセス プール /プロセス間通信を使用します
    fork
    multiprocessing
  • スレッド -モジュール /クラス /クラス /クラス /スレッド プールを使用します
    threading
    Thread
    RLock
    Condition

Day14 - ネットワークプログラミングの概要とネットワークアプリケーション開発

  • コンピュータネットワークの基礎 - コンピュータネットワーク開発の歴史 / "TCP-IP"モデル / IPアドレス / ポート / プロトコル / その他の関連概念
  • ネットワーク アプリケーション モード - "クライアント-サーバー" モード / "ブラウザ サーバー" モード
  • HTTP プロトコルに基づくネットワーク リソースへのアクセス - ネットワーク API の概要 / アクセス URL / 三者ライブラリ / JSON 形式のデータの解決
    requests
  • Python ネットワーク プログラミング - ソケットの概念 /モジュール /関数 / TCP サーバーの作成 / TCP クライアントの作成 / UDP サーバーの作成 / UDP クライアントの作成
    socket
    socket
  • 電子メール - SMTP プロトコル / POP3 プロトコル / IMAP プロトコル /モジュール /モジュール /モジュール /モジュール
    smtplib
    poplib
    imaplib
  • SMS サービス - SMS サービス ゲートウェイを呼び出します

Day15 - 画像とドキュメント処理

  • Pillowで画像を処理する - 画像の読み取り/書き込み/画像合成/ジオメトリ変換/カラー変換/フィルタ効果
  • Word 文書の読み取りと書き込み - テキスト コンテンツの処理 /段落/ヘッダーとフッター/スタイルの処理
  • Excelファイルの読み取りと書き込み -
    xlrd
    /
    xlwt
    /
    openpyxl

Day16~Day20 -Python 言語は上位に進んでいる

  • 一般的なデータ構造
  • 関数の高度な使用 - "一流市民"/高次関数/ラムダ関数/スコープとクロージャ/デコレータ
  • オブジェクト指向の高度な知識 - "3 つの柱" / クラスとクラスの関係 / ガベージ コレクション / マジック プロパティとメソッド / 混合 / メタクラス / オブジェクト指向設計原則 / GoF デザイン パターン
  • 反復子とジェネレータ - 関連するマジックメソッド / ジェネレータを作成する2つの方法 /
  • 同時実行プログラミングと非同期プログラミング - マルチスレッド/マルチプロセス/非同期IO /およびt
    async
    awai

Day21~30 - Web フロントエンドの概要

  • HTML タグでページ コンテンツをホストします
  • CSS を使用してページをレンダリングします
  • JavaScript を使用して対話型の動作を処理します
  • jQuery の概要と改善
  • Vue.jsはじめに
  • Element の使用
  • Bootstrapの使用

Day31~35 - Linuxオペレーティングシステムを再生します

  • オペレーティングシステムの歴史とLinuxの概要
  • Linux の基本コマンド
  • Linux のユーティリティ
  • Linux のファイルシステム
  • Vim エディタのアプリ
  • 環境変数とシェルプログラミング
  • ソフトウェアのインストールとサービスの構成
  • ネットワーク アクセスと管理
  • その他の関連コンテンツ

Day36~40 - データベースの基礎と進歩

  • リレーショナル データベースの概要
  • MySQL のインストールと使用
  • SQL の使用
  • DDL - データ定義言語 -
    create
    /
    drop
    /
    alter
  • DML - データ操作言語 -
    insert
    /
    delete
    /
    update
  • DQL - データクエリ言語 -
    select
  • DCL - データ制御言語 -
    grant
    /
    revoke
  • MySQL の新機能
  • ウィンドウ関数の適用
  • JSON データ型
  • 関連する知識
  • データの整合性と一貫性
  • ビュー、関数、プロシージャ、トリガー
  • トランザクションとロック
  • 実行プランとインデックス
  • パラダイム理論と反パラダイムデザイン
  • Python で MySQL を操作します

Day41-55 - 実戦Django

Day41 -Django クイックスタート

  • Web アプリの動作メカニズム
  • HTTP 要求と応答
  • Django フレームワークの概要
  • 5分ですぐに始めます

Day42 - 詳細なモデル

  • リレーショナル データベース構成
  • ORM を使用して、モデルに対する CRUD 操作を完了します
  • バックグラウンドの使用を管理します
  • Django モデルのベスト プラクティス
  • モデル定義参照

Day43 - 静的リソースと Ajax 要求

  • 静的リソースを読み込みます
  • Ajax の概要
  • Ajax を使用して投票機能を実装します

Day44 - クッキーとSession

  • ユーザー 追跡を実装します
  • クッキーとsessionの関係
  • Django フレームワークによるsessionのサポート
  • ビュー関数の Cookie の読み取り/書き込み操作

Day45 - レポートとログ

  • 応答ヘッダーを変更します
    HttpResponse
  • 大きなファイルを処理するために使用します
    StreamingHttpResponse
  • Excel レポートの生成を使用します
    xlwt
  • PDF レポートの生成を使用します
    reportlab
  • ECharts を使用してフロントエンド グラフを生成します

Day46 - ログとデバッグツールバー

  • ログを構成します
  • Django-Debug-Toolbar を設定します
  • ORM コードを最適化します

Day47 - ミドルウェアのアプリケーション

  • ミドルウェアとは
  • Django フレームワークに配置されたミドルウェア
  • ミドルウェアとそのシナリオをカスタマイズします

Day48 - フロントとバックエンドの分離開発の概要

  • JSON 形式のデータを返します
  • Vue.jsでページをレンダリングします

Day49 -RESTful アーキテクチャと DRF の概要

Day50 -RESTful アーキテクチャと DRF ステップアップ

Day51 - キャッシュを使用します

  • ウェブサイトの最適化の最初の法則

  • Django プロジェクトで Redis を使用してキャッシュ サービスを提供します

  • ビュー関数でキャッシュを読み書きします

  • デコレータを使用してページ キャッシュを実装します

  • データ インターフェイスのキャッシュ サービスを提供します

Day52 - サードパーティ製プラットフォームへのアクセス

  • ファイル アップロード フォーム コントロールと画像ファイルのプレビュー
  • サーバー側でアップロードされたファイルの処理方法

Day53 - 非同期タスクとタイミング タスク

  • ウェブサイトの最適化の第二法則
  • メッセージ キュー サービスを構成します
  • プロジェクトで Celery を使用してタスクを非同期化します
  • プロジェクトで Clery を使用して、時間指定タスクを実装します

Day54 - 単体テスト

Day55 - プロジェクトがオンラインになります

  • Python での単体テスト
  • Django フレームワークによる単体テストのサポート
  • バージョン管理システムを使用します
  • uWSGI を設定して使用します
  • 動きの分離とNginx構成
  • HTTPS を設定します
  • ドメイン名解決を構成します

Day56~60 - FastAPI を使用してデータ インターフェイスを開発します

  • FastAPI は 5 分間開始します
  • 要求と応答
  • リレーショナル データベースにアクセスします
  • 依存関係の挿入
  • ミドルウェア
  • 非同期化
  • 仮想化の展開 (Docker)
  • プロジェクトの実戦:車両違反照会項目

Day61~65 - クローラ開発

Day61 - ネットワークデータ集録の概要

  • ネットワーククローラの概念とその応用分野
  • ネットクローラの合法性を探る
  • ネットワーククローラのための関連ツールを開発する
  • クローラプログラムの構成

Day62 - データのクロールと解決

Day63 - Python での同時プログラミング

Day64 - Selenium を使用して Web ページの動的コンテンツをクロールします

Day65 - クローラフレームScrapyの紹介

Day66~80 - データ分析

Day66 - データ分析の概要

Day67 - 環境の準備

Day68 -NumPyのアプリケーション-1

Day69 -NumPyのアプリケーション-2

Day70 -Pandas のアプリケーション-1

Day71 -Pandas のアプリケーション-2

Day72 -Pandas のアプリケーション-3

Day73 - Pandas的应用-4

Day74 - Pandas的应用-5

Day75 - 数据可视化-1

Day76 - 数据可视化-2

Day77 - 概率统计基础

Day78 - 方差分析和参数估计

Day79 - 相关和回归

Day80 - 数据分析方法论

Day81~90 - 机器学习和深度学习

Day81 - 机器学习基础

Day82 - k最近邻分类

Day83 - 决策树

Day84 - 贝叶斯分类

Day85 - 支持向量机

Day86 - K-均值聚类

Day87 - 回归分析

Day88 - 深度学习入门

Day89 - PyTorch概述

Day90 - PyTorch实战

Day91~100 - 团队项目开发

第91天:团队项目开发的问题和解决方案

  1. 软件过程模型

    • 经典过程模型(瀑布模型)

      • 可行性分析(研究做还是不做),输出《可行性分析报告》。
      • 需求分析(研究做什么),输出《需求规格说明书》和产品界面原型图。
      • 概要设计和详细设计,输出概念模型图(ER图)、物理模型图、类图、时序图等。
      • 编码 / 测试。
      • 上线 / 维护。

      瀑布模型最大的缺点是无法拥抱需求变化,整套流程结束后才能看到产品,团队士气低落。

    • 敏捷开发(Scrum)- 产品所有者、Scrum Master、研发人员 - Sprint

      • 产品的Backlog(用户故事、产品原型)。
      • 计划会议(评估和预算)。
      • 日常开发(站立会议、番茄工作法、结对编程、测试先行、代码重构……)。
      • 修复bug(问题描述、重现步骤、测试人员、被指派人)。
      • 发布版本。
      • 评审会议(Showcase,用户需要参与)。
      • 回顾会议(对当前迭代周期做一个总结)。

      补充:敏捷软件开发宣言

      • 个体和互动 高于 流程和工具
      • 工作的软件 高于 详尽的文档
      • 客户合作 高于 合同谈判
      • 响应变化 高于 遵循计划

      角色:产品所有者(决定做什么,能对需求拍板的人)、团队负责人(解决各种问题,专注如何更好的工作,屏蔽外部对开发团队的影响)、开发团队(项目执行人员,具体指开发人员和测试人员)。

      准备工作:商业案例和资金、合同、憧憬、初始产品需求、初始发布计划、入股、组建团队。

      敏捷团队通常人数为8-10人。

      工作量估算:将开发任务量化,包括原型、Logo设计、UI设计、前端开发等,尽量把每个工作分解到最小任务量,最小任务量标准为工作时间不能超过两天,然后估算总体项目时间。把每个任务都贴在看板上面,看板上分三部分:to do(待完成)、in progress(进行中)和done(已完成)。

  2. 项目团队组建

    • 团队的构成和角色

      说明:谢谢付祥英女士帮助我绘制了下面这张精美的公司组织架构图。

      company_architecture

    • 编程规范和代码审查(、)

      flake8
      pylint

    • Python中的一些“惯例”(请参考《Python惯例-如何编写Pythonic的代码》

    • 影响代码可读性的原因:

      • 代码注释太少或者没有注释
      • 代码破坏了语言的最佳实践
      • 反模式编程(意大利面代码、复制-黏贴编程、自负编程、……)
  3. 团队开发工具介绍

    请参考《团队项目开发的问题和解决方案》

项目选题和理解业务
  1. 选题范围设定

    • CMS(用户端):新闻聚合网站、问答/分享社区、影评/书评网站等。

    • MIS(用户端+管理端):KMS、KPI考核系统、HRS、CRM系统、供应链系统、仓储管理系统等。

    • App后台(管理端+数据接口):二手交易类、报刊杂志类、小众电商类、新闻资讯类、旅游类、社交类、阅读类等。

    • 其他类型:自身行业背景和工作经验、业务容易理解和把控。

  2. 需求理解、模块划分和任务分配

    • 需求理解:头脑风暴和竞品分析。
    • 模块划分:画思维导图(XMind),每个模块是一个枝节点,每个具体的功能是一个叶节点(用动词表述),需要确保每个叶节点无法再生出新节点,确定每个叶子节点的重要性、优先级和工作量。
    • 任务分配:由项目负责人根据上面的指标为每个团队成员分配任务。

  3. 制定项目进度表(每日更新)

    模块 功能 人员 状态 完成 工时 计划开始 实际开始 计划结束 实际结束 备注
    评论 添加评论 王大锤 正在进行 50% 4 2018/8/7 2018/8/7
    删除评论 王大锤 等待 0% 2 2018/8/7 2018/8/7
    查看评论 白元芳 正在进行 20% 4 2018/8/7 2018/8/7 需要进行代码审查
    评论投票 白元芳 等待 0% 4 2018/8/8 2018/8/8
  4. OOAD和数据库设计

  • UML(统一建模语言)的类图

    uml

  • 通过模型创建表(正向工程),例如在Django项目中可以通过下面的命令创建二维表。

    python manage.py makemigrations app
    python manage.py migrate
  • 使用PowerDesigner绘制物理模型图。

  • 通过数据表创建模型(反向工程),例如在Django项目中可以通过下面的命令生成模型。

    python manage.py inspectdb > app/models.py

第92天:Docker容器详解

  1. Docker简介
  2. 安装Docker
  3. 使用Docker创建容器(Nginx、MySQL、Redis、Gitlab、Jenkins)
  4. 构建Docker镜像(Dockerfile的编写和相关指令)
  5. 容器编排(Docker-compose)
  6. 集群管理(Kubernetes)

第93天:MySQL性能优化

第94天:网络API接口设计

第95天:[使用Django开发商业项目](./Day91-100/95.使用Django开发商业项 目.md)

项目开发中的公共问题
  1. 数据库的配置(多数据库、主从复制、数据库路由)
  2. 缓存的配置(分区缓存、键设置、超时设置、主从复制、故障恢复(哨兵))
  3. 日志的配置
  4. 分析和调试(Django-Debug-ToolBar)
  5. 好用的Python模块(日期计算、图像处理、数据加密、三方API)
REST API设计
  1. RESTful架构
  2. API接口文档的撰写
  3. django-REST-framework的应用
项目中的重点难点剖析
  1. 使用缓存缓解数据库压力 - Redis
  2. 使用消息队列做解耦合和削峰 - Celery + RabbitMQ

第96天:软件测试和自动化测试

单元测试
  1. 测试的种类
  2. 编写单元测试(、、、、、……)
    unittest
    pytest
    nose2
    tox
    ddt
  3. 测试覆盖率()
    coverage
Django项目部署
  1. 部署前的准备工作
    • 关键设置(SECRET_KEY / DEBUG / ALLOWED_HOSTS / 缓存 / 数据库)
    • HTTPS / CSRF_COOKIE_SECUR / SESSION_COOKIE_SECURE
    • 日志相关配置
  2. Linux常用命令回顾
  3. Linux常用服务的安装和配置
  4. uWSGI/Gunicorn和Nginx的使用
    • Gunicorn和uWSGI的比较
      • 对于不需要大量定制化的简单应用程序,Gunicorn是一个不错的选择,uWSGI的学习曲线比Gunicorn要陡峭得多,Gunicorn的默认参数就已经能够适应大多数应用程序。
      • uWSGI支持异构部署。
      • 由于Nginx本身支持uWSGI,在线上一般都将Nginx和uWSGI捆绑在一起部署,而且uWSGI属于功能齐全且高度定制的WSGI中间件。
      • 在性能上,Gunicorn和uWSGI其实表现相当。
  5. 使用虚拟化技术(Docker)部署测试环境和生产环境
性能测试
  1. AB的使用
  2. SQLslap的使用
  3. sysbench的使用
テストを自動化します
  1. シェルと Python を使用した自動テスト
  2. Selenium を使用して自動テストを実装します
    • Selenium IDE
    • Selenium WebDriver
    • Selenium Remote Control
  3. テストツールRobot Frameworkの紹介

97日目:eコマースのウェブサイトの技術的なポイントの分析

98 日目: プロジェクト展開のアップラインとパフォーマンス チューニング

  1. MySQL データベースのチューニング
  2. Web サーバーのパフォーマンスの最適化
    • Nginx ロード バランシング構成
    • Keepalived は可用性が高い実装です
  3. コード パフォーマンス チューニング
    • マルチスレッド
    • 非同期化
  4. 静的リソース アクセスの最適化
    • クラウド ストレージ
    • CDN

99日目:インタビューの公開質問

100日目:Pythonのインタビューの質問の実録