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 ビデオが必要な場合は、"Station B" で"Getting Started with Python Zero Basics" を検索できます. この一連のビデオは、講義中に録画されたクラス内ビデオです. 助けてください, 皆さんにメッセージを残してください.コメント、連発投稿。学習後、何か得した気分の仲間は「ワンクリック三連発」でUPマスター(千豊パイソン)を応援できます。国内のユーザーが GitHub にアクセスするのが遅い場合, 彼らは私の Zhihu アカウント Python -Jack に注意を払うことができます.上記「ゼロから Python を学ぶ」コラムは初心者に適しています. 他のコラムも継続的に作成および更新されています.注意といいねのコメント。

作成するのは簡単ではありません。ご支援いただきありがとうございます。これらのお金は個人消費 (コーヒーの購入など) には使用されませんが、Tencent Charity、Meituan Charity、Shuidichou (クリックして寄付について学びましょう) )。QQ 学習グループに参加する必要がある場合は、以下の QR コードをスキャンして、3 つのグループに 1 つ追加し、繰り返しグループに入らないでください。学習グループでは、学習リソース質問への回答を提供します.Python体験教室業界公開講座がある場合は、グループ内で事前にお知らせしますので、ぜひご参加ください.

プロジェクトの「Day80~90」の部分はまだ作成中です。作者は通常、ドキュメントを書くのにあまり時間を割くことができないため、更新速度は比較的遅くなりますが、ご了承ください。

Python の応用分野とキャリア開発分析

簡単に言えば、Python は「エレガント」で「明快」で「シンプル」なプログラミング言語です。

  • 学習曲線が低く、専門家でなくても始めることができます
  • 強力なエコシステムを備えたオープンソース システム
  • 解釈された言語、完璧なプラットフォームの移植性
  • オブジェクト指向および関数型プログラミングをサポートする動的型付け言語
  • コードは標準化されており、可読性が高い

Python は、次の分野で役立ちます。

  • バックエンド開発 - Python/Java/Go/PHP
  • DevOps - Python/シェル/Ruby
  • データ取得 - Python/C++/Java
  • クオンツトレーディング - Python / C++ / R
  • データ サイエンス - Python/R/Julia/Matlab
  • 機械学習 - Python/R/C++/Julia
  • 自動テスト - Python/シェル

Python 開発者として、個人の好みとキャリア計画に応じて、多くのキャリア分野から選択できます。

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

: 現在、データ分析とデータ マイニングは非常に人気のある方向です。これは、インターネット業界と従来の業界の両方で大量のデータが蓄積されており、あらゆる分野で既存のデータ値からより多くのビジネス インサイトを発見するデータ アナリストが必要であるためです。いわゆるデータ駆動型の意思決定である、企業の意思決定にデータ サポートを提供するため。

初心者向けのいくつかの提案:

  • 英語を仕事の言語にしましょう。
  • 練習は完璧を作る。
  • すべての経験は間違いから生まれます。
  • ヒルの 1 つにならないでください。
  • 傑出しているかアウトのどちらかです。

Day01~15 - Python言語基礎

Day01 - Python との初めての出会い

  • Python 入門 - Python の歴史 / Python の長所と短所 / Python の応用分野
  • プログラミング環境の構築 - Windows 環境 / Linux 環境 / MacOS 環境
  • ターミナルから Python プログラムを実行する - Hello, world /
    print
    function/run program
  • IDLE の使用 - インタラクティブ環境 (REPL) / 複数行のコードの記述 / プログラムの実行 / IDLE の終了
  • コメント - コメント / 単一行コメント / 複数行コメントの役割

Day02 -言語要素

  • プログラムと基底 - 命令とプログラム / フォン ノイマン マシン / 2 進数と 10 進数 / 8 進数と 16 進数
  • 変数と型 - 変数の命名 / 変数の使用 /
    input
    関数 / 変数の型の確認 / 型変換
  • 数値と文字列 - 整数 / 浮動小数点数 / 複素数 / 文字列 / 基本的な文字列操作 / 文字エンコーディング
  • 演算子 - 数学演算子 / 代入演算子 / 比較演算子 / 論理演算子 / 恒等演算子 / 演算子の優先順位
  • 応用事例 - 華氏を摂氏に変換する / 円の半径を入力して周囲と面積を計算する / 年を入力して閏年かどうかを判断する

Day03 -ブランチ構造

  • 分岐構造の適用シナリオ - 条件付き/インデント/コード ブロック/フローチャート
  • if文 - 単純
    if
    /
    if
    -
    else
    構造 /
    if
    -
    elif
    -
    else
    構造 / 入れ子
    if
  • 応用例 - ユーザー認証 / インペリアル単位とメートル単位の交換 / サイコロを振って何をすべきかを決定する / パーセンテージを等級に変換する / 区分関数を評価する / 3 辺の長さを入力し、三角形を形成できる場合は周囲と面積を計算する

