[Minishell] Shell이란?
·
42Seoul/Minishell
Minishell As beautiful as a shell 요약: 이번 프로젝트의 목표는 간단한 셸을 만드는 것입니다. 맞아요. 당신만의 작은 bash나 zsh이요. 프로세스나 파일 디스크립터에 대해 아주 많이 배우게 될 겁니다. 간단한 쉘 만들기 프로젝트인 minishell을 위해 쉘에 대해서 알아보자. Shell(셸/쉘)이란? 셸은 운영체제 상에서 다양한 운영 체제 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램이다. 셸은 사용자와 운영 체제의 내부(커널) 사이의 인터페이스를 감싸는 층이기에 껍데기라는 의미의 셸의 이름이 붙었다. 셀은 일반적으로 명령 줄과 그래픽 형의 두 종류로 분류된다. 명령 줄 셸은 운영 체제 상에서 CLI(Command Line Interface)를 제공하는 반면에, ..
[Libasm] 어셈블리어, NASM?
·
42Seoul/Libasm
어셈블리어란? 어셈블리어(assembly language)는 이해하기 어려운 기계어를 쉽게 연상할 수 있는 기호를 기계어와 1:1로 대응시켜 코드화한 기호 언어이다. 어셈블리어로 작성한 원시 프로그램은 어셈블러를 통해 목적프로그램(기계어)로 어셈블 하는 과정을 거쳐야 한다. 프로그램에 기호화된 명령 및 주소를 사용한다. 어셈블리어의 기본 동작은 동일하지만 작성 CPU마다 사용되는 어셈블리어가 다를 수 있다. 어셈블리어에서 사용되는 명령은 의사명령과 실행명령으로 구분할 수 있다. 컴파일 vs 어셈블 Compile(컴파일) : 고급언어로 작성한 원시 프로그램을 컴파일러가 기계어로 번역하는 작업을 컴파일이라고 한다. Assemble(어셈블) : 어셈블리어로 작성한 원시 프로그램을 어셈블러가 번역하는 작업을 어..
[Cub3D] 벡터의 정규화
·
42Seoul/Cub3D
정규화 (Normalize)란 기준이 되는 개념을 만들겠다라는 뜻이다. 앞서 포스팅하였듯이 기하학에서는 크기와 방향이 같으면 모두 같은 벡터로 취급한다. 하지만 대수학에서는 좌표에 초점을 맞추기 때문에 좌표가 다르면 다른 벡터이다. 기하학과 대수학 양쪽에 모두 적용할 수 있는 것이 바로 단위 벡터이다. 즉, 벡터의 정규화는 일반 벡터를 단위벡터로 만들어주는 것을 말한다. 따라서, 일반 벡터를 그 벡터의 크기로 나누어주어 단위 벡터를 구하는 것이다. 이 방법을 이용하여 앞에서 덧셈의 뺄셈에 대한 의문이 풀리지 않을까? 방향벡터를 이용하여 시점만 변경해주면 될 것 같다.
[Cub3D] vector의 덧셈과 뺄셈
·
42Seoul/Cub3D
벡터의 덧셈은 각 성분을 더해주는 것이다. 말보다는 아래 그림으로 이해는게 빠를 것이다. 위 그림을 보면 벡터AB = 벡터OA, 벡터BC = 벡터OB라고 했을 때 같은 결과임을 알 수 있는데, 기하학적인 의미에서 벡터는 시점에 관계없이 벡터는 방향과 크기가 같으면 같은 벡터라고 말할수있다. 하지만, 같은 벡터라고 해서 좌표까지 같은 것은 아니다. 왼쪽의 방법이 삼각형법, 증가된 좌표만큼 이동한다는 것이다. 오른쪽의 방법이 평행사변형법, 시점을 기준으로 두 벡터와 평행한 선을 그려 얻어내는 방법이다. 벡터의 뺄셈은 마이너스 부호가 붙은 벡터의 반대 방향으로 연산을 해주면 된다. 그림에는 나오지 않지만, 왼쪽그림에서 OA - OB에서 OB벡터의 반대방향이 OC라고할 때 OA + OC의 결과의 벡터와 BA벡터..
[Cub3D] Vector 란?
·
42Seoul/Cub3D
수학, 과학에서 벡터는 물리학과 공학에서 방향과 크기, 선형대수학에서 벡터 공간의 원소, 기하학에서 크기와 방향을 갖고 있는 개념을 수학적으로 표현한 것 컴퓨터에서 벡터는 화상의 표현 요소로서의 방향을 지닌 선, 동적 배열 자료구조, 기계 학습 분야에서 입력 데이터를 표시하는 방법 cub3d에서 player의 이동과 시야를 위해 기하학과, 컴퓨터 화상의 표현요소로 사용하는 벡터의 개념을 이용할 것이다. 기하학에서 벡터는 시점(tail)부터 종점(head)까지 그은 반직선(방향을 갖는 직선)을 의미한다. 좌표계로 가져오면 아래와 같은 그림이 된다. 시점이 (0,0), 종점이 (a1, a2), 크기 a인 벡터이다. 이때 크기 a는 피타고라스 정리로 구할 수 있다. 모든 벡터는 기준이 되는 벡터로 표현이 가능..
Server(서버)란?
·
Server
Server(서버) 서버는 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템으로 컴퓨터 프로그램 또는 장치를 의미한다. 특히, 서버에서 동작하는 소프트웨어를 서버 소프트웨어라 한다. 서버는 프린터 제어나 파일 관리 등 네트워크 전체를 감시·제어하거나, 메인프레임이나 공중망을 통한 다른 네트워크과의 연결, 데이터·프로그램·파일 같은 소프트웨어 자원이나 모뎀·팩스·프린터 공유, 기타 장비 등 하드웨어 자원을 공유할 수 있도록 도와주는 역할을 한다. 서버 운영 체제 잘 알려진 서버 운영 체제로는 이를테면 FreeBSD, 솔라리스, 리눅스 등이 있다. 유닉스는 본래 미니컴퓨터 운영 체제였으며 전통적인 미니컴퓨터를 서버가 대체해감에 따라 서버는 효율적인 유닉스 기반의 운영 체제가 되었다. 서버..
[42Seoul] La Piscine 과정을 마치며...
·
Doodle Doodle
지난주 금요일(9/25) 42Seoul La Piscine 과정 최종 발표가 났다. 분명 한 달동안의 과정인데 코로나때문에 최종 시험이 계속 연기되면서 과정 시작부터 최종 발표까지 8주라는 시간이 걸렸다. La Piscine은 프랑스어로 수영장을 의미한다. 내 생각엔 그 수영장에 던져놓고 알아서 살아남으라는 뜻이 아닐까 싶다. 첫 주는 정말 맨붕이었다. 정말 말그대로 넓디 넓은 수영장에 홀로 떨어진 기분이었다. 허우적 허우적... 주로 리눅스 쉘 명령어와 C언어를 배운다. 더 이상의 자세한 설명은 과정에 대한 스포이므로 하지않겠다. 평소 wsl쓰면서 쉘 명령어가 얼마나 어렵겠어? 했는데 난관의 연속이었다... 겨우겨우 쉘을 넘기고 C언어로 넘어갔는데 이 것도 얕봤다가 혼쭐이 났다. 정말로 같이 교육받는 ..
WONILLISM
'42Seoul' 태그의 글 목록