✏️ 2022-12-07 Today I Learn

@mitoconcrete · December 07, 2022 · 8 min read

[TodayKeywords] 오늘 공부한 키워드

  • IOC(Inversion Of Control) : 의도적으로 프로그램의 흐름을 반대로 바꾸는 것. 보통은 작은것에서 큰것으로 올라가지만, 이 흐름을 반대로 바꾸면 상호 간 의존도가 낮아진다. 이미 잘 만들어진 객체를 가져와 사용할 수 있게 만드는 것이 대표적인 IOC패턴이다.
  • Bean : 스프링이 관리하는 객체. 스프링은 IOC Container를 두고, 스프링이 초기에 로딩 될 때 Bean들을 인스턴스화 하여 저장한다. Bean화 되는 대상은 특정어노테이션이 마킹된 모든 컴포넌트들이며, @ComponentScan 에 셋팅된 패키지 하위의 모든 마킹된 컴포넌트들이 Bean화가 된다. 스프링은 Bean 의 변수명 제일 앞자리를 소문자로 바꾸어준다. final로 선언해준 변수 중 일치하는 변수명이 있다면 스프링이 자동으로 DI를 해준다.
  • IOC Container : Bean으로 선언된 인스턴스들이 모이는 공간.
  • @Component : 클래스를 Bean으로 등록함.
  • @Bean : 객체를 직접 Bean으로 등록함. @Configuration 으로 마킹된 클래스의 내부에 위치한 Bean을 등록한다.
  • @AutoWeird : DI 주입 할 곳을 명시적으로 정의해주어, 이 애너테이션이 사용 된 곳은 IOC Container 에서 Bean을 꺼내 적절한 객체를 주입해준다. 스프링 4.3부터는 의무적으로 적어줄 필요가 없다. 하지만, 생성자가 오버로딩 된 경우에는 반드시 선언해주어야 한다.
  • @RequiredArgsContructor : final로 선언된 변수를 가져와 자동으로 DI해준다.
  • @ApplicationContext : Bean 을 수동으로 꺼내어 사용가능하게 해준다.
  • JpaRepository : 이것을 인터페이스에 사용해줌으로서, Spring Data JPA가 @Repository를 붙혀서, 기본적인 CRUD는 물론 DB연결 및 닫기까지 알아서 해준다.
  • 스프링 프레임워크 : 정해진 형식과 틀이 있다. 따라서, 데이터의 신뢰성, 서버유지에 대한 안정성, 대량의 데이터를 똑같은 기준으로 관리가 가능해진다. 이는 대규모데이터를 다루기 유용하게 만들어주었다. 스프링은 기업용 어플리케이션을 만드는게 적합하며, 많은 반복로직으로 인해 실수가 잦은 컨트롤러, 레파지토리를 쉽게 작성해주고, 비즈니스로에 집중할 수 있게 돕는다.
  • 스프링 시큐리티 : 스프링에서 인증과 인가를 처리해주는 툴
  • 인증(Authentication) : 실제 유저가 맞는지 검증하는 절차. 쿠키-세션방식 JWT Token 방식이 있다.
  • 인가(Authorization) : 유저가 접근 권한이 있는지 확인하는 절차.
  • 비연결성 : 클라이언트-서버는 연결되어 있지 않다. 서버는 클라이언트의 요청으로 동작한다.
  • 무상태성 : 서버는 클라이언트의 상태를 저장하지 않는다.

[NextKeyworks] Study Queue

  • HTTPS
  • SOLID
  • loop label
  • CSV
  • 파일입출력
  • UML
  • UTC
  • epoch time / Instant time
  • MVC
  • URL ClassLoader
  • Secure ClassLoader
  • JNI
  • GC
  • HOF
  • 자바 해시코드
  • OSI 7 계층
  • PCB
  • 스프링 설계철학
  • RESTful
  • 준 영속성
  • 지연로딩
  • 프록시객체
  • jpa - mybatis 의 차이
  • orm - mapper 의 차이

[회고] 221207 : 앞으로 나아가는 방법

공부/업무를 하다보면 도무지 앞으로 진도가 나가지 않는 순간이 온다. 개발이 디깅(Digging)을 하기 딱 좋은 영역이다보니, 자주 하얗게 불태우는 순간을 마주하곤한다. 하지만, 계속 파고들다보면 디깅을 시작한 원인도 망각하고 아까운 시간만을 태우고 있는 나 자신을 보곤한다.

나혼자 공부 할 땐.. 그냥 그렇게 해도 무관했지만, 어떤 마감기한이 정해져 있거나 같이하는 업무를 진행 할 땐, 이 버릇이 정말 좋지않다. 야근의 원인이 되는 가장 좋은 습관이다. 또한, 이는 회사에서 팀원들을 나로인해 지체하게 만드는 원인 중에 하나였다.

처음엔 '내가 일을 못하는 건가' 싶었는데, 일을 하다보니 '시간을 잘 쓰는 방법'을 몰라서 이런 상황들이 벌어졌다. 정말 별거 없지만.. 조금이라도 시간을 지체하는 것에 대해서 헤어나오기 위해서 내가 선택한 방법은 다음과 같다.

  1. 디깅을 하기 시작하면, 디깅을 한 목적을 명확히해라 : 목적이 명확해지면, 지금 나에게 필요한 정보와 필요하지 않은 정보를 구분 할 수 있게되어 손쉽게 빠져나올 수 있다.
  2. 중요도 정하기 : 지금 내가 하고 있는 일이 시간만 때우고, 크게 중요한 일이 아니라면 간단한 일이라도 우선순위가 높은 업무부터 해치우는 것이 낫다.
  3. 미련없이 버리기 : 중요도와 목표가 정해졌다면, 앞으로 나가기만 하면된다. 목표에 부합하지 않는 것은 ?가 생기더라도 미련없이 스킵하고 지나간다.
  4. 버린것은 기억하기 : 버린것은 그냥 지나치기보다, 따로 기록해놓았다가 시간이 날 때나, 지장이 없는 시점에 리서치한다.

이러다보니 T자로 디깅하는 스킬이 많이 줄었긴했지만.. 이제부터 디깅하는 스킬을 키우면 된다고 생각하고 있다. 앞으로 나가는 방법에 익숙해졌으니, 이제 효율적으로 디깅하는 기준을 만들어 봐야겠다.

@mitoconcrete
어제보다 조금 더 성장하기 위해 기록합니다.