전체 글
-
부동소수점 방식에서 0.1*0.1 이 0.01이 아닌 이유와 해결 방법컴퓨터공학 2024. 5. 10. 12:48
부동소수점 방식을 사용할 때 0.1*0.1은 0.01이 아니다. 크롬 개발자도구 등을 열어 0.1 * 0.1 을 계산해보면 알 수 있다. 왜 이럴까?부동소수점 방식(IEEE 754)으로 저장된 십진수 0.1은 근사치를 사용하게 된다. 왜 근사치를 사용하는지, 왜 오차가 생기는지 알기 위해서는 0.1이 어떻게 표현되는지 알아야 한다. 이전 포스팅에서 자세한 내용을 설명했는데 링크를 남겨놓는다. (자세한 부동소수점 내용은 다음 글 참조: https://bako94.tistory.com/328)간단히 리마인드하자면, 부동소수점 방식에서는 소수점 오른쪽에 있는 숫자들을 2진수로 변환할때 2를 곱하는 것을 반복하여 0과 1을 뽑아내게 되는데, 0.1의 경우는 2를 곱하는 과정을 무한히 반복하여도 x.0의 형태..
-
부동소수점 곱셈 방법컴퓨터공학 2024. 5. 9. 15:43
부동소수점을 곱셈하는 방법은 간단하다.우리가 잘 알고 있는 10진수 곱셈 방식을 사용한다. 10진수 곱셈 방법을 먼저 살펴보자30 x 50 = 1500이다. 구체적인 과정은 (3x10)x(5x10) = (3x5)x(10x10) = (15)x(10^2) = 15x10^2 와 같은 방식을 따른다.2진수 곱셈 방법을 살펴보자0.25 는 0.01(2) , 4는 100(2)이다. 아래에서는 2진수의 (2)는 생략0.01 x 100 = (1.00x 2^-2) x (1x2^2) = (1.00x1)x(2^-2 x 2^2) = (1.00) x (2^0) = (1.00)x1 = 1.00 이다.10진수로 0.25 x 4 를 하여도 1이 나오는데 1은 2진수로도 1이니 잘 계산된 것을 알 수 있다.곱셈은 십진수를 계산하던 것..
-
소수점을 표현하는 방법웹(web) 2024. 5. 8. 23:04
1) 이진기수법인간은 기본적으로 10진법을 사용하지만, 컴퓨터가 이해할 수 있는 숫자는 0과 1 뿐이다. 컴퓨터는 숫자와 문자, 이미지와 같은 데이터를 0과 1 만을 사용하여 저장한다. 0과 1을 사용하는 방법을 2진법이라 부른다.따라서, 컴퓨터에서 소수점을 다루는 방법을 알려면 10진수로 표현된 소수점을 2진수로 어떻게 표현하는지 알아야한다.일단 소수점 앞부분은 기존 정수를 변환하는 방법과 동일하다. 소수점 뒤에 있는 숫자들을 하나씩 2진수로 바꿔버리는 방법을 생각해볼 수 있지만 그렇게 하면 아래 예시처럼 서로 다른 10진수 숫자가 2진수로 변환되었을 때 같아지는 문제가 있다.잘못된 변환 방법 예시) 변환된 2진수가 같아짐0.9 -> 0.10010.41 -> 0.100 1소수점 뒤에 숫자는 정수부에서..
-
csrf 이란웹(web) 2024. 5. 2. 22:04
csrf(cross-site request forgery)란 공격자가 웹 보안 공격 중 유저가 의도하지 않은 행동을 하게 하는 것인데, 다음 세 가지 조건을 만족해야 성립한다.1. 공격자가 의도한 행동이 어플리케이션 안에서 일어난다.2. 쿠키 기반 세션을 사용하는 어플리케이션이어야 한다.3. 어플리케이션 개발자가 예측하지 못한 요청 파라미터여야 한다.간단하게 예를 들면 쿠키 기반 세션을 가진 웹 어플리케이션이라면, 로그인 인증이 되면 클라이언트 측 쿠키에 세션 유지를 목적으로 특정한 값(세션 키 등) 저장하여 사용할 수 있다. 이후 클라이언트서버 간의 통신 간 쿠키에 세션 인증이 되는 값이 있기 때문에 별도의 인증 없이도 권한에 대한 인증이 통과된다. my-website.com 사이트에서 비밀번호 변경..
-
-
-
CIA 방해공작 메뉴얼카테고리 없음 2024. 1. 14. 23:47
CIA의 전신인 OSS 에서 1944년에 만든 “방해공작 메뉴얼” 입니다. 어떻게 하면 조직을 무너뜨릴 수 있는지, 현재 나의 조직은 해당 항목들을 하고 있지는 않은지 돌아봐도 좋을 거 같습니다. 원문: https://www.cia.gov/static/5c875f3ec660e092cf893f60b4a288df/SimpleSabotage.pdf http://www.simplesabotage.com/excerpt/ 핵심 내용은 다음과 같습니다. These are the eight tactics from the Simple Sabotage Field Manual: 1. “Insist on doing everything through ‘channels.’ Never permit short-cuts to be t..
-
ioredis 레디스 클러스터 설정웹(web)/백엔드 기초 2023. 11. 21. 18:38
레디스는 메모리 캐시로 disk i/o 에 비해 속도상 이점이 있으므로 빠른 처리를 필요로 할 때 이용할 수 있다. useCase로는 chat, response cache, 자주 조회되는 데이터, session manager, pub-sub 등 다양하다. (공식문서 참고: https://redis.com/solutions/use-cases) 레디스를 클러스터 방식으로 사용하는 이유는 클라이언트 입장에서 레디스가 죽지 않고 계속 서빙되도록 하기 위함이다. 최소 3개 이상의 master를 두어야하며 몇 가지 제약사항이 따른다. 이를 통해, 안정적인 레디스 서비스를 제공할 수 있다. nodejs 런타임에서 ioredis를 이용하여 클러스터를 설정하고자 하였는데 찾기가 어려웠다 단일 노드에 대한 사용은 많이 나..