본문 바로가기

분류 전체보기

(saleor) 가독성 좋은 함수명 만들 때 유용한 팁 모음집 이 글은 Django E-commerce OpenSource인 Saleor에서 얻은 팁들을 정리한 문서입니다. 1. 값을 증분할 때는 increase / decrease 동사를 prefix으로 붙인다.def increase_voucher_usage(voucher): voucher.used = F('used') + 1 voucher.save(update_fields=['used']) def decrease_voucher_usage(voucher): voucher.used = F('used') - 1 voucher.save(update_fields=['used']) 2. 상태를 확인할 때에는 is 동사를 prefix으로 붙인다. def is_category_on_sale(category, sale): """..
2019년 2월 첫째주 로그 금주의 Pocket#saleor커머스 시스템에 필요한 전반적인 기술을 학습하기에 유용해보이는 장고 오픈소스를 발견했다. 💖 #PATTERNS FOR BUSINESS-TO-CONSUMER ECOMMERCE APPLICATIONS커머스 도메인 다이어그램 자료를 찾았는데, 맘에 든다. 👀 금주의 TOOL #dbdiagram.io ERD 다이어그램 툴을 발견했다. #teamsql 무료 DB GUI툴이다. postgresql, redis, google big query도 지원한다.데이터 시각화도 지원하고, 슬랙 공유, 쿼리문 공유도 가능하다. redash 앱버전 같다.
2019년 1월 4째주 로그 #Pocket - Django A. Where to Put Business Logic in Django이거슨 길어져서 요기에 정리해두었다. B. Python @property 루비에서는 get_XXX 메서드를 사용하지 않았다. 파이썬에서는 Property와 get_XXX메서드를 구분해서 써서, 어떤 경우에 Property를 써야하는지 궁금해졌다. 요 글을 후르르륵 읽고, 대충 내가 정한 기준은 다음과 같다. property를 사용할 때 -> 속성을 외부에서 직접 변경하지 못하게 할 때 or 외부에서 직접 값을 변경할 때 추가적으로 데이터 가공을 해줘야할 때 사용get 메서드를 사용할때 -> 호출할 때마다 데이터를 가져오는 비용이 들 때 사용 ( 외부 API 통신 or DB 조회 ) #Pocket - Po..
(PostgreSQL) 테이블에 제약사항이 있는 컬럼 추가하기 Postgresql 테이블에 컬럼을 추가하는 작업은 신중하게 처리해야한다. 사이즈가 큰 테이블에 기본값이 있거나, 제약사항이 있는 컬럼을 추가하는 작업은 리스크가 있기 때문이다. 이번 포스트에서는 제약사항이 있는 컬럼을 추가할 때 발생하는 리스크와 이를 분산시키는 방법에 대해서 정리해보고자 한다. PostrgreSQL 컬럼 추가 동작 방식 ALTER ADD COLUMN 명령문을 실행하면, PostgreSQL은 아래와 같은 순서로 테이블을 변경한다. 1. 컬럼 추가하기 2. 신규 컬럼에 default 값 추가하기 ( Option ) 3. 컬럼 제약사항 ( constraint ) 확인하기 PostgreSQL은 3번째 단계에서, 값의 유효성을 확인하기 위해 테이블을 풀스캔한다. 이 때, 테이블 사이즈가 크다면..
(PostgreSQL) JSON VS JSONB RDB에 JSON 포맷을 저장할 때, 평소처럼 텍스트 포맷으로 저장할지, JSON Format을 적용할지 고민하게 된다. 뫼비우스의 띠 같은 삶을 사는 나는 딱 1년전에도 비슷한 고민을 했었다.( 작년에 조사한 글 : 👉 [MariaDB]RDB 속에서 NOSQL 사용하기 👈)작년에는 리서치만 해보고 말았는데, 올해에는 PostgreSQL에 JSON 타입을 실제로 적용해봐야겠다. 🐜🐜🐜고럼 이만 포스팅 시작~ ㅎ.ㅎ PostgreSQL의 JSON 타입은 크게 2가지이다. JSON, JSONB 두가지 유형이다. JSON Type은 9.4 버전부터 추가되었다. 공통점둘다 JSON 포맷 유효성체크를 한다. 차이점데이터 저장 방식JSON은 들어온 그대로 값을 저장한다. 그런데 JSONB는 그대로 저장하지 않는다...
2019년 계획하기 #도서소프트웨어 공학SRE - 사이트 신뢰성 엔지니어링 (ing)함께 자라기 - 애자일로 가는 길 (done)매니지먼트 3.0 리팩토링/디자인패턴개발자가 반드시 정복해야 할 객체 지향과 디자인패턴 (ing)레거시 코드 활용 전략 - Michael Feathers 테스트주도개발 - 켄트백리팩토링: 코드 품질을 개선하는 객체지향 사고법 - 마틴파울러옵션 - 클린 코드: 애자일 소프트웨어 장인 정신 심리학성공의 새로운 심리학 - 캐롤 드웩 #오픈소스saleor 코드 분석하기 saleor 커미터되기 #프론트코드스피츠 강의 듣기 django-oscar에 angular 적용해서 프론트 만들어보기 #기타도커테스트 환경 도커 만들어보기도커 파일 만들어서 장고 애플리케이션 CodeDeployAgent에 붙여보기 인프라T..
2018년 연간로그 #스터디 작년에 총 4개의 스터디를 했다. Real MySQL, quality software management, TDD Coding Dojo, AWS Code Deploy Agent 오픈소스 커미터되기 1/2차 QSM 스터디 모임을 시작한지 어느새 7개월이 되었다. 처음에는 제럴드 와인버그 원서를 읽어보고 싶단 마음으로 가볍게 시작했었다. 원서 스터디 이후에는 오픈 소스 커미터 되기 스터디로 이어졌다.스터디에서 AWS Code Deploy Agent의 이슈 4개를 해결했다. 하하핳 ( 이거슨 내가 날린 풀리퀘 -> https://github.com/aws/aws-codedeploy-agent/pull/203 ) 생각만하고 실천하지 못했던 일들을 이루게해주는 모임인 것 같다. 그리고 TDD Coding..
(PostgreSQL) Transaction과 Lock에 대한 이모저모 Table Lock Mode Table Lock Mode에 따라 공존할 수 있는 Lock이 있고, Conflict나는 Lock이 있다. SELECT를 막는 Table Lock은 ACCESS EXCLUSIVE 뿐이다. Lock Mode의 최종보스다. SELECT FOR SHARE는 FOR UDPATE, FOR SHARE 쿼리에서 필요하다. EXCLUSIVE는 UDPATE / DELETE 등의 쿼리에서 필요하다. EXCLUSIVE Lock 모드는 서로 충돌난다. 그래서 동일한 Row를 여러 트랜잭션에서 동시에 업데이트할 수 없는거다. SHARE UPDATE EXCLUSIVE는 Vacuum, 인덱스 추가 등의 쿼리에서 필요하다. Transaction과 Lock Blocking 트랜잭션이 느린 경우, Lock ..