배움 __IL/TIL 1기

TIL : 18번째- 221222 [12-4-목]

Mo_bi!e 2022. 12. 22. 18:22

I. INTRO : 지난시간 복습

객체지향은 어떻게 데이터 수납공간을 만들것인가 이다.

수납은 방법이 정답이 없다.

왜냐하면 내집은 다른집과 다르니까

 

객체지향은 구조(수납공간)를 만들어야하는데 처음부터 바로 만들수없다.

수납공간은 한번살아보고 집이 지저분해져봐야, 이 집이 2차원이 아니라 3차원이라서 적재를 어떻게 할지 고민하고

다음에 수납해야지 하다가 친구집가다가 깨닫고하는방식이다.

 

기본적으로 모든코드는 행위를 하는것으로 나누어서 만든다.

여기서 행위의 주체는 캡슐을 잘 찾을수 있게금해야한다.

 

내가 프레임웍만들때 설계 하는것이다. 중요한건 남이만든 것을 잘 쓰면된다.

캡슐 결합은 부품 VS 틀

 

II. 상속

1. is -a 상속 실습과 프레임워크 사용

들고오고, 내가 덮어서 고치면서 써버리기

 

(1) Frame 상속하기

 

 

 

(2) 윈도우의 구성과 출력방식

오렌지는 프레임

 

paint() 에다가 사용은 (오라클에 소스코드 달라고 할 필요X)

배포된 바이너리 파일에 손안대고 사용하기 확장하기 위한 클래스 만들고

얘를 오버라이드 해서 쓰기

 

파란색은 오버라이드

 

(3) paint() 오버라이드 하기

 

 

 

 

우리는 윈도우 한정이 아니라 웹으로 할 때 서블릿클래스를 이용해서 백엔드 구현하고

반대쪽으로 html 등으로 구현한다.

우리가 객체를 구성하는 작업을 해본다.

 

 

 

 

<배우는 2가지>

플랫폼만들 때까지는 객체설계 배우기보다, 데이터설계에 대한 이해가 필요하다 (답습)

남은것 쓰지만 쓸 때 어떤 것을 가져다 써야하는지 이해와 구조가 필요하다(시스템 아키텍처 이해)

 

III. 웹 / 프론트 엔드의 이해

캡슐화 상속다음에 다형성이다.

캡슐을 분리해서 만들 때 결합력을 느슨하는것과 함께 분리하면 다형성을 가지게끔 분리한다.

이해하려면 웹으로 가서 레이어 나누는 과정을 경험하고, 협업에 어떻게 도움이 되는지 느슨하게 한다는게 무슨 말인지 이해하는게 중요하다

 

지금은 굳이 다형성 인터페이스 언급은 좋지않다.

지금은 웹보다 게임개발을 우선적으로 해보자 

 

서블릿을 이용해서 웹개발을 해본다.

1. 자바로 웹 프로그램을 만들게 되면, 서버프로그램이 된다.

지금까지와 달라지는 것은 입출력도구가 달라진다. 지금까지 콘솔,파일이고 이제 이 추가된다.

다른것은 동일하다.

 

출력 도구만 추가 되는것이다. 이제부터 출력은 원격으로 하는것이기 때문에 신기하다.

 

 

2. 이 수업이 끝나면

서블릿 계속 쓰기에 힘들었다 

출력 하는것이 단순한 작업인데 이때문에JSP가 탄생했다.

JSP로 코드량이 줄었지만 코드가 엉망(스파게티코드)이된다 이를해결하기 위해서 MVC가 나온다.

또 줄여주기 위해서 MVC가 스프링으로된다.

 

예전에는 서블릿이 가장중요했는데, 지금은 빠르게 살펴보고 스프링으로 적용해서 가는것이 중요하다.

 

 

3. Spring Boot

이 아래에서 위로 가는것이 백엔드의 개발에 대한 스택이다.

 

그런데 스프링이 도전장을 낸다.

 

4. 스프링 프레임워크의 기본기능

최근 서블릿과 JSP를 몰아내고있다.

주요기능이 의존성 주입(결합)이다. 기업에서는 매우 중요하다. 이런것을 원래는 해주는 Framework가 없었다

있었다. 하더라도 복잡했는데 간략하게 해주었다.

 

라이브러리 형식으로 지원해주는것이 최초였다.

스프링은 과거에 잠깐 도움을 주는것이었다.

 

결합력 낮춰주는 등의 역할을 담당했다. SE의 기능을 스프링이 욕심이 나서 하나씩 만들었다.

EE버전의 기능 스프링이 뺏어가고있다.

