-
log.info(" Nice Developer ");
🏴New Posting
-
[JAVA] JAVA 8 버전(1.8.0)에 대하여
# JAVA 버전 관련 간단 상식 Q. JAVA 8 과 JAVA 1.8.0은 서로 다른 버전을 뜻하는 명칭이다? => 정답은 X 이다. 같은 말이며, 필자는 JAVA 8이라고 명칭을 사용하는 것을 추천하고 실제 많은 레퍼런스에서도 JAVA 8로 표기하고 있다. Q. LTS(Long Term Support) 버전이란? => Oracle에서 계속 유지보수 및 관리 해주는 버전으로, JAVA 8/11/17버전이 LTS버전에 해당한다. (LTS의 반댓말 = non-LTS) # JAVA 8의 주요 기능 소개 1. Lambda(람다) Lambda는 함수를 하나의 표현식으로 나타낸것을 의미한다. 또다른 이름으로 "익명 함수"라고도 부른다. List numList = Arrays.asList(0, 1, 2); // 1..
2023.06.16
-
[JAVA] JVM의 깊은 개념 및 구조
# JVM이란? Java Virtual Machine의 줄임말로 '자바(Java) 언어 실행용 가상 머신'이다. 기본적으로 컴퓨터의 CPU는 Java 소스코드로 작성된 파일(= *.java)을 인식하지 못한다. CPU가 인식하려면 기계어로 컴파일(=번역?) 해줘야 하는데 Java 언어의 특징 중 하나인 'Java는 OS에 종속적이지 않다'는 점을 실현시켜 주는 역할이 바로 JVM이다. 즉, Java소스 파일( *.java ) 작성 -> JVM에서 Java파일 컴파일( *.java -> *.class) -> 어느 OS든 JVM 위에서 컴파일된 *.clss파일 실행 가능 *Java compiler => *.java파일을 *.class라는 Java bytecode로 변환해 준다는 뜻이다. => JDK를 설치하..
2023.06.09
-
Code-Refactoring(코드-리펙토링)
# 리펙토링이란? '결과의 변경 및 변화 없이 코드의 구조를 재정비'를 뜻한다. 즉, 현재코드의 동작은 유지하되 가독성을 향상하고, 확장성을 향상하게 소스 코드를 재수정하는 것이다.(버그 제거 또는 새 기능 추가와는 별개이다.) # 리펙토링 필요 시기 기능 추가 전 버그 수정 전 코드 리뷰시 3번의 중복 행위가 발생하는 로직 존재 시(삼진 규칙) CleanCode vs Code-Reafctoring 클린 코드 - 프로젝트 진행 시 코딩하는 과정에 있어 규칙을 잘 지킨 코드 작성을 의미 - 설계부터 잘 이루어져 있는 것이 중요 리펙토링 - 더 넓은 의미로 클린 코드를 포함한 유지보수를 위한 전체적인 프로젝트 구성 및 코드 개선을 의미 - 결과물이 나온 이후 수정 및 추가 작업 진행시 개선해 나가는 것이 옳..
2023.04.11
-
[Spring Boot] A problem occurred configuring root project 에러 해결
A problem occurred configuring root project 에러 해결하기 https://start.spring.io/ 를 통해 Spring Boot 프로젝트를 생성했다.(필자는 intellij 무료 버전 사용) 나는 java 11을 사용하고, Spring Boot버전을 3.0.4 버전으로 택했다. SNAPSHOT, M1은 체험판 및 개발 중인 버전이라고 알고 있어서 아무것도 붙지 않으면서 제일 최신 버전인 3.0.4를 택했다. 프로젝트 생성 후 intellij에서 실행을 했더니 에러메시지와 함께 실행되지 않았다. 한 시간 정도를 헤매다 Spring Boot 3.0 버전부터는 Java 17 이상부터 사용 가능 하다는 게시글을 찾아냈다. 그래서 2.0 버전 대인 2.7.9 버전으로 재설정..
2023.03.13
-
[Spring Boot] MyBatis 문법- #{} , ${} 사용법
>>학습 목표 mapper 쿼리문 작성시 파라미터 값을 받아오려면 ${}와 #{} 문법을 사용해야 한다. 이 둘은 사용 용도부터 주의점까지 비슷한 것 같지만 엄염히 다르다고 할 수 있다. #{} 사용법 SELECT * FROM tbl_user1 WHERE id = #{id} MyBatis에서 위와 같은 #{}이 사용된 쿼리문이 실행되면 아래와 같이 쿼리문에 ?가 생기며 파싱된다. SELECT * FROM tbl_user WHERE id = ? #{}의 경우 위의 ? 위치에 파라미터가 바인딩 되어 쿼리문이 실행된다. 변수에 작은 따옴표(' ')가 자동으로 붙어 쿼리가 수행(id = 'kwan')되기 때문에 아래와 같은 방식은 문법에러(SQLSyntaxErrorException)을 발생 시킨다. (${} 사..
2023.03.10
-
@RequestBody로 JSON 데이터 받기(Spring Boot)
# ajax -> Controller 기존 관리자 페이지에 존재하던 페이지 중 사실상 전혀 사용하지 않아 기능마저 에러 발생으로 인해 사용하지 못하던 페이지가 있었다. 이번에 이 페이지를 리뉴얼하며 앞으로 사용하기로 결정되어 내가 기능 구현을 맡게 되었다. 기존 소스 코드를 활용하여 페이지 재구현하던 중 에러를 마주하게 되었다. 405 POST 에러와 함께 'data is not defined'라며 데이터를 찾을 수 없다는 에러 메시지 등장 Controller로 데이터를 못 보내니 역시 터미널창에 아무것도 찍히지 않는다. 에러 해결을 위해 구글링 하던 중 ajax를 통해 json 데이터를 보내려면 data : JSON.stringify(보낼 데이터), contentType : "application/js..
2023.03.10
-
[JavaScript] 변수 파해치기( var, let, const )
기존 JavaScript는 var 변수로만 변수 선언이 가능하였다. 그러다 let, const 변수가 등장하였는데 두 변수의 등장 이유에 대해 잘 파악해보자. # var 변수 문제점 1. var 변수 중복 선언 가능 var name = 'kwan'; var name = 'lee'; console.log(name); //lee 2. 변수 선언하기도 전에 참조 가능(변수 호이스팅) console.log(name); //undefined var name = 'kwan'; console.log(name); //kwan 3. var 변수 function-level-scope(=함수 유효범위) var a = 1 if (true) { var a = 5 } console.log(a) // 5 # let/const 가 ..
2022.12.16
-
[CS] Stack&Heap 메모리에 대하여
# 메모리 구조 프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드(load)되어야 한다. 또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요하다. >>프로그램이 운영체제로부터 할당받는 대표적인 4가지 메모리 공간 코드(code) 영역 데이터(data) 영역 스택(stack) 영역 힙(heap) 영역 *코드 영역(텍스트 영역) - 실행할 프로그램의 코드가 저장되는 영역이다. - CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리해준다. - 프로그램이 시작하고 종료될 때까지 메모리에 계속 남아있는다. *데이터 영역(정적메모리) - 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역이다. - 프로그램 시작과 동시에 메모리를 할당받게 되고, 프로그램이 종료되면 소멸된다 *스택..
2022.12.16
-
자주 쓰이는 Markdown 단축키 모음
Markdown 단축키 모음 #헤더 # This is a H1 ## This is a H2 ### This is a H3 #### This is a H4 ##### This is a H5 ###### This is a H6 #코드 블럭
2022.12.13
-
[jQuery] 주요 메소드 정리
#jQuery 주요 함수(method) 정리 .add() 요소 추가 선택 // $('선택 요소').add('추가 선택 요소'); $('div').add('sample').css('color','red'); .addClass() 선택한 요소에 클래스 값 추가 // $('선택 요소').addClass('선택 클래스' or '다중 클래스 선택'); $('div').addClass('sample'); $('div').addClass('sample1 sample2 sample3'); //띄어쓰기로 클래스 구분 .removeClass() 파라미터로 받은 클래스 요소 전부 제거 // $('선택 요소').removeClass('선택 클래스' or '다중 클래스 선택'); $('div').removeClass('samp..
2022.12.12
-
[JavaScript] Selector 메소드 종류
[JavaScript] Selector(=선택자) 메소드 정리 .getElementById() => () 안에 해당되는 단일 id의 요소에 접근하는 메서드이다. .getElementByClass() => () 안에 해당되는 class의 요소에 모두 접근하는 메서드이다. .getElementByName() => () 안에 해당되는 name의 요소에 모두 접근하는 메서드이다. .querySelector() => Css 선택자로 단수개의 값만을 가져오고 여러개가 있다면 처음 하나만 가져온다. 한번에 여러개를 선택하고 싶다면 .querySelectorAll() 을 사용한다. Hello World Hello World Hello World Hello World Hello World Hello World Hello..
2022.12.12
-
[Linux] not a regular file 에러
Local OS: Window 10 pro Guest Os: Rocky Linux 8 putty Window에서 Linux로 파일을 업로드 하려는데 'not a regular file'이라는 메시지가 뜨며 파일이 안보내진다. 혹시나 전송할 폴더의 공유 권한을 까먹었나 싶어 확인해보니 공유 권한은 잘 설정되있었다. 'not a regular file'로 구글링을 해본 결과 '-r' 조건을 넣어주면 해결이 된다는 걸 찾아냈다. >> '-r'이란? 여러 파일을 포함하고 있는 디렉터리를 원격지로 보낼때 사용하는 scp 명령어 test.txt와 같이 딱 하나의 파일만 보낼 것이라면 -r 옵션 생략이 가능하지만, 배포를 하거나 대량 수정을 하게 되어 한번에 많은 파일을 보내야 하는 경우 -r 옵션을 써주지 않으면 ..
2022.11.10
-
[Linux] MySQL/MariaDB 계정 생성 및 권한 부여하기
1. 테스트 할 데이터베이스 생성하기 1) 현재 존재하는 데이터베이스들 조회하기 mysql> show databases; 2) 테스트에 사용할 데이터베이스 생성하기 -- mysql> create database [데이터베이스명]; mysql> create database testdb; 2. 테스트 할 사용자 계정 생성하기 1) 현재 등록되어 있는 사용자 계정 전체 조회하기 mysql> SELECT User, Host FROM mysql.user; 2) 사용자 계정 생성하기 mysql> CREATE USER '사용자 ID'@'%' IDENTIFIED BY '패스워드'; 예시) mysql> CREATE USER 'testuser'@'%' IDENTIFIED BY 'testpwd'; 명령어 중간에 들어 있는 ..
2022.11.08
-
[Linux] Rocky linux 8에서 MariaDB 설치 및 실행하기
📌MariaDB Install 가상 환경: Rocky linux 8 로컬 환경: Window 10 pro 필자는 root 경로에서 진행했기에 sudo 입력은 생략하였다. 1) Rocky linux 최신 업데이트 dnf upgrade --refresh -y** 2) MySQL 설치 명령문 dnf install mariadb-server mariadb 3) 추가 기능 설치 명령어 sudo dnf install mariadb-backup mariadb-devel -y 4) MySQL 실행 관련 명령문 모음 *실행 명령문 $ systemctl start mysql *실행 중지 명령문 $ systemctl stop mysql *재실행 명령문 $ systemctl restart mysql *시스템 부팅 시 MySQ..
2022.11.07
-
[CentOS/Rocky linux] 방화벽 설정 및 특정 포트 방화벽 열기
필자는 CentOS 8을 사용하는데 CentOS 7부터 방화벽을 관리하는 데몬 역할인 firewalld가 제공되어 쉽게 설정 가능(CentOS 6까지는 iptables 서비스를 재시작 해서 방화벽 규칙 설정함) >>Linux OS 버전 확인 명령문 cat /etc/*release* 1. firewlld 설치해주기 yum install firewalld systemctl start firewald systemctl enable firewalld 2. 포트(Port) 추가하기(두 가지 방법) 지정한 포트 추가하기 firewall-cmd --permanent --zone=public --add-port=[포트번호]/[프로토콜] 예시) firewall-cmd --permanent --zone=public --a..
2022.11.07
-
[CentOS 8] Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist 해결법
*에러 원인 Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist는 CentOS 8 EOS로 인해 CentOS 8 Mirror site가 Mirror site를 못 찾아 발생되는 문제였다. CentOS 8 은 21년 12월 31일 부로 EOS 되었습니다. 지속적인 사용을 위해서는 CentOS 8 Stream으로 배포판 변경을 해야지 지속적인 지원을 받을 수 있다. *해결 방법 1. 아래 명령어를 사용하여 기존 Mirror site를 Vault로 전화하여 dnf를 사용해보자. [root@localhost ~]# sed -i 's/mirrorlist/#mir..
2022.11.04
-
Maven과 Gradle에 대하여
Java언어 사용자라면 많이 접하는 용어인 Maven과 Gradle에 대해 알아보자 >>Maven과 Gradle에 대해 알아보기 전 알아야 할 사전 자식 *컴파일(Compile) -컴퓨터가 이해할 수 있는 기계어로 변환하는 작업이다. 이러한 작업을 해주는 프로그램을 컴파일러라고 한다. *빌드(Build) -소스코드 파일을 실행 가능한 소프트웨어 산출물로 만드는 일련의 과정을 뜻하는데 컴파일은 그중 하나의 과정으로 빌드의 일부분이라 할 수 있다. -빌드의 기능은 전처리, 컴파일, 패키징, 테스팅, 배포가 있다. -빌드를 하기 위해선 Build Tool이 필요한데 Maven, Gradle, Ant 등이 있다. Maven이란? Aphache Maven은 java용 프로젝트 관리 도구(Build Tool)이다...
2022.11.03
-
[Linux] putty를 이용한 LocalOS와 GuestOS 파일 공유하기
LocalOS: Window 10 pro HostOS: Rocky linux 8 응용 프로그램: putty 1.putty 다운로드 Download PuTTY: latest release (0.78) This page contains download links for the latest released version of PuTTY. Currently this is 0.78, released on 2022-10-29. When new releases come out, this page will update to contain the latest, so this is a good page to bookmark or link to. Alternativel www.chiark.greenend.org.uk 2. ..
2022.11.03
-
네트워크(Network)에 대하여
네트워크란? 두대 이상의 컴퓨터들이 통신 기술을 이용하여 그물망처럼 연결된 통신 이용 형태를 의미한다. (Net+Work의 합성어) 일상에서 찾아본 네트워크 사용 예시 -미디어 스트리밍으로 언제 어디서든 사진, 음악 또는 비디오 등의 디지털 미디어를 네트워크를 통해 재생 -광대역 인터넷 연결을 공유하여 각 PC 마다 별도의 인터넷 계정하지 않고 인터넷 사용 -온라인 게임 안에서 사람들과 만나 함께 게임 플레이 -사무 공간에서 하나의 프린터기를 구입하여 네트워크 범위 속 모든 직원들 공용 사용 -유선에서 무선으로 바뀌며 책상에서 벗어나 무선 네트워크 범위 안 어디서든 웹작업 네트워크 사용시 주의 사항 -바이러스나 악성코드, 해킹, 개인정보 유출 등의 위험에 항시 주의 해야한다. 네트워크의 종류 *PAN (..
2022.10.29
-
VScode와 gitlab 연동 에러
문제 VScode에 gitlab에 있는 팀 Repo를 pull 해오기 위해서 Clone 하려던 중 연동 에러 발생 원인 및 해결방법 Please make sure you have the correct access rights and the repository exists. -터미널을 켜서 $ ssh-keygen -t rsa -C “본인 Gitlab 계정 email”를 쳐서 SSH key 생성 완료 -SSH 폴더에 있는 id_rsa.pub 파일을 메모장으로 열어서 gitlab SSH key 입력창에 복붙하면 끝. 참조했던 블로그나 자료 git permission denied (publickey) : git 명령어 에러 해결방법 git permission denied (publickey). fatal: Co..
2022.10.26
📌Study
-
[JAVA] JAVA 8 버전(1.8.0)에 대하여
# JAVA 버전 관련 간단 상식 Q. JAVA 8 과 JAVA 1.8.0은 서로 다른 버전을 뜻하는 명칭이다? => 정답은 X 이다. 같은 말이며, 필자는 JAVA 8이라고 명칭을 사용하는 것을 추천하고 실제 많은 레퍼런스에서도 JAVA 8로 표기하고 있다. Q. LTS(Long Term Support) 버전이란? => Oracle에서 계속 유지보수 및 관리 해주는 버전으로, JAVA 8/11/17버전이 LTS버전에 해당한다. (LTS의 반댓말 = non-LTS) # JAVA 8의 주요 기능 소개 1. Lambda(람다) Lambda는 함수를 하나의 표현식으로 나타낸것을 의미한다. 또다른 이름으로 "익명 함수"라고도 부른다. List numList = Arrays.asList(0, 1, 2); // 1..
2023.06.16
-
[JAVA] JVM의 깊은 개념 및 구조
# JVM이란? Java Virtual Machine의 줄임말로 '자바(Java) 언어 실행용 가상 머신'이다. 기본적으로 컴퓨터의 CPU는 Java 소스코드로 작성된 파일(= *.java)을 인식하지 못한다. CPU가 인식하려면 기계어로 컴파일(=번역?) 해줘야 하는데 Java 언어의 특징 중 하나인 'Java는 OS에 종속적이지 않다'는 점을 실현시켜 주는 역할이 바로 JVM이다. 즉, Java소스 파일( *.java ) 작성 -> JVM에서 Java파일 컴파일( *.java -> *.class) -> 어느 OS든 JVM 위에서 컴파일된 *.clss파일 실행 가능 *Java compiler => *.java파일을 *.class라는 Java bytecode로 변환해 준다는 뜻이다. => JDK를 설치하..
2023.06.09
-
Code-Refactoring(코드-리펙토링)
# 리펙토링이란? '결과의 변경 및 변화 없이 코드의 구조를 재정비'를 뜻한다. 즉, 현재코드의 동작은 유지하되 가독성을 향상하고, 확장성을 향상하게 소스 코드를 재수정하는 것이다.(버그 제거 또는 새 기능 추가와는 별개이다.) # 리펙토링 필요 시기 기능 추가 전 버그 수정 전 코드 리뷰시 3번의 중복 행위가 발생하는 로직 존재 시(삼진 규칙) CleanCode vs Code-Reafctoring 클린 코드 - 프로젝트 진행 시 코딩하는 과정에 있어 규칙을 잘 지킨 코드 작성을 의미 - 설계부터 잘 이루어져 있는 것이 중요 리펙토링 - 더 넓은 의미로 클린 코드를 포함한 유지보수를 위한 전체적인 프로젝트 구성 및 코드 개선을 의미 - 결과물이 나온 이후 수정 및 추가 작업 진행시 개선해 나가는 것이 옳..
2023.04.11
-
[Spring Boot] MyBatis 문법- #{} , ${} 사용법
>>학습 목표 mapper 쿼리문 작성시 파라미터 값을 받아오려면 ${}와 #{} 문법을 사용해야 한다. 이 둘은 사용 용도부터 주의점까지 비슷한 것 같지만 엄염히 다르다고 할 수 있다. #{} 사용법 SELECT * FROM tbl_user1 WHERE id = #{id} MyBatis에서 위와 같은 #{}이 사용된 쿼리문이 실행되면 아래와 같이 쿼리문에 ?가 생기며 파싱된다. SELECT * FROM tbl_user WHERE id = ? #{}의 경우 위의 ? 위치에 파라미터가 바인딩 되어 쿼리문이 실행된다. 변수에 작은 따옴표(' ')가 자동으로 붙어 쿼리가 수행(id = 'kwan')되기 때문에 아래와 같은 방식은 문법에러(SQLSyntaxErrorException)을 발생 시킨다. (${} 사..
2023.03.10
-
[JavaScript] 변수 파해치기( var, let, const )
기존 JavaScript는 var 변수로만 변수 선언이 가능하였다. 그러다 let, const 변수가 등장하였는데 두 변수의 등장 이유에 대해 잘 파악해보자. # var 변수 문제점 1. var 변수 중복 선언 가능 var name = 'kwan'; var name = 'lee'; console.log(name); //lee 2. 변수 선언하기도 전에 참조 가능(변수 호이스팅) console.log(name); //undefined var name = 'kwan'; console.log(name); //kwan 3. var 변수 function-level-scope(=함수 유효범위) var a = 1 if (true) { var a = 5 } console.log(a) // 5 # let/const 가 ..
2022.12.16
-
[CS] Stack&Heap 메모리에 대하여
# 메모리 구조 프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드(load)되어야 한다. 또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요하다. >>프로그램이 운영체제로부터 할당받는 대표적인 4가지 메모리 공간 코드(code) 영역 데이터(data) 영역 스택(stack) 영역 힙(heap) 영역 *코드 영역(텍스트 영역) - 실행할 프로그램의 코드가 저장되는 영역이다. - CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리해준다. - 프로그램이 시작하고 종료될 때까지 메모리에 계속 남아있는다. *데이터 영역(정적메모리) - 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역이다. - 프로그램 시작과 동시에 메모리를 할당받게 되고, 프로그램이 종료되면 소멸된다 *스택..
2022.12.16
-
자주 쓰이는 Markdown 단축키 모음
Markdown 단축키 모음 #헤더 # This is a H1 ## This is a H2 ### This is a H3 #### This is a H4 ##### This is a H5 ###### This is a H6 #코드 블럭
2022.12.13
-
[jQuery] 주요 메소드 정리
#jQuery 주요 함수(method) 정리 .add() 요소 추가 선택 // $('선택 요소').add('추가 선택 요소'); $('div').add('sample').css('color','red'); .addClass() 선택한 요소에 클래스 값 추가 // $('선택 요소').addClass('선택 클래스' or '다중 클래스 선택'); $('div').addClass('sample'); $('div').addClass('sample1 sample2 sample3'); //띄어쓰기로 클래스 구분 .removeClass() 파라미터로 받은 클래스 요소 전부 제거 // $('선택 요소').removeClass('선택 클래스' or '다중 클래스 선택'); $('div').removeClass('samp..
2022.12.12
-
[JavaScript] Selector 메소드 종류
[JavaScript] Selector(=선택자) 메소드 정리 .getElementById() => () 안에 해당되는 단일 id의 요소에 접근하는 메서드이다. .getElementByClass() => () 안에 해당되는 class의 요소에 모두 접근하는 메서드이다. .getElementByName() => () 안에 해당되는 name의 요소에 모두 접근하는 메서드이다. .querySelector() => Css 선택자로 단수개의 값만을 가져오고 여러개가 있다면 처음 하나만 가져온다. 한번에 여러개를 선택하고 싶다면 .querySelectorAll() 을 사용한다. Hello World Hello World Hello World Hello World Hello World Hello World Hello..
2022.12.12
-
[Linux] MySQL/MariaDB 계정 생성 및 권한 부여하기
1. 테스트 할 데이터베이스 생성하기 1) 현재 존재하는 데이터베이스들 조회하기 mysql> show databases; 2) 테스트에 사용할 데이터베이스 생성하기 -- mysql> create database [데이터베이스명]; mysql> create database testdb; 2. 테스트 할 사용자 계정 생성하기 1) 현재 등록되어 있는 사용자 계정 전체 조회하기 mysql> SELECT User, Host FROM mysql.user; 2) 사용자 계정 생성하기 mysql> CREATE USER '사용자 ID'@'%' IDENTIFIED BY '패스워드'; 예시) mysql> CREATE USER 'testuser'@'%' IDENTIFIED BY 'testpwd'; 명령어 중간에 들어 있는 ..
2022.11.08