전체 글 130

ConnectException: Connection refused : 로컬 파일에 접근할때

로컬 파일에 접근해서 apiKey 를 가져오는 코드를 짰으나 두가지 원인으로 막혔다. 1.UnknownHostException : home 이는 리눅스에 home 에 대한 정보가 등록되어 있지 않아 home으로 접속하려고 할때 어떠 ip주소로 접근해야 하는지 몰라서 발생하는 오류다. home은 로컬을 말함으로 리눅스 서버 자신의 ip주소를 등록해주면 된다. 먼저 관리자 권한으로 변경한 다음 최상위 폴더로 이동, /etc 내부에 있는 hosts 파일에 수정 권한을 부여하고, {ip 주소} {이름} 방식으로 설정해줄수 있다. 참고주소 : https://velog.io/@_koiil/%EB%A6%AC%EB%88%85%EC%8A%A4-java.net.UnknownHostException 리눅스 java.net...

카테고리 없음 2023.10.22

java.lang.NoClassDefFoundError: 외부 라이브러리

리눅스 배포시 java.lang.NoClassDefFoundError: 외부 라이브러리 에러가 발생한다. 몇시간째 구글링한 결과 크게 2가지로 나뉘는 것을 알았다. 1. 버전이 맞지 않은 경우. 나같은 경우는 gradle을 통해 외부 라이브러리를 추가했다. 만약 서로 의존하는 라이브러리간 버전이 맞지 않으면 참조할수 없어 오류가 발생할수 있다. 따라서 버전을 맞춰주면 해결됨 2. classpath 가 옳게 설정되지 않은 경우. gradle 을 통해 불러온 라이브러리는 /Users/${USERNAME}/.gradle/caches/modules-2/files-2.1/${packageName}/${libname} 에 저장된다. 따라서 소스 코드 내부에서 외부 라이브러리를 임포트해서 사용할때, 라이브러리가 직접..

스프링 레거시와 스프링 부트의 차이

스프링은 크게 스프링 레거시와 스프링 부트로 나뉜다. 스프링 레거시는 일반적인 Spring Framework 프로젝트를 말하며, 스프링 부트는 기존의 레거시에서 사용자가 직접 해줘야만 했던 많은 사전 작업들을 미리 설정해두거나, 쉽게 설정할수 있는 프로젝트다. 필자는 본래 스프링 부트로 Spring Framework를 학습했으나 이번 기회에 레거시를 사용해볼 기회가 생겨 그 차이를 정리한다. 일단 대표적인 차이는 다음과 같다. 레거시 부트 자유도 자유롭게 라이브러리 설정 가능. 대신 손이 많이 감 프로젝트 구성 단계에서 범용적인 라이브러리 선택 가능. 외부 라이브러리를 추가할시 사용자가 gradle이나 maven, 또는 직접 추가해줘야하는 작업 필요. 서버 따로 tomcat 같은 웹 어플리케이션 서버를 ..

공부/springboot 2023.10.19

JSP를 사용하면서

최근 인턴생활하고 있는 회사가 JSP, MyBatis, Spring-Legacy, Eclipse를 사용한다. 모두 사용해본적 없는 것들이기에 많은 시행착오를 겪었다. 이에 여기에 새롭게 배운 기본적인 내용들을 정리한다. JSP( Java Server Pages ) 자바 뷰 템플릿. 단독으로 웹 브라우져에 띄워 확인할수 없다. 일부 전용 태그들이 존재한다. 기본 문법 1.Directives (지시자) 속성과 값에 따라 자바 코드를 생성한다. page, taglib, include가 있으며, 주로 jsp 페이지와 관련된 속성이나 라이브러리를 임포트 하는 등의 용도로 사용된다. 2. Scriptlet Elements(스크립트릿) jsp 페이지 안에서 자바 코드를 작성할때 사용한다. 해당 코드는 서블릿 파일이 ..

공부/JSP 2023.10.19

HTTP 헤더와 캐시

HTTP 헤더 용도: HTTP 전송에 필요한 모든 부가 정보(메시지 바디 컨텐츠 타입, 바디 길이, 압축 크기 등등)를 담는다. 필요시 임의의 헤더를 추가할수 있다. 형식: header-field = field-name ":" OWS field-value OWS (OWS : 띄어쓰기 허용) field-name 은 대소문자 구분이 없기에 혼용 가능하다. 과거에는 RFC2616 버전을 사용했으나 2014년부터 RFC7230이상으로 바뀌면서 '엔티티'라는 용어 대신 '표현'(Representation)을 사용한다. 표현 = 표현 메타데이터 + 표현 데이터 메시지 본문(페이로드, 실제 데이터 단)을 통해서 표현 데이터를 전달한다. 표현 헤더는 표현 데이터를 해석할수 있는 정보를 제공한다. 참고로 표현 헤더는 표..

