###### tags: `2020 Boostcamp` # Day15-학습정리 ### 스스로 확인할 사항 - **URL 구성 체계에 대해서 이해하고 학습한다.** - `<스킴>://<사용자이름>:<비밀번호>@<호스트>:<포트>/<경로>?<질의>#<프레그먼트>` - Scheme - 사용할 프로토콜을 말하며, 리소스에 어떻게 요청, 접근할 것인지를 명시 - 웹에서 주로 HTTP 프로토콜을 사용 - 그 밖에 ftp, mailto(이메일), rtsp(스트리밍)과 같은 프로토콜을 사용 가능 - Username & Password - 어떤 서버들은 자신이 가지고 있는 데이터에 접근하기 위해서 사용자의 이름과 비밀번호를 요구 `ftp://admin:12345@호스트/afeg.xls` - 서버에서 사용자이름과 비밀번호를 요구하는 URL 스킴을 사용함에도 클라이언트가 이를 명시하지 않고 URL에 접근한다면, 기본값으로 "사용자 이름 : anonumous , 비밀번호는 브라우저에서 제공하는 기본 값"을 따르게 됨 - Host & Port - 하나의 Host( 컴퓨터 )에는 여러 개의 Process가 각각의 Socket 을 사용하여 데이터 통신을 하고 있기 때문에, 각각의 소켓을 구분해야 함 - 이 때 소켓을 구분하는 역할을 하는 것이 Port - HTTP 프로토콜에서 포트 번호를 명시하지 않으면, 80번 포트를 기본 값으로 사용 - Path - 호스트에서 제공하는 자원의 경로를 의미 ` https://movie.naver.com/movie/running/current.nhn` - Query - Query String (쿼리 스트링)이라고도 함 - 클라이언트가 자원을 GET 방식으로 요청할 때, 필요한 데이터를 함께 넘겨 줄 목적으로 사용 - 함수에 쓰이는 파라미터와 비슷한 개념 ` http://localhost:3000/index?id=3&page=1` - Fragment - URL에 프래그먼트를 전달하면 페이지가 해당 id가 있는 곳으로 스크롤이 이동 ` http://victorydntmd.tistory.com/287#bottom` - **정규 표현식 다양한 문법을 종류를 학습하고 구현에 필요했던 내용을 중심으로 정리한다.** - 정규 표현식 - 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어 - 주로 Programming Language나 Text Editor 등 에서 문자열의 검색과 치환을 위한 용도로 쓰임 - 코드가 간단한 만큼 가독성이 떨어져서 표현식을 숙지하지 않으면 이해하기 힘듬 ![](https://i.imgur.com/SztFftj.png) - 문법 ![](https://i.imgur.com/0JMIBPa.png) ![](https://i.imgur.com/ZTu3QhL.png) - **파운데이션 URL 개발자 문서를 확인해서 구현한 내용과 비교한다.** - URL을 만들고 parts에 접근 할 수 있다는 점에서 유사함 - init이 optional임 - baseURL, fragment, relativePath, standardized 등의 다양한 property 존재 - Bookmark Data를 다룰 수 있음 - 해당 URL의 Reachability 를 체크할 수 있음 ### 다같이 확인할 사항 - **URL Encoding 은 무엇이고, 왜 필요한지 자기만의 방식으로 설명한다.** - `URL Encoding` - 문자나 특수문자를 웹 서버와 브라우저에서 보편적으로 허용되는 형식으로 변화하는 메커니즘 - ASCII 문자 집합을 사용하여 인터넷을 통해서만 전송 가능 - URL은 유효한 ASCII 형식으로 변환되어야 함 - 안전하지 않은 ASCII 문자를 "%" 다음에 두 개의 16진수로 대체 - URL은 공백을 포함할 수 없음. URL 인코딩은 일반적으로 공백을 `더하기 (+) 기호` 또는` % 20`으로 바꿈 - `"헬로우 WORLD" --> text=%ED%97%AC%EB%A1%9C%EC%9A%B0+WORLD` - 세상에 다양한 문자가 존재하고, 이를 일반화 시켜 web을 이용하기 위해선 인코딩이 불가피하다‼️ - **정규 표현식을 활용하는 다양한 사례를 찾아보고 비교해본다.** - 개인정보 유출 탐지 - 웹 크롤링 - 검색 엔진 - Syntax highlighting - 데이터 검증