2024/04 6

Node.js 가 뭐임?

들어가며 SSR 를 위해 Nuxt 를 하면서 결국엔 Node 서버까지 알아야 되는 상황에 처했다 이전에 공부하긴 했었지만 "대충" 훑기만 했었기 때문에 이게 뭔지 다시 톺아 보려고 한다 Node.js 가 생기게 된 배경 기존에 javascript 는 웹에서만 쓰이는 언어였다 나 첨 시작할 땐 언어라고 인정해 주지도 않았음 이때는 js 가 그저 html 을 예쁘게 만들어 주는 도구 정도였다 chrome 에서 v8 엔진을 만들었는데, 이게 무지 빠른 엔진이었던 것이었다 그리고 그 당시 웹 서버들은 매 요청마다 별도의 스레드를 생성하고 있었는데, 그게 리소스를 넘 많이 소모하고 확장성에 한계가 있었음 따라서 비동기 이벤트 주도 방식을 도입한 Node.js 를 개발하게 된 것임 I/O 작업이 블락되지 않아서 높..

백엔드/Node 2024.04.21

클로저 패턴이란 무엇인가

들어가며 의도치 않게 너무 어그로 끄는 제목이 되었는데, 별 생각 없이 정한 제목입니다... 이 글은 그저 끄적이는 글이기 때문에 엄청난 의식의 흐름일 수 있습니다 갑자기 뿅 하고 끝날 수도 있으니, 이 점 양해 부탁드립니다 ㅎ;; 배경 최근 react 를 공부하면서, 클로저 패턴을 자주 쓰게 되었음 (예를 들어, click과 같은 이벤트 핸들러 함수에 특정 값을 넘기면서 이벤트도 함께 넘기고 싶을 때 이 패턴을 활용하곤 하더라) 예시 export default function App() { const togglePopover = (index) => (e) => { e.preventDefault(); e.stopPropagation(); setOpen(openedIndex === index ? null ..

Vue2, Vue3 에서 지원되는 라이브러리를 만들어 보자

개요 디자인 시스템을 만들 때, 컴포넌트 모듈화를 하고 싶다는 생각이 들었다 마치 Vuetify 와 같은 사내 라이브러리를 만들고 싶었다 하지만 사내 기술은 Nuxt2 로 이루어지고 있었다 Vue2 만 지원하기엔, Vue2 에 대한 지원이 끊기고, 앞으로 나아가야 할 방향은 Vue3 이기 때문에 vue2, vue3 둘 다 지원이 필요했다 삽질 다른 라이브러리들은 Vue 버전을 어떻게 지원하는걸까? quasar:: 3버전부터는 vue3 만 지원 Vuetify:: 3버전부터는 vue3 만 지원 ㅜㅜ 진짜 없는걸까 새로운 라이브러리를 발견 https://github.com/vueuse/vue-demi 열심히 구글링하다 보니 vue-demi 라는 것을 발견함 description 에 적혀있듯이, Vue2 와 V..

프론트/Vue 2024.04.20

IDE 켜지면 저절로 node 버전 셋팅되도록 하기

개요 IDE 를 킬 때마다 매번 node 버전을 셋팅하는 것이 킹받았다 사전 작업 프로젝트의 node version 을 .nvmrc 로 추가해 놓는다 // .nvmrc 12.16.3 이것은 각 개발자가 로컬에 갖고 있는 것이 아닌, 프로젝트 디렉토리에 넣고, git 에 올리는 편이 나을 것 같다 (모든 개발자의 노드 버전을 맞추기 위해) zsh 설정 터미널에 vi ~/.zshrc 입력하여 zshrc 파일을 엶 최하단에 아래 내용을 넣고 > esc > :wq 하여 저장 autoload -U add-zsh-hook load-nvmrc() { local node_version="$(nvm version)" local nvmrc_path="$(nvm_find_nvmrc)" if [ -n "$nvmrc_path"..

시각적 회귀 테스트 - Backstop

간단 배경 설명 아토믹 디자인 패턴 도입하면서 몇 가지 한계점이 보이기 시작하였다 하나를 조금만 바꿔도 전체가 망가지는 상황이 생김 예를 들어, base swiper 에서 height 하나 조정했더니 메인이 이상하게 꼬여버림 이유는 메인에 스와이퍼가 있어서 그런 것 그래서 코드 변경하는 걸 좀 망설이게 되었고 페이지가 망가지는 걸 막기 위해 여러 방어 로직을 넣기 시작했는데, 이런 코드들이 개발자들 간에 오히려 혼란을 주고 있었음 그래서 생각했다 누군가 매번 지켜보고 있다면 이런 문제가 없지 않을까? 여기서 '누군가 지켜보고 있다'는 건 >> 테스트 코드라는 생각을 했다 데이터 중심의 유닛 테스트는 인증 같은 명확한 로직에는 잘 맞지만, 시각적인 변화를 테스트하기에는 한계가 있겠다는 생각이 들었다 “시각..

프론트 2024.04.07