Unborn 8.0 Yellow Pointer
본문 바로가기

전체 글143

[블록체인] 블록체인 A-Z : 블록체인의 이해 3 - 비잔틴 장애 허용 및 합의 프로토콜 비잔틴 장애 허용(BFT; Byzantine Fault Tolerance) 비잔틴 장애 허용에 대해 알아볼 것입니다. 이는 블록체인뿐만 아니라 모든 형태의 탈중앙화 시스템에서도 아주 중요한 특징입니다. 비잔틴 장애 허용 문제 이해하기 비잔틴 장애 허용을 알기 위해서는 두 장군의 문제와 여기서 파생된 비잔티움 장군의 문제를 먼저 알아야 합니다. 비잔티움 제국이 공격하여 점령하고자 했던 성이 있었다고 가정합니다. 네 명의 장군이 있고 과반수의 동의가 있어야 행동을 개시하고 전투에서 이길 수 있습니다. 하지만, 합의점을 찾지 못해 혼란을 겪게 되면 적에게 당할 것 입니다. 전달된 정보에 대한 다수결의 알고리즘으로 장군들은 전달된 정보에 기반해 의사결정을 내립니다. 이 알고리즘을 비잔틴 장애 허용이라고 합니다... 2022. 8. 9.
[블록체인] 블록체인 A-Z : 블록체인의 이해 2 (채굴 작동 방식) 채굴이란? 채굴 방법은 기본적으로 블록체인 시스템이나 알고리즘이 대상을 설정하는 것입니다. 즉, 채굴자들이 특정한 해시를 달성하도록 설정한 대상이 있는 것입니다. 그림처럼 대상보다 값이 큰 해시는 고려 대상이 아닙니다. 블록에 대해 찾은 해시가 대상보다 더 클 때에는 해당 블록체인에 대해 충분하지 않다고 보는 것입니다. 즉, 블록체인에 포함될 수 있으려면 해시값이 대상보다 작아야 합니다. 또한 채굴은 자발적인 작업입니다. 경제적이거나 논리적 혹은 계산적, 수학적 이유가 있는 것이 아니라 단지 채굴자들이 해결해야 할 도전 과제를 생성하기 위해 수행하는 작업일 뿐입니다. 해당하는 해시값 이내일 때 해시를 발견하게 된다면 해당 인원은 채굴자가 되는 것입니다. 채굴 과정 예를 들어 아래와 같이 논스 값과 데이터.. 2022. 8. 9.
SQL Injection 이란? SQL이란 ? SQL(Structured Query Language; 구조적 질의 언어)는 관계형 데이터베이스 시스템(RDBMS)에서 자료를 관리 및 처리하기 위해 설계된 언어입니다. SQL의 특징 대소문자를 가리지 않습니다. 세미콜론으로 끝나야 합니다. 고유의 값은 따옴표로 감싸줍니다. 객체를 나타낼 때는 백틱으로 감싸줍니다. 한 줄 주석의 경우 문장 앞에 --를 붙여서 사용합니다. 여러 줄 주석은 /* */로 감싸줍니다. SQL Injection(SQL 인젝션, SQL 삽입)이란 ? 악의적인 사용자가 응용 프로그램 보안 상의 허점을 의도적으로 이용해, 악의적인 SQL문을 주입하고 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 조작하는 행위입니다. 주로 사용자가 입력한 데이터를 제대로 필터링, .. 2022. 7. 28.
[42Seoul/fract'ol] mlx 함수 miniLibX기술을 연마하고 복소수의 수학적 개념을 발견/사용하고 컴퓨터 그래픽의 최적화 개념을 엿볼 수 있는 기회가 될 것입니다. mlx를 사용하기 위해 Makefile에 다음을 추가합니다. cc -lmlx -framework OpenGl -framework AppKit -Imlx 소스파일명.c 실행 결과 화면 사용 예시 #include typedef structs_data { void *img; char *addr; int bits_per_pixel; int line_length; int endian; }t_data; intmain(void) { void*mlx; void*mlx_win; t_dataimg; mlx = mlx_init(); mlx_win = mlx_new_window(mlx, 192.. 2022. 7. 27.
[42Seoul/frac'ol] 망델브로 집합(Mandelbrot set), 쥘리아 집합(Julia set), Burning Ship 코드 망델브로 집합(Mandelbrot set) 망델브로 집합은 브누아 망델브로가 고안한 프랙탈의 일종입니다. 수열[Zn]의 절댓값이 무한대로 발산하지 않는 복소수 c의 집합으로 정의됩니다. $$z_0 = 0 (단, z_n은 복소수)$$ $$z_{n+1} = z_n^2+c$$ 이를 복소수를 사용하지 않고 정의하려면 모든 복소수를 실수부와 허수부로 나누면 됩니다. \(z_n\)을 (\(x_ny_n)\)로, c를 (a, b)로 바꾸면 아래와 같은 식을 얻을 수 있습니다. $$(x_0y_0) = (0,0)$$ $$x_{n+1} = x_n^2 - y_n^2 + a$$ $$y_{n+1} = 2x_ny_n + b (단, x_n, y_n, a, b는 실수)$$ 실제로 무한한 항까지 계산하여 발산 여부를 확인하는 것이 어려.. 2022. 7. 27.
[42Seoul/fract'ol] 프랙탈(fractal)이란 ? 프랙탈[fractal] 수학, 기하학 연구 분야 중 하나로 부분의 모양이 전체 모양을 갖는 자기 유사성을 가지며 이런 과정이 한없이 반복될 때 프랙탈이라고 합니다. 프랑스의 수학자 망델브로가 1967년 영국을 둘러싸고 있는 해안선의 총길이를 측정할 때 사용하는 자에 따라 길이가 달라지며 결과적으로 아주 작은 자를 이용하면 해안선의 길이는 무한대로 늘어나게 되는 것이다. 이처럼 같은 모양이 반복되는 구조를 프랙탈이라고 부리기 시작했습니다. 프랙탈 용어는 분열, 파편을 의미하는 fracture, fraction에 힌트를 얻어 fractal이라는 용어를 만들었습니다. 또한 프랙탈 차원은 2차원 3차원과 같은 정수가 아닌 분수라는 의미와도 연결이 됩니다. 번개, 브로콜리, 폐 등에서도 프랙탈을 확인할 수 있.. 2022. 7. 27.
[42Seoul/fract'ol] 프로젝트 소개 이 프로젝트는 그래픽적으로 아름다운 프랙탈을 만들기 위한 것입니다. miniLibX기술을 연마하고 복소수의 수학적 개념을 발견/사용하고 컴퓨터 그래픽의 최적화 개념을 엿볼 수 있는 기회가 될 것입니다. e-러닝에서 동영상을 시청하는 것을 잊지 마세요! 규칙 이 프로젝트는 사람에 의해서만 수정됩니다. 따라서 여기에 나열된 제약 조건 내에서 원하는 대로 자유롭게 파일을 구성하고 이름을 지정하십시오. 전역 변수를 사용할 수 없습니다. C로 코딩해야 합니다. 프로젝트는 Norm을 따라야 합니다. 오류를 신중하게 처리해야 합니다. 어떤 경우에도 프로그램이 예기치 않게 종료되면 안됩니다 (Segmentation fault, bus error, double free, etc). 프로그램에 메모리 누수가 있어선 안됩니.. 2022. 7. 26.
[블록체인] 블록체인 A-Z : 블록체인의 이해 1 - 블록체인, 블록, 해시 알고리즘, 불변 원장, 분산 P2P 네트워크 블록체인 블록체인은 누구라도 임의로 수정할 수 없고 누구나 변경의 결과를 열람할 수 있는 분산 컴퓨팅 기술 기반의 원장 관리 기술입니다. 이는 근본적으로 분산 데이터 저장기술의 한 형태로, 지속적으로 변경되는 데이터를 모든 참여 노드에 기록한 변경 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가능하도록 고안되었습니다. 즉, 블록(지속적으로 증가하는 데이터)이라고 불리는 데이터를 암호학을 통해 보호하고 연결하는 기술입니다. 블록 블록은 다수의 트랜잭션을 모아서 하나로 관리하기 위한 묶음입니다. 하나의 블록을 다음 블록과 이어 주기 위해 해시값을 통해 블록들을 암호화 링크로 연결한 체인 구조를 만들 수 있습니다. 즉, 블록은 데이터와 이전 해시, 해시 값을 가지고 있으며 데이터와 이전 해시를 이용해.. 2022. 7. 14.
[블록체인] 블록체인 A-Z : 블록체인 소개 앞으로 다룰 내용 및 배울 순서에 대해한 정리입니다. 블록체인은 무엇인가 SHA256해싱 알고리즘 불변 원장(immutable ledger) 분산 P2P 네트워크 채쿨 방법 (논스(Nonce;암호화 임시 값)과 암호화폐 퍼즐) 비잔틴 장애 허용 합의 프로토콜(Consensus Protocol) 공격에 대한 방어 체인에 대해 블록체인 데모 2022. 7. 14.
[블록체인] 블록체인의 부상: 비트코인보다 훨씬 더 파괴적인 슈퍼 기술 블록체인을 배우는 이유 블록체인은 전 세계에 있을 것이다. 또한 우리 주변에 있을 것이기 때문에 블록체인을 이해해야 합니다, 그렇지 않으면, 주변에서 무슨 일이 일어나고 있는지 이해하지 못할 것입니다. 회사의 실제 비즈니스에 블록체인을 활용하고 큰 영향을 미칠 수 있습니다. 블록체인이란 무엇인가 ? 블록체인이 존재하기 전에 거래와 같은 정보를 책이나 가지고 있는 파일과 같은 파일, 컴퓨터가 있는 데이터베이스에 저장할 수 있습니다. 이것의 문제는 데이터베이스를 수정할 수 있고, 100% 보안되지 않았거나, 해킹할 수 있다는 것입니다. 그래서, 블록체인은 이러한 거래를 저장하기 위해 투자되어 수정할 수 없고, 안전하며, 아무도 해킹할 수 없도록 투자되었다. 그것이 개인 정보, 이전에 일어난 거래가 완전히 안.. 2022. 7. 14.
[42Seoul/pipex] 허용 함수 정리 (access(), dup2(), execve(), fork(), pipe(), wait(), waitpid()) open #include int open(const char *filename, int flags[, mode_t mode]); 파일을 사용하기 위해 사용하는 함수입니다. 파일 열기에 성공하면 양의 정수 값을 반환하며 실패했을 경우 -1을 반환합니다. mode_t mode : O_CREAT 옵션 사용에 의해 파일이 생성될 때 지정되는 파일 접근 권한입니다. O_RDONLY : 읽기 전용으로 파일을 엽니다. O_WRONLY : 쓰기 전용으로 파일을 엽니다. O_RDWR : 읽기와 쓰기가 모두 가능입니다. O_TRUNC : 기존의 파일 내용을 모두 삭제합니다. O_EXCL : 파일이 열려있을 때 open()되지 않아 이전 파일을 보존할 수 있습니다. O_CREAT : 파일을 생성하게 된다면 파일의 접근권한을.. 2022. 7. 13.
[컴퓨터 구조] 캐시 메모리 캐시 메모리란? 캐시 메모리는 CPU의 처리 속도와 주 기억 장치의 접근 속도 차이를 줄이기 위해 사용합니다. 데이터 지역성을 활용하여 메인 메모리에 있는 데이터를 캐시 메모리에 불러와 두고, 프로세서가 필요한 데이터를 캐시 메모리에서 먼저 찾도록 하면 시스템 성능을 향상할 수 있습니다. 데이터 요청이 들어오면, 먼저 캐시에서 데이터를 탐색합니다. 캐시가 없거나 오래된 경우 원본 데이터가 저장된 곳에서 데이터를 조회하게 됩니다. 이후 캐시에도 데이터를 복사/갱신하게 되며 오래된 데이터는 삭제합니다. 작동 원리(데이터 지역성) * 캐시의 지역성 지역성이란 기억장치 내의 정보를 균일하게 접근하는 것이 아닌 어느 한순간에 특정 부분을 집중적을 참조하는 특성 합니다. 데이터의 접근이 시간적, 공간적으로 가깝게 .. 2022. 7. 12.
[42Seoul/pipex] 프로젝트 소개 이번 과제는 UNIX 매커니즘을 더 자세히 알아가는 프로젝트입니다. 허용 함수 ◦ open ◦ close ◦ read ◦ write ◦ malloc ◦ free ◦ dup2 ◦ execve ◦ fork ◦ perror ◦ strerror ◦ exit 예시 pipex 프로그램은 아래와 같이 동작할 것입니다. $ ./pipex file1 cmd1 cmd2 file2 - file1, file2 : 파일 이름 - cmd1, cmd2 : 매개변수에 대응하는 shell 명령어 위의 명령어는 아래 shell에서 실행되는 것과 동일하게 처리되어야 합니다. $ file2 - pipex $ ./pipex infile ``ls -l'' ``wc -l'' outfile $ ./pipex.. 2022. 7. 11.
[42Seoul/B2br] Bonus Part LVM Logical Volume을 효율적이고 유연하게 관리하기 위한 커널의 한 부분이자 프로그램이다. LVM은 물리적 스토리지 이상의 추상적 레이어를 생성해서 논리적 스토리지를 생성할 수 있게 해 준다. PV(Pysical Volume) 블록 장치를 이루고 있는 파티션들을 LVM에서 사용할 수 있게 변환하는 것이다. 블록 스토리지를 LVM으로 쓰기 위해 PV로 초기화하게 된다. PV는 PE들로 구성된다. PE(Pysical Extent) PV를 구성하는 일정한 크기의 블록으로 LVM2(4MB)가 개선된 버전이라고 이해하면 된다. 각각의 PV들은 동일한 크기의 PE들로 구성이 된다. VG(Volume Group) PV들의 집합으로 LV를 할당할 수 있는 공간이 된다. 즉, PV들로 초기화된 장치들은 VG.. 2022. 7. 4.
[42Seoul/B2br] 기본 설정 0. 파일 확인 $ lsblk 1. sudo 설치 설치 $ su - $ apt-get update $ apt-get install sudo 설치 확인 $ dpkg -l | grep 'sudo' sudo log 저장 디렉터리 생성 $ mkdir /var/log/sudo sudo 설치 후 구성 $ visudo 요구사항 sudo를 이용한 인증은 비밀번호가 잘못되었을 경우 3회까지로 제한되어야 합니다. sudo 사용 시 잘못된 비밀번호로 인한 오류가 발생할 경우 원하는 사용자 지정 메시지가 표시되어야 합니다. sudo를 사용하는 각 작업은 입력과 출력 모두 보관해야 합니다. 로그 파일은 /var/log/sudo/ 폴더에 저장해야 합니다. 보안상의 이유로 TTY 모드를 활성화해야 합니다. 보안상의 이유로 sudo.. 2022. 6. 30.
728x90
반응형