일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 스프링시큐리티
- 부트캠프
- Kafka
- XSS
- 엘라스틱서치
- QA
- 자바
- 하이브리드접근법
- N+1문제
- 오블완
- nplus1
- 메소드
- selenium
- 티스토리챌린지
- 자료구조
- springboot
- JPA
- n8n
- kafka배포
- 자동화워크플로우
- jwt토큰
- 캐시의 작동 원리
- 오버로딩
- 테스트케이스
- 프로세스와스레드의차이
- 프로토콜역할
- 한화시스템부트캠프
- 헥사고날아키텍처
- Java
- STOMP
- Today
- Total
목록Programming (33)
아쿠의 개발 일지

과거 RPA 개발 직무에서 일을 하면서 Selenium을 활용해 본 적이 있다.Selenium은 웹 자동화 도구이며, 이를 활용하여 웹 페이지의 데이터를 추출하거나 테스트를 자동화하는 작업을 말한다.Selenium은 브라우저를 자동으로 제어할 수 있는 기능을 제공하며, 이를 통해 사용자가 브라우저에서 수행할 수 있는 대부분의 작업을 코드로 구현할 수 있다. 셀레니움(Selenium) 크롤링의 개념웹 크롤링은 웹 사이트에 있는 데이터를 수집하는 작업이다.단순히 HTML 데이터를 가져오는 일반적인 크롤링과는 달리, 동적 웹페이지나 JavaScript로 렌더링되는 콘텐츠도 제어하고 데이터를 수집할 수 있다는 장점이 있다.셀레니움 크롤링의 주요 과정웹 페이지 접속 :Selenium이 웹 브라우저를 열고, 특정 ..

이번에는 소프트웨어 테스트의 기본 개념에 대해서 공부를 해 보는 시간을 가져 보려고 합니다.소프트웨어 테스트는 SW가 요구사항에 따라 동작하는지 확인하고, 예상치 못한 오류나 결함을 발견하는 활동입니다.테스트 개발 과정의 중요한 단계로, 소프트웨어의 품질과 신뢰성을 보장하는 데 필수적입니다. 소프트웨어 테스트의 정의소프트웨어 테스트는 소프트웨어 제품의 요구사항 충족 여부를 검증하고, 결함을 찾아 수정하기 위한 프로세스입니다. 검증(Validation): “소프트웨어가 올바른 제품을 만들었는가?“를 확인확인(Verification): “소프트웨어가 정확하게 설계되었는가?“를 확인소프트웨어 테스트의 목적결함 발견: 소프트웨어 내의 오류나 결함을 찾기 위해품질 보증: 제품이 요구사항에 맞게 동작하는지 확인위험..

QA는 제품이나 서비스가 정해진 요구사항과 기준을 충족하도록 보장하는 활동을 의미합니다. 소프트웨어 개발에서는 사용자의 기대와 요구사항에 맞게 설계되고 개발 되었는지를 확인하고 문제를 예방하는 데 초점을 맞춥니다. QA의 역할로는, 1. 요구사항 분석:사용자와 고객의 요구사항을 분석하여 올바른 품질 기준 설정개발자와 소통하여 기능 및 기술적 요구사항을 명확화.2. 테스트 계획 수립:프로젝트 전반에 걸친 테스트 전략과 계획을 수립어떤 테스트를 언제, 어떻게 실행할지 명확히 정의3. 테스트 케이스 설계 및 실행:다양한 상황을 가정해 테스트 케이스를 설계하고 실행버그 및 결함을 식별하고, 리포트4. 문서화 및 보고테스트 결과를 문서화하고 결함 리포트를 작성팀원 및 관련 부서와의 협업을 위한 결과 공유5. 자..

현재 진행하는 Tiggle 프로젝트에 엘라스틱 서치를 도입하기 전에, 어떤 이점이 있고 어떻게 사용하면 좋을 지에 대해서 먼저 알아보게 되었다. 엘라스틱 서치를 도입하기 위해서 현재 키워드 기반 검색으로 구현해 둔 컨트롤러를 보며 생각했다. 어떤식으로 도입 할 수 있을지 1. Docker를 사용하여 엘라스틱 서치를 실행한다.docker run -d --name elasticsearch -p 9200:9200 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:8.10.2 1-1. 필요한 경우 Kibana도 함께 설치한다.docker run -d --name kibana -p 5601:5601 --link elastic..

