반응형

결론 - 합격함

정보처리 기능사의 경우는 아무나 딸 수 있지만

정보처리 산업기사의 경우 대학교 4년제 학생 부터인가 딸 수 있는 걸로 알고 있다.

그런데 과정평가형으로 할 경우 고등학교 3학년 때인가로 볼 수 있는데

나는 특성화 고등학교여서 과정평가형으로 할 수 있었다. 딱히 이 것 때문에 이 학교에 들어온 것은 아니지만 다른 학생들은 이 것 때문에 들어온 경우가 많은 것 같았다. (난 있는지도 몰랐는데..)

 

그래서 솔직히 진짜 1학년 부터 3학년까지 작은 시험들을 보는데 진짜 하기 싫었다. 왜냐하면 대부분의 시험이 일부로 점수를 줘서 따게 할려고 거의 답안지를 주고 평가를 보는 방식이였어서 다 외우면 가능한 시험이였다.

어떤 과목은 그냥 답지를 주고 순서 바꿔서 시험 보는 경우도 있었다.. 물론 주관식이여서 외우기 힘들지만.. 

나는 이런 시험 방법이 별로기도 하고 잘 외우지를 못해서 진짜 점수가 낮게 나왔다..

 

이게 최종적으로 1학년 부터 3학년까지 본 결과의 평균이 내부평가로 들어가게 되는데 평균이 60점이 커트라인이다.

이 커트라인을 넘으면 되는데 난 다행히.. 이걸 3학년 때 깨달았어서 하나를 만점 맞으면서 다행히 87점으로 안정권에 들었다.

하하 근데 다른 딸 수 있는 자격이 있는 학생들은 대부분 90점 이상이라는.. 95 ~ 98점이 대부분..

 

일단 시험 보는건 2일로 되어있고 우리 학교는 2023년 10월 23일 ~ 2023년 10월 24일로 되었다. 

 

일단 공부를 하는데 게임과인가에서 먼저 봤다고 하는데 시험은 NCS 그 책에서 다 나온걸로만 시험 봤고 그 안에서만 나온다고 하고 했다는데, 일단 어려운건 맞는 것 같다.

 

공부는 약 시험 한달 전부터 공부를 했는데 제대로 한건 일주일 전이다.. 하하

시험을 보면서 안 결과는 JSP로 시험 보는건만 이전부터 어느정도 할줄만 안다면 필기는 그냥 일주일 전 부터 공부 해도 상관없다고 본다.

공부는 정보처리기능사과 겹치긴 하지만 다 까먹었어서 거의 다 새로 공부하긴 했지만 정보처리기능사 때 했던 공부보다 더 적게 공부했다.. 그래서 이 지식으론 절대 그 정보처리기능사 시험을 못 볼정도로만 공부해버렸다..

 

이 때는 시험 보기 전날에 몇시간 동안이나 모의고사를 풀어보았다.

그렇게 해서 준비를 거의 완료하고 월요일 10월 23일 시험을 보는데, 우리 과에서 보는 총 인원은 약 26명 정도인가..? 이것보다 약간 작은 인원으로 보았는데 (나머지는 60점 커트라인에서 실패)

필기를 시험 보았다. 필기는 객관식이 대부분이고 가끔 서답형이 조금 있다는 것? , 약간 헷갈리는 문제 있다는 것 빼고? 전부 잘 본 것 같았다. 진짜 리얼로 정보처리기능사보다 이게 왜 나오지? 하는 엄청 쉬운 문제들로만 가득했다.

정보처리기능사의 일부분과 정보처리산업기사의 약간만이 나와서 진짜 쉽게 시험을 보았다. 헷갈리는 문제는 다른 애들한테도 물어보았지만 전부 답이 다 달라서 그냥 나몰라라 하긴 했다.

 

억까 시작

그리고 다음 날인 10월 24일 실기에는 딱히 긴장감은 많이 없었고 잘 보기만 하면 됬었다.

왜냐하면 JSP이건 반에서는 내가 제일 잘 했었으니..?

암튼 시험을 보는데 진짜 억까를 엄청 당했다. 왜냐하면 일단 우리 학교의 신관에서 시험을 보는데 이 실기가.. 세팅이 각 반마다 다르다는 것이다.. 버전도 다르고.. 그래서 무슨 서버에서 런타임 바꾸는게 원래는 우리 반에선 할 필요가 없는데 신관에서는 필요했었다.. 진짜 짜증나긴 한데.. 어쩔 수 없으니 공부하는데.. 우리 학교는 모든게 드라이브가 초기화가 되고 가끔 D드라이브 부터는 초기화가 안된다. 그런데 이걸 사전에 시험관이나 우리에게 공지를 해야하는데 이걸 그 신관 선생님이 공지를 안했다.

이 것 때문에 나는 중간에 문제가 발생했다.

 

이 때 본 시험으로는 예제 문제중에 커피 판매 관리라는 예제가 있는데 그 문제와 거의 유사했다. 하지만 어째서인지 테이블은 4개에 삽입문은 100개 약간 안될 정도로 많았고.. 각각 입력 값은 전부 달랐다.. 대부분 숫자도 아닌 문자로만..

근데 일단 설정하고 시험을 보는데 SQL문을 전부 적었다.. 근데 action.jsp 를 만들고 있었는데.. 갑자기 쌔한 느낌이 들었다.. 옆에서 왜 내 컴쪽을 조작하는 것 같지..? 하는 느낌.. 갑자기 시험관이 전원 버튼을 눌르더니 내 컴이 갑자기 꺼졌다.