스프링이 점차 다써버리기 시작했다.

스프링은 더이상 얹어져 쓰는 라이브러리가 아니라 아얘 모두 다하자

그아래 jsp was 모두 쓸필요없이 Spring Boot가 모두 다하자 그냥

 

그럼에도 불구하고 서블릿이나 jsp 등 배워야한다. 결국 boot안에 있기때문에 무엇인지는 알아야한다.

 

 

 

 

<향후 프로젝트>

미니프로젝트는 서블릿, 제이슨맛보기 + JS

1차 프로젝트는 백엔드 (스프링부트 + 타입리프)

2차 프로젝트는 프론엔드 (vue js 얹이기)

 

 

 

IV. 인터넷과 웹

이제 다른 지구 건너편사람도 쓸수있다 그러기 위해서는 웹서버를 공부해보자

여기서 서블릿이란 Dynamic Web Page를 만들 때 사용되는 자바 기반웹 애플리케이션 프로그래밍 기술이다.

1. 인터넷은 웹이다?

같은가 다른가? : 다르다.

 

문서를 배달하는 시스템을 웹이라고 한다. 즉 www(web)

택배회사(웹)도로(인터넷) 차이이다. 원래 인터넷이 없었다. 1983.1.1에 시작했다.(선 웹, 후 인터넷)

 

그 이전에는 로컬네트워크(메인프레임컴퓨터)로 이용했다.

어느순간부터 LAN(Local Area Network)가 엮어낼수있으면 전세계적으로 공유하고할수있다.

네트워크 세상에 도로를 만들자! LAN간 공유하기

이어주는 기술을 inter network 기술이다.

 

2. 인터넷은 인터 네트워크 기술 중에 하나이다.

단일화하기 어려워다. 그대로 LAN은 두면서 논리적인것은 두면서 논리적인 장치가 필요하다.

네트워크끼리 주고 받는 기술이 인터네트워크 기술이다.

마치 지역내에서 마을버스 타다가, 부산갈때는 기차탄다. (가는 방법이 달라진다) 기차가 내집앞까지 못오고 마을버스로 갈아타야한다.

 

이후 인터넷이 만들어졌다. 길이만들어졌으니 물류시스템이 있어야한다. 예전에는 종류마다 달랐다.

문서를 보내는데 몇KB불과 포장방법이 다르다. 100MB이상과 같을필요가없다

그래서 파일전송, 문서전송, 터미널콘솔명령어전달방법이 저마다 달랐다.

컴퓨터간에 파일전달이 필요한다. 이경우 한쪽은 반드시 서버와 클라이언트로 나누어진다.

 

<파일배송시스템>

파일전송하는쪽(서버) =========> 파일받는쪽(클라이언트)

1) 서버

서버는 365 24 한번도 꺼지는 일이없어야한다. 그래야 서버역할을 할수있다.

서버는 역할명인데 이 역할을 잘하기 위해서는 일반 PC는 부적절하다

체력적으로 이역할을 할 능력을 가져야한다. 꺼지지않게끔 하는것은 물리적으로 불가능하다.

모든 장치는 수명적한계가 있다. 서버는 다 보험이 있다. (서버는 파워가 최소 두개가있다.)

전원 뽑아서 꽂아 (hot swap) 24시간안꺼도 되는 것

 

하드웨어적 문제를 해결하기위해 서버를 쓰고있지만 본질은 '역할'이다.

 

2) 클라이언트

요청하는 쪽이다. 그냥 달라고하면 줄수없다. 어떻게 달라고 해야한다.

일련의 약속이 있어야한다. 클라이언트는 알고있어야하고 그 전제로 클라이언트 프로그램이 다양하게있다.

약속된 분구 패턴이 있어야 이해할수 있다. 즉 파일전송에 대한 약속을 '프로토콜' 이라고한다

이 프로토콜 대로 주고받고한다.

다양한 서버, 다양한 클라이언트에 서로 호환되는것은 서로 대화하는것이 약속이있다.

 

3.  다양한 프로토콜

 

 

파일을 전송하는 약속도 있고,

문서전송은 WWW 이고 이를 HTTP이다.

SNTP 메일전송이다.

 

이후 도로 위에서 다양한 서비스가 만들어진다. 

 

 

 

 

 

웹이 최근에 다하기 시작했다.

 

 

 

 

 

 

 

4. 웹이 어플리케이션 만드는것과 어떤상관?

웹 자바프로그램은 어떤 상관관계인가 어느순간 관계를 가지는지 알아보자.

 

