TIL을 다시 작성하기로 했다. 예전에는 블로그가 아니라 깃허브에 올렸었는데, 관리가 귀찮기도 하고, 점점 덩치가 커져서 관리가 어려워졌다. 좀 더 깔끔하게 정리한 글을 써야한다는 압박감 때문에 업데이트하는 빈도가 점점 줄어들기도 했고... (핑계다.)어쨌든간에 블로그
여러 프로그래밍 언어들을 공부하면서, Array나 List의 인덱스가 0부터 시작하는 것은 "상식"이 되었다. 그렇지만 "왜?"라는 내용에 대한 답은 명확하게 내릴 수 없었다. 그래서 이번 기회에 알아봤다.
Github pages에 웹사이트를 배포했는데 이런 에러가 발생하면서 로컬에서 잘 되던 API 요청이 되지 않았다.웹페이지가 HTTPS를 통해 로드되었지만, 일부 리소스(이미지, 동영상, 스타일시트, 스크립트 등)를 HTTP를 통해 요청할 때 발생하는 문제를 혼합 콘텐

간단하게 만든 웹페이지를 Github pages를 통해 배포하려고 한다. 그러나 firebase 관련 설정 데이터는 로컬에서 .gitignore로 관리하고 있기 때문에 배포 시 문제가 발생한다.이를 해결하기 위해 Github actions를 사용해봤다.현재 로컬 개발

자바에서는 소수를 표현할 때 보통 double이나 float을 사용한다. 이 둘은 정밀도와 표현 범위(크기)가 다른 것으로 알고 있다. 그렇다면 평소 개발할 때 둘 중 어느 것을 사용해야 할지, 그 기준은 어떻게 할 것인지에 대해 알아보았다.float과 double은
결론부터 말하자면, 안 된다. 기본 타입의 표현식을 해당하는 참조 타입의 표현식으로 변환하는 자바의 오토박싱, 오토언박싱은 컴파일러가 컴파일 시 해당 코드를 자동으로 변환해주는 것이기 때문이다.C++ 같은 언어와 같이 연산자 오버로딩도 지원하지 않기 때문에 myInte

BigDecimal 연산 중 ArithmeticException가 발생하는 경우는 크게 3개가 있다.피제수(어떤 수를 나누는 수)가 0일 때 에러가 발생한다.RoundingMode 파라미터가 설정되지 않은 상태에서 divide(...) 연산 결과가 무한소수일 때 발생

Build System으로 IntelliJ를 사용하는 자바 프로젝트 환경에서 JUnit5, AssertJ를 설치하고 테스트 코드를 작성해봤다.처음 프로젝트를 생성할 때 빌드 시스템을 익숙하던 Gradle로 했어야 했는데, 별도로 설정을 하지 않아서 IntelliJ로 됐

오늘 튜터님께 코드 리뷰를 받았다. 다른 부분은 다 괜찮지만 굳이 뽑자면 while (true)에서 true 값 대신 플래그 변수를 사용하는게 어떻냐는 말을 들었다.나도 예전에 while (true)가 좋지 않은 코딩 스타일이라고 들은 적이 있었고, 실제로 과제의 초창
부트캠프에서 내준 과제 수행 중 제네릭 관련해서 문제를 마주했었다. 계산기에서 피연산자 파라미터 타입을 제네릭으로 선언해서 어떤 자료형의 숫자 데이터든 받을 수 있도록 하는 것이었다. 위 코드를 IDE에 작성하면 Operator '+' cannot be applied

서브쿼리를 사용하는 경우는 다음과 같다.여러 번의 연산을 수행해야 할 때조건문에 연산 결과를 사용해야 할 때조건에 Query 결과를 사용하고 싶을 때쿼리 안에 서브로 다른 쿼리가 들어간다.음식점별로 그룹화해서 평균단가를 구하는 서브쿼리를 작성한다. 해당 쿼리를 활용해

MySQL에서는 연산 중 위의 Not given과 같이 사용할 수 없는 값이 있다면 해당 값은 0으로 간주해서 계산한다. 때문에 연산에 유효하지 않은 데이터가 포함되어 의도치 않은 결과가 나올 수 있다.이 스크립트는 Not given이라는 값을 null로 대체한다. M
스프링 입문을 위한 자바 객체 지향의 원리와 이해CBD(Component Based Development) : 컴포넌트 기반 개발. 애플리케이션을 의미 있는 단위로 구분하고 그 단위를 하나씩 부품으로 개발하는 방법론이자 기법SOA(Service Oriented Arch
상수들의 집합내부적으로 final class처럼 동작한다.객체처럼 필드와 메소드를 가질 수 있다.특정 상태를 표현하는데 유용하다.final static int 보다 더 객체지향적인 방식으로 코드를 작성할 수 있다.각 ENUM 값은 인스턴스(instance)다.ENUM
배열(Array)은 같은 타입의 데이터를 연속된 메모리 공간에 저장하는 자료 구조고정 크기 (Static Size)배열을 선언할 때 크기를 정하면, 한 번 정해진 크기를 동적으로 늘리거나 줄일 수 없다.동일한 타입 (Homogeneous Elements)배열은 하나의

오류(Error)에는 컴파일 타임 오류(Compile-Time Error)와 런타임 오류(Run-Time Error) 두 가지가 있다.(여기서 말하는 Error는 후술할 Error 클래스와 이름만 같을 뿐 다른 개념이다. 헷갈리기 때문에 여기서는 에러가 아닌 오류로 지
개요 > jakarta.servlet.ServletException: Request processing failed: org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.loader.Mu
테스트 코드 작성 시 동일한 개발 환경을 구축하기 위해서 Testcontainers 환경을 구축해봤다.테스트 컨테이너는 JUnit을 지원하는 Java 라이브러리로, 도커 컨테이너 기반의 일회용 인스턴스를 제공한다. 각종 DBMS의 이미지를 이용해 내가 아는 DB 그대로
가게의 휴무일을 DB에 "SUN,MON,TUE"와 같은 리스트 형식으로 저장하려고 한다. 여러 방법들이 있지만 나는 Converter를 사용하는 방식을 적용했다. 데이터 저장 시 Enum의 ordinal대로 정렬까지 수행한다.DayOfWeekListConverter.j
프로젝트마다 테스트 코드 적용해야지 해야지 하다가 드디어 본격적으로 해보게 되었다. 항상 @DisplayName 어노테이션이 @Nested나 @Test보다 위로 오도록 설정함@DisplayName은 설명을 나타낸다.설명이 위에 와야 코드를 읽을 때 "이 테스트는 무엇을