여기서 망한건 일단 C 드라이브 정보는 모두 초기화 된다. 만약 신관 선생님이 D 드라이브에 항상 저장하라고 알려줬다면 상관없겠지만.. 신관 학생들에게는 알려주고 우리에게는 알려주지 않았던 것이다.. 그래서 전부 날라갔고 난 좀 반 포기 상태였다.. 시험 본지 약 1시간 되었을 때 그런 일이 일어났는데.. 뭐 다행히 4시간을 주다 보니.. 날라간 1시간은 달라 했고 해서 총 5시간 정도의 시험 시간이 있는거니.. 그냥 컴 키고 보았다.. 근데 이게 벌어진게.. 중간에 내 왼쪽에 있던 학생이 중도 포기를 해서 벌어진거긴 하다..

 

어쨋든 손가락도 힘든 상태긴 하지만 일단 봐야 하니 계속 보는데.. 어라라..? 서버를 실행시키니 404 페이지가 계속 뜬다..

근데 SQL 문까지 다시 다 작성했는데 404 페이지가 떠서 왜 그런지 모르겠었었다.. 처음 보는거니깐..

그래서 선생님에게 물어보니 선생님은 분명 이 아이가 하나를 빼먹었을 꺼라면서.. 진짜 짜증나는건 처음부터 이 문제는 우리 반에선 절대 일어나지 않는 문제다.. 그래서 일단 시험관에게 말해서 자리를 왼쪽으로 이동해도 되는데 물었는데.. 안된다는 거였다.. 그러다가 계속 말하니깐 된다고는 했는데 진짜 빡친건 작성한 SQL 문도 이동시킬 수 없다는 것이다. 이유는 그 USB 하나가 거기꺼라서 마음대로 학생에게 빌려줄 수 없다면서 안된다는 것이다.. 뭐 이해는 한다만.. 처음엔 서버도 잘 실행 되었었어서 컴퓨터가 꺼진 후에 실행이 안되니.. 짜증나는데 심지어 이동도 하기 힘들게 했다는게.. 진짜 너무 짜증났다.. 그래도 계속 말하니 내 컴을 껐던 시험관이 말해서 일단 USB를 빌려주셔서 봤는데 그냥 샌디스크 16기가 짜리인가 USB.. 암튼 그걸로 이동하고 다시 시험을 보는데.. 어라라..? 이번에도 안됬었다.. 진짜 30분간 이걸 계속 했는데도 안됬었어서 진심으로 시험을 포기하고 나갈까라는 생각도 들면서 이 이후 시험을 포기하면 어떤 일이 벌어질지까지 생각했었다..

 

그러다가 프로젝트를 새로 만들어서 테스트 하는데 되었었다.. 그래서 이유를 보니 진짜 어이가 없었다. 아까 말한 것 처럼 이 신관에서만 일어나는 문제인데.. 신관에서 The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 이런 오류가 항상 발생했는데.. 이게 프로젝트에서 런타임을 바꿔야한다.. 뭐가 적용이 안된 것 같은데.. 해결 방법은.. 내가 적어두었던 거긴 한데..

 

1. 프로젝트 파일 오른쪽 클릭
2. 맨 아래 Properties 선택
3. Project Facets 탭으로 이동
4. 목록 중 Java 선택 
5. 오른쪽에서 Details와 Runtimes에서 Runtimes 선택
6. Apache Tomcat <버전> 으로 된 것의 체크박스를 활성화
7. 아래 Apply and Close 선택

 

이거다.. 근데 진짜 억까였던건 순서 차이였다.

원래 했던 방식은

서버 시작 > 오류 확인 > 런타임 변경 > 서버 재실행

인데 시험을 좀 빨리 볼려고 

런타임 변경 > 서버 시작

으로 했다.. 분명 그냥 오류 확인 안하고 문제 해결하고 바로 시험 보는건데.. 이것 때문에 계속 안됬던거다..

진짜.. 너무한 것 같았다..

 

어쨋든 다행히 원인을 알아서 다시 시험을 쭉 봤다.. 그러다가 갑자기 시험 끝나기 1시간 전에 같은 반 학생은 갑자기 학교 컴 특인 컴 사양 좋아도 갑자기 어느 순간 램 폭발인지 화면이 강제로 멈추는 현상이 일어났다.. 이것도 신관 선생님이 D 드라이브에 저장하는거 안알려줘서 갑자기 선생님들 와서 상의할 때 신관 애들한테는 설명을 했었는데 얘네들한텐 설명을 안했다면서.. 아쉬워 하는.. 뭔가 난 그때 굉장히 빡쳤다.. 어쨋든.. 이건 학교 컴 문제기 때문에 그 학생은 다시 시간 연장해서 추가로 시험 보아서 다행히 시험을 전부 끝 맡쳤고.. 나는 그 전에 4시간 10분에 시험이 다 끝나서 채점 받고 집으로 갔다.

 

채점 받을 땐 별거 없이 모든 항목이 제대로 동작하는지, 틀린건 없는지를 보는데 나의 경우 화면은 모두 똑같은데 아쉽게도 하나를 못 봤는지 reset 버튼을 눌르면 처음 인풋에 포커스를 넣는 기능을 안 만들었던 것이다.. 그래서 이거 하나 감점되고 일단 모든 채점에선 이거 빼고는 전부 만점이였다.. 나중에 따로 검사할때는 달르겠지만.. 최대한 똑같이 해서 오타도 없을꺼고 대부분 완벽할 것이다. 솔직히 4시간 됬을 때부터 화장실 가고 싶어서.. 진짜 빨리 해야할 생각으로 못 봤던 것이다.. 그 일만 없었으면 제대로 바로 다 풀었을 테고.. 심지어 마지막에 셀렉터 문 작성하는데.. 분명 조금만 생각해도 바로 쉽게 풀수 있는걸 일부로 돌아가서 풀어버리기도 하고.. 그래도 다행히 전부 풀어서 화장실 갔다가 집으로 갔다..

 

합격 계산 식

