BLEX Logo

개발자를 위한 블로그 플랫폼

개발자들이 모여 지식과 경험을 공유하는 공간입니다

쉐도우 돔을 스타일링 하는 방법

쉐도우 돔을 스타일링 하는 방법

14분

HTML은 모두 DOM으로 변환된다. DOM은 자바스크립트로 엑세스하고 CSS로 스타일링 할 수 있다. Shadow DOM은 요소 내부에 Shadow DOM 이라는 자체 DOM을 생성할 수 있다. 웹 사이트의 소스를 보다가 위와 같은 것을 발견한다면 그것이 쉐도우 돔이 적용된 것이다. Shadow DOM을 사용하는 이유? 페이지의 다른 자바스크립트나 CSS로 부터 컴포넌트를 보호 컴포넌트에 대한 …

스크롤을 항상 최하단으로 유지하는 방법

4분

팀 프로젝트 진행 중 채팅 봇 개발을 위해 채팅창을 퍼블리싱 하고 있었는데 채팅이 많아져 스크롤이 생겼을 때 항상 최신의 채팅 내역을 보여주기 위해 채팅창의 최하단을 항상 보여주고 싶어서 이것저것 알아봤는데 내가 떠올리지 못했던 방향으로 해결 하게 되어 포스팅을 하게됐다. 만든 채팅창 모습 import React, { useState, useEffect, useRef } from …

Spring Boot의 구조

2분

백엔드에서 중요한 개념 중 하나인 DTO는 계층간 데이터를 전달하기 위해 사용되는 객체이다. 처음에 이 DTO에 대해 공부할 때 저 계층이라는 것이 프론트엔드 - 백엔드 - DB의 계층을 말하는 것인 줄 알았는데 아니었다. 정확히는 Spring Boot의 구성 요소인 프레젠테이션 계층, 비즈니스 계층, 퍼시스텀스 계층의 3계층을 의미하는 것이었고 그것에 대해서 좀 심도있게 …

Spring Boot의 디렉터리 구조

4분

몇 번의 프로젝트를 진행하면서 디렉터리 구조는 항상 후반부에 제 발목을 잡았습니다. 치밀하게 계획을 해서 프로젝트에 돌입해도 끝에는 코드가 뒤죽박죽 섞여 정리가 안되는 현상이 반복이 되어서 항상 고민이었는데 이번 프로젝트의 백엔드로 선정한 Spring Boot는 MVC 패턴이라는 정해진 구조 패턴이 있어 이번에는 이를 적극 활용하여 깔끔하게 프로젝트를 끝내는 것을 목표로 잡았습니다. MVC …

8.14 개발 일지 [YOUR.LOL 제작기]

0분

어제 정상적으로 데이터 안받아와진다는 유저 오늘은 또 잘 됨 ㅋㅋ 개발 일지 AddMatch 컴포넌트를 누를 시 매치 데이터를 추가적으로 받아와 상태 업데이트를 통해 매치 정보를 추가적으로 요청 할 수 있도록 구현 여러 함수에 기능적인 부분 설명 주석 작성 (앞으로 계속해서 추가해나갈 예정) 주절주절일단 오픈 api로 구현할 수 있는 모든 것은 …

그냥 안됐고 이젠 그냥 됨 [YOUR.LOL 제작기]

2분

받은 피해량과 가한 피해량 막대 그래프를 추가했다. 매치ID를 이용한 매치 정보 요청 API를 백엔드로 옮겼고 클라이언트는 react-query로 리펙토링 했다. 왜정말 잘 되다가 갑자기 안됐다. 중요한 것은 왜 안됐었는지 아직도 모르겠다는 것이었다. 지금 YOUR.LOL의 전적 검색 구조는 여러번의 API 요청을 통해 ZUSTAND 전역 상태를 업데이트를 해가며 일종의 트리거가 되는 상태들의 변화로 …

08.12 개발 일지 + RIOT DATA DRAGON 사용법 [YOUR.LOL 제작기]

2분

