전체 글

개인 공부 목적으로 작성된 블로그 입니다.
AI

Airflow 시작하기

이 포스팅은 공부 목적으로 작성된 포스팅 입니다. 왜곡된 내용이 포함되어 있을 수 있습니다. Airflowairflow는 배치 기반 워크플로우를 개발, 스케줄링, 모니터링하기 위한 오픈소스 플랫폼이다. python 기반으로 작성된다.airflow의 장점은 다음과 같다.파이선 기반의 파이프라인을 구성할 수 있다. (데이터 처리는 파이썬이 발달되어 있다.)데이터베이스와 클라우드와 통합이 가능하고 확장이 용이하다. 스케줄링을 활용하여 정기적으로 파이프라인을 실행할 수 있다.증분처리(변경된 데이터에 대해서만 처리하는것)를 지원한다 (아직 이해하지 못함)백필기능을 통한 데이터 재처리를 지원한다.(빅데이터 환경에서 발생하는 데이터가 제대로 처리 못하고 튀는 현상을 어느정도 보호해준다고 이해함)airflow를 사용하..

인프라/도커

CI/CD 구축 (github action+Spring boot + mysql + docker-compose) (2)

이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다.CD전 포스팅으로 우리는 CI를 이해했다. 그러면 CD는 뭘까 CD는 지속적 배포이다. CD는 비용문제와 연관이 높은데 일반적인 배포상황을 생각해보자 한번 배포하고 변경사항이 없다면 좋겠지만... 기능 추가, 리펙토링를 위해 여러번 배포과정을 겪여야한다.(프론트와 연결할때도 기능이 완료될때마다 배포할 수 있다면 좋을 것이다) 배포를 하는 건 어느정도 비용드는 작업이다. 대표적으로 ec2에 접속하여 변경된 코드를 받아 빌드하고 실행하는 프로세스만 생각해봐도 그렇다. 그러면 자동으로 배포할 수 있다면 어떨까? 비용을 아낄 수 있다. 이는 데브옵스와 관련 있는 내용인데 회사차원에서 이러한 자동화 구축으로 개발자가 ..

인프라/도커

CI/CD 구축 (github action+Spring boot + mysql + docker-compose) (1)

이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다.CI/CD백엔드 개발을 학습하다 보면 CI/CD라는 개념을 듣게 된다. CI/CD를 검색해보면 지속적 통합, 배포라는 추상적인 개념으로 나온다. 더 찾아보면 통합과 배포에 각각 프로세스가 존재해서 좋은 유지보수가 가능한 개발을 할 수 있다고 한다. 실제로 인터넷 상에서는 좋은 유지보수와 같은 개발 형태보다는 배포와 통합을 자동화한다는 의미로 더 많이 사용되고 있었다.당연히 자동화 하면 좋겠지? 라는 생각이 들지만 기존 협업 방식에 대해 생각해보면서 CI/CD를 최대한 쉽게 이해해보자기존 협업의 방식협업을 생각해본다면 가장 먼저 떠오르는 것은 github이다. 깃허브와 같은 SVM 형상 관리 툴로 협업을 진행하..

Java

[이펙티브 자바] 아이템 64, 65, 66, 67, 6

이 포스팅은 공부 목적으로 작성된 포스팅입니다. 왜곡된 내용이 포함되어 있을 수 있습니다. 64. 객체는 인터페이스를 사용해 참조하라아이템 51에서 매개변수 타입으로 클래스가 아니라 인터페이스를 사용하라는 원칙이 있었다. 이부분을 더 확장하여 적합한 인터페이스가 있는 경우 인터페이스를 통해 반환값, 변수, 필드를 선언하자. 실제 구현체를 사용하는 경우는 생성자의 경우이고 나머지는 인터페이스 메소드로 대체하는 것이다.// 좋은 예. 인터페이스를 타입으로 사용했다.Set sonSet = new LinkedHashSet();// 나쁜 예. 클래스를 타입으로 사용했다.LinkedHashSet sonSet = new LinkedHashSet();사실 대부분 인터페이스로 선언하는 규칙은 관례처럼 사용되고 있다. 두..

Java/스프링 부트

[JMeter] JMeter를 통해 테스트

JMeterhttps://jmeter.apache.org/ Apache JMeter - Apache JMeter™Apache JMeter™ The Apache JMeter™ application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to othjmeter.apache.orgJMeter는 자바기반의 테스트, 성능 테스트 오픈소스이다. Web-application 용도로 설계되었지만, 현재 다..

