분류 전체보기 38

[MySQL] ERROR: Another process with pid ~ is using unix socket file.

갑자기... 뜬 에러... 진짜 갑자기... 아침부터 급 당황했지만 쉽게 해결할 수 있었다.다른 프로세스가 해당 socket을 쓰고 있다는 뜻.ps -ef 명령어를 쳐도 해당 pid의 프로세스가 뜨지 않는다. 프로세스는 종료됐는데 socket이 release 되지 않는 건 아닐까 싶음. 해결법$ mysql_config --socket$ cd /tmp$ rm mysql.sock.lockmysql_config --socket 명령어를 입력하면 socket 파일의 주소를 알려준다.내 경우에는 /tmp/mysql.sock 였음. 여기로 이동해서 sock.lock 파일을 삭제해준다. 나는 sock 파일도 삭제했다.삭제하면 알아서 다시 생성해준다. 끝! 참고https://velog.io/@ounols/docker%..

DB 2024.09.30

[MySQL] Rollback Pointer 기반의 MVCC 이해하기 - 코드 중심으로

DB의 concurrency control 분야를 연구하면서, innodb의 mvcc 로직을 코드 수준으로 이해할 필요가 있다고 생각하여 공부한 내용을 블로그에 작성해보려 합니다.아래 내용은 제가 직접 찾아보면서 나름의 이해를 바탕으로 쓴 글입니다.저는 일개 학부연구생으로 전문가가 아닙니다. 그냥 워낙 innodb 관련된 글이 없으므로(특히 한국어는) 조금이라도 도움이 되었으면 해서 블로그로 남기는 것이니 참고만 하시는 게 좋을 것 같습니다. 코드 기준은 MySQL-5.7.24 입니다.아래 모든 코드는 실제 코드를 쉽게 이해하기 위해 임의로 작성한 수도코드입니다. Flow만 참고하면 됩니다.    더보기더보기0. 관련 용어 정리 0.1. Clustered Index와 Secondary Index 개념- ..

DB 2024.02.06

[SpringBoot] JPA 오류: No converter found capable of converting from type - 2

JPA native query에서 DTO로 매핑할 때 호환이 잘 안 되면 이런 문제가 발생한다. 그래서 구글링한 결과 Interface로 받아야 한다고 해서, JPA -> Interface -> DTO -> Service 로 받아서 사용하였다. 근데 그냥 Interface만 사용해도 괜찮을 것 같아서 수정했다.사실 위에처럼 DTO, Interface 두 개의 파일이 있는 게 너무 불편했다.. 이전에 시도했던 방법https://kongjino.tistory.com/25 [SpringBoo] JPA 오류: No converter found capable of converting from typeNative Query로 Join 후 두 테이블 이상 select 할 때, entity를 DTO로 매핑하지 못해 발..

SpringBoot 2023.09.11

[VScode] ssh 접속 시, 전체 검색이 안 되고 계속 무한로딩이 될 때

ssh로 우분투에 접속했을 때, 실수로 무한 루프를 돌려버려서 log 파일에 엄청난 양의 로그가 쓰인 적이 있다. 이걸 중지시키는 것도, 파일을 삭제하는 것도 엄청난 에러가 먹었으나... 더 문제는 그 뒤로 vscode가 검색이 안 된다. 전체 검색이 안 된다. 그냥 계속 계속 무한 로딩이 된다. 열려있는 윈도우만 검색이 됐다 안 됐다 그러고...(이게 제일 어이가 없었다) 원인은 vscode가 일을 너무 많이 해서 그렇다는데(확실한 건 아님) 가끔 이런 일이 뜬다고 한다. 구글링하며 찾아본 방법 1. ctrl + Pause 2. 껐다 켜라 3. vscode를 아예 삭제했다가 (data도 삭제) 깔아라 등등 별의 별 짓을 다했지만 결론은 ssh로 접속한 root 폴더 상의 vscode 관련 폴더 모두 삭..

기타 2023.09.08

[SpringBoot] JPA 오류: No converter found capable of converting from type

Native Query로 Join 후 두 테이블 이상 select 할 때, entity를 DTO로 매핑하지 못해 발생하는 문제 해결 방법입니다. JPA로SELECT a, b FROM A a, B b WHER a.id = b.id;같은 쿼리를 보내고, DTO로 받고 싶을 때 문제가 발생한다.   조금 간편한 방법(제가 생각하기에 더 나은 방법)에 대해 2번째 포스트를 올렸습니다.https://kongjino.tistory.com/27 Interface -> DTO -> Service 로 받아서 사용하였다. 근데 그냥 Inter" data-og-host="kongjino.tistory.com" data-og-source-url="https://kongjino.tistory.com/27" data-og-url..

SpringBoot 2023.07.12

[Jest] Typescript + Express + Jest로 Controller 테스트하기 - Mock, Sequelize

