DOM 에 대한 일반적 인사이트를 얻고, 중요 개념들을 찾아볼 수 있도록 인덱싱 해놓기 위해 읽는다.
DOM 이란, HTML 문서를 해석하여 개체(element) 들의 tree 로 구조화 한 것을 말한다.
DOM 의 하위 개체는 상위 개체의 속성과 메소드를 상속받는다.
하위 개체는 개체의 유형에 따라 구분되어 있으며, type 속성을 이용해서 유형을 알 수 있다.
element.childNodes 와 같이 여러개의 개체를 포함하는 collection 이 정의되어 있다. 이들은 길이값을 갖긴 하지만, 배열이 아니다. 따라서, 배열 메서드를 사용할 수 없으면, 배열 메서드를 이용한 연산을 해주기 위해서는 배열로 변환해 주어야 한다.
개체의 속성을 통해서 자식개체, 부모개체 및 형제 개체를 탐색할 수 있다. 이들의 참조는 상위 개체인 Node 에 있는 속성으로, 상속받은 하위 개체들에서 동일하게 사용할 수 있다.
개체의 유형은 element 만 있는 것이 아니다. comment 개체와 text 개체도 여기에 포함된다. 따라서 childNodes 와 같은 속성을 사용하면, 이들 개체까지 모두 들어있는 값을 얻게 된다. 이는 일반적으로는 적절하지 않으므로,
다음과 같이 element 만을 탐색할 수 있는 방법도 존재한다.
문제: https://programmers.co.kr/learn/courses/30/lessons/42883?language=python3
풀이:
문서 전체에 대한 정보, 브라우저에 대한 정보를 얻을 수 있다. 현재 문서가 어디에 포커스 되어 있는지도 확인이 가능하다.
document 노드에서 createElement 메서드를 사용하면, element 노드를 생성할 수 있다. element 의 속성을 변경하거나 class 를 조작하는 등의 연산을 해줄 수 있다. HTMLElement 의 종류에는 다양한 것들이 있지만, 위의 기능은 기본적으로 제공한다.
css 의 selector 와 같은 값을 이용하거나, id, tagName 등을 사용해서 element 를 선택해줄 수 있다.
강제 브라우징은 접근을 원하지 않는 경로로 강제로 브라우징 해서 리소스를 얻는 공격이다. 특정 URL 에 권한을 설정해놓지 않은 경우에 이러한 공격에 취약해진다.
둘 모두 사용자의 인증을 가로채는 것이다. 전자는, 사용자의 세션아이디를 가로채서 서버로의 요청을 하고, 후자는 공격자가 세션 id 를 발급받은 후에 해당 id 로 사용자에게 인증을 받도록 하여 공격하는 방식을 취한다.
마음이 급해서는 안되는 것 같다. 무언가 이루어지게 하려면 충분한 양의 관심을 투입해야 한다. 즉, 해당 시간에 집중적 에너지를 온전히 투입하는 것이 핵심이다. 그러기 위해서는, 서두름 보다는 문제의 범위를 제한하고 작게 작게 지배해가는 것이 도움이 된다.
비틀어서 어떻게든 하려고 하지말자.
나에게 주어진 기회들에 감사한다. 노력할수 있고 시도할 수 있는것 자체가 좋다. 몸이 피곤하면 부정적 생각이 들때가 있지만, 굳이 논리적으로 해결하려고 하지 말자. 지나면 그만이다.
조그만 일을 하자. 할 수 있는 일을 하자.
나는 끝까지 헤쳐 나가는 사람이다.