Java/스프링 부트

[Webflux] Publisher, Subscriber

이 포스팅은 공부목적으로 작성된 포스팅 입니다. 왜곡된 내용이 포함되어 있을 수 있습니다. 0. 개요webflux, reactor를 처음 사용하게 되면 Publisher(Mono, Flux)와 Subscriber에 대해 학습하게 된다. 아주 쉽게(?) 이야기하면 Publisher가 데이터를 발행하면 Subscriber가 데이터를 구독하게 되는데, 이러한 이해만으로 webflux를 사용하는데에는 문제가 있다.실제로 글쓴이는 아무런 이해도 없이 webflux를 구현하면서 다음과 같은 트러블 슈팅을 경험하게 된다.subscribe하지 않으면 실행조차 되지 않는 건가?그러면 모든 로직에 대해서 subscribe를 하면 되나?그런데 subcribe 하지 않아도 되는 경우도 있었는데?Publisher와 Subscr..

Java/스프링 부트

[Webflux] Mono, Flux.Block()

이 포스팅은 공부목적으로 작성된 포스팅 입니다. 왜곡된 내용이 포함되어 있을 수 있습니다. 0. 개요https://github.com/schananas/practical-reactor GitHub - schananas/practical-reactor: Practical Project Reactor and reactive programing workshopPractical Project Reactor and reactive programing workshop - schananas/practical-reactorgithub.com 위 포스팅은 해당 repo의 c1_introduction를 실습한 내용이다. 각각 chapter를 학습하면서 webflux에 사용되는 reactor를 정리하고자 한다. 학습하면서 ..

PS/백준

[백준 31003번] 언젠가 정렬이 될 수 있으면 좋겠네. C++ 풀이

1. 문제https://www.acmicpc.net/problem/31003문제를 요약하면 인접한 수가 서로소인경우 위치 변경을 할 수 있고, 이러한 시행을 무한히 할 수 있을때, 사전순으로 가장 낮은 수열을 출력해야한다.2. 접근이 문제의 경우 접근이 상당히 어려운 문제이다. 일단 시간복잡도를 생각해보자. 두 숫자의 서로소관계를 파악하기 위해서는 유클리드 호제법을 사용할 수 있다. 시간복잡도 $O(log(N))$ 이러한 시행을 무한히 할 수 있지만, $O(N^2)$ 번의 시행으로 최적의 수열을 만들 수 있다는 것을 어느정도 유추할 수 있다.(직관)그리디하게 문제를 풀 수 없을까 고민해 봤는데 그리디만으로는 힘들어 보인다.수열문제를 가끔식 그래프로 푸는 경우가 있는데, 그래프로도 접근해보자한가지 생각해볼..

CS/데이터베이스

[MySQL] CLI환경에서 사용하기

스키마MySQL에서는 스키마 라는 개념이 있다. 스키마는 테이블을 가지고 있고 스키마를 기준으로 서로다른 테이블로 분류할 수 있다.작업시에 다양한 서버의 데이터베이스를 스키마로 분류하여 저장한다. CLI환경에서 테이블 명세할때, 해당 테이블이 어느 스키마에 속하는지 알려줘야한다.위 예시에서는 dsc.corpcode에 해당한다.매번 스키마를 적기 불편하다면 작업하려는 스키마를 지정할 수 있다.use 명령어를 사용하면 작업하려는 스키마를 지정할 수 있다.만약 작업중인 스키마가 아닌 외부 스키마를 사용하고 싶다면 "스키마.테이블"으로 명시하면 된다.작업 중인 스키마를 해제하고 싶다면,  information_schema를 지정하면 된다.information_schema는 스키마 정보를 저장하고 있는 DB이다...

Java

[이펙티브 자바] 아이템 54, 55

이 포스팅은 공부 목적으로 작성된 포스팅입니다. 왜곡된 내용이 포함되어 있을 수 있습니다. 54 null이 아닌, 빈 컬렉션이나 배열을 반환하라다음 코드를 보자private final List ObjectInStock = new ArrayList(); public List getObjects() { return ObjectInStock.isEmpty() ? null : new ArrayList(ObjectInStock);}Object들을 List Collection으로 가지고 있는 ObjectInStock에 대해 getObjects() 메소드는 Objects가 존재한다면 방어적 복사를 통해 ObjectInStock을 반환하고 Objects가 존재하지 않는다면 ..

bluesparrow
Bluesparrow