2024/12 12

싱글톤 패턴 (Singleton 패턴)

nest 공부를 하다가, Singleton 패턴에 대해 나왔다. singleton패턴에서는 하나의 객체만 만든다고 하는데 도저히 이해가 되지 않았다.  하다보니 singleton패턴  몇 가지 의문이 들었었다.(하나의 객체만 만들면 클라이언트끼리 특정 데이터에 접근하려 할 때 충돌이 발생하지는 않을까 등등) 그래서 Singel 패턴에 대해서 좀 알아 보았다. Singleton 패턴 싱글톤은 클래스의 인스턴스를 하나만 생성하도록 보장프로그램 전체에서 하나의 객체만 생성새로운 객체를 생성하지 않고 이미 존재하는 객체 재사용주로 글로벌 상태를 관리 (전역 접근 가능)하나의 클라이언트가 싱글톤 객체 속성을 수정하면 , 변경사항은 다른 모른 클라이언트에도 즉시 반영리소스 낭비를 방지생성자 (private)로 외부..

Node.js 2024.12.16

Default Export 와 Named Export

이제 막 Node.js를 공부하기 시작했다. 간단한 오픈 소스를 clone 해서 테스트 해보고 있는데, 이런 코드를 보았다. import { Server } from "socket.io"; Named Export 형태가 좀 헷갈렸고, 이와 관련해서 정리를 해보고자 한다. ✨ Default Export (기본 내보내기) 먼저 Default Export에 대해 간단한 예시를 살펴보자. // math.jsexport default function add(a, b) { return a + b;}// main.jsimport add from './math.js'; // 중괄호 없이 가져옴console.log(add(2, 3)); // 5이와 같은 경우 모듈에서 하나의 값만 내보낼 수 있음가져올 때 임의의 이름을..

Node.js 2024.12.12

Java script에서 Promise 란 ? (+@ Async / Await)

