250216 회고 💬

오랜만에 따뜻한 주말이다. 어느덧 2월도 중순이 된 3주 차를 되돌아본다.

Keep 👍

  • 알고리즘 문제 풀이를 계속하고 있다. 코테 스터디를 하고 있다. 깃허브로 서로 코드리뷰를 해주는 중이다. 다른 사람들 코드 보는건 언제나 어렵다. 이해하려고 부단히 애쓰는 중이다. 삼성 A형 문제를 매주 하나씩 풀기로 했다. 대부분이 골드 상위권 문제다. 하나 풀려면 오후가 다 사라지는 마법,,, 😢 스터디 문제 풀이 외에도 개인적으로 하루에 1문제 이상 문제풀이를 하고 있다. 벌써 30일차! 후하후하 🧘 B형 특강에서는 그리디와 힙을 공부했다.
  • OAuth2 강의듣기가 힘들어서 다른 강의를 듣기 시작했다. OAuth2 강의는 직접 코드 따라가면서 집에서 들어야할듯 하다. 그래서 다른 강의를 들었는데, 이번 주에는 스프링 부트를 공부했다.
    - 내장 톰캣
    - Auto Configuration
    - @Value
    - @ConfigurationProperties
    - 액츄에이터
  • 개인 프로젝트 진행할 시간 내기가 참 힘들다. 그래도 이번 주에는 기능 하나를 완성했다. 바로 백엔드에서 비디오파일 응답하는 기능이다. 테스트에서 정상적으로 비디오 재생되는 부분까지 확인했다. 프론트 작업만 남았다!
  • CS 스터디를 시작했다. 이번 주에는 하드웨어 부분을 공부했다. 하드웨어 중에서 CPU 를 공부했다.
    - 2진수, 16진수
    - 명령어
    - ALU
    - 제어장치
    - 레지스터
    - CISC, RISC

Try 🧚

  • SSAFY B형 대비 문제 풀이하기
  • 토이 프로젝트 비디오 업로드 로직 완성
    - 백엔드
    - 개인 프로필 로직 제작
    - 비디오 업로드 로직
    - 프론트엔드
    - 개인 프로필 화면 제작
    - 비디오 화면 제작

독서 목록

서평 완료 목록

서평 예정 목록 (읽는 중)

  • 면접을 위한 CS 전공지식 노트

독서 예정 목록

  • 오브젝트
  • HTTP 완벽 가이드
  • 자바/스프링 개발자를 위한 실용주의 프로그래밍
  • 모던 자바 인 액션
  • 자바 성능 튜닝 이야기
  • 헤드 퍼스트 서블릿
  • 파이브 라인스 오브 코드

Extras 😀

테스트 코드 작성

파일을 읽어와서 이를 테스트 인자로 넘기는 테스트코드를 작성했다. 여러 방법을 시도해 봤는데 아래 코드가 가장 보기 좋은 구조였다. 다음에는 테스트 케이스도 인자로 받아서 DisplayName에 주입해주는 방식을 시도해보려고 한다.

class SolutionTest {  
  
    @ParameterizedTest(name = "{index}")  
    @MethodSource("testSource")  
    void test(int[] input, String expected) {  
       // given  
       Solution s = new Solution();  
  
       // when  
       // then  
       assertEquals(expected, s.solution(input));  
    }  
  
    private static Stream<Arguments> testSource() {  
       return loadData().stream().map(testCase -> Arguments.of(testCase.input, testCase.output));  
    }  
  
    private static List<TestCase> loadData() {  
       List<TestCase> result = new ArrayList<>();  
  
       for (int i = 1; i <= 3; i++) {  
          String inputFilePath = "src/main/BJ15651/source/input" + i + ".txt";  
          String outputFilePath = "src/main/BJ15651/source/output" + i + ".txt";  
  
          result.add(new TestCase(readInput(inputFilePath), readOutput(outputFilePath)));  
       }  
  
       return result;  
    }  
  
    private static int[] readInput(String filePath) {  
       try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {  
  
          StringTokenizer st = new StringTokenizer(br.readLine());  
          return new int[]{Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken())};  
  
       } catch (IOException e) {  
          throw new RuntimeException(e);  
       }  
    }  
  
    private static String readOutput(String filePath) {  
       StringBuilder result = new StringBuilder();  
  
       try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {  
  
          String line = "";  
  
          while ((line = br.readLine()) != null) {  
             result.append(line + " ").append("\n");  
          }  
  
          return result.toString();  
  
       } catch (IOException e) {  
          throw new RuntimeException(e);  
       }  
    }  
  
    private static class TestCase {  
       final int[] input;  
       final String output;  
  
       public TestCase(int[] input, String output) {  
          this.input = input;  
          this.output = output;  
       }  
    }  
}
profile
What doesn't kill you, makes you stronger

0개의 댓글

Powered by GraphCDN, the GraphQL CDN