2019년 12월 31일 화요일

RealWorld 예제 애플리케이션

다양한 프론트엔드와 백엔드로  Medium과 유사한 Conduit을 어떻게 만들었는지 살펴볼 수 있는 사이트.

https://realworld.io (https://github.com/gothinkster/realworld)


2019년 12월 10일 화요일

책 좀 읽자

역사 관련 책들 몇 권 읽은 후 유시민의 역사의 역사를 붙들고부터는 진도가 나가질 않는다. 재미가 없다.다른 책을 봐야겠다.

2019년 10월 18일 금요일

아이맥 (iMac 2009) 살아나다.

다시 살아난 아이맥에서 글을 쓴다.

어제 저녁에 이베이에서 택배가 도착. 기쁜 마음에 포장을 뜯는데.. 정말 여러겹으로 포장을 해놨다.

저녁식사를 마치고.. 어디 시작해볼까..했는데.. 서멀 구리스가 없다.

쿠팡 로켓배송으로 주문. (요즘 왠만하면 쿠팡에서 구입한다)

오늘 서멀구리스 도착.

본체를 눕혀 놓고 작업 시작. 하도 분해를 여러번 해봐서, 별 어려움이 없이 진행.

비디오 카드를 교체하고 부팅. 요즘 맥에서는 나오지 않는 부팅 사운드.


유튜브를 한참 재생시켜도 문제가 없다.

그런데... 열이 좀 난다. 특히 Power Supply Heat Sink의 온도가 80도까지 올라간다.

시간내서 냉각팬들 청소 좀 해야겠다.

일단은 Mac Fan Control로 팬 속도를 약간 높여서 사용중.

웹 브라우징과 유튜브 보는 정도의 용도로는 부족함이 없다.

- 2019.12.10

현재는 큰 아이의 음악 작업(?)용으로 사용되고 있다. LMMS로 뭔가 만들어 내고 있다.

- 2020. 7.11

요즘은 둘째가 마인크래프트를 할 때 주로 사용되고 있다.

 

2015.11.08: 아이맥 비디오 카드 수리 (iMac 2009)
2017.03.07: 1년 3개월만에 재수리.
2017.06.18: iMac 2009 비디오 카드 사망
2018.02.22: iMac 2009 비디오 카드 수리 - 칩셋 교체
2018.10.20: iMac 2009 은퇴 (하려고 했으나)
2019.10.11: 아이맥(iMac 2009) 비디오 카드 주문
2019.10.18: 아이맥 (iMac 2009) 살아나다.

2019년 10월 11일 금요일

아이맥(iMac 2009) 비디오 카드 주문

작년에 사무실에서 밤새 (지금은 사라진) 맥 부팅 사운드를 연주하던 아이맥이 집으로 돌아온 후 정상 동작하는 듯했으나, 비디오만 재생하면 죽는다. 이제는 잠시 부팅이 되어도 화면에 줄을 그으면서 주무심.

이베이에서 아이맥용 비디오카드를 주문. 몇년 전보다 절반 아래로 가격이 내려갔다.

배송대행업체를 통해서 도착하면 장착해보고, 다시 이어서 쓰자.

2015.11.08: 아이맥 비디오 카드 수리 (iMac 2009)
2017.03.07: 1년 3개월만에 재수리.
2017.06.18: iMac 2009 비디오 카드 사망
2018.02.22: iMac 2009 비디오 카드 수리 - 칩셋 교체
2018.10.20: iMac 2009 은퇴 (하려고 했으나)
2019.10.11: 아이맥(iMac 2009) 비디오 카드 주문
2019.10.18: 아이맥 (iMac 2009) 살아나다. 

 

2019년 3월 22일 금요일

유니버설 랭귀지 - 박문호의 자연과학 세상

수학



함께 자라기 - 김창준

초록색 표지. 함께 잘하기가 아니라 함께 자라기.

지난 주에 읽은 후 아직도 생각나는 것은, 결국 모든 것은 사람에게서 시작한다는 것.


2019년 2월 8일 금요일

한겨울의 자전거 라이딩

잠시 사무실에 다녀올 일이 생겼다. 자전거를 타고 가보자며, 단단히 챙긴다. 마스크를 두 겹으로 쓰고, 장갑도 두 개를 끼고, 두꺼운 점퍼를 입고 나섰다. 사무실까지는 자전거로 15분 거리. 그리 멀지 않아서 봄 가을에는 분당까지 올라갔다가 돌아서 사무실에 가기도 한다.

달리다 보니, 다리가 춥다. 발도 춥다. 손은 조금 시리지만 견딜만 하다.

