본문 바로가기 메뉴 바로가기

언젠가 꽃이 될 개발자

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

언젠가 꽃이 될 개발자

검색하기 폼
  • 분류 전체보기 (215) N
    • 프로그래밍 (50) N
      • 자바 (29)
      • 스프링 (4)
      • JPA (9)
      • querydsl (2)
      • html,css (0)
      • database (2)
      • Spring Security (4) N
    • 개발 (5)
    • 코딩테스트 (15)
      • 백준 자바 (14)
    • Git (3)
    • 앱개발 (1)
    • 자격증 (39)
      • 정보처리산업기사 (39)
    • 디버깅 (19)
    • 파이썬 (5)
      • 이것이 취업을 위한 코딩 테스트다 (5)
    • 독서 (8)
      • 스프링 부트와 AWS로 구현하는 웹 서비스 (2)
    • http (0)
    • 기타 (5)
    • 해커랭크 챌린지 (53)
    • 일기 (1)
    • 한줄다짐 (0)
    • cs (3)
    • 경험 (1)
    • sql (0)
  • 방명록

분류 전체보기 (215)
SSO란?

(Single Sign-On)란한 번의 로그인으로 여러 시스템 또는 서비스에 접근할 수 있도록 해주는 인증 방식이다. 사용자가 처음 한 번 로그인하면, 이후 별도의 로그인 없이 연동된 다른 서비스들도 자유롭게 이용할 수 있다.예 : Google 계정에 로그인하면 Gmail, YouTube, Google Drive 등 다양한 Google 서비스에 다시 로그인할 필요 없이 바로 접근 가능 🔁 흐름 및 동작 방식1. 사용자가 애플리케이션(A)에 접근 → 로그인 필요2. 사용자가 SSO 서버(인증 서버)에 리디렉션됨3. 사용자 인증 (아이디/비밀번호 입력)4. SSO 서버가 사용자에게 토큰 또는 세션을 발급5. 사용자 브라우저가 이 토큰으로 A에 접근 허용6. 이후 사용자가 애플리케이션 B에 접근하더라도, 이..

프로그래밍/Spring Security 2025. 5. 22. 23:00
[Spring Security] SecurityContext의 Thread-safe 전략

Spring Security를 사용하다 보면 인증된 사용자 정보를 조회할 때 SecurityContextHolder.getContext().getAuthentication()을 자주 사용한다.하지만 이 SecurityContext가 Thread-safe 하지 않기 때문에Spring Security의 내부 동작 원리를 바탕으로 알아보고 멀티스레드 환경 또는 비동기 작업시 어떻게 관리하는지 알아보자. 1. SecurityContext란?Spring Security에서 인증(Authentication) 및 권한(Authorization) 정보를 담고 있는 컨테이너간단히 말해, 로그인한 사용자의 정보를 담고 있는 Thread-local 저장소다.Authentication auth = SecurityContext..

프로그래밍/Spring Security 2025. 5. 20. 12:54
[Spring Security in Action] 인코딩, 암호화, 해싱

