ETC
카테고리에 포함되지 않는 기타 CS 지식을 공유합니다.
-
기본 flow작동 단계 github pushevent triggerjob 순서대로 작업 수행 이벤트 트리거repository에서 일어나는 push, fort 등의 작업github project, issue에서 일어나는 작업사용자가 직접 트리거 코드 작성 .github.workflows 폴더 하위에 github action으로 실행하고자 하는 일들을 파일별로 정의하면 별도의 설정 과정 없이 project의 actions 탭들을 통해 실행할 수 있습니다. actions 탭에서는 워크플로우 실행 결과를 확인할 수 있습니다. workflowworkflow란 이벤트 발생 시, 어떠한 행위를 할 것인가에 대한 작업 정의합니다. runner : job별 별도의 공간에서 실행하는 작업 공간에 대한 정의로 작업 간 내용..
Github Action 알아보기기본 flow작동 단계 github pushevent triggerjob 순서대로 작업 수행 이벤트 트리거repository에서 일어나는 push, fort 등의 작업github project, issue에서 일어나는 작업사용자가 직접 트리거 코드 작성 .github.workflows 폴더 하위에 github action으로 실행하고자 하는 일들을 파일별로 정의하면 별도의 설정 과정 없이 project의 actions 탭들을 통해 실행할 수 있습니다. actions 탭에서는 워크플로우 실행 결과를 확인할 수 있습니다. workflowworkflow란 이벤트 발생 시, 어떠한 행위를 할 것인가에 대한 작업 정의합니다. runner : job별 별도의 공간에서 실행하는 작업 공간에 대한 정의로 작업 간 내용..
2024.09.16 -
공부한 내용을 정리하는 블로그와 관련 코드를 공유하는 Github이 있습니다. Hexagonal 아키텍처헥사고날 아키텍처(Hexagonal Architecture)는 포트와 어댑터 아키텍처(Ports and Adapters Architecture)라고도 불리는 소프트웨어 아키텍처 중 하나로 주요 목표는 응용 프로그램의 비즈니스 로직을 외부 세계로부터 격리시켜 유연하고 테스트하기 쉬운 구조를 만드는 것입니다. 이를 위해 핵심 비즈니스 로직은 중앙의 도메인 영역에 위치하며, 입력과 출력을 처리하는 포트와 어댑터를 통해 외부와 소통합니다. Adapter : 모든 외부 시스템과의 직접적인 상호작용을 담당ex) Controller, Kafka Listener, DB DAOInbound & Outbound port..
멀티 프로젝트 헥사고날 아키텍처로 구축하기공부한 내용을 정리하는 블로그와 관련 코드를 공유하는 Github이 있습니다. Hexagonal 아키텍처헥사고날 아키텍처(Hexagonal Architecture)는 포트와 어댑터 아키텍처(Ports and Adapters Architecture)라고도 불리는 소프트웨어 아키텍처 중 하나로 주요 목표는 응용 프로그램의 비즈니스 로직을 외부 세계로부터 격리시켜 유연하고 테스트하기 쉬운 구조를 만드는 것입니다. 이를 위해 핵심 비즈니스 로직은 중앙의 도메인 영역에 위치하며, 입력과 출력을 처리하는 포트와 어댑터를 통해 외부와 소통합니다. Adapter : 모든 외부 시스템과의 직접적인 상호작용을 담당ex) Controller, Kafka Listener, DB DAOInbound & Outbound port..
2024.07.03 -
application/octet-stream은 무엇일까? 구글링 결과는 다음과 같습니다. application/octet-stream은 이 타입은 이진 파일을 위한 기본값입니다. 이 타입은 실제로 잘 알려지지 않은 이진 파일을 의미하므로, 브라우저는 보통 자동으로 실행하지 않거나 실행해야 할지 묻기도 합니다. Content-Disposition 헤더가 값 attachment 와 함게 설정되었고 'Save As' 파일을 제안하는지 여부에 따라 브라우저가 그것을 다루게 됩니다. application/octet-stream은 알려지지 않은 이진 파일을 알리는 content-type이라고 볼 수 있습니다. multipart/form-data 클라이언트는 HTTP Request의 Body에 전송하고자 하는 데이터..
Tomcat의 file upload (feat. octet-stream, multipart)application/octet-stream은 무엇일까? 구글링 결과는 다음과 같습니다. application/octet-stream은 이 타입은 이진 파일을 위한 기본값입니다. 이 타입은 실제로 잘 알려지지 않은 이진 파일을 의미하므로, 브라우저는 보통 자동으로 실행하지 않거나 실행해야 할지 묻기도 합니다. Content-Disposition 헤더가 값 attachment 와 함게 설정되었고 'Save As' 파일을 제안하는지 여부에 따라 브라우저가 그것을 다루게 됩니다. application/octet-stream은 알려지지 않은 이진 파일을 알리는 content-type이라고 볼 수 있습니다. multipart/form-data 클라이언트는 HTTP Request의 Body에 전송하고자 하는 데이터..
2023.12.31 -
메모리 구조 모든 프로그램은 메모리에 올라와야 실행할 수 있습니다. 따라서 프로그램에 사용되는 변수들을 저장할 메모리가 필요한데 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공합니다. 대표적으로 위와 같은 4가지 영역이 있습니다. Code 영역 실행한 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고도 합니다. CPU는 코드 영역에서 저장된 명령어를 하나씩 가져가서 처리합니다. Data 영역 전역 변수, 정적 변수가 저장되는 영역입니다. 프로그램의 시작과 함께 할당되어 프로그램이 종료되면 소멸합니다. Heap 영역 프로그램을 실행하면서 생성한 모든 객체가 저장되는 영역입니다.(흔히 new를 통해 성상한 모든 Object 타입의 인스턴스가 저장되는 영역) 힙 영역에 보관되는 메모리는 메소드..
가비지 컬렉터메모리 구조 모든 프로그램은 메모리에 올라와야 실행할 수 있습니다. 따라서 프로그램에 사용되는 변수들을 저장할 메모리가 필요한데 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공합니다. 대표적으로 위와 같은 4가지 영역이 있습니다. Code 영역 실행한 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고도 합니다. CPU는 코드 영역에서 저장된 명령어를 하나씩 가져가서 처리합니다. Data 영역 전역 변수, 정적 변수가 저장되는 영역입니다. 프로그램의 시작과 함께 할당되어 프로그램이 종료되면 소멸합니다. Heap 영역 프로그램을 실행하면서 생성한 모든 객체가 저장되는 영역입니다.(흔히 new를 통해 성상한 모든 Object 타입의 인스턴스가 저장되는 영역) 힙 영역에 보관되는 메모리는 메소드..
2023.12.30 -
HTTP와 HTTPS HTTP Hypertext Transfer Protocol의 줄임말 서로 다른 시스템들 사이에서 통신을 주고받게 하는 가장 기본적인 프로토콜입니다. 서버에서 브라우저로 데이터를 전송하는 용도로 가장 많이 사용합니다. HTTPS Hypertext Transfer Protocol Secure의 줄임말 SSL(보안 소켓 계층)을 사용 SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고, 서버와 브라우저가 민감한 정보를 주고받을 때 해당 정보가 도난당하는 것을 막아줍니다. Header는 암호화하지 않고 HTTP Message Body만 암호화합니다. SSL/TLS SSL/TLS는 HTTPS에서 암호화 시 사용하는 방식입니다. SSL의 업그레이드 버전이 TLS로,..
HTTP/HTTPSHTTP와 HTTPS HTTP Hypertext Transfer Protocol의 줄임말 서로 다른 시스템들 사이에서 통신을 주고받게 하는 가장 기본적인 프로토콜입니다. 서버에서 브라우저로 데이터를 전송하는 용도로 가장 많이 사용합니다. HTTPS Hypertext Transfer Protocol Secure의 줄임말 SSL(보안 소켓 계층)을 사용 SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고, 서버와 브라우저가 민감한 정보를 주고받을 때 해당 정보가 도난당하는 것을 막아줍니다. Header는 암호화하지 않고 HTTP Message Body만 암호화합니다. SSL/TLS SSL/TLS는 HTTPS에서 암호화 시 사용하는 방식입니다. SSL의 업그레이드 버전이 TLS로,..
2023.12.30 -
Blocking vs Non-Blocking 두 가지의 차이점은 다른 주체가 작업할 때 자신이 코드를 실행할 제어권이 있는지 없는지로 판단할 수 있습니다. Blocking Blocking 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 제어권을 다른 주체로 넘깁니다. 따라서 자신은 제어권이 없기 때문에 실행할 수 없고, 다른 주체가 실행을 완료하고 제어권을 돌려줄 때까지 아무 작업도 할 수 없습니다. Non-Blocking Non-Blocking은 다른 주체의 작업에 관련 없이 자신이 제어권을 갖고 있습니다. 따라서, 자신은 계속 작업을 수행할 수 있습니다. Sync vs Async 두 가지의 차이점은 결과를 돌려주었을 때 순서와 결과에 관심이 있는지 없는지 에 차이가 있습니다. 아래 설명부터 A는..
Blocking과 Non-Blocking, Sync와 AsyncBlocking vs Non-Blocking 두 가지의 차이점은 다른 주체가 작업할 때 자신이 코드를 실행할 제어권이 있는지 없는지로 판단할 수 있습니다. Blocking Blocking 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 제어권을 다른 주체로 넘깁니다. 따라서 자신은 제어권이 없기 때문에 실행할 수 없고, 다른 주체가 실행을 완료하고 제어권을 돌려줄 때까지 아무 작업도 할 수 없습니다. Non-Blocking Non-Blocking은 다른 주체의 작업에 관련 없이 자신이 제어권을 갖고 있습니다. 따라서, 자신은 계속 작업을 수행할 수 있습니다. Sync vs Async 두 가지의 차이점은 결과를 돌려주었을 때 순서와 결과에 관심이 있는지 없는지 에 차이가 있습니다. 아래 설명부터 A는..
2023.12.30 -
메모리가 관리되는 방법 메모리는 주소 덩어리로, 주소로 인덱싱하는 커다란 배열입니다. 컴퓨터가 부팅되면 텅텅 비어있던 메모리에 운영체제나 사용자 프로그램이 배열의 원소처럼 채워지면서 CPU를 점유할 기회를 노립니다. CPU가 메모리에 채워진 프로그램 속 코드를 곧장 읽으면 좋겠지만 CPU를 코드를 읽지 못합니다. 숫자로 바꿔줘야 합니다. 소스 코드를 숫자로 바꿔주는 것이 컴파일러고, 컴파일러가 동작하는 과정에서 코드들의 논리 주소를 결정합니다. 각각 프로그램마다 다른 논리 주소를 갖는 것이 아니라, 중복되는 논리 주소를 갖고 있습니다. 그래서 논리 주소를 가상 주소라고도 부릅니다. 모두 같은 주소를 사용한다면 메모리에서 어떻게 이를 구분할까요? 논리 주소 앞에 하나의 주소값이 더 추가되면서 프로그램마다 ..
리눅스 메모리 관리메모리가 관리되는 방법 메모리는 주소 덩어리로, 주소로 인덱싱하는 커다란 배열입니다. 컴퓨터가 부팅되면 텅텅 비어있던 메모리에 운영체제나 사용자 프로그램이 배열의 원소처럼 채워지면서 CPU를 점유할 기회를 노립니다. CPU가 메모리에 채워진 프로그램 속 코드를 곧장 읽으면 좋겠지만 CPU를 코드를 읽지 못합니다. 숫자로 바꿔줘야 합니다. 소스 코드를 숫자로 바꿔주는 것이 컴파일러고, 컴파일러가 동작하는 과정에서 코드들의 논리 주소를 결정합니다. 각각 프로그램마다 다른 논리 주소를 갖는 것이 아니라, 중복되는 논리 주소를 갖고 있습니다. 그래서 논리 주소를 가상 주소라고도 부릅니다. 모두 같은 주소를 사용한다면 메모리에서 어떻게 이를 구분할까요? 논리 주소 앞에 하나의 주소값이 더 추가되면서 프로그램마다 ..
2023.12.30 -
프로그램과 프로세스 피자와 피자 레시피를 비유로 들면 이와 같습니다. 피자 레시피 = 코드가 구현되있는 파일 = 프로그램 피자 레시피가 피자가 되는 것처럼 코드 파일(프로그램)도 실행되어 사용할 수 있는 무언가!!가 되어야 합니다. 그 무언가가 프로세스 입니다. 프로그램 -> 프로세스 프로그램이 프로세스가 되면서 총 2가지 일이 발생합니다. 프로세스가 필요로 하는 재료들이 메모리에 올라가야 합니다. 메모리는 Code, Data, Heap, Stack 으로 총 4가지 영역으로 구성되어 있습니다. 또한, 해당 프로세스에 대한 정보를 담고 있는 Process Control Block(PCB)가 프로세스 생성 시 함께 만들어 집니다. Process & Thread 우리는 대부분 위 그림과 같이 여러 가지의 프로..
Process & Thread프로그램과 프로세스 피자와 피자 레시피를 비유로 들면 이와 같습니다. 피자 레시피 = 코드가 구현되있는 파일 = 프로그램 피자 레시피가 피자가 되는 것처럼 코드 파일(프로그램)도 실행되어 사용할 수 있는 무언가!!가 되어야 합니다. 그 무언가가 프로세스 입니다. 프로그램 -> 프로세스 프로그램이 프로세스가 되면서 총 2가지 일이 발생합니다. 프로세스가 필요로 하는 재료들이 메모리에 올라가야 합니다. 메모리는 Code, Data, Heap, Stack 으로 총 4가지 영역으로 구성되어 있습니다. 또한, 해당 프로세스에 대한 정보를 담고 있는 Process Control Block(PCB)가 프로세스 생성 시 함께 만들어 집니다. Process & Thread 우리는 대부분 위 그림과 같이 여러 가지의 프로..
2023.12.30