본문 바로가기

분류 전체보기

(Django) Django ORM에서 Row Lock 잡기 - select_for_update Row Lock과 SELECT * FOR UPDATEUPDATE / DELETE 없이, SELECT 만으로 Row Lock을 잡고 싶을 때는, "SELECT * FOR UPDATE" 쿼리를 사용하면 된다.이렇게 Row Lock을 잡고있는 도중에는 다른 트랜잭션에서 해당 Row를 변경 / 삭제할 수 없다. select_for_updateDjango에서 SELECT * FOR UPDATE 쿼리를 사용할 때는, Django ORM select_for_update 함수를 사용하면 된다. 이 함수는 항상 transaction과 함께 사용된다.class UserPoint(models.Model): id = models.AutoField( primary_key=True, ) user = models.ForeignKe..
(Travis CI) GitHub에 테스트 CI 연동하기 Travis CI테스트코드 돌리는 CI 툴이다. 도커 컨테이너 기반으로 돌리는거여서, 테스트 서버 환경 구성 필요없이 온라인상에서 테스트 코드를 돌릴 수 있다.간단하게 테스트 CI를 설정할 수 있고, 오픈소스에서는 무료이기 때문에, 많은 오픈소스에서 Travis CI를 사용하고 있다. ( django-oscar, aws-codedeploy-agent 등등.. )But. 프라이빗은 유료다. gitlab은 지원하지 않는다. 😧 GitHub Repository 연결하는 방법1. 트레비스에 가입한다. 그 다음, 트레비스에 github 레파지토리 권한을 준다. 2. 레파지토리에 .travis.yml 파일을 추가해준다. 3. 연결되고 나면 github commit마다 테스트 결과가 뜬다. 아래에 뜬 check 박스..
(PostgreSQL) 슬로우쿼리를 잡아내는 3가지 방법 해당 글은 Weekly Postgres에서 보내준 3 WAYS TO DETECT SLOW QUERIES IN POSTGRESQL을 보고 정리한 글입니다 😀 슬로우쿼리를 잡아내는 3가지 방법PostgreSQL에서 슬로우쿼리를 잡아내는 방법은 크게 3가지가 있다.1. 슬로우 쿼리가 발생하면 로그 남기기2. 쿼리 실행계획 로그에 남기기3. 쿼리 실행 통계 보기 1. 슬로우 쿼리가 발생하면 로그 남기기어느정도 느려지면, 쿼리 실행문을 로그에 남길건지 postgresql.conf에 설정값을 추가해줘야한다.1log_min_duration_statement = 5000 그리고 config를 reload 해주면 된다.12345postgres=# SELECT pg_reload_conf(); pg_reload_conf -..
TDD Coding Dojo - 테스트코드 작성 연습 방법 이번달에 유닛테스트 작성방법 관련 스터디를 시작했다 ㅎㅅㅎ. 진행방식을 조사하다가, TDD KATA, Coding Dojo 라는 학습 방식을 알게되어 정리해보고자 한다. Coding Dojo 란? dojo는 일본말이다. 한국말로는 도장이다. 태권도 도장의 도장. Coding Dojo란, 코딩 배우는 도장을 말한다. 함께 모여서, 실무가 아닌 연습 문제를 풀어보면서, 여러가지 프로그래밍 스킬을 학습하는 방법론을 의미한다. Coding Dojo로 기대하는 바는?좋은 코딩 습관 익히기그룹 단위로 학습하기 의도적으로, 기존과는 다른 스킬들을 익히기 재밌게 학습하기 Coding Dojo로 얻을 수 있는 스킬은? 단순한 코딩 스킬 뿐만 아니라 공동 학습을 통해 여러가지 스킬을 학습하는게 목표다.페어프로그래밍 방식P..
유닛테스트를 작성하는 3가지 접근방법 - Test First VS Test Last VS Test Driven 해당 글은 Unit Testing with Python: Why and When Should You Write Unit Tests? 세션의 요약본입니다 ㅎㅂㅎ. 개발할 때, 테스트 코드를 작성하는 접근 방식은 크게 3가지가 있다. Test Last 개발 다 하고, 오류가 없는지 검증하기 위한 목적으로 회귀 테스트를 작성하는 방식이다. Test Last 방식도 개발 중간에 테스트를 한다. 중간 중간에 수동테스트를 하면서, 기대한대로 코드가 동작하는지 확인한다. 테스트 케이스를 개발 이후, 마지막에 작성하는걸 선호하는 사람들이 많다. 나도 수동테스트를 할 때는, 개발을 다 하고나서 작성하는 편이다. ( 회귀 테스트란? 회귀 테스트는 한 모듈의 수정이 다른 부분에 영향을 끼칠 수도 있다고 생각하여 수정된 모듈..
AWS CodeDeploy와 AWS CodeDeploy Agent (2) - B. CodeDeployAgent B. CodeDeployAgentEC2에 저장된 CodeDeployAgent 로그 위치/var/log/aws/codedeploy-agent EC2에 저장된 CodeDeployAgent 프로그램 파일 위치/opt/codedeploy-agent CodeDeployAgent는 루비로 되어있다. 그래서 CodeDeployAgent를 실행시키려면 루비가 설치되어있어야한다.루비는 인터프리터 언어여서, 별도의 빌드작업이 필요하지 않다. CodeDeployAgent 소스코드 변경하고 싶으면, 저 위치에 있는 소스코드 수정 후, code deploy agent를 재가동해주면 된다. 배포된 프로젝트 파일이 저장되는 곳/opt/codedeploy-agent/deployment-root/{배포-애플리케이션-식별자}/{배포-유..
AWS CodeDeploy와 AWS CodeDeploy Agent (1) - 1. CodeDeploy 요즘 AWS CodeDeploy Agent 오픈소스 커미터되기 스터디를 하고 있다. AWS CodeDeploy Agent 코드를 분석하면서 알게 된 내용들을 틈틈이 정리해보고자 한다 👩‍🎓 1. CodeDeploy CodeDeploy의 기본적인 구동 방식 ( 참고 링크 ) 1. AWS CodeDeploy Agent 코드를 다운받아서, AWS EC2에 실행시켜두기 2. AWS CodeDeploy 에서 배포하기 3. AWS CodeDeploy에서 배포되었다는걸, Agent가 감지하면 코드를 EC2에 복사시켜준다. EC2에 CodeDeploy 세팅하는 방법 https://jojoldu.tistory.com/281 CodeDeploy에서 배포할 코드를 가져오는 방법 1. S3에 배포할 파일 압축해서 올려두기 압..
(Django) Django로 e-commerce 개발할 때 참고하기 좋은 오픈소스 e-commerce Django 오픈소스 saleor가이드문서 - https://docs.getsaleor.com/en/latest/gettingstarted/installation-macos.html데모 사이트 - https://demo.getsaleor.com/en/ django-oscar 메인 github - https://github.com/django-oscar/django-oscar/데모 사이트 - https://latest.oscarcommerce.com/ko/basket/-> 기본 이커머스 플랫폼에 붙일 수 있는 플러그인 종류도 많다. 기타 쿠폰 관련 모델https://github.com/byteweaver/django-couponshttps://github.com/GDsouza/WSG-C..