개발 기록
-
좌충우돌 블로그 Next.js로 마이그레이션하기
좌충우돌 블로그 Next.js로 마이그레이션하기
저는 지금 이 글이 올라온 티스토리 블로그 외에도, 바닥부터 만드는 블로그 개발기에서 만들었던 블로그를 함께 사용하고 있습니다. 개인적인 이야기들을 많이 적는 용도로 사용해서 크게 신경쓰고 있지는 않았지만, 블로그에게는 치명적인 문제점이 하나 있었습니다. 바로 SEO가 제대로 적용되지 않는다는 점이었는데요. 실제로 블로그 글을 트위터나 카카오톡과 같은 메신저에 공유하게되면 기본적으로 설정된 메타 데이터만 표시될뿐, 포스트의 정확한 정보나 설명이 전혀 보이지 않았습니다. SSR을 적용하면 쉽게 해결할 수 있는 문제이지만 아직까지 사용해본적이 없어서 미루고만 있었던 문제였습니다. 그러던중 이번에 Next.js의 13 버전이 어느정도 안정화가 되었다는 소식을 듣고, 내친김에 블로그에 SSR 방식을 적용해보기로..
2023.07.28
-
모임 서비스를 개발하며 (모두 모여라 개발기)
모임 서비스를 개발하며 (모두 모여라 개발기)
2022 . 06 . 22 ~ 2022 . 10 . 22 우아한테크코스 레벨 3 ~ 4에 거쳐 진행된 팀 프로젝트가 21일 데모데이를 끝으로 마무리 되었습니다. 제가 참여한 팀에서는 "모두 모여라"라는 모임 생성 & 참여 서비스를 개발하게 되었는데, 지난 네 달간의 개발 과정을 정리해보는 시간을 가지려고 합니다. 팀 규칙 정하기 모두 모여라(이하 모모) 팀은 백엔드 크루 4명과 프론트엔드 크루 2명, 총 6명으로 구성된 팀입니다. 여러 명이 함께 개발을 해야하다보니 앞으로의 원활한 진행을 위해 일관성 있는 규칙이 필요했습니다. 간단한 시간 약속부터 회의나 코드 리뷰 방식까지 공통적인 팀 규칙을 정하고, 각 분야별로 구체적으로 필요한 규칙이 있으면 정하였습니다. 정했던 규칙들 중 4번 나만 알지 않기, 나..
2022.10.23
-
Recoil + React-query 삽질기
Recoil + React-query 삽질기
이 글은 모두 모여라 기술 블로그에도 업로드 되었습니다. 현재 진행하고 있는 프로젝트의 스프린트가 마무리 되고, 본격적인 유지보수와 리팩토링 작업에 들어갔습니다. 시간적인 여유가 생겨 사용되고 있는 기술 스택들을 깊게 공부해보며 발견했는데 현재 사용중인 라이브러리들 중 라이브러리가 추구하는 방향 또는 기능과 일치하지 않는 부분을 발견하였습니다. 무엇인가 이상한 점을 느껴 전체적인 데이터 관리 플로우를 점검해보았는데, 나름 잘 사용하고 있었다는 초기의 생각과는 달리 데이터 관리의 일관성이 무너진 상태였습니다. 저희 팀이 처음보는 라이브러리를 사용하며 어떤 착각을 했었는지, 그 실패의 경험을 글로 옮겨보려합니다. 무엇이 문제였을까? 문제가 되는 라이브러리는 프로젝트의 상태 관리를 담당하는 recoil과 통신..
2022.10.28
-
썸네일 생성기를 리뉴얼 했어요
썸네일 생성기를 리뉴얼 했어요
지금으로부터 약 1년 전, 블로그 포스팅에 사용하기 위해 썸네일을 생성해주는 프로그램을 만들었습니다. 이때 만든 프로그램을 지금까지도 만족스럽게 쭉 써오고 있었는데, 몇 가지 불편한 점이 있었으나 기술적인 역량이 부족하여 손대지 못하고 있었습니다. 🚩 이전에 만들었던 썸네일 생성기 제작기 썸네일 생성기를 만들었어요 (Thumbnail generator) 이번에 우아한테크코스를 진행하며 생각해오던 목표 중 하나가 기술적으로 성장해서 이전에 진행했던 프로젝트들을 리팩토링 하는 것이었습니다. 현재까지 가장 많이 사용했었고, 앞으로도 계속 사용할 예정이며 직접 사용하며 느꼈던 불편점들이 명확했던 썸네일 생성기가 첫 번째 대상이 되었습니다. 현재 프로젝트의 문제점 우선 기술스택부터 점검하였습니다. 기존의 썸네일 ..
2022.12.12
-
PR시 미리보기 구현하기 (Github Actions)
PR시 미리보기 구현하기 (Github Actions)
여러 개발자가 팀으로 함께 개발을 하는 경우, 일반적으로 github를 통해 버전을 관리하게 됩니다. 실제 라이브 프로젝트를 배포하게 되는 main 브랜치가 있다고 하겠습니다. 보통 이 main 브랜치에서 파생하여 개발용 버전을 관리할 목적으로 사용하는 develop 브랜치를 두고 여기서 파생된 각 기능별 브랜치에서 실제 개발을 진행한뒤, 이를 develop 브랜치로 병합하여 관리합니다. 여기에 hotfix와 같은 기타 브랜치들이 더 추가되기도 하지만 우선 큰 줄기는 이렇습니다. 이렇게 브랜치를 관리하는것 만으로도 프로젝트의 전체적인 그림을 파악하기에 좋지만, 아직은 몇 가지 문제가 남아있습니다. 예를 들어, 협업자의 코드를 볼 수는 있으나 그 결과를 눈으로 확인하려면 해당 브랜치로 이동하여 코드를 pu..
2022.11.09
최신 포스트
-
타입 안정성을 위한 as unknown as Type
as 타입스크립트를 사용하면 가끔 as를 사용한 타입 단언을 해야 할 때가 있습니다.보통 아래처럼, 컴파일러의 자연스러운 타입 추론이 불가능한 경우 강제로 타입을 지정해줄 때 사용합니다. // 1. DOM 요소const element = document.querySelector("#App") as HTMLInputElement;// 2. API의 응답 값const data = getNativeAPIValue() as APIResponse;// etc... 이런 케이스에서는 개발자가 타입을 지정해주고, 타입 시스템은 개발자를 신뢰합니다.단언은 타입 시스템을 무시 할 정도로 강력하지만, 그만큼 휴먼 에러를 일으킬 가능성이 있기 때문에타입 시스템이 정상적으로 동작할 수 없는 특수한 상황에만 사용하는게 좋습니..
2024.10.21
-
Impression log 사용하기
들어가며사용자의 행동을 추적하고 분석하기 위해서는 유저의 활동 기록을 남기는 작업이 필수적인데요, 이를 로깅이라고 합니다. 제품을 개발하는 입장에서는 이러한 로깅을 통해 프로그램의 품질을 개선하고 예기치 않게 발생하는 문제를 해결하는 데 도움을 받을 수 있습니다. 프론트엔드에서 주로 기록하는 로그는 크게 세 가지입니다. 페이지 뷰(page view), 클릭(click), 임프레션(impression) 이 바로 그것인데요. 오늘 글에서 다뤄볼 주제는 임프레션 로그입니다. 이 글에선 임프레션 로그가 무엇이고 React 기반의 프론트엔드 환경에서 어떻게 구현할 수 있을지, 그리고 구현 중에 마주할 수 있는 문제들과 그 해결 방법에 대해 알아보겠습니다. 임프레션 로그(Impression Log)임프레션 로그..
2024.07.01
-
'코딩 자율학습 제로초의 자바스크립트 입문' 도서 리뷰
본 포스트는 길벗 24차 개발자 리뷰어로 선정되어 도서를 제공받아 작성한 글입니다. 기술 도서 리뷰를 작성하는건 오랜만인데, 우연찮게 좋은 기회를 받아 작성할 기회가 생겼습니다. 이번에 리뷰할 도서는 제로초(zerocho) 라는 이름으로 각종 강의와 집필 활동을 하고 계신 조현영님의 "코딩 자율학습 제로초의 자바스크립트 입문" 입니다. 이전에도 제로초님의 강의나 책을 읽으며 공부했던 적이 있었는데, 마침 최신 도서를 리뷰하게 되어 기대가 많이 되었습니다. 약 2주간 책을 읽으며 느꼈던 감상을 결론부터 말하자면, 프로그래밍 입문자들을 대상으로 추천하고 싶은 책입니다. 다른 언어를 충분히 익히신 상태에서 자바스크립트를 새로 배워보려는 분들보다는, 프로그래밍 자체를 처음 시작하시는 분들에게 적합하다..
2024.05.15
-
React 19? 18.3 먼저 살펴보기
들어가며 지난달 25일, React 19가 공개되었습니다. 여러가지 기능이 추가된 버전을 사용할 수 있게 되었는데, 기존 프로젝트에서 곧바로 버전을 올리기엔 고려해야 할 점들이 꽤 존재합니다. 18에서 19로 업그레이드를 생각하는 사용자들을 위해, React 18.3이 함께 공개 되었습니다. 18.3 은 이전과 기능상으로 완전히 동일하지만, 19에서 deprecated된 API들에 대한 경고가 추가되었습니다. 리액트 팀은 버전 업 이전에 먼저 적용해보고, 충분한 수정 작업을 거친 뒤 올리기를 권장하고 있네요. 이 포스트에서는 개인적으로 중요하다고 생각되는 변경점들을 일부만 살펴 볼 예정이고, 전체 변경 내용은 React 19 업그레이드 가이드 문서나 릴리즈 노트를 참고해주세요. 변경점문자열 re..
2024.05.05
-
classname으로 스타일 간결하게 관리하기
React에서 CSS in JS를 사용하지 않으면, 다양한 스타일을 적용하기 위해 한 요소에 여러 클래스 네임들을 적용하게 되곤 합니다. 이렇게 여러 클래스 네임들이 중첩되면 보기 어려워지는 경우가 많아지는데, 이럴때 classnames 라이브러리를 사용하면 요소에 클래스 네임들을 간결하게 관리할 수 있는 라이브러리입니다. 설치 // npm을 사용한다면, npm install classnames // yarn을 사용한다면, yarn add classnames 먼저 사용하는 패키지 매니저를 통해 classnames 라이브러리를 설치합니다. 적용 이제 적용해볼텐데, 아래와 같은 상태의 리액트 컴포넌트가 있다고 가정해보겠습니다. import * as styles form './style.css.ts'; exp..
2024.03.24