클라이언트 Credentials CORS 요청에 자격인증정보(credentials)를 포함하고 싶을 때 설정 - Credentials: 쿠키, Authorization인증 헤더, TLS client certificates // client 헤더 withCredentials: true // 모든 axios 요청에 withCredentials를 true로 설정 axios.defaults.withCredentials = true // fetch 사용 시 fetch("localhost:4000", { method: "POST", credentials: "include" }) 서버 사용 모듈 const express = require('express'); // 서버 const cors = require('cors..
해싱(Hashing) 해시 함수를 이용한 암호화. 복호화 불가 항상 같은 길이의 문자열 리턴 동일한 문자열에 해시 함수를 적용하면 항상 같은 값 리턴 서로 다른 문자열에 해시 함수를 적용하면 다른 값 리턴 해싱의 목적은 복호화하여 기존 데이터를 사용하는 것이 아니라 이전 데이터와 현재 데이터가 일치하는 지 확인하는 것이기 때문에 복호화가 불가능한 암호화 방식을 사용함 => 민감한 데이터를 다룰 때 유출의 위험은 줄이면서 데이터 유효성을 검증하기 위해 사용되는 단방향 암호화 방식 레인보우테이블 해시 함수 결과값의 이전 모습을 알 수 있도록 기록해놓은 표(복호화 표) 레인보우 테이블이 유출될 경우 이전 값을 알아낼 수 있기 때문에 보안상 위협이 될 수 있음 솔트(Salt) 소금을 치듯 기존 데이터에 임의의 ..
Cookie 웹 사이트에 들어갔을 때 서버가 클라이언트에게 일방적으로 전달하는 작은 데이터 - 서버가 웹 브라우저(클라이언트)에 정보를 저장하고 불러올 수 있는 방법 - 해당 도메인에 대해 쿠키가 존재하면 웹 브라우저는 도메인에게 HTTP 요청 시 자동으로 쿠키를 함께 전달(헤더) 영속성을 띄기 때문에 장기간 보존해야하는 정보 저장에 적합(삭제하지 않는다면 사라지지 않음) ex) 로그인 상태 유지, 사용자 선호 테마, 장바구니, 30일간 띄우지 않기 등 쿠키는 쉽게 조회할 수 있기 때문에 보통 암호화되어 저장, 민감한 정보는 해싱 처리하지만 그래도 민감한 정보나 개인 정보는 담지 않는 것이 좋음 데이터 저장 이후 특정 조건(옵션)들이 만족된다면 서버가 원할 때 클라이언트 쿠키를 이용하여 데이터를 가져올 ..
인터넷 프로토콜(IP) 기반 네트워크는 1969년 미 국방성에서 진행한 아르파넷 프로젝트에서 시작 아르파넷 프로젝트: 냉전시대 핵전쟁을 대비하기 위한 통신망 구축. 회선교환 방식 -> 패킷교환 방식 회선교환 방식 발신자와 수신자 사이에 데이터를 전송할 전용선을 미리 할당하고 둘을 연결 단점 - 수신자가 통화중이라면 그 연결이 종료되어야 다른 연결 가능 - 특정 회선이 끊어지는 경우 처음부터 다시 연결해야 함 패킷교환 방식 패킷이라는 단위로 데이터를 잘게 나누어 전송 출발지와 목적지 정보가 있고, 이에 따라 패킷이 가장 효율적인 방식으로 이동 회선교환 방식과 달리 특정 회선이 전용선으로 할당되지 않기 때문에 빠르고 효율적으로 데이터 전송 가능(기다릴 필요 X) 인터넷 프로토콜(IP) : 출발지와 목적지의 ..
프로그램: 입력(Input)을 받아 출력(Output)하는 것 입력에 따라 프로그램이 다르게 동작함 Input: Argument, File, Network, Audio, Program Output: Monitor, File, Audio, Program 인풋으로 값 받기 ① 인풋창으로 값을 받기 위해 javax.swing.JOptionPane 임포트 showInputDialog 메서드로 인풋창을 띄움 - 전달인자로 어떤 정보를 받을 건지 설명을 적음(인풋 문자열 -> 아웃풋 문자열) ② 인풋창으로 받은 두번째 값 bright를 문자열에서 double 타입으로 바꿔주기 위해 Double.parseDouble(바꿀값) 사용 import javax.swing.JOptionPane; import org.opent..
웹 접근성 Web Accessibility 어떤 상황이든, 어떤 사람이든 동등한 수준의 정보를 제공받을 수 있도록 보장하는 것 (장애인, 고령자 등 정보 소외 계층, 운전 중이라 화면을 보기 어렵거나, 마우스를 사용할 수 없는 상황) 2008년 장애인 차별 금지 및 권리 구제등에 관한 법률에 의해 모든 공공기관과 법인의 웹사이트는 의무적으로 웹 접근성을 갖추도록 강제성이 부여됐음에도, 다양한 장애 상황을 모두 고려하여 웹 접근성을 확보한 경우는 찾아보기 어려움 -> 국내에서는 웹 접근성 인식이 상대적으로 낮고, 단속도 잘 이뤄지지 않고 있음 웹 접근성을 갖추었을 때 얻을 수 있는 효과 1. 사용자층 확대 장애인, 고령자 등 정보 소외 계층도 웹 사이트를 이용할 수 있게 되어 사이트 이용자를 늘릴 수 있고..
vscode 디버거 버그를 찾는 도구 버그를 찾는 행위= 디버깅 멈추고 싶은 코드 라인(숫자 왼쪽)을 클릭하여 break pointer 설정 노란색 화살표(라인)은 현재 실행 중인 라인 1 계속 F5 : 실행 2 단위 실행 F10 : 다음 줄 실행 3 단계 정보 F11 : 현재 실행 중인 라인의 메서드 위치를 열어줌 -> 해당 메서드 코드도 하나하나 실행할 수 있음 4 단계 출력 Shift F11 : 한 단계 위로 올라감 -> 3을 실행하여 메서드 파일로 간 상태에서 해당 기능으로 원 위치로 돌아옴 5 다시 시작 Ctrl Shift F5 6 중지 Shift F5 : 디버거 종료 후 작업 파일로 돌아감 7 Debug Java : 디버거 실행 23.01.01 생활코딩 JAVA1 10
설치 1. 프로젝트 생성 시 # Redux + Plain JS template npx create-react-app my-app --template redux # Redux + TypeScript template npx create-react-app my-app --template redux-typescript 2. 기존 프로젝트에 설치 redux toolkit을 설치하면 redux도 설치되기 때문에 redux를 따로 설치해 줄 필요 없음 npm install @reduxjs/toolkit createSlice 기존 action + reducer createSlice를 사용하여 기존 action, reducer의 단점을 피할 수 있음 - type의 이름을 정하기 번거로움 - type 작성 시 오타날 수 ..
Programming 프로그래밍을 하는 이유는 자동화된 처리를 하기 위해 코드를 순차적으로 실행하고 컴퓨터가 사람 대신 동작하게 해 효율적으로 처리하기 위해 vscode java Ctrl + Shift + P(보기 > 명령팔레트) Java: Create Java Project... 남이 만든 코드를 부품으로 이용하여 내 프로그램을 작성할 때 프로젝트 아래 src 폴더 안에 패키지를 넣어준 뒤 import import org.opentutorials.iot.Elevator; import org.opentutorials.iot.Security; import org.opentutorials.iot.Lighting; public class OkJavaGoingHome { public static void mai..
변수 : 변할 수 있는 수, 값에 의미를 부여 자바에서는 변수를 만들 때 어떤 데이터 타입이 담길 수 있는지 지정해주어야 함 => 변수에 접근할 때마다 변수의 타입이 무엇인지 확인해 줄 필요 없음 변수의 타입과 다른 타입의 값이 재할당될 경우 컴파일되지 않음. 에러 int : integer. 정수 double : real number. 실수 String : 문자열 public class Variable { public static void main(String[] args) { int a = 1; // 정수 System.out.println(a); // 1 double b = 1.1; // 실수(real number) System.out.println(b); // 1.1 String c = "Hello ..