2023.05.22 - [분류 전체보기] - [Jest] Typescript + Express + Jest로 Service 테스트하기 - Mock, Sequelize [Jest] Typescript + Express + Jest로 Service 테스트하기 - Mock, Sequelize Express로 새로운 서비스를 작업하던 중, test를 작성해보기로 했다. routes, controllers, services, models 로 나눠진 계층 구조에서 service만 먼저 테스트하려 한다. 환경 설정 모듈 설치 npm install -D jest @types/ kongjino.tistory.com (이전 글에서 이어지는 글입니다) 이번엔 controller에 대한 테스트를 작성해보겠다. 크게 달라지는 ..

Express 2023.05.22

[Jest] Typescript + Express + Jest로 Service 테스트하기 - Mock, Sequelize

Express로 새로운 서비스를 작업하던 중, test를 작성해보기로 했다. routes, controllers, services, models 로 나눠진 계층 구조에서 service만 먼저 테스트하려 한다. 환경 설정 모듈 설치 npm install -D jest @types/jest ts-jest jest-mock jest: 단위 테스트 프레임워크 @types/jest: jest types ts-jest: jest의 ts 모듈 jest-mock: 모킹한 모듈 타입 캐스팅을 간편히 해줌 package.json에 jest 설정을 해준다. "jest": { "transform": { "^.+\\.ts$": "ts-jest" }, "testRegex": "\\.test\\.ts$", "moduleFileEx..

Express 2023.05.22

[SpringBoot] 로그인/세션 등 리액트 연동 문제 해결(2) JWT + 스프링 + 카카오/구글/네이버 로그인, 세션, 스프링 부트와 AWS로 혼자 구현하는 웹 서비스

아무튼 전 편에 이어서 이야기를 해보자면, 리액트의 주소와 스프링의 주소가 달라서 문제들이 생겼었다. 마지막 문제는 세션 문제였다. 그래서 과감히 세션을 버리고 토큰 방식으로 옮겼다. * 방식 나는 스프링 시큐리티를 이용했기 때문에 프론트에서 인가 코드를 직접 이용하고 그러지는 않았다. 스프링이 로그인 과정은 다 해준다. 로그인이 되면 백엔드에서 정보 따서 토큰화 한다음 프론트로 주고, 프론트에서는 토큰 저장해놨다가 백엔드로 보내주고 백엔드는 유효한지 체크해주는 것! 내가 작성한 플로우는 클라이언트는 로그인을 시도한다 (/oauth2/authorization/google) 스프링에서 로그인을 한 다음 사용자 정보를 백엔드로 넘겨준다 백엔드는 사용자 정보를 좋게 JWT에 담아서 얘를 리액트에게 리다이렉트 ..

SpringBoot 2023.01.24

[SpringBoot] 로그인/세션 등 리액트 연동 문제 해결(1) - CORS, 리액트에서는 안 될 때, 스프링 부트와 AWS로 혼자 구현하는 웹 서비스

스프링 부트와 AWS로 혼자 구현하는 웹서비스라는 책을 따라하며 백엔드 서버를 혼자 잘 구현했다. 그러고 프론트엔드로 구현해놓은 리액트와 연결하려 했다. (프론트는 다른 사람이 했음) 역시나~ 잘 될리가..ㅎ 백엔드의 진짜 문제는 서버 구동하면서 같다. 코딩은 백엔드의 10프로 정도만 하지 않나... 싶음... 우선 생긴 문제는 크게 1. CORS 오류 2. 스프링 시큐리티의 로그인 문제 이렇게다. * 본 포스트는 제가 나름대로 이해하고 생각한 내용입니다. 실제 구동 방식과 다를 수도 있습니다. 실제 정확한 원리와 개념은 다른 포스트를 보세요... 부끄러워요... * 책에서 나온 코드를 기준으로 작성되었습니다. 책 GitHub 주소: https://github.com/jojoldu/freelec-spri..

SpringBoot 2023.01.22

[기타] 간단하게 Rancking Algorithm 구현하기 - Hacker News Algorithm

ML, AI 등이 필요 없이 그냥 단순하게 순위 알고리즘을 짜봤다. 애초에 적용할 기준이 하나만 있어서... 좋아요를 기준으로 순위를 짜보았고, 시간이 지남에 따라 매력도를 감소 시켰다. 유명한 Hacker News Algorithm을 이용해서 짜보았는데 자세한 설명은 참고 자료를 보면 된다. 내가 변형한 공식은 아래와 같다. score = (likeNum) / (timediff) ** GRAVITY 간략하게 설명하자면 likeNum은 좋아요 수이다. 기존 알고리즘과 다른 점은, 나의 경우 좋아요 취소에 대한 보정이 필요 없으므로 -1을 해주지 않았다. timediff는 업로드 날부터 오늘까지 지난 날이다. 기준은 day로 잡았다. 참고자료와 마찬가지로, 오늘 올라온 글은 인기순에 포함시켜주고 싶지 않아..

기타 2022.09.26