분류 전체보기
-
이거 왜 안됨..?오늘/Error 2024. 11. 15. 13:20
오더 생성 중에 user.getUserAddress가 계속 null로 입력되었다.주석된 코드처럼 Hibernate 초기화도 해보고 유저주소 생성 메서드에서 체크도 해보았으나 계속 null 이 들어왔다. db 확인 결과 user에 user_address_id가 들어가지 않음을 확인아래와 같이 바꿔주었다. 그 결과 user에 user_address_id는 잘 들어갔으나 카테고리 생성에서jakarta.servlet.ServletException: Unable to handle the Spring Security Exception because the response is already committed. 에러가 터졌다. userRepository.save(user); 이 코드 한줄 때문에. 대체 ..
-
GITHUB API를 활용한 커밋 기록 조회 (4) 커밋 히스토리 로직 구현devRace 2024. 11. 14. 19:52
지난 글에서커밋 카운트를 스케줄러로 6시간마다 업데이트하여전체 기간, 현재 월, 현재 주, 오늘의 커밋 카운트를 증가시키는 로직을 구현하였다. 이 글에서는10월 커밋기록이 11월이 되면 해당 기록은 날아가야하는가?11월 1주차의 커밋기록이 2주차 월요일이 되면 해당 기록은 지워져야하는가?오늘한 커밋기록이 내일이 되면 사라져야하는가?에 대해 고민하다 결정한 커밋 히스토리이다. 또한 이렇게 캘린더에 커밋과 알고리즘, TIL 제출 여부를 체크해야 하고, 시간이 지나서도 볼 수 있어야 하므로히스토리 스케줄러를 통해 매월 1일, 매 주 월요일, 매일 0시가 조금 넘은 시간에 이전 기간에 대한 커밋을 저장하도록 하였다. @Transactional @Scheduled(cron = "0 15 0 1 ..
-
GITHUB API를 활용한 커밋 기록 조회 (3) 커밋카운트 로직 적용devRace 2024. 11. 13. 17:18
private long totalCommits; private long monthlyCommits; private long weeklyCommits; private long dailyCommits; 전체 기간 커밋갯수현재 월간 커밋 갯수현재 주간 커밋 갯수오늘 커밋 갯수를 저장하는 엔티티 컬럼을 작성하였다. 간단히 오늘 커밋 갯수를 저장하는 로직만 표시해보겠다. private long getCommitCountFromGithub(String githubName, ZonedDateTime fromDate, ZonedDateTime toDate) { try { return githubApiClient.getCommitCountInperiod(githubName..
-
GITHUB API를 활용한 커밋 기록 조회 (2) GithubApiClient 작성devRace 2024. 11. 12. 16:25
@Componentpublic class GithubApiClient { private final GitHub github; public GithubApiClient(@Value("${github.oauth.token}") String oauthToken) { try { this.github = new GitHubBuilder().withOAuthToken(oauthToken).build(); github.checkApiUrlValidity(); } catch (Exception e) { throw new CustomException(ErrorCode.FAIL_TO_CONNECT_GITHUB); }..
-
GITHUB API를 활용한 커밋 기록 조회 (1) 깃허브 API 적용devRace 2024. 11. 11. 15:32
개요프로젝트에서 개인 깃허브를 연동하여 커밋 갯수를 반환하여커밋 랭킹 및 잔디를 구현하고자 하였다. 진행과정1. 깃허브 API 적용2. GithubApiClient 작성3. 커밋 카운트 로직 구현4. 커밋 히스토리 로직 구현으로 진행하였다. 의존성 추가하기https://mvnrepository.com/artifact/org.kohsuke/github-api 이 곳에서 원하는 버전을 선택한다.최신버전을 사용하기엔 약간 부담되어 누군가 1명이 사용하고 있는 2.0.0-alpha-1을 선택하였다. Gradle을 사용중이었기에 해당 코드를 build.gradle에 입력하였다. 깃허브 토큰 발급이후 깃허브 - Settings - Developer Settings - Personal access toke..
-
데이터베이스 정규화오늘/Today I.. 2024. 4. 7. 22:12
데이터베이스 정규화란? 데이터베이스 설계에서 데이터의 중복을 최소화하고 데이터 무결성을 유지하기 위해 데이터를 구조화하는 과정 이상현상이 있는 릴레이션을 분해하여 이상현상을 제거하여 중복된 데이터를 허용하지 않게 함 결과적으로 데이터 무결성을 유지하고 데이터베이스 저장공간을 확보할 수 있다. 데이터베이스 정규화 절차 일반적으로 제 3 정규형 또는 BCNF까지 진행하면 데이터베이스 설계에 무리가 없다. 제 4, 제 5 정규형까지 가서 중복을 완전히 제거해버릴경우 다른 문제가 발생할 수 있다. 제 1정규형부터 BCNF까지는 기본 정규형 제 4정규형, 제 5정규형은 고급 정규형으로 분류한다. 제 1 정규형 (1NF) 제1 정규형은 모든컬럼의 값이 원자값이어야 한다. 즉, 각 필드는 반드시 하나의 값만을 가져야..
-
memcacedClient.set에 대해flash 2024. 3. 31. 21:46
게시글을 작성하면 열람권한을 2시간을 얻는 로직을 구현해야한다. 원래는 redis를 사용하려 하였으나, 라이센스 문제가 생겨 memcached를 사용하게 되었고 로직을 완성하기 위해 memcached를 공부한 내용들을 포스팅하며 프로젝트를 진행하고자 한다. 게시글을 작성하면 userId를 key값으로 사용하고 memcachedClient.set 메서드를 사용하여 서버에 데이터를 저장하였다. key 는 저장할 데이터에 대한 고유한 키이며, 나중에 이 키를 사용해서 데이터에 접근할 수 있다. exp는 만료시간이며 memcached에 데이터가 보관될 시간을 초 단위로 지정한다. 0 설정 시 만료되지 않는다. value는 저장할 데이터 객체이며 나중에 해당 키를 사용해서 검색할 수 있다. 1. set메서드는 동..
-
memcached 설치flash 2024. 3. 30. 22:58
memcached 설치 첫번째. 도커 이미지 다운로드 memcached:1.6.25 설치 alpine을 설치하지 않은 이유는 일반 버전도 용량이 그리 크지않기 때문에 일반버전을 설치함 두번째. spymemcached와 xmemcached 중에서 고민 spymemcached 특징 1. 직관적인 API 2. 문서화 및 커뮤니티 지원이 잘 되어있음 3. 동기 비동기 작업 지원 4. 단일 연결 - 각 spymemcached 인스턴스는 memcached 서버에 단일 연결만을 유지함. 리소스 사용량을 줄이는 대신 고성능에서 병목 발생 가능 xmemcached 특징 1. 고성능 - 멀티쓰레드 환경이 기본 2. 키 해싱, 직렬화, 역직렬화, 최적화 등이 있음 3. 멀티 연결 - 고성능에서 병목 감소 가능 4. 자동장애..