http://git.innovationacademy.kr/hyejo/Libft
별도로 과제를 준다는 말을 보고 libft는 절대 아닐거야 라며 스스로 다짐하며 여유있게 환경을 구축하려는 계획을 가졌으나, 상당히 까다로웠고, 슬랙의 도움이 없었다면 혼자 하지 못했을 것이라는 생각을 했습니다.
라피신을 하면서 궁금한 점이 생기면 바로바로 옆사람에게 물어볼 수 있었지만, 그런 환경이 조성되어 있지 않아 상당히 불편했고 스스로 한다는게 오랜 시간이 걸리고 어려웠습니다.
http://git.innovationacademy.kr/hyejo/Libft
ft_memset을 구현하면서 의문이 들었다. 인자로 void 포인터를 받는데 함수 내에서 데이터 타입을 어떻게 알 수 있는지 궁금했다. 또한 memset에서 받는 두번째 int ch인자는 하위 8비트만 사용하는데 왜 굳이 int형을 사용했는지 궁금했다. 4개의 아래주소를 통해 궁금증을 해결하였다. https://nxmnpg.lemoda.net/ko/3/memset https://kamang-it.tistory.com/entry/C-memoryhmemset%ED%95%A8%EC%88%98%EC%99%80-%EB%B0%B0%EC%97%B4%EC%9D%98-%EC%B4%88%EA%B8%B0%ED%99%94 https://technote.kr/150 https://stackoverflow.com/questions/5919735/why-does-memset-take-an-int-instead-of-a-char memset에서 받는 size_t n은 배열의 갯수가 아닌 메모리 바이트의 갯수인것, 즉 1byte = char로 받으면 된다는 것을 알았다. 두번째 인자를 int로 받는 방법은 stackoverflow의 댓글을 봤는데, 해석이 안되어서.. 나중에 확인해야 할 것 같다..
본격적으로 첫 과제를 시작해보았기 때문에 어려웠습니다. 가장 처음에 memset을 시작하다보니 의문점이 많이 들었고, memset을 하다가 다른 함수를 구현하다가 다시 memset으로 돌아와 의문점을 해결했습니다.
하나의 헤더에 모든 함수를 다 넣는게 맞는가 싶어 여러 방법을 찾아보기도 했고, makefile을 만들기 위해 맛보기로 조금 보았습니다.
여러가지를 만지다보니 정작 눈앞의 진도는 나간게 얼마 없어 아쉬웠고, 내일부터는 진도부터 나갈 생각입니다.
calloc을 구현할 때 슬랙을 이용해 서울 교육색과 다른나라 교육생들에게 피드백을 받았습니다. (Sujung, 42saopaulo_anolivei, tet, aurollan_42Lyon)
size_t에서 발생한 세그먼트 에러에 대해 슬랙을 이용해 피드백 받았습니다. (Hyejang , Minckim, Donghwki)
http://git.innovationacademy.kr/hyejo/Libft
http://man7.org/linux/man-pages/man3/calloc.3p.html 부분을 이용해 calloc에 대한 개념을 이해하고 구현하였으나, malloc을 한 후 초기화 하는 과정에서 주소 접근 에러가 발생했습니다.
슬랙을 이용해 피드백을 받았고 기존에 malloc을 size와 count를 곱해 메모리를 할당하고 size_t 포인터로 받은 뒤 while문으로 0부터 size와 count를 곱한 값을 0으로 초기화했으나, i가 1씩 증가할 때 정말 1씩 증가하는 것이아닌 size_t 값만큼 증가하여 에러가 발생함을 알 수 있었습니다.
strtrim함수를 구현할 때 맨 첫글자와 마지막 글자만 제거 하는 줄 알 고 구현하였으나, 자기전에 다른 교육생분이 다른 예시를 보여주어 수정사항을 알게 되었습니다....
part2 전체를 다 하진 못했지만, 제 판단하에 진도를 많이 나갔으며, 24 ~ 25일에 헤매고 있었던 저와 다르게 집중할 수 있었던 날이라 매우 만족스러웠습니다.
많진 않지만 정리도 해보고 Wiki를 적고 ssh를 이용해 git push도 다시 해볼 수 있었습니다.
또한 슬랙을 이용해 다른 나라 교육생들과 소통을 하면서 42 시스템이 잘 구축되어 있다고 느끼고 앞으로 프로젝트를 하면서 큰 도움을 받을 수 있을꺼라 생각할 수 있었습니다.
아쉬웠던 부분은 몇가지 함수를 구현 할 때 man page를 보면서 반환값이 명확하게 나와있지 않아 여러 방법을 통해 찾아보았으나, 다 달랐기 때문에 그 부분이 조금 아쉬웠습니다.
http://git.innovationacademy.kr/hyejo/Libft
'.'과 '->'의 차이를 구분하기 위해 https://devbot.tistory.com/entry/C-%EA%B3%BC-%EC%B0%A8%EC%9D%B4 링크를 이용해 학습했습니다.
동적으로 생성한 데이터가 아닌 경우 포인터가 아닌 참조자를 사용한다는 내용을 확인했습니다.
libft test 파일을 찾아 디버깅을 하려 했으나, 에러가 발생했습니다.
확인 결과 gcc가 아닌 clang으로 설정을 바꿔야 했으며 설정을 바꾸고 진행한 결과 무수히 많은 버그를 찾을 수 있었습니다.
1차적으로 libft를 구현해 스스로 만족스러운 진행이였습니다. (테스트 미흡)
1차적으로 구현해서 앞으로 무수히 쏟아질 에러에 대해 기분이 좋습니다.
링크드리스트에 대한 지식이 미흡하나, 어느정도는 있던 상황이라 대체적으로 구현이 어렵진 않았습니다.
makefile을 작성해야하는데 감이 잘 안잡히고.. 맞는지 모르겠습니다만 많은 양의 코드를 makefile로 만들면 분명 제 실력향상이 있을거라고 생각합니다.
다른 사람의 깃의 데이터를 확인하고 테스트 해보는게 처음이라 상당히 흥미로웠습니다.
저녁에 테스트케이스를 돌려본 결과 많이 틀렸음을 확인하고 좌절한 상태입니다.
http://git.innovationacademy.kr/hyejo/Libft