한 분이 테스트 공유를 공유해주셨다. 

아직 어떻게 사용하는지 실험 안해서 정확히 모르지만, 작동 잘 할 것 같다. 

원활한 동료평가를 위해
간단하게 c00의 테스트케이스를 만들어보았습니다.
사용하실 경우 출력은 직접 확인하셔야 합니다.
c00 깃이 들어있는 디렉토리에서,
curl -L eastriver.today/c00 > main.c
git ls-files | xargs gcc main.c
./a.out
받게 되는 소스를 참고하셔서 앞으로 직접 테스트케이스를 만드셔도 좋겠습니다.

by dlee

 

 

Posted by 뭔가느낌이
,

42SEOUL 3-1. 10일차

42 SEOUL 2020. 10. 22. 11:41

시간이 없다. 이제 쉘 00 했다. 시간이 없다. 씨 언어 진도 나가야 한다. 늦었다. 더욱 빨리 해야 한다.

슬랙이 포화상태가 된다. 곧 안보일 것이다. 이미 내가 만들었던 예전 채널의 글은 안 보인다. 충격이었다.

오늘은 아침부터 평가를 하러 다녔다. 6포인트 정도 얻었다. 그 이후로는 잘 잡히지 않는다. 포인트가 많으면 평가하려고 해도 잡히지 않는 것 같다.  포인트가 낮으면 잘 잡히는 것 같다. 다른 분은 15점이나 하루에 평가 포인트 얻었던데, 아마도 연속으로 계속했던 것 같다. 대부분 씨 언어를 하고 있더라. 

여기서부터 사람들간에 차이가 벌어진다. 

씨 언어를 배우고 온 사람과 배우고 오지 않은 사람이 나눠진다. 그리고, 배우지 않았지만 도전해서 알아가는 사람과 그냥 다른 사람이 알려주기를 기다리는 사람으로 나눠진다. 

정말 아쉬운 것은 이해력도 좋고 배우는 것을 매우 좋아하는 사람이지만, 다른 사람에게 먼저 다가가는 것을 어려워하는 분들이다. 이 분들이 제대로 배운다면 정말 대단한 프로그래머가 될 수 있는데, 성격이 그것을 장벽으로 막아버린다. 

평가를 해보거나 주변의 모습을 보면 아직도 쉘에서 나와 같이 머무르는 사람이 있다. 굉장히 조용한 성격인 사람들이 대부분이다. 한 분은 솔직하게 나에게 말했다. "저는 주입식 교육이 잘 맞는 것 같아요. "  정말 솔직했다. 주입식이 빠르고 편하고 효율 높은 것처럼 느껴지기는 하지만, 결국에 가르쳐 주는 그 누군가가 없으면 혼자 서기가 쉽지 않은 방식이다. 

혼자 서기 위해서는, 자신의 습관을 깨야 한다. 두려움, 공포심, 쑥스러움, 민망함, 때로는 모욕을 당할 수도 있는데, 그런 것을 잠시 뒤로 미루는 방법을 배워야 한다. 

라피신에서 그런 것을 배우면 좋겠다. 

나와 온라인 학습을 라피신 들어오기 전에 같이 했던 분과 대화를 했다. 나에게 이해는 하는데, 어떻게 코드를 짜야할 지 모르겠다고 하셨다. 그래서 같이 해보자고 하고, 처음 쉬운 문제, 같이 풀었다. 하나씩 설명해드렸다. 그러니까, 이해했다고 하시면서 직접 해보러 가셨다.

내가 저녁에 한 분을 평가해드렸다. 대화를 많이 했다. 그리고 평가를 나에게 잘 해주시려고 했던 것 같은데. 0점을 주셨다. 평가 작성한 글에는 긍정적으로 적었는데, 별도로 점수 체크하는 것은 막대를 조절해야 하는 방식을 잊어버리고, 그냥 0점으로 기본값 표시된 상태에서 입력을 마치고 전송한 것 같다.  

목요일은 온라인으로 학습한다.  금요일은 시험이다. 그리고 러쉬가 기다린다. 정말 바쁘다. 정말 바쁘다 바쁘다. 이 바쁨 속에 빠지지 않기 위해서 계속 생각을 고쳐 생각하려고 노력한다. 스트레스에 묻히면 안 된다. 이것은 사실 스트레스도 아니다. 재밌게 하자. 사람들과 잘 지내고 좋은 감정 공유하기 위해서 노력하자.  서로 돕기 위해서 노력하자. 당신의 성공을 위해서 내가 도와준다는 느낌을 주기 위해서 노력해보자. 그러면 나도 좋은 일이 있겠지.

Posted by 뭔가느낌이
,

 

러쉬를 했다. 10점 받았다.

오전에는 슬랙으로 길게 이야기를 하고 싶었지만, 그럴 수 없었다. 솔직히 뭐를 해야 할지 몰랐다. 그냥 예상 문제를 냈다. 내가 생각하는 예상 문제 다 적었다. 아무거나 막 적었다. 무엇을 우리가 모르는지 알 수 없으니 아무거나 막 적었다.

생각나는 것 아무거나 적었다.

