카테고리 없음

12주차 스테이지어스 내용정리(1)

jjon-jonny 2024. 6. 24. 16:53

** 심화 단계

 

- 목표

 

** 심화 단계 

- 목표

1. 현업 개발자를 목표로 발전시키는 단계
ㄴ 기초 교육, 모의 외주는 사실상 심화 단계를 위한 것
ㄴ 뿌리를 단단하게, 개발자의 행동과 사고 방식을 가지도록 하는 것
ㄴ 이제부터는 개발자의 실력을 높일 것

2. 기술에 집착하고 확장하는 단계
ㄴ 단순히 쓸 줄 아는게 많다는게 아님
ㄴ 기술들 끼리의 장단점 비교, 기술 선택 , 더 나아가서 그 기술의 원리
(공식 document, 설계 방식 등 )

3. 스스로 성장하는 능력 완성
ㄴ 개발 기술의 범위는 너무나 넓다.
ㄴ 등뼈만 세워줄 것
ㄴ 과제로 가시를 만들 것이며, 어떤 부위에 살을 붙일지는 여러분들의 몫

 

-운영 방식

1. 8주간 교육
ㄴ 기술의 편의성 자체가 남다름(과제가 일찍 끝남)

2. 과제의 구성
ㄴ 기초 단계에선 과제가 옵니버스 형식
ㄴ 심화 단계에서는 쌓아갈 것
ㄴ 8주간 과제만 하더라도 한 개의 프로그램이 나옴
ㄴ 한 주라도 과제 밀리면 절대 못따라옴

3. 협업 프로젝트
ㄴ 프론트엔드 분들과 모여서 함께 만들 것
ㄴ 최종 복습의 목적
(제대로된 소프트웨어 기획, 협업 경험, git-Flow)

- 기술 목표

1. node.js 기반의 웹 프레임워크인 Express 를 학습
2. 웹 서버의 구조와 동작 원리 등 심도 있는 이론 학습
3. web server api 개발과 설계에 대한 내용 학습
4. 다양한 데이터베이스 운용, 적절한 데이터베이스 선택
5. 프로젝트의 무결성을 위한 예외처리 기법

- 백엔드 개발자의 길

1. 코딩하는 일 보다 , 환경을 설계하고 구축하는 일이 더 많다.
ㄴ 백엔드 분야는 서버 관리, 데이터베이스 구축, 백엔드 개발로 구성
(server architecture, Design Pattern,  Software Architecture)
(테이블 설계가 잘못되면 코드 자체를 들어내야함)

2. 백엔드 분야는 체계성이 가장 중요함
ㄴ 프로젝트 무결성, 성능을 담당함.
ㄴ 보수적인 분야라는 의미며, 그렇기에 공식이 존재함// 당연히 원리 알아야 함
ㄴ 내가 한번 만들어둔 코드를 재활용할 일이 많음.
ㄴ 언제나 통일성 중시해야 함, 처음 만들 떄 잘 만들어둬야 함

3. 많은 기술을 배우는 것 보단, 한 기술을 깊게 파야 함.
ㄴ 전통을 따라야 하는 경우가 많음(말 그대로 정론이라는게 있음)
ㄴ 사용하는 기술을 깊게 배워야 하고, 그래야지만 무결성과 성능을 챙길 수 있음.

4. 발생할 수 있는 모든 상황 예측을 할 수 있어야 함.
ㄴ 모든 예외처리 상황에 대응할 수 있어야 함.
( 예외처리, 최적화 등)

** javascript Essential
- 중요성
ㄴ 기초 단계에서 js 역살
ㄴ 이 상황이 Node.js 의 등장으로 바뀌었음

-Node.js 의 정의
ㄴ javascript runtime software 
( runtime : 언어를 해석해서 구동해주는 소프트웨어)
ㄴ 기존에 이벤트용 언어였던 javascript 가 이제는 소프트웨어 개발용 언어로 바뀐 것.

- js 의 문제점
ㄴ 원래 이벤트 전용 언어 였음.
ㄴ js 를 가지고 대형 프로젝트를 개발하기엔 언어의 힘 자체가 너무 부족했음.
ㄴ js가 발전을 하게 됨.

