본문 바로가기

우아한테크코스

[우테코 프리코스] 1주차

  1. intelij 설치사용법 익히기
    vscode 만 썼었는데 자바 하시는 분들은 intelij 를 써서 자바 유저로써 공부를 시작하고자 intelij 설치를 했다. vim 이랑 vscode만 쓰다가 다른 IDE 는 처음 써보는 거라 아직 어색하다. 근데 자동완성이 잘 되있어서 편했다. 그래서 다들 자바 프로그래밍하면 인텔리제이를 쓰나보다. lldb 쓸 때 디버깅 for 문에서 돌릴 때 i = 50 번 돌리면 i = 39 일 때 값 확인하려고 무한 n 값 눌러가면서 눈물을 흘리면서 디버깅 했었는데 intelij 는 바로 i=39 넣어서 값 확인 할 수 있는거 보고 감동했다.. lldb 도 해당 기능 있는데 내가 못하는걸수도.. 또 evaluate 기능이 있어서 바로 변수 값 바꿔보고 추가해보고 하면서 확인할 수 있는 것도 좋고.. 그 외 step in, step out 기능들은 이미 익숙하던 거라 새로 배운 기능들만 잘 활용하면 된다. 근데 sout 찍어보는게 너무 편하긴 하다 ㅎㅎ
  2. java 11 설치 후 버전 확인 완료

  3. 빌드 도구
    c 는 컴파일 언어고 python은 인터프리터 언어였다
    근데 자바는 둘이 혼합된 언어라고 해서 어떻게 기계어로 번역해서 컴퓨터가 실행하게 되는지 궁금했다.

    출처 : https://jaeseongdev.github.io/development/2021/03/08/JAVA는_인터프리터_방식과_컴파일_방식이_혼합된_언어이다/        
    위 그림과 같다고 하는데 .java 를 .class 로 바꿔서 JVM 이 실행시킬 수 있는 자바 바이트 코드로 바꾸고 자바 인터프리터가 .class 를 기계어로 한줄씩 번역시킨다고 한다. c처럼 실행파일 생기지 않고 .class 파일이 생기는데 인텔리제이에서 어디 생겨있는지 모르겠다.. 우선 빌드 관련해서는 인텔리제이에서 RUN 하면 실행까지 잘 시켜주니까 문제 다 풀고 고민하기로 했다. 

    소스 코드 파일을 컴퓨터에서 실행할 수 있는 독립적인 형태로 변환하는 과정과 그 결과를 말합니다.
    예를 들어 Java프로젝트를 진행한다면 개발자가 작성한 A.java와 여러가지 정적 파일등에 해당하는 resource가 존재합니다.
    빌드를 한다면 소스코드를 컴파일해서 .class로 변환하고 resource를 .class에서 참조할 수 있는 적절한 위치로 옮기고 META-INF와 MANIFEST.MF 들을 하나로 압축하는 과정을 의미합니다.
    컴파일은 빌드의 부분집합이라고 생각하시면 됩니다.
    또한, 빌드 과정을 도와주는 도구를 Build Tool이라고 합니다.
    즉, 컴파일 된 코드를 실제 실행할 수 있는 상태로 만드는 일을 Build 라는 개념
    출처: https://choseongho93.tistory.com/296 [TROLL:티스토리]

  4.  커밋 메세지 규칙 읽기
    기능 단위로 커밋을 해야 하니까 커밋 메세지 규칙을 사용했다. 다양한 형식들로 많이 하시는데 제일 보기 편한걸로 가져와서 차용했다.. 관련 글들 많이 읽어보기로 !
    사용한 건 [FEAT], [FIX], [REFAC]
     
  5. 자바 문법 익히기
    그동안 C 언어로만 프로그래밍을 공부하고 알고리즘은 파이썬으로 풀어서 객체지향 언어를 사용하는 것이 처음이었다. java 책을 보면서 문법 공부를 하면서 문제를 풀었는데 코딩테스트같은 문제들이라 class, method 만 알아도 풀 수 있었다. 자바 라이브러리에서 기본으로 제공해주는 함수들을 몰라서 혹시 있나..? 하고 찾아가면서 풀었는데 아직 잘 활용을 못하고 있다. 분명 C 에서 있는 함수들은 다 존재할 거 같은데 다음주차때는 활용 더 잘해봐야겠다.
    특히 List 타입과 Array 타입이 아직 잘 이해가 가지 않는다. java 로 문제 풀면서 느낀 건데 알고리즘 풀때 정말 python은 사기인거 같다. C 하다가 python 가면서 너무 풀어져서 문제를 풀었던 거 같다. 하지만 너무 편한걸 ㅠㅠ 다음 차에는 자바 자료형에 대한 공부와 유틸 기본 제공 함수들에 대해서 공부를 더 할 필요성을 느꼈다.

  6. 기능 단위로 나누어서 함수 구현하기
    구현할 항목들을 미리 나눠두고 코드로 변환하는 연습을 하고 있는데 제대로 되지 않을 때가 많았다. 근데 기능 단위로 나누어서 커밋을 해야 한다는 강제성이 주어지니 더 신경쓰게 되어서 습관화하는데 도움이 되는 중이다. 

  7. 클린 코드 작성
    슬랙에서 문제 푸는 건 쉬운데 클린 코드를 위해 리팩토링 한다는 글이 많아서 신경을 쓰려했지만 아직 문법을 익히는 중이라 예쁜 코드를 작성하기에는 아직 기량 미달이었다. 최대한 메소드 하나에 기능 하나를 넣으려고 하긴 했는데 너무 잘게 쪼개면 더 이해하기 어려운 코드가 되는 느낌이고 ..
    지금 하고 있는게 필요한 기능 목록 작성하기 => 파이썬으로 작성해서 실행시켜보기 => java 로 고치기 이렇게 하고 있는데 자바 문법에 좀 더 익숙해지면 가운데 파이썬으로 작성하기 건너뛸 필요가 있다 알고리즘 문제라 이렇게 할 수 있었지만 이제 다음 주차때는 파이썬으로 작성도 어려울지도..? (파이썬도 아직 class 만드는 건 안해봤다)