Backend 21

webp 이미지 메타데이터 정보로 자동회전이 안될 때

우리 회사에서는 게시글에 이미지를 첨부할 때 AWS S3 업로드 후 보여줄 때는 람다엣지 이미지 리사이저 함수를 거쳐서 cloudfront에 캐싱되어 이미지가 보여진다. 최근에 이미지 용량 문제로 webp 이미지로 변환하였는데, 게시글에 첨부된 이미지가 한번씩 회전(?)이 되는 문제가 발생했다. 원인을 확인해보니 요즘 휴대폰으로 촬영하는 이미지는 자동으로 회전정보가 메타데이터에 기록된다. 예를들어 휴대폰을 가로로회전해서 찍으면 90도 방향이라는 정보가 기록되는것이다. jpg나 png 같은 일반적인 이미지 파일들은 브라우져에서 자동으로 메타데이터에 회전정보를 읽어 회전해서 보여주는데, webp 이미지는 메타데이터의 회전정보를 무시하고 바로 보여주는 문제가 있었다. 스택오버플로를 찾아보니 역시 비슷한 문제가..

Redis Key Delete Pattern with Node.js

Redis는 single thread로 동작하기 때문에 long-time 명령 수행시 다른 명령어들을 처리 할 수 없는 상태가 되기 때문에 매우 비효율적으로 동작하게 됩니다. 따라서 사용자들은 이 점을 명시하고 될 수 있는 한 long-time 명령의 수행들을 피해야 합니다. Redis에서 주요 명령어들이 O(1)의 성능을 보인다면서 왜 long-time 명령을 수행하지 말라고 하는건지 의문을 가지실수 도 있는데, 일반적으로 오랜 시간이 걸리는 명령은 데이터가 매우 많은 상황에서, 여러개의 키를 다루는 명령어에서 O(N)의 수행시간을 가지면서 성능에 악영향을 끼치게됩니다. 일반적으로 Redis에서 Pattern으로 Key를 찾고 찾은결과를 Delete하기 위해, keys *과 del(key)를 생각할 수..

Laravel에서 npm으로 설치한 모듈(Toast Grid) 사용하기

1. git bash 실행 2. laravel 프로젝트 디렉터리로 이동 3. npm으로 tui-grid를 설치한다. command : $ npm install --save tui-grid 4. package.json 파일에 tui-grid 생성되어야 함 5. resources\js\app.js 파일에 다운로드한 tui-grid를 require 한다. -> css와 js 파일 2개를 require (내가 사용하려는 모듈에 따라 다름) 6. webpack.mix.js 파일에 autoload 추가 이 부분을 진행하지 않으면 view파일(보통 html)에서 해당 모듈이 인식되지 않음. 7. webpack mix 재진행 command : npm run dev or npm run prod 8. view 파일에 다음..

Backend/Laravel 2021.03.15