(1) 일반적인 업무용 프로그램

근거리에서 원거리로 데이터 서버는 서울에있고, 입출력장치는 부산에있다.

데이터 서비스 : 서버프로그램

입출력장치 : 클라이언트 프로그램

 

서버는 하나라서 문제라고 보기 어렵다 하지만 클라이언트는 여럿인데 업데이트 할때 설치 재설치도 한다. 이 경우 배포를 포함해서 부담이 크다.

그리고 클라이언트에서 서버에 데이터를 요청할때 소켓이 필요하다. 소켓을 그냥 사용하기에 부담된다(데이터 전달 유효성검사등) 업무적으로 맨땅으로하기에 부담되서 RPC등을 쓴다 이런 경우 업무적으로 원할하게 하기 위해서 웹이 눈이 띄게됨

 

 

(2) 네트워크 통신 이해하기

여기서 포트란 (아래참고)

 

IP란 네트워크상에서 컴퓨터(노드)를 식별하기 위해 부여된 위치주소이다 .인터네트워크(주고받기)를 위한 약속이다,

인터 네트워크주소(관악구 도림11가길 38)에서 네트워크 호스트주소(식별번호:40X호)를 붙인다.

(ex: 211.248 .1.0 : 마지막 0, 32(식별번호)보고 옴) 

 

실제 컴퓨터는 IP 식별하지 않고, MAC 어드레스로 식별한다.

램카드가 가지고있는 식별자이다. 가능하게끔 하는 장치가 있다.

MAC(media Ace Cont) 이다.

 

즉 IP와 MAC은 따로이다.

 

서버는 모든 host에게 boardCasting 을 한다. 이게 host 번호이다.

이는 상대방의 위치를 알기위해서이다.

모든 컴퓨터는 듣게된다.

 

쏘아보낸 것의 도착지 MAC주소자신의 MAC주소다른경우 패킷(통신 단위로 데이터)폐기하고,

동일하면 수신한다.

즉 인터넷 어드레스는 방송용 / 실제로 쓰는건 맥어드레스

 

건물에 택배가 옴 건물에서 누가 이거를 사용해야하는지 모름 그래서 추가적으로 들어가는것이 포트번호이다.

데이터가 올때는 IP로 오는데 포트번호로 사서함으로 넣어준다.

 

IP + port 번호 == 네트워크 소켓

네트워크를 이어주는 것(전구를 이어주는것 처럼)

 

이 두개의 정보를 가지고 데이터 주고받기에 대한 라이브러리 API를 쓴다

API를 사서함 데이터를 꺼내거나 사서함에다가 데이터를 넣거나 한다.

 

 

(3)데이터가 아닌 문서를 전달하는 웹을 사용하면?

1)

그러나 이미 WEB은 이미 환경을 가지고 있다

웹은 브라우저가 이미 구현하고있다 (클라이언트 프로그램업데이트의 어려움 데이터전송의 어려움 해결) 이미 웹은 이러한 환경을 가지고있다. 브라우저는 이런것을 요청할수 있는 환경을가지고있다.

 

웹은 브라우저로 이미 요청할수있는 환경을 가지고 있고, 그러한 요청에서 서버쪽이 요청에 응답을 바로할수있다 거기에 대한 응답을 보내주게 된다. 웹프로그램을 이용해서 클라이언트 서버를 이용할수있다

 

즉 서버 클라이언트 프로그램이 아니라  이를 웹프로그램에 얹일수 있다는 의미이다. 웹의 페이지가 문서의 페이지와 크게 다르지 않다는 것이다 역동적인 게임말고 업무적인 환경에서는 회원목록이나, 생성지 목록 등은 웹페이지로 만들어서 충분히 전달이 가능하다 

 

2)

동적문서 VS 정적문서

이런것을 서버에서 단순히 연동해서 전달할 때 미리 만든 페이지에서 만들어서 전달한다? 이것은 아니고 정적인페이지를 조금 바꿔서 동적으로 페이지를 DB연동해서 추가해서 만든다. 

 

브라우저로 충분히 만들고 브라우저는 윈도우에 다있다. 그러므로 클라이언트 프로그램을 재설치 등을 할 필요없음 이런방식을 웹개발을 이용해서 서버프로그램을 만든다

 

과거에는 CS(cut,Ser)프로그램이라고 했다.

으로 오면서 클라이언트 프로그램이 사라지고 브라우저로 보여주면 됨 그래서 웹개발자라 고 함은 서버개발자로 보았다.

최근에는 JS등장 페이지 요청이 아니라  데이터 요청으로 바뀌었다

