Computer Science 11

소프트웨어 디자인 : 설계 철학에 대하여

저는 카이스트 정글 수료생입니다. 권영진 카이스트 교수님의 OS 강의 중 추천해주신 영상을 정리해보았습니다.정말 감명깊게 봤고 최대한 의미가 왜곡되지 않도록 작성해보았습니다만 정말 좋은영상이니 직접 보시는걸 추천드립니다. A Philosophy of Software Design | John Ousterhout | Talks at Google 모든 내용은 강의자 입장에서 정리하였습니다.제 개인적인 생각은 "인용구"를 통해서 작성하였습니다.문제 쪼개기 (Problem Decomposition) 만약 당신이 Computer Science 분야에서 가장 중요한 컨셉을 하나 고른다면 무엇을 고를 것인가?Abstraction (추상화)Testing (테스트)Complexity (복잡도)Layers of Abst..

tcpdump 코드 해석하기 (BPF Door)

BPF Door 공격에 대해 찾아보면서 대응 방법 중 "Magic Sequence"를 검색하는 방법에 대해 알게되었다. sudo tcpdump -i eth0 'tcp[((tcp[12] & 0xf0) >> 2):4] = 0x1234abcd' 이 코드를 분석해보면 'tcp[((tcp[12] & 0xf0) >> 2):4] = 0x1234abcd' 에 해당하는 데이터가 발견되면 catpure 하라는 뜻이다. tcp[12] : data offset(4bit) + Reversed(3bit) + NS (1bit) data offset 부분은 tcp packet의 헤더의 길이를 32bit(4byte) 단위로 알려준다.4bit 이므로 값이 0x4 라면 해당 TCP 패킷의 크기는 16byte라는 뜻(tcp[12] & 0x..

2의 보수와 보수법(Complement Number System)

Category: 개발 & 프로그래밍Tags: complement, binary, number-system1. 보수와 보수법의 차이보수(補數)어떤 수 A와 어떤 기준 B가 있을 때, A = B + C를 만족하는 수 C를 가리킨다.예: “4에 대한 15의 보수는 11이다” → 4 + 11 = 15보수법특정 기수(radix, base)를 사용해 각 자리수의 ‘보수’를 취해(로 변환해) 표기하는 방법을 말한다.예: 10진수에서 “9의 보수법”이라 하면, 각 자리수를 9에서 빼는 방식으로 표현한다(여기에 추가로 +1을 하는 경우가 10의 보수법).결국, “보수”는 “A에 대한 B의 보충 수”라는 ‘값’ 자체를 일컫고, “보수법”은 “그 값을 자리수마다 치환하여 표현하는 방법”을 가리킵니다. 즉. 컴퓨터는 음수를..

linux cli 환경에서 디스크 인식 및 마운트 수행하기

cli 환경인 bash shell을 통해 디스크를 인식 하고 마운트하는 방법이다.디스크 인식하기파티션 생성하기파일 시스템 설치하기디스크(파이션) 디렉토리에 마운트 하기부팅 시 마운트 설정에 추가하기다음과 같은 순서로 진행된다.mount disk 과정은 추가한다고 해서 부팅 시 자동으로 수행되지 않는다.만약 OS 설치 후 운영중에 디스크를 추가하고 마운트 한다면 /etc/fstab 파일을 수정해야한다. 실행한 명령어 정리# 새로운 disk를 /dev/sdb로 가정lsblk# sdb 8:16 0 400G 0 diskparted /dev/sdb(parted) print free#(parted) mkpart gpt ext4 0% 100%(parted) print# Number ..

Linux 네트워크 수동 설정

이전 글 확인하기  2025.04.10 - [Linux/Command Line] - nmcli 명령어로 네트워크 상태 확인 및 연결하기 nmcli 명령어로 네트워크 상태 확인 및 연결하기라즈베리 파이 4를 이용해서 network 구축을 시도했다.Pi OS(64bit) 기준으로 설명한다. 네트워크 활성화 하기  주로 이더넷 (eth0, eth1, ...) 혹은 무선랜(wlan0, wlan1, ...)으로 출력된다.실제 사용하는 네bycracks.tistory.com 해당 글에서는 nmcli 명령어로 네트워크 어댑터를 상태를 확인하고 활성화 하여 네트워크 연결하는 방법을 배웠다.이번에는 네트워크 설정문제로 인해 연결하지 못할 경우에 대처하는 방법을 기술한다. Rocky Linux 기준이다. IP 주소 설정 ..

nmcli 명령어로 네트워크 상태 확인 및 연결하기

라즈베리 파이 4를 이용해서 network 구축을 시도했다.Pi OS(64bit) 기준으로 설명한다. 네트워크 활성화 하기  주로 이더넷 (eth0, eth1, ...) 혹은 무선랜(wlan0, wlan1, ...)으로 출력된다.실제 사용하는 네트워크 어댑터가 어떤건지 정확히 모르겠다면 아래 inet 부분을 보면된다.사용하는 어댑터는 inet 부분에 ip주소가 출력된다.사용하지 않는 네트워크 어댑터라면 주소가 없다.본인은 enp0s3 같은 이름으로 출력되었다. 네트워크 어댑터 상태 확인nmclinmcli device show# GENERAL.DEVICE: enp0s3# GENERAL.TYPE: ethernet# ....

ls, find 명령어는 옵션에 따라 심볼릭 링크를 다르게 처리한다.

find 명령어를 공부하던 중 find /etc -print 명령어를 사용해서 하위 디렉토리와 파일을 출력하려고 했는데 실패했다. 혹시나 싶어 ls 명령어를 사용해보았는데 결과가 제각각 이였다. 궁금해서 원인을 찾아보고 내린 결론을 공유하고자 한다. 실행환경은 mac m2 air 15 / Sonoma 14.0 / zsh 를 사용했다. 3가지 명령어를 통해 하위 파일 및 디렉토리 출력 시도 1. (성공) ls /etc 2. (실패) ls -l /etc 3. (실패) find /etc -print 왜 이런 문제가 발생했을까? find 명령어가 내가 원하는 동작을 하지 않았던 이유 처음엔 chatGPT에게 물어보았는데 두 가지 해결방법을 제시했다. 1. find /etc/ -print 2. find -L /e..

A Philosophy of Software Design | John Ousterhout | Talks at Google

pintOS 강의를 들으면서 권영진 카이스트 교수님이 추천해주신 영상입니다. 정말 좋은 내용이 많으니 꼭 직접 시청하시길 권장합니다. @제가 작성한 내용은 골뱅이(at sign)으로 시작합니다. 참고가 될 내용이나 제 해석을 작성할때 사용합니다. A Philosophy of Software Design | John Ousterhout | Talks at Google https://youtu.be/bmSAYlu0NcY?si=G9KqjYZbOkMGMiHK 문제 쪼개기 Problem Decomposition Computer Science에서 가장 중요한 콘셉트를 하나 고른다면 무엇을 고를 것인가? - Abstraction - Testing - Complexity - Layers of Abstraction (도..

glFlush와 glFinish의 차이

glfinish()는 이전 명령어가 모두 완수 될때까지(픽셀이 모두 그려질때까지) return 하지 않음 glflush()는 즉시반환함. 물론 모든명령어가 실행된다는것은 보증하지만 실행속도는 모른다. GLvoid display2(GLvoid) { glClearColor(0.0f, 0.0f, 1.0f, 1.0f); // (0,0,255) glClear(GL_COLOR_BUFFER_BIT); // 컬러버퍼 지우기 glFlush(); // 화면에 출력하기(버퍼코드 실행) } 해당함수를 displayFunc 인자로 넣으면 검은색 사각형이 출력된다. 하지만 크기를 변경하면 파란색으로 바뀐다. 이유를 도저히 모르겠는데 display2 함수 마지막줄에 glFinish(); 를 추가하니 바로 파란색이 출력되었다. 위에..

vim 설정하기

필자는 탭 길이 4를 선호한다. 그런데 vim 기본 탭 사이즈는 8이기 대문에 설정 해주기로한다. :set ts=4 로도 설정 가능하지만 매번 옵션으로 걸어 두려면 vi .vimrc 를 이용한다. 아마 새파일로 생성이 될텐데 set ts=4 만 적어두고 저장하면 끝! 그밖의 여러 옵션들을 적어두면 기본값으로 저장이 되니 사용해보자. 여담으로 vi 에디터 라고만 알고 있었지만 vim 으로서 '빔'으로 읽는 듯하다.