###### 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 등 에서 문자열의 검색과 치환을 위한 용도로 쓰임
- 코드가 간단한 만큼 가독성이 떨어져서 표현식을 숙지하지 않으면 이해하기 힘듬

- 문법


- **파운데이션 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
- 데이터 검증