크고 작은 문제들 28

[yarn] Lifecycle Scripts - pre<command>, post<command>가 실행되지 않는 문제

Lifecycle Script란?Lifecycle Script란 특정 커맨드의 실행과 연계하여 전후에 실행되는 스크립트를 의미합니다.개요npm은 특정 스크립트의 실행 전후에 다른 스크립트를 연계하여 사용할 수 있도록 pre, post 스크립트의 작성을 지원하고 있습니다. pre는 실행 시 자동으로 에 앞서 실행되며, post는 실행 시 실행 이후에 실행됩니다.예를 들어, package.json의 scripts 항목을 다음과 같이 작성합니다.{ "scripts": { "prestart": "echo 'start 실행 준비중입니다.'", "start": "node index.js", "poststart": "echo 'start 실행을 완료하였습니다.'" }}// index.jsco..

[aws-sdk] Module not found: @aws-sdk/credential-provider-ini tried to access @aws-sdk/client-sts (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound.

개요yarn add @aws-sdk/client-s3Next.js 프로젝트에 aws-sdk(v3) 설치하여 클라이언트에서 S3 관련 작업을 수행하는 경우, peer dependency에 해당하는 모듈을 참조할 수 없습니다.패키지 매니저: yarn 4.4.1 (3.7.0 정도의 버전을 사용하였을 때에도 동일한 오류 발생)Next.js: 13https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/getting-started-nodejs.html원인(추정)node.js(서버) 환경에서 동작하는 것을 목표로 개발된 sdk이기 때문에 브라우저에서 사용 시 코드가 온전히 실행되지 않거나,Next.js 13 사용 시 common js, es module ..

[css] clip-path: rect로 작성된 영역이 제대로 렌더링되지 않는 문제

개요기존에 clip-path: rect로 작성된 코드가 일부 브라우저에서 제대로 동작하지 않습니다.주어진 인자에 따라 사각형의 형태로 영역이 잘려야 하나, 예상과 달리 전부 잘려서 아무것도 보이지 않는 상태가 됩니다.2024년 9월 18일 현재 구글 크롬 브라우저, 마이크로소프트 엣지 브라우저로 아래의 링크 접속 시 rect 예제가 제대로 보이지 않습니다. 반면, 파이어폭스 브라우저에서는 이미지가 보입니다.아래는 MDN clip-path 문서입니다. clip-path - CSS: Cascading Style Sheets | MDNThe clip-path CSS property creates a clipping region that sets what part of an element should be sh..

[ubuntu 20.04 + puppeteer] error while loading shared libraries: libatk-1.0.so.0: cannot open shared object file: No such file or directory

npm을 이용하여 puppeteer 패키지 다운로드puppeteer를 사용하는 스크립트 작성스크립트 실행puppeteer 메인페이지에 있는 예제만 간단하게 실행해 보려 하였는데 실행이 안 됩니다.웬만해서는 프로젝트의 dependency만 관리하면 되는 node 프로젝트이지만, puppeteer의 경우 브라우저를 실행하는 방식으로 작동하므로 시스템 상으로 갖추어야 할 요구사항이 있습니다.위의 오류는 시스템에 설치되어 있어야 하는 파일들이 설치되어 있지 않아서 발생한 문제입니다.해결아래 명령어를 실행하여 필요한 파일을 시스템에 설치합니다.sudo apt-get install libatk1.0-0 libatk-bridge2.0-0 libcups2 libxkbcommon-x11-0 libxcomposite1 l..

[Figma] 이미지 export 시 테두리가 생기는 현상

문제프레임 단위로 export된 이미지가 보이는 대로 저장되지 않고 여백을 함께 출력합니다.해결drop-shadow, blur 등 프레임 외부 영역에 표시되는 옵션을 내보내기 대상 프레임으로부터 숨김 또는 제거하여 보이지 않는 상태로 내려받습니다.이미지 내보내기 시 프레임에 적용된 효과까지 함께 계산되어 저장되므로, 프레임의 콘텐츠만 깔끔하게 저장하고 싶다면 위의 효과들을 제거한 상태로 내보내기를 실행해야 합니다.가령 그림자 효과를 css로 구현할 예정인 경우에는 그림자 효과가 적용된 이미지를 저장해야 할 이유가 전혀 없습니다. 따라서 디자인 상으로 그림자가 표현되어 있다면, 실제로 사용하기 위해 내려받을 때에는 해당 효과를 숨긴 상태로 내려받아야 합니다.덧프로그램은 잘못이 없었습니다. 참고좌표값이 정수..

[티스토리] 일부 Latex 수식에 MathJax 변환이 적용되지 않는 문제

문제 MathJax를 사용하여 Latex 수식의 변환을 시도하였으나 일부 수식이 제대로 변환되지 않습니다. 원인 변환되지 않는 수식을 개발자 도구로 검사한 결과, 한 줄로 입력한 내용이 서로 다른 span 요소 또는 텍스트 노드로 사분오열되어 입력되어 있는 것을 발견하였습니다. 이러한 요소의 분리는 스타일이 적용되는 경우에 일어납니다. 텍스트 에디터로부터 비롯된 문제로 볼 수 있습니다. 해결 글쓰기 옵션 중 가장 우측에서 HTML 모드로 접근합니다. 수식의 중간에 중첩된 태그가 사용되지 않도록 제거합니다. 또는, 수식 전체를 다시 입력합니다. 제 경우, 수식에 인용문을 지정했다가 해제하는 과정에서 해당 부분에 스타일이 추가되었고, 작성된 식의 일부분을 복사하여 활용함에 따라 스타일을 유지한 채 새로운 태..

[CSS] 페이지 인쇄 시 배경색이 보이지 않는 문제

인쇄(ctrl + p) HTML 페이지의 background-color 속성이 인쇄 미리보기에 적용되지 않는 현상을 확인하였습니다. 아래는 전체 문서를 검게 칠하여 극단적으로 표현한 예시입니다. 인쇄 미리보기 시 배경색이 전부 사라져 모든 글씨가 보입니다. print-color-adjust 미디어 쿼리를 이용하여 print에 해당할 때, print-color-adjust 속성을 exact로 지정합니다. @media print { body { print-color-adjust: exact; -webkit-print-color-adjust: exact; } } print-color-adjust는 economy와 exact 둘 중 하나를 지정해야 합니다. 기본값은 economy이며, user agent에 의해..

[TypeScript] 배열 반복문 내 타입 가드 오작동

요약 한 번에 여러 단계를 연속적으로 인덱싱하는 부분에 대하여 단계적으로 접근할 수 있도록 변경합니다. type Obj = { a: number, b?: number[] } const arr: Obj[] = [{a: 1, b: [1]}, {a: 2}, {a: 3}]; // before for (let i = 0; i < arr.length; i++){ if (arr[i].b !== undefined){ arr[i].b ; // undefined일 수 있다는 경고 출력 } } // after for (let i = 0; i < arr.length; i++){ const obj = arr[i]; if (obj.b !== undefined){ obj.b; // 경고 미출력 } } 타입스크립트 플레이그라운드 위..

[기록] 윈도우 MySQL ↔ ubuntu node.js(mysql2) 연결 시도

요약 MySQL 연결에 어려움을 겪는 경우 해볼 수 있는 갖가지 방법 적용 socat을 사용하여 소켓 통신을 시도하였으나 배경지식 부족으로 인하여 실패 socat을 통하여 ubuntu localhost:3306 - pc ip 주소:3306 연결 sql 요청 host로 pc ip 주소를 직접 입력하여 socat을 거치는 불필요한 단계 제거 상황 MySQL 서버를 윈도우에서 실행중 동일한 기기의 WSL2 ubuntu 환경에서 node.js(mysql2)를 활용하여 데이터베이스 접근 시도(localhost:3306) -111: ECONNREFUSED 오류 발생 code: 'ECONNREFUSED', errno: -111, sql: undefined, sqlState: undefined, sqlMessage: ..

[로컬 개발 환경] 윈도우 MySQL ↔ ubuntu node.js(mysql2) 연결 오류 해결

-111: ECONNREFUSED 윈도우 환경에서 실행중인 MySQL 서버와 동일한 디바이스의 ubuntu 환경에서 실행중인 node.js를 연결합니다. 두 환경 모두 로컬 환경입니다. 준비물 네트워크 연결 요약 두 환경 모두 로컬이지만 서로 분리되어 있으므로 로컬호스트 주소가 아닌 컴퓨터의 ip 주소를 통해 접근해야 했습니다. 외부 데이터베이스 서버에 접근하는 것처럼요. 해결 1. 서버 호스트 변경 요청 대상 호스트 주소를 MySQL이 실행중인 PC의 ip 주소로 변경합니다. const pool = mysql.createPool( { host: 'localhost', // 이 부분을 '172.xxx.xxx.xxx'로 변경하였습니다. user: 'user', database: 'db', password:..