본문 바로가기

프로그래밍/기타17

Java 에서 다운로드받은 이미지의 타입 유추하기 개요 팀에서 Feign을 통해 이미지 다운로더를 구현해 사용하고 있다. 그런데 해당 클래스에 대해, 다운받은 이미지의 형식을 검증해달라는 요구사항이 추가되었다. 팀에서 요구한 사항은 png, jpg, bmp 에 대해 다운로드를 허용하고 이외엔 차단하는 것인데, 이를 구현하면서 겪은 문제를 간단히 공유해본다. 요구사항 png(png, apng), jpeg(jpg, jpeg), bmp 를 제외한 다른 파일 다운로드 금지 기존 DTO에 fileType이라는 필드를 추가로 전달 해당 클라이언트를 사용하는 서비스에 validation 로직 추가 이제 위의 요구사항 충족을 위해, 이미지 파일의 타입을 알아내고자 한다. 이미지 파일 타입 유추 파일의 타입을 유추하는 방법은 크게 다음과 같다. header 정보 참조 .. 2024. 4. 12.
[Vue.js] QR code 만들기 개요 최근에 사내 어드민 페이지를 리뉴얼하면서, QR 코드에 링크를 담아 화면에 띄워주는 기능을 구현하였다. 이 과정에서 QR코드 로딩 방식을 교체하게 되었는데, 관련된 내용을 공유하고자 한다. 외부 서비스 이용 QR 코드를 만드는 방법에 대해, 우리는 두 가지를 생각할 수 있다. 별도의 웹서버 등에서 이미지를 생성하고, 해당 이미지의 링크를 받아와 화면에 표시 프론트엔드 페이지에서 직접 그려서 표시 이 중 첫번째 방법에 대해 먼저 알아보자. Google Chart API 구글에서는 화면에 차트를 그리기 위한 Chart API 를 공개하고 있다. 해당 API 문서를 보면, API 서버에 요청을 보내 해당 이미지를 바로 사용할 수 있음을 알 수 있다. 그런데 왜 Chart API를 여기서 언급하고 있을까?.. 2024. 1. 11.
[Jenkins] cron시 timezone 추가하기 본 글은 아래의 목적을 위해 작성되었다. Jenkins Pipeline에 대해 간단히 알아본다. Jenkins Pipeline의 cron 옵션에 timezone을 추가한다. Jenkinsfile의 cron 옵션에 timezone을 추가한다. Jenkins pipeline 젠킨스 파이프라인이 무엇일까? 젠킨스 파이프라인은 cd(지속적 전달) 파이프라인을 젠킨스에 구현하고 통합하는 것을 지원하는 플러그인 모음이다. 출처: https://www.jenkins.io/doc/book/pipeline/ 젠킨스 파이프라인을 통해, 다양한 목적을 수행할 수 있다. 프로젝트의 자동화된 CI/CD 환경 구축 자동화된 배치 프로세스 구축 나 역시 Jenkins를 통해 지속적 통합을 위한 테스트 수행, 배포 프로세스 수행,.. 2022. 7. 12.
개발자의 道 개발자로 살아가는 내게 지침이 될 道가 있을까. 고전 읽기 중 갑자기 든 생각. 마침 대학大學을 읽고 있던 참이라, 심심해서 대학大學 경經 1장을 고쳐 잡설을 써봤다. 단어만 조금 고쳤는데 뜻이 통하는 것이 신기하다. 경지에 다다르면 다 통한다더니. 덧붙여, 가벼운 유머글로 봐주시길.. 개발자의 대학大學 경經 1장 개발의 도는 자신의 밝은 코드를 밝히는 것에 있고, 사용자를 자기 몸처럼 아끼는 것에 있으며, 지극히 좋은 코드의 경지에 머무르는 것에 있다. 마땅히 머물러야 할 좋은 코드의 경지를 안 뒤에야 코드가 향할 방향이 정해지고, 코드가 향할 방향이 정해진 뒤에야 코드가 흔들리지 않을 수 있으며, 코드가 흔들리지 않은 뒤에야 어떤 상황에서나 편안할 수 있고, 어떤 상황에서나 편안하게 된 뒤에야 코딩을.. 2022. 4. 20.
[Tips] 반복되는 값을 상수로 선언하자. 심심해서 적어보는 시리즈. 트러블 슈팅 끝에 얻은 코딩 팁들을 앞으로 Tips 시리즈로 소개해드리려고 한다. 이 글은 레퍼런스 부담 없이, 간략하게만 쓸 생각이다. 요약 함수 호출 횟수를 줄이면 성능이 향상된다. 반복되는 값은 상수로 선언하는 것이 좋다. 반복적인 함수 호출은 비용이다 오늘의 첫번째는, 함수 호출에 대한 이야기이다. 우리가 코딩을 하다보면 종종 잊는 사실이 있는데, 함수를 호출하는 것은 생각보다 꽤 큰 비용이 드는 작업이라는 사실이 그것이다. 물론 알고리즘 문제풀이나 빅데이터 가공과 같은 극단적인 상황이 아니라면 충분히 감수할 수 있지만, 그래도 확실하게 티가 나는 부분들이 존재한다. 함수의 반복 호출 for(int i = 0; i < getSize(); i++) { // 연산... } .. 2022. 4. 11.
팩토리 함수 이름짓기 최근에 이펙티브 코틀린(링크)을 재미있게 읽고 있다. 코틀린 기초가 빈약해서 조금 어려운 감은 있지만, 코틀린 외에도 개발 전반에 대한 이야기가 종종 나와 유용하다. 읽던 도중, 팩토리 함수에 대한 언급이 나와 정리해본다. 출처: 마르친 모스칼라, 『이펙티브 코틀린』 (인사이트, 2022), 206~211pp. (아이템 33 생성자 대신 팩토리 함수를 사용하라) 팩토리 함수 팩토리 함수는 생성자의 역할을 대신 해주는 함수를 뜻한다. 팩토리 함수를 생성자 대신 사용할 경우, 아래와 같은 장점이 생긴다. 생성자와 달리, 이름을 붙여 특별한 객체를 생성하는 경우에 대한 의미를 전달할 수 있다. 함수가 원하는 형태의 타입을 리턴할 수 있다. 예를 들어, listOf는 List 인터페이스 중 적절한 클래스(예: .. 2022. 4. 3.
반응형