전체 글 47

[Java] JVM과 Java 컴파일

자바의 큰 특징 중 하나는 Mac이든 Linux든 Windows든 어떤 OS에도 영향을 받지 않고 독립적으로 실행될 수 있다는 것이다. 이는 자바가 JVM(Java Vitual Machine) 위에서 동작하기 때문에 가능한 것이다. 그렇다면 JVM이 어떻게 동작하기에 자바가 OS에 영향을 받지 않고 독립적으로 실행될 수 있는지, 그리고 컴파일 과정은 어떻게 되는지 알아보도록 하자. Compiled vs Interpreter 그렇다면 컴파일 과정을 알기 전에, 컴파일이 무엇인지 알아보자 컴퓨터 언어는 크게 컴파일(Complie) 언어와 인터프리터(Interpreter) 언어로 나뉜다. 컴파일 언어는 프로그램 실행 전, 소스 코드 전체를 기계어로 변환하는 컴파일을 수행하는 단계가 필요한 언어이고, 인터프리터..

Java 2024.01.19

[VScode] 코드 스니펫 생성 방법 (커스텀 템플릿 생성, 자동완성)

Snnipet 스니펫(Snippet)은 재사용 가능한 소스 코드, 기계어, 텍스트의 작은 부분을 일컫는 프로그래밍 용어이다. 사용자가 루틴 편집 조작 중 반복 타이핑을 회피할 수 있게 도와준다. - 위키백과 간단히 말해서 템플릿이라 생각하면 된다. 예시를 보면 확실히 이해가 될 것이다 다음 알고리즘 문제 풀이들을 보자 서로 다른 알고리즘 문제를 풀고 있지만, 동일한 형태의 주석을 이용해서 메모하는 것이 보일 것이다 이처럼 주석이든 코드든 상관없이 일정한 형태의 템플릿을 자주 사용한다면, 다음처럼 코드 스니펫을 사용하여 편리하고 빠르게 반복 작업을 수행 할 수 있을 것이다 코드 스니펫 설정 방법 1. Code -> 기본 설정 -> 사용자 코드 조각 구성 2. 새 전역 코드 조각 파일 -> 이름 입력 후 생..

[GitHub Actions] 스프링 서버 ci/cd 구축하기 (feat. Docker Hub)

이번 글은 다음 링크의 연장선이라 볼 수 있다 https://kdh0518.tistory.com/entry/cicd-develop%EC%84%9C%EB%B2%84%EC%99%80-release%EC%84%9C%EB%B2%84-%EB%B6%84%EB%A6%AC [ci/cd] develop서버와 release서버 분리 현재 상황 ec2에 배포서버 1개, 배포db 1개, redis 1개, jenkins 1개 + etc = 총 6개 정도의 컨테이너가 동작중 ci/cd 과정 local에서 개발 진행 개발 사항을 PR, 이후 develop으로 merge develop이 업데이트되면 jenkin kdh0518.tistory.com 이전 글에서 내가 한 가지 크게 착각하고 있었던 부분이 있었다. 분명 내 맥북은 메모리..

[Jenkins] Jenkins jobs를 다른 Jenkins로 이동시키는 방법

최근 서버 비용을 줄이기 위해서 local과 ec2를 넘나들며 jenkins를 테스트 하다보니, 기존에 jenkins를 설정하고 다른곳에 넘어가서 새로 연결하는게 너무 귀찮았다. 그래서 어떻게 방법이 없을까 하고 찾아보다가 jenkins jobs를 다른 jenkins로 이동시키는 방법이 있기에 공유하고자 한다. 환경 : mac m1, aws ec2, docker 동작 : local docker에 설치된 jenkins를 local에 이동 -> local에서 ec2로 이동 -> ec2 docker에 설치된 jenkins로 이동 1. Local Docker에 설치된 jenkins를 Local directory로 이동 복사를 원하는 local directory에서, docker의 /var/jenkins_home..

[ci/cd] develop서버와 release서버 분리