일단 이걸 하면서 대충 내가 합격 했을까를 계속 생각했다. 나는 어차피 계속 하던거긴 하지만 모든 시험은 망했다고 생각하고 다른 사람들에게도 망했다고 알리고 합격을 받을려고 하긴 하는데.. 그래도 점수가 궁금해서 대충 2시간 동안 시험 보기 전날까지도 계산 식을 만들었었다.

그것도.. 새벽 2시까지..

 

아래 식들은 확실하지는 않지만 Q-net에 나와있는 정보로 만들어진 계산 식이기 때문에 어느정도 맞을 것으로 예상된다.

 

필요한 필기 점수 구하는 방법  (x 점수가 필요한 필기 점수)

x = (80 * 2 - <내부평가점수> - <맞을실기점수> * 0.6) / 0.4

 

필요한 실기 점수 구하는 방법 (x 점수가 필요한 실기 점수)

x = (80 * 2 - <내부평가점수> - <맞을필기점수> * 0.4) / 0.6

 

합격 예상 점수 구하는 방법 (x 점수가 80 이상일 경우 합격)

x = (<내부평가점수> + <외부필기점수> * 0.4 + <외부실기점수> * 0.6) / 2

 

여기에서 맞을 필기 점수로 해놓은건.. 필기 점수를 몰르기 때문이다.. 여기에서 거의 확정된건 실기 점수는 100점이기 때문에 실기는 약 40점 정도만 맞아도 합격 선이다..

 

대충 계산 식의 해석은 알려진 정보로는 내부 평가 점수와 외부 평가 점수의 평균이 80점 이상이라는 것, 외부 평가에서 필기는 40%, 실기는 60%로 둘이 합친 100%가 외부 평가 점수로 들어가는 것이다.

그걸 이용해서 계산 식을 만들어본 것이다.

 

어쨋든 나는 대충 합격 예상을 했었고.. 

 

결과

진짜 며칠 전인 11월 10일 9시에 결과가 바로 나왔다.

일단 난 예상했던대로 합격!!

내부는 87.3점.. 다른 학생들과 비교하면 엄청 낮은 점수.. 무조건 외부평가를 잘 봐야 하는 상황..

그런데 외부 평가가 81점.. 얼추 계산식도 맞았고 좋은 점수였다.

외부 평가가 저런걸 보니.. 대충 필기는 40~50점 인 것 같다.. 

 

그리고 계산 식을 공유할 때 한가지 특이했던 학생이 있었는데.. 내부 평가가 98점인 학생인데.. 얘는 실기가 100점 나올 경우 외부 평가는 10점 이하로 맞아도 통과인걸로 나왔는데.. 전화해보니 외부평가의 필기 실기의 최하 점수는 따로 없다고 하니 진짜 10점 이하로 맞아도 되는 것 같긴 한데.. 일단 혹시 몰르니.. 높게 받으라 하긴 했다.. 

암튼 이번 시험은 억까 빼고는 정보처리기능사보단 쉬웠어서.. 

과정평가형 정보처리산업기사 전체 합격자도 115명으로 꽤 높았다.

 

최종적으로 우리 과에서 합격 인원을 봤는데.. 대충 우리 과에서 총 2반이 있는데 각 반마다 반은 불합격, 반은 합격으로 거의 1:1로 합격 했다

 

좀 특이한 점수이긴 하고.. 이후에 시험이 있긴 한데.. 신청 날짜도 지나서 신청 못하고.. 불합격한 학생은 2년안에 다시 볼 수 있지만.. 이번 년도는 불가하고 내년이나 시험 신청해서 다시 우리학교에서 시험보거나 다른 학교에서 시험봐야 한다.

 

어쨋든 그렇게 해서 3학년에만 총 4개의 자격증인

ITQ-엑셀, ITQ-한글, 정보처리기능사, 정보처리산업기사 총 4개를 땄다.

12월 1일 쯤에 학교에서 학생들한테 지원해줄려고 이번 년도에만 KT에서 주최하는 AICE라는 자격증을 딴다는데.. 그것도 공부 중이다. 암튼 그렇게 해서 바우처는 받을 수 있을 것 같다!!

 

예외

그리고 예외로 이거.. 정보처리산업기사는 우리 과에서는 우리 학년이 마지막이다. 이 이후 학년은 우리 과에선 시험을 못 보고 도제반인가? 거기에서만 볼 수 있는걸로 알고 있어서 과정평가형이라서 도전도 못한다. 딸려면 대학교 4년제 다녀야 아마 딸 수 있지 않을까.. 바뀐 이유는 선생님들이 너무 관리하거나 가르치기 힘들다 하셔서 이렇게 바뀐걸로 알고 있다.

반응형
반응형

결론 - 합격함

대부분 학교에 있을지는 모르겠지만 우리 학교엔 과정평가형으로 보는건지는 모르겠는데

필기를 건너뛰고 실기만으로 정보처리기능사를 따는 방법이 있다.

 

그리고 이 이후에 적을 글에는 정보처리 산업기사에 대한 것도 있는데, 이것도 포함되어있다. 그리고 이것 또한 전부 따면 바우처를 받을 확률이 더 높아진다. 어차피 정보처리기능사하고 정보처리산업기사 2개만 따도 거의 확정이지만.. 무조건 딸 자신이 없었어서.. 하하;;

 

1학년 부터 3학년까지 과정평가형으로 시험을 보는데 이게 정보처리산업기사하고 연관되어있을 줄만 알았는데.. 정보처리기능사하고도 연결 되어있는 것 같긴 하다.. (아님 말고..)

 

그래서 정보처리기능사를 따야한데서 일단 필기는 건너 뛰어서 다행히 었는데

실기를 봐야했었다. 실기는 객관식도 있고 주관식도 있었고.. 

 

시험 보기 한달 전부터 공부를 시작했다. 학교에서는 우리 과에서 모든 학생이 보기 때문에 시험보기 일주일 전에는 거의 자격증 공부 밖에 안했었다.

