전체 글 썸네일형 리스트형 [오픈소스 컨트리뷰션] Node - WebSocket CLI 문서 수정 Node 의 WebSocket 관련 document 에기여해본 경험을 정리하고자 함➡️ 기여한 PR 링크: https://github.com/nodejs/node/pull/54482 뭘 기여했는 지 결론부터 말하자면..Node에서 제공하는 WebSocket 은 현재 API 안정화 레벨 중 stable 레벨임그런데 문서 상에 여전히 experimental 레벨 인 것 마냥 잘못 기재된 부분이 있어서 이 부분을 수정하는 PR을 올림 여기서 등장하는 개념 정리✅ stable 레벨이라니?? 그게 뭔데???Node에서는 제공하는 각 API 에 대해 안정화 레벨을 나누고 있음 - Deprecated: 사용하지 말아야 할 기능 (하위호환성 보장 ❌)- Experimental: 아직 불안정하고 버그 리포팅 받으며.. 더보기 [오픈소스 컨트리뷰션] Node - fs.cpSync 벤치마킹 파일 수정 Node - File System 모듈의 cpSync 메소드에 대한벤치마킹 코드 가독성을 0.000001% 개선한 경험을 공유하고자 함 오케이 레츠고! 무슨 이슈를 해결했는가?fs.cpSync 가 force 라는 옵션을 파라미터로 받는데그 옵션의 디폴트값이 force:true 란 말임그런데 벤치마킹 코드에서 force:true 를 명시해서 보내고 있는 것임?!그래서 가독성 높이고자 force:true 를 없애는 PR 을 올림 여기서 등장하는 개념 정리✅ fs.cpSync 가 뭔데?Node 의 File System 모듈에서 제공하는 메소드로 파일이나 디렉토리를 다른 위치로 복사하는 기능임 여기서 force 옵션이 등장하는데 복사하려는 타겟 위치에 이미 파일이나 디렉토리가 존재하는 경우, 이를 덮어쓸 지.. 더보기 [오픈소스 컨트리뷰션] Node.js - SEA 관련 doc 수정 Node.js 에 오픈소스 컨트리뷰션한 내용을 공유하고자 한다. (비록 doc 수정이지만..🙃) 무슨 이슈를 해결했는가?운영체제A (ex. darwin-arm64) 에서 운영체제B (ex. linux-x64) 용Single Executable Application (*이하 SEA라고 칭함) 을 생성할 때,useCodeCache 설정과 useSnapShot 설정을 true 로 하면 해당 SEA 시작 시 충돌이 발생하는 이슈가 존재한다. 요약하자면 크로스플랫폼 SEA를 생성 후, 실행 시 에러가 발생하는 이슈 - 여기서 등장한 개념 정리✅ SEA (Single Executable Application) 이란?하나의 실행 파일로 패키징된 애플리케이션을 의미여러 파일로 구성된 애플리케이션을 단일 실행 파일.. 더보기 Node.js 소스코드 빌드 하기 전 mac 유저여서 아래 링크를 참고했슴다 (리눅스, 윈도우도 있음) https://github.com/nodejs/node/blob/main/BUILDING.md#macos-prerequisites node/BUILDING.md at main · nodejs/nodeNode.js JavaScript runtime ✨🐢🚀✨. Contribute to nodejs/node development by creating an account on GitHub.github.com 그럼 나의 Node 빌드 여정을 풀어보겠음,, 참고로 여기서 Node 빌드하겠다는 건, 찐 Node 레포의 소스코드를 클론 받아서 빌드 해보겠다는 것임 일단 macOS 기준으로 Node 를 빌드하기 위한 prerequisites 이 아래와.. 더보기 API 설계 고민: 추가, 수정, 삭제가 한 번에 일어나는 구조 오늘은 내가 했던 API 설계 고민을 공유해볼것임 어느 날 회사에서 아래와 같은 시안을 건네 받았음 (회사꺼는 공개할 수 없기에 Tistory 관리자 페이지에서 최대한 비슷한 구조의 UI 를 가져왔슴다) 이 시안이 뭣이냐하면.. 우측 하단에 [변경사항 저장] 버튼을 누르면 CRUD 가 한 번에 일어나는 구조의 페이지임 삭제 혹은 수정만 하는 API 는 설계하기 쉬운데 CRUD 가 한 번에 일어나야한다고 생각하니 갑자기 머리가 지끈해짐 [저장] 버튼 누를 때 변경사항 있는 row 들은 API payload 로 전부 전달을 해야할 터인데... API 서버 입장에서 각 row 들이 수정/삭제/추가 중에 무엇인지는 어떻게 구분하지???? 아!!! row 에 id 값이 있으면 수정 혹은 삭제, id 값이 없으면 .. 더보기 DB 에 있어야하는 데이터인데 없는 경우, 에러 코드는 무엇을 써야 할까? (오늘꺼 지하철에서 폰으로 막 끄적이는거라 얘 뭐라는거지? 할 수 있음 주의) 개발자로써 항상 고민되는 사항.. 에러 코드, 에러 메세지를 어떻게 쓸 것인가...? 에러의 책임이 명확한 경우는 에러 코드 처리가 쉽다. 클라 잘못인 경우 400,404 쿼리에서 오류난 경우 500.. 그런데 DB 에 당연히 있어야할 데이터가 없는 경우, 그런건 어떻게 처리해야 할까 ?_? 뭐 예를 들어.. user 테이블에서 primary key 가지고 특정 유저 조회 했는데, 당연히 존재해야하는 password 값이 null 로 들어가있는 케이스가 있다면....? (구글소셜로그인이면 pwd 가 null 일 수 있자나! 금지. 애초에 막으면 됐자나 !금지. Just 가정임 가정.) 일단 이 사항은 클라의 잘못이 아니니까, .. 더보기 [에러] Cannot find module 'ts-node/register' 해결법 문제 상황WebStorm 에서 단일 TypeScript 파일을 디버그 모드 실행시키려 하는데,Uncaught Error: Cannot find module 'ts-node/register' 오류가 발생했습니다.(디버그 모드 세팅 시, 참고한 WebStorm 공식 문서) 해결 방법ts-node 가 apps/api/node_modules 아래에 설치되어 있으므로,Node parameters 에서 ts-node/register 을 프로젝트 구조에 맞게 상대 경로 사용합니다. 더보기 AWS Lightsail 을 이용하여 서버 배포해보기 - (2) 로드밸런서, SSL인증서 생성, 도메인 사기 로드 밸런서를 써야하는 이유 이유 1. https 처리 (인증서)로드 밸런서도 결국 내부적으로는 EC2 인데요. 로드 밸런서가 http(80), https(443) 으로 들어오는 요청을 리스닝하게 설정해줄겁니다. (* 참고로 443 포트는 그냥 열어준다고 되는게 아니라, 인증서가 필요합니다) 참고로 로드 밸런서와 lightsail 을 통해 만든 VM 의 통신은 내부망에서 이루어집니다.같은 망을 사용하기 때문에, 로드 밸런서 -> VM 으로의 요청은 443 포트로 처리할 필요 없고, 80 포트로 처리하면 됩니다. 이유 2. VM 에 부여된 public ip 는 dynamic 하므로 언제든 바뀔 수 있음이 public ip 는 평생 저 ip 인게 아니라, 서버를 중단했다가 다시 재시작하면 ip 가 변경됩니다.. 더보기 이전 1 2 3 4 다음