본문 바로가기

개발자 준비/개발 공부14

동적 주입으로 버전 관리시 DB 연동 정보 숨기기 서버가 DB와 연결되는 부분에서의 위험 기존 RDS 연결 방식 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver //application.yml에 데이터 베이스와 연결하는 인증 정보가 그대로 노출됨 url: example.db.net username: ohseungyun password: passwordString jpa: database: mysql generate-ddl: true show-sql: true 위험! 깃 허브를 통해 소스코드를 관리하는 등 버전 관리 로그를 통해 소스코드가 유출되면 데이터 베이스가 직접 공격 받을 수 있다 위험! 데이터 베이스 관리자 이외에도 버전 관리에 동참하는 모든 사람은 권한과 관계없이 데이터 베이스 .. 2022. 12. 2.
Static 장점 제대로 살리기(feat. 프로그래밍 패러다임은 어우러져야 한다) 그동안 메모리를 차지한다는 이유로 Static 키워드를 활용하는 것을 두려워 했었습니다 하지만 필요한 경우에 Static을 사용하지 않는다면 오히려 비효율이 발생한다는 것을 알게 되면서, 그동안 Static의 장점을 살리지 못했다는 반성을 하게 되었습니다 때문에, 이번 기회에 Static에 대해 정리해 보고자 합니다 목차 Static 장단점 및 특징 언제 사용할까? 프로그래밍 패러다임은 어우러져야 한다 Static의 장단점 및 특징 Static의 특징 Static 은 JVM이 시작될때 메모리에 올라가 프로그램이 종료될 때까지 사라지지 않는다 인스턴스를 생성하지 않아도 클래스의 메서드와 필드에 접근을 가능하게 한다 모든 인스턴스에서 공유된다 Static의 장점 반복적으로 생성자를 호출할 필요가 없어 매번 .. 2022. 11. 22.
생산성 향상을 위한 나만의 개발 프로세스 만들어보기 요구사항 추적 큰 맥락의 필요 기능과 예외상황을 기술한 기능 목록을 작성한다 이때, 놓치기 쉬운 요구사항들은 주의 사항 리스트로 별도로 만들어둔다 기능 목록에서 객체를 도출하고 도출한 객체를 가장 작은 개념까지 최대한 쪼개본다 ex) Lottos → Lotto → LottoNumber 기능 목록에서 메세지를 도출하고 도출한 메세지의 송수신 객체를 찾아본다 ex) Lottos → “로또를 생성하라” → Lotto 위를 기반으로 메세지 흐름이 보이도록 다이어그램을 그려본다 이때, 자세한 메서드 명이나 타입은 포함하지 않으며 어떤 형식의 결과를 반환할지만 명시한다 ex) List x , 다리 정보를 리스트로 반환 o 검토하며 필요한 부분에 객체나 메세지를 재배치한다, 책임 분배를 의미하는 것이다 설계로 넘어간.. 2022. 11. 22.
실전을 위한 MVC 재 정리(feat. 입력을 원하는 타입으로 가공하는 책임은 어디일까?) 판단 실수 이전 미션을 수행하며, InputView에서 사용자 입력을 원하는 타입으로 변환하는 책임을 지어줬습니다 (심지어 타입 변환시 발생하는 예외처리도 이곳에서 담당합니다..) public class InputViewImple implements InputView { @Override public List inputWinningNumbers() { try { System.out.println("당첨 번호를 입력해 주세요."); return InputUtil.convertStringSplitToList(Console.readLine()); //타입 변환 책임 }catch (Exception e){ throw new IllegalArgumentException(WINNIG_NUMBERS_INPUT_FOR.. 2022. 11. 22.