집에 가면 안하고 학교에서 시켜야만 했던지라.. 진짜로 딸 수 있을까? 라는 고민도 들고 못 따면 어떻하지나.. 못 따면 큰일 나는데 라는 생각 밖에 안들었다.

학교에서는 정보처리기능사 책(하늘색으로 된 책 두꺼운거)까지 사주셨는데 마음대로 공부해도 된다고 해서.. 그걸로도 공부하면서 외울껀 외우고 안나올 것 같은건 안외워서 일단 해보자 하면서 공부를 했다.

 

심지어 시험 전날에 1시간 정도 모의고사를 해보았다. (학교 일반 교과목 시험은 하나도 이렇게 공부해본 적이 없지만;;) 

 

그리고 시험 당일 2023년 6월 26일 (추정) 다른 과에서도 보기 때문에 대부분 학생들이 한 곳에 모여서 각자 특정 반의 특정 자리에 배정을 받고 한번에 이동했다. 그리고 시험을 보는데 진짜.. 너무 떨렸다. 그래도 이미 시험은 봐야하고 최대한 딸려고 노력한거니깐 이것도 ITQ 처럼 어떻게든 따보자는 마음으로 했다. ITQ 같은건 봐 보았어서 그나마 덜 떨리지만 이건 처음 보는 유형의 시험이니깐..

어쨋든 어떻게 그 많은걸 채점할 수 있는지도 모르겠는 큰 시험지 몇장..으로 시험을 보기 시작했다.

 

나는 어떻게든 최대한 아는 문제부터 풀려고 시험지를 계속 넘기는데.. 어라..? 아는 문제가 진짜로 몇 문제 밖에 없었다..

이게 맞나 싶을 정도로 이상한 문제도 껴있었고.. 처음 보는 문제들도 엄청 많았다. 일단 보자는 심정으로 어떻게든 풀어나갔다. 마지막엔 하나 오타가 있어서 수정해서 냈다.. (난 이게 합격 원인인 것 같다)

결국엔 거의 마지막까지 남아서 풀긴 했지만 전부 풀어서 제출했다.

친구들하고 얘기하는데 진짜로 떠들석 했다.. 왜냐하면 이 시험은 분명히 이름이 " 2023년 정기 기능사 산업별 맞춤형 고교등 필기면제검정" 이다.. 즉 고등학생만 본다.. 근데 처음보는 문제도 나오고 문제도 엄청 어려웠다. 이전에 보았다던 학생은 쉬운 문제가 나왔었는데.. 심지어 이걸 본 이후에 불합격자만 추가로 시험을 보았는데도 문제가 진짜 이것보다 10배는 쉬운 문제만 나왔다.. 대충 프로그래밍 문제도 나오고 개념 문제도 나오고.. 나중에 졸업한 3학년한테 물어보니.. 이때가 문제가 바뀌는 시기라고.. 하하

 

암튼 몇주 뒤에 합격자 발표가 나온데서 기다렸다.

이때가 2023년 7월 12일

근데 나는 이때 내가 만들었던 프로그램을 DDP에서 전시해야해서 이때는 DDP에서 프로그램 서비스 하면서 있었는데.. 갑자기 카톡에서 반 친구들이 계속해서 자격증 관련된 말들을 꺼내길래.. 그 순간이 되었나 하면서 보았다.

근데.. ㅓ..? 합격..?

나는 진짜로 불합격한 줄만 알았다.. 왜냐하면 분명히 잘 몰라서 못 쓴것도 있었고 어려운게 수두룩 했었기 때문이다..

그리고 반톡에 올라온건 37명이 합격했다고 해서..

진짜 다 틀린줄 알았는데 37명..? 왜이리 많이 합격했지 라는 생각이 들었는데

다시 물어보니 전국에서 37명.. 조회 날짜가 끝나서 37명이란 것은 보지 못하지만.. 진짜 당시에 37명만이 합격했었다.

그 중 우리학교에선 총 7명으로 나온 걸로 아는데 그 중 6명이 우리 과에서 나온 거였다..

 

그 중에 내가.. 62점으로 합격 (사진이 없어서 예전에 찍어둔 사진이 이것 밖에 없음.. 37명 나온건 찍지도 못함)

근데 이상한 점은 외 2점으로 나오냐는 건데.. 이건 내가 생각해보니

원래 정보처리기능사가 5점 단위로 나오고 부분점수가 없는걸로 알고 있다. 근데 합격자가 37명이라면 분명.. 합격자가 거의 없거나 아예 없어서 부분점수로 준 것 같다.. 그래서 진짜 아슬아슬하게 60점 커트라인으로 2점 추가해서 합격을 받았다. 약 우리 과에선 40명 정도가 봤는데 6명 합격.. 나머지 학생들은 이미 땄었어서 다른걸로

 

어쨋든 불합격자들이 너무 많기도 해서 이 학생들은 따로 공부해서 여름방학에 따는 것으로 했다. 그런데 돈을 냈으면서도.. 다 포기 했는지 공부를 안하다 보니 방학 중인데도 우리 과에서 합격자가 1명 밖에 안나왔다.. 그래서 또 어려운가 해서 봤더니 복원 문제가.. 너무 쉬운 문제였었다.. 전체 합격자도 많았고.. 으음..

 

암튼 이걸로 좀 더 바우처에 가까워졌다.

 

진짜 제일 신기한건 내가 자격증을 따본게 고등학교 3학년 밖에 없다..

반응형
반응형

이번 년도 중반 쯤에 있던 일로.. ( 2023-06-01 )  내가 알기론 학교에선 자격증 따면 그걸로 바우처 신청이 가능한데.. 이게 모든 학년이 되지만 3학년 우선으로 되고 그 이후로 2학년 1학년 이렇게 되는걸로 알고 있었다.

