본문 바로가기

분류 전체보기

(317)
# DevNote/AWS [RDS] PostgreSQL 외부접속 허용하기 인바운드 보안규칙 수정 기본적으로 AWS 서비스는 보안규칙에 적혀있지 않은 인바운드 트래픽을 차단하고 있습니다. 먼저 자신의 IP와 포트번호를 인바운드와 아웃바운드에 각각 등록해야 합니다. 공개접근 허용하기 보안규칙과 별도로 Public Access 여부가 존재하는 경우가 있습니다. 아래 사진에서 Public Accessibility를 Yes로 변경해야 합니다. RDS 인스턴스 수정에서 변경할 수 있습니다. 액세스키 등록하기 아마존 서비스를 프로그램에서 사용하기 위해서는 공개 액세스 키와 비밀 액세스 키가 컴퓨터 자체에 설정되어 있거나, 파일의 형태로 저장되어 있어야 합니다. 액세스 키는 보안 자격 증명에서 발급받을 수 있습니다. 이렇게 발급받은 액세스 키는 AWS 명령행 인터페이스를 통해 컴퓨터에 설정..

2020. 3. 17. 21:32

# Lang/NodeJS C++ Addon [벤치마크] C++ 애드온을 도입하면 성능이 얼마나 향상될까? 시작하기에 앞서 사실 JavaScript는 꽤 빠르고 생산성도 높은 스크립팅 언어입니다. 특히 병렬성이 높은 작업에 대해서는 때때로 컴파일 언어보다 높은 성능을 보여주곤해서, 동시성이 높은 웹서버를 만들기 위한 선택지로 Node.JS + Express.js가 먼저 고려되는 경우가 많습니다. 하지만 병렬성을 요구하지 않는 연산에서는 약한 모습을 보여주는데, 수학적 연산이 집중된 암호학 분야는 특히 NodeJS가 꺼려하는 대표적인 분야 중 하나입니다. 그러나 이러한 종류의 연산은 C++ Addon을 사용하면 보완할 수 있다고 알려져있죠. 그렇다면 NodeJS에 C++ Addon을 도입하면 성능이 얼마나 향상될까요? 아무때나 C++ Addon을 도입하면 되는걸까요? 이 포스팅에서는 C++ Addon의 성능에 ..

2020. 3. 16. 09:28

# Lang/NodeJS C++ Addon [튜토리얼] C++ 크로스플랫폼 애드온 제작하기 이 포스팅은 이전 포스팅과 이어집니다. 크로스플랫폼 NodeJS에 C++을 도입한다면 장단점은 명확합니다. 좋든 좋지않든 C++의 거의 모든 장단점을 통채로 가져온다는 것이죠. C++의 모토인 원한다면 만들 수 있다는 장점을 가져온 것과 동시에, 타겟 플랫폼에 종속된다는 단점도 함께 가져온 것이죠. 예를 들어 Node.JS의 기본함수만으로는 동기적으로 쓰레드를 정지시키는 함수를 만들 수 없기 때문에, 이 기능을 사용하고 싶다면 C++의 힘을 빌려야합니다. 하지만 문제는 각 운영체제마다 sleep을 사용하는 방법이 다르다는 것입니다. 헤더 이름도 다르고, 함수 시그너쳐도 다르며, 함수 이름도 다릅니다. Windows #include // // sleep 1ms. Sleep(1); Linux #include..

2020. 3. 14. 20:47

# Lang/NodeJS C++ Addon [DeepDive] NodeJS C++ Addon 깊게 입문하기 Node.JS Foundation 구성요소 Native Extension에 대해 설명하기에 앞서, 먼저 Node.JS가 어떻게 구성되어 있는지에 대해 알아야 합니다. JavaScript Node.JS에서 실행가능한 프로그래밍 언어입니다. V8 자바스크립트 언어로 작성된 코드를 실행해주는 엔진입니다. 자바스크립트의 객체를 생성하거나, 함수를 호출하는 방법과 같은 매커니즘을 정의합니다. Libuv 비동기 실행과 라이프 사이클을 제공하는 C 라이브러리입니다. Node.JS의 모든 비동기 동작은 LibUv가 관리합니다. 기타 라이브러리 Node.JS는 V8이나 LibUv를 포함한 수많은 라이브러리의 집합체이며, 이러한 라이브러리들이 정적으로 링크되어 Node.exe를 이룹니다. Node.JS가 어떤 라이브러리를..

