코딩 (161) 썸네일형 리스트형 [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. 쪼개진 문.. 자바스크립트의 클로저를 간단한 예제로 알아보기 클로저...자바스크립트를 공부하다보면 만나게 되는 어려운 개념들 중 하나입니다. 클로저를 잘 이해하기 위해서는 버그를 줄일 수 있는 변수 정의 방법에 대해 알아야 합니다. 변수를 사용할 때에는 변수를 정의하고, 데이터를 할당해야 합니다. var 변수; // 변수 정의 변수 = 10; // 데이터 할당 자바스크립트에서 var 키워드를 사용해서 변수를 정의하면 재정의와 재할당이 모두 가능합니다. var 변수; 변수 = 10; var 변수 = 20; // 재정의 변수 = 30; // 재할당 재정의는 이미 정의된 변수를 다시 정의하는 것이고, 재할당은 이미 데이터를 할당한 변수에 새로운 데이터를 할당하는 것을 의미합니다. 자 그럼 변수를 재정의하고 재할당 할 수 있게되면 어떤 문제가 발생할까요? var 간식; .. 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개의 과제를 해결해야 합니다. 과제들은 모두 라피신 기간에 만나보았던 문제들로 이루어져 있습니다만 제가 라피신 기간에 도달하지 못했던 레벨의 과제도 풀어야 했기 때문에 조금은 긴장감이 느껴졌습니다. 라피신 리로드 기간은 딱 .. VSCode - 들여쓰기를 space에서 tab으로 변경하고 저장하기 에꼴 42에서는 norminette라는 프로그램을 이용해 코드 포맷을 강제합니다. 42 경산에서도 마찬가지로 norminette를 이용해서 작성한 코드의 포맷을 지정하고 있습니다. 이게 왜 중요하냐면, 42 교육과정에서는 과제를 제출할 때 기계평가라는 것을 거칩니다. 기계평가는 42 서버에서 제출된 과제의 코드를 검사하여 코드가 정상적으로 동작 하는지, 지정된 코드 포맷을 만족하는지 등을 검사하는 과정을 의미합니다. 아무튼 이 norminette를 만족시키기 위해서는 들여쓰기를 4칸짜리 tab으로 지정해야 합니다. 그런데 vscode를 최초 설치 시 들여쓰기 설정이 4칸짜리 space로 설정되어있습니다. 저기 가운데에 Spaces: 4라고 표시되어있는 부분이 들여쓰기를 space로 처리했다는 의미입니다... 이전 1 2 3 4 ··· 21 다음