이번 주는 월~수까지 추석 연휴였기 때문에 목~금 이틀만 수업을 들었어요.
간만에 수업 참여해서 그런지 다시 적응하는데 시간이 좀 걸렸습니다...^^
이번 주말에는 피곤함을 해소하기 위해 공부보다 휴식을 취하는 비중이 더 컸습니다.
솔직히 제가 봐도 푸바오처럼 생활한 것 같아요!
에너지도 보충했으니 다시 열심히 할 일을 해야겠습니다!!
화이팅~~!!
● 성취
이번 주에는 목, 금 빠짐없이 출석했던 게 가장 큰 성취라고 생각합니다!
하루 정도 빠지고 싶다는 나태한 마음이 들기도 했지만, 굴하지 않고 all-출석을 한 제 자신이 자랑스럽게 느껴져요 ^_^
티끌 모아 태산이라는 말처럼... 사소할 정도로 일상적인 요소들에 대해서도 칭찬하다 보면 에너지가 생기더라구요!
그래서 저는 스스로에게도, 타인에게도 칭찬해 주는 것을 좋아해요!
가끔은 날카로운 피드백도 필요하지만, 일단 에너지가 있어야 뭐라도 할 수 있잖아요~~
남은 날들도 힘내서 공부해 보겠습니다!
앞으로 해야 할 일들이 꽤 많이 남아서 차근차근 접근해야겠습니다~!
● 학습 & 개선
이번 주부터 본격적으로 최종 프로젝트를 시작했기 때문에 수업 진도를 나가지는 않았습니다.
따라서 앞으로는 학습과 개선을 묶어서 작성하게 될 것 같습니다!
이번에는 개인적으로 부족하다고 생각하는 영역(백엔드 관련 지식, html)을 추가로 공부했습니다.
# 백엔드 : WAS (Web Application Server)
초기 웹 서비스처럼 단순하게 웹 서버 연동하는 방식을 선택하면, 다양한 동적 컨텐츠를 제공하는 데에 한계가 있습니다.
왜냐하면 웹 서버는 사용자의 요청을 받아서 정적 컨텐츠(HTML, CSS, 이미지 등)를 전달하는 역할만 하거든요.
즉, 미리 짜여진 시나리오 밖의 요구가 들어오면 대처하기 어렵다는 단점이 있어요.
웹 서버에 구구단 자료만 저장했다고 가정해 보겠습니다.
이런 경우에 사용자가 11 X 11에 해당하는 값을 요구하면 웹 서버가 응답하기 어렵겠지요?
왜냐하면 해당 범위에 해당하는 연산값이 정적 콘텐츠로 저장되어 있지 않으니까요!
그래서 WAS를 사용하는 겁니다.
WAS를 쓰면 사용자 요청에 따라 유동적으로 로직을 연산한 후, 필요한 내용만 DB에 꺼내서 사용할 수 있거든요.
개인적으로 Django에서 배웠던 MVT 방식을 떠올리니까 이해하기 더 쉬워졌어요.
View에서 연산을 수행하고, Model에서 해당 데이터를 꺼내온 후에 Template에서 반영하여 사용자에게 응답했거든요.
이것이 가능했던 이유는 Django 내장 서버에 웹 서버와 WAS 서버를 모두 포함하고 있었기 때문이랍니다.
+) 물론 Django 내장 서버는 단순하기 때문에, 실제 서비스에서는 Gunicorn과 Nginx 등의 추가 셋팅이 필요합니다!
정리하자면 WAS는 동적 컨텐츠에 강하고, 웹 서버는 정적 컨텐츠에 강하다는 특징을 갖고 있어요.
그래서 현업에서는 웹 서버와 여러 대의 WAS를 함께 사용한답니다!
이렇게 하면 웹 서버를 사용함으로써 정적 콘텐츠를 캐싱하여 성능을 높일 수 있을 뿐만 아니라, WAS를 통해 비즈니스 로직을 분리하여 처리할 수 있기 때문에 관리가 편하다는 장점이 존재합니다~
아 그리고 웹 서버의 위치는 WAS보다 앞에 둡니다!
이렇게 하면 웹 서버가 일종의 탱커 역할을 함으로써 DB 및 WAS까지 공격이 덜 닿게끔 할 수 있거든요.
따라서 웹 서버와 WAS에 대해 둘 다 알고 있어야 합니다 ^^
# HTML : <form> 태그
'<form> 태그'는 사용자에게 입력 양식을 제공함으로써 값을 전달받고 싶을 때 주로 사용합니다.
하단에 대표적인 <form 태그> 사용 예시를 첨부했습니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form>
<label for="name">이름</label>
<input id="name" name="my-name" type="text">
<br><br>
<label for="age">나이</label>
<input id="age" name="my-age" type="number">
<br><br>
<button type="submit">제출</button>
<button type="reset">초기화</button>
</form>
</body>
</html>
이렇게 작성한 후, 웹 브라우저를 사용하여 결과물을 확인하면 요런 결과물을 확인할 수 있어요.
이름 '냥냥냥'과 나이 5는 제가 임의로 입력한 것이므로 신경쓰지 않으셔도 됩니다...^^
여러분이 사용하고 싶은 값을 적으시면 됩니다!
위 예시는 눈에 보이는 형태로 <form> 태그를 사용했습니다.
<form> 태그는 눈에 보이지 않는 형태로도 이용 가능한데요.
이는 GET 요청으로 받아온 값을 저장할 때 쓰이기도 합니다.
+) 사용자 눈에 보이지 않게 숨김 처리해서 저장하는 것이라 생각하면 됩니다!
아래에 예시 내용을 첨부하겠습니다~
(... 생략 ...)
<!-- 페이징처리 끝 -->
</div>
<form id="searchForm" method="get" action="{% url 'index' %}">
<input type="hidden" id="kw" name="kw" value="{{ kw|default_if_none:'' }}">
<input type="hidden" id="page" name="page" value="{{ page }}">
</form>
{% endblock %}
수업 시간에 배웠던 Django 예시 중에 이런 내용이 있었습니다.
여기서는 키워드(kw) 값과 페이지(page) 값을 눈에 보이지 않는 form에 저장한 후, index 명칭에 해당하는 url에 GET 요청을 하라는 의미입니다.
form 태그를 처음 배웠을 때, type 속성의 hidden 값 존재 이유가 궁금했는데 드디어 궁금증이 해소되었습니다!
이번 주에는 이틀만 수업을 나가서 공부한 내용이 평소보다 적네요...!
흐아... 마음을 다시 잡은 후에 집중을 해야겠습니다!
공부는 정말로 아무리 해도 끝이 없는 것 같아요.
그런 면 때문에 더 재밌기도 하니까...^^ 긍정적으로 생각하면서 기운내야겠습니다!
+) 부족한 부분이 있으면 댓글로 말씀해 주세요! 겸허한 마음으로 더 공부하겠습니다.
'활동 > SK네트웍스 Family AI 캠프 2기' 카테고리의 다른 글
SK네트웍스 Family AI 캠프 2기 : 21th week (10월 1주차) (0) | 2024.10.07 |
---|---|
SK네트웍스 Family AI 캠프 2기 : 20th week (9월 4주차 + 9월 회고) (3) | 2024.09.30 |
SK네트웍스 Family AI 캠프 2기 : 18th week (9월 2주차) (12) | 2024.09.17 |
SK네트웍스 Family AI 캠프 2기 : 17th week (9월 1주차) (4) | 2024.09.09 |
SK네트웍스 Family AI 캠프 2기 : 16th week (8월 5주차 + 8월 회고) (10) | 2024.09.02 |