본문 바로가기

728x90

교육/42서울

미니쉘(minishell) 과제 - 트리 구조로 파싱하기 미니쉘(minishell)은 팀 프로젝트였기에 팀원 분과 같이 진행을 하였습니다. 저는 파싱 부분을 담당했으며, 팀원 분은 빌트인 함수 구현을 담당해주셨습니다. 간단하게 저희의 파싱 방식과 FlowChart를 공유해보겠습니다. 이 글이 치트 sheet 가 되는건 원치 않습니다. 파싱트리의 대략적인 감을 잡을 잡으시는데 도움이 되길 바라겠습니다. 문제시 연락해주세요. 실제 bash의 동작방식과 다르며, 저희만의 쉘을 만들었기 때문에 이를 참고하시고 읽어주시면 감사하겠습니다. minishell 하시는 모든 분들 파이팅입니다 ~~~! 사전 조사 먼저 파싱(parsing) 이란 것을 조사할 필요가 있었습니다. 컴퓨터 과학에서 파싱((syntactic) parsing)은 일련의 문자열을 의미 있는 토큰(token.. 더보기
pipe를 연속으로 사용할 경우 반환되는 filedescriptor 값 테스트 (C언어) minishell 을 만드는 도중 pipe 함수를 연속적으로 호출했을때 어떤 filedescriptor 값이 호출되는지 궁금하여 테스트 해보았다. 입력은 위와 같이 주었다. PIPE 계속 호출 void next_pipe_check(t_ast *node, t_mcb *mcb) { int a; // 다음에 또 파이프가 있는가? if (node->right->type == AST_PIPE) { a = pipe(mcb->fd); // 3, 4 a = pipe(mcb->fd); // 5, 6 a = pipe(mcb->fd); // 7, 8 a = pipe(mcb->fd); // 9, 10 a = pipe(mcb->fd); // 11, 12 } } 코드 일부분이다. 계속해서 int fd[2] 배열을 인자값으로 pi.. 더보기
42 inception 과제 기초 가이드 - 도커 컴포즈로 실제 서비스를 올려보자 42 서울 inception 과제는 docker-compose를 사용하여 여러 도커 파일들을 컨테이너로 올려야한다. ft_server라는 과제가 있었지만 지금은 사라졌다. Dockerfile 하나로 컨테이너를 올려서 서비스를 관리하는 방법이 궁금하다면, ft_server를 검색해보면 카뎃들이 작성한 좋은 글들을 많이 볼 수 있다. 이 글에서는 간단한 도커 컴포즈 파일(docker-compose.yaml)을 작성하여, 간단하게 Wodrpess 서비스를 올려보는 과정을 실습해본다. inception 실습을 해보기 전에 quickstart: docker-compose wordpress 예제를 해보는 것을 추천한다. 1. 과제에서 목표로 하는 시스템 구성도 총 3개의 도커이미지를 사용하여 컨테이너를 띄어야 한다.. 더보기
PUSH_SWAP 과제 아래 두 자료를 주로 참고하여 코드를 작성하였다. 1. 슬랙에 minckim님 께서 올려주신 push_swap가이드 2. https://medium.com/@jamierobertdawson/push-swap 번역된 글 과제의 감을 잡고, 진행하는데 있어서 정말 도움이 많이 되었다. 간단 과제 설명 a 스택, b스택이 주어진다. 문제에서 주어진 액션(sa, sb, ss, pa, pb, ra, rb, rr, rra)을 사용하여 스택 a를 정렬시킬 수 있는 액션들을 출력해야한다. $> ./push_swap 2 1 3 6 5 8 sa pb pb pb sa pa pa pa 2 1 3 6 5 8 을 정렬시키기 위해서는 위와 같이 액션을 호출하면 정렬 할 수 있다. 동작을 시각화로 살펴보자 사실 문제만 봐서 이해가 .. 더보기
GNL(Get Next Line) 문제 이해하기 GNL을 처음 접하고 도대체 뭘 만들라고 하는 건지, 문제에 대한 방향성을 잡기 바란다는 마음으로 이 글을 작성하였다. 보너스 문제를 도전하거나, 문제를 이해한 분들에게는 도움이 되지 않을 것이라고 생각한다. 사용한 테스트 툴 https://github.com/charMstr/GNL_lover https://github.com/Hellio404/Get_Next_Line_Tester https://github.com/Mazoise/42TESTERS-GNL https://github.com/C4r4c0l3/gnl-war-machine-v2019 https://github.com/DontBreakAlex/gnlkiller https://github.com/mrjvs/42cursus_gnl_tests 이중에 G.. 더보기
netwhat 문제 풀이 Q. What is the maximun number of IP addresses that can be assigned to hosts on a local subnet that uses the 248.0.0.0 subnet mask? Q. 248.0.0.0 서브넷 마스크를 사용하는 로컬 서브넷의 호스트에 할당 할 수 있는 최대 IP 주소 수는? A. 134217728 - 2 = 134217726 해설. 서브넷 마스크를 사용하면 Host IP주소와 AND연산하여 Network 부분의 정보를 걸러낼 수 있다. 문제에서 주어진 서브넷 마스크 248.0.0.0를 bit로 바꾸면 아래와 같다. 1111 1000.0000 0000.0000 0000.0000 0000 1은 네트워크 영역, 0은 호스트 영역을 의미하게.. 더보기
ft_printf 사용한 테스터기 https://github.com/gavinfielder/pft - 단위테스트 통과 https://github.com/charMstr/printf_lover_v2 - 모든 테스트 통과 https://github.com/Mazoise/42TESTERS-PRINTF - 모든 테스트 통과 https://github.com/AntoineBourin/printf-tester - 모든 테스트 통과 총 4개의 테스터기를 사용했고, 보너스는문제는 풀지 않았다. 개인적으로 처음 코드를 짜면서 테스트를 할때는 printf_lover_v2를 추천한다. 서식지정자 하나하나 단위테스트를 하기 쉬웠던거 같다. 기본으로 구현해야하는 것 기본점수만 받고 싶다면 구현해야 하는 서식지정자들은 다음과 같다. %c %s %.. 더보기
ft_libft 테스터기 링크 및 팁 사용한 테스터기 - github.com/jtoty/Libftest - github.com/ska42/libft-war-machine - github.com/alelievr/libft-unit-test 총 3개의 테스터기를 사용하였다. 사용 방법은 해당 링크에 들어가면 자세히 나와 있다. config파일이나 makefile에 가서 경로를 직접 변경해줌으로써 사용할 수 있다. makefile 공부 - https://velog.io/@hidaehyunlee/Makefile-자주-사용하는-문법-정리 - http://doc.kldp.org/KoreanDoc/html/gcc_and_make/gcc_and_make.html#toc3 - https://wiki.kldp.org/KoreanDoc/html/GNU-Make.. 더보기

728x90