헥사고날 아키텍처(Hexagonal Architecture)는 소프트웨어 디자인 패턴 중 하나로, 응용 프로그램의 핵심 로직(Application Core)과 외부 시스템 간의 의존성을 최소화하여 유연성과 테스트 가능성을 높이는 구조입니다. 이 아키텍처는 “포트와 어댑터 아키텍처(Ports and Adapters Architecture)”라고도 불리며, 시스템의 내부와 외부를 명확히 구분합니다. 1. Application Core (응용 프로그램 핵심)• 핵심 비즈니스 로직과 도메인 규칙이 포함됩니다.• Use Case와 Entity가 Application Core에 속하며, 외부 환경에 독립적입니다.• 비즈니스 규칙은 특정 프레임워크나 외부 기술에 의존하지 않으며, 이로 인해 테스트가 용이해집니다. 2..

N+1 문제란 ?연관 관계에서 발생하는 이슈로 연관 관계가 설정된 엔터티를 조회할 경우에 조회된 데이터 개수(N)만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오게 된다. 이를 N+1 문제라고 한다. EAGER 는 열렬한, 열심인 이런 뜻을 가졌는데 모든 연관관계 데이터를 즉시 빠르게 열렬하게 가져온다고 생각하면 된다.위 말한 것 처럼 필요하지 않아도 추가로 가지고 오게 된다.LAZY는 게으른의 뜻을 가지고 있는데 게을러서 필요한 것만 조회하고 연관 관계에 있는 나머지 데이터는 조회를 미룬다. 기본적으로 EAGER 가 세팅되어 있지만, N+1 문제를 해결하기 위해 LAZY 사용을 쓰는 것이 좋다. JPQL ?SQL은 아니고, 변경되기 전 단계이기에 자바와 SQL 문법이 섞여있다. where :..

객체 지향 프로그래밍의 가장 중요한 개념이다.캡슐화는 데이터와 해당 데이터를 처리하는 메서드를 하나로 묶어서 외부에서의 접근을 제한하는 것을 말 한다.속성과 기능을 하나로 묶고, 외부에는 꼭 필요한 기능만 노출하고 나머지는 모두 내부로 숨기는 것이다. 캡슐화를 안전하게 완성 시킬 수 있는 장치는 " 접근 제어자 " 이다. 1. 데이터를 숨겨라 객체에는 속성과 기능이 있다. 가장 필수로 숨겨야 하는 것은 속성이다.객체 내부에 데이터를 외부에서 함부로 접근하게 하면 클래스 내의 로직을 무시하고 데이터를 바꿀 수 있다.이로 인해서 캡슐화가 깨진다. Ex ) 음악 플레이어사용 할 때 전원부나, 볼륨 상태의 데이터를 직접 수정할 일이 있을까?모든 사람들이 플에이어의 전원을 켜고, 끄거나 볼륨을 조절하는 버튼을 누..

학생 수강(Enrollment, EnrollmentRepository, EnrollmentService, EnrollmentController) 학생 외래키 수업 외래키 수업(Lecture, LectureRepository) lectureName 각각의 엔터티가 다음을 가지고 있다고 치자.다 제외하고학생 - 수강수업 - 수강이렇게 관계를 맺어서 학생과 수업은 M:N 관계로 수강 테이블(중간)을 통해 join 하는 것을 만들고자 한다. 일단 ! 학생 - 수강import & getter & setter은 생략@Entitypublic class Enrollment { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id..

@RestController@RequestMapping("/study") 일반 Controller는 View 페이지에 return하는 그런 컨트롤러고,RestController는 API 데이터를 요청한 곳에 객체 자체를 그대로 던질 때 JSON형태로 만들거나, 다른 형태로 만들어서 던질 때 쓴다.RequestMapping이라고 하는 것은 RequestMapping 옆에 study를 붙여놨기 때문이다. 위에 보면 /user라는 이름이 여러개 있는데, 이는 GET, POST, DELETE, PUT 방식이기에 다른 거다.PUT는 데이터를 수정할 때, DELETE는 삭제할 때 쓰고 GET은 @RequestParam을 써서 String userId를 GET방식으로 보내기 위해서 쓰고POST는 @RequestBod..

저번과 비슷하게 입 출금을 하는 건 똑같지만 사용자로부터 입력을 받아 입금과 출금을 반복하는 프로그램을 만들어봤다.출금 시 잔액이 부족하면 부족하다고 출력하고, 간단한 4가지 메뉴를 만들어서 수행할 수 있도록 했다. package method.ex;import java.util.Scanner;public class MethodEx04 { public static void main(String[] args) { int balance = 0; Scanner scanner = new Scanner(System.in); while (true){ System.out.println("-----------------"); System..