그래서 바우처 신청이 3학년에 하는게 좋을 것 같아서 바우처 신청을 좀 더 잘 걸리게 하기 위해 ITQ 자격증을 따보았다.

 

저번에 한글 엑셀을 땄었어서 이번엔 아래 한글를 따는 것인데

문제가 발생했다.. 내가 실수로 자격증 신청을 잘 못 해서 버전이 NEO 버전인가로 신청했었다..

일반 한글 버전과는 비슷한 버전이긴 한데.. 몇가지 정보가 약간씩 틀렸다.. 무슨 함수 마법사인가 그런 것도 방식이 틀리고 해서 망했었다는 느낌이 있었는데.. 

어떻게든 일단 따야지 라는 느낌으로 가상환경에 아래 한글 NEO 버전 설치해서.. (불법) 어떻게든 연습을 해보았다.

근데 타자를 치는 것이다 보니 아무리 빨리 해도 40분보다 아래로 해결하기가 매우 어려웠다..

 

그렇게 해서 시험을 봤는데 딱히 어려운건 없었고 전부 모든 텍스트를 똑같이 오타 없이 칠려고 속도도 느리게 하면서 하나하나 세세하게 보면서 따라 쳤는데.. 이것도 엑셀과 같이 A만이라도 되자 라는 느낌으로 했는데..

분명 이것도.. 2주 정도 연습한건데..

 

또 만점을 받아 버렸다..

결과

이것도 2028년 6월 1일까지 밖에 안가는 자격증이지만.. 바우처를 신청할 수 있는 확률이 높아져서 좋았다..!

반응형
반응형

이번 년도 중반 쯤에 있던 일로.. ( 2023-04-27 )  내가 알기론 학교에선 자격증 따면 그걸로 바우처 신청이 가능한데.. 이게 모든 학년이 되지만 3학년 우선으로 되고 그 이후로 2학년 1학년 이렇게 되는걸로 알고 있었다.

그래서 바우처 신청이 3학년에 하는게 좋을 것 같아서 바우처 신청을 좀 더 잘 걸리게 하기 위해 ITQ 자격증을 따보았다.

 

먼저 한글 엑셀을 따는 것인데

2학년만 들을 수 있는 엑셀 방과후에 가서 방과후 수업을 듣고 열심히 여러번 연습하고 난 후 집에서도 수십번 연습해서 30분 안으로 단축할 수 있었다.

제일 빠르게 하면 25분 정도..?

 

그렇게 해서 시험을 본 당일에 내가 아는 지식을 모두 동원하고 프로그래밍 하던 실력으로 함수 영어로 이게 뭐하는지 대충 이해하면서 결국엔 완성 시키고 제출해서 약 40분이 걸렸다.

모두 전부 진짜 똑같이 되도록 완성 시킬려고 노력하고, A만이라도 되자 라는 느낌으로 했는데..

한달도 안되게 연습했는데.. 약 2주일..? 

 

만점을 받았다.. 전부

결과

 

이건 2028년 4월 27일까지 밖에 안가는 자격증이지만.. 바우처를 신청할 수 있는 확률이 높아져서 좋았다..!

반응형
반응형

요약 및 해결 방법

YOLO에서 학습시킬 때 파라미터에 workers를 자신의 사양에 맞게 바꾸면 된다.

train(data = data, epochs = 100, workers=<사양에 맞게 ex) 0>)

yolo train data=data epochs=100 workers=0

 

본문

인공지능을 학습할려는데 보통 윈도우로 학습하는데.. 왜 사람들이 리눅스로 학습하는지 알고 싶어서 WSL를 설치해서 CUDA 연결하고 리눅스로 YOLO를 학습 시켜보았다. 다른 학생 프로젝트 때문에

 

그런데 학습 시키는 과정에서 아래와 같은 오류가 발생했다.

CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1.
Compile with `TORCH_USE_CUDA_DSA` to enable device-side assertions.

이 오류를 보면 CUDA_LAUNCH_BLOCKING 이거를 1로 활성화 시켜서 디버깅을 해보라고 되어있는데.. 저걸 하면 자세히 오류가 뜨기는 뜬다.. 근데 자세히 뜨기는 떠도 그냥 메모리가 모잘르다는 것 같았다.

(CUDA_LAUNCH_BLOCKING이거.. CUDA끄고 실행하는 것 같은데.. 저것 때문에 학습 속도가 엄청 느려져서.. 오류 뜰때까지 기다리는게 으음..)

 

근데 전혀 모잘르지는 않았다. 램을 많이 쓰는 것 같지만 램이 최대까지 쓰는걸 보지는 못했고 70%정도 까지만 쓰는걸로 확인이 되어서 이 문제는 아닌 것 같아서.. 여러 해결 방법을 보긴 했다.

어디서는 리눅스에 뭔가 제한이 걸려 있어서 .wslconfig로 제한을 풀거나 하는 시도로 해결했다라는 글도 보고

그냥 WSL 포기하고 리눅스로 해서 해결했다는 글도 있고..

 

근데 나는 wslconfig도 안되고 리눅스로 바꾸는 것도 할 수가 없다.

그러다가 어디선가 workers를 0으로 해보라는 글이 있어서 해봤는데.. 정상적으로 돌아갔다.

 

대충 workers의 역할이 데이터를 로드 시키면서 여러 작업들의 속도를 병렬로 처리할 수 있게 하는 것 같은데 그 뒤에 숫자는 병렬 처리하는 갯수인 걸로 짐작하긴 했는데.. 

 

왜 오류가 나는지 공식 홈페이지를 확인해보니..

https://docs.ultralytics.com/modes/train/#arguments

 

Train

Step-by-step guide to train YOLOv8 models with Ultralytics YOLO including examples of single-GPU and multi-GPU training

docs.ultralytics.com

