전체 글 97

파이썬에서 팩토리얼을 구현한 방법 (파이썬 Factorial : binary splitting)

글을 읽기 전에 아래 글을 먼저 읽는 것이 도움됩니다 (팩토리얼에서 recursion 대신 divide and conquer를 쓰는 이유) https://jhong92-pro.github.io/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98/%ED%8C%A9%ED%86%A0%EB%A6%AC%EC%96%BC-%EC%8B%9C%EA%B0%84%EB%B3%B5%EC%9E%A1%EB%8F%84-recursion/ 팩토리얼 시간복잡도 - recursion 기본적인 팩토리얼 함수(recursion) def factorial(n): output = 1 for i in range(1,n+1): output*=i return output 위 함수의 시간복잡도는 O(n)이라고 생각들지만 그렇지 않습니다...

알고리즘 2022.11.14

https SSL 인증서 작동 원리

http 전송방식은 암호화되지 않기 때문에 변조될 가능성이 있다. 이를 보완한 것이 https 방식이다 http 전송에 SSL(Secure Sockets Layer)으로 암호화한 것이 https이다 https는 공개키 기반 알고리즘 방식(PKI : Public Key Infrastructure)을 쓴다. 암호화 분류 방식 [A에서 B로 데이터(txt)를 전달할때..] 비대칭키 암호화(PKI) - 공개키(public) / 비밀키(private) 두 가지의 키를 한 쌍으로 암호화 / 복호화한다 - 공개키로 암호화한 데이터는 비밀키로만 복호화할 수 있다 비밀키로 암호화한 데이터를 공개키로 복호화하는 것도 가능 - 공개키는 모두에게 공개되어도 상관없고 비밀키는 B만 가지고 있다 - A는 txt를 공개키로 암호화..

MYSQL : Master Slave replication

DB를 이중화하기 위한 방법 중 하나로 Master DB / Slave DB 를 구성할 수 있다 서버에 의해 DBMS에 요청이 들어왔을 때, Master는 쓰기만 하고 Slave는 읽기만 한다 Master와 Slave 간의 동기화를 맞추기 위해 기본적으로 비동기로 Slave가 Master의 데이터를 받는다 비동기 방식에는 아래 두 가지가 있다 fully async : replica를 기다리지 않음 semi async : replica의 acknowledge를 기다림 [기본값] Slave가 데이터를 동기화하는 과정 1. Master DB는 write 발생 시 binary log(dump file) 생성 2. Dump thread : Slave의 I/O thread 요청 시 스레드 시작, dump 파일 전달..

Pytorch : 'RuntimeError: CUDA out of memory.'

파이토치 GPU 메모리 부족시 해결 방안 1. 메모리 제거 torch.cuda.empty_cache() GPU에서 사용하지 않는 cached memory를 제거 2. eval 단계에서 gradient 계산안하게 설정 with torch.no_grad(): eval 단계에서는 back propagation을 수행하지 않기 때문에 gradient 계산을 하지 않아도 된다 torch.no_grad()로 설정 가능하다 KoBERT NSMC finetuning 에서도 아래와 같이 test accuracy 계산 시 적용 가능하다 https://github.com/SKTBrain/KoBERT/blob/master/scripts/NSMC/naver_review_classifications_pytorch_kobert.i..

인공지능/기타 2022.11.10

NAT : Network Address Translation

사설IP : 라우터(공유기) 내에서 연결된 IP주소, 라우터(공유기)가 연결된 장치를 식별하기 위해 쓰는 IP주소 - 와이파이에 연결된 기기는 각각 공인IP를 가지는 것이 아닌 사설IP를 가진다(IPv4 개수의 한계) NAT : 사설IP와 공인IP가 통신하기 위해 IP주소를 변경하는 것을 의미한다그림상 10.0.0.0/8 의 사설IP 대역은 와이파이를 거치면 공인IP로 변환된다.  와이파이에 연결된 기기의 사설IP, 10.0.0.3 / 10.0.0.4 는 둘 다 NAT를 통해 123.123.123.123으로 변환된다.티스토리 서버는 두 기기의 신호가 모두 공유기의 공인IP 주소(123.123.123.123)로 전달받는다고 식별한다.따라서 NAT로 변환된 IP로는 두 기기(10.0.0.3 / 10.0.0...

DNS name server IP 확인하는 법

nslookup -type=ns [도메인명] 으로 IP 주소 조회 가능, 또는 nameserver를 nslookup (ex. nslookup ns1.naver.com) 1. ns2.naver.com / ns1.naver.com 두 개의 ns record 조회 2. 권한없는 응답 = Non-authoritative answer = authoritative DNS에서 가져온 IP 가 아님 = DNS의 캐시를 통해 가져온 응답 Private Hosted Zone Private Hosted Zone 사용 시 아래 4개의 name server를 사용한다 ( Private Hosted Zone : VPC 내부용 DNS ) ns-0.awsdns-00.com ns-512.awsdns-00.net ns-1024.awsd..