개발Log 4

Spring | MultipartFIle에서 파일 이름 가져오기 문제 해결, Normalize 유니코드

1. 문제 발견최근 파일 업로드 기능을 구현하던 중, 특정 파일명을 검색할 때 예상치 못한 문제가 발생했습니다. MultipartFile의 getOriginalFilename() 메서드를 사용하여 파일 이름을 받아 저장하던 중 파일 이름에 한글이 포함된 경우, 데이터베이스에서 LIKE 연산자를 사용한 부분 검색이 정상적으로 작동하지 않는 현상이 발생했습니다. 예를 들어, "스크린샷"이라는 단어가 포함된 파일명을 검색하려고 했으나, 결과가 제대로 반환되지 않았습니다.2. 문제 원인문제를 분석한 결과, 이 현상은 운영체제(OS) 간의 유니코드 처리 방식 차이로 인해 발생한 것으로 밝혀졌습니다. 특히, MacOS와 Windows에서 한글을 처리하는 방식이 달랐습니다:MacOS는 한글을 NFD(Normaliza..

개발Log 2024.08.26

Spring Boot | @Transactional과 Redis를 함께 사용할 수 없는 이유 및 Redis 트랜잭션 사용법

오늘은 회사에서 레디스 세션 체크를 통한 로그아웃 로직을 구현하며 알게 된 것을 정리해보려 합니다!Redis주소는 맞게 들어가는데, 왜 값을 못가져올까??처음 보는 상황에 많이 당황했었는데요..Spring Transactional을 사용하면 Redis와 다르게 처리가 되는 방식이라, 제대로 작동이 되지 않았던 것이었습니다!오랜만에 새롭게 알게 된 내용이라 한번 정리를 해보려 합니다. Spring framework를 사용해 애플리케이션을 개발 시, 데이터베이스 트랜잭션 관리를 위해 흔히 @Transactional을 사용하고 있습니다. 그러나 Redis와 NoSQL 데이터베이스를 사용할 때는 @Transactional을 동일하게 사용할 수 없습니다.  이번 글에서는 그 이유와 Redis에서 트랜잭션을 사용하..

개발Log 2024.07.08

jwt 취약점 및 Encoding / Decoding

velog에서 정리 한 것들을 블로그 이전하는 김에 다시 재정리를 하려고한다. 2023년 2월 12일 - https://velog.io/@yujin-17/TIL-06.-console-%EC%B2%B4%ED%81%AC%EC%9D%98-%EC%A4%91%EC%9A%94%EC%84%B1-JWT-decoding-token 06. console 체크의 중요성, JWT, decoding, token 오늘 console 체크의 중요성을 깨달았다. @app.route("/main", methods="POST")def save_main(): titles_receive = request.form'titles_give' descs_receive = request velog.io 로그인 1시간 유지 'exp': datetim..

개발Log 2024.01.11

Blueprint

velog에서 정리 한 것들을 블로그 이전하는 김에 다시 재정리를 하려고한다. 2023년 2월 11일 - https://velog.io/@yujin-17/TIL-5.-Blueprint Blueprint? Flask에서 제공하는 라이브러리로, 페이지나 기능에 맞게 Backend로 분류해 사용하기 좋게 해준다. 협업을 할 때, app.py 라는 파일에 Backend 로직 구현을 하는데, 이 라이브러리를 사용해 더 편하게 사용 가능하다. 사용법? 1. from flask import Blueprint 2. blueprint 사용해 객체생성, 객체를 통해 동일 url 로 묶어줌. 3. 묶고 싶은 페이지를 앞서 선언한 객체와 연결 4. register_blueprint 를 통하여 해당 blueprint 등록 ->..

개발Log 2024.01.11