분류 전체보기 176

gcc 컴파일 하는 법

내가 아직 gcc로 컴파일 하는 방법을 모른다고...?https://velog.io/@dhwltnoooh/gcc-%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC gcc 컴파일프로그래밍 언어 = 고급언어(high-level language) e.g. JAVA, C, Python, etc.컴퓨터 언어 = 기계 언어(machin language) e.g. 0, 1 개발자가 작성한 프로그래밍 언어를 컴퓨터가 해석 할 수 있도velog.io이 블로그를 참고하여 컴파일 과정을 정리해봤다.gcc 옵션-o : 출력 파일명 지정-c : 링킹 과정을 진행하지 않고 오브젝트 파일(.o) 까지만 생성 (compile only)-S : 어셈블리까지 진행하지 않고 컴파일러까지의 출력은 .S..

정글 2025.05.06

OSI 7 Layers/TCP/UDP/HTTP

이번주 퀴즈 내용 정리CSAPP 책 11.3장에서는 프로그래머 입장에서 필요한 깊이 만큼의 TCP, UDP, HTTP 지식만을 다룬다.응용 레벨에서 이 네트워크 프로토콜들을 어떻게 사용하는지(시스템 콜, 소켓 API가 어떻게 동작하는지)에 초점을 맞춰서 공부해보자.OSI 7 Layers이 영상에 OSI 7 Layers에 대한 핵심이 잘 정리되어있다.상위 계층이 하위 계층을 사용하는 구조. 따라서 상위 계층은 하위 계층이 하는 일을 몰라도 된다.예를 들어 application layer는 애플리케이션 간의 통신을 어떤 프로토콜을 사용해서 구현할 건지만 정하면 되고, 실제로 애플리케이션 간에 데이터를 어떻게 주고 받는지에 대해서는 하위 계층에서 구현된 방법을 사용하기만 하면 됨application layer..

정글 2025.05.06

에코 서버(1) - 호스트와 서비스 변환

에코 서버는 클라이언트가 표준 입력으로 받은 데이터를 서버가 받아서 그대로 돌려주면 클라이언트가 받은 데이터를 표준 출력하는 간단한 프로그램이다. CSAPP 책에서는 CGI 프로그램을 이해하기 전에 에코 서버를 구현해본다. 소켓 인터페이스 기반 응용프로그램은 위와 같은 절차를 거쳐 통신한다. 이번 포스팅에서는 getaddrinfo() 함수가 어떻게 연결 가능한 소켓 주소 리스트들을 반환하는지 알아보자.그리고 그 리스트를 해석하는 getnameinfo(), 메모리 누수를 방지하기 위해 리스트를 반환할 때 쓰이는 freeaddrinfo()도 함께 알아보자. 호스트와 서비스 변환1. getaddrinfo()도메인 주소, 포트번호를 받아 연결 가능한 소켓 주소 정보를 연결 리스트로 제공하는 함수함수 인자host..

정글 2025.05.05

CGI

CGI란?웹 서버와 외부 프로그램이 통신할 때 사용되는 표준 인터페이스사용자의 요청이 동적인 처리를 필요로 할 때 웹 서버가 외부 프로그램을 실행시킨 후 그 결과를 응답으로 보내야 하는데, 이 때 웹 서버가 외부 프로그램과 상호작용할 때 지켜야 할 규약 혹은 인터페이스CGI는 초기 웹 개발에서 매우 중요한 역할을 했지만, 현대의 웹 개발에서는 더 효율적이고 강력한 기술들로 대체되고 있음 (Node.js, Django같은 현대 프레임워크)프로그램의 출력 결과를 HTML로 포장해서 브라우저에게 전달나는 CGI를 어느정도 정리하고 글을 쓰는 중이라서 위 내용이 어떤 말인지 이해가 되는데, 처음 보는 사람들은 이해하기 어려울 것이라고 생각한다. 그래서 CGI가 등장하게 된 배경을 먼저 설명하자면 다음과 같다. ..

정글 2025.05.05

정적 전역 변수

malloc 구현하다가 포인터가 static으로 구현되어 있길래 정리하고 넘어가는 포스팅 static정적 전역 변수자신이 선언된 소스파일 안에서만 사용할 수 있음static으로 선언된 변수를 다른 파일에서 extern으로 가져다쓸 수 없음 → 컴파일(링크) 에러 발생즉, 전역 변수에 static을 붙이면 변수의 사용 범위를 파일 범위로 제한하는 효과가 있음//main.c#include extern int num1; //컴파일 에러. num1을 사용할 수 있는 범위는 print.c파일 내부int main(){ ... return 0;}//print.c#include static int num1 = 10; //static으로 선언했으므로 print.c파일 외부에서 사용 불가void print(){ ...}..

정글 2025.04.29

calloc에 대해서,,

이번 주차때 rbtree코드를 스스로 짜지 않았다. 알고리즘 책에 있는 의사 코드를 그대로 옮기고 해석하기만 했다.그래서 마지막 날인 오늘 rbtree 코드를 짜면서 신경쓰지 못 했던 부분에 대해 정리하고 이번 주를 마무리하려고 한다. 노드를 calloc으로 할당할 때의 이점?typedef struct node_t { color_t color; key_t key; struct node_t *parent, *left, *right;} node_t;typedef struct { node_t *root; node_t *nil; // for sentinel} rbtree;rbtree 구조체와rbtree의 노드에 해당하는 node_t 구조체가 주어진다.rbtree *new_rbtree(void) { ..

정글/알고리즘 2025.04.25