목록분류 전체보기 (385)
만족
Gradient Desent (경사 하강법) 경사 하강법은 cost의 변화량에 따라 파라미터를 움직여가며 cost가 최소가 되는 지점을 찾는 방법이다. J(w)를 cost를 계산하는 함수라고 했을 때, 우리는 J(cost)가 최소가 되면서 변화량이 최소가 되는 지점을 찾고 싶다. J가 최소가 되면서 변화량(미분계수)가 최소가 되는 지점을 찾을 때, w값을 움직여가면서 J'(w)의 값이 양수이면 J(w)가 커지고 있다는 뜻이므로 파라미터를 반대 방향으로 움직인다. => parameter의 변화에 따라 cost가 커지고 있으면 그 변화의 반대 방향으로 움직여야만 cost가 작아진다 반대로 J'(w) 값이 음수이면, cost가 줄어들고 있다는 뜻이므로 파라미터를 정방향으로 움직인다. 경사하강법: 사용 J의 변..
전자서명 전자적 데이터에 서명자에 대한 인증을 추가하는 것 비대칭 키를 이용해 서명할 때 개인키로 서명하고 공개키로 검증한다. => 서명: Signiture(M, 개인키) => 검증: Verify(S, 공개키) 따라서 서명은 본인만 할 수 있지만 검증은 공개키를 알고있는 모두가 할 수 있다. 전자서명: 해시 => 서명: Signiture(M, 개인키) => 검증: Verify(S, 공개키) 에서 M이 원본 메시지 그대로에 서명하는 것은 아니다. 메시지를 Hash해서 Hash(M)값에 대해 서명한다. 그러므로 더 정확하게는 => 서명: Signiture(Hash(M), 개인키) 가 맞다. 전자서명: 알고리즘 대표적으로 RSA알고리즘을 사용한다. RSA암호화와 기본 개념은 동일하지만, 여기에서 목적은 서명과..
암호화를 통해 복호화 키를 가지지 않은 사람은 메시지의 원문을 확인하지 못하게 할 수 있다. 대칭키 암호화 대칭키 암호화는 암호화 키와 복호화 키가 같은 암호화 방식을 발한다. 대칭키 암호화는 대표적으로 DES 암호화가 있다. https://yjshin.tistory.com/entry/%EC%95%94%ED%98%B8%ED%95%99-%EB%8C%80%EC%B9%AD%ED%82%A4-%EC%95%94%ED%98%B8-DESData-Encryption-Standard [암호학] 대칭키 암호 - DES(Data Encryption Standard) 데이터 암호화 표준 DES(Data Encryption standard) 1. 개요 DES는 대칭형 암호(비밀키 암호)이다. 즉, 암호화 및 복호화 키가 동일하다..
포맷 스트링 공격은 버퍼 오버플로우 공격과 매우 유사하다. 포맷 스트링 int main(){ char* buf= "str"; printf("%s", buf); } 위와 같이 %s 와 같이 출력 서식을 지정하는 문자를 포맷 스트링이라고 한다. 조금 특이한 %n에 대해서 알아볼 것이다. int main(){ int n; printf("hahaha%n", &n); } %n은 현재까지 출력된 바이트 수를 지정한 변수에 넣는다. 여기에서 %n 전에 출력된 문자열은 hahaha로 6byte이므로, n에 6이 들어간다. %n은 값을 4byte크기로 쓰기작업을 하는데, 만약 2byte만 쓰기에 사용하고 싶을 경우 %hn을 사용한다. 포맷 스트링 공격 원리 만약 printf에서 포맷 스트링을 사용하고 추가 인자를 넘겨주..
아직 블록체인에 대해 오래 공부하지는 않았기 때문에 틀린 내용이 있을 수 있으니 오해설을 발견하게 된다면 댓글을 통해 알려주시면 감사하겠습니다. https://bitcoin.org/files/bitcoin-paper/bitcoin_ko.pdf 이 포스트에서는 위 문서(비트코인 백서)를 해설할 것이다. 비트코인의 목적은 무엇인가? 기존의 인터넷 기반 상거래(쇼핑몰에서 물건 사기 등)에서 재화를 거래하기 위해서는 판매자와 구매자가 직접 재화를 거래하지 않고 금융기관과 같은 중개 기관을 통해 거래한다. 그러나 이런 중개 기관의 개입은 분쟁 등의 이유로 거래의 취소가 발생할 수 있기 때문에 서로 완전히 믿고 거래를 진행할 수 없다. 비트코인은 위 문제를 해결하기 위해 탄생한 1) 중앙통제를 받지 않고, 2) 거..
150분(2시간 30분)동안 3문제를 풀어야 한다. 프로그래머스를 통해 시험이 진행되며, 주어진 기간 내 아무때나 시험을 보면 되서 이 점은 지원자를 배려해준 것 같아 매우 감사했다. (여태까지 본 모든 회사들은 정해진 시간에 다같이 모여서 보는 방식이라 그 날 스케줄이 있을 경우 매우 곤란했다) 난이도는 쉬운 수준이였지만, 3문제 중 두 문제가 효율성 테스트(시간복잡도 줄이기)가 있어 조금 멈칫했다. 단순 문제의 정답을 맞추는 것(정확성 테스트)은 바로바로 가능했고, 효율성 테스트에서 2번 문제 10분, 3번 문제에서 30분정도 소모했다. 특히 3번 문제는 조금 황당했는데, 이분 탐색에 트리까지 써가며 일부 로직의 시간복잡도를 O(N^2)에서O(logN)으로 줄이면서 별 난리를 쳐도 안되던데 극단적으로..
문제 길이가 4인 [1,2,3,4] 배열이 있다. 여기에서 인덱스 0번부터 2번까지의 합을 구하라. 또, 인덱스 1번의 값을 10으로 변경했을 때의 인덱스 0번부터 2번까지의 합을 구해보라. 생각해볼 것 가장 간단한 방법은 주어진 범위(0~2)까지 배열을 순회하며 합계값을 구할 수 있다. 중간에 값이 바뀌면, 배열의 해당 인덱스의 값을 바꾼 후, 다시 주어진 범위에 대해 순회하며 합계값을 구할수 있다. 그러나 여기서 배열의 길이가 4가 아니라, 천만으로 증가하고 구간이 0~500만, 200만~700만, ... (구간의 길이가 500만)처럼 구해야 하는 누적합의 종류가 100가지라고 해보자. 이렇게 되면 매 구간에 해당하는 인덱스 위치를 모두 순회하여 부분합을 새로 계산해야 하므로 구간의 길이인 500만에..
요번에 산 책의 페이지 수가 1200페이지로 들고다니기 힘들 정도의 무게를 자랑한다. 그래서 아이패드에 넣어 보려고 북 스캐닝을 진행했는데, 스캔 상태가 좋지가 않다... 저렇게 페이지 전체가 심하게 기울어져있는 경우가 많았다. 이미 비싸게 돈 주고 책 절단+ 스캔+ 재제본까지 진행한 터라, 여기에서 OCR을 진행해도 큰 의미가 없다고 생각해 그냥 집으로 왔다. (OCR이 페이지당 추가비용이 발생하기도 했고...) 스캔 향상을 통해 기울음 보정하기 Adobe Acrobat DC나 기타 PDF 보정 툴을 통해 기울음을 보정할 수 있다. 왼쪽이 기울음 보정을 한 것이고, 오른쪽이 원본 스캔 파일이다. 확실히 오른쪽은 페이지가 휘어있는 모습을 확인할 수 있다. 그러나 기울음 보정을 하면 화질이 말 그대로 갈려..