본문 바로가기

Develop

(55)
[Develop/Java] public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라 이 포스팅은 이펙티브 자바 도서내용 정리입니다. public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라 인스턴스 필드들을 모아놓는 클래스 작성 아래와 같이 인스스 필드들을 모아놓는 일이외에는 아무 목적도 없는 퇴보한 클래스를 작성할 때 필드는 public이어스는 안된다.class Point { public double x; public double y; } 이런 클래스는 데이터 필드에 직접 접근할 수 있으니 캡슐화의 이점을 제공하지 못한다. API를 수정하지 않고는 내부 표현을 바꿀 수 없고, 불변식을 보장할 수 없으며, 외부에서 필드에 접근할 때 부수작업을 수행할 수도 없다. 철저한 객체 지향 프로그래머는 이런 클래스를 필드를 모두 private으로 바꾸고 public 접근자(get..
[Develop/Java] try-finally보다는 try-with-resoureces를 사용하라 이 포스팅은 이펙티브 자바 도서내용 정리입니다. try-finally보다는 try-with-resoureces를 사용하라. 기본적인 try-finally 사용 자바 라이브러리에는 close 메서드를 호출해 직접 닫아줘야하는 자원이 많다. InputStream, OutputSteam, java.sql.Connection 등이 좋은 예다. 자원 닫기는 클라이언트가 놓치기 쉬워서 성능 문제로 이어지기도 한다. 이런 자원 중 상당수가 안전망으로 finallizer를 활용하지만 finallizer은 믿을만하지 못하다. 전통적으로 자원이 제대로 닫힘을 보장하는 수단으로 try-finally가 쓰였다. 예외가 발생하거나 메서드에서 반환되는 경우를 포함해서다. 아래 예시를 보자. static String firstLi..
[Develop/Java] toString의 재정의 이 포스팅은 이펙티브 자바 도서내용 정리입니다. toString의 재정의 이펙티브 자바에서 toString 메서드의 재정의에 관하여 알게된 점을 포스팅한다. Object의 기본 toString 메서드가 우리가 작성한 클래스에 적합한 문자열을 반환하는 경우는 거의 없다. 보통 PhoneNumber@abbbd처럼 단순히 클래스_이름@16진수_해시코드를 반환할 뿐이다. toString의 일반 규약에 따르면 '간결하면서 사람이 읽기 쉬운 형태의 유익한 정보'를 반환해야 한다. 따라서 모든 하위 클래스에서 이 메서드를 재정의해야한다. toString을 잘 구현한 클래스는 사용하기에 훨씬 좋고, 그 클래스를 사용한 시스템은 디버깅하기 쉽다. toString 메서드는 객체를 println, printf..
[Develop/Database] GROUP_CONCAT을 이용한 컬럼 합치기 *Mysql을 예시로 한 포스팅입니다. GROUP_CONCAT을 이용한 컬럼 합치기 상황에 따라서 GROUP BY 이용 시 특정 컬럼 값을 합쳐야 하는 경우가 있다. 예를 들어 한 사용자가 가질 수 있는 자동차의 대수가 여러 대 일 경우 하나의 데이터 셋한 줄로 가져오고 싶은 경우 GROUO_CONCAT을 활용하여 , 나 원하는 구분자로 문자열로 묶어 반환 할 수 있다. 물론 (JPA)[https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#reference]를 쓰는 사용자들은 SQL문으로 처리하지 않겠지만 나와 같은 사람들을 위하여 블로그 포스팅한다. GROUP_BY, GROUP_CONCAT 활용 만약에 아래와 같은 데이터셋에 사용자를 ..
[Develop/Git] GitHub Authentication failed 이슈 GitHub Authentication failed 이슈 프로젝트를 진행하던 중 github 페이지를 통해 비번을 수정한 후 작업하면서 생긴 이슈가 있어 정리한다. 커밋, 푸시 전부 Authentication failed 이슈가 발생해서 git config 설정으로 user.name, user.email 등 확인했지만 반복되어 이슈가 발생했다. 최후에 수단으로 사용하던 브랜치를 삭제하고 다시 레퍼지토리를 clone 하려 했지만 똑같은 이슈였다. 찾아보니 아침에 깃 비밀번호를 수정한 게 문제였다. window에서 가지고 있던 자격증명이 수정이 되지 않아 이전 비밀번호로 작업을 진행하다 보니 권한 실패 이슈가 발생했던 것이다. 따라서 아래와 같은 방법으로 window 자격 증명이 제대로 설정되어 있나 확인한..
[Develop/Tools] VSCode Rest Clinet Extension 사용 VSCODE Rest Clinet Extension 사용 Visual Studio Code로 개발을 진행하면서 편리한 Extension을 찾다가 Postman을 대체하여 API 테스트나 간단한 문서 정리에 참고하기 좋은 Extension을 발견하여 소개하는 글을 작성한다. Rest Client 설명 참고 아래는 Rest Client를 사용하면서 참고할 수 있는 Marketplace다. https://marketplace.visualstudio.com/items?itemName=humao.rest-client REST Client - Visual Studio Marketplace REST Client REST Client allows you to send HTTP request and view the re..
[Develop/Git] GitHub remote add 간단정리 (원격저장소 추가) GitHub remote add 간단정리 (원격저장소 추가) GitHub Repository 원격 저장소에 초기 연결 방법에 대하여 간단하게 설명한다. remote add를 이용한 원격저장소 추가 1. 자신의 GItHub에 Repository를 생성한다. 2. 생성 된 GitHub Repository 오른쪽 초록색 Clone or Download 버튼를 클릭하여 https URL을 복사 한다. 3. 아래와 같이 작업한 소스를 원격저장소에 추가한다. $ git remote add origin 소스 반영 작업 소스를 연결 된 원격저장소 origin에 push한다. // 모든 파일 git stage 추가 $ git add . // stage 추가 된 파일 목록 보기 $ git status // stage 추가..
[Develop/React] object. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports. 이슈 React 이슈 정리 어처구니없는 실수로 인하여 시간을 소비한 경험으로 인하여 블로그 포스팅을 작성한다. Route를 이용하여 각 page를 설정하고 실행했는데 아래와 같은 에러 문구가 표출되었다. Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports. 위 내용을 조금만 자세히 읽었더라면..