전체 글 43

[ Web ] V8 - #2 Garbage Collector - Major GC

V8 엔진 블로그에 2019년 1월 3일에 작성된 글 바탕으로 조사하여 작성된 글입니다.Link : https://v8.dev/blog/trash-talkGarbage Collector(GC) VS Garbage Collection들어가기 앞서 Garbage Collector 과 Garbage Collection의 차이점을 알고 들어가는 것이 좋을 것같아 두개의 차이점을 간단히 작성한다.Garbage Collector(GC)GC는 프로그래밍 언어의 런타임 환경에서 메모리 관리를 담당하는 모듈이나 구성 요소를 의미한다.프로그램이 더 이상 사용하지 않는 객체를 자동으로 찾아서 메모리에서 제거하는 역할을 담당하며, 다음과 같은 작업을 수행한다.객체 추적 : 메모리에 할당된 객체들을 추적참조 카운트 관리 : 객..

CS 2024.05.18

[ Web ] V8 - #01 Javascript Engine

JavaScript EngineJavaScript Engine은 간단히 정의하면 JavaScript 코드를 실행하는 프로그램 또는 인터프리터 입니다.인터프리터(Interpreter)코드를 한 줄씩 읽어 내려가며 기계어로 번역하여 실행하는 프로그램코드를 실행하기 전 컴파일 단계가 없기 때문에 실행 속도가 빠르다는 장점이 있습니다.컴파일러(Compiler)파일 전체를 읽은 뒤, 이를 컴파일 하여 기계어로 변환합니다. 이후 기계어는 CPU로 입력되어 코드가 실행 됩니다.컴파일러는 작업을 단순화 시키는 장점이 있습니다. 특정 함수를 반복할 경우 컴파일 과정에서 반복하는 것이 아니라 함수의 결과물을 반복하도록 컴파일 합니다. 이처럼 불필요한 동작을 제거하는 컴파일러의 방식을 최적화(Optimization)이라고 ..

CS 2024.05.04

WebSocket Protocol

작성 동기동적으로 움직이는 사물들의 위치데이터를 실시간으로 지도에 보여주는 기능을 구현을 해야했습니다.HTTP Polling  방식으로도 움직이는 사물들의 위치데이터를 받아올 수 있습니다. 하지만 데이터가 없는 경우 불필요한 요청과 HTTP 연결 지연시간을 고려했을 경우 WebSocket 을 이용하여 TCP 통신을 통해 데이터를 받아오는 것이 더 효율적이라 판단했습니다. 이에 Websocket Protocol이 무엇인지 정의를 조사하여 작성 하게되었습니다.Websocket Protocol?2011년 IETF에 의해 RFC 6455로 표준화웹 IDL의 웹소켓 API는 W3C에 의해 표준화하나의 TCP 접속에 전이중(Full-Duplex) 통신채널을 제공하는 통신 프로토콜OSI Layer 7계층 중 4계층 ..

CS 2024.04.25

[ Redis ] Radius/Polygon Geospatial queries With FT.SEARCH

사전 주의사항 FT.SEARCH 를 사용하기 위해서는 RedisSearch Module이 사전에 설치되어있어야 가능합니다. Redis에서는 RedisStack을 이용하는 방법을 추천하고 있습니다. 별도 설치 혹은 Redis Cloud를 사용하는 방법이 있습니다. 별도 설치 중 Docker를 이용하여 설치하는 방법은 제가 작성한 블로그를 참고 하셔도 좋습니다. Data Insert Index설정과 데이터 조회를 하기 전 지리정보 데이터를 갖진 데이터를 작성합니다. 위도 값은 20으로 고정한채 경도값을 약 1km 너비로 하여 데이터를 생성 했습니다. HSET geo_table:1 geo "126.0,20" geo_shape "POINT(126.0 20)" HSET geo_table:2 geo "126.011..

Redis 2024.04.18

[ Redis ] RedisStack With.Docker

Redis Stack 주요 Redis 모듈을 하나로 통합된확장서비스이며, 다음과 같은 Module을 포함하고 있습니다. - RediSearch ::: FullText 검색 지원 - RedisJSON ::: 쿼리가능한 JSON 문서 지원 - RedisGraph ::: Cyper 쿼리언어를 사용한 그래프 데이터 모델 - RedisTimeSeries ::: 시계열 데이터 처리 ( 수집 및 쿼리 ) - RedisBloom ::: 확률적 데이터 구조 Redis Stack Docker Redis Stack Docker는 RedisInsight를 포함 유무에 따라 다음과 같이 2개로 나뉘어 집니다. - redis-stack-server [ 미포함 ] - redis-stack [ 포함 ] OS에 구애 받지 않고 간단..

Redis 2024.04.16

SpringBoot 제공하는 기능

