1장. 깨끗한 코드 깨끗한 코드란? 나는 우아하고 효율적인 코드를 좋아한다. 논리가 간단해야 버그가 숨어들지 못한다. 의존성을 최대한 줄여야 유지보수가 쉬워진다. 오류는 명백한 전략에 의거해 철저히 처리한다. 성능을 최적으로 유지해야 사람들이 원칙 없는 최적화로 코드를 망치려는 유혹에 빠지지 않는다. 깨끗한 코드는 한 가지를 제대로 한다. 비야네 스트롭스트룹 / C++ 창시자이자 The C++ Programming Language 저자 철저한 오류 처리도 언급하는 이유는 세세한 사항까지 꼼꼼하게 신경쓰라는 말. 메모리 누수, 경쟁 상태(race condition), 일관성 없는 명명법 등 도 포함 즉, 깨끗한 코드는 세세한 사항까지 꼼꼼하게 처리하는 코드 깨끗한 코드는 단순하고 직접적이다. 깨끗한 코드는..
분류 전체보기
@Id / @GeneratedValue에 대해 알아보자 PK를 나타내기 위해 @Id 어노테이션을 사용하며, 생성 전략을 정의하기 위해 @GeneratedValue 를 사용한다. 해당 어노테이션에 대해서 알아보도록 하자. @Id package javax.persistence; import java.lang.annotation.Target; import java.lang.annotation.Retention; import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.RetentionPolicy.RUNTIME; ..
Learn Javascript Reduce method with 10 examples reduce 메서드는 배열의 모든 항목에 함수를 적용하고 시작점에서 반복적으로 결과를 누족한 다음 단일 값 또는 객체를 반환합니다. 시작 값을 지정할수 있으며, 지정하지 않으면 배열의 첫번째 값을 사용합니다. 합과 곱셈 ∑의 D∏ // 합 [3, 5, 4, 3, 6, 2, 3, 4].reduce((a, i) => a + i); // 초기값 없이 사용 [3, 5, 4, 3, 6, 2, 3, 4].reduce((a, i) => a + i, 5 ); [3, 5, 4, 3, 6, 2, 3, 4].reduce(function(a, i){return (a + i)}, 0 ); // 곱셈 [3, 5, 4, 3, 6, 2, 3, 4]..
1장. 데이터베이스와 SQL 1강. 데이터베이스 데이터베이스란? 데이터란 컴퓨터 안에 기록되어 있는 숫자. 데이터베이스란 넓은 의미에서는 데이터의 집합 또는 정리된 데이터. 영구적으로 보존되어야 하므로 휘발성 저장장치가 아닌 비휘발성 저장장치에 저장. 시스템 내의 데이터베이스 데이터센터 내의 서버에서 운영하는게 일반적이지만, POS기기, 휴대폰의 전화번호부도 모두 데이터베이스로 다양한 시스템에서 사용. DB? DBMS? DB란 데이터베이스(저장장치 내에 정리되어 저장된 데이터의 집합)이며, DBMS는 데이터베이스 관리 시스템(DB를 효율적으로 관리하는 S/W) DBMS가 필요한 이유 생산성 검색, 추가, 삭제, 갱신같은 처리 등 기능을 제공 기능성 복수 유저의 요청에 대응하거나 대용량 데이터를 저장하고 ..
Spring Boot Tips, Tricks and Techniques Tip 1. 테스트에서 랜덤 HTTP 포트 사용하기 스프링 부트 테스트에서 정적 포트를 사용하면 안됩니다. 특정 테스트에 대해 @SpringBootTest 에서 webEnviroment 필드를 사용합니다. 기본값은 DEFINED_PORT 로 제공하는데 이 옵션 대신 RANDOM_PORT 를 사용하세요. 그 이후에 @LocalServerPort 를 사용해 테스트에 포트 번호를 삽입할 수 있습니다. 몇 가지 Spring Boot 테스트 팁부터 시작하겠습니다. Spring Boot 테스트에서 정적 포트를 사용하면 안 됩니다. 특정 테스트에 대해 이 옵션을 설정하려면 의 webEnvironment필드 를 사용해야 합니다 @SpringBoot..
Introduction to Java Bytecode You Didn’t Know You Needed 모든 Java개발자는 언어 생태계에서 JVM 역할에 익숙합니다. 그러나 대부분 Java개발자들은 JVM의 내부동작에 대해서는 이해하지 못합니다. Java 개발자가 되기 위해 해당 지식이 반드시 필요하지 않지만, JVM을 더 잘 이해한다면 더 좋은 코드를 작성하는데 도움이 됩니다. 왜냐하면 작성하는 모든 코드들이 JVM 내부에서 진행되는 프로세스에 어떤 영향을 미치는지 알 수 있기 때문입니다. JVM의 작동 방식을 이해하기 위해 JAVA의 바이트코드가 무엇인지 이해해야 합니다. 따라서 이 글은 Java 바이트코드의 모든 내용과 프로그램을 마지막으로 실행할 때 JVM에 미치는 영향에 대해 설명하도록 하겠습니..
Vue에서 TypeScript로 Timer의 Leading Zeros를 구현해보자. Vue에서 Javascript로 타이머를 구현해야 할 일이 생기면서 Leading Zeros까지 구현해야 했습니다. 실제 타이머의 포맷은 00:00:00 과 같이 나와야 하는 상황이였습니다. 이와 관련해서 어떻게 구현했는지 간략하게 공유해보려고 합니다. 주의사항 해당 코드는 Vue2 + Composition API를 쓴다는 전제하에 작성되었습니다. 관련 코드를 제외한 나머지에 대한 코드는 작성하지 않습니다. Timer 구현 import { computed } from '@vue/composition-api'; const useTimer = () => { const timer = ref(0); const hour = com..
Immutability in Java(자바의 불변성) 불변 클래스란 한번 초기화 되면 상태를 변경할 수 없는 클래스 입니다. 즉, 불변 객체의 인스턴스를 참조하고 있다면 해당 인스턴스에 대한 변경이 일어나면 새로운 객체를 생성해 새로운 메모리 공간으로 가리키도록 참조를 변경합니다. 불변 클래스는 아래와 같은 규칙을 따라야 합니다. 클래스는 확장이 불가능 하도록 final 키워드를 붙여야 합니다. 자식 클래스를 인스턴스화를 할 수 있으므로 원하지 않은 가변적인 구현을 할 수도 있기 때문입니다. 모든 속성 필드는 캡슐화 원칙에 따라 private 이어야 합니다. 불변 클래스 인스턴스를 올바르게 생성하기 위해 클래스 상태를 초기에 세탕할 수 있도록 매개변수가 있는 생성자가 있어야 합니다. 클래스 속성 변경 가..
FileReader가 File을 찾아올때 경로가 어떻게 될까? 최근 FileReader 클래스를 사용하면 경로가 어떻게 되는지에 대한 질문이 있어 직접 테스트를 해봤다. 과연 FileReader는 어디 경로를 기준으로 가져오는걸까? FileReader fr = new FileReader(filepath); FileRader 내부 살펴보기 위의 코드에서 FileRader에서 파일을 어떻게 찾아와서 읽는지 알아보려면 내부를 살펴봐야 할것 같습니다. 실제 우리가 부르는 생성자만 살펴보면 아래와 같습니다. /** * Creates a new {@code FileReader}, given the name of the file to read, * using the platform's * {@linkplain jav..
From Java 8 to Java15 in Ten Minutes(Java8부터 Java15까지 10분안에 보기) 2020년 가을에 나온 Java15까지 각 Java8부터 Java15까지 최소한 하나의 주요 개선사항을 작성해보도록 하겠습니다. Java는 람다, 함수형인터페이스, var 를 통한 타입 추론, 간단한 생성자와 함께 불변 컬렉션, 멀티라인문자열들을 지원합니다. 또한, 데이터 클래스(record) 그리고 sealed classes 와 같은 실험적인 기능이 있습니다. 마지막으로 빠른 실험을 통해 높은 가치를 제공하는 Java REPL에 대해 이야기 하겠습니다. 함수형 프로그래밍(Functional Programming) - Java8 Java8에서는 함수형 프로그래밍과 람다가 추가되었습니다. 함수..