본문 바로가기

전체 글135

[MySQL] 초 단위 시간차이 계산 이번 하나은행 상반기 코테에서 SQL 두번째 문제로 초 단위의 시간계산이 필요한 문제가 나왔다.DATEDIFF()를 활용한 날짜 계산은 익숙했지만 다른 시간 단위의 계산은 미처 생각하지 못해 당황스러웠다.시간 유닛을 매개변수로 사용하는 뭔가가 있었던 거 같은데,,, 했으나 끝끝내 떠올리지 못했다. 시험이 끝난 후 찾아보니 TIMESTAMPDIFF(단위, 날짜1, 날짜2) 라는 함수가 있더라.함수명이 생소한 거 보니 떠올리지 못한 게 아니라 그냥 몰랐던 듯하다. 엄,, 그래서, 초 계산 그거 어떻게 하는 건데 TIMESTAMPDIFF(단위, 날짜1, 날짜2)단위로는 SECOND, MINUTE, HOUR, WEEK, MONTH, YEAR 등이 사용가능하고,날짜1이 날짜2보다 이른 시점일 때 계산 결과가 양수.. 2024. 4. 8.
[Error] RedHat Linux(ootpa)의 패키지 관리자 문제 상황Docke로 MySQL 컨테이너를 실행하다가 컨테이너 내부에 설정 파일을 생성할 일이 생겨서 vi 명령어를 사용했더니"command not found" 에러가 났다. 그래서 vim을 설치하려니까 패키지 관리자도 없단다.이제껏 주로 패키지 관리자로 사용하던 apt, yum을 시도해보았으나 모두 "command not found" OS 확인그래서 아래 명령어로 OS를 확인해보았다.cat /etc/*-release Red Hat 사의 Linux(Ootpa) 였다.찾아보니 해당 OS의 패키지 관리자는 microdnf 라고 한다. 이 명령어를 사용하니 정상적으로 설치에 성공했다! 2024. 4. 2.
[SQL] MySQL에서의 비트연산 / 프로그래머스 Front End 개발자 찾기 https://school.programmers.co.kr/learn/courses/30/lessons/276035 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 탐색 이번 문제는 SQL 문제를 풀면서 처음으로 비트연산을 다뤄보게된 문제입니다. 비트연산 중에서 AND(&) 연산을 사용하는데요. SKILLCODES 테이블의 CODE 컬럼값의 의미를 살펴보면, 해당 값을 이진수로 변환했을 때 1로 표현되는 bit는 그 기술을 가지고 있다는 의미라고 합니다. 즉, 예를 들어 어떤 개발자의 SKILL_CODE가 400 (=b'110010000')이라면, 이.. 2024. 3. 24.
[프로그래머스]단어 변환 / 자바 (BFS/DFS 맛꿀마 문제) https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제는 DFS와 BFS 모두 풀이가 가능한 문제입니다. 먼저 문제의 요구사항을 살펴보면, 문자열 begin으로부터 문자열 target까지의 변환에 필요한 최소 변환 횟수를 구하는 것이 목표입니다. 단, 변환 조건은 한 번에 한 개의 알파벳만 변환이 가능하다는 겁니다. 즉, A에서 B로의 변환이 가능한 경우는 A와 B를 비교했을 때 한 글자를 제외하고 나머지 글자가 모두 같은 경우라고 생각할 수.. 2024. 3. 23.
[SQL] GROUP BY 사용 시 주의점 [프로그래머스] 물고기 종류 별 대어 찾기 https://school.programmers.co.kr/learn/courses/30/lessons/293261 ㅊ 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음에 작성한 쿼리 에러명 sql_mode=only_full_group_by 문제의 요구사항은 물고기 종류별 가장 큰 물고기 정보를 출력하는 것인데, 아래 코드에서의 문제점은 GROUP BY 후 max() 함수를 사용한 결과 FISH_INFO 테이블의 id 컬럼이 특정되지 않는다는 점이다. 예를 들어, n.fish_name과 max(length) 컬.. 2024. 3. 23.
[HTTP] 컴퓨터들간의 통신을 위한 주소, IP IP라는 단어는 숱하게 들어보았는데 그 실체에 대해선 잘 모르고 있는 것 같아 조금 더 자세히 알아보고자 한다. 서로 다른 컴퓨터는 어떻게 통신할까? 한국에 있는 영희의 컴퓨터와 미국에 있는 제임스의 컴퓨터가 서로 통신할 수 있는 기반은 Internet이다. 이 인터넷망에서 각 컴퓨터는 고유한 주소를 가지고 있는데 이를 IP 주소라고 한다. 즉, 클라이언트의 IP 주소에서 서버의 IP 주소로 데이터를 보내서 통신을 하는 것이다. Internet Protocol, 직역하면 '인터넷 규약' 인터넷 규약, 풀어서 말하자면 인터넷 상에서의 통신을 위해 지켜야하는 약속을 말한다. IP 주소 간의 데이터 통신은 패킷 단위로 전달이 되는데, 이 패킷의 구성 요소는 다음 세 가지이다. 출발지 IP 주소 목적지 IP 주.. 2024. 3. 3.
[Error] Error: connect ECONNREFUSED 127.0.0.1:443 문제 상황SpringBoot 애플리케이션에 SSL 인증서를 적용하고 HTTPS로 요청을 보냈더니 아래와 같은 에러를 맞이했다.Error: connect ECONNREFUSED 127.0.0.1:443 해결 방법HTTP로 요청을 보낼 때 port를 80으로 설정해놓았던 부분이 문제였다.HTTPS는 기본 포트가 443이므로, 아래와 같이 포트를 바꿔줌으로써 HTTPS 요청을 성공적으로 보낼 수 있었다.server: port: 443 2024. 2. 12.
[Docker] Docker 컨테이너 실행(run) 시 환경변수 (여러개) 주입하기 docker run 명령어 실행 시 환경변수 주입이 왜 필요한가 스프링부트 애플리케이션을 개발하다보면 application.yml 파일에 각종 계정 정보, 키값 등 외부에 공개되어서는 안되는 정보들을 기입하게 됩니다. 따라서 위처럼 환경변수로 은닉할 정보를 갈음하곤 합니다. 그렇다면 이 애플리케이션을 Docker Image화 시켜서 구동하게 된다면 환경변수를 어떻게 설정해주어야 할까요? 아래와 같이 Dockerfile에 환경변수들을 기입해 줄수도 있지만 이 방식은 이 Dockerfile을 공개 저장소에 업로드할 수 없다는 문제점이 있습니다. 이에 대한 대안으로 Docker Container 실행하는 시점에 환경변수를 주입하는 방안이 있습니다. 환경변수를 주입하는 옵션 -e 혹은 --env 옵션은 컨테이너.. 2024. 1. 31.
[SQL 문제풀이] 저자 별 카테고리 별 매출액 집계하기 https://school.programmers.co.kr/learn/courses/30/lessons/144856#qna 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 이 문제에서 애를 먹었던 부분은 카테고리 별 매출액(TOTAL_SALES = 판매량 * 판매가) 을 구하는 것이었다. 아래 코드 상에서 1번 라인의 SUM(s.SALES*b.PRICE) 부분이 그것이다. 처음에는 SUM(s.SALES)*b.PRICE 와 같이 코드를 작성했었는데 이 코드로는 오답처리가 되었다. SUM(s.SALES*b.PRICE) 는 되고, SUM(s.SALES.. 2023. 12. 20.
[JPA] JPA의 Entity에 기본 생성자가 필수인 이유 @Entity에는 @NoArgsConstructor가 필수라고? @Entity 어노테이션의 특성에 대해 알아보던 중, @NoArgsConstructor가 꼭 함께 쓰여야 한다는 내용을 접하게 되었다. 이를 계기로 그동안 습관적으로 클래스에 선언하던 어노테이션들에 대해 다시 한번 생각해보게 되었다. 이전에 개발했던 프로젝트를 들춰보니 아니나 다를까 @Entity와 @NoArgsConstructor가 함께 선언되어 있음을 발견할 수 있었다. 그리고, @NoArgsConstructor를 주석 처리하니 위와 같이 'public 혹은 protected의 기본 생성자를 가져야 한다'는 내용의 에러 메세지를 확인 할 수 있었다. 위의 에러 메세지에서 확인할 수 있듯 @Entity가 @NoArgsConstructor를.. 2023. 12. 17.
[Design Pattern] Singleton Pattern 싱글톤 패턴이란? 싱글톤 패턴은 어떤 클래스에 대해 오직 하나의 인스턴스만 생성하여 사용하는 것을 말합니다. 이러한 패턴을 따르는 클래스는 최초에 한번만 객체가 생성되고, 이후 생성자가 여러번 호출되더라도 이미 생성해놓은 객체를 반환하는 방식으로 작동하게 됩니다. 이러한 패턴은 주로 프로그램 내에서 전역적으로 공유될 필요가 있는 객체를 구현할 때 사용되곤합니다. 싱글톤 패턴을 사용하는 이유 1. 메모리의 절약 같은 작업을 하는 여러 객체가 불필요하게 중복 생성되어 메모리가 낭비되는 상황을 방지할 수 있습니다. 2. 데이터 공유 전역으로 사용되는 인스턴스이기 때문에 여러 클래스에서 데이터를 공유하며 사용할 수 있습니다. 주의할 점 1. 멀티 스레드 환경 멀티 스레드 환경에서 하나의 인스턴스를 대상으로 작업.. 2023. 8. 29.
[OS] 캐시 메모리 캐시 메모리 캐시 메모리는 속도가 빠른 장치와 느린 장치 간 속도 차이에 따른 병목 현상을 줄이기 위한 메모리입니다. 메인 메모리(RAM)과 CPU 사이에 위치하여, 메인 메모리에서 자주 사용하는 프로그램과 데이터를 저장해두어 처리 속도를 높이는 역할을 합니다. 이러한 캐시의 성능은 미래에 사용될 데이터를 예측하는 데 달려있는데 이에 관련된 개념이 캐시의 지역성(Locality)입니다. 캐시의 지역성(Locality) 캐시의 지역성이란, 데이터에 대한 접근이 시간적 혹은 공간적으로 가깝게 발생하는 특성을 의미합니다. 지역성을 활용하여 캐시의 적중률(Hit rate)을 극대화하여 캐시의 효율을 제고할 수 있습니다. 지역성의 종류 1. 공간 지역성 : 최근 사용했던 데이터의 물리 주소와 인접한 데이터가 참조.. 2023. 8. 22.