본문 바로가기

전체 글

(175)
[인프런x코드캠프] 훈훈한 Javascript_6日 오늘은 반복문과 js파일에서 html의 값들을 변경하는 내용을 배웠다. 기본적인 for문, while문은 java와 동일해서 넘어갔다. for-in , for-of에 대해서도 학습했다. for-in : java의 향상된 for문과 비슷 => 객체에만 사용 가능 ex) for( let key in documentObj ) {} : documentObj에 있는 key 값들이 key라는 변수에 담겨진다. for-of : 배열에만 사용 가능 ex) for( let tag of documentArr) {} : documentArr에 있는 요소들이 tag라는 변수에 담겨진다. js파일에서 getElementId, textContent, innerHTML을 통해서 html의 값들을 조작할 수 있다. getElelme..
[인프런x코드캠프] 훈훈한 Javascript_5日 오늘은 조건문, 논리연산자 그리고 스크립트 태그의 위치에 대해서 학습했다. if문 (조건문)을 활용하는 방법은 Java와 크게 다르지 않았다. 아니 똑같았다. 다만 조건문에 '==='이 사용되는 정도만 달랐다. 지금 예제로 만들고 있는 D-day Counter 입력값에 유효하지 않은 날짜가 들어왔을 때는 NaN이 출력됐다. 그래서 조건문에 isNaN() 함수를 통해서 유효한 입력값인지 아닌지 검사했다. isNaN() : NaN인지 확인하는 함수 스크립트 태그의 위치 형태로 사용하면 된다. 지금까지 head 태그 안에 script 태그를 사용했다. 문제점 기본적으로 script 태그를 만나면 html탐색을 중단하고 js 파일을 해석한다. 그러나, html 태그가 만들어지지 않은 상태에서 js 파일에 doc..
Spring에서 순수 Java코드로 의존관계 주입해보기 (OCP,DIP 문제를 어떻게 해결하지?) 원리를 모르고 기능만 사용해서 결과물 내기에만 급급했었다. 이제는 결과물을 내는 것도 중요하지만, 어떻게 작동하는지에 대해서 이해가 필요하다고 생각든다. Spring의 기능을 사용하지 않고 순수 Java코드로 DI컨테이너를 구현해봤다. 앞으로는 Spring으로 전환하여 각각의 어노테이션들이 어떤 의미를 내포하고 있는지 알아볼 계획이다. 먼저, 다형성을 활용해서 코드를 작성했다. public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository = new MemoryMemberRepository(); private final DiscountPolicy discountPolicy = new..
[인프런x코드캠프] 훈훈한 Javascript_4日 오늘은 비교연산자에 대해서 학습했다. java와 꽤 많이 달라서 흥미로웠다. js의 비교연산자는 '==' 과 '==='이 있다. '==' 은 느슨한 비교, '==='은 엄격한 비교다. '=='은 우리가 예측하기 어렵다. ex) 1 == "1" => true 0 == "0" => true 0 == [] => true "0" == [] => false '==='은 완벽하게 같아야 true를 반환한다. 겉으로 보기에는 같지만 false를 반환하는 예시가 있다. ex) const arr = [1, 2, 3] arr === [1, 2, 3] => false arr === [1, 2, 3] => false가 나오는 이유를 알기 위해서는 원시 타입(Primitive type)과, 참조 타입(Reference type..
AOP는 또 뭐에요? 처음 들어봐요 AOP라는 말을 처음들었다. 이해한 바로는 공통적인 기능과 핵심적인 기능을 분리해서 관리하기 위해 사용된다고 이해했다. AOP(Aspect Oriented Programming) 열심히 메소드들과 여러 기능들을 조합해서 코드를 짰다. 그 때, 상사가 각각의 메소드들의 걸리는 시간을 로깅해달라고 했다. 이 때 사용할 수 있는 기능이 AOP다. 엄청나게 많은 메소드들에 일일이 로깅을 찍는 코드를 작성하는 것은 여간 쉬운 일이 아니다. 그래서 로깅을 찍는 코드를 분리해서 원하는 곳(메소드)에 적용시켜 주면 일일이 메소드들에 찾아가서 찍지 않아도 로깅 기능을 사용할 수 있게 된다. 핵심은 공통적인 기능을 따로 관리한다는 점이다. 이를 통해 유지보수가 용이해지고 쉽게 관리할 수 있다. 구글링을 통해 AOP에 대해..
[인프런x코드캠프] 훈훈한 Javascript_3日 함수의 선언과 호출에 대해서 학습했다. onclick: 버튼을 누르면 동작 (ex: 함수 호출) document : 작성한 html 문서 (객체의 일종: 추후에 다룸) querySelector: html tag의 id, class를 통해서 값을 가져올 수 있음 (ex: document.querySelector('#target-year-input').value) Math.floor(소수점 내림) 함수: 표현식, 선언문 ,화살표함수 표현식 : 호이스팅으로 인해 예측하기 어려움 선언문 : 흐름대로 따라가면 됨 화살표함수 : 일반적으로 Method 안에서 많이 사용됨 앞으로 학습과정기록을 gitHub에 남기기위해 새로 Repository를 생성했다. GitHub - jootang2/JavaScript_Basic..
H2 DB File corrupted while reading record: null. Possible solution: use the recovery tool [90030-200] 90030/90030 오류 : 해결방법 예전에 사용했던 h2 db를 다시 사용하기 위해 설치부터 실행까지 처음부터 진행했다. File corrupted while reading record: null. Possible solution: use the recovery tool [90030-200] 90030/90030 에러가 발생했다. 파일이 손상되었다는 메세지다. 내 생각에는 예전에 h2 db를 사용했었는데 그 때 설정된 파일이 지금 적용하려다 보니까 에러가 난 듯 했다. 그래서 local.mv.db를 제거해줬다. C 드라이브/사용자(Users)에 local.mv.db 파일이 있을 것이다. (이름이 다를 수도 있다. 나는 local로 만들었기 때문에 local.mv.db이다.) 아무튼 ~.mv.db라는 파일이 있을텐데 삭제하고 이름만 같게 해..
null 값을 관리할 수 있는 class : Optional<T> Optional Java8부터 null 값을 깔끔하게 처리할 수 있도록 Optional 클래스가 추가됐다. Optional opt = Optional.ofNullable("자바 Optional 객체"); System.out.println(opt.get()); 참조 변수의 값이 null이 될 가능성이 있으면 Optional 객체를 생성하는 것이 편리하다. .ofNullable() 메소드를 통해 명시된 값이 null 이면 비어있는 Optional 객체 반환, null이 아니면 값을 가지는 Optional 객체를 반환한다. Method .isPresent() : 값이 null인지 여부 => 존재한다면 true, null값이라면 flase 반환 .ifPresent() : 람다식을 인자로 받아서, 값이 존재할 때..