[NodeJS] NVM(Node Version Manager) for macOS - .nvmrc로 Node 버전 자동 관리하기
·
Language/JavaScript
A회사에 첫 출근을 한 데범은 A 프로젝트의 개발환경을 설정하라는 첫 번째 업무를 받는다. 데범:"팀장님! A 프로젝트를 실행하려고 하는데, yarn install을 했더니 에러가 나네요.Node.js 버전 문제 같아요." 팀장님:"아 맞다, 우리 회사는 프로젝트마다 사용하는 Node.js 버전이 달라.A 프로젝트는 v16을 사용해야 하고 B 프로젝트는 v20을 사용하고 있어""이렇게 프로젝트마다 요구하는 Node의 버전이 다르기 때문에 우리는 nvm을 사용하고 있어." 데범:"nvm? 그게 뭔데요??"📚 NVM (Node Version Manager)특정 프로젝트에서 특정 Node.js 버전을 요구하는 이유는주로 Node.js와 프로젝트 의존성(라이브러리, 패키지)의 호환성 문제 때문이다.Node.j..
[JavaScript] 자바스크립트 패키지 매니저 #01 - 패키지 매니저란?
·
Language/JavaScript
패키지 매니저가 없던 시절자바스크립트의 애플리케이션이 점점 더 복잡해지면서, 모듈과 라이브러리를 조합하여 개발하는 방식이 일반화되었다.이에 따라 CommonJS(CJS), ECMAScript Modules(ESM) 같은 모듈 시스템이 도입되었는데,모듈 시스템 만으로는 외부 라이브러리와 의존성을 효율적으로 관리하기에는 한계가 있었다. 모듈 시스템이 존재하더라도, 의존성 관리가 자동화되지 않았기 때문에개발자가 일일이 외부 라이브러리와 그 의존성을 직접 확인하고 설치해야 하는 번거로운 작업이 필요했다. 패키지 매니저가 없다는 가정하에 React를 사용한다고 해보자 React는 자체적으로 DOM 조작을 처리하지 않으므로,ReactDOM이 없으면 브라우저에서 애플리케이션을 실행할 수 없다.ReactDOM은 Rea..
[JavaScript] 자바스크립트의 모듈 시스템 ESModule(ESM) vs CommonJS(CJS) (feat. Tree Shaking)
·
Language/JavaScript
초기 JavaScript의 한계와 모듈 시스템의 필요성JavaScript는 클라이언트와 동적인 상호작용을 하는 웹페이지를 위해 만들어졌다.정적인 HTML 문서를 동적으로 표현하기 위해 사용되었기 때문에 일반적으로 스크립트의 사이즈가 작았다.(이후 폼 유효성 검사, 이벤트 처리 등에 사용되면서 점차 발전) 모듈이라는 개념이 없어서 모든 코드가 하나의 전역 스코프를 공유해야 했고, 프로젝트의 규모가 커지면서 다음과 같은 문제가 발생하게 된다. 1. 네임 스페이스 충돌    - 서로 다른 파일에서 동일한 변수나 함수 이름을 사용하면 충돌이 발생함// script1.jsvar sharedVar = 'Script 1';console.log(sharedVar);// script2.jsvar sharedVar = '..
[2024년 하반기 ICT 학점연계 프로젝트 인턴십 합격 후기] - 인턴부터 정규직까지
·
Experience/ICT 학점연계 프로젝트 인턴십
2024년 9월 2일 ~ 2024년 12월 31일까지의 ICT 학점연계 프로젝트 인턴십을 마쳤다!이번 인턴십을 준비하는 동안, 많은 블로그 글들과 경험담으로부터 큰 도움을 받을 수 있었다.나도 인턴십을 준비하는 분들에게 도움이 되길 바라는 마음으로 내 경험담을 공유하려 한다. 지원동기 및 서류제출지원동기2024년 6월, 네이버 부스트캠프 웹.모바일 9기 과정을 시작했다.당시 내 목표는 이 과정을 잘 마치고 여기서 얻은 경험을 잘 녹여내어 이력서를 작성한 다음 이걸 토대로마지막 학기인 4학년 2학기를 인턴 경험으로 마무리하는 것이었다.(방학 동안 진행하고 있었지만 네부캠 멤버십 과정까지 가면 휴학할 생각을 가지고 있었음) 그러던 도중, ICT 학점연계 프로젝트 인턴십 모집 공고가 올라왔다.준비가 안됐다고 ..
[SQLD] 2024 개정 제 55회 합격후기 - 3주 공부법
·
자격증/SQLD
제55회 SQLD 개발자 시험을 봤고 결과가 나왔다.요즘엔 전공자 뿐만 아니라 비전공자들도 금융권이나 IT 관련 직무 취업을 위해 SQLD 자격증을 취득하려는 것 같다. SQLD를 준비하는 많은 분들이 계시고, 각자의 상황에 맞는 공부 방법을 선택할 수 있지만,인턴을 진행하면서 퇴근 후 틈틈이 공부를 할 수 밖에 없었던 나로서,단기간에 최대의 효율을 낼 수 있는 공부 방법을 공유하려 한다. SQLD 개요SQLD(SQL Developer)는 SQL 개발자를 의미하는 자격증으로, 데이터베이스와 데이터 모델링에 대한 지식을 바탕으로 응용 소프트웨어를 개발하면서 데이터를 조작하고 추출하는데 있어서 정확하고 최적의 성능을 발휘하는 SQL을 작성할 수 있는 개발자를 말한다. 시험 범위 개정 이전에는 단답형 10..
[네이버 부스트캠프 웹.모바일 9기 챌린지 수료 후기] - 지난 시간들을 되돌아보며
·
Experience/네이버 부스트캠프
부스트캠프 입과 전나는 졸업을 앞두고 있는 소프트웨어학과 4학년 학생이다. 솔직히 전공자라고 하기엔 부끄러운 수준의 CS 지식을 가지고 있었다. 학과 수업에서 배운 이론은 많지만, 실제로 이것들을 어떻게 적용해야할지 막연했고 그저 "이론적인" 내용에 그칠 뿐이었다. 뿐만 아니라 대부분의 학습이 교수님이나 외부 강사진들의 강의에 의존한 채 진행되었고, 클론코딩을 통해 단순히 주어진 예제를 따라가는 수준에 머물렀다. 이러한 방식으로 학습을 이어가던 중, 문득 나의 개발 실력이 진정으로 향상되고 있는지 되돌아보게 되었다. 지금까지 해온 공부 방식이 과연 올바른 방식인지에 대한 의문이 끊임없이 들기 시작했다. 항상 누군가가 만들어놓은 틀 안에서만 움직였고, 내가 직접 문제를 해결하는 경험은 거의 없었다. 이대..
[네이버 부스트캠프 웹.모바일 9기 챌린지] - 3주차 회고록 (KPT 회고)
·
Experience/네이버 부스트캠프
부스트캠프 챌린지 3주차 후기 (학습은 낯선 것을 의도를 갖고 배우는 것) 돌아보기학습은 익숙한 것을 의식하지 않고 반복하는 게 아니라, 낯선 것을 의도를 갖고 배우는 것이다. 개발자원칙이라는 책에서 가져온 구절이다. 이 구절을 읽고 네부캠의 의도와 아주 잘 부합한다고 생각했다. 계속해서 나오는 새로운 미션과 익숙하지 않은 용어들로 가득한 학습 키워드를 통해 나는 낯선 것(학습 키워드)을 의도(문제를 해결)를 갖고 배우고 있다고 생각한다. 글로 배우는 이론적인 내용으로만 접하는 것 보다 이 이론을 코드로 적용해보는 것이 최고의 학습법이라고 생각한다. 3주차의 일정은 (개인 해결과 학습 -> 같이 개선하기),  (짝 해결과 학습 -> 각자 개선하기) 이렇게 이틀단위로 묶어서 진행했다.미션의 갯수는 두 개 ..
[네이버 부스트캠프 웹.모바일 9기 챌린지] - 2주차 회고록 (KPT 회고)
·
Experience/네이버 부스트캠프
부스트캠프 챌린지 2주차 후기 (느리지만 괜찮아) 돌아보기다양한 경험을 많이 해볼 수 있었던 한 주 였다. 이제 절반을 향해가는데 체력은 많이 방전된 것 같은 기분이다. 슬랙을 보면 새벽 세시 네시가 됐음에도 불구하고 많은 사람들의 온라인 상태를 보고 대단하다고 느꼈다. 나도 이분들을 보며 열심히 불태워보려고 했으나 하고자 하는 의지는 강했지만 체력적인 한계는 존재했다. 새로운 주차가 됐으므로 스터디 그룹의 짝도 새롭게 편성됐다. 이번주 캠퍼분들은 자바 스프링 백엔드를 공부하다가 오신 분들이 많았는데 덕분에 일주일동안 피어세션을 진행하면서 이분들은 어떻게 객체지향적으로 설계를 했는지 코드를 살펴볼 수 있었다. 확실히 피어세션을 통한 경험들은 나의 성장에 큰 도움이 되는 것 같다. 다른 캠퍼분들의 코드를 ..
[네이버 부스트캠프 웹.모바일 9기 챌린지] - 1주차 회고록 (KPT 회고)
·
Experience/네이버 부스트캠프
부스트캠프 챌린지 1주차 후기짧다면 짧고 길다면 긴 군생활 같은 정신없는 챌린지 1주차가 끝났다. 부스트캠프 챌린지는 매일 강도 높은 미션을 해결해야하는 이름 그대로 도전적인 과정이며, 개발자로 성장하기 위해 반드시 알아야 하는 CS 지식을 스스로 학습하고 글로써 이해하는 것으로 그치는게 아닌 프로그래밍 언어로도 구현한다. 미션의 요구사항들은 모호하거나 명확하게 주어지지 않는 경우가 많다. 요구사항을 해석하는 과정 속에서 내리는 모든 결정들은 스스로 근거를 가지고 판단해야한다. 현실에서의 문제도 모든 디테일한 요구사항들이 주어지지 않는 경우가 많다고 한다. 따라서 이 근거를 가지고 판단하는 훈련을 하는 것은 중요하다고 생각한다. 학습을 통해 미션을 마쳤으면 동료와 서로의 문제 해결 방법을 공유하는 피어세..
[Web API - WebSocket] 웹소켓 응답 객체가 Blob 객체일 경우 (feat.업비트, React)
·
Troubleshooting
[UPbit Open API]업비트는 코인 정보와 관련된 무료 웹 소켓 API를 제공해주고 있다.public 타입이 있고, private 타입이 있는데, public 타입은 별다른 인증 없이 수신할 수 있는 데이터 타입이다.여기선 public 타입으로 별도의 JWT 인증 토큰 없이 웹소켓 연결을 해보려고 한다.(웹소켓을 사용하면 서버와 브라우저 간 연결을 유지한 상태로 데이터를 교환할 수 있으므로 데이터 교환이 지속적으로 이뤄져야 하는 서비스에 아주 적합하다.)WebSocket을 사용하기 위한 두 가지 방법1. 브라우저 환경에서 WebSocket API 사용- 브라우저 환경에서는 내장된 WebSocketAPI를 사용한다. 이 API는 모든 브라우저에서 기본적으로 지원되므로 별도의 import가 필요 없다..