분류 전체보기 444

[Airflow] Apache Airflow Test Case 작성하는 법

최근 Apache Airflow를 만질 일이 생겼다. 여러 Task 들을 작성하기는 했는데 테스트 코드를 어떻게 작성할 지에 대한 감도 잡히지 않았고 이걸 직접 다 돌려보는 풀테스트를 작성해야하나 긴가민가 했다. 그리고 짧은 조언을 받았는데 기본적인 테스트 코드들이 있었으면 좋겠다는 리뷰를 받았다. 그러니 앞으로는 테스트는 기본으로 가져가자는 마인드를 가져야겠다. 그래서 airflow 에 대해 간단한 Test Case를 작성하는 법을 알아보고자 한다. 우선 pytest를 사용할 것이기 때문에 pip install을 해주자. mock 테스트 안할 거면 후자는 빼줘도 되요~ pip3 install pytest pytest-mock 그리고 아래와 같은 dag와 task 들을 정의해줬다고 가정하자. from d..

[Convention] 협업 방식 정리(3) 애자일 + 스크럼 + 개발 프로세스 + 리더의 자질

신입 개발자로 일할 경우 사내에서 접하게 되는 개발 문화가 있다. 규모에 따라 다를 수 있겠지만 개발자로 일하는 경우 애자일 문화, 스프린트 방식, 코드 리뷰, 개발 프로세스에 대한 회사만의 특유한 문화를 접하게 된다. 그에 대한 간략한 내용을 정리하고자 한다. 스프린트 일일 스크럼 회의 짧게 회의한다. 15분 ~ 20분 정도, 팀원들이 보여서 어디까지 했고 어제 무얼 했으며 오늘 뭘 했고 어떤 점이 문제인지 이야기한다. 스프린트 원칙 스프린트 기간 중에 서비스의 우선 순위를 바꿔선 안된다. 요구 사항이 생기면 진행 중인 스프린트 내에서의 변경을 해서는 안된다. 스프린트도 갑자기 종료될 수 있는데 이때는 어찌할 수 없는 상황에서만 종료되어야 한다. 스프린트는 정해진 시간 안에 끝내고 연속적으로 진행되어야..

[Docker] OCI runtime exec failed: exec failed: unable to start container process: exec: "ping": executable file not found in $PATH: unknown

간만에 도커를 실습하는 와중에 아래와 같은 에러를 마주했다. OCI runtime exec failed: exec failed: unable to start container process: exec: "ping": executable file not found in $PATH: unknown 내가 하고자 하는 명령어는 아래와 같았다. docker exec mysql ping findby docker exec findby ping mysql 즉 findby라는 컨테이너와 mysql이라는 컨테이너 사이에서 서로에게 핑을 보냄으로써 정상적으로 컨테이너가 살아있는 지 확인하기 위함이었다. 물론 당연히 떴으니 살아있겠지만 그냥 확인차 ping은 잘 날라가는 지 보고 싶었다. 근데 왜 위 오류가 발생했을까? 위 ..

인프라/Docker 2023.02.18

[Docker] 협업 방식 정리(2) 가상화 + docker + dockerfile + docker compose + docker network + dockerhub

오늘은 docker, dockerfile, docker compose, docker network에 대해서 알아보기로 한다. 협업에서 혹은 신입 개발자로 일하게 된다면 반드시 docker 혹은 가상화 기술에 대해 알고 있어야 한다. 그냥 업무 숙달의 일환이라고 생각하고 간단하게 살펴보자. 도커 공식문서: https://docs.docker.com/get-started/overview/ 가상화 기술이란? https://velog.io/@palza4dev/Docker%EC%99%80-%EA%B0%80%EC%83%81%ED%99%94-%EA%B8%B0%EC%88%A0 https://spidyweb.tistory.com/71 https://nomad-programmer.tistory.com/282 가상화는 물리..

인프라/Docker 2023.02.16

[Git] 협업 방식 정리(1) git + gitflow + gitlab + 코드 리뷰 + code convention + PR Request + Merge Request + 개발 문화

협업을 제대로 해본 적이 없어서 협업 방식에 대해서 정리하고자 한다. 코드 리뷰도 제대로 해본 적이 없어서 협업 컨벤션이나 구체적인 루틴에 대한 이해가 필요할 것 같다. 간단하게 정리하고자 한다. https://backlog.com/git-tutorial/kr/ git 기본 명령어 정리 https://wecandev.tistory.com/152 인덱스(index): 커밋할 변경사항을 모아놓은 궁간임. 작업 폴더(work Tree)의 변경내용을 인덱스에 기록하는 것을 스테이지(Stage)라고 한다. 머지(Merge): 선택한 브랜치에 다른 브랜치에서 커밋한 내용을 병합하는 동작임. 컨플릭트(Conflict):동시에 같은 파일의 유사한 부분을 수정한 경우 발생하는 코드충돌을 의미하고 의도에 맞는 코드를 선택..

인프라/Git 2023.02.15

