2학년 하계방학 - 웹개발 (Manual Copy)

개인 Notion 계정으로 옮겨진 완성된 노트의 복사본.

수업을 위한 Notion

추천하신 방법론

린 캔버스 (Lean Canvas): 외주 받을 때 요구사항 정리 돕는 분류.

추천하신 사이트

생산성 앱

미니퀘스트 - JS 싱글스레드

코딩애플

-

— 프로세스, 스레드

프로세스의 메모리 영역

Code
프로그램의 실행 코드나 명령어들이 기계어 형태로 저장.
CPU는 이 영역에 저장된 명령어들을 순차적으로 읽어서 처리.
Data
코드에서 선언한 전역 변수와 정적 변수가 저장.
프로그램이 실행되면서 할당되고 종료되면서 소멸.
Stack
함수 안의 지역변수, 매개변수, 반환값들이 저장.
함수가 호출되면 관련 정보가 스택에 쌓이고, 함수가 종료되면 해당 정보는 스택에서 제거.
Heap
동적으로 할당되는 데이터를 위한 자유 공간.
프로그래머는 필요한 만큼의 메모리를 할당하고 해제 가능.
예: 프로그램에서 사용자의 입력에 따라 변할 수 있는 양의 데이터를 관리할 때.

— Git

git init - 로컬 저장소를 초기화.
git remote add <원격저장소명> <원격저장소주소> - 로컬 저장소에 연결된 원격 저장소 관리.
git remote -v - 등록된 원격저장소 확인.
git status - 현재 작업 중인 저장소의 상태 확인.
git diff <파일명> - 파일의 변경 사항 확인.
git add <파일명> - 파일을 staged 상태로 변경.
git commit -m "메시지" - 파일의 변경 내용을 확정.
git push <원격저장소명> <브랜치명>

— JS심화

Async

ChatGPT Prompt Customization
Don't print what the section is about.
Title
Example
Bulleted List of Important Points (1-3 items)
Prompt:
chattie, can you tell me about...
1.
Callback
2.
Promise
3.
Async / Await
Response:

Callback

Example:
function fetchData(callback) { setTimeout(() => { callback('Data fetched'); }, 1000); } fetchData(data => { console.log(data); });
JavaScript
복사
A function passed as an argument to another function.
Executed after the completion of a task.
Can lead to "callback hell" with nested callbacks.

Promise

Example:
let promise = new Promise((resolve, reject) => { setTimeout(() => { resolve('Data fetched'); }, 1000); }); promise.then(data => { console.log(data); });
JavaScript
복사
Represents a value that may be available now, later, or never.
Uses .then() for resolved and .catch() for rejected states.
Avoids callback hell by chaining .then() calls.

Async / Await

Example:
async function fetchData() { let data = await new Promise((resolve) => { setTimeout(() => { resolve('Data fetched'); }, 1000); }); console.log(data); } fetchData();
JavaScript
복사
Syntactic sugar over promises, making asynchronous code look synchronous.
Uses async to declare a function and await to pause execution until the promise resolves.
Simplifies error handling with try...catch.

JS 엔진

개념
설명
Prototype
Java의 Object, Luau의 Instance처럼, JS의 최상위 클래스.
호이스팅
변수 선언을 참조 이전에 하는 것. (할당 X) var은 undefined로 초기화됨.
TDZ
Temporal Dead Zone. 호이스팅 이후 변수가 초기화되기까지의 영역. 때문에 변수 선언은 최상단에 하는 것이 좋다.
Callstack
호출된 함수의 실행 맥락(execution context)이 쌓이는 스택.
Scope
변수에 접근할 수 있는 범위.
Java와 달리, JS는 함수 객체 this전역 객체를 가리킨다. 그래서 나온 게···
call(), apply()
bind()
함수로 객체를 만들 때의 new 바인딩
엔진명
개발자
사용처
특징
V8
구글
Google Chrome, Node.js
- 고성능 JIT 컴파일러 - 오픈 소스 - 다양한 프로젝트와 도구에서 활용 가능
SpiderMonkey
모질라
Firefox
- 자바스크립트 최신 표준 빠른 구현 - 오픈 소스 - 활발한 개발 및 업데이트
JavaScriptCore (Nitro)
애플
Safari
- 빠른 실행 속도 - 효율적인 메모리 사용 - WebKit의 일부 - 오픈 소스
Chakra (ChakraCore)
마이크로소프트
Internet Explorer, Edge (구버전)
- JIT 컴파일 방식 - 오픈 소스 - 성능 최적화에 중점
Hermes
페이스북
React Native
- 모바일 앱 시작 시간 단축 - 메모리 사용량 감소 - 오픈 소스 - 모바일 최적화에 중점

