일단 씻고 나가자
23.10.12 본문
2023. 10. 12 목요일
- [Java] 문자열에서 정규식이 해당하는 부분을 찾는 라이브러리와 방법?
: import java.util.regex.Pattern/Matcher로 가능. (util.* 로 import 되지 않음)
사용 방법은 다음과 같다.
Pattern pattern = Pattern.complie(“정규식”);
Matcher matcher = pattern.matcher(“문자열”);
matcher.find() // boolean , matcher.group() // String
이때 꼭 find를 먼저 실행해주어야 내부에서 로직을 수행하고, group을 사용할 수 있음.
group만 사용하면 에러를 냄.
추가로 find()는 여러번 수행할 시 찾은 시점 이후의 문자열부터 재탐색하므로,
while(matcher.find()) { matcher.group(); } 같은 방식으로 사용할 수 있다.
단, mathcer.find()와 string = string.replaceAll("matcher.group()")을 함께 사용할 경우,
matcher은 replace로 변하기 이전 string에 대해서만 정보를 가지고 있으므로
반복문 내에서 지속적인 matcher = pattern.matcher("바뀐 문자열")의 업데이트를 해주어야 한다.
- [Effective Java] 함수형 인터페이스의 특징은? 람다의 특징?
: 순수 함수로 표현. 이때 순수 함수는 함수 바깥쪽의 변수를 변화시키지 않는 의미이다.
외부의 변수에 변화를 주지 않으며, 이를 사이드 이펙트라 하고, 이런 점이 없으면 thread safe하고 병렬 처리가 가능해진다.
람다는 함수형 인터페이스를 적용한 자바의 기술이며, 타입을 명시해야 할 경우를 제외하고는 람다에서는 모든 타입을 생략한다.
- Agile의 scrum이란? 진행 방식?
: 일종의 팀. 소통이 빠르게 이루어지고 개발 규모를 작게 하여야 하므로 10명 내외로 구성된다. PM, 개발자, 디자이너 외에 scrum master (daily scrum으로 팀원 간 진척 사항을 공유하는 부분을 조율하는 일종의 팀장), 개발 매니저 (senior development manager, 기능 개발을 분배하고 도움을 줌) 등으로 이루어진다.
2주 혹은 1달간의 sprint(계획)을 만들고, daily scrum으로 매일 미팅을 통한 진척, 변경 사항 공유 및 sprint가 끝났을 때 리뷰 후 반성하는 시간을 가짐.
보통 요구사항은 수없이 많은 세부 요구사항으로 나누어지기 때문에, 그것들을 list up 하고 우선순위가 높은 것들을 선택하여 sprint하며, 끝난 후엔 list에서 추가로 다시 요구사항을 달성하는 방식을 취한다. (기능별 요구사항 : Epic(stroy), 개별 기능의 세부 요구사항 리스트 : tickets(backlogs))
- TDD란? CI란? JIRA란? Agile과의 연관관계?
: Test Driven Development. Agile 방식으로 진행할 시에 일정이 타이트하고 테스트 코드를 작성할 시간이 적어지기에, 코드를 작성할 때 테스트 형식으로 작성하여 바로 테스트 해볼 수 있도록 적는 방식이다.
Continuous Integration. 자동화 배포 및 지속적인 통합. Agile 방식으로 개발이 진행될 경우 하나의 프로젝트 내에 수많은 Agile 팀이 존재하고, 그 팀들이 일부 코드를 지속적으로 수정할 텐데, 그때마다 컴파일하여 실행하는 것은 어렵기 때문에 고객이 수시로 확인할 수 있도록 지속적으로 빌드 유지. jenkins가 대표적이다.
JIRA란 Agile 방식 하위의 수많은 Epic, tickets 들을 관리하고 트래킹하기 위한 관리 도구.