1. 인증 기능 구현 2 (1) ArticlesService 수정 Delete 게시글을 삭제할 때(deleteArticle 메서드), 작성한 사용자가 아니라면 삭제할 수 없도록 수정한다. articleId 외에 userId를 받아 articleRepository.deleteByIdAndUserAccount_UserId() 메서드를 통해 삭제하게 한다. 해당 메서드는 ArticleRepository에 생성하면 된다. Update 글을 작성한 사용자의 정보와 수정하려는 인증된 사용자 userAccount 사용자의 정보가 동일한지 비교하고, 같을 때 업데이트를 수행하도록 한다. (2) ArticleController 수정 Delete deleteArticle 메서드에서 userId 정보를 추가해준다. 하지만 ..
1. 인증 기능 구현 1 (1) 구현 목표 인증 기능을 구현하여 인증이 필요한 영역에서 특정 유저만 특정 행동을 할 수 있도록 한다. 인증이 필요 없는 영역에는 루트 페이지, 게시판 페이지가 있고, 인증이 필요한 영역에는 게시글/댓글 페이지, 자신이 작성한 게시글/댓글 저장, 수정, 삭제가 있다. (2) SecurityConfig에 rule 추가 mvcMatchers 메서드 활용하여 룰을 추가한다. GET 이 요청되었을 때나 어떤 페이지들이 요청되었을 때 허용해 줄 것인지 설정할 수 있다. WebSecurityCustomizer 에서 web.ignoring 메서드를 활용하면 Spring Security의 감독 범위를 벗어나게 설정할 수 있다. (css나 js 등) 하지만 보안 공격에 취약해질 수 있기 때..
1. 게시글 댓글 구현 게시글 댓글을 구현하는 과정은 게시글을 구현하는 과정과 매우 유사함으로 게시글 구현 코드를 참고하면서 구현하면 된다. (1) 컨트롤러 구현 ArticleCommentController를 생성한다. ArticleCommentController는 ArticleController와 유사한 부분이 많기 때문에 비교하면서 참고하면 좋다. 게시글의 경우에는 새로운 페이지에서 글을 작성하였지만 댓글은 이동하지 않고 바로 작성할 수 있도록 하는 것이 다른 부분이다. 댓글을 삭제하는 것도 게시글을 삭제하는 메소드와 유사함으로 복붙을 해주고 article 대신 article comment가 되도록 comment가 추가되어야 할 부분을 수정을 해준다. 또한 도착 페이지가 게시글 페이지가 될 수 있도록..
1. 게시판 해시태그 검색 구현 (이어서) (1) 컨트롤러 구현 searchHashtag 메서드는 articles 메서드와 똑같지만 뷰만 다른 것이기 때문에 복사해서 붙여 넣어주고, searchArticles 메서드를 searchArticlesViaHashtag로 수정해 주면 된다. 그 외 해시태그를 추가해 주면 된다. (2) 뷰 구현 기본 index.html에서 필요한 부분만 수정하여 사용한다. 제목을 Hashtags로 넣어주고, 해시태그들을 모아 한번에 보여주는 화면을 구성한다. Search-hashtag.th.xml 파일도 마찬가지로 기존 articles를 보여주는 것과 유사하다. 다만 해시태그들을 한번에 보여주는 것만 추가해 준다. 이 부분은 thymeleaf 문법을 따른다. 시간이 난다면 thy..
1. 게시판 해시태그 검색 구현 (1) 테스트 검색어 없이 해시태그 검색을 하면 빈페이지를 반환하는 테스트를 짠다. searchType은 이제 해시태그로 고정되어 있기 때문에 생략가능하다. 해시태그를 통한 게시글 검색을 할 때, null값이 들어가도록 구성한다. 검색어를 넣었을 때는 검색된 게시판 페이지를 반환하는 테스트를 짠다. 임의의 hashtag를 작성하고, 이전에 만들어 두었던 findByHashtag 메서드를 사용해 articleRepository를 검색한다. 해시태그가 여러 개인 경우, null 값인 경우, 중복된 경우도 있을 것이기에 unique 한 값들만 뽑아서 리스트로 보여주는 화면을 구성한다. Unique한 해시태그를 가져오는 메서드를 통해 기대한 해시태그가 나오는지 테스트를 짠다. (..
1. 게시판 정렬 구현 게시판 페이지에서 각 칼럼(제목, 해시태그, 작성자, 작성일)을 눌렀을 때 오름차순과 내림차순으로 정렬되는 기능이다. 정렬은 Spring data에서 제공하는 Paging 인터페이스를 사용하면 적용할 수 있다. 즉 뷰에서 표현만 해주면 된다. 현재 index.html의 table 칼럼명에는 class가 각각 정의되어 있다. 그렇기에 이 class를 사용하여 xml 파일에서 selection을 할 수 있다. thymeleaf 문법을 사용해 각각 컬럼명을 클릭하였을 때, 정렬이 되도록 구현한다. th:href="@{/articles(page=${articles.number}, sort = ‘컬럼명’ + (*{sort.getOrderFor(‘컬럼명’)} != null ? (*{sort...
1. 게시판 페이징 구현 (1) 페이징 기능 구현 게시판 페이지에는 이전, 페이지 번호, 이후를 넣고, 게시글 페이지에는 이전, 이후 의 페이징 기능을 넣을 것이다. Service > PagenationService 클래스를 생성한다. 숫자 리스트를 받아 뷰에서 그려주는 방식으로 구성한다. 현재 페이지, 전체 페이지 번호(즉 마지막 번호)를 리스트로 받는다. 페이지네이션 bar 크기를 상수로 정하고 현재 bar의 길이를 return 하도록 한다. (2) 테스트 현재 페이지 번호와 총 페이지 수가 주어졌을 때, 페이징 바 리스트를 생성하도록 한다. @ParameterizedTest : 동일한 메소드를 여러 번 테스트하는 방식 유닛 테스트의 각각의 제목을 포맷에 맞춰 보여줄 수 있다. Index는 현재 번호..
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 파이썬
- pytorch
- 알고리즘
- boj
- greedy
- 수학
- 그리디
- 누적합
- FastAPI
- disjoint set
- dfs
- 구현
- 분리집합
- lis
- 트랜스포머
- python
- 이분탐색
- 코드트리
- 백준
- COLAB
- Prefix sum
- 코딩테스트실력진단
- Transformer
- 코딩테스트
- BFS
- padding mask
- DP
- Look-ahead Mask
- Algorithm
- MySQL