— 프롬프트 엔지니어링

후카츠 프롬프트

지시문

당신은 (GPT에게 부여할 역할) 입니다. 아래의 제약조건과 입력문을 토대로 최고의 결과를 출력해주세요.

제약 조건

[제약 조건을 걸 내용]

입력문

[GPT에게 요청하려는 내용]

출력형식

[GPT가 출력할 형식을 지정]
My Prompt

지시문

당신은 전문적인 소프트웨어 개발 교육자입니다. 아래의 제약조건과 입력문을 토대로 최고의 결과를 출력해주세요.

제약 조건

한글로 작성한다.
"-이다."의 형식으로 말을 끝맺는다.
두 개의 개념은 로 비교한다.
표로 비교할 경우 출력 형식을 따르지 않아도 된다.

입력문

Single Turn, Multi Turn
Few Shot

출력 형식 for each list item

Title A code block example if there's any Bulleted List of Important Points (1-3 items) or Comparing Table Bulleted List of Important Points (1-3 items)

— 데이터베이스

개념
설명
DMS
Database Management System
CRUD
Create, Read, Update, Delete
SQL
Structured Query Language

SQL 구상 (ERD)

ERD
Entity-Relationship Diagram
PK
Primary Key
AI
Auto Increment
FK
Foreign Key

— 웹 심화 교재 요약

ChatGPT 만세!

네트워크 기초

Internet: 전 세계 컴퓨터와 네트워크를 연결하는 거대한 정보 통신망.
IP: 인터넷에서 장치들을 식별하고 위치를 지정하는 주소 체계.
DNS: 도메인 이름을 IP 주소로 변환해주는 시스템.
클라이언트-서버: 클라이언트가 서버에 요청을 보내고 서버가 응답하는 네트워크 구조.

네트워크 프로토콜 및 통신

TCP/UDP: 데이터 전송을 위한 신뢰성 있는(또는 비신뢰성 있는) 프로토콜.
3-way Handshake: TCP 연결을 확립하기 위한 세 단계 과정.
WebSocket: 실시간 양방향 통신을 위한 프로토콜.

네트워크 장비 및 도구

프록시 서버: 클라이언트와 서버(인터넷) 사이에 중개 역할을 하는 서버.
WireShark: 네트워크 트래픽의 패킷을 분석하는 도구.

웹 기술 및 서버

HTTP Cache: 웹 페이지 로딩 속도를 높이기 위해 데이터를 임시 저장하는 기술.
HTTP ETag: 웹 캐시 유효성을 검증하기 위해 사용하는 식별자.
HTTP 보안헤더: 웹 앱의 보안을 강화하기 위한 HTTP 헤더.
HTTP 자격증명 헤더: HTTP 요청에서 사용자 인증 정보를 전달하는 헤더.

데이터 저장 및 관리

Cookie, Storage (ft. Session): 웹 브라우저에서 데이터를 저장하고 관리하는 방법.

비동기 통신 기법

폴링 (Polling): 주기적으로 서버에 요청을 보내 상태를 확인하는 방식.
롱 폴링 (Long polling): 서버에서 즉각 응답을 주지 않고 대기하다가 데이터가 준비되면 응답하는 폴링 방식.

API 및 데이터 쿼리

GraphQL: 효율적인 데이터 쿼리를 위해 사용하는 API 쿼리 언어.

웹 서버 및 앱 서버

WS, WAS: Web Server(웹 서버)와 Web Application Server(웹 앱 서버)의 약자.
Nginx, Apache: 널리 사용되는 웹 서버 소프트웨어.

Node.js 및 프레임워크

Node.js: 서버 측 자바스크립트 런타임 환경.
Express.js, NestJS: Node.js를 위한 웹 앱 프레임워크.