저자 : 루오 하오
참고 : 프로젝트 시작부터 8w+ 스타 획득까지 기본 부분(첫 15일 콘텐츠)이 초보자에게 어렵다는 피드백을 받았습니다. 이를 설명하는 지원 동영상이 있는 것이 좋습니다. 최근 콘텐츠의 기본 부분이 "Python-Core-50-Courses"라는 프로젝트로 리메이크되었습니다. 이 부분은 더 간단하고 대중적인 방식으로 재작성되었으며 초보자도 동영상 설명을 들을 수 있습니다. 이 새로운 창고를 좀 보세요. 국내 사용자가 GitHub에 액세스하는 속도가 느리면 내 Zhihu 계정 Python-Jack을 팔로우할 수 있습니다. 위의 "처음부터 Python 배우기"는 "데이터 사고 및 통계적 사고", "Python 기반"과 같은 다른 칼럼이 더 적합합니다. " '데이터 분석' 등도 지속적으로 생성되고 업데이트되고 있습니다. 모두 관심과 좋아요, 댓글 부탁드립니다.
학습 영상을 받고 싶은 친구들은 아래 QR 코드를 스캔해 위챗 미니 프로그램에 접속해 자신에게 적합한 콘텐츠가 있는지 확인할 수 있다. 모두가 고민하고 있는 머신러닝 콘텐츠는 저와 동료들이 모두를 위해 녹화한 미니프로그램에서 만나보실 수 있습니다.
학습 과정에서 어려운 문제가 발생하거나 관련 학습 리소스가 필요한 경우 다음 QQ 커뮤니케이션 그룹에 가입할 수 있습니다. 그룹에 반복적으로 가입하거나 그룹에 게시하지 마십시오. 광고 및 기타 포르노, 저속하거나 민감한 콘텐츠. 자기 관리가 부족하고 학습 비용을 지불해야 하는 경우 내 WeChat(jackfrued) 비공개 채팅을 추가하고 이름과 요구 사항을 메모해 주시면 학습 계획 및 진로 계획에 대한 몇 가지 지침을 제공해 드리겠습니다 .
Douyin과 Bilibili에 대한 지원 비디오가 지속적으로 업데이트되고 있습니다. 관심있는 친구들은 최근에 제 계정을 개설했습니다. 많은 지원을 바랍니다.
그동안 모두가 업데이트를 촉구해 왔던 '머신러닝과 딥러닝'은 개인 및 회사 사정으로 인해 중단되었습니다. 관련 내용은 추후 업데이트 예정이니 많은 관심과 양해 부탁드립니다.
간단히 말해서 Python은 "우아하고" "명확하며" "간단한" 프로그래밍 언어입니다.
학습 곡선이 낮아 전문가가 아니더라도 시작할 수 있습니다.
강력한 생태계를 갖춘 오픈소스 시스템
통역된 언어, 완벽한 플랫폼 이식성
객체 지향 및 함수형 프로그래밍을 지원하는 동적 유형 언어
코드는 고도로 표준화되어 있고 읽기 쉽습니다.
Python은 다음 분야에 유용합니다.
백엔드 개발 - Python/Java/Go/PHP
DevOps - Python/셸/Ruby
데이터 수집 - Python/C++/Java
퀀트 트레이딩 - Python/C++/R
데이터 과학 - Python/R/Julia/Matlab
기계 학습 - Python/R/C++/줄리아
자동화된 테스트 - Python/Shell
Python 개발자로서 개인 취향과 진로 계획에 따라 선택할 수 있는 채용 분야가 많습니다.
Python 백엔드 개발 엔지니어(서버, 클라우드 플랫폼, 데이터 인터페이스)
Python 운영 및 유지보수 엔지니어(자동 운영 및 유지보수, SRE, DevOps)
Python 데이터 분석가(데이터 분석, 비즈니스 인텔리전스, 디지털 운영)
Python 데이터 마이닝 엔지니어(머신러닝, 딥러닝, 알고리즘 전문가)
Python 크롤러 엔지니어
Python 테스트 엔지니어(자동 테스트, 테스트 개발)
참고 : 현재 데이터 분석과 데이터 마이닝은 매우 인기 있는 방향입니다 . 왜냐하면 인터넷 산업과 전통 산업 모두 많은 양의 데이터를 축적했고, 모든 계층에서는 기존 데이터에서 더 많은 비즈니스 통찰력을 발견하기 위해 데이터 분석가가 필요하기 때문입니다. 소위 데이터 기반 의사결정이라고 불리는 기업의 의사결정을 위한 데이터 지원을 제공합니다.
초보자를 위한 몇 가지 제안:
영어를 업무 언어로 삼으세요.
연습이 완벽해집니다.
모든 경험은 실수에서 비롯됩니다.
거머리가 되지 마십시오.
뛰어난 또는 아웃(뛰어난 또는 아웃)입니다.
Python 입문 - Python의 역사/Python의 장점과 단점/Python의 응용 분야
프로그래밍 환경 구축 - Windows 환경/Linux 환경/MacOS 환경
터미널에서 Python 프로그램 실행 - Hello, world / print
기능 / 프로그램 실행
IDLE 사용 - 대화형 환경(REPL) / 여러 줄의 코드 작성 / 프로그램 실행 / IDLE 종료
주석 - 주석/한줄 주석/여러줄 주석의 역할
프로그램 및 기본 - 지침 및 프로그램/폰 노이만 기계/2진수 및 10진수/8진수 및 16진수
변수 및 유형 - 변수 이름 짓기/변수의 사용/ input
함수/변수 유형 확인/유형 변환
숫자와 문자열 - 정수/부동 소수점 수/복소수/문자열/기본 문자열 연산/문자 인코딩
연산자 - 수학 연산자/할당 연산자/비교 연산자/논리 연산자/항등 연산자/연산자 우선 순위
적용 사례 - 화씨 온도를 섭씨 온도로 변환 / 원의 반지름을 입력하여 원주와 면적 계산 / 연도를 입력하여 윤년 여부 확인
분기 구조의 응용 시나리오 - 조건/들여쓰기/코드 블록/흐름도
if 문 - 단순 if
/ if
- else
구조/ if
- elif
- else
구조/중첩된 if
적용사례 - 사용자 인증/영국식 단위와 미터법 단위의 교환/주사위 굴려 무엇을 할지 결정/백분위수 점수를 등급 체계로 변환/조각별 함수 평가/삼각형이 가능한 경우 둘레와 면적 계산 형성된
루프 구조의 응용 시나리오 - 조건/들여쓰기/코드 블록/흐름도
while 루프 - 기본 구조/ break
문/ continue
문
for 루프 - 기본 구조/ range
유형/루프의 분기 구조/중첩 루프/프로그램 조기 종료
적용 사례 - 1~100 더하기 / 소수 구하기 / 숫자 맞추기 게임 / 99개의 테이블 인쇄하기 / 삼각형 패턴 인쇄하기 / 복숭아를 먹는 원숭이 / 수백 개의 동전과 수백 마리의 닭
고전적인 사례: 수선화 수/백 돈과 백 닭/크랩스 도박 게임
연습 문제: 피보나치 수열/완전수/소수
함수의 역할 - 코드의 악취/기능 모듈을 함수로 캡슐화하는 것
함수 정의 - def
키워드/함수 이름/매개변수 목록/ return
문/커스텀 함수 호출
함수 호출 - Python 내장 함수/모듈 및 함수 가져오기
함수 매개변수 - 기본 매개변수/변수 매개변수/키워드 매개변수/이름이 지정된 키워드 매개변수
함수의 반환 값 - 반환 값 없음 / 단일 값 반환 / 여러 값 반환
범위 문제 - 로컬 범위/중첩 범위/전역 범위/내장 범위/범위 관련 키워드
모듈 관리 기능 사용 - 모듈의 개념/사용자 정의 모듈 관리 기능 사용/이름 충돌(동일 모듈 및 다른 모듈)이 있을 때 발생하는 상황
문자열 활용 - 길이 계산/첨자 연산/슬라이싱/공통 방법
목록의 기본 사용법 - 목록 정의/다음 표를 사용하여 요소에 액세스/경계를 벗어난 첨자/요소 추가/요소 삭제/요소 수정/슬라이스/루프 트래버스
목록에 대한 일반적인 작업 - 연결/복사(요소 복사 및 배열 복사)/길이/정렬/역방향/검색
목록 생성 - range
사용하여 숫자 목록 생성/식 생성/생성기
튜플 사용 - 튜플 정의/튜플의 값 사용/튜플 변수 수정/튜플 및 목록 변환
집합의 기본 사용법 - 집합과 목록의 차이점/집합 만들기/요소 추가/요소 삭제/지우기
집합에 대한 일반적인 연산 - 교집합/합집합/차이/대칭 차이/부분 집합/상위 집합
사전의 기본 사용법 - 사전의 특징/사전 생성/요소 추가/요소 삭제/값 가져오기/지우기
일반적인 사전 작업 - keys
메서드/ values
메서드/ items
메서드/ setdefault
메서드
기본 연습문제 - 마키 효과/목록에서 가장 큰 요소 찾기/통계 테스트 점수의 평균 점수/피보나치 수열/양회삼각형
종합케이스 - 더블 컬러 볼 번호 선택/틱택토
클래스와 객체 - 클래스란 무엇인가/객체란 무엇인가/객체 지향의 기타 관련 개념
클래스 정의 - 기본 구조/속성 및 메서드/생성자/소멸자/ __str__
메서드
객체 사용 - 객체 생성/객체에 메시지 보내기
객체지향의 네 가지 기둥 - 추상화/캡슐화/상속/다형성
기본 연습 - 학생 클래스 정의/시계 클래스 정의/그래픽 클래스 정의/자동차 클래스 정의
속성 - 클래스 속성/인스턴스 속성/속성 접근자/속성 수정자/속성 삭제자/ __slots__
사용
클래스의 메서드 - 인스턴스 메서드/클래스 메서드/정적 메서드
연산자 오버로딩 - __add__
/ __sub__
/ __or__
/ __getitem__
/ __setitem__
/ __len__
/ __gt__
/ __lt__
/ __le__
/ __ge__
/ __ge__ / __eq__
/ __ne__
__contains__
__repr__
클래스(객체) 간의 관계 - 연관/상속/의존
상속과 다형성 - 상속이란 무엇인가/상속의 구문/부모 클래스 메서드 호출/메서드 재정의/유형 결정/다중 상속/다이아몬드 상속(다이아몬드 상속) 및 C3 알고리즘
사례종합-급여정산시스템/도서자동할인시스템/맞춤점수구분
tkinter
사용하여 GUI 프로그램 개발
pygame
타사 라이브러리를 사용하여 게임 애플리케이션 개발
"큰 공이 작은 공을 잡아먹는다" 게임
파일 읽기 - 전체 파일 읽기 / 한 줄씩 읽기 / 파일 경로
파일 쓰기 - 덮어쓰기/추가/텍스트 파일/바이너리 파일
예외 처리 - 예외 메커니즘의 중요성 / try
- 코드 블록 except
/ else
코드 블록 / finally
코드 블록 / 내장 예외 유형 / 예외 스택 / 문 raise
데이터 지속성 - CSV 파일 개요/ csv
모듈 적용/JSON 데이터 형식/ json
모듈 적용
문자열에 대한 고급 작업 - 이스케이프 문자/원래 문자열/여러 줄 문자열/ 연산자 in
not in
/ is_xxx
메서드/ join
및 split
메서드/ strip
관련 메서드/ pyperclip
모듈/불변 문자열 및 변수 문자열/ StringIO
사용
정규식 소개 - 정규식의 역할/메타 문자/이스케이프/정량자/그룹화/0폭 어설션/탐욕 일치 및 게으른 일치/ re
모듈을 사용하여 정규식 작업(일치, 검색, 바꾸기, 캡처) 구현
정규 표현식 사용 - 모듈 re
/함수 compile
/ group
및 groups
방법/ match
방법/ search
방법/ findall
및 finditer
방법/ sub
및 subn
방법/ split
방법
적용 사례 - 정규식을 사용하여 입력 문자열의 유효성을 검사합니다.
프로세스와 스레드의 개념 - 프로세스란 무엇인가 / 스레드란 무엇인가 / 멀티스레딩 응용 시나리오
프로세스 사용 - fork
기능/ multiprocessing
모듈/프로세스 풀/프로세스 간 통신
스레드 사용 - threading
모듈/ Thread
클래스/ RLock
클래스/ Condition
클래스/ 스레드 풀
컴퓨터 네트워크 기초 - 컴퓨터 네트워크 개발의 역사/"TCP-IP" 모델/IP 주소/포트/프로토콜/기타 관련 개념
네트워크 애플리케이션 모드 - "클라이언트-서버" 모드 / "브라우저-서버" 모드
HTTP 프로토콜을 기반으로 네트워크 리소스에 액세스 - 네트워크 API 개요/URL 액세스/타사 라이브러리 requests
/JSON 형식 데이터 구문 분석
Python 네트워크 프로그래밍 - 소켓의 개념/ socket
모듈/ socket
기능/TCP 서버 생성/TCP 클라이언트 생성/UDP 서버 생성/UDP 클라이언트 생성
이메일 - SMTP/POP3/IMAP/ smtplib
모듈/ poplib
모듈/ imaplib
모듈
SMS 서비스 - SMS 서비스 게이트웨이에 전화 걸기
Pillow를 이용한 그림 처리 - 그림 읽기 및 쓰기/그림 합성/기하학적 변형/색상 변환/필터 효과
Word 문서 읽기 및 쓰기 - 텍스트 내용/단락/머리글 및 바닥글 처리/스타일 처리
Excel 파일 읽기 및 쓰기 - xlrd
/ xlwt
/ openpyxl
일반적인 데이터 구조
함수의 고급 사용법 - "일류 시민" / 고차 함수 / 람다 함수 / 범위 및 클로저 / 데코레이터
객체지향에 대한 고급 지식 - "세 기둥" / 클래스 간의 관계 / 가비지 컬렉션 / 마법의 속성과 방법 / Mixing / 메타클래스 / 객체지향 설계 원리 / GoF 디자인 패턴
반복자와 생성기 - 관련 매직 메서드/생성기를 만드는 두 가지 방법/
동시 및 비동기 프로그래밍 - 멀티스레딩/다중 프로세스/비동기 IO/ async
및 awai
HTML 태그를 사용하여 페이지 콘텐츠 전달
CSS로 페이지 렌더링
JavaScript로 대화형 동작 처리
jQuery 시작하기 및 개선하기
Vue.js 시작하기
요소의 활용
부트스트랩 사용
운영체제 개발 이력 및 Linux 개요
리눅스 기본 명령어
Linux의 유틸리티
리눅스 파일 시스템
Vim 편집기 애플리케이션
환경 변수 및 쉘 프로그래밍
소프트웨어 설치 및 서비스 구성
네트워크 액세스 및 관리
기타 관련 콘텐츠
관계형 데이터베이스 개요
MySQL 소개
MySQL 설치
MySQL 기본 명령어
데이터베이스 및 테이블 구축
테이블 삭제 및 수정
삽입 작업
삭제 작업
업데이트 작업
투영 및 별칭
데이터 필터링
Null 값 처리
중복 제거
종류
집계 함수
중첩된 쿼리
그룹
테이블 조인
데카르트 곱
내부 조인
자연스러운 연결
외부 조인
창 기능
창 정의
순위 기능
액세스 기능
사용자 생성
권한 부여
권한 회수
JSON 유형
창 기능
공통 테이블 표현식
보다
사용 시나리오
보기 만들기
사용 제한
기능
내장 기능
사용자 정의 함수(UDF)
프로세스
생성 과정
호출 프로세스
실행 계획
인덱싱의 원리
색인 생성
보통지수
고유 인덱스
접두사 색인
복합지수
주의할 점
타사 라이브러리 설치
연결 만들기
커서 가져오기
SQL 문 실행
커서를 통해 데이터 가져오기
트랜잭션 커밋 및 롤백
연결 해제
ETL 스크립트 작성
하둡 생태계
하이브 개요
준비
데이터 유형
DDL 작업
DML 작업
데이터 쿼리
웹 애플리케이션 작동 메커니즘
HTTP 요청 및 응답
Django 프레임워크 개요
5분만에 빠르게 시작해보세요
관계형 데이터베이스 구성
ORM을 사용하여 모델에 대한 CRUD 작업 완료
경영 배경 활용
Django 모델 모범 사례
모델 정의 참조
정적 리소스 로드
아약스 개요
Ajax를 이용한 투표 기능 구현
사용자 추적 구현
쿠키와 세션의 관계
Django 프레임워크의 세션 지원
보기 함수의 쿠키 읽기 및 쓰기 작업
HttpResponse
를 통해 응답 헤더 수정
StreamingHttpResponse
사용하여 대용량 파일 처리
xlwt
사용하여 Excel 보고서 생성
reportlab
사용하여 PDF 보고서 생성
ECharts를 사용하여 프런트엔드 차트 생성
구성 로그
Django-Debug-Toolbar 구성
ORM 코드 최적화
미들웨어란?
Django 프레임워크 내장 미들웨어
사용자 정의 미들웨어 및 해당 애플리케이션 시나리오
JSON 형식으로 데이터를 반환합니다.
Vue.js로 페이지 렌더링
REST 개요
DRF 라이브러리 시작하기
프론트엔드와 백엔드를 별도로 개발
JWT의 적용
CBV 사용
데이터 페이징
데이터 필터링
웹사이트 최적화의 첫 번째 법칙
Redis를 사용하여 Django 프로젝트에서 캐싱 서비스 제공
보기 기능에서 캐시 읽기 및 쓰기
데코레이터를 사용하여 페이지 캐싱 구현
데이터 인터페이스에 대한 캐싱 서비스 제공
파일 업로드 양식 제어 및 이미지 파일 미리보기
서버 측에서 업로드된 파일을 처리하는 방법
웹사이트 최적화의 두 번째 법칙
메시지 대기열 서비스 구성
Celery를 사용하여 프로젝트에서 작업 비동기화 구현
Celery를 사용하여 프로젝트에서 예약된 작업 구현
Python의 단위 테스트
Django 프레임워크의 단위 테스트 지원
버전 관리 시스템을 사용하세요
uWSGI 구성 및 사용
동적 및 정적 분리 및 Nginx 구성
HTTPS 구성
도메인 이름 확인 구성
웹 크롤러의 개념과 응용분야
웹 크롤러의 합법성에 대한 논의
웹 크롤러 개발 관련 도구
크롤러 프로그램의 구성
requests
타사 라이브러리를 사용하여 데이터 캡처 구현
페이지를 구문 분석하는 세 가지 방법
정규식 구문 분석
XPath 구문 분석
CSS 선택기 구문 분석
멀티스레딩
다중 프로세스
비동기 I/O
셀레늄 설치
페이지 로드
요소 찾기 및 사용자 행동 시뮬레이션
암시적 대기와 명시적 대기
JavaScript 코드 실행
셀레늄 크롤링 방지 균열
헤드리스 브라우저 설정
긁힌 핵심 구성 요소
스크래피 워크플로우
Scrapy 설치 및 프로젝트 생성
스파이더 프로그램 작성
미들웨어 및 파이프라인 프로그램 작성
스크랩 구성 파일
데이터 분석가의 책임
데이터 분석가 기술 스택
데이터 분석 관련 라이브러리
아나콘다 설치 및 사용
콘다 관련 명령
jupyter-lab 설치 및 사용
설치 및 시작
팁 사용
배열 객체 생성
배열 객체 속성
배열 객체에 대한 인덱스 작업
보통지수
팬시 인덱스
부울 인덱스
슬라이스 인덱스
사례: 배열을 사용하여 이미지 처리
배열 객체의 관련 메서드
기술통계 얻기
기타 관련 방법
어레이 작업
배열 및 스칼라 연산
배열 및 배열 작업
범용 단항 함수
일반 이진 함수
방송 메커니즘
Numpy 공통 함수
벡터
결정자
행렬
다항식
Series
객체 생성
Series
객체에 대한 작업
Series
객체의 속성과 메서드
DataFrame
객체 생성
DataFrame
객체 속성 및 메서드
DataFrame
에서 데이터 읽기 및 쓰기
데이터 재구성
데이터 접합
데이터 병합
데이터 정리
누락된 값
중복된 값
특이치
전처리
피벗 데이터
기술통계 얻기
정렬 및 헤더 값
그룹 집계
피벗 테이블 및 크로스탭
데이터 프레젠테이션
전년 대비 계산
창 계산
관련성 결정
인덱스의 활용
범위 지수
카테고리 지수
다단계 색인
간격 지수
날짜/시간 인덱스
matplotlib 설치 및 가져오기
캔버스 만들기
좌표계 생성
차트 그리기
꺾은선형 차트
산점도
막대 차트
원형 차트
히스토그램
상자 그림
차트 표시 및 저장
고급 차트
버블 차트
영역 차트
레이더 차트
장미 다이어그램
3D 차트
시본
파이차트
소프트웨어 프로세스 모델
제품 백로그(사용자 스토리, 제품 프로토타입)
회의 계획(평가 및 예산 책정)
일일 개발(스탠딩 미팅, 뽀모도로 기술, 페어 프로그래밍, 테스트 우선, 코드 리팩토링...)
버그를 수정합니다(문제 설명, 재현 단계, 테스터, 담당자).
릴리스 버전.
리뷰미팅(쇼케이스, 이용자 참여 필수)
회고적 회의(현재 반복 주기 요약 작성)
프로세스와 도구를 통한 개인과 상호작용
철저한 문서화를 통해 작동하는 소프트웨어
계약 협상보다 고객 협력이 우선
변화에 대응하는 것이 계획을 따르는 것보다 낫습니다.
타당성 분석(연구 수행 여부)을 수행하고 "타당성 분석 보고서"를 출력합니다.
요구사항 분석(무엇을 해야 할지에 대한 연구), "요구사항 사양" 출력 및 제품 인터페이스 프로토타입 다이어그램.
개요 설계 및 상세 설계, 출력 개념 모델 다이어그램(ER 다이어그램), 물리적 모델 다이어그램, 클래스 다이어그램, 시퀀스 다이어그램 등
코딩/테스트.
온라인/유지보수를 진행하세요.
클래식 프로세스 모델(폭포 모델)
폭포수 모델의 가장 큰 단점은 수요 변화를 수용할 수 없다는 점이다. 전체 프로세스가 완료될 때까지 제품을 볼 수 없어 팀 사기가 낮아진다.
애자일 개발(스크럼) - 제품 소유자, 스크럼 마스터, 개발자 - 스프린트
보충 자료: 애자일 소프트웨어 개발을 위한 선언문
역할: 제품 소유자(무엇을 해야 할지 결정하고 요구 사항에 대해 결정을 내릴 수 있는 사람), 팀 리더(다양한 문제를 해결하고, 더 나은 작업 방법에 중점을 두고, 개발 팀에 대한 외부 영향을 차단), 개발 팀(프로젝트 임원, 특히 개발자 및 테스터).
준비: 비즈니스 사례 및 자금 조달, 계약, 비전, 초기 제품 요구 사항, 초기 출시 계획, 지분 확보, 팀 구성.
애자일 팀은 일반적으로 8~10명으로 구성됩니다.
작업량 추정: 프로토타입, 로고 디자인, UI 디자인, 프론트 엔드 개발 등 개발 작업을 수량화하고 각 작업을 최소 작업량으로 분해하도록 노력합니다. 최소 작업량 기준은 작업 시간이 2일을 초과할 수 없다는 것입니다. 그런 다음 전체 프로젝트 시간을 추정합니다. 칸반 보드에 각 작업을 게시하세요. 칸반 보드는 할 일(완료 예정), 진행 중(진행 중), 완료(완료)의 세 부분으로 나누어져 있습니다.
프로젝트 팀 구성
코드 주석이 너무 적거나 주석이 없습니다.
코드는 언어 모범 사례를 깨뜨립니다.
안티패턴 프로그래밍(스파게티 코드, 복사-붙여넣기 프로그래밍, 자아 프로그래밍 등)
팀 구성 및 역할
참고: 다음과 같은 아름다운 회사 조직도를 그리는 데 도움을 준 Ms. Fu Xiangying 에게 감사드립니다.
프로그래밍 사양 및 코드 검토( flake8
, pylint
)
Python의 일부 "규칙"("Python 규칙-Pythonic 코드 작성 방법" 참조)
코드 가독성에 영향을 미치는 이유:
팀 개발 도구 소개
"팀 프로젝트 개발의 문제점 및 해결 방법"을 참조하십시오.
버전 관리: Git, Mercury
결함 관리: Gitlab, Redmine
민첩한 폐쇄 루프 도구: ZenTao, JIRA
지속적인 통합: Jenkins, Travis-CI
주제 범위 설정
CMS(클라이언트) : 뉴스취합사이트, Q&A/공유 커뮤니티, 영화리뷰/서평사이트 등
MIS(사용자 측 + 관리 측): KMS, KPI 평가 시스템, HRS, CRM 시스템, 공급망 시스템, 창고 관리 시스템 등
앱 백엔드(관리 터미널 + 데이터 인터페이스): 중고 거래, 신문 및 잡지, 틈새 전자상거래, 뉴스 및 정보, 여행, 소셜 네트워킹, 독서 등
기타 유형: 자신의 업계 배경 및 업무 경험이 있으며 비즈니스를 이해하고 제어하기 쉽습니다.
요구사항 이해, 모듈 분할 및 업무 할당
요구 사항 이해: 브레인스토밍 및 경쟁 제품 분석.
모듈 분할: 마인드맵(XMind)을 그립니다. 각 모듈은 분기 노드이고, 각 특정 기능은 리프 노드(동사로 표현됨)입니다. 각 리프 노드가 새로운 노드를 생성하고 각 리프를 결정할 수 없도록 해야 합니다. 노드의 중요성, 우선순위 및 작업량.
작업 할당: 프로젝트 리더는 위 지표를 기반으로 각 팀 구성원에게 작업을 할당합니다.
프로젝트 일정 개발(매일 업데이트됨)
기준 치수 | 기능 | 인원 | 상태 | 마치다 | 근무 시간 | 계획이 시작됩니다 | 실제 시작 | 계획 종료 | 실제 끝 | 주목 |
---|---|---|---|---|---|---|---|---|---|---|
논평 | 댓글 추가 | 왕다추이 | 전진 | 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 |
OOAD 및 데이터베이스 설계
UML(Unified Modeling Language)용 클래스 다이어그램
모델을 통해 테이블을 생성합니다(포워드 엔지니어링). 예를 들어 Django 프로젝트에서는 다음 명령을 통해 2차원 테이블을 생성할 수 있습니다.
Python Manage.py makemigrations 앱 파이썬 관리.py 마이그레이션
PowerDesigner를 사용하여 물리적 모델 다이어그램을 그립니다.
데이터 테이블을 통해 모델(역엔지니어링)을 생성합니다. 예를 들어 Django 프로젝트에서는 다음 명령을 통해 모델을 생성할 수 있습니다.
파이썬 관리.py 검사 DB > 앱/모델.py
도커 소개
도커 설치
Docker를 사용하여 컨테이너 생성(Nginx, MySQL, Redis, Gitlab, Jenkins)
Docker 이미지 빌드(Dockerfile 작성 및 관련 지침)
컨테이너 오케스트레이션(Docker-compose)
클러스터 관리(Kubernetes)
기본 원칙
InnoDB 엔진
인덱스 사용법 및 주의사항
데이터 파티션
SQL 최적화
구성 최적화
아키텍처 최적화
디자인 원칙
주요 질문
기타 질문
문서작성
데이터베이스 구성(다중 데이터베이스, 마스터-슬레이브 복제, 데이터베이스 라우팅)
캐시 구성(파티션 캐시, 키 설정, 타임아웃 설정, 마스터-슬레이브 복제, 장애 복구(Sentinel))
로그 구성
프로파일링 및 디버깅(Django-Debug-ToolBar)
유용한 Python 모듈(날짜 계산, 이미지 처리, 데이터 암호화, 타사 API)
RESTful 아키텍처
RESTful 아키텍처 이해
RESTful API 설계 지침
RESTful API 모범 사례
API 인터페이스 문서 작성
RAP2
야피
django-REST 프레임워크 적용
캐싱을 사용하여 데이터베이스 부담 완화 - Redis
디커플링 및 피크 클리핑을 위해 메시지 대기열 사용 - Celery + RabbitMQ
테스트 유형
단위 테스트 작성( unittest
, pytest
, nose2
, tox
, ddt
,...)
테스트 커버리지( coverage
)
배포 전 준비
키 설정(SECRET_KEY / DEBUG / ALLOWED_HOSTS / 캐시 / 데이터베이스)
HTTPS/CSRF_COOKIE_SECUR/SESSION_COOKIE_SECURE
로그 관련 구성
일반적인 Linux 명령 검토
일반적인 Linux 서비스 설치 및 구성
uWSGI/Gunicorn 및 Nginx 사용
많은 사용자 정의가 필요하지 않은 간단한 애플리케이션의 경우 Gunicorn이 좋은 선택입니다. uWSGI의 학습 곡선은 Gunicorn보다 훨씬 가파르고 Gunicorn의 기본 매개변수는 이미 대부분의 애플리케이션에 적용할 수 있습니다.
uWSGI는 이기종 배포를 지원합니다.
Nginx 자체는 uWSGI를 지원하므로 Nginx와 uWSGI는 일반적으로 온라인으로 함께 배포되며 uWSGI는 완전한 기능을 갖춘 고도로 맞춤화된 WSGI 미들웨어입니다.
성능 측면에서 Gunicorn과 uWSGI는 실제로 똑같이 잘 수행됩니다.
Gunicorn과 uWSGI의 비교
가상화 기술(Docker)을 활용한 테스트 환경 및 프로덕션 환경 배포
AB의 사용
SQLslap 사용
시스벤치 사용
Shell과 Python을 사용한 자동화된 테스트
Selenium을 사용한 자동화된 테스트
셀레늄 IDE
셀레늄 웹드라이버
셀레늄 리모콘
테스트 도구 Robot Framework 소개
비즈니스 모델 및 요구사항
물리적 모델 설계
제3자 로그인
캐시 워밍업 및 쿼리 캐싱
장바구니 구현
결제 기능 통합
깜짝 세일 및 과매도 문제
정적 자원 관리
전문 검색 솔루션
MySQL 데이터베이스 튜닝
웹 서버 성능 최적화
Nginx 로드 밸런싱 구성
Keepalived는 고가용성을 달성합니다.
코드 성능 튜닝
멀티스레딩
비동기화
정적 리소스 액세스 최적화
클라우드 스토리지
CDN
컴퓨터 기초
파이썬 기초
웹 프레임워크 관련
파충류 관련 문제
데이터 분석
프로젝트 관련