본문 바로가기

컴퓨터 공학339

pkg 모듈 실행 시 "(0, assert_1.default)(!this.bar)" 에러 발생하는 경우 발생문제 Node.js를 v14에서 v16으로 버전업 후 pkg 모듈을 통해 실행파일을 생성하려고 하면 아래와 같은 에러가 발생할 수 있습니다. > pkg@5.7.0 > Fetching base Node.js binaries to PKG_CACHE_PATH fetched-v16.15.0-win-x64 [ ] 0%> Not found in remote cache: {"tag":"v3.4","name":"node-v16.15.0-win-x64"} > Building base binary from source: built-v16.15.0-win-x64 > Fetching Node.js source archive from nodejs.org... > Error! AssertionError [ERR_ASSERTI.. 2022. 12. 4.
VSCode에서 JavaScript CommonJS의 export 객체 속성들 <Find Reference>에 검색되지 않는 문제 문제 JavaScript에서 CommonJS 형식인 module.exports를 통해 객체를 export할 수 있습니다. 아래 코드는 math.js 내의 산술연산 함수들을 export하고 있습니다. 그리고 math.js의 함수를 사용하는 index.js 가 있습니다. 지금 상황에서는 index.js가 math.js의 sum과 subtract 함수를 import 하여 사용하고 있는데요, 만약, 다양한 코드 영역에서 sum 함수를 import하여 사용하고 있을 때, sum 함수를 참조하고 있는 모든 영역을 찾고 싶을 때 어떻게 해야 할까요? VSCode에서는 기능을 통해 선택한 속성을 참조하는 코드 영역을 모두 찾아줍니다. 그런데, 위 코드처럼 CommonJS 형식으로 export한 속성들은 같은 파일 내에.. 2022. 9. 6.
AI 기술로 복원한 독립운동가 사진 최근에 사람의 얼굴이 담긴 저화질의 사진을 업로드하면 AI 기술을 통해 고화질로 변환해주는 도구를 찾았습니다. 호기심으로 대한민국의 독립운동가들의 저화질 사진을 몇 장 이용해서 고화질로 복원했을 때의 모습을 보고 싶었습니다. 복원 전 (원본) 복원 후 사진 순서대로, (1) 김구, (2) 백정기, (3) 유관순, (4) 윤봉길, (5) 안창호, (6) 이상룡, (7) 안중근, (8) 이봉창 입니다. 2022. 9. 3.
[디자인패턴] 빌더 패턴 (Builder Pattern) 예시 - 서브웨이 소개 서브웨이에 방문하면 손님은 빵 크기, 빵 종류, 추가토핑, 야채, 소스를 선택해야 하나의 샌드위치가 완성됩니다. 이와 같이 하나의 객체를 만드는 과정에서 옵션이 다양할 때 사용하는 패턴이 빌더 패턴 (Builder Pattern) 입니다. 이 포스팅에서 빌더 패턴을 설명하지는 않고, 빌더 패턴을 적용한 서브웨이 샌드위치를 생성하는 소스코드를 공유합니다. 소스코드는 타입스크립트를 기반으로 작성하였습니다. 열거체 const enum EBreadSize { SMALL = 1, LARGE = 2, } const enum EBreadType { WHITE = 1, WHEAT = 2, HONEY_OAT = 3, HEARTY_ITALIAN = 4, PARMESAN_OREGANO = 5, FLAT_BREAD = .. 2022. 8. 23.
Cloudflare Workers와 Notion API로 유저 데이터 관리하기 소개 사이드프로젝트로 개발중인 온라인 게임의 유저 정보를 기존에는 유저 로컬 환경에 파일로 보관하고 있었는데, 정식으로 출시되면 클라우드 서버에서 관리할 필요가 있기에 알아보던 중 노마드코더라는 개발자 유튜버가 소개한 Cloudflare Workers와 Notion API를 이용하여 프로토타입 수준의 데이터베이스 (이하 DB)를 구축할 수 있는 것으로 보여 직접 적용해보기로 하였습니다. 본 포스팅은 Windows 10 환경 개발자를 대상으로 소개합니다. 준비물 Node.js v12+ Visual Studio Code 노션 (Notion) 계정 Postman 작업 순서 우선, 유저 정보를 보관할 데이터베이스를 Notion으로 만들고, 만들어진 데이터베이스에 유저 데이터를 관리하는 Cloudflare Wor.. 2022. 8. 14.
DALL-E 2 사용 후기 요약 DALL-E 2를 직접 사용해보았다. 사용자의 창의성에 따라 DALL-E 2는 무궁무진한 고화질의 사진을 뽑아낸다. 좋은 DALL-E 2 결과물을 얻으려면 사용자도 어느 정도 학습이 필요하다. Reddit 커뮤니티에서 많은 사람들이 창의적인 프롬프트 결과를 공유한다. DALL-E 2의 작품을 상업적으로 이용할 수 있다. 소개 얼마전 뉴스에서 DALL-E 2의 작품을 보고 신기하다고만 생각하고 말았는데, 어느날 문득 직접 사용해볼 수 있는지 궁금했다. 그래서 DALL-E 2 홈페이지에 들어가보니 사용신청을 할 수 있고, 초대되면 무료로 50번 이미지를 생성해볼 수 있었다 (한 번에 4장씩 생성됨). 별 생각없이 신청했는데, 어느날 이메일로 초대되었다는 메일을 받아서 설레는 마음으로 처음에는 떠오르는 .. 2022. 8. 14.
JavaScript로 interface 모사하기 소개 JavaScript에는 class만 존재하고, interface가 없습니다. 따라서, interface를 이용한 아키텍처를 불완전하게 적용할 수 밖에 없습니다. class만으로 interface와 비슷한 기능을 하도록 모사하는 방법을 제안합니다. Step 1. interface base 생성 프로젝트에서 소스 폴더 내에 interfaces 폴더를 생성하고, 그 안에 base.interface.js 파일을 만들어 다음과 같이 작성합니다. /** * 인터페이스 정의 헬퍼 함수 * * @template T * @param {T} newInterface * @returns {T} */ function defineInterface(newInterface){ const NOT_IMPLEMENTED = "thr.. 2022. 8. 6.
Node.js - async_hooks 소개 프롤로그 클라이언트-서버 모델에서 클라이언트는 서버에게 다양한 요청을 보냅니다. 일반적으로 서버는 클라이언트의 요청 정보를 식별하기 위해 클라이언트가 적재하는 헤더의 식별 정보를 사용합니다. 예를 들어, HTTP 통신에서 클라이언트는 헤더 ‘[x-request-id]’에 요청 고유 식별자를 적재하여 서버에 보냅니다. 일반적으로 서버는 여러 클라이언트가 보내는 동시다발적인 요청을 시간 순서에 따라 로그에 기록합니다. 이때, 서버는 각 요청에서 발생한 로그에 헤더 ‘x-request-id’를 함께 기록해두는데, 이는 나중에 특정 요청에 대한 로그 내역을 찾기 위해 요청의 고유 식별자인 ‘x-request-id’로 필터링을 걸면 해당 요청 로그만 손쉽게 열람할 수 있습니다. async_hooks가 생긴 이유 .. 2022. 7. 24.
Hexagonal Architecture 소개 개요 Hexagonal Architecture (줄여서 HA)는 Alistair Cockburn이 2005년에 제안한 구조입니다. HA는 기존의 Layered Architecture에서 더 나아가 레이어 간에 직접적인 연결을 맺는 대신, 중간에 인터페이스를 통해 상호작용을 함으로써 결합도 (coupling)를 낮추도록 설계된 아키텍처입니다. 결합도를 낮추게 되면 각 레이어를 자유롭게 교체할 수 있으며, 이를 통해 테스트를 손쉽게 수행할 수 있습니다. 또 다른 이름으로 HA는 Ports and Adapters라고도 불립니다. 아키텍처의 구조를 인터페이스인 포트와 중개 역할을 하는 어댑터를 통해 설명하고 있기 때문입니다. 작업 영역 이번 포스팅에서 소개하는 HA를 적용한 애플리케이션을 “HA 앱”이라고 하겠.. 2022. 7. 2.