현재 상황 ec2에 배포서버 1개, 배포db 1개, redis 1개, jenkins 1개 + etc = 총 6개 정도의 컨테이너가 동작중 ci/cd 과정 local에서 개발 진행 개발 사항을 PR, 이후 develop으로 merge develop이 업데이트되면 jenkins에서 webhook을 통해 업데이트 감지 jenkins에서 깃허브의 develop으로 ec2 도커에 image build & deploy 문제점 local에서 테스트를 통과하여도 ec2 환경에서는 장애가 발생할 수 있음 장애가 발생하면 배포 서버가 죽기 때문에, 유저의 원활한 서비스 이용이 불가능함 develop을 수정할 때마다 배포가 되기 때문에 release를 따로 운용하지를 못함 해결 방안 Develop서버와 Release서버를 ..

스파로스 아카데미 3기 수료 후기 (백엔드)

4개월 가량(688시간 교육 + ⍺)의 스파로스 아카데미가 끝이 나서 후기를 작성해보고자 한다. 어떤 사람들이 스파로스 아카데미를 선택하면 좋을지와 프로젝트 과정, 멘토링, 특강, 취업 도움 등에 대해서 간략하게 적어볼테니, 이 글이 앞으로 스파로스 아카데미를 선택하실 분들에게 도움이 되었으면 한다. 어떤 사람들이 Spharos Academy를 가면 좋을까 ? 먼저 스파로스 아카데미는 기본적으로 프론트는 Next.js 백엔드는 SpringBoot를 사용하여 개발한다. 이런 프레임워크를 사용해서 기본적인 crud는 당연하고, 이 외에 요즘 핫한 기술들을 많이 사용하기 때문에 프레임워크를 모르는 상태로 다니면 많이 힘들 수 있다. 실제로 프레임워크는 물론이고, react나 java도 처음 접한 분들이 계셨는..

회고록 2023.12.31

[Network] What is Protocol?

프로토콜이란? 정의 프로토콜은 컴퓨터의 공통 언어로, 각 장치들이 주고받는 메시지의 양식과 규칙을 정해놓은 것이다. ex) 영어가 세계 공용어인것 처럼, 컴퓨터들이 서로 통신하기 위해서는 공용어인 프로토콜을 사용해야 한다 네트워크로 연결된 장치들은 서로 다른 소프트웨어와 하드웨어를 사용하는 경우가 많기 때문에 반드시 프로토콜을 사용해서 통신해야한다 네트워크 프로토콜의 종류 OSI 7계층으로 분류한 네트워크 프로토콜 종류 ex) FTP : 파일 전송 프로토콜 HTTP : 하이퍼 텍스트 전송 프로토콜 SMTP : 전자 우편 전송 프로토콜 IP : 인터넷 프로토콜 TCP : 전송 제어 프로토콜 프로토콜의 구성요소 Syntax (구문) - 데이터의 '형식(format)', '부호화(coding)' 등을 규정 -..

Network 2023.12.21

[백준/Python] 에디터 1406

알고리즘 분류 : 연결 리스트, 스택 시간복잡도 : O(N) 시간복잡도 NlogN까지 가능 단순 구현을 하면 insert, del에서 O(N)이 쓰이기 때문에 TLE가 발생한다 insert, del에서 시간복잡도를 줄이기 위해 deque의 popleft, appendleft를 사용한다 또한 popleft와 appendleft를 사용하기 위해서, cursor를 기준으로 String을 좌측과 우측으로 분리한다 실패 1. 구현 - TLE, insert와 del을 처리할 방법이 필요 2. 구현 - insert와 del이 O(1)인 deque를 사용 - TLE, deque는 이중 연결리스트로, 중간값에 대해서는 접근이 느리기 때문에 항상 O(1)이 아님성공 3. 구현 - reference : https://vel..

[OS] Computer System의 3계층

컴퓨터 시스템의 3계층 구조 가장 아랫층에 H/W, 가운데에 Kernel 모드, 제일 위에 User 모드로 이루어져있다 운영체제(Operating System)란? 프로그램이 실행되기 위해 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램 컴퓨터 시스템 3계층에서 Kernel 모드와 User 모드를 합쳐서 운영체제라고 한다 커널(Kernel) OS의 핵심 부분으로 자원관리와 S/W와 H/W사이에서 인터페이스 역할을 한다 프로세스(Process) 컴퓨터에 설치된 프로그램이 실행이되면 이를 곧 프로세스라 한다 OS로부터 자원을 할당받은 "작업"의 단위로, 메모리에 적재되고 CPU 자원을 할당받는다 시스템 프로세스와 사용자 프로세스로 나뉜다 System Process 기능 : 시스템..

Operating System 2023.12.18