
[JavaScript] 실시간으로 변하는 디지털시계 만들기(setInterval)
2022. 12. 10. 23:41
JavaScript
제목 그대로 시간의 변화를 실시간으로 화면에 나타내는 것을 다뤄 보겠다. 아날로그는 아니고 숫자만 변하는 단순 디지털 시계를 만들어 보겠다. 준비할 건 html, 자바스크립트 파일이고 사용할 js 함수는 new Date, padStart, setInterval이다. 00:00 우선 간단히 html 을 구성했다. clock.js 파일을 만들어 h1 태그 내부에 시간을 출력할 것이다. const clock = document.querySelector("h1#clock"); function showTime() { const date = new Date() const hour = String(date.getHours()).padStart(2, "0"); const minutes = String(date.getM..

[MySQL] SQL 문제: 즐겨찾기가 가장 많은 식당 정보 출력하기 (IN 활용)
2022. 12. 10. 20:06
DB/SQL Study
문제 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/131123 답안코드 더보기 SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES FROM REST_INFO WHERE (FOOD_TYPE, FAVORITES) IN ( SELECT FOOD_TYPE, MAX(FAVORITES) AS FAVORITES FROM REST_INFO GROUP BY FOOD_TYPE ) ORDER BY FOOD_TYPE DESC 시행착오 SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES FROM REST_INFO GROUP BY FOOD_TYPE ORDER BY FAVORITES DESC ..

[MySQL] HAVING vs WHERE
2022. 12. 10. 15:43
DB/MySQL
HAVING SELECT 이후에 조건을 적용한다. SELECT * FROM ONLINE_SALE HAVING SALES_DATE < NOW() 위 쿼리문을 해석하면, 조건 없이 모든 데이터를 가져온 뒤에 그 중에서 HAVING 조건에 맞는 것만 필터링 해 보여준다. 단, 테이블에 컬럼이 있어도 SELECT문으로 조회하지 않은 컬럼에는 HAVING을 사용할 수 없다. 보통 GROUP BY 와 함께 사용한다. https://www.mysqltutorial.org/mysql-having.aspx MySQL HAVING In this tutorial, you will learn how to use MySQL HAVING clause to specify a filter condition for groups of ..

[자바] ClassNotFoundException: Licensed to the Apache Software Foundation (ASF) under one or more
2022. 12. 6. 20:21
자바
현상 java.lang.ClassNotFoundException: # Licensed to the Apache Software Foundation (ASF) under one or more 컨트롤러에서 jsp 호출 시 위 에러 발생. 오류코드는 500. 대충 번역기 돌리면 "하나 이상의 Apache Software Foundation(ASF)에 라이센스 부여됨" 이라는 의미다. 로그를 찍어보니 컨트롤러는 정상적으로 호출되므로, jsp로 넘어가면서 어떤 문제가 발생했다고 볼 수 있다. 해결 아래 코드 처럼 maven 의존성에 provided 스코프 부분을 추가하여 해결했다. org.apache.tomcat.embed tomcat-embed-jasper provided 원인 provided가 뭔지 찾아보고자..

[JavaScript] toggle 사용법
2022. 12. 4. 22:50
JavaScript
toggle toggle(토글) 의미 더보기 토글이란 하나의 설정 값으로부터 다른 값으로 전환하는 것이다. 토글이라는 용어는 오직 두 가지 상태밖에는 없는 상황에서, 스위치를 한번 누르면 한 값이 되고, 다시 한번 누르면 다른 값으로 변하는 것을 의미한다. 토글 스위치는 두 가지 상태만을 가지고 있는 스위치이다. 예를 들어, 한번 누르면 불이 들어오고 한번 누르면 불이 나가는 스위치가 토글 스위치이다. 컴퓨터 키보드에서, Caps Lock 키도 일종의 토글 스위치인데, 왜냐하면 그 스위치를 누르는 것은 현재의 설정 값이 무엇이냐에 따라 두 가지 의미로 동작할 수 있기 때문이다. 만약 Caps Lock이 이미 설정된 상태라면, 그 키를 눌렀을 때 Caps Lock이 해제된다. 그러나, 반대로 Caps Lo..

[JPA] Cascade(영속성 전이)에 관해
2022. 11. 27. 00:01
스프링/JPA
Cascade JPA에서는 엔티티끼리 다대일, 일대일 등의 연관관계를 맺어줄 수 있다. [학생 - 학급] 테이블이 양방향 다대일 관계를 이루고 있다고 가정해보자. 만약, 학급을 만들면서 이 학급에 속하는 학생들을 만들고 싶다면 보통의 경우 아래 순서로 이루어질 것이다. 1. 학급 테이블 생성 및 값 세팅 2. 학생 테이블 생성 및 값 세팅 3. 학급 테이블의 학생 속성에 학생 객체를 리스트로 저장 4. 학급 테이블 저장 5. 학생 테이블의 학급 속성에 학급 객체를 저장 6. 학생 테이블 저장 3번 과정에 주목하자. 여기서 우리는 이미 학급 클래스에 학생 객체를 저장한 상태이다. 이것은 학생의 입장에서 자신에게 학급이 배정되었다고도 말할 수 있다. 하지만 엄밀히 따지면 학생 클래스에는 학급 객체가 저장되지..

[JavaScript] innerHTML vs innerText
2022. 11. 25. 21:55
JavaScript
innerHTML 작성한 문자열 중에 HTML 속성의 문자가 있다면, HTML 형식으로 적용된다. (태그 등) const context = document.querySelector('.hello') function mouseEnter() { context.innerHTML = "mouse is hear!"; head.style.color = 'red'; } head.addEventListener('mouseenter', mouseEnter) 위 코드에서 해당 문자 위에 마우스를 갖다 놓으면 아래와 같이 HTML 태그가 적용되어 나타난다. innerText innerHTML과 반대다. 입력한 문자열에 HTML 속성이 적용되지 않고 문자 그대로 나타난다. const context = document.quer..

[JSP] 스프링부트 + JSP 설정하기
2022. 11. 25. 14:53
자바/JSP
프로젝트 생성 스프링부트에선 jar 파일로 빌드 시 JSP를 지원하지 않는다. (1.4.2 버전부터 적용된 사항) 따라서 war 파일로 빌드하고 시작한다. 설정 dependencies { implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'javax.servlet:jstl' } dependency를 추가한다. spring: mvc: view: prefix: /WEB-INF/views/ suffix: .jsp application.yml 또는 properties 파일에 설정 추가 위 설정을 추가함으로써 컨트롤러에서 jsp파일로 이동 시 jsp파일의 기본경로를 생략할 수 있다. (WEB-INF: 고정 | views: 원하는..

[Thymeleaf] URL에 파라미터 담아 전달하기
2022. 11. 25. 14:00
스프링/Thymeleaf
이런식으로 th:href 안에 소괄호를 만들어 파라미터값을 전달할 수 있다. @GetMapping("/simpleInfo") public String simpleInfo(@RequestParam String trainerId, Model model) { return "trainer/simpleInfo"; } @RequestParam은 생략 가능하다.

[DB] User 테이블(Entity) 생성 오류
2022. 11. 19. 22:49
DB
현상 & 원인 H2 데이터베이스를 사용해서 User 엔티티를 생성했으나 위 오류 발생. 알아보니 예약어를 테이블 명으로 설정했을 때 해당 오류가 발생한다고 한다. User가 예약어라고..? 테스트 해보니 mysql 에서는 아무 문제 없이 잘 된다. H2 Database 공식문서를 보자.. 참고링크: https://www.h2database.com/html/advanced.html#keywords 있다. 예약어에 User가. 2.1.212 버전부터 생겼다고 한다. 현재 나는 2.1.214 버전을 사용중이니 예약어와 겹쳐 위 에러가 발생한 것이다. 해결 두 가지가 있다. 첫 째는 깔끔하게 테이블 이름을 바꿔주는 것 (@Table(name = "Users")) 두 번째로는 아래처럼 url에 NON_KEYWOR..

[스프링] Optional [orElse vs orElseGet]
2022. 11. 19. 19:39
스프링
orElse User user = userRepository.findByUsername(username).orElse( userRepository.save(User.builder() .username(username) .password(password) .email(email) .provider(provider) .providerId(providerId) .role(role) .build()) ); return user; Optional의 값 유무와 상관 없이 실행된다. Optional이 null이 아니라면 가져온 값 반환, null이라면 orElse로 실행된 값 반환. 즉, 위 코드에서 user 값이 있더라도 새로운 User 객체가 생성되어 저장된다. orElseGet User user = userRe..