Safari 는 또 다른 인터넷 익스플로러

인터넷 익스플로러의 장례식을 치르고 나면, 웹 개발자들에게는 장미빛 미래만 남을 거라고 생각했다.*"이건 크롬에서는 되는데..."* 같은 변명이 통하지 않는 세상, 영혼을 갈아 넣는 고통도 이제 과거가 됐다고 믿고 싶었다. 하지만 Safari가 기막히게 그 빈자리를 채워버렸다. 파레토 법칙은 역시 강력했다. vh 좀 맘대로 처리했다고 모바일 사파리에서는이러면서 페이지를 그냥 터뜨려 버린다. 그냥 그려주면 되잖아? 다른 브라우저들은 해주는데...저거 하나 잡으려고 커밋을 하나하나 checkout 해 가며 내부 IP를 통해 iPhone Safari로 접속해서 직접 확인해야 했다. 아무리 그래도 CSS 문제로 페이지를 터뜨리다니. 터뜨렸으면 원인에 대한 힌트라도 줘야 하는 거 아닌가? Xcode 라도 깔면 나..

Development/DevLife 2025.03.01
[Spring Boot] Spring AI 활용해 LLM과 연동하기

IntroDeepseek를 테스트 해보고 리소스 대비 대단한 성능에 감탄을 했고, 그 이후로 항상 개인적으로 진행 중인 프로젝트에서도 하나씩 LLM을 연동한 기능을 추가하려고 생각해왔다. LLM을 적용해 가치를 만들어낼 수 있는 분야는 너무나도 다양하다.튜토리얼 수준으로 진행할 예정이기에 원래는 로컬에서 DeepSeek R-1의 8B 정도의 모델을 돌려서 처리하려 했지만, 아쉽게도 몇 번의 테스트 결과 해결되지 않는 한글 처리 이슈가 있었다. 응답이 오래 걸리는건 스케줄러로 처리하도록 하면 어느정도는 해결 가능하지만, 정확도는 타협할 수 없는 부분이다. 32B 이상 모델은 사용해야 한글도 원활하게 소화해내는걸로 보이는데 집에서 열심히 돌아가고 있는 서버 노트북 스펙은 그 정도를 감당할 수준이 아니다.그래..

Programming/JPA ⁄ Spring 2025.02.28
PostgreSQL CVE-2025-1094 대응 마이그레이션

Intro최근 PostgreSQL에서 심각한 보안 취약점인 CVE-2025-1094가 발견되었다. 이 취약점은 특정 상황에서 SQL 인젝션 공격이 가능하도록 만드는 치명적인 문제로, PQescapeLiteral(), PQescapeIdentifier(), PQescapeString(), PQescapeStringConn() 같은 libpq 함수들이 따옴표 구문을 제대로 처리하지 못하는 데서 비롯되었다.PostgreSQL 17.3, 16.7, 15.11, 14.16, 13.19 이전 버전이 영향을 받으며, PostgreSQL 개발팀은 2025년 2월 13일 해당 취약점을 해결한 보안 패치를 발표했다.https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&pageInd..

Data/PostgreSQL 2025.02.27
[Spring Boot] 정적 파일 캐싱 및 자동 버전 관리 설정

Intro웹 애플리케이션에서 정적 파일(이미지, CSS, JS 등)의 성능 최적화는 중요하다. 캐시를 활용하면 불필요한 네트워크 요청을 줄여서 성능을 개선할 수 있으며, 파일의 버전 관리를 자동화하면 배포할 때 브라우저가 새로운 리소스를 제대로 가져오게 만들 수 있다. 잘못 캐시해두면 기껏 새로운 정적 파일을 배포했지만 사용자들은 브라우저에 캐시된 엉뚱한 정적자원을 활용하는 사태가 벌어진다.Spring Boot에서는 spring.web.resources.cache.period 및 spring.web.resources.chain.strategy.content.enabled 설정을 활용하면 정적 파일의 캐싱과 버전 관리를 쉽게 적용할 수 있다.이번 글에서는 새로운 Spring Boot 프로젝트를 생성하고, ..

Programming/JPA ⁄ Spring 2025.02.13
MySQL 이모지 저장되지 않는 문제 해결

Intro데이터베이스에 이모지가 포함된 텍스트 데이터를 저장하려 했더니 다음과 같은 에러가 발생했다.org.springframework.orm.jpa.JpaSystemException: could not execute statement [Incorrect string value: '\xF0\x9F\x91\x89 \xEC...' for column 'content' at row 1] INSERT할 때 Incorrect string value 오류가 발생한 것이다. 문자셋은 utf8mb4로 제대로 설정되어있었는데 어떤 문제가 있었는지 알아보자.원인 찾기데이터베이스의 문자셋과 Collation 확인SELECT schema_name AS database_name, default_character_se..

Data/MYSQL ⁄ MariaDB 2025.02.10