목록정리 (23)
정글에서 온 개발자
만드는 이유조직도를 표현하기 위해서 만들게 됐다.앞에서 작성한 서버에 API 요청을 해서 자료를 받아온다. 다음과 같은 자료가 들어온다.구현Organize-Map 컴포넌트조직도 전체가 나타나게 될 컴포넌트다.최초의 루트 Organize를 포함한다.export class OrganizeMapComponent { auth : Auth = {} as Auth organize : Organize = {} as Organize constructor(private authService: AuthService, private companyService: CompanyService) { this.auth = this.authService.getAuth() this.companyService.getCo..
만드는 이유회사의 조직도를 구성해야했다.조직도는 트리구조로 되어있기에 DB로 트리구조를 표현할 방법이 필요했다.이러한 트리구조는 이 외에도 댓글의 댓글의 댓글, 게시판 내의 하위 게시판등 계층형 구조(Hierachy structure)에 자주 쓰인다.자료 조사Models For Hierachial DataTrees And Hierachies In SQL위 두 자료를 주로 참고했다.첫번째 자료가 큰 줄기를 잡아주고, 두번째 자료는 그 안에서 세부적인 변형들을 소개한다.정리크게 다음 네가지 방법이 있다.Adjacency List (인접 리스트)Path Enumeration (경로 열거)Nested Sets (중첩 집합)Closure Table (폐쇄 테이블)각 방법 개요인접 리스트 - 자식 노드가 부모 노드..
기존 방법기존에는 휴가 신청서라는 개념 없이, 휴가를 개별 등록하고 개별 승인 받도록 하였다.요구 사항과 문제상황하지만, 프로젝트를 진행하면서 ‘휴가 신청서’를 받고, 결재(1차, 2차)를 하고, 필요할 때 한번에 출력 (관공서 제출용) 하고 싶다는 요청이 있었다.기존에 휴가를 단일하게 관리하면, 승인,반려 취소시 엔티티 하나만 신경 쓰면 됐다. 하지만 ‘휴가 신청서’라는 더 큰 객체에 휴가가 포함이 돼버리면 휴가 신청서 전체의 승인과, 개별 휴가의 승인을 개별로 관리해야 한다.또 다른 문제는 휴가의 ‘변경과 취소’ 다. 이럴 때 종이 서류로 처리할 경우, 어떤 휴가를 어떻게 바꾸고 싶고, 어떤 휴가를 취소하고 싶은지 ‘변경 신청서’ 를 새로 쓰면, 그 신청서에 따라서 기존 휴가를 조정하거나 삭제한다.이..
연차 촉진의 개요휴가가 남으면 휴가를 쓰도록 촉진. 촉진시 미사용 휴가 수당이 면제됨1차 촉진, 2차 촉진, 노무 거부로 이루어짐모든 과정은 근로자가 인지할 수 있어야 함.필요한 이유연차 촉진구성원의 자유로운 휴가 사용 장려.회사의 미사용 연차 수당 지급 부담 경감번거로운 절차 해소회사 : 구성원 별 연차 계산, 1차 촉진, 2차 촉진, 노무 수령 거부 등의 프로세스구성원 : 연차 일수 관리, 변경 시 재결재, 팀원과 일정 조율 등연차 촉진을 하긴 하고 싶은데, 과정이 너무 복잡해서 필요하다.해결해야 할 문제들법령대로라면 사람마다 연차가 발생하는 시기가 다르고, 촉진해야하는 시기가 다르다.개별 관리가 어려워 회계일 기준 관리를 허용해줬다.이 과정에서 휴가가 발생하는 기준이 회사마다 다르다. (휴가 선지급..
개요 JDBC(Java Database Connectivity) - 1990 중반. 자바 프로그래밍 언어의 일부 JdbcTemplate - 2000년 초. Spring Framework의 일부. Spring과 함께 등장 JPA(Java Persistence API) - 2000년대 중반. 자바 EE 표준. ORM(Object-Relational Mapping)을 위한 API 제공. Hibernate는 JPA의 구현체 Spring Data JPA - 2010년 초. Spring Data 프로젝트의 일부. JPA를 더 쉽게 사용 리포지토리 계층 쉽게 구현하는 추상화 제공 Spring Data JDBC - 2010년 후반. Spring Data JDBC. JPA의 복잡성을 줄이고자 등장. 도메인 중심 설계 촉..
디렉토리 구성 model ArticleEntity.java dto ArticleDTO.java ReponseDTO.java repository ArticleRepository.java (interface) service ArticleService.java controller ArticleController.java 코드 Entity(Model) 테이블 스키마 그 자체 @Builder @NoArgsConstructor @AllArgsConstructor @Data @Entity @Table(name = "Article") public class ArticleEntity { @Id @GeneratedValue(generator="system-uuid") @GenericGenerator(name="system..
서블릿 엔진 → @RestController 개발자는 Javax.servlet.http.HttpServlet을 상속받는 서브 클래스를 작성해야 한다. 서블릿 컨테이너는 서블릿 서브 클래스를 실행시킨다. @RestController 에는 이 서블릿 서브 클래스가 이미 구현되어있다. MVC 흐름 contoller → model (service → repository) 데이터처리 데이터 → service → controller → view M(odel) @Service - Model에서 비즈니스 로직을 담당함 @Repository - 서비스에서 호출되어 실제 데이터베이스와 연결, 데이터 조회, 저장 작업을 수행함 .findbyId 등 이용 가능extends JpaRepository 로 JPA 이용 @Query..
해결하려는 문제 #ifdef VM 블럭 아래에서 코딩을 해야 하는데, 해당 코드가 음영처리 된다. 아래와 같이 정의되어 있는 속성을 써도 빨간줄도 뜬다. #ifdef VM 안에서 정의된 함수들은 자동 완성이 안된다. 문제의 원인 Makefile가 돌아갈때는 알아서 설정되는 define 값들이 자동으로 설정된다. Makefile을 돌리기 전 코딩하는 상황에서는 VM이 define되지 않았기 때문에 아래와 같은 문제가 생긴다. 접근 그럼 VM을 define해주면 되지 않을까? 가장 먼저 생각나는 방법은 파일에 직접 #define VM을 해주는 방법이다. 실제로 잘 작동한다. 하지만 이 방법은 코드 자체를 조정하는 방법으로, VM을 끄고 싶을 때 해당 코드로 가서 일일히 꺼야 하는 단점이 있다. #define..
Priority Inversion 문제 우선순위 역전. 우선순위가 높은 쓰레드가 우선순위가 낮은 쓰레드를 기다리는 현상 Critical Section(이하 CS)를 접근하지 못하도록 락을 거는 경우에 발생한다. 락은 우선순위와 상관 없이, 락 홀더가 끝날 때까지 다른 쓰레드들이 락이 풀릴때까지 CS 앞에서 대기한다. L(낮은 priority) 이 lock holder고 H(높은 priority)가 락 해제를 기다리는 경우에도 우선순위 역전이라고 할 수 있다.(나의 생각) 일반적으로는 CS에 접근하지 않는 M(L과 H의 중간 priority) 이 들어오는 경우에 이 역전이 더 극명하게 나타난다. L이 time_slice 때 cpu를 반환하면, L보다 우선순위가 높은 M이 먼저 실행된 뒤에야 L이 실행되어 ..
이런 문법 처음 보는 분 보세요 *a,=map(int,input.split()) Starred Expression(Star Unpacking) a=[1,2,3] b=[4,*a,5] # b=[4,1,2,3,5] 단독으로는 사용될 수 없다. 컨텍스트 안에서 써야 한다. (함수 호출, 리스트 생성 등) 동일한 변수 내에서 여러번 쓸 수 없다. 함수 인자의 언패킹 def func(a,b,c): return a+b+c values = [1,2,3] result = func(*values) list(*map) , print(*str) 도 이렇게 인자를 언패킹해 넘겨주는 것이였다. Extended Unpacking(리스트나 튜플 , 맵 등) 언패킹시 일부 원소들은 별도로 할당하고, 나머지는 다른 변수에 할당 firs..