여태껏 파이썬에서 기본적으로 제공되는 이진탐색 함수가 없는 줄 알았는데, bisect라는 배열 이진 분할 알고리즘 모듈을 찾았습니다. from bisect import bisect_left 위와 같은 방법으로 import 할 수 있습니다. bisect_left(), bisect_right() 코드 def bisect_left(a, x, lo=0, hi=None, *, key=None): """Return the index where to insert item x in list a, assuming a is sorted. The return value i is such that all e in a[:i] have e = x. So if x alrea..
Github Organization Private Repository 접근 시 remote: Repository not found. fatal: repository 'https://github.com/~~~/~~~.git/' not found 오류가 발생했다. 원래 사용하던 SourceTree에 crediential 인증창이 뜨기도 하는 등 전조증상이 있긴 했었다. 그러나 정확히 어떤 것이 문제가 되었는지 모르겠다. xz 백도어로 인해 다운그레이드하기 위해 brew upgrade를 한 것 밖에 짐작 가는 것이 없는데... 아무튼 문제의 까다로운 점은 일반 private repository는 문제없이 접근이 가능한데, organization에 있는 private repository만 접근 시 404가 발생..
잠깐 방치해 두었던 장고로 제작된 서비스의 테스트를 개선해야 할 필요성을 느꼈습니다. 개선이 필요한 사항은 1. ci. 커밋 시 자동으로 테스트를 진행이 필요 2. 테스트 시 api를 이용한 특정 작업이 자동으로 실행되는데, 이를 막기 3. 이미지 업로드 시 사용하는 S3을 실제 production bucket에 올라가게 해 두었는데, 이를 막기 커밋 시 자동 테스팅 우선 기존에 release 브랜치에 push시, Github Action을 이용하여 자동으로 실제 배포 서버의 워커를 실행시켜 자동으로 배포되도록 설정해 두었습니다. 이를 활용하여 Github Action을 다시 활용해 자동 테스트를 진행하도록 만들었습니다. name: Test app concurrency: group: production ..
문제를 보았을때 대략 단계가 있는 그래프 형태를 생각했습니다. 각 학생들이 저런식으로 있고, 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..