오늘 한일

체스 구현 진행 상황

  • Position과 관련된 Exception을 만들어서 잘못된 위치로의 조작이 있을시 예외 발생하게 구현

  • 이동 동작을 수행할 MoveStrategy 인터페이스 제작

  • Knight, King, Pawn같이 재귀적 혹은 반복적으로 이동할 필요가 없는 Piece들의 이동 구현(Pawn같은 경우는 실제 이동방식과 다른데 다른 Piece가 끝난 후 다시 작업해야한다)

TDD 수업

포비와 상담


오늘 느낀점

  • 체스자체의 진행은 별로 안됐다. 어려워서 못했다거나, 이전 볼링때처럼 너무 설계를 고민해서 못한건 아니고 뭔가 손이 덜 갔다. 그래서 나중에 전체적인 리펙토링을 해야겠지만 몇몇 신경쓰였던 부분들 작업을 먼저 했다. 그 덕에 정말 Piece들의 이동만 신경쓰면 되는 상태다. 그러고선 일단 한번의 이동만 하면 되는 Piece들만 고려해서 구현을 했다. 내일은 Queen과 같이 재귀적인 이동이 필요한 작업을 마무리 하도록 하자.

  • js 공부는 볼링, 체스 정도 웹프론트 작업은 가능한 수준으로 목표를 잡자. 공부 자체는 주말 및 남는 시간에 하자.

  • TDD 수업때 TDD도 TDD지만 BiFunction<T, U, R>이 신박했다.

    private static final Map<String, BiFunction<Number, Number, Number>> operators = new HashMap<>();
    
    	static {
    		operators.put("+", (a, b) -> new Number(a.no + b.no));
    		operators.put("-", (a, b) -> new Number(a.no - b.no));
    		operators.put("*", (a, b) -> new Number(a.no * b.no));
    		operators.put("/", (a, b) -> new Number(a.no / b.no));
    	}
    
    	private int no;
    
    	public Number(int no) {
    		this.no = no;
    	}
    
    	public Number calculate(String expression, Number number) {
    		BiFunction<Number, Number, Number> operator = operators.get(expression);
    		if (operator == null) {
    			throw new IllegalArgumentException();
    		}
    
    		return operator.apply(this, number);
    	}
    

    포비 코드의 일부다. static{ … }도 궁금해서 찾아봤는데 예전에 책에서 봤던 내용이다…역시 잘 안쓰는건 까먹는다. 당장 쓸일은 없을거 같은데 일단은 해당 클래스를 눈여겨 두고 여유가 있을때 적용 할 수 있는 곳들은 사용해 보자.

  • 포비랑 상담을 했다. 상담 준비를 하면서 내 생각들을 정리해본 시간과 상담 시간을 통해서 심적으로 좀더 안정적인 상태가 된거 같다. 사실(?) 다행히 상담전에도 심적으로 불안정하진 않았다. 현재는 학습에만 집중하자는 생각을 가지고 있었는데 그러면서도 한두번씩 생기는 잡음이 잡힌 느낌이다. 생각이 더 뚜렷해졌달까? 한가지 더 다행인건 예전부터 집에서도 서로간에 선택을 존중해 주고 그걸 어영부영 하는것만 아니면 지지를 해준다.(대신 어영부영한 선택에 행동이면 가차없다) 환경적으로도 도와주니 스스로 지칠수 있는 감정 소진은 줄이고, 다른 생각말고 한두달은 정말 공부만 신경쓰자.


내일 할일

  • 체스 구현 마무리

  • 코드스쿼드 내 사람들간 소개시간 갖기

오늘 한일

체스 구현 진행 상황

  • 체스판 상에(Rank, Board 클래스) 단순 이동 구현

  • 점수 계산 구현

  • Piece의 자식 클래스들의 생성 방식 변경

  • 이동 가능한 방향을 가지는 Direction enum 추가

  • Piece 종류에 따른 이동 구현 남음

우분투 무선랜 인식이 안되는 문제 해결

  • 내 노트북의 무선랜이 현재 우분투 버전에선 정식지원을 안해서 다른 사람이 만들어놓은 펌웨어를 firmware 폴더내 복사해서 해결

