분류 전체보기60 HTTP 쿠키와 보안 그리고 CSRF 이 글에서는 백엔드 개발자 입장에서 쿠키를 사용하기 위해 알아야 하는 기초적인 지식을 다뤘습니다. 쿠키란 무엇인가 쿠키란 웹 사이트가 사용자의 웹 브라우저에 저장하는 작은 데이터 조각이다. 사용자가 사이트를 방문할 때마다 웹 서버로 전송되어 사용자의 이전 활동, 로그인 상태 등을 기억하게 해준다. 쿠키의 주요 목적은 웹 상에서 사용자의 상태를 유지하는 것이다. 왜 상태를 유지해야 할까? 웹 사이트가 데이터를 주고받는 HTTP 통신은 Stateless 프로토콜이다. 각 요청은 독립적이고 서로 상태를 공유하지 않는다. 이러한 특성은 설계를 단순화 시키지만 클라이언트의 이전 요청을 기억하지 않기에, 사용자의 상태를 유지하기 위한 추가적인 메커니즘이 필요하게 된다. 이 상태 유지를 돕는게 쿠키이다. 쿠키는 st.. 2024. 2. 18. JWT 겉핥기 회사에서 마주치게 되는 기술들을 가볍게 익히고 조금씩 깊이 들어가는 순으로 공부해보려 한다. 이 글에서는 왜 쓰는지, 어떤 장단점이 있는지보다는 어떻게 쓰는지에 초점을 맞춰 글을 작성한다. JWT란? JSON Web Token의 약자로, 정보를 안전하게 전송하기 위한 토큰 기반 인증 및 권한 부여 개방형 표준(RFC 7519)이다. 이름에서 알 수 있듯, JSON 형태로 이루어진 토큰이다. 종종 JWT 토큰이라고 읽기도 하는데 올바른 표현은 아니다. (JSON Web Token Token이라는 의미가 됨) 구성 JWT는 헤더(Header), 페이로드(Payload), 서명(Signature) 세 가지 부분으로 구성된다. 세 부분을 하나로 이어 하나의 문자열을 만든다. 최종 형태는 xxx.yyy.zzz 형.. 2024. 2. 4. Spring Boot Cache 사용하기 사전 준비 starter를 사용하여 프로젝트를 생성할 때 Spring Cache Abstraction을 추가해준다. build.gradle에 아래 의존성이 추가된다. implementation 'org.springframework.boot:spring-boot-starter-cache' 사용 방법 사용 방법은 굉장히 간편하다. 캐시를 활성화하기 위해 @EnableCaching 어노테이션을 추가한 후, 캐시를 사용하고싶은 메서드 위에 @Cacheable 어노테이션을 추가해주면 된다. @EnableCaching @Configuration public class CacheConfig { } @RequiredArgsConstructor @Service public class BookService { privat.. 2023. 12. 10. 코틀린 시작하기 코틀린 기초 문법에 대해 간단히 정리하고 넘어가고자 한다. 필자는 자바 개발자이며 코틀린을 다뤄보지 않은 자바 개발자의 시점에서 작성하는 글임을 밝힌다. 글은 기억보관용으로 두서없이 작성하였다. 코틀린 프로젝트 생성하기 Intellij로 Java 프로젝트 생성하듯 생성하면 된다. 편의를 위해 스프링 이니셜라이저를 사용했고, 다른 의존성을 추가하지 않았다. gradle-kotlin을 선택하면 build.gradle.kotlin 파일이 생성된다. 코틀린 파일 생성하기 폴더 우클릭 - New - kotlin을 선택하면 코틀린 파일을 생성할 수 있다. Class / File / Interface / Data class / Enum class 등의 분류로 선택지가 나온다. 코틀린의 경우 Class가 아니어도 파일.. 2023. 6. 18. 글또 백엔드 + 인프라 빌리지 반상회 발표자 속마음 후기 글의 내용은 생각날때마다 추가할 계획입니다 🙂 Intro.. 나는 2023년도 글또 8기 백엔드 + 인프라 빌리지 반상회에 발표자로 참여했다. 발표를 망설이는 당신 또는 내가 이 글을 읽기를바라며 발표자도 똑같은 사람이라고 알려주고 싶었다. 언젠간 익숙해질지 몰라도 기회 앞에서 망설이는 당신처럼 떨리고 도망치고싶고 그렇다. 차이점은 딱 한 발 더 나서서 발표 지원이라는 행동을 수행했을 뿐이다. 이 감정이 식기 전에 회고를 작성해본다. 내용은 역시 격식없이 시간 순서에 따라, 솔직한 감정을 담아 작성하였다. 나의 발표 경험에 대해 알리자면 이렇다. 스터디에서 종종 발표(10명 이하, 온라인) 회사 팀 내에서 종종 발표(5명 이하, 오프라인) 2021 유스콘 발표 (60~80명 규모, 온라인) 이번 글또 반.. 2023. 5. 21. Real MySQL - 8장 인덱스 정리 - 1 사전 지식 쿼리 튜닝 랜덤 IO를 줄이는 것이 목표 꼭 필요한 데이터만 읽도록 쿼리를 개선하는 것을 의미한다. 예) index 걸린 컬럼만 읽는다던가 (커버링 인덱스) 인덱스 풀스캔 대신 테이블 풀 스캔 사용 순차 I/O 로 테이블을 다 읽는다. 그래서 테이블 풀스캔이 더 빠를 때도 있다. 데이터 저장 매체(디스크)는 컴퓨터에서 가장 느린 부분이다. 따라서 DB 성능 튜닝은 어떻게 Disk I/O를 줄이느냐가 관건인 경우가 많다. 디스크 접근 방식은 랜덤 IO와 순차 IO가 있다. 랜덤 IO vs 순차 IO 랜덤 IO 하드 디스크 드라이브의 플래터(원판)을 돌려서 읽어야 할 데이터가 저장된 위치로 디스크 헤더를 이동시킨 다음 데이터를 읽는 것을 의미 순차 IO 작업 과정은 동일함 다음 읽을 데이터가 바로.. 2023. 5. 7. 나의 첫 페어 프로그래밍 회고 글은 의식의 흐름대로 작성하였다. 들어가기 전.. 우아한유스방 세 번째 과제로 페어프로그래밍을 진행했다. 페어 프로그래밍을 진지하게 해본건 처음이라 느낀점과 회고를 글로 남겨보고자 한다. 우아한유스방은 클린 코드와 페어 프로그래밍, 이력서 작성, 모의 면접과 상호 피드백 등을 경험하는 멘토링 과정이다. 미션을 수행한 후 참여자간의 상호 피드백을 수행하는 방식으로 과정이 진행된다. 세 번째 과제는 페어프로그래밍을 통한 Wordle 게임 개발이었다. 개인적으로 과제를 진행하기 전에, 이 과제를 통해서 무엇을 느끼기를 바랄지 추측해보고, 나는 어떤 경험을 하고 싶은지 고민하는 시간을 갖는다. 이번 과제의 목적은 라이브로 상호 피드백을 해보는 경험을 해보는 것이 목적이었던 것 같다. 페어 프로그래밍이 말로는 많.. 2023. 4. 5. Redis의 자료 구조 - Strings, Lists, Hashes, Sorted sets 들어가기 전.. 이 글은 Redis 공식 문서와 redisGate, 그리고 ChatGPT 답변을 참고하여 작성했습니다. 실습 환경 구성 Redis 서버는 Docker Redis를, 클라이언트는 DataGrip(유료)을 사용했습니다. 다른 클라이언트로는 직접 CLI 환경에서 명령어를 사용하거나, (Mac의 경우) Redis GUI 클라이언트인 Medis 2를 App Store에서 다운로드하여 사용하는 방법이 있습니다. Redis Container 실행하기 docker run -d -p 6379:6379 --name redis redis Strings 가장 기본적인 Redis 데이터 유형. 키-밸류 형태로 데이터를 저장하며 캐싱, 카운터, 비트연산 등의 용도로 사용 성능은 대부분 O(1)이나 SUBSTR, .. 2023. 3. 26. INFCON 2022 - 실리콘밸리로떠나는 비전공자 개발자의 지난 4년 회고 (좋았던 선택 vs 후회되는 선택) 주제 4년간의 경험과 선택들. 대단한 사람이 대단히 앞서나간 이야기가 아닌, 평범한 사람이 약간 먼저 경험한 이야기. 발표자: pixelic 한정수 체육전공 → 무역사업 경험, 진로변경 → 대학 졸, 회사 취업/퇴사 → 온라인 무역사업, 결혼 → 국비, 개발자 취업 개발자로 취업한 과정? → 강의보셈. 오늘은 이후의 이야기. 블로그 보면 회고 글을 통해서 자세히 알 수 있음. 1년차: 나무가 자랄 수 없는 콘크리트 바닥 극 초기 스타트업, 백엔드 개발자 경험한 것들 개발자가 되었다는것만으로도 기뻤음. 원래 받던 절반의 연봉. 이상한 최종 과제 베트남 P2P 대출 시장을 조사해서 보고서 제출해라. 입사 전부터 이상한 느낌 일을 하지 않는 CTO 업부시간 내내 놀았음. CTO왈: 노는것처럼 보이겠지만 머릿속.. 2022. 10. 2. 이전 1 2 3 4 5 ··· 7 다음