본문 바로가기

코딩/42경산

(11)
[42경산] 뒤늦은 get next line 후기 나를 괴롭혔던 겟넥라 후기. 파일 디스크럽터에서 읽은 데이터를 출력하는 함수를 구현하는 것이 목표. 주의사항은 아래와 같다.- 한 번에 한 줄씩 출력해야 함- 파일 혹은 텍스트 라인을 통해 입력된 데이터를 출력한다.- 출력되는 데이터는 개행처리 되어야 한다.- 단, 파일의 끝에 도달하면 개행 안함모든 헬퍼 함수는 get_next_line_utils.c 파일에 포함되어야 함 간단한 로직을 살펴보자면, 뮬리넷에서 평가할 때 get_next_line() 함수를 반복해서 호출하게 된다.즉 get_next_line() 함수는 반복 실행되며 한 줄의 텍스트를 출력하면 된다는 뜻.본격적으로 시작하기 전에 간단한 사전지식이 필요하다. 먼저 파일디스크럽터.영어 네이티브가 아니라서 그런지 파일의 정의가 제대로 와닿지 않았..
[42경산] valgrind와 메모리 누수 지옥 탈출하기 매니지드 언어라고 들어보셨나요?managed의 뜻은 "무언가가 관리되는" 이라는 의미입니다.프로그래밍 언어에서 managed code는 메모리가 언어 레벨에서 관리되는 것을 의미합니다. 42에서 사용하는 언어인 C는 unmanaged code입니다.메모리를 알아서 관리해주지 않기 때문에 개발자가 직접 메모리를 관리해줘야 합니다.메모리를 직접 관리하다보니 적재적소에서 메모리를 관리하여 프로그램 퍼포먼스가 좋다는 장점이 있지만, 반대로 메모리를 제대로 관리하지 못 할 경우 메모리 누수가 발생할 위험이 있습니다.42에서 작성하는 프로그램들은 기본적으로 메모리 누수를 대비하여야 합니다.따라서 작성한 코드의 어떤 부분에서 메모리 누수가 발생하는지 확인할 수 있어야 하는데, 이때 valgrind를 사용합니다.val..
[42경산] 까먹기전에 정리하는 so_long 42 경산에서는 다양한 과제를 제공하여 42를 여행하는 학습자들이 자율적으로 개발 지식을 습득할 수 있도록 유도하며, 학습 과정에 단계별로 시간 제한을 두어 학습자들이 루즈해지지 않도록 만든다.42의 본과정에서 써클은 각각의 단계를 의미하는 단어이며, 각각의 써클에는 몇개의 과제들이 포함되어있다.위의 이미지는 각각의 원(써클)에 포함된 과제들을 표현한 그래프. 본과정 2써클의 과제들은 그래픽 과제와 알고리즘 과제, 운영체제 과제들로 이루어져있다.나는 그래픽 과제에서 게임을 만드는 so_long을, 운영체제 과제에서 minitalk을 선택했고, exam rank 02와 push_swap까지 모두 마무리하는데에 2달 정도의 시간을 소모했다. so_long은 42에서 제공하는 라이브러리인 minilibx를 활..
[42경산] 까먹기전에 정리하는 minitalk minitalk은 시그널과 비트연산을 다루는 과제입니다.클라이언트와 서버 프로그램을 각각 만들고, 그 두 프로그램이 통신하도록 하면 됩니다.보너스를 구현하지 않으면 코드량이 많지 않고, 로직이 간단하기 때문에마일스톤이 얼마 남지 않았다면 pipex보다는 minitalk을 추천합니다.시그널이라는 용어를 처음 접하고 혼란스러웠는데,그냥 클라이언트에서 서버에 1 또는 0으로 이루어진 데이터를 전달하는게 시그널이었습니다.내가 입력한 문자가 그대로 전달되는 것이 아니라 1과 0으로 쪼개져서 전달되기 때문에비트 연산에 대해서도 알고 있어야 합니다. 그래서 클라이언트 측의 로직은 아래와 같습니다.1. 서버 프로세스의 PID와 전달할 데이터 입력받기2. 예외처리하기3. 입력받은 문자열을 문자단위로 쪼개기4. 쪼개진 문..
c언어로 isalpha, isdigit, isalnum, isascii, isprint 함수 구현하는 방법 is 시리즈 함수는 매개변수로 받은 int 자료형 데이터가 ascii 코드 상에서 어떤 의미를 가지는 데이터인지 판별하는 함수다. 그래서 ascii 코드표를 잘 참고하면 어렵지 않게 함수를 정의할 수 있다. 1. isalpha 구현 개요 isalpha 함수는 매개변수로 받은 int 자료형 데이터가 알파벳인지 확인하는 함수다. 함수는 대문자 알파벳이거나 소문자 알파벳일 경우 1을 반환하고, 그 외에는 0을 반환한다. 구현 매개변수로 받은 데이터가 알파벳인지 확인할 때에는 ascii코드를 체크하는 방법이 가장 쉽다. 터미널에서 아래 명령어를 입력하면 ascii 코드표를 확인할 수 있다. man ascii 위 표를 보면 10진수 아스키 코드가 65일때 대문자 알파벳 A와 대응된다. 우리가 함수에서 매개변수로 ..
짧지만 굵었던 42경산 피신 리로드 후기 42 경산 라피신 1기 1차 교육생이었습니다만 본과정에 합격하게 되었습니다. 합격 후 첫 번째 과정이 바로 피신 리로드 과정이었습니다. 피신 리로드는 본과정에 들어가기 전 라피신 과정을 되새기며 예열 하기 위한 과정입니다. 라피신 이후 본과정 시작 전까지 2달 정도의 시간이 비었기 때문에 Norminette라던가 로우레벨로 코드를 구현하는 접근방식이라던가 가물가물해진 내용들이 있었기 때문에 라피신 리로드 과정이 조금은 부담스러우면서도 한편으로는 반가웠습니다. 피신 리로드 기간에는 27개의 과제를 해결해야 합니다. 과제들은 모두 라피신 기간에 만나보았던 문제들로 이루어져 있습니다만 제가 라피신 기간에 도달하지 못했던 레벨의 과제도 풀어야 했기 때문에 조금은 긴장감이 느껴졌습니다. 라피신 리로드 기간은 딱 ..
비전공자의 42경산 1기 라피신 후기 1. 42 경산이란? 혹시 42 서울을 들어보셨나요? 42 서울은 프랑스의 에꼴42의 어쩌구저쩌구... 네, 설명이 장황하니 요약하자면 42는 교수, 교재, 교육비가 없는 코딩 교육과정입니다. 좀 더 엄밀히 말하면 코딩 보다는 프로그래밍 전반에 대한 교육 과정이라고 할 수 있겠네요. 현재 전 세계적으로 수십개의 캠퍼스가 존재하며 세계적으로 유명한 교육기입니다. 국내에도 이미 서울에 캠퍼스가 존재하는데 이번에 42 경산 캠퍼스도 생겼습니다. 기존의 부트캠프와는 결이 다르다는 평이 많아서 궁금하기도 했고, C언어와 터미널 위주의 교육 환경이 궁금하기도 해서 한 번 신청해보았어요. 2. 42 경산에 기대하는 것 한달간 라피신 과정을 진행하면서 라피신은 본인이 42의 교육과정에 적합한지 확인하고, 적합하지 않다..
42경산 라피신 예습, 윈도우에 우분투 설치하고, 터미널에서 vi 에디터로 C언어 코드 작성하고 실행해보기 42경산은 윈도우도, 맥OS도 아닌 우분투 환경에서 과제를 해결해야 한다고 합니다. 게다가 C언어를 활용하여 라피신 과정을 진행해야 합니다. 산넘어 산인게 테스트는 터미널을 활용해서 진행해야 한다고 합니다. 그럼 결국 C언어를 터미널 환경에서 활용할 수 있어야 한다는 뜻입니다. 그래서 라피신 예습을 위한 우분투 환경 구축 및 vi 에디터를 활용한 C언어 코딩 방법에 대해 알아보고자 합니다. 우분투 환경은 윈도우가 설치된 PC가 있다면 생각보다 쉽게 구축할 수 있습니다. 여러분 혹시 WSL을 아시나요? WSL은 Windows Subsystem Linux의 약자인데, 말그대로 윈도우에서 리눅스 환경을 사용할 수 있도록 해주는 도구입니다. 우리는 WSL2를 이용해서 윈도우 PC에 우분투를 설치해보겠습니다. 우..