목록분류 전체보기 (105)
imhamburger 님의 블로그
문제 (출처: 프로그래머스) n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다.노드의 개수 n, 간선에 대한 정보가 담긴 2차원 배열 vertex가 매개변수로 주어질 때, 1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지를 return 하도록 solution 함수를 작성해주세요. 제한사항노드의 개수 n은 2 이상 20,000 이하입니다.간선은 양방향이며 총 1개 이상 50,000개 이하의 간선이 있습니다.vertex 배열 각 행 [a, b]는 a번 노드와 b번 노드 사이에 간선이 있다는 의미입니다. 입출력 예n..
이전글에서는 minikube를 사용하였었는데 이번에는 k3s를 이용하여 부하테스트를 해보고자 한다. minikube는 로컬 환경에서 Kubernetes를 쉽게 테스트하고 학습할 수 있도록 설계된 싱글 노드 Kubernetes 클러스터 이지만,k3s는 경량화된 Kubernetes 배포판으로, Kubernetes의 모든 기능을 유지하면서도 리소스가 적은 환경에서도 효율적으로 작동하도록 설계되어있다. 중요한건 minikube는 싱글노드이지만k3s는 멀티 노드 클러스터를 쉽게 구성할 수 있으며, 실제 프로덕션 환경에서도 사용할 수 있다. k3s를 설치하는 방법은 아래 공식문서 참고!! Quick-Start Guide | K3sThis guide will help you quickly launch a clus..
쿠버네티스 애플리케이션을 컨테이너(Container) 형태로 패키징하여 자동으로 배포, 확장 및 운영할 수 있게 해주는 오픈소스 플랫폼이다.주로 마이크로서비스나 여러 컨테이너 기반의 애플리케이션을 운영하는 데 사용된다. 왜 쿠버네티스를 사용해? 기업이나 개발팀이 마이크로서비스 구조의 애플리케이션을 운영할 때, 각 서비스를 컨테이너로 분리하여 관리하면 유연성이 높아진다.하지만 이렇게 관리해야 할 컨테이너의 수가 많아지면, 이를 직접 제어하는 것이 어려워지기 마련이다. Kubernetes는 이처럼 수많은 컨테이너와 서버를 자동으로 관리하고, 높은 가용성을 유지하며 효율적인 자원 활용을 가능하게 한다! 나는 내 컴퓨터에서 Kubernetes 클러스터를 쉽게 실행할 수 있도록 도와주는 오픈소스 도구인 mini..
파이썬 smtplib 라이브러리와 gmail 계정을 이용하여 메일 전송하는 기능을 만들어 보자! 사전에 해야 할 설정 1. 메일 보낼 계정으로 로그인 후 우측 상단 톱니바퀴 클릭 -> 모든 설정 보기 클릭 2. 전달 및 POP/IMAP -> IMAP 사용 클릭 후 변경사항 저장 3. 구글계정에서 "앱 비밀번호 검색" 4. 앱 비밀번호 생성 (노출금지) 파이썬 코드import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.base import MIMEBase from email.mime.image import MIMEImage from email import e..
같은 어플리케이션을 도커를 이용해 여러 개의 컨테이너로 생성하여 실행하고 로드밸런서를 이용해 분산시키는 것을 해보려고 한다. 나는 간단하게 웹사이트를 만들었고 도커를 이용해 3개의 컨테이너를 실행한다고 가정해보자.웹사이트는 Apache httpd 웹 서버 소프트웨어를 이용해 서빙할 것이다. apache httpd 는 도커 이미지를 사용하였다. (httpd 도커) 도커파일은 다음과 같이 설정해주었다. DockerfileROM httpd:2.4ARG REPO_URL=https://github.com/hamsunwoo/hamsunwoo.github.io.gitCOPY ./my-httpd.conf /usr/local/apache2/conf/httpd.confRUN ["apt-get", "update"]RUN [..
파이널 프로젝트 시작 전에 2개의 프로젝트가 남아있는데 그 중 하나는 자바를 이용한 프로젝트였다.프로젝트 기간이 짧아 어떻게 할까 고민중에 로그인 기능을 구현하자고 의견을 내었다. 2일이라는 시간 안에 막 엄청난 걸 만들 수는 없을 것 같고...기능 하나를 제대로 만들어보자. 그리고 파이널 프로젝트 때도 필요한 기술들을 다뤄보자! 해서 결정하게 되었다. 팀프로젝트 주제로그인 기능을 위한 REST API를 Java로 구현메인 로그인 페이지는 Streamlit으로 제작카카오 로그인 연동을 지원로그인 회 회원가입, 회원탈퇴, 회원정보변경 기능 구현 나의 역할REST API를 Java로 구현로그인 화면 구현회원가입 화면 구현 데이터베이스 설계 및 구축 우리가 사용한 기술1. Java 17버전2. Python ..
json-server를 이용하여 간단하게 CRUD를 실습해보자. json-server는 간단하게 가짜 REST API 서버를 만들 수 있는 도구이다. 주로 프론트엔드 개발에서 백엔드 API가 완전히 준비되지 않았을 때, 테스트 목적으로 사용된다. JSON 파일 하나를 데이터베이스처럼 사용하여, RESTful API를 빠르게 생성할 수 있다. 1. json-server 설치하기npm install json-server 2. data.json 실행하기npx json-server data.json 3. GETcurl -X GET http://localhost:3000/person 결과 4. POSTcurl -X POST -d '{"firstName": "M", "lastName": "GG"}' h..
도커 컴포즈는 단일서버에서 여러개의 컨테이너를 하나의 서비스로 정의해 컨테이너를 묶음으로 관리할 수 있다. 여러 개의 컨테이너가 하나의 어플리케이션으로 동작할 때 도커 컴포즈를 사용하지 않는다면, 각각 한개씩 생성해야 하는 번거로움이 있다.컨테이너의 수가 많아지고 정의해야할 옵션이 많아진다면 도커 컴포즈를 사용하는 것이 좋다. 도커 컴포즈를 사용하는 방법은 도커 공식문서에 나와있다. (공식문서) 이제 도커 yml 파일을 이용해 만들어놓은 API 와 MariaDB를 함께 실행시켜보자.MariaDB는 도커허브에 있는 것을 사용하였다. (MariaDB 도커허브) docker-compose.ymlservices:#데이터베이스 database: image: container_name: en..
Jenkins는 오픈 소스 자동화 서버로, 주로 소프트웨어 개발에서 CI/CD(지속적 통합/지속적 배포)를 구현하는 데 사용된다. Jenkins는 빌드, 테스트, 배포 등의 프로세스를 자동화하여 개발자와 운영팀이 소프트웨어의 변경 사항을 빠르고 안정적으로 배포할 수 있게 도와준다. CI/CD?지속적 통합(CI, Continuous Integration): Jenkins는 개발자들이 코드 변경 사항을 Git과 같은 버전 관리 시스템에 자주 병합할 수 있게 돕는다. Jenkins는 이러한 병합이 일어날 때마다 자동으로 빌드를 실행하고, 테스트를 진행하여 코드의 품질을 유지할 수 있도록 한다.지속적 배포(CD, Continuous Delivery): Jenkins는 애플리케이션을 자동으로 서버에 배포할 수 ..
스프링부트를 알기 전에 스프링부터 알아보자. 스프링(Spring) 스프링(Spring)은 자바(Java) 기반의 애플리케이션 프레임워크이다.프레임워크란 말그대로 뼈대를 의미하는데 애플리케이션 프레임워크는 애플리케이션 개발을 빠르고 효율적이게 하기 위한 툴이다. 예를 들어, 우리가 웹사이트를 만든다고 하면 로그인 기능이나 데이터베이스 연결 같은 부분을 매번 새로 만들 필요 없이,스프링이 제공하는 기능을 써서 바로 사용할 수 있다.로그인은 Spring Security를 사용하고 데이터베이스는 Spring Data JPA를 사용하는데 복잡한 SQL을 작성하지 않고 자바 객체로 데이터베이스와 쉽게 상호작용할 수 있게 도와준다. 다시 말하자면,각 프로젝트에서 개발자는 이러한 스프링 프레임워크를 이용하여 프로그램의..