썸네일 에어드롭(AirDrop)과 네트워크 어쩌다 보니 맥 - 아이폰 - 아이패드를 사용하고 있는데, 애플 기기가 제공하는 기능들 중에 제대로 작동하면 참 좋은데 안 되면 종잡을 수가 없는 것 중에 하나가 에어드롭(AirDrop)이다. 오늘도 아이패드에서 맥으로 전송이 안 되어서 한숨을 쉬다가, 에어드롭이 어떻게 작동하는 건지 네트워크 관점에서 좀 더 파보면 재미있겠다는 생각을 했다. 어떻게 작동하는 건지 알면 작동 안 할 때 그래도 조금이나마 감을 잡을 수 있지 않을까… 하는 희망을 안고! 에어드롭은 결국 와이파이다 일단 아래 글을 참조해 보자. AirDrop uses Bluetooth to create a peer-to-peer Wi-Fi network between the devices. That means you don't need to ..
썸네일 해시테이블 하나에 담긴 고민들 박재성 님의 Next-Step 스터디를 진행하면서 WAS를 구현하는 미션을 수행했다. 처음에는 HTTP Header를 HashMap 형태로 구현하다가 이런 고민이 생겼다. 결국 이 헤더를 순회해서 문자로 만든 다음에 쏴 줘야 하는데, HashMap은 요소들 간의 순서가 보장이 안 된다. 그렇다면 보낼 때마다 헤더 필드의 순서가 바뀌게 되는데… 물론 헤더 순서가 바뀌어도 작동은 잘 된다. 헤더 값만 결국에 들어있으면 되기 때문. 하지만 여기에도 일종의 컨벤션이 있을 것이다. 자료들을 찾아보면 대부분 Host → Accept → User-Agent 같은 순으로 일관된 공통분모가 있다. 물론 클라이언트와 서버의 명세에 따라 또 다른 헤더를 넣을 수도 있고, 요청마다 헤더에 담기는 정보들도 다르기 때문에 뭐라 ..
썸네일 백만 개 row를 수정하다가 트랜잭션을 롤백한다면? 요새 Hussein Nasser이라는 유쾌한 개발자 아조시의 Fundamentals of Database Engineering이라는 강의를 듣고 있는데, (엄청 재밌다!) 인덱스/트랜잭션 파트에서 꽤 재미있는 질문을 던지는 아티클을 읽었다. 아래는 아티클과 비슷한 내용을 담고 있는 이 아조시의 유튜브 비디오. 아조시 사는 데 어딘지 모르겠지만... 좋아 보이시네요 요약하자면, 엄청 많은 개수의 row를 수정하는 트랜잭션을 돌리다가 에러가 나서 해당 변경사항을 롤백하려면 시간이 많이 걸릴 텐데, 과연 DB는 어떻게 이 작업을 수행할까? 하는 질문이었다. 바로(Eagerly) 롤백하기 Lazy하게 롤백하기 DBMS마다 접근 방식이 다른데, 우선 해당 강의에서 주로 예시로 들고 있는 PostgreSQL에서는 ..
썸네일 외계어 같은 git 메시지들을 이해해 보자 깃을 CLI로 쓰다 보면 명령어를 칠 때마다 뜨는 메시지들이 있다. 사실 원하는 작업이 성공할 때는 이 메시지를 제대로 읽을 생각도 잘 안 하는데, 그러다가 예전에 detached HEAD로 갔다가 삽질했던 적이 있기도 하고, 개인적으로 깃을 쓰면 쓸수록 진짜 신기하고 좋은 기술이라는 생각이 들어서 어떻게 작동하는 건지 궁금하기도 했다. 그래서 아주 대표적인 명령어라고 할 수 있는 commit/push, pull, rebase/merge 메시지를 뜯어보면서 이 메시지들이 어떤 의미를 가지고 있는지, 그게 git의 동작 원리랑은 어떤 관계가 있는지 탐구해 보려고 한다. commit을 해보자 자, test1.txt라는 파일에 “This is test!”라는 내용을 적어 커밋한다고 생각해 보자. git add..
썸네일 그래서 다익스트라는 얼마나 걸리는 거예요? 알고리즘 공부를 하다가, 다익스트라 알고리즘 관련한 부분에서 다음과 같은 내용을 마주했다. 다익스트라의 최초 구현에서는 시간 복잡도가 O(V^2)였으나, 현재는 너비 우선 탐색 시 가장 가까운 순서를 찾을 때 우선순위 큐를 적용하여 이 경우 시간 복잡도는 O((V+E)log V), 모든 정점이 출발지에서 도달이 가능하다면 최종적으로 O(E log V)가 된다. 372p 어... 음... 최단경로 뿐만 아니라 전반적인 그래프 활용 알고리즘에서 시간복잡도 표기가 잘 이해가 안 되는 느낌이었는데, 그냥 대충 이런 느낌이네~ 하고 넘어갔더니 이렇게 자료구조 활용에 따른 최적화 같은 중요한 내용도 잘 안 와닿게 된다. 그래서 위 문장을 하나하나 뜯어보면서 풀이해 보려고 한다. 이 글에서는 다익스트라 알고리즘의 기..
관계형 모델은 DB를 어떻게 바꾸었을까? MIT OpenCourseWare의 강의 자료와 과제를 수행하면서 공부하고 고민한 내용들을 정리합니다. 우선은 제가 이해한 만큼 정리하고 공부를 계속해 나가면서 수정할 예정입니다. 읽으시면서 잘못된 부분들은 언제든지 지적해 주세요! 관계형 모델 이전의 데이터베이스 관계형 모델이 등장하기 전의 데이터베이스는 계층형(hierachical) 모델을 기반으로 했다. IMS는 계층형 모델의 대표주자로, 트리 구조로 데이터를 저장한다. 이 과정에서 필연적으로 데이터의 중복이 발생하게 된다. 예를 들어서 사육사 | 우리(Cage) | 동물 와 같은 구조의 데이터베이스가 있다면 같은 우리를 공유하지만 사육사가 다른 동물의 경우에는 우리에 관한 데이터는 사실상 중복되게 된다. 또한 IMS의 트리 구조로는 Parent를 ..