본문 바로가기
반응형

전체 글1065

[TIL] : 255 일일 배움을 위한 Today I Learned ! 소경관 오늘은 공지사항 전파를 구현했는데 중간에 잘 못 구현한 것을 깨달아 롤백시켰다. 그 외에 Validator와 error를 체크하는 로직도 다시 구현해 봤다. 2022.06.08 - [Project/소경관] - [소경관] : Validator와 공지사항 전파 2022. 6. 8.
[소경관] : Validator와 공지사항 전파 오늘은 Validator의 헷갈리는 부분을 잡고 공지사항 전파를 구현하면서 적용해 봤다. Validator를 사용하면서 여러 DTO를 한 번에 검증을 받을까 고민을 했지만 따로 하는 게 좋을 것 같다는 답변을 받아 따로 구현해 봤다. 문제는 오늘 공지사항 전파를 구현했는데 email 기준으로 공통 메시지를 보내는 것을 원하고 만들었는데 생각해 보니까 주민을 등록할 때 email을 받지 않았다.. 뭐에 빠졌는지 중요한 것을 깜빡하고 진행해서 오늘 구현한 것들 다 롤백 시켰다. 그리고 email 대신에 문자 api를 사용해서 문자로 전송하는 방안을 고민하고 있다. 일단 문자 api를 제공하는 싸이트에 회원가입하고 key까지 발급 받았다. 문서를 참고해서 내일 문자 기능을 완성시키는 것이 목표다. 2022. 6. 8.
[TIL] : 224 일일 배움을 위한 Today I Learned ! 소경관 임시 비밀번호를 생성하고 이메일로 쏴주는 로직을 구현했다. 많이 사용해 본 적이 없는 기술을 활용하려고 하다 보니 여러 자료를 찾아가며 했지만 그래도 오늘도 수확이 있어서 다행이라 생각한다. 2022.06.07 - [Project/소경관] - [소경관] : 비밀번호 찾기 구현하기 2022. 6. 7.
[소경관] : 비밀번호 찾기 구현하기 오늘은 비밀번호 찾기를 구현했다. 딱히 찾는다기 보다는 임시비밀번호 설정해서 이메일로 날려주고, JPA로 유저 정보 읽어와서 업데이트 해주는 게 전부인데 JPA로 처음 해 보다보니 빌더나.. 이메일 라이브러리 사용이나.. 익숙하지 않아 찾아보면서 내 프로젝트에 맞게 변경하여 적용하였다. private String address; private String title; private String message; MailDTO에서 메일 주소와 제목, 내용을 담을 파라미터를 만들어주었다. 이메일을 입력해주세요. 임시 비밀번호 전송 View에서는 이렇게 이메일 값을 입력하고 String userEmail = request.getParameter("address"); MailDTO mailDTO = userSer.. 2022. 6. 7.
[TIL] : 223 일일 배움을 위한 Today I Learned ! 소경관 코드를 구현하는 것 보다 어떻게 구현할 지 생각하는 시간이 더 길다. 이때, 길다고 대충 생각하고 코딩하면 나중에 완전 꼬여버린다. 대게 복잡한 오류는 이렇게 설계에서 삐끗해서 생기는 경우가 많았다. 오늘도 일단 해결은 했지만 이게 잘 짜여진 코드인가에 대한 의문은 남아있는 것 같다. 2022.06.06 - [Project/소경관] - [소경관] : 상세보기 구현하기 2022. 6. 6.
[소경관] : 상세보기 구현하기 오늘은 근무일지의 상세보기를 구현해봤다. 저번에 이렇게 저장 목록(컬렉션 명)을 쭉 리스트로 가지고 와서 뿌려주었는데 여기서 각 목록을 클릭하면 상세보기 가능한 페이지로 이동이 되도록 구현했다. 결과를 먼저 보면 아래와 같다. 이렇게 주차 차량과 미주차 차량을 확인할 수 있다. 먼저 컬렉션 네임을 기준으로 코딩해주었다. 찾아보니까 seq나 리스트 id값을 기준으로 가져와서 url이 이쁘게 /1 /2 /3 /4이렇게 남긴 하던데 나는 그냥 컬렉션 명을 기준으로 해주었다. 위 코드는 근무 일지 목록을 뿌려주는 코드인데 a태그를 넣어 href를 먹여주었다. 경로는 컬렉션 명으로 넣어주어 각 탭에 접근이 가능하도록 해주었다. @GetMapping("/detail/{checkCollectionName}") pub.. 2022. 6. 6.
[TIL] : 222 일일 배움을 위한 Today I Learned ! 소경관 MongoDB 컬렉션을 조회해 오는 부분을 살짝 리팩토링 해주었다. 2022.06.05 - [Project/소경관] - [소경관] : 완료 항목 보기 리팩토링하기 2022. 6. 5.
[소경관] : 완료 항목 보기 리팩토링하기 체크를 마치고 완료 항목 리스트를 볼 때 모든 컬렉션 리스트가 아니라 로그인 사용자의 컬렉션 리스트만 보이도록 바꿔주었다. for (String colNm : mongo.getCollectionNames()) { if (colNm == null) { colNm = new String(); } // 컬렉션 명을 _ 기준으로 잘라 String 배열에 담는다. String res[] = colNm.split("_"); // String 배열 중 ID값이 있는 부분과, 세션의 id값을 각 String 변수에 담는다. String result = res[0]; String sessionId = userDTO.getUserId(); // 두 String을 비교하여 같을 시 리스트에 담아준다. if (result.e.. 2022. 6. 5.
[TIL] : 221 일일 배움을 위한 Today I Learned ! 소경관 오늘 User에 관한 전체적인 로직을 다듬고 구현했다. 자세한 내용은 각 글을 참고하면 된다. 2022.06.04 - [Project/소경관] - [소경관] : JPA 회원 탈퇴 구현하기 및 회원 탈퇴 Session 처리하기 2022.06.04 - [Project/소경관] - [소경관] : 로그인 로직 오류 수정 2022. 6. 4.
[소경관] : 로그인 로직 오류 수정 저번에 구현한 로그인 로직에서 오류를 발견했다. 로그인 했을 때 세션 값을 사용하려고 했는데 여러 아이디로 로그인을 해도 세션 값이 갱신되지 않고 있었다. @GetMapping("/session-info") public String sessionInfo(HttpServletRequest request) { HttpSession session = request.getSession(false); if (session == null) { return "세션이 없습니다."; } session.getAttributeNames().asIterator() .forEachRemaining(name -> log.info("session name = {}, value = {}", name, session.getAttrib.. 2022. 6. 4.
[소경관] : JPA 회원 탈퇴 구현하기 및 회원 탈퇴 Session 처리하기 기능 중 회원에 관한 기능을 이번 휴일 내로 다 구현하기로 해서 천천히 만들고 있다. 이번에는 회원 탈퇴를 구현해야 하는데 일단, JPA를 사용하는 것이 처음이라 여러 예시를 찾아보고 몇 가지를 테스트한 뒤에 구현하고 성공했다. @GetMapping("deleteUser") public String deleteUserPage() { return "myInfo/deleteUser"; } 먼저 탈퇴 페이지를 보여주는 Controller는 간단하게 만들어주었다. 따로 처리해 줄 필요가 없다. 회원 탈퇴 경고나 재확인 등을 처리하지 않고 바로 페이지에 경고 문구와 함께 클릭 시 바로 탈퇴 처리가 되도록 설정해주었다. 때문에 View에서 뭔가 받아 올 필요는 없고 버튼을 눌렀을 때 바로 회원탈퇴 로직을 타도록 해.. 2022. 6. 4.
[TIL] : 220 일일 배움을 위한 Today I Learned ! 소경관 오늘은 마이페이지를 만들면서 thymeleaf 사용에 대해 다시 공부하게 되었다. input 태그와 session의 활용과 th:field의 사용에 대해 체크하고 구현했다. 2022.06.03 - [Project/소경관] - [소경관] : thymeleaf input에 Session값 가져오기와 input에 Session값을 입력 받아 Controller에 넘기기 2022. 6. 3.
[소경관] : thymeleaf input에 Session값 가져오기와 input에 Session값을 입력 받아 Controller에 넘기기 마이페이지를 만들면서 동시에 수정도 가능하게 하려고 로그인한 사용자의 정보를 View에 띄워줄 수 있는 코딩을 했다. 직접 아이디 값하고 비교해서 다시 쿼리를 날려 데이터를 가져와 View에 쏴주는 사람도 있는 것 같지만 나는 일단 세션 정보에 담아둔 값을 그대로 View에 쏴주고 그 값에 수정을 한 경우에 그대로 값을 다시 Vo에 담아 가져오는 로직을 구현해봤다. @GetMapping("updateInfo") public String updateInfoPage(Model model) { model.addAttribute("userVo", new UserVo()); return "myInfo/updateInfo"; 먼저 페이지를 보여주는 Controller이다. input 값을 담을 Vo 객체 말고 따로.. 2022. 6. 3.
[TIL] : 219 일일 배움을 위한 Today I Learned ! 소경관 요즘에는 하루 종일 프로젝트만 하고 있다. 이것 저것 코딩하고, 삭제하고, 수정하고 정리가 안 된 코드들이 많아 전부 다 올리진 못 하지만 간단하게 체크해 볼 수 있는 부분은 정리해서 올리고 있다. 2022.06.02 - [Project/소경관] - [소경관] : 회원가입과 로그인 로직 수정하기 msa msa 프로젝트를 위해 git에서 이슈관리를 연습하고 있다. 마일스톤과 이슈를 잘 사용하는 방법에 대해 연습하면서 git flow 프레임워크를 사용하는 방법에 대해서도 익혀볼 예정이다. 2022. 6. 2.
[소경관] : 회원가입과 로그인 로직 수정하기 회원가입과 로그인 로직을 간단하게 수정했다. 원래 Repository 부분을 JpaRepository를 상속 받아 사용하지 않고 아래와 같이 별도의 클래스를 만들어 Spring Bean을 등록하고 EntityManage 의존성을 주입받아 사용했다. public List findById(String userId) { return em.createQuery("select m from UserEntity m where m.userId = :userId", UserEntity.class) .setParameter("userId", userId) .getResultList(); } public List findByEmail(String userEmail) { return em.createQuery("select .. 2022. 6. 2.
[TIL] : 218 일일 배움을 위한 Today I Learned ! Git 간단하게 git을 조금 더 활용할 수 있는 방안에 대해 공부했다. msa 프로젝트를 간단하게 만들어 보려다 먼저, git을 더 활용해서 만들어 보고 싶어서 살짝 공부해 봤다. 2022.06.01 - [DevOps/Git] - [Git] : issues와 milestones으로 프로젝트 관리하기 2022. 6. 1.
[Git] : issues와 milestones으로 프로젝트 관리하기 msa 토이 프로젝트를 간단히 만들면서 git flow 또한 적용해 보고 싶었다. 그 전에 간단하게 먼저 이슈와 마일스톤을 사용하는 방법에 대해 알아보고 적용해 보았다. 어느 정도 혼자 테스트 해 보고 진행했다. FirstService와 SecondService는 사전에 테스트 해 본 마일스톤이다. 이번에는 FrontService를 만들어 본다. New milestone을 눌러 새로운 마일스톤을 생성해 준다. 마일스톤 이름과 만료일자, 설명을 적어준다. 혼자 해 보는 것이라 따로 만료일을 적어주진 않았다. 이렇게 생성하고 나면 FrontService가 마일스톤 탭에 잘 나타난다. 아까 설명도 간단하게 적어주어서 같이 표시된다. 빨간 박스에 밑 줄을 보면 complete는 0%, open과 closed도 .. 2022. 6. 1.
[TIL] : 217 일일 배움을 위한 Today I Learned ! 소경관 컬렉션을 드롭해 등록한 모든 것을 초기화 시키는 로직을 간단하게 구현해 주었다. 2022.05.31 - [Project/소경관] - [소경관] : 등록한 차량 초기화 2022. 5. 31.
[소경관] : 등록한 차량 초기화 등록한 차량 초기화하는 기능을 구현했다. 사실 등록한 차량을 초기화 하는 것 자체는 어렵지 않다. 컬렉션만 날려주면 되서 MongoDB 라이브러리에서 제공하는 템플릿을 통해 drop만 해주면 된다. mongo.dropCollection("Car"); 코드로 보면 이렇게 한 줄이면 되고, 리턴은 boolean으로 나중에 true, false로 성공, 실패 여부만 따로 체크해 줄 수 있도록 했다. 2022. 5. 31.
[TIL] : 216 일일 배움을 위한 Today I Learned ! 소경관 테서렉트를 사용해서 ocr 기능을 완성시켰으나 떨어지는 인식률과 몇 가지 문제가 있어서 체크하는 중이다. 또, ec2 프리티어 기간 만료로 새로운 인스턴스를 생성했으나 오늘 보니까 외부 접속과 테이블에 문제가 있어서 해결하고 기존 ec2 인스턴스와 탄력적ip를 제거하고 새로운 프리티어 인스턴스로 재접속 연결을 해두고 정상 동작까지 확인하고 마무리했다. 2022.05.30 - [Project/소경관] - [소경관] : ocr 기능 완성과 몇 가지 문제 체크 2022. 5. 30.
[소경관] : ocr 기능 완성과 몇 가지 문제 체크 ocr 기능을 완성하고 깃 허브에 PR 해뒀다. 문제가 몇 가지 있는데 일단 View에서 img를 받아 저장한 다음에 읽는다는 것과 매우 나쁜 ocr 인식률이 문제이다. 전자의 문제는 어떻게 해결을 할 수 있을 것 같은데, 후자의 문제는 진짜 문제다. opencv를 좀 더 공부해서 view에서 받아온 이미지를 따로 읽기 좋게 처리해주고 그 다음에 다시 ocr 인식을 시켜보는 방안을 고민중이다. 아마 이렇게 해야 할 것 같다. 절대 테서렉트의 ocr 기능만으로는 인식률을 올리지 못 할 것 같다. 소스 코드는 아직 정리를 못 해서 못 올리나 깃 허브에서 오늘 날짜로 확인이 가능하다. 2022. 5. 30.
반응형