일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 코틀린 in
- Mutation testing
- 자바
- Pitest
- hugo 로 블로그
- InnoDB
- 개인블로그 hugo
- image resizer with go
- 코틀린
- JPA
- kotlin
- Test
- resize image with go
- 의존성역전원칙
- output stream
- Java
- 돌연변이 테스팅
- Convariance
- ruby
- standard input
- MySQL
- 객체지향
- 공짜블로그
- 코틀린 노트북
- IntelliJ
- 코틀린 out
- change refresh rate
- standard output
- cli 만들기
- resizer 구현
- Today
- Total
목록Java (19)
Rlog
운영 서버에서는 Batch Schema 를 always 나 Embedded 로 설정하지 않을때가 많다. 어떤 배치가 실행됬고, 얼마나 Rollback 됬는지 이런것들을 파악하기 위해서는 정보가 남아있어야 하기 때문이다. 오늘은 간단하게 Batch 정보를 만드는 실습을 해보려고 한다. spring.batch.initialize-schema: never 요 위에 처럼 설정해주자. 수동 설정의 경우 Schema 를 찾아서 업데이트 해주어야 한다. Schema 파일의 경우 Spring-batch-core 부분에 위치하고 있다. 일단 External-Library 에서 위와 같은 디렉토리를 찾자. 아래로 쭈욱 내려보면 아래 사진과 같은 schema DDL 을 기록해둔 파일들이 보인다. 이제 자신에 벤더사에 맞는 ..
내가 부트캠프를 하던 시절 과제로 코드를 작성하는데 몇 가지 조건을 제한해둔 과제를 받은 적이 있다. 제한해둔 조건은 대략적으로 아래와 같았다. (기억이라 틀릴 수 있음) 1. 절대로 인덴트 depth 가 3 이상이 되지 않도록 하시오. 2. 중복코드를 최대한 없도록 하시오. 3. 하나의 함수가 80줄을 넘지 않도록 하시오. 그 당시에는 "이것이 가능한가?" 라는 물음이 있었다. 근데 또 하다보니 어찌어찌 되긴됬다. 근데 이 중 for 문 부분에서 3뎁스에 도달해서 떨어질꺼란 생각을 했던 기억이 난다. 여튼 그 당시에는 잘 몰랐지만, 이 내용이 객체지향 체조에 들어있던 내용이였다. 그래서 오늘은 객체지향 체조를 정리해보려고 한다. 객체지향 체조 1. 메소드 당 indent depth 는 하나로 제한한다...
대부분의 책에서 객체지향은 역할, 책임, 협력이 중요하다고 한다. 도대체 역할, 책임, 협력은 정확히 객체세계에서 어떤 부분을 이루고 있을까? 한번 알아보자. 협력 객체지향 시스템은 자율적인 객체들이 공동체를 이루고 있는 것을 말한다. 객체지향 세계에서 협력이란 기능을 구현할 수 있는 유일한 방법이다. 두 객체사이의 협력은 하나의 객체가 다른 객체에게 도움을 요청할 때 사용한다. 백문이 불여일타라고 코드로 한번 보는 것이 빠를 것 이다. Lotto Class 는 자신의 IntArray 를 랜덤 숫자로 채우기 위해서 randomLottoNumberGenerator 에 협력을 요청하고 있다. 그림으로 그리면 아래와 같을 것이다. Lotto Class 는 LottoNumeberGenerator 의 genera..
이 문서는 Hibernate ORM 공식문서를 읽으며 정리한 글입니다. Hibernate.Session 과 EntityManager 의 API 는 데이터를 지속성있게 다룰 수 있도록 해주는데 이를 Persistence Context 라 한다. Persistence Context 에서 관리되는 데이터는 기본적으로 database 와 persistence context 양쪽에서 연관된 상태로 관리된다. Persistence data 는 아래와 같은 생명주기를 가진다. LifeCycle 비영속 (transient) : 엔티티가 만들어졌지만 아직까지 Persistence Context 와 연관이 없는 상태를 뜻합니다. 위와 같이 Memer Entity 는 초기화가 됬지만, 아직 영속성 컨텍스트에 관리되지 않고있..
스트림 처리 스트림이란? 한번에 한개씩 만들어지는 연속적인 데이터 항목들의 모임이다. 프로그램은 입력 스트림에서 데이터를 한개씩 읽어 들이며 마찬가지로 출력 스트림으로 데이터를 한개씩 기록한다. 즉 어떤 프로그램의 출력스트림은 입력스트림이 될 수 있다. 유닉스와 리눅스의 많은 프로그램은 표준입력에서 데이터를 읽은 뒤에, 데이터를 처리하고 결과를 표준 출력으로 기록한다. 예를 들면 아래와 같다. cat file file2 | tr "[A-Z] "[a-z]" | sort | tail -3 위의 예제는 파일의 단어를 소문자로 바꾼 다음에 사전순으로 단어를 정렬했을 때 가장 마지막에 위치한 세 단어를 출력하는 프로그램이다. 해당 명령어가 실행되는 과정은 아래와 같다. 각각의 명령어는 자신의 임무를 수행하고 출력..
프로젝트를 AWS 에 올리게 되면서 Jenkins 메모리 부족관련 이슈를 겪었습니다. AWS 프리티어를 이용하다보니, 메모리 부족 관련 이슈가 계속해서 발생했습니다. 요금제 때문에 더 높은 인스턴스를 이용할 수 없었고, 결과적으로 메모리를 늘려주기 위해 SWAP 메모리를 사용해야만 했습니다. SWAP 메모리? 간단하게 SWAP 메모리는 우리의 물리 하드디스크를 메모리 처럼 이용해줄 수 있게 만들어주는 것입니다. 쉽게 설명하면 하드디스크를 어느정도 메모리 처럼 사용할 수 있다는 것이죠 아마존 공식문서는 아래와 같습니다. https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-memory-swap-file/ 스왑 파일을 사용하여 Amazon EC2 인스..
객체지향 프로그래밍에서는 클래스 내부 변수를 private 으로 선언하여 외부에 노출하지 않는 것을 선호합니다. 또한 무의미한 setter 와 getter 는 객체를 객체가 아닌 단순한 데이터 Sturucture 로 간주해 버릴 수도 있으니, 신중하게 외부로 내부의 속성을 노출하라고 말합니다. 그 이유는 무엇일까요? 아래의 클래스를 한번 봅시다. public class Point { public double x; public double y; } 이렇게 했을때 문제는 무엇일까요? 문제는 외부에서 Point Class 의 Property 에 직접적으로 붙을 수 있다는 것입니다. 예를 들면 아래와 같이 말이죠. Point point = new Point(); point.x = 10; point.y = 20;..
Switch 문을 어떻게 걷어낼 수 있을까? 이건 참 어려운 경우라고 생각한다. 하지만 Switch 의 경우에는 해당 Type 을 걷어내지 않는 이상 불가능하기에 숨기는 형태로 진행할 수 있다고 생각한다. 예를 들면 아래와 같은 코드를 보자 public class PayRoll { private static final String COMISSIONED = "COMISSIONED"; private static final String HOURLY = "HOURLY"; private static final String SALARIED = "SALARIED"; public Money calculatePay(Employee e) { switch(e.type) { case COMISSIONED: return cal..