170717-170723


170717-170723

일요일에 일정이 많아서 쓰지 못하고, 뒤늦게 작성한다.

  • 백준 알고리즘 오프라인 강의 (매주 화, 목)
    • 이번주부터 파트2가 시작되었다.
      • 분할 정복, 그리디 알고리즘, 이분 탐색으로 정답 찾기, 다이나믹 프로그래밍 2를 진행.
      • 25일부터 다이나믹 프로그래밍 3, 그래프 2, 트리 2가 예정되어있다.
    • 상당히 재밌는 주제이기도 하지만, 어려운 내용도 섞여 있어서 복습을 완전히 하진 못했고 천천히 하고 있다.
  • 알고리즘 문제 풀이
    • 별로 의미는 없지만 백준 온라인 저지 1000위 안으로 진입했고, 현재 248문제를 푼 상태이다.
    • 예전보다 확실히 난이도 높은 문제에 도전할 수 있게 되었으며, 막히는 문제를 최대한 잘게 쪼개서 분석하는 스킬이 조금씩 생기고 있다.
    • 기존에 세워둔 2017년 목표가 300문제 풀기였는데, 이 것을 달성하고 나면 기존에 구매해뒀던 서적에 있는 문제 풀기 및 codewars / leetcode를 해야될 것 같다. codeforces도..
  • 컴퓨터 구조론 스터디
    • 챕터7 (시스템 버스, I/O 및 인터럽트) 진행했다.
    • 챕터8 (고성능 컴퓨터시스템 구조) 진행하면 스터디 완료~
  • 책 읽기
    • 객체지향의 사실과 오해
      • 절반 정도 읽었는데, 지루하지도 않고 재밌게 보는 중이다. 알고는 있었지만 애매하게 이해하고 있던 개념들에 대해서 적절한 비유로 설명해주는 것이 아주 놀라웠다. 기존에 객체지향 설계를 얼마나 어설프게 알고 있었나 싶기도 하고.. 책을 다 읽고 나면 여기서 배운 내용을 토대로 객체지향 설계 연습을 한 번 더 해야겠다.
    • 자바 웹 프로그래밍 Next Step (웹 서버 만들기 실습 하면서 읽음..)
  • 웹 서버 만들기 실습
    • SLIPP에서 자바지기(박재성)님이 올려놓으신 실습 과제가 있는데, 알고보니 자바 웹 프로그래밍 Next Step 책에서도 다루는 내용이었다. (사놓고 챕터 1만 읽어서 몰랐음..)
    • 링크
    • 지금 내 상태에서 살짝 난이도가 있는 도전 과제였기 때문에, 최대한 힌트 + 해법을 보지 않고 내 힘으로 해결하려고 노력했는데 다행히 별 문제 없이 완성했다. 이제 남은건 책에 있는 리팩토링 챕터를 보면서 실습을 마저 진행하고 자바지기님 코드를 보면서 고칠 점을 배우는 것이다.
      • 이 실습을 하면서 크게 배운 점은, ‘소켓을 열고 바이트 단위로 무언가를 주고 받고 하는 상황’ 에 대해서 직접 부딛혀가면서 경험할 수 있었다는 것이다. InputStream / OutputStream을 네트워크 프로그래밍에서 사용해보고 뼈대만 있는 서버에 HTTP 웹 서버 기능을 구현해보는건 재미있었다.
      • 그 외에도 책이나 QA 업무를 통해 알게되었던 각종 HTTP 지식에 대해서 한번 더 개념 정리를 하고 넘어갈 수 있었다는 것이 좋았고, NIO 관련 내용 학습이나 특정 상황에서 제일 적합한 자료구조를 선택하는 것에 대한 고민을 할 수 있었다. 메서드를 어떤 ‘행위’ 단위로 분리해보려고 애쓴 것도 그렇고.
      • 아무리 짜잘한 기능이어도, 이 상황에서 어떤 자료구조를 써야 낭비가 없이 편하게 데이터를 담고 다룰 수 있나 고민을 하게 되는데 알고리즘 문제 풀이를 하면서 그건 조금 익숙해진 것 같은 느낌이다..