Ecilpes에서 여태 잘만 사용하던 gradel에서 갑자기 에러가 떴다. 공공 API를 사용하기 위해 webcilent를 활용하려고 webflux 디펜던시를 추가한 후 gradle refresh를 했는데 갑자기 날 반기는 시뻘건 에러로그 때문에 뇌정지가 오면서 폭풍 구글링에 들어갔는데... 아니 난 건드린데 코드 한 줄 추가한 거밖에 없는데??? 정말 거짓 하나 없이 지금까지는 문제가 없던 녀석이 갑자기 피를 토하면서 노트북도 버벅이게 만드니까 멘붕이 왔다. 어찌저찌 잘 해결은 했으니 삽질로그를 작성해보고자 한다. 문제 - Unsupported class file major version 61 에러 현재 개발 중인 환경은 다음과 같다 spring boot 2.6.4 jdk 17 gradle 7.2 에러..
간단한 게시판을 만드는 미니프로젝트 중 한글명으로 된 파일을 업로드하고나면 SELECT를 할 때 파일을 불러오지 못하는 에러가 있었다. 생각으로는 우리가 주소창에서 종종 보는 것처럼 %2Fmanage%2Fposts%2F (예시, 현재 글쓰기 창 주소에서 가져왔다. 저런 식이라는 거지 저렇게 만든다는 소리가 아님!!) 이런 식으로 암호화 시켜서 저장하면 되지 않을까 싶은데 하는 방법을 모르니 구글의 힘을 빌려보았다. https://mkil.tistory.com/273 [Spring] 스프링 파일업로드/ file upload/ 파일업로드 한글깨짐 기본적인 Controller와 jsp 경로 호출 등 셋팅은 되어있다는 가정하에 시작한다. (필자는 STS를 사용 > http://mkil.tistory.com/26..
기본적으로 JAVA는 camelCase를 사용하고 MySQL에서는 Snake_case를 권장한다고 한다. Spring boot 공부를 하면서 camelCase와 Snake_case 중 어떤걸 사용해야할 지 몰라서 왔다갔다 제멋대로 사용하고 있었는데 두 표현방식을 적절한 위치에 적절하게 사용해야한다고 한다!!! 로마에선 로마법을 따라야하듯이 말이다. 그럼 둘 사이를 어떻게 왔다갔다 하느냐.. 역시나 방법은 존재한다! 오늘은 Snake_case to camelCase로 형식 변환을 하는 방법을 알아보자. 클라이언트 서버 (Jackson) 클라이언트에서는 snake_case를, 서버에서는 camelCase를 사용하므로 클라이언트 측에서 파라미터를 받아올 때 이걸 camelCase로 바꿔주어야 Dto가 해당 파..
https://www.sqlstyle.guide/#tables SQL style guide by Simon Holywell A consistent code style guide for SQL to ensure legible and maintainable projects www.sqlstyle.guide MySQL을 공부하면서 이름을 쓰는 데에도 일정한 규칙이 있다는 걸 알게되었는데, 그 규칙이 헷갈려서 정리해보려고 한다. 찾아보니 각 회사마다 사용하는 규칙이 따로 존재한다고 하니 이 저자의 글이 절대적이지 않다는 점을 숙지하고 참고만 하자! 공통 Snake_case를 사용한다. 문자로 시작해야하고, _(underscore)로 끝나면 안된다 _(underscore)를 연속으로 여러개 쓰지 말 것 이름에 공..
http://www.tcpschool.com/mysql/mysql_index_create 코딩교육 티씨피스쿨 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등 tcpschool.com INDEX 인덱스란? MySQL에서 SELECT를 하면 가장 처음 데이터부터 마지막 데이터까지 순차적으로 검색을 한다. 데이터가 적은 테이블에서는 문제없이 빠른 속도로 검색이 되지만 데이터가 매우 많은 테이블에서 SELECT를 한다면... 데이터를 일일히 검색하려면 시간이 꽤 많이 걸릴 것이다. 이 말인 즉슨, 성능저하가 필연적으로 일어난다는 말이다. 데이터가 많은 테이블에서 유용하게 사용되는 녀석이 바로 인덱스이다. 인덱스는 마치 책에서의 목차와 같은 역할을 수행해 어떻게 사용하느..
http://www.tcpschool.com/mysql/mysql_multipleTable_join 코딩교육 티씨피스쿨 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등 www.tcpschool.com 다중 테이블 연산 다중 테이블 연산이란 말그대로 여러 개의 테이블을 연산하는 것이다. 두 개의 테이블에 연산을 하려면 테이블1 -> 연산, 테이블2 -> 연산 총 두번의 과정을 거쳐야하지만 다중 테이블 연산을 통해 한번에 여러개의 테이블을 가져올 수 있다. MySQL에서 제공하는 다중 테이블 연산문은 다음과 같다. JOIN UNION 서브쿼리 JOIN JOIN은 여러 개의 테이블에서 가져온 데이터들을 하나의 테이블이나 결과의 집합으로 표현해준다. 보통 SELECT문..
http://www.tcpschool.com/mysql/mysql_constraint_notNull 코딩교육 티씨피스쿨 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등 tcpschool.com 제약 조건 테이블을 생성할 때 NOT NULL이라거나 PRIMARY KEY 같은 제약조건을 달아줬던게 기억이 난다. 이렇게 제약조건을 거는 이유는 데이터의 무결성을 지키기 위해서라고 한다. 앞서 기본 문법에서 스터디했듯이 CREATE문으로 테이블을 생성할 때나, ALTER문으로 필드를 추가할 때 설정할 수 있다. MySQL에서 사용할 수 잇는 제약 조건은 다음과 같다. NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY DEFAULT NOT NULL 컬..
http://www.tcpschool.com/mysql/mysql_operator_arithmetic 코딩교육 티씨피스쿨 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등 tcpschool.com 연산자 연산자의 우선순위 수식 안에서 여러 연산자를 사용할 때, 어느 연산자 먼저 처리되느냐를 정리한 표이다. TCPSchool에서도 외우지 말고 필요할 때 참조하라고 하니 나중을 위해 정리해두겠다 우선순위 연산자 1 INTERVAL 2 BINARY, COLLATE 3 ! 4 - (단항 연산자), ~ (비트 연산자) 5 ^ 6 *, /, DIV, %, MOD 7 - (이항 연산자), + 8 9 & 10 | 11 = (관계 연산자), , >=, >, 202203012009..
http://www.tcpschool.com/mysql/mysql_datatype_numeric 코딩교육 티씨피스쿨 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등 tcpschool.com 지난 기본 문법 포스팅을 하면서 테이블을 생성할 때 컬럼명과 함께 컬럼별로 타입도 함께 명시해주었다. 이번에는 그 타입을 정리해보자! MySQL에서 제공하는 기본타입에는 3가지가 있다. 숫자 타입 문자열 타입 날짜와 시간타입 숫자타입 타입 정의 범위 UNSIGNED 사용가능 여부 TINYINT(n) 정수형 데이터 타입 - 1 Byte(2^8) - 128 ~ + 127 또는 0 ~ 255 수 표현 가능 - 1Byte(2^8) - 128 ~ + 127 또는 0 ~ 255 수 표현..
http://www.tcpschool.com/mysql/mysql_basic_update 코딩교육 티씨피스쿨 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등 tcpschool.com WHERE MySQL의 조건문 여러가지 문법을 수행할 때 특정한 조건을 주는 역할을 한다. 하나의 조건을 사용할 때에는 WHERE 컬럼명 = 조건 과 같이 사용하면 되고 AND, OR, NOT, LIKE 등등이 있는데, 더 자세한 문법은 연산자 파트에서 하기로 하고 우선 단순하게 사용하기로 한다. UPDATE UPDATE문을 이용해서 조건에 맞는 데이터를 수정할 수 있다. UPDATE 테이블명 SET 컬럼명1 = 데이터값1, 컬럼명2 = 데이터값2, ... WHERE 컬럼명 = 데이..