소개
안녕하세요 😊
제가 아는 내용을 이해하기 쉽고, 재미있게 설명드려 여러분들이 성장하실 때 행복함을 느끼는
공부하는 개발자 최태현입니다.
- (현) 스타트업 백엔드 개발자
- (전) 우아한형제들 백엔드 개발자
- (교육활동) Next Step 리뷰어 다수 참여, 공기관 & 스타트업 경진대회 강사 및 멘토, 스파르타 코딩클럽 멘토
강의
전체6수강평
게시글
질문&답변
2024.05.12
MVC vs API
안녕하세요 JMJ님! 🙂 결론부터 빠르게 말씀드리면 상황에 따라 모두 다르다고 생각합니다! 혼자서 프론트엔드까지 포함한 프로젝트를 진행할 때, 그 프로젝트의 목적과 JMJ님이 처해 계신 상황에 따라 모두 다를 수 있다고 생각하는데요! 몇 가지 경우에 대한 제 생각을 말씀드려보면 다음과 같습니다. 취업을 준비하기 위한 프로젝트이다. 그런데 내가 가려고 하는 회사가 JSP(or Thymeleaf) 같은 템플릿엔진을 사용하고 있다. 템플릿 엔진을 추천합니다. 이때 가시고자 하는 회사가 사용하는 템플릿 엔진을 동일하게 사용하면 더욱 좋다고 생각합니다. 취업을 준비하기 위한 프로젝트이다. 그런데 내가 가려고 하는 회사가 react (or vue)를 사용하고 있다. react (or vue)를 추천합니다. 👍 이때도 마찬가지로 react or vue를 맞춰주면 좋아요! 프로젝트로 돈을 조금이라도 벌어보려고 한다. (즉, 사업과 연결해보려고 한다.) react를 추천합니다. REST API + react 구성을 사용해 추후 앱으로 사업을 확장할 때도 훨씬 용이합니다. 템플릿 엔진과 react 모두 사용해본적이 없다. react를 추천합니다. 사실 백엔드 개발자 대부분은 리액트로 간단한 화면 정도는 쉽게 만드실 수 있습니다. 그리고 템플릿 엔진과 react 모두 HTML, CSS는 어차피 동일하게 알아야 하고, 이제 JS 기능을 더 사용할지, react 라이브러리의 기능들을 익힐지의 차이인데요! 둘 모두 경험이 없으시다면, 먼저 react를 사용해보시는 것도 좋다고 생각합니다. (제 개인적인 생각으로는) react가 더 많이 사용되는 것 같거든요! 템플릿 엔진 or react 둘 중 하나를 사용해본적이 있다. 그렇다면 사용해보신 기술을 쓰셔도 좋다고 생각합니다! 😊 추가적인 상황에 따라 판단이 달라질 수 있겠지만, 지금 생각나는건 이정도네요! 답변이 도움이 되었으면 좋겠습니다. 감사합니다! 🙇
- 1
- 1
- 46
질문&답변
2024.05.11
과제 5번 cannot find symbol (sequencedMap) 오류
안녕하세요 혜리님! 🙂 워밍업 클럽을 참여해주시고, 깜짝 Live Q&A도 참여해주셔서 감사합니다. 제가 강의를 끝내고 말씀드렸던 출력부를 조금 더 개선하며 적용해둔 SequencedMap 은 자바 21 에서 새로 나온 기능입니다! 따라서 프로젝트 자바 버전을 21버전으로 올려주시면 사용할 수 있을거에요! 만약 낮은 자바 버전을 쓰고 계시다면, 순서 보장이 가능한 Map을 쓰시거나 아예 List에 객체를 담는 식으로 만드시면 될거에요! 👍 혹시나 Sequence Collection에 대해 더 자세히 알아보고 싶으시면, 인터넷에 검색해보셔도 좋고, https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-9%EB%B6%80%ED%84%B0-21%EA%B9%8C%EC%A7%80 와 같은 강의를 확인해보셔도 좋습니다. (14강에서 다루고 있어요!) (사진) 답변이 도움이 되었으면 좋겠습니다. 감사합니다! 🙏
- 1
- 1
- 27
질문&답변
2024.05.11
MVC와 API의 차이점
안녕하세요 JMJ님! 🙂 정말 좋은 질문이세요~ 👍 상당 부분 맞게 이해하셨는데요, 살짝 다른 부분이 있습니다! 바로 우리가 만든 REST API 역시 스프링 MVC 프레임워크를 동일하게 사용하고 있다는 거에요! 살짝 긴 내용인데 최대한 이해하기 쉽게 설명해 보자면 다음과 같습니다! 원래 "웹 서버"는 서버에서 "화면 (즉, HTML)" 자체를 사용자에게 전달하는 역할을 수행해 왔습니다. 예시로, 아래와 같은 '템플릿'을 만들어 놓고 '템플릿'에 들어가는 값들만 바꿔서 사용자에게 보여주는 거에요. {name}님 방문을 환영합니다! 이때 {name}에 들어가는 값을 Controller 가 처리해서 Model 에 담고, 이 템플릿(= View ) 을 사용해서 유저에게는 최태현님 방문을 환영합니다! 라는 글자가 보이는거죠. 하지만, 2010년대 중반이 넘어가며, ajax 기술과 react.js 같은 프론트엔드 기술의 발전, AOS / IOS와 같은 "앱"이라는 애플리케이션이 새로 생겨나며 기술의 패러다임이 약간 변화했습니다. 위와 같은 템플릿을 만들어 놓는게 아니라, JS 코드를 이용해 REST API를 호출하고, 그 데이터를 처리하는 방식으로 바뀐 것이죠. 그렇게 하면 훨씬 더 유려한 프론트엔드 라이브러리를 사용할 수 있을 뿐만 아니라, 앱에서도 REST API를 동일하게 사용해 서버를 공통적으로 활용할 수 있게 됩니다. 예를 들면 아래와 같은 느낌으로 프론트엔드 코드가 바뀐거에요! (동작하는 코드는 아니고, 예시 코드입니다 🙂 ) ajax.get("https://xxx-api.com/name") .success(res => id가 welcome-message에 다음과 같은 문자열을 넣는다 res.name님 방문을 활용합니다 ) .error(err => ...) 이런 경우는 스프링 입장에서는 Controller 가 바로 응답을 반환하게 됩니다. (우리가 이런 API를 만들어보았죠!) MVC를 사용하긴 하지만 , Model과 View를 활용하는 방식이 아닌겁니다. 즉, 한 줄 요약 드려보면, REST API를 만들더라도 스프링 MVC를 사용하지만, Model / View / Controller 중 Controller만 사용한다! 라고 말씀드릴 수 있습니다. 그렇다면 언제 Model + View + Contoller를 모두 사용하고, 언제 Controller만 사용 (= REST API 사용) 할까요? 몇 가지 기준이 있겠습니다만, 아래와 같은 고민을 하게 될 수 있습니다. 프론트엔드 코드를 지금 혹은 추후 별도로 운용할 것인가 Yes -> REST API No -> 템플릿 엔진 지금 혹은 추후 "안드로이드 / IOS 앱"도 개발할 것인가? YES -> REST API No -> 템플릿 엔진 마지막으로 MVC를 사용하면 프론트엔드의 역할(?)이 없어지는게 맞습니다! 물론 템플릿 엔진을 개발할 때 프론트엔드의 도움을 받긴 하겠죠! 그곳에 css와 html이 들어가닌 하니까요! 하지만 모던한 의미의 프론트 엔드 (react, vue 등) 기술을 사용하지 않게 됩니다. 답변이 도움이 되었으면 좋겠습니다. 감사합니다! 🙏
- 0
- 1
- 46
질문&답변
2024.05.07
수료증
안녕하세요! mins199600님! 🙂 수료증같은 경우 인프런 안내를 확인해보니, 수료증은 강의를 100% 완강하신 후 강의 완료 버튼을 누르시면 자동으로 발급되며, 메인 홈페이지 우측 상단 [프로필 아이콘 > 내 학습 > 수료증 메뉴] 에서 확인이 가능합니다. 수료증에는 아래 내용을 포함하여 발급되며, 데이터는 임의로 변경하실 수 없습니다. 다른 곳에서도 증빙할 수 있는 신의성있는 서류임을 입증하기 위해서 임의로 수정할 수 없는 점 양해 부탁드려요. ❶ 성명 ❷ 완강한 강의명 ❸ 교육 이수시간 ❹ 교육 시작일 & 종료일 ※ 단, 수료증은 유료 또는 일부 무료 강의에 한해 발급되는 점 참고 부탁드려요. 혹시 수료증 출력이 안될 경우, 인쇄 옵션에서 ‘배경 그래픽 표시’를 선택해 주시면 이미지가 정상적으로 작동 되실 거에요! 라고 합니다! https://www.inflearn.com/faq 에서 확인하실 수 있어요. 감사합니다! 🙏
- 0
- 1
- 64
질문&답변
2024.05.07
34강 postman에서 send 하고 status=200 -> mysql에서 조회가 안되요
안녕하세요 정현님! 🙂 질문 주셔서 감사합니다. 질문 주신 내용에 대해 하나씩 답변 드려 볼게요! [1. @Transactional 에서 commit 하는건지요?] 네 맞습니다. @Transactional 이 적혀 있는 함수가 (외부 클래스를 통해) 실행되고, 함수의 코드가 모두 끝나게 되고 Exception이 나오지 않았을 때 commit이 이루어집니다. [2. 왜 mysql에서 commit을 따로 해줘야 할까요?] 우선 어떤 프로그램을 통해 mysql에 접근하고 계신지 확인이 필요할 것 같습니다! 만약 mysql에 접근하기 위한 프로그램이 자동으로 '트랜잭션'을 시작하고 있다면, commit이나 rollback을 하기 전까지 다른 트랜잭션 (ex. 우리의 API) 에서 변경한 내용을 확인하지 못할 수도 있습니다. 다만, 일반적으로는 mysql에 접근하기 위한 프로그램에서 단순히 조회를 할 때 '트랜잭션'을 하지는 않기에 굳이 auto-commit이나 별도의 commit을 하지 않고도 업데이트된 내용을 잘 확인할 수 있어요! CLI를 통해 접속하는 것도 마찬가지죠. 만약 지속적으로 commit을 하셔야 하는게 불편하시면 mysql에 접속하는 도구를 바꿔보셔도 좋을 것 같습니다. 답변이 도움이 되었으면 좋겠습니다. 감사합니다! 🙏
- 0
- 1
- 48