3월, 2026의 게시물 표시

뾰루지

  뾰루지 얼굴에  뾰루지가 났는가? 몸이 건강하다면 곧 저절로 없어질 것이다. 마음에 생긴 뾰루지도 살펴라. 눈에 보이지 않기 때문에 더욱 신경써 관리해야 한다. 얼굴에 난 뾰루지와 마찬가지로 마음이 건강하다면 곧 사라질 것이다. 하지만 건강상태가 좋지 않다면 이 역시 점점 곪아갈 것이다.

Django update vs bulk_update

함수 QuerySet.update() bulk_update() 예시 MyModel.objects.filter(...).update(field=값) MyModel.objects.bulk_update(objs, ['field']) SQL UPDATE table SET field = 값 WHERE 조건 UPDATE table SET field = CASE WHEN id=1 THEN 값1 WHEN id=2 THEN 값2 END WHERE id IN (1,2) 차이 모든 row에 같은 값 row마다 다른 값 공통점 둘 다 save() 안 탐 pre_save / post_save signal 안 탐

Django 트랜젝션으로 동시성 처리

  조건에 맞는 경우만 처리 Check - then - Act 패턴 if 조건: 처리 잔고가 100원 이상이면 출금 여기서, 조건 확인과 처리는 반드시 하나의 트랜젝션으로 동작해야 한다. 위험! 만약 그렇지 않으면, Read - (gap) - Write 요청과 처리 사이(gap)에 다른 요청이 들어오는 경우. 요청1: 잔고가 100원 이상인가? YES 요청2: 잔고가 100원 이상인가? YES 처리1: 출금 100원, 잔고 0원 처리2: 출금 100원, 잔고 -100원? Django에서는 transaction.atomic 을 사용하여 트랜젝션을 임의로 설정한다. with transaction.atomic():             if 조건검사():                 처리() 그리고 select_for_update 를 사용하여 LOCK을 걸어 다른 요청은 대시킨다. qs = WorkTime.objects.select_for_update().filter(조건들) list(qs) # DB hit를 위해서 이렇게 하면 조건들에 해당하는 row들(qs)에만 LOCK이 걸린다. 트랜젝션이 끝날때 까지. 참고, 읽기만 하는건 LOCK과 무관 MVCC; Multi-Version Concurrency Control

우리에게 필요한 것은 우리다

이미지
지난날 우리는 얼마나 많은 땅을 피로 물들였는가 또 아직도 여전히 오늘도 그러고 있다 우리 문명은 과연 발전하고 있는가 지금 우리에게 필요한 것은 무엇일까 ㅇ TV로 보던 코소보 전쟁의 한 장면이 생생하다 전란중의 임시천막 앞에서 천진하게 뛰노는 아이들 모습에 나는 눈물을 멈추지 못했고 옆에 있던 친구는 왜 우냐고 물었다 전쟁은 내가 떠올릴 수 있는 가장 슬픈 것이다 ㅇ 대한민국도 손에 손잡고 88 서울 올림픽을 정점으로 이후에는 잡은 손을 놓는 추세로 가는 것 같다. 이제는 가족도 각자도생이란다. 어쩌다 우리는 이런 병에 걸렸을까 ㅇ 과거에 우리는 생산수단인 영토를 차지하기 위해 싸웠다 지금도 여전히 형태가 바뀐 자본을 손에 넣기위해 싸운다 더 큰 힘에 휩쓸리지 않기 위해서 힘을 기르려 싸우고 내가 천하제일이어도 감히 넘보지 못하게 누르려 싸운다 ㅇ 싸우고 또 싸운다 짖고 또 짖는다 작은 개가 짖는다 왈왈왈 두려움에 계속해서 짖어댄다 경쟁 시스템은 훌륭하다 스포츠 게임은 재미있지만 만약 규칙이 없고 반칙이 난무하다면 우리는 재미를 잃고 TV 채널을 돌린다 ㅇ 원자 단위로 생각해보자 어디까지가 나이고 너인가 지금 우리에게 필요한 것은 우리라는 공동체적 의식이다 ㅇ 끝