목록전체 글 (63)
종우의 삶 (전체 공개)

* 따로 정리하던 내용들을 하나씩 블로그로 작성함.* 현재 진행중인 MSA 관련 프로젝트에서, 어떤 것들을 진행하고 있는지 살펴보자. 프로젝트 소개- Micro Service Architecture를 활용한 E- commerce 서버- Eureka Server, API Gateway를 기반으로 서비스들을 하나로 묶어서 관리함- Customer, Order, Product, Payment 등 필요한 서비스를 나누어 개별적인 서버로 분리- 각 서비스의 DB는 Docker로 운영하였음. 기술 스택- Java 21- Spring boot 3.3- MySQL, Redis, Docker- Eureka, API Gateway 프로젝트 주요 기능- 일반적인 Commerce 서비스를 구성하는 기본적인 기능(상품 등록..
MSA란 무엇인가. 모놀리식 아키텍처를 탈피하여 각각의 독립된 세상으로 떠나가는 모험적인 서비스인것이다. 라는 상상만 해봤을 뿐 실제로 사용해본적은 없는 기술이다. 혼자서 진행했던 market 프로젝트의 심화버전이라고 생각하면 되겠는데, e-commerce와 관련된 내용에 더 다양한 기능들을 얹어보는 시간이 되겠다. 기본적으로 한번 진행해본 도메인이기 때문에 수월하다고 할 수 있었지만, 여전히 의문점은 남는다.단순히 JWT만 사용하던 부분을 액세스 토큰과 리프래시 토큰을 사용하여 바꾼 것과, Spring Security 관련하여 더 캡슐화를 할 수 있는 방법 등을 생각해보고 시도해보았다. 사실상 주문 관련된 내용이 복잡해지고 있는데, 과하게 도메인 하나를 파고드는 것보다 더 다양한 시도들을 해보는게 좋을..

알고리즘 문제에는 소수와 관련된 문제가 많이 등장한다. 무지 짜증난다. 해당 숫자가 소수인지 알수있는 알고리즘은 여러가지가 있는데 소수 여부를 알고싶은 숫자 N에 대해,1) 직접 모든 수를 집어넣어 N의 약수가 1만 존재하는지 확인하는 방법과2) 에라토스테네스의 체 방법이 대표적이다. 1번 방법은 어떻게 구현하느냐에 따라 시간복잡도가 길어지거나 짧아질 수 있는데, N의 약수인지 확인할 숫자의 범위를 지정해주면 조금은 빠르게 수행할 수 있겠다. def is_prime(n): if n 소수가 아님 return False # 위 3개 조건에서 걸러지지 않으면, (25 이상의 2, 3 배수가 아닌 수들) i = 5 while i * i 사실 소수의 검증을 ..
알고리즘은 하면 할수록 머리가 아프다. 사실상 일반적인 정렬이나 리스트 자료구조들이 아닌 스택과 힙, 큐, 덱 등을 만나면서부터 조금 흐트러진듯 하다. 그러면서 뭔놈의 그래프 탐색까지 하겠다고?? 다익스트라?????? ㅋㅋ! 쫓아가기가 쉽지 않다. 이러한 역경은 많이도 겪어봤지만 여전히 이겨내기 어렵다. 배추를 샀다. 먹으려고 자꾸 도망치고 싶다. 너는 알고리즘에 글을 써라.
이력서, 알고리즘, 프로젝트, 기술 면접 준비, 지원하기 이모든 것을 한번에 하는 사람은 없을것이다. 나조차도 현재 알고리즘을 공부하고있으니.. 하지만 언젠가는 해야만 하는 일이다. 아침에 일어나는 것이 점점 힘들어지고 무기력해지고 있다. 운동을 다시 해야하나? 근데 왜 운동도 하기 싫지. 세상이 돈이 전부가 아니지만, 먹고싶은 음식 하나 사먹는데에도 긴 고민을 하게 만드는 상황은 여러번 겪어봐도 익숙해지지 않는다. 지쳐있을 수만은 없다. 오늘이 아니면 내일이라도 운동을 가고.. 돈을 아껴쓰고.. 얼른 취업을 해야겠지. 세상이 책상 한 칸, 모니터 하나로 좁아졌다. 이젠 방 한 칸보다도 좁아진 느낌이다. 힘내세요. 다들.

알고리즘 공부를 시작할 때 들어본 DFS, BFS를 드디어 만났다. 깊이 우선 탐색, 너비 우선 탐색 그래 말은 좋다 이거야문제를 읽어본 결과 하나도 모르겠다는 것이 나의 결론이었다.어쨌든 정리를 하면서 살펴보자. 정점과 노드를 혼용하여 사용할것이나 같은 의미로 생각하자. 0. 정점(vertex)과 간선(edge)우선 말이 어렵다. 정점은 무엇이고 간선은 무엇인가. 코드에 적어야 할 vertex와 edge를 우선 알아야 하겠다. 정점(또는 노드)과 간선은 그래프에서 쓰이는 말이다. 그래프는 정점과 간선으로 이루어져있는 조직도로 생각하면 되는데정점은 데이터가 저장되는 곳이고, 간선은 그 정점들을 연결하는 선이다. 좌측에 있는 그래프를 보면 번호가 들어있는 정점(동그라미)와, 그 정점들을 연결하는 간선..

(제목은 거짓입니다.)무언가 알고리즘다운 알고리즘을 처음으로 알게 된 것은 이진 탐색부터라고 할 수 있겠다. 정렬하고 뽑아내는 것도 물론 쉽지 않지만, 애초에 정해진 방법이 있는 알고리즘을 처음 배운것이다. 사실상 단어 뜻만 가지고서는 이걸로 뭘 하는건가 싶은데 가끔씩 실생활에서도 사용을 하는.. 그런 방법이었다. 원리는 간단하고 사용할 조건도 필요하다. (간단?)이 알고리즘은 특정 숫자를 찾는 업 - 다운 게임을 생각하면 되겠다. 근데 이걸로 끝이겠냐? 사실상 개념은 익숙한 편이고 그리 어렵지 않지만 이것을 배우는 이유는 문제 해결을 위해서다.수많은 데이터들 중에서 원하는 데이터를 찾을 수 있는 방법.. 중 하나인 것이다. 좀더 자세히 알아볼까? (2분 초과) 이진 탐색꺼무위키에서 찾은 수도코드를 살펴..
https://www.acmicpc.net/problem/18870 이러한 문제가 있다. 좌표압축 어쩌고인데대충 구하는 로직은 어렵지 않았지만 입력값이 100만개에 육박하기때문에 시간복잡도를 줄이는 것이 관건이었다. 나의 스무스한 흐름대로 적어본 최초의 코드는 이러하다. n = int(input())coordinates = list(map(int, input().split()))set_coord = sorted(set(coordinates))answer = []for i in coordinates: answer.append(set_coord.index(i))print(*answer) 대충 입력을 받고, set으로 좌표들을 저장하고 정렬하여 입력받은 coordinate의 값들의 인덱스 값을 알아내면 ..