2주차

GemstoneS·2021년 12월 26일
0

<2주차 요약>

2주차 금주의 계획 : 20일 월요일 ~ 22일 수요일 파이썬 게임 프로젝트 진행 / 23일 목요일 ~ 24일 금요일 카카오톡UI클론, 인스타UI클론 프로젝트 진행, 협업을 위한 GIT 활용 특강(오후2시~4시 예정) / 일주일 간 자료구조 알고리즘 강의 듣기, 웹 프로그래밍 A to Z 및 웹 타임어택 과제 복습

대부분 금주의 계획대로 진행되었으며, 제대로 이행되지 못한 부분은 자료구조 알고리즘 강의 듣기 였다. 매일 계획대로 진행되는 스케쥴을 진행하고 나면 그대로 넘어가는게 아니라 해당 부분을 진행하고 난 이후 얻은 것과 부족한 부분을 정리하는 시간을 갖도록 노력했기에(TIL) 자료구조 알고리즘 강의를 듣겠다는 계획을 조금씩 뒤로 미뤄야 했다. 주말이 되서야 다시 처음부터 듣기 시작하여 1주차 강의를 마무리 지었고, 차주 월요일이 되어 시간표상 계획이 어떻게 진행되는지에 따라 강의 진행도를 계획할 예정이다.

이번 주차를 진행하면서 얻은 부분이 꽤 많아 TIL을 작성해보며 공부를 하였고 WIL에선 각 프로젝트에서 얻은 부분중 가장 중요하다고 생각되는 부분을 떠올려 작성해보도록 하겠다.




1. 파이썬 게임 프로젝트 1 ~ 3

(1) UP👍&DOWN👎
1~100 중 컴퓨터가 정한 수를 제한된 라운드 안에 플레이어가 맞히거나 또는 반대로 플레이어가 정한 수를 컴퓨터가 맞히는 게임으로 이번 수업에서 진행하기 전에 이미 한번 작성해본 경험이 있었기에 첫 게임은 코드 작성 후 예외처리에 보다 많은 시간을 투자하였다. 이 게임 프로젝트의 핵심이라고 생각되는 부분은 연속적인 정수의 중간값 찾기이며, 컴퓨터가 플레이어가 낸 수를 맞출때 플레이어의 답변에 따른 중간값을 찾는 부분이 가장 중요하다고 생각되었다. 또한 예외처리를 진행하며 파이썬의 try, except, else, finally 예외처리에 대해 조금 더 공부해 볼 수 있었는데 후일 예외처리시 이번에 공부한 내용을 토대로 try except else문을 작성해 볼 것이다.

 # 플레이어의 답변
   if answer == '업':
	 begin = median
	 median = int((begin+end)/2) # 중간값
	 print(median)
   elif answer == '다운':
	 end = median
	 median = int((begin+end)/2) # 중간값
	 print(begin)

(2) 베스킨라빈스 31 🍨🍦🍧
술자리 게임으로 컴퓨터와 1:1 대전 형식으로 진행되며, 컴퓨터가 단 한가지 경우를 제외하고 무조건 승리할 수 있도록 만들어 보는 게임 프로젝트였다. 필승 수열을 알고 있다고 해서 그것을 코드로 구현한다는 것은 또 다른 느낌이었으며, 필승 수열을 찾고 그것을 코드로 구현하는 그 과정에서 얻는 것이 있는 프로젝트라고 생각되었다. 또한 턴 방식 진행, 교차 진행을 어떻게 구현할 것인가에 대한 고민이 필요한 프로젝트였으며, 결론적으로 홀, 짝을 생각하여 꽤 간단하게 그것을 구현해내었다. 더 나아가서 이것은 1:1인 경우에 해당 되는 부분이기에 다수의 사람들이 참여하는 턴 방식일경우 어떻게 구현하면 좋을지 생각해 볼 거리가 있겠다.

  if turn % 2 == 0: 
       last_num = computer_call_number(last_num)
  else:
       last_num = player_call_number(last_num)
  turn += 1

(3) 👾 간단한 턴 방식 RPG 👾 🎮
2번째 프로젝트에서 턴 방식 진행을 코드로 구현하는 것을 배운다는 가정하에 이 프로젝트가 3번째 프로젝트로 진행된 것으로 생각되었다. 해당 프로젝트의 경우 함수 및 클래스에 대한 개념을 확실하게 알고 있어야 간단하게 만들 수 있는 프로젝트이기에 간단하면서도 간단하지 않은 그러한 프로젝트였다.

