목록전체 글 (30)
leelee.log
김원일, 서종호의 저서 [따라하며 배우는 AWS 네트워크 입문]을 요약한다. 이 포스트에서는 1장 AWS 인프라, 2장 VPC 기초를 다룬다. Index 1장 AWS 인프라 2장 VPC 기초 1장 AWS 인프라 01. AWS 소개 1.1 클라우드 란? 인터넷을 통해 원하는 만큼의 IT 리소스를 손쉽게 사용할 수 있는 서비스를 뜻한다. AWS, Azure, GCP 등 이다. 클라우드 서비스 종류 IaaS 사업자: 서버, 네트워크, 스토리지 등 자원을 제공 사용자: 가상 서버에 필요한 프로그램을 설치하여 사용 및 운영 예시: E2C, VPC, EBS PasS 사업자: IaaS + Runtime + Middleware 제공 → 앱을 개발하기 위한 build, test, deploy 플랫폼과 환경을 제공 사용자..
2020-09-18에 작성된 How to deal with SQL exception in Spring boot 를 옮겨왔습니다. [Backend] (en) How to deal with SQL exception in Spring boot Handles SQL Exception in Spring boot: Checked exception, unchecked exception, leeleelee3264.github.io Handles SQL Exception in Spring boot: Checked exception, unchecked exception, Index Exception in Java Handle SQL Exception Reference Exception in Java A week ago, ..
Hi, I’m LeeLee. I’m a Backend developer who dreams Devops. Here is something about me. 🥇 2022 Goal Try to understand business domain. Implement code with complicated business logic. Attribute to open source projects. 🏛️ Career Kasa Singapore as Backend developer (2021.12 ~ ) Launched Kasa Singapore Service (2022-08-25) Implemented API with Django. Designed entire API in deal, offering function. ..
Effective Java 3e 아이템 86을 요약한 내용입니다. 어떤 클래스의 인스턴스를 직렬화할 수 있게 하려면 클래스 선언에 implements Serializable만 덧붙이면 된다. 직렬화를 지원하기란 짧게 보면 손쉬워 보이지만, 길게 보면 아주 값비싼 일이다. Serializable을 구현하면 릴리스한 뒤에는 수정하기 어렵다 클래스가 Serializable을 구현하면 직렬화된 바이트 스트림 인코딩(직렬화 형태)도 하나의 공개 API가 된다. 그래서 이 클래스가 널리 퍼진다면 그 직렬화 혙태도 영원히 지원해야 한다. 커스텀 직렬화 형태를 설계하지 않고 자바의 기본 방식을 사용하면 직렬화 형태는 최소 적용 당시 클래스의 내부 구현 방식에 영원히 묶여버린다. 기본 직렬화 형태에서는 클래스의 priv..
웹 페이지를 만들다보면 Resource 를 사용할 일이 정말 많아진다. 여기서 주로 사용하는 Resource는 HTML, Javascript, Css, png 등이 있다. 이 Resource를 또 동적인 리소스 (dynamic resource)와 정적인 리소스 (static Resource)로 구분을 할 수 있는데 내가 이해한 바로는 동적인 리소스는 runtime에 변화가 있는 리소스이고, 정적인 리소스는 변화가 없는 리소스이다. 예를 들어 이미지와 javascript, css와 같은 파일들은 서버에 저장되어 있을 때도, 클라이언트에게 줄 때도 변화가 없다. 그래서 변화가 없는 정적인 리소스가 된다. 이제 HTML을 한 번 생각해보자. HTML은 틀이고, HTML을 채우는 알맹이는 db에서 가져온 정보이..
Effective Java 3e item 74 메서드가 던지는 모든 예외를 문서화하라를 요약한 내용입니다. 메서드가 던지는 예외는 그 메서드를 올바로 사용하는 데 아주 중요한 정보다. 따라서 예외 하나하나를 문서화를 하는데 충분한 시간을 쏟아야 한다. 검사 예외는 항상 따로따로 선언하고, 각 예외가 발생하는 상황을 자바독의 @throws 태그를 사용하여 정확히 문서화 하자. 공통 상위 클래스 하나로 뭉뚱그려 선언하는 일은 삼가자. 극단적인 예로 메서드가 최상위 예외인 Exception과 Throwable을 던진다고 해서는 안된다. main 메서드는 JVM만이 호출하기 때문에 예외이다. 비검사 예외도 검사 예외처럼 정성껏 문서화 해두면 좋다. 비검사 예외는 일반적으로 프로그래밍 오류를 뜻하는데, 자신이 일..
Effective Java 3e 아이템 65를 요약한 내용입니다. 리플랙션(java.lang.reflect)를 이용하면 컴파일 타임에 알 수 없는 임의의 클래스까지 접근을 할 수 있다. 생성자와 메서드를 가져올 수 있으며 맴버 이름, 필드 타입도 가져올 수 있다. 가져오는 것 뿐만 아니라 생성자, 메서드, 필드를 실제로 이용할 수 있다. 예를 들어 Method.invoke()를 이용해서 블러들인 메소드를 사용할 수 있다. //ex1 TestClass testClass = new TestClass(); // TestClass 안에 testClassMethod가 있다고 가정 Class reClass = testClass.getClass(); Method[] m = reClass.getDeclaredMetho..
Effective Java 3e 아이템 64f를 요약한 내용 입니다. 적합한 인터페이스만 있다면 매개변수뿐 아니라 반환값, 변수, 필드를 전부 인터페이스 타입으로 선언하라. 객체의 실제 클래스를 사용해야 할 상황은 '오직' 생성자로 생성할 때뿐이다. // 인터페이스 타입을 사용 Set sonSet = new LinkedHashSet(); // 클래스 타입을 사용 LinkedHashSet sonSet = new LinkedHashSet(); 인터페이스를 타입으로 사용하는 습관을 길러두면 프로그램이 훨씬 유연해진다. // 인터페이스 타입 사용 해서 변경 // IBank myBank = ShinhanBank.newInstance("이승민"); // myBank.openAccount(); IBan..
intellij로 spring boot 프로젝트를 만들면 꼭 같이 만들어지는 파일이 하나 있다. 바로 application.properties라는 파일인데 처음에는 db의 url과 아이디/비밀번호를 써서 db 연결에만 사용하고 있었지만 요즘은 프로젝트에서 사용되는 전역적인 정보들을 기록해둬서 @Value 어노테이션으로 값을 빼와 코드에 사용하고는 한다. 여기서의 전역적인 정보들은 보통 1. 사용하는 api key 2. port와 context-path 3. 파일이 업로드 될 주소 가 등 이 있다. profile 과 properties의 차이를 처음에는 헷갈려 했는데 강의를 다 듣고 나니 properties는 key-value 쌍의 정보고, 그 properties가 모여있는 하나의 파일을 profile이라..
Scope라는 단어를 처음 봤을 때는 javascript에서 함수를 배우고 있었다. 사전에서 Scope라는 뜻을 찾아보면 '범위'라고 나온다. 오늘 다루는 주제는 Bean의 Scope, 즉 범위이다. Bean은 일반 자바 객체와는 조금 다른 형태의 스코프를 가지고 있다. Bean을 스프링에서 사용하는 자바 객체라고 말을 하고는 했었는데 특별한 설정을 하지 않았을 때 Bean은 singleton 형태로 만들어진다. spring을 동작 시킬 때 딱 한 번 객체가 만들어지고 계속 사용한다는 뜻이다. Spring에서 annotation을 사용하지 않는 일반 자바 객체들은 사용을 할 때 마다 생성자로 만드는 prototype 형태로 만들어지는데 알고보니 Bean또한 prototype 형태로 만들 수 있었다. 즉,..