Github Actions로 업무 자동화 도입하기 #4. Jobs, Step, Actions, Runners
·
개발/버전 관리
Github Actions로 업무 자동화 도입하기 #1 : Github Actions란?Github Actions로 업무 자동화 도입하기 #2 : Workflows (워크플로우) Github Actions로 업무 자동화 도입하기 #3 : Workflows를 트리거 하는 이벤트  GithubActions의 구성요소를 정의하는 데에 많은 시간을 쏟고 싶지 않다.그래서 나머지 구성요소를 싹 묶어서 정리하기로 했다 ㅎㅎ;; 1. Jobs1-1. Job 란?Jobs는 Workflows 내에서 실행되는 개별 작업 단위이다.워크플로우는 여러 개의 잡으로 구성될 수 있으며, 각 Job은 독립적으로 실행된다.1-2. Job의 특징독립성: 각 Job은 독립적으로 실행되며, 필요에 따라 다른 Job에 의존성을 설정할 수 있..
Github Actions로 업무 자동화 도입하기 #3 : Workflows를 트리거 하는 이벤트
·
개발/버전 관리
Github Actions로 업무 자동화 도입하기 #1 : Github Actions란?현재 나의 목표가 하나 있다.회사 내 앱에 Github Actions를 도입하여 앱 검수 요청까지 완료하기 !!그러기 위해선 우선 Github Actions가 무엇인지 확인해봐야 한다. 참고: https://docs.github.com/ko/actions/learanovice-dp.tistory.com Github Actions로 업무 자동화 도입하기 #2 : Github Actions 구성요소 (1) - Workflows (워크플로우)Github Actions로 업무 자동화 도입하기 #1 : Github Actions란?현재 나의 목표가 하나 있다.회사 내 앱에 Github Actions를 도입하여 앱 검수 요청까지..
Github Actions로 업무 자동화 도입하기 #2 : Workflows (워크플로우)
·
개발/버전 관리
Github Actions로 업무 자동화 도입하기 #1 : Github Actions란?현재 나의 목표가 하나 있다.회사 내 앱에 Github Actions를 도입하여 앱 검수 요청까지 완료하기 !!그러기 위해선 우선 Github Actions가 무엇인지 확인해봐야 한다. 참고: https://docs.github.com/ko/actions/learanovice-dp.tistory.com 챕터 1에서는 Github Actions가 무엇인지를 정리했다. (글 상단 링크 참고) 이번 글에서는 챕터 1에서 잠깐 언급된 Github Actions 구성요소에 대한 자세한 설명을 차근차근 정리해보려고 한다. 그전에 앞서 구성요소는 어떤 것들이 있는지 간략하게 정리하자면 아래와 같다. 이벤트(Event): 저장소에서..
Java에서 try~catch문, 남용하면 문제 없을까?
·
개발/개념 및 기법
Java에서 예외(Exception) 처리를 할 때 흔히 사용하는 try~catch 문. 이걸 사용하면 아무래도 강제 종료의 위험성은 떨어진다.하지만 남용할 때의 부작용은 없을까?1. 예외(Exception)이란?예외(Exception)는 프로그램 실행 중에 발생할 수 있는 비정상적인 상황을 나타내는 객체이다.프로그램의 일반적인 흐름을 방해하며, 적절히 처리하지 않으면 프로그램이 비정상적으로 종료될 수 있다.그렇기에 Java에서는 예외를 처리하기 위해 try~catch~finally 블록을 사용한다. 예외는 크게 두 가지로 분류할 수 있다. 1-(1) Checked ExceptionChecked Exception은 컴파일 시점에서 체크되는 예외로,반드시 try~catch 블록을 사용하여 처리하거나 thr..
Github Actions로 업무 자동화 도입하기 #1 : Github Actions란?
·
개발/버전 관리
현재 나의 목표가 하나 있다.회사 내 앱에 Github Actions를 도입하여 앱 검수 요청까지 완료하기 !!그러기 위해선 우선 Github Actions가 무엇인지 확인해봐야 한다. 참고: https://docs.github.com/ko/actions/learn-github-actions/understanding-github-actions1. Github Actions란?GitHub Actions는 연속 통합 및 연속 배포(CI/CD) 플랫폼으로, 빌드, 테스트, 배포 파이프라인을 자동화할 수 있게 해준다.예를 들어, 저장소에 새로운 Pull-Request가 생기면 이를 빌드하고 테스트하는 workflows를 만들거나,병합된 Pull-Request를 프로덕션에 배포하는 작업을 자동화할 수 있다.Git..
[Git] Git에서 rebase vs merge 차이 알아보기
·
개발/버전 관리
개요나는 그동안 develop이나 master 브랜치로 작업 내용을 합칠 때, merge를 사용했다.Pull Request에 올리면 자연스럽게 master 브랜치로 merge가 되기도 한다.그런데 오늘. Git 히스토리가 너무 꼬여 정리를 하고 있었고,협업에서 같이 일하는 선배는 rebase를 사용하길래 문득 그 차이가 궁금해졌다. * git rebase와 git merge는 두 가지 모두 Git에서 브랜치를 통합하는 데 사용되는 명령어이다.git merge목적 두 브랜치를 하나의 공통 커밋 히스토리로 병합.작동 방식병합 시, 새로운 커밋(merge commit)이 생성됨두 브랜치의 히스토리를 합치는 역할을 하며, 히스토리가 그대로 보존장점기존의 모든 커밋 히스토리를 보존하므로, 브랜치의 개발 과정을 명..
[알고리즘]스케줄링 알고리즘 (FCFS, SJF, RR)
·
개발/알고리즘
스케줄링 알고리즘은 운영 체제에서 프로세스에게 CPU를 할당하는 방식을 결정하는 알고리즘입니다. 다양한 스케줄링 알고리즘이 존재하지만, 가장 기본적인 세 가지 알고리즘인 FCFS(First-Come, First-Served), SJF(Shortest Job First), RR(Round Robin) 알고리즘에 대해 알아보겠습니다. FCFS(First-Come, First-Served) FCFS 알고리즘은 가장 간단한 스케줄링 알고리즘으로, 프로세스가 도착한 순서대로 CPU를 할당하는 방식입니다. 즉, 선입선출(First-Come, First-Served) 방식으로 CPU를 할당합니다. 이 알고리즘은 대화식 작업에 적합하지 않으며, 프로세스의 실행 시간이 긴 경우에는 평균 대기 시간이 길어지는 단점이 있습..
[알고리즘/Kotlin]슬라이딩 윈도우(Sliding Window) 알고리즘
·
개발/알고리즘
슬라이딩 윈도우 알고리즘(Sliding Window Algorithm)이란? 연속적인 구간의 문제를 효과적으로 해결하기 위한 알고리즘 이 알고리즘은 일정한 크기의 윈도우를 이용하여 연속적인 구간 문제를 해결 슬라이딩 윈도우 알고리즘 구현 단계 시작점과 끝점을 초기화합니다. 윈도우의 크기를 설정합니다. 윈도우를 이동하면서 구간의 값을 계산합니다. 구간의 값을 이용하여 원하는 결과를 도출합니다. 끝점이 배열의 마지막 인덱스에 도달할 때까지 위 과정을 반복합니다. 슬라이딩 윈도우 알고리즘 사용 예 배열에서 최소값을 찾는 문제 문자열에서 최소 윈도우를 찾는 문제 스트림에서 슬라이딩 윈도우를 적용하여 데이터를 처리하는 문제 등에 사용 2023.02.26 - [프로그래머스/Kotlin]Level3 - 징검다리 건너..
[Packet/Java]패킷 직렬화
·
개발/네트워크 및 데이터 처리
패킷이란? 패킷(Packet)은 네트워크 통신에서 데이터를 전송하는 단위입니다. 네트워크 상에서 데이터를 전송할 때, 큰 데이터를 작은 조각으로 분할하여 전송하는데, 이 작은 조각을 패킷이라고 합니다. 일반적으로 패킷은 헤더(Header)와 페이로드(Payload)로 구성됩니다. 헤더에는 송신지와 수신지의 주소 정보, 패킷의 크기, 전송 제어 정보 등의 메타데이터가 포함되어 있습니다. 이러한 메타데이터는 패킷을 올바르게 라우팅하고 전송하는 데 필요한 정보를 제공합니다. 패킷은 데이터 전송의 신뢰성과 효율성을 높이기 위해 사용됩니다. 전체 데이터를 한 번에 전송하는 것보다 작은 패킷 단위로 분할하여 전송하면, 손상된 패킷을 다시 요청하거나, 여러 경로를 통해 전송될 수 있는 등의 이점을 가집니다. 또한, ..
[알고리즘/Java/Kotlin]BFS vs DFS
·
개발/알고리즘
BFS와 DFS는 그래프 탐색 알고리즘 중 대표적인 두 가지 방법입니다. 프로그래머스 문제를 풀다보면 해답으로 꼭 있는 것이 BFS 혹은 DFS입니다. 그런 문제를 풀 때마다 나에게 익숙한 DFS를 사용하여풀었는데, 정확한 개념 정리가 필요할 것 같아 정리해보았습니다. * 아래 코드 설명 - Node는 그래프의 노드를 나타내는 클래스 - 각 노드는 그래프 상에서 연결된 다른 노드들의 리스트를 가지고 있음 - start는 탐색을 시작할 노드를 나타내는 변수 - visited는 이미 방문한 노드들의 집합을 나타내는 변수 BFS (너비 우선 탐색) BFS(너비 우선 탐색)는 시작 정점으로부터 가까운 정점을 먼저 탐색하는 방법입니다. 즉, 현재 정점에서 인접한 정점을 큐에 추가하고, 큐에서 하나씩 뽑아 탐색을 ..
[개발 기본 개념]비트 연산자
·
개발/개념 및 기법
비트연산자란? 컴퓨터의 비트 단위로 데이터를 처리하는 연산자 비트연산자 예시 설명 & AND 0 & 0 == 0 0 & 1 == 0 1 & 1 == 1 두 비트의 값이 모두 1인 경우에만 1을 반환 | OR 0 | 0 == 0 0 | 1 == 1 1 | 1 == 1 두 비트 중 하나라도 1인 경우에는 1을 반환 ^ XOR 0 ^ 0 == 0 0 ^ 1 == 1 1 ^ 1 == 0 두 비트가 서로 다른 경우에 1을 반환 ~ NOT ~0 == 1 ~1 == 0 0이면 1을, 1이면 0을 반환 > b 비트를 오른쪽으로 지정된 수(b)만큼 이동 왼쪽에는 부호 비트가 추가되고, 오른쪽으로 벗어나는 비트는 버려짐 >>> UNSIGNED RIGHT SHIFT a >>> b 비트를 오른쪽으로 지정된 수만큼 이동 왼쪽에..
[알고리즘/Kotlin]플로이드-와샬 (Floyd-Warshall)
·
개발/알고리즘
플로이드 와샬(Floyd-Warshall) 알고리즘은 모든 정점에서 모든 다른 정점까지의 최단 경로를 구하는 알고리즘 입니다. 이 알고리즘은 다익스트라(Dijkstra) 알고리즘과는 달리 음의 가중치를 가진 그래프에서도 사용할 수 있습니다. 이 알고리즘은 동적 계획법을 사용하여 구현되며, 시간 복잡도는 O(n^3)입니다. 알고리즘의 동작 방식은 아래와 같습니다. 그래프의 인접 행렬을 만듭니다. 3중 반복문을 이용하여 모든점을 순회합니다. i에서 j로 가는 최단 거리를 d[i][j]라고 할 때, d[i][j] = min(d[i][j], d[i][k] + d[k][j])의 점화식을 이용하여 d[i][j]를 갱신합니다. 이 때, k는 1부터 n까지의 정점입니다. 이제 Kotlin으로 플로이드 와샬 알고리즘을 ..
TCP/UDP 통신과 HTTP 통신
·
개발/네트워크 및 데이터 처리
HTTP 통신 Question을 물어보면 반드시 Answer이 돌아오는 비연결지향적인 단방향 통신 언제든 요청을 하면 그에 해당하는 답을 줌. TCP 통신 (Socket 통신) 1:1 통신 서로가 통신할 수 있는 상태를 먼저 인증을 하고 나서 통신을 하는 연결지향적인 양방향 통신. 서로에게 언제든 실시간으로 상태를 보낼 수 있으며, 받을 수도 있음. HTTP통신과는 다르게 Handshake라는 과정을 거치며 소켓을 각자 생성하여 서로에 대한 상태를 상시 확인할 수 있음. Question을 물어보면 Answer를 받을 수도 있고 못받을 수도 있음. 물어보지 않았는데 받을 수도 있음. 실시간 처리에서 많이 이용 UDP 통신 (Socket 통신) 1:N 통신 패킷 순서가 보장되지 않음. 중요하지 않은 데이터들..
MVVM 패턴
·
개발/소프트웨어 디자인 패턴
MVVM패턴이란? View - ViewModel - Model View: 사용자에게 보이는 화면 ViewModel: View를 표현하기 위해 만든 View를 위한 Model && View를 나타내주기 위한 데이터 처리 담당 Model: 어플에서 사용되는 데이터 및 데이터 조작 부분 (ex. 서버에서 들어오는 데이터) 동작순서 사용자의 Action이 View를 통해 들어옴 Command 패턴을 이용해 ViewModel에 Action을 전달 ViewModel이 Model에서 데이터를 요청하고, Model은 ViewModel에서 요청받은 데이터를 전달 ViewModel은 응답받은 데이터를 가공 및 저장 View는 ViewModel과의 Data Binding을 이용해 화면 갱신 특징 View와 Model 사이 ..
참조
·
개발/개념 및 기법
안드로이드 프로젝트를 만들면서 문제점을 하나 만났다. 현재 화면에서 보여주고 있는 ListA가 있다. 그리고 서버와 통신해서 데이터를 받아와 ListA를 누적하는 ListB가 있다. 순서1 : ListA(0개) -> ListB(20개) 순서1 : ListA(20개) -> ListB(40개) ListA는 최초에 0개이다. ListA는 ListB보다 언제나 작다. 아이템의 개수를 비교하여 차이나는 아이템만큼 화면에 띄워진 리스트를 업데이트 하려고 한다. 그런데 ListA가 ListB와 언제나 똑같다면? 그래서 리스트가 가진 아이템의 차이를 화면이 파악하지 못한다면? 이유는 참조에 있다. ListA가 현재 띄워져있는 리스트이자, 화면을 띄우기 위한 어댑터에 연결되어 있는 리스트이다. ListA에 변경된 Lis..
뿌꾸 빵
'개발' 카테고리의 글 목록