16주 차 학습
1. Web
Web Standards
- HTML
- 웹 페이지 구조 정의
- CSS
- 웹 페이지 스타일 및 레이아웃 지정
- Script
- 웹 페이지 동작 및 상호작용 구현
2. HTML
HTML Elements
- Element
- HTML 문서의 기본 구성단위
- 콘텐츠를 감싸는 태그로 구성
- Tag
- 요소의 시작과 끝을 나타내는 기호
- Content
- 태그 내부에 포함되는 실제 내용
Website Structure
- <header>
- 문서나 섹션의 머리말 영역
- <nav>
- 사이트 내 다른 페이지나 섹션으로 연결되는 내비게이션 메뉴
- <main>
- 문서의 주요 콘텐츠가 위치하는 영역
- <aside>
- 보조 정보나 사이드 콘텐츠를 위한 영역
- <footer>
- 문서나 섹션의 하단 영역
3. CSS
CSS
- HTML 문서에 디자인과 레이아웃을 적용하는 스타일 시트 언어
- 웹 페이지의 시각적인 표현 제어
CSS Framework
- Bootstrap
- 미리 정의된 클래스를 활용해 빠르게 UI 구성 가능
- Tailwind CSS
- 유틸리티 클래스 기반
- 자유도 높은 커스터마이징 가능
4. JavaScript
JavaScript
- 웹 페이지에 생동감을 불어넣기 위해 만들어진 프로그래밍 언어
- 동적인 웹 기능 구현에 사용
변수
- let
- 중복 선언 불가
- 재할당 가능
- const(상수)
- 중복 선언 불가
- 재할당 불가
자료형
- String
- 큰따옴표(") 또는 작은따옴표(')로 감싼 문자 데이터
- Number
- 정수 및 실수
- Boolean
- true / false
- Undefined
- 값이 할당되지 않은 상태
- Null
- 명시적으로 "없음"을 나타내는 값
- NaN(Not a Number)
- 숫자가 아닌 값을 숫자로 연산할 때 발생
배열(Array)
- 배열 선언
// 배열 선언
let arr = [1, 2, 3, 4, 5, 6, 7];
- 배열 길이 확인
arr.length; // 7
- 데이터 접근
arr[0]; // 1
arr.slice(2, 5); // [3, 4, 5]
- 데이터 추가
arr.push(8); // [1, 2, 3, 4, 5, 6, 7, 8]
arr.unshift(0); // [0, 1, 2, 3, 4, 5, 6, 7, 8]
- 데이터 삭제
arr.pop(); // [0, 1, 2, 3, 4, 5, 6, 7]
arr.shift(); // [1, 2, 3, 4, 5, 6, 7]
- 데이터 검색
arr.indexOf(3); // 2
arr.find(item => item === 3); // 3
arr.filter(item => item < 3); // [1, 2]
반복문
- while
let i = 0;
while (i < 3) {
console.log(i);
i++;
}
// 0 1 2
- for
for (let i = 0; i < 3; i++) {
console.log(i);
}
// 0 1 2
- break
let sum = 0;
while (true) {
let value = + prompt("Enter a number.", "");
if (!value) break;
sum += value;
}
console.log("Sum: " + sum);
- continue
for (let i = 0; i < 10; i++) {
if (i % 2 == 0) continue;
console.log(i);
}
// 1 3 5 7 9
함수(Function)
- 함수 선언
function showMessage(name) {
console.log(`Hello, ${name}`);
}
- 함수 표현식
let showMessage = function(name) {
console.log(`Hello, ${name}`);
};
- 화살표 함수
let showMessage = (name) => {
console.log(`Hello, ${name}`);
};
- 매개변수
function sumAll(...args) {
return args.reduce((sum, current) => sum + current, 0);
}
console.log(sumAll(1)); // 1
console.log(sumAll(1, 2, 3)); // 6
- 스프레드 문법
let arr = [1, 3, 5];
console.log(Math.max(...arr)); // 5
- 콜백 함수
function ask(question, yes, no) {
if (confirm(question)) yes()
else no();
}
function showOk() {
alert("Agree");
}
function showCancel() {
alert("Disagree");
}
ask("Do you agree?", showOk, showCancel);
- 클로저 함수
function makeCounter() {
let count = 0;
return function() {
return count++;
};
}
let counter = makeCounter();
console.log(counter()); // 0
console.log(counter()); // 1
console.log(counter()); // 2
- 호출 스케줄링
// setTimeout()
function showDelayedMessage() {
console.log("Hello World");
}
setTimeout(showDelayedMessage, 1000);
// setInterval()
let timerId = setInterval(() => console.log("Tick-Tok"), 2000);
setTimeout(() => {
clearInterval(timerId);
console.log("Stop");
}, 5000);
클래스(Class)
- 클래스 생성
class User{
constructor(name) {
this.name = name;
}
showMessage() {
console.log(this.name);
}
}
let ine = new User("INe");
ine.showMessage(); // INe
- 클래스 상속
class Animal {
constructor(name) {
this.name = name;
this.speed = 0;
}
run(speed) {
this.speed = speed;
console.log(`${this.name}'s speed: ${this.speed}`);
}
stop() {
this.speed = 0;
console.log(`${this.name}: Stop`);
}
}
class Cat extends Animal {
hide() {
console.log(`${this.name}: Hide`);
}
}
let cat = new Cat("Black cat");
cat.run(5); // Black cat's speed: 5
cat.stop(); // Black cat: Stop
cat.hide(); // Black cat: Hide
- 오버라이딩
class Cat2 extends Animal {
hide() {
console.log(`${this.name}: Hide`);
}
stop() {
super.stop();
this.hide();
}
}
let cat2 = new Cat2("Black cat");
cat2.run(5);
cat2.stop();
/*
Black cat's speed: 5
Black cat: Stop
Black cat: Hide
*/
에러 핸들링(Error Handling)
try {
console.log("Try");
} catch (e) {
console.log("Catch");
} finally {
console.log("Finally");
}
/*
Try
Finally
*/
try {
console.log("Try");
if (confirm("Make Error")) strange_code();
} catch (e) {
console.log("Catch");
} finally {
console.log("Finally");
}
/*
Try
Catch
Finally
*/
Window 객체
- Window
- 브라우저의 최상위 객체
- 브라우저 창과 관련된 다양한 기능 제공
- DOM(Document Object Model)
- HTML 문서를 객체로 표현하여 페이지 요소 제어
- BOM(Browser Object Model)
- 문서 외 브라우저 자체 정보 접근
프로미스(Promise)
- 비동기 작업을 처리하기 위한 JavaScript 객체
- 상태
- Pending
- 비동기 작업이 아직 완료되지 않은 상태
- Fulfilled
- 작업이 성공적으로 완료된 상태
- Rejected
- 작업이 실패한 상태
- Pending
5. Django
MTV 패턴
- Model
- 데이터에 구조 및 비즈니스 로직 정의
- DB와 상호작용
- Template
- 사용자에게 보여지는 화면 정의
- HTML + 템플릿 언어
- View
- 요청 처리 및 데이터 전달
- HTTP 응답 반환
동작 원리
- Client
- 브라우저에서 요청 전송
- Web Server
- 정적 파일 제공 또는 WAS로 위임
- WAS Server(Django)
- 비즈니스 로직 처리
- DB와 통신
- Database
- 실제 데이터 저장
Create Django
- 가상환경 생성
uv venv .venv -p 3.13
.\.venv\Scripts\activate
- Django 설치
uv pip install django
- Django 프로젝트 생성
django-admin startproject config .
- 앱(App) 생성
python manage.py startapp user
- templates 생성
mkdir templates
mkdir templates/user
- static 설정
mkdir static
mkdir static/css
mkdir static/js
- 서버 실행
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
16주 차 회고
Keep
- 빅데이터분석기사 필기 결과가 공식적으로 공개되어 합격했다. 이제 2개월 후에 있을 실기 시험 준비를 시작해야 한다.
- 매일 운동을 조금씩 하다 보니 체력이 붙는 것이 느껴진다.
Problem
- 여러 회사에 지원서를 제출하다 보니 내가 무엇이 부족한지 많이 느껴진다. 이를 보완해야 할 필요성을 느끼고 있다.
- 해야 할 일이 많지만, 어디서부터 시작해야 할지 몰라 막막하다.
Try
- 가장 중요한 것은 수업을 꾸준히 따라가는 것이다. 남은 기간 동안 수업에 충실해야 한다.
- 그 후에는 내가 관심 있는 데이터 분석 쪽에 관련된 공부를 더 해야 한다.
- 캐글이나 데이콘 대회에 참가하거나 추가로 공부할 부분을 찾아보는 것이 필요하다.
'SK네트웍스 Family AI캠프 10기 > Weekly 회고' 카테고리의 다른 글
| [플레이데이터 SK네트웍스 Family AI 캠프 10기] 18주차 회고 (0) | 2025.05.11 |
|---|---|
| [플레이데이터 SK네트웍스 Family AI 캠프 10기] 17주차 회고 (0) | 2025.05.03 |
| [플레이데이터 SK네트웍스 Family AI 캠프 10기] 15주차 회고 (0) | 2025.04.21 |
| [플레이데이터 SK네트웍스 Family AI 캠프 10기] 14주차 회고 (0) | 2025.04.13 |
| [플레이데이터 SK네트웍스 Family AI 캠프 10기] 13주차 회고 (0) | 2025.04.06 |