공부/네트워크 2023.09.07

HTTP 상태 코드

상태코드는 1XX번대, 2XX번대, 3XX번대, 4XX번대, 5XX번대로 나눠져 있다. 이중 100번대 코드는 정상작동중임을 알리는 코드이며 거의 사용하지 않는다. 주요 상태 코드는 아래오 같다. - 200번대 (정상) 그룹 코드 상수 설명 성공 응답 200 OK 요청이 정상적으로 완료됨 201 Created 요청이 성공적이었으며 그 결과로 새로운 리소스가 생성됨. 응답 HTTP메시지에 location: {리소스 생성 위치} 를 헤더에 추가한다. 202 Accepted 요청을 정상적으로 수신했으나 당장 실행할수 없음. 예) 접수 뒤 한시간뒤 프로세스가 실행되도록 설계됨 204 No Content 요청을 성공적으로 수행했으나, 응답 페이로드에 담을 데이터가 없음 -300번대 (리다이렉션 - 요청을 완료하기..

카테고리 없음 2023.09.06

HTTP 메서드

HTTP API의 종류 URI에서 중요한 것은 리소스이며, 행위(작업)는 method 로 따로 기입한다. 리소스란 조회, 수정, 삭제 등의 행위가 아닌, 그 작업의 대상이 되는 것을 말한다. GET : 리소스를 조회할때 사용 POST : 요청 데이터를 서버에서 처리. 주로 새로운 데이터를 등록할때 사용. PUT : 기존 리소스를 대체. 해당 리소스가 없다면 새롭게 생성 PATCH : 리소스 부분 변경. 주로 수정에 사용. DELETE : 리소스 삭제 이외에 기타 메서드로 HEAD, OPTIONS 등이 존재한다. 1. GET 서버에 전달하고 싶은 데이터는 query를 통해 전달한다. 최근 들어 스펙상으로 메시지 바디를 통해 전달할수 있지만, 지원하지 않는 서버가 많기에 권장하지 않는다. 2. POST 요청..

공부/네트워크 2023.09.05

URI와 HTTP의 기본

URI (Uniform Resource Identifier) URL 또는 URN을 하위 분류로 가지는 식별 개념. uniform 은 리소스를 식별하는 통일된 방식, resource 는 자원, 즉 uri로 식별할수 있는 모든 것을, identifier 은 다른 항목과 구분하는데 사용하는 고유의 정보를 의미한다. URL( Unfirom Resource Location) 리소스의 위치를 나타낸다. anchor대신 fragment 라고도 한다. Scheme : http나 https처럼 통신에 사용되는 프로토콜을 나타낸다. Authority : 호스트명이나 ip주소, 사용하는 포트를 나타낸다. 사용자 정보를 기입할수도 있으나 거의 사용하지 않는다. Path : 리소스 경로를 나타내며 계층적 구조를 가진다. Que..

공부/네트워크 2023.09.01

메크로로 코레일 예매하기

이번 추석에 본가에 내려갈 ktx표를 예매하기 위해 간단한 메크로를 만들어 봤다. // 누르고 싶은 버튼 let btn = document.getElementsByName("menu1")[0]; function printTime(date) { let hour = date.getHours(); let min = date.getMinutes(); let sec = date.getSeconds(); let milli = date.getMilliseconds(); if (("" + min).length == 1) { min = "0" + min; } if (("" + sec).length == 1) { sec = "0" + sec; } if (("" + milli).length == 1) { sec = "00"..

카테고리 없음 2023.08.31

1. 인터넷 네트워크

IP(Internet Protocol) 인터넷 프로토콜 패킷을 통해 데이터를 주고받기 위한 통신 규약 통신자들 간의 일종의 주소역할을 하는 IP주소를 부여한 뒤, 패킷을 통해 데이터를 감싼다. 그리고 보내고자 하는 ip주소로 패킷을 전송하는데, 패킷은 곧바로 해당 ip를 찾아가는 것이 아닌, 노드를 떠돌아다니며 자신이 현재 있는 노드에서 관리하는 ip주소 중 수신자 ip가 존재하는지 확인하고, 없다면 다른 노드로 옮겨가기를 반복한다. 세상 사람들이 모두 히키코모리여서 집밖으로 나오지 않고 집안에 틀어박혀 모든 물품을 택배로 주문해서 살아간다고 상상하면 앞으로 나올 개념들을 이해하기 쉽다. 택배는 패킷, 노드는 택배 집하장, ip주소는 집 주소, 받는 사람은 서버, 보내는 사람은 클라이언트에 대응된다. 그..

공부/네트워크 2023.08.25