티스토리

무한루프
검색하기
블로그 홈

블로그 홈

무한루프

coding-study00.tistory.com/m
신고

끝없이 학습하고 기록하는 개발 블로그

구독자
4
방명록 방문하기
구독하기

주요 글 목록

  • [Expo]Firebase 연동 및 Google 로그인 구현 과정 Firebase를 활용한 프로젝트에서 인증 시스템을 구현하는 과정은 몇 가지 단계로 나눌 수 있습니다. 특히 에뮬레이터를 사용하여 개발 비용 없이 테스트 환경을 구축하는 것은 중요한 접근 방식입니다.1. Firebase 초기화 설정Firebase 서비스를 사용하기 위한 초기화 설정은 다음과 같이 구현했습니다import {getApp, initializeApp} from '@react-native-firebase/app';import { getAuth, connectAuthEmulator } from '@react-native-firebase/auth';import { getFirestore, connectFirestoreEmulator } from '@react-native-firebase/firesto.. 공감수 0 댓글수 0 2025. 4. 20.
  • React + Firebase에서 로그인, Google OAuth 인증 구현하기 안녕하세요! 오늘은 React 애플리케이션에서 Firebase를 활용하여 Google OAuth 로그인을 구현하는 방법을 단계별로 알아보겠습니다. 로컬 개발 환경에서 Firebase 에뮬레이터를 사용하여 실제 프로덕션 환경에 영향을 주지 않고도 테스트할 수 있는 방법까지 자세히 설명하겠습니다.시작하기 전에이 튜토리얼은 다음 환경을 기준으로 작성되었습니다:Node.js (v14 이상)npm 또는 yarn 패키지 매니저기본적인 React와 JavaScript 지식1. React 프로젝트 생성하기우선 Create React App을 사용하여 새 프로젝트를 생성합니다:npx create-react-app rebrain-appcd rebrain-app2. Firebase 및 필요한 패키지 설치하기프로젝트에 Fir.. 공감수 2 댓글수 1 2025. 4. 18.
  • [Cloud Canvas] 클라우드 리소스 파싱의 참조 처리 성능 최적화하기 Ncloud 리소스를 Terraform으로 변환하는 과정에서 리소스 참조 로직의 문제점을 발견하고, 이를 개선하기 위해 참조 캐싱을 적용한 리팩토링 과정을 공유하고자 합니다.문제 발견Terraform 변환 작업 중 대규모 리소스를 처리할 때 성능 저하가 발생하는 문제를 발견했습니다. 원인을 분석해보니 리소스 간 참조를 처리하는 로직에 비효율이 있었습니다.// 기존 코드export const replaceReferences = ( properties: { [key: string]: any }, resourceNameMap: ReferenceMap,): { [key: string]: any } => { const result = { ...properties }; // 얕은 복사로 시작 .. 공감수 0 댓글수 0 2025. 3. 7.
  • Real MySQL 9장 어떤 DBMS든 쿼리의 실행 계획을 수립하는 옵티마이저는 가장 복잡한 부분으로 알려져 있고, 옵티마이저가 만들어 내는 실행 계획을 이해하는 것 또한 상당히 어려운 부분입니다. 하지만 실행 계획을 이해할 수 있어야 실행 계획의 불합리한 부분을 찾아내고, 더 최적화된 방법으로 실행 계획을 수립하도록 유도할 수 있습니다.쿼리 실행 절차MySQL 서버에서 쿼리가 실행 되는 과정은 아래와 같습니다.사용자로부터 요청된 SQL 문장을 잘게 쪼개서 MySQL 서버가 이해 가능한 수준으로 분리(파스 트리) 합니다.SQL의 파싱 정보(파스 트리)를 확인하면서 어떤 테이블부터 읽고 어떤 인덱스를 이용해 테이블을 읽을지 선택합니다.2번에서 결정된 테이블의 읽기 순서나 선택된 인덱스를 이용해 스토리지 엔진으로부터 데이터를 가져.. 공감수 0 댓글수 0 2025. 2. 19.
  • [NCloud] NCloud SDK ES5에서 ES6+/TypeScript로의 마이그레이션 안녕하세요! 오늘은 네이버 부스트캠프에서 프로젝트를 진행하던 도중 NCloud SDK가 ES5 버전으로 아주 옛날 버전을 사용하고 있다는 것을 알게 되어 ES6+/TypeScript로 마이그레이션하는 과정을 작성해볼려고 합니다.기존 코드는 아래 저장소에서 확인하실 수 있습니다.https://github.com/NaverCloudPlatform/ncloud-sdk-js GitHub - NaverCloudPlatform/ncloud-sdk-js: Naver Cloud Platform Client Library for nodeNaver Cloud Platform Client Library for node. Contribute to NaverCloudPlatform/ncloud-sdk-js development.. 공감수 1 댓글수 1 2025. 2. 13.
  • 누구나 알아야 할 핵심 프로토콜 라우팅 알고리즘 (Distance Vector vs Link State)네트워크에서 데이터 패킷이 목적지까지 도달하기 위해서는 최적의 경로를 찾아야 합니다. 이때 경로를 선택하는 알고리즘을 라우팅 알고리즘이라고 하고 대표적으로 Distance Vector와 Link State가 있습니다.Distance Vector 알고리즘벨만-포드 알고리즘을 기반으로 하며, 각 라우터가 자신의 이웃 라우터들로부터 받은 정보를 바탕으로 목적지까지의 거리와 방향(Vector)을 계산합니다. 작동 방식각 라우터는 자신의 라우팅 테이블을 주기적으로 이웃 라우터들과 공유합니다.테이블에는 목적지까지의 거리(홉 수)와 다음 홉(next hop) 정보가 포함됩니다.새로운 정보를 받으면 자신의 테이블을 업데이트하고, 변경사항이 있을 경.. 공감수 4 댓글수 0 2025. 2. 6.
  • HTTPS와 SSL/TLS Handshake 쉽게 이해하기 1. HTTPS가 뭔가요?1.1 HTTP vs HTTPSHTTP는 우리가 보내는 데이터가 누구나 볼 수 있는 "엽서"와 같다면, HTTPS는 "봉인된 편지"와 같아요.HTTP: 안녕하세요! (누구나 읽을 수 있음)HTTPS: [암호화된] #@$%^&* (특별한 키가 있어야 읽을 수 있음)1.2 왜 HTTPS를 사용하나요?데이터 암호화: 비밀번호나 개인정보를 안전하게 전송신원 보증: 접속한 사이트가 진짜인지 확인 가능데이터 보호: 전송 중 데이터가 변조되지 않았는지 확인2. SSL/TLS Handshake 이해하기2.1 실생활 비유: 비밀 대화를 나누는 과정🤝 SSL/TLS Handshake는 두 사람이 비밀 대화를 시작하기 전에 서로를 확인하고, 어떻게 대화할지 정하는 과정과 같아요.비유로 보는 Han.. 공감수 0 댓글수 0 2025. 1. 25.
  • HTTP 쉽게 이해하기 - 웹의 기본 통신 방식 들어가며우리가 매일 사용하는 인터넷. 네이버에 접속하고, 유튜브에서 영상을 보고, 카카오톡 웹으로 채팅을 하는 모든 과정에서 HTTP라는 것이 사용됩니다. HTTP가 뭔지 아주 쉽게 설명해드릴게요!1. HTTP가 뭔가요?택배 배송 서비스와 비슷해요!HTTP는 인터넷에서 데이터를 주고받는 방식이에요. 택배 서비스를 생각해보면 쉽게 이해할 수 있습니다.택배 보내기 = HTTP 요청(Request)보내는 사람(클라이언트)이 받는 사람(서버)에게 무언가를 요청해요예: "네이버 홈페이지 좀 보여주세요!"택배 받기 = HTTP 응답(Response)서버가 클라이언트에게 응답을 보내줘요예: "여기 네이버 홈페이지 내용이에요!"2. HTTP 요청의 종류 (HTTP 메서드)2.1 GET (가져오기)마트에서 물건을 구경하.. 공감수 6 댓글수 0 2025. 1. 25.
  • Real MySQL 8장 인덱스 데이터베이스의 디스크 읽기 방식과 인덱스 기초데이터베이스 성능에서 가장 중요한 것은 디스크 I/O를 어떻게 최소화하느냐입니다.1. 디스크 저장 매체의 특성HDD vs SSD하드 디스크 드라이브(HDD)기계식 저장 장치데이터베이스 서버의 주요 병목 지점디스크 헤더의 물리적 이동 필요랜덤 I/O 성능이 상대적으로 낮음솔리드 스테이트 드라이브(SSD)전자식 저장 장치HDD와 동일한 인터페이스 지원HDD 대비 약 1000배 빠른 속도랜덤 I/O 성능이 월등히 우수초당 트랜잭션 처리량: HDD(60개) vs SSD(436개)성능 비교구분 HDD SSD순차 I/O 우수 매우 우수랜덤 I/O 매우 느림 우수내구성 우수 제한적가격 저.. 공감수 1 댓글수 0 2025. 1. 20.
  • JPA @ElementCollection으로 레시피 데이터 모델링 개선하기 레시피 서비스를 개발하면서 가장 큰 고민 중 하나는 레시피의 이미지와 조리 단계를 어떻게 저장하고 관리할 것인가였습니다. 초기에는 JSON 문자열로 저장했지만, 이는 여러 문제를 일으켰습니다. 이번 글에서는 @ElementCollection을 활용한 데이터 모델 개선 과정과 그 효과를 공유하고자 합니다.초기 구현의 문제점처음에는 단순히 JSON 문자열로 저장했습니다@Entitypublic class Recipe { @Column(length = 4000) private String recipeImagesJson; // ["url1", "url2", ...] @Column(length = 4000) private String recipeManualsText; // "step1,step.. 공감수 0 댓글수 0 2025. 1. 17.
  • JPA 검색 쿼리 최적화로 검색 성능 개선하기 레시피 검색 서비스를 개발하면서 가장 큰 고민은 사용자들이 원하는 레시피를 얼마나 잘 찾을 수 있게 하느냐였습니다. 초기 버전에서는 단순 문자열 일치 검색만 지원했지만, 이는 여러 한계점을 가지고 있었습니다. 이번 글에서는 검색 쿼리를 어떻게 개선했고, 그 효과를 어떻게 측정했는지 공유하고자 합니다.초기 문제점처음에는 단순한 정확 일치 검색을 구현했습니다public List findByRecipeNm(String keyword) { return recipeRepository.findByRecipeNm(keyword);}이 구현의 한계점"김치찌개"를 검색하려면 정확히 "김치찌개"라고 입력해야 함대소문자를 정확히 맞춰야 함 ("Kimchi" ≠ "kimchi")연관된 결과를 찾을 수 없음 ("김치" 검.. 공감수 0 댓글수 0 2025. 1. 16.
  • UUID를 활용한 다중 이미지 업로드 시스템 개선기 레시피 공유 플랫폼을 개발하면서 가장 큰 도전 과제 중 하나는 다중 이미지 처리였습니다. 한 레시피당 여러 장의 조리과정 사진이 필요했고, 이를 효율적으로 관리해야 했습니다. 이 글에서는 이미지 업로드 시스템을 어떻게 개선했는지 공유하고자 합니다.초기 구현의 한계처음에는 단순히 하나의 이미지만 처리하는 방식으로 구현했습니다private String uploadImageToS3(MultipartFile image) throws IOException { String fileName = image.getOriginalFilename(); return amazonS3Service.uploadImage(image, fileName);} 이 구현의 문제점은원본 파일명을 그대로 사용하여 파일명 충돌 위험이.. 공감수 0 댓글수 0 2025. 1. 16.
  • 네이버 부스트캠프를 마치며(9기, 웹모바일) 오늘은 6개월간의 긴 부스트캠프 일정을 마치고 난 후기를 작성하려고 합니다. 1차 문제 해결력 테스트, 2차 문제 해결력 테스트, 챌린지 + 3차 문제 해결력 테스트 총 3번의 테스트를 거쳐 멤버십 과정에 합격했습니다. 부스트캠프 지원부스트캠프에 지원하게 된 계기에 대해 먼저 말씀드리겠습니다. 올해 4학년이 된 저는 아무것도 모르던 시절에 처음 Spring Boot를 접해본 인턴 경험 한 번과, 그 경험을 바탕으로 졸업 작품을 만들어본 경험밖에 없어서 할 줄 아는게 아무것도 없었습니다. 그래서 취업전에 목표는 부트캠프를 하나 수료하여 공부하는 법을 배우고, 인맥도 늘리는 것이었습니다. 그렇게 저는 소프트웨어 마에스트로, SSAFY, 네이버 부스트캠프, 우아한 테크 코스 등의 부트캠프 후기를 엄청 찾아 보.. 공감수 5 댓글수 0 2025. 1. 15.
  • [TypeScript] 속성 검증 라이브러리 비교 분석 목차라이브러리 개요기능 비교성능 분석사용 사례라이브러리 개요1. Zodimport { z } from "zod";const UserSchema = z.object({ id: z.string().uuid(), email: z.string().email(), age: z.number().min(0).max(120)});2. Joiimport * as Joi from 'joi';const schema = Joi.object({ username: Joi.string().min(3).max(30).required(), email: Joi.string().email().required()});3. Yupimport * as yup from 'yup';const schema = yup.object({ na.. 공감수 0 댓글수 0 2025. 1. 7.
  • [Cloud Canvas] Strategy와 Factory 패턴 적용 Ncloud 리소스를 Terraform으로 변환하는 과정에서 리소스 파싱 로직의 문제점을 발견하고, 이를 개선하기 위해 디자인 패턴을 적용한 리팩토링 과정을 공유하고자 합니다.문제 발견1. 단일 함수에 모든 로직 집중export function parseToNCloudModel(resource: any): NCloudModel { const { type, properties } = resource; switch (type.toLowerCase()) { case 'vpc': return new NCloudVPC({ ... }); case 'subnet': return new NCloudSubnet({ ... }); //.. 공감수 0 댓글수 0 2025. 1. 7.
  • [부스트캠프] 클라우드를 GUI로 설계 가능한 Cloud Canvas Cloud Canvas는 클라우드 인프라를 GUI로 손쉽게 설계하고, 이를 Terraform 코드로 자동 변환할 수 있는 도구입니다. 주요 기능은 아래와 같습니다. 🎨 직관적인 UI/UX클릭 몇 번으로 누구나 쉽게 클라우드 인프라를 설계할 수 있습니다.💻 Terraform 코드 변환설계한 인프라를 자동으로 Terraform 코드로 변환하여 사용할 수 있습니다.🤝 협업 및 재활용인프라 허브를 통해 다른 사용자들과 설계도를 공유하고 수정하며 효율적으로 협업할 수 있습니다.  다음으로 실행 화면에 대해서 보여드리겠습니다.  리소스 배치왼쪽 탭에서 원하는 리소스를 골라 배치하는 장면입니다.   리소스 속성 설정원하는 리소스를 클릭하여 속성 창에서 해당 리소스의 속성을 설정하는 장면입니다.   노드 삭제 및.. 공감수 1 댓글수 1 2024. 12. 20.
  • 웹의 3요소(HTML, CSS, JavaScript) 완벽 가이드 ## 목차1. [웹의 3요소 개요](#웹의-3요소-개요)2. [HTML: 웹의 구조](#HTML-웹의-구조)3. [CSS: 웹의 표현](#CSS-웹의-표현)4. [JavaScript: 웹의 동작](#JavaScript-웹의-동작)5. [세 요소의 상호작용](#세-요소의-상호작용)## 웹의 3요소 개요웹 페이지는 크게 세 가지 핵심 요소로 구성됩니다:- HTML: 구조- CSS: 디자인- JavaScript: 동작이는 마치 인체의 뼈대, 피부, 근육과 같은 역할을 합니다.## HTML: 웹의 구조HTML(HyperText Markup Language)은 웹 페이지의 기본 구조를 정의합니다.### 기본 예제```html    안녕하세요    이것은 단락입니다.            목록 항목 1        .. 공감수 0 댓글수 0 2024. 12. 15.
  • 모델 설계의 중요성 목차모델 설계의 시작인터페이스 설계구현과 이점실전 적용 사례얻은 교훈모델 설계의 시작테라폼 코드 분석실제 테라폼 코드를 분석하면서 모델 설계를 시작했습니다:resource "ncloud_server" "main" { subnet_no = ncloud_subnet.main.id name = "my-server" server_image_number = "25624115" server_spec_code = "SPEC-CODE" login_key_name = ncloud_login_key.key.key_name}요구사항 도출코드 분석을 통해 다음 요구사항을 도출했습니다:필수 속성 관리subnet_no, server_image_number, server_spec_code는 필수누락 시 .. 공감수 1 댓글수 1 2024. 12. 7.
  • 실전 클린 코드: 원칙부터 리팩토링까지 목차클린 코드의 정의네이밍 컨벤션함수 설계주석 작성코드 구조화객체와 자료구조오류 처리리팩토링 기법테스트 코드클린 코드의 정의클린 코드란 단순히 "작동하는 코드"가 아닌, 다음과 같은 특성을 가진 코드를 의미합니다:가독성이 높은명확한 의도를 가진유지보수가 용이한테스트가 가능한중복이 없는클린 코드의 중요성// Bad Codepublic List getThem() { List list1 = new ArrayList(); for (int[] x : theList) { if (x[0] == 4) list1.add(x); } return list1;}// Clean Codepublic List getFlaggedCells() { List flaggedCells = new Ar.. 공감수 3 댓글수 0 2024. 11. 25.
  • 테라폼으로 NCP 서버 인프라 구축하기 목차프로젝트 구조초기 설정네트워크 구성서버 구성실행 방법주의사항프로젝트 구조project/├── provider.tf # NCP 프로바이더 설정├── variables.tf # 변수 정의├── terraform.tfvars # 실제 변수값├── vpc.tf # VPC 및 서브넷 설정├── security.tf # 보안 설정├── server.tf # 서버 설정└── outputs.tf # 출력 설정초기 설정프로바이더 설정 (provider.tf)terraform { required_providers { ncloud = { source = "NaverCloudPlatform/ncloud" } } required_versio.. 공감수 0 댓글수 0 2024. 11. 19.
  • MySQL 인덱스 완벽 가이드: 성능 최적화의 핵심 목차인덱스란?인덱스의 종류인덱스 동작 원리인덱스 설계 전략실전 예제성능 분석주의사항인덱스란?인덱스는 데이터베이스 테이블의 검색 성능을 향상시키기 위한 자료구조입니다. 책의 목차나 색인과 같이, 데이터를 빠르게 찾을 수 있도록 도와줍니다.인덱스가 필요한 이유-- 인덱스가 없는 경우: 전체 테이블 스캔SELECT * FROM users WHERE email = 'user@example.com';-- 인덱스가 있는 경우: 인덱스를 통한 빠른 검색CREATE INDEX idx_email ON users(email);SELECT * FROM users WHERE email = 'user@example.com';인덱스의 종류1. 클러스터형 인덱스 (Clustered Index)테이블당 1개만 생성 가능물리적으로 데.. 공감수 2 댓글수 1 2024. 11. 17.
  • [OAuth] 회사 방문증으로 이해하는 인증 원리 목차OAuth란?OAuth vs 로그인주요 구성 요소OAuth 동작 과정구현 시 고려사항보안 주의사항OAuth란?OAuth는 사용자의 데이터에 대한 접근 권한을 제3자 애플리케이션에게 위임하는 표준 프로토콜입니다. 2006년 트위터와 Ma.gnolia가 주도적으로 개발한 이후, 현재는 OAuth 2.0이 널리 사용되고 있습니다.OAuth의 필요성제3자 애플리케이션의 신뢰성 보장사용자 데이터의 안전한 공유통합된 인증 방식 제공OAuth vs 로그인회사 방문 프로세스를 통해 이해하는 OAuth와 일반 로그인의 차이:일반 로그인회사 사원이 사원증으로 출입직접적인 인증 방식전체 권한 부여OAuth방문자가 방문증으로 제한된 공간 출입중개자를 통한 인증제한된 권한 부여회사 방문 과정OAuth 인증 과정방문자가 안내.. 공감수 3 댓글수 1 2024. 11. 13.
  • 트랜잭션과 격리 수준 완벽 가이드 목차트랜잭션 기초ACID 속성트랜잭션 격리 수준격리 수준에 따른 문제점실전 예제성능과 격리 수준모범 사례트랜잭션 기초트랜잭션이란?트랜잭션은 데이터베이스의 상태를 변화시키는 하나의 논리적 작업 단위입니다. 예를 들어, 계좌 이체는 출금과 입금이라는 두 개의 작업이 하나의 트랜잭션으로 처리되어야 합니다.기본 예제-- 계좌 이체 트랜잭션START TRANSACTION;UPDATE accounts SET balance = balance - 1000 WHERE account_id = 'A';UPDATE accounts SET balance = balance + 1000 WHERE account_id = 'B';COMMIT;ACID 속성1. Atomicity (원자성)START TRANSACTION;UPDATE a.. 공감수 1 댓글수 0 2024. 11. 12.
  • TypeORM vs Prisma: Node.js ORM 심층 비교 목차개요기본 개념 비교스키마 정의 방식타입 안정성쿼리 작성 방식성능 비교실제 사용 예제장단점 분석개요TypeORM과 Prisma는 Node.js 생태계에서 가장 인기 있는 ORM(Object-Relational Mapping) 도구입니다. 각각의 특징과 차이점을 살펴보고, 프로젝트 상황에 맞는 선택을 할 수 있도록 도와드리겠습니다.기본 개념 비교TypeORM전통적인 ORM 패턴 따름Active Record 또는 Data Mapper 패턴 선택 가능데코레이터 기반의 스키마 정의JavaScript/TypeScript로 작성된 코드베이스Prisma새로운 접근 방식의 차세대 ORM독자적인 스키마 정의 언어(Prisma Schema)강력한 타입 안정성자동 생성되는 타입-세이프 클라이언트스키마 정의 방식TypeOR.. 공감수 1 댓글수 0 2024. 11. 11.
  • NestJS로 구현하는 게시판 API 실전 가이드 목차프로젝트 구조도메인 모델 설계API 엔드포인트 구현유효성 검증에러 처리테스트프로젝트 구조src/boards/├── constants/│ └── board.constants.ts # 상수 정의├── dto/│ └── create-board.dto.ts # DTO 클래스├── pipes/│ └── board-status-validation.pipe.ts # 커스텀 파이프├── board.model.ts # 도메인 모델├── boards.controller.ts # 컨트롤러├── boards.service.ts # 서비스└── boards.module.ts # 모듈도메인 모델 설계게시글 모델 정의// board.model.tsexport .. 공감수 1 댓글수 0 2024. 11. 11.
  • NestJS CLI 인식 문제 해결하기: PATH 설정 가이드 목차문제 상황원인 분석해결 방법운영체제별 추가 설정문제 해결 검증자주 발생하는 다른 문제들문제 상황NestJS CLI를 전역으로 설치했음에도 불구하고 터미널에서 nest 명령어를 인식하지 못하는 문제가 발생합니다.$ npm install -g @nestjs/cli$ nest new my-projectzsh: command not found: nest원인 분석이 문제는 주로 npm의 전역 설치 경로가 시스템의 PATH 환경변수에 제대로 등록되지 않아서 발생합니다. npm이 패키지를 전역으로 설치하는 위치를 시스템이 인식하지 못하는 것입니다.npm 전역 설치 경로 확인먼저 npm이 패키지를 전역으로 설치하는 위치를 확인해야 합니다:$ npm config get prefix/usr/local # 또는 다른 .. 공감수 0 댓글수 1 2024. 11. 10.
  • NestJS 시작하기: 실전 입문 가이드 NestJS 시작하기: 실전 입문 가이드목차NestJS란?개발 환경 설정프로젝트 구조핵심 개념 이해하기실전 예제: REST API 만들기테스트 작성하기실무 적용 팁NestJS란?NestJS는 Node.js의 효율적인 서버 애플리케이션 구축을 위한 프레임워크입니다. Angular에서 영감을 받아 TypeScript를 기본으로 사용하며, OOP(객체지향 프로그래밍), FP(함수형 프로그래밍), FRP(함수형 반응형 프로그래밍)의 요소들을 포함하고 있습니다.주요 특징TypeScript 기반의 타입 안정성의존성 주입을 통한 느슨한 결합모듈화된 아키텍처Express/Fastify 호환성풍부한 CLI 도구 지원개발 환경 설정필수 도구 설치# Node.js 설치 (14.x 이상)$ node --versionv16.x.. 공감수 5 댓글수 2 2024. 11. 9.
  • NCloud SDK ES6/TypeScript로 마이그레이션 하기 네이버 부스트캠프에서 클라우드 관련 프로젝트를 진행하기로 했는데, API를 사용하려고 SDK를 찾아보니 JavaScript ES5버전으로 작성되어 있어 코드를 한눈에 알아보기 힘들었습니다. 그래서 NCloud SDK를 현대적인 JavaScript 생태계에 맞춰 ES5에서 ES6/TypeScript로 마이그레이션한 과정을 설명해보려고 합니다.  https://github.com/NaverCloudPlatform/ncloud-sdk-js GitHub - NaverCloudPlatform/ncloud-sdk-js: Naver Cloud Platform Client Library for nodeNaver Cloud Platform Client Library for node. Contribute to Naver.. 공감수 1 댓글수 0 2024. 11. 3.
  • 쿠키와 세션 저는 처음에 쿠키라는 것이 먹는 쿠키만 계속 생각나서 이해하는데 시간이 오래 걸렸습니다. 우리는 어떤 웹사이트를 사용할 때면 대부분 로그인이라는 기능을 사용합니다. 이때 로그인에 대한 편의를 제공하기 위해 자동 로그인, ID 저장 등의 기능을 제공하는 경우도 있고, 다른 페이지로 이동하더라도 로그인을 유지하는 기능이 필요합니다. 이때 사용하는 것이 쿠키라고 합니다. 한번씩 웹사이트에 들어가면 모든 쿠키 허용 또는 일부 쿠키만 허용 또는 거부 라는 선택지가 주어지는 것을 자주 보셨을 겁니다. 이 쿠키가 앞에서 설명드린 쿠키와 같은 쿠키입니다. 쿠키에 대한 간단한 개념은 이정도와 같고 쿠키가 서버와 클라이언트에서 어떻게 동작하는지에 대해 알아보겠습니다. 쿠키의 동작 과정 1. 웹 브라우저는 서버에 id, p.. 공감수 0 댓글수 0 2024. 9. 3.
  • 왜 MVC 패턴을 사용하고 있나요? 여러분들은 MVC 패턴을 왜 사용하나요? 웹 개발을 꿈꾸고 있는 분들은 MVC 패턴을 한번이라도 들어봤을 것이고 실제로 적용시켜 본 경험이 있는 사람도 많을 것입니다. 저 또한 MVC 패턴을 적용하여 프로젝트를 진행했던 경험이 있습니다. 그러면 여러분들은 `다른 패턴도 많을 건데 MVC 패턴을 사용하는 이유는  무엇인가요? 다들 MVC패턴에 열광하는 이유가 뭐죠?` 라는 질문에 답할 수 있으신가요?  네이버 부스트캠프를 진행하던 도중 저는 Spring Boot로 프로젝트를 진행해왔던 터라, node.js를 사용하여 백엔드 코드를 작성할 때에도 당연히 MVC 패턴을 적용하여 디렉토리 구조를 만들었습니다. 그런데 팀원 중 한분이 node.js에서의 장점이 있을건데 Spring Boot에서 사용하는 MVC 패.. 공감수 7 댓글수 5 2024. 8. 29.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.