기본적으로 값이 8이다..

하하하 저것 때문에 윈도우로 돌려서.. 조금 빡치긴 했었는데.. 일단 그래도 해결은 했다.

 

저거 값을 수정하는 과정에서 알게된건 Windows나 Linux에서는 높게 잡아도 자동으로 잡아주는 것 같은데 WSL에서만 안되는 것 같다.

그래서 하나씩 값을 높여보면서 딱 적당한 값을 찾는게 좋을 것 같다.

나는 1로 설정했는데 0으로 했을 때 40초가 나왔었는데 33초로 줄었다..

 

암튼 해결 CUDA_LAUNCH_BLOCKING

반응형

'오류 | 문제 > Python' 카테고리의 다른 글

파이썬 실행 터미널 창 변경하기  (0) 2022.07.11
반응형

일단 이 글은.. 반납하기 전에 쓴 글..

 

어쨌든!

학교에서 SCARA 로봇이나 다른 동아리 팀원들의 프로젝트를 제작하기 위해 나의 3D 프린터 1개로는 부족해서 

학교에서 쓰지도 않는 방치된 3D 프린터를 교실 내에선 쓸 수 없으니깐 다른 곳에 배치해서 쓰든 어떻게든 쓰고 싶다 했었다.

그런데.. 내가 계속 부탁을 하자.. 설치할 곳이 마땅히 없던지라.. 갑자기 "너희 집에 갔다 놓는건 어때?"라 하시더니.. 다른 선생님도 그러는게 좋다면서.. 갑자기 여러 말을 하시더니.. 어느 순간 선생님의 차를 타고 3D 프린터를 가져와버렸다..

학교에서 집까지 45분 거리인데도.. 심지어 선생님은 반대편 방향인데도.. 선생님은 동아리 팀장이기도 하고 여러 도움을 줬으니 상관없다면서 데려다 주셨는데.. 감사합니다. 선생님..

 

그렇게 가져와보니..

0123

이렇게 진짜로 3D 프린터를 가져와버렸다..

 

3D 프린터 종류는 MakerBot Replicator 5th Generation로 굉장히 비싸고, 내가 어릴 때 진짜 써보고 싶었던 프린터 중 하나였다. (Ultimaker도 써보고 싶다..)

 

진짜 꿈만 같던 3D 프린터를 가져와서 쓸 수 있게 되어서 굉장히 신비하고 행복한 기분이었다.

 

근데 쓰는 방법을 모르는지라 여러번 유튜브를 찾아보기도 하면서 했는데.. 굉장히 특이한 점은 헤더에 필라멘트 튜브를 끼우는 줄 알고 계속 찾아봤었는데.. 결국 아니였었다.. 헤더에서 필라멘트를 끌어당겨서 필요가 없었다.. (엄청 좋네..)

 

일단 그렇게 켜서 여러가지 모드도 확인해보고 계정도 연결하고 있었다. 근데 이상하게 내가 예전에 관심이 있던지라 계정이 만들어져 있었다. ㅋㅋㅋ

 

근데 가장 큰 문제점은 이게 학교에 방치되어있다 보니.. 필라멘트를 엄청 많이 사셨던데.. 모두 오래 안쓰다 보니 습기가 굉장히 많이 차 있었다. 그래서 어떻게 쓰지 하다가.. 내가 가지고 있는 것 중에 필라멘트 건조기도 있었는데.. 하하하 필라멘트 스풀이 너무 커서 안들어가는..

 

그래서 그냥 포기하고 일단 1~2일 동안 필라멘트 보관팩에 넣고 실리카겔로 건조 시켰다. (뭐.. 소용은 없었지만..)

 

근데 진짜 신기한 점은 분명 필라멘트가 습기가 차 있는데도 하나에 5만원 짜리이라서 그런지 거미줄도 하나도 안생기고 엄청 잘 출력이 되었다..

굉장히 놀라웠다.. 이게 비싼 프린터인건가.. 더 신기한 점은 이거가 0.4mm 노즐인걸로 아는데 그것보다 더 높게 바닥을 채우는게 보였다.. 그래서 깨달은건 이 프린터는 출력 두께를 조절하면서 엄청 빠르게 출력할 수 있다는걸 알았다.. (실제로도 그랬었다.. 내 프린터 기준으로 24시간 이상이 걸리는걸 18시간 만에 출력을 했으니..)

 

그리고 3D 프린터를 와이파이하고 연결하니 온라인에서도 3D 프린터를 사용할 수 있는건 진짜 좋은 점이었다.

 

근데 최대 단점은 일단 빌드 플레이트가 히팅 베드가 아니기도 하고 종이 테이프가 붙어 있다보니..(종이 테이프에선 잘 안떨어짐) 기본적으로 라프트를 생성하고 그 위에 하다 보니 필라멘트가 굉장히 낭비 되기도 하고 불필요한 시간이 걸렸었다.. 뭐 난 상관없지만 좀 큰 단점이었다. 

 

그리고 소리도 굉장히 시끄러웠다. 내 프린터는 팬 소리만 나고 모터소리는 하나도 안나는데 이건 진짜 큰 소리로 노래를 불르는 것 처럼 나다 보니.. 모터가 움직이면서 진짜 음정도 나타나고 한.. 20m 떨어져 있는 곳에서 방문을 닫아도 소리가 날 정도 였다.. 뭐 그래도.. 빨르니 상관은 없지만..

 

근데 굉장히 특이한 점은 아까 습기가 있어도 잘 된다 했었는데.. 특이한 점은 내 3D 프린터에 그 필라멘트를 쓰니 거미줄이 왕창 생기고 출력도 잘 안된다는.. 진짜 신기하긴 했다..

 

아 근데 제일 큰 단점은 슬라이서인데.. 슬라이서가 큐라보다 굉장히 느리고 렉이 엄청 걸렸다.. 서포터도 생성을 잘 못하고.. 

 

