[42서울] inception 구현과 설명 (도커 이미지 설계하기)
·
대외활동/42서울
서론inception 과제는 도커를 활용해 여러 서비스를 컨테이너화하고, 직접 서버를 구축하는 프로젝트 프로젝트이다. 프로젝트를 올바르게 구현하면 웹 브라우저에서 login.42.fr 로 접속해서 워드프레스 서비스를 이용할 수 있다. 도커(Docker)를 사용하여 서비스별 컨테이너를 구성Docker Compose를 활용하여 컨테이너 간 연결 및 오케스트레이션보안 및 성능을 고려한 서버 환경 구성WordPress, MariaDB, Nginx 등 웹 서비스 인프라 구성   Docker, Docker Compose?도커와 도커 컴포즈에 대한 개념을 공부하고 과제를 시작하자.도커란?도커는 컨테이너(Container) 기술을 기반으로 애플리케이션을 쉽게 배포, 실행, 관리할 수 있도록 해주는 플랫폼이다.이전에 쓴..
[42서울] inception 도커의 개념 (가상환경, 볼륨, 동작 원리)
·
대외활동/42서울
도커는 애플리케이션을 격리된 컨테이너 환경에서 실행하여 개발과 운영의 효율성을 극대화하는 도구이다. 이번 글에서는 42서울 inception 과제 구현 및 평가 과정에서 배웠던 내용을 토대로 도커가 무엇인지, 왜 사용해야 하는지, 그리고 어떻게 동작하는지에 대해 정리해 보고, 특히 네트워크와 볼륨 관리 측면에서의 이점을 중점적으로 정리해 보았다.WHAT: 도커 & 서비스 배포도커 가상환경과 가상머신의 차이점가상머신(VM)가상머신은 하이퍼바이저를 통해 하드웨어를 가상화한 후, 그 위에 각기 다른 운영체제를 실행합니다.→ 무겁고 부팅 시간이 길며, 자원 소모가 큽니다.도커 컨테이너도커는 운영체제의 커널을 공유하면서, 애플리케이션을 격리된 컨테이너 내에서 실행합니다.→ 경량화되어 빠른 부팅과 효율적인 자원 사..
[42서울] cpp07 구현
·
대외활동/42서울
cpp07은 c++의 template에 관한 과제이다. ex00#ifndef TEMPLATE_HPP# define TEMPLATE_HPPtemplate void swap(T &a, T &b){ T tmp; tmp = a; a = b; b = tmp;}template T min(T a, T b){ return (a T max(T a, T b){ return (a > b ? a : b);}#endif //TEMPLATE_HPP  함수 템플릿 (Function Template)함수 템플릿은 특정 데이터 타입에 독립적인 함수를 정의할 때 사용된다. 예를 들어, 두 값을 교환하는 함수를 작성할 때 int, float, string 등 모든 데이터 타입에 대해 동일한 코드를 중복 작..
[42서울] Netpractice LEVEL 8 문제 풀이
·
대외활동/42서울
서론인터넷 통신을 위한 서브넷팅, 라우팅 테이블 설정, ip 주소 설정 등에 대해 배울 수 있는 과제이다. 이 포스팅에서는 예시로 하나의 문제에 대한 해설을 적어보았다. 한 라우터의 다른 경로는 다른 네트워크 주소를 사용해야 한다.한 경로의 네트워크 주소는 모두 동일하며, 호스트 주소는 모두 달라야 한다.이 두 가지 네트워크의 기본 개념을 토대로 주어진 문제의 빈칸을 해결하면 된다. 서브넷 참고자료2023.12.05 - [전공/네트워크] - [네트워크] #17 IP (개념, Datagram 형식, IPv4, IPv6, 주소 접근, NAT) [네트워크] #17 IP (개념, Datagram 형식, IPv4, IPv6, 주소 접근, NAT)목차IP(Internet Protocol)Datatgram forma..
[42서울] minitalk 구현(Makefile 포함)
·
대외활동/42서울
서론minitalk 과제는 SIGUSR1, SIGUSR2를 사용해서 클라이언트 프로그램에서 서버 프로그램으로 메시지를 보내고 서버 프로그램은 해당 메시지를 출력하는 프로그램을 작성하는 과제이다. 이 과제에서는 pid 값, signal 및 kill 함수 등에 대해 배우게 된다. 개념pid프로세스 id이다. 쉘에서 ps 명령을 통해서 pid를 확인할 수 있으며 getpid() 함수를 사용해서 자신의 pid 값을 가져올 수도 있다. kill 함수#include int kill(pid_t pid, int sig); pid에 해당하는 프로세스(또는 그룹)로 sig에 해당하는 값을 보낸다. https://www.ibm.com/docs/hr/zos/2.4.0?topic=functions-kill-send-signal..
[42서울] minishell 테스트 케이스
·
대외활동/42서울
서론 테스트 케이스leaksminishell 프롬프트에 각종 명령이나 동작 사용하고 leaks minishell 으로 확인해보자.공백 입력 릭cd 릭자식 프로세스 릭 exit status각종 명령이나 동작 사용하고 echo $? 로 exit status 확인해보자.bash 출력값과 미니쉘 출력값이 다를 경우(특히 오류 메시지) 대부분 exit status가 잘못됐을 수 있다. exit status 값을 strerror 인자로 넘겨서 오류 메시지를 출력하는 것이 좋다.파이프라인 뒤에 exit status항상 0예시(앞의 명령이 올바른 경우): ls | echo $?예시(앞의 명령이 잘못된 경우): aaaaa | echo $?시그널 처리 후 exit status 확인cntl + c, cntl + d, cnt..
[42서울] so_long 맵 유효성 검사(BFS)
·
대외활동/42서울
서론이번엔 42서울 2서클까지의 과제들 중 리트라이를 가장 많이 했던(무려 5번..!) so_long에 대한 글을 서보려고 한다. so long은 지도가 그려진 파일을 입력받아 클리어 가능하다면 화면에 게임을 출력하는 과제이다. 지도 파일의 예시는 다음과 같다.0은 빈공간,1은 벽,C는 수집품,E는 맵의 출구,P는 주인공의 시작지점이다.주인공은 모든 수집품을 모아야 맵의 출구로 나갈 수 있다. 그 전에는 출구 위로 지나갈 수 없다.구현mainso_long의 시작이다. argv의 인자로 .ber 확장자인 파일 이름을 입력받는다. 입력받은 파일은 so_long 게임의 지도(map)가 된다. 이전에 so_long 평가를 갔었는데 main 문에 핵심 로직이 다 담기며 가독성이 좋고 간결한 코드를 보게 되어 영감..
[42서울] get_next_line 구현 (메모리 누수 잡기, 구현 tip)
·
대외활동/42서울
서론42서울 두 번째 과제인 get_next_line에 대한 기록을 남겨 놓으려고 한다. gnl은 fd(파일 디스크립터) 값을 인자로 받아서 파일을 읽고 개행문자 '\n' 단위로 문자열을 잘라서 리턴하는 함수를 구현하는 과제이다. C의 파일 입출력, 정적 변수, 메모리 누수 방지 등에 대한 내용을 배울 수 있는 과제인 것 같다. 본 과제에서는 C의 static 변수(정적 변수)를 하나 사용할 수 있다. 정적 변수는 fd 값에서 버퍼 사이즈만큼 읽은 문자열에서 '\n'을 기준으로 문자열을 반환하고 남은 문자열을 저장하는 데 사용된다.구현get_next_linebackup == 0이라면 정적 변수 backup에 공백 문자열을 할당받는다.버퍼 사이즈만큼 buf에 동적할당받는다.gnl_read_line 함수로 ..
[42서울] ft_printf 구현 (한 문장으로 구현하는 이진수 보수 연산)
·
대외활동/42서울
서론과제 이름에서 알 수 있듯이 printf 함수를 구현하는 과제이다. 당연히 printf 함수의 모든 기능을 구현하는 것은 아니고, 문자열 표준 출력과 서식 지정자와 같은 대표적인 기능을 구현하게 된다. 본 과제에서는 va_arg 관련 함수에 대하여 배울 수 있고, 서식 지정자를 어떻게 처리할지에 대해서도 고민해 보며 코딩 실력을 기를 수 있다.구현ft_printf구현한 ft_printf 함수의 메인 로직에 해당하는 두 함수이다. ft_printf 함수에서는 입력받은 문자열을 순서대로 while 루프를 돌아 서식지정자('%')가 아니라면 문자를 하나씩 출력하고, 서식지정자라면 그 뒤에 오는 문자에 따라서 행동을 지정한다. 이때 입력받은 va_list 구조체의 주소를 ft_format_conversion..
[42서울] Libft 함수 정리와 후기
·
대외활동/42서울
서론42서울 본과정 첫 번째 과제인 Libft에 대해 정리해보려 한다. Libft는 다양한 기본 함수들을 직접 구현하여 C 언어의 기초를 이해하기 위해 주어지는 과제이다. Libft에서는 문자열 처리, 메모리 할당 및 해체, 리스트 조작 등의 기본적인 작업을 다룬다. 예를 들어, strcpy, strlen, strdup과 같은 문자열 처리 함수들을 구현하고, malloc 및 free 함수를 사용하여 동적 메모리 할당과 해제를 다룬다. 또한 자료구조의 기본인 리스트를 조작하는 함수를 다룬다. 구현해야하는 함수 명세함수 이름프로토타입반환 값 의미설명ft_memsetvoid *ft_memset(void *s, int c, size_t n);메모리 주소 (s)주어진 메모리 영역을 지정한 값 (c)으로 설정한다...