2020. 3. 11. 19:10

# Tech/React [번역] 리액트로 고성능 무한 스크롤 구현하기 이 게시글은 [Akshay Sharma]가 작성한 [Building High-Performance Infinite Lists in React]의 번역본입니다. 개요 인터넷은 무한 스크롤(Infinite scroll)을 적용한 제품들로 넘쳐나고 있습니다. 무한 스크롤은 정보의 소비를 매우 쉽고 중독적으로 만드는데, 트위터나 인스터그램같이 타임라인이나 피드를 소비하는 제품에 매우 적합하죠. 하지만, 자바 스크립트로 무한 스크롤을 구현하는 것은 꽤 어렵고, 특히 각각의 피드가 수천개의 구성요소로 구성되어있다면 문제는 더 복잡해집니다. 일단 문제들을 한번 나열해봅시다. 문제점 기존의 컴포넌트가 리사이징될 때, 렌더링이 매우 느려진다. 스크롤을 할 때마다 랙이 걸린다. 수천개의 컴포넌트로 가득찬 DOM은 브라우저..

2020. 2. 14. 14:26

# Tech/NodeTS alias를 사용하여 import 구문을 깨끗하게 만들자! Alias 어떤 경로에 별명(Alias)을 붙이고 모듈을 불러올 때, 이 별명을 활용하는 것을 Alias imports라고 합니다. 또한 별명을 활용하면 상대경로 방식이 모두 제거되므로, Absolute imports로도 불립니다. 먼저, 아래의 코드를 리팩토링하는 것부터 시작해봅시다. 최종적으로는 한 줄로 축약되고, 이 과정에서 모든 ../../../는 제거될 것입니다. import { IColumnVisibility } from "../../../interfaces/IColumnVisibility"; import { ILicense } from "../../../interfaces/ILicense"; import { ISoftware } from "../../../interfaces/ISoftware..

2020. 2. 13. 17:26

# Tech/NodeTS barrel를 사용하여 import 구문을 깨끗하게 만들자! Barrel 배럴이란 개념을 사용하면 import 구문을 축약함으로써, 코드를 더 깨끗하게 유지보수할 수 있습니다. 이것을 요약하자면 여러 모듈을 묶어서 다시 export하는 모듈로 정의할 수 있는데, 아래 코드처럼 하지말고, ./impl/에 {a, b, c}를 export하는 배럴을 두면 한줄로 축약할 수 있습니다. // ./src/app.ts import { a } from "./impl/a"; import { b } from "./impl/b"; import { c } from "./impl/c"; console.log(a, b, c); 아래처럼요. // ./src/app.ts import { a, b, c } from "./impl/barrel"; console.log(a, b, c); 물론 아래..

2020. 2. 13. 16:41

# Tech/React Next.JS에서 동적 세그먼트 사용하기 Dynamic Segment 동적 세그먼트란 /user/:id/:operation에서 id와 operation처럼 경로에서 사용되는 변수를 말하며, 쿼리 문자열 방식보다 경로명이 좀 더 깔끔해지는 효과를 얻을 수 있습니다. 동적 세그먼트는 여러 형태로 쓰일 수 있는데, 살펴보면 대부분 아래의 형식입니다. 1. 경로의 뒤에 쓰이는 경우. /user/:id 2. 경로의 중간에 쓰이는 경우. /user/:id/edit 3. 혼합 형태 user/:id/edit/:attr 위와 같은 동적 경로를 Next.js에서 어떻게 구현하는지 차근차근 살펴봅시다. 경로의 뒤에 쓰이는 경우 pages 폴더에서 대괄호로 감싸진 폴더나 파일은 동적 세그먼트로 취급됩니다. 즉, /user/:id를 표현하고 싶다면, 아래처럼 폴더구조..

2020. 1. 19. 22:59