[NextJS] 커스텀 에러 페이지 처리(+ 멀티 로케일 처리)
·
Programming/FrontEnd
- 이번 포스팅에서는 NextJS 의 커스텀 에러 페이지를 처리하는 방식에 대해 알아보겠습니다. - NextJS 에서는 기본적으로 제공하는 에러 페이지가 존재합니다.기본적으로 가장 흔하게 발생하는 에러인,요청한 주소에 대한 반환값이 없을 때에 대한 404 Not Found 에러와,서버측 실행 로직이 잘못되어 에러가 났다는 것을 뜻하는 500 에러입니다. 기본 NextJS 에서 404 에러가 발생하면, 위와 같이 기본 에러 페이지가 나옵니다. 제법 깔끔해서 그대로 사용해도 무방하지만 서비스에 맞는 커스텀 에러 페이지를 만드는 방법을 아래에 정리합니다. - 기본적인 에러 코드 페이지 처리는,layout.tsx 가 위치한 루트 경로에 미리 지정된 이름의 에러 페이지를 작성하기만 하면 됩니다. 두 종류이며,no..
[NextJS] 멀티 로케일 PWA(Progressive Web App) Manifest.json 처리 자동화
·
Programming/FrontEnd
- PWA(Progressive Web App) 는 웹 사이트를 마치 앱처럼 사용할 수 있게 해주는 기술입니다. 이것이 설정된 사이트는 위에서 보이는대로 앱에서 열기 버튼이 나오고,이것을 누르면, 이처럼 PWA 애플리케이션 창이 떠서 브라우저의 웹사이트가 아니라 마치 OS 의 애플리케이션처럼 사용할 수 있게 되죠.대다수의 사이트에서는 그리 필요한 기능은 아니지만, 애플리케이션처럼 띄워두고 사용하는데에 적합한 종류의 사이트라면 UX 에 좋은 옵션을 제공하는 기술이며, nextjs 에서 기본 제공해주는 기술이므로 처음부터 이를 고려하여 처리하는 것이 나쁘지 않죠. - nextJS 에서 PWA 를 사용하기 위해서는 manifest.json 파일이 필요합니다.http://localhost/manifest.j..
[NextJS] 멀티 프로필 환경 설정 처리(.env 파일, 보안 처리)
·
Programming/FrontEnd
- 이번 포스팅에서는 NextJS 에서 멀티 프로필로 환경 설정을 하는 처리 방식에 대해 알아보겠습니다.카카로 로그인을 구현할 때에 필요한 카카오 API Key, 백엔드 서버와 통신할 때 필요한 보안키, 그외 설정값을 어떤식으로 처리하는 것이 좋은지에 대해 정리합니다. (환경변수 분리의 중요성)- 백엔드 프론트엔드 할 것 없이 환경변수는 매우 중요한 정보입니다.탈취되거나 노출되면 위험한 종류의 정보도 있기에, 이를 그대로 Github 와 같은 VCS 에 올려서 누구나 접근이 가능하게 두는 것은 위험한 일이며, 같은 팀 내에서도 권한에 따라 숨겨야 하는 정보도 있죠. - 보안적 측면에서의 중요성 뿐만 아니라, 환경변수를 분리하는 것은 클린 코딩의 원칙에도 중요한 작업입니다.백엔드 서버로 요청을 보낼 때, ..
[NextJS] 다크모드 처리 방식 정리(쿠키 방식 테마 처리, 멀티플 컬러 모드 변경)
·
Programming/FrontEnd
- 이번 포스팅에서는 NextJS 에서 다크모드를 처리하는 방식에 대해 정리하겠습니다.Client Side Rendering 인 ReactJS 에서는 상태값을 클라이언트 로컬에 두는 방식으로 간단하게 처리가 가능했는데,NextJS 에서는 조금 더 고려할 사항이 있습니다. 이 과정에서 Server Side Rendering 에 대해 생각해보고,NextJS 에 적합한 테마 적용 방식과 리소스 정리 방법에 대해 알아보겠습니다. (쿠키 방식 컬러 테마 처리)- 웹 UI 분야에서 기본적인 다크모드 처리는 CSS 단에서 처리가 가능합니다.@media (prefers-color-scheme: dark) { /* 다크 모드일 때 적용할 스타일 */}@media (prefers-color-scheme: light) {..
[NextJS] 다국어 처리 + SEO 설정 정리(next-intl, 검색 엔진 최적화)
·
Programming/FrontEnd
- 이번 포스팅에서는 NextJS 를 사용하여 다국어 처리를 어떻게 하는지와 SEO(Search Engine Optimization, 검색 엔진 최적화)에 대해 알아보겠습니다.아시다시피 IT 는 물리적 공간의 제약을 넘어서는 기술이고, 국내 시장에 비해 국제시장의 규모는 굉장히 가능성이 많은 기회를 제공합니다.서비스 종류에 따라 다르긴 하지만, 언제든 다국어를 지원할 수 있게 처리를 해둔다면 추후 고생할 것 없이 이득을 볼 수 있겠죠.또한, 웹 서비스를 만드는 이유와, 특히 Server Side Rendering 프레임워크인 NextJS 를 사용하는 이유는 검색엔진이 내 사이트를 잘 파악해서 홍보하게 만드는 것이므로, NextJS 에서 검색엔진 최적화를 어떤 방식으로 처리하는지를 정리할 것입니다. (결과..
MSA 실전 적용, 인증/인가 서비스 구조 및 운용 방식 설명
·
Programming/BackEnd
- 이번 포스팅에서는 MSA(Micro Service Architecture) 에서 인증/인가 서비스를 따로 떼어내어 운용하는 방식의 장점과 그 구조, 효율적인 구성 방식에 대해 알아보겠습니다.실제 코드 구현에 대한 설명글이 아니므로 프로그래밍 언어, 프레임워크와는 무관한 이론적인 내용이 될 것입니다. (MSA 의 중요성)- 먼저 MSA 의 중요성에 대해 먼저 설명하겠습니다.제가 이 글을 쓰는 이유는, 아직 MSA 를 본격적으로 적용하지 않는 개발자들이 많음을 알고 있기 때문이며,다른 것은 아니더라도 인증/인가 서비스 정도는 MSA 로 구현한다면 정말 도움이 많이 될 것이라고 생각하기 때문입니다.고로 사용하지 않는다는 것은 해당 기술의 중요도나 장점에 대해 모르기 때문일 것이므로 기본부터 설명드리는 것입..
[ReactJS] 실시간 캠 영상 합성 (웹 클라이언트 사이드 딥러닝, ReactJS Tensorflow)
·
Programming/FrontEnd
- 이번 포스팅에서는 Zoom 과 같은 인터넷 영상 통신 서비스에서 실시간 배경 합성을 어떤식으로 구현한 것인지를 알아보겠습니다.간단히 코드만 공개드립니다. 1. ReactJS 에서 Tensorflow 를 동작 가능하게 지원해주는 라이브러리를 사용하기 위하여,생성한 ReactJS 프로젝트에서 터미널에,npm install @tensorflow/tfjs @tensorflow-models/body-pix 위 명령어를 입력하여 ReactJS 텐서플로 라이브러리를 설치하면 준비가 됩니다. 2. ReactJS 코드는 아래와 같습니다.import React, { useEffect, useRef, useState } from "react";import * as bodyPix from "@tensorflow-model..
[실용 아키텍쳐] 접속량 폭증 방지, 접속대기 처리 패턴(큐-티켓 방식, 한정 자원 N 개 요청 동시 처리 제한)
·
Programming/BackEnd
- 이번 포스팅에서는 티켓과 서버 큐를 사용하여 서버 접속량 폭증에 대한 처리를 어떻게 해야하는지를 정리하겠습니다.예를들어 유명 콘서트 예매 서비스나 강의 수강, 정부 정책에 따른 전국민 재난 지원금 서비스, 기대작 게임의 런칭시 짧은 시간 내에 굉장히 많은 인원이 몰릴 것이라 예상이 되는 상황에 흔히 대기열이라는 것이 생기고 순차적으로 인터넷 서비스를 제공하는데,이를 어떤식으로 구현하는 것인지에 대한 전체적인 아키텍쳐와 패턴에 대해 정리하고 설명할 것입니다. - 적용 기술은 아래와 같으므로 이미 알고 계시다면 바로 적용이 가능할 것입니다.1. Client-Server 구조 RestAPI2. SSE or WebSocket or Polling3. Redis4. DBMS5. 공유락 - 접속 대기 처리는 현실..
[ReactJS] SSE 클라이언트 구현(ChatGPT UI 네트워킹 설계)
·
Programming/FrontEnd
- 이번 포스팅에서는 ReactJS 를 사용하여 SSE 이벤트를 수신하는 방식을 알아보겠습니다.SSE 기술에 대한 설명은, Springboot SSE(Server Sent Event) 구현하기 포스트를 참고하세요. - SSE 에 대하여 간단히 설명하자면,application/json 형식의 단발식 요청 - 응답 네트워크 기술이 아니라,Socket 과 같이 연결식으로 데이터를 받아오는 기술인데,양방향으로 정보를 교환하는 것이 아닌, 단방향으로 서버에서 발행한 이벤트를 수신만 하는 기술을 의미합니다. ChatGPT UI 에서, 위와 같이 한번에 답을 반환하는 것이 아니라,토큰 하나씩 지속적으로 결과를 반환하는 기술을 구현한다면 서버에서 반환하는 응답을 한번에 받는 것이 아니라 계속해서 연결해 두어야 하며, ..
[Flutter] TFLite 를 사용한 모바일 환경 딥러닝 모델 실행 방법 정리(HuggingFace MobileViT 이미지 분류기)
·
Programming/FrontEnd
- 이번 포스팅에선 음성인식, 객체 탐지, 이미지 분류, 이미지 검색, OCR 등 모바일 인디바이스 환경에서 처리할 수 있는 매력적인 기능들을 구현하기 위한 첫번째 스탭으로, 모바일에 딥러닝 모델을 올려서 실행하는 방법에 대해 정리하겠습니다. 1. HuggingFace 에서 사전 학습된 모델 가져오기2. 모바일 연동용 모델 변환3. 파인 튜닝의 필요성4. 모바일 연동 샘플 위와 같은 순서로 진행하겠습니다. (허깅 페이스에서 사전 학습된 모델 가져오기)- 모바일 디바이스는 아시다시피 PC 와 달리 굉장히 제한적인 환경입니다.반대로 딥러닝은 모델 종류에 따라 일반적인 PC 에서도 사용하기 어려울 수 있는 무거운 기술이고요.먼저, 개발할 기능을 설계할 때, 해당 기술이 현 시점의 모바일 환경에서 실행 가능할지..