본문 바로가기

전체 글116

OAuth2.1이란? OAuth2.0과 차이점부터 PKCE, JWT, Refresh Token까지 완벽 정리 OAuth2.1은 왜 등장했을까?PKCE는 왜 필수가 되었을까?Access Token과 Refresh Token은 왜 분리해서 사용할까?이번 글에서는 OAuth2.1의 등장 배경부터 실제 서비스에서 사용하는 구조까지 한 번에 정리해보겠습니다.들어가며백엔드 개발을 하다 보면 OAuth를 사용할 일이 생각보다 많습니다.대표적으로 다음과 같은 기능들이 OAuth 기반으로 동작합니다.구글 로그인카카오 로그인네이버 로그인Apple LoginGitHub Login하지만 많은 개발자가 OAuth를 단순히 "소셜 로그인 기술" 정도로만 이해하고 있습니다.실제로 OAuth는 로그인 기술이 아니라 권한 위임(Authorization) 을 위한 프로토콜입니다.OAuth2.1은 이러한 OAuth2.0의 보안 문제를 개선하기 .. 2026. 6. 19.
코틀린 5일차 – 컬렉션 심화 (List / Set / Map + 고차함수) 5일차에서는 코틀린에서 가장 많이 쓰이는 컬렉션(List, Set, Map) 과이를 강력하게 만들어주는 고차함수(map, filter, reduce 등) 를 정리한다.실무에서 스트림처럼 거의 매일 쓰게 되는 부분이다.1. 코틀린 컬렉션 기본1-1. 읽기 전용 vs 변경 가능val list = listOf(1, 2, 3) // 읽기 전용val mutableList = mutableListOf(1, 2, 3) // 변경 가능// list.add(4) // 컴파일 에러mutableList.add(4)List, Set, Map → 읽기 전용 인터페이스MutableList, MutableSet, MutableMap → 변경 가능1-2. List / Set / Map 생성val list = listOf(1.. 2026. 2. 2.
코틀린 4일차 – 클래스 / 데이터 클래스 / 상속 & 인터페이스 정리 코틀린 기초 4일차에서는 객체지향의 핵심인 클래스, 코틀린에서 매우 자주 쓰이는 데이터 클래스, 그리고 상속과 인터페이스를 정리한다.자바와 비교하면서 보면 이해가 훨씬 빠르다.1. 클래스 기본 구조1-1. 가장 기본적인 클래스class Person { var name: String = "" var age: Int = 0}사용 방법:val p = Person()p.name = "철수"p.age = 20→ 자바와 달리 new 키워드가 없다.1-2. 생성자(constructor)코틀린에서는 클래스 선언부에 생성자를 바로 작성할 수 있다.class Person(val name: String, var age: Int)val p = Person("영희", 25)println(p.name)✔ val : 읽.. 2026. 1. 29.
프리랜서 고민 Node.js · React · Next.js 로드맵 정리Java 개발자로 일정 기간 실무를 해오다 보면, 한 번쯤은 프리랜서 전향을 고민하게 된다. 나 역시 같은 고민을 하면서 시장을 조사했고, 그 결과 Node.js + React + Next.js 조합이 현재 프리랜서 웹 개발 시장에서 가장 현실적인 선택이라는 결론에 도달했다.이 글에서는 Java 개발자를 기준으로, 프리랜서 전향을 목표로 할 때 어떤 순서로 무엇을 공부하면 좋은지, 그리고 왜 그런 선택이 합리적인지를 로드맵 형태로 정리해본다.1. 왜 Java만으로는 프리랜서가 어려울까?Java는 여전히 강력한 백엔드 언어다. 특히 Spring/Spring Boot 기반의 엔터프라이즈 시스템에서는 표준처럼 사용된다. 하지만 프리랜서 시장에서는 상황이.. 2026. 1. 26.
코틀린 3일차 – 함수 / Null 안정성 / 람다 기초 정리 코틀린 학습 3일차에는 함수(Function), Null 안정성(Null Safety), 람다(Lambda) 를 중심으로 학습했다.자바와 비교했을 때 가장 큰 차이를 느낄 수 있는 부분들이라 정리하면서 이해하는 데 집중했다.1. 코틀린 함수 기본 문법코틀린에서 함수는 fun 키워드로 정의한다.fun sum(a: Int, b: Int): Int { return a + b}단일 표현식 함수함수 본문이 한 줄인 경우 중괄호와 return을 생략할 수 있다.fun sum(a: Int, b: Int): Int = a + b반환 타입 생략컴파일러가 반환 타입을 추론할 수 있으면 타입도 생략 가능하다.fun sum(a: Int, b: Int) = a + b2. 기본값 파라미터 (Default Parameter).. 2026. 1. 22.
코틀린 2일차 – 조건문/컬렉션/생성자 실습 오늘은 코틀린의 조건 분기, 컬렉션 고차 함수, 클래스 생성자를 연습했다.1. 조건문 패턴 연습if는 표현식 형태로 값 반환 가능다중 분기: when으로 switch 대체 kotlinval score = 85 val grade = when (score) { in 90..100 -> "A" in 80..89 -> "B" else -> "C" } 실수: else 누락하면 컴파일 에러2. 컬렉션 고차 함수 실습map, filter, forEach, sortedBy 실습flatMap, withIndex도 사용체이닝 & 람다 구문에 조금씩 적응 중 kotlinval items = listOf("apple", "banana", "orange") items.filter { it.startsWith("a") }... 2025. 11. 24.