문제를 보았을때 대략 단계가 있는 그래프 형태를 생각했습니다. 각 학생들이 저런식으로 있고, 1번 레이어는 의존성이 없는 학생들, 2번 레이어는 최대 1번 레이어에 의존성을 가지는 학생들, n+1번 레이어는 커야 n번 레이어에 의존성을 가지는 학생들입니다. 저런식으로 분류가 가능하다면, 각 레이어들을 순서대로 출력하는 방식으로 문제를 해결할 수 있습니다. 다만 가장 간단한 방식으로 순서대로 구현해보기로 했습니다. 우선 학생수가 32000명이니, 32000^2 = 10억 정도로 가능성이 있다고 봤습니다. 브루트 포스 방식 student_left = student_count for i in range(student_count): if student_left == 0: break for student in s..
BOJ 30049 영업의 신 문제에 대한 글입니다. 문제 입력은 조금 복잡해 보일 수 있으나 1 ~ N+2번 줄에서 base 입력을 받고, N+3번 줄부터 매출 변경에 관한 입력을 받으며 입력을 받을 때마다 계산하여 답을 출력해 주는 문제입니다. 크게 어려운 부분은 없는 구조이나, 관건은 시간복잡도를 잘 맞추는 것입니다. 조건으로 인하여 구현에 번거로운 부분 없이 편하게 문제를 풀 수 있습니다. 초기 입력 부분은 인원 300명에 가게 10000명으로 많아야 300만 정도의 입력을 받지만, N+3번부터 들어가는 계산은 N = 1,000,000 이기에 마지막 부분의 시간복잡도를 잘 고려해서 문제를 풀어야 합니다. 저의 초기 코드는 아래와 같은 방식으로 작성했습니다. int time; cin >> time; ..
https://toss.tech/article/slash23-server 토스는 Gateway 이렇게 씁니다 더 안전하고 안정적인 서비스 운영을 위해서 ‘gateway’를 어떻게 사용해야 할까요? 토스의 수많은 마이크로서비스 로직을 공통화하기 위한 gateway 운영 방법에 대해 소개합니다. toss.tech https://velog.io/@yeomyaloo/Spring-security-MSA-환경에서는-어떻게-인증을-진행할까-부제-인증-인가-서버의-분리 [Spring security] - MSA 환경에서는 어떻게 인증을 진행할까? (부제: 인증, 인가 서버의 분리) 여러 서버로 구성한 msa서버에서는 어떻게 인증, 인가를 분리해서 작업하고 또한 분리한 인증,인가 서버와 어떻게 클라이언트 서버는 통신을 ..
Next.js App Router가 업데이트되며 이전에 보았던 강의도 추가적인 업데이트가 올라와서 해당 강의를 수강하며 App Router가 되면서 변경된 사항을 정리해보려한다. # route 방식 변경 기존 pages/에서 app/ 폴더로 바뀌고, page.js, layout.js 등의 파일 이름으로 고정. 경로는 이제 무조건 폴더를 만들어 설정해야한다. SvelteKit과 비슷해진 느낌. # 동적 경로 props.params에 접근해 slug 이름에 따라 params.slug 처럼 접근하면 된다. # 클라이언트 실행 App Router로 변경되며 기본적으로 서버 컴포넌트가 되었다. 컴포넌트를 클라이언트 실행하기 위해서는 파일의 위에 "use client"; 를 적어주면 된다. 이런 서버 컴포넌트의 장..
환경 설정 개발환경(MacOS) 맥을 기준으로 사전 환경 설정을 설명합니다. 1. brew를 이용하여 redis를 설치해 줍니다. brew install redis 2. redis를 작동시킵니다. redis-server redis-cli 간단 사용법 redis 서버에 접근 가능한 redis-cli에 대한 간단한 사용법입니다. 1. redis-cli 실행 redis-cli 2. db 선택 select 1 redis는 여러 개의 데이터베이스를 둘 수 있고, 저희는 1번으로 settings에 설정해 두었으므로 1번에 접근합니다. 3. keys 보기 keys * 현재 생성된 key를 확인합니다. 배포 환경(docker-compose) docker-compose를 사용할 때 배포 환경 설정입니다. version:..
카카오 소셜 로그인시 모바일로 해보니 카카오톡이 켜져서 인증을 하고, 이후 카카오톡 내부 웹브라우저로 돌아오는 오류가 발생했다. 찾아보니 JS 방식으로 로그인 하지만, REST API용 키를 사용하면 이렇게 된다는 듯? 카카오 내부에서 소셜 로그인 구현을 어떻게 했는지 대략 느낌이 오는 것 같다. Javascript 키로 교체하고 문제 해결.
MacOS 환경에서 brew로 poetry install을 하여 1.6.1 -> 1.7.1 버전 업그레이드를 했을때 문제가 발생했다. poetry쪽 문제는 아니고 brew쪽의 문제인듯? brew install python-platformdirs 로 설치해주라는 해결 방법을 찾았다. wibaek@Wibaeks-MacBook-Air ~ % brew install python-platformdirs Warning: python-platformdirs 4.2.0 is already installed, it's just not linked. To link this version, run: brew link python-platformdirs 실행 해보니 이미 존재하고 link를 해달라 했고, wibaek@Wiba..
https://velog.io/@milkboy2564/Next.js-env%ED%99%98%EA%B2%BD-%EB%B3%80%EC%88%98-%EC%A0%95%EB%A6%AC Next.js env(환경 변수) 정리 환경 변수 velog.io https://jforj.tistory.com/249 [Next] 환경 변수(.env) 사용하기 안녕하세요. J4J입니다. 이번 포스팅은 환경 변수 사용하는 방법에 대해 적어보는 시간을 가져보려고 합니다. .env 파일 활용 Next에서 환경 변수를 사용하는 방법은 첫 번째로 .env 파일이 있습니다 jforj.tistory.com 추가적으로 next.config.js에 단순히 정의하면 기본적으로 NEXT_PUBLIC 방식으로 가는 듯?
next.js를 기반으로 한 서비스에 백엔드 서버와는 별개로 간단하게 인기 검색어 기능을 간단하게 추가해 본 경험을 기록합니다. 해당 시도를 해본 이유는 인기 검색어가 크게 필요하다기 보다, Firebase나 noSQL 느낌의 DB를 간단히 써보고 싶다! 라는 생각이 강했습니다. 갑자기 noSQL을 써보고 싶던 건 Firebase나 다른 클라우드 서비스에서 무료로 제공하는 DB(Azure Cosmos DB 등)가 많기 때문인데, 그냥 놀리고 있기도 아까워 한번 사용해보고 싶다는 생각이었습니다. 또한 Serverless 들을 조합해 보고 싶기도 했습니다. 그러나 Firestore만을 이용하게 되어 따로 클라우드 서버리스를 경험해보지는 못했습니다. 어떻게 만들 것인가? 간단히 검색들을 기록하고, 상위순으로 ..
최근 Next.js를 건드려보며 Image 컴포넌트에 적절하게 리사이징 해주는 기능이 있는 것을 보고 다른 서비스에도 이런 리사이징이 있으면 좋겠다는 생각을 했다. 문제는 프론트엔드 서버 내부에 이미지가 저장되어 있어서 적절히 리사이징 해줄 수 있는 것이 아니고, 프런트가 따로 있고 이미지는 AWS S3에서 받아오는 방식이라는 것이다. 즉 S3에 미리 리사이징 이미지를 저장해둬야 했다. 이미지를 줄여야 한다. 서비스에는 크게 2가지 종류의 이미지가 있었다. 수동으로 S3에 직접 업로드하는 샘플 이미지와, 각 개체마다 서비스를 통해 S3으로 업로드하는 개별 이미지였다. 우선 샘플 이미지를 생각했기에 가장 먼저 생각한 방법은, S3에 이미지가 업로드되었을 때 람다등을 통해서 자동으로 이미지 리사이징을 진행하..