1. Error 발생 프로젝트에서 매칭을 위해 Post 약속 장소 주변에 거주 중인 User 중 한 명을 추천해주는 쿼리를 작성했다. 코드는 다음과 같았다. User 클래스 @Getter @Entity @NoArgsConstructor @Table(name="User") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name="user_id") private int userIdx; @Column(name="Keyword_keyword_id") private Integer keywordIdx; private String name; private String role; private String email..
1. .gitignore 파일 역할 사용자가 원하지 않는 파일이나 git 버전 관리에서 제외할 파일 목록을 지정하는 파일이다. Example node_modules Java 컴파일된(.class) 파일 AWS 비밀키, Open API 인증키 2. .gitignore에 추가했지만 적용되지 않는 경우 로컬 폴더 구조의 모습이다. npm 모듈은 용량이 크기도 하고, 프로젝트를 클론 받았을때 package.json을 기준으로 npm install 해주는 것이 더 효율적이기 때문에 올리지 않는다. 따라서 node_modules을 .gitignore에 추가해주었으나, 반영되지 않았다!! 이런 경우 git의 캐시가 원인인 경우가 있다. 그래서 git에 있는 캐시파일을 지워주고 다시 add 해주면 된다. 순서는 다음과..
시험 일주일 전에 책을 사다 ㄴOㄱ 전공생이라면 SQLD나 리눅스 마스터는 금방 취득할 수 있다는 얘기를 주워듣고 따야겠다는 생각만 한채로 미루고 미루다 이번엔 진짜 보기로 결심하고 2월쯤 여니랑 같이 신청했다. 근데 2월엔 프로젝트 때문에 정신 없어서, 3월 초엔 벤처기업 아카데미 때문에 수강신청이 꼬여서 결국 휴학하는 바람에 3월 19일이 시험인데 일주일 전에 급하게 책을 구매했다. 나도 내가 지독하게 게으르다는건 알고 있지만, 일주일 전에 책을 사게 될 줄은 몰랐다. 변명해보자면 원래 책도 안사고 인터넷에 있는 기출 문제만 풀어보려고 했는데 여니가 책 사는게 좋을 것 같다고 해줘서 급하게 구매하게 됐다 ㅎㅎ 시험 공부 여니가 이 책을 구매했다고 해서 따라 샀는데 일명 "노랭이" 라고 해서 SQLD를..
JDBC로 작성했던 코드를 JPA로 변경하고 있는데 timezone 설정이 필요해서 Repository에 직접 쿼리문을 작성해주었다. @Query를 사용해서 직접 쿼리문을 작성해주었고 SQL 문법상의 오류도 없는 문장이기 때문에 코드 작성을 마치고 냅다 실행해보았다. antlr.NoViableAltException: unexcepted token: SET 에러가 발생했다. 내가 어노테이션 안에 직접 작성해주었던 쿼리문 속 SET 키워드를 인식하지 못하고 있는 것 같았다. JPA에서 직접 쿼리를 작성할 수 있는 방법은 일반 SQL로 작성 JPQL로 작성 2가지가 있다. JPQL은 JPA의 일부분으로 정의된 플랫폼 독립적인 객체지향 쿼리 언어를 의미한다. 따라서 JPA에서 일반 SQL은 데이터베이스의 관점에..
IntellJ 22.03 버전에서 메인 메소드를 실행하면 Gradle로 수행하기 위해 테스트 성능이 떨어지고, 속도가 느리다. File > Settings > Build, Execution, Deployment 탭을 선택하면 Build and run using과 Run tests using 이 Gradle(Default)로 설정되어 있기 때문이다. 따라서 위의 설정을 모두 IntelliJ IDEA로 변경해주면 속도가 빨라진다. 왜 Default는 Gradle 인가? 공식 문서에서는 아래와 같이 설명하고 있다. IntelliJ IDEA는 Gradle을 기본 실행기로 한다. 결과적으로 CI 서버에서 동일한 테스트 결과를 얻는다. 또한 명령 줄에서 실행되는 테스트는 항상 IDE에서 작동한다. 로컬 PC에서 G..
1. DHCP에 대하여 DHCP의 정의 DHCP는 Dynamic Host Configuration Protocol 즉 동적 호스트 구성 프로토콜을 의미한다. 자동으로 IP를 호스트하는 IP 주소 및 서브넷 마스크 및 기본 게이트웨이 등 기타 관련된 구성 정보를 제공한다. DHCP의 구성 1) DHCP 서버 DHCP서버는 네트워크 인터페이스를 위해 IP 주소를 갖고 있는 서버에서 실행되는 프로그램 → 일정한 범위의 IP 주소를 다른 클라이언트에게 할당해 자동으로 설정해주는 역할 → 서버는 클라이언트에게 할당된 IP 주소를 변경없이 유지해줄 수 있음 2) DHCP 클라이언트 클라이언트는 시스템이 시작하면 서버에 자신의 시스템을 위한 IP 주소를 요청 → TCP/IP 설정은 초기화 → 다른 호스트와 TCP/I..
PuTTY로 EC2 서버에 접속해서 스프링 프로젝트를 배포하는 과정을 정리할 예정이다. 1. PuTTY로 EC2 서버 접속 Host Name (or IP address)에 EC2 퍼블릭 IPv4 값을 적고, SSH 접속 방식이기 때문에 Port는 default인 22로 그대로 둔다. (퍼블릭 IPv4값은 AWS > EC2 > 인스턴스 정보 요약에서 확인 가능) 왼쪽 탭에서 SSH > Auth를 선택해서 Private key file for authentication에 EC2 생성 시 발급받았던 키페어 파일 경로를 넣어준다. EC2는 SSH를 통한 접근제어 시 보안을 위해 키페어 값을 사용한다. 완료 후 Open을 클릭한다. 2. 스프링 프로젝트 EC2에 배포하기 서버에 로그인하기 위해 아이디 값으로 ub..
1. 메일서버(SendMail)에 대하여 ① SMTP(Smiple Mail Transfer Protocol), TCP 25 메일을 주고받을 때 사용하는 프로토콜 (클라이언트 ↔ 서버) ② POP3(Post Office Protocol version 3), TCP 110 메일 서버에 수신된 메일을 클라이언트로 가져올 때 사용 (클라이언트에만 메일 저장) ③ IMAP(Internet Mail Access Protocol), TCP 143 메일 서버에 수신된 메일을 클라이언트로 가져올 때 사용 (클라이언트에만 메일 저장) 2. SENDMAIL 설치 root@seven: ~$ sudo su (비밀번호 입력) # apt-get update # apt-get upgrade # apt-get install sendm..
1. Apache 웹서버에 대하여 아파치는 세계에서 가장 많이 쓰는 웹 서버 중 하나로 HTTP 서버이며 기능적인 면에서 우수하며 구축이 쉽고, 많은 운영체제에서 운용할 수 있다는 장점이 있다. 단 아파치 자체만으로는 굉장히 무겁고 squid와 함께 *slowloris 취약점이 발견되었기 때문에 대형 서비스에서는 Nginx, IIS를 주로 사용한다. Slowloris 취약점 HTTP Header 정보를 비정상적으로 조작하여 웹서버가 온전한 Header 정보가 올 때까지 기다리도록 한다. 서버가 연결 상태를 유지할 수 있는 가용자원은 한계가 있으므로 임계치를 넘어가면 다른 정상적인 접근을 거부하게 된다. ex) HTTP에서는 헤더의 끝을 /r/n 이라는 개행문자로 구분한다. 공격자는 이 마지막 개행문자를 ..
1. Telnet에 대하여 Telnet = 인터넷을 통해 원격지의 호스트 컴퓨터에 접속할 때 사용하는 프로토콜 (Port=23) = 네트워크에 있는 컴퓨터를 자신의 컴퓨터처럼 파일 전송, 파일 생성, 디렉토리 생성 등 자유롭게 가능 Telnet의 특징 1. Telnet 세션은 암호화 및 무결성 검사 지원 X 2. 패스워드가 암호화 X → 스니핑 가능 3. Unix 시스템에서 in.telnetd 수정 → 클라이언트 터미널 종류에 대해 인증 없이 셸 부여 O Telnet SSH 원격지 PC를 액세스 하기 위한 용도로 사용 byte 스트림 형식으로 통신 암호화 통신 (DES, RSA) SSH는 암호화 통신이 이루어지는 반면, Telnet은 byte 스트림 형식으로 통신하기 때문에 보안에 취약하다. 2. Ubu..