✨ Promise Promise는 단순히 비동기 작업을 더 깔끔하고 체계적으로 처리하기 위한 도구이다.Promise가 없던 시절에 비동기 작업은 콜백 함수를 통해 처리 되었다.     그러면 콜백을 썼을 때와 안 썼을 때의 코드를 한번 비교해보자 !   🔗여러 비동기 작업을 순서대로 처리 콜백 중첩 (콜백 헬)아래와 같이 코드를 작성하는 경우 가독성이 저하된다. fs.readFile('file1.txt', 'utf8', (err, data1) => { if (err) return console.error(err); fs.readFile('file2.txt', 'utf8', (err, data2) => { if (err) return console.error(err); ..

Node.js 2024.12.12

AWS 특강 - Databases

지난 포스팅에서는 Storage에 대해 포스팅을 하였다.Storage 같은 경우, 단순히 데이터를 저장하는 것을 목표로, 실제로 쿼리를 짜지 못하고 체계적으로 데이터를 저장하지 못한다. 효율적인 검색 및 조작, 고성능 트랜잭션 처리 같은것을 위해프로젝트에서 Database 또한 구축해주는 것이 좋다. https://jerry-k.site/entry/AWS-%ED%8A%B9%EA%B0%95-Storage AWS 특강 - StorageAWS 강의 2부이다.  1부에서는 Network compute에 대해서 배웠다. 전반적으로 어떻게 서버를 만들어야 하는지 느낌정도는 온 것 같다. 그럼 이제 만든 서버에 데이터들을 저장해야하는데, 이때 사용jerry-k.site ✨ AWS의 완전 관리형 Database 서비스..

WEB/Backend 2024.12.11

AWS 특강 - Storage

AWS 강의 2부이다.  1부에서는 Network compute에 대해서 배웠다. 전반적으로 어떻게 서버를 만들어야 하는지 느낌정도는 온 것 같다. 그럼 이제 만든 서버에 데이터들을 저장해야하는데, 이때 사용하는게 스토리지이다.  데이터 종류에 따라 사용되는 스토리지에도  여러가지 종류가 있다. 오늘 포스팅은 그 부분에 대해서 다룬다. 전의 포스팅을 보지 않았다면, 꼭 보는 것을 추천한다!  https://jerry-k.site/entry/AWS-%ED%8A%B9%EA%B0%95-NetworkCompute AWS 특강 - Network_Compute이번 AWS 특강에서 최종 목표는 아래와 같은 아키텍처를 완성하는 것이다.  실제 프로젝트에서도 이렇게 아키텍처를 만들 수 있으면 좋을 것 같다. (이번 AW..

WEB/Backend 2024.12.11

AWS 특강 - Network_Compute

이번 AWS 특강에서 최종 목표는 아래와 같은 아키텍처를 완성하는 것이다.  실제 프로젝트에서도 이렇게 아키텍처를 만들 수 있으면 좋을 것 같다. (이번 AWS 8시간 특강은 위의 내용들을 진행 한 것이라고 보면 된다.)   ✨AWS VPCAmazon Virtual Private Cloud(Amazon VPC)AWS 클라우드 내에서 사용자가 정의한 논리적으로 격리된 가상 네트워크를 제공사용자는 네트워킹 환경을 완벽하게 제어IP 주소 범위 선택, 서브넷 생성, 라우팅 테이블 및 네트워크 게이트웨이 구성 등 인터넷에 액세스할 수 있는 퍼블릭 서브넷과 인터넷 액세스가 제한된 프라이빗 서브넷을 생성웹 서버와 데이터베이스 서버를 각각 배치 가능보안 그룹과 네트워크 액세스 제어 목록을 통해 각 서브넷의 AWS 리소..

WEB/Backend 2024.12.11

Pintos Project3 - VM 시스템 초기화

✨가상 메모리 시스템 초기화 paging_init() 함수는 PintOS의 커널 페이징 시스템을 초기화 하는 역할을 한다. 간단하게 paging_init() 함수에 대해서 알아보자.  paging_init() 물리 메모리 영역 전체 (0 ~ mem_end)를 커널의 가상 메모리 주소 공간(KERN_BASE ~KERN_BASE + mem_end)에 1대1 매핑커널 텍스트 영역 (start ~ _end_kernel_text) 까지를 읽기 전용으로 설정하여 보호static void paging_init(uint64_t mem_end) { uint64_t *pml4, *pte; int perm; pml4 = base_pml4 = palloc_get_page(PAL_ASSERT | PAL_ZERO..

크래프톤 정글 2024.12.05

Pintos Project3 - Virture Memory Test case 트러블 슈팅 (read-boundary)

Anonymous Page까지 구현을 하고,make check를 돌려보았지만, read-boundary의 테스트 케이스가 통과하지를 못했다. 디버깅을 돌려보니 check_address 함수 내에 pml4_get_page 부분이 자꾸 터지는 것을 보았다. 이 부분에 대해 나와 비슷한 문제를 겪는 사람들이 있어서 이 부분에 대해서 포스팅을 해본다 ! 먼저 테스트 파일들을 확인해보자. Test Case : read-boundary.c 파일buffer = get_boundary_area () - sizeof sample / 2;byte_cnt = read (handle, buffer, sizeof sample - 1);get_boundary_area 함수는 페이지의 경계 값을 가져옴sample.txt 파일 전체..

크래프톤 정글 2024.12.05

Pintos Project3 - Virture Memory 키워드

✨ Virtual Memory (가상 메모리)가상 메모리에 대해 너무 이해가 잘 안됐을 때 들었던 예시 중 가장 인상 깊은 비유가 있다.물리 메모리는 현실 세계를, 가상 메모리는 환상 세계를 의미한다고 보면 된다.현실 세계에서는 강도,살인 등 지저분 한 것들이 많듯이 물리 메모리도 프레임 단위로 데이터들이 흩어저있다.반면 가상 메모리는 프로세스에게 환상을 준다. 지금 "프로세스" 너는 CPU와 메모리를 독점하고 있고 세그먼트 별로 데이터들도 잘 정렬되어 있다는 착각을 주는 것이다. 프로세스에 독립적이고 보호된 주소 공간 제공 효율적인 메모리 사용과 물리 메모리 확장메모리 보호 / 효율성 (디스크 스왑) / 유연성 (프로세스는 실제 물리메모리 주소 알 필요 없음)페이지 단위(4KB)로 나뉨✨ PT (Pag..

크래프톤 정글 2024.12.02

Pintos Project3 - Page Fault Handler (Page Fault 전반적인 과정 이해하기)

🖥️ Pintos Page Fault Handler 이 글에서는 Pintos에서의 인터럽트 초기화, 핸들러 등록, 스텁 함수 정의,그리고 페이지 폴트 처리 과정을 하나씩 살펴본다.Page Fault가 발생되는 과정들을 Pintos 코드로 세부적으로 파고 들고 이해 해본다.✨ Interrupt system 초기화 int main(void) { . . . /* 인터럽트 핸들러를 초기화합니다. */ intr_init(); . . . exception_init(); . . . }intr_init() 함수 실행  /* Initializes the interrupt system. */void intr_init(void) { int i; /* Initialize in..

크래프톤 정글 2024.12.02