사무실에서 잠시 은행 일을 보고, 다시 집으로 출발하려는데, 샤오미 치 사이클 배터리가 30% 정도 밖에 없다. 사무실에 도착하고 바로 배터리를 연결해놨어야 하는데, 깜빡 잊었네. 10분 정도 충전을 하고, 배터리도 챙겨서 집으로 출발.

오후 5시 30분을 넘으니 아까 보다 더 춥다. 다리와 신발쪽만 좀더 보강하면 겨울에도 자전거로 사무실 왕복을 할 수 있을 것 같다. 갈 때와 달리 올 때는 계속 오르막이라 전기 자전거임에도 숨이 차고 덥다.

아침에 수영장에서도 약간 감기 기운이 있더니, 좀더 진행이 되는 것 같아서 얼른 생강차를 한 잔 마신다. 수영장에서의 감기 기운은 평소에도 가끔 생길 때가 있다. 뜨거운 탕에 몸을 한참 담그고 있으면 괜찮아 지는데, 오늘은 그러지 않고 집에 돌아 왔더니 감기 기운이 조금 남은데다, 찬 바람을 맞으며 자전거를 타고 다녀와서 그런가 보다.


2019년 2월 2일 토요일

퍼니셔 시즌 2

러시아 거물의 집 안에서 총소리가 나고
존이 아들 둘을 차에 태우고 운전석에 오르고
캐슬은 에이미를 데리고 떠나는
그 장면을 위해 봄부터 소쩍새는.

광풍(Whirlwind)은 캐슬의 그바닥 예명인가?

2019년 2월 1일 금요일

나도 사보는 QCY T1

지난 1월 12일에 주문을 해서 1월 30일에 도착했다.

첫인상은, 무척 가볍다는 것. 처음에는 귀에 끼우는 방향을 몰라서 좌우가 맞나 헷갈렸다.

음질은 역시나 그간 봐왔던 평가들처럼 저음이 많고 뭉게지는 경향이 있다. 폼팁으로 바꾸면 많이 나아진다고 해서 TB400을 주문하려고 한다.

문제는 오디오 딜레이.



공이 아래에 떨어져서 좌에서 우로 움직이는 막대에 닿는 시점에 소리가 나지 않고
대략 0.2초 정도의 딜레이가 있다.

에어팟과 오디오테크니카 블루투스 헤드폰으로 테스트를 해보면 공이 막대에 닿는 순간 소리가 들린다.

팟캐스트나 오디오 전용으로 사용한다면, 에어팟 가격의 10분의 1로 이정도 품질이면 쓸만하다는 결론.

2019년 1월 30일 수요일

Multiple server instance 환경에서 form double submit을 server에서 검출하기

Client쪽에서 form의 submit이 중복되지 않도록 막는 방법은 여러가지가 알려져 있다. 모두 JavaScript에서 처리하는 방법들이고, 다양한 질문과 답변들을 찾아보면 개념적으로는 몇가지로 수렴한다.

다중 Server에서 form의 중복 submit을 검출하는 방법은 별로 쓸만한 것을 찾지 못했다.

Server instance가 여러 개이기 때문에 상태를 저장하기 위해 DB 등 외부의 node를 사용해야 한다. Form에 uuid 등 중복되지 않는 키를 할당하고 해당 키에 대해서 트랜잭션이 이미 발생했는지 여부를 DB에 query를 해서 확인하는 방식이다. 그런데, 이 방법은 불필요한 DB transaction이 발생하고, 일정 시간이 지난 후 불필요한 레코드들을 정리해야 해서 귀찮다.

Form이 submit되었을 때 uuid를 키로 사용해서 redis 또는 memcached에 item을 하나 생성해 놓는 것은 좀더 가벼운 해결책이 될 것 같다. 일정 시간이 지나면 cache item은 자동 정리가 되기 때문에 귀찮게 정리해줘야 할 일도 없다.

문제는, cache에 기록하는 작업이 끝나기 전에 cache를 읽으려고 할 때 발생. 두번의 form submit이 발생하는 사이 동일한 시간 간격으로 cache에 접근하려고 할텐데, overlap이 발생하면 중복된 submit을 알아챌 수 없다. django-lock-tokens같은 프로젝트는 resource에 대한 lock을 하는 방식. 그런데, 마찬가지의 문제가 있을 것 같다.

좋은 방법이 없을까?

How to manage concurrency in Django models를 보면 select_for_update를 사용해서 transaction이 끝날 때까지 lock을 하는 (pessimistic) 방법이 나온다.

우리가 사용하는 cache backend는 Redis이니 Distributed locks with Redis에서 제공하는 방법도 좋을 것 같다.