[Oracle] MacOS에서 Oracle 설치하기 - MacOS에서는 Oracle을 지원하지 않기 때문에, Docker 컨테이너를 사용해 설치해야 한다 - 먼저 Docker를 설치하고, 필요한 Oracle 이미지를 다운로드하여 컨테이너를 생성해보자 (1) Docker 설치하기 1. Docker 회원가입 (Continue with Free) Docker Hub hub.docker.com 2. Docker 설치 파일 다운로드 - 아래 링크에서 Mac with Intel Chip을 선택하여 dmg 파일을 다운로드한다 Docker Desktop - Docker Volume Management, Dev Environments and more Takes the guesswork out of volume manag..
순열 : permutation ✔️ 순열이란 주어진 숫자 중 n개를 골라 순서를 고려해 나열한 경우의 수를 말한다 ✔️ 즉, 서로 다른 n 개 중 r 개를 골라 순서를 정해 나열하는 가짓수이다 ✔️ 그리고 순열은 ‘Permutation’의 첫 글자 P를 따서 nPr로 표시한다 예를 들어 조별 활동을 위해 같은 조가 된 A, B, C 세 명의 학생 중 조장과 부조장을 뽑으려 한다 조장과 부조장을 뽑는 데 모두 몇 가지 경우의 수가 있을까? A, B 두 사람을 뽑는다면 순서에 따라 (A, B)가 될 수도 있고 (B, A)가 될 수도 있다 (A, B)에서는 A는 조장, B가 부조장의 역할을 맡는다. 반면 (B, A)에서는 B가 조장의 역할을, A가 부조장의 역할을 맡는다. 둘은 엄연히 다르다. 이를 통해 순열..
📕 제 2장 웹 프로그래밍 기초 다지기 💬 GET방식 - 웹 서버에 데이터를 보낼 때, URL에 쿼리 스트링의 형식으로 데이터를 전송한다 GET 요청의 발생 1. 웹 브라우저 주소창에 URL을 입력 2. 링크를 클릭하는 경우 3. 입력 form의 method 속성 값이 get인 경우 GET 요청의 장단점 - URL만으로 쉽게 웹 사이트에 접근할 수 있다 - 사용자가 입력한 데이터가 주소창에 그대로 노출 된다 → 보안에 취약 💬 POST방식 - 웹 서버에 데이터를 보낼 때, HTTP프로토콜의 메시지 본문(MessageBody)에 붙여서 전송한다 POST방식의 장단점 - 사용자의 입력값이 URL에 포함되지 않기 때문에 외부에 노출되지 않는다 - 데이터를 URL에 포함하지 않기때문에 URL만으로 결과 화면에 ..
📕 제 2장 웹 프로그래밍 기초 다지기 2.4 파일 업로드 - 웹 서버에 바이너리 데이터를 보내기 위해 고안된 멀티파트 인코딩 방법을 알아보자 - 이를 위한 태그의 설정 방법에 대해서도 함께 다루도록 한다 파일 업로드를 위한 태그 설정 : 멀티 파트 인코딩 태그의 enctype 속성 - 태그의 enctype 속성은 데이터가 서버로 제출될 때 해당 데이터가 인코딩 되는 방법을 명시한다 - 이 속성은 요소의 method 속성값이 “post”인 경우에만 사용할 수 있습니다. - 기본 값은 aplplication/x-www-form-urlencoded 을 사용한다 - 바이너리 데이터를 보내기 위해서는 multipart/form-data 으로 인코딩해야 한다 - 이미지나 동영상과 같은 바이너리 데이터를 전송해야 ..
📕 제 2장 웹 프로그래밍 기초 다지기 2.3 POST 요청 - 태그의 method 속성을 post로 지정하여 사용한다 - URL에 데이터가 포함되지 않아 외부에 노출되는 위험을 방지한다 - 메시지 본문에 데이터가 포함되므로, 실행 결과의 공유가 불가능하다 - 바이너리 및 대용량 데이터의 전송이 가능하다 POST 요청의 HTTP 프로토콜 확인 POST /web01/LoginServlet HTTP/1.1 # 요청 라인 Host: localhost:9999 Content-Length: 22 # Content-Length 헤더 ... Content-Type: application/x-www-form-urlencoded # Content-Type 헤더 ... # 공백 라인 id=tiger&password=lll..
📕 제 2장 웹 프로그래밍 기초 다지기 2.2 Get요청 URL에 데이터를 포함하므로 데이터 조회에 적합하다 데이터 전송에 특화된 방식이 아니므로, 바이너리 및 대용량 데이터 전송은 불가능하다 요청 라인과 헤드 필드의 최대 크기가 존재한다 - HTTP 사양에는 제한사항이 없다 - 대용량 URL로 인한 문제 발생 → 웹 서버에 따라 최대 크기가 제한된다 - Microsoft IIS 6.0+ : 16KB - Apache 웹 서버 : 8KB 💬 GET 요청이 발생하는 경우 1. 웹 브라우저 주소창에 URL을 입력하여 서버의 자원을 요청하는 경우 (예) http://localhost:9999/web02/GetTest.html → GetTest.html을 요청 2. 링크를 클릭하는 경우 3. 입력 form의 me..
📕 제 2장 웹 프로그래밍 기초 다지기 1-5. HTTP 클라이언트 만들기 package lesson02.client; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.Socket; public class SimpleHttpClient { public static void main(String[] args) throws Exception { // 1. 소켓 및 입출력 스트림 준비 Socket socket = new Socket("www.daum.net", 80); BufferedReader in = new BufferedReader(new InputStream..
📕 제 2장 웹 프로그래밍 기초 다지기 1-4. HTTP 응답 - 웹 브라우저가 요청하면 웹 서버는 그에 대한 작업을 수행하고, 응답 데이터를 보낸다 - 웹 서버가 응답한 내용에 대해 알아보자 (1) 상태 라인 (Status-Line) - 응답 메시지의 첫 라인은 응답 결과에 대한 상태 정보이다 - 프로토콜 버전과 상태 코드, 설명으로 구성된다 - 웹 어플리케이션을 개발하는 동안 자주 접하게 되는 응답 상태 코드에 대해 알아보자 (2) 응답 헤더 - 응답 데이터를 처리할 때 참고하도록 웹 브라우저에게 알려주는 정보를 담는다 - Content-Type 헤더는 서버가 웹 브라우저에 보내는 데이터의 형식을 나타낸다 - 웹 브라우저는 헤더의 값을 보고 데이터를 출력할지, 다운로드 창을 띄워야 하는지, 외부 프로..
📕 제 2장 웹 프로그래밍 기초 다지기 1-3. HTTP 요청 (1) 요청 라인(Request-Line) - 요청 메시지의 첫 라인에는 메서드와 요청하는 자원, 프로토콜 버전으로 구성된다 1-1. 메서드 - 요청하는 자원에 대해 웹 서버에게 내리는 명령 - 메서드에는 GET, POST, HEAD, PUT, DELETE, TRACE, CONNECT, OPTIONS 등이 있다 1-2. 요청 URI - HTML 파일이나 이미지, 동영상 등이 있는 가상의 경로를 의미한다 - 웹 서버는 식별자인 요청 URI를 이용해 필요한 자원을 찾는다 - 이미지에는 기본문서를 의미하는 / 를 작성했지만, 자원을 요청하는 경우 경로를 명시한다 (예) /img/test.jpg 1-3. HTTP버전 - HTTP버전은 요청 정보가 어..
📕 제 2장 웹 프로그래밍 기초 다지기 1-2. HTTP 모니터링 HTTP 프록시 - 웹 브라우저와 웹 서버 사이에 주고받는 데이터를 살펴보기 위해서는 HTTP 프록시 프로그램이 필요하다 - 프록시 프로그램의 구동원리는 아래의 그림과 같다 - 웹 브라우저가 웹 서버에게 요청을 하면 HTTP프록시가 대신 서버에 전달한다 - 서버로부터의 응답도 HTTP 프록시가 대신 웹 브라우저에 전달한다 - HTTP 프록시는 웹 브라우저와 웹 서버의 중간에서 요청과 응답을 중계해준다 - 그렇기 때문에 HTTP 프록시 프로그램을 사용해 클라이언트와 서버 사이에서 주고받는 데이터를 확인할 수 있다 HTTP 프록시 모니터 프로그램의 종류 - Charles : https://www.charlesproxy.com/ - Fiddle..