단독 실행 가능한 스프링 애플리케이션 스프링 부트 프로젝트는 빌드 플러그인을 제공하고, 이를 실행하면 단독 실행(stand-alone) 가능한 JAR 파일 생성이 가능하다. 전통적인 배포방법에 비해 매우 간단하고 빠르게 배포할 수 있는 장점이 있다. 클라우드 서비스를 사용하는 경우 이 기능과 시너지 효과를 일으킬 수 있다. 간편한 설정을 위하 스타터 의존성 제공 기능별로 라이브러리 의존성을 포함한 스ㅌ타터를 제공한다. Maven 이나 Gradle 같은 의존성 관리 툴에서 사용 가능하다. 스타터 내부에 라이브러리 의존성 설정을 포함하고 있어 기능을 사용하는 데 필요한 모든 라이브러리를 한 번에 추가할 수 있다. 개발자가 직접 스타터를 마늗ㄹ어 넥서스 같은 저장소를 이용하여 직접 배포가 가능하다. MSA 환..

카테고리 없음 2023.08.08

[IntelliJ] spring-boot-devtools 를 이용한 재시작

[ 환경 ] IntelliJ IDEA 2023.1.4 (Ultimate Edition) Srping Boot Gradle 의존성 추가 dependencies { developmentOnly("org.springframework.boot:spring-boot-devtools") } IntelliJ 설정 ItelliJ의 메뉴에서 ItelliJ IDEA -> Preferences를 선택한다. (윈도우 file -> Settings) Preferences에서 Advanced Setting를 선택한 후 'Allow auto-make to start even if developed application is currently running'에 체크한다. 이는 애플리케이션을 실행한 후 코드를 수정하면 자동으로 재시작..

카테고리 없음 2023.08.01

3월 17일

오늘 진행한 것 백준 Class 03 한 문제 ( Java ) NestJS 강의 인턴쉽 과제제출 통과 메일 받음 코드스테이츠 디너클럽 모더레이터 참석 및 진행 필요하다 느낀 것 타입스크립트 공부보다 자바스크립트 중심으로 공부 스케줄 변경 인턴쉽 면접을 위한 기업 조사 및 분석 필요 오늘 하루 회고 35기 기수 파이날 프로젝트 코드를 보고 상당히 많은 리스펙을 받게 되었습니다. 30개가 넘는 DB 테이블과 크롤링을 통한 데이터 4000여 개로 진행하였으며, 코드 또한 그 짧은 기간 동안 상당히 높은 퀄리티로 작성된 것을 보게 되었는데, 나와는 너무나도 상반된 모습이라 많이 깜짝 놀랐습니다. 수료 이후 코드 작성이나 그런 부분에서는 많이 개선되어 이종 도면... 이라는 생각을 가졌었는데, 좀 더 분발해야겠다..

회고록 2022.03.19

3월 16일

오늘 진행한 것 백준 Class 03 한 문제 ( Java ) 점심에는 휴식 저녁에는 잠깐 친구와 만남 새벽에 NestJS 공부... 오늘 하루 회고 지속적인 구직활동의 실패로 인해 컨디션 난조가 많이 왔습니다. 연락을 주고 받고 있는 동기들은 구직활동에 성공하여 마음이 급해진 것 같습니다. 멘털적으로 많이 힘들어 오늘 하루 푹 쉬고 다시 시작하려 했으나, 그게 맘처럼 되지 않는 것 같네요 저녁에 친구를 만나 응원의 말을 들어 조금이나마 위안을 받았습니다. 그래서 지금 당장 할 수 있는 것부터 해야 겠다는 마음으로 또 이력서를 넣고 남은 시간에는 강의 듣고 공부만 하고 있는 것 같습니다. 허허,, 파이팅 할수 밖에 없는데, 마음을 조금 추스르고 가다듬고 다시 한번 파이팅 외쳐봐야겠습니다.

회고록 2022.03.17

DTO(Data Transfer Object)

DTO (Data Transfer Object) ? 계층 간 데이터 교환을 위한 객체입니다. DB에서 데이터를 얻어 Service나 Controller 등으로 보낼 때 사용하는 객체를 말합니다. 데이터가 네트워크를 통해 전송되는 방법을 정의하는 객체입니다. interface나 class를 이용해서 정의될 수 있습니다. 하지만 NestJS에서는 class를 이용하는 것은 선호하고 있습니다. Link : https://docs.nestjs.com/controllers#request-payloads DTO는 하나의 디자인 패턴으로 데이터를 포맷(형식)화 하여 계층 간에 전송됩니다. 만약 A 계층과 B계층이 데이터를 주고받는데, JSON 형식으로 만든 type C가 있다면, C는 DTO가 됩니다. DTO를 사용..

NestJS 2022.03.17