Github및 DevOps환경에 대한 이해
·
프로디지털아카데미
DevOps 란?개발조직과 운영조직의 결합 또는 긴밀한 협업 의미, 즉 협업 및 융합을 강조하는 문화, 방법론, 프로레스 도구Agile 방식과 연관이 있음 궁극적인 목표가 동일하다. 차이점으로는 데브옵스는 소프트웨어 품질이 전제된 상황에서 속도 추구, 품질 동시에 중요시함.ex) 파이프라인 자동화기존에는 운영과 개발조직이 분리되어있었음 → 서로 단절되어 있어 연속성이 없는 단점 발생 데브옵스를 잘하기 위해서는?애자일 조직 문화 정착서비스지향 아키텍처 관점에서 내부 시스템 재설계클라우드 전환을 통한 IT인프라 자동화데브옵스 파이프라인 구축을 위한 오픈소스 개발역량 확보현업에서의 데브옵스 형태는?때문에 데브와 옵스가 한 팀에서 근무 하거나 한명의 개발자가 모두 책임지는 데브옵스가 부상하게됨데브옵스에 필요한 ..
AWS EC2 인스턴스 유형에 따른 부하테스트(feat. hey)
·
프로디지털아카데미/클라우드
수업시간 실습으로 AWS EC2의 인스턴스 종류에 따른 성능 테스트를 하고자 한다.이때 인스턴스 유형은 t2nano, t2xlarge, t4nano, t4xlarge, c5large, m5large, c5xlarge, m5xlarge이렇게 8가지 종류로 변경해보며 성능테스트를 진행하려고 한다. 그리고 이를 통해 어떤 인스턴스 유형을 사용하는 것이 어떤 업무에 적합한 지 알아가고자 한다. 인스턴스 유형 이름의 의미 테스트는 HTTP 부하테스트 도구인 hey 를 사용해주었다. hey 다운 받는 법sudo apt updatesudo apt install hey 부하테스트 코드from flask import Flaskapp = Flask(__name__)@app.route("/api/calc")def..
[백준]11657 타임머신 - Python 파이썬
·
코딩테스트/백준
문제 처음에 이 문제를 보고 떠오른 알고리즘은 union-find 그리고 다익스트라였다. 하지만 문제가 잘 풀리지 않아 구글링을 해본 후 벨만포드 알고리즘이라는 것을 알게되었다. 참고 자료: https://velog.io/@mjieun/Algorithm-%EB%B2%A8%EB%A7%8C-%ED%8F%AC%EB%93%9C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98Bellman-Ford-algorithm-Python [Algorithm] 벨만-포드 알고리즘(Bellman-Ford algorithm) - Python벨만-포드 알고리즘을 통해 그래프에서 최단 거리를 구하고, 음수 사이클 존재 여부를 판단하는 방법을 알아보자.velog.io 벨만 포드 알고리즘이란 특정 출발 노..
[백준] 1253번 좋다 - python 파이썬
·
코딩테스트/백준
문제 처음 이 문제를 접했을때는 배열에서 나올 수 있는 두 수의 합에만 집중을 한 나머지 combination을 활용해서 풀어주려고 했다.그리고 이 풀이는 오답이였다. 왜냐하면 문제를 잘 읽어보면 다른 수 두개의 합으로 나타내는 것이 좋은 수 이다.즉, 본인을 제외한(현재 인덱스를 제외한) 다른 두 수의 합으로 표현될 수 있는지를 찾아주어야 한다는 것이다. 때문에 조합을 이용해서 구해주게 되면 현재 인덱스가 사용된 합인지 아닌지를 알 수가 없기때문에 오답이 발생했던 것이다. 그래서 이를 해결하기 위해서는 투포인터를 사용해서 문제를 풀어주면된다. n번씩 반복해서 현재 인덱스가 배열내에 다른 두 수의 합으로 표현되는지 확인해주면 된다. 풀이import itertoolsn = int(input())a ..
asserThat 사용 안됨 문제 해결 (import해도 안되는 경우)
·
백엔드/spring
강의를 보면서 강의에서는 asserThat을 사용하는데 나는 아무리 import를 해주어도 뜨질 않았다알고보니 build gradle에 junit관련해서 추가해준게 이 부분밖에 없었던 것이다.testRuntimeOnly 'org.junit.platform:junit-platform-launcher 이는 JUnit5 플랫폼 실행기만 추가된 상황이다. 그렇기때문에 Junit이 실행은 되지만 AssertJ 같은 확장 라이브러리는 포함되어 있지 않기때문에 아무리 import를 해줘도 사용이 불가능 했던 것이다.dependencies { //이 코드 추가 testImplementation 'org.junit.jupiter:junit-jupiter:5.10.0' //기존코드 testRuntimeOn..
[백준] 1744번 수 묶기 - python 파이썬
·
코딩테스트/백준
문제   처음 이 문제를 접했을 때는 dp인줄 알았다 어떤 수를 묶었을때 안묶었을 때 모든 경우의 수를 구해서 최대값을 구하는 그런 문제로 생각했는데 생각 보다 간단하게 풀리는 문제였다. 이 문제를 풀기 위해서는 최대값을 구하기 위한 경우의 수를 정리해봐야한다.   1. 양수 * 양수 (큰 애들 순서대로 묶어주면 됨)2. 음수 * 음수 (절대값이 큰 애들 순서대로 묶어주면 됨)3.음수* 0 (음수가 홀수 개 있어서 양수화 할 수 없는 음수가 있을때 0이 있다면 0으로 만들어줄 수 있다)  처음에는 이렇게 정리해서 문제를 풀었는데 오답이 발생했다  또 특이한 성질을 가진 숫자를 처리해주는 걸 까먹었다. 그 수는 바로  1 잘 생각해보면 3*1 보다 3+1이 더 크다. 즉, 1이 있는 경우 1은 양수*양수 ..
[백준] 7663번 이중 우선순위 큐 - python 파이썬
·
코딩테스트/백준
문제  일단 이 문제를 보면 연산 횟수인 k의 범위가 100만 이하로 굉장히 크다.그렇기 때문에 연산을 할때마다 정렬을 한다면 무조건 시간초과 가 발생한다는 것을 알 수 있다.  시간복잡도를 최대한 낮게 하면서 최댓값 또는 최솟값을 구하는 알고리즘을 생각하면 heap 이 딱 떠오르게 된다. 근데 문제는 최댓값 최솟값을 동시에 구해줘야한다는 것이다 최대힙, 최소힙 둘 다 구현하면 되는거 아닌가?  할 수도 있지만 최댓값 또는 최솟값을 삭제할 때 서로 어떻게 반영할 지가 이 문제의 관건이다.  이는 heap에 추가 할 때 몇번째  연산인지 정보가 담긴 key 값(몇 번째 연산이 되는지에 대한 정보는 고유하기 때문에 key 값으로 설정해주었다.)을 같이 저장해두어 방문여부를 통해 체크 해주면 된다   visi..
[백준] 10942 팰린드롬? - python 파이썬
·
코딩테스트/백준
문제 팰린드롬이란?앞에서 부터 읽을 때랑 끝에서 부터 읽을때 똑같은 것 , 회문    이 문제는 시간을 최대한 최적화하는게 관건인 문제이다. 범위를 보면 알겠지만 N의 범위는 2000인 반면에 M의 범위가 100만으로 굉장히 큰편이다.  그래서 100만번 동안 2000개를 확인하면 무조건 시간초과가 나기때문에 어떻게 처리를 해야할지 머리가 아팠던 문제이다.. 하지만 생각의 전환을 해서  미리 최대 길이 2000의 배열에서 발생할 수 있는 부분배열을 전부 확인해두면 시간 복잡도가 100만번 * 2000이 아니라 2000개를 확인  + 100만이 되므로 시간을 줄일 수 있다.  그러면 어떻게 모든 부분배열의 경우의 수를 구하는가?  바로 dp 를 통해서 전부 확인해주면 된다. dp[s][e]가 1이면 s,e..
[백준] 1043번 거짓말 - python 파이썬
·
코딩테스트/백준
문제   이 문제는 문제를 이해하는데 오래걸렸던 문제이다....처음에는 단순하게 진실을 아는 사람이 속해있는 파티라면 참여를 못한다 생각했는데 당연히 오답이였다..  문제를 읽으면 알 수 있듯이 진실을 아는 사람이 파티에 속해있으면 진실을 몰랐던 사람도 이 파티에서 지민이가 진실을 말하기때문에 진실을 아는 사람이 된다.  즉, 진실을 아는 사람과 같은 집합이라면 진실을 아는 집합이 되는거다.  이런 패턴 어디서 많이 본 패턴이다. 바로 분리 집합 물론 이 문제는 집합 연산자로도 풀어줄 수 있는 문제이긴하나 Union-Find를 활용해서도 풀어주었다. 기존의 Union-Find는 대소비교로 작은값 또는 큰 값을 기준으로 union을 해줬다면 이 문제에서는 값의 크기를 기준으로 어떤 부모에 합쳐줄지 정하기 ..
[백준] 2636번 치즈 - python 파이썬
·
코딩테스트/백준
문제  이 문제를 처음 풀려고 했을 때는 너무 어렵게 느껴졌다. BFS로 풀어야되는 건 금방 알겠는데 어떻게 테두리 영역만 따로 구하고 테두리 영역중에서 구멍이랑 맞닿은 테두리 부분은 제외 해줘야할 지 감이 잘 안잡혔다.  하지만 이 문제는 생각을 조금만 다르게 해주면 금방 풀린다. 처음에는 치즈의 영역에 너무 집착 했는데 반대로 공기의 영역을 먼저 구해주면된다.  공기의 영역을 어떻게 구해주냐하면 가장자리는 항상 공기 부분이 되기 때문에 0,0 지점부터 BFS를 시작하여 인접한 부분중에 0인 부분만 방문해주면 된다. 그렇게 되면 구멍 부분을 제외한 공기부분이 전부 방문 처리 된다.   위 내용에 대한 그림 예시이다. 빨간색으로 칠한 부분이 전부 방문 처리 되게 된다. 이렇게 방문처리 해준 후 치즈가 있..