Day04 -ループ構造

  • ループ構造の適用シナリオ - 条件付き / インデント / コードブロック / フローチャート
  • while ループ - 基本構造/
    break
    ステートメント/
    continue
    ステートメント
  • for ループ - 基本構造 /
    range
    型 / ループ内の分岐構造 / 入れ子ループ / プログラムの早期終了
  • 応用事例 - 1~100の足し算 / 素数判定 / 数当てゲーム / 九九表の印刷 / 三角形の印刷 / 猿が桃を食べる / 百貨 百鶏

Day05 -コンストラクター ロジック

  • 古典的なケース: 水仙の数字 / 百貨百鶏 / クラップス ギャンブル ゲーム
  • 演習トピック: フィボナッチ数列 / 完全数 / 素数

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

  • What Functions Dos - 悪いコードの匂い / 機能モジュールを関数でカプセル化する
  • 関数の定義 -
    def
    キーワード/関数名/パラメーター リスト/
    return
    ステートメント/カスタム関数の呼び出し
  • 関数の呼び出し - Python 組み込み関数 / モジュールと関数のインポート
  • 関数のパラメーター - デフォルト パラメーター / 可変引数パラメーター / キーワード パラメーター / 名前付きキーワード パラメーター
  • 関数の戻り値 - 戻り値なし / 単一の値を返す / 複数の値を返す
  • スコープの問題 - ローカル スコープ / ネストされたスコープ / グローバル スコープ / ビルトイン スコープ / スコープ関連のキーワード
  • モジュールを使用した関数の管理 - モジュールの概念 / カスタム モジュールを使用した関数の管理 / 名前が競合するとどうなるか (同じモジュールと異なるモジュール)

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

  • 文字列の使用 - 長さの計算 / 添字付け / スライス / 一般的な方法
  • リストの基本的な使い方 - リストを定義する / 次の表で要素にアクセスする / 範囲外の添字を付ける / 要素を追加する / 要素を削除する / 要素を変更する / スライスする / ループする
  • 一般的な操作のリスト - 結合/コピー (要素のコピーと配列のコピー)/長さ/並べ替え/反転/検索
  • リストの生成 -
    range
    数値のリストを作成する / 式を生成する / ジェネレーターを使用して
  • タプルの使用 - タプルを定義する / タプルで値を使用する / タプル変数を変更する / タプルとリストの変換
  • セットの基本的な使い方 - セットとリストの違い / セットを作成する / 要素を追加する / 要素を削除する / 空にする
  • 一般的な集合演算 - 交差 / 和集合 / 差分集合 / 対称差分 / 部分集合 / スーパー集合
  • 辞書の基本的な使い方 - 辞書の機能 / 辞書の作成 / 要素の追加 / 要素の削除 / 値の取得 / クリア
  • 辞書共通操作 -
    keys
    メソッド /
    values
    メソッド /
    items
    メソッド /
    setdefault
    メソッド
  • 基本的な演習 - マーキー効果 / リスト内の最大の要素を見つける / 統計テスト スコアの平均スコア / フィボナッチ数列 / ヤン ホイの三角形
  • 総合ケース 二色ボール選択・三目並べ

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

  • クラスとオブジェクト - クラスとは / オブジェクトとは / オブジェクト指向のその他の関連概念
  • クラスの定義 - 基本構造 / プロパティとメソッド / コンストラクタ / デストラクタ /
    __str__
    メソッド
  • オブジェクトの操作 - オブジェクトの作成 / オブジェクトへのメッセージの送信
  • オブジェクト指向の 4 つの柱 - 抽象化 / カプセル化 / 継承 / ポリモーフィズム
  • 基本演習 - 学生クラスの定義/時計クラスの定義/グラフィックス クラスの定義/自動車クラスの定義

Day09 -高度なオブジェクト指向

  • 属性 - クラス属性 / インスタンス属性 / 属性アクセサー / 属性修飾子 / 属性削除子 / 使用
    __slots__
  • クラス内のメソッド - インスタンス メソッド / クラス メソッド / 静的メソッド
  • 演算子のオーバーロード-
    __add__
    /
    __sub__
    /
    __or__
    /
    __getitem__
    /
    __setitem__
    /
    __len__
    /
    __repr__
    /
    __gt__
    /
    __lt__
    /
    __le__
    /
    __ge__
    /
    __eq__
    /
    __ne__
    __contains__
  • クラス(オブジェクト)間の関係 - 関連付け/継承/依存
  • 継承とポリモーフィズム - 継承とは / 継承の構文 / 親クラスのメソッドの呼び出し / メソッドのオーバーライド / 型決定 / 多重継承 / ダイヤモンド継承 (ダイヤモンド継承) と C3 アルゴリズム
  • 総合事例 - 給与精算システム / 図書自動割引システム / カスタムスコアクラス

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

  • tkinter
    GUI プログラムの開発に使用
  • pygame
    サードパーティ ライブラリを使用したゲーム アプリケーションの開発
  • 「大きなボールが小さなボールを食べる」ゲーム

