UX Engineer 이야기(86)
-
JavaScript 웹 컴포넌트로 재사용 가능한 UI 구축하기
들어가며최근의 프로젝트 환경은 대부분 React, Vue, Angular와 같은 프레임워크를 기반으로 합니다. 이러한 프레임워크들은 컴포넌트 기반 아키텍처를 통해 재사용 가능한 UI를 구성하여 효율적인 개발을 가능하게 했죠.하지만 프레임워크 환경이 아닌 전통적인 HTML, CSS, JavaScript 환경에서 작업해야 하는 경우도 있습니다. 이때 웹 표준 기술만으로도 프레임워크가 제공하는 강력한 기능을 구현할 수 있는 방법이 있는데요, 그것이 바로 '웹 컴포넌트'입니다.웹 컴포넌트를 사용하면 HTML, CSS, JavaScript만으로 재사용 가능하고 캡슐화된 커스텀 컴포넌트를 만들 수 있습니다. 이를 통해 특정 프레임워크에 종속되지 않고도 프레임워크와 유사한 컴포넌트 기반 개발을 할 수 있습니다. 웹 ..
-
네이티브 앱과 같은 사용자 경험 - PWA (feat. 웹 크롤링 cheerio)
들어가며어머니께서 매주 듣는 콘텐츠가 있는데 해당 사이트에서는 아이폰에서 바로 재생 지원을 하지 않고 있었습니다. 안드로이드에서 아이폰으로 기기변경을 하신 후 해당 콘텐츠를 듣지 못하게 되어 제가 xml을 이용해 구글 시트에서 해당 콘텐츠의 URL을 가져와서 노션에 사용하시기 편하게 오디오로 올려주는 것을 거의 2년 동안 했었는데요.바쁘거나 잊어버려서 놓치게 되면 길게는 몇 달까지도 딸한테 차마 올려달라고 말은 못 하고 못 듣고 계셨던 게 마음에 걸려 저걸 어떻게든 자동화 시켜야겠다! 라는 마음을 먹고 이번에 만들게 되었습니다. 기존 사이트 콘텐츠 크롤링 하기요 문제는 기존에 영민 선임님이 포스팅 한 cheerio로 쉽게 해결할 수 있었습니다.다만 타 사이트의 자료를 가져오는 것이라 CORS 문제를 만..
-
증분 정적 재생성 (ISR)
들어가며정적 사이트 생성(SSG)과 서버 사이드 렌더링(SSR), 클라이언트 사이드 렌더링(CSR)의 기능을 모두 포함하고 있는 프레임워크인 Next.js에서는 서버 사이드 렌더링(SSR)보다 정적 사이트 생성(SSG) 이 높은 성능을 지니기 때문에 정적 사이트 생성(SSG)의 사용을 권장하고 있습니다. 하지만 정적 사이트 생성(SSG)만으로는 분명 동적인 페이지를 만드는 데 한계가 있습니다.이로 인해 정적 사이트 생성(SSG)의 개념과 서버 사이드 렌더(SSR) 개념의 중간 영역쯤으로 볼 수 있는 증분 정적 재생성(ISR)이 등장하게 되었고, ISR로 인해 Next.js의 기능은 더욱 확장되었습니다. 이 글에서는 ISR의 개념과 작동 방식, 사용 예시, Next.js에서의 예시 코드, 한계점 등에 대..
-
React-hook-form + Yup 라이브러리
들어가며최근 프로젝트에서 폼 요소로 구성된 문의하기 팝업을 구현하는 과정에서 react-hook-form을 사용하게 되었습니다. 작업이 끝나고 코드 리팩토링 작업을 하면서 유효성 및 에러 처리를 좀 더 편리하게 도와주는 라이브러리 중 yup 대해 소개하려고 합니다.Yup 소개하기yup는 데이터의 유효성 검증을 객체 스키마로 선언하여 검증하는 라이브러리입니다. yup 설치 시 react-hook-form을 연결해 주는 라이브러리도 함께 설치해줘야 합니다.* 스키마란?데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 메타데이터의 집합을 의미. // 1. 설치npm install yup @hookform/resolvers// or yarn add yup @hookform/resolvers// 2..
-
Claude 3 사용기
들어가며ChatGPT가 공개된 이후, 저는 다양한 프로젝트에서 이를 적극 활용해 왔습니다. GPT 덕분에 문제를 빠르게 해결할 수 있게 되어 업무 효율이 크게 향상되었죠. 최근에는 Claude 3이 새로운 LLM(대규모 언어 모델)으로 주목받고 있습니다. 개발사인 Anthropic에서는 Claude가 다른 LLM보다 우수한 성능을 보인다는 지표를 발표했으며, 일부 사용자들은 GPT-4를 능가하는 성능을 보인다고 평가하기도 한다고 합니다.저도 Claude의 출시 소식과 ChatGPT보다 뛰어나다는 평가를 듣고 사용해 보았는데요. 이번 글에서는 Claude가 어떤 특징을 가졌는지 알아보고 실제 저의 사용 후기를 보여드리고자 합니다.Claude Ai란?홈페이지 Docs에서는 Claude를 다음과 같이 소개하고..
-
pxd Wallet
들어가며지난해 12월, 사내에서 사용할 목적으로 WEB3 pxd Wallet을 개발하기 시작했습니다.이전에 WEB3 플랫폼에서 UI/UX를 고민하며 UI를 개발하고 일부 프론트앤드 작업을 해본 경험은 있었지만, 실제 블록체인과 스마트 컨트랙트와 관련된 프론트앤드 개발은 처음이었기에 거의 0에서 시작하는 느낌이었습니다.개발 과정에서 블록체인 네트워크의 테스트넷을 사용해보며, ERC-20 및 ERC-721 토큰에 대한 이해를 쌓았고, 깊이는 아니지만 Solidity를 활용해 간단한 스마트 컨트랙트를 작성하고 이를 실제 블록체인 테스트넷에 배포하는 경험을 하며 이 과정에서 새로운 지식을 습득하기도 했습니다.비록 업무와 병행하며 진행되었고, 우선순위에서 밀려 잠시 중단된 적도 있었지만, 꾸준히 진행한 끝에 마무..
-
오픈소스 License에 대해 알아보기.
들어가며오픈소스 소프트웨어는 개발자와, 개발 커뮤니티, 여러 기업들에게 수많은 이점을 제공하고 있습니다.오픈소스 소프트웨어는 이미 구현된 다양한 기능을 무료로 사용할 수 있을 뿐만 아니라, 개발 코드의 투명성과 손쉽게 커스터마이징도 할 수 있습니다.하지만 이렇게 많은 이점을 제공하는 오픈소스 라이브러리도 사용할 때 반드시 이해해야 할 중요한 요소가 있는데요. 바로 라이센스 입니다.이 글에서는 지난번 제가 작성한 글에 이어 오픈소스 라이브러리와 주요 라이센스 유형과 그 특성에 대해서 알아보도록 하겠습니다. 오픈소스 라이센스의 분류오픈소스의 라이센스는 배포 시 소스 코드의 제공 의무(Copyleft)에 따라 크게Reciprocal(소스코드 제공 의무)와 Permissive(소스코드 제공 의무 없음)로 분류..
-
faker.js와 colors.js 사태를 통해 살펴보는 오픈소스의 양면성
들어가며저는 프런트엔드 개발을 하며 종종 mock 데이터가 필요해 손쉽게 mock 데이터를 만들어주는 faker.js라는 오픈소스 라이브러리를 즐겨 사용합니다.이 faker.js를 사용하면 각종 프로젝트를 진행하면서 필요한 이름, 이메일, 회사명, 주소, 랜덤 한 이미지 등 원하는 형태의 데이터를 손쉽게 생성할 수 있었기에 Api가 준비되지 않은 상태에서도 개발과, 테스트를 진행할 수 있고, 최근에도 종종 요긴하게 잘 사용하고 있습니다. 그런데 이 faker.js라는 라이브러리로 인해 수많은 기업들과 인터넷 커뮤니티가 난리가 났던 적이 있습니다. 바로 2021년 말 발생한 faker.js와 colors.js 사태인데요.이 사태를 통해 당시 해당 라이브러리를 사용하던 여러 기업들과 사용자들은 큰 혼란에 빠..
-
wagmi.sh hooks 만들어보기
들어가며올해 그룹에서 Web 3에 대한 내부 프로젝트를 시작하게 되면서, 내부 환경 세팅 및 관련 라이브러리 사용에 대해 고민하던 중, WAGMI.sh라는 라이브러리를 우연히 알게 되었습니다. 비록 실제 프로젝트에 투입되지는 않았고 해당 라이브러리를 사용하지는 않았지만, 공부를 통해 WAGMI.sh의 내부 동작 방식을 이해하고 분석하는 좋은 기회를 얻게 되어 학습 경험을 공유하고자 합니다.WAGMI.sh란,블록체인 기술과 상호작용을 하는 애플리케이션을 위해 설계된 유틸리티 라이브러리입니다.여기서 WAGMI 는 “We’re All Gonna Make It”의 약자로 암호화폐와 web 3 커뮤니티에서 자주 사용되는 표현인데,이더리움 개발과 일반적인 작업을 단순화하는 훅을 제공합니다.Wagmi.sh에서 제공하..
-
Transfer Detection
들어가며블록체인의 컨트랙트에서 전송을 감지하고, 어떻게 처리하는지 알아보자.처음의 궁금증은 지갑에서 보이는 기본 토큰의 보유 수량을 어떻게 업데이트하는지에 대한 고민부터 시작되었다.다른 사람이 내 지갑으로 토큰을 전송한 걸 감지해서 보여줄까? 에 대한 고민이었는데, 어떻게 하면 더 효율적으로 보유 수량을 업데이트할 수 있는지 알아보고, 찾아낸 방법을 소개하고자 한다. 단순한 해결 법최초 고민 시에 내가 아는 지식은 블록체인 내에서 내가 가진 토큰의 수량을 조회하고 보여주는 게 끝이었다.이런 지식 속에서 처음 생각난 해결법은 주기적으로 내가 가진 토큰의 수량을 조회하여 보여주는 방식이 생각났지만 동시에 너무나도 비효율적인 방법이라는 생각이 듦과 동시에 누가 생각하더라도 이런 비효율적인 방법보다 더욱 효율적..
-
서브 도메인을 활용한 쿠키 공유
들어가며구글에는 수많은 서비스가 있습니다. 검색, 유튜브, 메일... 전부 기억하기 힘들 만큼이나 많습니다. 하지만 여러분들은 구글 서비스를 이용하며 로그인을 해본 기억이 그리 많지는 않을 것입니다. 과연 구글은 어떻게 사용자가 로그인을 하지 않고도 서로 다른 도메인 간 로그인을 유지시킬 수 있었을까요? 이번 포스트를 통해 이에 대하여 추측해 보겠습니다.본론우선 공식 문서를 통해 힌트를 얻어 보겠습니다. 기본적으로 저희는 구글에서 계속 로그인 상태를 유지하고 싶습니다. 하지만 그렇지 못하는 경우에 대해 구글은 '쿠키' 사용 설정을 확인해 보라 알려줍니다. 이를 통해 구글은 로그인 유지에 '쿠키'를 활용한다는 것을 알 수 있습니다. 스택오버플로우의 글에서는 아래와 같이 도메인 단위의 쿠키 저장이 가능함을 ..
-
React Three Fiber
들어가며WebGL 기반의 자바스크립트 라이브러리 three.js를 react에서 손쉽게 사용할 수 있도록 도와주는 라이브러리인 react-three-fiber(이하 RTF)에 대해 간단하게 알아봅니다. 특징컴포넌트 기반3D 장면을 웹상에서 구현하기 위해서는 수반되어야 하는 많은 지식이 있습니다. 카메라, 조명, 텍스처, scene 등을 하나하나 구현해나가야 하는데 three.js를 사용해 본 사람은 알겠지만 단순한 mesh 하나를 만드는데도 많은 양의 코드가 필요합니다. 복잡한 내용일수록 코드 가독성은 떨어지고 피로감은 올라가죠.RTF는 react 개발자라면 익숙한 커스텀 태그와 컴포넌트 형식으로 각종 API를 제공합니다. 또한 react 훅과도 잘 맞고 useFrame, useLoader 같은 다양한 ..