일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링 핵심 원리 이해
- spring
- Kotlin
- 컨베이어 벨트 위의 로봇 Python
- kotlin in action 정리
- KotlinInAction
- 백준 13460 Python
- 20055
- 스프링 핵심 원리 - 기본편
- 코틸린인액션
- Kotlin in action 5장
- 백준
- 고급매핑
- 싱글톤 컨테이너
- Kotlin in action 10장
- 백준 20055 컨베이어 벨트 위의 로봇
- 스프링 컨테이너와 스프링 빈
- Kotlin in action 3장
- Kotlin In Action
- 20055 컨베이어 벨트 위의 로봇
- Python
- 7장 고급매핑
- Kotlin in action 6장
- 13460 구슬탈출 2
- 코틀린인액션
- 자바 ORM 표준 JPA 프로그래밍 7장
- 스프링 핵심 원리
- 기능개발 python
- 객체 지향 설계와 스프링
- 코틀린
- Today
- Total
목록스마일게이트 인턴 - Dev Camp (9)
기록하는 습관

1. nGrinder 이슈해결 nGrinder에서 run_agent.bat 실행 시 에러 발생. 특정 위치에 jvm.dll이 없다는 뜻이므로 해당 위치에 jvm.dll 파일을 복사하여 해결함. (참고 : https://kingle1024.tistory.com/206) Can't not set headers 에러 발생 → 헤더 설정이 제대로 되지 않아서 발생하는 이슈. 우리 경우는 헤더에 인증 토큰을 넣어 전달해야 하는데 전달이 제대로 되지 않음. 배열 객체로 헤더를 설정해주고 request.GET에 url과 headers를 넣어줌. (참고: https://gist.github.com/ihoneymon/a83b22a42795b349c389a883a7bbf356) GET content detail에 대한 성..

#1 추천 피드 캐싱을 쓰는 이유는? -> 유동적인 값을 커서로 사용할 수 없는 페이징 방식 때문이다. 그래서 캐싱된 데이터만 api 호출 시 pull 하는 방식으로 변경 10분 단위로 카테고리 별 좋아요 기준으로 내림차순 정렬된 게시글들을 캐싱 // 채택 !! 정렬된 데이터를 캐싱 해 놓으면 유저들에게 해당하는 카테고리의 데이터를 바로 줄 수 있으며, Redis에서 Sorted Set 자료구조를 통해 데이터를 효율적으로 관리 가능하기 때문이다. 카테고리 별로 전체 content 중 범위를 나누어 n개의 content를 캐싱하고, 캐싱된 contents 범위 안에서 pull(read)할때 마다 유동적으로 바뀐 좋아요 수를 기준으로 정렬해서 read 시켜준다. * batch vs ca..
실시간 랭킹 업데이트 프로세스 ** user1 -> user2 Ranking 관계를 여러 개 둘 경우 Ranking { score: 최종 점수, like: 좋아요 개수, comment: 댓글 개수, follow: follow 여부, date: 날짜 } like, comment, 개수를 넣은 이유는 total 점수 뿐만 아니라, 나중에 like, comment 별로도 실시간랭킹을 줄 수 있게 하기 위해. User1 -> user2 에게 like, comment action을 한다면 user1 -> user2 FOLLOW 관계가 있으면 user1 -> user2에게 해당 date의 RANKING Relation이 존재하는지 확인 있으면 like, comment, total score 점수 업데이트. 없으면 ..

실시간 친밀도 랭킹 ** MQ를 프로젝트에 도입하게 된 이유 친밀도 랭킹을 계산하는 것은 사용자에게 즉각적으로 실시간 응답이 되지 않아도 되는 프로세스로, 백엔드에서 비동기적으로 처리할 수 있는 배치 프로세스이다. 처음엔 하루 주기의 배치 프로세스로 작업을 하려고 했지만 큐를 활용해 최대한 배치 작업들을 실시간 업데이트를 하며 효율적으로 처리하고자 했다. 좋아요/댓글 프로세스에서 score 계산까지 같이 하는 것이 가장 좋지만, 사용자가 많아지고 좋아요/댓글 요청이 많아질수록 Ranking 계산 때문에 delay가 생길 수 있으므로 성능 상 문제가 생길 수 있다. 따라서, MQ를 도입하여 좋아요, 댓글 계산 요청을 MQ에 보내 사용자가 바로 다음 액션을 취할 수 있도록 하고 계산 처리는 MQ에서 꺼내 별..
Node.js 와 MySQL 연동 시 오류 Client does not support authentication protocol requested by server; consider upgrading MySQL client 이런 오류가 떴다. 찾아보니 MySQL 8.0 부터 외부접속 시 로컬 비밀번호가 아니라 암호화된 다른 비밀번호를 사용하도록 바뀌었다. 그래서 나는 msi server reconfigure에서 auth를 legacy로 바꿔준 뒤, ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''; FLUSH PRIVILEGES; ALTER USER 'devcamp'@'localhost' IDENTIFIED WITH mys..

1. MySQL 유저 생성하기 관리자 명령 프롬프트를 켜고 mysql -u root -p 를 입력하여 root 계정으로 접속한다. 2. user 생성하기 create user '아이디' identified by '비밀번호'; 3. 권한 부여하기 grant all privileges on *.* to '아이디'@'%'; 4. 이후 일반 계정으로 접속하기 mysql -u devcamp -p 5. show databases 현재 devcamp 계정에는 다음과 같은 데이터베이스들이 있는 것을 확인할 수 있다. 6. 데이터베이스 생성하기 create database if not exists 데이터베이스명; 7. 만든 데이터베이스 사용하기 use 데이터베이스명;

cmd창에서 mysql을 실행하려고 하니 can't connect to mysql server on 'localhost' 10061 오류가 떴다. 해결방법: 1. cmd 관리자 모드로 들어가 net start mysql을 친다. 2. 다음과 같이 서비스를 시작할 수 없다고 뜨면 3. Mysqld --initialize 명령 입력 4. net start mysql 입력 그러면 다음과 같이 서비스가 잘 시작되었다는 오류 해결을 볼 수가 있다. 또한 제어판 - 시스템 및 보안 - 관리 도구 - 서비스로 들어가보면 Mysql이 잘 실행중인 것도 확인할 수 있다. 참고 블로그: MySQL 서비스가 로컬 컴퓨터에서 시작했다가 중지되었습니다. 오류 해결방법 [ 직접해결했던 내용 ] MySQL 서비스가 로컬 컴퓨터에서..