드디어 전적 검색 데이터를 다 정리해서 적용하고 그에 맞게 퍼블리싱을 수정했다. 앞으로 할 것 도넛 차트를 이용해보고 싶어 일단 저렇게 구현은 해놨는데 뭔가 휑하고 양질의 정보가 아닌 느낌이 든다. 개선 방향 고민해보기 +버튼 누를시 추가 전적 로드 로딩시 로딩중임을 명시할 수 있는 div 디자인 해보기 로그인 구현 (spring boot + …

MATCH DATA 활용하기 [YOUR.LOL 제작기]

0분

전적 검색의 핵심인 매치 정보를 요청하면 저런 형식의 데이터 객체가 10개가 온다. (5vs5 게임이므로) 좀 적어 보일 수 있는데 원래는 8만 글자가 넘는 데이터가 오는데 내가 필요한 것만 추려서 보기 좋게 세팅해뒀다. 이제 저 10개의 데이터 객체 중 내가 검색한 유저가 누구인지 가려내고 그 유저의 데이터를 중심으로 ui를 구성해나가면 될 …

08.07 개발 일지 [YOUR.LOL 제작기]

0분

전적 검색 페이지 ui를 개편했다. 로컬 상 이라서 그런 것인지는 모르겠지만 다수의 api를 순차적으로 요청하는데 렌더링 속도가 그렇게 늦다는 느낌은 받지 못해서 3-4개의 api를 추가적으로 요청하여 종합적으로는 체이닝은 5개정도 병렬 처리는 2-3개 정도 더 구성해 볼 예정이다. 주절주절솔직히 오늘은 집중이 좀 안돼서 리엑트 + typescript 관련 책을 하나 사서 읽었다. …

의존성 체이닝(구현 편) [YOUR.LOL 제작기]

3분

React-Query의 Query Key 의존성을 이용한 의존성 체이닝 const { data: account, error: accountError, isLoading: isAccountLoading, }=useQuery<RiotAccount, Error>({ queryKey: ["riotAccount", gameName, tagLine], queryFn: ()=> fetchRiotAccount(gameName, tagLine), //gameName, tagLine의 의존성 enabled: !!gameName && !!tagLine, }); // 1번 요청 const { data: accountDetail, error: accountDetailError, isLoading: isAccountDetailLoading, }=useQuery<RiotAccount, …

비동기의 동기화 (계획편) [YOUR.LOL 제작기]

3분

React는 사용자 인터페이스를 구축하는 라이브러리로서, 사용자 경험을 향상시키기 위해 비동기 작업을 필수적으로 처리해야 한다. 비동기 작업은 데이터 페칭, 사용자 입력 처리, 서버와의 통신 등 다양한 측면에서 핵심적인 역할을 한다. 근데 이런 비동기 작업에도 단점이 존재하는데 서로에게 의존성을 가지게 되면서 복잡성이 올라가고 그로 인해 상태 관리가 어려워져 그로 인해 발생하는 오류 …

08.01 개발 일지 [YOUR.LOL 제작기]

1분

메인 페이지 퍼블리싱 완료 전체를 담기 위해 배율 조정을 했다(50%) 실제로는 더 크다. 앞으로 추가 할 것은 서비스 로고 작업을 할 건데 그게 저 가운데 YOUR.LOL 부분을 대체 할 것이고 배경 사진도 lol에 맞는 동적인 이미지를 추가 할 계획이다. riot api 활용 계획전적 검색 페이지에 필요한 데이터와 그 순서를 정리해봤다. …

구조 분해 할당과 React-Query [YOUR.LOL 제작기]

3분

java, c ++ 같은 엄격한 언어들을 다루다가 javascript로 넘어왔을때 가장 이질적이었던 문법이 바로 구조 분해 할당이다. const array=[1, 2, 3]; const [a, b, c]=array; console.log(a, b, c); // 1 2 3 사실 이런식으로 할당하는 상상을 안해본 것도 아니고 논리적으로 이해가 안가는 것도 아닌데 막상 진짜 된다고 …

RIOT ID를 가져오는 방법 [YOUR.LOL 제작기]

1분

Riot IDRiot은 2023년 10월부터 게임 내 닉네임을 없애고 자사 게임 내에서 공통으로 사용하는 Riot ID를 채택했다. 형식은 gameName#tag 의 방식이며 오늘 하루를 허비하게 만든 장본인이다. 원래는 어땠는데 ?리더보드를 만들기 위해 상위 랭커들을 요청했다고 가정하면 현재는 이렇게 데이터가 도착한다. 원래는 저기에 summonerName이라는 필드가 있었고 그게 닉네임 이었어서 요청 1번에 데이터 전처리만 …

07.29 개발 일지 [YOUR.LOL 제작기]

0분

전체적 색상 푸른 계열로 변경 즐겨찾기 기능을 선수 순위, 팀 순위를 보여주는 div로 변경 json 서버를 제작하여 next 내장 라우팅으로 api 요청 구현 (다음 경기 일정 동적 생성) 주절주절 어제 업로드 하고 귀가 한 줄 알았는데 아니었어서 오늘이나마 업로드 했습니다.(오늘것도 따로 업로드 예정) 라이엇은 api를 따로 신청을 받아서 승인을 내주는데 …

[7월 회고] 자기 객관화

5분

선 요약 50여 곳 지원중 서류 2곳 합격 웹 개발 전반적으로 실력이 상향평준화 된 것을 체감하고 상용화 할 수 있는 수준의 프로젝트 경험이 필요함을 느낌 백엔드 개발자로의 전향 이번 프로젝트에 spring boot 까지 접목 시켜서 프론트, 백 가리지 않고 취업 준비 예정 1차 북벌카카오 map SDK를 이용한 프로젝트로 이번 취업 …

종목 변경합니다. [YOUR.LOL제작기]

3분

API 정리글 작성중이었던 것 캡처본만 봐도 화가 치밀어 오른다. 선 요약pubg api document가 너무 불친절하다. 어떤 점이 불친절하냐면 seasonId라는 파라미터를 요구를 api가 있는데 example이 없어 직접 다른 api에서 필요한 데이터를 찾아다가 넣어야한다. 그래서 모든 api를 순서대로 차근차근 따라가면서 제공 되는 데이터 유형을 파악하고 거기서 파악한 데이터들을 다음 순서의 api에 파라미터로 …

07.25 개발 일지 [YOUR.PUBG 제작기]

7분

NextAuth로 로그인 구현하기여러 로그인 방식을 지원해주는 NextAuth를 이용하여 카카오, 페이스북 소셜로그인과 일반 로그인을 구현해보았다. NextAuth가 지원하는 로그인 방식을 Provider 라고 한다. 카카오 로그인 방식은 KakaoProvider 이런식으로 작명돼 있고 일반 로그인은 Credential Provider라는 이름으로 기능이 제공되고 있다. CredentialsProvider({ name: "Credentials", credentials: { // 이 부분이 로그인 폼에 들어갈 내용. username: { …

07.24 개발 일지 [YOUR.PUBG 제작기]

2분

Githubhttps://github.com/yoyoyoun18/your-pubg 오늘 한 일 전체 퍼블리싱 완료하기 (o) 소셜 로그인 구현하기 (x) Jest 찍먹 (x) 내일 할 일 소셜 로그인 구현하기 Jest 찍먹 PUBG api 실습 일일 회고 커밋을 자주 해주려고 노력하는데 코딩을 하다보면 까맣게 잊어버리고 한꺼번에 커밋하는 경우가 많았다. 오늘도 그런 실수를 범하고 한꺼번에 커밋을 했는데 문득 내가 git …

07.23 개발 일지 [YOUR.PUBG 제작기]

1분

디렉터리 구조next.js는 폴더 단위로 라우팅되는 파일 시스템 라우팅을 지원한다. 따라서 디렉터리 구조가 굉장히 중요해서 본격적으로 개발에 들어가기 전에 디렉터리 구조를 작성해봤다. 오늘 한 일 환경 세팅 메인 페이지 퍼블리싱 내일 할 일 전체 퍼블리싱 완료하기 소셜 로그인 구현하기 Jest 찍먹 일일 회고 진짜 상용화 할 수 있는 서비스를 만들자는 생각으로 …

NEXT.js 프로젝트 계획서 [배틀그라운드 전적 검색 사이트 제작기]

1분

구인 공고들을 보면 볼수록 Next.js에 대한 수요가 거진 80퍼센트 이상인 것으로 보여 현재 내가 가진 포트폴리오로는 기업의 우대사항을 만족 할 수 없을 것 같아 Next.js 프로젝트를 진행하기로 하였다. 주제배틀그라운드 전적 검색 및 패치노트 서비스 Tech Stack Next.js Express.js Tailwind css Redux Toolkit Mongo DB Docker EC2 Vercel(?) Tanstack Query 프로젝트 …

프로젝트 회고 [지도 검색 서비스 제작기]

7분

프로젝트 개요프로젝트 기간: 2024.05.22 ~ 2024.07.09 프로젝트 목표: 외부 라이브러리 사용해보기 개발부터 배포까지의 풀 스택 개발 경험해보기 사용자 경험 개선을 위한 성능 향상 고민 프로젝트 배경 및 목적내가 가장 많이 사용하는 서비스가 뭔지를 고민해봤습니다. 이번 프로젝트의 목표가 단순한 기능 구현이 아닌 사용자 경험 개선까지 고려하여 프로젝트의 완성도를 높이는 것에 있기 …

2024 3회 정보처리기사 필기 합격 후기

3분

선 요약2020년 졸 4년제 전공자 2020-2022 cbt 기출 1바퀴정도 돌리고 80점으로 합격했습니다. 수험표 없어도됨. 수험번호 몰라도 됨. 사진 6개월 이내 아니어도 됨. 시험용 연습장 나눠줌. 공부 방법cbt를 위주로 보는데 문제를 푸는게 아니라 정답보기를 눌러놓고 문제와 해설을 보면서 공부했습니다. 오래되긴 했지만 그래도 전공자라 눈에 익었던 단어가 많아 이런 과정으로 시작하는게 가능했던 …

React Suspense에 대해서 알아보자

React Suspense에 대해서 알아보자

7분

React Suspense는 비동기 작업 완료까지 컴포넌트 렌더링을 잠시 멈추고, 로딩 상태를 보여줍니다. Suspense 컴포넌트는 fallback 속성을 사용해 대기 UI를 정의하며, React.lazy로 동적 로딩을 지원합니다. API fetch와 메모리 캐싱 기법을 통해 비동기 데이터 관리를 효율화합니다.