아무거나 막 적었다.

예상 문제 생각해봤습니다. 생각나는 문제들 대략적으로 적어보면, 아마도,
이 코드 모두 이해하시나요?
처음부터 모든 코드 다시 작성 가능 한가요?
파일을 3개로 나눠서 만든 이유를 아시나요?   예상답안 : 파일을 나눠서 작성하면 관리하기가 편함. 나중에 수정할 필요가 있을 때 수정이 필요한 파일만 수정하면 됨. 기본적으로 파일이나 함수등은 딱 한 가지 목적만 수행 하는 것이 가장 좋음. 여러가지 기능을 가지는 것은 분리해서 관리해야 효율적.
전처리가 무엇인가요? 예상답안. 전처리는 '컴파일 전'에 처리한 다는 의미로 컴파일 하기 전에 전처리문에 들어있는 값들이 모두 목적에 맞게 수정됨. 프로그램 작성자가 쉽게 알아보거나, 코드를 더 명확하게 분리하고 싶은 경우 전처리 기능을 사용. 예. # include  이름 .  헤더파일을 분리하여 함수 선언이나 다른 정의 값들을 별도로 분리하여 관리. 이 헤더 파일은 다른 프로그램 사용시 불러와서 사용할 수 있고 코드 재 작성을 줄일 수도 있다.  그리고 # define  이름  값.  으로 어떤 상수값을 프로그래머가 알아보기 쉬운 특정 이름으로 바꾸기도 함. 예를 들어 원주율이라면 # define pie   3.14 ;   이렇게 하면 3.14가 아닌 pie 라고 코드에 적어도 되고 이해하기 쉽다.
write 함수를 사용하는 이유가 뭐라고 생각하세요?    예상 정답 .  write 함수로 자기가 처리할 값을 인자값에 정확하게 넣을 수 있어서 다른 메모리 공간 사용을 처음부터 막을 수 있다. write( 1, 버퍼, 2)  라고 했을 경우  마지막 2는 2바이트이고 2바이트만 출력할 것이라는 의미, 명확하게 내가 사용할 값을 적어 주기 때문에 다른 메모리 침입을 막을 수 있다. 보안상 좋다. 입력을 받을 때에도 (0, 이름 , 2) 이렇게 하면 2바이트만 받을 수 있다. 안전함.
여기까지 는 제가 생각해보고 적은 거라서 틀릴 수도 있습니다. 틀린 것 발견하면 다시 알려드릴게요 .
등등...
생각해보니 컴파일 후에  확장자가 .o 인 목적파일도 만들어지고, 이 목적파일을 연결하여 최종 실행파일이 만들어 지는데요. 이런 과정도 질문 할 수 있겠네요.
실행파일 생성 순서, : 코드를 만든 후 전처리기가 미리 전처리를 하고 전처리가 끝난 코드를 컴파일 진행하면 기계가 이해할 수 있는 어셈블리 코드가 만들어 집니다. 이렇게 만들어진 어셈블리 코드는 다시 목적 파일이 되고 이 목적파일을 최종적으로 다른 라이브러리와 연결하여 '실행파일'이 됩니다.
우리는 소스 파일 만들고 컴파일만 진행해서 . 중간 단계를 한 번에 해결했던 것 같네요. 편하지만, 중간 단계를 하나씩 확인해볼 수가 없어서 과정을 알고 있으면 좋을 것 같아요.  참고 링크 (edited) 
10:11
예상 질문 .
목적 파일을 만드는 이유는? 예상 답 : 목적 파일은 한 번 만들어 두면 , 별도로 컴파일 하지 않고 바로 링커로 연결해서 사용할 수 있음.  대규모 소프트웨어가 소스 수정이 필요할 떄 이미 목적파일 만들 어 두면 수정할 특정 파일만 별도로 컴파일하고 다른 파일들은 컴파일 하지 않고 바로 링커로 연결하여 실행 파일 작성 가능하여. 컴파일 시간을 줄일 수 있다.

예상 질문.
함수 선언에 void가 들어간 이유는.
프로그램 안에 main 프로그램은 몇 개가 필요한가요.
main함수를  여러개 포함하면 어떻게 되나요.
프로그램에서 가장 먼저 실행하는 함수 이름은 무엇인가요.

메인 함수 위에 다른 함수 선언한 것을 무엇이라고 하나요. 
-> 함수원형이라고 한다.
함수원형을 메인 위에 작성한 이유는 무엇인가요. 
-> 미리 메모리 공간 확보위해.  씨언어는 순서대로 실행해서.
함수원형을 미리 작성하지 않으면 어떻게 되나요.
-> 해당 함수를 만나면 그 함수 찾지 못해서 오류.
함수원형을 미리 작성하지 않고 코드 작성하는 방법은 없나요.
-> 함수 원형 위치에, 함수 구문을 모두 작성하면 됨.
러쉬 함수 내부를 여러 개 함수로 나눴는데 나눈 이유는 무엇인가요.
-> 차후 수정이나 기능 추가시, 별도로 관리하기위해.

