벌써 또 한주가 지나갔다.
이번주 작은 목표는 기존에 공부하던 책 한권 진도 다 빼기와 알고리즘 문제 많이 풀어보기!
목표를 잘 이룬것 같다. 😶
공부하던 이것이 자바다는 별 탈 없이 진도를 다 나갔고, (JDBC같은 경우엔 첫주에 많이 해봤고 앞으로도 많이 할 예정이라 패스함)
백준 알고리즘도 생각보다 많이 풀어본 것 같다. 벌써 실버 5를 달성했다! 21일부터 풀기 시작했고 어제 실버 5를 찍었으니 거의 4일만에 .. 굉장히 큰 발전이라고 생각한다 ㅎㅎ
힘들었던건 주말에 냉방병이 걸려버려 이틀동안 너무 심하게 아팠다..
그래도 토요일은 꾸역꾸역 스카 나가서 공부했고.. 어제는 너무 아파버린 나머지 쉬었지만 그와중에 알고리즘은 계속 풀었던것 같다 ㅎ
그만큼 알고리즘 풀이가 뭔가 내 일상에서 게임하듯이 자리 잡은거 같은 느낌이라 기분이 좋다 😆
이번주는 크게
자바 - 스트림/ 네트워크 입출력
에대해서 공부했고
기존에 구매해둔 스프링 강의로 테스트코드 작성하는법을 배웠다.
자바 스트림 요소 처리
자바 네트워크/ TCP
자바 UDP/JSON
테스트코드 작성해보기
객체지향 패러다임
실질적인 공부는 이렇게 진행했다. (이번주는 하루가 빠진 4일동안 진행했다 😡)
스트림같은 경우에는 활용 가능한 것들이 크게 컬렉션 프레임워크와 배열 정도가 있다.
내가 생각해본 스트림은 패션쇼.. 라고 생각했다. 이렇게 생각하니 굉장히 이해가 빨랐던 것 같다. 🤓
만약 내가 Map 이나 List 에 스트림을 적용한다면, 해당 Map의 요소 하나하나를 패션쇼 모델마냥 하나하나씩 데려와서 원하는 결과를 볼 수 있게하는 것 이라는 생각이 들었다 (예를 든다면 이 옷을 입은 모델만 데려와주세요.. 모델의 키 순서대로 쇼를 세워주세요.. 이런느낌..?)
단순 내가 스트림을 적용하지 않고 원하는 결과를 보려면 뭔가 굉장히 복잡하게 for문 부터 해서 그걸 또 정렬 하고 해당 결과를 가져오고 하는데 코드 자체가 굉장히 길어질 것 같다고 치면,
스트림은 보통 람다식으로 표현하고 메소드체이닝으로 메소드.메소드.메소드. ~~ 이렇게 표현하기 때문에 굉장히 간결하게 내가 원하는 결과를 찾을 수 있다.
한번 더 생각해보자면, 엑셀에서 필터링/피벗테이블 만드는 느낌과 비슷했다.
스트림 같은 경우에는 나중에 알고리즘 풀이에도 큰 도움을 줄 수 있을거라는 생각이 들었다. 🤩
굉~~장히 어려웠다 그날 하루만으로는 이해가 전혀 되질 않아서 한 챕터를 총 이틀동안 공부했던 케이스..
어려웠던건 내가 당장 이걸 가지고 활용을 할만한 거리가 생각이 안났고, 연습문제에서는 서버와 클라이언트 클래스를 작성해서 간단한 쇼핑몰 프로그램을 만들어보세요~ 이런게 있었는데
JDBC같은 경우에는 첫주에 활용할때 코드 참조를 굉장히 많이 했지만 , 결국엔 내가 구조상 작동이 잘 되는 프로그램을 만들었었다.. 처음에는 이것 조차도 아 그래도 나 다 코드 베껴오고 가져왔으니까 이거는 다 할 수 있겠지~ 라는 생각이 있었는데 이때의 내가 정말 대단했던 것이었다..
그래서 네트워크 챕터 부분은 최대한 개념정리 위주로 진행했다.
크게 정리한것은 네트워크는 전선과 같다고 생각을 했다. 하나가 끊어지면 분명 어딘가에 문제가 생길거라는 ..
TCP는 단순히 내가 직접 음식점 안에 들어가서 음식을 주문하고 밥을 먹는거라면
UDP는 단순히 내가 음식을 배달시켜서 배달원에 따라 내 음식이 분실될수도, 양이 가게에서 보냈을때랑 다를수도 있는.. 그렇게 비유를 하니 이해가 좀 쉬웠다.
JSON은 개인적으로 JDBC랑 비슷하다는 생각을 했다.
JDBC는 MySQL서버에 접속해서 해당 데이터를 집어넣어 저장하거나 갖고와서 출력하는 반면에
JSON은 축소판? 저장하는것이 아닌 쪽지에 내용 적어서 던져서 서버가 그걸 확인하면 또 쪽지에 내용을 적어서 클라이언트로 보내는 형식이라 생각을 했다.
이 부분에대한 활용은 내가 나중에 꼭 할 일이 있을거라는 생각으로.. 지금 당장 어렵다고 당장 하루종일 붙잡고 이해하려고 하는건 시간낭비라고 생각했기때문에 가볍게 패스했다 ㅎ.
스프링 프로젝트 강의에서 진행했던것중에 제일 많은 비중을 차지한게
테스트코드 작성 이었다
강사님이 그냥 3강의 모두를 연달아서 테스트코드만 작성을 하셨다.
남들은 이 경우에 "뭐야.. 이분 그냥 이걸로 떼우려고 하시나?;;;" 라고 생각할 수 있지만..
내 입장에선 달랐다.. 굉장히 중요하니까 같은 큰 주제를 여러가지 다른 케이스로 보여주시는것이라 생각했다.
이 강의를 들으면서 가장 중요하다 생각했던 부분은
강사님께서 처음부터 끝까지 A라는 프로그램을 만든다고 하신다면,
그냥 단순히 하나의 주제를 가지고 처음부터 끝까지 만드신게 아니었다.
계산기 하나를 만드시는데 그냥 +-/* 를 단순히 입력받는걸로 만드셨다가
하나하나 케이스를 추가하시면서 유지보수를 하시기 시작한다.
그러면서 결국엔 모든 테스트 케이스를 완성하시는?
이 과정에서 느꼈다.. 객체지향 프로그래밍은 결국엔 얼마나 유지보수를 하기 쉬운 프로그램을 만드느냐가 제일 중요한지..
세 강의 모두 처음부터 끝까지 A의 기능을 갖고있는 코드를 작성하신후에 테스트를 해가면서 기능을 계~속 바꾸신다 점점 간결하게
그렇게 결국에 완성된 프로그램은 누가봐도 깔끔하고 어떠한 오류가 일어났고 이 코드가 어떤걸 원하는지 이해하기 쉽게 완성이 된다
여기서 테스트 코드를 왜 작성하는지 확실하게 알게 됐고 , 앞으로 뭐를 만들던간에 중요하게 생각하는 것들중 하나가 될 것 같았다.
알고리즘 같은 경우에는 확실히 다시 처음부터 개념을 좀 잡고 문제를 풀어보니 전이랑 머리 돌아가는 차이가 확실히 달랐다.
전에는 진짜 헬로월드 출력하는거 조차도 컴파일 에러가 났는데 .. 지금은 그냥 쉭쉭 하고 코드 작성해보고 넣어보면 정답이랜다.. 물론 문제는 쉽지만 ㅋ
제일 보람찼던 순간은 다른 분들 풀이를 우연찮게 봤는데 내 코드가 생각보다 소요시간,코드길이 가 짧고 간결하다고 느낄때 내가 한층 더 성장했구나 하는 생각이 들었다.
마찬가지로 뭔가 알고리즘 풀이가 그냥 게임같다.. 너무 재밌어서 평소에 게임대신 알고리즘을 풀고있다 ㅠ
저번주에는 공부를 내 생활에 적응시키는게 가장 큰 수확이었다면 이번주는 알고리즘 푸는 습관을 들인게 가장 큰 수확같다. 취미가 하나 더 생긴 기분이다 🥰
이번주는 뭔가 확실히 같은 설명, 같은 코드를 보더라도 내가 그걸 이해하거나 분석하는 지능? 이 상승한거 같다는걸 크게 느꼈다. 전보다 확실히 아 이거는 이런 기능을 하니까 내 기준 이렇게 생각하면 쉽겠구나! 이렇게 나만의 정의가 전보다 확실히 쉬웠다
아까 적어놨듯이 알고리즘 문제 푸는게 나만의 놀이가 된 것 같은 한 주였다. 계속 이어나가면 좋겠지만 문제가 점점 어려워지는걸 보니 ㅎ 잘 모르겠지만 하루에 적어도 한문제 이상은 푸는 습관을 들일거같고 앞으로가 기대되기도 한다.
첫주 둘째주와 다르게 뭔가 이제 내가 자연스럽게 할게없으면 공부를 하게 된다. 완전히 적응이 된것같다 ㅎㅎ 이제는 공부를 안하면 찝찝하다. 뭐 하나라도 배우는 삶이 이렇게 즐겁다는걸 이제야 느끼다니.. 앞으로도 열심히 살아야겠다고 다짐하게 됐다
내 성격은 뭔가 하나가 궁금하고 어려우면 무조건 그날 궁금증을 풀어야하는 성격을 갖고 있다보니, 확실히 이해가 어려운 부분을 갖고 그날그날 급하게 해결하려는것 같았다. 하지만 이 부분은 단순히 내 삶은 아직 많이 남았고 난 평생 공부할테니 조급하게 생각하지 말고 천천히 나만의 개념을 정리해나가자~ 라고 타협했다 😌
주말에 너무 아파서 하루 빠진게 너무 아쉽다. 공부를 위해서 몸관리를 더 철저하게 해야겠다는 다짐을 하게 됐다.
알고리즘 문제를 풀때 첫번재 힘들었던점과 마찬가지로 안풀리는거 갖고 몇시간 붙잡고 있는 내자신을 발견.. 앞으로는 한문제당 30분이상 투자하지 않을것을 다짐 ㅋㅋ ㅠㅠㅠ
매번 말했듯이 내 라이벌은 저 사람도 아닌 저 윗사람도 아닌 어제의 나 라는걸 뼈저리게 느끼는 요즘, 내가 이렇게 주마다 열심히 하려고 노력하는 모습을 보고, 그 전날보다 뭔가를 더 배우고 이해하는 능력이 좋아진 내 모습을 보며 자존감도 많이 오르고 공부에 재미도 붙게 됐다.
앞으로도 계속 이렇게 유지했으면 좋겠다 ㅎㅎ 물론 과한 공부는 곧 자학과 같다는 생각도 들어서.. 공부를 단순히 공부라고 생각하지 않고 내 생활로 만들어야겠다는 다짐도 하게 되었다.
한주만 더하면 벌써 4주가 마무리된다. 첫 한달이 가장 중요한 시기라고 생각한다. 이번주도 화이팅!