본문 바로가기

분류 전체보기520

HTTPS 1. HTTP 전송 정상적인 사용자에게 평문 (plaintext) 으로 암호화 하지 않은 중요한 정보를 전송 하게 될 때, 정상적인 사용자 입장에서는 빠르게 정보를 읽을 수 있기 때문에 좋다. 하지만, 보안에 취약 하기 때문에 비정상적인 사용자에게 데이터 유출을 당하기 쉽다. 그래서 HTTPS 라는 개념이 나오게 되었다. 데이터를 암호화 해서 비정상적인 사용자가 데이터를 가로챈다고 해도 데이터를 읽을 수 없으므로, 암호화의 중요함을 알 수 있게 된다. 따라서 HTTPS 를 사용 한다. 실제로 웹페이지에서 HTTPS 를 사용하라고 유도를 하는데, 사이트에 http:// 로 시작하는 사이트에 접속 하려고 하면, '이 사이트는 안전하지 않습니다.' 라며 안내를 해준다. 2. HTTPS 권장 실제로 구글이나 네.. 2023. 10. 25.
[ 스프링 프레임워크 ] Null Safety Null Safety 널 안정성을 높이는 방법 1) 애초에 아래의 코드와 같은 널 체크 코드를 만들지 않고 스프링 프레임워크에서 제공 하는 어노테이션을 사용 할 수 있다. (널을 체크 하는 로직은 단순한 유효성 검사 로직을 반복 하는 것이기 때문에 보일러 플레이트 라고 볼 수 있다) 2) 아래의 코드와 달리, 애초에 널 체크를 코드를 작성 하지 않았다고 할 때, 발생하는 NPE 를 어노테이션을 통해 방지 할 수 있다. 3) 완벽한 방법은 아니지만, IDE 에서 경고를 표시함으로써, 1차적인 널 문제를 방지하고, 정확한 에러 위치를 확인할 수 있도록 할 수 있다. public void method(String request) { if(request == null) return; System.out.prin.. 2023. 10. 22.
IntelliJ를 사용한 Spring Framework Project 생성 및 설정 구글링을 해보니, 2023년도 초반 까지만 해도 스프링 프레임워크 프로젝트를 생성 하고, 프로젝트를 우클릭 하면 Add Framework Support 라는 기능이 있었던 것 같다. (이 기능을 통해 편하게 pom.xml 설정 파일에 필요한 라이브러리들을 추가 할 수 있었다) 더이상 이 기능을 인텔리제이가 지원을 하지 않는듯 해서, 인텔리제이로 스프링 프레임워크 프로젝트를 생성 하고 설정 하는 방법을 정리 하려고 한다. (maven 프로젝트) (인텔리제이 정보 : IntelliJ IDEA 2023.2.3 (Ultimate Edition) 1. 필요한 것들 1) Java JDK 2) Apache Tomcat 본인의 자바 버전은 11.0.20 이고, 아파치 톰캣 버전은 9.0.76 이다. 자바는 아래의 링크.. 2023. 10. 21.
[ 파이썬 예제 ] 예외 처리 / 파일 입출력 / while문 / continue test.txt에 정수 1개가 입력된 상황 읽어 들일 파일의 이름을 입력 >> apple test.txt 를 읽었습니다. apple.txt 는 없는 파일 입니다 ! 1 ~ 100 >> 50 DOWN ! 1 ~ 49 >> 25 UP ! 26 ~ 49 >> 32 32 ! 정답입니다 ! :D text.txt 3번만에 정답을 맞추셨습니다. :D 1 ~ 100 >> 500 1 ~ 100 의 범위를 초과 했습니다. 다시 입력해주세요 ! (범위를 벗어난 숫자를 입력 하면 카운트 에는 포함 되지 않음) 또한 정수 범위 예외 뿐만 아니라, 문자를 입력 해도 예외가 발생 하기 때문에, 그런 경우에도 정수가 아닙니다 ! 등으로 예외 처리 되도록 하기. import os # 파일을 읽기 위해 os 모듈 import with .. 2023. 10. 21.
[ 파이썬 이론 ] 예외 처리 1. 예외 처리 모든 프로그램은 비정상 종료가 되지 않도록 예외 처리를 반드시 해줘야 한다. 예외가 발생했을 때는 어떤 이유로 인해 예외가 발생했는지를 사용자에게 안내해 줄 수 있어야 한다. 2. 예외 처리 방법 0으로 나눌 수 없다는 예외 ZeroDivisionError : division by zero .. 등 과 같이 예외를 처리 하기 위해서는 try와 except 를 사용 한다. try: 예외가 발생 할 수도 있는 코드 except: 예외 발생시 수행할 코드 예시) try: num = int(input('정수 입력 : ')) print('입력한 정수는 %d 입니다.' % num) except: print('정수만 입력해 주세요 !') 하지만, 예외를 처리 할 때, except를 달랑 적지 않고, .. 2023. 10. 21.
[ 스프링 프레임워크 ] Validation / Data Binding Validation 이란 ? >> 유효성 검증을 뜻하는 단어. 주로 사용자 또는 서버의 요청 (http request) 내용에서 잘못된 내용이 있는지를 꼼꼼하게 확인하는 단계를 의미 한다. Validation 종류 학문적으로 여러 세부적인 단계들이 존재 한다. >> 실제로 개발자가 주로 가지고 가야 하는 검증은 크게 두 종류로 나뉜다. 1) 데이터 검증 - 필수 데이터의 존재 유무 - 문자열의 길이 또는 숫자형 데이터의 경우 값의 범위 - email, 신용카드 번호 등 특정 형식에 맞춘 데이터 2) 비즈니스 검증 - 서비스에 정책에 따라 데이터를 확인 하여 검증 (배달앱에서 배달 요청을 할 때, 해당 주문건이 결제 완료 상태인지 확인 하기 등) - 경우에 따라 외부 API를 호출하거나 또는 DB의 데이터.. 2023. 10. 20.
[스프링 프레임워크] AOP AOP 관점 지향 프로그래밍 - Aspect Oriented Programming AOP : 공통적인 부분을 스프링이 도와서 처리해준다는 개념. 그런데 공통적인 부분의 범위가 어느정도 일까 ? 완전히 전반적인 프로젝트 공통적인 기능의 대표적인 예시는 다음과 같다. >> 인증 이런것들은 필터 또는 인터셉터로 처리 하는게 더 적합하다. 하지만, 특정 타이밍 / 시점 / 컨트롤러 에 대해서 원하는 작업 (기능) 을 부여 하고 싶다면 ? 이런것들은 AOP 개념을 활용하여 처리 하는게 좋다. (필터나 인터셉터 보다 조금 더 똑똑하게 처리 하고 싶을 때) 예시) 1) 로깅 특정 함수가 호출 되었을 때 자세한 로깅을 남기고 싶을 때. 2) 트랜잭션 Spring MVC 프로젝트를 구현할 때, @Transactional.. 2023. 10. 19.
[ 파이썬 예제 ] 파일 입출력 / 리스트 / for 문 / count() 함수 # 첫번째 문제 """ aList = ['사과', 12000, '바나나', 3900, '키위', 5400] aList.txt 를 생성 하세요. 사과는(은) 12000원 입니다. """ aList = ['사과', 1200, '바나나', 3900, '키위', 5400] with open('aList.txt', 'wt') as file: for i in range(0, len(aList), 2): # 리스트에서 인덱스를 2씩 증가 하도록 하기. fruit = aList[i] price = aList[i + 1] message = f'{fruit}는(은) {price}원 입니다. \n' file.write(message) with open('aList.txt', 'rt') as file: textFile = f.. 2023. 10. 19.
[ 파이썬 이론 ] 파일 입출력 1. 파일 입출력 문법 : 파일 객체 = open('파일명.확장자','파일 입출력 모드') 2. 디폴트 경로 파일 입출력시 별도의 경로를 입력 하지 않으면, 현재 파이썬 파일인 Xxx.py 파일이 위치하는 경로가 디폴트 경로가 된다. 3. 파일 입출력 모드 1) wt write text mode 파일 쓰기 모드 2) rt read text mode 파일 읽기 모드 3) at append text mode 파일 이어 쓰기 모드 4. 예시 01 file = open('test.txt', 'wt') file.close() # close() 메서드를 사용 해서 메모리 누수를 방지 한다. 5. 예시 02 실질적으로 with 문을 사용 해서 close() 메서드를 포함하는 문법으로 많이 사용 한다. with ope.. 2023. 10. 19.