하브루타는 우테코 크루끼리 진행하는 스터디이다. 진행 방식은 큰 주제를 정해주고, 페어를 매칭하여 서로에게 주제에 관한 질문을 한다. 그 후에 주제에 관한 질문을 보고 공부를 해서 그것에 관해 토론하고 회고하는 방식이다.
참여한 이유는 보통의 스터디가 아닌 토론과 회고의 방식이 마음에 들었으며, 이번 주제 같은 경우에는 이벤트였는데 이렇게 큰 주제를 주어서 기존에 생각하지도 못하던 지식을 얻을 수 있다고 생각했기 때문이다.
이번에도 이벤트하면 보통 나오는 이벤트 전파, 이벤트 위임, target/currentTarget/eventPhase와 같은 것 뿐만 아니라 쿼크 모드, 캡처링 방법, keyup/keydown 이벤트 등록 후 한글을 입력하고 엔터를 누를 경우 2번 호출되는 이유를 어느 정도 알게 되었다.
간단히 설명하면 쿼크 모드는 W3C 웹 표준이 정해지기 전에 나온 오래된 웹사이트의 경우에는 표준을 지키지 않았기 때문에 렌더링 시 깨져보이게 되는데, 이것을 방지하기 위한 모드이다.
그래서 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
이 할당되어 있다면 쿼크 모드이고,
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd
이 할당되어 있다면 표준 모드이다. 우리가 보통 사용하는 <!DOCTYPE>
만 사용했을 경우에는 쿼크 모드로 되는 것 같다.
캡처링 방법은 addEventListener의 3번째 인자에 true를 부여하면 캡처링 타깃을 캐치할 수 있다고 한다.
keyup/keydown 이벤트에서 한글 입력 후 엔터를 눌렀을 때 두 번 호출되는 이유는 한글 입력 시 composing 과정을 거치는데, 이 경우에도 229라는 keyCode를 호출시키기 때문에 발생하는 오류라고 한다. 솔직히 정확하게 알지는 못했지만 keyup이나 keydown 대신 input 이벤트
를 사용하는 것이 좋다는 것을 알게 되었다. input 이벤트는 input의 value가 변할 때마다 호출되는 이벤트로 keyup과 비슷한 것 같다. 이 이벤트를 사용하면 엔터를 눌러도 두 번 호출되지 않는다. 이제는 input을 사용해야 할 것 같다.
지금까지 생각도 못했던 것들에 대해서 알게 되었고, 1시간 30분이 아깝지 않은 스터디였다. 앞으로도 열심히 참여할 생각이다.
사실 오늘은 진도를 많이 나갔어야 했는데 서버에 오류가 발생해서 api 호출을 못했다. 그래서 의욕도 생기지 않고, 이때 안 쉬면 언제 쉬지라는 생각에 페어랑 잡담도 많이 하고 글쓰기 미션도 진행하면서 쉬엄쉬엄 진행했다. 그래서 상상으로 라인 추가 기능을 구현했다.
라인이 은근히 신경써야 할 부분이 많았다. 라인은 역과 구간 모두와 연결되어 있기 때문에 자료 구조가 복잡하고, 만약 역을 바꾼다면 라인에서도 역의 이름이 바뀌어야 하고, 구간을 바꿀 때에도 마찬가지이다. 그래서 내일 수정 기능을 구현하게 되면 어려움을 겪을 것 같다.
오늘은 너무 쉰 것 같지만 가끔은 이렇게 에너지를 보충하는 것도 좋은 것 같다.
글쓰기 미션을 드디어 모든 크루에게 approve를 받아서 제출했다. 리뷰어께서 어떤 리뷰를 해주실지 궁금하다. 글쓰기 미션을 하면서 느낀 것은 글을 잘 쓰는 크루가 정말 많다는 것이다. 그리고 우테코에서 생활하면서 느낀 점이 다들 비슷하다는 것도 신기했다. 대부분이 공감가는 내용이였고, 그래서 더 재미있게 글을 읽을 수 있었던 것 같다.
한 크루는 성장할 수 있다는 자신감이 넘쳐보였는데, 그 자신감이 정말로 부러웠고 멋있었다.