브라우저 단에 과거 윈도우 프로그램 만든것처럼 JS 윈도우 프로그램 만드는것이 요새 시대이다.

요새는 브라우저 기반으로 만들다 보니까 프론트엔드라고 한다.

 

3)

사용자의 요구(회원목록)에 웹서버는 요구에 데이터가 있는지 찾는다 꺼내보게되면 웹문서이다.

그러나 회원목록이 미리 문서로 되어있는것은 불가능하다. 왜나하면 지금 데이터에 어떤회원있는지 등 내용이 달라진다 

 

문서가 있기보다 목록을 만들기 위한 코드가 있다.

웹서버는 이러한 코드를 찾았으면 클라이언트로 돌려주는것이 아니라 실행해서 DB에서 목록을 문서화해서 돌려주어야한다

이경우 코드를 실행해주어야하는 환경이 필요하다

 

웹서버 + 코드실행(동적인 문서 요구 실행)

 

여기서 Server App은 동적으로 문서를 만드는 코드이다 

그리고 이것을 실행하는 환경 두가지가 필요하다

하나는 웹서버 / 코드를 짜서 실행해주는(WAS)이다.

 

4)

서버어플리케이션이 조각났다처럼

요구하는 어플리케이션만 일부실행하는 것이다.

 

Tomcat은 웹서버의 기능 WAS의 기능이 있다.

 

5. 톰캣 설치하기

0) mac의 경우 흠브루로 가능하다.

 

1) 설치시 환경변수 설정이 가능하다. 톰캣이 자바를 찾게끔 해주어야한다

 

2) startup.bat실행 

but. 환경변수에 javahome을 찾아야한 (ex :D:\tools\jdk-17.0.5+8) 이후 시스템변수에 새로만들기 하기

 

3) 대화대상은 웹 클라이언트 이다. 즉 브라우저 통해서만 이야기할수있다.

 

실행완료

 

이 경우 이런아이피주소로 접근하고 

주소/nana.txt 로할수있다

 

이경우 메모장은 ANSI로 해야지 한글이 깨지지않는다.

 

 

<다음시간>

정적인 문서만드는시간

 

 

 


1. 보충

1) 

<정리>

IP : 다른 네트워크 간 연결 할 때 식별번호로 연결 (3계층)

IP는 네트워크상에서 컴퓨터(노드)를 식별하기 위해 부여된 위치주소다.

네트워크 주소와 호스트 주소로 구분

https://catsbi.oopy.io/15f97a5f-acc8-410e-afab-0b26adff89c5

HOST : 네트워크의 종단점 / 마지막 식별번호

 

MAC Address : IP는 끝까지 전달안됨, 제대로 찾아가게끔 하기위한 (2계층)

PORT : 애플리케이션 별 구분에 대한 규약(http, sntp 등 각각각)

 

2) was란

웹서버에 있는 자료를 문서화 하기위한 WebAppServer를 의미한다

왜냐하면 서버에는 요구하는 자료에 대해서 미리 문서화하지 못하기 때문이다.

 

 

2. 회고 

 

 

 

 

<취업>

스스로 코딩하고 고민하며 말하며 아! 하는 느낌이다.

목표를 가급적 연봉을 잡지말자 신입딱지 떼고 하자 , 품귀현상임

신입딱지 최대한 빨리떼고 경력자 만들자

 

1. 연봉보다 내 가치가 쓰일수있는 곳(쓰임)으로 하자!(자바 스프링인데, 노드js이면 가치높인 곳이라고 보기 어려움)

2. 안전장치가 있어야한다. 사수유무 보다(사수는 가르쳐주는사람이 X) 누가 책임을지는지 책임 범위 내, 내 기술을 쓸수있는지! (사수가 책임을 져 주는지)

 

회사요구(JobRequirment) : 1순위 : p-o fit(=장기근속여부) / 2순위 : p-j fit (=skill) / 3순위 : 지속가능성 (직주, 체력)

 

궁하지않을 때 당당하다. 우울한사람보다 자신감있는 사람이 바람직, 궁할수록 우울해짐 티가남

 

'배움 __IL > TIL 1기' 카테고리의 다른 글

TIL : 20번째- 221226 [12-5-월]  (1) 2022.12.26
TIL : 19번째- 221223 [12-4-금]  (0) 2022.12.23
TIL : 17번째- 221221 [12-3-수]  (0) 2022.12.21
TIL : 16번째- 221220 [12-3-화]  (0) 2022.12.20
TIL : 15번째- 221219 [12-3-월]  (1) 2022.12.19