본문 바로가기

전체 글

(177)
[ Java Spring ] CRUD Repository vs JPA Repository CRUD RepositoryCRUD Repository는 Repository 인터페이스를 확장하며, save(), saveAll(), findAll() 등 CRUD에 관련된 메서드를 제공한다. Paging과 Sorting 기능은 따로 제공하지 않는다. 상속 관계Repository -> CrudRepositoryJPA RepositoryJPA Repository는 PagingAndSortingRepository 인터페이스를 확장하며, PagingAndSortingRepository는 CRUD Repository 인터페이스를 확장하는 형태를 띠고 있다. 기본적인 CRUD 관련된 기능뿐 아니라 Paging, Sorting 기능을 추가적으로 제공한다. 또한 saveAllAndFlush(), deleteInB..
DB 외부 접속 포트 포워딩 문제 상황윈도우 환경에서 MySQL 설치 및 환경 설정을 완료한 상태였다. 유저, 데이터베이스 생성과 아이피 유저 부여를 했다. 포트를 열어주기 위해 방화벽 규칙을 추가했다. 마지막으로 공유기 포트 포워딩 설정을 해줬지만 외부에서 DB에 접속이 안 되는 문제가 발생했다.이유외부 IP가 내가 설정한 공유기로 바로 연결이 되지 않는다는 것을 발견했다. 외부 IP와 공유기 사이에 모뎀이 존재했으며, 모뎀에서 공유기에게 새로운 로컬 IP를 부여하고 있었다. 외부IP(XXX.XXX.XXX) -> 모뎀(192.33.44.1) -> 공유기(192.33.44.25 | 192.33.55.1) -> 컴퓨터(192.33.55.12) 해결 방법모뎀과 공유기를 Bridge 형식으로 변경하는 것과 포트 포워딩을 모뎀과 공유기 모두에..
[ 등산로 정보 웹 ] 시작하며.... 보호되어 있는 글입니다.
[ 인생퍼즐 ] 백엔드 사용 언어 변경 백엔드 사용 언어 변경 인생퍼즐의 백엔드는 기존에 NestJS로 작성을 했다. 이번에 코드를 리팩터링 하고 이후 유지보수를 위해 사용 언어를 Java로 변경하기로 했다. 또한 DI 등 객체지향 코드를 작성에 도움을 주는 Spring과 DB를 Java 컬렉션처럼 쓸 수 있게 해주는 JPA를 사용하기로 했다. 자바 스프링 자바 스프링은 객체 지향 언어를 더 잘 할 수 있도록 해주는 프레임워크이다. 좋은 객체지향 설계를 위한 SOLID원칙을 지키게 해 주며, 스프링 컨테이너를 통해 5가지 원칙 중 위반된 SRP/OCP/DIP를 보완해준다. 관심사를 사용 영역과 관리 영역으로 나누어 SRP, 사용 영역에 대한 확장은 쉽게 하며 변경은 어렵게 함으로 OCP를 보완한다. 마지막으로 관리 영역을 통해 객체 생성 및 ..
[ Core Java Volum ] Chapter 5 상속 기억나고 중요한 내용- 상속은 superClass와 subClass 관계로 이루어진다. [ parentClass , childeClass 라고도 함 ]- private field의 접근 제어는 상속되지 않는다.- super를 통해 superClass의 생성자 호출 가능하다.- 자바는 다형성과 동적 바인딩을 통해 상위 클래스 타입으로 하위 클래스 객체를 참조하여 사용가능하게 만들었다.- 자바는 "Class" 클래스를 통해 모든 객체에 대한 런타임 식별자를 추적하며, 이것은 하나의 식별자로 상위 및 하위 클래스의 메서드 호출 시 적절한 메서드를 선택하는 데 사용된다.- superClass로 부터 확장된 모든 컬렉션을 상속 계층이라고 한다.- 상속의 상위 계층으로 올라갈수록 추상적이어야 하며, 이를 위한 ab..
[ Core Java Volum ] Chapter 4 클래스와 객체 Class vs Object vs Instance- Class는 Object를 구현하기 위한 설계도- Object는 현실에 구현될 수 있는 것- Instance는 현실에 구현된 실체 [ 컴퓨터에서는 메모리에 올라간 Object ]Class 및 Instance 특징- Class는 필드와 메서드로 구성된다.- Class간의 관계는 Dependence("use-a"), Aggregation("has-a"), Inheritance("is-a")가 있다.- 접근제어자 Private, Public, Protected, Default를 사용할 수 있다.- 메서드 호출은 Implicit[ Instance of Class ]와 Explicit[ Parameter of Method ] Parameter로 구성된다.- 필드..
[ Core Java Volum ] Chapter 3 자바의 기본 구조 C 와 달리 새로웠던 점- 자바는 일반적인 종료 코드는 0 하나 뿐인다. 다른 코드로 프로그램 종료는 System.exit 를 통해서 가능하다.- 자바는 프로그램 이식성을 위해 원시 자료형의 범위를 고정했다. Unsigned 지원하지 않는 이유도 이와 같다.- 부동 소수점 계산은 이진수 시스템의 표현 때문에 오차가 존재한다. 정확한 수치 계산은 BigDecimal 클래스 사용을 통해 가능하다.- 자바는 10 버전부터 var 키워드를 제공한다.- 유니코드 인식은 u 개수의 상관 없이 마지막 u를 기준으로 이루어진다. -> ASCII와 유니코드 Conversion 과정 중 u가 더해질 수 있기 때문이다.- 자바는 C/C++과 달리 선언과 정의를 구별하지 않는다.- 문자열은 원소를 변경할 수 없는 Imm..
[ 인생퍼즐 ] 안드로이드 Recoil 사용할 때 글자 깨짐 이슈 안드로이드 실제 기기에 앱을 설치하고 테스트했을 때 한글 깨짐 현상이 발생했다. 시뮬레이터 상에서는 발생하지 않는 문제였기에 실제 기기 USB를 연결해 디버그 작업을 수행했다. 해결 방법 테스트에서 글자가 깨지는 화면과 깨지지 않는 화면 모두 존재했다. 두 화면의 소스 코드를 비교해보면 문제점을 찾고 해결 방안을 모색했다. 디버그 과정에서 Recoil이 TextInput에서 사용되었을 때 나타난다는 것을 발견했다. 그래서 Recoil을 useState를 변경해서 TextInput에서 사용을 했고 다른 화면으로 넘어갈 때 useState에 저장된 정보를 Recoil에 저장하는 방식으로 해결했다. 이슈 수정 코드 예시 1. 수정 전 코드 const [userName, setUserName] = useR..