오늘 느낀점

  • 체스 구현이 이전에 막혔던 부분까진 완성 됐다. 일단 이동구현 말고 다른 부분은 신경 안써도 되게 나머지 작업들은 어느정도 다 끝내놨다. 썩 마음에 들진 않지만 생각하고 있는 방식이 있는데 일단 구현 해보자. (내일 혹은 수요일까지 마무리 하자)

  • 무선랜 관련해서 우분투 설치 초기에도 같은 문제를 겪고 해결했었는데 어제 업데이트 하면서 추가 해 놓은 파일이 날라 갔나보다. 차후에도 겪을수도 있고, 다른 사람들도 해결 할 수 있게 조만간 해결 방법을 포스팅 해야겠다.

  • 어제 밤에 영화를 보고 계속 신경쓰여서 새벽에 볼링 웹앱에 AJAX를 적용하는 걸 마저 시도하다 잤는데 결론적으로 실패 했다. 이 사이트의 js 코드를 가져와서 작업했는데 그게 문제였다. 코드자체가 문제라기보단 js도 제대로 모르는 상태서 jQuery를 하니 송신은 어찌 성공했지만 수신단에서 제대로 받을 줄을 몰랐다. 거기다 제대로 공부도 안됐던거 같다. 그래서 나중에 여유가 될때 js만 사용해서 그냥 처음부터 버튼을 만들어가면서 작업 해야겠다.

  • 알고리즘 테스트 결과가 나왔는데 탈락했다. 시간 복잡도를 신경쓰는 부분에서 약한거 같다. 거기다 합격자 코드를 보니 알고리즘 풀이에 한해서는 좋은 코드를 너무 우선순위에 두진 말아야겠다…(아직은 좋은 풀이와 좋은 코드 두마리의 토끼를 알고리즘 풀이에선 못 잡겠다)


내일 할일

  • 체스 구현

  • TDD 수업

오늘 한일

볼링 게임 웹에 올리기

  • AJAX 없이 구현 완료

  • AJAX를 이용하여 구현 시도


오늘 느낀점

  • 볼링 게임을 웹에 올리면서 기존에 작업했던 부분을 조금 수정했다. 웹에 올릴걸 고려하고 작업했던 겉데 미숙했던 부분이 있었다. 이번처럼 웹에 올려볼 수 있는 작업들이 있으면 반복적으로 해봐서 웹에 올릴때 필요한 사항들을 좀더 숙지 해야겠다.

  • AJAX를 이용해서 볼링 웹 앱을 구현해봤는데 결국 성공까진 못했다. Controller를 통해서 받는 것까진 성공했는데 그 다음 처리하는 과정이 error로 빠진다. 그것과 더불어 어떻게 점수만 갱신할지 잘 안됐는 시간날때 좀더 진행 해봐야겠다. 그래도 지금 것보다 더 간단한 형태라면 어떻게 작업해야 할지는 알것 같다.


내일 할일

  • 체스 구현 마저 하기

  • 내일 혹은 화요일에 TDD 수업

오늘 한일

온라인 코딩 테스트를 봤다.

  • 총 세 문제였는데 2번 빼고는 일단 제공된 테스트 코드는 통과되게 구현 했다.

  • 볼링 게임의 첫 페이지 완료 및 점수 표지 페이지 작업 중


오늘 느낀점

  • 1,3번도 그렇게 어려운 문제는 아니였는데 처음 어떻게 구현할지 고민하는데 시간을 좀 썼다. 알고리즘 문제들을 유형에 따라 풀어보면서 풀이법을 찾는 시간을 줄여야 겠다.

  • 이전에 작업했던 로또 페이지를 기반으로 index 페이지와 다음 페이지를 작업하고 있었다. 그러다 포비가 만들어 뒀던 페이지를 봤는데 이번 작업의 목표는 html, css 학습이 아닌 AJAX라 미련없이 해당 페이지로 변경했다.


내일 할일

  • 볼링을 웹에 올려보자

  • 헌혈

오늘 한일

- 체스 구현 진행 상황

  1. Piece 클래스들 생성(Pawn, Knight…)
  2. Rank 클래스(체스판 가로 한줄) 생성 및 체스말 배치
  3. Board 클래스 생성, List 클래스를 통해 체스판 구현
  4. 체스판 상에 말 추가 및 삭제 구현 중

- 코딩테스트 환경 테스트 및 문제 풀이

- 호눅스의 알고리즘 기초 강의

- 슬랙 봇 + 라즈베리파이 + 서보 모터를 활용한 자동 도어장치 설치


오늘 느낀점

  • 체스 구현을 다시 시작했는데, 다시 하는 작업이다 보니 아직은 수월하게 진행 중이다. 말들의 이동 구현이 쉽지 않았던걸 떠올리면 월요일은 힘들 것 같고, 화요일까진 마무리 할 수 있도록 노력해보자.

  • 오늘 알고리즘 기초 강의를 들으며 어떤 자료들을 찾아 볼지를 얻어간거 같다.

  • 자동 도어장치를 설치 하기까지 재밌게 작업 한거 같다. 제작 과정에 슬랙 봇을 만지면서 봇에대해서 알게 되기도 했고, 그 덕에 aws 람다도 좀더 알게 된거 같아 좋은 경험도 됐다.

  • 생각을 해봤는데 주말에는 평일에 하는 과제가 아닌 다른 공부 혹은 일을 우선시 하기로 정했다. 일단은 당장 내일은 코딩테스트가 가장 큰 일이다. 일요일엔 내가 아직 AJAX를 사용하는 것에 대한 자신감이 없는데 이번에 구현한 볼링을 AJAX를 활용하여 웹에 올리는 작업을 해 봐야겠다.


내일 할일

  • 코딩테스트