분류 전체보기 172

[MySQL] 프로그래머스 - Python 개발자 찾기

https://school.programmers.co.kr/learn/courses/30/lessons/276013 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krSELECT ID, EMAIL, FIRST_NAME, LAST_NAMEFROM DEVELOPER_INFOSWHERE 'Python' IN (SKILL_1, SKILL_2, SKILL_3)ORDER BY ID; 📚 문법 정리1.  'Python' IN (SKILL_1, SKILL_2, SKILL_3)  - 이 문법은 스킬1, 스킬2, 스킬3에서 'Python'이 하나라도 발견하면 그 행을 조회하는 것이다.SKILL_1 = 'Python' OR ..

[MySQL] 프로그래머스 - 잔챙이 잡은 수 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/293258 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krSELECT COUNT(*) AS FISH_COUNTFROM FISH_INFOWHERE LENGTH IS NULL; 📚 문법 정리- COUNT(*) : NULL 포함 모든 행의 개수 (COUNT(컬럼명) : NULL 제외 모든 행의 개수 임을 잊지말자!)- IS NULL : NULL인 경우만 필터링

[MySQL] 프로그래머스 - 가장 큰 물고기 10마리 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/298517 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krSELECT ID, LENGTHFROM FISH_INFOWHERE ID NOT IN (4, 5)ORDER BY LENGTH DESC, ID ASCLIMIT 10; 📚 문법 정리- NOT IN : 여러 값 중 포함되지 않은 것들을 선택- ORDER BY : 조회 결과를 정렬 (DESC : 내림차순 / ASC : 오름차순)- LIMIT : 결과 행 수 제한

GitHub Actions + Docker로 미니PC 자동 배포 오류 해결기

당신의 안식의 서버 Spring Boot 프로젝트를 자동 빌드하고, 미니PC에 자동 배포하는데 성공했다..!많은 오류와 삽질이 있었기에 어떻게 해결했는지 기록하려고 한다.일단 나는 Spring Boot 프로젝트를 GitHub Actions의 CI/CD 파이프라인을 통해 Docker 이미지로 빌드한 후, Docker Hub에 업로드하고, 미니 PC에서 해당 이미지를 pull하여 실행하는 방식으로 배포 로직을 구성했다.👀 문제 상황 GitHub Actions로 CI/CD 설정 완료Mini PC에 PostgreSQL 설치Spring Boot 앱은 Docker 컨테이너로 실행되도록 구성이 상태에서 앱을 배포했더니, 다음과 같은 DB 연결 실패 오류가 발생했다.CannotGetJdbcConnectionExcep..

🙋‍♀️ Infra 2025.03.25

[MySQL] 프로그래머스 - 특정 형질을 가지는 대장균 찾기

https://school.programmers.co.kr/learn/courses/30/lessons/301646 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krSELECT count(*) as COUNTFROM ECOLI_DATAWHERE GENOTYPE & 2 = 0 AND (GENOTYPE & 4 >= 1 OR GENOTYPE & 1 >= 1); 비트 연산을 알아야지 풀 수 있는 문제였다.비트연산자 1. & : and 연산 (대응되는 비트가 모두 1이면 1 반환) 2. | : or 연산 (대응되는 비트 중에서 하나라도 1이면 1 반환) 3. ^ : xor 연산 (대응되는 비트가 서로 다르면 1을 ..

[미니 프로젝트] (3) - 미니 PC로 홈서버 구축하기

마지막으로 가장 중요한 보안을 신경써야한다. 사실 여기까지하면 내 비밀번호만 알고있으면 누구나 내 미니 PC에 원격 접속을 할 수 있다!이 부분은 보안에 취약하고, 심각하면 내 중요한 정보를 탈취할수도 있는 문제가 발생할 수 있다. 그래서 비밀번호 설정이 아닌 SSH key를 이용해 접속하는 방식으로 바꿨다. 먼저 개념을 생각해보자. ssh 키를 생성하게 되면 비밀키와 공개키가 만들어진다. 여기서 서버의 공개키는 클라이언트가 보낸 응답을 검증하는 역할을 한다. 1. 클라이언트에서 SSH 키 생성클라이언트에서 SSH 키를 생성한다.ssh-keygen 명령어를 통해 비밀키 + 공개키를 만들 수 있다. 2. 서버에게 공개키 저장그 후, 서버에 접속해서 공개키를 저장해준다. 3. SSH KEY를 통해 SSH 접..

