궁금증 : JpaRepository 인터페이스는 어떻게 구현이 되는 걸까? JPA를 사용할 때 @Repository 인터페이스에 JpaRepository만 상속받으면 우리는 findById, findAll , save, delete 등 같은 엔티티를 변경하는 메서드들을 사용할 수 있다. 애플리케이션 안에 코드상에는 구현 코드가 없는데 어떻게 생성되고 사용할 수 있게 되는 걸까? @Entity public class EntityA { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; } public interface InterfaceA { EntityA getEntityById(Long i..
10월을 돌아보며 반성할 점, 나아갈 점들을 찾아보려고 한다. 10월부터 본격적으로 블로그에 글을 쓰기 시작했다. 공부한 내용 정리와 주간 회고 글을 주로 작성했다. 10월 한 달 동안 쓴 글은 15개로 이틀에 한번 블로그를 작성한 꼴이다. 질 좋은 글이라고 생각하진 않지만, 꾸준히 쓴 것 같아 뿌듯하다. 노션에 한번 초안을 작성하고, 초안을 보고 고쳐가며 블로그글을 썼다. 단순 강의 내용을 정리한 글도 있지만, 내 나름 품을 드린 글들도 존재한다. 하지만 아쉽다. 글을 잘 쓰는 블로그의 문장들을 보면 흐름과 문장들이 유려하다는 느낌을 받는다. 갈 길이 멀구나... 문장표현들을 보면 저렇게 깔끔한 글을 쓸 수 있을까라는 부러운 마음이 든다. 이러한 생각 끝에는 결국 꾸준히 글을 쓰자라는 결론에 다다른다...
리팩토링 스터디 3번째 리팩토링 스터디를 참여했다. 이번 주 스터디에서 기이한 이름일 때 이름 바꾸기에 대한 공부를 했다. 리팩토링을 해야 하는 시점 : 켄트백은 이 시점은 냄새나는 시점이라고 말하고 있다. 리팩토링은 원칙이 존재한다. 이제껏 리팩토링은 개발자마다의 감으로 하는 것으로 생각했는데 리팩토링 책에서는 원칙이 존재하고, 원칙대로 해야 한다고 말하고 있다. 리팩토링을 멈춰야 하는 시점은 개발자의 경험에 기반해야 한다. 기이한 이름일 때 리팩토링 원칙 함수 선언 바꾸기 함수 본문을 새 함수로 추출 기존 함수 본문에서 새 함수 호출 예전 함수 쓰는 부분을 새 함수로 호출하도록 수정 기존 함수 본문 호출하는 곳 없으면 삭제 변수 이름 바꾸기 필드 이름 바꾸기 안드로이드 앱 소스 코드 이번 주에 프로젝..
Reflection이란 클래스 로더가 클래스 정보를 메서드 영역이 생성하는데 런타임 환경에서 메서드 영역에 접근해서 해당 클래스의 정보(필드, 메서드, 클래스 등) 조작하는 방법 구체적인 클래스 타입을 알지 못해도 그 클래스의 정보(메서드, 타입, 변수 등등)에 접근할 수 있게 해주는 자바 API다. Reflection API Class 객체에 접근해서 해당 클래스의 정보를 참조 및 수정, 실행을 할 수 있다. public class Coffee { private String name; private int price; public String getName() { return name; } public void setName(String name) { this.name = name; } public i..
훅은 리액트 버전 16.8에서 새롭게 등장한 개념이다. 현재 대부분은 Hook를 사용하기 때문에 중요한 부분 Hook의 개념과 useState, useEffect Hook 리액트 컴포넌트는 클래스 컴포넌트와 함수 컴포넌트 두 가지가 존재한다. 컴포넌트에는 state라는 중요한 개념을 갖고 있는데, 이 state를 이용하여 렌더링에 필요한 데이터를 관리한다. (붕어빵 틀 : 컴포넌트, 붕어빵 : react element, 붕어빵 속재료: state) 클래스 컴포넌트에서는 생성자를 통해 state를 관리, setState() 함수를 통해 state 업데이트, LifeCycle methods를 제공하여 컴포넌트의 생명주기에 따른 기능 구현이 가능 원래 함수 컴포넌트는 state를 사용불가 했으며, 컴포넌트 생..
이번 주는 리액트 강의, 리팩토링 스터디, 개인프로젝트를 진행했다. 개인 프로젝트 기획(요구사항 정의 및 일정) 및 프론트엔드 작업을 진행했다. 평소에 쓰던 영어 공부 어플인 말해보카를 참고해 개발자들을 위한 퀴즈 애플리케이션을 만들 계획이다. 1차 배포를 목적으로 최소 기능 요구사항들을 정리했다. 각 페이지 별로 필요한 리액트 컴포넌트들을 정리 후 라우팅으로 연결했다. 리팩토링 스터디 월요일에 리팩토링 스터디를 진행했다. 이번 주는 하나의 메서드에서 출력 로직 부분과 계산 로직 부분을 분리하고 계산 로직 안에 있는 switch문을 다형성에 맞게 리팩토링 하는 것을 경험했다. (추상 클래스, 팩토리 클래스, ENUM을 사용) JVM 인프런 백기선 개발자의 더 자바 강의를 통해 JVM에 대한 개념을 익히고..
JVM (Java Virtual Machine)자바 가상머신으로 자바 바이트 코드를 OS에 맞게 특화된 코드로 변환하여 실행해 준다. JVM의 구성 요소클래스 로더메모리 영역실행 엔진JNI(Java Native method Interface) + JNL (Java Native method Library) 클래스 로더로딩 : 클래스 파일에서 바이트 코드를 읽어오는 과정링크 : 레퍼런스 연결 과정초기화 : 클래스에 있는 static 값들 초기화 클래스 로더의 종류부트스트랩 클래스로더 : JAVA_HOME/lib에 있는 코어 자바 API를 제공, 최상위 클래스 로더 플랫폼 클래스로더 : JAVA_HOME/lib/ext 폴더 또는 java.ext.dirs 시스템 변수에 해당하는 위치에 있는 클래스를 읽는다.애플..
리액트에서 중요한 부분 State 영어단어로 상태를 의미하는데 리액트에서도 컴포넌트의 상태를 의미한다. 리액트 컴포넌트의 상태는 컴포넌트의 데이터라는 의미 리액트 컴포넌트의 변경가능한 데이터를 state라 부른다. state는 자바스크립트 객체 형태다. state는 개발자가 정의한다. 정의할 때 주의할 점 렌더링과 데이터 흐름에 사용되는 데이터만 state에 포함해야 한다. 관심 없는 값들은 컴포넌트의 인스턴스 필드에 정의하자, 관심 없는 값들까지 state에 포함되면 재렌더링 시 성능 이슈가 발생할 가능성이 있다. 클래스 컴포넌트는 생성자로 현재 state를 정의하고, setState 함수로 state들을 수정한다. (직접 수정은 잘못된 방법) class LikeButton extends React.C..
Component 리액트는 컴포넌트 기반 구조이다. 레고 블록처럼 컴포넌트를 조립해서 개발 컴포넌트는 함수(function)와 형태가 비슷하다. 입력(props) 값을 받아서 react element로 반환을 한다. Componenet와 react element 간의 관계는 붕어빵 틀과 붕어빵의 관계다. 객체지향에서 나오는 클래스와 인스턴스의 관계와 흡사하다. Props Property를 줄여서 사용 리액트 컴포넌트의 속성을 의미한다. 컴포넌트에 전달한 다양한 정보를 담고 있는 자바스크립트 객체 붕어빵에 들어가는 속재료 Props의 특징 read-only : 읽기만 할 수 있고, 변경은 불가능하다. 모든 리액트 컴포넌트는 Props에 관해서는 Pure함수 같은 역할을 해야 한다. Props 사용법 fun..
9월 원티드 프리온보딩을 통해 참여하게 된 개발자 커뮤니티로부터 자극을 받고 있다. 늦은 밤까지 매일 모각코 하는 분들과 오늘의 다짐(일일 목표)을 작성하며 공부하는 모습을 보고 뒤쳐지면 안되겠다는 생각이 들었다. 리팩터링 스터디 월요일에는 리팩터링 스터디를 참여했다. 이번 주가 첫 시간이었다. 한 분이 강사를 맡아서 강의식으로 진행되었다. 자바스크립트로 된 리팩터링 2판을 자바 코드로 수정해 가며 예제 코드를 전달해 주셨고, 설명을 들으며 예제코드를 같이 리팩터링을 진행하는 방식으로 스터디를 했다. 리팩터링 기법 하나에 커밋을 한번 하자 리팩터링 + 테스트는 필수 리팩터링은 성능에 신경쓰지 않는다. 리팩터링 후 성능이 문제라면 그때 해결 방법을 생각하자. 리팩터링이 된 코드가 버그나 성능 이슈를 고치는..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.