항해99 63

20220127 개발일지 #원페이지 게시판 controller/service 분리

오늘은 3주차 마지막날이다. 개인과제는 이미 제출했고, 팀과제는 수정/추가했다. 알고리즘 문제를 몇 문제 풀고, 어제부터 보기 시작한 Spring 심화편 강의를 이어들었다. 심화편 강의에서 이번에 Spring 시작하면서 느꼈던 의문들이 거의 해소되었다. 내용도 많고 복잡하지만, 왜 Spring을 사용해야 하는지에 대해 Spring을 안쓰는 것부터 시작하는게 좋았다. controller나 service, repo의 경우에도 먼저 안써보고 쓸 경우 어떻게 바꿀 수 있는지, 스프링의 중요 개념인 DI를 쓰면 어떻게 코드가 변하고 장점은 무엇인지 비교해주어서 좋았다. 1주차 강의를 오늘까지 듣고 마무리하고, 배운 내용을 바탕으로 추가로 만든 원페이지 게시판 코드를 일부 수정했다. 처음에 멀티페이지로 만들면서 좋..

20220126 개발일지 #게시판 만들기(원페이지)

다른 분들의 도움으로 원페이지 게시판 만들기도 성공했다. 게시글 1개 조회하기가 구현이 잘 안되서 계속 문제였는데, 우선 어제 팀원분이 모달로 띄우셨다고 해서 참고해서 만들었다. 게시글 목록을 불러오는 fuction 안에 모달을 포함해서 모달 실행 시 상세페이지가 모달로 보이는 형태다. 이렇게 하면 controller에서 게시글 1개를 불러오기 위한 GetMapping을 별도로 만들지 않아도 되고, html에서도 목록 불러오기 function 하나로 해결할 수 있다. 그런데 모달의 특성인지, 이렇게 하면 게시글의 제목, 작성자, 작성일이 테이블안에 제대로 들어가지 않았다. 오늘 스터디하고나서 show/hide로 하신 분의 코드를 보았다. 처음에 내가 생각했던 것처럼 목록 불러오기에서 onclick(혹은 ..

20220125 개발일지 #서버시간 변경하기

오전에는 어제 만든 게시판을 배포했다. 어제 다른 팀원분께 들은 것처럼 사용하던 ip로 배포하니 포트포워딩이 안됬는데, 아마 처음에 서버에 스파르타에서 제공하는 기본값 설정 파일을 설치하면서 포트포워딩이 포함되서 그런가 싶기도 하다. AWS에서 새로 ip를 만들고 자바 사용을 위해 OpenJDK를 설치하고 sudo apt-get update sudo apt-get install openjdk-8-jdk java -version 포트포워딩을 하였다. (기본 80포트를 입력하면(즉, ip만 입력) springboot 기본포트인 8080으로 포워딩) sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080 그리..

20220124 개발일지 #게시판 만들기(멀티페이지)

오늘은 이번주 개인과제인 게시판만들기를 다시 시작했다. 지난주 토요일에 개인 과제를 진행하면서 단일페이지(index.html)를 구현하지 못해서, 멀티 페이지로 구현하였다. 기본적으로 https://gonyda.tistory.com/3?category=803529 을 참고했다. github: https://github.com/paran22/springprac 1. 개발환경 구축 IntelliJ Java 8 Gradle MySQL 2. 라이브러리 JPA Thymeleaf Lombok DevTools 3. 설정 application.properties spring.datasource.url=엔드포인트:3306/myboard spring.datasource.username= spring.datasource.p..

20220122 개발일지

오늘은 Spring강의를 들으면서 이번주 개인과제인 게시판 만들기를 시작하였다. 구현해야하는 API는 다음과 같다. #게시판 API 설계하기 기능 Method URL Return 게시글 목록 조회하기 GET /api/boards List 게시글 조회하기 GET /api/boards/{id} Long 게시글 작성하기 POST /api/boards boards 기능 구현 자체는 오래 걸리지 않았다. 그런데 html로 구현하는데서 시간이 오래걸렸다. 우선 게시글 목록 조회와 작성은 static 폴더 안에 있는 index.html로 비교적 금방 구현했다. 모달을 사용하는 부분에서 조금 해맸는데, 부트스트랩과 미니프로젝트 코드를 참고해서 작성했다. 그런데 문제는 게시글 상세 조회하기 페이지였다. 처음에는 모달로 ..

20220120 개발일지(WIL)

이번 주차는 알고리즘 기초 주간이었다. 개발일지라기보다는, 공부일지에 가까운 것 같다. 알고리즘 주간이었지만 실제 알고리즘을 공부했다기 보다는 JAVA 기본 문법을 익히는 시간이었다. 선정된 문제들은 프로그래머스 level 1 단계 문제들로, 찾아보니 1단계는 알고리즘에 대한 지식없이도 기본 문법을 가지고도 풀 수 있는 문제라고 한다. 처음에 JAVA라는 언어에 매력을 느꼈던 부분 중 하나는 타입과 관련된 부분이었다. 그런데, 실제 공부하면서 특히 초창기에 가장 힘들었던 부분도 타입이었다. 타입에 따라서 사용할 수 있는 메소드가 너무 달랐고, 문제에서 요구하는 타입으로 변환해서 반환하는 것도 힘들었다. 특히 처음에는 자바가 어떤 언어인지, 메소드는 어떻게 쓰는 건지, 어떤 식으로 동작하는지 파악이 안되서..

20220113 개발일지

오늘은 미니프로젝트 마지막날이다. 프로젝트 진행 속도가 빠른 편이라 크게 부담이 되지는 않았다. 마지막날 과제 제출과 회고 멘토링을 위해 필요한 작업들을 진행했다. 전날에 팀원 분이 좋은 유튜브 강의를 공유해주셔서, 깃을 터미널로 연습해볼 수 있었다. 오늘 해야할 일 중에 코드에 주석을 작성하는 것이었는데, 각자 파일마다 여러 곳을 맡았고, 깃허브를 연습할 겸 깃을 이용하여 파일들을 주고 받았다. 파이참을 켜놓고 작업하고 있는 중에도 풀을 하면 변경사항들이 바로 반영되는 것을 확인할 수 있었고, 다행히 큰 충돌이 발생하지는 않았다. 필요하면 변경사항까지 바로 볼 수 있어서 좋았다. 소스트리를 쓸 때 햇갈렸던 부분이 오히려 터미널에서는 직관적으로 보여 개념 이해가 더 잘 된 것 같았다. 시각적으로 상황을 ..

#지역 선택할 때 '시도' 선택 후 '시구군' 선택하기

공공데이터로 공개된 서점 데이터들을 추가하면서 지역이 다양해졌다. 서울, 경기, 인천, 경남 등이 데이터로 포함되면서 검색 창에서 지역 선택 옵션이 너무 많아졌고 길어졌다. 이전 기수 프로젝트에서 1차 2차로 나누어서 옵션을 선택할 수 있게 한 걸 봐서 비슷한 모양으로 구현하고 싶었다. 관련 키워드로 검색해서 코드를 찾고, 일부 수정해서 반영하였다. {#지역 1차 구분하기 위한 함수#} function categoryChange(e) { {#각각의 값이 입력될 때마다 #sigun_name에 나타나는 값임#} {#DB에 없는 값은 여기서 제외함#} var region_a = ['강남구', '강동구', '강북구', '강서구', '관악구', '광진구', '구로구', '금천구', '노원구', '도봉구', '동대..

#네이버 지도로 위치정보 보여주기

추가로 지급된 강의 웹개발플러스에 네이버 지도 API를 사용하는 부분이 있었고, 이전 기수의 미니프로젝트에도 지도 사용한 걸 봐서 네이버 지도는 꼭 사용해보고 싶었다. 사실 손을 댄건 2일차부터였는데, 시도하다가 중간 중간에 막히기도 했고, 당장 해야할 것들이 먼저 눈에 들어와서 제대로 못하고 있었다. 급한 부분들은 거의 완료가 된 상태라서 다시 시도하였다. 나중에 생각해보면 일과 끝나고 9시 이후나, 따로 시간을 분배해서 쭉 시도했으면 더 좋았을 것 같다. - 선택한 지역의 전체 서점들을 지도로 표시하는 것 - 책방 세부정보에 개별 지도를 넣는 것 중에 고민했는데, 세부정보 페이지에 공간이 많이 남기도 했고, 후자가 조금 더 간단해 보여서 시도하였다. 세부정보 페이지에 이미 서버에서 책방 목록 정보를 ..

20220111 개발일지

(프로젝트 막판에 몰아서 작성하고 있어서 정확한 날짜기록은 틀릴 수 있음!!) 두번째 날 아침, 전체적인 기능은 모두 구현이 되서 우선 파일들을 병합하기로 했다. Git을 사용해보려고 했는데 아직 미숙해서 push/pull로는 파일을 끌어오지 못하고 단순히 github에 올리거나 카카오톡 단톡방을 이용해서 파일을 주고받았다. 중간에 로그아웃 기능이 실현되지 않는 문제가 있었는데, 기능이 실현되지 않는 페이지에 필요한 스크립트가 없어서 발생한 문제였다. 다른 사람이 수정한 파일을 받아왔을 때 라이브러리 버전 문제로 실행이 안되는 경우도 있었다. ☆ 기능구현에 필요한 패키지 정보(버전 포함), 스크립 등은 프로젝트 시작할 때 미리 어느정도 틀을 갖추어 놓거나, 변경/특이사항을 미리 팀원들과 공유하는 게 좋을..