aws
cheat sheet
computer science
container
crawling
dart
database
django
docker
git
golang
graphql
hr
http
iac
java
kubernetes
map
monitoring
nestjs
network
node
oop
python
security
serverless
storage
terraform
ttbkk
typescript,javascript
ux
validation
contains icontains 의미 대소문자를 구별한다 대소문자를 구별하지 않는다 SQL 'LIKE BINARY %s' 'LIKE %s' image 출처 https://docs.djangoproject.com/en/4.0/ref/models/querysets/#std:fieldlookup-contains
떡볶이맵의 데이터가 점점 많아지면서 marker cluster용 api를 구축해야 했지만, 어떠한 라이브러리가 좋은지 파악하지 못했고 (내가 직접 구현할 수도 있고) best practice를 공부하지 못했기 떄문에 해당 작업을 잠시 뒤로 미루게 되었다. 하지만 전국 떡볶이 데이터가 1000개를 넘어가던 시점부터 쎄한 느낌이 들었고, 응답까지 상당히 많은 시간이 소요됐기 때문에 지도에 데이터가 늦게 떠서 상당히 불편했다. 페이지네이션을 적용한 이후인 현재 데이터를 4000개정도이다. 스크린샷 2021-10-22 오후 10 59 00 나름 기발한?생각으로 장소 데이터를 가져오는 api에 페이지네이션을 적용해보기로 했다. 테이블 형태의 페이지네이션 api라면 한번의 요청에서 limit만큼의 데이터를 받으면 될 일이지만, 지도에서는 모든 데이터를 불러와야 하기 때문에 아래와 같은 api 시나리오를 구성했다. 해당 지도 bound내의 count를 가져오는 api…
container 생태계의 변화 2013년 Docker가 처음으로 세상에 나타난 이후 IT업계는 정말 크게 변했습니다. 어플리케이션의 배포단위는 이제 war, jar, zip 등이 아니라 Docker 이미지가 되었고 Docker를 사용할 수 있는 환경이기만 하면 어플리케이션은 Windows에서든, Ubuntu에서든 동일하게 동작하였습니다. Docker의 이러한 특성을 이용해 수백 수천대의 서버를 운영하는 환경에서 Docker를 도입하는 사례들이 늘어나기 시작했습니다. 하지만 포맷과 런타임에 대한 특정한 규격이 없다 보니 컨테이너의 미래는 불안했습니다. 도커가 사실상의 컨테이너 표준 역할을 했지만 코어OS(CoreOS)는 도커와는 다른 규격으로 표준화를 추진하려 했습니다. 이때 Docker Engine에는 API, CLI, 네트워크, 스토리지 등 많은 기능들이 하나의 패키지에 담겨있었고, Docker 측에서는 Monolithic한 Docker Engine…
이전 게시물인 RDBMS의 특징을 보고 오면 좋습니다. RDBMS DB 엔진 중 유명한 것들을 비교해보고, 특징을 알아보자. 이 게시글을 보는 모두가 데이터베이스를 고르는 과정에 도움이 되었으면 한다. image PostgreSQL과 MariaDB의 상승세가 뚜렷하다 image DB-Engines Ranking Oracle Oracle사에서 제공하는 DBMS. 온프레미스, 클라우드, 하이브리드 클라우드 등의 환경을 제공한다. 오랜 역사와 막강한 영업력으로 데이터베이스 시장 부동의 1위. 기업시장을 위시로 한 오픈소스 데이터베이스를 쓸 수 없는 환경(문제 발생시 책임소재 등의 이유)에서는 대부분 오라클이 쓰인다. 특히 극한의 신뢰성이 요구되는 미션크리티컬 환경은 오라클이 꽉 잡고 있다. 카카오뱅크가 이례적으로 오라클과 함께 오픈소스 DB인 MySQL…
동시성 제어 - MVCC (Multi Version Concurrency Control) 하나의 레코드에 대해 여러 버전이 관리된다는 의미이다. 가장 큰 목적은 Lock을 사용하지 않는 일관된 읽기를 제공하는데 있다. PostgreSQL 9.3.5 문서 - 동시성 제어 Pessimistic Lock 처음 짐 스타키가 구현한 방식으로 MGA : Multi Generation Architecture라고 부른다. MGA는 튜플을 업데이트 할때 새로운 값으로 변경하는 것이 아니라, 즉, 같은 자리에서 Replace로 처리하는 것이 아니라 새로운 튜플을 추가하고 이전 튜플은 유효 범위를 마킹하여 처리한다. 이와 같은 방식은 PostgreSQL, SQL Server, InterBase에서 사용하는 방식이다. Undo Segment Oracle, InnoDB에서 사용하는 방식으로 Undo 라는 영역을 따로 두고 최신 데이터는 데이터 영역에 두고 올드 버전만 Undo…
문제점 떡볶이맵의 백엔드 서버는 홈서버에서 운영되고 있기 때문에 해당 서버의 헬스체크는 홈서버 내에서 이루어질 수 없었고, 이로 인해 정전 등의 이유로 컴퓨터가 꺼지는 등의 장애 상황을 신속하게 파악하기 힘들었습니다. 해결방안 이러한 문제점을 해결하기 위해 외부에서 홈서버의 건강상태를 체크해주는 API를 만들어야 했습니다. 떡볶이맵 서버와 상관없는 홈서버 자체의 API를 만들어서 헬스체크를 할 수도 있었지만, 좀더 다양한 상황에 유연하게 대처가 가능하도록 떡볶이맵 클라이언트에서 api 요청시에 실패하는 경우에 모니터링을 받는 식으로 구축을 하고 싶었습니다. 두가지 방식이 생각이 났는데, sentry를 frontend에 연동하는 방법이 있고, 다른 하나는 api 요청 실패시 serverless api를 통해 슬랙으로 노티를 받는 방법이 있었습니다. sentry vs slack sentry를 사용하는건 간단하지만 실시간으로 noti를 받으려면 team plan…
작년에 지인이 rclone, google drive, cloudbox를 활용하여 구글드라이브에 올린 영상을 plex라는 어플로 감상할 수 있도록 구축한 경험을 들은 적이 있었다. (구글드라이브 저장소를 친구들과 공유하고, plex계정도 친구초대가 가능해서 이부분에서 시너지가 폭발하는 듯 했다) 나는 영화도 잘 보지 않았기 때문에 그냥 그런 좋은 활용방법이 있구나 하고 넘어갔었는데, 최근에 홈서버를 새로 구축하면서 데이터베이스의 백업이 제대로 이루어지지 않아 문제가 발생한 적이 있어서 이번에 새로 서버를 구축하면서 rclone과 google drive를 연동하여 리눅스에 마운트된 디렉토리에 주기적으로 database backup을 남겨야겠다는 필요성을 느꼈고, 구축 경험을 남기고자 한다. rclone homepage / github rclone은 클라우드 저장소와 저장소를 동기화시켜주는 오픈소스 프로젝트이다. 지원하는 클라우드 저장소는 amazon s3, googld drive…
django의 startproject로 기본적으로 생성되는 AUTH_PASSWORD_VALIDATORS에 대해 분석해보려 합니다 1. UserAttributeSimilarityValidator 유저의 attributes(username, first_name, last_name, email)를 정규표현식으로 split한 후 각각의 value_part에 대해 유사도를 측정하고, 유사도가 max_similarity(default: 0.7)이상인 경우 validation error를 발생시킵니다. 유사도 측정에는 SequenceMatcher를 사용합니다. 2. MinimumLengthValidator password의 길이가 min_length(default: 8)보다 작다면 validatoion error를 발생시킵니다. 3. CommonPasswordValidator 사람들이 가장 많이 사용하는 패스워드 20000개에 해당하는 경우 validator error를 발생시킵니다. 200…
force unlock backend force-unlock image
remove ignored files git-clean - Remove untracked files from the working tree -d for removing directories -f remove forcefully -n Don’t actually remove anything, just show what would be done. -X Remove only files ignored by Git. This may be useful to rebuild everything from scratch, but keep manually created files. remove untracked files ignore already committed files remove cached credential remove all fetched branches This will prune any branches that no longer exist on the remote. remove all…
remove all keys flushall get values by keys (in bash)
The Ultimate Guide to Onboarding New Developers: Industry Best Practices 새로 입사하는 개발자분들을 위한 최고의 온보딩 가이드: 산업의 Best Practices와 첫 90일을 어떻게 계획할 것인지에 대하여. 온보딩은 새로 입사하시는 분들이 회사에 최대한 빨리 적응하고 기여할 수 있게 돕기위한 것입니다. 당신이 조만간 회사에 입사한다고 상상해보십시오. 입사 이전에 당신은 회사에 대해 최대한 공부하려 할 것입니다. (링크드인에서 팀원들을 검색해보고, 회사에 대한 기사들을 찾아보는 것 등등...) 그리고 주변인에게 입사 축하 메시지를 받게 될 것입니다. 당신은 이 일을 시작할 생각에 굉장히 흥분되어 있을 것이며, 이를 잘 해내고 싶어 할 것입니다. 입사 첫날, 당신은 사무실에 조금 일찍 도착했고, 차를 가지고 왔을 경우엔 어디에 주차해야할지 잘 모를 것입니다. 그리고 출입문 앞에 도착했을때, 당신은 건물의 id…