postgresql를 docker로 올릴 때, 데이터베이스들을 초기화 할 수 있습니다. 이 방법을 알아보겠습니다. 그 전에 volumes에 대해 간단히 알아봅시다. 먼저, 폴더 구조는 아래와 같습니다. docker-compose.yml 파일이 있고, ddl 폴더 밑에 schema.sql이 있습니다. 이제 밑에 있는 compose 파일을 보겠습니다. 11 ~ 15번째 줄이 중요합니다. 11 ~ 13번째 줄부터 해석해 봅시다. 문서를 보면 12 ~ 13번째 줄은 VOLUME:CONTAINER_PATH임을 알 수 있어요. CONTAINER_PATH는 VOLUME이 마운트 되는 경로를 의미합니다. 실제로 처음 postgres가 초기화 되고 볼륨이 만들어 질 때 초기화 되게 하기 위해 13번째 줄을 넣었는데요. ..
전체 글 검색 결과
저번시간에 redis의 incr에 대해 배웠습니다. 그러면서 ttl이 있는 counter를 구현해 보았는데요. 한 가지 문제점이 있었습니다. incr을 하고, ttl을 설정하는 것이 2개의 작업으로 쪼개졌었습니다. 이 작업 하나 하나는 atomic 하겠지만, 두 개의 작업은 그렇지 않습니다. race condition이 발생했을 때, 문제가 발생할 수 있는 여지가 있었는데요. 문서에서 몇 가지 방법을 소개했었습니다. 그 중에 2.6 이상부터 가능한 LUA script와 eval 명령어를 이용하는 방법이 있습니다. 간단하게 소개해 드리도록 하겠습니다. 먼저, eval은 LUA script, key 갯수, 키, argument들로 구성됩니다. 스크립트는 이 문서를 보시면 됩니다만, 간단한 예제 몇 개를 보면..
안녕하세요. 이번 시간에는 redis의 incr 명령어를 알아봅시다. 먼저 key test를 조회해 봅시다. 그랬더니 nil이 떴습니다. 키가 없어서 그런 것일 겁니다. 이제 incr test 명령어를 입력해 봅시다. 그러면, 1이 리턴됩니다. test가 없는 상태에서 incr test를 하니, 1이 나왔습니다. 그런데, ttl을 따로 설정하지 않았습니다. 그렇기 때문에 ttl test를 입력하면 -1이 나오게 됩니다. 이제 expire test 300을 입력해 보겠습니다. 그 다음에 다시 ttl test를 입력해 보면 아까와는 다르게 297이라는 수가 뜨게 됩니다. 이것은 297초 후에 test라는 키가 사라진다는 것을 의미합니다. 이제 incr test와 ttl test를 순서대로 실행해 보겠습니다...
안녕하세요. 이번 시간에는 settings.py에 작성하는 MEDIA_ROOT와 MEDIA_URL을 어디에 쓰는지 알아보겠습니다. 먼저, Post에 ImageField를 추가했어요. ImageField를 사용하기 위해서는 Piliow를 설치해야 합니다. 이는 장고가 이미지 field를 validation 할 때 piliow를 쓰기 때문입니다. 이제 post 테이블을 보면 image가 VARCHAR로 있음을 알 수 있는데요. 직감하셨겠지만, 이 필드는 경로를 저장합니다. 실제 파일은 이 경로값을 읽어온 다음에 파일로 접근하게 됩니다. 이제, 새로운 포스트 하나 만들고 1.jpg를 이미지로 해 보겠습니다. 그러면, 제 프로젝트 root 폴더에 1.jpg가 올라가 있음을 볼 수 있는데요. 사실 이는 원하는 방..
리눅스에서 mkdir는 디렉토리를 만드는 명령어입니다. 말 그대로 mkdir DIRECTORY는, DIRECTORY를 생성하는데 없으면 생성합니다. 있으면 어떻게 될까요? 혹은, 디렉토리를 만들려고 하는데 parent directory가 없는 경우에 어떻게 될까요? 이 케이스들을 각각 보면서 -p 옵션에 대해 이해해 보도록 하겠습니다. 먼저 -p는 이미 디렉토리가 존재하는 경우, 에러를 떨어트리지 않습니다. 그리고, 필요한 경우에 부모 디렉토리를 만듭니다. 이걸 역으로 보면 -p가 없다면 디렉토리가 존재하는 경우에 에러를 떨어트립니다. 그리고, 필요한 경우에 부모 디렉토리를 만들지 않을 겁니다. 현재 저는 test3에 들어와 있습니다. mkdir t1으로, 디렉토리 t1을 만들었습니다. 그 다음에 tre..
최근댓글