프로그래밍/42서울 썸네일형 리스트형 [42서울] 미니쉘(minishell) 파싱, 그 후회와 참회의 기록. 서론 라 피씬 이후에 처음으로, 코드에 한이 맺히고 내가 이 길을 가는 게 맞나 하는 생각이 한 번씩 들 정도로 힘든 과제였다. 평소와 달리 코드의 깔끔함을 추구하지 못하고 3천 줄이 넘는 코드를 리팩터링 할 엄두가 안 나서 그냥 제출했다. 가장 크게 실수했다고 생각한 부분은 코드를 짤 때 처음부터 norminette 규정을 생각하고 만들었어야 했는데, 먼저 코드를 만든 다음에 노미넷을 지키려고 한 부분과 구조에서 문제가 발생했을 때 바로 갈아엎었어야 했는데 계속 하나씩 수정하다가 나중에는 갈아엎기도 애매하고 계속 수정하기도 애매한 구석에 밀렸던 게 후회된다. 그런데 지나고 나서 생각을 해보니 이런 부분들이 결국 내가 스스로 불러온 재앙이었다는 걸 알게 되었다. 그래서 그 부분들을 중심으로 미니쉘 과제의.. 더보기 [42서울] 철학자(Philosophers)에게 밥을 먹이자 서론 이번 과제는 생각보다 오래 걸려서 8~9일 정도 소요되었던 것 같다. 완성은 해놓고 집에 내려갔다 오느라 블랙홀 2일 남기고 평가를 받았는데, 내 코드를 4일 만에 다시 봄 + 평가에 문제 생기면 블랙홀 12시간 남기고 재평가받아야 함이라는 두 가지 요소로 인해 평가 내내 정신이 나갈 것 같았다. 다음부터는 이런 식으로 평가받지 말아야겠다. 철학자 과제는 운영체제에서 유명한 문제인 "식사하는 철학자 문제"를 직접 구현해보는 과제이다. 식사하는 철학자 문제는 대표적인 “동시성 제어” 문제로 하나의 젓가락(또는 포크)를 두 명이 동시에 잡지 못하도록 하면서(상호 배제), 각자 하나의 젓가락을 들고 다른 사람의 젓가락을 요구하는 데드락을 피해야 한다. 상호 배제는 뮤텍스를 통해서 구현하고, 데드락은 예방.. 더보기 [42서울] pipex 심플 가이드 서론 프로젝트 실패 이후 멘탈이 깨져서 신나게 놀다가 블랙홀이 가까워지면서 슬슬 공포감이 들어서 다시 과제를 시작했다. 후... 이러면 안되는데... 라는 생각이 들어서 다음 과제까지는 쉬지 않고 달려서 마무리할 예정이다. pipex 는 보너스까지 마무리하고 평가를 받으려고 했는데, 테스터기에서 일부가 해결이 안돼서 우선은 필수 파트만 내고 나머지는 나중에 다시 볼 생각이다. 과제 자체는 별로 어렵지 않았는데 리팩토링과 보너스 때문에 일주일 이상 걸렸다. 빠르게 필수 파트만 마무리한다면 3~4일 정도 걸리지 않을까 싶다. 서브젝트 정리 ./pipex file1 cmd1 cmd2 file2 이렇게 실행했을때의 결과물이 file2 이렇게 실행했을때의 결과물과 동일해야한.. 더보기 [42 서울] so_long을 빠르게 끝내보자 서론 push_swap을 끝내고 참여한 사이드 프로젝트가 끝나가면서 여유도 조금 생긴 것도 있지만, 당장 이번 주에 과제를 안내면 월급을 못 받을지도 모르는 상황에 처해서 급하게 과제를 하나 해치웠다. 내가 이전에 so long을 하고 다른 과제를 남겨뒀다면 큰일이었을 텐데 다행히 난이도가 상대적으로 낮은 과제여서 제대로 잡은 지 3~4일 만에 해결을 할 수 있었다. 서브젝트 정리 이번 평가부터 평가표를 정리하지 않기로 했다. 원래 뭘 해야 하는지 생각하는 게 좋다고 생각했는데, 최근의 논란들에서 평가표를 미리 보는 행위가 과제에는 도움이 되지만 나의 실패 경험을 쌓는 데는 도움이 안 된다는 걸 알게 되었다. 그래서 과제 2개 만에 다시 방법을 바꾸기로 했음. miniLibX를 사용하여 최소한의 움직임으.. 더보기 [42 서울] push_swap을 케이크처럼 쉽게 먹는 법 - 2 서론 어제 평가를 받았다. 역시 글을 쓰기전에 평가를 받으면 평가때 말을 하면서 머리속이 정리되서 글이 더 쉽게 나오는것 같다. 이전 글에도 적혀있지만 코드의 진행은 이 영상과 같다 https://youtu.be/8h7a7NxztkM 구현 시작 2개일때와 3개일때의 정렬은 별로 어렵지 않다. 2개일때는 그냥 둘중에 뭐가 더 높은 수인지를 확인해서 sa를 하거나 안하면 되고 3개일때는 경우의 수가 다섯가지이기 때문에 전체를 하드코딩하면 된다. 이제 3 보다 많은 숫자들을 정렬하기 위해서는 정렬 알고리즘이 필요하다. 우선 정렬이 시작되면 모든 수를 3등분 한다. 위에서 적힌 방법대로 나누면 왼쪽과 같은 모습이 된다. 이걸 이제 전부 스택b로 넘기면 오른쪽같은 사진이 된다. 전부 넘긴다고 했지만 실제 코드에서.. 더보기 [42 서울] push_swap을 케이크처럼 쉽게 먹는 법 - 1 서론 push_swap은 42서울 2서클 과제로 2서클 과제 중 가장 난이도가 높은 것으로 알려져 있다. 책 개구리를 먹어라! 의 교훈대로 2서클에서 가장 어려운 과제를 먼저 잡았다. 과제의 내용은 인자의 숫자들을 스택 두 개에 제한된 명령어를 최대한 적게 사용해서 정렬하는 과제이다. 이를 위해 다양한 알고리즘을 공부하고 고민하며 해결 방법을 찾아서 구현해야 한다. 이 글은 두 편으로 나눠서 1편에서는 알고리즘 구현 전까지, 2편에서는 알고리즘에 대한 얘기를 할 것이다. 다만 처음에 알고리즘을 생각해서 풀었다가 만점을 받기 위한 최적화가 난해해서(인자가 100개일 때 만점이 나오지 않았다), 갈아엎고 과제를 통과하기 위한 코드로 다시 짰다. 그러다 보니 이 글을 보고 구현하면 이 과제에서 학습할 수 있는.. 더보기 [42서울] ft_printf 보너스 가이드 개요 프엪은 가이드를 찾아봐야할 정도로 난이도가 좀 있는 편이라고 생각해서 글을 쓰기 시작한다. 사실은 과제를 완성하고 몇달만에 냈는데, 온라인 평가가 싫다고 계속 미루다가 더 미루기가 힘들어서 평가를 받았다. 정작 세 번 다 온라인 평가여서 뭔가 싱숭생숭했음 코드는... 맘에 안들어서 보여주고 싶진 않지만 [깃헙 주소]를 참고. 글에서 설명하기 위해서 필요한 만큼은 스크린샷으로 첨부할 것이고, 하위 함수들은 보는거보다 직접 만드는 걸 추천한다. 서브젝트 및 평가표 정리 첫페이지에 과제에 대한 설명이 다 담겨있다. 요약 : 이 프로젝트는 꽤 단순합니다. 여러분은 printf 함수를 직접 구현하시면 됩니다. 그냥 printf 를 만들면 된다. 그중에서 서식지정자 cspdiuxX% 를, 보너스에서는 -0.#.. 더보기 [42서울] Born2beroot 설치 및 세팅만 정리 주의! 이것만 보고 평가받으면 절대 통과할 수 없습니다. 이대로만 진행하면 평가를 받을 수 있는 상태가 되지만, 이 글은 평가를 통과하기 위한 글이 아님을 유의해주세요. 이 글은 평가표가 150줄 쯤 되는 대장정의 시작일 뿐입니다. 치트 시트 논란을 피하기 위해 일부러 설명은 빼고 적었습니다. 데비안 설치 https://www.debian.org/releases/stable/debian-installer/ 가서 amd64 다운로드 먼저 누르고 시작 command + space에서 vir 검색하면 바로 버츄얼박스 나옴 당연히 아무것도 없을테니 위에 new 클릭 이름과 설정 하고 Continue 누른 다음부터는 엔터 눌러서 넘겨도 됨 잘 되면 start버튼 클릭. 잘 안되면 대부분 goinfre 용량 문제임.. 더보기 이전 1 2 3 4 다음