Tistory에서 tistory 블로그를 써오면서 신경쓰이는 점이 두 개 정도 있었다. 암호화 통신 글 작성 방식 암호화 통신은 http://koyo.kr보다는 https://koyo.kr으로 접속하고 싶다는 이야기 더 신경 쓰이는 건 글 작성 방식이다. tistory 제공 에디터로 글을 작성하고 나서 html 코드로 보면 굉장히 난잡해보인다. 개인적으로 이런 건 정갈하게 관리하고 싶은 마음이 있어서 매번 글 발행 전에 html 코드를 정리한다. html 편집 모드에서 글을 써야 할 때도 있다. 글에 코드블럭을 삽입할 때가 그런 때다.

Continue reading

우분투 터미널 환경에서 racket을 설치하고 vim으로 코드를 작성하여 sicp 예제를 실행하기 위한 환경을 설정하는 것 vim 버전이 쫌 높아야 되는 걸루 기억 racket 설치 sudo add-apt-repository ppa:plt/racket sudo apt update sudo apt install racket sicp 모듈 설치 raco pkg install sicp vim-plug 설치 curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim 아래 내용으로 ~/.vimrc 파일 저장 call plug#begin('~/.vim/plugged') Plug 'wlangstroth/vim-racket' Plug 'scrooloose/syntastic' call plug#end() set statusline+=%#warningmsg# set statusline+=%{SyntasticStatuslineFlag()} set statusline+=%* let g:syntastic_always_populate_loc_list = 1 let g:syntastic_auto_loc_list = 1 let g:syntastic_check_on_open = 1 let g:syntastic_check_on_wq = 0 let g:syntastic_enable_racket_racket_checker = 1 vim에서 아래 명령어를 입력하여 vim-racket 설치

Continue reading

Windows DNS 설정

netsh interface ip set dns "로컬 영역 연결" static 1.1.1.1 primary netsh interface ip add dns "로컬 영역 연결" 1.0.0.1 Cloudflare Public DNS Server 빠르다 netsh interface ip set dns "로컬 영역 연결" static 9.9.9.9 primary netsh interface ip add dns "로컬 영역 연결" 9.9.9.10 ipconfig /flushdns IBM Public DNS Server 1.1.1.1이 잘 안되는 것 같을 때. ( echo # echo 13.229.188.59 github.com echo 13.250.177.223 github.com echo 52.74.223.119 github.

Continue reading

현대 시스템은 가상 메모리(Virtual memory) VM이라고 알려진 메인 메모리의 추상화를 제공한다. 1. 가상 메모리를 왜 공부해야 하는가 가상 메모리는 중요하다. 가상 메모리는 강력하다. 가상 메모리는 위험하다. 2. 물리 주소(Physical Address), 가상 주소(Virtual Address) 컴퓨터 시스템의 메인 메모리는 M개의 연속적인 바이트 크기 셀의 배열로 구성되며, 각 바이트는 고유의 물리 주소 PA를 가진다는 사실을 먼저 숙지하자. CPU가 메모리에 접근하기 위한 방식이 두 가지 있다. 빠른 이해를 위해 책에 있는 그림을 따라 그렸다.

Continue reading

1. 비지역성 점프(Nonlocal jumps) C는 setjmp와 longjmp 함수를 제공한다. #include <setjmp.h> int setjmp(jmp_buf env); int sigsetjmp(sigjmp_buf env, int savesigs); // Returns: 0 from setjmp, nonzero from longjmps setjmp 함수는 현재 '호출하는 환경'을 env 버퍼에 저장하며 0을 리턴한다. '호출하는 환경'은 프로그램 카운터, 스택 포인터, 범용 레지스터 등을 포함한다. setjmp가 리턴하는 값은 switch문이나 if문의 조건으로 사용될 수 있다. 그리고 리턴값이 변수에 할당되면 안된다. #include <setjmp.h> void longjmp(jmp_buf env, int retval); void siglongjmp(sigjmp_buf env, int savesigs); // Never returns longjmp 함수는 호출하는 환경을 env 버퍼에서 복원하고, 가장 최근의 setjmp 호출에서 리턴한다.

Continue reading

이 글에서는 동시성을 다룬다. 1. 시그널 블록, 블록 해제 묵시적 블록 방법 커널은 핸들러에 의해 처리되고 있는 모든 대기 시그널의 처리를 막는다. 명시적 블록 방법 sigprocmask와 같은 함수를 사용해 명시적으로 블록하거나 블록 해제할 수 있다. #include <signal.h> int sigprocmask(int how, const sigset_t *set, sigset_t *oldset); int sigemptyset(sigset_t *set); int sigfillset(sigset_t *set); int sigaddset(sigset_t *set, int signum); int sigdelset(sigset_t *set, int signum); // Returns: 0 if OK, -1 on error int sigismember(const sigset_t *set, int signum); // Returns: 1 if member, 0 if not, -1 on error sigprocmask 함수는 현재 블록된 시그널의 집합(blocked 비트 벡터)을 변경한다.

Continue reading

Signal! 시그널은 작은 메시지 형태로, 프로세스에게 시스탬 내에 어떤 종류의 이벤트가 일어났다는 것을 알려준다. 먼저 man 7 signal을 통해 시그널에 어떤 종류가 있는지 알아보자. POSIX.1-1990 표준에 있는 시그널 (리눅스 x86 기준) Signal Value Action Comment SIGHUP 1 Terminate Terminal line hangup SIGINT 2 Terminate Interrupt from keyboard SIGQUIT 3 Terminate and dump core (책은 Terminate) Quit from keyboard SIGILL 4 Terminate and dump core (책은 Terminate) Illegal instruction SIGABRT 6 Terminate and dump core Abort signal from abort function SIGFPE 8 Terminate and dump core Floating point exception SIGKILL 9 Terminate Kill signal SIGSEGV 11 Terminate and dump core Invalid memory reference SIGPIPE 13 Terminate Broken pipe: write to pipe with no readers SIGALRM 14 Terminate Timer signal from alarm function SIGTERM 15 Terminate Termination signal SIGUSR1 10 Terminate User-defined signal 1 SIGUSR2 12 Terminate User-defined signal 2 SIGCHLD 17 Ignore Child stopped or terminated SIGCONT 18 Continue if currently stopped (책은 Ignore) Continue if stopped SIGSTOP 19 Stop Stop process SIGTSTP 20 Stop Stop typed at terminal SIGTTIN 21 Stop Terminal input for background process SIGTTOU 22 Stop Terminal output for background process SIGKILL과 SIGSTOP은 획득하거나(caught) 블럭되거나(blocked) 무시될(ignored) 수 없다.

Continue reading

Author's picture

koyo

컴퓨터할줄모름

Student

Korea