- js 의 버전
ㄴ 우리가 지금까지 배운 js es5버전
(es 는 ecma script 약자이며, js 버전을 나타낼 때 사용하는 단어)
ㄴ es5 는 2009년에 나왔음.
ㄴ es6버전은 2015년에 나왔음.

-es5 더이상 몰라도 되냐?
ㄴ웹 표준이기 때문에 알긴 알아야 함.
 
- es6 는 뭐가 달라졌나?
ㄴ js 언어가 가진 문제점들을 해결하는데 초점이 맞춰져 있음.
ㄴ 추가로 여러 편의 기능(최신 언어 스타일에 맞게) 추가

" javascript deep dive " 


** Express 기초
- 정의
ㄴ Node.js 는 단순히 js Runtime
ㄴ 실질적으로 우리가 사용하는 것은 Express 라는 웹 프레임워크
ㄴ 웹 서버 구축에 사용되는 웹 프레임워크

-톰캣과 차이점
ㄴ 둘다 웹 서버를 구축하는 것은 동일
ㄴ 서버는 기본적으로 tcp 통신 웹은 http 통신을 하게됨
ㄴ톰캣은 서드파티 소프트웨어 ( 완성된 소프트웨어 )
ㄴ express 는 프레임워크 소프트웨어 ( 반만 만들어진 소프트웨어)

ㄴ 톰캣은 서드파티라서 성능이 상대적으로 낮음, 커스텀이 불가능 
ㄴ Express 는 Framework 라서 내가 하고싶은 것들을 맘대로 설정할 수 있음

예시) HTTP 를 HTTPS 로 자동 전환
예시) 특정 ip에서 접속하는거 차단

ㄴ 난이도는 더 어렵지만, 숙련되면 더 다양한 기능 / 더 좋은 성능을 낼 수 있다.

-npm
ㄴ Node Package manager
ㄴ ubuntu 에 있는 apt 와 같은 역할
ㄴ js 기반의 패키지들을 쉽게 설치 삭제 하게 해주는 기능
ㄴ npm은 현재 접속중인 폴더에 설치 apt 는 ubuntu 에 설치함



node_modules   뭔가 설치하면 거기안에 들어가게 된다.


package-lock.json  열어볼일이 없다 열어봐도 못알아봄 근데 사라지면 안된다
저게 뭐냐면 오늘날짜 그 시간 기준으로 설치경로 시간 등이 다 들어가 있다. 




package.json          우리 프로젝트 명세서 기능

dependency 가 중요한 문제 우리가 작업한 것들은 용량이 너무 커서 안됨.

근데 뭘 다운받아야 하는지 알려줌

npm install 하면 다 설치해줌 

**  API 

-정의 
ㄴ JSP에서 하던 Action 과 동일한 역할
ㄴ Tomcat 에서는 프론트엔드와 백엔드가 합쳐져 있었음

ㄴ Page 이동이였던 action 과 다르게 , API 는 요청에 대해서 응답만 주는 구조

-주의점
ㄴ 순도 100퍼센트 통신으로만 이루어 짐
ㄴ통신과 관련된 문제도 발생할 수 있음
ㄴ 사용하려는 사람이 API 사용방법을 모르면 절대 쓸수가 없음
(사용방법을 잘 알려줘야 하는 의미)

- REST 
ㄴ 현시점 백엔드 개발자들이 가장 많이 사용하는 API 디자인 패턴임
ㄴ 키워드를 통해 해당 API가 어떤 기능인지 나타내는 방법

POST
GET
PUT
DELETE
주의점
-절대 이미 REST에 담겨있는 의미를 API에 넣으면 안된다.
POST / user
GET / user
PUT / user
DELETE / user


1. 과제 4~5개 정도되는 REST 이름 짓는 조건


예시) GET / user / me
GET / find / id 

값을 주는 3가지 방법
query 
parmas
body

2. 3가지를 각각 언제 쓰는지 과제


7주차에 만든 과제 
15개 기능 똑같이 만든다

백엔드만 만든다.
table 설계, 15개 기능 API 설계 rest 방식 api 이름 각각의 api 들에게 보내줘야 하는 값
그러면 그 api가 어떤 값을 줄지 설계해오기

libuv개념 찾아보기

 

그래도 시간 남으면 계시판에 카테고리 기능 추가하기
게시글의 좋아요 기능 첨가하기
댓글의 좋아요 기능 첨가하기