그래서 난 결심했다. 그냥 Makerbot 프린터는 어른 되도 구매하지 않기로.. 뱀부랩이나 사고 싶다..

 

그렇게 일주일 이상을 출력해서 모든 부품을 출력했다. 나머지로 추가 부품은 내 프린터로 출력할 수 있는 정도라 2023-05-25에 빌리고 2023-06-16에 반납하기로 했다.

 

정리

장점 : 온라인 출력 가능, 빠른 출력, 단순한 UI, 필라멘트

단점 : 소리 엄청 시끄러움, 히팅 베드가 없어 라프트 무조건 출력, 라프트로 바닥면이 고르지 못함, 슬라이서 진짜 별로..

결론 : 어른이 되면 꼭 안사야지..

 

근데 내일 어떻게 학교에 가져가지..

01

반응형
반응형

선언..

https://youtu.be/NOZZMsMAGh0

작년에 여행을 갔었는데.. 그곳에서 이걸 만들어보라 권유를 하셨던 적이 있었다.. 그래서 어쩌다보니 만들겠다 다짐해버려서.. 하하하 만들기를 며칠 전부터 시작했다..

 

일단 만들기 전에 조사부터 했다

https://howtomechatronics.com/projects/diy-mars-perseverance-rover-replica-with-arduino/

 

DIY Mars Perseverance Rover Replica - Arduino based Project

In this tutorial I will show you how I built a replica of the Mars Perseverance Rover. I designed this DIY Mars Rover so that everyone...

howtomechatronics.com

이 곳에 가보니 3D 모델도 공유 되어있고 어느정도 부품 목록도 공개가 되어있었다..

그런데 하하하 일단 모두 다 조사하고 보니깐.. 출력물 제외하곤 약 30만원.. 뭐 일단 어느정도는 가능해서.. 만들기를 시작했다. 윽

 

출력!

일단 부품 목록은 위 사이트에서 있다! 그래서 그걸 다운로드 해보면 메인파츠, 카메라 파츠, 악세사리라 적혀있던데.. 일단 메인파츠부터 출력을 시작했다.

 

총 28개 이고.. 굉장히 오래걸렸다.. 한 일주일 이상은 다 걸린 것 같다. 필라멘트도 3개 거의다 쓰고..

 

012

이런식으로 출력을 했다.. 하나하나가 엄청 갯수가 많다 보니 굉장히 오래걸리긴 했지만.. 메인파츠는 모두 출력했다. 모아보니 이정도?

그래서 일단 출력은 모두 완료되었다! 근데 약간 사이즈가 안맞아서 그런지.. 잘못 끼우면 오래 출력한건데도 쉽게 부러진다는 단점..

 

프레임 조립

처음에는 알리에서 시킬려 했는데 알리에서 보니깐 프레임들이 8000원 이랬다.. 너무 비싸서 네이버 보니깐 엄청 저렴하게 팔고 있었던 것.. 근데 일단 프레임은 이 글을 쓰는 어제 왔다.

근데 프레임을 보니 뭔가 싸한 느낌이 들어서 다시 원문을 보니깐 모델에 실수가 있었나보다..

일단 프레임만 보면 이런데.. 제목에 수치가 있어서 봤더니 382mm가 4개 242mm가 6개 였는데 자세히 안봤었다..

실제로는 382mm 282mm 242mm 인가로 각자 4개 4개 2개 이런데.. 이름 때문에 잘못 사버렸다..

배송비가 엄청드는데 다시 사기는 애매하고 해서.. 일단 조립하고 나중에 부족한 부분은 그냥 출력물로 어떻게든 추가할 생각이다.

 

그래서 일단 왔던 부품을 조립해보니 이런 모양? (아직 덜 조립했지만..)

012345

일단 예상한 것보다 진짜 수치도 잘 맞게 와서 조립이 잘 되었는데.. 부품을 잘 못 사서 아쉬운점은 있었지만..

이대로 계속해서 제작해볼 예정이다.

 

부품을 지금도 추가로 시키고 있고 배송도 오고 있어서 굉장히 긴 프로젝트가 되겠군..

언제쯤 다 만들어질까..

반응형
반응형

오늘 학교에서 머신러닝 과목으로 첫 인공지능을 배웠습니다!

K-최근접 이웃(K-Neighbors Classifier) 알고리즘은 여러 데이터에서 가장 가까운 k개의 이웃을 찾아 다수결로 분류하는 방식의 알고리즘입니다.(아마)

 

어쨋든!

학교에서 수업한 내용은 파이썬으로 되어있지만.. 파이썬은 여러 라이브러리를 통해 쉽게 할 수 있기 때문에.. 이해가 잘 안되는 것 들도 많았습니다..

그래서 최대한 이해하고자 라이브러리가 별로 없는 C++로 진행하고 싶어 만들어봤습니다!

 

Matplotlib을 통해 표시한 그래프
C++ 콘솔 창으로 만든 그래프

일단 하기전에.. 원래는 그래프로 직접 보기 위해 Matplotlib C++를 가져올려 했으나.. 버전이 너무 오래 되어 불가능 했습니다.. 그래서 직접 만들고자 했지만.. 함수화 하는 과정에서 너무 어려워져 제쳐두었습니다. 위 사진은 시도한 흔적입니다.

 

아래 데이터셋을 이용!

bream_length = [25.4, 26.3, 26.5, 29.0, 29.0, 29.7, 29.7, 30.0, 30.0, 30.7, 31.0, 31.0, 
                31.5, 32.0, 32.0, 32.0, 33.0, 33.0, 33.5, 33.5, 34.0, 34.0, 34.5, 35.0, 
                35.0, 35.0, 35.0, 36.0, 36.0, 37.0, 38.5, 38.5, 39.5, 41.0, 41.0]