인코딩(Encoding)주어진 입력에 대한 모든 변환Ex) 문자열을 뒤집는 함수 X가 있을 때 x -> y를 ABCD에 적용하면 DCBA가 나온다. 암호화(Encryption)출력을 얻기 위해 입력 값과 키를 모두 지정하는 특정한 유형의 인코딩이다.키를 이용하면 나중에 누가 출력해서 입력을 얻는 함수를 호출할 수 있는지 선택할 수 있다.암호화를 함수로 나타낸 가장 간단한 형식은 다음과 같다.(x, k) -> y x : 입력값, k : 키, y : 암호화 결과 (y,k) -> x 역함수 복호화(Reverse Function Decryption)도 있음.알려진 함수에 키를 이용해 출력에서 입력을 얻을 때 사용 이때 암호화에 쓰는 키와 복호화에 쓰는 키가 같으면 일반적으로 대칭 키라고 부름. 암호화 ((x,k..

카테고리 없음 2025. 5. 20. 07:20
[Spring Security in Action] 모놀리식 아키텍처 vs 마이크로서비스 시스템

모놀리식 아키텍처- 실행 가능한 하나의 아티팩트로 모든 책임을 구현하는 애플리케이션한 애플리케이션이 모든 활용 사례를 충족한다.애플리케이션을 유지 관리하기 쉽게 만들기 위해 책임을 다른 모듈 내에서 구현할 수 있지만 런타임에 한 모듈의 논리를 다른 모듈의 논리와 분리할 수 없다. 일반적으로 확장과 배포 관리를 위한 유연성이 떨어진다. 마이크로서비스 시스템여러 실행 가능한 아티팩트에서 책임을 구현한다.동시에 실행되고 필요할 때 네트워크를 통해 서로 통신하는 여러 애플리케이션으로 구성된 시스템이다확장 유연성은 좋지만 지연 시간, 보안 문제, 네트워크 안정성, 분산 지속성, 배포 관리 등의 어려움이 있따. .

프로그래밍/Spring Security 2025. 5. 20. 07:09
[Spring Security] Spring Security 주요 아키텍처를 알아보자.

Spring Security 주요 아키텍처를 알아보자.(링크 참조 : https://docs.spring.io/spring-security/reference/servlet/authentication/architecture.html) - SpringContextHolder : 스프링 보안이 인증된 사용자에 대한 세부 정보를 저장- SecurityContext : SecurityContextHolder에서 가져오고 현재 인증된 사용자의 인증을 포함함.- Authentication : 사용자가 인증을 위해 제공한 자격 증명 또는 SecurityContext의 현재 사용자를 제공하기위해 AuthenticationManager에 입력할 수 있다. - GrantedAuthority : 인증에 대해 본인에게 부여된..

프로그래밍/Spring Security 2025. 5. 19. 06:55
[디버깅] H2에서 MySQL Dialect 설정이 더 이상 동작하지 않는 이유

📌 문제Hibernate에서 로그를 MySQL처럼 보이게 하기 위해 spring.jpa.properties.hibernate.dialect=MySQL5InnoDBDialectH2 메모리 DB에서 Syntax error in SQL statement 에러가 발생했다.예전에는 이 설정이 잘 동작했는데, 왜 지금은 안 되는 걸까?H2의 버전 변화와 Hibernate Dialect가 어떻게 작동하는지 정리해본다. Spring Boot에서 개발 중, 디버깅을 위해 SQL 로그를 MySQL처럼 출력하고 싶어서 Hibernate Dialect를 다음처럼 설정했다.spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect 그런데..

카테고리 없음 2025. 5. 16. 17:15
[이코테] 그리디 알고리즘 - 만들 수 없는 금액 코틀린 코드

fun main() { val n = 5 val coins = mutableListOf(3, 2, 1, 1, 9) coins.sort() var target = 1 for (i in 0.. target) break target += coins[i] } println("target = $target")} 처음에는 완전 탐색으로 접근해야하나? 라는 생각이 들었다.(물론 책 카테고리가 그리디 알고리즘이지만 내가 문제를 보고 제일 먼저 드는 생각은 완전 탐색이었다.)target이 1씩 증가하면서 최솟값을 찾아야겠다는 생각 때문에 근데 완전 탐색의 경우N개의 동전으로 만들 수 있는 모든 부분집합을 고려하면 부분집합 개수는 2^N 개N이 최대 1,000개면 최악의 ..

파이썬/이것이 취업을 위한 코딩 테스트다 2025. 3. 3. 05:36
[이코테] 그리디 알고리즘 - 모험가 길드 코틀린 코드

우선 필자가 처음에 작성한 틀린 코드를 공개한다. fun main() { var n = 5 val member = mutableListOf(1,2, 4,3,1) member.sort() var cnt = 0 while(n > 0) { if (member[n - 1] n n = 0 } } println("cnt = " + cnt)} 정리되지 않은 코드이기도 하고 로직자체도 억지로 끼워맞춘 느낌인데 공개하는 이유는여기서 필자가 착각한 부분이 '공포도가 높은 모험가'에게 집착했다는 것이다.'공포도가 X인 모험가는 반드시 X명 이상으로 구성한 모험가 그룹에 참야해야한다.' 는 문제를 읽고 '아..! 공포도 X가 큰 걸 ..

파이썬/이것이 취업을 위한 코딩 테스트다 2025. 3. 3. 04:40
백준 8393 합 풀이 코드

n = int(input())ans = 0for i in range(n+1): ans = ans + iprint(ans)d위와 같이 풀이하면 시간복잡도가 O(n^2)이 된다. n = int(input())ans = (int)((n*(n+1))/2)print(ans)이렇게 N까지의 합의 공식을 사용하면 시간복잡도를 O(1)로 단축할 수 있다.

코딩테스트/백준 자바 2024. 12. 16. 10:01
[에러일지] zsh: command not found 에러 해결법 🤔

필자는 Mac 운영체제를 사용중인데 쉘스크립트 사용중 다음과 같은 에러가 발생했다. 🙆🏻‍♀️ 해결방법 touch ~/.zshrc # zshrc 파일 생성 vi ~/.zshrc # vi에디터로 zshrc 파일 생성 # 파일에 다음과 같은 코드 입력 export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" 위와 같이 다음과 같이 적용하니 해결되었다. export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" ⭐️ 스스로를 위한 다짐 입사 후 정신없이 적응하고 공부하다보니 블로그를 관리할 시간이 많이 없었다. (그래도 많은 것을 공부하며 성장하고 있다..

디버깅 2022. 10. 21. 20:18
[JPA] SQL 중심적인 개발의 문제점

지금 시대는 '관계형 데이터베이스(Oracle, MySql)'을 많이 사용한다. 즉, 객체를 관계형 DB에 넣어 관리해야하는데, 여기서 우리는 SQL 굴레에 빠지게 된다. 🤔 그럼 SQL의 문제점은 무엇일까? 1. 무한 반복, 지루한 코드 - crud, 자바 -> 객체, 객체 -> 자바로 무한히 반복해야한다. 결국 관계형 데이터베이스를 사용하면 sql에 의존할 수밖에 없다. 객체와 관계형 데이터베이스의 차이점은 다음과 같다. 1. 상속, 2. 연관관계, 3. 데이터 타입, 4. 데이터 식별 방법 위의 문제를 해결하기 위해서 개발자가 'SQL 매퍼' 역할을 수행해야 한다. 계층형 아키텍처 진정한 의미의 계층 분할이 어렵다. 즉, 객체답게 모델링 할수록 매핑 작업만 늘어난다. 객체를 자바 컬렉션에 저장 하듯..

프로그래밍/스프링 2022. 9. 26. 20:11
[기타] 네이버에 티스토리 블로그 등록하는 법(네이버 검색 설정하는 법)

필자의 블로그 통계를 보니 구글, 다음 등의 포털에서 접근한 기록은 있으나 네이버에서 유입이 없었다. 그래서 필자가 직접 검색해보니 네이버에는 사이트가 등록되지 않은 것 같았다. 네이버에 본인의 티스토리 블로그를 등록하는 방법에 대해 알아보자. 1. 네이버에서 '서치어드바이저'를 검색해 다음의 링크에 접속한다. (링크 - 글자 클릭 시 바로 이동) 네이버 서치어드바이저 네이버 서치어드바이저와 함께 당신의 웹사이트를 성장시켜보세요 searchadvisor.naver.com 2. 상단에서 '웹 마스터 도구'를 클릭한다. 3. 다음과 같이 사이트를 등록한다. 4. 우측의 화살표를 클릭한다. 다음과 같은 html 태그를 복사 후 붙여넣기 한다. 5. 티스토리 '/manage' 사이트에서 '꾸미기 -> 스킨 편집..

카테고리 없음 2022. 9. 4. 19:37
[경험] 점핏 개취콘 후기 😊

한창 바쁘게 취준할 때(?) 점핏 개취콘을 신청해놓았는지 강의 시작 15분전에 카톡으로 알림이 왔다. 들어서 나쁠 건 없다고 판단하여 들어보게 되었다. 1부는 북콘서트로 진행되었는데 로버트 마틴의 '클린 코드'책의 번역을 담당하였고, 위의 책을 집필하신 박재호 님의 북콘서트였다. 필자는 자바언어를 사용하는 개발자로 파이썬에 큰 관심이 없었으나 오늘 강연을 듣고 많은 생각이 바뀌었다. 위 책은 기본서와 실전서의 중간 단계의 난이도로 구성되었다고 한다. 🤔 '실전형 인재' 실무에서 필요한 사람이 되는 법 포트폴리오에서 필요한 것 - 내가 어떤 문제를 어떻게 공부한 걸 활용해 응용한 것 - 문제를 풀 수 있는 추진력 어떤 식으로 나의 이야기를 잘 할 수 있는지가 가장 중요 ⭐⭐ 나만의 문제를 서사화(스토리화)..

경험 2022. 8. 29. 15:25
[디버깅] 스프링 프로젝트에서 @Test 코드 실행 버튼이 안 보일 때 해결방법 🤔

테스트 케이스 작성 후 실행 버튼을 눌러 테스트 케이스를 실행하려는데 읭? 실행 버튼이 보이지 않는다. 🤔 어떻게 해결할까? 다음과 같은 import 상황에서 반드시 'Import class'를 눌러 import org.junit.jupiter.api.Test; 위 라이브러리를 import 해야 한다. 필자의 경우 Add 'JUnit4' to classpath를 눌러 발생한 문제였다. 다음과 같이 성공적으로 테스트할 수 있었다. 그럼 오늘도 열공😀

디버깅 2022. 8. 18. 05:33
[디버깅] Execution failed for task ':compileJava'.> Could not resolve all files for configuration ':compileClasspath'. 에러 해결법 🤔

프로젝트를 시작하면 빠질 수 없는 그것!! 바로 디버깅이다!! 거두절미하고 바로 들어가보자. 💥 에러메세지 Execution failed for task ':compileJava'.> Could not resolve all files for configuration ':compileClasspath'. 인터넷에 찾아보니 build.gradle에 plugin 관련 문제라고 해서 build.gradle을 살펴보았다. 다른 부분은 문제없고 dependencies 부분에 이상한 plugin이 있어 다음과 같이 수정하니 해결되었다. 24번째 줄에 이상한 코드를 지우고 25번째로 바꿔주었다. build.gradle을 수정하니 문제없이 해결되었다. 📢 결론 : 위와 같은 에러가 발생했을 땐 build.gradle의 ..

디버깅 2022. 8. 17. 02:38
이전 1 2 3 4 ··· 15 다음
이전 다음
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
  • 코드
  • 그리디
  • 정보처리 산업기사
  • 해커랭크 챌린지
  • 자바의 정석
  • 정보처리산업기사 공부법
  • Java
  • 디버깅
  • 나동빈
  • JPA
  • 이코테
  • stack
  • 챌린지
  • 22 정보처리산업기사
  • ORM
  • 22 정보처리 산업기사
  • LinkedList
  • queue
  • challenges
  • 소스코드
  • BAEKJOON
  • 해커랭크 자바
  • hackerrank challenges
  • 정보처리산업기사
  • 해커랭크
  • hackerrank
  • 강의
  • 해커랭크 자바 챌린지
  • 백준
  • 자바
more
«   2025/05   »
일 월 화 수 목 금 토
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함

Blog is powered by Tistory / Designed by Tistory

티스토리툴바