🙋‍♀️ Infra 2025.03.13

[CS] 멀티스레딩 & 멀티프로세싱 (feat: 멀티스레딩 예시 코드)

오늘은 멀티스레딩과 멀티프로세싱이 뭔지 알아보자!면접 질문에 많이 나오는 CS 지식 중에 하나인데 아직 정확하게 알고 있지 않은 것 같아서 이참에 정리해보려고한다. 그 전에 프로세스와 스레싱에 대해 생각해본다면 다음과 같다.1️⃣ 프로세스 VS 스레드1) 프로세스 : 프로세스는 프로그램이 운영체제에 의해 실행 중인 인스턴스를 의미한다. 즉, 실행 중인 프로그램을 의미한다. 프로세스는 독립적인 메모리 영역을 가지고 있다. 2) 스레드 : 스레드는 프로세스 안에서 실행되는 작업의 흐름이다. 포로세스와는 별개로 하나의 프로세스 안에 여러 개의 스레드가 존재할 수 있다. 이 스레드는 스택 영역만 독립적이며 코드, 데이터 힙 메모리를 공유한다.2️⃣ 멀티 프로세스 vs 멀티 스레딩1) 멀티 프로세스 : 프로세스가..

[알고리즘] 공간 복잡도 계산

알고리즘 문제를 풀다보면 시간복잡도 뿐만 아니라 공간 복잡도의 계산도 필요하다. 백준과 같은 코테 사이트에 들어가보면 메모리 제한이 있는것을 확인할 수 있는데 여기서 메모리도 잘 생각하고 푸는 것이 중요하다.  🤔 기억해야할 것!문자 1개 = 4Bytes1Byte = 8Bits1 KB = 1,024 Bytes1 MB = 1,024 KB = 1,048,576 Bytes1 GB = 1,024 MB = 1,073,741,824 Bytes 그니깐 위에 512MB는 1024Bytes * 1024Bytes * 512 = 536,870,912Bytes  인것! 특히 DP나 그래프 문제에서 유의해야함을 잊지 말자. 참고로 자료형 크기는 다음과 같다.int (정수형) = 4 Byteschar (문자형) = 1 Byte..

[미니 프로젝트] (2) - 미니 PC로 홈서버 구축하기

이제 우분투를 깔았으니 포트포워딩, 방화벽 설정, ssh 원격 접속 설정을 해주자. 우선 각 용어에 대한 개념 공부가 필요하다. 1. 포트포워딩 (Port Forwarding)포트포워딩을 이해하려면 아래와 같은 개념을 알아야 한다. 1) 아이피 (Internet Protocol)IP 주소는 네트워크에 연결된 장치를 식별하는 고유한 주소이다. 예를 들어 컴퓨터, 서버 등이 IP 주소를 가지고 일반적으로는 숫자로 이루어져 있다. 2) 공인 아이피공인 IP는 인터넷 서비스 제공업체에서 할당받은 IP 주소이다.인터넷에서 고유하고 전 세계 어디서나 인터넷을 통해 접근할 수 있는 IP주소이다.  3) 사설 아이피사설 IP는 내부 네트워크 내에서만 사용되는 IP 주소이다. 예시로 집, 회사 네트워크에서만 사용되는 것..

🙋‍♀️ Infra 2025.03.04

[미니 프로젝트] (1) - 미니 PC로 홈서버 구축하기

드디어 미니 PC를 구입했다.  동기한테 추천을 받고 firebat T8 N100를 구매했다!알리 익스프레스에서 17만 5000원 정도에 구매했고, 스펙은 16GB RAM, 512GB SSD로 선택했다.   🙋‍♀️ 미니 PC를 구매한 이유내가 미니PC를 구매한 이유는 아래와 같다. 나름 합리적인 가격으로 24시간 서버 운영을 위해요즘 "당신의 안식" 어플 서버를 개발 중인데, AWS에 올리면 비용을 감당하지 못할 것 같았다. 미니 PC를 사용하면 비용을 절감하면서 개인 서버를 운영할 수 있으니 합리적이라고 판단했다.CS 공부를 위해주위에 개인 서버 구축한 친구들 보면 책으로 공부하는 것보다 더 많은 지식을 알고 있는 것 같았다. 그래서 나도 직접 경험을 쌓으며 공부하고 싶었다. Ubuntu 경험 쌓기..

🙋‍♀️ Infra 2025.03.01