본문 바로가기
[Spring] Spring Security, JWT 간단 정리 Spring Security스프링 기반 어플리케이션의 보안(인증과 인가)를 담당하는 스프링의 하위 프레임워크.보안과 관련되어 체계적으로 많은 옵션을 제공하여 줌으로써 개발자 입장에서 보안 관련 로직을 따로 작성하지 않아도 된다. JWTJSON Web Token의 약자로 사용자의 정보를 담아 암호화 한 JSON 객체기존의 Cookie와 Session는 각각 보안 취약점과 stateless 위반의 문제가 있었지만 JWT는 이를 해역하기 위해 등장했다. JWT는 암호화 알고리즘을 통해 디지털로 서명되기 때문에 인증되었고, 신뢰할 수 있는 토큰이다.JWT는 공개키 암호 방식(PKC) 즉 비대칭키 방식이다. JWT 구조Header서명에 사용할 암호화 알고리즘 관련 정보와 토큰의 유형을 알리는 정보가 담겨있다.{ .. 2024. 5. 29.
[TDD] [테스트 주도 개발 시작하기] '테스트 주도 개발 시작하기' TDD에 이론적인 부분들을 찾아보고 난 뒤, 예제로 실습도 해보기 위해 책을 주문했다. 실제 회사 서비스 개발하는데 적용하기 위해 TDD 공부를 더 해보려고 한다. TDD는 특정 요일을 정해 스터디를 진행하면서 공부 할 예정이고, 포스팅을 하며 정리 할 것이다 :) 열공 시쟉-! 2023. 11. 1.
[TDD] 단위 테스트 준비 (Java, Spring) Java 단위 테스트 필요 라이브러리 크게 2가지 라이브러리가 있다. JUnit5 : 자바 단위 테스트를 위한 테스팅 프레임워크 AssertJ : 자바 테스트를 돕기 위해 다양한 문법을 지원하는 라이브러리 JUnit만으로도 단위테스트를 충분히 작성할 수 있지만, JUnit에서 제공하는 AsserEquals()와 같은 메서드는 AsserJ가 주는 메소드에 비해 가독성이 떨어지기 때문에 순수 Java 애플리케이션에서 단위 테스트를 위해 JUnit5 와 AsserJ 조합을 많이 사용한다. given/when/then 패턴 given-when-then 패턴이란 1개의 단위 테스트를 3가지 단계로 나누어 처리하는 패턴으로, 각각의 단계는 다음을 의미한다. given(준비): 어떠한 데이터가 준비되었을 때 when.. 2023. 10. 27.
[TDD] 단위 테스트와 TDD 프로그래밍 방법 및 순서 TDD의 소개와 작성해야 하는 이유에 대한 내용은 이전글에 작성했으니 보고 와주시면 감사하겠습니다 :) [TDD] TDD(Test-Driven-Development)란? TDD 란? Test Driven Development의 약자로 '테스트 주도 개발'이라고 한다. TDD는 설계 이후 코드 개발 및 테스트케이스를 작성하는 기존의 개발 프로세스와는 다르게 테스트 케이스를 작성한 후 실제 코 jiy0ung.tistory.com 단위 테스트 (Unit Test) 단위 테스트는 말 그대로 한 단위(일반적으로 class)만을 테스트하는 것 단위 테스트를 작성해야 하는 이유 - 코드를 수정, 추가할 때 수시로 빠르게 검증할 수 있다. - 리팩토링시에 안정성을 확보할 수 있다. - 개발 및 테스팅에 대한 시간과 비.. 2023. 10. 26.
[TDD] TDD(Test-Driven-Development)란? TDD 란? Test Driven Development의 약자로 '테스트 주도 개발'이라고 한다. TDD는 설계 이후 코드 개발 및 테스트케이스를 작성하는 기존의 개발 프로세스와는 다르게 테스트 케이스를 작성한 후 실제 코드를 개발하여 리팩터링 하는 절차를 따른다. 기존 프로세스 디자인 -> 코드개발 -> 테스트 [ -> 설계(디자인 수정) ] TDD 프로세스 디자인 -> 테스트 코드 작성 [ -> 설계(디자인 수정 ] -> 코드개발 -> 리팩토링 TDD 개발 주기 RED 단계에서는 실패하는 테스트 코드를 작성한다. GREEN 단계에서는 테스트 코드를 성공시키기 위한 실제 코드를 작성한다. BLUE 단계에서는 중복 코드 제거, 일반화 등의 리팩토링을 수행한다. 중요한 것은 실패하는 테스트 코드를 작성할 .. 2023. 10. 26.
[크롤링 기초] 선택자 📌선택자란? HTML은 기본적으로 내용로 작성되어 시작과 끝이 하나의 쌍으로 구성되어 있고, 그 사이에 내용이 포함되는 구조인 것을 4일차에서 말했었다. 웹 페이지를 표현하는 데이터 모두가 태그로 이루어져 있기 때문에, 그 중에는 서로 동일한 태그가 존재할 것이다. 이렇게 동일한 태그를 분간해 주기 위해, HTML에서는 선택자라는 것을 사용해 각 태그를 구별할 수 있는, 일종의 주소를 부여 해 줄 수 있다. 📌선택자의 필요성 아래와 같은 HTML 문서가 있다고 가정해 볼 것이다. 해당 웹 페이지에서 언어(Language)와 관련된 데이터만 필요할 때, 태그로만 해당 데이터를 선택한다면 태그를 선택할 것이다. 하지만 태그에는 언어 정보 뿐만 아니라 프로젝트 정보(크롤링, 게임)도 포함된다. 파이썬 크롤링 .. 2022. 1. 16.
[크롤링 기초] HTML 구조 📌웹 페이지와 HTML 크롤링을 알기 위해서 먼저 웹 페이지에 대해서 알아야한다. 웹 페이지는 HTML을 기반으로 구성되어 있다. HTML(HyperText Markup Language)은 '마크로 둘러싸인 언어'라는 뜻으로, 웹 페이지의 구조를 나타내는 언어다. 웹 페이지에서 F12 를 눌러 개발자 도구 창을 열면 해당 페이지의 HTML 코드를 볼 수 있다. 정리하면, HTML이라는 문서를 통해 웹 페이지 구조를 파악할 수 있고, 이를 이용하여 원하는 데이터가 웹 페이지의 어디에 위치해 있는지 파악하여 수집하는 것이 크롤링의 핵심이다. 📌HTML 태그 HTML에 있는 각각의 구성 요소는 마크의 역할을 하는 '태그'로 감싸져 있다. HTML은 기본적으로 내용의 형태로 작성 된다. 시작과 끝이 하나의 쌍으.. 2022. 1. 13.
[크롤링 기초] 라이브러리와 크롤링 준비 (request, beautifulsoup4 맛보기) 📌라이브러리 크롤링을 하기 위해서는 라이브러리를 사용해야한다. 라이브러리란, 프로그래밍을 할 때 코드를 작성하지 않고 필요한 기능을 수행할 수 있도록 마련된 함수와 메소드의 집합이다. 이름에서 알 수 있듯 도서관(library)에서 책을 꺼내 보는 것처럼,우리가 필요한 기능과 동작이 미리 구현된 파이썬 라이브러리를 사용하면 된다. 물론, 파이썬 환경이 방대한 만큼 수십, 수만개의 라이브러리가 존재한다.하지만 모든 라이브러리를 알 필요가 없기 때문에, 어떠한 기능을 구현할 때 어떤 라이브러리를 사용해야 한다는 정도만 알면 된다 :) 📌정적 크롤링 이번 공부에서는 정적 크롤링을 할 때 파이썬의 requests와 beautifulsoup4(BeautifulSoup) 두 가지 라이브러리를 사용한다 :) ✅ re.. 2022. 1. 13.
[크롤링 기초] 크롤링의 종류 크롤링은 어떤 데이터를 크롤링 하는지에 따라 정적크롤링과 동적크롤링으로 나뉜다고 한다! 나는 크롤링은 그냥 크롤링인줄 알았다....바보...😭 📌정적 크롤링 정적 크롤링은 로그인과 같은 사전 작업 없이, 한 페이지 내부에서 원하는 데이터를 수집할 때 사용한다. 예를 들면 동영상 스트리밍 사이트의 인기 동영상과 같은 경우라고 생각하면 된다 ! 즉, 주소를 통해 데이터를 요청하고, 결과를 받는것이 정적 크롤링이다. 한 페이지 내에서 모든 작업이 이루어지기 때문에 속도가 매우 빠르다! 하지만, 주소를 통해 데이터를 받기 때문에 로그인 -> 페이지 이동 -> 클릭 -> 데이터 수집 과 같은 연속적인 작업을 수행할 수는 없다..😥 따라서 연속적인 작업이 조금이라도 필요한 경우에는 적용이 힘들기 때문에 수집 대상에.. 2022. 1. 13.