분류 전체보기

    [프로젝트 기록] Redis와 직렬화/역직렬화

    [프로젝트 기록] Redis와 직렬화/역직렬화

    [ Redis 캐시 서버의 도입 ] Redis 캐시를 도입하면서 겪은 디버깅 과정을 글로 적어볼까 한다. Voca-World 프로젝트에 최근 사용자 정보를 캐싱하는 기능을 도입했다. 캐싱을 한 이유는 다음과 같다. 토큰을 기반으로 사용자 정보를 찾는 일은 매 요청시마다 발생한다. 사용자 정보는 자주 사용되지만 자주 바뀌지 않는다. 사용자가 로그인할 때 Redis를 통해 캐싱하였다. [ 문제 발생 ] 사용자 정보를 캐싱하고 나서 단어장이 보이지 않는 문제가 발생하였다. [ 문제의 원인 ] Redis에서 사용자 정보를 가져올 때 Vocabularies와 관련된 정보가 없는 것을 발견하였다. [ 문제 해결 과정 ] 코드를 확인해보니 vocabularies 필드에 @JsonIgnore 어노테이션이 붙어있었다. ..

    인공지능 기반 웹 서비스 만들기

    인공지능 기반 웹 서비스 만들기

    낙서하듯이 그린 그림을 멋진 그림으로 바꿔주는 인공지능 기반 웹 서비스를 개발하고 있다. 이번 포스팅에서는 프로젝트를 진행하면서 고민했던 부분에 대해서 적어볼려고 한다. 프로젝트 구조 GPU 가상 서버는 비싸기에 로컬 컴퓨터를 이용하여 프로젝트를 진행했다. Ubuntu기반의 가상 머신을 Nginx로 사용하였으며 URL기준으로 프론트, 백엔드 포트로 포워딩해준다. 백엔드 서버는 요청으로 들어온 사진을 인공지능 서버에 가공 요청한다. 인공지능 서버의 작업이 완료되면 결과를 메일로 전송한다. Ubuntu 가상 머신을 사용한 이유 로컬PC를 이용해 다른 작업도 하다 보니 제한된 메모리와 자원을 할당하고 관리하고 싶었다. 가상환경에서, 특히 VirtualBox에서 GPU사용이 생각보다 까다로웠다. 프로젝트 기능 ..

    로컬 PC 서버 만들기

    로컬 PC 서버 만들기

    로컬PC를 서버로 만드는 작업을 하고 있습니다. 이번에는 호스트PC에서 VM머신으로 통신하는 방법에 대해 알아보겠습니다. 목표 사용자가 윈도우10 로컬PC의 아이피 주소로 요청을 하면 VM Main에 설치되어 있는 프로젝트 서버가 응답하는 것을 목표로 합니다. 사용자 요청 (외부) -> 호스트PC -> VM Main 순으로 데이터가 요청됩니다. 호스트PC : Windows 10 VM Main : Ubuntu 22.04.3 프로젝트 준비 VM 머신을 설치합니다. (VM 머신을 설치하는 방법은 다른 블로그 참조) Nginx, Apache 등의 프로그램을 쉽게 관리하고 구동하기 위해 Docker를 이용하겠습니다. Ubuntu에서 도커를 설치하는 방법은 다음과 같습니다. # 도커 APT 저장소 추가 # Add ..

    [LeetCode] Longest Repeating Character Replacement (Java)

    ✉️문제 https://leetcode.com/problems/longest-repeating-character-replacement/description/ 📝 접근 투 포인터 알고리즘을 기본적으로 이용한다. (left, right 포인터) right포인터를 오른쪽으로 이동시키면서 가장 빈번하게 나타난 알파벳의 개수를 기억한다. (right - left + 1 - maxFrequency)는 uppercase로 바꾼 횟수를 의미한다. 만약 right - left + 1 - maxFrequency > k 이면 left를 증가시킨다. left를 증가시킬 때 마다 maxFrequecy를 감소시킬 필요는 없다. 답은 가장 긴 길이를 구하는 것이며 maxF가 감소될 때 정답이 갱신될 수 없다. 🗝 문제풀이 clas..

    [LeetCode] Remove Nth Node From End of List (Java)

    ✉️문제 https://leetcode.com/problems/remove-nth-node-from-end-of-list/description/ Remove Nth Node From End of List - LeetCode Can you solve this real interview question? Remove Nth Node From End of List - Given the head of a linked list, remove the nth node from the end of the list and return its head. Example 1: [https://assets.leetcode.com/uploads/2020/10/03/remove_ex1.jpg] leetcode.com 📝 접근 O(..