클래스, 생성자, 함수 개념에 대해 다시한번 상기할 수 있는 재밌는 프로젝트였으며, 어떻게 하면 공통적인 속성으로 만들어 보다 간소화 시킬 수 있을까에 대한 고민을 했던 프로젝트였다. 특히 해당 프로젝트를 진행하며 헷갈리던 부분인 다형성 관련 오버라이딩, 오버로딩, 슈퍼함수에 관한 부분을 다시 찾아보는 시간을 가질 수 있어 좋았었다. 다만 이 부분은 계속 헷갈리고 어려운 부분이라 특히 생성자에 대한 다형성 적용 부분에 관해 다른 프로젝트들을 진행하며 조금씩 알아나가야겠다고 생각된다.

또한 함수의 return값이나, 하나의 클래스로 다양한 인스턴스가 생성될 수 있도록 하는 것에 대한 대비를 어떻게 하면 될 것인가에 대한 고민을 해볼 수 있었다.

2. 구 카카오톡 프로필, 인스타그램 모바일 UI 프로젝트 📱

부트스트랩을 사용하지 않고, 자신의 손으로 직접 HTML, CSS를 만들어 보는 프로젝트로 HTML 뼈대를 어떻게 구성하면 좋을지, CSS를 어떻게 칠해야 해당 화면을 만들 수 있는지에 대한 공부를 할 수 있었다. HTML, CSS 코드를 작성할 때 꼭 그와 같은 식으로 작성할 필요는 없으나, 보통 회사에선 해당 회사만의 작성 규칙이 존재하기 때문에 미리 그와 같은 규칙을 연습한다는 마인드, 작성한 코드를 다른 사람이 본다는 마인드로 알려주시는 작성 방식대로 작성해 보도록 노력하였다.

  • CSS 클래스명 작성시.
    공백으로 연결해서 사용 하면 하위 개체로 지정
    .a .b .c {}
    a클래스 내부의 b클래스 내부 c클래스요소에만 스타일 적용.(왠만하면 최대 3개까지만 쓰자)
    특정 요소의 앞, 뒤 혹은 내부에 있는 것을 선택하는 법 A > B {}
    부모가 A인 B요소들만 선택하여 스타일 적용.
  • HTML 클래스명 작성시.

또한 인스타그램 모바일 UI를 진행하며 얻은 것이 많았는데 가변 그리드 레이아웃이라는 개념도 알게 되었고, 페이지에서 항상 보여지는 부분이 어떻게 작성된 것인지에 대한 부분에 더해 그렇다면 화면 하단에 계속 보여지는게 아닌 컨텐츠가 끝나고 난 후 하단에 고정되어 있는 부분은 또 어떻게 만든것인가에 대한 생각까지 흘러가 보다 많은 것을 생각해 볼 시간이 되었다. 해당 부분에 대해선 검색도중 발견한 벨로그 내용이 좋아 다시 한번 링크를 걸어두겠다.

  • [참고 링크 : footer 하단 고정]
    해당 참고 링크는 '3. 콘텐츠 길이에 상관없이 하단 고정'이라는 소주제를 보기 위함이다.
    footer가 항상 화면에 보이는게 아니라 스크롤을 쭉 내렸을때 본문이 끝나고 난 이후 가장 아래쪽에 고정시킬때 사용하면 좋은 방법을 벨로그 해두셨다.

인스타그램 모바일 UI 만든것을 토대로 차주 월요일 데스크탑 UI와의 통합 프로젝트를 진행한다고 하는데 이 부분은 WIL 작성 후 미리 좀 생각해서 가야할 것 같다.

3. Git

이번 주차에서 검색과 조사에 가장 많은 시간을 쏟은 부분 바로 Git이다.

  • Git.
    Git은 소규모 프로젝트부터 대규모 프로젝트까지 모든 것을 빠르고 효율적으로 처리하도록 설계된 무료 오픈 소스 분산 버전 제어 시스템(DVCS).
    (출처 : Git 공식 사이트)
  • DVCS.
    분산 버전 관리(제어) 시스템은 소프트웨어 버전 관리를 위한 시스템이다. 이 시스템은 각 개발자가 중앙 서버에 접속하지 않은 상태에서도 코드 작업을 할 수 있는 것이 특징이다. 중앙 집중형 버전 관리 시스템의 저장소(repository)가 서버에만 있는 것과 달리 분산버전관리 시스템에서 저장소는 모든 클라이언트가 저장소가 될 수 있다.
    (출처 : 해시넷 : 분산버전관리)

예전에 Git을 수박 겉핧기로 사용했었다가 이번 특강을 계기로 다시 한번 사용을 시작하게 되었는데 Git의 사용에 관해 TIL에 보다 자세하게 작성해 두었으나, Git에 관해선 종합적으로 작성해 둘 필요성을 느꼈다. 따라서, 시간이 남을때마다 따로 Git 강의를 듣고 부족한 부분을 검색하여 채워넣는 형식으로 velog 정리를 진행할 예정이다.

profile
#AI #python #back-end

0개의 댓글

관련 채용 정보