Day11 -ドキュメントと例外

  • read file - ファイル全体 / 行ごと / ファイルパスを読み取る
  • write file - 上書き書き込み / 追記書き込み / テキストファイル / バイナリファイル
  • 例外処理 - 例外メカニズムの重要性 /
    try
    -
    except
    コード ブロック /
    else
    コード ブロック /
    finally
    コード ブロック / 組み込み例外タイプ / 例外スタック /
    raise
    ステートメント
  • データの永続性 - CSV ファイルの概要 /
    csv
    モジュール アプリケーション / JSON データ形式 /
    json
    モジュール アプリケーション

Day12 -文字列と正規表現

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

Day13 -プロセスとスレッド

  • プロセスとスレッドの概念 - プロセスとは / スレッドとは / マルチスレッドのアプリケーション シナリオ
  • プロセス
    fork
    関数/
    multiprocessing
    モジュール/プロセス プール/プロセス間通信の使用
  • スレッドの使用 -
    threading
    module/
    Thread
    class/
    RLock
    class/
    Condition
    class/threadpool

Day14 - Web プログラミングと Web アプリケーション開発の紹介

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

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

  • Pillowで絵を加工 - 絵の読み書き/絵の合成/幾何変換/色変換/フィルター効果
  • Word 文書の読み書き - テキスト コンテンツの処理 / 段落の処理 / ヘッダーとフッター / スタイル
  • Excel ファイルの読み取りと書き込み-
    xlrd
    //
    xlwt
    openpyxl

Day16~Day20 - Python言語上級

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

Day21~30 - Web フロントエンド入門

  • HTML タグを含むホスト ページ コンテンツ
  • CSS でページをレンダリングする
  • JavaScript を使用したインタラクティブな動作の処理
  • jQuery の開始と改善
  • Vue.js を使い始める
  • 要素の使用
  • ブートストラップの使用

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 -実際のジャンゴ

Day41 - Django入門

  • Web アプリケーションの動作メカニズム
  • HTTP リクエストとレスポンス
  • Django フレームワークの概要
  • 5分で始める

Day42 -詳細モデル

  • リレーショナル データベースの構成
  • ORM を使用してモデルの CRUD 操作を完了する
  • 経営経歴の活用
  • Django モデルのベスト プラクティス
  • モデル定義リファレンス

Day43 -静的リソースと Ajax リクエスト

  • 静的リソースをロードする
  • Ajax の概要
  • 投票機能をAjaxで実装

Day44 - Cookie とセッション

  • ユーザー追跡を実装する
  • クッキーとセッションの関係
  • セッションに対する Django フレームワークのサポート
  • ビュー関数での Cookie の読み取りおよび書き込み操作

Day45 -レポートとログ

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

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

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

Day47 -ミドルウェアの適用

  • ミドルウェアとは
  • Django フレームワークに組み込まれたミドルウェア
  • カスタム ミドルウェアとその適用シナリオ

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

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

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

Day50 - RESTful アーキテクチャと DRF の進歩

Day51 -キャッシュを使用

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

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

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

  • デコレーターを使用したページのキャッシュ

  • データ インターフェイスにキャッシング サービスを提供する

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

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

Day53 -非同期タスクとスケジュールされたタスク

  • ウェブサイト最適化の第二法則
  • メッセージ キュー サービスの構成
  • Celery を使用して、プロジェクトでタスクの非同期性を実現する
  • プロジェクトで Celery を使用してスケジュールされたタスクを実装する

Day54 -単体テスト

Day55 -プロジェクトが稼働

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

Day56~60 - FastAPI を使用したデータ インターフェイスの開発

  • 5 分で FastAPI を使い始める
  • リクエストとレスポンス
  • リレーショナル データベースへのアクセス
  • 依存性注入
  • ミドルウェア
  • 非同期
  • 仮想展開 (Docker)
  • プロジェクト戦闘: 車両違反照会プロジェクト

Day61~65 -爬虫類の開発

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

  • ウェブクローラーの概念とその応用分野
  • ウェブクローラーの合法性に関する議論
  • Web クローラーを開発するためのツール
  • クローラーの構成

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 - ANOVA とパラメータ推定

Day79 -関連性と回帰

Day80 -データ分析方法論

Day81~90 -機械学習と深層学習

Day81 -機械学習の基礎

Day82 - k 最近傍分類

Day83 -決定木

Day84 -ベイジアン分類

Day85 -サポート ベクター マシン

Day86 - K-Means クラスタリング

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(统一建模语言)的类图

    うーん

  • 通过模型创建表(正向工程),例如在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. シスベンチの利用
自動テスト
  1. シェルと Python による自動テスト
  2. Selenium による自動テスト
    • セレン IDE
    • Selenium WebDriver
    • セレンリモコン
  3. テストツール Robot Framework の紹介

97日目:ECサイトの技術ポイント分析

98 日目:プロジェクトの展開とパフォーマンスの調整

  1. MySQL データベースのチューニング
  2. Web サーバーのパフォーマンスの最適化
    • Nginx 負荷分散構成
    • Keepalived による高可用性の実現
  3. コードのパフォーマンス チューニング
    • マルチスレッド
    • 非同期
  4. 静的リソース アクセスの最適化
    • クラウドストレージ
    • CDN

99日目:面接でよくある質問

100 日目: Python のインタビューの質問の書き起こし