본문 바로가기

전체 글146

LMS Web 클론코딩 13 (이미지 업로드) 2024/02/04 이제 게시글에 이미지를 업로드하는 기능을 추가할 것이다. 이미지 업로드는 db에 이미지 원본을 넣어 저장을 하는 것이 아니라 이미지 데이터의 정보를 저장하고, 프로젝트에서 이미지를 필요로 할 때 DB에 저장된 이미지 데이터 정보(path, name, size 등)를 통해 가져온다. local서버에 이미지를 저장하는 방법도 있고, 다른 서버를 대여하여 올리는 방법도 있다. 대표적으로는 aws의 s3를 많이 사용한다. 일단 나는 이미지 업로드 기능 자체를 구현하는것이 목표였기에, 내 local에 이미지를 저장하는 방법으로 진행했다. 1. PostFile 도메인 생성, db table 생성하기 package com.example.myapp.domain; import lombok.Getter.. 2024. 2. 7.
LMS Web 클론코딩 12 (검색기능 구현, Date 나타내기) 2024/2/2 검색기능을 구현하기 위해 어떻게 구현할지에 대해서 생각을 먼저 해보았다. 일단 두 가지 방법을 생각해 봤는데 첫 번째는 검색어를 입력하면 화면 전체를 다시 불러와서 해당 검색어가 있는 post-list를 course페이지에서 보여주는 것이고, 두 번째는 ajax를 이용하여 비동기 방식으로 처리하여 바로 post-list를 보여주는 방법이다. 첫 번째 방법이 좀 더 쉬울 것 같아 일단 첫 번째 방법을 선택했다. 검색기능구현 1. Course 페이지 Search form action으로 감싸주어 search 버튼을 눌렀을 때, get요청이 lms/search-posts로 요청되도록 구현한다. 2. PostController @GetMapping("lms/search-posts") public.. 2024. 2. 2.
LMS Web 클론코딩 11 (이전, 다음 페이지 이동 버튼 구현) 2024.01.30 오늘은 글 상세 보기 페이지에서 다음 글로 넘어가는 버튼과 전 글로 넘어가는 버튼을 구현하는 방법을 알아보자. 다음, 이전 글이 있다면 버튼이 활성화되어있고 없다면 비활성화되도록 구현할 것이다. 1. 먼저 html에서 Prev 버튼과 Next버튼을 만들어준다. Next > Prev버튼과 Next버튼 각각 활성화 된 모습과 비활성화된 모습을 만들어 준다. 2. Service를 만들어준다. 나의 경우엔 PostService에서 post관련 service를 관리한다. private final PostRepository postRepository; @Autowired public PostService(PostRepository postRepository).. 2024. 1. 30.
LMS Web 클론코딩 10 (JDBC Template로 CRUD 구현하기 2) 2024.01.28 오늘은 수정기능을 추가했으며, 또 수정하기 페이지로 넘어갈 시 기존 데이터(제목, 내용)가 담겨있도록 구현을 했다. mapping 할 때 경로설정에서 자꾸 애를 먹어서 시간이 꽤 많이 들었다. 결국 이렇게 해줬는데 최선의 방법인지는 아직 잘 모르겠다. controller @PostMapping("/lms/editPost") public String editSavePost(@RequestParam Long id, @RequestParam String title, @RequestParam String content) { 일단 CRUD 기능은 완성했으니, 빠르게 수정하기 페이지 front 수정 후 검색 기능, 파일 업로드까지 구현할 예정이다. 또 이전에 배포도 간단하게 테스트 해보면 좋을 .. 2024. 1. 28.
코딩시간측정하는법 (WakaTime) 순공시간을 측정하듯이 순코(순코딩) 시간을 측정할 수는 없을까?라는 생각이 들었다면 WakaTime을 추천한다! 🚀 개발자의 생산성을 극대화하는 비밀 무기: WakaTime 개발자 여러분, 프로젝트에 얼마나 많은 시간을 투자했는지 궁금하신 적 있으신가요? 어떤 언어나 프레임워크에 가장 많은 시간을 할애했는지, 혹은 어떤 프로젝트가 당신의 시간을 가장 많이 잡아먹었는지 알고 싶으신가요? 여기, 그 모든 궁금증을 해결해 줄 매직 툴, WakaTime이 있습니다! 🌟 WakaTime: 그것이 무엇인가? WakaTime은 개발자의 코딩 시간을 자동으로 추적하고 분석하는 도구입니다. 이를 통해 어떤 프로젝트에 얼마나 시간을 쏟았는지, 어떤 언어와 도구를 주로 사용했는지 한눈에 파악할 수 있습니다. WakaTime.. 2024. 1. 26.
LMS Web 클론코딩 9 (JDBC Template로 CRUD 구현하기 1) 2024.01.26 오늘은 JDBC Template로 Create, Read 그리고 Delete를 구현했다. 먼저 JDBC로 구현 후 jpa로 구현할 예정이다. 아직은 style을 모두 입히지 않긴했지만, course페이지에서 제목을 누르면 아래와 같이 post/{id}로 페이지가 생성된다. 이 부분은 다음과 같이 설정할 수 있다. Title 일단 DB테이블에 저장되는 값은 id, content, title, date이다. 1차로 수정할 점은 date를 포맷에 맞춰 화면에 나오도록 하고, 사용자 정보를 추가하는 것이다. 한동안 계속 안되다가 오늘 시간을 많이 쓴만큼 기능이 동작했을 때 정말 기뻤다. 초반 이 부분만 잘 넘어가면 다른 기능 같은 경우는 금방 구현할 것이라고 생각하여 집중해서 빠르게 ver1.. 2024. 1. 26.
강점에 올인하라 - 도널드 클린프턴 삼촌이 추천해 주셔서 읽게 된 책 (현재 절판되었음) (줄거리 중) 토끼가 다니는 동물학교에선 달리기, 수영, 줄넘기 등 여러 가지 활동을 한다. 줄넘기나 달리기에서는 항상 1등을 하고 잘하는 모습을 보여준다. 하지만 수영은 물에 들어가는 것조차 어려워한다. 그래서 항상 수영을 하고 온 날의 토끼는 기분이 안 좋았다. 학교에서는 토끼에게 너는 이미 달리기와 줄넘기를 잘하니 수영 수업시간을 2배로 늘리자고 말한다. 충격을 받은 토끼는 결국 학교에 더 이상 나가지 않게 되었다. 토끼가 잘하고 좋아하는 것, 토끼의 강점은 달리기이다. 하지만 동물학교에서는 달리기는 이미 충분히 잘하기 때문에 못하는 수영연습을 더 하자고 한다. 결국 토끼의 강점도 살리지 못하게 된다. 실제 연구 사례를 하나 더 봐보도록 하자. .. 2024. 1. 26.
LMS Web 클론코딩 8 (Spring Dependency, 난관해결방법) 2024.01.25 이번 프로젝트는 Spring Boot가 아닌 Spring으로 진행을 한다. Spring에서 좀 더 편리하게 Spring Boot가 나왔기 때문에 Spring을 제대로 다룰 줄만 안다면 Spring Boot는 어려움 없이 배울 수 있다고 생각해서이다. 물론 Spring의 경우 Boot와 다르게 dependeny버전 설정 등 번거로운 부분이 있지만 오히려 번거로운 과정 속에 배움이 있다고 생각하며 Spring으로 진행 중이다. 1. 첫 번째 난관 (JPA dependency가 추가가 안됨) 나는 바로 JPA를 이용하여 db에 접근하려고 했다. 당연히 jpa를 사용하려면 build.gradle(나는 gradle을 사용하기 때문에)에 jpa dependency를 추가해줘야 한다. 처음엔 이렇.. 2024. 1. 25.
LMS Web 클론코딩 7 (ERD 설계, 도메인 테이블 설계) 2024/01/19 오늘은 ERD(Entity Relationship Diagram) 설계, 도메인 테이블 설계라고도 불리는 것을 해봤다. 내가 생각했을 때 ERD설계를 하는 이유는 다음과 같다. 여러 데이터가 있는 모든 서비스는 데이터(객체) 간의 관계가 있을 것이고 이 관계를 미리 설계하지 않고 개발을 한다면 개발 속도가 느려지고 문제가 생기면 어디서 문제가 생겼는지 확인하기가 어려울 것이다. 물론 작은 서비스라면 큰 문제가 없을 수도 있겠지만 서비스가 커지고 유지보수까지 본다면 ERD설계는 중요하다고 생각된다. 그래서 어떻게 할까? 막상 하려니 머리속으로 생각했던 테이블을 어떻게 나누고 어떤 데이터들이 필요하고 어느 데이터 간의 관계가 있는지 정확히 모르고 있었다는 것을 깨달았다. 그래서 일단 종이.. 2024. 1. 19.