[백엔드 스터디] 7, 8주차 - JPA 연관관계 및 영속성 전이

이번주 주제는 JPA 연관관계 매핑과 영속성 전이입니다. 주제가 비교적 큰 범위로 선정되어 이번 7, 8주차를 기준으로 마무리된다. JPA에서는 아래 세 가지가 중요하다. 방향: 단방향, 양방향 (객체 참조) 연관 관계의 주인: 양방향일 때, 연관 관계에서의 관리의 주체 다중성: 다대일(N:1), 일대다(1:N), 다대다(N:N) 데이터베이스 테이블은 외래 키 하나로 양 쪽 테이블 조인이 가능함. 그러나 객체의 세계는 참조용 필드가 있는 객체만 다른 객체를 참조 가능함. 기본적으로 단방향 매핑으로 하고 나중에 꼭 필요할 때만 양방향을 추가해주면 된다. 연관 관계의 주인을 정하는 건 무엇일까? 두 단방향 관계 즉 (a -> b, b -> a) 에 대해서 제어의 권한 즉 외래 키를 비롯한 테이블 레코드를 저..

[CS스터디] CS스터디 방식 소개

CS 스터디 진행 방식에 설명드리겠습니다. 매주 토요일 13시에 시작합니다. 컴퓨터 네트워크 Chapter 1 컴퓨터와 네트워크 인터넷 1.1 인터넷이란 무엇인가? 1.2 네트워크의 가장자리 1.3 네트워크 코어 1.4 패킷 교환 네트워크에서의 지연, 손실과 처리율 1.5 프로토콜 계층과 서비스 모델 1.6 공격받는 네트워크 1.7 컴퓨터 네트워킹과 인터넷의 역사 1.8 요약 Chapter 2 애플리케이션 계층 2.1 네트워크 애플리케이션의 원리 2.2 웹과 HTTP 2.3 인터넷 전자메일 2.4 DNS: 인터넷의 디렉터리 서비스 2.5 P2P 파일 분배 2.6 비디오 스트리밍과 콘텐츠 분배 네트워크 2.7 소켓 프로그래밍: 네트워크 애플리케이션 생성 2.8 요약 Chapter 3 트랜스포트 계층 3.1..

[Computer Graphics] 3D 게임 프로그래밍 후기 with TheCherno

2022년에는 특히나 그래픽스 프로그래밍에 대해 관심갖고 지냈다. 특히 언리얼5 출시와 함께 많은 프로젝트가 발표되었는데 상당히 인상깊은 프로젝트들이 많았다. 국내에서 가장 유명했던 프로젝트를 꼽으라면 당연히 러셀 님이 진행하고 계신 Project RYU가 될 수 있겠다. 그 영상을 보고 정말 감명받았고 배우고 싶다는 생각이 들었다. 아래 프로젝트 RYU 영상을 링크로 걸어뒀다. 꽤나 긴 영상이지만 시간이 남는다면 꼭 보기 바란다. 언리얼로 이정도 수준까지 구현할 수 있다는 점이 정말 놀랍다. Project RYU 개인적으로 아쉬웠던 점은 우리 컴퓨터공학 학부는 그래픽스 강좌가 현재는 열리지 않는 상태이기 때문에 어떻게든 혼자서 공부하는 수밖에 없었다. 아마 강좌가 있었다면 해당 강좌를 수강하고 어떤 식..

Computer Graphics 2023.02.07

[백엔드 스터디] 6주차 - JPA 영속성 컨텍스트

안녕하세요. 이번 6주차에는 JPA 영속성 컨텍스트에 대한 스터디를 진행하고자 합니다. 지난 주차와 마찬가지로 단순 단답 위주의 질문 보다는 서술이 가능한 질문 위주로 연습하도록 합니다. 영속성 컨텍스트란? 영속성 컨텍스트란 엔티티를 영구 저장하는 환경이라는 뜻이다. 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. 엔티티 매니저를 통해서 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. em.persist(object) 는 엔티티 매니저를 사용해서 object 엔티티를 영속성 컨텍스트에 저장한다는 의미이다. 영속성 컨텍스트의 특징 엔티티 매니저를 생성할 때 하나 만들어진다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근하..

[백엔드 스터디] 5주차 - ORM과 JPA의 추상화 계층 그리고 특징들

이번 5주차에서는 본격적으로 JPA를 공부하기에 앞서서 ORM 그리고 JPA는 무엇이며 이러한 것들이 필요한 이유에 대해서 알아보는 시간을 가지고자 한다. 이번 주는 간단한 답변보다는 서술할 수 있는 수준에 초점을 맞추고자 합니다. 주제에 앞서 먼저 ORM와 JPA의 기본인 영속성에 대해 짚고 넘어가고자 합니다. Persistence Persistence란 무엇인가? Persistence 즉 영속성이란 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성을 말합니다. 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램을 종료하면 모두 잃어버리게 됩니다. 즉 휘발성이 있습니다. Object Persistence인 영구적인 객체는 무엇일까요? 메모리 상의 데이터를 파일 시스..

반응형