42SEOUL에서는 필요하다고 생각되는 함수라면 직접 구현해 사용해야 한다. 이 프로젝트를 통해 C 표준 함수들을 재구현하면서 함수의 작동 원리와 사용법, 그리고 C언어에서 데이터와 그에 필요한 메모리를 어떻게 효율적으로 관리하고 다룰 수 있는지 배울 수 있었다.
libft 프로젝트의 part1 함수들을 구현하면서 메모했던 내용들을 정리해두었다. 이 라이브러리의 함수들은 꾸준히 업데이트 되고 있기 때문에 가장 최신의 코드는 여기 깃허브 저장소를 참고...
libft 프로젝트의 part1 함수들을 구현하면서 메모했던 내용들을 정리해두었다. 이 라이브러리의 함수들은 꾸준히 업데이트 되고 있기 때문에 가장 최신의 코드는 여기 깃헙저장소를 참고...
libft 프로젝트의 bonus part 함수들을 구현하면서 메모했던 내용들을 정리해두었다. 이 라이브러리의 함수들은 꾸준히 업데이트 되고 있기 때문에 가장 최신의 코드는 여기 깃헙저장소를 참고...
직접 만든 라이브러리 함수들의 성능 및 정확도 테스트 프로그램
Norminette는 42 네트워크에서 소스 코드가 학교의 규범을 준수하는지 확인하기 위한 도구이다.코로나19로 42 클러스터 시설이 일시적으로 폐쇄된 것을 감안하여, 노미네트에 원격으로 접속할 수 있도록 하기로 했다고 한다.
이 프로젝트의 목적은 file descriptor로부터 읽혀진, line(개행문자 기준)을 반환하는 함수를 코드화 하는 것이다.
Get Next Line은 읽어온 파일의 한 줄을 반환하는 프로그램이다.
처음에는 함수를 동작하게 만드는 것에 집중해서 정신 없이 코드를 짰다면, 완성된 후에는 코드를 '눈에 잘 들어오게' 정리하고 싶다는 욕심이 생긴다.
Netwhat 문제를 통해 네트워크 개념을 복습했다.
과제 시작 전 공부한 내용 정리.
과제 시작부터 마무리까지 기록한 내용들.
돌아보니 한 프로젝트의 Dockerfile을 만드는 과정은, 내가 지금까지 차근차근 만들어온 프로젝트를 적절히 분해해서 srcs, Dockerfile, 쉘스크립트에 잘 나눠 담는 일인 것 같다.
어셈블리어 소개 및 문법 구조, 그리고 어셈블리에서 다루는 64비트 범용 레지스터 종류를 정리했다.
Opcode로 사용하는 어셈블리 명령어는 엄청나게 많다. 자주 사용한다는 몇 가지 명령어만 정리해봤다
어셈블리어로 프로그램을 짜려면 먼저 함수 호출 규약을 알아야 한다. syscall 함수의 사용법과 에러 처리 방법도 함게 알아보자.
미니쉘 과제를 시작하기 전 알고있으면 좋을 Shell의 구성요소, Shell에서 프로세스를 시작하는 방법, 허용함수 동작방식을 정리했습니다.
완성하기까지 총 7주. 예외처리를 하다보면 코드가 지저분해지고, 또 원래는 잘 동작했던 것들이 무용지물이 되는 경우가 많았습니다. 지쳐갈 때 쯤 힘이 되어 주었던 건 많은 42 동료의 도움덕이었고, 그래서 저도 메모했던 내용들을 자세하게 정리해서 공유하고 싶었습니다.
시그널을 받은 프로세스는 다음 3가지 반응 중 하나의 액션을 취한다. 1. 프로세스 종료 / 2. 시그널 무시 / 3. 사용자가 지정한 함수(핸들러) 호출
모든 명령어는 종료 상태(exit status) 리턴한다. 명령어 성공시에는 0을 리턴하고 실패시에는 에러 코드로 해석될 수 있는 1~255를 리턴한다. 즉 유닉스 관례를 잘 따르는 프로그램이라면, 함수의 가장 마지막에 실행된 명령어가 종료 상태를 결정한다.
"한 가지 일만 아주 잘하는 프로그램들을 작성하라. 프로그램들이 다른 프로그램들과 함께 일할 수 있도록 작성하라. 프로그램들이 텍스트 스트림을 처리할 수 있도록 작성하라. 왜냐하면 그것은 보편적인 인터페이스이기 때문이다." - Doug McIlroy
파이프와의 차이점은, 표준입력과 표준출력을 넘겨주는(변경하는) 대상이 프로세스가 아니라 파일(file)이라는 것 뿐이다.
I’ve never thought philosophy would be so deadly.
뮤텍스(Mutex)와 세파모어(Semaphore)는 모두 동시성 프로그래밍의 가장 큰 숙제인, "여러 프로세스나 스레드가 공유자원에 접근하는 것을 제어(관리)" 하기 위해 고안된 기법이다.