본문 바로가기

분류 전체보기85

[QueryDSL] Hexadecimal to Decimal Conversion (데이터 포맷 변환) 언어:  Java 17 사전 설명: 필자의 경우 출력하고자 하는 데이터의 칼럼이 varchar로 되어있음분명 데이터가 숫자임에도 varchar를 쓰는 이유는 유연하다는 특징이 가장 큰데 이러한 이유로 비즈니스에서 주로 varchar 타입이 선호되고 인터페이스에서도 varchar로 선언된걸 자주 볼 수 있음. 특히 16진수와 같은 데이터는 알파벳도 들어가 있기 때문에 varchar로 사용됨. 하지만 varchar, 즉 string은 숫자의 데이터 포맷 변환이 되지 않음. 즉, 데이터 포맷을 변환할 때는 숫자로 변환해야 하고 출력할 때는 문자열로 해야함. 추가로 알아야할 것은 QueryDSL에서 선언된 QClass의 칼럼은 StringPath라고 하는 타입을 갖게되는데이 타입은 실제 값을 주는것이 아니라 말.. 2024. 5. 21.
[JAVA] Zxing 라이브러리로 QR을 만들어보자 언어: Java 17 라이브러리: Zxing 공통 1. 사용하는 빌드 관리도구에 맞게 라이브러리 추가 https://mvnrepository.com/artifact/com.google.zxing/core https://mvnrepository.com/artifact/com.google.zxing/javase 2. QR을 앞단에서 출력하기 위해서는 바이트로 받아야 이미지로 출력할 수 있기 때문에 컨트롤러단에서 Return Type을 아래와 같이 설정해야한다. ResponseEntity 시나리오 1: 앞단에서 이미 QR 이미지로 인코딩 할 데이터가 있는 경우 (예: url) 시나리오 1-1: 테스트를 위해 QR 이미지로 출력 가능한 데이터는 이미 자바단에서 하드코딩이 되어있고 String url = "htt.. 2024. 4. 22.
JPA의 Persistence와 @Transient 이해하기 (feat. EL1008E) : EL1008E: Property or field '문제의 칼럼' cannot be found on ........ - maybe not public or not valid? Transient "일시적인" Temporary의 동의어 JPA에서 언급하는 Persistence "영속성"과 반대되는 개념이다. 영속성이란 사라지지 않는 데이터의 특성이다. 영속성을 갖지 않으면 데이터는 메모리에서만 존재하게 되고 프로그램이 종료되면 모두 사라지게 된다. 우리는 이렇게 영속성을 가져야 하는 데이터를 DB에 저장한다. 그러면 일시적인의 의미를 갖고 있는 저 Transient를 어노테이션으로 썼다는 것은 무엇일까? 메모리에서만 존재해야 하는, 프로그램이 종료되면 사라져도 무방한 목적의 칼럼이라고 볼 수 있다. 예컨데.. 2024. 4. 5.
QueryDSL 다른 조건으로 같은 테이블 여러번 조인하기 QueryDSL을 사용할줄 안다는 가정하에 Repository 구현체에 QClass를 조건의 수만큼 선언하고 선언한 그 QClass의 인스턴스 변수를 가져와 사용하는 것이다. 아래는 조회 예시이다. Q클래스이름 조건1 = new Q클래스이름("조건1"); Q클래스이름 조건2 = new Q클래스이름("조건2"); 조건1과 조건2를 선언했다면 조회를 위해 select에 포함시켜준다. 조건1.원하는칼럼.as("가명"), *여기서 중요한 것은 조건1은 기존 테이블이 아니기 때문에 가명을 써줘야 한다. 이 가명을 통해 앞단에서 select를 해올 수 있다. 예를 들어 테이블1과 공통 테이블2가 있다고 가정해보자. 공통 테이블2의 원하는 칼럼을 테이블1의 칼럼에 삽입하기 위해서 테이블1의 칼럼을 가명으로 선언하는 .. 2024. 4. 5.
도커 & 쿠버네티스 이해하기 도커(Docker)란? 도커를 한 문장으로 요약하면 개발자가 만든 코드가 어느 환경에서도 작동할 수 있게 도와주는 오픈소스이다. 그런데 왜 굳이 Docker일까? 영어로 된 대부분의 기술 용어들은 이름에서 그 뜻을 쉽게 유추할 수 있다. 이를 이해하고 넘어가야 Docker 의 개념을 빠르게 받아들일 수 있다. Dock은 부두이다. Docker는 자연스럽게 부두 노동자가 된다. 부두 노동자들은 부두에서 선박에 물건을 선적하고 양하하는, 하역작업자들이다. 이 부두 노동자들의 도움으로 물건이 선박에 실렸다가 내려지는 것이다. 현대에는 대부분의 물건들이 컨테이너라는 공간에 보관되고 운반 된다. 컨테이너는 왜 쓰는 걸까? 일정한 규격이 있어 싣고 내리기 편하며 독립적이면서도 튼튼하기 때문에 외부 환경에 영향을 거.. 2024. 2. 28.
웹 워커(Web Worker)란? 언제 쓰는 걸까? feat.타이머 브라우저가 인식할 수 있는 몇 안되는 언어인 자바스크립트는 놀랍게도 싱글 스레드이다. 싱글 스레드가 뭔지 모른다면 이전글을 참조하길 바란다. https://samori.tistory.com/86 싱글스레드 vs 멀티스레드 이 질문에 대답을 하기 전에 스레드가 뭔지를 알아야한다. 우리가 자주 쓰는 프로그램, 뭐 크롬이라는 브라우저를 예로 들어보자. 크롬은 사용자가 클릭해서 실행할 때 컴퓨터로부터 메모리라 samori.tistory.com 싱글 스레드 이기 때문에 몇가지 한계가 존재한다. 싱글 스레드의 한계 싱글 스레드의 경우 기본적으로 연산량이 많은 작업을 하는 경우, 그 작업이 완료되어야 다른 작업을 수행할 수 있다. 또 setInterval과 같은 함수로 반복 로직을 구현한 경우 브라우저의 정책으로 인.. 2024. 2. 16.
싱글스레드 vs 멀티스레드 이 질문에 대답을 하기 전에 스레드가 뭔지를 알아야한다. 우리가 자주 쓰는 프로그램, 뭐 크롬이라는 브라우저를 예로 들어보자. 크롬은 사용자가 클릭해서 실행할 때 컴퓨터로부터 메모리라는 자원을 할당받게 되고 그 메모리를 할당받았을 때 비로소 프로세스라고 부른다. 스레드는 이 프로세스의 실행단위이다. 브라우저는 보통 멀티스레드이기 때문에 동시에 다양한 작업을 할 수 있다. 예를 들어 한쪽에 유튜브에 영상을 틀어놓고 댓글을 쓰기등.. 여기에 더 나아가서 크롬의 경우에는 각 탭마다 프로세스이고 여러 탭을 사용하게 되면 이는 멀티 프로세스가 된다. 아무튼 이 실행단위가 하나인지, 여러개인지에 따라 각각 싱글, 멀티 스레드라고 부른다. 그렇다면, 실행단위가 싱글인것보다 멀티인것이 더 좋은거 아닐까? 다다익선이니까.. 2024. 2. 15.