bream_weight = [242.0, 290.0, 340.0, 363.0, 430.0, 450.0, 500.0, 390.0, 450.0, 500.0, 475.0, 500.0, 
                500.0, 340.0, 600.0, 600.0, 700.0, 700.0, 610.0, 650.0, 575.0, 685.0, 620.0, 680.0, 
                700.0, 725.0, 720.0, 714.0, 850.0, 1000.0, 920.0, 955.0, 925.0, 975.0, 950.0]
smelt_length = [9.8, 10.5, 10.6, 11.0, 11.2, 11.3, 11.8, 11.8, 12.0, 12.2, 12.4, 13.0, 14.3, 15.0] 
smelt_weight = [6.7, 7.5, 7.0, 9.7, 9.8, 8.7, 10.0, 9.9, 9.8, 12.2, 13.4, 12.2, 19.7, 19.9]

 

설명을 딱히 하긴 어렵지만.. 일단 구현이 안된건 score()입니다.. 어떤 식으로 구현해야할지 감이 안잡혀서.. 하하;;

 

어쨌든 아래 코드를 오늘 수업한 내용 과정 그대로 C++로 옮겨보았습니다! 2개의 데이터와 1개의 정답으로 벡터를 만들어 2개의 데이터와 예측 데이터로 유클리드 거리를 사용해서 거리 값을 구해 k개의 가까운 거리 값을 뽑아 어떤 것이 더 큰지 찾는 코드입니다!

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

//거리 기준으로 오름차순 정렬을 하기 위한거
bool cmp(vector<double> x, vector<double> y) {
	return x[3] < y[3];
}

int main() {
	//데이터 정의
	vector<double> bream_length = { 
		25.4, 26.3, 26.5, 29.0, 29.0, 29.7, 29.7, 30.0, 30.0, 30.7, 31.0, 31.0,
		31.5, 32.0, 32.0, 32.0, 33.0, 33.0, 33.5, 33.5, 34.0, 34.0, 34.5, 35.0,
		35.0, 35.0, 35.0, 36.0, 36.0, 37.0, 38.5, 38.5, 39.5, 41.0, 41.0 
	};
	vector<double> bream_weight = {
		242.0, 290.0, 340.0, 363.0, 430.0, 450.0, 500.0, 390.0, 450.0, 500.0, 475.0, 500.0,
		500.0, 340.0, 600.0, 600.0, 700.0, 700.0, 610.0, 650.0, 575.0, 685.0, 620.0, 680.0,
		700.0, 725.0, 720.0, 714.0, 850.0, 1000.0, 920.0, 955.0, 925.0, 975.0, 950.0 
	};
	
	vector<double> smelt_length = {
		9.8, 10.5, 10.6, 11.0, 11.2, 11.3, 11.8, 11.8, 12.0, 12.2, 12.4, 13.0, 14.3, 15.0
	};
	vector<double> smelt_weight = {
		6.7, 7.5, 7.0, 9.7, 9.8, 8.7, 10.0, 9.9, 9.8, 12.2, 13.4, 12.2, 19.7, 19.9
	};

	vector<double> length, weight;

	//bream과 smelt 데이터를 나란히 이어 붙이는 코드
	length.insert(length.end(), bream_length.begin(), bream_length.end());
	length.insert(length.end(), smelt_length.begin(), smelt_length.end());

	weight.insert(weight.end(), bream_weight.begin(), bream_weight.end());
	weight.insert(weight.end(), smelt_weight.begin(), smelt_weight.end());

	//length와 weight 데이터를 하나의 자료형에 때려 박는거
	vector<vector<double>> fish_data;
	
	for (int i = 0; i < length.size(); i++)
		fish_data.push_back({ length[i], weight[i] });

	//확인용
	if(0) 
		for (int i = 0; i < length.size(); i++)
			cout << fish_data[i][0] << "\t" << fish_data[i][1] << endl;

	//정답 데이터 생성
	vector<int> fish_target;
	for (int i = 0; i < bream_length.size(); i++) fish_target.push_back(1);
	for (int i = 0; i < smelt_length.size(); i++) fish_target.push_back(0);

	//확인용
	if (0)
		for (int i = 0; i < fish_target.size(); i++)
			cout << fish_target[i] << " ";

	//kn 모델 정의(그냥 데이터와 정답데이터 붙이는거임)
	int k = 5;
	vector<vector<double>> kn;
	for (int i = 0; i < fish_data.size(); i++)
		kn.push_back({ fish_data[i][0], fish_data[i][1], double(fish_target[i]) });

	//확인용
	if (0)
		for (int i = 0; i < length.size(); i++)
			cout << kn[i][0] << "\t" << kn[i][1] << "\t" << kn[i][2] << endl;

	//예측
	//30, 600으로
	double p1 = 30, p2 = 600;
	
	//유클리드 거리 공식을 이용해서 거리를 구하고 kn벡터에 삽입하고 거리 기준으로 정렬하여 상위 k개를 뽑아서 누가 더 큰지 비교한다.
	for (int i = 0; i < kn.size(); i++)
		kn[i].push_back(sqrt(pow((kn[i][0] - p1), 2) + pow((kn[i][1] - p2),2)));
	
	sort(kn.begin(), kn.end(), cmp);

	//확인용
	if (true)
		for (int i = 0; i < length.size(); i++)
			cout << kn[i][0] << "\t" << kn[i][1] << "\t" << kn[i][2] << "\t" << kn[i][3] << endl;

	int bream_c = 0, smelt_c = 0;
	for (int i = 0; i < k; i++) {
		(kn[i][2] == 1 ? bream_c++ : smelt_c++);
	}

	cout << (bream_c > smelt_c ? "이건 bream임" : "이건 smelt임") << endl;
}

위 코드를 실행한 결과

암튼 끝!

반응형

+ Recent posts