2020년 9월 9일 수요일

스파르타 코딩클럽 (9기) 후기

 1. 프로젝트 소개

    로또 번호 자동 추천 웹 (그냥 뽑기) 


2. 취지

    재미를 위해서. 


3. 녹화 영상


4. 설명 (+ 경험했던 난관)

    페이지 이름은 LLL로 지었다. Lotto Lucky Luxury. 운좋게 화려한 로또 번호를 받아보자는 취지이다. 

    페이지는 크게 3개 페이지로 구성되어있다. 각 L당 페이지 1개이다. 페이지 이동은 화면 상단에 있는 메뉴 선택으로 이동 가능하다.


Lotto

    Main page로 뜨는 화면이다. 기본적으로 최신 회차의 번호를 보여주고, 1회차 부터 지금까지 뽑혔던 번호를 나열해서 보여준다. (별 쓸모가 없다.)

* 개선할 점 (나쁘게 말하면 문제점)

  • Main page에 뜨는 회차가 사실 최신 회차가 아니다. 최신 회차를 자동으로 계산해서 변수로 받는 기능을 구현해야 했는데, 시간이 부족해서(귀찮아서) 그냥 최초 작성 시점인 '924'회차가 최신 회차로 뜬다. 
  • Main page에서 구현된 기능들이 페이지에 뜨는데 5초이상 걸린다. 900개가 넘는 회차의 번호들을 DB에서 불러오느라 그런 듯 하다. 차라리 지우는게 나을 수도 있겠다.

Lucky

    그나마 지금 가장 동적인 페이지다. 상단 메뉴에서 Lucky 메뉴를 누를 때 마다 새로운 6개 조합의 숫자를 보여주고 아래 테이블에 표시해 준다. 

* 개선할 점 

  • 뽑기 버튼이 따로 있으면 싶다. 시간이 부족했다. 
  • 뽑힌 숫자들이 아래 테이블에 쌓이는데, 테이블을 refresh해주는 기능을 만들려 했으나 역시 시간이 부족했다. 그래서 그냥 Lucky페이지에 다녀오면 refresh해주게 만들었다. 
  • 별 기능이 딱히 없다. 그냥 random 함수로 뽑은 6개 함수를 보여주는 거다. 아무런 개념이나 생각이 들어있지 않다. 그런데 또 그런게 나름 재미있을 것 같기도 하다. '랜덤으로 만든 숫자들 가지고 블록 꺠기 게임같은걸 구현해 볼까'라는 생각이 든다.

Luxury

    정말 럭셔리한 방법으로 숫자를 뽑아내는 뭔가를 만들려 했던 페이지이다. 지금은 최대 출현 숫자 / 최소 출현 숫자 6개를 보여주고 그 아래에 각 숫자별 최근까지 출현한 횟수를 계산해서 보여주는 정도가 구현되어 있다. 

* 개선할 점 

  • 출연 횟수가 겹치는 경우가 있다. 예를 들어 6개 숫자를 보여주고 있는데, 6번째 7번째 숫자가 동률로 6번째로 많이 출현된 경우에는 둘 중 한 숫자만 보여준다. 동률인 경우에는 동률인 숫자도 표현하는 기능이 추가 필요하다. 
  • 아래에 있는 입력 칸은 아직 아무런 구현이 되어 있지 않다. 사용자가 원하는 숫자를 고르면 그 숫자들은 무조건 선택되는 기능을 구현하고자 했으나 시간이... 
  • 그 외에 정말 럭셔리한 방법으로 숫자를 뽑아내는 기능을 구현해보고 싶다.

5. 후기

    취지는 재미를 위해서 였다. 간단한 페이지지만 정말 재밌기도 했다. 그리고 나름의 철학이 있었다고 생각한다. 

    물리학 전공자로서 배웠던 통계물리 & 열역학 지식을 기반으로 확률을 조정하는 방식으로 해서 뽑아주는 무언가를 만들고자 했다. 전자(electron), 혹은 Fermion의 energy state, 확률 분포와 불확정성 원리까지 프로젝트를 하면서 대학때 배웠던 내용을 갖고 별의별 생각을 다 한거같다.

    근데 막상 그 확률 조정 방식을 수식으로 구현하는데 실패. 우선은 이번 기회에 배운 코딩 스킬을 향상하기 위한 목적으로 (혹은 유지만 하기위해서도...) 그냥 간단한 알고리즘부터 만들어 보는게 좋겠다는 생각이 든다.  

    그래도 나름 데이터 기반과 기초적인 지식은 쌓을 수 있었다. 

1. 900회가 넘어가는 회차동안 뽑힌 숫자를 모을 수 있었다.

    비 전공자로서, 스파르타 코딩클럽에서 처음 알게된 API라는 것을 알기 전에는 '나눔로또 사이트에서 엑셀로 하나하나 숫자들을 노가다로 긁어와야 하나' 라고 막연히 생각하고 있었다. 이번 기회를 통해서 단번에 DB화 할 수 있는 방법도 알았고 실제로 데이터를 모아 올 수 있었다.

2. 기본적인 통계를 내 보았다. 

    정말 기본적인 Minimum / Maximum을 sort하여 표현할 수 있었다. 숫자 계산이라는 것도 10진법과 덧셈 뺄셈을 알면 그 이후는 그 개념에서 확장되어 가는 것 처럼, 이번에 만든 기본을 바탕으로 확장해 보고자 한다.  

    

    스파르타 코딩클럽을 통해 Front-end부터 Back-end까지 배우고, 직접 구현해 본 이번 경험이 나에겐 너무나 재밌는 경험이었다. 그리고 이 기반을 가지고 앞으로 어떻게 해볼지 생각만으로도 재밌다. (굳이 더 만들 생각말고, 생각만 하는 것도 나쁘지 않을 것 같다ㅋ)

    '4. 설명' 부분에 '*개선할 점'으로 써놓은 부분들이 이번 프로젝트의 'spec-out' 이라고 생각된다. 코딩 수업을 들어면서 튜터님이 자주 외치던 "spec-out !!"이란 말이 귀에 들리는거 같다. 개선할 것들을 앞으로 조금씩 만들어 나가며 이번 경험을 잘 살려나가보고자 한다. 

    마지막으로 이번에 좋은 경험을 할 수 있게 도와주신 스파르타 코딩클럽, 즐겁게 함께 배웠던 동료들, 그리고 이현호 튜터님께 감사드립니다 :)


끝.

(IP address는 이 사이트를 공개해도 괜찮을지 좀 알아보고 & 생각을 해 본 후 공개하도록 하겠습니다).