윈도우 노트북에서 Redis를 이용하여 조회수 동시성 이슈 해결하고 Jmeter로 테스트해보기(https://dakafakadev.tistory.com/257)를 실행했을 때는 Jmeter가 이상없이 잘 작동했는데, macOS에서는 Jmeter가 제대로 실행되지 않는 문제가 있었는데 어쨌든 해결하긴 해서 정리해둔다. 요 문제는 구글링을 해도 답이 없어서 혼자 찾아봤다. 참고로 jmeter 5.6.2버전이고, 실행한 OS는 Sonoma 14.0버전이다. 문제 우선 나는 원래 homebrew를 사용하기 때문에 brew로 설치를 하고 실행했는데, 다음과 같은 문제가 발생했다. 여기서 주의깊게 볼 곳은 바로 이곳이다. /usr/local/Cellar/jmeter/5.6.2/libexec/bin/jmeter: l..
회사에서 사용하는 기술스택과는 다른 기술스택을 사용하고자 개인프로젝트를 하고 있는데, 그중 조회수 관련하여 동시성 이슈를 만들어 해결한 경험이 있어서 정리한다.문제public DataResponse findBoardById(Long boardId) { Board findBoard = boardRepository.findBoardById(boardId); findBoard.setViewCount(findBoard.getViewCount() + 1); return new DataResponse(findBoard != null ? findBoard.toBoardShow() : null); }이 부분은 게시물 아이디로 게시물을 조회한다. 이 부분에서 게시물의 조회수를 올려야 하므로 위와 같은 코드를 생각할 수 ..
지금 진행하고 있는 프로젝트에서 DB의 Collation 관련한 문제가 생겨서 정리해둔다. 문제상황 현재 하고 있는 프로젝트는 고도화 프로젝트인데, 기존 테이블의 Collation은 utf8mb4_general_ci이고, 새로운 테이블의 Collation은 utf8mb4_unicode_ci이다. 두 테이블의 컬럼을 비교해야 하기도 하고 관리의 용이함을 위하여 기존 테이블의 Collation도 utf8mb4_unicode_ci로 변경하기로 했다. 그래서 변경을 하던 중, 특수문자를 다루는 테이블에서 문제가 발생했다. 문제가 발생한 컬럼은 Unique 설정이 되어 있었는데, 원래 utf8mb4_general_ci에서는 서로 다르다고 판단했던 데이터가 utf8mb4_unicode_ci로 변경하면서 같다고 판단..
아파치 과카몰리란? 아파치 과카몰리는 아파치 재단에서 만든 클라이언트리스 리모트 데스크탑 게이트웨이이다. VNC, RDP, SSH와 같은 표준 프로토콜을 지원한다. 클라이언트리스라고 하는 이유는 어떠한 플러그인이나 클라이언트 소프트웨어가 필요하지 않기 때문이다. 아키텍처를 살펴보면 위와 같은데, HTML5 웹브라우저만 있으면 과카몰리 서버를 거쳐 원격 데스크탑에 액세스할 수 있다. 직접 컴퓨터에 설치해도 되고, 도커로도 가능하다. 더 알아보고 싶다면 공식문서를 참고하자.(https://guacamole.apache.org/doc/gug/) 왜 필요했을까? 사실 아직 시험용으로 사용하고 있는데, 갑자기 아파치 과카몰리를 사용하게 된 이유는 다른 팀의 서버가 해킹되어 코인채굴에 사용되고 있었기 때문이다. 😱..
DB를 다룰 땐 사소해보이지만 아주 중요한 부분이 있다. 그것이 Collation인데, 이건 DB에 문자를 저장하거나 비교할 때 적용되는 규칙이라고 생각하면 된다. '가'라는 Collation에서는 'A'와 'a'를 같다고 보지만 '나'라는 Collation에서는 'A'와 'a'가 다르다고 하자. 그러면 '가'에서는 'Apple'이나 'apple'이나 같다. 하지만 '나'에서는 'Apple'과 'apple'은 엄연히 다른 것이다. 이렇게 문자를 저장하거나 비교할 때 적용되는 규칙은 컬럼 단위로 다르게 정할 수도 있고 테이블 단위로 다르게 정할 수도 있는데, 중요한 것은 MySQL에서는 서로 다른 collation의 컬럼을 비교하는 것을 막고 있다. 예를 들어, utf8mb4_general_ci인 컬럼과 ..
요즘 개발하고 있는 건은 이런저런 이유로 커밋을 못하고 개발을 하고 있었다. 나는 인텔리제이로 주로 작업을 하고, 가끔 이클립스를 사용할 때가 있는데, 오늘은 이클립스로 내가 작업하고 있는 프로젝트를 새로 열다가 내가 작업하고 있는 프로젝트를 그대로 이클립스로 여는 실수를 했고, 그러다가 내가 커밋하지 않은 작업을 날리게 되었다.(...) 이럴 때 사용할 수 있는 방법이 로컬 기록이다. 인텔리제이의 로컬 기록 기능에 대한 자세한 설명은 아래 링크 참고. https://blog.jetbrains.com/ko/2020/03/26/local-history-intellij-save-your-code-ko/ IntelliJ IDEA의 로컬 기록(local history)이 여러분의 삶 코드를 구할 수 있습니다 |..
9월 27일 오후부터 10월 3일까지 약 6.5일을 쉬었는데 그동안 무엇을 했는지 정리를 해보려고 한다. 1. 이력서 및 링크드인 정리 지난번 인프런 멘토링받은 내용을 바탕으로 이력서를 조금씩 정리하고는 있었는데, 연휴동안 각잡고 정리를 끝냈다. 그리고 만들어놓고 관리 안했던 링크드인도 프로필 사진이랑 소개글, 강의 수료증 등을 업데이트했다. 이력서 정리가 끝나면 다시 한 번 다른 분께 이력서 첨삭을 받고 다시 지원해보려고 했는데 이 글을 작성하는 오늘에서야 멘토링 신청을 했다. 벌써 지난 멘토링도 한달전인데, 부지런히 산다고 사는데 목표로 해둔 일들이 자꾸만 밀린다. 2. 컴퓨터과학과 강의 수강률 37% -> 43% 퍼센트로 따지자면 6%인데 강의 개수로 따지자면 6개다. 그래도 연휴동안 매일 하나씩 ..
올해도 다녀온 파이콘 2023. 방문한 날짜는 8월 12일이었는데, 이제서야 후기를 올리는 나는 도대체... 심지어 사진도 거의 안 찍었다. 그나저나 이번 파이콘은 가격이 꽤 비쌌는데 이러면 파이콘에 가야할 메리트가 좀 사라지지 않나 싶었다. 어차피 나중에 유튜브로 올라올테니 그것만 보는 사람이 많아질테고. 여튼 내가 들은 세션들은 아래와 같다. RustPython, 파이썬 커뮤니티로 짠내나는 데이터 다루기 (부제: 제한된 메모리로 다룰 수 있는 현실적인 데이터) Async state machine 로컬 환경에서 사이즈가 큰 데이터를 처리/분석하기 위한 전략: Pandas 2.0, HF Datasets Django 봄은 다시 온다 - Django와 함께 좋은 웹서비스 코드 만들기 위 세션명만 봐도 아시다..