일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- javascript
- Django
- 갓재석
- python
- DB
- docker
- github skyline
- depends
- springboot 3.0.0
- 2차 코딩테스트
- MySQL server on 'db' (115)
- 프로그래머스
- 우아한테크코스 2차
- python all testcode
- classproperty
- classmethod
- EC2
- AWS S3
- Spring
- depends_on
- 우아한 테크코스 2차 합격
- OperationalError
- S3
- AWS
- docker-compose
- github
- TypeError: 'property' object is not iterable
- 코딩테스트
- 재귀함수가 뭔가요
- METACLASS
목록분류 전체보기 (54)
hanbin.dev

💡 pull, push 할때마다 로그인하기 번거롭기 때문에, ssh agent를 설정해두자 ssh key 생성 ssh-keygen -t rsa -b 4096 -C "본인 gitlab email" # id_rsa 이름 설정 (id_gitlab) # 이후로 뭐라 나오는데 무시하고 엔터 ssh agent 활성화 eval "$(ssh-agent -s)" ssh agent에 ssh key 등록 ssh-add ~/.ssh/id_gitlab remote branch ssh 프로토콜로 지정 # 기존 remote 삭제 git remote rm origin # ssh 프로토콜 origin 생성 git remote add origin ssh://git@git.elicer.io:2201/elice/backend/elice-a..

PostgreSQL에서는 동시성 제어를 위해 여러가지 모드의 lock을 제공합니다. 이런 lock에도 여러가지 종류가 있고, 명시적으로 사용되는 경우/묵시적으로 사용되는 경우가 있는데, 자세히 알아보도록 합시다. 시작하기 전 3줄요약 Lock이 미치는 범위를 level로 나눈다 Lock 모드별로 충돌하는 관계가 존재한다 Lock은 트랜잭션 종료 시 혹은 롤백시에 풀린다. lock이 미치는 범위를 Level로 나누는데, Table-Level Lock, Row-Level Lock, Page-Level Lock, Database-Level Lock 까지 다양하게 존재합니다. 해당 글에서는 Table-Level Lock과 Row-Level Lock 에 대해서만 설명하겠습니다. Table-Level Lock Ta..

좀 늦은감이 있지만 1/1 ~ 3/30 까지의 회고를 해보려고 한다. 난 뭘하고 살았을까 🏫 회사 현재 재직중인 엘리스에서 이루고자 한 1분기 목적은 "내가 개발하는 서비스 플로우에 대한 완벽한 이해" 였다. 엘리스에서 내가 개발하는 서비스는 크게 3가지로 나뉜다. 엘리스 과목, 수업 자료, 계정 정보를 관리하는 Elice Core 외부 기관과 학습 관리 서비스 연동을 지원하는 LMS 채용 서비스를 제공하는 Elice Works 이 서비스들에 대한 이해도는 순서대로 30% 50% 80% 정도라고 생각한다. 측정 기준은 "각 엔드포인트가 어떤 로직으로 동작하는지 아는가" 이다. 이전에는 복잡한 엔드포인트들은 전혀 몰랐는데 WebSocket 메세지 타입 모듈화 작업 Worker api call 비동기 작업 ..
인덱스는 데이터베이스 테이블에 대한 검색 성능을 높혀주는 도구이다. 이런 인덱스를 구현하는 알고리즘에는 여러가지가 있는데, 각 상황에 맞게 사용된다. 먼저 인덱스가 무엇인지 알아보고, 어떤 기준으로 상황에 맞는 알고리즘을 고르면 될지 알아보도록 하자 그리고, 이 글은 꽤나 길기때문에 원하는 정보가 있다면 우측의 인덱스를 잘 활용하길 바란다 👉 🤔 인덱스란? 인덱스는 메모리 영역에 존재하며, 지정된 컬럼을 기준으로 생성된 목차를 의미한다. 아래 그림을 예시로 들어보자. 위 인덱스는 지정된 컬럼(company_id)을 기준으로 정렬되어 있고, pointer가 테이블의 row를 가리키고 있다. 만약 인덱스를 거치지 않고 company_id가 18인 값을 찾으러면 테이블은 company_id 로 정렬되어 있지 ..
version: '3' services: rabbitmq: image: rabbitmq:3-management-alpine container_name: rabbitmq-stream volumes: - ./.docker/rabbitmq/etc/:/etc/rabbitmq/ - ./.docker/rabbitmq/data/:/var/lib/rabbitmq/ - ./.docker/rabbitmq/logs/:/var/log/rabbitmq/ ports: - "5672:5672" - "15672:15672" environment: RABBITMQ_ERLANG_COOKIE: "RabbitMQ-My-Cookies" RABBITMQ_DEFAULT_USER: "admin" RABBITMQ_DEFAULT_PASS: "rabb..

친구가 지원하길래 재밌어 보여서 지원했던 우아한 테크캠프의 2차 코딩테스트 합격 이메일이 날라왔다. 문제는 API 명세서를 보고 간단한 로그인/로그아웃 구현하고 테이블을 만드는 예제였다. 우선 문제를 받자마자 언제나 그랬듯이 아키텍처에 대한 고민을 시작했다. 난생 처음 접해보는 프론트 코드를 짜야 해서 막연한 부분이 있긴 했지만 확장성과 DRY 두 가지만 생각하며 구조를 작성하고자 했다. 지금 이 문제를 받는다면 엔티티부터 정의하고 시작할 거 같다 두 가지중 확장성에 가장 큰 비중을 두고 구조를 작성했다. users, posts, articles 와 같이 기능으로 폴더를 분리하기 보다 controller, models, views 처럼 역할로 폴더를 분리하는 것을 선호하는 스타일 (인터페이스를 만들어 다..
import peewee class MySQLModel(peewee.Model): @property @classmethod def unique_fields(cls) -> list: for field_name in cls._meta.fields.keys(): field = getattr(cls, field_name) if field.unique == True or field.primary_key == True: yield field peewee 모델의 unique한 field의 이름을 iterable한 객체로 반환하는 property 함수를 만들었다. key in [field.name for field in MySQLModel.unique_fields] 그런데 위와 같이 사용 할 때 TypeError: &..
docker-compose로 개발환경을 구축하기 위해 아래와 같이 docker-compose.dev.yml 파일을 작성했었다. version: "2" services: db: image: mysql:5.7.34 container_name: dorandoran_db ports: - "7001:3306" environment: - MYSQL_DATABASE=dorandoran_dev_db - MYSQL_USER=devuser - MYSQL_PASSWORD=password - MYSQL_ROOT_PASSWORD=password command: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci healthcheck: test: ["..