수원형 관련 링크  / 찾아보니, 함수원형으로, 그 함수의 결과값 반환을 어떤 형태로 할 것인지 미리 컴파일러에게 알려주는 역할을 한다고 하는데, 그 외에도 이유가 많네요.

그리고 클러스터로 갔다. 대륭 무슨 무슨 빌딩. 

오늘 출입하는 날이 아니어서 들어갈 수는 없었다. 사실 카드 찍지 않고 5층에 들어가서 대화하고 싶었지만 같은팀 한 분이 부정출입이라고 하셔서 하지 않았다. 3시가 넘었다. 4시부터 시작이다. 팀원 모두 모여서 커피집에 갔다. 나는 커피집에서 커피를 거의 마시지 않는다. 하지만, 가끔 팀원들이 가자고 하면, 갈 때가 있다. 커피 한 잔에 5천원. 말이 되나? 비싸더라. 서로 팀원들의 생활 문화와 생각이 다르니 어쩔수 없다고 생각했다. 

들어가서 커피 주문하는 시간도 아까웠지만 어쩔 수 없었다. 일단 팀원들이 앉아서 20분 정도 이야기하는 게 중요했으니까. 대화를 했다. 그동안 거의 아무런 열정을 보여주지 않던, 팀원이 갑자기 날카롭고 열정적인 질문을 하기 시작했다. 내 생각으로는 시험이 가까워지니까 드디어 숨어 있는 열정을 보여주는 것으로 생각했다. 그래서 나도 열의가 더 올라왔다. 이렇게 동기유발이 되는 좋은 경험을 했다.

그리고 나중에 알았는데, 라피씬 들어온 이유가 있다고 했다. 나와는 달랐다. 나는 간절함을 느끼고 들어왔다. 혼자서 공부하는게 힘들어서 들어왔다. 같이 공부하고 싶어서 들어왔다. 하지만, 어떤 분은 알바하는 생각으로 공부하면서 알바비도 버는 것으로 왔다고 했다. 정말 솔직했다. 그 솔직함에 감동받았다. 자신의 생각을 꾸미지 않고 이야기 하는 것이 감동을 받았다. 

물론 다른 사람들이 많이 알려주고 끌어줘야 할 것이다. 그리고 그런 사람들의 도움과 선의로 이 사회는 조금씩이라도 움직이는 것 같다. 

그리고 한 분이 슬랙으로 그만둔다고 했던 말이 계속 떠오른다. 그 분은 사라졌지만, 나의 기억은 남아있다. 같이 했으면 한다. 그리고 ...아쉽다. 

조금 전에 보니 와보니 10점이 나온다. 21:15:59 

10점을 받았다. 나는 0점 받을 줄 알았는데. 10점이나 받았다. 이 점수는 아마 평가 점수가 아니라. 코드가 기계 채점 받고 나온 점수 같다. 코드에 return 구문 뒤에 한 칸 빈칸이 있었는데, 이 내용이 걸렸나? 추측해 본다. 

다 필요없고, 나는 서로 끝까지 포기하지 않고 열심히 한 결과물이라고 보고, 후회 1도 없다. 정말 아무런 후회 없고 누구 원망도 하지 않는다. 나도 내가 할 수 있는 것 찾아서 했고. 

오늘  카뎃 평가해준 분이 자기는 러쉬 다 0점 받았었다고 한다. 자기 동생이 cnc 한다고 했다. 기계를 가져오기 위해서 어디더라. 멀리 철원? 기억 안난다. 그곳에서 기계 가져왔다고 하던데. 

평가자께서 알려주신 정보는. 기부 많이 하면 뱃지 받을 수 있다. 이 정보 알려주더라. 그 외에는 많이 숨기셨다. "직접 해보면 압니다. 어머니가 앱 사용법 물어보면 뭐라고 하죠? 직접 눌러보세요. 하는 것과 같아요" 이렇게 설명해주셨다.

유투브 영상에서 보던 분들이 많이 오셨다. 매우 쑥스러워 하신다. 유투브에서 봤다고 하니까. 쑥스러워 하시더라. 돌아왔다.

그리고 같이 한 팀원이 평가 한 번도 안 해봐서 잘 모르겠다고 하더라. 그래서 내가 하는 방법 알려주고, 꼭 오늘 집에 가기 전에 해보라고 했다. 그렇게 한다고 했다. 조금 열정이 올라오는 느낌이다. 

돌아와서, 한 분과 슬랙 대화를 했다. 자주 대화하던 분이다. 앞으로 라피신 학습 방향과 행동 수칙 같은 것 논의했다. 전략 회의와 비슷했다. 하지만 내일 다른 곳에 간다고 했다. 약속이 있어서...

 

'42 SEOUL' 카테고리의 다른 글

테스트 코드를 공유해주셨다.  (0) 2020.10.22
42SEOUL 3-1. 10일차  (0) 2020.10.22
42SEOUL. 헤더문서에 제 메일을 넣고 싶어요.  (1) 2020.10.20
42SEOUL 7일차, 8일차  (0) 2020.10.20
42SEOUL 3-1기_2일,3일,4일  (0) 2020.10.16
Posted by 뭔가느낌이
,