1.TS를 사용할 때 JS파일이 생성되어 있지 않을 수 있기 때문에 defer속성을 사용해 있을 때 적용하는 방식으로 해야 에러가 나지 않는다.
<script src="main.js" defer></script>
http://www.tcpschool.com/에 따르면
defer 속성은 bollean 속성으로 명시되지 않으면 false값을 가지며
명시된경우 true값을 가지며
async와 defer를 비교해보면
async만 명시된 경우 브라우저가 파싱되는 동안에도 스크립트가 실행되며
async속성이 없이 defer만 있는 경우 파싱이 모두 끝나면 스크립트가 실행되고
async, defer 모두 명시되지 않은 경우 파싱 전 스크립트를 바로 실행시킨다.
하지만 이는 script를 상단에 위치시킬 경우에만 그렇고
script를 하단에 위치시키면 전체 문서가 파싱될 때 까지 다운로드가 진행되지 않아 위에 언급한 일들은 무의미한 일이 된다.
정리하자면
-바로 실행을 원할 경우 head 부분에 특정값 없이 script를 위치시킨다.
-파싱과 병렬적 다운로드 후 파싱이 끝난 후 js즉시 실행은 head에 defer
-파싱과 병렬적 다운로드하지만 다운이 끝나면 파싱 도중에 js를 실행하는 방식은 head에 async
-파싱, 다운로드, 실행 순서를 원할 경우 body 하단에 script를 넣어준다.
결국 스크립트 동작이 최우선인 특정상황이 아닌 이상
병렬적 다운이 가능한 defer가 최선임을 알 수 있었다.
2.npm init을 터미널에 입력후 기본 세팅으로(엔터) 작성하면 package.json 파일을 생성해 node.js를 사용할 수 있다.
npm install --save-dev lite-server을 통해 종속성으로 설치하라고 하지만
사실은 큰 의미가 없다는 사실은 이전에 검색을 통해 확인했었다.
--save자체가 default가 되어 사용되지 않고 있다는 것은 알지만
--save-dev를 대체하는 명령어가 -dev인건지 --save-dev인건지는
정확하게 모르고 있기 때문에 npm docs를 확인해보니
--save는 npm5부터 자동적용이지만 관련 키워드들은 모두 --save를 사용하고 있었다.
아래와 같이 저장 명령어들이 있었으며
-D, --save-dev = devDependencies에 추가
-O, --save-optional = optionalDependencies에 추가
--no-save = dependencies에 추가하지 않기
-B, --save-bundle = bundleDependencies에도 추가하기
-E, --save-exact = 정확한 버전 표기(원래는 npm 버전에 따라 저장되는 기본값이 있는듯하다)
npm install --save-dev lite-server 대신
npm install -D lite-server라고 입력하면 된다는 사실도 알게 되었다.
(물론 이전 버전의 값들도 제대로 동작하긴 한다)
3.특정 툴을 설치하고 명령어로 사용하고 싶은 경우
package.json 파일 scripts 객체 내부에
keyword : "toolName" 방식으로 추가해
특정 키워드 입력 시 특정 툴을 작동시킬 수 있다.
4.DIGEST인증은 BASIC 인증의 약점을 보환한 방식으로
상대방에게 챌린지 코드를 요청한 다음
받은 챌린지 코드를 통해 변환한 값을 보내는 방식으로 본인임을 인증한다.
클라이언트에서 요청을 보낼 때
서버에서는 인증이 필요하다는 의미의 401코드와 함께 챌린지 코드를 전송한다.
클라이언트는 챌린지 코드를 통해 구한 값을 Authorization으로 반환한다.
헤더에는 username, realm, nonce, uri, response등이 포함되어야 하며
realm, nonce는 서버에서 받은 값을 그대로 반환한다.
5.SSL"클라이언트"인증은 클라이언트 인증서를 이용하는 방식으로
서버에서 요청을 받을 경우 인증이 필요한 리소스라면
Certificate Request라는 메세지를 보내고
클라이언트에서는 증명서를 선택해 전송한 다음
서버에서 확인 후 클라이언트의 공개키를 취득해 HTTPS 통신을 개시한다.
SSL 클라이언트 인증만 단독으로 사용되기보다는
폼 베이스 인증과 함께 2-factor 인증으로 사용되는 것이 일반적이다.
6.폼 베이스 인증은 사전에 등록한 정보(id, password 등)을 입력 후
일치하는 데이터 여부에 따라 연결을 인증한다.
HTTP는 stateless의 특성을 가지고 있기 때문에
사용자가 폼 베이스 인증으로 인증을 마친 경우
사용자의 정보를 기록한 다음 해당 세션 ID를 생성해 제공한다.
사용자는 이 세션 ID를 통해 본인이 인증된 사용자임을 확인받으며
실시간으로 데이터를 요청할 수 있게 된다.
다만 주로 이용하는 쿠키방식에서 장기간으로 유지할 경우
탈취되면 문제가 생길 수 있기 때문에 보안이 중요한 사이트의 경우
우리가 자주 보는 xx분 후 자동 로그아웃 등을 볼 수 있다.
7.소수점의 표현방식에는 고정 소수점과 부동 소수점이 있는데
고정 소수점은 부호, 정수, 소수를 구분해 +- / 37. / .4287 등으로 나눈다.
단순한 구분이라 사용은 쉽지만 범위가 너무 작기 때문에 활용하기는 힘들다는 단점이 있다.(부호1, 정수15, 소수16비트)
부동 소수점은 실수를 가수+지수로 표현하는데
부호, 지수, 가수로 분리해 +- / 3.23 / 10^-2 형태로 나뉜다.(부호1, 지수8, 가수23비트)
지수의 값을 기준으로 지수보다는 작지만 1보다는 큰 수치로 표현하기 때문에
지수의 기준값이 2라면 앞자리는 항상 1.xx로 고정되는 것을 볼 수 있다.
엄청나게 크고 작은 수치를 자유자재로 표현할 수 있다는 장점이 있지만
거의 모든 숫자를 부정확하게 나타낸다는 치명적 단점도 있다.
예를 들어 교환법칙까지는 성립하지만 결합법칙 또는 분배법칙이 성립하지 않는다.
게다가 𝝅의 표기도 정확하게 나오지 않기 때문에 sin, tan등의 계산이 제대로 처리되지 않는다.
(1).백준 2975 Transactions는 은행에서의 입/출금을 관리하는 시스템이며 마이너스통장느낌으로 -200$까지는 허용되는 구조였다.
인출요청인 경우 현재 잔액+200보다 인출금액이 클 경우에는 "Not allowed"를 출력했으며 나머지의 경우는 금액을 계산해 출력해 해결했다.
let input = `10000 W 10
-200 D 300
50 W 300
0 W 0`.split('\n')
let result = []
for(let i = 0 ; i < input.length-1 ; i++){
let [a,b,c] = input[i].split(' ')
if(b === "W"){
if(Number(a)+200-Number(c) >= 0){
result.push(Number(a)-Number(c))
}
else{
result.push("Not allowed")
}
}
else{
result.push(Number(a)+Number(c))
}
}
console.log(result.join('\n'))

'회고' 카테고리의 다른 글
| [취업준비일지] - 22 (0) | 2022.11.11 |
|---|---|
| [취업준비일지] - 21 (0) | 2022.11.10 |
| [취업준비일지] - 19 (0) | 2022.11.08 |
| [취업준비일지] - 18 (0) | 2022.11.07 |
| [취업준비일지] - 17 (1) | 2022.11.06 |
